aboutsummaryrefslogtreecommitdiff
path: root/src/mm-shared-qmi.c
diff options
context:
space:
mode:
authorAleksander Morgado <aleksandermj@google.com>2022-07-15 13:53:52 +0200
committerAleksander Morgado <aleksander@aleksander.es>2022-07-16 22:23:45 +0200
commit76c089653547191b73d87de026556ae915f8bf48 (patch)
treec36c9164b59f5a6956de7498815185090f14a97b /src/mm-shared-qmi.c
parent5c0db3743209b78d8c7b7558e337e6df25951bae (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.
Diffstat (limited to 'src/mm-shared-qmi.c')
-rw-r--r--src/mm-shared-qmi.c48
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);