ALSA project - the C library reference
/builddir/build/BUILD/alsa-lib-1.0.25/include/use-case.h
Go to the documentation of this file.
00001 
00010 /*
00011  *
00012  *  This library is free software; you can redistribute it and/or modify
00013  *  it under the terms of the GNU Lesser General Public License as
00014  *  published by the Free Software Foundation; either version 2.1 of
00015  *  the License, or (at your option) any later version.
00016  *
00017  *  This program is distributed in the hope that it will be useful,
00018  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
00019  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00020  *  GNU Lesser General Public License for more details.
00021  *
00022  *  You should have received a copy of the GNU Lesser General Public
00023  *  License along with this library; if not, write to the Free Software
00024  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
00025  *
00026  *  Copyright (C) 2008-2010 SlimLogic Ltd
00027  *  Copyright (C) 2010 Wolfson Microelectronics PLC
00028  *  Copyright (C) 2010 Texas Instruments Inc.
00029  *
00030  *  Support for the verb/device/modifier core logic and API,
00031  *  command line tool and file parser was kindly sponsored by
00032  *  Texas Instruments Inc.
00033  *  Support for multiple active modifiers and devices,
00034  *  transition sequences, multiple client access and user defined use
00035  *  cases was kindly sponsored by Wolfson Microelectronics PLC.
00036  */
00037 
00038 #ifndef __ALSA_USE_CASE_H
00039 #define __ALSA_USE_CASE_H
00040 
00041 #ifdef __cplusplus
00042 extern "C" {
00043 #endif
00044 
00092 /*
00093  * Use Case Verb.
00094  *
00095  * The use case verb is the main device audio action. e.g. the "HiFi" use
00096  * case verb will configure the audio hardware for HiFi Music playback
00097  * and capture.
00098  */
00099 #define SND_USE_CASE_VERB_INACTIVE              "Inactive"
00100 #define SND_USE_CASE_VERB_HIFI                  "HiFi"
00101 #define SND_USE_CASE_VERB_HIFI_LOW_POWER        "HiFi Low Power"
00102 #define SND_USE_CASE_VERB_VOICE                 "Voice"
00103 #define SND_USE_CASE_VERB_VOICE_LOW_POWER       "Voice Low Power"
00104 #define SND_USE_CASE_VERB_VOICECALL             "Voice Call"
00105 #define SND_USE_CASE_VERB_IP_VOICECALL          "Voice Call IP"
00106 #define SND_USE_CASE_VERB_ANALOG_RADIO          "FM Analog Radio"
00107 #define SND_USE_CASE_VERB_DIGITAL_RADIO         "FM Digital Radio"
00108 /* add new verbs to end of list */
00109 
00110 
00111 /*
00112  * Use Case Device.
00113  *
00114  * Physical system devices the render and capture audio. Devices can be OR'ed
00115  * together to support audio on simultaneous devices.
00116  */
00117 #define SND_USE_CASE_DEV_NONE           "None"
00118 #define SND_USE_CASE_DEV_SPEAKER        "Speaker"
00119 #define SND_USE_CASE_DEV_LINE           "Line"
00120 #define SND_USE_CASE_DEV_HEADPHONES     "Headphones"
00121 #define SND_USE_CASE_DEV_HEADSET        "Headset"
00122 #define SND_USE_CASE_DEV_HANDSET        "Handset"
00123 #define SND_USE_CASE_DEV_BLUETOOTH      "Bluetooth"
00124 #define SND_USE_CASE_DEV_EARPIECE       "Earpiece"
00125 #define SND_USE_CASE_DEV_SPDIF          "SPDIF"
00126 #define SND_USE_CASE_DEV_HDMI           "HDMI"
00127 /* add new devices to end of list */
00128 
00129 
00130 /*
00131  * Use Case Modifiers.
00132  *
00133  * The use case modifier allows runtime configuration changes to deal with
00134  * asynchronous events.
00135  *
00136  * e.g. to record a voice call :-
00137  *  1. Set verb to SND_USE_CASE_VERB_VOICECALL (for voice call)
00138  *  2. Set modifier SND_USE_CASE_MOD_CAPTURE_VOICE when capture required.
00139  *  3. Call snd_use_case_get("CapturePCM") to get ALSA source PCM name
00140  *     with captured voice pcm data.
00141  *
00142  * e.g. to play a ring tone when listenin to MP3 Music :-
00143  *  1. Set verb to SND_USE_CASE_VERB_HIFI (for MP3 playback)
00144  *  2. Set modifier to SND_USE_CASE_MOD_PLAY_TONE when incoming call happens.
00145  *  3. Call snd_use_case_get("PlaybackPCM") to get ALSA PCM sink name for
00146  *     ringtone pcm data.
00147  */
00148 #define SND_USE_CASE_MOD_CAPTURE_VOICE          "Capture Voice"
00149 #define SND_USE_CASE_MOD_CAPTURE_MUSIC          "Capture Music"
00150 #define SND_USE_CASE_MOD_PLAY_MUSIC             "Play Music"
00151 #define SND_USE_CASE_MOD_PLAY_VOICE             "Play Voice"
00152 #define SND_USE_CASE_MOD_PLAY_TONE              "Play Tone"
00153 #define SND_USE_CASE_MOD_ECHO_REF               "Echo Reference"
00154 /* add new modifiers to end of list */
00155 
00156 
00165 #define SND_USE_CASE_TQ_MUSIC           "Music"
00166 #define SND_USE_CASE_TQ_VOICE           "Voice"
00167 #define SND_USE_CASE_TQ_TONES           "Tones"
00168 
00170 typedef struct snd_use_case_mgr snd_use_case_mgr_t;
00171 
00178 char *snd_use_case_identifier(const char *fmt, ...);
00179 
00186 int snd_use_case_free_list(const char *list[], int items);
00187 
00214 int snd_use_case_get_list(snd_use_case_mgr_t *uc_mgr,
00215                           const char *identifier,
00216                           const char **list[]);
00217 
00218 
00272 int snd_use_case_get(snd_use_case_mgr_t *uc_mgr,
00273                      const char *identifier,
00274                      const char **value);
00275 
00287 int snd_use_case_geti(snd_use_case_mgr_t *uc_mgr,
00288                       const char *identifier,
00289                       long *value);
00290 
00313 int snd_use_case_set(snd_use_case_mgr_t *uc_mgr,
00314                      const char *identifier,
00315                      const char *value);
00316 
00323 int snd_use_case_mgr_open(snd_use_case_mgr_t **uc_mgr, const char *card_name);
00324 
00325 
00331 int snd_use_case_mgr_reload(snd_use_case_mgr_t *uc_mgr);
00332 
00338 int snd_use_case_mgr_close(snd_use_case_mgr_t *uc_mgr);
00339 
00345 int snd_use_case_mgr_reset(snd_use_case_mgr_t *uc_mgr);
00346 
00347 /*
00348  * helper functions
00349  */
00350 
00356 static inline int snd_use_case_card_list(const char **list[])
00357 {
00358         return snd_use_case_get_list(NULL, NULL, list);
00359 }
00360 
00367 static inline int snd_use_case_verb_list(snd_use_case_mgr_t *uc_mgr,
00368                                          const char **list[])
00369 {
00370         return snd_use_case_get_list(uc_mgr, "_verbs", list);
00371 }
00372 
00377 #ifdef __cplusplus
00378 }
00379 #endif
00380 
00381 #endif /* __ALSA_USE_CASE_H */
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines

Generated for ALSA project - the C library reference by doxygen 1.7.6.1