def recall(key, nofile = ""):
return safe_read("/run/gsm-state/" + key, nofile)
+def forget(key):
+ os.unlink("/run/gsm-state/" + key)
+
+
lastlog={}
def call_log(key, msg):
f = open('/var/log/' + key, 'a')
def __init__(self):
Engine.__init__(self)
watch('/run/gsm-state','request_carrier', self.check_carrier)
+ watch('/run/gsm-state','search_carrier', self.search_carrier)
def set_service(self, state):
if state:
at_queue('+CLIP=1', None)
else:
at_queue('+COPS=4,2,'+l, self.got_cops, 10000)
+ def search_carrier(self, f = None):
+ l = recall('search_carrier','no')
+ if l == 'no':
+ return
+ at_queue('+COPS=?', self.report_carriers, 65000)
+ return False
+
+ def report_carriers(self, line):
+ if not line:
+ forget('carrier_list')
+ forget('search_carrier')
+ return False
+ clist = re.findall('\((\d+,"[^"]*","[^"]*","[^"]*",\d+)\)', line)
+ lst = ''
+ for (l) in clist:
+ lst = lst + l + '\n'
+ record('carrier_list', lst)
+ forget('search_carrier')
+ return False
+
def got_cops(self, line):
+ at_queue('+COPS=3,1', None)
+ at_queue('+COPS?', self.check_cops)
+ return False
+
+ def check_cops(self,line):
+ if line:
+ # +COPS: 4,1,"voda NL - amaysim",2
+ m = re.match('\+COPS: (\d),(\d),"([^"]*)",(\d)', line)
+ if m and m.group(2) == '1':
+ record('carrier', m.group(3))
+ if not m:
+ record('carrier', 'No/limited service')
self.unblock()
return False