diff options
author | Aleksander Morgado <aleksander@lanedo.com> | 2012-03-06 11:45:02 +0100 |
---|---|---|
committer | Aleksander Morgado <aleksander@lanedo.com> | 2012-03-16 14:53:21 +0100 |
commit | 2dcff5590e22d47de41b4bf1beb1d6666286bee7 (patch) | |
tree | af68a767e56d33f245e80cd451070bf9e65fae91 | |
parent | 238e2a5341f2825bedbdb2c0e70e3dcdeaae5f62 (diff) |
iface-modem: setup loading of own numbers during the initialization phase
-rw-r--r-- | src/mm-iface-modem.c | 42 | ||||
-rw-r--r-- | src/mm-iface-modem.h | 8 |
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, |