modem: bind QMI primary-gw-provisioning session before USIM PIN verification and fix SIM2 target slot resolution
This commit is contained in:
Binary file not shown.
@@ -396,14 +396,14 @@ provision_slot() {
|
|||||||
save_preferred_slot "$chosen_slot"
|
save_preferred_slot "$chosen_slot"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# If already provisioned on the chosen slot and application is ready, keep session intact
|
# If already provisioned on the chosen slot and application is ready or waiting for PIN, keep session intact
|
||||||
eval "chosen_app_state=\$SLOT${chosen_slot}_APP_STATE"
|
eval "chosen_app_state=\$SLOT${chosen_slot}_APP_STATE"
|
||||||
if [ "$PRIMARY_GW_SLOT" = "$chosen_slot" ] && [ "$chosen_app_state" = "ready" ]; then
|
if [ "$PRIMARY_GW_SLOT" = "$chosen_slot" ] && { [ "$chosen_app_state" = "ready" ] || [ "$chosen_app_state" = "pin1-or-upin-pin-required" ] || [ "$chosen_app_state" = "puk1-or-upin-puk-required" ]; }; then
|
||||||
echo "Slot $chosen_slot already active and ready."
|
echo "Slot $chosen_slot already bound to primary-gw-provisioning ($chosen_app_state)."
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$PRIMARY_GW_SLOT" != "0" ] && [ "$PRIMARY_GW_SLOT" != "$chosen_slot" ]; then
|
if [ "$PRIMARY_GW_SLOT" != "0" ]; then
|
||||||
$QMICLI_MODEM --uim-change-provisioning-session='activate=no,session-type=primary-gw-provisioning' >/dev/null 2>&1 || true
|
$QMICLI_MODEM --uim-change-provisioning-session='activate=no,session-type=primary-gw-provisioning' >/dev/null 2>&1 || true
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -419,8 +419,39 @@ provision_slot() {
|
|||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
prepare_slot_for_pin_op() {
|
||||||
|
req_slot="${1:-1}"
|
||||||
|
slot="$req_slot"
|
||||||
|
target_aid=""
|
||||||
|
if detect_qmicli_modem; then
|
||||||
|
QMI_CARDS="$($QMICLI_MODEM --uim-get-card-status 2>/dev/null || true)"
|
||||||
|
if [ -n "$QMI_CARDS" ]; then
|
||||||
|
eval "$(parse_uim_card_status "$QMI_CARDS" "$PREFERRED_SIM_SLOT")"
|
||||||
|
if [ "$slot" = "1" ] && [ "$SLOT1_STATE" != "present" ] && [ "$SLOT2_STATE" = "present" ]; then
|
||||||
|
slot="2"
|
||||||
|
elif [ "$slot" = "2" ] && [ "$SLOT2_STATE" != "present" ] && [ "$SLOT1_STATE" = "present" ]; then
|
||||||
|
slot="1"
|
||||||
|
fi
|
||||||
|
eval "target_aid=\$SLOT${slot}_AID"
|
||||||
|
if [ "$PRIMARY_GW_SLOT" != "$slot" ]; then
|
||||||
|
if [ "$PRIMARY_GW_SLOT" != "0" ]; then
|
||||||
|
$QMICLI_MODEM --uim-change-provisioning-session='activate=no,session-type=primary-gw-provisioning' >/dev/null 2>&1 || true
|
||||||
|
fi
|
||||||
|
if [ -n "$target_aid" ]; then
|
||||||
|
$QMICLI_MODEM --uim-change-provisioning-session="slot=$slot,activate=yes,session-type=primary-gw-provisioning,aid=$target_aid" >/dev/null 2>&1 || \
|
||||||
|
$QMICLI_MODEM --uim-change-provisioning-session="slot=$slot,activate=yes,session-type=primary-gw-provisioning" >/dev/null 2>&1 || true
|
||||||
|
else
|
||||||
|
$QMICLI_MODEM --uim-change-provisioning-session="slot=$slot,activate=yes,session-type=primary-gw-provisioning" >/dev/null 2>&1 || true
|
||||||
|
fi
|
||||||
|
sleep 0.6
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
enable_and_register_modem() {
|
enable_and_register_modem() {
|
||||||
target_slot="${1:-$PREFERRED_SIM_SLOT}"
|
target_slot="${1:-$PREFERRED_SIM_SLOT}"
|
||||||
|
force_unlock="${2:-0}"
|
||||||
if detect_qmicli_modem; then
|
if detect_qmicli_modem; then
|
||||||
$QMICLI_MODEM --dms-set-operating-mode=online >/dev/null 2>&1 || true
|
$QMICLI_MODEM --dms-set-operating-mode=online >/dev/null 2>&1 || true
|
||||||
$QMICLI_MODEM --nas-initiate-network-register >/dev/null 2>&1 || true
|
$QMICLI_MODEM --nas-initiate-network-register >/dev/null 2>&1 || true
|
||||||
@@ -437,7 +468,7 @@ enable_and_register_modem() {
|
|||||||
i=$((i + 1))
|
i=$((i + 1))
|
||||||
done
|
done
|
||||||
|
|
||||||
if [ "$mm_state" = "failed" ]; then
|
if [ "$mm_state" = "failed" ] || { [ "$force_unlock" = "1" ] && [ "$mm_state" = "locked" ]; }; then
|
||||||
if command -v rc-service >/dev/null 2>&1; then
|
if command -v rc-service >/dev/null 2>&1; then
|
||||||
rc-service modemmanager restart >/dev/null 2>&1 || true
|
rc-service modemmanager restart >/dev/null 2>&1 || true
|
||||||
elif command -v systemctl >/dev/null 2>&1; then
|
elif command -v systemctl >/dev/null 2>&1; then
|
||||||
@@ -501,7 +532,7 @@ case "$cmd" in
|
|||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
provision_slot "$PREFERRED_SIM_SLOT" 45
|
provision_slot "$PREFERRED_SIM_SLOT" 45
|
||||||
( enable_and_register_modem "$PREFERRED_SIM_SLOT" ) >/dev/null 2>&1 </dev/null &
|
( enable_and_register_modem "$PREFERRED_SIM_SLOT" 0 ) >/dev/null 2>&1 </dev/null &
|
||||||
exit 0
|
exit 0
|
||||||
;;
|
;;
|
||||||
|
|
||||||
@@ -540,7 +571,7 @@ case "$cmd" in
|
|||||||
elif command -v systemctl >/dev/null 2>&1; then
|
elif command -v systemctl >/dev/null 2>&1; then
|
||||||
systemctl restart ModemManager >/dev/null 2>&1 || true
|
systemctl restart ModemManager >/dev/null 2>&1 || true
|
||||||
fi
|
fi
|
||||||
( enable_and_register_modem "$target" ) >/dev/null 2>&1 </dev/null &
|
( enable_and_register_modem "$target" 0 ) >/dev/null 2>&1 </dev/null &
|
||||||
exit 0
|
exit 0
|
||||||
;;
|
;;
|
||||||
|
|
||||||
@@ -551,25 +582,53 @@ case "$cmd" in
|
|||||||
echo "Missing PIN" >&2
|
echo "Missing PIN" >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
prepare_slot_for_pin_op "$slot"
|
||||||
verified=0
|
verified=0
|
||||||
if detect_qmicli_modem; then
|
sim_id="$(mmcli -m any 2>/dev/null | grep -oE 'SIM/[0-9]+' | head -n1 | cut -d'/' -f2 || true)"
|
||||||
if $QMICLI_MODEM --uim-verify-pin="PIN1,$pin,session-type=card-slot-$slot" >/dev/null 2>&1; then
|
if [ -n "$sim_id" ] && mmcli -i "$sim_id" --pin="$pin" >/dev/null 2>&1; then
|
||||||
verified=1
|
verified=1
|
||||||
elif $QMICLI_MODEM --uim-verify-pin="PIN1,$pin,session-type=primary-gw-provisioning" >/dev/null 2>&1; then
|
fi
|
||||||
|
if [ "$verified" = "0" ] && [ -n "$QMICLI_MODEM" ]; then
|
||||||
|
if $QMICLI_MODEM --uim-verify-pin="PIN1,$pin,session-type=primary-gw-provisioning" >/dev/null 2>&1; then
|
||||||
|
verified=1
|
||||||
|
elif $QMICLI_MODEM --uim-verify-pin="PIN1,$pin,session-type=card-slot-$slot" >/dev/null 2>&1; then
|
||||||
|
verified=1
|
||||||
|
elif $QMICLI_MODEM --uim-verify-pin="PIN1,$pin" >/dev/null 2>&1; then
|
||||||
|
verified=1
|
||||||
|
elif $QMICLI_MODEM --uim-verify-pin="UPIN,$pin,session-type=primary-gw-provisioning" >/dev/null 2>&1; then
|
||||||
|
verified=1
|
||||||
|
elif $QMICLI_MODEM --uim-verify-pin="UPIN,$pin,session-type=card-slot-$slot" >/dev/null 2>&1; then
|
||||||
|
verified=1
|
||||||
|
elif $QMICLI_MODEM --dms-uim-verify-pin="PIN,$pin" >/dev/null 2>&1; then
|
||||||
verified=1
|
verified=1
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
if [ "$verified" = "0" ]; then
|
if [ "$verified" = "0" ]; then
|
||||||
sim_id="$(mmcli -m any 2>/dev/null | grep -oE 'SIM/[0-9]+' | head -n1 | cut -d'/' -f2 || true)"
|
at_cpin="$("$0" at auto "AT+CPIN=\"$pin\"" 2>/dev/null || true)"
|
||||||
if [ -n "$sim_id" ] && mmcli -i "$sim_id" --pin="$pin" >/dev/null 2>&1; then
|
if printf "%s\n" "$at_cpin" | grep -qE "(^|[[:space:]])OK([[:space:]]|$)"; then
|
||||||
verified=1
|
verified=1
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
if [ "$verified" = "0" ] && [ -n "$QMICLI_MODEM" ]; then
|
||||||
|
QMI_CARDS_AFTER="$($QMICLI_MODEM --uim-get-card-status 2>/dev/null || true)"
|
||||||
|
if [ -n "$QMI_CARDS_AFTER" ]; then
|
||||||
|
eval "$(parse_uim_card_status "$QMI_CARDS_AFTER" "$slot")"
|
||||||
|
eval "after_pin1=\$SLOT${slot}_PIN1_STATE"
|
||||||
|
eval "after_app=\$SLOT${slot}_APP_STATE"
|
||||||
|
if [ "$after_pin1" = "enabled-verified" ] || [ "$after_pin1" = "disabled" ] || [ "$after_app" = "ready" ]; then
|
||||||
|
verified=1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
if [ "$verified" = "1" ]; then
|
if [ "$verified" = "1" ]; then
|
||||||
save_preferred_slot "$slot"
|
save_preferred_slot "$slot"
|
||||||
SIM_WAIT_TIME=2
|
SIM_WAIT_TIME=2
|
||||||
provision_slot "$slot" 3 >/dev/null 2>&1 || true
|
provision_slot "$slot" 3 >/dev/null 2>&1 || true
|
||||||
( enable_and_register_modem "$slot" ) >/dev/null 2>&1 </dev/null &
|
if [ -n "$sim_id" ]; then
|
||||||
|
mmcli -i "$sim_id" --pin="$pin" >/dev/null 2>&1 || true
|
||||||
|
fi
|
||||||
|
mmcli -m any -e >/dev/null 2>&1 || true
|
||||||
|
( enable_and_register_modem "$slot" 1 ) >/dev/null 2>&1 </dev/null &
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
exit 1
|
exit 1
|
||||||
@@ -583,17 +642,26 @@ case "$cmd" in
|
|||||||
echo "Missing PUK or new PIN" >&2
|
echo "Missing PUK or new PIN" >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
prepare_slot_for_pin_op "$slot"
|
||||||
unblocked=0
|
unblocked=0
|
||||||
if detect_qmicli_modem; then
|
sim_id="$(mmcli -m any 2>/dev/null | grep -oE 'SIM/[0-9]+' | head -n1 | cut -d'/' -f2 || true)"
|
||||||
if $QMICLI_MODEM --uim-unblock-pin="PIN1,$puk,$newpin,session-type=card-slot-$slot" >/dev/null 2>&1; then
|
if [ -n "$sim_id" ] && mmcli -i "$sim_id" --puk="$puk" --pin="$newpin" >/dev/null 2>&1; then
|
||||||
unblocked=1
|
unblocked=1
|
||||||
elif $QMICLI_MODEM --uim-unblock-pin="PIN1,$puk,$newpin,session-type=primary-gw-provisioning" >/dev/null 2>&1; then
|
fi
|
||||||
|
if [ "$unblocked" = "0" ] && [ -n "$QMICLI_MODEM" ]; then
|
||||||
|
if $QMICLI_MODEM --uim-unblock-pin="PIN1,$puk,$newpin,session-type=primary-gw-provisioning" >/dev/null 2>&1; then
|
||||||
|
unblocked=1
|
||||||
|
elif $QMICLI_MODEM --uim-unblock-pin="PIN1,$puk,$newpin,session-type=card-slot-$slot" >/dev/null 2>&1; then
|
||||||
|
unblocked=1
|
||||||
|
elif $QMICLI_MODEM --uim-unblock-pin="PIN1,$puk,$newpin" >/dev/null 2>&1; then
|
||||||
|
unblocked=1
|
||||||
|
elif $QMICLI_MODEM --dms-uim-unblock-pin="PIN,$puk,$newpin" >/dev/null 2>&1; then
|
||||||
unblocked=1
|
unblocked=1
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
if [ "$unblocked" = "0" ]; then
|
if [ "$unblocked" = "0" ]; then
|
||||||
sim_id="$(mmcli -m any 2>/dev/null | grep -oE 'SIM/[0-9]+' | head -n1 | cut -d'/' -f2 || true)"
|
at_cpin="$("$0" at auto "AT+CPIN=\"$puk\",\"$newpin\"" 2>/dev/null || true)"
|
||||||
if [ -n "$sim_id" ] && mmcli -i "$sim_id" --puk="$puk" --pin="$newpin" >/dev/null 2>&1; then
|
if printf "%s\n" "$at_cpin" | grep -qE "(^|[[:space:]])OK([[:space:]]|$)"; then
|
||||||
unblocked=1
|
unblocked=1
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
@@ -601,7 +669,8 @@ case "$cmd" in
|
|||||||
save_preferred_slot "$slot"
|
save_preferred_slot "$slot"
|
||||||
SIM_WAIT_TIME=2
|
SIM_WAIT_TIME=2
|
||||||
provision_slot "$slot" 3 >/dev/null 2>&1 || true
|
provision_slot "$slot" 3 >/dev/null 2>&1 || true
|
||||||
( enable_and_register_modem "$slot" ) >/dev/null 2>&1 </dev/null &
|
mmcli -m any -e >/dev/null 2>&1 || true
|
||||||
|
( enable_and_register_modem "$slot" 1 ) >/dev/null 2>&1 </dev/null &
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
exit 1
|
exit 1
|
||||||
@@ -615,11 +684,15 @@ case "$cmd" in
|
|||||||
echo "Usage: $0 set-pin-lock <1|2> <enable|disable> <pin>" >&2
|
echo "Usage: $0 set-pin-lock <1|2> <enable|disable> <pin>" >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
if detect_qmicli_modem; then
|
prepare_slot_for_pin_op "$slot"
|
||||||
|
if [ -n "$QMICLI_MODEM" ]; then
|
||||||
|
if $QMICLI_MODEM --uim-set-pin-protection="PIN1,$mode,$pin,session-type=primary-gw-provisioning" >/dev/null 2>&1; then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
if $QMICLI_MODEM --uim-set-pin-protection="PIN1,$mode,$pin,session-type=card-slot-$slot" >/dev/null 2>&1; then
|
if $QMICLI_MODEM --uim-set-pin-protection="PIN1,$mode,$pin,session-type=card-slot-$slot" >/dev/null 2>&1; then
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
if $QMICLI_MODEM --uim-set-pin-protection="PIN1,$mode,$pin,session-type=primary-gw-provisioning" >/dev/null 2>&1; then
|
if $QMICLI_MODEM --dms-uim-set-pin-protection="PIN,$mode,$pin" >/dev/null 2>&1; then
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
@@ -642,11 +715,15 @@ case "$cmd" in
|
|||||||
echo "Usage: $0 change-pin <1|2> <oldpin> <newpin>" >&2
|
echo "Usage: $0 change-pin <1|2> <oldpin> <newpin>" >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
if detect_qmicli_modem; then
|
prepare_slot_for_pin_op "$slot"
|
||||||
|
if [ -n "$QMICLI_MODEM" ]; then
|
||||||
|
if $QMICLI_MODEM --uim-change-pin="PIN1,$oldpin,$newpin,session-type=primary-gw-provisioning" >/dev/null 2>&1; then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
if $QMICLI_MODEM --uim-change-pin="PIN1,$oldpin,$newpin,session-type=card-slot-$slot" >/dev/null 2>&1; then
|
if $QMICLI_MODEM --uim-change-pin="PIN1,$oldpin,$newpin,session-type=card-slot-$slot" >/dev/null 2>&1; then
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
if $QMICLI_MODEM --uim-change-pin="PIN1,$oldpin,$newpin,session-type=primary-gw-provisioning" >/dev/null 2>&1; then
|
if $QMICLI_MODEM --dms-uim-change-pin="PIN,$oldpin,$newpin" >/dev/null 2>&1; then
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|||||||
Binary file not shown.
@@ -601,8 +601,28 @@ int runModemApp(int argc, char** argv) {
|
|||||||
lastRefreshMs = nowMs();
|
lastRefreshMs = nowMs();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
auto defaultActiveOrPresentSlot = [&]() -> int {
|
||||||
|
if (status.slots[0].needsPin() || status.slots[0].needsPuk()) return 1;
|
||||||
|
if (status.slots[1].needsPin() || status.slots[1].needsPuk()) return 2;
|
||||||
|
if (status.primaryGwSlot >= 1 && status.primaryGwSlot <= 2 &&
|
||||||
|
status.slots[status.primaryGwSlot - 1].state == "present") {
|
||||||
|
return status.primaryGwSlot;
|
||||||
|
}
|
||||||
|
if (status.slots[1].state == "present" && status.slots[0].state != "present") {
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
if (status.slots[0].state == "present" && status.slots[1].state != "present") {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
return std::clamp(status.preferredSlot, 1, 2);
|
||||||
|
};
|
||||||
|
|
||||||
auto openPinOrPukModalForSlot = [&](int slotNum) {
|
auto openPinOrPukModalForSlot = [&](int slotNum) {
|
||||||
targetSlot = std::clamp(slotNum, 1, 2);
|
slotNum = std::clamp(slotNum, 1, 2);
|
||||||
|
if (status.slots[slotNum - 1].state != "present") {
|
||||||
|
slotNum = defaultActiveOrPresentSlot();
|
||||||
|
}
|
||||||
|
targetSlot = slotNum;
|
||||||
const auto& s = status.slots[targetSlot - 1];
|
const auto& s = status.slots[targetSlot - 1];
|
||||||
wizardStep = 0;
|
wizardStep = 0;
|
||||||
revealDigits = false;
|
revealDigits = false;
|
||||||
@@ -622,14 +642,7 @@ int runModemApp(int argc, char** argv) {
|
|||||||
modal = ModalMode::None;
|
modal = ModalMode::None;
|
||||||
if (a == "unlock" || a == "pin" || a == "puk") {
|
if (a == "unlock" || a == "pin" || a == "puk") {
|
||||||
activeTab = TabId::SimCards;
|
activeTab = TabId::SimCards;
|
||||||
int lockSlot = (status.primaryGwSlot >= 1 && status.primaryGwSlot <= 2)
|
int lockSlot = defaultActiveOrPresentSlot();
|
||||||
? status.primaryGwSlot
|
|
||||||
: status.preferredSlot;
|
|
||||||
if (status.slots[0].needsPin() || status.slots[0].needsPuk()) {
|
|
||||||
lockSlot = 1;
|
|
||||||
} else if (status.slots[1].needsPin() || status.slots[1].needsPuk()) {
|
|
||||||
lockSlot = 2;
|
|
||||||
}
|
|
||||||
simRowSel = lockSlot - 1;
|
simRowSel = lockSlot - 1;
|
||||||
openPinOrPukModalForSlot(lockSlot);
|
openPinOrPukModalForSlot(lockSlot);
|
||||||
} else if (a == "info" || a == "status" || a == "radio") {
|
} else if (a == "info" || a == "status" || a == "radio") {
|
||||||
@@ -647,12 +660,7 @@ int runModemApp(int argc, char** argv) {
|
|||||||
ussdWaitingReply = false;
|
ussdWaitingReply = false;
|
||||||
} else {
|
} else {
|
||||||
activeTab = TabId::SimCards;
|
activeTab = TabId::SimCards;
|
||||||
// If active SIM is locked, auto-highlight it
|
simRowSel = defaultActiveOrPresentSlot() - 1;
|
||||||
if (status.slots[0].needsPin() || status.slots[0].needsPuk()) {
|
|
||||||
simRowSel = 0;
|
|
||||||
} else if (status.slots[1].needsPin() || status.slots[1].needsPuk()) {
|
|
||||||
simRowSel = 1;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -1255,6 +1263,11 @@ int runModemApp(int argc, char** argv) {
|
|||||||
std::to_string(slotNum) + " >/dev/null 2>&1", &rc);
|
std::to_string(slotNum) + " >/dev/null 2>&1", &rc);
|
||||||
runAsyncCmd("sxmo_hook_statusbar.sh modem >/dev/null 2>&1");
|
runAsyncCmd("sxmo_hook_statusbar.sh modem >/dev/null 2>&1");
|
||||||
refreshData(false);
|
refreshData(false);
|
||||||
|
if (status.slots[slotNum - 1].needsPin() ||
|
||||||
|
status.slots[slotNum - 1].needsPuk()) {
|
||||||
|
openPinOrPukModalForSlot(slotNum);
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (rc == 0) {
|
if (rc == 0) {
|
||||||
setBanner("Active SIM set to Slot " + std::to_string(slotNum));
|
setBanner("Active SIM set to Slot " + std::to_string(slotNum));
|
||||||
} else {
|
} else {
|
||||||
@@ -1445,27 +1458,15 @@ int runModemApp(int argc, char** argv) {
|
|||||||
}
|
}
|
||||||
switchSimSlotNow(otherSlot);
|
switchSimSlotNow(otherSlot);
|
||||||
} else if (row == 3) {
|
} else if (row == 3) {
|
||||||
int slot = (status.primaryGwSlot >= 1 && status.primaryGwSlot <= 2)
|
openPinOrPukModalForSlot(defaultActiveOrPresentSlot());
|
||||||
? status.primaryGwSlot
|
|
||||||
: status.preferredSlot;
|
|
||||||
if (status.slots[0].needsPin() || status.slots[0].needsPuk()) {
|
|
||||||
slot = 1;
|
|
||||||
} else if (status.slots[1].needsPin() || status.slots[1].needsPuk()) {
|
|
||||||
slot = 2;
|
|
||||||
}
|
|
||||||
openPinOrPukModalForSlot(slot);
|
|
||||||
} else if (row == 4) {
|
} else if (row == 4) {
|
||||||
targetSlot = (status.primaryGwSlot >= 1 && status.primaryGwSlot <= 2)
|
targetSlot = defaultActiveOrPresentSlot();
|
||||||
? status.primaryGwSlot
|
|
||||||
: status.preferredSlot;
|
|
||||||
wizardStep = 0;
|
wizardStep = 0;
|
||||||
inputPin1.clear();
|
inputPin1.clear();
|
||||||
modalError.clear();
|
modalError.clear();
|
||||||
modal = ModalMode::TogglePinLock;
|
modal = ModalMode::TogglePinLock;
|
||||||
} else if (row == 5) {
|
} else if (row == 5) {
|
||||||
targetSlot = (status.primaryGwSlot >= 1 && status.primaryGwSlot <= 2)
|
targetSlot = defaultActiveOrPresentSlot();
|
||||||
? status.primaryGwSlot
|
|
||||||
: status.preferredSlot;
|
|
||||||
wizardStep = 0;
|
wizardStep = 0;
|
||||||
inputPin1.clear();
|
inputPin1.clear();
|
||||||
inputPin2.clear();
|
inputPin2.clear();
|
||||||
@@ -1503,6 +1504,10 @@ int runModemApp(int argc, char** argv) {
|
|||||||
if (modal == ModalMode::SimActions) {
|
if (modal == ModalMode::SimActions) {
|
||||||
int act = actionSel;
|
int act = actionSel;
|
||||||
modal = ModalMode::None;
|
modal = ModalMode::None;
|
||||||
|
if (act >= 1 && act <= 4 &&
|
||||||
|
status.slots[targetSlot - 1].state != "present") {
|
||||||
|
targetSlot = defaultActiveOrPresentSlot();
|
||||||
|
}
|
||||||
if (act == 0) {
|
if (act == 0) {
|
||||||
switchSimSlotNow(targetSlot);
|
switchSimSlotNow(targetSlot);
|
||||||
} else if (act == 1) {
|
} else if (act == 1) {
|
||||||
@@ -1537,7 +1542,13 @@ int runModemApp(int argc, char** argv) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (activeTab == TabId::SimCards) {
|
if (activeTab == TabId::SimCards) {
|
||||||
targetSlot = (simRowSel == 1) ? 2 : 1;
|
if (simRowSel == 0) {
|
||||||
|
targetSlot = 1;
|
||||||
|
} else if (simRowSel == 1) {
|
||||||
|
targetSlot = 2;
|
||||||
|
} else {
|
||||||
|
targetSlot = defaultActiveOrPresentSlot();
|
||||||
|
}
|
||||||
actionSel = 0;
|
actionSel = 0;
|
||||||
modal = ModalMode::SimActions;
|
modal = ModalMode::SimActions;
|
||||||
} else if (activeTab == TabId::RadioInfo) {
|
} else if (activeTab == TabId::RadioInfo) {
|
||||||
|
|||||||
Reference in New Issue
Block a user