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


The following commit has been merged in the master branch:
commit b1207efa97254e8b90d02018b53945495d868bde
Author: Michael 'Mickey' Lauer <mickey at vanille-media.de>
Date:   Tue Dec 2 21:33:28 2008 +0100

    ousaged: org.freesmartphone.Usage.Suspend() now returns a value instead
    of timing out (call did not return before the actual suspend was triggered).
    As an inherent result, the suspend now occurs asynchronous.
    This fixes FSO ticket #215.

diff --git a/ChangeLog b/ChangeLog
index a4647d7..bb80f3d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -2,12 +2,17 @@
 
 	* [onetworkd] Simple connection sharing now works. See
 	  org.freesmartphone.Network.StartConnectionSharingWithInterface(s) -> ()
+	  This fixes FSO ticket #244.
 	* [odeviced] Add two new resources: 'CPU' and 'Display':
 	  Requesting the CPU resource will prevent the idle notifier from falling
 	  into the 'suspend' state, requesting the Display resource will prevent
 	  the idle notifier from falling into the 'idle_dim' (and following) state(s).
 	  With these two resource, it now takes only one additional rule to prevent
 	  the system from suspending while on a call or a musicplayer is playing.
+	* [ousaged] org.freesmartphone.Usage.Suspend() now returns a value instead
+	  of timing out (call did not return before the actual suspend was triggered).
+	  As an inherent result, the suspend now occurs asynchronous.
+	  This fixes FSO ticket #215.
 
 2008-11-30	Michael Lauer	<mickey at openmoko.org>
 
diff --git a/framework/patterns/tasklet.py b/framework/patterns/tasklet.py
index 968c70d..64a4762 100644
--- a/framework/patterns/tasklet.py
+++ b/framework/patterns/tasklet.py
@@ -37,7 +37,9 @@ logger = logging.getLogger( "tasklet" )
 # - better stack printing in case of error
 
 def tasklet(func):
-    """Decorator that turns a generator function into a tasklet instance"""
+    """
+    A decorator that turns a generator function into a tasklet instance.
+    """
     def ret(*args, **kargs):
         return Tasklet( generator=func(*args, **kargs) )
     ret.__dict__ = func.__dict__
diff --git a/framework/resource.py b/framework/resource.py
index ea19ffb..8fbddc0 100644
--- a/framework/resource.py
+++ b/framework/resource.py
@@ -109,7 +109,7 @@ class Resource( dbus.service.Object ):
                 usaged = self._resourceBus.get_object( "org.freesmartphone.ousaged", "/org/freesmartphone/Usage" )
             except dbus.exceptions.DBusException:
                 logger.warning( "Can't register resource %s since ousaged is not present. Enabling device", name )
-                gobject.idle_add( self.Enable, lambda: None, lambda dummy: None )
+                gobject.idle_add( self.Enable, lambda: False, lambda dummy: False )
             else:
                 usaged = dbus.Interface( usaged, "org.freesmartphone.Usage" )
                 def on_reply( *arg ):
@@ -117,6 +117,7 @@ class Resource( dbus.service.Object ):
                 def on_error( err ):
                     logger.error( "An error occured when registering: %s", err )
                 usaged.RegisterResource( self._resourceName, self, reply_handler=on_reply, error_handler=on_error )
+            return False # mainloop: don't call me again
 
         gobject.idle_add( on_idle, self )
 
diff --git a/framework/subsystems/ousaged/generic.py b/framework/subsystems/ousaged/generic.py
index baab2be..9226fd0 100644
--- a/framework/subsystems/ousaged/generic.py
+++ b/framework/subsystems/ousaged/generic.py
@@ -13,13 +13,14 @@ Module: generic
 """
 
 MODULE_NAME = "ousaged"
-__version__ = "0.5.2"
+__version__ = "0.6.0"
 
 DBUS_INTERFACE_PREFIX = "org.freesmartphone.Usage"
 DBUS_PATH_PREFIX = "/org/freesmartphone/Usage"
 
 import framework.patterns.tasklet as tasklet
 
+import gobject
 import dbus
 import dbus.service
 
@@ -284,17 +285,31 @@ class GenericUsageControl( dbus.service.Object ):
 
     @tasklet.tasklet
     def _suspend( self ):
-        """The actual suspending tasklet"""
+        """
+        The actual suspending tasklet, phase 1 (suspending resources)
+        """
         logger.info( "suspending all resources..." )
         for resource in self.resources.values():
             logger.debug( "suspending %s", resource.name )
             yield resource._suspend()
-        logger.info( "...completed - triggering kernel suspend" )
+        logger.info( "...completed" )
+
+        # FIXME is this additional indirection necessary?
+        gobject.idle_add( self._suspend2 )
+
+    def _suspend2( self ):
+        self._kernelSuspendAndResume().start()
+        return False
 
-        # FIXME return 'ok' to the caller
+    @tasklet.tasklet
+    def _kernelSuspendAndResume( self ):
+        """
+        The actual resuming tasklet.
+        """
+        # FIXME might want to traverse /etc/apm.d/... and launch them scripts
 
-        # FIXME Play apmd and then use the sysfs interface
-        os.system( "apm -s" )
+        logger.info( "triggering kernel suspend" )
+        open( "/sys/power/state", "w" ).write( "mem\n" )
 
         logger.info( "kernel has resumed - resuming resources..." )
         for resource in self.resources.values():

-- 
FSO frameworkd Debian packaging



More information about the pkg-fso-commits mailing list