diff options
Diffstat (limited to 'src/mm-modem-base.c')
-rw-r--r-- | src/mm-modem-base.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/mm-modem-base.c b/src/mm-modem-base.c index 1df965f8..d50d7517 100644 --- a/src/mm-modem-base.c +++ b/src/mm-modem-base.c @@ -40,6 +40,7 @@ typedef struct { char *device; guint32 ip_method; gboolean valid; + MMModemState state; GHashTable *ports; } MMModemBasePrivate; @@ -147,6 +148,14 @@ mm_modem_base_set_valid (MMModemBase *self, gboolean new_valid) if (priv->valid != new_valid) { priv->valid = new_valid; + + /* Modem starts off in disabled state, and jumps to disabled when + * it's no longer valid. + */ + mm_modem_set_state (MM_MODEM (self), + MM_MODEM_STATE_DISABLED, + MM_MODEM_STATE_REASON_NONE); + g_object_notify (G_OBJECT (self), MM_MODEM_VALID); } } @@ -181,6 +190,9 @@ set_property (GObject *object, guint prop_id, MMModemBasePrivate *priv = MM_MODEM_BASE_GET_PRIVATE (object); switch (prop_id) { + case MM_MODEM_PROP_STATE: + priv->state = g_value_get_uint (value); + break; case MM_MODEM_PROP_DRIVER: /* Construct only */ priv->driver = g_value_dup_string (value); @@ -212,6 +224,9 @@ get_property (GObject *object, guint prop_id, MMModemBasePrivate *priv = MM_MODEM_BASE_GET_PRIVATE (object); switch (prop_id) { + case MM_MODEM_PROP_STATE: + g_value_set_uint (value, priv->state); + break; case MM_MODEM_PROP_MASTER_DEVICE: g_value_set_string (value, priv->device); break; @@ -266,6 +281,10 @@ mm_modem_base_class_init (MMModemBaseClass *klass) object_class->finalize = finalize; g_object_class_override_property (object_class, + MM_MODEM_PROP_STATE, + MM_MODEM_STATE); + + g_object_class_override_property (object_class, MM_MODEM_PROP_MASTER_DEVICE, MM_MODEM_MASTER_DEVICE); |