[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:33 UTC 2009


The following commit has been merged in the master branch:
commit 4735afd9ef48bcc75541849316d141c9747b0c5f
Author: Michael 'Mickey' Lauer <mickey at vanille-media.de>
Date:   Thu Dec 11 15:55:17 2008 +0100

    ogsmd: implement org.freesmartphone.GSM.PDP.GetNetworkStatus()

diff --git a/ChangeLog b/ChangeLog
index 2454195..6f4d29f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,7 @@
 2008-12-11	Michael Lauer	<mickey at openmoko.org>
 
 	* [ogsmd] Implemented org.freesmartphone.GSM.PDP.NetworkStatus()
+	* [ogsmd] Implemented org.freesmartphone.GSM.PDP.GetNetworkStatus()
 
 2008-12-06	Michael Lauer	<mickey at openmoko.org>
 
diff --git a/framework/subsystems/ogsmd/device.py b/framework/subsystems/ogsmd/device.py
index 88cbd29..772e9f1 100644
--- a/framework/subsystems/ogsmd/device.py
+++ b/framework/subsystems/ogsmd/device.py
@@ -557,6 +557,12 @@ class Device( resource.Resource ):
     def SetCurrentGprsClass( self, class_, dbus_ok, dbus_error ):
         mediator.PdpSetCurrentGprsClass( self, dbus_ok, dbus_error, class_=class_ )
 
+    @dbus.service.method( DBUS_INTERFACE_PDP, "", "a{sv}",
+                          async_callbacks=( "dbus_ok", "dbus_error" ) )
+    @resource.checkedmethod
+    def GetNetworkStatus( self, dbus_ok, dbus_error ):
+        mediator.PdpGetNetworkStatus( self, dbus_ok, dbus_error )
+
     @dbus.service.method( DBUS_INTERFACE_PDP, "sss", "",
                           async_callbacks=( "dbus_ok", "dbus_error" ) )
     @resource.checkedmethod
diff --git a/framework/subsystems/ogsmd/modems/abstract/mediator.py b/framework/subsystems/ogsmd/modems/abstract/mediator.py
index 8c7791a..ff9b0d9 100644
--- a/framework/subsystems/ogsmd/modems/abstract/mediator.py
+++ b/framework/subsystems/ogsmd/modems/abstract/mediator.py
@@ -1400,6 +1400,33 @@ class PdpSetCurrentGprsClass( PdpMediator ):
         self._commchannel.enqueue( '+CGCLASS="%s"' % self.class_, self.responseFromChannel, self.errorFromChannel )
 
 #=========================================================================#
+class PdpGetNetworkStatus( PdpMediator ):
+#=========================================================================#
+    def trigger( self ):
+        result = {}
+        # query registration status and lac/cid
+        request, response, error = yield( "+CGREG?" )
+        if error is not None:
+            self.errorFromChannel( request, error )
+        elif response[-1] != "OK" or len( response ) == 1:
+            pass
+        else:
+            oldreg = safesplit( self._rightHandSide( response[-2] ), ',' )[0]
+            request, response, error = yield( "+CGREG=2;+CGREG?;+CGREG=%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[-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( '"' )
+        self._ok( result )
+
+#=========================================================================#
 class PdpActivateContext( PdpMediator ):
 #=========================================================================#
     def trigger( self ):

-- 
FSO frameworkd Debian packaging



More information about the pkg-fso-commits mailing list