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.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/mm-modem-base.c b/src/mm-modem-base.c
index 1df965f8..a9386ff6 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;
@@ -148,6 +149,13 @@ mm_modem_base_set_valid (MMModemBase *self, gboolean new_valid)
if (priv->valid != new_valid) {
priv->valid = new_valid;
g_object_notify (G_OBJECT (self), MM_MODEM_VALID);
+
+ if (!new_valid) {
+ /* If no longer valid, modem must be disabled */
+ mm_modem_set_state (MM_MODEM (self),
+ MM_MODEM_STATE_DISABLED,
+ MM_MODEM_STATE_REASON_NONE);
+ }
}
}
@@ -181,6 +189,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 +223,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 +280,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);