aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@lanedo.com>2012-03-06 11:45:02 +0100
committerAleksander Morgado <aleksander@lanedo.com>2012-03-16 14:53:21 +0100
commit2dcff5590e22d47de41b4bf1beb1d6666286bee7 (patch)
treeaf68a767e56d33f245e80cd451070bf9e65fae91
parent238e2a5341f2825bedbdb2c0e70e3dcdeaae5f62 (diff)
iface-modem: setup loading of own numbers during the initialization phase
-rw-r--r--src/mm-iface-modem.c42
-rw-r--r--src/mm-iface-modem.h8
2 files changed, 50 insertions, 0 deletions
diff --git a/src/mm-iface-modem.c b/src/mm-iface-modem.c
index 32d1ce44..32f66a7a 100644
--- a/src/mm-iface-modem.c
+++ b/src/mm-iface-modem.c
@@ -2946,6 +2946,7 @@ typedef enum {
INITIALIZATION_STEP_REVISION,
INITIALIZATION_STEP_EQUIPMENT_ID,
INITIALIZATION_STEP_DEVICE_ID,
+ INITIALIZATION_STEP_OWN_NUMBERS,
INITIALIZATION_STEP_UNLOCK_REQUIRED,
INITIALIZATION_STEP_UNLOCK_RETRIES,
INITIALIZATION_STEP_SIM,
@@ -3071,6 +3072,30 @@ STR_REPLY_READY_FN (equipment_identifier, "Equipment Identifier")
STR_REPLY_READY_FN (device_identifier, "Device Identifier")
static void
+load_own_numbers_ready (MMIfaceModem *self,
+ GAsyncResult *res,
+ InitializationContext *ctx)
+{
+ GError *error = NULL;
+ GStrv str_list;
+
+ str_list = MM_IFACE_MODEM_GET_INTERFACE (self)->load_own_numbers_finish (self, res, &error);
+ if (error) {
+ mm_warn ("couldn't load list of Own Numbers: '%s'", error->message);
+ g_error_free (error);
+ }
+
+ if (str_list) {
+ mm_gdbus_modem_set_own_numbers (ctx->skeleton, (const gchar *const *) str_list);
+ g_strfreev (str_list);
+ }
+
+ /* Go on to next step */
+ ctx->step++;
+ interface_initialization_step (ctx);
+}
+
+static void
load_supported_modes_ready (MMIfaceModem *self,
GAsyncResult *res,
InitializationContext *ctx)
@@ -3402,6 +3427,22 @@ interface_initialization_step (InitializationContext *ctx)
/* Fall down to next step */
ctx->step++;
+ case INITIALIZATION_STEP_OWN_NUMBERS:
+ /* Own numbers is meant to be loaded only once during the whole
+ * lifetime of the modem. Therefore, if we already have them loaded,
+ * don't try to load them again. */
+ if (mm_gdbus_modem_get_own_numbers (ctx->skeleton) == NULL &&
+ MM_IFACE_MODEM_GET_INTERFACE (ctx->self)->load_own_numbers &&
+ MM_IFACE_MODEM_GET_INTERFACE (ctx->self)->load_own_numbers_finish) {
+ MM_IFACE_MODEM_GET_INTERFACE (ctx->self)->load_own_numbers (
+ ctx->self,
+ (GAsyncReadyCallback)load_own_numbers_ready,
+ ctx);
+ return;
+ }
+ /* Fall down to next step */
+ ctx->step++;
+
case INITIALIZATION_STEP_UNLOCK_REQUIRED:
/* Only check unlock required if we were previously not unlocked */
if (mm_gdbus_modem_get_unlock_required (ctx->skeleton) != MM_MODEM_LOCK_NONE) {
@@ -3583,6 +3624,7 @@ mm_iface_modem_initialize (MMIfaceModem *self,
mm_gdbus_modem_set_manufacturer (skeleton, NULL);
mm_gdbus_modem_set_model (skeleton, NULL);
mm_gdbus_modem_set_revision (skeleton, NULL);
+ mm_gdbus_modem_set_own_numbers (skeleton, NULL);
mm_gdbus_modem_set_device_identifier (skeleton, NULL);
mm_gdbus_modem_set_device (skeleton, NULL);
mm_gdbus_modem_set_driver (skeleton, NULL);
diff --git a/src/mm-iface-modem.h b/src/mm-iface-modem.h
index 32afffc1..fe4eeb03 100644
--- a/src/mm-iface-modem.h
+++ b/src/mm-iface-modem.h
@@ -98,6 +98,14 @@ struct _MMIfaceModem {
GAsyncResult *res,
GError **error);
+ /* Loading of the OwnNumbers property */
+ void (*load_own_numbers) (MMIfaceModem *self,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+ GStrv (*load_own_numbers_finish) (MMIfaceModem *self,
+ GAsyncResult *res,
+ GError **error);
+
/* Loading of the UnlockRequired property */
void (*load_unlock_required) (MMIfaceModem *self,
GAsyncReadyCallback callback,