[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