r4555 - developers/john_lee/pyfso
john_lee at docs.openmoko.org
john_lee at docs.openmoko.org
Fri Jul 25 10:23:03 CEST 2008
Author: john_lee
Date: 2008-07-25 10:23:02 +0200 (Fri, 25 Jul 2008)
New Revision: 4555
Modified:
developers/john_lee/pyfso/dialer.py
Log:
Register() is async. wait for the signal from network interface to
change the registration status.
Modified: developers/john_lee/pyfso/dialer.py
===================================================================
--- developers/john_lee/pyfso/dialer.py 2008-07-24 15:05:19 UTC (rev 4554)
+++ developers/john_lee/pyfso/dialer.py 2008-07-25 08:23:02 UTC (rev 4555)
@@ -79,21 +79,20 @@
self.registered = False
self.fso = fso
self.fso.onCallStatus.append(self.on_call_status)
+ self.fso.onNetworkStatus.append(self.on_network_status)
self._set_state('release')
from threading import Thread
Thread(target=self._init).run()
def _init(self):
+ if not self.fso.gsm_device_iface.GetAntennaPower():
+ self.fso.gsm_device_iface.SetAntennaPower(True)
if self.fso.gsm_network_iface.GetStatus()['registration'] == 'unregistered':
try:
- self.fso.gsm_device_iface.SetAntennaPower(True)
self.fso.gsm_network_iface.Register()
- print 'registered'
- self.registered = True
except DBusException, e:
# FIXME pin number?
print e
- self.registered = False
@need_registered
def dial(self, number):
@@ -107,16 +106,22 @@
def pickup(self):
self.fso.gsm_call_iface.Activate(self.callid)
- @need_registered
def on_call_status(self, id, status, properties):
self._set_state(status)
self.callid = id
+ def on_network_status(self, status):
+ print 'signal network status:', status
+ if status['registration'] == 'home':
+ self.registered = True
+ elif status['registration'] == 'roaming':
+ self.registered = True
+
def _test_fso():
from dbus.mainloop.glib import DBusGMainLoop
from fso_backend import FSOObject
- try:
+pp try:
dialer = FSODialer(FSOObject(SystemBus(mainloop=DBusGMainLoop())))
except DBusException:
return
@@ -126,5 +131,6 @@
except KeyboardInterrupt:
return
+
if __name__ == "__main__":
_test_fso()
More information about the commitlog
mailing list