Really add mesh device bits

This commit is contained in:
Dan Williams
2007-03-29 10:10:34 -04:00
parent b3a500fd17
commit d0fdf59486
5 changed files with 118 additions and 11 deletions
+35 -7
View File
@@ -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()
+14 -4
View File
@@ -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
View File
@@ -1,5 +1,6 @@
sugardir = $(pkgdatadir)/shell/model/devices/network
sugar_PYTHON = \
__init__.py \
mesh.py \
wired.py \
wireless.py