~mil/sxmo-utils

390a59c318fe8f0ff87dd24252ade8d012ba0dc0 — Stacy Harper a month ago 103a661
Fix sxmo_modemcall recent regressions

Signed-off-by: Stacy Harper <contact@stacyharper.net>
Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
1 files changed, 20 insertions(+), 31 deletions(-)

M scripts/modem/sxmo_modemcall.sh
M scripts/modem/sxmo_modemcall.sh => scripts/modem/sxmo_modemcall.sh +20 -31
@@ 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
}