channel.set_timeout(5000)
return
if self.not_ok.match(line):
- channel.cancel_timeout()
- return self.timeout(channel)
+ return channel.abort_timeout()
if channel.state['stage'] == 'checking':
m = self.okre.match(line)
def data_hungup(channel, failed):
if channel.data_IP:
- os.system('/sbin/ifconfig hso0 down')
+ os.system('/sbin/ifconfig hso0 0.0.0.0 down')
record('dns', '')
record('data', '')
channel.data_IP = None
AtAction(at='+CNMI=1,1,2,0,0', critical=False),
AtAction(at='_OSQI=1', critical=False),
AtAction(at='+CREG=2'),
+ # Make sure to use both 2G and 3G
+ AtAction(at='_OPSYS=3,2', critical=False),
CheckSMS(),
ChangeStateAction(None),
ChangeStateAction('idle'),
AtAction(check='_OSIMOP', ok='_OSIMOP: ".*",".*","(.*)"',
record=('sid','\\1'), critical=False),
+ # Make sure to use both 2G and 3G
+ AtAction(at='_OPSYS=3,2', critical=False),
+
# Enable reporting of Caller number id.
AtAction(check='+CLIP?', ok='\+CLIP: 1,[012]', at='+CLIP=1', timeout=10000,
critical = False),
# must be shutting down - poll quickly, it shouldn't take long
return 2000
# we want a connection but don't have one, so we retry
- if time.time() < self.next_data_call:
- return int((self.next_data_call - time.time()) * 1000)
+ if time.time() < channel.next_data_call:
+ return int((channel.next_data_call - time.time()) * 1000)
return 1000
control['idle'] = [
record=('carrier', '\\1'), timeout=10000),
#AtAction(check='+COPS?', ok='\+COPS: \d+,\d+,"([^"]*)"', at='+COPS=0',
# record=('carrier', '\\1'), timeout=10000, repeat=37000),
- # Make sure to use both 2G and 3G
- AtAction(at='_OPSYS=3,2', critical=False),
# get signal string
AtAction(check='+CSQ', ok='\+CSQ: (\d+),(\d+)',
- record=('signal_strength','\\1/32'), repeat=29000)
+ record=('signal_strength','\\1/32'), repeat=29000),
AtAction(check='_OWANDATA?',
ok='_OWANDATA: 1, ([0-9.]+), [0-9.]+, ([0-9.]+), ([0-9.]+), [0-9.]+, [0-9.]+,\d+$',
handle=data_handle, repeat=if_data),
self.nextstate = []
n = len(control[state])
self.lastrun = n * [0]
+ self.tasknum = None
self.gstate = state
def advance(self):
Popen(['iptables','-t','nat','-D','POSTROUTING','-s',
self.hotspot_net,'-j','MASQUERADE']).wait()
self.hotspot_net = self.addr
+ # Delete then add to avoid creating multiple entries
+ Popen(['iptables','-t','nat','-D','POSTROUTING','-s',
+ self.hotspot_net,'-j','MASQUERADE']).wait()
Popen(['iptables','-t','nat','-A','POSTROUTING','-s',
self.hotspot_net,'-j','MASQUERADE']).wait()
if not self.hotspot and self.hotspot_net != None:
l = l.strip().split()
if l[0] == 'default' and l[1] == 'via':
route = l[2]
+ elif l[0] == 'default' and l[1] == 'dev' and l[2] == self.iface:
+ route = 'Provided'
return route
def rfkill(self, state):
if self.checker:
gobject.source_remove(self.checker)
self.checker = None
+ if l == ['udhcp','script','bound']:
+ self.set_label()
return True
def request(self, msg):
def config_hotspot(self):
self.rfkill('unblock')
+ self.state = 'pending'
self.supplicant_up()
d = dnotify.dir('/run/gsm-state')
self.data_watcher = d.watch('data', self.check_data)
- def check_data(self, f):
+ def check_data(self, fl):
l = recall('data')
+ print 'data got %s' % l
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':
+ elif self.state == 'active':
self.state = 'pending'
- goject.idle_add(self.recalc)
+ gobject.idle_add(self.recalc)
def recalc(self):
+ print 'call recalc'
self.parent.update_active()
+ if 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()
+ os.system('route add default dev hso0')
self.set_label()
def get_config(self):
print 'enable %s, was %s' % (self.selected.name, self.selected.state)
self.selected.state = 'pending'
self.update_active()
+ self.selected.set_label()
def disable(self):
if self.selected.state == 'disabled':
return
def hotspot(self, ev):
if not self.selected:
return
+ if not self.selected.can_hotspot:
+ return
if self.hotspot_btn.get_active():
# enable hotspot
s = self.selected
# disable hotspot
self.selected.hotspot = False
self.selected.shutdown()
- self.selected.set_label()
self.update_active()
+ self.selected.set_label()
def config(self, ev):
w = self.selected.config_widget()