ALSA project - the C library reference

/usr/src/packages/BUILD/alsa-lib-1.0.24.1/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 
00091 /*
00092  * Use Case Verb.
00093  *
00094  * The use case verb is the main device audio action. e.g. the "HiFi" use
00095  * case verb will configure the audio hardware for HiFi Music playback
00096  * and capture.
00097  */
00098 #define SND_USE_CASE_VERB_INACTIVE              "Inactive"
00099 #define SND_USE_CASE_VERB_HIFI                  "HiFi"
00100 #define SND_USE_CASE_VERB_HIFI_LOW_POWER        "HiFi Low Power"
00101 #define SND_USE_CASE_VERB_VOICE                 "Voice"
00102 #define SND_USE_CASE_VERB_VOICE_LOW_POWER       "Voice Low Power"
00103 #define SND_USE_CASE_VERB_VOICECALL             "Voice Call"
00104 #define SND_USE_CASE_VERB_IP_VOICECALL          "Voice Call IP"
00105 #define SND_USE_CASE_VERB_ANALOG_RADIO          "FM Analog Radio"
00106 #define SND_USE_CASE_VERB_DIGITAL_RADIO         "FM Digital Radio"
00107 /* add new verbs to end of list */
00108 
00109 
00110 /*
00111  * Use Case Device.
00112  *
00113  * Physical system devices the render and capture audio. Devices can be OR'ed
00114  * together to support audio on similtanious devices.
00115  */
00116 #define SND_USE_CASE_DEV_NONE           "None"
00117 #define SND_USE_CASE_DEV_SPEAKER        "Speaker"
00118 #define SND_USE_CASE_DEV_LINE           "Line"
00119 #define SND_USE_CASE_DEV_HEADPHONES     "Headphones"
00120 #define SND_USE_CASE_DEV_HEADSET        "Headset"
00121 #define SND_USE_CASE_DEV_HANDSET        "Handset"
00122 #define SND_USE_CASE_DEV_BLUETOOTH      "Bluetooth"
00123 #define SND_USE_CASE_DEV_EARPIECE       "Earpiece"
00124 #define SND_USE_CASE_DEV_SPDIF          "SPDIF"
00125 #define SND_USE_CASE_DEV_HDMI           "HDMI"
00126 /* add new devices to end of list */
00127 
00128 
00129 /*
00130  * Use Case Modifiers.
00131  *
00132  * The use case modifier allows runtime configuration changes to deal with
00133  * asynchronous events.
00134  *
00135  * e.g. to record a voice call :-
00136  *  1. Set verb to SND_USE_CASE_VERB_VOICECALL (for voice call)
00137  *  2. Set modifier SND_USE_CASE_MOD_CAPTURE_VOICE when capture required.
00138  *  3. Call snd_use_case_get("_pcm_/_cdevice") to get ALSA source PCM name
00139  *     with captured voice pcm data.
00140  *
00141  * e.g. to play a ring tone when listenin to MP3 Music :-
00142  *  1. Set verb to SND_USE_CASE_VERB_HIFI (for MP3 playback)
00143  *  2. Set modifier to SND_USE_CASE_MOD_PLAY_TONE when incoming call happens.
00144  *  3. Call snd_use_case_get("_pcm_/_pdevice") to get ALSA PCM sink name for
00145  *     ringtone pcm data.
00146  */
00147 #define SND_USE_CASE_MOD_CAPTURE_VOICE          "Capture Voice"
00148 #define SND_USE_CASE_MOD_CAPTURE_MUSIC          "Capture Music"
00149 #define SND_USE_CASE_MOD_PLAY_MUSIC             "Play Music"
00150 #define SND_USE_CASE_MOD_PLAY_VOICE             "Play Voice"
00151 #define SND_USE_CASE_MOD_PLAY_TONE              "Play Tone"
00152 #define SND_USE_CASE_MOD_ECHO_REF               "Echo Reference"
00153 /* add new modifiers to end of list */
00154 
00155 
00164 #define SND_USE_CASE_TQ_MUSIC           "Music"
00165 #define SND_USE_CASE_TQ_VOICE           "Voice"
00166 #define SND_USE_CASE_TQ_TONES           "Tones"
00167 
00169 typedef struct snd_use_case_mgr snd_use_case_mgr_t;
00170 
00177 char *snd_use_case_identifier(const char *fmt, ...);
00178 
00185 int snd_use_case_free_list(const char *list[], int items);
00186 
00208 int snd_use_case_get_list(snd_use_case_mgr_t *uc_mgr,
00209                           const char *identifier,
00210                           const char **list[]);
00211 
00212 
00240 int snd_use_case_get(snd_use_case_mgr_t *uc_mgr,
00241                      const char *identifier,
00242                      const char **value);
00243 
00255 int snd_use_case_geti(snd_use_case_mgr_t *uc_mgr,
00256                       const char *identifier,
00257                       long *value);
00258 
00281 int snd_use_case_set(snd_use_case_mgr_t *uc_mgr,
00282                      const char *identifier,
00283                      const char *value);
00284 
00291 int snd_use_case_mgr_open(snd_use_case_mgr_t **uc_mgr, const char *card_name);
00292 
00293 
00299 int snd_use_case_mgr_reload(snd_use_case_mgr_t *uc_mgr);
00300 
00306 int snd_use_case_mgr_close(snd_use_case_mgr_t *uc_mgr);
00307 
00313 int snd_use_case_mgr_reset(snd_use_case_mgr_t *uc_mgr);
00314 
00315 /*
00316  * helper functions
00317  */
00318 
00324 static inline int snd_use_case_card_list(const char **list[])
00325 {
00326         return snd_use_case_get_list(NULL, NULL, list);
00327 }
00328 
00335 static inline int snd_use_case_verb_list(snd_use_case_mgr_t *uc_mgr,
00336                                          const char **list[])
00337 {
00338         return snd_use_case_get_list(uc_mgr, "_verbs", list);
00339 }
00340 
00345 #ifdef __cplusplus
00346 }
00347 #endif
00348 
00349 #endif /* __ALSA_USE_CASE_H */
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines