FreeCalypso > hg > fc-tourmaline
view src/cs/services/audio/audio_api.h @ 222:c336ed5691a5
FCHG: clear BCICTL2 on boot for extra safety
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Mon, 26 Apr 2021 22:04:10 +0000 |
parents | 4e78acac3d88 |
children |
line wrap: on
line source
/****************************************************************************/ /* */ /* File Name: audio_api.h */ /* */ /* Purpose: This file contains data structures and functions prototypes */ /* used to send events to the AUDIO SWE. */ /* */ /* Version 0.1 */ /* */ /* Date Modification */ /* ------------------------------------ */ /* 18 May 2001 Create */ /* */ /* Author Francois Mazard - Stephanie Gerthoux */ /* */ /* (C) Copyright 2001 by Texas Instruments Incorporated, All Rights Reserved*/ /****************************************************************************/ #ifndef __AUDIO_API_H_ #define __AUDIO_API_H_ #ifdef __cplusplus extern "C" { #endif #define AUDIO_EVENTS_MASK (0x3000) #define AUDIO_EVENT_EXTERN (0x0C00) /* Immediat return */ typedef INT8 T_AUDIO_RET; /* possible values */ #define AUDIO_OK (0) #define AUDIO_ERROR (-1) #define AUDIO_MODE_ERROR (-2) /* Bad acquisition of the word. The word is too long or too short */ #define AUDIO_BAD_ACQUISITION (-3) /* The DSP task to acquire the word takes to much time */ #define AUDIO_TIME_OUT (-4) /* Bad update of the model. The model from the database is too different */ /* than the model built during the acquisition. */ #define AUDIO_BAD_UPDATE (-5) /* This word is out of vocabulary or the best words are too close */ #define AUDIO_BAD_RECOGNITION (-6) /* A word generated by the CTO algorithm is the best word. */ #define AUDIO_CTO_WORD (-7) /* The best word isn't the word to update. */ #define AUDIO_CHECK_ERROR (-8) #define AUDIO_NOT_ENOUGH_OSCILLATOR (-9) /******************************* AUDIO DRIVER *****************************/ #define AUDIO_VM_AMR_RECORD_SESSION_ID (10) #define AUDIO_VM_AMR_PLAY_SESSION_ID (11) #define AUDIO_MIDI_SESSION_ID (12) /******************************* KEY BEEP REGISTRATION *****************************/ /* Definition of no_beep */ #define NO_BEEP (0) /* Parameters */ typedef struct { UINT16 frequency_beep[2]; /* Frequency of the 2 beeps */ INT8 amplitude_beep[2]; /* Amplitude of the 2 beeps */ UINT16 duration; } T_AUDIO_KEYBEEP_PARAMETER; /* Prototype */ T_AUDIO_RET audio_keybeep_start (T_AUDIO_KEYBEEP_PARAMETER parameter, T_RV_RETURN return_path); /* Event return */ #define AUDIO_KEYBEEP_STATUS_MSG (0x0001 | AUDIO_EVENT_EXTERN | AUDIO_EVENTS_MASK) typedef struct { T_RV_HDR os_hdr; INT8 status; } T_AUDIO_KEYBEEP_STATUS; /* Prototype */ T_AUDIO_RET audio_keybeep_stop (T_RV_RETURN return_path); /******************************* TONES REGISTRATION *****************************/ /* Definition of no_tone and tone_infinite */ #define NO_TONE (0) #define TONE_INFINITE (0xFFFF) /* Parameters */ typedef struct { UINT16 start_tone; /* start date of the tone */ UINT16 stop_tone; /* stop date of the tone */ UINT16 frequency_tone; /* frequency of the tone */ INT8 amplitude_tone; /* amplitude of the tone */ } T_AUDIO_TONE_DESC; typedef struct { T_AUDIO_TONE_DESC tones[3]; /* Description of the 3 tones */ UINT16 frame_duration; /* Duration of the tones frame */ UINT16 sequence_duration; /* Duration of the sequence */ UINT16 period_duration; /* Duration of the period */ UINT16 repetition; /* number of period */ } T_AUDIO_TONES_PARAMETER; /* Prototype */ T_AUDIO_RET audio_tones_start (T_AUDIO_TONES_PARAMETER* p_parameter, T_RV_RETURN return_path); /* Event return */ #define AUDIO_TONES_STATUS_MSG (0x0002 | AUDIO_EVENT_EXTERN | AUDIO_EVENTS_MASK) typedef struct { T_RV_HDR os_hdr; INT8 status; } T_AUDIO_TONES_STATUS; /* Prototype */ T_AUDIO_RET audio_tones_stop (T_RV_RETURN return_path); /******************************* AUDIO DRIVER REGISTRATION ************************/ T_AUDIO_RET audio_driver_start_session(UINT8 channel_id, T_RV_RETURN notification_return_path); T_AUDIO_RET audio_driver_stop_session(UINT8 channel_id); T_AUDIO_RET audio_driver_free_session(UINT8 channel_id, T_RV_RETURN return_path); T_AUDIO_RET audio_driver_get_play_buffer(UINT8 channel_id, UINT8 **pp_buffer); T_AUDIO_RET audio_driver_play_buffer(UINT8 channel_id, UINT8 *p_buffer); #define AUDIO_DRIVER_INIT_STATUS_MSG (0x0003 | AUDIO_EVENT_EXTERN | AUDIO_EVENTS_MASK) typedef struct { T_RV_HDR os_hdr; INT8 status; UINT8 channel_id; UINT8 session_id; } T_AUDIO_DRIVER_INIT_STATUS; #define AUDIO_DRIVER_NOTIFICATION_MSG (0x0004 | AUDIO_EVENT_EXTERN | AUDIO_EVENTS_MASK) typedef struct { T_RV_HDR header; UINT8 channel_id; UINT16 *p_buffer; } T_AUDIO_DRIVER_NOTIFICATION; #define AUDIO_DRIVER_LAST_NOTIFICATION_MSG (0x0005 | AUDIO_EVENT_EXTERN | AUDIO_EVENTS_MASK) typedef struct { T_RV_HDR header; UINT8 channel_id; UINT16 *p_buffer; UINT32 recorded_size; } T_AUDIO_DRIVER_LAST_NOTIFICATION; #define AUDIO_DRIVER_STATUS_MSG (0x0006 | AUDIO_EVENT_EXTERN | AUDIO_EVENTS_MASK) typedef struct { T_RV_HDR os_hdr; INT8 status; UINT8 status_type; UINT8 channel_id; } T_AUDIO_DRIVER_STATUS; #define AUDIO_START_STATUS (1) #define AUDIO_STOP_STATUS (2) #define AUDIO_FREE_STATUS (3) typedef struct { UINT16 buffer_size; UINT8 nb_buffer; } T_AUDIO_DRIVER_PARAMETER; /******************************* MELODY AND VOICE MEMO REGISTRATION *****************************/ /* Definition of the maximum size of the path name */ #define AUDIO_PATH_NAME_MAX_SIZE (20) /* Definition of the maximum number of instruments */ #define AUDIO_MELODY_E2_MAX_NUMBER_OF_INSTRUMENT (128) /******************************* MELODY REGISTRATION *****************************/ /* Definition of loopback melody mode */ #define AUDIO_MELODY_NO_LOOPBACK (0) #define AUDIO_MELODY_LOOPBACK (1) /* Definition ofthe mode of melody */ #define AUDIO_MELODY_GAME_MODE (0) #define AUDIO_MELODY_NORMAL_MODE (1) /******** Melody E1 ********/ /* Parameters */ typedef struct { char melody_name[AUDIO_PATH_NAME_MAX_SIZE]; /* File name of the melody */ BOOLEAN loopback; /* the melody is played indefinitely */ BOOLEAN melody_mode; /* mode of the melody */ } T_AUDIO_MELODY_E1_PARAMETER; typedef struct { char melody_name[AUDIO_PATH_NAME_MAX_SIZE]; /* File name of the melody */ } T_AUDIO_MELODY_E1_STOP_PARAMETER; /* Prototype */ T_AUDIO_RET audio_melody_E1_start (T_AUDIO_MELODY_E1_PARAMETER *parameter, T_RV_RETURN return_path); /* Event return */ #define AUDIO_MELODY_E1_STATUS_MSG (0x0007 | AUDIO_EVENT_EXTERN | AUDIO_EVENTS_MASK) typedef struct { T_RV_HDR os_hdr; INT8 status; } T_AUDIO_MELODY_E1_STATUS; /* Prototype */ T_AUDIO_RET audio_melody_E1_stop (T_AUDIO_MELODY_E1_STOP_PARAMETER *parameter, T_RV_RETURN return_path); /******** Melody E2 ********/ /* Parameters */ typedef struct { char melody_E2_name[AUDIO_PATH_NAME_MAX_SIZE]; /* File name of the melody */ BOOLEAN E2_loopback; /* the melody is played indefinitely */ BOOLEAN melody_E2_mode; /* mode of the melody (Game/Normal)*/ } T_AUDIO_MELODY_E2_PARAMETER; typedef struct { char melody_E2_name[AUDIO_PATH_NAME_MAX_SIZE]; /* File name of the melody */ } T_AUDIO_MELODY_E2_STOP_PARAMETER; typedef struct { char melody_E2_file_name[AUDIO_PATH_NAME_MAX_SIZE]; /* File name of the melody */ } T_AUDIO_MELODY_E2_LOAD_FILE_INSTR_PARAMETER; /* Prototype */ T_AUDIO_RET audio_melody_E2_load_file_instruments ( T_AUDIO_MELODY_E2_LOAD_FILE_INSTR_PARAMETER *p_parameter); T_AUDIO_RET audio_melody_E2_start (T_AUDIO_MELODY_E2_PARAMETER *p_parameter, T_RV_RETURN return_path); T_AUDIO_RET audio_melody_E2_stop (T_AUDIO_MELODY_E2_STOP_PARAMETER *parameter, T_RV_RETURN return_path); /* Event return */ /* For melody_E2 */ #define AUDIO_MELODY_E2_STATUS_MSG (0x0008 | AUDIO_EVENT_EXTERN | AUDIO_EVENTS_MASK) typedef struct { T_RV_HDR os_hdr; INT8 status; } T_AUDIO_MELODY_E2_STATUS; /******************************* VOICE MEMO REGISTRATION *****************************/ /* ---------------------------- */ /* Voice memo PLAY */ /* ---------------------------- */ /* Parameters */ typedef struct { char memo_name[AUDIO_PATH_NAME_MAX_SIZE]; /* File name of the Voice Memo play */ } T_AUDIO_VM_PLAY_PARAMETER; /* Prototype */ T_AUDIO_RET audio_vm_play_start(T_AUDIO_VM_PLAY_PARAMETER *p_parameter, T_RV_RETURN return_path); /* Event return */ #define AUDIO_VM_PLAY_STATUS_MSG (0x0009 | AUDIO_EVENT_EXTERN | AUDIO_EVENTS_MASK) typedef struct { T_RV_HDR os_hdr; INT8 status; } T_AUDIO_VM_PLAY_STATUS; /* Prototype */ T_AUDIO_RET audio_vm_play_stop (T_RV_RETURN return_path); /* ---------------------------- */ /* Voice memo RECORD */ /* ---------------------------- */ /* Definition of compression mode */ #define AUDIO_VM_NO_COMPRESSION_MODE (0) #define AUDIO_VM_COMPRESSION_MODE (1) /* Parameters */ typedef struct { char memo_name[AUDIO_PATH_NAME_MAX_SIZE]; /* File name of the Voice Memo play */ UINT32 memo_duration; /* maximum duration of the voice memo */ BOOL compression_mode; /* activate the compression */ UINT16 microphone_gain; /* recording gain applies to microphone */ UINT16 network_gain; /* gain applies to the network voice */ } T_AUDIO_VM_RECORD_PARAMETER; /* Prototype */ T_AUDIO_RET audio_vm_record_start( T_AUDIO_VM_RECORD_PARAMETER *p_record_parameter, T_AUDIO_TONES_PARAMETER *p_tones_parameter, T_RV_RETURN return_path); /* Event return */ #define AUDIO_VM_RECORD_STATUS_MSG (0x000A | AUDIO_EVENT_EXTERN | AUDIO_EVENTS_MASK) typedef struct { T_RV_HDR os_hdr; INT8 status; UINT16 recorded_duration; } T_AUDIO_VM_RECORD_STATUS; /* Prototype */ T_AUDIO_RET audio_vm_record_stop (T_RV_RETURN return_path); /******************************* VOICE MEMO DRIVER AMR REGISTRATION *****************************/ /* ---------------------------- */ /* Voice memo AMR PLAY */ /* ---------------------------- */ /* Parameters */ typedef struct { char memo_name[AUDIO_PATH_NAME_MAX_SIZE]; /* File name of the Voice Memo AMR play */ } T_AUDIO_AMR_PLAY_FROM_FFS_PARAMETER; typedef T_AUDIO_AMR_PLAY_FROM_FFS_PARAMETER T_AUDIO_MMS_PLAY_FROM_FFS_PARAMETER; typedef struct { UINT8 *p_buffer; /* pointer on buffer to copy from */ UINT16 buffer_size; /* size of buffer */ } T_AUDIO_AMR_PLAY_FROM_RAM_PARAMETER; #define AUDIO_AMR_PLAY_FROM_MEM_STATUS_MSG (0x000B | AUDIO_EVENT_EXTERN | AUDIO_EVENTS_MASK) typedef struct { T_RV_HDR os_hdr; INT8 status; } T_AUDIO_AMR_PLAY_STATUS; /* Prototype */ T_AUDIO_RET audio_amr_play_from_ffs_start (T_AUDIO_AMR_PLAY_FROM_FFS_PARAMETER *p_record_parameter, T_RV_RETURN return_path); T_AUDIO_RET audio_amr_play_from_ffs_stop (void); T_AUDIO_RET audio_mms_play_from_ffs_start (T_AUDIO_MMS_PLAY_FROM_FFS_PARAMETER *p_record_parameter, T_RV_RETURN return_path); T_AUDIO_RET audio_mms_play_from_ffs_stop (void); T_AUDIO_RET audio_amr_play_from_ram_start (T_AUDIO_AMR_PLAY_FROM_RAM_PARAMETER *p_record_parameter, T_RV_RETURN return_path); T_AUDIO_RET audio_amr_play_from_ram_stop (void); T_AUDIO_RET audio_driver_init_vm_amr_play_session(T_AUDIO_DRIVER_PARAMETER *p_driver_parameter, T_RV_RETURN return_path); /* ---------------------------- */ /* Voice memo AMR RECORD */ /* ---------------------------- */ /* Definition of compression mode */ #define AUDIO_AMR_NO_COMPRESSION_MODE (0) #define AUDIO_AMR_COMPRESSION_MODE (1) /* Definition of AMR vocoders */ #define AUDIO_AMR_VOCODER_4_75 (0) #define AUDIO_AMR_VOCODER_5_15 (1) #define AUDIO_AMR_VOCODER_5_90 (2) #define AUDIO_AMR_VOCODER_6_70 (3) #define AUDIO_AMR_VOCODER_7_40 (4) #define AUDIO_AMR_VOCODER_7_95 (5) #define AUDIO_AMR_VOCODER_10_2 (6) #define AUDIO_AMR_VOCODER_12_2 (7) /* Parameters */ typedef struct { char memo_name[AUDIO_PATH_NAME_MAX_SIZE]; /* File name of the Voice Memo AMR play */ UINT32 memo_duration; /* maximum duration of the voice memo */ BOOL compression_mode; /* activate the compression */ UINT16 microphone_gain; /* recording gain applies to microphone */ UINT8 amr_vocoder; /* AMR codec */ } T_AUDIO_AMR_RECORD_TO_FFS_PARAMETER; typedef T_AUDIO_AMR_RECORD_TO_FFS_PARAMETER T_AUDIO_MMS_RECORD_TO_FFS_PARAMETER; typedef struct { UINT8 *p_buffer; /* pointer on buffer to copy to, length must be > memo_duration */ UINT32 memo_duration; /* maximum duration of the voice memo */ BOOL compression_mode; /* activate the compression */ UINT16 microphone_gain; /* recording gain applies to microphone */ UINT8 amr_vocoder; /* AMR codec */ } T_AUDIO_AMR_RECORD_TO_RAM_PARAMETER; /* Parameters */ typedef struct { UINT32 memo_duration; /* maximum duration of the voice memo */ BOOL compression_mode; /* activate the compression */ UINT16 microphone_gain; /* recording gain applies to microphone */ UINT8 amr_vocoder; /* AMR codec */ } T_AUDIO_DRIVER_VM_AMR_RECORD_PARAMETER; #define AUDIO_AMR_RECORD_TO_MEM_STATUS_MSG (0x000C | AUDIO_EVENT_EXTERN | AUDIO_EVENTS_MASK) typedef struct { T_RV_HDR os_hdr; INT8 status; UINT32 recorded_duration; } T_AUDIO_AMR_RECORD_STATUS; /* Prototype */ T_AUDIO_RET audio_amr_record_to_ffs_start (T_AUDIO_AMR_RECORD_TO_FFS_PARAMETER *p_record_parameter, T_RV_RETURN return_path); T_AUDIO_RET audio_amr_record_to_ffs_stop (void); T_AUDIO_RET audio_mms_record_to_ffs_start (T_AUDIO_MMS_RECORD_TO_FFS_PARAMETER *p_record_parameter, T_RV_RETURN return_path); T_AUDIO_RET audio_mms_record_to_ffs_stop (void); T_AUDIO_RET audio_amr_record_to_ram_start (T_AUDIO_AMR_RECORD_TO_RAM_PARAMETER *p_record_parameter, T_RV_RETURN return_path); T_AUDIO_RET audio_amr_record_to_ram_stop (void); T_AUDIO_RET audio_driver_init_vm_amr_record_session(T_AUDIO_DRIVER_VM_AMR_RECORD_PARAMETER *p_record_parameter, T_AUDIO_DRIVER_PARAMETER *p_driver_parameter, T_RV_RETURN return_path); /******************************* AUDIO SPEECH RECOGNITION REGISTRATION ************************/ /* ---------------------------- */ /* Start Enrollment */ /* ---------------------------- */ /* Symbolic constant */ #define AUDIO_SR_RECORD_SPEECH (1) #define AUDIO_SR_NO_RECORD_SPEECH (0) /* maximum number of vocabulary name */ #define AUDIO_SR_MAX_VOCABULARY_NAME (10) /* Parameters */ typedef struct { char enroll_name[AUDIO_PATH_NAME_MAX_SIZE]; /* name and path of the word to enroll */ BOOL record_speech; /* speech sample must be recorded or not */ }T_AUDIO_SR_ENROLL_PARAMETER; /* Prototype */ T_AUDIO_RET audio_sr_enroll_start (T_AUDIO_SR_ENROLL_PARAMETER *p_parameter, T_RV_RETURN return_path); /* Event return */ #define AUDIO_SR_ENROLL_STATUS_MSG (0x000D | AUDIO_EVENT_EXTERN | AUDIO_EVENTS_MASK) typedef struct { T_RV_HDR os_hdr; INT8 status; } T_AUDIO_SR_ENROLL_STATUS; /* ---------------------------- */ /* Stop Enrollment */ /* ---------------------------- */ /* Symbolic constant */ /* Parameters */ /* Prototype */ T_AUDIO_RET audio_sr_enroll_stop ( T_RV_RETURN return_path ); /* Event return */ /* ---------------------------- */ /* Start Update */ /* ---------------------------- */ /* Symbolic constant */ /* Parameters */ typedef struct { char update_name[AUDIO_PATH_NAME_MAX_SIZE]; /* name and path of the word to update */ BOOL record_speech; /* speech sample must be recorded or not */ }T_AUDIO_SR_UPDATE_PARAMETER; /* Prototype */ T_AUDIO_RET audio_sr_update_start (T_AUDIO_SR_UPDATE_PARAMETER *p_parameter, T_RV_RETURN return_path); /* Event return */ #define AUDIO_SR_UPDATE_STATUS_MSG (0x000E | AUDIO_EVENT_EXTERN | AUDIO_EVENTS_MASK) typedef struct { T_RV_HDR os_hdr; INT8 status; } T_AUDIO_SR_UPDATE_STATUS; /* ---------------------------- */ /* Stop Update */ /* ---------------------------- */ /* Symbolic constant */ /* Parameters */ /* Prototype */ T_AUDIO_RET audio_sr_update_stop ( T_RV_RETURN return_path ); /* Event return */ /* ---------------------------- */ /* Start Update */ /* ---------------------------- */ /* Symbolic constant */ /* Parameters */ typedef struct { /* directory of the vocabulary database */ char database_directory[AUDIO_PATH_NAME_MAX_SIZE]; }T_AUDIO_SR_RECO_PARAMETER; /* Prototype */ T_AUDIO_RET audio_sr_reco_start (T_AUDIO_SR_RECO_PARAMETER *p_parameter, T_RV_RETURN return_path); /* Event return */ #define AUDIO_SR_RECO_STATUS_MSG (0x000F | AUDIO_EVENT_EXTERN | AUDIO_EVENTS_MASK) typedef struct { T_RV_HDR os_hdr; /* status about the recognition task */ INT8 status; /*path ofthe recognized word */ char word_recognized[AUDIO_PATH_NAME_MAX_SIZE]; } T_AUDIO_SR_RECO_STATUS; /* ---------------------------- */ /* Stop reco */ /* ---------------------------- */ /* Symbolic constant */ /* Parameters */ /* Prototype */ T_AUDIO_RET audio_sr_reco_stop ( T_RV_RETURN return_path ); /* Event return */ /******************************* MIDI REGISTRATION *****************************/ // Parameters typedef struct { char midi_name[AUDIO_PATH_NAME_MAX_SIZE]; // File name of the MIDI to play } T_AUDIO_MIDI_PARAMETER; // Prototype T_AUDIO_RET audio_midi_start(T_AUDIO_MIDI_PARAMETER *parameter, T_RV_RETURN *p_return_path); // Event return #define AUDIO_MIDI_STATUS_MSG (0x0010 | AUDIO_EVENT_EXTERN | AUDIO_EVENTS_MASK) typedef struct { T_RV_HDR os_hdr; INT8 status; } T_AUDIO_MIDI_STATUS; // Prototype T_AUDIO_RET audio_midi_stop(void); T_AUDIO_RET audio_driver_init_midi_session(T_AUDIO_DRIVER_PARAMETER *p_driver_parameter, T_RV_RETURN *p_return_path); /******************************* AUDIO CONFIGURATION REGISTRATION *****************************/ /******************/ /*** Voice path ***/ /******************/ /* Parameters */ /* Voice path selection */ #define AUDIO_GSM_VOICE_PATH (0) #define AUDIO_BLUETOOTH_CORDLESS_VOICE_PATH (1) #define AUDIO_BLUETOOTH_HEADSET (2) #define AUDIO_DAI_ENCODER (12) #define AUDIO_DAI_DECODER (11) #define AUDIO_DAI_ACOUSTIC (14) /* Structure */ /* audio path used */ typedef UINT8 T_AUDIO_VOICE_PATH_SETTING; /********************************/ /*** Microphone configuration ***/ /********************************/ /* Parameters */ /* Mode */ #define AUDIO_MICROPHONE_HANDHELD (0) #define AUDIO_MICROPHONE_HANDFREE (1) #define AUDIO_MICROPHONE_HEADSET (2) /* gain */ #define AUDIO_MICROPHONE_MUTE (13) /* output_bias */ #define AUDIO_MICROPHONE_OUTPUT_BIAS_2_0V (0) #define AUDIO_MICROPHONE_OUTPUT_BIAS_2_5V (1) /* extra gain */ #define AUDIO_MICROPHONE_AUX_GAIN_28_2dB (0) #define AUDIO_MICROPHONE_AUX_GAIN_4_6dB (1) /* Structure */ typedef struct { UINT16 coefficient[31]; } T_AUDIO_FIR_COEF; typedef struct { /* gain of the microphone */ INT8 gain; /* microphone output bias */ INT8 output_bias; /* coefficients of the microphone FIR */ T_AUDIO_FIR_COEF fir; } T_AUDIO_MICROPHONE_MODE_HANDHELD; typedef struct { /* gain of the microphone */ INT8 gain; /* extra gain of the microphone */ INT8 extra_gain; /* microphone output bias */ INT8 output_bias; /* coefficients of the microphone FIR */ T_AUDIO_FIR_COEF fir; } T_AUDIO_MICROPHONE_MODE_HANDFREE; typedef struct { /* gain of the microphone */ INT8 gain; /* microphone output bias */ INT8 output_bias; /* coefficients of the microphone FIR */ T_AUDIO_FIR_COEF fir; } T_AUDIO_MICROPHONE_MODE_HEADSET; typedef union { /* handheld mode parameters */ T_AUDIO_MICROPHONE_MODE_HANDHELD handheld; /* handfree mode parameters */ T_AUDIO_MICROPHONE_MODE_HANDFREE handfree; /* headset mode parameters */ T_AUDIO_MICROPHONE_MODE_HEADSET headset; } T_AUDIO_MICROPHONE_MODE; typedef struct { /* mode of the microphone */ INT8 mode; /* Setting of the current mode */ T_AUDIO_MICROPHONE_MODE setting; } T_AUDIO_MICROPHONE_SETTING; /*****************************/ /*** Speaker configuration ***/ /*****************************/ /* Paratemers */ /* Mode*/ #define AUDIO_SPEAKER_HANDHELD (0) #define AUDIO_SPEAKER_HANDFREE (1) #define AUDIO_SPEAKER_HEADSET (2) #define AUDIO_SPEAKER_BUZZER (3) #define AUDIO_SPEAKER_HANDHELD_HANDFREE (4) /* filter */ #define AUDIO_SPEAKER_FILTER_ON (0) #define AUDIO_SPEAKER_FILTER_OFF (1) /* Buzzer */ #define AUDIO_SPEAKER_BUZZER_ON (0) #define AUDIO_SPEAKER_BUZZER_OFF (1) /* Structure */ typedef struct { /* gain of the speaker */ INT8 gain; /* use the audio filter */ INT8 audio_filter; /* coefficients of the speaker FIR */ T_AUDIO_FIR_COEF fir; } T_AUDIO_SPEAKER_MODE_HANDHELD; typedef struct { /* gain of the speaker */ INT8 gain; /* use the audio filter */ INT8 audio_filter; /* coefficients of the speaker FIR */ T_AUDIO_FIR_COEF fir; } T_AUDIO_SPEAKER_MODE_HANDFREE; typedef struct { /* gain of the speaker */ INT8 gain; /* use the audio filter */ INT8 audio_filter; /* coefficients of the speaker FIR */ T_AUDIO_FIR_COEF fir; } T_AUDIO_SPEAKER_MODE_HEADSET; typedef struct { /* activate the buzzer */ INT8 activate; } T_AUDIO_SPEAKER_MODE_BUZZER; typedef struct { /* gain of the speaker */ INT8 gain; /* use the audio filter */ INT8 audio_filter; /* coefficients of the speaker FIR */ T_AUDIO_FIR_COEF fir; } T_AUDIO_SPEAKER_MODE_HANDHELD_HANDFREE; typedef union { /* handheld mode parameters */ T_AUDIO_SPEAKER_MODE_HANDHELD handheld; /* handfree mode parameters */ T_AUDIO_SPEAKER_MODE_HANDFREE handfree; /* headset mode parameters */ T_AUDIO_SPEAKER_MODE_HEADSET headset; /* buzzer mode parameters */ T_AUDIO_SPEAKER_MODE_BUZZER buzzer; /* handheld and handfree mode parameters */ T_AUDIO_SPEAKER_MODE_HANDHELD_HANDFREE handheld_handfree; } T_AUDIO_SPEAKER_MODE; typedef struct { /* mode of the speaker */ INT8 mode; /* Setting of the current mode */ T_AUDIO_SPEAKER_MODE setting; } T_AUDIO_SPEAKER_SETTING; /********************************************/ /*** Mirophone-Speaker loop configuration ***/ /********************************************/ /* sidetone */ #define AUDIO_SIDETONE_OPEN (-26) /* AEC enable */ #define AUDIO_AEC_ENABLE (0x0002) #define AUDIO_AEC_DISABLE (0x0000) /* AEC visibility */ #define AUDIO_AEC_VISIBILITY_ENABLE (0x0200) #define AUDIO_AEC_VISIBILITY_DISABLE (0x0000) /* AEC mode */ #define AUDIO_SHORT_ECHO (0x0200) #define AUDIO_LONG_ECHO (0x0000) /* echo suppression level */ #if (L1_NEW_AEC) #define AUDIO_MAX_ECHO_0dB (0x7FFF) #define AUDIO_MAX_ECHO_2dB (0x65AA) #define AUDIO_MAX_ECHO_3dB (0x59AD) #define AUDIO_MAX_ECHO_6dB (0x4000) #define AUDIO_MAX_ECHO_12dB (0x1FFF) #define AUDIO_MAX_ECHO_18dB (0x0FFF) #define AUDIO_MAX_ECHO_24dB (0x07FF) #else #define AUDIO_ECHO_0dB (0x0000) #define AUDIO_ECHO_6dB (0x0008) #define AUDIO_ECHO_12dB (0x0010) #define AUDIO_ECHO_18dB (0x0018) #endif /* noise suppression enable */ #define AUDIO_NOISE_SUPPRESSION_ENABLE (0x0004) #define AUDIO_NOISE_SUPPRESSION_DISABLE (0x0000) /* noise suppression level */ #define AUDIO_NOISE_NO_LIMITATION (0x0000) #define AUDIO_NOISE_6dB (0x0020) #define AUDIO_NOISE_12dB (0x0040) #define AUDIO_NOISE_18dB (0x0060) typedef struct { /* Enable the AEC */ UINT16 aec_enable; #if (L1_NEW_AEC) BOOL continuous_filtering; UINT16 granularity_attenuation; UINT16 smoothing_coefficient; UINT16 max_echo_suppression_level; UINT16 vad_factor; UINT16 absolute_threshold; UINT16 factor_asd_filtering; UINT16 factor_asd_muting; UINT16 aec_visibility; // UINT16 and not boolean because in L1, it is in aec_control #else /* Mode of the AEC */ UINT16 aec_mode; /* level of the echo cancellation */ UINT16 echo_suppression_level; #endif /* enable the noise suppression */ UINT16 noise_suppression_enable; /* level of the noise suppression */ UINT16 noise_suppression_level; } T_AUDIO_AEC_CFG; typedef struct { /* gain of the sidetone */ INT8 sidetone_gain; /* configuration of the acoustic echo cancellation */ T_AUDIO_AEC_CFG aec; } T_AUDIO_MICROPHONE_SPEAKER_LOOP_SETTING; /****************************************/ /* audio mode file struture */ /* this file is in the folder /AUDCFG/ */ /* and has the extention .CFG */ /****************************************/ typedef struct { /* group of setting to define the audio path used */ T_AUDIO_VOICE_PATH_SETTING audio_path_setting; /* group of setting to configure the audio path of the microphone */ T_AUDIO_MICROPHONE_SETTING audio_microphone_setting; /* group of setting to configure the audio path of the speaker */ T_AUDIO_SPEAKER_SETTING audio_speaker_setting; /* group of setting to configure the audio mode involved */ /* in tr microhpone and speaker loop */ T_AUDIO_MICROPHONE_SPEAKER_LOOP_SETTING audio_microphone_speaker_loop_setting; } T_AUDIO_MODE; /****************************************/ /* audio volume file struture */ /* this file is in the folder /AUDCFG/ */ /* and has the extention .VOL */ /****************************************/ /* speaker volume action */ #define AUDIO_SPEAKER_VOLUME_INCREASE (0) #define AUDIO_SPEAKER_VOLUME_DECREASE (1) #define AUDIO_SPEAKER_VOLUME_SET (2) /* speaker volume value */ #define AUDIO_SPEAKER_VOLUME_MUTE (0) #define AUDIO_SPEAKER_VOLUME_24dB (1) #define AUDIO_SPEAKER_VOLUME_18dB (50) #define AUDIO_SPEAKER_VOLUME_12dB (100) #define AUDIO_SPEAKER_VOLUME_6dB (150) #define AUDIO_SPEAKER_VOLUME_0dB (200) typedef struct { /* volume of the audio speaker */ UINT8 audio_speaker_level; } T_AUDIO_SPEAKER_LEVEL; /******************/ /* MMI family API */ /******************/ /* structure */ /* maximum number of number of the filname characters */ #define AUDIO_MODE_FILENAME_MAX_SIZE (10) typedef struct { char audio_mode_filename[AUDIO_MODE_FILENAME_MAX_SIZE]; } T_AUDIO_MODE_LOAD; typedef struct { char audio_mode_filename[AUDIO_MODE_FILENAME_MAX_SIZE]; } T_AUDIO_MODE_SAVE; typedef struct { INT8 volume_action; UINT8 value; } T_AUDIO_SPEAKER_VOLUME; /* Prototypes of MMI family*/ T_AUDIO_RET audio_mode_load (T_AUDIO_MODE_LOAD *p_parameter, T_RV_RETURN return_path); T_AUDIO_RET audio_mode_save (T_AUDIO_MODE_SAVE *p_parameter, T_RV_RETURN return_path); T_AUDIO_RET audio_speaker_volume ( T_AUDIO_SPEAKER_VOLUME volume, T_RV_RETURN return_path); /* Event return of the MMI family API*/ #define AUDIO_MODE_LOAD_DONE (0x0010 | AUDIO_EVENT_EXTERN | AUDIO_EVENTS_MASK) typedef struct { T_RV_HDR os_hdr; INT8 status; } T_AUDIO_LOAD_DONE; #define AUDIO_MODE_SAVE_DONE (0x0011 | AUDIO_EVENT_EXTERN | AUDIO_EVENTS_MASK) typedef struct { T_RV_HDR os_hdr; INT8 status; } T_AUDIO_SAVE_DONE; #define AUDIO_SPEAKER_VOLUME_DONE (0x0012 | AUDIO_EVENT_EXTERN | AUDIO_EVENTS_MASK) typedef struct { T_RV_HDR os_hdr; INT8 status; } T_AUDIO_VOLUME_DONE; /**********************/ /* Full Access Family */ /**********************/ /* structure */ typedef struct { UINT8 variable_indentifier; void *data; } T_AUDIO_FULL_ACCESS_WRITE; typedef struct { UINT8 variable_indentifier; void *data; } T_AUDIO_FULL_ACCESS_READ; /* parameter */ #define AUDIO_PATH_USED (0) #define AUDIO_MICROPHONE_MODE (1) #define AUDIO_MICROPHONE_GAIN (2) #define AUDIO_MICROPHONE_EXTRA_GAIN (3) #define AUDIO_MICROPHONE_OUTPUT_BIAS (4) #define AUDIO_MICROPHONE_FIR (5) #define AUDIO_SPEAKER_MODE (6) #define AUDIO_SPEAKER_GAIN (7) #define AUDIO_SPEAKER_FILTER (8) #define AUDIO_SPEAKER_FIR (9) #define AUDIO_SPEAKER_BUZZER_STATE (10) #define AUDIO_MICROPHONE_SPEAKER_LOOP_SIDETONE (11) #define AUDIO_MICROPHONE_SPEAKER_LOOP_AEC (12) #define AUDIO_SPEAKER_VOLUME_LEVEL (13) /* prototype */ T_AUDIO_RET audio_full_access_write (T_AUDIO_FULL_ACCESS_WRITE *p_parameter, T_RV_RETURN return_path); T_AUDIO_RET audio_full_access_read (T_AUDIO_FULL_ACCESS_READ *p_parameter); /* Event returned ofthe Full Access Family */ #define AUDIO_FULL_ACCESS_WRITE_DONE (0x0013 | AUDIO_EVENT_EXTERN | AUDIO_EVENTS_MASK) typedef struct { T_RV_HDR os_hdr; INT8 status; } T_AUDIO_FULL_ACCESS_WRITE_DONE; #ifdef __cplusplus } #endif #endif /* __AUDIO_API_H_ */