modem: fix WWAN hardware enable state tracking (rh #591622)
This commit is contained in:
@@ -46,6 +46,7 @@ enum {
|
|||||||
|
|
||||||
enum {
|
enum {
|
||||||
PPP_STATS,
|
PPP_STATS,
|
||||||
|
ENABLE_CHANGED,
|
||||||
LAST_SIGNAL
|
LAST_SIGNAL
|
||||||
};
|
};
|
||||||
static guint signals[LAST_SIGNAL] = { 0 };
|
static guint signals[LAST_SIGNAL] = { 0 };
|
||||||
@@ -158,6 +159,8 @@ modem_enabled_cb (NMModem *modem, GParamSpec *pspec, gpointer user_data)
|
|||||||
NMDeviceModemPrivate *priv = NM_DEVICE_MODEM_GET_PRIVATE (self);
|
NMDeviceModemPrivate *priv = NM_DEVICE_MODEM_GET_PRIVATE (self);
|
||||||
|
|
||||||
real_set_enabled (NM_DEVICE_INTERFACE (self), nm_modem_get_mm_enabled (priv->modem));
|
real_set_enabled (NM_DEVICE_INTERFACE (self), nm_modem_get_mm_enabled (priv->modem));
|
||||||
|
|
||||||
|
g_signal_emit (G_OBJECT (self), signals[ENABLE_CHANGED], 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
@@ -453,6 +456,15 @@ nm_device_modem_class_init (NMDeviceModemClass *mclass)
|
|||||||
G_TYPE_NONE, 2,
|
G_TYPE_NONE, 2,
|
||||||
G_TYPE_UINT, G_TYPE_UINT);
|
G_TYPE_UINT, G_TYPE_UINT);
|
||||||
|
|
||||||
|
signals[ENABLE_CHANGED] =
|
||||||
|
g_signal_new (NM_DEVICE_MODEM_ENABLE_CHANGED,
|
||||||
|
G_OBJECT_CLASS_TYPE (object_class),
|
||||||
|
G_SIGNAL_RUN_FIRST,
|
||||||
|
0,
|
||||||
|
NULL, NULL,
|
||||||
|
g_cclosure_marshal_VOID__VOID,
|
||||||
|
G_TYPE_NONE, 0);
|
||||||
|
|
||||||
dbus_g_object_type_install_info (G_TYPE_FROM_CLASS (mclass),
|
dbus_g_object_type_install_info (G_TYPE_FROM_CLASS (mclass),
|
||||||
nm_modem_get_serial_dbus_info ());
|
nm_modem_get_serial_dbus_info ());
|
||||||
}
|
}
|
||||||
|
@@ -36,6 +36,8 @@
|
|||||||
|
|
||||||
#define NM_DEVICE_MODEM_MODEM "modem"
|
#define NM_DEVICE_MODEM_MODEM "modem"
|
||||||
|
|
||||||
|
#define NM_DEVICE_MODEM_ENABLE_CHANGED "enable-changed"
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
NMDevice parent;
|
NMDevice parent;
|
||||||
} NMDeviceModem;
|
} NMDeviceModem;
|
||||||
|
@@ -1459,9 +1459,7 @@ manager_ipw_rfkill_state_changed (NMDeviceWifi *device,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
manager_modem_enabled_changed (NMModem *device,
|
manager_modem_enabled_changed (NMModem *device, gpointer user_data)
|
||||||
GParamSpec *pspec,
|
|
||||||
gpointer user_data)
|
|
||||||
{
|
{
|
||||||
nm_manager_rfkill_update (NM_MANAGER (user_data), RFKILL_TYPE_WWAN);
|
nm_manager_rfkill_update (NM_MANAGER (user_data), RFKILL_TYPE_WWAN);
|
||||||
}
|
}
|
||||||
@@ -1515,7 +1513,7 @@ add_device (NMManager *self, NMDevice *device)
|
|||||||
nm_device_interface_set_enabled (NM_DEVICE_INTERFACE (device),
|
nm_device_interface_set_enabled (NM_DEVICE_INTERFACE (device),
|
||||||
priv->radio_states[RFKILL_TYPE_WLAN].enabled);
|
priv->radio_states[RFKILL_TYPE_WLAN].enabled);
|
||||||
} else if (NM_IS_DEVICE_MODEM (device)) {
|
} else if (NM_IS_DEVICE_MODEM (device)) {
|
||||||
g_signal_connect (device, "notify::" NM_MODEM_ENABLED,
|
g_signal_connect (device, NM_DEVICE_MODEM_ENABLE_CHANGED,
|
||||||
G_CALLBACK (manager_modem_enabled_changed),
|
G_CALLBACK (manager_modem_enabled_changed),
|
||||||
self);
|
self);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user