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