diff options
author | Dan Williams <dcbw@redhat.com> | 2012-07-16 16:59:31 -0500 |
---|---|---|
committer | Dan Williams <dcbw@redhat.com> | 2012-07-16 17:09:01 -0500 |
commit | 3270ecf647576ab7aad9127af03ad460a07f1b4f (patch) | |
tree | cfe6d0d07740c78fdd23d362ccfcee0a3923012b | |
parent | cae86b0190496d37e89e8b39f6d24a93c5f6911b (diff) |
gsm: emit usable reason code when disconnecting due to roaming
Tell clients that the reason we're disconnecting isn't some random
hiccup, but that roaming isn't allowed and we're now roaming, and
thus the modem is getting disconnected.
-rw-r--r-- | introspection/org.freedesktop.ModemManager.Modem.xml | 6 | ||||
-rw-r--r-- | plugins/mm-modem-icera.c | 2 | ||||
-rw-r--r-- | src/mm-generic-cdma.c | 3 | ||||
-rw-r--r-- | src/mm-generic-gsm.c | 5 | ||||
-rw-r--r-- | src/mm-modem.c | 7 | ||||
-rw-r--r-- | src/mm-modem.h | 2 |
6 files changed, 18 insertions, 7 deletions
diff --git a/introspection/org.freedesktop.ModemManager.Modem.xml b/introspection/org.freedesktop.ModemManager.Modem.xml index 7da014f0..e246881f 100644 --- a/introspection/org.freedesktop.ModemManager.Modem.xml +++ b/introspection/org.freedesktop.ModemManager.Modem.xml @@ -313,6 +313,12 @@ State change was caused by a system suspend. </tp:docstring> </tp:enumvalue> + <tp:enumvalue suffix="ROAMING_NOT_ALLOWED" value="3"> + <tp:docstring> + State change was caused because the modem is roaming and roaming + is not allowed. + </tp:docstring> + </tp:enumvalue> </tp:enum> </interface> diff --git a/plugins/mm-modem-icera.c b/plugins/mm-modem-icera.c index 915447ef..3cdf0452 100644 --- a/plugins/mm-modem-icera.c +++ b/plugins/mm-modem-icera.c @@ -434,7 +434,7 @@ connection_enabled (MMAtSerialPort *port, case 0: /* Disconnected */ if (mm_modem_get_state (MM_MODEM (self)) >= MM_MODEM_STATE_CONNECTED) - mm_modem_disconnect (MM_MODEM (self), icera_disconnect_done, NULL); + mm_modem_disconnect (MM_MODEM (self), MM_MODEM_STATE_REASON_NONE, icera_disconnect_done, NULL); break; case 1: /* Connected */ diff --git a/src/mm-generic-cdma.c b/src/mm-generic-cdma.c index a72232f1..7b83cf9a 100644 --- a/src/mm-generic-cdma.c +++ b/src/mm-generic-cdma.c @@ -928,6 +928,7 @@ disconnect_flash_done (MMSerialPort *port, static void disconnect (MMModem *modem, + MMModemStateReason reason, MMModemFn callback, gpointer user_data) { @@ -947,7 +948,7 @@ disconnect (MMModem *modem, GUINT_TO_POINTER (state), NULL); - mm_modem_set_state (modem, MM_MODEM_STATE_DISCONNECTING, MM_MODEM_STATE_REASON_NONE); + mm_modem_set_state (modem, MM_MODEM_STATE_DISCONNECTING, reason); dial_port = priv->primary; if (MM_IS_AT_SERIAL_PORT (priv->data)) diff --git a/src/mm-generic-gsm.c b/src/mm-generic-gsm.c index cab7b78e..9c1f780f 100644 --- a/src/mm-generic-gsm.c +++ b/src/mm-generic-gsm.c @@ -3204,7 +3204,7 @@ mm_generic_gsm_set_reg_status (MMGenericGsm *self, if ( (status == MM_MODEM_GSM_NETWORK_REG_STATUS_ROAMING) && (mm_modem_get_state (MM_MODEM (self)) == MM_MODEM_STATE_CONNECTED) && (priv->roam_allowed == FALSE)) { - mm_modem_disconnect (MM_MODEM (self), roam_disconnect_done, NULL); + mm_modem_disconnect (MM_MODEM (self), MM_MODEM_STATE_REASON_ROAMING_NOT_ALLOWED, roam_disconnect_done, NULL); } else { /* Grab the new operator name and MCC/MNC */ if (port) { @@ -4026,6 +4026,7 @@ real_do_disconnect (MMGenericGsm *self, static void disconnect (MMModem *modem, + MMModemStateReason reason, MMModemFn callback, gpointer user_data) { @@ -4045,7 +4046,7 @@ disconnect (MMModem *modem, GUINT_TO_POINTER (state), NULL); - mm_modem_set_state (modem, MM_MODEM_STATE_DISCONNECTING, MM_MODEM_STATE_REASON_NONE); + mm_modem_set_state (modem, MM_MODEM_STATE_DISCONNECTING, reason); g_assert (MM_GENERIC_GSM_GET_CLASS (self)->do_disconnect); MM_GENERIC_GSM_GET_CLASS (self)->do_disconnect (self, priv->cid, disconnect_done, info); diff --git a/src/mm-modem.c b/src/mm-modem.c index 012e3203..a7b43e59 100644 --- a/src/mm-modem.c +++ b/src/mm-modem.c @@ -184,7 +184,7 @@ mm_modem_disable (MMModem *self, cb_data = g_malloc0 (sizeof (DisableDisconnectInfo)); cb_data->callback = callback; cb_data->user_data = user_data; - mm_modem_disconnect (self, disable_disconnect_done, cb_data); + mm_modem_disconnect (self, MM_MODEM_STATE_REASON_NONE, disable_disconnect_done, cb_data); } else finish_disable (self, callback, user_data); } @@ -339,6 +339,7 @@ impl_modem_get_ip4_config (MMModem *modem, void mm_modem_disconnect (MMModem *self, + MMModemStateReason reason, MMModemFn callback, gpointer user_data) { @@ -366,7 +367,7 @@ mm_modem_disconnect (MMModem *self, } if (MM_MODEM_GET_INTERFACE (self)->disconnect) - MM_MODEM_GET_INTERFACE (self)->disconnect (self, callback, user_data); + MM_MODEM_GET_INTERFACE (self)->disconnect (self, reason, callback, user_data); else async_op_not_supported (self, callback, user_data); } @@ -375,7 +376,7 @@ static void impl_modem_disconnect (MMModem *modem, DBusGMethodInvocation *context) { - mm_modem_disconnect (modem, async_call_done, context); + mm_modem_disconnect (modem, MM_MODEM_STATE_REASON_USER_REQUESTED, async_call_done, context); } static void diff --git a/src/mm-modem.h b/src/mm-modem.h index c4200645..3c60c633 100644 --- a/src/mm-modem.h +++ b/src/mm-modem.h @@ -158,6 +158,7 @@ struct _MMModem { gpointer user_data); void (*disconnect) (MMModem *self, + MMModemStateReason reason, MMModemFn callback, gpointer user_data); @@ -245,6 +246,7 @@ void mm_modem_get_ip4_config (MMModem *self, gpointer user_data); void mm_modem_disconnect (MMModem *self, + MMModemStateReason reason, MMModemFn callback, gpointer user_data); |