Shellcheck and tabindent all scripts

This commit is contained in:
Miles Alan 2020-06-10 19:26:56 -05:00
parent bd5ead19e5
commit 049a93e5d8
25 changed files with 589 additions and 534 deletions

View file

@ -21,14 +21,16 @@ contacts() {
}
modem_cmd_errcheck() {
ARGS="$@"
RES="$(mmcli $ARGS 2>&1)"
[ $? -eq 0 ] || err "Problem executing mmcli command!\n$RES"
# shellcheck disable=SC2068
RES="$(mmcli $@ 2>&1)"
OK="$?"
echo "Command: mmcli $*"
if [ "$OK" != 0 ]; then err "Problem executing mmcli command!\n$RES"; fi
echo "$RES"
}
vid_to_number() {
mmcli -m "$(modem_n)" -o "$1" -K | grep call.properties.number | cut -d ':' -f2 | tr -d ' ' | sed 's/^[+]//' | sed 's/^1//'
mmcli -m "$(modem_n)" -o "$1" -K | grep call.properties.number | cut -d ':' -f2 | tr -d ' ' | sed 's/^[+]//' | sed 's/^1//'
}
log_event() {
@ -43,7 +45,7 @@ log_event() {
toggleflag() {
TOGGLEFLAG=$1
shift
FLAGS="$@"
FLAGS="$*"
echo -- "$FLAGS" | grep -- "$TOGGLEFLAG" >&2 &&
NEWFLAGS="$(echo -- "$FLAGS" | sed "s/$TOGGLEFLAG//g")" ||
@ -51,6 +53,7 @@ toggleflag() {
NEWFLAGS="$(echo -- "$NEWFLAGS" | sed "s/--//g; s/ / /g")"
# shellcheck disable=SC2086
sxmo_megiaudioroute $NEWFLAGS
echo -- "$NEWFLAGS"
}
@ -79,7 +82,7 @@ dialmenu() {
grep -oE "[0-9]+"
)"
echo "Starting call with VID: $VID" >&2
startcall "$VID" >&@
startcall "$VID" >&2
echo "$VID"
}
@ -107,69 +110,67 @@ hangup() {
}
incallmenu() {
DMENUIDX=0
VID="$1"
NUMBER="$(vid_to_number "$VID")"
DMENUIDX=0
VID="$1"
NUMBER="$(vid_to_number "$VID")"
# E.g. There's some bug with the modem that' requires us to toggle the
# DAI a few times before starting the call for it to kick in
FLAGS=" "
toggleflagset "-e"
toggleflagset "-m"
toggleflagset "-2"
toggleflagset "-2"
toggleflagset "-2"
# E.g. There's some bug with the modem that' requires us to toggle the
# DAI a few times before starting the call for it to kick in
FLAGS=" "
toggleflagset "-e"
toggleflagset "-m"
toggleflagset "-2"
toggleflagset "-2"
toggleflagset "-2"
while true
do
CHOICES="
Volume ↑ ^ sxmo_vol.sh up
Volume ↓ ^ sxmo_vol.sh down
Mic $(echo -- $FLAGS | grep -q -- -m && echo) ^ toggleflagset -m
Linemic $(echo -- $FLAGS | grep -q -- -l && echo) ^ toggleflagset -l
Echomic $(echo -- $FLAGS | grep -q -- -z && echo) ^ toggleflagset -z
Earpiece $(echo -- $FLAGS | grep -q -- -e && echo) ^ toggleflagset -e
Linejack $(echo -- $FLAGS | grep -q -- -h && echo) ^ toggleflagset -h
Speakerphone $(echo -- $FLAGS | grep -q -- -s && echo) ^ toggleflagset -s
DTMF Tones ^ dtmfmenu $VID
Hangup ^ hangup $VID
Lock Screen ^ sh -c 'pkill -9 lisgd; sxmo_screenlock; lisgd &'
"
while true; do
CHOICES="
Volume ↑ ^ sxmo_vol.sh up
Volume ↓ ^ sxmo_vol.sh down
Mic $(echo -- "$FLAGS" | grep -q -- -m && echo) ^ toggleflagset -m
Linemic $(echo -- "$FLAGS" | grep -q -- -l && echo) ^ toggleflagset -l
Echomic $(echo -- "$FLAGS" | grep -q -- -z && echo) ^ toggleflagset -z
Earpiece $(echo -- "$FLAGS" | grep -q -- -e && echo) ^ toggleflagset -e
Linejack $(echo -- "$FLAGS" | grep -q -- -h && echo) ^ toggleflagset -h
Speakerphone $(echo -- "$FLAGS" | grep -q -- -s && echo) ^ toggleflagset -s
DTMF Tones ^ dtmfmenu $VID
Hangup ^ hangup $VID
Lock Screen ^ sh -c 'pkill -9 lisgd; sxmo_screenlock; lisgd &'
"
PICKED=""
PICKED=$(
echo "$CHOICES" |
xargs -0 echo |
cut -d'^' -f1 |
sed '/^[[:space:]]*$/d' |
awk '{$1=$1};1' |
dmenu -idx $DMENUIDX -l 14 -c -fn "Terminus-30" -p "$NUMBER"
PICKED=""
PICKED=$(
echo "$CHOICES" |
xargs -0 echo |
cut -d'^' -f1 |
sed '/^[[:space:]]*$/d' |
awk '{$1=$1};1' |
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"
# 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)
DMENUIDX=$(echo $(echo "$CHOICES" | grep -n "$PICKED" | cut -d ':' -f1) - 1 | bc)
eval $CMD
done
CMD=$(echo "$CHOICES" | grep "$PICKED" | cut -d '^' -f2)
DMENUIDX=$(echo "$(echo "$CHOICES" | grep -n "$PICKED" | cut -d ':' -f1)" - 1 | bc)
eval "$CMD"
done
}
dtmfmenu() {
VID="$1"
DTMFINDEX=0
NUMS="0123456789*#ABCD"
VID="$1"
DTMFINDEX=0
NUMS="0123456789*#ABCD"
while true
do
PICKED="$(
echo "$NUMS" | grep -o . | sed '1 iReturn to Call Menu' |
dmenu -l 20 -fn Terminus-20 -c -idx $DTMFINDEX -p "DTMF Tone"
)"
echo "$PICKED" | grep "Return to Call Menu" && return
DTMFINDEX=$(echo "$NUMS" | grep -bo "$PICKED" | cut -d: -f1 | xargs -IN echo 2+N | bc)
modem_cmd_errcheck -m "$(modem_n)" -o "$VID" --send-dtmf="$PICKED"
done
while true; do
PICKED="$(
echo "$NUMS" | grep -o . | sed '1 iReturn to Call Menu' |
dmenu -l 20 -fn Terminus-20 -c -idx $DTMFINDEX -p "DTMF Tone"
)"
echo "$PICKED" | grep "Return to Call Menu" && return
DTMFINDEX=$(echo "$NUMS" | grep -bo "$PICKED" | cut -d: -f1 | xargs -IN echo 2+N | bc)
modem_cmd_errcheck -m "$(modem_n)" -o "$VID" --send-dtmf="$PICKED"
done
}
dial() {
@ -178,9 +179,9 @@ dial() {
}
pickup() {
acceptcall $1
incallmenu $1
acceptcall "$1"
incallmenu "$1"
}
modem_n || err "Couldn't determine modem number - is modem online?"
$@
"$1" "$2"

View file

@ -6,9 +6,9 @@ err() {
}
modem_n() {
MODEMS="$(mmcli -L)"
echo "$MODEMS" | grep -oE 'Modem\/([0-9]+)' > /dev/null || err "Couldn't find modem - is your modem enabled?"
echo "$MODEMS" | grep -oE 'Modem\/([0-9]+)' | cut -d'/' -f2
MODEMS="$(mmcli -L)"
echo "$MODEMS" | grep -oE 'Modem\/([0-9]+)' > /dev/null || err "Couldn't find modem - is your modem enabled?"
echo "$MODEMS" | grep -oE 'Modem\/([0-9]+)' | cut -d'/' -f2
}
st -e sh -c "mmcli -m $(modem_n) && read"

View file

@ -2,10 +2,10 @@
TIMEOUT=3
LOGDIR="$XDG_CONFIG_HOME"/sxmo/modem
ACTIVECALL="NONE"
trap "kill 0" SIGINT
trap "kill 0" INT
err() {
echo -e "$1" | dmenu -fn Terminus-20 -c -l 10
printf %b "$1" | dmenu -fn Terminus-20 -c -l 10
kill -9 0
}
@ -21,13 +21,13 @@ newcall() {
sxmo_setpineled green 1
# Delete all terminated calls
for i in $(mmcli -m $(modem_n) --voice-list-calls | grep terminated | grep -oE Call\/[0-9]+ | cut -d'/' -f2); do
mmcli -m $(modem_n) --voice-delete-call $i
for i in $(mmcli -m "$(modem_n)" --voice-list-calls | grep terminated | grep -oE "Call\/[0-9]+" | cut -d'/' -f2); do
mmcli -m "$(modem_n)" --voice-delete-call "$i"
done
echo "Incoming Call:"
INCOMINGNUMBER=$(
mmcli -m $(modem_n) --voice-list-calls -o "$VID" -K |
mmcli -m "$(modem_n)" --voice-list-calls -o "$VID" -K |
grep call.properties.number |
cut -d ':' -f 2 |
sed 's/^[+]//' |
@ -35,8 +35,8 @@ newcall() {
)
TIME="$(date --iso-8601=seconds)"
mkdir -p $LOGDIR
echo -ne "$TIME\tcall_ring\t$INCOMINGNUMBER\n" >> $LOGDIR/modemlog.tsv
mkdir -p "$LOGDIR"
printf %b "$TIME\tcall_ring\t$INCOMINGNUMBER\n" >> "$LOGDIR/modemlog.tsv"
echo "$VID:$INCOMINGNUMBER" > /tmp/sxmo_incomingcall
echo "Number: $INCOMINGNUMBER (VID: $VID)"
@ -46,8 +46,8 @@ newtexts() {
sxmo_setpineled green 1
echo "New Texts:"
for i in $(echo -e "$1") ; do
DAT="$(mmcli -m $(modem_n) -s $i -K)"
for i in $(printf %b "$1") ; do
DAT="$(mmcli -m "$(modem_n)" -s "$i" -K)"
TEXT="$(echo "$DAT" | grep sms.content.text | sed -E 's/^sms\.content\.text\s+:\s+//')"
NUM="$(
@ -58,12 +58,12 @@ newtexts() {
sed 's/^1//'
)"
TIME="$(echo "$DAT" | grep sms.properties.timestamp | sed -E 's/^sms\.properties\.timestamp\s+:\s+//')"
TEXTSIZE="$(echo $TEXT | wc -c)"
TEXTSIZE="${#TEXT}"
mkdir -p "$LOGDIR/$NUM"
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" >> $LOGDIR/modemlog.tsv
mmcli -m $(modem_n) --messaging-delete-sms=$i
printf %b "Received from $NUM at $TIME:\n$TEXT\n\n" >> "$LOGDIR/$NUM/sms.txt"
printf %b "$TIME\trecv_txt\t$NUM\t$TEXTSIZE chars\n" >> "$LOGDIR/modemlog.tsv"
mmcli -m "$(modem_n)" --messaging-delete-sms="$i"
sxmo_vibratepine 300 && sleep 0.1
sxmo_vibratepine 300 && sleep 0.1
@ -78,16 +78,15 @@ killinprogresscall() {
inprogresscallchecker() {
# E.g. register current call in progress as ACTIVECALL
CURRENTCALLS="$(mmcli -m $(modem_n) --voice-list-calls)"
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" &&
if echo "$ACTIVECALL" | grep -E '[0-9]+'; then
echo "$CURRENTCALLS" | grep -E "Call/${ACTIVECALL}.+terminated" &&
killinprogresscall
)
fi
# Register the active call so we can check in future loops if
# other side hung up
@ -104,13 +103,13 @@ while true
do
sxmo_setpineled green 0
VOICECALLID="$(
mmcli -m $(modem_n) --voice-list-calls -a |
mmcli -m "$(modem_n)" --voice-list-calls -a |
grep -Eo '[0-9]+ incoming \(ringing-in\)' |
grep -Eo '[0-9]+'
)"
TEXTIDS="$(
mmcli -m $(modem_n) --messaging-list-sms |
mmcli -m "$(modem_n)" --messaging-list-sms |
grep -Eo '/SMS/[0-9]+ \(received\)' |
grep -Eo '[0-9]+'
)"
@ -119,7 +118,13 @@ do
inprogresscallchecker
echo "$VOICECALLID" | grep . && newcall "$VOICECALLID" || rm -f /tmp/sxmo_incomingcall
if echo "$VOICECALLID" | grep .; then
newcall "$VOICECALLID"
else
rm -f /tmp/sxmo_incomingcall
fi
echo "$TEXTIDS" | grep . && newtexts "$TEXTIDS"
sleep $TIMEOUT
done

View file

@ -1,5 +1,10 @@
#!/usr/bin/env sh
pgrep -f sxmo_modemmonitor.sh && pkill -9 -f sxmo_modemmonitor.sh || sxmo_modemmonitor.sh &
if pgrep -f sxmo_modemmonitor.sh; then
pkill -9 -f sxmo_modemmonitor.sh
else
sxmo_modemmonitor.sh &
fi
rm /tmp/sxmo_incomingcall
# E.g. wait until process killed or started -- maybe there's a better way..

View file

@ -3,47 +3,47 @@ EDITOR=vis
LOGDIR="$XDG_CONFIG_HOME"/sxmo/modem
err() {
echo $1 | dmenu -fn Terminus-20 -c -l 10
echo "$1" | dmenu -fn Terminus-20 -c -l 10
kill $$
}
modem_n() {
MODEMS="$(mmcli -L)"
echo "$MODEMS" | grep -oE 'Modem\/([0-9]+)' > /dev/null || err "Couldn't find modem - is your modem enabled?"
echo "$MODEMS" | grep -oE 'Modem\/([0-9]+)' | cut -d'/' -f2
MODEMS="$(mmcli -L)"
echo "$MODEMS" | grep -qoE 'Modem\/([0-9]+)' || err "Couldn't find modem - is your modem enabled?"
echo "$MODEMS" | grep -oE 'Modem\/([0-9]+)' | cut -d'/' -f2
}
textcontacts() {
# TODO: is find automatically sorted by timestamp?
find $LOGDIR/* -type d -maxdepth 1 | awk -F'/' '{print $NF}' | tac
find "$LOGDIR"/* -type d -maxdepth 1 | awk -F'/' '{print $NF}' | tac
}
editmsg() {
TMP="$(mktemp --suffix $1_msg)"
TMP="$(mktemp --suffix "$1_msg")"
echo "$2" > "$TMP"
TEXT="$(st -e $EDITOR $TMP)"
cat $TMP
TEXT="$(st -e $EDITOR "$TMP")"
cat "$TMP"
}
sendmsg() {
MODEM=$(modem_n)
MODEM="$(modem_n)"
NUMBER="$(echo "$1" | sed 's/^[+]//' | sed 's/^1//')"
TEXT="$2"
TEXTSIZE="$(echo "$TEXT" | wc -c)"
TEXTSIZE="${#TEXT}"
SMSNO=$(
mmcli -m $MODEM --messaging-create-sms="text='$TEXT',number=$NUMBER" |
grep -o [0-9]*$
)
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
mmcli -m $MODEM --messaging-delete-sms=$i
SMSNO="$(
mmcli -m "$MODEM" --messaging-create-sms="text='$TEXT',number=$NUMBER" |
grep -o "[0-9]*$"
)"
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
mmcli -m "$MODEM" --messaging-delete-sms="$i"
done
TIME="$(date --iso-8601=seconds)"
mkdir -p $LOGDIR/$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
mkdir -p "$LOGDIR/$NUMBER"
printf %b "Sent to $NUMBER at $TIME:\n$TEXT\n\n" >> "$LOGDIR/$NUMBER/sms.txt"
printf %b "$TIME\tsent_txt\t$NUMBER\t$TEXTSIZE chars\n" >> "$LOGDIR/modemlog.tsv"
err "Sent text message ok"
}
@ -52,24 +52,23 @@ sendtextmenu() {
modem_n || err "Couldn't determine modem number - is modem online?"
# Prompt for number
NUMBER=$(
echo -e "\nCancel\n$(textcontacts)" |
NUMBER="$(
printf %b "\nCancel\n$(textcontacts)" |
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')"
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" |
CONFIRM="$(
printf %b "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")"
@ -77,17 +76,17 @@ sendtextmenu() {
}
tailtextlog() {
st -e tail -f $LOGDIR/$1/sms.txt
st -e tail -f "$LOGDIR/$1/sms.txt"
}
main() {
# Display
ENTRIES="$(echo -e "$(textcontacts)" | 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')"
ENTRIES="$(printf %b "$(textcontacts)" | xargs -INUM echo NUM logfile)"
ENTRIES="$(printf %b "Close Menu\nSend a Text\n$ENTRIES")"
NUMBER="$(printf %b "$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