[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:56 UTC 2009
The following commit has been merged in the master branch:
commit eed1ef77b6aa2bd0d89a8daa80cd8c80c0b939b1
Author: Michael 'Mickey' Lauer <mickey at vanille-media.de>
Date: Thu Jan 15 01:09:50 2009 +0100
ogsmd: add auto-online mode for pdp connections
diff --git a/ChangeLog b/ChangeLog
index c0c467b..2b6ce10 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2009-01-15 Michael Lauer <mlauer at vanille-media.de>
+
+ * [ogsmd] Implemented org.freesmartphone.GSM.Phone.StartAutoOnline(apn, user, password)
+ This works the same way as StartAutoRegister(pin), trying to keep the connection online.
+
2009-01-09 Michael Lauer <mlauer at vanille-media.de>
* [ogsmd] [TI CALYPSO] DSP command gets now resent before call setup.
diff --git a/framework/subsystems/ogsmd/server.py b/framework/subsystems/ogsmd/server.py
index f5eb498..2f318b7 100644
--- a/framework/subsystems/ogsmd/server.py
+++ b/framework/subsystems/ogsmd/server.py
@@ -33,6 +33,7 @@ from device import DBUS_INTERFACE_DEVICE, \
DBUS_BUS_NAME_DEVICE, \
DBUS_INTERFACE_SIM, \
DBUS_INTERFACE_NETWORK, \
+ DBUS_INTERFACE_PDP, \
DBUS_INTERFACE_CB
DBUS_INTERFACE_DATA = "org.freesmartphone.GSM.Data"
@@ -64,7 +65,11 @@ class Server( dbus.service.Object ):
self.setupSignals()
self._autoRegister = False
self._service = "unknown"
+ self._autoOnline = False
+ self._online = "unknown"
self.pin = None
+ self.user = None
+ self.password = None
def setupSignals( self ):
device = self.bus.get_object( DBUS_BUS_NAME_DEVICE, DBUS_OBJECT_PATH_DEVICE )
@@ -73,6 +78,8 @@ class Server( dbus.service.Object ):
self.fso_sim = dbus.Interface( device, DBUS_INTERFACE_SIM )
self.fso_network = dbus.Interface( device, DBUS_INTERFACE_NETWORK )
self.fso_network.connect_to_signal( "Status", self.onIncomingGsmNetworkStatus )
+ self.fso_pdp = dbus.Interface( device, DBUS_INTERFACE_PDP )
+ self.fso_pdp.connect_to_signal( "ContextStatus", self.onIncomingGsmContextStatus )
self.fso_device = dbus.Interface( device, DBUS_INTERFACE_DEVICE )
def __del__( self ):
@@ -130,6 +137,23 @@ class Server( dbus.service.Object ):
self._service = status
self.ServiceStatus( status )
+ def replyGetContextStatus( self, status ):
+ self.onIncomingGsmContextStatus( 0, status, {} )
+
+ def onIncomingGsmContextStatus( self, index, status, properties ):
+ online = status
+ if online == "active":
+ self._updateOnlineStatus( "online" )
+ else:
+ self._updateOnlineStatus( "offline" )
+ if online in "release".split() and self._autoOnline:
+ self.GoOnline( self.apn, self.user, self.password, lambda:None, lambda Foo:None )
+
+ def _updateOnlineStatus( self, status ):
+ if self._online != status:
+ self._online = status
+ self.OnlineStatus( status )
+
#
# dbus org.freesmartphone.GSM.Data
#
@@ -165,7 +189,7 @@ class Server( dbus.service.Object ):
self.fso_sim.GetHomeZones( reply_handler=gotHomezones, error_handler=lambda error:None )
#
- # dbus org.freesmartphone.GSM.Phone
+ # dbus org.freesmartphone.GSM.Phone (auto register)
#
@dbus.service.method( DBUS_INTERFACE_PHONE, "s", "",
async_callbacks=( "dbus_ok", "dbus_error" ) )
@@ -173,7 +197,6 @@ class Server( dbus.service.Object ):
self.pin = pin
self._autoRegister = True
dbus_ok()
-
self.fso_network.GetStatus( reply_handler=self.onIncomingGsmNetworkStatus, error_handler=lambda Foo:None )
@dbus.service.method( DBUS_INTERFACE_PHONE, "", "",
@@ -203,6 +226,35 @@ class Server( dbus.service.Object ):
def ServiceStatus( self, service ):
logger.info( "service status now %s" % service )
+ #
+ # dbus org.freesmartphone.GSM.Phone (auto online)
+ #
+ @dbus.service.method( DBUS_INTERFACE_PHONE, "sss", "",
+ async_callbacks=( "dbus_ok", "dbus_error" ) )
+ def StartAutoOnline( self, apn, user, password, dbus_ok, dbus_error ):
+ self.apn = apn
+ self.user = user
+ self.password = password
+ self._autoOnline = True
+ dbus_ok()
+ self.fso_pdp.GetContextStatus( reply_handler=self.replyGetContextStatus, error_handler=lambda Foo:None )
+
+ @dbus.service.method( DBUS_INTERFACE_PHONE, "", "",
+ async_callbacks=( "dbus_ok", "dbus_error" ) )
+ def StopAutoOnline( self, dbus_ok, dbus_error ):
+ self._autoOnline = False
+ dbus_ok()
+
+ @dbus.service.method( DBUS_INTERFACE_PHONE, "sss", "",
+ async_callbacks=( "dbus_ok", "dbus_error" ) )
+ def GoOnline( self, apn, user, password, dbus_ok, dbus_error ):
+ self.fso_pdp.ActivateContext( apn, user, password, reply_handler=dbus_ok, error_handler=dbus_error )
+
+ @dbus.service.signal( DBUS_INTERFACE_PHONE, "s" )
+ def OnlineStatus( self, online ):
+ logger.info( "online status now %s" % online )
+
+
#=========================================================================#
def factory( prefix, controller ):
#=========================================================================#
--
FSO frameworkd Debian packaging
More information about the pkg-fso-commits
mailing list