[pkg-fso-commits] [SCM] FSO frameworkd Debian packaging branch, master, updated. milestone4-368-g700ab82

Michael 'Mickey' Lauer mickey at vanille-media.de
Mon Feb 2 18:51:31 UTC 2009


The following commit has been merged in the master branch:
commit fef37dc8c1085f24ba95a3ef5e375d7ca962a86c
Author: Michael 'Mickey' Lauer <mickey at vanille-media.de>
Date:   Sat Dec 6 03:36:50 2008 +0100

    ogsmd: Add 'cid' and 'lac' to result for org.freesmartphone.GSM.Network.GetStatus()

diff --git a/ChangeLog b/ChangeLog
index 913c567..261e2c6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2008-12-06	Michael Lauer	<mickey at openmoko.org>
+
+	* [ogsmd] Added 'cid' and 'lac' results to org.freesmartphone.GSM.Network.GetStatus()
+
 2008-12-05	Michael Lauer	<mickey at openmoko.org>
 
 	* [odeviced] Implemented org.freesmartphone.Device.LED.SetNetworking(s,s) -> ()
diff --git a/framework/subsystems/ogsmd/modems/abstract/mediator.py b/framework/subsystems/ogsmd/modems/abstract/mediator.py
index 7dd22bc..f11f0c3 100644
--- a/framework/subsystems/ogsmd/modems/abstract/mediator.py
+++ b/framework/subsystems/ogsmd/modems/abstract/mediator.py
@@ -21,7 +21,7 @@ TODO:
  * refactor parameter validation
 """
 
-__version__ = "0.9.10.2"
+__version__ = "0.9.10.3"
 MODULE_NAME = "ogsmd.modems.abstract.mediator"
 
 from .calling import CallHandler
@@ -967,6 +967,8 @@ class NetworkUnregister( NetworkMediator ):
 class NetworkGetStatus( NetworkMediator ):
 #=========================================================================#
     def trigger( self ):
+
+        # query strength
         request, response, error = yield( "+CSQ" )
         result = {}
         if error is not None:
@@ -977,23 +979,42 @@ class NetworkGetStatus( NetworkMediator ):
             else:
                 result["strength"] = const.signalQualityToPercentage( int(safesplit( self._rightHandSide( response[0] ), ',' )[0]) ) # +CSQ: 22,99
 
-        request, response, error = yield( "+CREG?;+COPS=3,0;+COPS?;+COPS=3,2;+COPS?" )
+        # query registration status and lac/cid
+        request, response, error = yield( "+CREG?" )
         if error is not None:
             self.errorFromChannel( request, error )
+        elif response[-1] != "OK" or len( response ) == 1:
+            pass
         else:
-            if response[-1] != "OK" or len( response ) == 1:
+            oldreg = safesplit( self._rightHandSide( response[-2] ), ',' )[0]
+            request, response, error = yield( "+CREG=2;+CREG?;+CREG=%s" % oldreg )
+
+            if error is not None:
+                self.errorFromChannel( request, error )
+            elif response[-1] != "OK" or len( response ) == 1:
                 pass
             else:
-                result[ "registration"] = const.REGISTER_STATUS[int(safesplit( self._rightHandSide( response[0] ), ',' )[1])] # +CREG: 0,1
-                if len( response ) > 2:
-                    values = safesplit( self._rightHandSide( response[1] ), ',' )
-                    if len( values ) < 3:
-                        result["mode"] = const.REGISTER_MODE[int(values[0])]
-                    else:
-                        result["mode"] = const.REGISTER_MODE[int(values[0])]
-                        result["provider"] = values[2].strip( '"' )
-                if len( response ) > 3:
-                    values = safesplit( self._rightHandSide( response[2] ), ',' )
+                result[ "registration"] = const.REGISTER_STATUS[int(safesplit( self._rightHandSide( response[-2] ), ',' )[1])]
+                values = safesplit( self._rightHandSide( response[-2] ), ',' )
+                if len( values ) == 4: # have lac and cid now
+                    result["lac"] = values[2].strip( '"' )
+                    result["cid"] = values[3].strip( '"' )
+
+        # query operator name and numerical code
+        request, response, error = yield( "+COPS=3,0;+COPS?;+COPS=3,2;+COPS?" )
+        if error is not None:
+            self.errorFromChannel( request, error )
+        else:
+            if response[-1] != "OK" or len( response ) != 3:
+                pass
+            else:
+                values = safesplit( self._rightHandSide( response[-3] ), ',' )
+                if len( values ) < 3:
+                    result["mode"] = const.REGISTER_MODE[int(values[0])]
+                else:
+                    result["mode"] = const.REGISTER_MODE[int(values[0])]
+                    result["provider"] = values[2].strip( '"' )
+                    values = safesplit( self._rightHandSide( response[-2] ), ',' )
                     if len( values ) > 2:
                         result["code"] = int( values[2].strip( '"' ) )
         # UGLY special check for some modems, which return a strength of 0, if you

-- 
FSO frameworkd Debian packaging



More information about the pkg-fso-commits mailing list