aboutsummaryrefslogtreecommitdiff
path: root/src/mm-modem-base.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mm-modem-base.c')
-rw-r--r--src/mm-modem-base.c19
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);