diff options
author | Aleksander Morgado <aleksander@aleksander.es> | 2020-08-01 09:59:30 +0200 |
---|---|---|
committer | Aleksander Morgado <aleksander@aleksander.es> | 2020-08-28 14:59:06 +0000 |
commit | e20eebff473c37868b528f5031809c18645309ac (patch) | |
tree | c9232c803cbad2a7c525fd78e709076b54374808 /src/mm-base-modem.c | |
parent | e7409b689876488594409e945687486adb1d9514 (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.c | 22 |
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) { |