diff --git a/fso_soundmanagement/trunk/fso_soundmanagement.tar b/fso_soundmanagement/trunk/fso_soundmanagement.tar new file mode 100644 index 0000000..2520603 Binary files /dev/null and b/fso_soundmanagement/trunk/fso_soundmanagement.tar differ diff --git a/fso_soundmanagement/trunk/src/README b/fso_soundmanagement/trunk/src/README new file mode 100644 index 0000000..bebf8cf --- /dev/null +++ b/fso_soundmanagement/trunk/src/README @@ -0,0 +1,22 @@ +This package adds some futeres/fixes to the FSO soundmanagement. + +to install: +copy all files to the neo and execute "install" +Attention: some files will be overwritten! + + +It adds: +- 2 profiles: headset and headset_silent +- a new .state file: silent.state +- an menu for the auxbutton + +Improvements: +When you mute the phone in the auxmenu (don't use the profile switcher from zhone!), silent.state is loaded and the silent profile is choosen. +If you plug in the headset, headset.state is loaded, an the profile switches to headset or headset_silent(they are the same, just to remember if the phone is muted or not) +during a call gsmhandset.state or gsmheadset.state is loaded + + +Known Issues: +-the "lock-funktion" don't work yet +-the install script will overwrite your /etc/freesmartphone/oevents/rules.yaml and some other files. +-I don't know what happens if you plug in or remove the headset during an call \ No newline at end of file diff --git a/fso_soundmanagement/trunk/src/auxmenu/auxmenu.edc b/fso_soundmanagement/trunk/src/auxmenu/auxmenu.edc new file mode 100644 index 0000000..a1d98b9 --- /dev/null +++ b/fso_soundmanagement/trunk/src/auxmenu/auxmenu.edc @@ -0,0 +1,583 @@ +collections { + group { + name, "main"; + min, 480 640; + max, 1024 768; + + parts { +#define COLOR_DEFAULT 30 30 30 255 +#define COLOR_CLICKED 80 80 80 255 + part { + name, "background"; + type, RECT; + mouse_events, 0; + + description { + state, "default" 0.0; + min, 480 640; + max, 1024 768; + color, 200 200 200 200; + rel1 { + relative, 0.0 0.0; + offset, 0 0; + } + rel2 { + relative, 1.0 1.0; + offset, -1 -1; + } + } + } + + part { + name, "button_mute"; + type, RECT; + mouse_events, 1; + + description { + state, "default" 0.0; + min, 400 80; + max, 400 80; + align, 0.5 0.5; + + color, COLOR_DEFAULT; + + rel1 { + relative, 0.0 0.0; + offset, 0 0; + } + rel2 { + relative, 1.0 0.15; + offset, 0 0; + } + } + description { + state, "clicked" 0.0; + min, 400 80; + max, 400 80; + align, 0.5 0.5; + + color, COLOR_CLICKED; + + rel1 { + relative, 0.0 0.0; + offset, 0 0; + } + rel2 { + relative, 1.0 0.15; + offset, 0 0; + } + } + } + part { + name, "button_snapshot"; + type, RECT; + mouse_events, 1; + + description { + state, "default" 0.0; + min, 400 80; + max, 400 80; + align, 0.5 0.5; + + color, COLOR_DEFAULT; + + rel1 { + relative, 0.0 0.15; + offset, 0 0; + } + rel2 { + relative, 1.0 0.3; + offset, 0 0; + } + } + description { + state, "clicked" 0.0; + min, 400 80; + max, 400 80; + align, 0.5 0.5; + + color, COLOR_CLICKED; + + rel1 { + relative, 0.0 0.15; + offset, 0 0; + } + rel2 { + relative, 1.0 0.3; + offset, 0 0; + } + } + } + part { + name, "button_lock"; + type, RECT; + mouse_events, 1; + + description { + state, "default" 0.0; + min, 400 80; + max, 400 80; + align, 0.5 0.5; + + color, COLOR_DEFAULT; + + rel1 { + relative, 0.0 0.3; + offset, 0 0; + } + rel2 { + relative, 1.0 0.45; + offset, 0 0; + } + } + description { + state, "clicked" 0.0; + min, 400 80; + max, 400 80; + align, 0.5 0.5; + + color, COLOR_CLICKED; + + rel1 { + relative, 0.0 0.3; + offset, 0 0; + } + rel2 { + relative, 1.0 0.45; + offset, 0 0; + } + } + } + part { + name, "button_standby"; + type, RECT; + mouse_events, 1; + + description { + state, "default" 0.0; + min, 400 80; + max, 400 80; + align, 0.5 0.5; + + color, COLOR_DEFAULT; + + rel1 { + relative, 0.0 0.45; + offset, 0 0; + } + rel2 { + relative, 1.0 0.6; + offset, 0 0; + } + } + description { + state, "clicked" 0.0; + min, 400 80; + max, 400 80; + align, 0.5 0.5; + + color, COLOR_CLICKED; + + rel1 { + relative, 0.0 0.45; + offset, 0 0; + } + rel2 { + relative, 1.0 0.6; + offset, 0 0; + } + } + } + part { + name, "button_shutdown"; + type, RECT; + mouse_events, 1; + + description { + state, "default" 0.0; + min, 400 80; + max, 400 80; + align, 0.5 0.5; + + color, COLOR_DEFAULT; + + rel1 { + relative, 0.0 0.6; + offset, 0 0; + } + rel2 { + relative, 1.0 0.75; + offset, 0 0; + } + } + description { + state, "clicked" 0.0; + min, 400 80; + max, 400 80; + align, 0.5 0.5; + + color, COLOR_CLICKED; + + rel1 { + relative, 0.0 0.6; + offset, 0 0; + } + rel2 { + relative, 1.0 0.75; + offset, 0 0; + } + } + } + part { + name, "button_exit"; + type, RECT; + mouse_events, 1; + + description { + state, "default" 0.0; + min, 400 80; + max, 400 80; + align, 0.5 0.5; + + color, COLOR_DEFAULT; + + rel1 { + relative, 0.0 0.75; + offset, 0 0; + } + rel2 { + relative, 1.0 1.0; + offset, 0 0; + } + } + description { + state, "clicked" 0.0; + min, 400 80; + max, 400 80; + align, 0.5 0.5; + + color, COLOR_CLICKED; + + rel1 { + relative, 0.0 0.75; + offset, 0 0; + } + rel2 { + relative, 1.0 1.0; + offset, 0 0; + } + } + } + part { + name, "text_mute"; + type, TEXT; + mouse_events, 0; + + description { + state, "default" 0.0; + + rel1 { + + relative, 0.0 0.0; + offset, 0 0; + to, "button_mute"; + } + rel2 { + relative, 1.0 1.0; + offset, -1 -1; + to, "button_mute"; + } + text { + text, "(UN-)MUTE"; + font, "sans serif"; + size, 26; + align, 0.5 0.5; + } + } + } + part { + name, "text_snapshot"; + type, TEXT; + mouse_events, 0; + + description { + state, "default" 0.0; + + rel1 { + + relative, 0.0 0.0; + offset, 0 0; + to, "button_snapshot"; + } + rel2 { + relative, 1.0 1.0; + offset, -1 -1; + to, "button_snapshot"; + } + text { + text, "SNAPSHOT"; + font, "sans serif"; + size, 26; + align, 0.5 0.5; + } + } + } + part { + name, "text_lock"; + type, TEXT; + mouse_events, 0; + + description { + state, "default" 0.0; + + rel1 { + + relative, 0.0 0.0; + offset, 0 0; + to, "button_lock"; + } + rel2 { + relative, 1.0 1.0; + offset, -1 -1; + to, "button_lock"; + } + text { + text, "LOCK"; + font, "sans serif"; + size, 26; + align, 0.5 0.5; + } + } + } + part { + name, "text_standby"; + type, TEXT; + mouse_events, 0; + + description { + state, "default" 0.0; + + rel1 { + + relative, 0.0 0.0; + offset, 0 0; + to, "button_standby"; + } + rel2 { + relative, 1.0 1.0; + offset, -1 -1; + to, "button_standby"; + } + text { + text, "STANDBY"; + font, "sans serif"; + size, 26; + align, 0.5 0.5; + } + } + } + part { + name, "text_shutdown"; + type, TEXT; + mouse_events, 0; + + description { + state, "default" 0.0; + + rel1 { + + relative, 0.0 0.0; + offset, 0 0; + to, "button_shutdown"; + } + rel2 { + relative, 1.0 1.0; + offset, -1 -1; + to, "button_shutdown"; + } + text { + text, "SHUTDOWN"; + font, "sans serif"; + size, 26; + align, 0.5 0.5; + } + } + } + part { + name, "text_exit"; + type, TEXT; + mouse_events, 0; + + description { + state, "default" 0.0; + + rel1 { + + relative, 0.0 0.0; + offset, 0 0; + to, "button_exit"; + } + rel2 { + relative, 1.0 1.0; + offset, -1 -1; + to, "button_exit"; + } + text { + text, "EXIT"; + font, "sans serif"; + size, 26; + align, 0.5 0.5; + } + } + } + + } /* Close Parts */ + + programs { + program { + name, "mute_click"; + signal, "mouse,down,1"; + source, "button_mute"; + action, STATE_SET "clicked" 0.0; + target, "button_mute"; + } + + program { + name, "mute_unclick"; + signal, "mouse,up,1"; + source, "button_mute"; + action, STATE_SET "default" 0.0; + target, "button_mute"; + } + + program { + name, "mute_signal"; + signal, "mouse,down,1"; + source, "button_mute"; + action, SIGNAL_EMIT "mute" "button"; + in, 0.0 0.0; + } +//snapshot + program { + name, "snapshot_click"; + signal, "mouse,down,1"; + source, "button_snapshot"; + action, STATE_SET "clicked" 0.0; + target, "button_snapshot"; + } + + program { + name, "snapshot_unclick"; + signal, "mouse,up,1"; + source, "button_snapshot"; + action, STATE_SET "default" 0.0; + target, "button_snapshot"; + } + + program { + name, "snapshot_signal"; + signal, "mouse,down,1"; + source, "button_snapshot"; + action, SIGNAL_EMIT "snapshot" "button"; + in, 0.0 0.0; + } +//lock + program { + name, "lock_click"; + signal, "mouse,down,1"; + source, "button_lock"; + action, STATE_SET "clicked" 0.0; + target, "button_lock"; + } + + program { + name, "lock_unclick"; + signal, "mouse,up,1"; + source, "button_lock"; + action, STATE_SET "default" 0.0; + target, "button_lock"; + } + + program { + name, "lock_signal"; + signal, "mouse,down,1"; + source, "button_lock"; + action, SIGNAL_EMIT "lock" "button"; + in, 0.0 0.0; + } +//standby + program { + name, "standby_click"; + signal, "mouse,down,1"; + source, "button_standby"; + action, STATE_SET "clicked" 0.0; + target, "button_standby"; + } + + program { + name, "standby_unclick"; + signal, "mouse,up,1"; + source, "button_standby"; + action, STATE_SET "default" 0.0; + target, "button_standby"; + } + + program { + name, "standby_signal"; + signal, "mouse,down,1"; + source, "button_standby"; + action, SIGNAL_EMIT "standby" "button"; + in, 0.0 0.0; + } +//shutdown + program { + name, "shutdown_click"; + signal, "mouse,down,1"; + source, "button_shutdown"; + action, STATE_SET "clicked" 0.0; + target, "button_shutdown"; + } + + program { + name, "shutdown_unclick"; + signal, "mouse,up,1"; + source, "button_shutdown"; + action, STATE_SET "default" 0.0; + target, "button_shutdown"; + } + + program { + name, "shutdown_signal"; + signal, "mouse,down,1"; + source, "button_shutdown"; + action, SIGNAL_EMIT "shutdown" "button"; + in, 0.0 0.0; + } +//exit + program { + name, "exit_click"; + signal, "mouse,down,1"; + source, "button_exit"; + action, STATE_SET "clicked" 0.0; + target, "button_exit"; + } + + program { + name, "exit_unclick"; + signal, "mouse,up,1"; + source, "button_exit"; + action, STATE_SET "default" 0.0; + target, "button_exit"; + } + + program { + name, "exit_signal"; + signal, "mouse,down,1"; + source, "button_exit"; + action, SIGNAL_EMIT "exit" "button"; + in, 0.0 0.0; + } + + } /* Close Prog */ + } /* Close Group */ +} /* Close Coll */ diff --git a/fso_soundmanagement/trunk/src/auxmenu/auxmenu.edj b/fso_soundmanagement/trunk/src/auxmenu/auxmenu.edj new file mode 100644 index 0000000..3b9332e Binary files /dev/null and b/fso_soundmanagement/trunk/src/auxmenu/auxmenu.edj differ diff --git a/fso_soundmanagement/trunk/src/auxmenu/auxmenu.py b/fso_soundmanagement/trunk/src/auxmenu/auxmenu.py new file mode 100644 index 0000000..0bfba6d --- /dev/null +++ b/fso_soundmanagement/trunk/src/auxmenu/auxmenu.py @@ -0,0 +1,105 @@ +#!/usr/bin/python +''' +authors: Pau1us +license: gpl v2 or later +auxmenu is a small menu to mute the phone, take screenshots, lock the display, send to standby and shutdown. It is intended to appear, if AUX is pressed. +''' + +import ecore +import ecore.evas +import edje +import sys +import os +import e_dbus +import time +from dbus import SystemBus, Interface + + +if ecore.evas.engine_type_supported_get("software_x11_16"): + f = ecore.evas.SoftwareX11_16 +else: + print "warning: x11-16 is not supported, fallback to x11" + f = ecore.evas.SoftwareX11 +ee = f(w=640, h=480) +ee.fullscreen = 1 + + +# Load and setup UI +ee.title = "auxmenu" +ee.name_class = ("auxmenu", "auxmenu") +canvas = ee.evas +edje_file = os.path.join(os.path.dirname(sys.argv[0]), "auxmenu.edj") + +try: + edje_obj = edje.Edje(canvas, file=edje_file, group="main") +except Exception, e: # should be EdjeLoadError, but it's wrong on python2.5 + raise SystemExit("Failed to load Edje file: %s" % edje_file) + +# resize edje to fit our window, show and remember it for later use +edje_obj.size = canvas.size +edje_obj.show() +ee.data["edje"] = edje_obj + + +# Setup callbacks for resize, keydown and selected item +def resize_cb(ee): + r = ee.evas.rect + ee.data["edje"].size = r.size + +ee.callback_resize = resize_cb + + +class auxmenuclass: + def __init__(self, edje_obj): + print "init" + #DBus: + self.systembus=systembus = SystemBus(mainloop=e_dbus.DBusEcoreMainLoop()) + self.odeviced_proxy = self.systembus.get_object('org.freesmartphone.oeventsd', '/org/freesmartphone/Preferences') + self.Preferences_iface = Interface(self.odeviced_proxy, 'org.freesmartphone.Preferences') + self.profile = self.Preferences_iface.GetProfile() + if self.profile == "silent" or self.profile == "headset_silent": + edje_obj.part_text_set("text_mute", "UNMUTE") + else: + edje_obj.part_text_set("text_mute", "MUTE") + + def button_pressed(self, edje_obj, signal, source): + if signal == "mute": + print "mute" + self.mute() + elif signal == "snapshot": + print "snapshot" + os.system("gpe-scap &") + elif signal == "lock": + print "lock" + elif signal == "standby": + print "standby" + os.system("apm -s") + elif signal == "shutdown": + print "shutdown" + os.system("halt") + ecore.main_loop_quit() + def mute(self): + if self.profile == "default": + self.Preferences_iface.SetProfile("silent") + os.system("alsactl restore -f /usr/share/openmoko/scenarios/silent.state") + elif self.profile == "headset": + self.Preferences_iface.SetProfile("headset_silent") + os.system("alsactl restore -f /usr/share/openmoko/scenarios/headset.state") + elif self.profile == "silent": + self.Preferences_iface.SetProfile("default") + os.system("alsactl restore -f /usr/share/openmoko/scenarios/stereoout.state") + elif self.profile == "headset_silent": + self.Preferences_iface.SetProfile("headset") + os.system("alsactl restore -f /usr/share/openmoko/scenarios/headset.state") + +menu = auxmenuclass(edje_obj) + +edje_obj.signal_callback_add("*", "button", menu.button_pressed) + + + +# Give focus to object, show window and enter event loop +edje_obj.focus = True +ee.show() + +ecore.main_loop_begin() diff --git a/fso_soundmanagement/trunk/src/auxmenu/auxmenu.sh b/fso_soundmanagement/trunk/src/auxmenu/auxmenu.sh new file mode 100755 index 0000000..29e4416 --- /dev/null +++ b/fso_soundmanagement/trunk/src/auxmenu/auxmenu.sh @@ -0,0 +1,6 @@ +#!/bin/sh +export DISPLAY=:0 +cd /usr/share/auxmenu +python auxmenu.py & + +exit 1 diff --git a/fso_soundmanagement/trunk/src/install b/fso_soundmanagement/trunk/src/install new file mode 100644 index 0000000..6fb3102 --- /dev/null +++ b/fso_soundmanagement/trunk/src/install @@ -0,0 +1,19 @@ +#!/bin/sh + +#copy *.state files from ./scenarios/ to /usr/share/openmoko/scenarios + +cp scenarios/* /usr/share/openmoko/scenarios/ +cp oevents/* /etc/freesmartphone/oevents/ +cp phone/* /etc/freesmartphone/opreferences/conf/phone/ +cp profiles/* /etc/freesmartphone/opreferences/conf/profiles/ +cp rules/* /etc/freesmartphone/opreferences/conf/rules/ + +#auxmenu: +if [ 'ls /usr/share | grep -c "auxmenu"' = "0" ]; then + mkdir /usr/share/auxmenu +fi +cp auxmenu/auxmenu.py /usr/share/auxmenu/auxmenu.py +cp auxmenu/auxmenu.edj /usr/share/auxmenu/auxmenu.edj +cp auxmenu/auxmenu.sh /usr/bin/auxmenu + +exit 1 \ No newline at end of file diff --git a/fso_soundmanagement/trunk/src/oevents/rules.yaml b/fso_soundmanagement/trunk/src/oevents/rules.yaml new file mode 100644 index 0000000..d84ac10 --- /dev/null +++ b/fso_soundmanagement/trunk/src/oevents/rules.yaml @@ -0,0 +1,155 @@ + +# This file is in YAML format (http://www.yaml.org/) +# We define a list of rules that will be automatically loaded +# When we start the oevents module of the framework daemon +# +# The attributes of a rule are : +# - trigger : trigger object +# - filters : filters object or list of filters objects +# - actions : action object or list of actions objects +# +# We define the following functions : +# - CallStatus() : create a trigger object activated on a call status event +# - PowerStatus() : create a trigger object activated on a power status event +# - HasAttr(name, value) : create a filter that accept signal with a given attribute +# - Not(filter) : create a neg filter +# - PlaySound(file) : Action that starts to play an audio file +# - StopSound(file) : Action that stop an audio file +# - SetScenario(name) : Action that sets an audio scenario +# - StartVibration +# - StopVibration +# - RingTone(cmd) : cmd can be 'start' or 'stop' +# - Time(hour, min) : create a trigger activated at the given time +# - Debug(msg) : Action that prints a debug message (only for debuging) +- + trigger: Time(12,29) + actions: Debug("A Test") +- + # + # Call -> Audio Scenario Handling + # + trigger: IncomingMessage() + actions: MessageTone(play) + +- + while: CallListContains("incoming") + filters: Not(CallListContains("active")) + actions: + - RingTone() + - SetDisplayBrightness("pcf50633_bl", 90) +- + name: 'handset' + while: CallStatus() + filters: Or(HasAttr(status, "outgoing"), HasAttr(status, "active")) + actions: SetScenario(gsmhandset) +- + name: 'headset' + while: CallStatus() + filters: Or(HasAttr(status, "outgoing"), HasAttr(status, "active")) + actions: SetScenario(gsmheadset) +- + while: PowerStatus() + filters: HasAttr(status, "charging") + actions: SetLed("gta02_power_orange", "light") +- + while: PowerStatus() + filters: HasAttr(status, "critical") + actions: SetLed("gta02_power_orange", "blink") +- + while: PowerStatus() + filters: HasAttr(status, "full") + actions: SetLed("gta02_power_blue", "light") +- + trigger: PowerStatus() + filters: HasAttr(status, "empty") + actions: Command('poweroff') + + # + # Headset Audio Scenario Support + # +- + name: 'default' + trigger: InputEvent() + filters: + - HasAttr(switch, "HEADSET") + - HasAttr(event, "pressed") + actions: + - SetScenario(headset) + - SetProfile(headset) +- + name: 'silent' + trigger: InputEvent() + filters: + - HasAttr(switch, "HEADSET") + - HasAttr(event, "pressed") + actions: + - SetScenario(headset) + - SetProfile(headset_silent) +- + name: 'headset' + trigger: InputEvent() + filters: + - HasAttr(switch, "HEADSET") + - HasAttr(event, "released") + actions: + - SetScenario(stereoout) + - SetProfile(default) +- + name: 'headset_silent' + trigger: InputEvent() + filters: + - HasAttr(switch, "HEADSET") + - HasAttr(event, "released") + actions: + - SetScenario(silent) + - SetProfile(silent) + + # + # A few testing rules : + # + + # This rule will only be enabled in silent mode + # According to the preferences rules conf files. +- + name: 'test-rule' + trigger: IdleState() + filters: HasAttr(status, "busy") + actions: Debug("Hello This is a test") +- + trigger: Test("test") + actions: Debug("trigger test") +- + while: Test("test2") + actions: RingTone() +- + + # + # Idleness Brightness Handling + # + trigger: IdleState() + filters: HasAttr(status, "busy") + actions: SetDisplayBrightness("pcf50633_bl", 90) +- + trigger: IdleState() + filters: HasAttr(status, "idle_dim") + actions: SetDisplayBrightness("pcf50633_bl", 20) +- + trigger: IdleState() + filters: HasAttr(status, "idle_prelock") + actions: SetDisplayBrightness("pcf50633_bl", 0) +- + trigger: InputEvent() + filters: + - HasAttr(switch, "USB") + - HasAttr(event, "pressed") + actions: Command('pybat') +- + trigger: InputEvent() + + filters: + - HasAttr(switch, "AUX") + - HasAttr(event, "pressed") + + actions: Command('auxmenu') + + diff --git a/fso_soundmanagement/trunk/src/phone/default.yaml b/fso_soundmanagement/trunk/src/phone/default.yaml new file mode 100644 index 0000000..3ca9c1d --- /dev/null +++ b/fso_soundmanagement/trunk/src/phone/default.yaml @@ -0,0 +1,8 @@ + + +ring-tone: "Arkanoid_PSID.sid" +ring-volume: 10 + +message-tone: "notify_message.mp3" +message-volume: 10 + diff --git a/fso_soundmanagement/trunk/src/phone/headset.yaml b/fso_soundmanagement/trunk/src/phone/headset.yaml new file mode 100644 index 0000000..3ca9c1d --- /dev/null +++ b/fso_soundmanagement/trunk/src/phone/headset.yaml @@ -0,0 +1,8 @@ + + +ring-tone: "Arkanoid_PSID.sid" +ring-volume: 10 + +message-tone: "notify_message.mp3" +message-volume: 10 + diff --git a/fso_soundmanagement/trunk/src/phone/headset_silent.yaml b/fso_soundmanagement/trunk/src/phone/headset_silent.yaml new file mode 100644 index 0000000..3ca9c1d --- /dev/null +++ b/fso_soundmanagement/trunk/src/phone/headset_silent.yaml @@ -0,0 +1,8 @@ + + +ring-tone: "Arkanoid_PSID.sid" +ring-volume: 10 + +message-tone: "notify_message.mp3" +message-volume: 10 + diff --git a/fso_soundmanagement/trunk/src/phone/silent.yaml b/fso_soundmanagement/trunk/src/phone/silent.yaml new file mode 100644 index 0000000..e10e445 --- /dev/null +++ b/fso_soundmanagement/trunk/src/phone/silent.yaml @@ -0,0 +1,7 @@ + +# Those values are just here to test the preferences service, +# They are not actually used yet + +ring-volume: 0 +message-volume: 0 + diff --git a/fso_soundmanagement/trunk/src/profiles/default.yaml b/fso_soundmanagement/trunk/src/profiles/default.yaml new file mode 100644 index 0000000..bbd1ceb --- /dev/null +++ b/fso_soundmanagement/trunk/src/profiles/default.yaml @@ -0,0 +1,5 @@ +profiles: + - default + - silent + - headset + - headset_silent diff --git a/fso_soundmanagement/trunk/src/rules/default.yaml b/fso_soundmanagement/trunk/src/rules/default.yaml new file mode 100644 index 0000000..e8e9101 --- /dev/null +++ b/fso_soundmanagement/trunk/src/rules/default.yaml @@ -0,0 +1,7 @@ + + +enabled-rules: + - "" # unamed rules + - handset + - default + diff --git a/fso_soundmanagement/trunk/src/rules/headset.yaml b/fso_soundmanagement/trunk/src/rules/headset.yaml new file mode 100644 index 0000000..4b7feb3 --- /dev/null +++ b/fso_soundmanagement/trunk/src/rules/headset.yaml @@ -0,0 +1,6 @@ + + +enabled-rules: + - "" # unamed rules + - headset + - headset_default diff --git a/fso_soundmanagement/trunk/src/rules/headset_silent.yaml b/fso_soundmanagement/trunk/src/rules/headset_silent.yaml new file mode 100644 index 0000000..f58e7e4 --- /dev/null +++ b/fso_soundmanagement/trunk/src/rules/headset_silent.yaml @@ -0,0 +1,6 @@ + + +enabled-rules: + - "" # unamed rules + - headset + - headset_silent diff --git a/fso_soundmanagement/trunk/src/rules/silent.yaml b/fso_soundmanagement/trunk/src/rules/silent.yaml new file mode 100644 index 0000000..538d32a --- /dev/null +++ b/fso_soundmanagement/trunk/src/rules/silent.yaml @@ -0,0 +1,8 @@ + + +enabled-rules: + - "" # unamed rules + - test-rule + - silent + - handset + diff --git a/fso_soundmanagement/trunk/src/scenarios/silent.state b/fso_soundmanagement/trunk/src/scenarios/silent.state new file mode 100644 index 0000000..487973f --- /dev/null +++ b/fso_soundmanagement/trunk/src/scenarios/silent.state @@ -0,0 +1,885 @@ +state.neo1973gta02 { + control.1 { + comment.access 'read write' + comment.type INTEGER + comment.count 2 + comment.range '0 - 255' + iface MIXER + name 'PCM Volume' + value.0 0 + value.1 0 + } + control.2 { + comment.access 'read write' + comment.type INTEGER + comment.count 2 + comment.range '0 - 255' + iface MIXER + name 'ADC Capture Volume' + value.0 195 + value.1 195 + } + control.3 { + comment.access 'read write' + comment.type INTEGER + comment.count 2 + comment.range '0 - 127' + iface MIXER + name 'Headphone Playback Volume' + value.0 0 + value.1 0 + } + control.4 { + comment.access 'read write' + comment.type INTEGER + comment.count 2 + comment.range '0 - 127' + iface MIXER + name 'Speaker Playback Volume' + value.0 0 + value.1 0 + } + control.5 { + comment.access 'read write' + comment.type INTEGER + comment.count 1 + comment.range '0 - 127' + iface MIXER + name 'Mono Playback Volume' + value 121 + } + control.6 { + comment.access 'read write' + comment.type INTEGER + comment.count 2 + comment.range '0 - 7' + iface MIXER + name 'Bypass Playback Volume' + value.0 2 + value.1 2 + } + control.7 { + comment.access 'read write' + comment.type INTEGER + comment.count 2 + comment.range '0 - 7' + iface MIXER + name 'Sidetone Playback Volume' + value.0 2 + value.1 2 + } + control.8 { + comment.access 'read write' + comment.type INTEGER + comment.count 2 + comment.range '0 - 7' + iface MIXER + name 'Voice Playback Volume' + value.0 2 + value.1 2 + } + control.9 { + comment.access 'read write' + comment.type BOOLEAN + comment.count 2 + iface MIXER + name 'Headphone Playback ZC Switch' + value.0 false + value.1 false + } + control.10 { + comment.access 'read write' + comment.type BOOLEAN + comment.count 2 + iface MIXER + name 'Speaker Playback ZC Switch' + value.0 false + value.1 false + } + control.11 { + comment.access 'read write' + comment.type INTEGER + comment.count 1 + comment.range '0 - 7' + iface MIXER + name 'Mono Bypass Playback Volume' + value 2 + } + control.12 { + comment.access 'read write' + comment.type INTEGER + comment.count 1 + comment.range '0 - 7' + iface MIXER + name 'Mono Sidetone Playback Volume' + value 2 + } + control.13 { + comment.access 'read write' + comment.type INTEGER + comment.count 1 + comment.range '0 - 7' + iface MIXER + name 'Mono Voice Playback Volume' + value 2 + } + control.14 { + comment.access 'read write' + comment.type BOOLEAN + comment.count 1 + iface MIXER + name 'Mono Playback ZC Switch' + value false + } + control.15 { + comment.access 'read write' + comment.type ENUMERATED + comment.count 1 + comment.item.0 'Linear Control' + comment.item.1 'Adaptive Boost' + iface MIXER + name 'Bass Boost' + value 'Linear Control' + } + control.16 { + comment.access 'read write' + comment.type ENUMERATED + comment.count 1 + comment.item.0 '130Hz @ 48kHz' + comment.item.1 '200Hz @ 48kHz' + comment.item.2 '100Hz @ 16kHz' + comment.item.3 '400Hz @ 48kHz' + comment.item.4 '100Hz @ 8kHz' + comment.item.5 '200Hz @ 8kHz' + iface MIXER + name 'Bass Filter' + value '130Hz @ 48kHz' + } + control.17 { + comment.access 'read write' + comment.type INTEGER + comment.count 1 + comment.range '0 - 15' + iface MIXER + name 'Bass Volume' + value 0 + } + control.18 { + comment.access 'read write' + comment.type INTEGER + comment.count 1 + comment.range '0 - 15' + iface MIXER + name 'Treble Volume' + value 0 + } + control.19 { + comment.access 'read write' + comment.type ENUMERATED + comment.count 1 + comment.item.0 '8kHz' + comment.item.1 '4kHz' + iface MIXER + name 'Treble Cut-off' + value '8kHz' + } + control.20 { + comment.access 'read write' + comment.type INTEGER + comment.count 2 + comment.range '0 - 7' + iface MIXER + name 'Sidetone Capture Volume' + value.0 2 + value.1 2 + } + control.21 { + comment.access 'read write' + comment.type INTEGER + comment.count 1 + comment.range '0 - 7' + iface MIXER + name 'Voice Sidetone Capture Volume' + value 2 + } + control.22 { + comment.access 'read write' + comment.type INTEGER + comment.count 2 + comment.range '0 - 63' + iface MIXER + name 'Capture Volume' + value.0 23 + value.1 23 + } + control.23 { + comment.access 'read write' + comment.type BOOLEAN + comment.count 2 + iface MIXER + name 'Capture ZC Switch' + value.0 false + value.1 false + } + control.24 { + comment.access 'read write' + comment.type BOOLEAN + comment.count 2 + iface MIXER + name 'Capture Switch' + value.0 false + value.1 false + } + control.25 { + comment.access 'read write' + comment.type ENUMERATED + comment.count 1 + comment.item.0 '3.4Hz @ 48kHz' + comment.item.1 '82Hz @ 16k' + comment.item.2 '82Hz @ 8kHz' + comment.item.3 '170Hz @ 8kHz' + iface MIXER + name 'Capture Filter Select' + value '3.4Hz @ 48kHz' + } + control.26 { + comment.access 'read write' + comment.type ENUMERATED + comment.count 1 + comment.item.0 HiFi + comment.item.1 Voice + iface MIXER + name 'Capture Filter Cut-off' + value HiFi + } + control.27 { + comment.access 'read write' + comment.type BOOLEAN + comment.count 1 + iface MIXER + name 'Capture Filter Switch' + value true + } + control.28 { + comment.access 'read write' + comment.type INTEGER + comment.count 1 + comment.range '0 - 7' + iface MIXER + name 'ALC Capture Target Volume' + value 3 + } + control.29 { + comment.access 'read write' + comment.type INTEGER + comment.count 1 + comment.range '0 - 7' + iface MIXER + name 'ALC Capture Max Volume' + value 7 + } + control.30 { + comment.access 'read write' + comment.type ENUMERATED + comment.count 1 + comment.item.0 Off + comment.item.1 Right + comment.item.2 Left + comment.item.3 Stereo + iface MIXER + name 'ALC Capture Function' + value Off + } + control.31 { + comment.access 'read write' + comment.type BOOLEAN + comment.count 1 + iface MIXER + name 'ALC Capture ZC Switch' + value false + } + control.32 { + comment.access 'read write' + comment.type INTEGER + comment.count 1 + comment.range '0 - 15' + iface MIXER + name 'ALC Capture Hold Time' + value 15 + } + control.33 { + comment.access 'read write' + comment.type INTEGER + comment.count 1 + comment.range '0 - 15' + iface MIXER + name 'ALC Capture Decay Time' + value 12 + } + control.34 { + comment.access 'read write' + comment.type INTEGER + comment.count 1 + comment.range '0 - 15' + iface MIXER + name 'ALC Capture Attack Time' + value 2 + } + control.35 { + comment.access 'read write' + comment.type INTEGER + comment.count 1 + comment.range '0 - 31' + iface MIXER + name 'ALC Capture NG Threshold' + value 0 + } + control.36 { + comment.access 'read write' + comment.type ENUMERATED + comment.count 1 + comment.item.0 'Constant PGA Gain' + comment.item.1 'Mute ADC Output' + iface MIXER + name 'ALC Capture NG Type' + value 'Constant PGA Gain' + } + control.37 { + comment.access 'read write' + comment.type BOOLEAN + comment.count 1 + iface MIXER + name 'ALC Capture NG Switch' + value false + } + control.38 { + comment.access 'read write' + comment.type ENUMERATED + comment.count 1 + comment.item.0 Capture + comment.item.1 Playback + iface MIXER + name '3D Function' + value Capture + } + control.39 { + comment.access 'read write' + comment.type ENUMERATED + comment.count 1 + comment.item.0 '2.2kHz' + comment.item.1 '1.5kHz' + iface MIXER + name '3D Upper Cut-off' + value '2.2kHz' + } + control.40 { + comment.access 'read write' + comment.type ENUMERATED + comment.count 1 + comment.item.0 '200Hz' + comment.item.1 '500Hz' + iface MIXER + name '3D Lower Cut-off' + value '200Hz' + } + control.41 { + comment.access 'read write' + comment.type INTEGER + comment.count 1 + comment.range '0 - 15' + iface MIXER + name '3D Volume' + value 0 + } + control.42 { + comment.access 'read write' + comment.type BOOLEAN + comment.count 1 + iface MIXER + name '3D Switch' + value false + } + control.43 { + comment.access 'read write' + comment.type BOOLEAN + comment.count 1 + iface MIXER + name 'Capture 6dB Attenuate' + value false + } + control.44 { + comment.access 'read write' + comment.type BOOLEAN + comment.count 1 + iface MIXER + name 'Playback 6dB Attenuate' + value false + } + control.45 { + comment.access 'read write' + comment.type ENUMERATED + comment.count 1 + comment.item.0 None + comment.item.1 '32kHz' + comment.item.2 '44.1kHz' + comment.item.3 '48kHz' + iface MIXER + name De-emphasis + value None + } + control.46 { + comment.access 'read write' + comment.type ENUMERATED + comment.count 1 + comment.item.0 Stereo + comment.item.1 Left + comment.item.2 Right + comment.item.3 Mono + iface MIXER + name 'Playback Mono Mix' + value Stereo + } + control.47 { + comment.access 'read write' + comment.type ENUMERATED + comment.count 1 + comment.item.0 'Non Inverted' + comment.item.1 Inverted + iface MIXER + name 'Playback Phase' + value 'Non Inverted' + } + control.48 { + comment.access 'read write' + comment.type INTEGER + comment.count 1 + comment.range '0 - 3' + iface MIXER + name 'Mic2 Capture Volume' + value 0 + } + control.49 { + comment.access 'read write' + comment.type INTEGER + comment.count 1 + comment.range '0 - 3' + iface MIXER + name 'Mic1 Capture Volume' + value 0 + } + control.50 { + comment.access 'read write' + comment.type ENUMERATED + comment.count 1 + comment.item.0 'DAI 0' + comment.item.1 'DAI 1' + comment.item.2 'DAI 2' + comment.item.3 'DAI 3' + iface MIXER + name 'DAI Mode' + value 'DAI 0' + } + control.51 { + comment.access 'read write' + comment.type ENUMERATED + comment.count 1 + comment.item.0 Stereo + comment.item.1 'Left ADC' + comment.item.2 'Right ADC' + comment.item.3 'Channel Swap' + iface MIXER + name 'ADC Data Select' + value Stereo + } + control.52 { + comment.access 'read write' + comment.type ENUMERATED + comment.count 1 + comment.item.0 'Non Inverted' + comment.item.1 Inverted + iface MIXER + name 'ROUT2 Phase' + value Inverted + } + control.53 { + comment.access 'read write' + comment.type ENUMERATED + comment.count 1 + comment.item.0 'Mic 1' + comment.item.1 'Mic 2' + comment.item.2 'Mic 3' + iface MIXER + name 'Mic Selection Mux' + value 'Mic 1' + } + control.54 { + comment.access 'read write' + comment.type ENUMERATED + comment.count 1 + comment.item.0 'RXP - RXN' + comment.item.1 'RXP + RXN' + comment.item.2 RXP + comment.item.3 RXN + iface MIXER + name 'Rx Mixer' + value 'RXP - RXN' + } + control.55 { + comment.access 'read write' + comment.type ENUMERATED + comment.count 1 + comment.item.0 'Line 1 + 2' + comment.item.1 'Line 1 - 2' + comment.item.2 'Line 1' + comment.item.3 'Line 2' + iface MIXER + name 'Line Mixer' + value 'Line 1 + 2' + } + control.56 { + comment.access 'read write' + comment.type ENUMERATED + comment.count 1 + comment.item.0 'Line Mix' + comment.item.1 'Rx Mix' + iface MIXER + name 'Line Mono Mux' + value 'Line Mix' + } + control.57 { + comment.access 'read write' + comment.type ENUMERATED + comment.count 1 + comment.item.0 'Line 2' + comment.item.1 'Rx Mix' + iface MIXER + name 'Line Right Mux' + value 'Rx Mix' + } + control.58 { + comment.access 'read write' + comment.type ENUMERATED + comment.count 1 + comment.item.0 'Line 1' + comment.item.1 'Rx Mix' + iface MIXER + name 'Line Left Mux' + value 'Rx Mix' + } + control.59 { + comment.access 'read write' + comment.type BOOLEAN + comment.count 1 + iface MIXER + name 'ALC Mixer Line Capture Switch' + value false + } + control.60 { + comment.access 'read write' + comment.type BOOLEAN + comment.count 1 + iface MIXER + name 'ALC Mixer Mic2 Capture Switch' + value false + } + control.61 { + comment.access 'read write' + comment.type BOOLEAN + comment.count 1 + iface MIXER + name 'ALC Mixer Mic1 Capture Switch' + value false + } + control.62 { + comment.access 'read write' + comment.type BOOLEAN + comment.count 1 + iface MIXER + name 'ALC Mixer Rx Capture Switch' + value false + } + control.63 { + comment.access 'read write' + comment.type ENUMERATED + comment.count 1 + comment.item.0 'Left PGA' + comment.item.1 'Mic 1' + comment.item.2 'Mic 2' + comment.item.3 'Right PGA' + iface MIXER + name 'Mic Sidetone Mux' + value 'Left PGA' + } + control.64 { + comment.access 'read write' + comment.type ENUMERATED + comment.count 1 + comment.item.0 PGA + comment.item.1 'Line or RXP-RXN' + comment.item.2 Sidetone + iface MIXER + name 'Capture Right Mux' + value PGA + } + control.65 { + comment.access 'read write' + comment.type ENUMERATED + comment.count 1 + comment.item.0 PGA + comment.item.1 'Line or RXP-RXN' + comment.item.2 Line + iface MIXER + name 'Capture Left Mux' + value PGA + } + control.66 { + comment.access 'read write' + comment.type ENUMERATED + comment.count 1 + comment.item.0 Stereo + comment.item.1 'Analogue Mix Left' + comment.item.2 'Analogue Mix Right' + comment.item.3 'Digital Mono Mix' + iface MIXER + name 'Capture Right Mixer' + value Stereo + } + control.67 { + comment.access 'read write' + comment.type ENUMERATED + comment.count 1 + comment.item.0 Stereo + comment.item.1 'Analogue Mix Left' + comment.item.2 'Analogue Mix Right' + comment.item.3 'Digital Mono Mix' + iface MIXER + name 'Capture Left Mixer' + value Stereo + } + control.68 { + comment.access 'read write' + comment.type BOOLEAN + comment.count 1 + iface MIXER + name 'Playback Mixer Voice Capture Sw' + value false + } + control.69 { + comment.access 'read write' + comment.type BOOLEAN + comment.count 1 + iface MIXER + name 'Playback Mixer Left Capture Swi' + value false + } + control.70 { + comment.access 'read write' + comment.type BOOLEAN + comment.count 1 + iface MIXER + name 'Playback Mixer Right Capture Sw' + value false + } + control.71 { + comment.access 'read write' + comment.type ENUMERATED + comment.count 1 + comment.item.0 VREF + comment.item.1 'Capture ST' + comment.item.2 LOUT2 + iface MIXER + name 'Out4 Mux' + value VREF + } + control.72 { + comment.access 'read write' + comment.type ENUMERATED + comment.count 1 + comment.item.0 VREF + comment.item.1 ROUT2 + comment.item.2 'Left + Right' + iface MIXER + name 'Out3 Mux' + value VREF + } + control.73 { + comment.access 'read write' + comment.type ENUMERATED + comment.count 1 + comment.item.0 'Inverted Mono 1' + comment.item.1 Left + comment.item.2 Right + comment.item.3 'Left + Right' + iface MIXER + name 'Mono 2 Mux' + value 'Inverted Mono 1' + } + control.74 { + comment.access 'read write' + comment.type BOOLEAN + comment.count 1 + iface MIXER + name 'Mono Mixer Left Playback Switch' + value false + } + control.75 { + comment.access 'read write' + comment.type BOOLEAN + comment.count 1 + iface MIXER + name 'Mono Mixer Right Playback Switc' + value false + } + control.76 { + comment.access 'read write' + comment.type BOOLEAN + comment.count 1 + iface MIXER + name 'Mono Mixer Voice Playback Switc' + value false + } + control.77 { + comment.access 'read write' + comment.type BOOLEAN + comment.count 1 + iface MIXER + name 'Mono Mixer Sidetone Playback Sw' + value false + } + control.78 { + comment.access 'read write' + comment.type BOOLEAN + comment.count 1 + iface MIXER + name 'Mono Mixer Bypass Playback Swit' + value false + } + control.79 { + comment.access 'read write' + comment.type BOOLEAN + comment.count 1 + iface MIXER + name 'Right Mixer Voice Playback Swit' + value false + } + control.80 { + comment.access 'read write' + comment.type BOOLEAN + comment.count 1 + iface MIXER + name 'Right Mixer Sidetone Playback S' + value false + } + control.81 { + comment.access 'read write' + comment.type BOOLEAN + comment.count 1 + iface MIXER + name 'Right Mixer Right Playback Swit' + value true + } + control.82 { + comment.access 'read write' + comment.type BOOLEAN + comment.count 1 + iface MIXER + name 'Right Mixer Bypass Playback Swi' + value false + } + control.83 { + comment.access 'read write' + comment.type BOOLEAN + comment.count 1 + iface MIXER + name 'Left Mixer Voice Playback Switc' + value false + } + control.84 { + comment.access 'read write' + comment.type BOOLEAN + comment.count 1 + iface MIXER + name 'Left Mixer Sidetone Playback Sw' + value false + } + control.85 { + comment.access 'read write' + comment.type BOOLEAN + comment.count 1 + iface MIXER + name 'Left Mixer Left Playback Switch' + value true + } + control.86 { + comment.access 'read write' + comment.type BOOLEAN + comment.count 1 + iface MIXER + name 'Left Mixer Bypass Playback Swit' + value false + } + control.87 { + comment.access 'read write' + comment.type BOOLEAN + comment.count 1 + iface MIXER + name 'DAPM Stereo Out Switch' + value true + } + control.88 { + comment.access 'read write' + comment.type BOOLEAN + comment.count 1 + iface MIXER + name 'DAPM GSM Line Out Switch' + value false + } + control.89 { + comment.access 'read write' + comment.type BOOLEAN + comment.count 1 + iface MIXER + name 'DAPM GSM Line In Switch' + value false + } + control.90 { + comment.access 'read write' + comment.type BOOLEAN + comment.count 1 + iface MIXER + name 'DAPM Headset Mic Switch' + value false + } + control.91 { + comment.access 'read write' + comment.type BOOLEAN + comment.count 1 + iface MIXER + name 'DAPM Handset Mic Switch' + value false + } + control.92 { + comment.access 'read write' + comment.type BOOLEAN + comment.count 1 + iface MIXER + name 'DAPM Handset Spk Switch' + value false + } + control.93 { + comment.access 'read write' + comment.type BOOLEAN + comment.count 1 + iface MIXER + name 'Amp State Switch' + value false + } + control.94 { + comment.access 'read write' + comment.type BOOLEAN + comment.count 1 + iface MIXER + name 'Amp Spk Switch' + value true + } +}