[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