diff options
Diffstat (limited to 'src/mm-sim.c')
-rw-r--r-- | src/mm-sim.c | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/src/mm-sim.c b/src/mm-sim.c index 129584e9..b7624854 100644 --- a/src/mm-sim.c +++ b/src/mm-sim.c @@ -32,6 +32,7 @@ #include "mm-utils.h" #include "mm-log.h" #include "mm-modem-helpers.h" +#include "mm-marshal.h" static void async_initable_iface_init (GAsyncInitableIface *iface); @@ -47,6 +48,11 @@ enum { PROP_LAST }; +enum { + SIGNAL_PIN_LOCK_ENABLED, + SIGNAL_LAST +}; + static GParamSpec *properties[PROP_LAST]; struct _MMSimPrivate { @@ -58,6 +64,8 @@ struct _MMSimPrivate { gchar *path; }; +static guint signals[SIGNAL_LAST] = { 0 }; + /*****************************************************************************/ void @@ -310,9 +318,13 @@ handle_enable_pin_ready (MMSim *self, MM_SIM_GET_CLASS (self)->enable_pin_finish (self, res, &error); if (error) g_dbus_method_invocation_take_error (ctx->invocation, error); - else + else { mm_gdbus_sim_complete_enable_pin (MM_GDBUS_SIM (self), ctx->invocation); + /* Signal about the new lock state */ + g_signal_emit (self, signals[SIGNAL_PIN_LOCK_ENABLED], 0, ctx->enabled); + } + handle_enable_pin_context_free (ctx); } @@ -1778,4 +1790,14 @@ mm_sim_class_init (MMSimClass *klass) MM_TYPE_BASE_MODEM, G_PARAM_READWRITE); g_object_class_install_property (object_class, PROP_MODEM, properties[PROP_MODEM]); + + /* Signals */ + signals[SIGNAL_PIN_LOCK_ENABLED] = + g_signal_new (MM_SIM_PIN_LOCK_ENABLED, + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_FIRST, + G_STRUCT_OFFSET (MMSimClass, pin_lock_enabled), + NULL, NULL, + mm_marshal_VOID__BOOLEAN, + G_TYPE_NONE, 1, G_TYPE_BOOLEAN); } |