Fix SIM2 QMI UIM provisioning, auto-enable ModemManager, PIN auto-prompt, call audio, and Dunst clearing
This commit is contained in:
@@ -16,15 +16,16 @@ dial_number() {
|
||||
return 0
|
||||
fi
|
||||
|
||||
NUMBER="$1"
|
||||
NUMBER="$(printf "%s" "$1" | tr -cd '+0-9*#')"
|
||||
if [ -z "$NUMBER" ]; then
|
||||
return 1
|
||||
fi
|
||||
|
||||
CLEANEDNUMBER="$(pnc find ${DEFAULT_COUNTRY:+-c "$DEFAULT_COUNTRY"} "$1" 2>/dev/null || true)"
|
||||
if [ -n "$CLEANEDNUMBER" ] && [ "$NUMBER" != "$CLEANEDNUMBER" ]; then
|
||||
NUMBER="$(cat <<EOF | sxmo_dmenu.sh -p "Rewrite ?"
|
||||
$NUMBER
|
||||
$CLEANEDNUMBER
|
||||
EOF
|
||||
)"
|
||||
mm_state="$(mmcli -m any -K 2>/dev/null | awk -F': ' '$1 == "modem.generic.state" {print $2; exit}')"
|
||||
if [ "$mm_state" = "disabled" ] || [ -z "$mm_state" ]; then
|
||||
mmcli -m any -e >/dev/null 2>&1 || true
|
||||
mmcli -m any --3gpp-register-home >/dev/null 2>&1 || true
|
||||
sleep 1
|
||||
fi
|
||||
|
||||
sxmo_log "Attempting to dial: $NUMBER"
|
||||
@@ -33,7 +34,7 @@ EOF
|
||||
fi
|
||||
|
||||
if ! CALLID="$(
|
||||
mmcli -m any --voice-create-call "number=$NUMBER" |
|
||||
mmcli -m any --voice-create-call="number=$NUMBER" 2>/dev/null |
|
||||
grep -Eo "Call/[0-9]+" |
|
||||
grep -oE "[0-9]+"
|
||||
)"; then
|
||||
@@ -79,16 +80,22 @@ EOF
|
||||
}
|
||||
|
||||
dial_ussd() {
|
||||
|
||||
USSD="$1"
|
||||
DBUS_MODEM=$(mmcli -J -L | jq -r '."modem-list"[]')
|
||||
MM_BUS="org.freedesktop.ModemManager1"
|
||||
USSD_IFACE="org.freedesktop.ModemManager1.Modem.Modem3gpp.Ussd"
|
||||
|
||||
sxmo_log "Dialling USSD: $USSD"
|
||||
OUTPUT=$(busctl --json=short call "$MM_BUS" "$DBUS_MODEM" "$USSD_IFACE" Initiate "s" "$USSD" | jq -r '.data[]')
|
||||
|
||||
sxmo_terminal.sh sxmo_ussd.sh "$DBUS_MODEM" "Unknown" "$OUTPUT" &
|
||||
OUTPUT="$(doas -n /usr/libexec/msm-modem-uim-selection ussd initiate "$USSD" 2>/dev/null || /usr/libexec/msm-modem-uim-selection ussd initiate "$USSD" 2>/dev/null || true)"
|
||||
if [ -z "$OUTPUT" ]; then
|
||||
DBUS_MODEM="$(mmcli -J -L 2>/dev/null | jq -r '."modem-list"[]' 2>/dev/null | head -n1)"
|
||||
MM_BUS="org.freedesktop.ModemManager1"
|
||||
USSD_IFACE="org.freedesktop.ModemManager1.Modem.Modem3gpp.Ussd"
|
||||
if [ -n "$DBUS_MODEM" ]; then
|
||||
OUTPUT="$(busctl --json=short call "$MM_BUS" "$DBUS_MODEM" "$USSD_IFACE" Initiate "s" "$USSD" 2>/dev/null | jq -r '.data[]' 2>/dev/null || true)"
|
||||
fi
|
||||
fi
|
||||
if [ -n "$OUTPUT" ]; then
|
||||
sxmo_notify_user.sh "USSD ($USSD): $OUTPUT"
|
||||
else
|
||||
sxmo_notify_user.sh --urgency=critical "USSD request failed ($USSD)"
|
||||
fi
|
||||
}
|
||||
|
||||
dial_menu() {
|
||||
|
||||
Reference in New Issue
Block a user