- Main Page
- Related Pages
- Modules
- Data Structures
- Files
- Examples

- File List
- Globals

# /builddir/build/BUILD/alsa-lib-1.1.0/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 simultaneous 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("CapturePCM") 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("PlaybackPCM") 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"
    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
    00213 int snd_use_case_get_list(snd_use_case_mgr_t *uc_mgr,
    00214                           const char *identifier,
    00215                           const char **list[]);
    00216
    00217
    00322 int snd_use_case_get(snd_use_case_mgr_t *uc_mgr,
    00323                      const char *identifier,
    00324                      const char **value);
    00325
    00337 int snd_use_case_geti(snd_use_case_mgr_t *uc_mgr,
    00338                       const char *identifier,
    00339                       long *value);
    00340
    00363 int snd_use_case_set(snd_use_case_mgr_t *uc_mgr,
    00364                      const char *identifier,
    00365                      const char *value);
    00366
    00373 int snd_use_case_mgr_open(snd_use_case_mgr_t **uc_mgr, const char *card_name);
    00374
    00375
    00381 int snd_use_case_mgr_reload(snd_use_case_mgr_t *uc_mgr);
    00382
    00388 int snd_use_case_mgr_close(snd_use_case_mgr_t *uc_mgr);
    00389
    00395 int snd_use_case_mgr_reset(snd_use_case_mgr_t *uc_mgr);
    00396
    00397 /*
    00398  * helper functions
    00399  */
    00400
    00406 static __inline__ int snd_use_case_card_list(const char **list[])
    00407 {
    00408         return snd_use_case_get_list(NULL, NULL, list);
    00409 }
    00410
    00417 static __inline__ int snd_use_case_verb_list(snd_use_case_mgr_t *uc_mgr,
    00418                                          const char **list[])
    00419 {
    00420         return snd_use_case_get_list(uc_mgr, "_verbs", list);
    00421 }
    00422
    00427 #ifdef __cplusplus
    00428 }
    00429 #endif
    00430
    00431 #endif /* __ALSA_USE_CASE_H */

All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines