From 1ba5f95a3041953b0c783b5121def2ba8dc1013a Mon Sep 17 00:00:00 2001 From: NeilBrown Date: Tue, 15 Jan 2013 07:21:30 +1100 Subject: [PATCH] netman: display current usage for GSM connnection. This is fairly hacky but does display the data... --- netman/netman.py | 61 +++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 60 insertions(+), 1 deletion(-) diff --git a/netman/netman.py b/netman/netman.py index 5d9d384..7240c26 100644 --- a/netman/netman.py +++ b/netman/netman.py @@ -122,6 +122,7 @@ class iface: self.hotspot_net = None self.hotspot = False self.addr = 'No Address' + self.default = None self.set_label() def make_button(self): @@ -144,7 +145,8 @@ class iface: self.label = ('%s\n %s%s\n%s\n' % (self.name, hs, self.state, config)) if self.state == 'active' and not self.hotspot: - self.label = self.label + 'Gateway: %s' % self.get_default() + self.default = self.get_default() + self.label = self.label + 'Gateway: %s' % self.default self.button.child.set_markup(self.label) if (self.hotspot and @@ -164,6 +166,9 @@ class iface: self.hotspot_net,'-j','MASQUERADE']).wait() self.hotspot_net = None + def selected(self): + pass + def get_config(self): self.config = '-' @@ -264,6 +269,10 @@ class WLAN_iface(iface): def supplicant_up(self): if self.supplicant: return + try: + os.unlink('/run/wpa_supplicant/wlan0') + except: + pass self.supplicant = Popen(['wpa_supplicant','-i','wlan0', '-c','/etc/wpa_supplicant.conf','-W'], close_fds = True) @@ -529,6 +538,36 @@ def recall(key, nofile = ""): l = nofile return l +#### +# load current usage from log file. +# This is currently completely unoptimised. +def read_bytes(dev = 'hso0'): + f = file('/proc/net/dev') + rv = None + for l in f: + w = l.strip().split() + if w[0] == dev + ':': + rv = ( int(w[1]), int(w[9]) ) + break + f.close() + return rv + +def get_usage(): + SIM = recall('sim') + f = open("/var/log/gsm-data") + rcv = 0 + snd = 0 + for l in f: + w = l.strip().split() + if w[2] == SIM: + rcv += int(w[3]) + snd += int(w[4]) + + base = recall('data-last-usage').strip().split() + current = read_bytes() + rcv += current[0] - int(base[0]) + snd += current[1] - int(base[1]) + return rcv + snd class WWAN_iface(iface): def __init__(self, parent): @@ -583,6 +622,25 @@ class WWAN_iface(iface): record('data-APN','') self.rfkill('block') + def selected(self): + if self.state == 'disabled': + config = '' + else: + self.get_config() + config = ' (%s)' % self.config + if self.hotspot: + hs = 'hotspot ' + else: + hs = '' + usage = get_usage()/1000000.0 + self.label = ('%s %fMB\n %s%s\n%s\n' + % (self.name, usage, hs, self.state, config)) + if self.state == 'active' and not self.hotspot: + self.default = self.get_default() + self.label = self.label + 'Gateway: %s' % self.default + self.button.child.set_markup(self.label) + + class BT_iface(iface): def __init__(self, parent): self.name = 'BT' @@ -690,6 +748,7 @@ class Netman(gtk.Window): self.hotspot_btn.set_inconsistent(not child.can_hotspot) self.hotspot_btn.set_active(child.hotspot) self.selected = child + child.selected() def add_button(self, bb, name, fd, toggle, func): if toggle: -- 2.39.5