diff options
author | Aleksander Morgado <aleksander@lanedo.com> | 2013-05-17 15:01:12 +0200 |
---|---|---|
committer | Aleksander Morgado <aleksander@lanedo.com> | 2013-05-17 15:01:12 +0200 |
commit | 2669bb7a9208fce9b0ec80f4ec119e081d883513 (patch) | |
tree | 2cdffe70ab05ce15fef6bc9cd9600cf4a1637026 | |
parent | d1a6f483651938665d6644a321129a0fcefb117b (diff) | |
download | ModemManager-2669bb7a9208fce9b0ec80f4ec119e081d883513.tar.gz |
HACK HACK HACK
-rw-r--r-- | src/mm-broadband-modem-qmi.c | 100 |
1 files changed, 76 insertions, 24 deletions
diff --git a/src/mm-broadband-modem-qmi.c b/src/mm-broadband-modem-qmi.c index f71cfaee1..706217dff 100644 --- a/src/mm-broadband-modem-qmi.c +++ b/src/mm-broadband-modem-qmi.c @@ -5982,6 +5982,7 @@ typedef struct { MMSmsStorage storage; GArray *message_array; guint i; + guint step; } LoadInitialSmsPartsContext; static void @@ -6141,6 +6142,8 @@ read_next_sms_part (LoadInitialSmsPartsContext *ctx) qmi_message_wms_raw_read_input_unref (input); } +static void step (LoadInitialSmsPartsContext *ctx); + static void wms_list_messages_ready (QmiClientWms *client, GAsyncResult *res, @@ -6160,9 +6163,11 @@ wms_list_messages_ready (QmiClientWms *client, if (!qmi_message_wms_list_messages_output_get_result (output, &error)) { g_prefix_error (&error, "Couldn't list messages: "); - g_simple_async_result_take_error (ctx->result, error); - load_initial_sms_parts_context_complete_and_free (ctx); - qmi_message_wms_list_messages_output_unref (output); + + g_warning ("%s", error->message); + g_error_free (error); + ctx->step++; + step (ctx); return; } @@ -6182,6 +6187,72 @@ wms_list_messages_ready (QmiClientWms *client, } static void +step (LoadInitialSmsPartsContext *ctx) +{ + QmiMessageWmsListMessagesInput *input; + + if (ctx->step == 8) { + g_simple_async_result_set_error (ctx->result, MM_CORE_ERROR, MM_CORE_ERROR_FAILED, "kaka"); + load_initial_sms_parts_context_complete_and_free (ctx); + return; + } + + mm_dbg ("[STEP %u] loading messages from storage '%s'... (qmi: %u)", + ctx->step, + mm_sms_storage_get_string (ctx->storage), + mm_sms_storage_to_qmi_storage_type (ctx->storage)); + + /* Request to list messages in a given storage */ + input = qmi_message_wms_list_messages_input_new (); + qmi_message_wms_list_messages_input_set_storage_type ( + input, + mm_sms_storage_to_qmi_storage_type (ctx->storage), + NULL); + + if (ctx->step < 2) { + qmi_message_wms_list_messages_input_set_message_tag (input, + QMI_WMS_MESSAGE_TAG_TYPE_MT_READ, + NULL); + if (ctx->step < 1) + qmi_message_wms_list_messages_input_set_message_mode (input, + QMI_WMS_MESSAGE_MODE_GSM_WCDMA, + NULL); + } else if (ctx->step < 4) { + qmi_message_wms_list_messages_input_set_message_tag (input, + QMI_WMS_MESSAGE_TAG_TYPE_MT_NOT_READ, + NULL); + if (ctx->step < 3) + qmi_message_wms_list_messages_input_set_message_mode (input, + QMI_WMS_MESSAGE_MODE_GSM_WCDMA, + NULL); + } else if (ctx->step < 6) { + qmi_message_wms_list_messages_input_set_message_tag (input, + QMI_WMS_MESSAGE_TAG_TYPE_MO_SENT, + NULL); + if (ctx->step < 5) + qmi_message_wms_list_messages_input_set_message_mode (input, + QMI_WMS_MESSAGE_MODE_GSM_WCDMA, + NULL); + } else if (ctx->step < 8) { + qmi_message_wms_list_messages_input_set_message_tag (input, + QMI_WMS_MESSAGE_TAG_TYPE_MO_NOT_SENT, + NULL); + if (ctx->step < 7) + qmi_message_wms_list_messages_input_set_message_mode (input, + QMI_WMS_MESSAGE_MODE_GSM_WCDMA, + NULL); + } + + qmi_client_wms_list_messages (QMI_CLIENT_WMS (ctx->client), + input, + 5, + NULL, + (GAsyncReadyCallback)wms_list_messages_ready, + ctx); + qmi_message_wms_list_messages_input_unref (input); +} + +static void load_initial_sms_parts (MMIfaceModemMessaging *self, MMSmsStorage storage, GAsyncReadyCallback callback, @@ -6189,7 +6260,6 @@ load_initial_sms_parts (MMIfaceModemMessaging *self, { LoadInitialSmsPartsContext *ctx; QmiClient *client = NULL; - QmiMessageWmsListMessagesInput *input; if (!ensure_qmi_client (MM_BROADBAND_MODEM_QMI (self), QMI_SERVICE_WMS, &client, @@ -6204,27 +6274,9 @@ load_initial_sms_parts (MMIfaceModemMessaging *self, callback, user_data, load_initial_sms_parts); + ctx->step = 0; - mm_dbg ("loading messages from storage '%s'...", - mm_sms_storage_get_string (storage)); - - /* Request to list messages in a given storage */ - input = qmi_message_wms_list_messages_input_new (); - qmi_message_wms_list_messages_input_set_storage_type ( - input, - mm_sms_storage_to_qmi_storage_type (storage), - NULL); - qmi_message_wms_list_messages_input_set_message_mode ( - input, - QMI_WMS_MESSAGE_MODE_GSM_WCDMA, - NULL); - qmi_client_wms_list_messages (QMI_CLIENT_WMS (ctx->client), - input, - 5, - NULL, - (GAsyncReadyCallback)wms_list_messages_ready, - ctx); - qmi_message_wms_list_messages_input_unref (input); + step (ctx); } /*****************************************************************************/ |