self.hotspot_net = None
self.hotspot = False
self.addr = 'No Address'
+ self.default = None
self.set_label()
def make_button(self):
self.label = ('<span color="blue" size="30000">%s</span>\n<span size="12000"> %s%s\n%s</span>\n'
% (self.name, hs, self.state, config))
if self.state == 'active' and not self.hotspot:
- self.label = self.label + '<span size="12000">Gateway: %s</span>' % self.get_default()
+ self.default = self.get_default()
+ self.label = self.label + '<span size="12000">Gateway: %s</span>' % self.default
self.button.child.set_markup(self.label)
if (self.hotspot and
self.hotspot_net,'-j','MASQUERADE']).wait()
self.hotspot_net = None
+ def selected(self):
+ pass
+
def get_config(self):
self.config = '-'
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)
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):
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 = ('<span color="blue" size="30000">%s</span> %fMB\n<span size="12000"> %s%s\n%s</span>\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 + '<span size="12000">Gateway: %s</span>' % self.default
+ self.button.child.set_markup(self.label)
+
+
class BT_iface(iface):
def __init__(self, parent):
self.name = 'BT'
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: