Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/shell/hardware/nmclient.py
diff options
context:
space:
mode:
authorDan Williams <dcbw@redhat.com>2007-04-05 03:48:09 (GMT)
committer Dan Williams <dcbw@redhat.com>2007-04-05 03:48:09 (GMT)
commit4b4cf9673c0afc7e220ff3c34023f3ce4537591a (patch)
tree255e9fcad673985edcfedf7d03998ba5e5dc53a9 /shell/hardware/nmclient.py
parentba08492778261828e4411e0b8d1e4a47f21dbe52 (diff)
Cleanup of sugar device handling code
Diffstat (limited to 'shell/hardware/nmclient.py')
-rw-r--r--shell/hardware/nmclient.py56
1 files changed, 41 insertions, 15 deletions
diff --git a/shell/hardware/nmclient.py b/shell/hardware/nmclient.py
index d1178f2..3bb682d 100644
--- a/shell/hardware/nmclient.py
+++ b/shell/hardware/nmclient.py
@@ -37,10 +37,10 @@ NM_DEVICE_STAGE_STRINGS=("Unknown",
"IP Config",
"IP Config Get",
"IP Config Commit",
- "Post-IP Start"
+ "Post-IP Start",
"Activated",
"Failed",
- "Cancled"
+ "Canceled"
)
NM_SERVICE = 'org.freedesktop.NetworkManager'
@@ -192,6 +192,7 @@ class Device(gobject.GObject):
self._type = DEVICE_TYPE_UNKNOWN
self._udi = None
self._active = False
+ self._act_stage = 0
self._strength = 0
self._link = False
self._valid = False
@@ -206,11 +207,22 @@ class Device(gobject.GObject):
dev.getProperties(reply_handler=self._update_reply_cb,
error_handler=self._update_error_cb)
+ def _is_activating(self):
+ if self._active and self._act_stage >= 1 and self._act_stage <= 7:
+ return True
+ return False
+
+ def _is_activated(self):
+ if self._active and self._act_stage == 8:
+ return True
+ return False
+
def _update_reply_cb(self, *props):
self._iface = props[1]
self._type = props[2]
self._udi = props[3]
self._active = props[4]
+ self._act_stage = props[5]
self._link = props[15]
self._caps = props[17]
@@ -218,17 +230,21 @@ class Device(gobject.GObject):
old_strength = self._strength
self._strength = props[14]
if self._strength != old_strength:
- self.emit('strength-changed')
+ if self._valid:
+ self.emit('strength-changed')
self._update_networks(props[20], props[19])
elif self._type == DEVICE_TYPE_802_11_MESH_OLPC:
old_strength = self._strength
self._strength = props[14]
if self._strength != old_strength:
- self.emit('strength-changed')
+ if self._valid:
+ self.emit('strength-changed')
self._valid = True
- if self._active:
+ if self._is_activating():
+ self.set_state(DEVICE_STATE_ACTIVATING)
+ elif self._is_activated():
self.set_state(DEVICE_STATE_ACTIVATED)
else:
self.set_state(DEVICE_STATE_INACTIVE)
@@ -257,7 +273,8 @@ class Device(gobject.GObject):
return
# init success
- self.emit('network-appeared', net)
+ if self._valid:
+ self.emit('network-appeared', net)
if active_op and net_op == active_op:
self.set_active_network(net)
@@ -295,7 +312,8 @@ class Device(gobject.GObject):
else:
self._strength = 0
- self.emit('strength-changed')
+ if self._valid:
+ self.emit('strength-changed')
def network_appeared(self, network):
if self._networks.has_key(network):
@@ -308,7 +326,8 @@ class Device(gobject.GObject):
if not self._networks.has_key(network):
return
- self.emit('network-disappeared', self._networks[network])
+ if self._valid:
+ self.emit('network-disappeared', self._networks[network])
del self._networks[network]
@@ -323,10 +342,11 @@ class Device(gobject.GObject):
self._active_network = network
# don't emit ssid-changed for networks that are not yet valid
- if self._active_network and self._active_network.is_valid():
- self.emit('ssid-changed')
- elif not self._active_network:
- self.emit('ssid-changed')
+ if self._valid:
+ if self._active_network and self._active_network.is_valid():
+ self.emit('ssid-changed')
+ elif not self._active_network:
+ self.emit('ssid-changed')
def _get_active_net_cb(self, state, net_op):
if not self._networks.has_key(net_op):
@@ -356,7 +376,8 @@ class Device(gobject.GObject):
return
self._state = state
- self.emit('state-changed')
+ if self._valid:
+ self.emit('state-changed')
if self._type == DEVICE_TYPE_802_11_WIRELESS:
if state == DEVICE_STATE_INACTIVE:
@@ -469,6 +490,7 @@ class NMClient(gobject.GObject):
def _setup_dbus(self):
self._sig_handlers = {
+ 'StateChange': self.state_changed_sig_handler,
'DeviceAdded': self.device_added_sig_handler,
'DeviceRemoved': self.device_removed_sig_handler,
'DeviceActivationStage': self.device_activation_stage_sig_handler,
@@ -568,6 +590,9 @@ class NMClient(gobject.GObject):
return
self._key_dialog_destroy_cb(self._key_dialog)
+ def state_changed_sig_handler(self, new_state):
+ logging.debug('NM State Changed to %d' % new_state)
+
def device_activation_stage_sig_handler(self, device, stage):
logging.debug('Device Activation Stage "%s" for device %s' % (NM_DEVICE_STAGE_STRINGS[stage], device))
@@ -605,8 +630,9 @@ class NMClient(gobject.GObject):
if (old and len(old)) and (not new and not len(new)):
# NM went away
self._nm_present = False
- for op in self._devices.keys():
- del self._devices[op]
+ devs = self._devices.keys()
+ for op in devs:
+ self._remove_device(op)
self._devices = {}
elif (not old and not len(old)) and (new and len(new)):
# NM started up