From 390a59c318fe8f0ff87dd24252ade8d012ba0dc0 Mon Sep 17 00:00:00 2001 From: Stacy Harper Date: Thu, 26 Aug 2021 21:38:30 +0200 Subject: [PATCH] Fix sxmo_modemcall recent regressions Signed-off-by: Stacy Harper Signed-off-by: Maarten van Gompel --- scripts/modem/sxmo_modemcall.sh | 51 +++++++++++++-------------------- 1 file changed, 20 insertions(+), 31 deletions(-) diff --git a/scripts/modem/sxmo_modemcall.sh b/scripts/modem/sxmo_modemcall.sh index 50daca9..a4ecdee 100755 --- a/scripts/modem/sxmo_modemcall.sh +++ b/scripts/modem/sxmo_modemcall.sh @@ -141,19 +141,10 @@ hangup() { exit 0 } -togglewindowify() { - if [ "$WINDOWIFIED" = "0" ]; then - WINDOWIFIED=1 - else - WINDOWIFIED=0 - fi -} - incallsetup() { DMENUIDX=0 CALLID="$1" NUMBER="$(vid_to_number "$CALLID")" - WINDOWIFIED=0 # 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=" " @@ -167,8 +158,6 @@ incallsetup() { incallmenuloop() { echo "sxmo_modemcall: Current flags are $FLAGS">&2 CHOICES=" - $([ "$WINDOWIFIED" = 0 ] && echo "$icon_wn2 Windowify" || echo "$icon_wn2 Unwindowify") ^ togglewindowify - $([ "$WINDOWIFIED" = 0 ] && echo "$icon_lck Screenlock ^ togglewindowify; sxmo_screenlock.sh lock &") $icon_aru Volume up ^ sxmo_vol.sh up $icon_ard Volume down ^ sxmo_vol.sh down $icon_phn Earpiece $(echo -- "$FLAGS" | grep -q -- -e && echo "$icon_chk") ^ toggleflagset -e @@ -181,23 +170,23 @@ incallmenuloop() { $icon_phx Hangup ^ hangup $CALLID " - pkill -9 bemenu # E.g. just incase user is playing with btns or hits a menu by mistake - echo "$CHOICES" | - xargs -0 echo | - cut -d'^' -f1 | - sed '/^[[:space:]]*$/d' | - awk '{$1=$1};1' | #this cryptic statement trims leading/trailing whitespace from a string - dmenu --index "$DMENUIDX" "$([ "$WINDOWIFIED" != 0 ] && echo "" || echo "-wm")" -p "$NUMBER" | - ( - PICKED="$(cat)"; - echo "sxmo_modemcall: Picked is $PICKED">&2 - echo "$PICKED" | grep -Ev "." - CMD=$(echo "$CHOICES" | grep "$PICKED" | cut -d'^' -f2) - DMENUIDX=$(echo "$(echo "$CHOICES" | grep -n "$PICKED" | cut -d ':' -f1)" - 1 | bc) - echo "sxmo_modemcall: Eval in call context: $CMD">&2 - eval "$CMD" - incallmenuloop - ) & wait # E.g. bg & wait to allow for SIGINT propogation + PICKED="$( + echo "$CHOICES" | + xargs -0 echo | + cut -d'^' -f1 | + sed '/^[[:space:]]*$/d' | + awk '{$1=$1};1' | + dmenu --index "$DMENUIDX" -p "$NUMBER" + )" || hangup "$CALLID" # in case the menu is closed + + echo "sxmo_modemcall: Picked is $PICKED" >&2 + echo "$PICKED" | grep -Ev "." + + CMD="$(echo "$CHOICES" | grep "$PICKED" | cut -d'^' -f2)" + DMENUIDX="$(printf "%s - 2" "$(echo "$CHOICES" | grep -n "$PICKED" | cut -d ':' -f1)" | bc)" + echo "sxmo_modemcall: Eval in call context: $CMD" >&2 + eval "$CMD" + incallmenuloop } dtmfmenu() { @@ -207,9 +196,9 @@ dtmfmenu() { while true; do PICKED="$( echo "$NUMS" | grep -o . | sed '1 iReturn to Call Menu' | - dmenu "$([ "$WINDOWIFIED" = 0 ] && echo "" || echo "-wm")" -p "DTMF Tone" - )" - echo "$PICKED" | grep "Return to Call Menu" && return + dmenu -p "DTMF Tone" + )" || return + echo "$PICKED" | grep -q "Return to Call Menu" && return modem_cmd_errcheck -m "$(modem_n)" -o "$CALLID" --send-dtmf="$PICKED" done }