aboutsummaryrefslogtreecommitdiff
path: root/src/mm-base-modem.c
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@aleksander.es>2020-08-01 09:59:30 +0200
committerAleksander Morgado <aleksander@aleksander.es>2020-08-28 14:59:06 +0000
commite20eebff473c37868b528f5031809c18645309ac (patch)
treec9232c803cbad2a7c525fd78e709076b54374808 /src/mm-base-modem.c
parente7409b689876488594409e945687486adb1d9514 (diff)
base-modem: SIM switch handling at base modem level
When the SIM switch doesn't happen as part of an async hot swap detection, we should trigger the switch handling at base modem level, which e.g. doesn't require explicit cleanup of the SIM hot swap detection port context.
Diffstat (limited to 'src/mm-base-modem.c')
-rw-r--r--src/mm-base-modem.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/mm-base-modem.c b/src/mm-base-modem.c
index 0805cedb..a11f15a4 100644
--- a/src/mm-base-modem.c
+++ b/src/mm-base-modem.c
@@ -1435,6 +1435,28 @@ mm_base_modem_get_product_id (MMBaseModem *self)
/*****************************************************************************/
+static void
+after_sim_switch_disable_ready (MMBaseModem *self,
+ GAsyncResult *res)
+{
+ g_autoptr(GError) error = NULL;
+
+ mm_base_modem_disable_finish (self, res, &error);
+ if (error)
+ mm_obj_err (self, "failed to disable after SIM switch event: %s", error->message);
+ else
+ mm_base_modem_set_valid (self, FALSE);
+}
+
+void
+mm_base_modem_process_sim_switch (MMBaseModem *self)
+{
+ mm_base_modem_set_reprobe (self, TRUE);
+ mm_base_modem_disable (self, (GAsyncReadyCallback) after_sim_switch_disable_ready, NULL);
+}
+
+/*****************************************************************************/
+
static gboolean
base_modem_invalid_idle (MMBaseModem *self)
{