aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@lanedo.com>2011-11-22 18:47:00 +0100
committerAleksander Morgado <aleksander@lanedo.com>2012-03-15 14:14:23 +0100
commit23dd4d7e8227b2b1bd11eaee47aa3214c9ef688c (patch)
tree40e9ef2d7c3072c2af22e736702ff44f318c838e
parentff0136ed04ca8b94de1de3b78bd63a22dd01e809 (diff)
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.
-rw-r--r--src/mm-sim.c53
-rw-r--r--src/mm-sim.h7
2 files changed, 48 insertions, 12 deletions
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 */