Lots of bugfixes related to calling/modem and various script fixes
This commit is contained in:
parent
22d974f22f
commit
e5877059ff
16 changed files with 285 additions and 160 deletions
|
@ -351,7 +351,7 @@ static struct audio_setup audio_setup = {
|
||||||
|
|
||||||
.hp_vol = 15,
|
.hp_vol = 15,
|
||||||
.spk_vol = 15,
|
.spk_vol = 15,
|
||||||
.ear_vol = 31,
|
.ear_vol = 15,
|
||||||
.mic_gain = 1,
|
.mic_gain = 1,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -68,7 +68,7 @@ int main(int argc, char* argv[])
|
||||||
|
|
||||||
int durationMs, strength;
|
int durationMs, strength;
|
||||||
|
|
||||||
if (argc < 1) {
|
if (argc < 2) {
|
||||||
usage();
|
usage();
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,23 +1,35 @@
|
||||||
#!/usr/bin/env sh
|
#!/usr/bin/env sh
|
||||||
pidof svkbd-sxmo || svkbd-sxmo &
|
menu() {
|
||||||
SEARCHTERMS="$(
|
pidof svkbd-sxmo || svkbd-sxmo &
|
||||||
echo "Search term" |
|
SEARCHTERMS="$(
|
||||||
dmenu -p "Yt Search" -c -l 10 -fn Terminus-20
|
echo "Search term" |
|
||||||
)"
|
dmenu -p "Yt Search" -c -l 10 -fn Terminus-20
|
||||||
pkill svkbd-sxmo
|
)"
|
||||||
|
pkill svkbd-sxmo
|
||||||
|
|
||||||
IDIOTRESULTS="$(idiotbox-cli $SEARCHTERMS)"
|
IDIOTRESULTS="$(idiotbox-cli $SEARCHTERMS)"
|
||||||
RESULT="$(
|
RESULT="$(
|
||||||
echo "$IDIOTRESULTS" |
|
echo "$IDIOTRESULTS" |
|
||||||
grep -Ev '^(Channelid|Atom feed|Channel title|Published|Viewcount|Userid):' |
|
grep -Ev '^(Channelid|Atom feed|Channel title|Published|Viewcount|Userid):' |
|
||||||
sed -E 's/^(URL|Duration):\s+/\t/g' |
|
sed -E 's/^(URL|Duration):\s+/\t/g' |
|
||||||
tr -d '\n' |
|
tr -d '\n' |
|
||||||
sed 's/===/\n/g' |
|
sed 's/===/\n/g' |
|
||||||
gawk -F'\t' '{ print $3 " " $1 " " $2}' |
|
gawk -F'\t' '{ print $3 " " $1 " " $2}' |
|
||||||
dmenu -c -l 10 -fn Terminus-20
|
dmenu -c -l 10 -fn Terminus-20
|
||||||
)"
|
)"
|
||||||
|
|
||||||
[[ "CLOSE_MENU" == "$RESULT" ]] && exit 0
|
[[ "CLOSE_MENU" == "$RESULT" ]] && exit 0
|
||||||
|
URL=$(echo "$RESULT" | awk -F " " '{print $NF}')
|
||||||
|
}
|
||||||
|
|
||||||
URL=$(echo "$RESULT" | awk -F " " '{print $NF}')
|
video() {
|
||||||
st -e mpv --ytdl-format='[height<420]' $@ "$URL"
|
menu
|
||||||
|
st -e mpv -v --ytdl-format='[height<420]' "$URL"
|
||||||
|
}
|
||||||
|
|
||||||
|
audio() {
|
||||||
|
menu
|
||||||
|
st -e mpv -v --no-video "$URL"
|
||||||
|
}
|
||||||
|
|
||||||
|
$@
|
||||||
|
|
|
@ -10,11 +10,11 @@ programchoicesinit() {
|
||||||
Apps ^ 0 ^ sxmo_appmenu.sh applications
|
Apps ^ 0 ^ sxmo_appmenu.sh applications
|
||||||
Volume ↑ ^ 1 ^ sxmo_vol.sh up
|
Volume ↑ ^ 1 ^ sxmo_vol.sh up
|
||||||
Volume ↓ ^ 1 ^ sxmo_vol.sh down
|
Volume ↓ ^ 1 ^ sxmo_vol.sh down
|
||||||
Dialer ^ 1 ^ sxmo_modemcall.sh dial
|
Dialer ^ 0 ^ sxmo_modemcall.sh dial
|
||||||
Texts ^ 0 ^ sxmo_readtexts.sh
|
Texts ^ 0 ^ sxmo_modemtext.sh
|
||||||
Camera ^ 0 ^ sxmo_camera.sh
|
Camera ^ 0 ^ sxmo_camera.sh
|
||||||
Wifi ^ 0 ^ st -e "nmtui"
|
Wifi ^ 0 ^ st -e "nmtui"
|
||||||
System Config ^ 0 ^ sxmo_appmenu.sh control
|
Config ^ 0 ^ sxmo_appmenu.sh config
|
||||||
Logout ^ 0 ^ pkill -9 dwm
|
Logout ^ 0 ^ pkill -9 dwm
|
||||||
")" && WINNAME=Sys
|
")" && WINNAME=Sys
|
||||||
|
|
||||||
|
@ -32,24 +32,25 @@ programchoicesinit() {
|
||||||
# Scripts menu
|
# Scripts menu
|
||||||
echo $WMCLASS | grep -i "scripts" && CHOICES="$(echo "
|
echo $WMCLASS | grep -i "scripts" && CHOICES="$(echo "
|
||||||
Timer ^ 0 ^ sxmo_timermenu.sh
|
Timer ^ 0 ^ sxmo_timermenu.sh
|
||||||
Youtube ^ 0 ^ sxmo_youtube.sh
|
Youtube ^ 0 ^ sxmo_youtube.sh video
|
||||||
Youtube (Audio) ^ 0 ^ sxmo_youtube.sh --no-video
|
Youtube (Audio) ^ 0 ^ sxmo_youtube.sh audio
|
||||||
Weather ^ 0 ^ sxmo_weather.sh
|
Weather ^ 0 ^ sxmo_weather.sh
|
||||||
RSS ^ 0 ^ sxmo_rss.sh
|
RSS ^ 0 ^ sxmo_rss.sh
|
||||||
")" && WINNAME=Scripts && return
|
")" && WINNAME=Scripts && return
|
||||||
|
|
||||||
# System Control menu
|
# System Control menu
|
||||||
echo $WMCLASS | grep -i "control" && CHOICES="$(echo "
|
echo $WMCLASS | grep -i "config" && CHOICES="$(echo "
|
||||||
Volume ↑ ^ 1 ^ sxmo_vol.sh up
|
Volume ↑ ^ 1 ^ sxmo_vol.sh up
|
||||||
Volume ↓ ^ 1 ^ sxmo_vol.sh down
|
Volume ↓ ^ 1 ^ sxmo_vol.sh down
|
||||||
Brightesss ↑ ^ 1 ^ sxmo_brightness.sh up
|
Brightesss ↑ ^ 1 ^ sxmo_brightness.sh up
|
||||||
Brightness ↓ ^ 1 ^ sxmo_brightness.sh down
|
Brightness ↓ ^ 1 ^ sxmo_brightness.sh down
|
||||||
Modem $(pgrep -f sxmo_modemmonitor.sh >/dev/null && echo -n "On → Off" || echo -n "Off → On") ^ 1 ^ sxmo_modemmonitortoggle.sh
|
Modem $(pgrep -f sxmo_modemmonitor.sh >/dev/null && echo -n "On → Off" || echo -n "Off → On") ^ 1 ^ sxmo_modemmonitortoggle.sh
|
||||||
Modem Info ^ 1 ^ sxmo_modeminfo.sh
|
Modem Info ^ 0 ^ sxmo_modeminfo.sh
|
||||||
|
Modem Log ^ 0 ^ sxmo_modemlog.sh
|
||||||
Rotate ^ 1 ^ rotate
|
Rotate ^ 1 ^ rotate
|
||||||
Wifi ^ 0 ^ st -e "nmtui"
|
Wifi ^ 0 ^ st -e "nmtui"
|
||||||
Upgrade Pkgs ^ 0 ^ st -e sxmo_upgrade.sh
|
Upgrade Pkgs ^ 0 ^ st -e sxmo_upgrade.sh
|
||||||
")" && WINNAME=Control && return
|
")" && WINNAME=Config && return
|
||||||
|
|
||||||
# MPV
|
# MPV
|
||||||
echo $WMCLASS | grep -i "mpv" && CHOICES="$(echo "
|
echo $WMCLASS | grep -i "mpv" && CHOICES="$(echo "
|
||||||
|
@ -68,8 +69,8 @@ programchoicesinit() {
|
||||||
|
|
||||||
# St
|
# St
|
||||||
echo $WMCLASS | grep -i "st-256color" && CHOICES="$(echo "
|
echo $WMCLASS | grep -i "st-256color" && CHOICES="$(echo "
|
||||||
Pastecomplete ^ 0 ^ key Ctrl+Shift+u
|
Type complete ^ 0 ^ key Ctrl+Shift+u
|
||||||
Copycomplete ^ 0 ^ key Ctrl+Shift+i
|
Copy complete ^ 0 ^ key Ctrl+Shift+i
|
||||||
Paste ^ 0 ^ key Ctrl+Shift+v
|
Paste ^ 0 ^ key Ctrl+Shift+v
|
||||||
Zoom + ^ 1 ^ key Ctrl+Shift+Prior
|
Zoom + ^ 1 ^ key Ctrl+Shift+Prior
|
||||||
Zoom - ^ 1 ^ key Ctrl+Shift+Next
|
Zoom - ^ 1 ^ key Ctrl+Shift+Next
|
||||||
|
@ -117,7 +118,7 @@ programchoicesinit() {
|
||||||
Zoom - ^ 1 ^ key Ctrl+minus
|
Zoom - ^ 1 ^ key Ctrl+minus
|
||||||
History ← ^ 1 ^ key Alt+Left
|
History ← ^ 1 ^ key Alt+Left
|
||||||
History → ^ 1 ^ key Alt+Right
|
History → ^ 1 ^ key Alt+Right
|
||||||
")" && WINNAME=netsurf && return
|
")" && WINNAME=firefox && return
|
||||||
|
|
||||||
# Foxtrot GPS
|
# Foxtrot GPS
|
||||||
echo $WMCLASS | grep -i foxtrot && CHOICES="$(echo "
|
echo $WMCLASS | grep -i foxtrot && CHOICES="$(echo "
|
||||||
|
@ -162,8 +163,8 @@ rotate() {
|
||||||
}
|
}
|
||||||
|
|
||||||
key() {
|
key() {
|
||||||
xdotool windowactivate $WIN
|
xdotool windowactivate "$WIN"
|
||||||
xdotool key --clearmodifiers $1
|
xdotool key --clearmodifiers "$1"
|
||||||
#--window $WIN
|
#--window $WIN
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,8 @@
|
||||||
|
|
||||||
MAX=$(cat $DEV/max_brightness)
|
MAX=$(cat $DEV/max_brightness)
|
||||||
MIN=2
|
MIN=2
|
||||||
STEP=$(echo "($MAX - $MIN) / 10" | bc)
|
MINSTEP=1
|
||||||
|
STEP=$(echo "($MAX - $MIN) / 10" | bc | xargs -ISTP echo -e "$MINSTEP\nSTP" | sort -r | head -n1)
|
||||||
|
|
||||||
setdelta() {
|
setdelta() {
|
||||||
sxmo_setpinebacklight $(
|
sxmo_setpinebacklight $(
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
#!/usr/bin/env sh
|
#!/usr/bin/env sh
|
||||||
|
|
||||||
pidof svkbd-sxmo >&2 || svkbd-sxmo &
|
pidof svkbd-sxmo >&2 || svkbd-sxmo &
|
||||||
OUTPUT="$(cat | dmenu -t $@)"
|
OUTPUT="$(cat | dmenu $@)"
|
||||||
pkill svkbd-sxmo >&2
|
pkill svkbd-sxmo >&2
|
||||||
echo "$OUTPUT"
|
echo "$OUTPUT"
|
||||||
|
|
|
@ -1,38 +1,35 @@
|
||||||
#!/usr/bin/env sh
|
#!/usr/bin/env sh
|
||||||
INPUT="$(cat)"
|
INPUT="$(cat)"
|
||||||
|
STWIN="$(xprop -root | sed -n '/^_NET_ACTIVE_WINDOW/ s/.* //p')"
|
||||||
|
|
||||||
pidof svkbd-sxmo || svkbd-sxmo &
|
menu() {
|
||||||
|
pidof svkbd-sxmo || svkbd-sxmo &
|
||||||
capfirstchar() {
|
RESULT="$(
|
||||||
awk -F -vOFS= {$1=toupper($1);print $0}
|
echo "$(
|
||||||
|
echo "Close Menu" &&
|
||||||
|
echo "$INPUT" | grep -Eo '\S+' | tr -d '[:blank:]' | sort | uniq
|
||||||
|
)" | dmenu -p "$PROMPT" -l 10 -i -c -fn Terminus-20
|
||||||
|
)"
|
||||||
|
pkill svkbd-sxmo
|
||||||
}
|
}
|
||||||
|
|
||||||
RESULT="$(
|
|
||||||
echo "$(
|
|
||||||
echo "Close Menu" &&
|
|
||||||
echo "$INPUT" |\
|
|
||||||
grep -Eo '\S+' |\
|
|
||||||
tr -d '[:blank:]' |\
|
|
||||||
sort |\
|
|
||||||
uniq
|
|
||||||
)" | dmenu -p $(echo $1 | capfirstchar) -l 10 -i -c -fn Terminus-20
|
|
||||||
)"
|
|
||||||
|
|
||||||
pkill svkbd-sxmo
|
|
||||||
|
|
||||||
copy() {
|
copy() {
|
||||||
|
PROMPT=Copy
|
||||||
|
menu
|
||||||
if [[ "$RESULT" = "Close Menu" ]]; then
|
if [[ "$RESULT" = "Close Menu" ]]; then
|
||||||
exit 0
|
exit 0
|
||||||
else
|
else
|
||||||
echo "$RESULT" | xsel -i
|
echo "$RESULT" | xclip -i
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
type() {
|
type() {
|
||||||
|
PROMPT=Type
|
||||||
|
menu
|
||||||
if [[ "$RESULT" = "Close Menu" ]]; then
|
if [[ "$RESULT" = "Close Menu" ]]; then
|
||||||
exit 0
|
exit 0
|
||||||
else
|
else
|
||||||
xdotool type "$RESULT"
|
xdotool type --window $STWIN "$RESULT"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,11 @@
|
||||||
#!/usr/bin/env sh
|
#!/usr/bin/env sh
|
||||||
pgrep -f sxmo_statusbar.sh | grep -v $$ | xargs kill -9
|
pgrep -f sxmo_statusbar.sh | grep -v $$ | xargs kill -9
|
||||||
|
|
||||||
|
audiodevice() {
|
||||||
|
amixer sget Earpiece | grep -E [[]on[]] && echo Earpiece > /dev/null && return
|
||||||
|
amixer sget Headphone > /dev/null && echo Headphone || echo Speaker
|
||||||
|
}
|
||||||
|
|
||||||
UPDATEFILE=/tmp/sxmo_bar
|
UPDATEFILE=/tmp/sxmo_bar
|
||||||
touch $UPDATEFILE
|
touch $UPDATEFILE
|
||||||
|
|
||||||
|
@ -19,7 +24,7 @@ do
|
||||||
|
|
||||||
# Volume
|
# Volume
|
||||||
VOL=$(
|
VOL=$(
|
||||||
echo "$(amixer sget Headphone || amixer sget Speaker)" |
|
echo "$(audiodevice)" |
|
||||||
grep -oE '([0-9]+)%' |
|
grep -oE '([0-9]+)%' |
|
||||||
tr -d ' %' |
|
tr -d ' %' |
|
||||||
awk '{ s += $1; c++ } END { print s/c }' |
|
awk '{ s += $1; c++ } END { print s/c }' |
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
#!/usr/bin/env sh
|
#!/usr/bin/env sh
|
||||||
device() {
|
device() {
|
||||||
|
amixer sget Earpiece | grep -E '[[]on[]]' > /dev/null && echo Earpiece && return
|
||||||
amixer sget Headphone > /dev/null && echo Headphone || echo Speaker
|
amixer sget Headphone > /dev/null && echo Headphone || echo Speaker
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -22,5 +23,8 @@ down() {
|
||||||
amixer set $(device) 1-
|
amixer set $(device) 1-
|
||||||
notify
|
notify
|
||||||
}
|
}
|
||||||
|
setvol() {
|
||||||
|
amixer set $(device) $1
|
||||||
|
}
|
||||||
|
|
||||||
$@
|
$@
|
||||||
|
|
|
@ -1,14 +1,39 @@
|
||||||
#!/usr/bin/env sh
|
#!/usr/bin/env sh
|
||||||
|
LOGDIR=/home/$USER/.sxmo
|
||||||
|
|
||||||
err() {
|
err() {
|
||||||
echo $1 | dmenu -fn Terminus-20 -c -l 10
|
echo -e "$1" | dmenu -fn Terminus-20 -c -l 10
|
||||||
exit 1
|
kill $$
|
||||||
}
|
}
|
||||||
|
|
||||||
modem_n() {
|
modem_n() {
|
||||||
mmcli -L | grep -oE 'Modem\/([0-9]+)' | cut -d'/' -f2
|
mmcli -L | grep -oE 'Modem\/([0-9]+)' | cut -d'/' -f2
|
||||||
}
|
}
|
||||||
|
|
||||||
|
contacts() {
|
||||||
|
cat $LOGDIR/modemlog.tsv | cut -f3 | sort | uniq | awk NF
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
modem_cmd_errcheck() {
|
||||||
|
ARGS="$@"
|
||||||
|
RES="$(sudo mmcli $ARGS 2>&1)"
|
||||||
|
[[ $? -eq 0 ]] || err "Problem executing mmcli command!\n$RES"
|
||||||
|
echo $RES
|
||||||
|
}
|
||||||
|
|
||||||
|
vid_to_number() {
|
||||||
|
sudo mmcli -m $(modem_n) -o $1 -K | grep call.properties.number | cut -d ':' -f2 | tr -d ' '
|
||||||
|
}
|
||||||
|
|
||||||
|
log_event() {
|
||||||
|
EVT_HANDLE="$1"
|
||||||
|
EVT_VID="$2"
|
||||||
|
NUMBER="$(vid_to_number $EVT_VID)"
|
||||||
|
TIME="$(date --iso-8601=seconds)"
|
||||||
|
echo -ne "$TIME\t$EVT_HANDLE\t$NUMBER\n" >> $LOGDIR/modemlog.tsv
|
||||||
|
}
|
||||||
|
|
||||||
toggleflag() {
|
toggleflag() {
|
||||||
TOGGLEFLAG=$1
|
TOGGLEFLAG=$1
|
||||||
shift
|
shift
|
||||||
|
@ -25,13 +50,15 @@ toggleflag() {
|
||||||
}
|
}
|
||||||
|
|
||||||
dialmenu() {
|
dialmenu() {
|
||||||
NUMS=$(ls -1 ~/.sxmo || "")
|
CONTACTS="$(contacts)"
|
||||||
NUMBER="$(
|
NUMBER="$(
|
||||||
echo -e "$NUMS\nTest Number 804-222-1111" |
|
echo -e "Close Menu\n$CONTACTS\nTest Number 804-222-1111" |
|
||||||
dmenu -l 10 -p Number -c -fn Terminus-20 |
|
sxmo_dmenu_with_kb.sh -l 10 -p Number -c -fn Terminus-20 |
|
||||||
awk -F' ' '{print $NF}' |
|
awk -F' ' '{print $NF}' |
|
||||||
tr -d -
|
tr -d -
|
||||||
)"
|
)"
|
||||||
|
echo $NUMBER | grep "Close Menu" && kill $$
|
||||||
|
|
||||||
echo "Attempting to dial: $NUMBER" >&2
|
echo "Attempting to dial: $NUMBER" >&2
|
||||||
VID="$(
|
VID="$(
|
||||||
sudo mmcli -m $(modem_n) --voice-create-call "number=$NUMBER" | grep -Eo Call/[0-9]+ | grep -oE [0-9]+
|
sudo mmcli -m $(modem_n) --voice-create-call "number=$NUMBER" | grep -Eo Call/[0-9]+ | grep -oE [0-9]+
|
||||||
|
@ -43,32 +70,40 @@ dialmenu() {
|
||||||
|
|
||||||
startcall() {
|
startcall() {
|
||||||
VID="$1"
|
VID="$1"
|
||||||
sudo mmcli --voice-status -o $VID
|
#modem_cmd_errcheck --voice-status -o $VID
|
||||||
sudo mmcli -m $(modem_n) -o $VID --start | grep "successfully started" || err "Couldn't start call!"
|
modem_cmd_errcheck -m $(modem_n) -o $VID --start
|
||||||
|
log_event "call_start" $VID
|
||||||
}
|
}
|
||||||
|
|
||||||
acceptcall() {
|
acceptcall() {
|
||||||
VID="$1"
|
VID="$1"
|
||||||
echo "Attempting to pickup VID $VID"
|
echo "Attempting to pickup VID $VID"
|
||||||
sudo mmcli --voice-status -o $VID
|
#sudo mmcli --voice-status -o $VID
|
||||||
sudo mmcli -m $(modem_n) -o $VID --accept | grep "successfully" || err "Couldn't accept call!"
|
modem_cmd_errcheck -m $(modem_n) -o $VID --accept
|
||||||
|
log_event "call_pickup" $VID
|
||||||
}
|
}
|
||||||
|
|
||||||
hangup() {
|
hangup() {
|
||||||
VID=$1
|
VID=$1
|
||||||
sudo mmcli -m $(modem_n) -o $VID --hangup | grep "successfully hung up" || err "Failed to hangup the call?"
|
modem_cmd_errcheck -m $(modem_n) -o $VID --hangup
|
||||||
|
log_event "call_hangup" $VID
|
||||||
|
err "Call hungup ok"
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
incallmenu() {
|
incallmenu() {
|
||||||
DMENUIDX=0
|
DMENUIDX=0
|
||||||
VID="$1"
|
VID="$1"
|
||||||
NUMBER=$(mmcli -m $(modem_n) -o $VID -K | grep call.properties.number | cut -d ':' -f2 | tr -d ' ')
|
NUMBER="$(vid_to_number $VID)"
|
||||||
# E.g. Run once w/o -2, and then run once with -2
|
|
||||||
FLAGS="-e -m"
|
# E.g. There's some bug with the modem that' requires us to toggle the
|
||||||
sxmo_megiaudioroute $FLAGS
|
# DAI a few times before starting the call for it to kick in
|
||||||
FLAGS="$FLAGS -2"
|
FLAGS=" "
|
||||||
sxmo_megiaudioroute $FLAGS
|
FLAGS="$(toggleflag "-e" "$FLAGS")"
|
||||||
|
FLAGS="$(toggleflag "-m" "$FLAGS")"
|
||||||
|
FLAGS="$(toggleflag "-2" "$FLAGS")"
|
||||||
|
FLAGS="$(toggleflag "-2" "$FLAGS")"
|
||||||
|
FLAGS="$(toggleflag "-2" "$FLAGS")"
|
||||||
|
|
||||||
while true
|
while true
|
||||||
do
|
do
|
||||||
|
@ -79,19 +114,20 @@ incallmenu() {
|
||||||
echo -- "$FLAGS" | grep -- "-s" && TSPEAKER="Speakerphone Off" || TSPEAKER="Speakerphone On"
|
echo -- "$FLAGS" | grep -- "-s" && TSPEAKER="Speakerphone Off" || TSPEAKER="Speakerphone On"
|
||||||
|
|
||||||
CHOICES="$(echo -ne '
|
CHOICES="$(echo -ne '
|
||||||
Volume ↑ ^ sxmo_vol.sh up
|
Volume ↑ ^ sxmo_vol.sh up
|
||||||
Volume ↓ ^ sxmo_vol.sh down
|
Volume ↓ ^ sxmo_vol.sh down
|
||||||
TMUTE ^ FLAGS="$(toggleflag "-m" "$FLAGS")"
|
TMUTE ^ FLAGS="$(toggleflag "-m" "$FLAGS")"
|
||||||
TECHO ^ FLAGS="$(toggleflag "-z" "$FLAGS")"
|
TECHO ^ FLAGS="$(toggleflag "-z" "$FLAGS")"
|
||||||
TEARPIECE ^ FLAGS="$(toggleflag "-e" "$FLAGS")"
|
TEARPIECE ^ FLAGS="$(toggleflag "-e" "$FLAGS")"
|
||||||
TLINEJACK ^ FLAGS="$(toggleflag "-h" "$FLAGS")"
|
TLINEJACK ^ FLAGS="$(toggleflag "-h" "$FLAGS")"
|
||||||
TSPEAKER ^ FLAGS="$(toggleflag "-s" "$FLAGS")"
|
TSPEAKER ^ FLAGS="$(toggleflag "-s" "$FLAGS")"
|
||||||
DTMF Tones ^ dtmfmenu $VID
|
DTMF Tones ^ dtmfmenu $VID
|
||||||
Hangup ^ hangup $VID
|
Hangup ^ hangup $VID
|
||||||
Lock Screen ^ sxmo_screenlock
|
Lock Screen ^ sxmo_screenlock
|
||||||
' | sed "s/TMUTE/$TMUTE/;s/TECHO/$TECHO/;s/TEARPIECE/$TEARPIECE/;s/TLINEJACK/$TLINEJACK/;s/TSPEAKER/$TSPEAKER/"
|
' | sed "s/TMUTE/$TMUTE/;s/TECHO/$TECHO/;s/TEARPIECE/$TEARPIECE/;s/TLINEJACK/$TLINEJACK/;s/TSPEAKER/$TSPEAKER/"
|
||||||
)"
|
)"
|
||||||
|
|
||||||
|
PICKED=""
|
||||||
PICKED=$(
|
PICKED=$(
|
||||||
echo "$CHOICES" |
|
echo "$CHOICES" |
|
||||||
xargs -0 echo |
|
xargs -0 echo |
|
||||||
|
@ -100,6 +136,10 @@ incallmenu() {
|
||||||
awk '{$1=$1};1' |
|
awk '{$1=$1};1' |
|
||||||
dmenu -idx $DMENUIDX -l 14 -c -fn "Terminus-30" -p "$NUMBER"
|
dmenu -idx $DMENUIDX -l 14 -c -fn "Terminus-30" -p "$NUMBER"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# E.g. in modem watcher script we just kill dmenu if the other side hangsup
|
||||||
|
echo "$PICKED" | grep -Ev "." && err "$NUMBER hung up the call"
|
||||||
|
|
||||||
CMD=$(echo "$CHOICES" | grep "$PICKED" | cut -d '^' -f2)
|
CMD=$(echo "$CHOICES" | grep "$PICKED" | cut -d '^' -f2)
|
||||||
DMENUIDX=$(echo $(echo "$CHOICES" | grep -n "$PICKED" | cut -d ':' -f1) - 1 | bc)
|
DMENUIDX=$(echo $(echo "$CHOICES" | grep -n "$PICKED" | cut -d ':' -f1) - 1 | bc)
|
||||||
eval $CMD
|
eval $CMD
|
||||||
|
@ -108,19 +148,18 @@ incallmenu() {
|
||||||
|
|
||||||
dtmfmenu() {
|
dtmfmenu() {
|
||||||
VID=$1
|
VID=$1
|
||||||
DMENUIDX=0
|
DTMFINDEX=0
|
||||||
NUMS="0123456789*#ABCD"
|
NUMS="0123456789*#ABCD"
|
||||||
|
|
||||||
while true
|
while true
|
||||||
do
|
do
|
||||||
PICKED="$(
|
PICKED="$(
|
||||||
echo "$NUMS" | grep -o . | sed '1 iReturn to Call Menu' |
|
echo "$NUMS" | grep -o . | sed '1 iReturn to Call Menu' |
|
||||||
dmenu -l 20 -fn Terminus-20 -c -idx $DMENUIDX -p "DTMF Tone"
|
dmenu -l 20 -fn Terminus-20 -c -idx $DTMFINDEX -p "DTMF Tone"
|
||||||
)"
|
)"
|
||||||
DMENUIDX=$(echo "$NUMS" | grep -bo "$PICKED" | cut -d: -f1 | xargs -IN echo 2+N | bc)
|
echo "$PICKED" | grep "Return to Call Menu" && return
|
||||||
|
DTMFINDEX=$(echo "$NUMS" | grep -bo "$PICKED" | cut -d: -f1 | xargs -IN echo 2+N | bc)
|
||||||
echo "$PICKED" | grep "Return to Call Menu" && break
|
modem_cmd_errcheck -m $(modem_n) -o $VID --send-dtmf="$PICKED"
|
||||||
sudo mmcli -m $(modem_n) -o $VID --send-dtmf="$PICKED"
|
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
#!/usr/bin/env sh
|
#!/usr/bin/env sh
|
||||||
|
|
||||||
modem_n() {
|
modem_n() {
|
||||||
mmcli -L | grep -oE 'Modem\/([0-9]+)' | cut -d'/' -f2
|
mmcli -L | grep -oE 'Modem\/([0-9]+)' | cut -d'/' -f2
|
||||||
}
|
}
|
||||||
|
|
2
scripts/modem/sxmo_modemlog.sh
Executable file
2
scripts/modem/sxmo_modemlog.sh
Executable file
|
@ -0,0 +1,2 @@
|
||||||
|
#!/usr/bin/env sh
|
||||||
|
st -fn "Terminus-14" -e tail -f ~/.sxmo/modemlog.tsv
|
|
@ -1,5 +1,7 @@
|
||||||
#!/usr/bin/env sh
|
#!/usr/bin/env sh
|
||||||
TIMEOUT=3
|
TIMEOUT=3
|
||||||
|
LOGDIR=/home/$USER/.sxmo
|
||||||
|
ACTIVECALL="NONE"
|
||||||
|
|
||||||
modem_n() {
|
modem_n() {
|
||||||
mmcli -L | grep -oE 'Modem\/([0-9]+)' | cut -d'/' -f2
|
mmcli -L | grep -oE 'Modem\/([0-9]+)' | cut -d'/' -f2
|
||||||
|
@ -7,6 +9,7 @@ modem_n() {
|
||||||
|
|
||||||
newcall() {
|
newcall() {
|
||||||
VID="$1"
|
VID="$1"
|
||||||
|
sxmo_vibratepine 2000 &
|
||||||
sxmo_setpineled green 1
|
sxmo_setpineled green 1
|
||||||
|
|
||||||
for i in $(sudo mmcli -m $(modem_n) --voice-list-calls | grep terminated | grep -oE Call\/[0-9]+ | cut -d'/' -f2); do
|
for i in $(sudo mmcli -m $(modem_n) --voice-list-calls | grep terminated | grep -oE Call\/[0-9]+ | cut -d'/' -f2); do
|
||||||
|
@ -19,8 +22,12 @@ newcall() {
|
||||||
grep call.properties.number |
|
grep call.properties.number |
|
||||||
cut -d ':' -f 2
|
cut -d ':' -f 2
|
||||||
)
|
)
|
||||||
|
|
||||||
|
TIME="$(date --iso-8601=seconds)"
|
||||||
|
echo -ne "$TIME\tcall_ring\t$NUMBER\n" >> $LOGDIR/modemlog.tsv
|
||||||
echo "$VID:$INCOMINGNUMBER" > /tmp/sxmo_incomingcall
|
echo "$VID:$INCOMINGNUMBER" > /tmp/sxmo_incomingcall
|
||||||
echo "Number: $INCOMINGNUMBER (VID: $VID)"
|
echo "Number: $INCOMINGNUMBER (VID: $VID)"
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
newtexts() {
|
newtexts() {
|
||||||
|
@ -35,13 +42,46 @@ newtexts() {
|
||||||
TIME="$(echo "$DAT" | grep sms.properties.timestamp | sed -E 's/^sms\.properties\.timestamp\s+:\s+//')"
|
TIME="$(echo "$DAT" | grep sms.properties.timestamp | sed -E 's/^sms\.properties\.timestamp\s+:\s+//')"
|
||||||
TEXTSIZE="$(echo $TEXT | wc -c)"
|
TEXTSIZE="$(echo $TEXT | wc -c)"
|
||||||
|
|
||||||
mkdir -p ~/.sxmo/$NUM
|
mkdir -p "$LOGDIR/$NUM"
|
||||||
echo -ne "$NUM at $TIME:\n$TEXT\n\n" >> ~/.sxmo/$NUM/sms.txt
|
echo -ne "Received from $NUM at $TIME:\n$TEXT\n\n" >> $LOGDIR/$NUM/sms.txt
|
||||||
echo -ne "$TIME\trecv_txt\t$NUM\t$TEXTSIZE chars\n" >> ~/.sxmo/$NUM/log.tsv
|
echo -ne "$TIME\trecv_txt\t$NUM\t$TEXTSIZE chars\n" >> $LOGDIR/modemlog.tsv
|
||||||
sudo mmcli -m $(modem_n) --messaging-delete-sms=$i
|
sudo mmcli -m $(modem_n) --messaging-delete-sms=$i
|
||||||
|
|
||||||
|
sxmo_vibratepine 300 && sleep 0.1
|
||||||
|
sxmo_vibratepine 300 && sleep 0.1
|
||||||
|
sxmo_vibratepine 300
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
killinprogresscall() {
|
||||||
|
echo "Kill the in progress call"
|
||||||
|
pkill -9 dmenu
|
||||||
|
}
|
||||||
|
|
||||||
|
inprogresscallchecker() {
|
||||||
|
# E.g. register current call in progress as ACTIVECALL
|
||||||
|
CURRENTCALLS="$(mmcli -m $(modem_n) --voice-list-calls)"
|
||||||
|
|
||||||
|
# E.g. if we've previously registered an ACTIVECALL, check if it
|
||||||
|
# was terminated by the otherside, if so kill the incall script
|
||||||
|
# and notify user
|
||||||
|
echo "$ACTIVECALL" | grep -E '[0-9]+' && $(
|
||||||
|
echo "$CURRENTCALLS" |
|
||||||
|
grep -E "Call/${ACTIVECALL}.+terminated" &&
|
||||||
|
killinprogresscall
|
||||||
|
)
|
||||||
|
|
||||||
|
# Register the active call so we can check in future loops if
|
||||||
|
# other side hung up
|
||||||
|
ACTIVECALL="$(
|
||||||
|
echo "$CURRENTCALLS" |
|
||||||
|
grep -oE "[0-9]+ (incoming|outgoing).+active" |
|
||||||
|
cut -d' ' -f1
|
||||||
|
)"
|
||||||
|
|
||||||
|
echo "Set new Activecall:<$ACTIVECALL>"
|
||||||
|
}
|
||||||
|
|
||||||
while true
|
while true
|
||||||
do
|
do
|
||||||
sxmo_setpineled green 0
|
sxmo_setpineled green 0
|
||||||
|
@ -57,10 +97,11 @@ do
|
||||||
grep -Eo '[0-9]+'
|
grep -Eo '[0-9]+'
|
||||||
)"
|
)"
|
||||||
|
|
||||||
echo VIDS $VOICECALLID
|
echo "Check status, VIDS: $VOICECALLID, TIDS: $TEXTIDS"
|
||||||
echo TIDS $TEXTIDS
|
|
||||||
|
|
||||||
echo "$VOICECALLID" | grep . && newcall "$VOICECALLID" || rm /tmp/sxmo_incomingcall
|
inprogresscallchecker
|
||||||
|
|
||||||
|
echo "$VOICECALLID" | grep . && newcall "$VOICECALLID" || rm -f /tmp/sxmo_incomingcall
|
||||||
echo "$TEXTIDS" | grep . && newtexts "$TEXTIDS"
|
echo "$TEXTIDS" | grep . && newtexts "$TEXTIDS"
|
||||||
sleep $TIMEOUT
|
sleep $TIMEOUT
|
||||||
done
|
done
|
||||||
|
|
|
@ -1,58 +0,0 @@
|
||||||
#!/usr/bin/env sh
|
|
||||||
EDITOR=vis
|
|
||||||
|
|
||||||
err() {
|
|
||||||
echo $1 | dmenu -fn Terminus-20 -c -l 10
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
modem_n() {
|
|
||||||
mmcli -L | grep -oE 'Modem\/([0-9]+)' | cut -d'/' -f2
|
|
||||||
}
|
|
||||||
|
|
||||||
editmsg() {
|
|
||||||
TMP="$(mktemp --suffix $1_msg)"
|
|
||||||
echo "$2" > "$TMP"
|
|
||||||
TEXT="$(st -e $EDITOR $TMP)"
|
|
||||||
cat $TMP
|
|
||||||
}
|
|
||||||
|
|
||||||
sendmsg() {
|
|
||||||
MODEM=$(modem_n)
|
|
||||||
SMSNO=$(
|
|
||||||
sudo mmcli -m $MODEM --messaging-create-sms="text='$2',number=$1" |
|
|
||||||
grep -o [0-9]*$
|
|
||||||
)
|
|
||||||
sudo mmcli -s ${SMSNO} --send
|
|
||||||
for i in $(mmcli -m $MODEM --messaging-list-sms | grep " (sent)" | cut -f5 -d' ') ; do
|
|
||||||
sudo mmcli -m $MODEM --messaging-delete-sms=$i
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
main() {
|
|
||||||
modem_n || err "Couldn't determine modem number - is modem online?"
|
|
||||||
|
|
||||||
# Prompt for number
|
|
||||||
NUMBER=$(
|
|
||||||
echo -e "Enter Number: \nCancel" |
|
|
||||||
dmenu -p "Number" -fn "Terminus-20" -l 10 -c
|
|
||||||
)
|
|
||||||
echo "$NUMBER" | grep -E "^Cancel$" && exit 1
|
|
||||||
|
|
||||||
# Compose first version of msg
|
|
||||||
TEXT="$(editmsg $NUMBER 'Enter text message here')"
|
|
||||||
|
|
||||||
while true
|
|
||||||
do
|
|
||||||
CHARS=$(echo "$TEXT" | wc -c)
|
|
||||||
CONFIRM=$(
|
|
||||||
echo -e "Message ($CHARS) to -> $NUMBER: ($TEXT)\nEdit\nSend\nCancel" |
|
|
||||||
dmenu -c -idx 1 -p "Confirm" -fn "Terminus-20" -l 10
|
|
||||||
)
|
|
||||||
echo "$CONFIRM" | grep -E "^Send$" && sendmsg "$NUMBER" "$TEXT" && exit 0
|
|
||||||
echo "$CONFIRM" | grep -E "^Cancel$" && exit 1
|
|
||||||
echo "$CONFIRM" | grep -E "^Edit$" && TEXT="$(editmsg "$NUMBER" "$TEXT")"
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
main
|
|
90
scripts/modem/sxmo_modemtext.sh
Executable file
90
scripts/modem/sxmo_modemtext.sh
Executable file
|
@ -0,0 +1,90 @@
|
||||||
|
#!/usr/bin/env sh
|
||||||
|
EDITOR=vis
|
||||||
|
LOGDIR=/home/$USER/.sxmo
|
||||||
|
|
||||||
|
err() {
|
||||||
|
echo $1 | dmenu -fn Terminus-20 -c -l 10
|
||||||
|
kill $$
|
||||||
|
}
|
||||||
|
|
||||||
|
modem_n() {
|
||||||
|
mmcli -L | grep -oE 'Modem\/([0-9]+)' | cut -d'/' -f2
|
||||||
|
}
|
||||||
|
|
||||||
|
contacts() {
|
||||||
|
cat $LOGDIR/modemlog.tsv | cut -f3 | sort | uniq | awk NF
|
||||||
|
}
|
||||||
|
|
||||||
|
editmsg() {
|
||||||
|
TMP="$(mktemp --suffix $1_msg)"
|
||||||
|
echo "$2" > "$TMP"
|
||||||
|
TEXT="$(st -e $EDITOR $TMP)"
|
||||||
|
cat $TMP
|
||||||
|
}
|
||||||
|
|
||||||
|
sendmsg() {
|
||||||
|
MODEM=$(modem_n)
|
||||||
|
NUMBER="$1"
|
||||||
|
TEXT="$2"
|
||||||
|
TEXTSIZE="$(echo "$TEXT" | wc -c)"
|
||||||
|
|
||||||
|
SMSNO=$(
|
||||||
|
sudo mmcli -m $MODEM --messaging-create-sms="text='$TEXT',number=$NUMBER" |
|
||||||
|
grep -o [0-9]*$
|
||||||
|
)
|
||||||
|
sudo mmcli -s ${SMSNO} --send || err "Couldn't send text message"
|
||||||
|
for i in $(mmcli -m $MODEM --messaging-list-sms | grep " (sent)" | cut -f5 -d' ') ; do
|
||||||
|
sudo mmcli -m $MODEM --messaging-delete-sms=$i
|
||||||
|
done
|
||||||
|
|
||||||
|
TIME="$(date --iso-8601=seconds)"
|
||||||
|
mkdir -p ~/.sxmo/$NUMBER
|
||||||
|
echo -ne "Sent to $NUMBER at $TIME:\n$TEXT\n\n" >> $LOGDIR/$NUMBER/sms.txt
|
||||||
|
echo -ne "$TIME\tsent_txt\t$NUMBER\t$TEXTSIZE chars\n" >> $LOGDIR/modemlog.tsv
|
||||||
|
|
||||||
|
err "Sent text message ok"
|
||||||
|
}
|
||||||
|
|
||||||
|
sendtextmenu() {
|
||||||
|
modem_n || err "Couldn't determine modem number - is modem online?"
|
||||||
|
|
||||||
|
# Prompt for number
|
||||||
|
NUMBER=$(
|
||||||
|
echo -e "\nCancel\n$(contacts)" |
|
||||||
|
awk NF |
|
||||||
|
sxmo_dmenu_with_kb.sh -p "Number" -fn "Terminus-20" -l 10 -c
|
||||||
|
)
|
||||||
|
echo "$NUMBER" | grep -E "^Cancel$" && exit 1
|
||||||
|
echo "$NUMBER" | grep -E '[0-9]+' || err "That doesn't seem like a valid number"
|
||||||
|
|
||||||
|
# Compose first version of msg
|
||||||
|
TEXT="$(editmsg $NUMBER 'Enter text message here')"
|
||||||
|
|
||||||
|
while true
|
||||||
|
do
|
||||||
|
CHARS=$(echo "$TEXT" | wc -c)
|
||||||
|
CONFIRM=$(
|
||||||
|
echo -e "Edit Message ($TEXT)\nSend to → $NUMBER\nCancel" |
|
||||||
|
dmenu -c -idx 1 -p "Confirm" -fn "Terminus-20" -l 10
|
||||||
|
)
|
||||||
|
echo "$CONFIRM" | grep -E "^Send" && sendmsg "$NUMBER" "$TEXT" && exit 0
|
||||||
|
echo "$CONFIRM" | grep -E "^Cancel$" && exit 1
|
||||||
|
echo "$CONFIRM" | grep -E "^Edit Message" && TEXT="$(editmsg "$NUMBER" "$TEXT")"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
tailtextlog() {
|
||||||
|
st -e tail -f $LOGDIR/$1/sms.txt
|
||||||
|
}
|
||||||
|
|
||||||
|
main() {
|
||||||
|
# Display
|
||||||
|
ENTRIES="$(echo -e "$(contacts)" | xargs -INUM echo NUM logfile)"
|
||||||
|
ENTRIES="$(echo -e "Close Menu\nSend a Text\n$ENTRIES")"
|
||||||
|
NUMBER="$(echo -e "$ENTRIES" | dmenu -p Texts -c -fn Terminus-20 -l 10)"
|
||||||
|
echo $NUMBER | grep "Close Menu" && exit 1
|
||||||
|
echo $NUMBER | grep "Send a Text" && sendtextmenu && exit 1
|
||||||
|
tailtextlog "$(echo $NUMBER | sed 's/ logfile//g')"
|
||||||
|
}
|
||||||
|
|
||||||
|
main
|
|
@ -1,8 +0,0 @@
|
||||||
#!/usr/bin/env sh
|
|
||||||
DIR=/home/$USER/.sxmo
|
|
||||||
|
|
||||||
# Warn for no texts
|
|
||||||
ls -1 $DIR | wc -l | grep -E '^0$' && echo "No texts!" | dmenu -fn Terminus-20 -l 10 -c && exit 1
|
|
||||||
|
|
||||||
# Display
|
|
||||||
ls -1 $DIR | dmenu -p Messages -c -fn Terminus-20 -l 10 | xargs -INUMBER st -e tail -f $DIR/NUMBER/sms.txt
|
|
Loading…
Add table
Add a link
Reference in a new issue