aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@lanedo.com>2012-09-10 13:53:22 +0200
committerAleksander Morgado <aleksander@lanedo.com>2012-09-14 07:05:22 +0200
commita5650ca091140def2070f0b631e398047313d5ba (patch)
tree8767eba4a9d6eec60093d9421ad46993611eb057 /src
parent4f9817741ff6284c895a90ff15cab3ab056ac21b (diff)
broadband-modem: lock/unlock the 'mem1' storage when reading initial SMS lists
Diffstat (limited to 'src')
-rw-r--r--src/mm-broadband-modem.c42
-rw-r--r--src/mm-broadband-modem.h2
2 files changed, 24 insertions, 20 deletions
diff --git a/src/mm-broadband-modem.c b/src/mm-broadband-modem.c
index c9a2bd58..90ce1529 100644
--- a/src/mm-broadband-modem.c
+++ b/src/mm-broadband-modem.c
@@ -4219,11 +4219,11 @@ lock_storages_cpms_set_ready (MMBaseModem *self,
}
void
-mm_broadband_modem_lock_storages (MMBroadbandModem *self,
- MMSmsStorage mem1, /* reading/listing/deleting */
- MMSmsStorage mem2, /* storing/sending */
- GAsyncReadyCallback callback,
- gpointer user_data)
+mm_broadband_modem_lock_sms_storages (MMBroadbandModem *self,
+ MMSmsStorage mem1, /* reading/listing/deleting */
+ MMSmsStorage mem2, /* storing/sending */
+ GAsyncReadyCallback callback,
+ gpointer user_data)
{
LockSmsStoragesContext *ctx;
gchar *cmd;
@@ -4256,6 +4256,9 @@ mm_broadband_modem_lock_storages (MMBroadbandModem *self,
user_data,
mm_broadband_modem_lock_sms_storages);
+ ctx->previous_mem1 = self->priv->current_sms_mem1_storage;
+ ctx->previous_mem2 = self->priv->current_sms_mem2_storage;
+
if (mem1 != MM_SMS_STORAGE_UNKNOWN)
self->priv->current_sms_mem1_storage = mem1;
if (mem2 != MM_SMS_STORAGE_UNKNOWN)
@@ -4891,6 +4894,9 @@ sms_pdu_part_list_ready (MMBroadbandModem *self,
const gchar *response;
GError *error = NULL;
+ /* Always always always unlock. Warned you've been. */
+ mm_broadband_modem_unlock_sms_storages (self);
+
response = mm_base_modem_at_command_finish (MM_BASE_MODEM (self), res, &error);
if (error) {
g_simple_async_result_take_error (ctx->result, error);
@@ -4944,22 +4950,21 @@ sms_pdu_part_list_ready (MMBroadbandModem *self,
}
static void
-list_parts_storage_ready (MMBroadbandModem *self,
- GAsyncResult *res,
- ListPartsContext *ctx)
+list_parts_lock_storages_ready (MMBroadbandModem *self,
+ GAsyncResult *res,
+ ListPartsContext *ctx)
{
GError *error = NULL;
- if (!mm_iface_modem_messaging_set_preferred_storages_finish (
- MM_IFACE_MODEM_MESSAGING (self),
- res,
- &error)) {
+ if (!mm_broadband_modem_lock_sms_storages_finish (self, res, &error)) {
+ /* TODO: we should either make this lock() never fail, by automatically
+ * retrying after some time, or otherwise retry here. */
g_simple_async_result_take_error (ctx->result, error);
list_parts_context_complete_and_free (ctx);
return;
}
- /* Storage now set */
+ /* Storage now set and locked */
/* Get SMS parts from ALL types.
* Different command to be used if we are on Text or PDU mode */
@@ -4995,12 +5000,11 @@ modem_messaging_load_initial_sms_parts (MMIfaceModemMessaging *self,
mm_sms_storage_get_string (storage));
/* First, request to set the proper storage to read from */
- mm_iface_modem_messaging_set_preferred_storages (self,
- storage,
- MM_SMS_STORAGE_UNKNOWN,
- MM_SMS_STORAGE_UNKNOWN,
- (GAsyncReadyCallback)list_parts_storage_ready,
- ctx);
+ mm_broadband_modem_lock_sms_storages (ctx->self,
+ storage,
+ MM_SMS_STORAGE_UNKNOWN,
+ (GAsyncReadyCallback)list_parts_lock_storages_ready,
+ ctx);
}
/*****************************************************************************/
diff --git a/src/mm-broadband-modem.h b/src/mm-broadband-modem.h
index db987c6e..0c90e1cf 100644
--- a/src/mm-broadband-modem.h
+++ b/src/mm-broadband-modem.h
@@ -100,7 +100,7 @@ gchar *mm_broadband_modem_create_device_identifier (MMBroadbandModem *self,
const gchar *ati1);
/* Locking/unlocking SMS storages */
-void mm_broadband_modem_lock_storages (MMBroadbandModem *self,
+void mm_broadband_modem_lock_sms_storages (MMBroadbandModem *self,
MMSmsStorage mem1, /* reading/listing/deleting */
MMSmsStorage mem2, /* storing/sending */
GAsyncReadyCallback callback,