~mil/sxmo-utils

4a90d86f56382ae4007ace104b3f5f9a7146fc3a — Maarten van Gompel 11 months ago fc05104
Sane message when terminating call with unknown number and more verbose output to stderr from modem scripts
M scripts/modem/sxmo_modemcall.sh => scripts/modem/sxmo_modemcall.sh +15 -7
@@ 19,6 19,7 @@ fatalerr() {
		mmcli -m "$(modem_n)" --voice-delete-call "$CALLID"
	done
	alsactl --file /usr/share/sxmo/alsa/default_alsa_sound.conf restore
	echo "$1">&2
	notify-send "$1"
	setsid -f sh -c 'sleep 2; sxmo_statusbarupdate.sh'
	kill -9 0


@@ 32,7 33,7 @@ gracefulexit() {
modem_cmd_errcheck() {
	RES="$(mmcli "$@" 2>&1)"
	OK="$?"
	echo "Command: mmcli $*"
	echo "Command: mmcli $*">&2
	if [ "$OK" != 0 ]; then fatalerr "Problem executing mmcli command!\n$RES"; fi
	echo "$RES"
}


@@ 75,7 76,7 @@ toggleflagset() {

acceptcall() {
	CALLID="$1"
	echo "Attempting to initialize CALLID $CALLID"
	echo "Attempting to initialize CALLID $CALLID">&2
	DIRECTION="$(
		mmcli --voice-status -o "$CALLID" -K |
		grep call.properties.direction |


@@ 85,12 86,15 @@ acceptcall() {
	if [ "$DIRECTION" = "outgoing" ]; then
		modem_cmd_errcheck -m "$(modem_n)" -o "$CALLID" --start
		log_event "call_start" "$CALLID"
		echo "Started call $CALLID">&2
	elif [ "$DIRECTION" = "incoming" ]; then
		if [ -x "$XDG_CONFIG_HOME/sxmo/hooks/pickup" ]; then
			echo "Invoking pickup hook (async)">&2
			"$XDG_CONFIG_HOME/sxmo/hooks/pickup" &
		fi
		modem_cmd_errcheck -m "$(modem_n)" -o "$CALLID" --accept
		log_event "call_pickup" "$CALLID"
		echo "Picked up call $CALLID">&2
	else
		fatalerr "Couldn't initialize call with callid <$CALLID>; unknown direction <$DIRECTION>"
	fi


@@ 132,15 136,19 @@ incallmonitor() {
	while true; do
		sxmo_statusbarupdate.sh
		if mmcli -m "$(modem_n)" -K -o "$CALLID" | grep -E "^call.properties.state.+terminated"; then
			fatalerr "Call with $NUMBER terminated"
			if [ "$NUMBER" = "--" ]; then
				fatalerr "Call with unknown number terminated"
			else
				fatalerr "Call with $NUMBER terminated"
			fi
		fi
		echo "Call still in progress"
		echo "Call still in progress">&2
		sleep 3
	done
}

incallmenuloop() {
	echo "Current flags are $FLAGS"
	echo "Current flags are $FLAGS">&2
	CHOICES="
		$([ "$WINDOWIFIED" = 0 ] && echo Windowify || echo Unwindowify)   ^ togglewindowify
		$([ "$WINDOWIFIED" = 0 ] && echo 'Screenlock                      ^ togglewindowify; sxmo_screenlock &')


@@ 165,11 173,11 @@ incallmenuloop() {
		dmenu -idx $DMENUIDX -l 14 "$([ "$WINDOWIFIED" = 0 ] && echo "-c" || echo "-wm")" -fn "Terminus-30" -p "$NUMBER" |
		(
			PICKED="$(cat)";
			echo "Picked is $PICKED"
			echo "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 "Eval in call context: $CMD"
			echo "Eval in call context: $CMD">&2
			eval "$CMD"
			incallmenuloop
		) & wait # E.g. bg & wait to allow for SIGINT propogation

M scripts/modem/sxmo_modemdial.sh => scripts/modem/sxmo_modemdial.sh +1 -0
@@ 4,6 4,7 @@ trap "gracefulexit" INT TERM
fatalerr() {
	# E.g. hangup all calls, switch back to default audio, notify user, and die
	mmcli -m "$(mmcli -L | grep -oE 'Modem\/([0-9]+)' | cut -d'/' -f2)" --voice-hangup-all
	echo "$1" >&2
	notify-send "$1"
	(sleep 0.5; sxmo_statusbarupdate.sh) &
	kill -9 0

M scripts/modem/sxmo_modemmonitor.sh => scripts/modem/sxmo_modemmonitor.sh +5 -2
@@ 4,12 4,13 @@ NOTIFDIR="$XDG_DATA_HOME"/sxmo/notifications
trap "gracefulexit" INT TERM

err() {
	echo "$1">&2
	notify-send "$1"
	gracefulexit
}

gracefulexit() {
	echo "gracefully exiting $0!"
	echo "gracefully exiting $0!">&2
	kill -9 0
}



@@ 71,6 72,7 @@ checkforincomingcalls() {
	INCOMINGNUMBER=$(lookupnumberfromcallid "$VOICECALLID")

	if [ -x "$XDG_CONFIG_HOME/sxmo/hooks/ring" ]; then
		echo "Invoking ring hook (async)">&2
		"$XDG_CONFIG_HOME/sxmo/hooks/ring" "$(sxmo_contacts.sh | grep -E "^${INCOMINGNUMBER//+/\\+}:")" &
	else
		sxmo_vibratepine 2500 &


@@ 86,7 88,7 @@ checkforincomingcalls() {
		none \
		"Pickup - $(sxmo_contacts.sh | grep -E "^${INCOMINGNUMBER//+/\\+}:")" &

	echo "Number: $INCOMINGNUMBER (VOICECALLID: $VOICECALLID)"
	echo "Call from number: $INCOMINGNUMBER (VOICECALLID: $VOICECALLID)">&2
}

checkfornewtexts() {


@@ 109,6 111,7 @@ checkfornewtexts() {
		TIME="$(echo "$TEXTDATA" | grep sms.properties.timestamp | sed -E 's/^sms\.properties\.timestamp\s+:\s+//')"

		mkdir -p "$LOGDIR/$NUM"
		echo "Text from number: $NUM (TEXTID: $TEXTID)">&2
		printf %b "Received from $NUM at $TIME:\n$TEXT\n\n" >> "$LOGDIR/$NUM/sms.txt"
		printf %b "$TIME\trecv_txt\t$NUM\t${#TEXT} chars\n" >> "$LOGDIR/modemlog.tsv"
		mmcli -m "$(modem_n)" --messaging-delete-sms="$TEXTID"

M scripts/modem/sxmo_modemtext.sh => scripts/modem/sxmo_modemtext.sh +2 -1
@@ 12,6 12,7 @@ menu() {
}

err() {
	echo "$1">&2
	echo "$1" | menu dmenu -fn Terminus-20 -c -l 10
	kill $$
}


@@ 72,7 73,7 @@ sendtextmenu() {
			printf %b "Edit Message ($(echo "$TEXT" | head -n1))\nSend to → $NUMBER\nSave as Draft\nCancel" |
			menu dmenu -c -idx 1 -p "Confirm" -fn "Terminus-20" -l 10
		)"
		echo "$CONFIRM" | grep -E "^Send" && (echo "$TEXT" | sxmo_modemsendsms.sh "$NUMBER" -) && exit 0
		echo "$CONFIRM" | grep -E "^Send" && (echo "$TEXT" | sxmo_modemsendsms.sh "$NUMBER" -) && echo "Sent text to $NUMBER">&2 && exit 0
		echo "$CONFIRM" | grep -E "^Cancel$" && exit 1
		echo "$CONFIRM" | grep -E "^Edit Message" && TEXT="$(editmsg "$NUMBER" "$TEXT")"
		echo "$CONFIRM" | grep -E "^Save as Draft$" && err "Draft saved to $(draft "$NUMBER" "$TEXT")"