From 9213c7c333049e2b5a362fb1a3b9186d1426af46 Mon Sep 17 00:00:00 2001 From: Dario Freddi Date: Sun, 1 Mar 2009 19:31:34 +0100 Subject: [PATCH] Adding GetOperationalMode() to determine op mode of an interface --- wicd/networking.py | 10 ++++++++++ wicd/wicd-daemon.py | 5 +++++ wicd/wnettools.py | 13 +++++++++++++ 3 files changed, 28 insertions(+) diff --git a/wicd/networking.py b/wicd/networking.py index c6b81ba..609e50a 100644 --- a/wicd/networking.py +++ b/wicd/networking.py @@ -635,6 +635,16 @@ class Wireless(Controller): """ return self.wiface.GetCurrentBitrate(iwconfig) + def GetOperationalMode(self, iwconfig): + """ Get the current operational mode of the interface. + + Returns: + The operational mode of the interface as a string, or + None if the operational mode can't be found. + + """ + return self.wiface.GetOperationalMode(iwconfig) + def GetIwconfig(self): """ Get the out of iwconfig. """ return self.wiface.GetIwconfig() diff --git a/wicd/wicd-daemon.py b/wicd/wicd-daemon.py index 7d75a27..33958c3 100644 --- a/wicd/wicd-daemon.py +++ b/wicd/wicd-daemon.py @@ -1000,6 +1000,11 @@ class WirelessDaemon(dbus.service.Object): def GetCurrentBitrate(self, iwconfig): return self.wifi.GetCurrentBitrate(iwconfig) + @dbus.service.method('org.wicd.daemon.wireless') + def GetOperationalMode(self, iwconfig): + """ Returns the operational mode for the iwconfig parameter """ + return misc.to_unicode(self.wifi.GetOperationalMode()) + @dbus.service.method('org.wicd.daemon.wireless') def CreateAdHocNetwork(self, essid, channel, ip, enctype, key, encused, ics): diff --git a/wicd/wnettools.py b/wicd/wnettools.py index 49ae1af..8a7f3f0 100644 --- a/wicd/wnettools.py +++ b/wicd/wnettools.py @@ -62,6 +62,7 @@ wpa2_pattern = re.compile('(WPA2)', __re_mode) ip_pattern = re.compile(r'inet [Aa]d?dr[^.]*:([^.]*\.[^.]*\.[^.]*\.[0-9]*)',re.S) bssid_pattern = re.compile('.*Access Point: (([0-9A-Z]{2}:){5}[0-9A-Z]{2})', __re_mode) bitrate_pattern = re.compile('.*Bit Rate=(.*?)s', __re_mode) +opmode_pattern = re.compile('.*Mode:(.*?) ', __re_mode) # Regular expressions for wpa_cli output auth_pattern = re.compile('.*wpa_state=(.*?)\n', __re_mode) @@ -1198,6 +1199,18 @@ class BaseWirelessInterface(BaseInterface): bitrate = misc.RunRegex(bitrate_pattern, output) return bitrate + 's' + def GetOperationalMode(self, iwconfig=None): + """ Get the MAC address for the interface. """ + if not iwconfig: + cmd = 'iwconfig ' + self.iface + if self.verbose: print cmd + output = misc.Run(cmd) + else: + output = iwconfig + + opmode = misc.RunRegex(opmode_pattern, output) + return opmode + def _get_link_quality(self, output): """ Parse out the link quality from iwlist scan or iwconfig output. """ try: