From 0c35cbf7fa63e09726b249d8307696c96721a99b Mon Sep 17 00:00:00 2001 From: NeilBrown Date: Mon, 31 Dec 2012 20:59:01 +1100 Subject: [PATCH] netman: use new gsmd interface for WWAN data. i.e. write APN to data-APN, and watch 'data' for updates. For now, APN is hard-coded. --- netman/netman.py | 58 +++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 55 insertions(+), 3 deletions(-) diff --git a/netman/netman.py b/netman/netman.py index 6149cc0..185c195 100644 --- a/netman/netman.py +++ b/netman/netman.py @@ -498,26 +498,78 @@ class WLAN_iface(iface): self.supplicant_up() +#### +# WWAN support code, for talking to GSMD +# + +import dnotify + +def record(key, value): + f = open('/run/gsm-state/.new.' + key, 'w') + f.write(value) + f.close() + os.rename('/run/gsm-state/.new.' + key, + '/run/gsm-state/' + key) + +def recall(key, nofile = ""): + try: + fd = open("/run/gsm-state/" + key) + l = fd.read(1000) + l = l.strip() + fd.close() + except IOError: + l = nofile + return l + + class WWAN_iface(iface): def __init__(self, parent): self.name = 'GSM/3G' self.rfkill_name = 'wwan' self.conf = None self.iface = 'hso0' + self.sim = recall('sim') self.APN = 'INTERNET' + if self.sim == "505023304781083": + # exetel mobile internet sim + self.APN = 'exetel1' + if self.sim == "505023104508131": + # My exetel sim card + self.APN = 'INTERNET' iface.__init__(self, parent) self.can_hotspot = False + d = dnotify.dir('/run/gsm-state') + self.data_watcher = d.watch('data', self.check_data) + + def check_data(self, f): + l = recall('data') + if l: + self.state = 'active' + d = recall('dns').split() + f = open("/etc/resolv.conf","w") + for s in d: + f.write('nameserver %s\n', s) + f.close() + + elif self.state = 'active': + self.state = 'pending' + goject.idle_add(self.recalc) + + def recalc(self): + self.parent.update_active() + self.set_label() def get_config(self): self.config = self.addr + ' APN=%s' % self.APN def activate(self): self.rfkill('unblock') - Popen('/usr/local/bin/gsm-data up', shell=True).wait() - self.state = 'active' + self.state = 'pending' + record('data-APN', self.APN) def shutdown(self): - Popen('/usr/local/bin/gsm-data down', shell=True).wait() + self.state = 'disabled' + record('data-APN','') self.rfkill('block') class BT_iface(iface): -- 2.39.5