[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:25 UTC 2009
The following commit has been merged in the master branch:
commit de2f5ce2f83712b8e8230a05b5480628fb0fcb87
Merge: 458c30317a69ab51d8e8674f20f9c8083b050ff1 beadf3939ddde571c8c77ef820154bee179300f8
Author: Michael 'Mickey' Lauer <mickey at vanille-media.de>
Date: Thu Nov 27 18:34:08 2008 +0100
Merge commit 'origin/stabilization/milestone4'
Conflicts:
framework/subsystems/ogsmd/device.py
framework/subsystems/ogsmd/modems/abstract/mediator.py
diff --combined framework/subsystems/ogsmd/device.py
index fff3900,b5f5755..ece8c76
--- a/framework/subsystems/ogsmd/device.py
+++ b/framework/subsystems/ogsmd/device.py
@@@ -7,17 -7,29 +7,17 @@@ The Open Device Daemon - Python Impleme
GPLv2 or later
Package: ogsmd
-Module: objects
-
-Implementation of the dbus objects.
-
-Attributes:
- * server = server dbus object singleton
- * device = device dbus object singleton
+Module: device
"""
-MODULE_NAME = "ogsmd.objects"
+MODULE_NAME = "ogsmd.device"
- __version__ = "0.9.4"
+ __version__ = "0.9.5"
from framework import resource
import dbus
import dbus.service
-from dbus import DBusException
-
-from gobject import timeout_add, idle_add
-import weakref
-import math
-import sys, os
-import types
+import sys, os, types
import logging
logger = logging.getLogger( MODULE_NAME )
@@@ -31,11 -43,118 +31,11 @@@ DBUS_INTERFACE_PDP = "org.freesmartphon
DBUS_INTERFACE_CB = "org.freesmartphone.GSM.CB"
DBUS_INTERFACE_RESOURCE = "org.freesmartphone.Resource"
DBUS_INTERFACE_DEBUG = "org.freesmartphone.GSM.Debug"
DBUS_BUS_NAME_DEVICE = "org.freesmartphone.ogsmd"
-DBUS_BUS_NAME_SERVER = "org.freesmartphone.ogsmd"
DBUS_OBJECT_PATH_DEVICE = "/org/freesmartphone/GSM/Device"
-DBUS_OBJECT_PATH_SERVER = "/org/freesmartphone/GSM/Server"
-
-HOMEZONE_DEBUG = False
-
-#=========================================================================#
-class Server( dbus.service.Object ):
-#=========================================================================#
- """
- Open Phone Server aggregated functions:
- - HomeZone
-
- Ideas:
- - watch for clients on bus and send coldplug status
- - monitor device aliveness and restart, if necessary
- """
-
- def __init__( self, bus, device ):
- server = weakref.proxy( self )
- self.interface = DBUS_INTERFACE_SERVER
- self.path = DBUS_OBJECT_PATH_SERVER
- dbus.service.Object.__init__( self, bus, self.path )
- logger.info( "%s initialized. Serving %s at %s", self.__class__.__name__, self.interface, self.path )
- self.bus = bus
- self.homezones = None
- self.zone = "unknown"
- self.setupSignals()
-
- def setupSignals( self ):
- device = self.bus.get_object( DBUS_BUS_NAME_DEVICE, DBUS_OBJECT_PATH_DEVICE )
- self.fso_cb = dbus.Interface( device, DBUS_INTERFACE_CB )
- self.fso_cb.connect_to_signal( "IncomingCellBroadcast", self.onIncomingCellBroadcast )
- self.fso_sim = dbus.Interface( device, DBUS_INTERFACE_SIM )
-
- def __del__( self ):
- server = None
-
- #
- # Callbacks
- #
- def onIncomingCellBroadcast( self, channel, data ):
-
- def gotHomezones( homezones, self=self ):
- logger.info( "got SIM homezones: %s", homezones )
- self.homezones = homezones
- # debug code, if you have no homezones on your SIM. To test, use:
- # gsm.DebugInjectString("UNSOL","+CBM: 16,221,0,1,1\r\n347747555093\r\r\r\n")
- if HOMEZONE_DEBUG: self.homezones = [ ( "city", 347747, 555093, 1000 ), ( "home", 400000, 500000, 1000 ) ]
- self.checkInHomezones()
-
- if channel == 221: # home zone cell broadcast
- if len( data ) != 12:
- return
- self.x, self.y = int( data[:6] ), int( data[6:] )
- logger.info( "home zone cell broadcast detected: %s %s", self.x, self.y )
- if self.homezones is None: # never tried to read them
- logger.info( "trying to read home zones from SIM" )
- self.fso_sim.GetHomeZones( reply_handler=gotHomezones, error_handler=lambda error:None )
- else:
- self.checkInHomezones()
-
- def checkInHomezones( self ):
- status = ""
- for zname, zx, zy, zr in self.homezones:
- if self.checkInHomezone( self.x, self.y, zx, zy, zr ):
- status = zname
- break
- self.HomeZoneStatus( status )
-
- def checkInHomezone( self, x, y, zx, zy, zr ):
- logger.info( "matching whether %s %s is in ( %s, %s, %s )" % ( x, y, zx, zy, zr ) )
- dist = math.sqrt( math.pow( x-zx, 2 ) + math.pow( y-zy, 2 ) ) * 10
- maxdist = math.sqrt( zr ) * 10
- return dist < maxdist
-
- #
- # dbus
- #
- @dbus.service.method( DBUS_INTERFACE_HZ, "", "s",
- async_callbacks=( "dbus_ok", "dbus_error" ) )
- def GetHomeZoneStatus( self, dbus_ok, dbus_error ):
- dbus_ok( self.zone )
-
- @dbus.service.signal( DBUS_INTERFACE_HZ, "s" )
- def HomeZoneStatus( self, zone ):
- self.zone = zone
- logger.info( "home zone status now %s" % zone )
-
- @dbus.service.method( DBUS_INTERFACE_HZ, "", "as",
- async_callbacks=( "dbus_ok", "dbus_error" ) )
- def GetKnownHomeZones( self, dbus_ok, dbus_error ):
-
- def gotHomezones( homezones, self=self, dbus_ok=dbus_ok ):
- logger.info( "got SIM homezones: %s", homezones )
- self.homezones = homezones
- # debug code, if you have no homezones on your SIM. To test, use:
- # gsm.DebugInjectString("UNSOL","+CBM: 16,221,0,1,1\r\n347747555093\r\r\r\n")
- if HOMEZONE_DEBUG: self.homezones = [ ( "city", 347747, 555093, 1000 ), ( "home", 400000, 500000, 1000 ) ]
- dbus_ok( [ zone[0] for zone in self.homezones ] )
-
- self.fso_sim.GetHomeZones( reply_handler=gotHomezones, error_handler=lambda error:None )
-
- # Send Diffs only
- # Caching strategy
#=========================================================================#
class Device( resource.Resource ):
@@@ -49,12 -168,13 +49,12 @@@
Init.
"""
self.bus = bus
- self.interface = DBUS_INTERFACE_DEVICE
self.path = DBUS_OBJECT_PATH_DEVICE
self.modemtype = modemtype
self.modem = None
dbus.service.Object.__init__( self, bus, self.path )
resource.Resource.__init__( self, bus, "GSM" )
- logger.info( "%s initialized. Serving %s at %s", self.__class__.__name__, self.interface, self.path )
+ logger.info( "%s %s initialized." % ( self.__class__.__name__, __version__ ) )
def __del__( self ):
"""
@@@ -314,8 -434,8 +314,8 @@@
@dbus.service.method( DBUS_INTERFACE_SIM, "ssa{sv}", "i",
async_callbacks=( "dbus_ok", "dbus_error" ) )
@resource.checkedmethod
- def StoreMessage( self, number, contents, featuremap, dbus_ok, dbus_error ):
- mediator.SimStoreMessage( self, dbus_ok, dbus_error, number=number, contents=contents, featuremap=featuremap )
+ def StoreMessage( self, number, contents, properties, dbus_ok, dbus_error ):
+ mediator.SimStoreMessage( self, dbus_ok, dbus_error, number=number, contents=contents, properties=properties )
@dbus.service.method( DBUS_INTERFACE_SIM, "i", "i",
async_callbacks=( "dbus_ok", "dbus_error" ) )
@@@ -343,8 -463,8 +343,8 @@@
@dbus.service.method( DBUS_INTERFACE_SMS, "ssa{sv}", "i",
async_callbacks=( "dbus_ok", "dbus_error" ) )
@resource.checkedmethod
- def SendMessage( self, number, contents, featuremap, dbus_ok, dbus_error ):
- mediator.SmsSendMessage( self, dbus_ok, dbus_error, number=number, contents=contents, featuremap=featuremap )
+ def SendMessage( self, number, contents, properties, dbus_ok, dbus_error ):
+ mediator.SmsSendMessage( self, dbus_ok, dbus_error, number=number, contents=contents, properties=properties )
@dbus.service.signal( DBUS_INTERFACE_SMS, "ssa{sv}" )
def IncomingMessage( self, address, text, features ):
@@@ -400,7 -520,7 +400,7 @@@
@dbus.service.method( DBUS_INTERFACE_NETWORK, "", "ss",
async_callbacks=( "dbus_ok", "dbus_error" ) )
@resource.checkedmethod
- def GetNetworkCountryCode( self, dbus_ok, dbus_error ):
+ def GetCountryCode( self, dbus_ok, dbus_error ):
mediator.NetworkGetCountryCode( self, dbus_ok, dbus_error )
@dbus.service.method( DBUS_INTERFACE_NETWORK, "s", "a{sv}",
@@@ -442,10 -562,6 +442,10 @@@
@dbus.service.signal( DBUS_INTERFACE_NETWORK, "ss" )
def IncomingUssd( self, mode, message ):
logger.info( "org.freesmartphone.GSM.Network.IncomingUssd: %s: %s", mode, message )
+
+ @dbus.service.signal( DBUS_INTERFACE_NETWORK, "ss" )
+ def CipherStatus( self, gsm, gprs ):
+ logger.info( "org.freesmartphone.GSM.Network.CypherStatus: %s: %s", gsm, gprs )
#
# dbus org.freesmartphone.GSM.Call
#
@@@ -620,9 -736,58 +620,9 @@@ def factory( prefix, controller )
sys.path.append( os.path.dirname( os.path.dirname( __file__ ) ) )
modemtype = controller.config.get( "ogsmd", "modemtype" )
device = Device( controller.bus, modemtype )
- server = Server( controller.bus, device )
- return device, server
+ return [ device ]
#=========================================================================#
if __name__ == "__main__":
#=========================================================================#
- import dbus, sys, thread, atexit
- from gobject import threads_init, MainLoop
-
- def handler( *args, **kwargs ):
- print "="*78
- print "got a signal from '%s' (via %s):" % ( kwargs["path"], kwargs["sender"] )
- print "=> SIGNAL: %s.%s (" % ( kwargs["interface"], kwargs["member"] ),
- for arg in args[:-1]:
- print "%s, " % arg,
- print "%s )" % args[-1]
- print "="*78
-
- def run( *args ):
- print "entering mainloop"
- mainloop.run()
- print "exit from mainloop"
-
- import dbus.mainloop.glib
- dbus.mainloop.glib.DBusGMainLoop( set_as_default=True )
- mainloop = MainLoop()
-
- bus = dbus.SystemBus()
-
- # server
- proxy = bus.get_object( config.DBUS_BUS_NAME, config.DBUS_PATH_PREFIX+"/Server", follow_name_owner_changes=True )
- print( proxy.Introspect( dbus_interface = "org.freedesktop.DBus.Introspectable" ) )
- server = dbus.Interface(proxy, DBUS_INTERFACE_SERVER )
-
- # device
- proxy = bus.get_object( config.DBUS_BUS_NAME, config.DBUS_PATH_PREFIX+"/Device", follow_name_owner_changes=True )
- print( proxy.Introspect( dbus_interface = "org.freedesktop.DBus.Introspectable" ) )
- device = dbus.Interface( proxy, DBUS_INTERFACE_DEVICE )
- sim = dbus.Interface( proxy, DBUS_INTERFACE_SIM )
- network = dbus.Interface( proxy, DBUS_INTERFACE_NETWORK )
- call = dbus.Interface( proxy, DBUS_INTERFACE_CALL )
- test = dbus.Interface( proxy, DBUS_INTERFACE_TEST )
-
- peer = dbus.Interface( proxy, "org.freedesktop.DBus.Peer" )
-
- bus.add_signal_receiver( handler, None, None, config.DBUS_BUS_NAME, None,
- sender_keyword = "sender",
- destination_keyword = "destination",
- interface_keyword = "interface",
- member_keyword = "member",
- path_keyword = "path" )
-
- threads_init()
- thread.start_new_thread( run, () )
-
+ pass
diff --combined framework/subsystems/ogsmd/modems/abstract/mediator.py
index 5d84ad5,08ee8b5..1e3ab9c
--- a/framework/subsystems/ogsmd/modems/abstract/mediator.py
+++ b/framework/subsystems/ogsmd/modems/abstract/mediator.py
@@@ -1,4 -1,4 +1,4 @@@
- #!/usr/bin/env python
+ ##!/usr/bin/env python
"""
The Open Device Daemon - Python Implementation
@@@ -21,7 -21,7 +21,7 @@@ TODO
* refactor parameter validation
"""
- __version__ = "0.9.10.0"
+ __version__ = "0.9.10.1"
from ogsmd.gsm import error, const, convert
from ogsmd.gsm.decor import logged
@@@ -770,15 -770,15 +770,15 @@@ class SimRetrieveMessagebook( SimMediat
index = int(header.groupdict()["index"])
status = const.SMS_PDU_STATUS_OUT[int(header.groupdict()["status"])]
if "read" in status:
- dir = "MT"
+ direction = "MT"
else:
- dir = "MO"
+ direction = "MO"
length = int(header.groupdict()["pdulen"])
else:
# Now we decode the actual PDU
- sms = ogsmd.gsm.sms.decodeSMS( line, dir)
- result.append( ( index, status, str(sms.oa), sms.ud, sms.featureMap ) )
+ sms = ogsmd.gsm.sms.SMS.decode( line, direction )
+ result.append( ( index, status, str(sms.oa), sms.ud, sms.properties ) )
self._ok( result )
else:
SimMediator.responseFromChannel( self, request, response )
@@@ -801,14 -801,14 +801,14 @@@ class SimRetrieveMessage( SimMediator )
header = const.PAT_SMS_PDU_HEADER_SINGLE.match( self._rightHandSide(line) )
status = const.SMS_PDU_STATUS_OUT[int(header.groupdict()["status"])]
if "read" in status:
- dir = "MT"
+ direction = "MT"
else:
- dir = "MO"
+ direction = "MO"
length = int(header.groupdict()["pdulen"])
else:
# Now we decode the actual PDU
- sms = ogsmd.gsm.sms.decodeSMS( line, dir )
- result = ( status, str(sms.oa), sms.ud, sms.featureMap )
+ sms = ogsmd.gsm.sms.SMS.decode( line, direction )
+ result = ( status, str(sms.oa), sms.ud, sms.properties )
self._ok( *result )
@@@ -824,14 -824,14 +824,14 @@@ class SimSetServiceCenterNumber( SimMed
class SimStoreMessage( SimMediator ):
#=========================================================================#
def trigger( self ):
- sms = ogsmd.gsm.sms.AbstractSMS("MO")
+ sms = ogsmd.gsm.sms.SMS("MO")
sms.pdu_mti = 1
sms.pid = 0
sms.dcs = 0
# Use PDUAddress
sms.oa = ogsmd.gsm.sms.PDUAddress.guess( self.number )
sms.ud = self.contents
- sms.featureMap = self.featuremap
+ sms.properties = self.properties
pdu = sms.pdu()
self._commchannel.enqueue( '+CMGW=%i\r%s' % ( len(pdu)/2-1, pdu), self.responseFromChannel, self.errorFromChannel, timeout=const.TIMEOUT["SIMACCESS"])
@@@ -872,14 -872,14 +872,14 @@@ class SimDeleteMessage( SimMediator )
class SmsSendMessage( SmsMediator ):
#=========================================================================#
def trigger( self ):
- sms = ogsmd.gsm.sms.AbstractSMS("MO")
+ sms = ogsmd.gsm.sms.SMS("MO")
sms.pdu_mti = 1
sms.pid = 0
sms.dcs = 0
# Use PDUAddress
sms.oa = ogsmd.gsm.sms.PDUAddress.guess( self.number )
sms.ud = self.contents
- sms.featureMap = self.featuremap
+ sms.properties = self.properties
pdu = sms.pdu()
self._commchannel.enqueue( '+CMGS=%i\r%s' % ( len(pdu)/2-1, pdu), self.responseFromChannel, self.errorFromChannel, timeout=const.TIMEOUT["NETWORK"])
@@@ -1004,17 -1004,19 +1004,17 @@@ class NetworkRegisterWithProvider( Netw
class NetworkGetCountryCode( NetworkMediator ):
#=========================================================================#
def trigger( self ):
- self._commchannel.enqueue( "+COPS=3,2;+COPS?", self.responseFromChannel, self.errorFromChannel )
+ self._commchannel.enqueue( "+COPS=3,2;+COPS?;+COPS=3,0", self.responseFromChannel, self.errorFromChannel )
def responseFromChannel( self, request, response ):
- if response[-1] != "OK":
- NetworkMediator.responseFromChannel( self, request, response )
- else:
- values = safesplit( self._rightHandSide( response[0] ), ',' )
- if len( values ) > 2:
+ if response[-1] == "OK" and len( response ) > 1:
+ values = self._rightHandSide( response[0] ).split( ',' )
+ if len( values ) != 3:
- self._error( error.NetworkNotFound( "Not registered to an operator" ) )
++ self._error( error.NetworkNotFound( "Not registered to any provider" ) )
+ else:
mcc = int( values[2].strip( '"' )[:3] )
code, name = const.mccToCountryCode( mcc )
self._ok( code, name )
- else:
- self._error( error.NetworkNotFound( "Not registered to any provider." ) )
#=========================================================================#
class NetworkGetCallForwarding( NetworkMediator ): # a{sv}
diff --combined tests/test.py
index cb467ef,b9beb50..dd10553
--- a/tests/test.py
+++ b/tests/test.py
@@@ -131,16 -131,22 +131,22 @@@ class TestTest(unittest.TestCase)
yield True
#=========================================================================#
+ def testDbusError( error, expected ):
+ #=========================================================================#
+ ename = error.get_dbus_name()
+ assert ename == expected, "expected error '%s', got '%s' instead" % ( expected, ename )
+
+ #=========================================================================#
def testDbusType( value, type_ ):
#=========================================================================#
- assert type( value ) == type_, "expected %s type, got '%s' instead" % ( type_, type( value ) )
+ assert type( value ) == type_, "expected %s type, got '%s' instead" % ( type_, type( value ) )
#=========================================================================#
def testDbusValueIsInteger( value ):
#=========================================================================#
- assert type( value ) == dbus.Int16 or \
- type( value ) == dbus.Int32 or \
- type( value ) == dbus.Int64, "expected integer value type, got '%s' instead" % type( value )
+ assert type( value ) == dbus.Int16 or \
+ type( value ) == dbus.Int32 or \
+ type( value ) == dbus.Int64, "expected integer value type, got '%s' instead" % type( value )
#=========================================================================#
def testDbusDictionaryWithStringValues( result ):
@@@ -197,7 -203,7 +203,7 @@@ if __name__ == '__main__'
#=========================================================================#
# This list all the modules containing the tests we want to run
# TODO: provide command line arguments like in Mikey ogsmd test script
- modules = ['test', 'opreferencesd', 'sim', 'opimd', 'ogsmd2']
+ modules = ['test', 'opreferencesd', 'sim', 'opimd', 'ogsmd2', 'oevents']
for module in modules:
module = __import__(module)
--
FSO frameworkd Debian packaging
More information about the pkg-fso-commits
mailing list