Handle device addition and activation correctly
This commit is contained in:
parent
83a86e0ea1
commit
6c9eb64de3
@ -1,3 +1,4 @@
|
|||||||
|
import logging
|
||||||
import gobject
|
import gobject
|
||||||
|
|
||||||
from model.devices import device
|
from model.devices import device
|
||||||
@ -34,14 +35,28 @@ class DevicesModel(gobject.GObject):
|
|||||||
for device in network_manager.get_devices():
|
for device in network_manager.get_devices():
|
||||||
self._check_network_device(device)
|
self._check_network_device(device)
|
||||||
|
|
||||||
|
network_manager.connect('device-added',
|
||||||
|
self._network_device_added_cb)
|
||||||
|
network_manager.connect('device-activating',
|
||||||
|
self._network_device_activating_cb)
|
||||||
network_manager.connect('device-activated',
|
network_manager.connect('device-activated',
|
||||||
self._network_device_activated_cb)
|
self._network_device_activated_cb)
|
||||||
network_manager.connect('device-removed',
|
network_manager.connect('device-removed',
|
||||||
self._network_device_removed_cb)
|
self._network_device_removed_cb)
|
||||||
|
|
||||||
def _network_device_activated_cb(self, network_manager, nm_device):
|
def _network_device_added_cb(self, network_manager, nm_device):
|
||||||
|
logging.debug("got added isgnal for %s" % nm_device.get_op())
|
||||||
|
state = nm_device.get_state()
|
||||||
|
if state == nmclient.DEVICE_STATE_ACTIVATING \
|
||||||
|
or state == nmclient.DEVICE_STATE_ACTIVATED:
|
||||||
|
self._check_network_device(nm_device)
|
||||||
|
|
||||||
|
def _network_device_activating_cb(self, network_manager, nm_device):
|
||||||
self._check_network_device(nm_device)
|
self._check_network_device(nm_device)
|
||||||
|
|
||||||
|
def _network_device_activated_cb(self, network_manager, nm_device):
|
||||||
|
pass
|
||||||
|
|
||||||
def _network_device_removed_cb(self, nm_device):
|
def _network_device_removed_cb(self, nm_device):
|
||||||
self._remove_network_device(nm_device)
|
self._remove_network_device(nm_device)
|
||||||
|
|
||||||
@ -51,6 +66,7 @@ class DevicesModel(gobject.GObject):
|
|||||||
|
|
||||||
def _check_network_device(self, nm_device):
|
def _check_network_device(self, nm_device):
|
||||||
if not nm_device.is_valid():
|
if not nm_device.is_valid():
|
||||||
|
logging.debug("Device %s not valid" % nm_device.get_op())
|
||||||
return
|
return
|
||||||
|
|
||||||
dtype = nm_device.get_type()
|
dtype = nm_device.get_type()
|
||||||
@ -62,7 +78,12 @@ class DevicesModel(gobject.GObject):
|
|||||||
return self._devices[str(nm_device.get_op())]
|
return self._devices[str(nm_device.get_op())]
|
||||||
|
|
||||||
def _add_network_device(self, nm_device):
|
def _add_network_device(self, nm_device):
|
||||||
|
if self._devices.has_key(str(nm_device.get_op())):
|
||||||
|
logging.debug("Tried to add device %s twice" % nm_device.get_op())
|
||||||
|
return
|
||||||
|
|
||||||
dtype = nm_device.get_type()
|
dtype = nm_device.get_type()
|
||||||
|
logging.debug("Adding device %s type %d" % (nm_device.get_op(), dtype))
|
||||||
if dtype == nmclient.DEVICE_TYPE_802_11_WIRELESS:
|
if dtype == nmclient.DEVICE_TYPE_802_11_WIRELESS:
|
||||||
self.add_device(wireless.Device(nm_device))
|
self.add_device(wireless.Device(nm_device))
|
||||||
if dtype == nmclient.DEVICE_TYPE_802_11_MESH_OLPC:
|
if dtype == nmclient.DEVICE_TYPE_802_11_MESH_OLPC:
|
||||||
@ -79,8 +100,6 @@ class DevicesModel(gobject.GObject):
|
|||||||
|
|
||||||
def add_device(self, device):
|
def add_device(self, device):
|
||||||
self._devices[device.get_id()] = device
|
self._devices[device.get_id()] = device
|
||||||
import logging
|
|
||||||
logging.debug("adding device %s" % device.get_id())
|
|
||||||
self.emit('device-appeared', device)
|
self.emit('device-appeared', device)
|
||||||
|
|
||||||
def remove_device(self, device):
|
def remove_device(self, device):
|
||||||
|
Loading…
Reference in New Issue
Block a user