diff options
author | Aleksander Morgado <aleksandermj@google.com> | 2022-07-15 13:53:52 +0200 |
---|---|---|
committer | Aleksander Morgado <aleksander@aleksander.es> | 2022-07-16 22:23:45 +0200 |
commit | 76c089653547191b73d87de026556ae915f8bf48 (patch) | |
tree | c36c9164b59f5a6956de7498815185090f14a97b | |
parent | 5c0db3743209b78d8c7b7558e337e6df25951bae (diff) |
shared-qmi: new step in SIM hot swap setup to connect to refresh signal
Instead of connecting to the signal in multiple places, do it in one
single place in the logic.
-rw-r--r-- | src/mm-shared-qmi.c | 48 |
1 files changed, 25 insertions, 23 deletions
diff --git a/src/mm-shared-qmi.c b/src/mm-shared-qmi.c index 43d4a380..e39d617a 100644 --- a/src/mm-shared-qmi.c +++ b/src/mm-shared-qmi.c @@ -3571,6 +3571,7 @@ typedef enum { SETUP_SIM_HOT_SWAP_STEP_UIM_REFRESH_REGISTER_ALL, SETUP_SIM_HOT_SWAP_STEP_UIM_REFRESH_REGISTER_ICCID, SETUP_SIM_HOT_SWAP_STEP_UIM_REFRESH_REGISTER_IMSI, + SETUP_SIM_HOT_SWAP_STEP_UIM_REFRESH_INDICATION, SETUP_SIM_HOT_SWAP_STEP_LAST, } SetupSimHotSwapStep; @@ -3885,18 +3886,14 @@ uim_refresh_register_file_ready (QmiClientUim *client, g_task_return_new_error (task, MM_MOBILE_EQUIPMENT_ERROR, MM_MOBILE_EQUIPMENT_ERROR_NOT_SUPPORTED, "SIM hot swap detection not supported by modem"); g_object_unref (task); - } else { - mm_obj_dbg (self, "file refresh registered using 'refresh register'"); - if (!priv->uim_refresh_indication_id) - priv->uim_refresh_indication_id = - g_signal_connect (client, - "refresh", - G_CALLBACK (uim_refresh_indication_cb), - self); - /* Go on to next step */ - ctx->step++; - setup_sim_hot_swap_step (task); + return; } + + mm_obj_dbg (self, "file refresh registered using 'refresh register'"); + + /* Go on to next step */ + ctx->step++; + setup_sim_hot_swap_step (task); } /* This is the last resort if 'refresh register all' does not work. It works @@ -3994,17 +3991,14 @@ uim_refresh_register_all_ready (QmiClientUim *client, g_clear_object (&priv->uim_client); g_task_return_error (task, g_steal_pointer (&error)); g_object_unref (task); - } else { - mm_obj_dbg (self, "registered for all SIM refresh events"); - priv->uim_refresh_indication_id = - g_signal_connect (client, - "refresh", - G_CALLBACK (uim_refresh_indication_cb), - self); - /* Go to last step */ - ctx->step = SETUP_SIM_HOT_SWAP_STEP_LAST; - setup_sim_hot_swap_step (task); + return; } + + mm_obj_dbg (self, "registered for all SIM refresh events"); + + /* Jump to setup refresh indication signal */ + ctx->step = SETUP_SIM_HOT_SWAP_STEP_UIM_REFRESH_INDICATION; + setup_sim_hot_swap_step (task); } static void @@ -4134,8 +4128,6 @@ setup_sim_hot_swap_step (GTask *task) g_autoptr(QmiMessageUimRefreshRegisterAllInput) refresh_register_all_input = NULL; g_autoptr(GArray) placeholder_aid = NULL; - g_assert (!priv->uim_refresh_indication_id); - placeholder_aid = g_array_new (FALSE, FALSE, sizeof (guint8)); refresh_register_all_input = qmi_message_uim_refresh_register_all_input_new (); @@ -4172,6 +4164,16 @@ setup_sim_hot_swap_step (GTask *task) return; } + case SETUP_SIM_HOT_SWAP_STEP_UIM_REFRESH_INDICATION: + g_assert (!priv->uim_refresh_indication_id); + priv->uim_refresh_indication_id = + g_signal_connect (priv->uim_client, + "refresh", + G_CALLBACK (uim_refresh_indication_cb), + self); + ctx->step++; + /* fall-through */ + case SETUP_SIM_HOT_SWAP_STEP_LAST: g_task_return_boolean (task, TRUE); g_object_unref (task); |