mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-02-07 00:30:32 +01:00
modem-manager: switch the state' property from NMModem' into just `connected'
We don't want to depend in the `NMModem' interface on an enumeration which is very specific to the old ModemManager interface, so we'll just skip exposing it and instead we'll just give a new boolean property which tells whether the modem is connected or not (which was at the end the whole purpose of the `state' property).
This commit is contained in:
parent
f98ef0fdc4
commit
24b6fc9e62
7 changed files with 53 additions and 53 deletions
|
|
@ -73,7 +73,7 @@ nm_modem_cdma_new (const char *path,
|
|||
NM_MODEM_PATH, path,
|
||||
NM_MODEM_IFACE, data_device,
|
||||
NM_MODEM_IP_METHOD, ip_method,
|
||||
NM_MODEM_STATE, state,
|
||||
NM_MODEM_CONNECTED, (state == NM_MODEM_STATE_CONNECTED),
|
||||
NULL);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -42,6 +42,8 @@ typedef struct {
|
|||
DBusGProxy *props_proxy;
|
||||
|
||||
DBusGProxyCall *call;
|
||||
|
||||
NMModemState state;
|
||||
} NMModemGenericPrivate;
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
@ -335,10 +337,16 @@ modem_properties_changed (DBusGProxy *proxy,
|
|||
value = g_hash_table_lookup (props, "State");
|
||||
if (value && G_VALUE_HOLDS_UINT (value)) {
|
||||
new_state = g_value_get_uint (value);
|
||||
if (new_state != nm_modem_get_state (NM_MODEM (self))) {
|
||||
g_object_set (self,
|
||||
NM_MODEM_STATE, new_state,
|
||||
NULL);
|
||||
if (new_state != priv->state) {
|
||||
if (new_state == NM_MODEM_STATE_CONNECTED)
|
||||
g_object_set (self,
|
||||
NM_MODEM_CONNECTED, TRUE,
|
||||
NULL);
|
||||
else if (priv->state == NM_MODEM_STATE_CONNECTED)
|
||||
g_object_set (self,
|
||||
NM_MODEM_CONNECTED, FALSE,
|
||||
NULL);
|
||||
priv->state = new_state;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -35,6 +35,21 @@ G_BEGIN_DECLS
|
|||
#define NM_IS_MODEM_GENERIC_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), NM_TYPE_MODEM_GENERIC))
|
||||
#define NM_MODEM_GENERIC_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_MODEM_GENERIC, NMModemGenericClass))
|
||||
|
||||
typedef enum {
|
||||
NM_MODEM_STATE_UNKNOWN = 0,
|
||||
NM_MODEM_STATE_DISABLED = 10,
|
||||
NM_MODEM_STATE_DISABLING = 20,
|
||||
NM_MODEM_STATE_ENABLING = 30,
|
||||
NM_MODEM_STATE_ENABLED = 40,
|
||||
NM_MODEM_STATE_SEARCHING = 50,
|
||||
NM_MODEM_STATE_REGISTERED = 60,
|
||||
NM_MODEM_STATE_DISCONNECTING = 70,
|
||||
NM_MODEM_STATE_CONNECTING = 80,
|
||||
NM_MODEM_STATE_CONNECTED = 90,
|
||||
|
||||
NM_MODEM_STATE_LAST = NM_MODEM_STATE_CONNECTED
|
||||
} NMModemState;
|
||||
|
||||
typedef struct {
|
||||
NMModem parent;
|
||||
} NMModemGeneric;
|
||||
|
|
|
|||
|
|
@ -115,7 +115,7 @@ nm_modem_gsm_new (const char *path,
|
|||
NM_MODEM_PATH, path,
|
||||
NM_MODEM_IFACE, data_device,
|
||||
NM_MODEM_IP_METHOD, ip_method,
|
||||
NM_MODEM_STATE, state,
|
||||
NM_MODEM_CONNECTED, (state == NM_MODEM_STATE_CONNECTED),
|
||||
NULL);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ enum {
|
|||
PROP_IP_METHOD,
|
||||
PROP_IP_TIMEOUT,
|
||||
PROP_ENABLED,
|
||||
PROP_STATE,
|
||||
PROP_CONNECTED,
|
||||
|
||||
LAST_PROP
|
||||
};
|
||||
|
|
@ -61,7 +61,7 @@ typedef struct {
|
|||
|
||||
gboolean mm_enabled;
|
||||
guint32 mm_ip_timeout;
|
||||
NMModemState state;
|
||||
gboolean mm_connected;
|
||||
|
||||
/* PPP stats */
|
||||
guint32 in_bytes;
|
||||
|
|
@ -102,14 +102,10 @@ nm_modem_set_mm_enabled (NMModem *self,
|
|||
NM_MODEM_GET_CLASS (self)->set_mm_enabled (self, enabled);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
NMModemState
|
||||
nm_modem_get_state (NMModem *self)
|
||||
gboolean
|
||||
nm_modem_get_mm_connected (NMModem *self)
|
||||
{
|
||||
g_return_val_if_fail (NM_IS_MODEM (self), NM_MODEM_STATE_UNKNOWN);
|
||||
|
||||
return NM_MODEM_GET_PRIVATE (self)->state;
|
||||
return NM_MODEM_GET_PRIVATE (self)->mm_connected;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
@ -693,8 +689,8 @@ get_property (GObject *object, guint prop_id,
|
|||
case PROP_ENABLED:
|
||||
g_value_set_boolean (value, priv->mm_enabled);
|
||||
break;
|
||||
case PROP_STATE:
|
||||
g_value_set_boolean (value, priv->state);
|
||||
case PROP_CONNECTED:
|
||||
g_value_set_boolean (value, priv->mm_connected);
|
||||
break;
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||
|
|
@ -718,7 +714,6 @@ set_property (GObject *object, guint prop_id,
|
|||
priv->iface = g_value_dup_string (value);
|
||||
break;
|
||||
case PROP_IP_METHOD:
|
||||
/* Construct only */
|
||||
priv->ip_method = g_value_get_uint (value);
|
||||
break;
|
||||
case PROP_IP_TIMEOUT:
|
||||
|
|
@ -727,8 +722,8 @@ set_property (GObject *object, guint prop_id,
|
|||
case PROP_ENABLED:
|
||||
priv->mm_enabled = g_value_get_boolean (value);
|
||||
break;
|
||||
case PROP_STATE:
|
||||
priv->state = g_value_get_uint (value);
|
||||
case PROP_CONNECTED:
|
||||
priv->mm_connected = g_value_get_boolean (value);
|
||||
break;
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||
|
|
@ -822,14 +817,12 @@ nm_modem_class_init (NMModemClass *klass)
|
|||
G_PARAM_READWRITE));
|
||||
|
||||
g_object_class_install_property
|
||||
(object_class, PROP_STATE,
|
||||
g_param_spec_uint (NM_MODEM_STATE,
|
||||
"ModemManager modem state",
|
||||
"ModemManager modem state",
|
||||
NM_MODEM_STATE_UNKNOWN,
|
||||
NM_MODEM_STATE_LAST,
|
||||
NM_MODEM_STATE_UNKNOWN,
|
||||
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
|
||||
(object_class, PROP_CONNECTED,
|
||||
g_param_spec_boolean (NM_MODEM_CONNECTED,
|
||||
"Connected",
|
||||
"Connected",
|
||||
TRUE,
|
||||
G_PARAM_READWRITE));
|
||||
|
||||
/* Signals */
|
||||
|
||||
|
|
|
|||
|
|
@ -36,12 +36,12 @@ G_BEGIN_DECLS
|
|||
#define NM_IS_MODEM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), NM_TYPE_MODEM))
|
||||
#define NM_MODEM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_MODEM, NMModemClass))
|
||||
|
||||
#define NM_MODEM_PATH "path"
|
||||
#define NM_MODEM_IFACE "iface"
|
||||
#define NM_MODEM_IP_METHOD "ip-method"
|
||||
#define NM_MODEM_PATH "path"
|
||||
#define NM_MODEM_IFACE "iface"
|
||||
#define NM_MODEM_IP_METHOD "ip-method"
|
||||
#define NM_MODEM_IP_TIMEOUT "ip-timeout"
|
||||
#define NM_MODEM_ENABLED "enabled"
|
||||
#define NM_MODEM_STATE "state"
|
||||
#define NM_MODEM_ENABLED "enabled"
|
||||
#define NM_MODEM_CONNECTED "connected"
|
||||
|
||||
#define NM_MODEM_PPP_STATS "ppp-stats"
|
||||
#define NM_MODEM_PPP_FAILED "ppp-failed"
|
||||
|
|
@ -50,22 +50,6 @@ G_BEGIN_DECLS
|
|||
#define NM_MODEM_AUTH_REQUESTED "auth-requested"
|
||||
#define NM_MODEM_AUTH_RESULT "auth-result"
|
||||
|
||||
/* From ModemManager */
|
||||
typedef enum {
|
||||
NM_MODEM_STATE_UNKNOWN = 0,
|
||||
NM_MODEM_STATE_DISABLED = 10,
|
||||
NM_MODEM_STATE_DISABLING = 20,
|
||||
NM_MODEM_STATE_ENABLING = 30,
|
||||
NM_MODEM_STATE_ENABLED = 40,
|
||||
NM_MODEM_STATE_SEARCHING = 50,
|
||||
NM_MODEM_STATE_REGISTERED = 60,
|
||||
NM_MODEM_STATE_DISCONNECTING = 70,
|
||||
NM_MODEM_STATE_CONNECTING = 80,
|
||||
NM_MODEM_STATE_CONNECTED = 90,
|
||||
|
||||
NM_MODEM_STATE_LAST = NM_MODEM_STATE_CONNECTED
|
||||
} NMModemState;
|
||||
|
||||
#define MM_MODEM_IP_METHOD_PPP 0
|
||||
#define MM_MODEM_IP_METHOD_STATIC 1
|
||||
#define MM_MODEM_IP_METHOD_DHCP 2
|
||||
|
|
@ -180,7 +164,7 @@ gboolean nm_modem_get_mm_enabled (NMModem *self);
|
|||
|
||||
void nm_modem_set_mm_enabled (NMModem *self, gboolean enabled);
|
||||
|
||||
NMModemState nm_modem_get_state (NMModem *self);
|
||||
gboolean nm_modem_get_mm_connected (NMModem *self);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
|
|
|
|||
|
|
@ -167,13 +167,13 @@ modem_enabled_cb (NMModem *modem, GParamSpec *pspec, gpointer user_data)
|
|||
}
|
||||
|
||||
static void
|
||||
modem_state_cb (NMModem *modem, GParamSpec *pspec, gpointer user_data)
|
||||
modem_connected_cb (NMModem *modem, GParamSpec *pspec, gpointer user_data)
|
||||
{
|
||||
NMDeviceModem *self = NM_DEVICE_MODEM (user_data);
|
||||
NMDeviceModemPrivate *priv = NM_DEVICE_MODEM_GET_PRIVATE (self);
|
||||
|
||||
if ( nm_device_get_state (NM_DEVICE (self)) == NM_DEVICE_STATE_ACTIVATED
|
||||
&& nm_modem_get_state (priv->modem) != NM_MODEM_STATE_CONNECTED) {
|
||||
&& !nm_modem_get_mm_connected (priv->modem)) {
|
||||
/* Fail the device if the modem disconnects unexpectedly */
|
||||
nm_device_state_changed (NM_DEVICE (self), NM_DEVICE_STATE_FAILED, NM_DEVICE_STATE_REASON_MODEM_NO_CARRIER);
|
||||
}
|
||||
|
|
@ -390,7 +390,7 @@ set_modem (NMDeviceModem *self, NMModem *modem)
|
|||
g_signal_connect (modem, NM_MODEM_AUTH_REQUESTED, G_CALLBACK (modem_auth_requested), self);
|
||||
g_signal_connect (modem, NM_MODEM_AUTH_RESULT, G_CALLBACK (modem_auth_result), self);
|
||||
g_signal_connect (modem, "notify::" NM_MODEM_ENABLED, G_CALLBACK (modem_enabled_cb), self);
|
||||
g_signal_connect (modem, "notify::" NM_MODEM_STATE, G_CALLBACK (modem_state_cb), self);
|
||||
g_signal_connect (modem, "notify::" NM_MODEM_CONNECTED, G_CALLBACK (modem_connected_cb), self);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue