initial import

git-svn-id: http://www.neo1973-germany.de/svn@206 46df4e5c-bc4e-4628-a0fc-830ba316316d
This commit is contained in:
Paulus 2008-11-08 13:27:04 +00:00
parent f53df0db82
commit 17ab82586b
17 changed files with 1838 additions and 0 deletions

View file

@ -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

View file

@ -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 */

Binary file not shown.

View file

@ -0,0 +1,105 @@
#!/usr/bin/python
'''
authors: Pau1us <paulus.mail@oleco.net>
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()

View file

@ -0,0 +1,6 @@
#!/bin/sh
export DISPLAY=:0
cd /usr/share/auxmenu
python auxmenu.py &
exit 1

View file

@ -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

View file

@ -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')

View file

@ -0,0 +1,8 @@
ring-tone: "Arkanoid_PSID.sid"
ring-volume: 10
message-tone: "notify_message.mp3"
message-volume: 10

View file

@ -0,0 +1,8 @@
ring-tone: "Arkanoid_PSID.sid"
ring-volume: 10
message-tone: "notify_message.mp3"
message-volume: 10

View file

@ -0,0 +1,8 @@
ring-tone: "Arkanoid_PSID.sid"
ring-volume: 10
message-tone: "notify_message.mp3"
message-volume: 10

View file

@ -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

View file

@ -0,0 +1,5 @@
profiles:
- default
- silent
- headset
- headset_silent

View file

@ -0,0 +1,7 @@
enabled-rules:
- "" # unamed rules
- handset
- default

View file

@ -0,0 +1,6 @@
enabled-rules:
- "" # unamed rules
- headset
- headset_default

View file

@ -0,0 +1,6 @@
enabled-rules:
- "" # unamed rules
- headset
- headset_silent

View file

@ -0,0 +1,8 @@
enabled-rules:
- "" # unamed rules
- test-rule
- silent
- handset

View file

@ -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
}
}