From 6f1f7e74800faa0f06d2d3c7af3622aa87133341 Mon Sep 17 00:00:00 2001 From: Aleksander Morgado Date: Fri, 17 May 2013 15:20:02 +0200 Subject: fixup! HACK HACK HACK --- src/mm-broadband-modem-qmi.c | 130 +++++++++++++++++++++++++------------------ 1 file changed, 75 insertions(+), 55 deletions(-) diff --git a/src/mm-broadband-modem-qmi.c b/src/mm-broadband-modem-qmi.c index 706217dff..338cb7b86 100644 --- a/src/mm-broadband-modem-qmi.c +++ b/src/mm-broadband-modem-qmi.c @@ -5975,14 +5975,26 @@ messaging_set_default_storage (MMIfaceModemMessaging *self, /*****************************************************************************/ /* Load initial SMS parts */ +typedef enum { + LOAD_INITIAL_SMS_PARTS_STEP_FIRST, + LOAD_INITIAL_SMS_PARTS_STEP_LIST_ALL, + LOAD_INITIAL_SMS_PARTS_STEP_LIST_MT_READ, + LOAD_INITIAL_SMS_PARTS_STEP_LIST_MT_NOT_READ, + LOAD_INITIAL_SMS_PARTS_STEP_LIST_MO_SENT, + LOAD_INITIAL_SMS_PARTS_STEP_LIST_MO_NOT_SENT, + LOAD_INITIAL_SMS_PARTS_STEP_LAST +} LoadInitialSmsPartsStep; + typedef struct { MMBroadbandModemQmi *self; GSimpleAsyncResult *result; QmiClientWms *client; MMSmsStorage storage; + LoadInitialSmsPartsStep step; + + /* For each step */ GArray *message_array; guint i; - guint step; } LoadInitialSmsPartsContext; static void @@ -6105,6 +6117,8 @@ wms_raw_read_ready (QmiClientWms *client, read_next_sms_part (ctx); } +static void load_initial_sms_parts_step (LoadInitialSmsPartsContext *ctx); + static void read_next_sms_part (LoadInitialSmsPartsContext *ctx) { @@ -6113,8 +6127,12 @@ read_next_sms_part (LoadInitialSmsPartsContext *ctx) if (ctx->i >= ctx->message_array->len || !ctx->message_array) { - g_simple_async_result_set_op_res_gboolean (ctx->result, TRUE); - load_initial_sms_parts_context_complete_and_free (ctx); + /* If we just listed all SMS, we're done. Otherwise go to next tag. */ + if (ctx->step == LOAD_INITIAL_SMS_PARTS_STEP_LIST_ALL) + ctx->step = LOAD_INITIAL_SMS_PARTS_STEP_LAST; + else + ctx->step++; + load_initial_sms_parts_step (ctx); return; } @@ -6142,8 +6160,6 @@ 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, @@ -6162,12 +6178,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_warning ("%s", error->message); + /* Ignore error, keep on */ + g_debug ("Couldn't read SMS messages: %s", error->message); g_error_free (error); ctx->step++; - step (ctx); + load_initial_sms_parts_step (ctx); return; } @@ -6187,60 +6202,65 @@ wms_list_messages_ready (QmiClientWms *client, } static void -step (LoadInitialSmsPartsContext *ctx) +load_initial_sms_parts_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); + qmi_message_wms_list_messages_input_set_message_mode (input, + QMI_WMS_MESSAGE_MODE_GSM_WCDMA, + 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); + switch (ctx->step) { + case LOAD_INITIAL_SMS_PARTS_STEP_FIRST: + ctx->step++; + /* Fall down */ + case LOAD_INITIAL_SMS_PARTS_STEP_LIST_ALL: + mm_dbg ("loading all messages from storage '%s'...", + mm_sms_storage_get_string (ctx->storage)); + break; + case LOAD_INITIAL_SMS_PARTS_STEP_LIST_MT_READ: + mm_dbg ("loading MT-read messages from storage '%s'...", + mm_sms_storage_get_string (ctx->storage)); + qmi_message_wms_list_messages_input_set_message_tag ( + input, + QMI_WMS_MESSAGE_TAG_TYPE_MT_READ, + NULL); + break; + case LOAD_INITIAL_SMS_PARTS_STEP_LIST_MT_NOT_READ: + mm_dbg ("loading MT-not-read messages from storage '%s'...", + mm_sms_storage_get_string (ctx->storage)); + qmi_message_wms_list_messages_input_set_message_tag ( + input, + QMI_WMS_MESSAGE_TAG_TYPE_MT_NOT_READ, + NULL); + break; + case LOAD_INITIAL_SMS_PARTS_STEP_LIST_MO_SENT: + mm_dbg ("loading MO-sent messages from storage '%s'...", + mm_sms_storage_get_string (ctx->storage)); + qmi_message_wms_list_messages_input_set_message_tag ( + input, + QMI_WMS_MESSAGE_TAG_TYPE_MO_SENT, + NULL); + break; + case LOAD_INITIAL_SMS_PARTS_STEP_LIST_MO_NOT_SENT: + mm_dbg ("loading MO-not-sent messages from storage '%s'...", + mm_sms_storage_get_string (ctx->storage)); + qmi_message_wms_list_messages_input_set_message_tag ( + input, + QMI_WMS_MESSAGE_TAG_TYPE_MO_NOT_SENT, + NULL); + break; + case LOAD_INITIAL_SMS_PARTS_STEP_LAST: + /* All steps done */ + g_simple_async_result_set_op_res_gboolean (ctx->result, TRUE); + load_initial_sms_parts_context_complete_and_free (ctx); + return; } qmi_client_wms_list_messages (QMI_CLIENT_WMS (ctx->client), @@ -6274,9 +6294,9 @@ load_initial_sms_parts (MMIfaceModemMessaging *self, callback, user_data, load_initial_sms_parts); - ctx->step = 0; + ctx->step = LOAD_INITIAL_SMS_PARTS_STEP_FIRST; - step (ctx); + load_initial_sms_parts_step (ctx); } /*****************************************************************************/ -- cgit v1.2.1