diff options
author | Andrew Lassalle <andrewlassalle@chromium.org> | 2020-10-29 16:41:43 -0700 |
---|---|---|
committer | Andrew Lassalle <andrewlassalle@chromium.org> | 2020-10-30 12:44:20 -0700 |
commit | ff7c0794f488bc6efbd2e0b6c6fd35dd136517b5 (patch) | |
tree | c86454c2692309d354b1096b27238479f04cf01e | |
parent | c385031941c9cd1ce07ae2d5b37ded26e4838dae (diff) |
mm-broadband-modem: Allow hot SIM insertion
If the QMI modem is initialized without a SIM card in it, and it goes
to failed state, allow the modem to be reprobed when a SIM card is
inserted.
-rw-r--r-- | src/mm-broadband-modem.c | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/src/mm-broadband-modem.c b/src/mm-broadband-modem.c index d78a2ee5..8a376c63 100644 --- a/src/mm-broadband-modem.c +++ b/src/mm-broadband-modem.c @@ -4165,10 +4165,23 @@ modem_check_for_sim_swap (MMIfaceModem *self, MM_IFACE_MODEM_SIM, &ctx->sim, NULL); if (!ctx->sim) { - g_task_return_new_error (task, - MM_CORE_ERROR, - MM_CORE_ERROR_FAILED, - "could not acquire sim object"); + MMModemState modem_state; + + modem_state = MM_MODEM_STATE_UNKNOWN; + g_object_get (self, + MM_IFACE_MODEM_STATE, &modem_state, + NULL); + + if (modem_state == MM_MODEM_STATE_FAILED) { + mm_obj_info (self, "new SIM detected, handle as SIM hot-swap"); + mm_broadband_modem_sim_hot_swap_detected (MM_BROADBAND_MODEM (self)); + g_task_return_boolean (task, TRUE); + } else { + g_task_return_new_error (task, + MM_CORE_ERROR, + MM_CORE_ERROR_FAILED, + "could not acquire sim object"); + } g_object_unref (task); return; } |