FreeCalypso > hg > ffs-editor
diff src/cs/services/audio/audio_api.h @ 0:92470e5d0b9e
src: partial import from FC Selenite
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Fri, 15 May 2020 01:28:16 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/cs/services/audio/audio_api.h Fri May 15 01:28:16 2020 +0000 @@ -0,0 +1,1036 @@ +/****************************************************************************/ +/* */ +/* 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_ */ + +