aboutsummaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'plugins')
-rw-r--r--plugins/telit/mm-broadband-modem-telit.c128
1 files changed, 6 insertions, 122 deletions
diff --git a/plugins/telit/mm-broadband-modem-telit.c b/plugins/telit/mm-broadband-modem-telit.c
index 995ae6a9..08917ca4 100644
--- a/plugins/telit/mm-broadband-modem-telit.c
+++ b/plugins/telit/mm-broadband-modem-telit.c
@@ -911,20 +911,6 @@ modem_load_unlock_retries (MMIfaceModem *self,
/*****************************************************************************/
/* Modem after power up (Modem interface) */
-typedef enum {
- AFTER_POWER_UP_STEP_FIRST,
- AFTER_POWER_UP_STEP_GET_SIM_IDENTIFIER,
- AFTER_POWER_UP_STEP_ENABLE_QSS_PARSING,
- AFTER_POWER_UP_STEP_LAST
-} ModemAfterPowerUpStep;
-
-typedef struct {
- gboolean has_sim_changed;
- guint retries;
- ModemAfterPowerUpStep step;
-} AfterPowerUpContext;
-
-static void after_power_up_step (GTask *task);
static gboolean
modem_after_power_up_finish (MMIfaceModem *self,
@@ -935,122 +921,20 @@ modem_after_power_up_finish (MMIfaceModem *self,
}
static void
-load_sim_identifier_ready (MMBaseSim *sim,
- GAsyncResult *res,
- GTask *task)
-{
- AfterPowerUpContext *ctx;
- GError *error = NULL;
- gchar *current_simid;
- const gchar *cached_simid;
-
- ctx = g_task_get_task_data (task);
-
- cached_simid = (gchar *)mm_gdbus_sim_get_sim_identifier (MM_GDBUS_SIM (sim));
- current_simid = mm_base_sim_load_sim_identifier_finish (sim, res, &error);
-
- if (error) {
- if (g_error_matches (error, MM_CORE_ERROR, MM_CORE_ERROR_UNSUPPORTED)) {
- mm_warn ("could not load SIM identifier: %s", error->message);
- g_clear_error (&error);
- goto out;
- }
-
- if (ctx->retries-- > 0) {
- mm_warn ("could not load SIM identifier: %s (%d retries left)",
- error->message, ctx->retries);
- g_clear_error (&error);
- g_timeout_add_seconds (1, (GSourceFunc) after_power_up_step, task);
- return;
- }
-
- mm_warn ("could not load SIM identifier: %s", error->message);
- g_clear_error (&error);
- goto out;
- }
-
- if (g_strcmp0 (current_simid, cached_simid) != 0) {
- mm_warn ("sim identifier has changed: possible SIM swap during power down/low");
- ctx->has_sim_changed = TRUE;
- }
-
-out:
- g_free (current_simid);
- ctx->step++;
- after_power_up_step (task);
-}
-
-static void
-after_power_up_step (GTask *task)
-{
- AfterPowerUpContext *ctx;
- MMBroadbandModemTelit *self;
-
- ctx = g_task_get_task_data (task);
- self = g_task_get_source_object (task);
-
- switch (ctx->step) {
- case AFTER_POWER_UP_STEP_FIRST:
- /* Fall back on next step */
- ctx->step++;
-
- case AFTER_POWER_UP_STEP_GET_SIM_IDENTIFIER: {
- MMBaseSim *sim = NULL;
-
- g_object_get (MM_BROADBAND_MODEM_TELIT (self),
- MM_IFACE_MODEM_SIM, &sim,
- NULL);
- if (!sim) {
- g_task_return_new_error (task,
- MM_CORE_ERROR,
- MM_CORE_ERROR_FAILED,
- "could not acquire sim object");
- g_object_unref (task);
- return;
- }
-
- mm_base_sim_load_sim_identifier (sim,
- (GAsyncReadyCallback)load_sim_identifier_ready,
- task);
- g_object_unref (sim);
- return;
- }
-
- case AFTER_POWER_UP_STEP_ENABLE_QSS_PARSING:
- mm_dbg ("Stop ignoring #QSS");
- self->priv->parse_qss = TRUE;
-
- /* Fall back on next step */
- ctx->step++;
- case AFTER_POWER_UP_STEP_LAST:
- if (ctx->has_sim_changed)
- mm_broadband_modem_update_sim_hot_swap_detected (MM_BROADBAND_MODEM (self));
-
- g_task_return_boolean (task, TRUE);
- g_object_unref (task);
- break;
- default:
- g_assert_not_reached ();
- }
-}
-
-static void
modem_after_power_up (MMIfaceModem *self,
GAsyncReadyCallback callback,
gpointer user_data)
{
GTask *task;
- AfterPowerUpContext *ctx;
-
- ctx = g_new0 (AfterPowerUpContext, 1);
- ctx->step = AFTER_POWER_UP_STEP_FIRST;
- ctx->has_sim_changed = FALSE;
- ctx->retries = 3;
+ MMBroadbandModemTelit *modem = MM_BROADBAND_MODEM_TELIT (self);
task = g_task_new (self, NULL, callback, user_data);
- g_task_set_task_data (task, ctx, (GDestroyNotify) g_free);
- after_power_up_step (task);
+ mm_dbg ("Stop ignoring #QSS");
+ modem->priv->parse_qss = TRUE;
+
+ g_task_return_boolean (task, TRUE);
+ g_object_unref (task);
}
/*****************************************************************************/