From 23dd4d7e8227b2b1bd11eaee47aa3214c9ef688c Mon Sep 17 00:00:00 2001 From: Aleksander Morgado Date: Tue, 22 Nov 2011 18:47:00 +0100 Subject: sim: allow re-launching initialization It may happen that we cannot load property values when the SIM is locked, so we need to enable re-launching initialization in the object API. --- src/mm-sim.c | 53 +++++++++++++++++++++++++++++++++++++++++------------ src/mm-sim.h | 7 +++++++ 2 files changed, 48 insertions(+), 12 deletions(-) (limited to 'src') diff --git a/src/mm-sim.c b/src/mm-sim.c index 782438d0..ebd3c68e 100644 --- a/src/mm-sim.c +++ b/src/mm-sim.c @@ -746,28 +746,22 @@ interface_initialization_step (InitAsyncContext *ctx) interface_initialization_step (ctx); } - static void -initable_init_async (GAsyncInitable *initable, - int io_priority, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data) +common_init_async (GAsyncInitable *initable, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data) + { InitAsyncContext *ctx; GError *error = NULL; - mm_gdbus_sim_set_sim_identifier (MM_GDBUS_SIM (initable), NULL); - mm_gdbus_sim_set_imsi (MM_GDBUS_SIM (initable), NULL); - mm_gdbus_sim_set_operator_identifier (MM_GDBUS_SIM (initable), NULL); - mm_gdbus_sim_set_operator_name (MM_GDBUS_SIM (initable), NULL); - ctx = g_new (InitAsyncContext, 1); ctx->self = g_object_ref (initable); ctx->result = g_simple_async_result_new (G_OBJECT (initable), callback, user_data, - initable_init_async); + common_init_async); ctx->cancellable = (cancellable ? g_object_ref (cancellable) : NULL); @@ -785,6 +779,21 @@ initable_init_async (GAsyncInitable *initable, interface_initialization_step (ctx); } +static void +initable_init_async (GAsyncInitable *initable, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data) +{ + mm_gdbus_sim_set_sim_identifier (MM_GDBUS_SIM (initable), NULL); + mm_gdbus_sim_set_imsi (MM_GDBUS_SIM (initable), NULL); + mm_gdbus_sim_set_operator_identifier (MM_GDBUS_SIM (initable), NULL); + mm_gdbus_sim_set_operator_name (MM_GDBUS_SIM (initable), NULL); + + common_init_async (initable, cancellable, callback, user_data); +} + void mm_sim_new (MMBaseModem *modem, GCancellable *cancellable, @@ -807,6 +816,26 @@ mm_sim_new (MMBaseModem *modem, g_free (path); } +gboolean +mm_sim_initialize_finish (MMSim *self, + GAsyncResult *result, + GError **error) +{ + return initable_init_finish (G_ASYNC_INITABLE (self), result, error); +} + +void +mm_sim_initialize (MMSim *self, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data) +{ + common_init_async (G_ASYNC_INITABLE (self), + cancellable, + callback, + user_data); +} + static void set_property (GObject *object, guint prop_id, diff --git a/src/mm-sim.h b/src/mm-sim.h index 5a3c0712..34181c15 100644 --- a/src/mm-sim.h +++ b/src/mm-sim.h @@ -58,6 +58,13 @@ MMSim *mm_sim_new_finish (GAsyncInitable *initable, GAsyncResult *res, GError **error); +void mm_sim_initialize (MMSim *self, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +gboolean mm_sim_initialize_finish (MMSim *self, + GAsyncResult *result, + GError **error); #endif /* MM_SIM_H */ -- cgit v1.2.3-70-g09d2