ALSA project - the C library reference
Main Page
Related Pages
Modules
Data Structures
Files
Examples
File List
Globals
All
Data Structures
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
include
use-case.h
Go to the documentation of this file.
1
10
/*
11
*
12
* This library is free software; you can redistribute it and/or modify
13
* it under the terms of the GNU Lesser General Public License as
14
* published by the Free Software Foundation; either version 2.1 of
15
* the License, or (at your option) any later version.
16
*
17
* This program is distributed in the hope that it will be useful,
18
* but WITHOUT ANY WARRANTY; without even the implied warranty of
19
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20
* GNU Lesser General Public License for more details.
21
*
22
* You should have received a copy of the GNU Lesser General Public
23
* License along with this library; if not, write to the Free Software
24
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
25
*
26
* Copyright (C) 2008-2010 SlimLogic Ltd
27
* Copyright (C) 2010 Wolfson Microelectronics PLC
28
* Copyright (C) 2010 Texas Instruments Inc.
29
*
30
* Support for the verb/device/modifier core logic and API,
31
* command line tool and file parser was kindly sponsored by
32
* Texas Instruments Inc.
33
* Support for multiple active modifiers and devices,
34
* transition sequences, multiple client access and user defined use
35
* cases was kindly sponsored by Wolfson Microelectronics PLC.
36
*/
37
38
#ifndef __ALSA_USE_CASE_H
39
#define __ALSA_USE_CASE_H
40
41
#ifdef __cplusplus
42
extern
"C"
{
43
#endif
44
45
#include <alsa/asoundlib.h>
46
93
/*
94
* Use Case Verb.
95
*
96
* The use case verb is the main device audio action. e.g. the "HiFi" use
97
* case verb will configure the audio hardware for HiFi Music playback
98
* and capture.
99
*/
100
#define SND_USE_CASE_VERB_INACTIVE "Inactive"
101
#define SND_USE_CASE_VERB_HIFI "HiFi"
102
#define SND_USE_CASE_VERB_HIFI_LOW_POWER "HiFi Low Power"
103
#define SND_USE_CASE_VERB_VOICE "Voice"
104
#define SND_USE_CASE_VERB_VOICE_LOW_POWER "Voice Low Power"
105
#define SND_USE_CASE_VERB_VOICECALL "Voice Call"
106
#define SND_USE_CASE_VERB_IP_VOICECALL "Voice Call IP"
107
#define SND_USE_CASE_VERB_ANALOG_RADIO "FM Analog Radio"
108
#define SND_USE_CASE_VERB_DIGITAL_RADIO "FM Digital Radio"
109
/* add new verbs to end of list */
110
111
112
/*
113
* Use Case Device.
114
*
115
* Physical system devices the render and capture audio. Devices can be OR'ed
116
* together to support audio on simultaneous devices.
117
*
118
* If multiple devices with the same name exists, the number suffixes should
119
* be added to these names like HDMI1,HDMI2,HDMI3 etc. No number gaps are
120
* allowed. The names with numbers must be continuous.
121
*
122
* If EnableSequence/DisableSequence controls independent paths in the hardware
123
* it is also recommended to split playback and capture UCM devices and use
124
* the number suffixes. Example use case: Use the integrated microphone
125
* in the laptop instead the microphone in headphones.
126
*
127
* The preference of the devices is determined by the priority value.
128
*/
129
#define SND_USE_CASE_DEV_NONE "None"
130
#define SND_USE_CASE_DEV_SPEAKER "Speaker"
131
#define SND_USE_CASE_DEV_LINE "Line"
132
#define SND_USE_CASE_DEV_MIC "Mic"
133
#define SND_USE_CASE_DEV_HEADPHONES "Headphones"
134
#define SND_USE_CASE_DEV_HEADSET "Headset"
135
#define SND_USE_CASE_DEV_HANDSET "Handset"
136
#define SND_USE_CASE_DEV_BLUETOOTH "Bluetooth"
137
#define SND_USE_CASE_DEV_EARPIECE "Earpiece"
138
#define SND_USE_CASE_DEV_SPDIF "SPDIF"
139
#define SND_USE_CASE_DEV_HDMI "HDMI"
140
/* add new devices to end of list */
141
142
143
/*
144
* Use Case Modifiers.
145
*
146
* The use case modifier allows runtime configuration changes to deal with
147
* asynchronous events.
148
*
149
* e.g. to record a voice call :-
150
* 1. Set verb to SND_USE_CASE_VERB_VOICECALL (for voice call)
151
* 2. Set modifier SND_USE_CASE_MOD_CAPTURE_VOICE when capture required.
152
* 3. Call snd_use_case_get("CapturePCM") to get ALSA source PCM name
153
* with captured voice pcm data.
154
*
155
* e.g. to play a ring tone when listenin to MP3 Music :-
156
* 1. Set verb to SND_USE_CASE_VERB_HIFI (for MP3 playback)
157
* 2. Set modifier to SND_USE_CASE_MOD_PLAY_TONE when incoming call happens.
158
* 3. Call snd_use_case_get("PlaybackPCM") to get ALSA PCM sink name for
159
* ringtone pcm data.
160
*/
161
#define SND_USE_CASE_MOD_CAPTURE_VOICE "Capture Voice"
162
#define SND_USE_CASE_MOD_CAPTURE_MUSIC "Capture Music"
163
#define SND_USE_CASE_MOD_PLAY_MUSIC "Play Music"
164
#define SND_USE_CASE_MOD_PLAY_VOICE "Play Voice"
165
#define SND_USE_CASE_MOD_PLAY_TONE "Play Tone"
166
#define SND_USE_CASE_MOD_ECHO_REF "Echo Reference"
167
/* add new modifiers to end of list */
168
169
178
#define SND_USE_CASE_TQ_MUSIC "Music"
179
#define SND_USE_CASE_TQ_VOICE "Voice"
180
#define SND_USE_CASE_TQ_TONES "Tones"
183
typedef struct snd_use_case_mgr snd_use_case_mgr_t;
184
191
char
*
snd_use_case_identifier
(
const
char
*fmt, ...);
192
199
int
snd_use_case_free_list
(
const
char
*list[],
int
items);
200
229
int
snd_use_case_get_list
(
snd_use_case_mgr_t
*uc_mgr,
230
const
char
*identifier,
231
const
char
**list[]);
232
233
378
int
snd_use_case_get
(
snd_use_case_mgr_t
*uc_mgr,
379
const
char
*identifier,
380
const
char
**value);
381
393
int
snd_use_case_geti
(
snd_use_case_mgr_t
*uc_mgr,
394
const
char
*identifier,
395
long
*value);
396
419
int
snd_use_case_set
(
snd_use_case_mgr_t
*uc_mgr,
420
const
char
*identifier,
421
const
char
*value);
422
445
int
snd_use_case_mgr_open
(
snd_use_case_mgr_t
**uc_mgr,
446
const
char
*card_name);
447
448
454
int
snd_use_case_mgr_reload
(
snd_use_case_mgr_t
*uc_mgr);
455
461
int
snd_use_case_mgr_close
(
snd_use_case_mgr_t
*uc_mgr);
462
468
int
snd_use_case_mgr_reset
(
snd_use_case_mgr_t
*uc_mgr);
469
470
/*
471
* helper functions
472
*/
473
479
static
__inline__
int
snd_use_case_card_list(
const
char
**list[])
480
{
481
return
snd_use_case_get_list
(NULL, NULL, list);
482
}
483
490
static
__inline__
int
snd_use_case_verb_list(
snd_use_case_mgr_t
*uc_mgr,
491
const
char
**list[])
492
{
493
return
snd_use_case_get_list
(uc_mgr,
"_verbs"
, list);
494
}
495
503
int
snd_use_case_parse_ctl_elem_id
(
snd_ctl_elem_id_t
*dst,
504
const
char
*ucm_id,
505
const
char
*value);
506
514
int
snd_use_case_parse_selem_id
(
snd_mixer_selem_id_t
*dst,
515
const
char
*ucm_id,
516
const
char
*value);
517
522
#ifdef __cplusplus
523
}
524
#endif
525
526
#endif
/* __ALSA_USE_CASE_H */
Generated by
1.8.3.1