diff options
author | Aleksander Morgado <aleksander@aleksander.es> | 2017-09-20 22:01:25 -0700 |
---|---|---|
committer | Aleksander Morgado <aleksander@aleksander.es> | 2017-10-07 13:40:30 +0200 |
commit | b1948f83a5134143347010df33c2513c69ebb849 (patch) | |
tree | ee8488343a06e3093fd701b80259fab0ff16804f | |
parent | e1b2b88e682d68c1554f5c8014c19fe27aebc9af (diff) | |
download | ModemManager-b1948f83a5134143347010df33c2513c69ebb849.tar.gz |
cinterion: port load_unlock_retries_context to GTask
-rw-r--r-- | plugins/cinterion/mm-broadband-modem-cinterion.c | 72 |
1 files changed, 35 insertions, 37 deletions
diff --git a/plugins/cinterion/mm-broadband-modem-cinterion.c b/plugins/cinterion/mm-broadband-modem-cinterion.c index 3fe1f5c7b..7784b9ff8 100644 --- a/plugins/cinterion/mm-broadband-modem-cinterion.c +++ b/plugins/cinterion/mm-broadband-modem-cinterion.c @@ -1432,14 +1432,12 @@ setup_flow_control (MMIfaceModem *self, /* Load unlock retries (Modem interface) */ typedef struct { - MMBroadbandModemCinterion *self; - GSimpleAsyncResult *result; MMUnlockRetries *retries; - guint i; + guint i; } LoadUnlockRetriesContext; typedef struct { - MMModemLock lock; + MMModemLock lock; const gchar *command; } UnlockRetriesMap; @@ -1455,35 +1453,32 @@ static const UnlockRetriesMap unlock_retries_map [] = { }; static void -load_unlock_retries_context_complete_and_free (LoadUnlockRetriesContext *ctx) +load_unlock_retries_context_free (LoadUnlockRetriesContext *ctx) { - g_simple_async_result_complete (ctx->result); g_object_unref (ctx->retries); - g_object_unref (ctx->result); - g_object_unref (ctx->self); g_slice_free (LoadUnlockRetriesContext, ctx); } static MMUnlockRetries * -load_unlock_retries_finish (MMIfaceModem *self, - GAsyncResult *res, - GError **error) +load_unlock_retries_finish (MMIfaceModem *self, + GAsyncResult *res, + GError **error) { - if (g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (res), error)) - return NULL; - return (MMUnlockRetries *) g_object_ref (g_simple_async_result_get_op_res_gpointer ( - G_SIMPLE_ASYNC_RESULT (res))); + return g_task_propagate_pointer (G_TASK (res), error); } -static void load_unlock_retries_context_step (LoadUnlockRetriesContext *ctx); +static void load_unlock_retries_context_step (GTask *task); static void -spic_ready (MMBaseModem *self, +spic_ready (MMBaseModem *self, GAsyncResult *res, - LoadUnlockRetriesContext *ctx) + GTask *task) { - const gchar *response; - GError *error = NULL; + LoadUnlockRetriesContext *ctx; + const gchar *response; + GError *error = NULL; + + ctx = g_task_get_task_data (task); response = mm_base_modem_at_command_finish (self, res, &error); if (!response) { @@ -1504,46 +1499,49 @@ spic_ready (MMBaseModem *self, /* Go to next lock value */ ctx->i++; - load_unlock_retries_context_step (ctx); + load_unlock_retries_context_step (task); } static void -load_unlock_retries_context_step (LoadUnlockRetriesContext *ctx) +load_unlock_retries_context_step (GTask *task) { + MMBroadbandModemCinterion *self; + LoadUnlockRetriesContext *ctx; + + self = g_task_get_source_object (task); + ctx = g_task_get_task_data (task); + if (ctx->i == G_N_ELEMENTS (unlock_retries_map)) { - g_simple_async_result_set_op_res_gpointer (ctx->result, - g_object_ref (ctx->retries), - g_object_unref); - load_unlock_retries_context_complete_and_free (ctx); + g_task_return_pointer (task, g_object_ref (ctx->retries), g_object_unref); + g_object_unref (task); return; } mm_base_modem_at_command ( - MM_BASE_MODEM (ctx->self), + MM_BASE_MODEM (self), unlock_retries_map[ctx->i].command, 3, FALSE, (GAsyncReadyCallback)spic_ready, - ctx); + task); } static void -load_unlock_retries (MMIfaceModem *self, - GAsyncReadyCallback callback, - gpointer user_data) +load_unlock_retries (MMIfaceModem *self, + GAsyncReadyCallback callback, + gpointer user_data) { + GTask *task; LoadUnlockRetriesContext *ctx; + task = g_task_new (self, NULL, callback, user_data); + ctx = g_slice_new0 (LoadUnlockRetriesContext); - ctx->self = g_object_ref (self); - ctx->result = g_simple_async_result_new (G_OBJECT (self), - callback, - user_data, - load_unlock_retries); ctx->retries = mm_unlock_retries_new (); ctx->i = 0; + g_task_set_task_data (task, ctx, (GDestroyNotify)load_unlock_retries_context_free); - load_unlock_retries_context_step (ctx); + load_unlock_retries_context_step (task); } /*****************************************************************************/ |