Really add mesh device bits
This commit is contained in:
@@ -22,6 +22,7 @@ from sugar.activity import bundleregistry
|
||||
from model.BuddyModel import BuddyModel
|
||||
from model.accesspointmodel import AccessPointModel
|
||||
from hardware import hardwaremanager
|
||||
from hardware import nmclient
|
||||
|
||||
class ActivityModel:
|
||||
def __init__(self, activity, bundle, service):
|
||||
@@ -58,7 +59,10 @@ class MeshModel(gobject.GObject):
|
||||
'access-point-added': (gobject.SIGNAL_RUN_FIRST,
|
||||
gobject.TYPE_NONE, ([gobject.TYPE_PYOBJECT])),
|
||||
'access-point-removed': (gobject.SIGNAL_RUN_FIRST,
|
||||
gobject.TYPE_NONE, ([gobject.TYPE_PYOBJECT]))
|
||||
gobject.TYPE_NONE, ([gobject.TYPE_PYOBJECT])),
|
||||
'mesh-added': (gobject.SIGNAL_RUN_FIRST,
|
||||
gobject.TYPE_NONE, ([gobject.TYPE_PYOBJECT])),
|
||||
'mesh-removed': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, ([]))
|
||||
}
|
||||
|
||||
def __init__(self):
|
||||
@@ -67,6 +71,7 @@ class MeshModel(gobject.GObject):
|
||||
self._activities = {}
|
||||
self._buddies = {}
|
||||
self._access_points = {}
|
||||
self._mesh = None
|
||||
self._bundle_registry = bundleregistry.get_registry()
|
||||
|
||||
self._pservice = PresenceService.get_instance()
|
||||
@@ -92,10 +97,15 @@ class MeshModel(gobject.GObject):
|
||||
self._add_network_device(nm_device)
|
||||
network_manager.connect('device-added',
|
||||
self._nm_device_added_cb)
|
||||
network_manager.connect('device-removed',
|
||||
self._nm_device_removed_cb)
|
||||
|
||||
def _nm_device_added_cb(self, manager, nm_device):
|
||||
self._add_network_device(nm_device)
|
||||
|
||||
def _nm_device_removed_cb(self, manager, nm_device):
|
||||
self._remove_network_device(nm_device)
|
||||
|
||||
def _nm_network_appeared_cb(self, nm_device, nm_network):
|
||||
self._add_access_point(nm_device, nm_network)
|
||||
|
||||
@@ -103,13 +113,28 @@ class MeshModel(gobject.GObject):
|
||||
self._remove_access_point(nm_network)
|
||||
|
||||
def _add_network_device(self, nm_device):
|
||||
for nm_network in nm_device.get_networks():
|
||||
self._add_access_point(nm_device, nm_network)
|
||||
dtype = nm_device.get_type()
|
||||
if dtype == nmclient.DEVICE_TYPE_802_11_WIRELESS:
|
||||
for nm_network in nm_device.get_networks():
|
||||
self._add_access_point(nm_device, nm_network)
|
||||
|
||||
nm_device.connect('network-appeared',
|
||||
self._nm_network_appeared_cb)
|
||||
nm_device.connect('network-disappeared',
|
||||
self._nm_network_disappeared_cb)
|
||||
nm_device.connect('network-appeared',
|
||||
self._nm_network_appeared_cb)
|
||||
nm_device.connect('network-disappeared',
|
||||
self._nm_network_disappeared_cb)
|
||||
elif dtype == nmclient.DEVICE_TYPE_802_11_MESH_OLPC:
|
||||
self._mesh = nm_device
|
||||
self.emit('mesh-added', self._mesh)
|
||||
|
||||
def _remove_network_device(self, nm_device):
|
||||
if nm_device == self._mesh:
|
||||
self._mesh = None
|
||||
self.emit('mesh-removed')
|
||||
elif nm_device.get_type() == nmclient.DEVICE_TYPE_802_11_WIRELESS:
|
||||
aplist = self._access_points.values()
|
||||
for ap in aplist:
|
||||
if ap.get_nm_device() == nm_device:
|
||||
self._remove_access_point(ap)
|
||||
|
||||
def _add_access_point(self, nm_device, nm_network):
|
||||
model = AccessPointModel(nm_device, nm_network)
|
||||
@@ -121,6 +146,9 @@ class MeshModel(gobject.GObject):
|
||||
self._access_points[nm_network.get_op()])
|
||||
del self._access_points[nm_network.get_op()]
|
||||
|
||||
def get_mesh(self):
|
||||
return self._mesh
|
||||
|
||||
def get_access_points(self):
|
||||
return self._access_points.values()
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@ import gobject
|
||||
from model.devices import device
|
||||
from model.devices.network import wired
|
||||
from model.devices.network import wireless
|
||||
from model.devices.network import mesh
|
||||
from model.devices import battery
|
||||
from hardware import hardwaremanager
|
||||
from hardware import nmclient
|
||||
@@ -45,21 +46,28 @@ class DevicesModel(gobject.GObject):
|
||||
self._remove_network_device(nm_device)
|
||||
|
||||
def _network_device_state_changed_cb(self, nm_device):
|
||||
if nm_device.get_state == nmclient.DEVICE_STATE_INACTIVE:
|
||||
if nm_device.get_state() == nmclient.DEVICE_STATE_INACTIVE:
|
||||
self._remove_network_device(nm_device)
|
||||
|
||||
def _check_network_device(self, nm_device):
|
||||
if not nm_device.is_valid():
|
||||
return
|
||||
|
||||
if nm_device.get_type() == nmclient.DEVICE_TYPE_802_11_WIRELESS:
|
||||
dtype = nm_device.get_type()
|
||||
if dtype == nmclient.DEVICE_TYPE_802_11_WIRELESS \
|
||||
or dtype == nmclient.DEVICE_TYPE_802_11_MESH_OLPC:
|
||||
self._add_network_device(nm_device)
|
||||
|
||||
def _get_network_device(self, nm_device):
|
||||
return self._devices[nm_device.get_op()]
|
||||
return self._devices[str(nm_device.get_op())]
|
||||
|
||||
def _add_network_device(self, nm_device):
|
||||
self.add_device(wireless.Device(nm_device))
|
||||
dtype = nm_device.get_type()
|
||||
if dtype == nmclient.DEVICE_TYPE_802_11_WIRELESS:
|
||||
self.add_device(wireless.Device(nm_device))
|
||||
if dtype == nmclient.DEVICE_TYPE_802_11_MESH_OLPC:
|
||||
self.add_device(mesh.Device(nm_device))
|
||||
|
||||
nm_device.connect('state-changed',
|
||||
self._network_device_state_changed_cb)
|
||||
|
||||
@@ -71,6 +79,8 @@ class DevicesModel(gobject.GObject):
|
||||
|
||||
def add_device(self, device):
|
||||
self._devices[device.get_id()] = device
|
||||
import logging
|
||||
logging.debug("adding device %s" % device.get_id())
|
||||
self.emit('device-appeared', device)
|
||||
|
||||
def remove_device(self, device):
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
sugardir = $(pkgdatadir)/shell/model/devices/network
|
||||
sugar_PYTHON = \
|
||||
__init__.py \
|
||||
mesh.py \
|
||||
wired.py \
|
||||
wireless.py
|
||||
|
||||
Reference in New Issue
Block a user