core: generalize interface for enabling/disabling devices

We'll use it for WWAN too.
This commit is contained in:
Dan Williams
2009-12-22 23:36:57 -08:00
parent 7b10ec29a2
commit 052cf6b2e2
5 changed files with 29 additions and 12 deletions

View File

@@ -355,3 +355,12 @@ nm_device_interface_can_assume_connection (NMDeviceInterface *device)
return !!NM_DEVICE_INTERFACE_GET_INTERFACE (device)->connection_match_config;
}
void
nm_device_interface_set_enabled (NMDeviceInterface *device, gboolean enabled)
{
g_return_if_fail (NM_IS_DEVICE_INTERFACE (device));
if (NM_DEVICE_INTERFACE_GET_INTERFACE (device)->set_enabled)
return NM_DEVICE_INTERFACE_GET_INTERFACE (device)->set_enabled (device, enabled);
}

View File

@@ -97,6 +97,8 @@ struct _NMDeviceInterface {
NMConnection * (*connection_match_config) (NMDeviceInterface *device, const GSList *specs);
void (*set_enabled) (NMDeviceInterface *device, gboolean enabled);
/* Signals */
void (*state_changed) (NMDeviceInterface *device,
NMDeviceState new_state,
@@ -131,4 +133,6 @@ NMConnection * nm_device_interface_connection_match_config (NMDeviceInterface *d
gboolean nm_device_interface_can_assume_connection (NMDeviceInterface *device);
void nm_device_interface_set_enabled (NMDeviceInterface *device, gboolean enabled);
#endif /* NM_DEVICE_INTERFACE_H */

View File

@@ -69,8 +69,10 @@ static gboolean impl_device_get_access_points (NMDeviceWifi *device,
#define WIRELESS_SECRETS_TRIES "wireless-secrets-tries"
static void device_interface_init (NMDeviceInterface *iface_class);
G_DEFINE_TYPE (NMDeviceWifi, nm_device_wifi, NM_TYPE_DEVICE)
G_DEFINE_TYPE_EXTENDED (NMDeviceWifi, nm_device_wifi, NM_TYPE_DEVICE, 0,
G_IMPLEMENT_INTERFACE (NM_TYPE_DEVICE_INTERFACE, device_interface_init))
#define NM_DEVICE_WIFI_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_DEVICE_WIFI, NMDeviceWifiPrivate))
@@ -3420,15 +3422,13 @@ nm_device_wifi_get_activation_ap (NMDeviceWifi *self)
return NULL;
}
void
nm_device_wifi_set_enabled (NMDeviceWifi *self, gboolean enabled)
static void
real_set_enabled (NMDeviceInterface *device, gboolean enabled)
{
NMDeviceWifiPrivate *priv;
NMDeviceWifi *self = NM_DEVICE_WIFI (device);
NMDeviceWifiPrivate *priv = NM_DEVICE_WIFI_GET_PRIVATE (self);
NMDeviceState state;
g_return_if_fail (NM_IS_DEVICE_WIFI (self));
priv = NM_DEVICE_WIFI_GET_PRIVATE (self);
if (priv->enabled == enabled)
return;
@@ -3490,6 +3490,12 @@ nm_device_wifi_new (const char *udi,
NULL);
}
static void
device_interface_init (NMDeviceInterface *iface_class)
{
iface_class->set_enabled = real_set_enabled;
}
static void
nm_device_wifi_init (NMDeviceWifi * self)
{

View File

@@ -102,8 +102,6 @@ NM80211Mode nm_device_wifi_get_mode (NMDeviceWifi *self);
NMAccessPoint * nm_device_wifi_get_activation_ap (NMDeviceWifi *self);
void nm_device_wifi_set_enabled (NMDeviceWifi *self, gboolean enabled);
guint32 nm_device_wifi_get_ifindex (NMDeviceWifi *self);
RfKillState nm_device_wifi_get_ipw_rfkill_state (NMDeviceWifi *self);

View File

@@ -1184,7 +1184,7 @@ manager_set_wireless_enabled (NMManager *manager, gboolean enabled)
/* enable/disable wireless devices as required */
for (iter = priv->devices; iter; iter = iter->next) {
if (NM_IS_DEVICE_WIFI (iter->data))
nm_device_wifi_set_enabled (NM_DEVICE_WIFI (iter->data), enabled);
nm_device_interface_set_enabled (NM_DEVICE_INTERFACE (iter->data), enabled);
}
}
@@ -1371,7 +1371,7 @@ add_device (NMManager *self, NMDevice *device)
* then set this device's rfkill state based on the global state.
*/
nm_manager_rfkill_update (self);
nm_device_wifi_set_enabled (NM_DEVICE_WIFI (device), priv->wireless_enabled);
nm_device_interface_set_enabled (NM_DEVICE_INTERFACE (device), priv->wireless_enabled);
}
type_desc = nm_device_get_type_desc (device);
@@ -2562,7 +2562,7 @@ impl_manager_sleep (NMManager *self, gboolean sleep, GError **error)
* to killswitch changes during sleep.
*/
if (NM_IS_DEVICE_WIFI (iter->data))
nm_device_wifi_set_enabled (NM_DEVICE_WIFI (iter->data), wifi_enabled);
nm_device_interface_set_enabled (NM_DEVICE_INTERFACE (iter->data), wifi_enabled);
nm_device_clear_autoconnect_inhibit (device);
if (nm_device_interface_spec_match_list (NM_DEVICE_INTERFACE (device), unmanaged_specs))