[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:18 UTC 2009
The following commit has been merged in the master branch:
commit 00c000c9ba1100127bd0a37ee6ffb19619f523a4
Author: Michael 'Mickey' Lauer <mickey at vanille-media.de>
Date: Wed Nov 19 12:54:28 2008 +0100
ogsmd: split server and device object implementation into two files
diff --git a/framework/controller.py b/framework/controller.py
index a2688fb..e57aafb 100644
--- a/framework/controller.py
+++ b/framework/controller.py
@@ -104,12 +104,6 @@ class Controller( daemon.Daemon ):
logger.error( "can't launch without at least one subsystem. Exiting." )
sys.exit( -1 )
- logger.info( "================== objects registered ===================" )
- objectnames = Controller.objects.keys()
- objectnames.sort()
- for obj in objectnames:
- logger.info( "%s [%s]" % ( obj, Controller.objects[obj].interface ) )
-
def launch( self ):
if self.options.values.daemonize:
self.start() # daemonize, then run self.run()
diff --git a/framework/subsystems/ogsmd/objects.py b/framework/subsystems/ogsmd/device.py
similarity index 80%
rename from framework/subsystems/ogsmd/objects.py
rename to framework/subsystems/ogsmd/device.py
index e692504..fff3900 100644
--- a/framework/subsystems/ogsmd/objects.py
+++ b/framework/subsystems/ogsmd/device.py
@@ -7,29 +7,17 @@ The Open Device Daemon - Python Implementation
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"
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 )
@@ -43,118 +31,11 @@ DBUS_INTERFACE_PDP = "org.freesmartphone.GSM.PDP"
DBUS_INTERFACE_CB = "org.freesmartphone.GSM.CB"
DBUS_INTERFACE_RESOURCE = "org.freesmartphone.Resource"
-DBUS_INTERFACE_SERVER = "org.freesmartphone.GSM.Server"
-DBUS_INTERFACE_HZ = "org.freesmartphone.GSM.HZ"
-
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 ):
@@ -168,13 +49,12 @@ class Device( resource.Resource ):
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 ):
"""
@@ -740,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
--
FSO frameworkd Debian packaging
More information about the pkg-fso-commits
mailing list