diff options
author | Aleksander Morgado <aleksander@lanedo.com> | 2011-11-30 08:24:13 +0100 |
---|---|---|
committer | Aleksander Morgado <aleksander@lanedo.com> | 2012-03-15 14:14:30 +0100 |
commit | 3b2b0645bec963b2955c578eccfbc38bbd34672b (patch) | |
tree | 409ea7b8729631d8860de81296d8da6fd1b1f477 | |
parent | 12ea55286d53a9349491e483573bb2c123a4293d (diff) |
iface-modem-3gpp: report registration state change in the log
-rw-r--r-- | src/mm-iface-modem-3gpp.c | 78 |
1 files changed, 47 insertions, 31 deletions
diff --git a/src/mm-iface-modem-3gpp.c b/src/mm-iface-modem-3gpp.c index 58103989..71014444 100644 --- a/src/mm-iface-modem-3gpp.c +++ b/src/mm-iface-modem-3gpp.c @@ -264,42 +264,58 @@ void mm_iface_modem_3gpp_update_registration_state (MMIfaceModem3gpp *self, MMModem3gppRegistrationState new_state) { - MMModem3gppRegistrationState previous_state; + MMModem3gppRegistrationState old_state; /* Only set new state if different */ g_object_get (self, - MM_IFACE_MODEM_3GPP_REGISTRATION_STATE, &previous_state, - NULL); - if (new_state == previous_state) - return; - - g_object_set (self, - MM_IFACE_MODEM_3GPP_REGISTRATION_STATE, new_state, + MM_IFACE_MODEM_3GPP_REGISTRATION_STATE, &old_state, NULL); + if (new_state != old_state) { + GEnumClass *enum_class; + GEnumValue *new_value; + GEnumValue *old_value; + const gchar *dbus_path; + + enum_class = G_ENUM_CLASS (g_type_class_ref (MM_TYPE_MODEM_3GPP_REGISTRATION_STATE)); + new_value = g_enum_get_value (enum_class, new_state); + old_value = g_enum_get_value (enum_class, old_state); + dbus_path = g_dbus_object_get_object_path (G_DBUS_OBJECT (self)); + mm_info ("Modem %s: 3GPP Registration state changed (%s -> %s)", + dbus_path, + old_value->value_nick, + new_value->value_nick); + g_type_class_unref (enum_class); + + /* The property in the interface is bound to the property + * in the skeleton, so just updating here is enough */ + g_object_set (self, + MM_IFACE_MODEM_3GPP_REGISTRATION_STATE, new_state, + NULL); - /* TODO: - * While connected we don't want registration status changes to change - * the modem's state away from CONNECTED. - */ - switch (new_state) { - case MM_MODEM_3GPP_REGISTRATION_STATE_HOME: - case MM_MODEM_3GPP_REGISTRATION_STATE_ROAMING: - mm_iface_modem_update_state (MM_IFACE_MODEM (self), - MM_MODEM_STATE_REGISTERED, - MM_MODEM_STATE_REASON_NONE); - break; - case MM_MODEM_3GPP_REGISTRATION_STATE_SEARCHING: - mm_iface_modem_update_state (MM_IFACE_MODEM (self), - MM_MODEM_STATE_SEARCHING, - MM_MODEM_STATE_REASON_NONE); - break; - case MM_MODEM_3GPP_REGISTRATION_STATE_IDLE: - case MM_MODEM_3GPP_REGISTRATION_STATE_DENIED: - case MM_MODEM_3GPP_REGISTRATION_STATE_UNKNOWN: - mm_iface_modem_update_state (MM_IFACE_MODEM (self), - MM_MODEM_STATE_ENABLED, - MM_MODEM_STATE_REASON_NONE); - break; + /* TODO: + * While connected we don't want registration status changes to change + * the modem's state away from CONNECTED. + */ + switch (new_state) { + case MM_MODEM_3GPP_REGISTRATION_STATE_HOME: + case MM_MODEM_3GPP_REGISTRATION_STATE_ROAMING: + mm_iface_modem_update_state (MM_IFACE_MODEM (self), + MM_MODEM_STATE_REGISTERED, + MM_MODEM_STATE_REASON_NONE); + break; + case MM_MODEM_3GPP_REGISTRATION_STATE_SEARCHING: + mm_iface_modem_update_state (MM_IFACE_MODEM (self), + MM_MODEM_STATE_SEARCHING, + MM_MODEM_STATE_REASON_NONE); + break; + case MM_MODEM_3GPP_REGISTRATION_STATE_IDLE: + case MM_MODEM_3GPP_REGISTRATION_STATE_DENIED: + case MM_MODEM_3GPP_REGISTRATION_STATE_UNKNOWN: + mm_iface_modem_update_state (MM_IFACE_MODEM (self), + MM_MODEM_STATE_ENABLED, + MM_MODEM_STATE_REASON_NONE); + break; + } } } |