[pkg-fso-commits] [SCM] framworkd debian packageing branch, master, updated. milestone2-89-geb27523
Michael 'Mickey' Lauer
mickey at vanille-media.de
Sat Aug 23 14:06:22 UTC 2008
The following commit has been merged in the master branch:
commit 25a0c42433fecce23c00ead61aac379776bd2873
Author: Michael 'Mickey' Lauer <mickey at vanille-media.de>
Date: Wed Aug 20 17:31:15 2008 +0200
odeviced: org.freesmartphone.Audio: add PushScenario( scenario ) and PullScenario() -> previous
diff --git a/framework/subsystems/odeviced/audio.py b/framework/subsystems/odeviced/audio.py
index 05c0038..28af550 100644
--- a/framework/subsystems/odeviced/audio.py
+++ b/framework/subsystems/odeviced/audio.py
@@ -7,7 +7,7 @@ Open Device Daemon - A plugin for audio device peripherals
GPLv2 or later
"""
-__version__ = "0.3.0"
+__version__ = "0.4.0"
from framework.patterns import asyncworker
from helpers import DBUS_INTERFACE_PREFIX, DBUS_PATH_PREFIX, readFromFile, writeToFile, cleanObjectName
@@ -41,9 +41,14 @@ class AlreadyPlaying( dbus.DBusException ):
_dbus_error_name = "org.freesmartphone.Audio.AlreadyPlaying"
#----------------------------------------------------------------------------#
-class InvalidScenario( dbus.DBusException ):
+class ScenarioInvalid( dbus.DBusException ):
#----------------------------------------------------------------------------#
- _dbus_error_name = "org.freesmartphone.Audio.InvalidScenario"
+ _dbus_error_name = "org.freesmartphone.Audio.ScenarioInvalid"
+
+#----------------------------------------------------------------------------#
+class ScenarioStackUnderflow( dbus.DBusException ):
+#----------------------------------------------------------------------------#
+ _dbus_error_name = "org.freesmartphone.Audio.ScenarioStackUnderflow"
#----------------------------------------------------------------------------#
class DeviceFailed( dbus.DBusException ):
@@ -207,7 +212,25 @@ class AlsaScenarios( object ):
self._statedir = statedir
self._statenames = None
# FIXME set default profile (from configuration)
+ # FIXME should be set when this audio object initializes
self._current = "unknown"
+ self._stack = []
+
+ def pushScenario( self, scenario ):
+ current = self._current
+ if self.setScenario( scenario ):
+ self._stack.append( current )
+ return True
+ else:
+ return False
+
+ def pullScenario( self ):
+ previous = self._stack.pop()
+ result = self.setScenario( previous )
+ if result is False:
+ return result
+ else:
+ return previous
def getScenario( self ):
return self._current
@@ -299,6 +322,9 @@ class Audio( dbus.service.Object ):
#
# dbus scenario methods
#
+
+ # FIXME ugly. error handling should be done by the scenario itself
+
@dbus.service.method( DBUS_INTERFACE, "", "as",
async_callbacks=( "dbus_ok", "dbus_error" ) )
def GetAvailableScenarios( self, dbus_ok, dbus_error ):
@@ -313,7 +339,7 @@ class Audio( dbus.service.Object ):
async_callbacks=( "dbus_ok", "dbus_error" ) )
def SetScenario( self, name, dbus_ok, dbus_error ):
if not self.scenario.hasScenario( name ):
- dbus_error( InvalidScenario( "available scenarios are: %s" % self.scenario.getAvailableScenarios() ) )
+ dbus_error( ScenarioInvalid( "available scenarios are: %s" % self.scenario.getAvailableScenarios() ) )
else:
if self.scenario.setScenario( name ):
dbus_ok()
@@ -322,6 +348,30 @@ class Audio( dbus.service.Object ):
@dbus.service.method( DBUS_INTERFACE, "s", "",
async_callbacks=( "dbus_ok", "dbus_error" ) )
+ def PushScenario( self, name, dbus_ok, dbus_error ):
+ if not self.scenario.hasScenario( name ):
+ dbus_error( ScenarioInvalid( "available scenarios are: %s" % self.scenario.getAvailableScenarios() ) )
+ else:
+ if self.scenario.pushScenario( name ):
+ dbus_ok()
+ else:
+ dbus_error( DeviceFailed( "unknown error while pushing scenario" ) )
+
+ @dbus.service.method( DBUS_INTERFACE, "", "s",
+ async_callbacks=( "dbus_ok", "dbus_error" ) )
+ def PullScenario( self, dbus_ok, dbus_error ):
+ try:
+ previousScenario = self.scenario.pullScenario()
+ except IndexError:
+ dbus_error( ScenarioStackUnderflow( "forgot to push a scenario?" ) )
+ else:
+ if previousScenario is False:
+ dbus_error( DeviceFailed( "unknown error while pulling scenario" ) )
+ else:
+ dbus_ok( previousScenario )
+
+ @dbus.service.method( DBUS_INTERFACE, "s", "",
+ async_callbacks=( "dbus_ok", "dbus_error" ) )
def StoreScenario( self, name, dbus_ok, dbus_error ):
if self.scenario.storeScenario( name ):
dbus_ok()
diff --git a/tools/cli-framework b/tools/cli-framework
index c2579e1..6ef0e37 100755
--- a/tools/cli-framework
+++ b/tools/cli-framework
@@ -54,14 +54,14 @@ hz = getInterface( bus,
"org.freesmartphone.GSM.HZ" )
# odeviced objects
-audio = getInterface( \
+devaudio = getInterface( \
bus,
"org.freesmartphone.odeviced",
"/org/freesmartphone/Device/Audio",
"org.freesmartphone.Device.Audio" \
)
-idle = getInterface( \
+devidle = getInterface( \
bus,
"org.freesmartphone.odeviced",
"/org/freesmartphone/Device/IdleNotifier/0",
--
framworkd debian packageing
More information about the pkg-fso-commits
mailing list