Fixes related to cleaning up modem functionality; fix audio; add flash toggle

master
Miles Alan 4 years ago
parent b37138c845
commit 34b2c57038
  1. 5
      README.md
  2. 5
      configs/default_alsa_sound.conf
  3. 3
      scripts/core/sxmo_appmenu.sh
  4. 6
      scripts/core/sxmo_flashtoggle.sh
  5. 2
      scripts/core/sxmo_statusbar.sh
  6. 31
      scripts/modem/sxmo_modemcall.sh
  7. 13
      scripts/modem/sxmo_modemmonitor.sh
  8. 2
      scripts/modem/sxmo_modemmonitortoggle.sh
  9. 13
      scripts/modem/sxmo_modemtext.sh

@ -0,0 +1,5 @@
# sxmo-utils
This repository contains scripts and C programs to support sxmo.

@ -1,4 +1,3 @@
# Mute speaker, only output to headphones
state.sun50ia64audio { state.sun50ia64audio {
control.1 { control.1 {
iface MIXER iface MIXER
@ -429,8 +428,8 @@ state.sun50ia64audio {
control.33 { control.33 {
iface MIXER iface MIXER
name 'DAC Mixer AIF2 DAC Playback Switch' name 'DAC Mixer AIF2 DAC Playback Switch'
value.0 true value.0 false
value.1 true value.1 false
comment { comment {
access 'read write' access 'read write'
type BOOLEAN type BOOLEAN

@ -40,13 +40,12 @@ programchoicesinit() {
# System Control menu # System Control menu
echo $WMCLASS | grep -i "config" && CHOICES="$(echo " echo $WMCLASS | grep -i "config" && CHOICES="$(echo "
Volume ↑ ^ 1 ^ sxmo_vol.sh up
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 ^ 0 ^ sxmo_modeminfo.sh Modem Info ^ 0 ^ sxmo_modeminfo.sh
Modem Log ^ 0 ^ sxmo_modemlog.sh Modem Log ^ 0 ^ sxmo_modemlog.sh
Flash $(cat /sys/class/leds/white:flash/brightness | grep -E '^0$' > /dev/null && echo -n "Off → On" || echo -n "On → Off") ^ 1 ^ sxmo_flashtoggle.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

@ -0,0 +1,6 @@
#!/usr/bin/env sh
sxmo_setpineled white "$(
cat /sys/class/leds/white:flash/brightness |
grep -E '^0$' > /dev/null && echo 255 || echo 0
)"

@ -24,7 +24,7 @@ do
# Volume # Volume
VOL=$( VOL=$(
echo "$(audiodevice)" | echo "$(amixer sget $(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,9 +1,12 @@
#!/usr/bin/env sh #!/usr/bin/env sh
PID=$$
LOGDIR=/home/$USER/.sxmo LOGDIR=/home/$USER/.sxmo
trap "kill 0" SIGINT
err() { err() {
echo -e "$1" | dmenu -fn Terminus-20 -c -l 10 echo -e "$1" | dmenu -fn Terminus-20 -c -l 10
kill $$ alsactl --file /usr/share/sxmo/default_alsa_sound.conf restore
kill -9 0
} }
modem_n() { modem_n() {
@ -11,10 +14,11 @@ modem_n() {
} }
contacts() { contacts() {
cat $LOGDIR/modemlog.tsv | cut -f3 | sort | uniq | awk NF RES="$(cat $LOGDIR/modemlog.tsv | cut -f3 | sort | uniq | awk NF)"
echo $RES
echo -e "$RES" | grep 8042221111 || echo Test Number 8042221111
} }
modem_cmd_errcheck() { modem_cmd_errcheck() {
ARGS="$@" ARGS="$@"
RES="$(mmcli $ARGS 2>&1)" RES="$(mmcli $ARGS 2>&1)"
@ -23,15 +27,16 @@ modem_cmd_errcheck() {
} }
vid_to_number() { vid_to_number() {
mmcli -m $(modem_n) -o $1 -K | grep call.properties.number | cut -d ':' -f2 | tr -d ' ' mmcli -m $(modem_n) -o $1 -K | grep call.properties.number | cut -d ':' -f2 | tr -d ' ' | sed 's/^[+]//' | sed 's/^1//'
} }
log_event() { log_event() {
EVT_HANDLE="$1" EVT_HANDLE="$1"
EVT_VID="$2" EVT_VID="$2"
NUMBER="$(vid_to_number $EVT_VID)" NUM="$(vid_to_number $EVT_VID)"
TIME="$(date --iso-8601=seconds)" TIME="$(date --iso-8601=seconds)"
echo -ne "$TIME\t$EVT_HANDLE\t$NUMBER\n" >> $LOGDIR/modemlog.tsv mkdir -p $LOGDIR
echo -ne "$TIME\t$EVT_HANDLE\t$NUM\n" >> $LOGDIR/modemlog.tsv
} }
toggleflag() { toggleflag() {
@ -52,12 +57,13 @@ toggleflag() {
dialmenu() { dialmenu() {
CONTACTS="$(contacts)" CONTACTS="$(contacts)"
NUMBER="$( NUMBER="$(
echo -e "Close Menu\n$CONTACTS\nTest Number 804-222-1111" | echo -e "Close Menu\n$CONTACTS" |
sxmo_dmenu_with_kb.sh -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}' |
tr -d -
)" )"
echo $NUMBER | grep "Close Menu" && kill $$ echo "$NUMBER" | grep "Close Menu" && kill 0
NUMBER="$(echo $NUMBER | awk -F' ' '{print $NF}' | tr -d -)"
echo "$NUMBER" | grep -E '^[0-9]+$'> /dev/null || err "$NUMBER is not a number"
echo "Attempting to dial: $NUMBER" >&2 echo "Attempting to dial: $NUMBER" >&2
VID="$( VID="$(
@ -72,7 +78,7 @@ startcall() {
VID="$1" VID="$1"
#modem_cmd_errcheck --voice-status -o $VID #modem_cmd_errcheck --voice-status -o $VID
modem_cmd_errcheck -m $(modem_n) -o $VID --start modem_cmd_errcheck -m $(modem_n) -o $VID --start
log_event "call_start" $VID log_event "call_start" "$VID"
} }
acceptcall() { acceptcall() {
@ -163,7 +169,6 @@ dtmfmenu() {
done done
} }
dial() { dial() {
VID="$(dialmenu)" VID="$(dialmenu)"
incallmenu $VID incallmenu $VID

@ -21,10 +21,13 @@ newcall() {
INCOMINGNUMBER=$( 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 | grep call.properties.number |
cut -d ':' -f 2 cut -d ':' -f 2 |
sed 's/^[+]//' |
sed 's/^1//'
) )
TIME="$(date --iso-8601=seconds)" TIME="$(date --iso-8601=seconds)"
mkdir -p $LOGDIR
echo -ne "$TIME\tcall_ring\t$NUMBER\n" >> $LOGDIR/modemlog.tsv 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)"
@ -39,7 +42,13 @@ newtexts() {
DAT="$(mmcli -m $(modem_n) -s $i -K)" DAT="$(mmcli -m $(modem_n) -s $i -K)"
TEXT="$(echo "$DAT" | grep sms.content.text | sed -E 's/^sms\.content\.text\s+:\s+//')" TEXT="$(echo "$DAT" | grep sms.content.text | sed -E 's/^sms\.content\.text\s+:\s+//')"
NUM="$(echo "$DAT" | grep sms.content.number | sed -E 's/^sms\.content\.number\s+:\s+[+]?//')" NUM="$(
echo "$DAT" |
grep sms.content.number |
sed -E 's/^sms\.content\.number\s+:\s+[+]?//' |
sed 's/^[+]//' |
sed 's/^1//'
)"
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)"

@ -3,6 +3,6 @@ pgrep -f sxmo_modemmonitor.sh && pkill -9 -f sxmo_modemmonitor.sh || sxmo_modemm
rm /tmp/sxmo_incomingcall rm /tmp/sxmo_incomingcall
# E.g. wait until process killed or started -- maybe there's a better way.. # E.g. wait until process killed or started -- maybe there's a better way..
sleep 0.2 sleep 1
echo 1 > /tmp/sxmo_bar echo 1 > /tmp/sxmo_bar

@ -11,8 +11,9 @@ modem_n() {
mmcli -L | grep -oE 'Modem\/([0-9]+)' | cut -d'/' -f2 mmcli -L | grep -oE 'Modem\/([0-9]+)' | cut -d'/' -f2
} }
contacts() { textcontacts() {
cat $LOGDIR/modemlog.tsv | cut -f3 | sort | uniq | awk NF # TODO: is find automatically sorted by timestamp?
find $LOGDIR/* -type d -maxdepth 1 | awk -F'/' '{print $NF}' | tac
} }
editmsg() { editmsg() {
@ -24,7 +25,7 @@ editmsg() {
sendmsg() { sendmsg() {
MODEM=$(modem_n) MODEM=$(modem_n)
NUMBER="$1" NUMBER="$(echo "$1" | sed 's/^[+]//' | sed 's/^1//')"
TEXT="$2" TEXT="$2"
TEXTSIZE="$(echo "$TEXT" | wc -c)" TEXTSIZE="$(echo "$TEXT" | wc -c)"
@ -38,7 +39,7 @@ sendmsg() {
done done
TIME="$(date --iso-8601=seconds)" TIME="$(date --iso-8601=seconds)"
mkdir -p ~/.sxmo/$NUMBER mkdir -p $LOGDIR/$NUMBER
echo -ne "Sent to $NUMBER at $TIME:\n$TEXT\n\n" >> $LOGDIR/$NUMBER/sms.txt 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 echo -ne "$TIME\tsent_txt\t$NUMBER\t$TEXTSIZE chars\n" >> $LOGDIR/modemlog.tsv
@ -50,7 +51,7 @@ sendtextmenu() {
# Prompt for number # Prompt for number
NUMBER=$( NUMBER=$(
echo -e "\nCancel\n$(contacts)" | echo -e "\nCancel\n$(textcontacts)" |
awk NF | awk NF |
sxmo_dmenu_with_kb.sh -p "Number" -fn "Terminus-20" -l 10 -c sxmo_dmenu_with_kb.sh -p "Number" -fn "Terminus-20" -l 10 -c
) )
@ -79,7 +80,7 @@ tailtextlog() {
main() { main() {
# Display # Display
ENTRIES="$(echo -e "$(contacts)" | xargs -INUM echo NUM logfile)" ENTRIES="$(echo -e "$(textcontacts)" | xargs -INUM echo NUM logfile)"
ENTRIES="$(echo -e "Close Menu\nSend a Text\n$ENTRIES")" ENTRIES="$(echo -e "Close Menu\nSend a Text\n$ENTRIES")"
NUMBER="$(echo -e "$ENTRIES" | dmenu -p Texts -c -fn Terminus-20 -l 10)" NUMBER="$(echo -e "$ENTRIES" | dmenu -p Texts -c -fn Terminus-20 -l 10)"
echo $NUMBER | grep "Close Menu" && exit 1 echo $NUMBER | grep "Close Menu" && exit 1

Loading…
Cancel
Save