diff options
Diffstat (limited to 'src/mm-modem-base.c')
-rw-r--r-- | src/mm-modem-base.c | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/src/mm-modem-base.c b/src/mm-modem-base.c index 875ea6c4..ba4339b9 100644 --- a/src/mm-modem-base.c +++ b/src/mm-modem-base.c @@ -42,6 +42,7 @@ typedef struct { char *driver; char *plugin; char *device; + char *equipment_identity; char *unlock_required; guint32 unlock_retries; guint32 ip_method; @@ -193,6 +194,47 @@ mm_modem_base_get_valid (MMModemBase *self) } const char * +mm_modem_base_get_equipment_identity (MMModemBase *self) +{ + g_return_val_if_fail (self != NULL, NULL); + g_return_val_if_fail (MM_IS_MODEM_BASE (self), NULL); + + return MM_MODEM_BASE_GET_PRIVATE (self)->equipment_identity; +} + +void +mm_modem_base_set_equipment_identity (MMModemBase *self, const char *equipment_identity) +{ + MMModemBasePrivate *priv; + const char *dbus_path; + + g_return_if_fail (self != NULL); + g_return_if_fail (MM_IS_MODEM_BASE (self)); + + priv = MM_MODEM_BASE_GET_PRIVATE (self); + + /* Only do something if the value changes */ + if ( (priv->equipment_identity == equipment_identity) + || ( priv->equipment_identity + && equipment_identity + && !strcmp (priv->equipment_identity, equipment_identity))) + return; + + g_free (priv->equipment_identity); + priv->equipment_identity = g_strdup (equipment_identity); + + dbus_path = (const char *) g_object_get_data (G_OBJECT (self), DBUS_PATH_TAG); + if (dbus_path) { + if (priv->equipment_identity) + g_message ("Modem %s: EquipmentIdentity set (%s)", dbus_path, priv->equipment_identity); + else + g_message ("Modem %s: EquipmentIdentity not set", dbus_path); + } + + g_object_notify (G_OBJECT (self), MM_MODEM_EQUIPMENT_IDENTITY); +} + +const char * mm_modem_base_get_unlock_required (MMModemBase *self) { g_return_val_if_fail (self != NULL, NULL); @@ -524,6 +566,9 @@ mm_modem_base_init (MMModemBase *self) MM_MODEM_ENABLED, MM_MODEM_DBUS_INTERFACE); mm_properties_changed_signal_register_property (G_OBJECT (self), + MM_MODEM_EQUIPMENT_IDENTITY, + MM_MODEM_DBUS_INTERFACE); + mm_properties_changed_signal_register_property (G_OBJECT (self), MM_MODEM_UNLOCK_REQUIRED, MM_MODEM_DBUS_INTERFACE); mm_properties_changed_signal_register_property (G_OBJECT (self), @@ -577,6 +622,7 @@ set_property (GObject *object, guint prop_id, case MM_MODEM_PROP_VALID: case MM_MODEM_PROP_TYPE: case MM_MODEM_PROP_ENABLED: + case MM_MODEM_PROP_EQUIPMENT_IDENTITY: case MM_MODEM_PROP_UNLOCK_REQUIRED: case MM_MODEM_PROP_UNLOCK_RETRIES: break; @@ -620,6 +666,9 @@ get_property (GObject *object, guint prop_id, case MM_MODEM_PROP_ENABLED: g_value_set_boolean (value, is_enabled (priv->state)); break; + case MM_MODEM_PROP_EQUIPMENT_IDENTITY: + g_value_set_string (value, priv->equipment_identity); + break; case MM_MODEM_PROP_UNLOCK_REQUIRED: g_value_set_string (value, priv->unlock_required); break; @@ -644,6 +693,7 @@ finalize (GObject *object) g_free (priv->driver); g_free (priv->plugin); g_free (priv->device); + g_free (priv->equipment_identity); g_free (priv->unlock_required); G_OBJECT_CLASS (mm_modem_base_parent_class)->finalize (object); @@ -698,6 +748,10 @@ mm_modem_base_class_init (MMModemBaseClass *klass) MM_MODEM_ENABLED); g_object_class_override_property (object_class, + MM_MODEM_PROP_EQUIPMENT_IDENTITY, + MM_MODEM_EQUIPMENT_IDENTITY); + + g_object_class_override_property (object_class, MM_MODEM_PROP_UNLOCK_REQUIRED, MM_MODEM_UNLOCK_REQUIRED); |