From 898645f7ba92cbd2c708b574627ca4e987dc64bd Mon Sep 17 00:00:00 2001 From: Paulus Date: Sat, 8 Nov 2008 13:51:35 +0000 Subject: [PATCH] initial import git-svn-id: http://www.neo1973-germany.de/svn@209 46df4e5c-bc4e-4628-a0fc-830ba316316d --- .../trunk/fso_soundmanagement.tar | Bin 0 -> 194560 bytes fso_soundmanagement/trunk/src/README | 22 + .../trunk/src/auxmenu/auxmenu.edc | 583 ++++++++++++ .../trunk/src/auxmenu/auxmenu.edj | Bin 0 -> 9380 bytes .../trunk/src/auxmenu/auxmenu.py | 105 +++ .../trunk/src/auxmenu/auxmenu.sh | 6 + fso_soundmanagement/trunk/src/install | 19 + .../trunk/src/oevents/rules.yaml | 155 +++ .../trunk/src/phone/default.yaml | 8 + .../trunk/src/phone/headset.yaml | 8 + .../trunk/src/phone/headset_silent.yaml | 8 + .../trunk/src/phone/silent.yaml | 7 + .../trunk/src/profiles/default.yaml | 5 + .../trunk/src/rules/default.yaml | 7 + .../trunk/src/rules/headset.yaml | 6 + .../trunk/src/rules/headset_silent.yaml | 6 + .../trunk/src/rules/silent.yaml | 8 + .../trunk/src/scenarios/silent.state | 885 ++++++++++++++++++ 18 files changed, 1838 insertions(+) create mode 100644 fso_soundmanagement/trunk/fso_soundmanagement.tar create mode 100644 fso_soundmanagement/trunk/src/README create mode 100644 fso_soundmanagement/trunk/src/auxmenu/auxmenu.edc create mode 100644 fso_soundmanagement/trunk/src/auxmenu/auxmenu.edj create mode 100644 fso_soundmanagement/trunk/src/auxmenu/auxmenu.py create mode 100755 fso_soundmanagement/trunk/src/auxmenu/auxmenu.sh create mode 100644 fso_soundmanagement/trunk/src/install create mode 100644 fso_soundmanagement/trunk/src/oevents/rules.yaml create mode 100644 fso_soundmanagement/trunk/src/phone/default.yaml create mode 100644 fso_soundmanagement/trunk/src/phone/headset.yaml create mode 100644 fso_soundmanagement/trunk/src/phone/headset_silent.yaml create mode 100644 fso_soundmanagement/trunk/src/phone/silent.yaml create mode 100644 fso_soundmanagement/trunk/src/profiles/default.yaml create mode 100644 fso_soundmanagement/trunk/src/rules/default.yaml create mode 100644 fso_soundmanagement/trunk/src/rules/headset.yaml create mode 100644 fso_soundmanagement/trunk/src/rules/headset_silent.yaml create mode 100644 fso_soundmanagement/trunk/src/rules/silent.yaml create mode 100644 fso_soundmanagement/trunk/src/scenarios/silent.state diff --git a/fso_soundmanagement/trunk/fso_soundmanagement.tar b/fso_soundmanagement/trunk/fso_soundmanagement.tar new file mode 100644 index 0000000000000000000000000000000000000000..2520603bdc4be08e9490ac6ba3f337e1159423c8 GIT binary patch literal 194560 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

HnJtJ_BJY$c+mF5dwiM`-@^qPVhDB~ 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 +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 + } +}