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; 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); NMConnection * (*connection_match_config) (NMDeviceInterface *device, const GSList *specs);
void (*set_enabled) (NMDeviceInterface *device, gboolean enabled);
/* Signals */ /* Signals */
void (*state_changed) (NMDeviceInterface *device, void (*state_changed) (NMDeviceInterface *device,
NMDeviceState new_state, 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); gboolean nm_device_interface_can_assume_connection (NMDeviceInterface *device);
void nm_device_interface_set_enabled (NMDeviceInterface *device, gboolean enabled);
#endif /* NM_DEVICE_INTERFACE_H */ #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" #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)) #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; return NULL;
} }
void static void
nm_device_wifi_set_enabled (NMDeviceWifi *self, gboolean enabled) 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; NMDeviceState state;
g_return_if_fail (NM_IS_DEVICE_WIFI (self));
priv = NM_DEVICE_WIFI_GET_PRIVATE (self);
if (priv->enabled == enabled) if (priv->enabled == enabled)
return; return;
@@ -3490,6 +3490,12 @@ nm_device_wifi_new (const char *udi,
NULL); NULL);
} }
static void
device_interface_init (NMDeviceInterface *iface_class)
{
iface_class->set_enabled = real_set_enabled;
}
static void static void
nm_device_wifi_init (NMDeviceWifi * self) 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); 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); guint32 nm_device_wifi_get_ifindex (NMDeviceWifi *self);
RfKillState nm_device_wifi_get_ipw_rfkill_state (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 */ /* enable/disable wireless devices as required */
for (iter = priv->devices; iter; iter = iter->next) { for (iter = priv->devices; iter; iter = iter->next) {
if (NM_IS_DEVICE_WIFI (iter->data)) 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. * then set this device's rfkill state based on the global state.
*/ */
nm_manager_rfkill_update (self); 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); 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. * to killswitch changes during sleep.
*/ */
if (NM_IS_DEVICE_WIFI (iter->data)) 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); nm_device_clear_autoconnect_inhibit (device);
if (nm_device_interface_spec_match_list (NM_DEVICE_INTERFACE (device), unmanaged_specs)) if (nm_device_interface_spec_match_list (NM_DEVICE_INTERFACE (device), unmanaged_specs))