FreeCalypso > hg > ffs-editor
diff src/cs/services/audio/audio_structs_i.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_structs_i.h Fri May 15 01:28:16 2020 +0000 @@ -0,0 +1,470 @@ +/********************************************************************************/ +/* */ +/* File Name: audio_structs_i.h */ +/* */ +/* Purpose: This file contains constants, data type, and data */ +/* structures that are used by the AUDIO's task. */ +/* */ +/* Note: */ +/* None. */ +/* */ +/* Revision History: */ +/* 11 May 01 Francois Mazard - Stephanie Gerthoux Create */ +/* */ +/* (C) Copyright 2001 by Texas Instruments Incorporated, All Rights Reserved. */ +/* */ +/********************************************************************************/ +#include "rv/rv_defined_swe.h" +#ifdef RVM_AUDIO_MAIN_SWE + #ifndef _AUDIO_STRUCTS_I_ + #define _AUDIO_STRUCTS_I_ + + #ifndef _WINDOWS + #include "config/sys.cfg" + #include "config/chipset.cfg" + #endif + #include "l1_confg.h" + #include "rvm/rvm_gen.h" + #include "audio/audio_features_i.h" + #include "audio/audio_ffs_i.h" + #include "audio/audio_const_i.h" + + #include "ffs/ffs_api.h" + + #ifdef __cplusplus + extern "C" + { + #endif + + /****************************** AUDIO'S ENVIRONMENT *****************************/ + /* Define a structure used to store all information related to the AUDIO's task */ + /* & memory bank identifiers. */ + + #if (KEYBEEP) + typedef struct + { + UINT8 state; /* keybeep state */ + T_RVF_ADDR_ID task_id; /* keybeep task_id */ + T_RV_RETURN return_path; /* return path of the function that previously start the keybeep */ + } T_AUDIO_KEYBEEP_VAR; + #endif /* #if (KEYBEEP) */ + + #if (TONE) + typedef struct + { + UINT8 state; /* tones state */ + T_RVF_ADDR_ID task_id; /* tones task_id */ + T_RV_RETURN return_path; /* return path of the function that previously start the tones */ + } T_AUDIO_TONES_VAR; + #endif + + #if (MELODY_E1) + typedef struct + { + UINT8 state; /* melody state */ + T_RVF_ADDR_ID task_id; /* melody task_id */ + char melody_name[AUDIO_PATH_NAME_MAX_SIZE]; /* name and path of the word to enroll */ + BOOLEAN loopback; + T_RV_RETURN return_path; /* return path of the function that previously start the melody */ + } T_AUDIO_MELODY_E1_VAR; + #endif + + #if (MELODY_E2) + typedef struct + { + UINT8 state; /* melody state */ + T_RVF_ADDR_ID task_id; /* melody task_id */ + char melody_name[AUDIO_PATH_NAME_MAX_SIZE]; /* name of the melody E2 */ + BOOLEAN loopback; + T_RV_RETURN return_path; /* return path of the function that previously start the melody */ + } T_AUDIO_MELODY_E2_VAR; + + typedef struct + { + BOOLEAN file_downloaded; + UINT8 nb_of_instruments; + char instrument_file_name[AUDIO_PATH_NAME_MAX_SIZE]; + } T_AUDIO_MELODY_E2_LOAD_FILE_VAR; + + typedef struct + { + INT8 id; /* id of the melody in the .lsi file*/ + char melody_name[AUDIO_PATH_NAME_MAX_SIZE]; /* name of the melody E2 */ + + } T_AUDIO_MELODY_E2_ID_NAME; + + + #endif + + + #if (VOICE_MEMO) + typedef struct + { + UINT8 state; /* voice memo state */ + T_RVF_ADDR_ID task_id; /* voice memo task_id */ + UINT32 recorded_size; /* voice memo recorded size */ + T_RV_RETURN return_path; /* return path of the function that previously start the voice memo */ + void *p_l1_send_message; /* address to the message to send to the L1 */ + } T_AUDIO_VOICE_MEMO_RECORD_VAR; + + typedef struct + { + UINT8 state; /* voice memo state */ + T_RVF_ADDR_ID task_id; /* voice memo task_id */ + T_RV_RETURN return_path; /* return path of the function that previously start the voice memo */ + } T_AUDIO_VOICE_MEMO_PLAY_VAR; + + #endif + + #if (L1_VOICE_MEMO_AMR) + typedef struct + { + UINT8 state; /* voice memo state */ + T_RV_RETURN return_path; /* return path of the function that previously start the voice memo */ + UINT8 channel_id; + #if (AUDIO_NEW_FFS_MANAGER) + T_FFS_FD ffs_fd; + #endif + #if (AUDIO_RAM_MANAGER) + UINT8 *audio_ram_fd; + #endif + } T_AUDIO_VOICE_MEMO_AMR_RECORD_TO_MEM_VAR; + + typedef struct + { + UINT8 state; /* voice memo state */ + T_RV_RETURN return_path; /* return path of the function that previously start the voice memo */ + UINT8 channel_id; + #if (AUDIO_NEW_FFS_MANAGER) + T_FFS_FD ffs_fd; + #endif + #if (AUDIO_RAM_MANAGER) + UINT8 *audio_ram_fd; + UINT16 audio_ram_size; + #endif + } T_AUDIO_VOICE_MEMO_AMR_PLAY_FROM_MEM_VAR; + #endif + + #if (MELODY_E1) || (MELODY_E2) || (VOICE_MEMO) + + typedef struct + { + UINT8 *p_start_pointer; + UINT8 *p_stop_pointer; + UINT16 size; + } T_AUDIO_FFS_BUFFER_INFO; + + typedef struct + { + /* validity of the session: */ + /* 0: this session isn't started */ + /* 1: this session is running */ + BOOLEAN valid_channel; + /* file descriptor */ + T_FFS_FD audio_ffs_fd; + /*initial size requested before to start the L1 */ + UINT16 size; + /* loop mode is used or not during this session */ + BOOLEAN loop_mode; + /* mode of the session: */ + /* 0: FLASH to RAM download */ + /* 1: RAM to FLASH download */ + BOOLEAN session_mode; + UINT8 session_id; + } T_AUDIO_FFS_SESSION_REQ; + + typedef struct + { + /* index of the next buffer will be used by the L1 */ + UINT8 index_l1; + /* index of the current buffer used by the FFS */ + UINT8 index_ffs; + T_AUDIO_FFS_BUFFER_INFO buffer[AUDIO_MAX_FFS_BUFFER_PER_SESSION]; + /* state of the cust_get_pointer function */ + UINT8 cust_get_pointer_state; + } T_AUDIO_FFS_SESSION_INFO; + + typedef struct + { + /* Request of the current session */ + T_AUDIO_FFS_SESSION_REQ session_req; + /* information of the current session */ + T_AUDIO_FFS_SESSION_INFO session_info; + } T_AUDIO_FFS_SESSION; + #endif + + #if (AUDIO_MEM_MANAGER) + typedef struct + { + // file or RAM buffer descriptor + #if (AUDIO_NEW_FFS_MANAGER) + T_FFS_FD audio_ffs_fd; + #endif + #if (AUDIO_RAM_MANAGER) + UINT8 *audio_ram_fd; + UINT16 audio_ram_size; + #endif + + // size of temporary RAM buffers (8-bit unit) + UINT16 size; + + // session_id and channel_id to identify feature + UINT8 session_id; + UINT8 channel_id; + } T_AUDIO_MEM_SESSION_REQ; + + typedef struct + { + UINT8 state; // state machine + UINT8 size_left; // sample split between 2 RAM buffers + UINT8 previous_type; // last sample type processed + UINT32 recorded_size; /* voice memo recorded size */ + BOOL stop_req_allowed;// TRUE first then FALSE + } T_AUDIO_MEM_SESSION_INFO; + + typedef struct + { + /* Request of the current session */ + T_AUDIO_MEM_SESSION_REQ session_req; + /* information of the current session */ + T_AUDIO_MEM_SESSION_INFO session_info; + } T_AUDIO_MEM_SESSION; + #endif + + #if (MELODY_E1) || (MELODY_E2) || (VOICE_MEMO) + + typedef struct + { + UINT8 *p_start_pointer; + UINT16 size; + } T_AUDIO_DRIVER_BUFFER_INFO; + + typedef struct + { + UINT16 size; // initial size requested before to start the L1 + UINT8 nb_buffer; // nb buffer + UINT8 session_id; + void *p_l1_send_message; /* address to the message to send to the L1 */ + T_RV_RETURN return_path; + } T_AUDIO_DRIVER_SESSION_REQ; + + typedef struct + { + UINT8 index_l1; // index of the next buffer will be used by the L1 + UINT8 index_appli; // index of the current buffer used by the FFS + + T_AUDIO_DRIVER_BUFFER_INFO *buffer; // pointers on temporary RAM buffers + + UINT8 state; + UINT8 play_api_state;// only play + UINT8 stop_request;// 0 first then 1 when stop request + } T_AUDIO_DRIVER_SESSION_INFO; + + typedef struct + { + /* Request of the current session */ + T_AUDIO_DRIVER_SESSION_REQ session_req; + /* information of the current session */ + T_AUDIO_DRIVER_SESSION_INFO session_info; + } T_AUDIO_DRIVER_SESSION; + #endif + + #if (SPEECH_RECO) + typedef struct + { + /* enroll speech reco state */ + UINT8 state; + /* voice sample file descriptor */ + T_FFS_FD voice_ffs_fd; + /* speech reco sample file descriptor */ + T_FFS_FD sr_ffs_fd; + /* task_id */ + UINT16 task_id; + /* Speech buffer address */ + void *p_speech_address; + /* return path of the function that previously start the sppeech reco */ + T_RV_RETURN return_path; + } T_AUDIO_SR_ENROLL_VAR; + + typedef struct + { + /* update speech reco state */ + UINT8 state; + /* task_id */ + UINT16 task_id; + /* Speech buffer address */ + void *p_speech_address; + /* Temporary model buffer address */ + void *p_model_address; + /* vocabulary size */ + UINT8 vocabulary_size; + /* model index to update */ + UINT8 model_index; + /* flag to mention if the speech must be recorded */ + BOOL record_speech; + /* return path of the function that previously start the sppeech reco */ + T_RV_RETURN return_path; + /* pointer to the vocabulary database */ + void *p_database; + } T_AUDIO_SR_UPDATE_VAR; + + typedef struct + { + /* update speech reco state */ + UINT8 state; + /* task_id */ + UINT16 task_id; + /* vocabulary size */ + UINT8 vocabulary_size; + /* return path of the function that previously start the sppeech reco */ + T_RV_RETURN return_path; + /* pointer to the vocabulary database */ + void *p_database; + } T_AUDIO_SR_RECO_VAR; + + typedef struct + { + /* speech reco enroll variables */ + T_AUDIO_SR_ENROLL_VAR sr_enroll; + T_AUDIO_SR_UPDATE_VAR sr_update; + T_AUDIO_SR_RECO_VAR sr_reco; + } T_AUDIO_SPEECH_RECO_VAR; + #endif + + #if (L1_MIDI==1) + typedef struct + { + UINT8 state; // midi state + T_RV_RETURN return_path; // return path of the function that previously started midi + UINT8 channel_id; + UINT16 size; + T_FFS_FD ffs_fd; + BOOL stop_req_allowed; + #ifdef _WINDOWS + UINT8 l1_state; + INT16 counter; + #endif + } T_AUDIO_MIDI_VAR; + #endif + + + /* audio configuration variable */ + typedef struct + { + /* full access write state */ + UINT8 state; + /* Number of message to receive */ + UINT8 number_of_message; + /* address to the data buffer */ + void *buffer; + /* flag to know if the data buffer need to be deallocate or not */ + BOOLEAN deallocate_buffer; + /* return path of the function that previously start the full access write */ + T_RV_RETURN return_path; + } + T_AUDIO_FULL_ACCESS_WRITE_VAR; + + typedef struct + { + /* state of the audio mode load state machine */ + UINT8 state; + /* Number of message to receive */ + UINT8 number_of_message; + /* pointer to the RAM buffer */ + T_AUDIO_MODE *p_audio_mode; + /* return path */ + T_RV_RETURN return_path; + } + T_AUDIO_MODE_LOAD_VAR; + + typedef struct + { + char audio_volume_path_name[AUDIO_PATH_NAME_MAX_SIZE]; + } + T_AUDIO_VOLUME_VAR; + + typedef struct + { + T_AUDIO_FULL_ACCESS_WRITE_VAR full_access_write_var; + T_AUDIO_MODE_LOAD_VAR audio_mode_load_var; + T_AUDIO_VOLUME_VAR audio_volume_var; + } T_AUDIO_MODE_VAR; + + typedef struct + { + T_RVF_ADDR_ID addrId; /* AUDIO address ID. */ + T_RVF_ADDR_ID audio_ffs_addrId; /* AUDIO FFS manager address ID. */ + + T_RVF_MB_ID mb_internal; /* AUDIO internal memory bank. */ + T_RVF_MB_ID mb_external; /* AUDIO external memory bank. */ + T_RVF_MB_ID mb_audio_ffs; /* AUDIO FFS memory bank */ + T_RVM_RETURN (*callBackFct) (T_RVM_NAME SWEntName, + T_RVM_RETURN errorCause, + T_RVM_ERROR_TYPE errorType, + T_RVM_STRING errorMsg); + + BOOLEAN message_processed; + + #if (KEYBEEP) + /* Keybeep global variable */ + T_AUDIO_KEYBEEP_VAR keybeep; + #endif + #if (TONE) + /* Tones global variable */ + T_AUDIO_TONES_VAR tones; + #endif + #if (MELODY_E1) + /* Melody_E1 global variable */ + BOOLEAN melody_E1_mode; + T_AUDIO_MELODY_E1_VAR melody_E1_0; + T_AUDIO_MELODY_E1_VAR melody_E1_1; + #endif + #if (MELODY_E2) + /* Melody_E2 global variable */ + BOOLEAN melody_E2_mode; + T_AUDIO_MELODY_E2_VAR melody_E2_0; + T_AUDIO_MELODY_E2_VAR melody_E2_1; + T_AUDIO_MELODY_E2_LOAD_FILE_VAR melody_E2_load_file_instruments; + #endif + #if (VOICE_MEMO) + /* Voice Memo global variable */ + T_AUDIO_VOICE_MEMO_PLAY_VAR vm_play; + T_AUDIO_VOICE_MEMO_RECORD_VAR vm_record; + #endif + #if (L1_VOICE_MEMO_AMR) + /* Voice Memo global variable */ + T_AUDIO_VOICE_MEMO_AMR_RECORD_TO_MEM_VAR audio_vm_amr_record; + T_AUDIO_VOICE_MEMO_AMR_PLAY_FROM_MEM_VAR audio_vm_amr_play; + #endif + #if (SPEECH_RECO) + /* Speech reco global variable */ + T_AUDIO_SPEECH_RECO_VAR speech_reco; + #endif + + #if (L1_MIDI==1) + // Midi global variable + T_AUDIO_MIDI_VAR midi; + #endif + + /* audio mode variable */ + T_AUDIO_MODE_VAR audio_mode_var; + + #if (MELODY_E1) ||(MELODY_E2) || (VOICE_MEMO) + /* Audio FFS global variable */ + T_AUDIO_FFS_SESSION audio_ffs_session[AUDIO_FFS_MAX_CHANNEL]; + #endif + #if (AUDIO_MEM_MANAGER) + T_AUDIO_MEM_SESSION audio_mem_session[AUDIO_MEM_MAX_CHANNEL]; + #endif + #if (MELODY_E1) ||(MELODY_E2) || (VOICE_MEMO) || (L1_VOICE_MEMO_AMR) + /* Audio FFS global variable */ + T_AUDIO_DRIVER_SESSION audio_driver_session[AUDIO_DRIVER_MAX_CHANNEL]; + #endif + } + T_AUDIO_ENV_CTRL_BLK; + + #ifdef __cplusplus + } + #endif + #endif /* _AUDIO_STRUCTS_I_ */ +#endif /* #ifdef RVM_AUDIO_MAIN_SWE */