From 9f474123dbd02a315736ae7ccaef7e1565a9d223 Mon Sep 17 00:00:00 2001 From: Aleksander Morgado Date: Fri, 26 Dec 2014 13:45:42 +0100 Subject: [PATCH 1/3] broadband-modem-mbim,sim-mbim: use always a context for MBIM command operations So that we always have a pointer to the owner object that we can use directly from the GAsyncReadyCallback. --- src/mm-broadband-modem-mbim.c | 276 ++++++++++++++++++++---------------------- src/mm-sim-mbim.c | 184 +++++++++++++++------------- 2 files changed, 230 insertions(+), 230 deletions(-) diff --git a/src/mm-broadband-modem-mbim.c b/src/mm-broadband-modem-mbim.c index 37dd0a2..f689127 100644 --- a/src/mm-broadband-modem-mbim.c +++ b/src/mm-broadband-modem-mbim.c @@ -106,22 +106,38 @@ peek_device (gpointer self, } /*****************************************************************************/ -/* Current Capabilities loading (Modem interface) */ typedef struct { MMBroadbandModemMbim *self; GSimpleAsyncResult *result; -} LoadCapabilitiesContext; +} SimpleContext; static void -load_capabilities_context_complete_and_free (LoadCapabilitiesContext *ctx) +simple_context_complete_and_free (SimpleContext *ctx) { g_simple_async_result_complete (ctx->result); g_object_unref (ctx->result); g_object_unref (ctx->self); - g_slice_free (LoadCapabilitiesContext, ctx); + g_slice_free (SimpleContext, ctx); } +static SimpleContext * +simple_context_new (MMBroadbandModemMbim *self, + GAsyncReadyCallback callback, + gpointer user_data, + gpointer source_tag) +{ + SimpleContext *ctx; + + ctx = g_slice_new (SimpleContext); + ctx->self = g_object_ref (self); + ctx->result = g_simple_async_result_new (G_OBJECT (self), callback, user_data, source_tag); + return ctx; +} + +/*****************************************************************************/ +/* Current Capabilities loading (Modem interface) */ + static MMModemCapability modem_load_current_capabilities_finish (MMIfaceModem *self, GAsyncResult *res, @@ -145,7 +161,7 @@ modem_load_current_capabilities_finish (MMIfaceModem *self, static void device_caps_query_ready (MbimDevice *device, GAsyncResult *res, - LoadCapabilitiesContext *ctx) + SimpleContext *ctx) { MMModemCapability mask; MbimMessage *response; @@ -185,7 +201,7 @@ device_caps_query_ready (MbimDevice *device, if (response) mbim_message_unref (response); - load_capabilities_context_complete_and_free (ctx); + simple_context_complete_and_free (ctx); } static void @@ -193,19 +209,17 @@ modem_load_current_capabilities (MMIfaceModem *self, GAsyncReadyCallback callback, gpointer user_data) { - LoadCapabilitiesContext *ctx; + SimpleContext *ctx; MbimDevice *device; MbimMessage *message; if (!peek_device (self, &device, callback, user_data)) return; - ctx = g_slice_new (LoadCapabilitiesContext); - ctx->self = g_object_ref (self); - ctx->result = g_simple_async_result_new (G_OBJECT (self), - callback, - user_data, - modem_load_current_capabilities); + ctx = simple_context_new (MM_BROADBAND_MODEM_MBIM (self), + callback, + user_data, + modem_load_current_capabilities); mm_dbg ("loading current capabilities..."); message = mbim_message_device_caps_query_new (NULL); @@ -721,7 +735,7 @@ modem_load_unlock_retries_finish (MMIfaceModem *self, static void pin_query_unlock_retries_ready (MbimDevice *device, GAsyncResult *res, - GSimpleAsyncResult *simple) + SimpleContext *ctx) { MbimMessage *response; GError *error = NULL; @@ -747,14 +761,14 @@ pin_query_unlock_retries_ready (MbimDevice *device, mm_modem_lock_from_mbim_pin_type (pin_type), remaining_attempts); } - g_simple_async_result_set_op_res_gpointer (simple, retries, g_object_unref); + g_simple_async_result_set_op_res_gpointer (ctx->result, retries, g_object_unref); } else - g_simple_async_result_take_error (simple, error); + g_simple_async_result_take_error (ctx->result, error); if (response) mbim_message_unref (response); - g_simple_async_result_complete (simple); - g_object_unref (simple); + + simple_context_complete_and_free (ctx); } static void @@ -762,17 +776,17 @@ modem_load_unlock_retries (MMIfaceModem *self, GAsyncReadyCallback callback, gpointer user_data) { - GSimpleAsyncResult *result; + SimpleContext *ctx; MbimDevice *device; MbimMessage *message; if (!peek_device (self, &device, callback, user_data)) return; - result = g_simple_async_result_new (G_OBJECT (self), - callback, - user_data, - modem_load_unlock_retries); + ctx = simple_context_new (MM_BROADBAND_MODEM_MBIM (self), + callback, + user_data, + modem_load_unlock_retries); message = mbim_message_pin_query_new (NULL); mbim_device_command (device, @@ -780,7 +794,7 @@ modem_load_unlock_retries (MMIfaceModem *self, 10, NULL, (GAsyncReadyCallback)pin_query_unlock_retries_ready, - result); + ctx); mbim_message_unref (message); } @@ -801,7 +815,7 @@ modem_load_own_numbers_finish (MMIfaceModem *self, static void own_numbers_subscriber_ready_state_ready (MbimDevice *device, GAsyncResult *res, - GSimpleAsyncResult *simple) + SimpleContext *ctx) { MbimMessage *response; GError *error = NULL; @@ -819,14 +833,13 @@ own_numbers_subscriber_ready_state_ready (MbimDevice *device, NULL, /* telephone_numbers_count */ &telephone_numbers, &error)) { - g_simple_async_result_set_op_res_gpointer (simple, telephone_numbers, NULL); + g_simple_async_result_set_op_res_gpointer (ctx->result, telephone_numbers, NULL); } else - g_simple_async_result_take_error (simple, error); + g_simple_async_result_take_error (ctx->result, error); if (response) mbim_message_unref (response); - g_simple_async_result_complete (simple); - g_object_unref (simple); + simple_context_complete_and_free (ctx); } static void @@ -834,17 +847,17 @@ modem_load_own_numbers (MMIfaceModem *self, GAsyncReadyCallback callback, gpointer user_data) { - GSimpleAsyncResult *result; + SimpleContext *ctx; MbimDevice *device; MbimMessage *message; if (!peek_device (self, &device, callback, user_data)) return; - result = g_simple_async_result_new (G_OBJECT (self), - callback, - user_data, - modem_load_own_numbers); + ctx = simple_context_new (MM_BROADBAND_MODEM_MBIM (self), + callback, + user_data, + modem_load_own_numbers); message = mbim_message_subscriber_ready_status_query_new (NULL); mbim_device_command (device, @@ -852,7 +865,7 @@ modem_load_own_numbers (MMIfaceModem *self, 10, NULL, (GAsyncReadyCallback)own_numbers_subscriber_ready_state_ready, - result); + ctx); mbim_message_unref (message); } @@ -873,7 +886,7 @@ modem_load_power_state_finish (MMIfaceModem *self, static void radio_state_query_ready (MbimDevice *device, GAsyncResult *res, - GSimpleAsyncResult *simple) + SimpleContext *ctx) { MbimMessage *response; GError *error = NULL; @@ -895,16 +908,15 @@ radio_state_query_ready (MbimDevice *device, state = MM_MODEM_POWER_STATE_LOW; else state = MM_MODEM_POWER_STATE_ON; - g_simple_async_result_set_op_res_gpointer (simple, + g_simple_async_result_set_op_res_gpointer (ctx->result, GUINT_TO_POINTER (state), NULL); } else - g_simple_async_result_take_error (simple, error); + g_simple_async_result_take_error (ctx->result, error); if (response) mbim_message_unref (response); - g_simple_async_result_complete (simple); - g_object_unref (simple); + simple_context_complete_and_free (ctx); } static void @@ -912,17 +924,17 @@ modem_load_power_state (MMIfaceModem *self, GAsyncReadyCallback callback, gpointer user_data) { - GSimpleAsyncResult *result; + SimpleContext *ctx; MbimDevice *device; MbimMessage *message; if (!peek_device (self, &device, callback, user_data)) return; - result = g_simple_async_result_new (G_OBJECT (self), - callback, - user_data, - modem_load_power_state); + ctx = simple_context_new (MM_BROADBAND_MODEM_MBIM (self), + callback, + user_data, + modem_load_power_state); message = mbim_message_radio_state_query_new (NULL); mbim_device_command (device, @@ -930,7 +942,7 @@ modem_load_power_state (MMIfaceModem *self, 10, NULL, (GAsyncReadyCallback)radio_state_query_ready, - result); + ctx); mbim_message_unref (message); } @@ -948,7 +960,7 @@ common_power_up_down_finish (MMIfaceModem *self, static void radio_state_set_down_ready (MbimDevice *device, GAsyncResult *res, - GSimpleAsyncResult *simple) + SimpleContext *ctx) { MbimMessage *response; GError *error = NULL; @@ -958,20 +970,19 @@ radio_state_set_down_ready (MbimDevice *device, mbim_message_command_done_get_result (response, &error); if (error) - g_simple_async_result_take_error (simple, error); + g_simple_async_result_take_error (ctx->result, error); else - g_simple_async_result_set_op_res_gboolean (simple, TRUE); + g_simple_async_result_set_op_res_gboolean (ctx->result, TRUE); if (response) mbim_message_unref (response); - g_simple_async_result_complete (simple); - g_object_unref (simple); + simple_context_complete_and_free (ctx); } static void radio_state_set_up_ready (MbimDevice *device, GAsyncResult *res, - GSimpleAsyncResult *simple) + SimpleContext *ctx) { MbimMessage *response; GError *error = NULL; @@ -995,14 +1006,13 @@ radio_state_set_up_ready (MbimDevice *device, } if (error) - g_simple_async_result_take_error (simple, error); + g_simple_async_result_take_error (ctx->result, error); else - g_simple_async_result_set_op_res_gboolean (simple, TRUE); + g_simple_async_result_set_op_res_gboolean (ctx->result, TRUE); if (response) mbim_message_unref (response); - g_simple_async_result_complete (simple); - g_object_unref (simple); + simple_context_complete_and_free (ctx); } static void @@ -1011,7 +1021,7 @@ common_power_up_down (MMIfaceModem *self, GAsyncReadyCallback callback, gpointer user_data) { - GSimpleAsyncResult *result; + SimpleContext *ctx; MbimDevice *device; MbimMessage *message; MbimRadioSwitchState state; @@ -1020,10 +1030,10 @@ common_power_up_down (MMIfaceModem *self, if (!peek_device (self, &device, callback, user_data)) return; - result = g_simple_async_result_new (G_OBJECT (self), - callback, - user_data, - common_power_up_down); + ctx = simple_context_new (MM_BROADBAND_MODEM_MBIM (self), + callback, + user_data, + common_power_up_down); if (up) { ready_cb = (GAsyncReadyCallback)radio_state_set_up_ready; @@ -1039,7 +1049,7 @@ common_power_up_down (MMIfaceModem *self, 20, NULL, ready_cb, - result); + ctx); mbim_message_unref (message); } @@ -1416,7 +1426,7 @@ modem_3gpp_load_enabled_facility_locks_finish (MMIfaceModem3gpp *self, static void pin_list_query_ready (MbimDevice *device, GAsyncResult *res, - GSimpleAsyncResult *simple) + SimpleContext *ctx) { MbimMessage *response; GError *error = NULL; @@ -1479,16 +1489,15 @@ pin_list_query_ready (MbimDevice *device, mask |= MM_MODEM_3GPP_FACILITY_CORP_PERS; mbim_pin_desc_free (pin_desc_corporate_pin); - g_simple_async_result_set_op_res_gpointer (simple, + g_simple_async_result_set_op_res_gpointer (ctx->result, GUINT_TO_POINTER (mask), NULL); } else - g_simple_async_result_take_error (simple, error); + g_simple_async_result_take_error (ctx->result, error); if (response) mbim_message_unref (response); - g_simple_async_result_complete (simple); - g_object_unref (simple); + simple_context_complete_and_free (ctx); } static void @@ -1496,17 +1505,17 @@ modem_3gpp_load_enabled_facility_locks (MMIfaceModem3gpp *self, GAsyncReadyCallback callback, gpointer user_data) { - GSimpleAsyncResult *result; + SimpleContext *ctx; MbimDevice *device; MbimMessage *message; if (!peek_device (self, &device, callback, user_data)) return; - result = g_simple_async_result_new (G_OBJECT (self), - callback, - user_data, - modem_3gpp_load_enabled_facility_locks); + ctx = simple_context_new (MM_BROADBAND_MODEM_MBIM (self), + callback, + user_data, + modem_3gpp_load_enabled_facility_locks); message = mbim_message_pin_list_query_new (NULL); mbim_device_command (device, @@ -1514,7 +1523,7 @@ modem_3gpp_load_enabled_facility_locks (MMIfaceModem3gpp *self, 10, NULL, (GAsyncReadyCallback)pin_list_query_ready, - result); + ctx); mbim_message_unref (message); } @@ -2067,7 +2076,7 @@ common_enable_disable_unsolicited_events_finish (MMBroadbandModemMbim *self, static void subscribe_list_set_ready_cb (MbimDevice *device, GAsyncResult *res, - GSimpleAsyncResult *simple) + SimpleContext *ctx) { MbimMessage *response; GError *error = NULL; @@ -2077,14 +2086,13 @@ subscribe_list_set_ready_cb (MbimDevice *device, mbim_message_command_done_get_result (response, &error); if (error) - g_simple_async_result_take_error (simple, error); + g_simple_async_result_take_error (ctx->result, error); else - g_simple_async_result_set_op_res_gboolean (simple, TRUE); + g_simple_async_result_set_op_res_gboolean (ctx->result, TRUE); if (response) mbim_message_unref (response); - g_simple_async_result_complete (simple); - g_object_unref (simple); + simple_context_complete_and_free (ctx); } static void @@ -2092,19 +2100,19 @@ common_enable_disable_unsolicited_events (MMBroadbandModemMbim *self, GAsyncReadyCallback callback, gpointer user_data) { + SimpleContext *ctx; MbimMessage *request; MbimDevice *device; - GSimpleAsyncResult *result; MbimEventEntry **entries; guint n_entries = 0; if (!peek_device (self, &device, callback, user_data)) return; - result = g_simple_async_result_new (G_OBJECT (self), - callback, - user_data, - common_enable_disable_unsolicited_events); + ctx = simple_context_new (MM_BROADBAND_MODEM_MBIM (self), + callback, + user_data, + common_enable_disable_unsolicited_events); mm_dbg ("Enabled notifications: signal (%s), registration (%s), sms (%s), connect (%s), subscriber (%s), packet (%s)", self->priv->enable_flags & PROCESS_NOTIFICATION_FLAG_SIGNAL_QUALITY ? "yes" : "no", @@ -2159,7 +2167,7 @@ common_enable_disable_unsolicited_events (MMBroadbandModemMbim *self, 10, NULL, (GAsyncReadyCallback)subscribe_list_set_ready_cb, - result); + ctx); mbim_message_unref (request); mbim_event_entry_array_free (entries); } @@ -2323,7 +2331,7 @@ modem_3gpp_run_registration_checks_finish (MMIfaceModem3gpp *self, static void register_state_query_ready (MbimDevice *device, GAsyncResult *res, - GSimpleAsyncResult *simple) + SimpleContext *ctx) { MbimMessage *response; GError *error = NULL; @@ -2347,24 +2355,18 @@ register_state_query_ready (MbimDevice *device, NULL, /* roaming_text */ NULL, /* registration_flag */ NULL)) { - MMBroadbandModemMbim *self; - - self = MM_BROADBAND_MODEM_MBIM (g_async_result_get_source_object (G_ASYNC_RESULT (simple))); - update_registration_info (self, + update_registration_info (ctx->self, register_state, available_data_classes, provider_id, provider_name); - g_object_unref (self); - - g_simple_async_result_set_op_res_gboolean (simple, TRUE); + g_simple_async_result_set_op_res_gboolean (ctx->result, TRUE); } else - g_simple_async_result_take_error (simple, error); + g_simple_async_result_take_error (ctx->result, error); if (response) mbim_message_unref (response); - g_simple_async_result_complete (simple); - g_object_unref (simple); + simple_context_complete_and_free (ctx); } static void @@ -2375,17 +2377,17 @@ modem_3gpp_run_registration_checks (MMIfaceModem3gpp *self, GAsyncReadyCallback callback, gpointer user_data) { - GSimpleAsyncResult *result; + SimpleContext *ctx; MbimDevice *device; MbimMessage *message; if (!peek_device (self, &device, callback, user_data)) return; - result = g_simple_async_result_new (G_OBJECT (self), - callback, - user_data, - modem_3gpp_run_registration_checks); + ctx = simple_context_new (MM_BROADBAND_MODEM_MBIM (self), + callback, + user_data, + modem_3gpp_run_registration_checks); message = mbim_message_register_state_query_new (NULL); mbim_device_command (device, @@ -2393,7 +2395,7 @@ modem_3gpp_run_registration_checks (MMIfaceModem3gpp *self, 10, NULL, (GAsyncReadyCallback)register_state_query_ready, - result); + ctx); mbim_message_unref (message); } @@ -2410,7 +2412,7 @@ modem_3gpp_register_in_network_finish (MMIfaceModem3gpp *self, static void register_state_set_ready (MbimDevice *device, GAsyncResult *res, - GSimpleAsyncResult *simple) + SimpleContext *ctx) { MbimMessage *response; GError *error = NULL; @@ -2436,14 +2438,13 @@ register_state_set_ready (MbimDevice *device, } if (error) - g_simple_async_result_take_error (simple, error); + g_simple_async_result_take_error (ctx->result, error); else - g_simple_async_result_set_op_res_gboolean (simple, TRUE); + g_simple_async_result_set_op_res_gboolean (ctx->result, TRUE); if (response) mbim_message_unref (response); - g_simple_async_result_complete (simple); - g_object_unref (simple); + simple_context_complete_and_free (ctx); } static void @@ -2453,17 +2454,17 @@ modem_3gpp_register_in_network (MMIfaceModem3gpp *self, GAsyncReadyCallback callback, gpointer user_data) { - GSimpleAsyncResult *result; + SimpleContext *ctx; MbimDevice *device; MbimMessage *message; if (!peek_device (self, &device, callback, user_data)) return; - result = g_simple_async_result_new (G_OBJECT (self), - callback, - user_data, - modem_3gpp_register_in_network); + ctx = simple_context_new (MM_BROADBAND_MODEM_MBIM (self), + callback, + user_data, + modem_3gpp_register_in_network); if (operator_id && operator_id[0]) message = (mbim_message_register_state_set_new ( @@ -2482,7 +2483,7 @@ modem_3gpp_register_in_network (MMIfaceModem3gpp *self, 60, NULL, (GAsyncReadyCallback)register_state_set_ready, - result); + ctx); mbim_message_unref (message); } @@ -2518,19 +2519,18 @@ modem_3gpp_scan_networks_finish (MMIfaceModem3gpp *self, static void visible_providers_query_ready (MbimDevice *device, GAsyncResult *res, - GSimpleAsyncResult *simple) + SimpleContext *ctx) { MbimMessage *response; GError *error = NULL; response = mbim_device_command_finish (device, res, &error); if (response) - g_simple_async_result_set_op_res_gpointer (simple, response, (GDestroyNotify)mbim_message_unref); + g_simple_async_result_set_op_res_gpointer (ctx->result, response, (GDestroyNotify)mbim_message_unref); else - g_simple_async_result_take_error (simple, error); + g_simple_async_result_take_error (ctx->result, error); - g_simple_async_result_complete (simple); - g_object_unref (simple); + simple_context_complete_and_free (ctx); } static void @@ -2538,17 +2538,17 @@ modem_3gpp_scan_networks (MMIfaceModem3gpp *self, GAsyncReadyCallback callback, gpointer user_data) { - GSimpleAsyncResult *result; + SimpleContext *ctx; MbimDevice *device; MbimMessage *message; if (!peek_device (self, &device, callback, user_data)) return; - result = g_simple_async_result_new (G_OBJECT (self), - callback, - user_data, - modem_3gpp_scan_networks); + ctx = simple_context_new (MM_BROADBAND_MODEM_MBIM (self), + callback, + user_data, + modem_3gpp_scan_networks); mm_dbg ("scanning networks..."); message = mbim_message_visible_providers_query_new (MBIM_VISIBLE_PROVIDERS_ACTION_FULL_SCAN, NULL); @@ -2557,7 +2557,7 @@ modem_3gpp_scan_networks (MMIfaceModem3gpp *self, 120, NULL, (GAsyncReadyCallback)visible_providers_query_ready, - result); + ctx); mbim_message_unref (message); } @@ -2640,20 +2640,6 @@ messaging_load_supported_storages (MMIfaceModemMessaging *self, /*****************************************************************************/ /* Load initial SMS parts */ -typedef struct { - MMBroadbandModemMbim *self; - GSimpleAsyncResult *result; -} LoadInitialSmsPartsContext; - -static void -load_initial_sms_parts_context_complete_and_free (LoadInitialSmsPartsContext *ctx) -{ - g_simple_async_result_complete (ctx->result); - g_object_unref (ctx->result); - g_object_unref (ctx->self); - g_slice_free (LoadInitialSmsPartsContext, ctx); -} - static gboolean load_initial_sms_parts_finish (MMIfaceModemMessaging *self, GAsyncResult *res, @@ -2691,7 +2677,7 @@ add_sms_part (MMBroadbandModemMbim *self, static void sms_read_query_ready (MbimDevice *device, GAsyncResult *res, - LoadInitialSmsPartsContext *ctx) + SimpleContext *ctx) { MbimMessage *response; GError *error = NULL; @@ -2719,7 +2705,7 @@ sms_read_query_ready (MbimDevice *device, if (response) mbim_message_unref (response); - load_initial_sms_parts_context_complete_and_free (ctx); + simple_context_complete_and_free (ctx); } static void @@ -2728,7 +2714,7 @@ load_initial_sms_parts (MMIfaceModemMessaging *self, GAsyncReadyCallback callback, gpointer user_data) { - LoadInitialSmsPartsContext *ctx; + SimpleContext *ctx; MbimDevice *device; MbimMessage *message; @@ -2737,12 +2723,10 @@ load_initial_sms_parts (MMIfaceModemMessaging *self, g_assert (storage == MM_SMS_STORAGE_MT); - ctx = g_slice_new0 (LoadInitialSmsPartsContext); - ctx->self = g_object_ref (self); - ctx->result = g_simple_async_result_new (G_OBJECT (self), - callback, - user_data, - load_initial_sms_parts); + ctx = simple_context_new (MM_BROADBAND_MODEM_MBIM (self), + callback, + user_data, + load_initial_sms_parts); mm_dbg ("loading SMS parts..."); message = mbim_message_sms_read_query_new (MBIM_SMS_FORMAT_PDU, diff --git a/src/mm-sim-mbim.c b/src/mm-sim-mbim.c index 8d7f3f8..e01a3ba 100644 --- a/src/mm-sim-mbim.c +++ b/src/mm-sim-mbim.c @@ -64,6 +64,36 @@ peek_device (gpointer self, } /*****************************************************************************/ + +typedef struct { + MMSimMbim *self; + GSimpleAsyncResult *result; +} SimpleContext; + +static void +simple_context_complete_and_free (SimpleContext *ctx) +{ + g_simple_async_result_complete (ctx->result); + g_object_unref (ctx->result); + g_object_unref (ctx->self); + g_slice_free (SimpleContext, ctx); +} + +static SimpleContext * +simple_context_new (MMSimMbim *self, + GAsyncReadyCallback callback, + gpointer user_data, + gpointer source_tag) +{ + SimpleContext *ctx; + + ctx = g_slice_new (SimpleContext); + ctx->self = g_object_ref (self); + ctx->result = g_simple_async_result_new (G_OBJECT (self), callback, user_data, source_tag); + return ctx; +} + +/*****************************************************************************/ /* Load SIM identifier */ static gchar * @@ -79,7 +109,7 @@ load_sim_identifier_finish (MMBaseSim *self, static void simid_subscriber_ready_state_ready (MbimDevice *device, GAsyncResult *res, - GSimpleAsyncResult *simple) + SimpleContext *ctx) { MbimMessage *response; GError *error = NULL; @@ -97,14 +127,13 @@ simid_subscriber_ready_state_ready (MbimDevice *device, NULL, /* telephone_numbers_count */ NULL, /* telephone_numbers */ &error)) - g_simple_async_result_set_op_res_gpointer (simple, sim_iccid, (GDestroyNotify)g_free); + g_simple_async_result_set_op_res_gpointer (ctx->result, sim_iccid, (GDestroyNotify)g_free); else - g_simple_async_result_take_error (simple, error); + g_simple_async_result_take_error (ctx->result, error); if (response) mbim_message_unref (response); - g_simple_async_result_complete (simple); - g_object_unref (simple); + simple_context_complete_and_free (ctx); } static void @@ -112,14 +141,14 @@ load_sim_identifier (MMBaseSim *self, GAsyncReadyCallback callback, gpointer user_data) { + SimpleContext *ctx; MbimDevice *device; MbimMessage *message; - GSimpleAsyncResult *result; if (!peek_device (self, &device, callback, user_data)) return; - result = g_simple_async_result_new (G_OBJECT (self), callback, user_data, load_sim_identifier); + ctx = simple_context_new (MM_SIM_MBIM (self), callback, user_data, load_sim_identifier); message = mbim_message_subscriber_ready_status_query_new (NULL); mbim_device_command (device, @@ -127,7 +156,7 @@ load_sim_identifier (MMBaseSim *self, 10, NULL, (GAsyncReadyCallback)simid_subscriber_ready_state_ready, - result); + ctx); mbim_message_unref (message); } @@ -147,7 +176,7 @@ load_imsi_finish (MMBaseSim *self, static void imsi_subscriber_ready_state_ready (MbimDevice *device, GAsyncResult *res, - GSimpleAsyncResult *simple) + SimpleContext *ctx) { MbimMessage *response; GError *error = NULL; @@ -165,14 +194,13 @@ imsi_subscriber_ready_state_ready (MbimDevice *device, NULL, /* telephone_numbers_count */ NULL, /* telephone_numbers */ &error)) - g_simple_async_result_set_op_res_gpointer (simple, subscriber_id, (GDestroyNotify)g_free); + g_simple_async_result_set_op_res_gpointer (ctx->result, subscriber_id, (GDestroyNotify)g_free); else - g_simple_async_result_take_error (simple, error); + g_simple_async_result_take_error (ctx->result, error); if (response) mbim_message_unref (response); - g_simple_async_result_complete (simple); - g_object_unref (simple); + simple_context_complete_and_free (ctx); } static void @@ -182,12 +210,12 @@ load_imsi (MMBaseSim *self, { MbimDevice *device; MbimMessage *message; - GSimpleAsyncResult *result; + SimpleContext *ctx; if (!peek_device (self, &device, callback, user_data)) return; - result = g_simple_async_result_new (G_OBJECT (self), callback, user_data, load_imsi); + ctx = simple_context_new (MM_SIM_MBIM (self), callback, user_data, load_imsi); message = mbim_message_subscriber_ready_status_query_new (NULL); mbim_device_command (device, @@ -195,7 +223,7 @@ load_imsi (MMBaseSim *self, 10, NULL, (GAsyncReadyCallback)imsi_subscriber_ready_state_ready, - result); + ctx); mbim_message_unref (message); } @@ -219,7 +247,7 @@ load_operator_identifier_finish (MMBaseSim *self, static void load_operator_identifier_ready (MbimDevice *device, GAsyncResult *res, - GSimpleAsyncResult *simple) + SimpleContext *ctx) { MbimMessage *response; GError *error = NULL; @@ -232,14 +260,13 @@ load_operator_identifier_ready (MbimDevice *device, response, &provider, &error)) - g_simple_async_result_set_op_res_gpointer (simple, provider, (GDestroyNotify)mbim_provider_free); + g_simple_async_result_set_op_res_gpointer (ctx->result, provider, (GDestroyNotify)mbim_provider_free); else - g_simple_async_result_take_error (simple, error); + g_simple_async_result_take_error (ctx->result, error); if (response) mbim_message_unref (response); - g_simple_async_result_complete (simple); - g_object_unref (simple); + simple_context_complete_and_free (ctx); } static void @@ -247,14 +274,14 @@ load_operator_identifier (MMBaseSim *self, GAsyncReadyCallback callback, gpointer user_data) { + SimpleContext *ctx; MbimDevice *device; MbimMessage *message; - GSimpleAsyncResult *result; if (!peek_device (self, &device, callback, user_data)) return; - result = g_simple_async_result_new (G_OBJECT (self), callback, user_data, load_operator_identifier); + ctx = simple_context_new (MM_SIM_MBIM (self), callback, user_data, load_operator_identifier); message = mbim_message_home_provider_query_new (NULL); mbim_device_command (device, @@ -262,7 +289,7 @@ load_operator_identifier (MMBaseSim *self, 10, NULL, (GAsyncReadyCallback)load_operator_identifier_ready, - result); + ctx); mbim_message_unref (message); } @@ -286,7 +313,7 @@ load_operator_name_finish (MMBaseSim *self, static void load_operator_name_ready (MbimDevice *device, GAsyncResult *res, - GSimpleAsyncResult *simple) + SimpleContext *ctx) { MbimMessage *response; GError *error = NULL; @@ -299,14 +326,13 @@ load_operator_name_ready (MbimDevice *device, response, &provider, &error)) - g_simple_async_result_set_op_res_gpointer (simple, provider, (GDestroyNotify)mbim_provider_free); + g_simple_async_result_set_op_res_gpointer (ctx->result, provider, (GDestroyNotify)mbim_provider_free); else - g_simple_async_result_take_error (simple, error); + g_simple_async_result_take_error (ctx->result, error); if (response) mbim_message_unref (response); - g_simple_async_result_complete (simple); - g_object_unref (simple); + simple_context_complete_and_free (ctx); } static void @@ -314,14 +340,14 @@ load_operator_name (MMBaseSim *self, GAsyncReadyCallback callback, gpointer user_data) { + SimpleContext *ctx; MbimDevice *device; MbimMessage *message; - GSimpleAsyncResult *result; if (!peek_device (self, &device, callback, user_data)) return; - result = g_simple_async_result_new (G_OBJECT (self), callback, user_data, load_operator_name); + ctx = simple_context_new (MM_SIM_MBIM (self), callback, user_data, load_operator_name); message = mbim_message_home_provider_query_new (NULL); mbim_device_command (device, @@ -329,7 +355,7 @@ load_operator_name (MMBaseSim *self, 10, NULL, (GAsyncReadyCallback)load_operator_name_ready, - result); + ctx); mbim_message_unref (message); } @@ -347,7 +373,7 @@ send_pin_finish (MMBaseSim *self, static void pin_set_enter_ready (MbimDevice *device, GAsyncResult *res, - GSimpleAsyncResult *simple) + SimpleContext *ctx) { GError *error = NULL; MbimMessage *response; @@ -375,14 +401,14 @@ pin_set_enter_ready (MbimDevice *device, } } - if (error) - g_simple_async_result_take_error (simple, error); - else - g_simple_async_result_set_op_res_gboolean (simple, TRUE); - g_simple_async_result_complete (simple); - g_object_unref (simple); if (response) mbim_message_unref (response); + + if (error) + g_simple_async_result_take_error (ctx->result, error); + else + g_simple_async_result_set_op_res_gboolean (ctx->result, TRUE); + simple_context_complete_and_free (ctx); } static void @@ -391,16 +417,14 @@ send_pin (MMBaseSim *self, GAsyncReadyCallback callback, gpointer user_data) { + SimpleContext *ctx; MbimDevice *device; MbimMessage *message; - GSimpleAsyncResult *result; GError *error = NULL; if (!peek_device (self, &device, callback, user_data)) return; - result = g_simple_async_result_new (G_OBJECT (self), callback, user_data, send_pin); - mm_dbg ("Sending PIN..."); message = (mbim_message_pin_set_new ( MBIM_PIN_TYPE_PIN1, @@ -409,18 +433,18 @@ send_pin (MMBaseSim *self, "", &error)); if (!message) { - g_simple_async_result_take_error (result, error); - g_simple_async_result_complete_in_idle (result); - g_object_unref (result); + g_simple_async_report_take_gerror_in_idle (G_OBJECT (self), callback, user_data, error); return; } + ctx = simple_context_new (MM_SIM_MBIM (self), callback, user_data, send_pin); + mbim_device_command (device, message, 10, NULL, (GAsyncReadyCallback)pin_set_enter_ready, - result); + ctx); mbim_message_unref (message); } @@ -438,7 +462,7 @@ send_puk_finish (MMBaseSim *self, static void puk_set_enter_ready (MbimDevice *device, GAsyncResult *res, - GSimpleAsyncResult *simple) + SimpleContext *ctx) { GError *error = NULL; MbimMessage *response; @@ -467,14 +491,14 @@ puk_set_enter_ready (MbimDevice *device, } } - if (error) - g_simple_async_result_take_error (simple, error); - else - g_simple_async_result_set_op_res_gboolean (simple, TRUE); - g_simple_async_result_complete (simple); - g_object_unref (simple); if (response) mbim_message_unref (response); + + if (error) + g_simple_async_result_take_error (ctx->result, error); + else + g_simple_async_result_set_op_res_gboolean (ctx->result, TRUE); + simple_context_complete_and_free (ctx); } static void @@ -484,16 +508,14 @@ send_puk (MMBaseSim *self, GAsyncReadyCallback callback, gpointer user_data) { + SimpleContext *ctx; MbimDevice *device; MbimMessage *message; - GSimpleAsyncResult *result; GError *error = NULL; if (!peek_device (self, &device, callback, user_data)) return; - result = g_simple_async_result_new (G_OBJECT (self), callback, user_data, send_puk); - mm_dbg ("Sending PUK..."); message = (mbim_message_pin_set_new ( MBIM_PIN_TYPE_PUK1, @@ -502,18 +524,18 @@ send_puk (MMBaseSim *self, new_pin, &error)); if (!message) { - g_simple_async_result_take_error (result, error); - g_simple_async_result_complete_in_idle (result); - g_object_unref (result); + g_simple_async_report_take_gerror_in_idle (G_OBJECT (self), callback, user_data, error); return; } + ctx = simple_context_new (MM_SIM_MBIM (self), callback, user_data, send_puk); + mbim_device_command (device, message, 10, NULL, (GAsyncReadyCallback)puk_set_enter_ready, - result); + ctx); mbim_message_unref (message); } @@ -531,7 +553,7 @@ enable_pin_finish (MMBaseSim *self, static void pin_set_enable_ready (MbimDevice *device, GAsyncResult *res, - GSimpleAsyncResult *simple) + SimpleContext *ctx) { GError *error = NULL; MbimMessage *response; @@ -550,11 +572,10 @@ pin_set_enable_ready (MbimDevice *device, "Need to be unlocked to allow enabling/disabling PIN"); } - g_simple_async_result_take_error (simple, error); + g_simple_async_result_take_error (ctx->result, error); } else - g_simple_async_result_set_op_res_gboolean (simple, TRUE); - g_simple_async_result_complete (simple); - g_object_unref (simple); + g_simple_async_result_set_op_res_gboolean (ctx->result, TRUE); + simple_context_complete_and_free (ctx); } static void @@ -564,16 +585,14 @@ enable_pin (MMBaseSim *self, GAsyncReadyCallback callback, gpointer user_data) { + SimpleContext *ctx; MbimDevice *device; MbimMessage *message; - GSimpleAsyncResult *result; GError *error = NULL; if (!peek_device (self, &device, callback, user_data)) return; - result = g_simple_async_result_new (G_OBJECT (self), callback, user_data, send_puk); - mm_dbg ("%s PIN ...", enabled ? "Enabling" : "Disabling"); message = (mbim_message_pin_set_new ( MBIM_PIN_TYPE_PIN1, @@ -582,18 +601,18 @@ enable_pin (MMBaseSim *self, "", &error)); if (!message) { - g_simple_async_result_take_error (result, error); - g_simple_async_result_complete_in_idle (result); - g_object_unref (result); + g_simple_async_report_take_gerror_in_idle (G_OBJECT (self), callback, user_data, error); return; } + ctx = simple_context_new (MM_SIM_MBIM (self), callback, user_data, enable_pin); + mbim_device_command (device, message, 10, NULL, (GAsyncReadyCallback)pin_set_enable_ready, - result); + ctx); mbim_message_unref (message); } @@ -611,7 +630,7 @@ change_pin_finish (MMBaseSim *self, static void pin_set_change_ready (MbimDevice *device, GAsyncResult *res, - GSimpleAsyncResult *simple) + SimpleContext *ctx) { GError *error = NULL; MbimMessage *response; @@ -630,11 +649,10 @@ pin_set_change_ready (MbimDevice *device, "Need to be unlocked to allow changing PIN"); } - g_simple_async_result_take_error (simple, error); + g_simple_async_result_take_error (ctx->result, error); } else - g_simple_async_result_set_op_res_gboolean (simple, TRUE); - g_simple_async_result_complete (simple); - g_object_unref (simple); + g_simple_async_result_set_op_res_gboolean (ctx->result, TRUE); + simple_context_complete_and_free (ctx); } static void @@ -644,16 +662,14 @@ change_pin (MMBaseSim *self, GAsyncReadyCallback callback, gpointer user_data) { + SimpleContext *ctx; MbimDevice *device; MbimMessage *message; - GSimpleAsyncResult *result; GError *error = NULL; if (!peek_device (self, &device, callback, user_data)) return; - result = g_simple_async_result_new (G_OBJECT (self), callback, user_data, send_puk); - mm_dbg ("Changing PIN"); message = (mbim_message_pin_set_new ( MBIM_PIN_TYPE_PIN1, @@ -662,18 +678,18 @@ change_pin (MMBaseSim *self, new_pin, &error)); if (!message) { - g_simple_async_result_take_error (result, error); - g_simple_async_result_complete_in_idle (result); - g_object_unref (result); + g_simple_async_report_take_gerror_in_idle (G_OBJECT (self), callback, user_data, error); return; } + ctx = simple_context_new (MM_SIM_MBIM (self), callback, user_data, change_pin); + mbim_device_command (device, message, 10, NULL, (GAsyncReadyCallback)pin_set_change_ready, - result); + ctx); mbim_message_unref (message); } -- 2.2.1