FreeCalypso > hg > fc-tourmaline
comparison src/cs/services/audio/audio_compatibilities.c @ 0:4e78acac3d88
src/{condat,cs,gpf,nucleus}: import from Selenite
| author | Mychaela Falconia <falcon@freecalypso.org> |
|---|---|
| date | Fri, 16 Oct 2020 06:23:26 +0000 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| -1:000000000000 | 0:4e78acac3d88 |
|---|---|
| 1 /****************************************************************************/ | |
| 2 /* */ | |
| 3 /* File Name: audio_compatibilities.c */ | |
| 4 /* */ | |
| 5 /* Purpose: This file contains all the functions used to manage the audio */ | |
| 6 /* feature compatibilites */ | |
| 7 /* */ | |
| 8 /* Version 0.1 */ | |
| 9 /* */ | |
| 10 /* Date Modification */ | |
| 11 /* ------------------------------------------------------------------------*/ | |
| 12 /* 12 November 2001 Create */ | |
| 13 /* */ | |
| 14 /* Author Francois Mazard */ | |
| 15 /* */ | |
| 16 /* (C) Copyright 2001 by Texas Instruments Incorporated, All Rights Reserved*/ | |
| 17 /****************************************************************************/ | |
| 18 | |
| 19 #include "rv/rv_defined_swe.h" | |
| 20 | |
| 21 #ifdef RVM_AUDIO_MAIN_SWE | |
| 22 #ifndef _WINDOWS | |
| 23 #include "config/swconfig.cfg" | |
| 24 #include "config/sys.cfg" | |
| 25 #include "config/chipset.cfg" | |
| 26 #endif | |
| 27 | |
| 28 | |
| 29 #include "l1_confg.h" | |
| 30 #include "rvf/rvf_api.h" | |
| 31 #include "rv/rv_general.h" | |
| 32 #include "rvm/rvm_gen.h" | |
| 33 #include "audio/audio_api.h" | |
| 34 #include "audio/audio_env_i.h" | |
| 35 #include "audio/audio_ffs_i.h" | |
| 36 #include "audio/audio_structs_i.h" | |
| 37 #include "audio/audio_macro_i.h" | |
| 38 #include "rvf/rvf_target.h" | |
| 39 #include "audio/audio_const_i.h" | |
| 40 #include "audio/audio_var_i.h" | |
| 41 #include "audio/audio_error_hdlr_i.h" | |
| 42 #include "audio/audio_messages_i.h" | |
| 43 #include "audio/audio_compatibilities.h" | |
| 44 #include "ffs/ffs_api.h" | |
| 45 | |
| 46 #if (L1_GTT == 1) | |
| 47 #include "tty/tty_i.h" | |
| 48 #endif | |
| 49 #if (L1_GTT == 1) | |
| 50 extern void tty_send_status (T_AUDIO_RET status, T_RV_RETURN return_path); | |
| 51 extern T_TTY_ENV_CTRL_BLK *tty_env_ctrl_blk_p; | |
| 52 #endif | |
| 53 /* Audio compatibilities table described in the annex of thespec S916 */ | |
| 54 /* 0: uncompatible */ | |
| 55 /* 1: compatible */ | |
| 56 /* Note the melody is compatible with a melody: GAME mode */ | |
| 57 #if (DSP == 36) | |
| 58 T_AUDIO_COMPATIBILITES audio_feature_compatibilities_table[AUDIO_NUMBER_OF_FEATURES] = | |
| 59 { | |
| 60 /* keybeep Tones Melody E1 VM play VM record enroll update reco MelodyE2 TTY VMA pl VMA rec MIDI*/ | |
| 61 /* Keybeep */ {0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1}, | |
| 62 /* Tone */ {1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1}, | |
| 63 /* Melody E1*/ {1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, | |
| 64 /* VM play */ {1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, | |
| 65 /* VM record*/ {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, | |
| 66 /* SR enroll*/ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, | |
| 67 /* SR update*/ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, | |
| 68 /* SR reco */ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, | |
| 69 /* Melody E2*/ {1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0}, | |
| 70 /* TTY */ {1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, | |
| 71 /* VMA play */ {1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, | |
| 72 /* VMA rec */ {1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, | |
| 73 /* MIDI */ {1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, | |
| 74 }; | |
| 75 #endif /* DSP=36 */ | |
| 76 #if (DSP == 34) | |
| 77 T_AUDIO_COMPATIBILITES audio_feature_compatibilities_table[AUDIO_NUMBER_OF_FEATURES] = | |
| 78 { | |
| 79 /* keybeep Tones Melody E1 VM play VM record enroll update reco MelodyE2 TTY VMA pl VMA rec MIDI */ | |
| 80 /* Keybeep */ {0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0}, | |
| 81 /* Tone */ {1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0}, | |
| 82 /* Melody E1*/ {1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, | |
| 83 /* VM play */ {1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, | |
| 84 /* VM record*/ {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, | |
| 85 /* SR enroll*/ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, | |
| 86 /* SR update*/ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, | |
| 87 /* SR reco */ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, | |
| 88 /* Melody E2*/ {1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0}, | |
| 89 /* TTY */ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, | |
| 90 /* VMA play */ {1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, | |
| 91 /* VMA rec */ {1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, | |
| 92 /* MIDI */ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, | |
| 93 }; | |
| 94 #endif | |
| 95 #if ((DSP == 32) || (DSP == 33)) | |
| 96 T_AUDIO_COMPATIBILITES audio_feature_compatibilities_table[AUDIO_NUMBER_OF_FEATURES] = | |
| 97 { | |
| 98 /* keybeep Tones Melody E1 VM play VM record enroll update reco MelodyE2 TTY VMA pl VMA rec MIDI */ | |
| 99 /* Keybeep */ {0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0}, | |
| 100 /* Tone */ {1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, | |
| 101 /* Melody E1 */ {1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, | |
| 102 /* VM play */ {1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, | |
| 103 /* VM record */ {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, | |
| 104 /* SR enroll */ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, | |
| 105 /* SR update */ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, | |
| 106 /* SR reco */ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, | |
| 107 /* Melody E2 */ {1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0}, | |
| 108 /* TTY */ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, | |
| 109 /* VMA play */ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, | |
| 110 /* VMA rec */ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, | |
| 111 /* MIDI */ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, | |
| 112 }; | |
| 113 #endif /* DSP=32 or 33 */ | |
| 114 | |
| 115 #if (DSP == 17) | |
| 116 T_AUDIO_COMPATIBILITES audio_feature_compatibilities_table[AUDIO_NUMBER_OF_FEATURES] = | |
| 117 { | |
| 118 /* keybeep Tones Melody E1 VM play VM record enroll update reco MelodyE2 TTY VMA pl VMA rec MIDI */ | |
| 119 /* Keybeep */ {0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0}, | |
| 120 /* Tone */ {1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, | |
| 121 /* Melody E1*/ {1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, | |
| 122 /* VM play */ {1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, | |
| 123 /* VM record*/ {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, | |
| 124 /* SR enroll*/ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, | |
| 125 /* SR update*/ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, | |
| 126 /* SR reco */ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, | |
| 127 /* Melody E2*/ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, | |
| 128 /* TTY */ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, | |
| 129 /* VMA play */ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, | |
| 130 /* VMA rec */ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, | |
| 131 /* MIDI */ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, | |
| 132 }; | |
| 133 #endif /* DSP=17 */ | |
| 134 | |
| 135 /********************************************************************************/ | |
| 136 /* */ | |
| 137 /* Function Name: audio_compatibilities_feature_id */ | |
| 138 /* */ | |
| 139 /* Purpose: Return the identifier of the feature to start. */ | |
| 140 /* */ | |
| 141 /* Input Parameters: */ | |
| 142 /* start message from any audio features */ | |
| 143 /* */ | |
| 144 /* Output Parameters: */ | |
| 145 /* identifier of the audio features or AUDIO_NO_START_MESSAGE if it */ | |
| 146 /* isn't a starting message. */ | |
| 147 /* */ | |
| 148 /* Note: */ | |
| 149 /* None. */ | |
| 150 /* */ | |
| 151 /* Revision History: */ | |
| 152 /* None. */ | |
| 153 /* */ | |
| 154 /********************************************************************************/ | |
| 155 INT8 audio_compatibilities_feature_id (T_RV_HDR *p_message) | |
| 156 { | |
| 157 switch(p_message->msg_id) | |
| 158 { | |
| 159 #if (KEYBEEP) | |
| 160 case AUDIO_KEYBEEP_START_REQ: | |
| 161 { | |
| 162 return (AUDIO_KEYBEEP_FEATURE); | |
| 163 } | |
| 164 #endif | |
| 165 #if (TONE) | |
| 166 case AUDIO_TONES_START_REQ: | |
| 167 { | |
| 168 return (AUDIO_TONES_FEATURE); | |
| 169 } | |
| 170 #endif | |
| 171 #if (MELODY_E1) | |
| 172 case AUDIO_MELODY_E1_START_REQ: | |
| 173 { | |
| 174 return (AUDIO_MELODY_E1_FEATURE); | |
| 175 } | |
| 176 #endif | |
| 177 #if (VOICE_MEMO) | |
| 178 case AUDIO_VM_PLAY_START_REQ: | |
| 179 { | |
| 180 return (AUDIO_VOICE_MEMO_PLAY_FEATURE); | |
| 181 } | |
| 182 case AUDIO_VM_RECORD_START_REQ: | |
| 183 { | |
| 184 return (AUDIO_VOICE_MEMO_RECORD_FEATURE); | |
| 185 } | |
| 186 #endif | |
| 187 #if (L1_VOICE_MEMO_AMR) | |
| 188 case AUDIO_VM_AMR_PLAY_FROM_FFS_START_REQ: | |
| 189 case AUDIO_VM_AMR_PLAY_FROM_RAM_START_REQ: | |
| 190 { | |
| 191 return (AUDIO_VOICE_MEMO_AMR_PLAY_FEATURE); | |
| 192 } | |
| 193 case AUDIO_VM_AMR_RECORD_TO_FFS_START_REQ: | |
| 194 case AUDIO_VM_AMR_RECORD_TO_RAM_START_REQ: | |
| 195 { | |
| 196 return (AUDIO_VOICE_MEMO_AMR_RECORD_FEATURE); | |
| 197 } | |
| 198 #endif | |
| 199 #if (SPEECH_RECO) | |
| 200 case AUDIO_SR_ENROLL_START_REQ: | |
| 201 { | |
| 202 return (AUDIO_SR_ENROLL_FEATURE); | |
| 203 } | |
| 204 case AUDIO_SR_UPDATE_START_REQ: | |
| 205 { | |
| 206 return (AUDIO_SR_UPDATE_FEATURE); | |
| 207 } | |
| 208 #endif | |
| 209 #if (MELODY_E2) | |
| 210 case AUDIO_MELODY_E2_START_REQ: | |
| 211 { | |
| 212 return (AUDIO_MELODY_E2_FEATURE); | |
| 213 } | |
| 214 #endif | |
| 215 #if (L1_GTT == 1) | |
| 216 case TTY_START_REQ: | |
| 217 { | |
| 218 return (AUDIO_TTY_FEATURE); | |
| 219 } | |
| 220 #endif | |
| 221 #if (L1_MIDI==1) | |
| 222 case AUDIO_MIDI_START_REQ: | |
| 223 { | |
| 224 return (AUDIO_MIDI_FEATURE); | |
| 225 } | |
| 226 #endif | |
| 227 default: | |
| 228 { | |
| 229 return (AUDIO_NO_START_MESSAGE); | |
| 230 } | |
| 231 } | |
| 232 } | |
| 233 | |
| 234 /********************************************************************************/ | |
| 235 /* */ | |
| 236 /* Function Name: audio_compatibilities_feature_active */ | |
| 237 /* */ | |
| 238 /* Purpose: Return the list of the active feature. */ | |
| 239 /* */ | |
| 240 /* Input Parameters: */ | |
| 241 /* An empty table. */ | |
| 242 /* */ | |
| 243 /* Output Parameters: */ | |
| 244 /* List of the current audio feature actif. */ | |
| 245 /* */ | |
| 246 /* Note: */ | |
| 247 /* None. */ | |
| 248 /* */ | |
| 249 /* Revision History: */ | |
| 250 /* None. */ | |
| 251 /* */ | |
| 252 /********************************************************************************/ | |
| 253 void audio_compatibilities_feature_active (T_AUDIO_ACTIVE_FEATURE *p_audio_feature_active) | |
| 254 { | |
| 255 #if (KEYBEEP) | |
| 256 p_audio_feature_active->feature[AUDIO_KEYBEEP_FEATURE] = | |
| 257 (p_audio_gbl_var->keybeep.state > AUDIO_KEYBEEP_IDLE); | |
| 258 #else | |
| 259 p_audio_feature_active->feature[AUDIO_KEYBEEP_FEATURE] = 0; | |
| 260 #endif | |
| 261 | |
| 262 #if (TONE) | |
| 263 p_audio_feature_active->feature[AUDIO_TONES_FEATURE] = | |
| 264 (p_audio_gbl_var->tones.state > AUDIO_TONES_IDLE); | |
| 265 #else | |
| 266 p_audio_feature_active->feature[AUDIO_TONES_FEATURE] = 0; | |
| 267 #endif | |
| 268 | |
| 269 #if (MELODY_E1) | |
| 270 p_audio_feature_active->feature[AUDIO_MELODY_E1_FEATURE] = | |
| 271 ((p_audio_gbl_var->melody_E1_0.state > AUDIO_MELODY_E1_IDLE) || | |
| 272 (p_audio_gbl_var->melody_E1_1.state > AUDIO_MELODY_E1_IDLE)); | |
| 273 #else | |
| 274 p_audio_feature_active->feature[AUDIO_MELODY_E1_FEATURE] = 0; | |
| 275 #endif | |
| 276 | |
| 277 #if (VOICE_MEMO) | |
| 278 p_audio_feature_active->feature[AUDIO_VOICE_MEMO_PLAY_FEATURE] = | |
| 279 (p_audio_gbl_var->vm_play.state > AUDIO_VM_PLAY_IDLE); | |
| 280 | |
| 281 p_audio_feature_active->feature[AUDIO_VOICE_MEMO_RECORD_FEATURE] = | |
| 282 (p_audio_gbl_var->vm_record.state > AUDIO_VM_RECORD_IDLE); | |
| 283 #else | |
| 284 p_audio_feature_active->feature[AUDIO_VOICE_MEMO_PLAY_FEATURE] = 0; | |
| 285 p_audio_feature_active->feature[AUDIO_VOICE_MEMO_RECORD_FEATURE] = 0; | |
| 286 #endif | |
| 287 #if (L1_VOICE_MEMO_AMR) && (AUDIO_MEM_MANAGER) | |
| 288 p_audio_feature_active->feature[AUDIO_VOICE_MEMO_AMR_PLAY_FEATURE] = | |
| 289 (p_audio_gbl_var->audio_vm_amr_play.state > AUDIO_IDLE); | |
| 290 | |
| 291 p_audio_feature_active->feature[AUDIO_VOICE_MEMO_AMR_RECORD_FEATURE] = | |
| 292 (p_audio_gbl_var->audio_vm_amr_record.state > AUDIO_IDLE); | |
| 293 #else | |
| 294 p_audio_feature_active->feature[AUDIO_VOICE_MEMO_AMR_PLAY_FEATURE] = 0; | |
| 295 p_audio_feature_active->feature[AUDIO_VOICE_MEMO_AMR_RECORD_FEATURE] = 0; | |
| 296 #endif | |
| 297 | |
| 298 #if (SPEECH_RECO) | |
| 299 p_audio_feature_active->feature[AUDIO_SR_ENROLL_FEATURE] = | |
| 300 (p_audio_gbl_var->speech_reco.sr_enroll.state > AUDIO_SR_ENROLL_IDLE); | |
| 301 p_audio_feature_active->feature[AUDIO_SR_UPDATE_FEATURE] = | |
| 302 (p_audio_gbl_var->speech_reco.sr_update.state > AUDIO_SR_UPDATE_IDLE); | |
| 303 p_audio_feature_active->feature[AUDIO_SR_RECO_FEATURE] = | |
| 304 (p_audio_gbl_var->speech_reco.sr_reco.state > AUDIO_SR_RECO_IDLE); | |
| 305 #else | |
| 306 p_audio_feature_active->feature[AUDIO_SR_ENROLL_FEATURE] = 0; | |
| 307 p_audio_feature_active->feature[AUDIO_SR_UPDATE_FEATURE] = 0; | |
| 308 p_audio_feature_active->feature[AUDIO_SR_RECO_FEATURE] = 0; | |
| 309 #endif | |
| 310 | |
| 311 #if (MELODY_E2) | |
| 312 p_audio_feature_active->feature[AUDIO_MELODY_E2_FEATURE] = | |
| 313 ((p_audio_gbl_var->melody_E2_0.state > AUDIO_MELODY_E2_IDLE) || | |
| 314 (p_audio_gbl_var->melody_E2_1.state > AUDIO_MELODY_E2_IDLE)); | |
| 315 #else | |
| 316 p_audio_feature_active->feature[AUDIO_MELODY_E2_FEATURE] = 0; | |
| 317 #endif | |
| 318 | |
| 319 #if (L1_GTT == 1) | |
| 320 p_audio_feature_active->feature[AUDIO_TTY_FEATURE] = | |
| 321 (tty_env_ctrl_blk_p->state > TTY_IDLE); | |
| 322 #else | |
| 323 p_audio_feature_active->feature[AUDIO_TTY_FEATURE] = 0; | |
| 324 #endif | |
| 325 | |
| 326 #if (L1_MIDI==1) | |
| 327 p_audio_feature_active->feature[AUDIO_MIDI_FEATURE] = | |
| 328 (p_audio_gbl_var->midi.state>AUDIO_IDLE); | |
| 329 #else | |
| 330 p_audio_feature_active->feature[AUDIO_MIDI_FEATURE] = 0; | |
| 331 #endif | |
| 332 } | |
| 333 | |
| 334 /********************************************************************************/ | |
| 335 /* */ | |
| 336 /* Function Name: audio_compatibilities_manager */ | |
| 337 /* */ | |
| 338 /* Purpose: manage the compatibilities between the audio fatures. */ | |
| 339 /* */ | |
| 340 /* Input Parameters: */ | |
| 341 /* The message of the start request. */ | |
| 342 /* */ | |
| 343 /* Output Parameters: */ | |
| 344 /* Flag to indicate if the task can be start or not. */ | |
| 345 /* Note: this manager send automatically the status message */ | |
| 346 /* corresponding to the audio feature. */ | |
| 347 /* */ | |
| 348 /* Note: */ | |
| 349 /* None. */ | |
| 350 /* */ | |
| 351 /* Revision History: */ | |
| 352 /* None. */ | |
| 353 /* */ | |
| 354 /********************************************************************************/ | |
| 355 BOOLEAN audio_compatibilities_manager (T_RV_HDR *p_message) | |
| 356 { | |
| 357 T_AUDIO_ACTIVE_FEATURE active_list; | |
| 358 INT8 feature_to_start, i; | |
| 359 BOOLEAN feature_can_start = TRUE; | |
| 360 | |
| 361 /* Find the features to start */ | |
| 362 feature_to_start = audio_compatibilities_feature_id(p_message); | |
| 363 | |
| 364 /* if the message is a start message */ | |
| 365 if (feature_to_start != AUDIO_NO_START_MESSAGE) | |
| 366 { | |
| 367 /* List the current active feature */ | |
| 368 audio_compatibilities_feature_active(&active_list); | |
| 369 | |
| 370 i = -1; | |
| 371 while ((feature_can_start) && | |
| 372 (++i < AUDIO_NUMBER_OF_FEATURES)) | |
| 373 { | |
| 374 feature_can_start = (!(active_list.feature[i]) | | |
| 375 audio_feature_compatibilities_table[feature_to_start].compatibilities_flag[i]); | |
| 376 } | |
| 377 | |
| 378 /* send the status message if the feature can't start */ | |
| 379 if (feature_can_start == FALSE) | |
| 380 { | |
| 381 switch (feature_to_start) | |
| 382 { | |
| 383 #if (KEYBEEP) | |
| 384 case AUDIO_KEYBEEP_FEATURE: | |
| 385 { | |
| 386 audio_keybeep_send_status (AUDIO_ERROR, ((T_AUDIO_KEYBEEP_START *)(p_message))->return_path); | |
| 387 AUDIO_SEND_TRACE(" AUDIO ERROR: Keybeep isn't compatible with a running task", | |
| 388 RV_TRACE_LEVEL_ERROR); | |
| 389 p_audio_gbl_var->message_processed = TRUE; | |
| 390 break; | |
| 391 } | |
| 392 #endif | |
| 393 #if (TONE) | |
| 394 case AUDIO_TONES_FEATURE: | |
| 395 { | |
| 396 audio_tones_send_status (AUDIO_ERROR, ((T_AUDIO_TONES_START *)(p_message))->return_path); | |
| 397 AUDIO_SEND_TRACE(" AUDIO ERROR: Tone isn't compatible with a running task", | |
| 398 RV_TRACE_LEVEL_ERROR); | |
| 399 p_audio_gbl_var->message_processed = TRUE; | |
| 400 break; | |
| 401 } | |
| 402 #endif | |
| 403 #if (VOICE_MEMO) | |
| 404 case AUDIO_VOICE_MEMO_PLAY_FEATURE: | |
| 405 { | |
| 406 /* close the file opened */ | |
| 407 #ifndef _WINDOWS | |
| 408 if ( ffs_close(((T_AUDIO_VM_PLAY_START *)(p_message))->audio_ffs_fd) != EFFS_OK ) | |
| 409 { | |
| 410 audio_ffs_error_trace(AUDIO_ENTITY_FILE_NO_CLOSE); | |
| 411 } | |
| 412 #endif | |
| 413 audio_vm_play_send_status (AUDIO_ERROR, ((T_AUDIO_VM_PLAY_START *)(p_message))->return_path); | |
| 414 AUDIO_SEND_TRACE(" AUDIO ERROR: VM play isn't compatible with a running task", | |
| 415 RV_TRACE_LEVEL_ERROR); | |
| 416 p_audio_gbl_var->message_processed = TRUE; | |
| 417 break; | |
| 418 } | |
| 419 case AUDIO_VOICE_MEMO_RECORD_FEATURE: | |
| 420 { | |
| 421 /* close the file opened */ | |
| 422 #ifndef _WINDOWS | |
| 423 if ( ffs_close(((T_AUDIO_VM_RECORD_START *)(p_message))->audio_ffs_fd) != EFFS_OK ) | |
| 424 { | |
| 425 audio_ffs_error_trace(AUDIO_ENTITY_FILE_NO_CLOSE); | |
| 426 } | |
| 427 #endif | |
| 428 audio_vm_record_send_status (AUDIO_ERROR, 0, ((T_AUDIO_VM_RECORD_START *)(p_message))->return_path); | |
| 429 AUDIO_SEND_TRACE(" AUDIO ERROR: VM record isn't compatible with a running task", | |
| 430 RV_TRACE_LEVEL_ERROR); | |
| 431 p_audio_gbl_var->message_processed = TRUE; | |
| 432 break; | |
| 433 } | |
| 434 #endif | |
| 435 #if (L1_VOICE_MEMO_AMR) | |
| 436 case AUDIO_VOICE_MEMO_AMR_PLAY_FEATURE: | |
| 437 { | |
| 438 switch (p_message->msg_id) | |
| 439 { | |
| 440 #if (AUDIO_NEW_FFS_MANAGER) | |
| 441 case AUDIO_VM_AMR_PLAY_FROM_FFS_START_REQ: | |
| 442 /* close the file opened */ | |
| 443 if ( ffs_close(((T_AUDIO_VM_AMR_PLAY_FROM_FFS_START *)p_message)->audio_ffs_fd) != EFFS_OK ) | |
| 444 { | |
| 445 audio_new_ffs_error_trace(AUDIO_ENTITY_FILE_NO_CLOSE); | |
| 446 } | |
| 447 audio_vm_amr_play_send_status (AUDIO_ERROR, ((T_AUDIO_VM_AMR_PLAY_FROM_FFS_START *)p_message)->return_path); | |
| 448 break; | |
| 449 #endif | |
| 450 #if (AUDIO_RAM_MANAGER) | |
| 451 case AUDIO_VM_AMR_PLAY_FROM_RAM_START_REQ: | |
| 452 audio_vm_amr_play_send_status (AUDIO_ERROR, ((T_AUDIO_VM_AMR_PLAY_FROM_RAM_START *)p_message)->return_path); | |
| 453 break; | |
| 454 #endif | |
| 455 } | |
| 456 #if (AUDIO_MEM_MANAGER) | |
| 457 AUDIO_SEND_TRACE(" AUDIO ERROR: VM AMR play isn't compatible with a running task", | |
| 458 RV_TRACE_LEVEL_ERROR); | |
| 459 #endif | |
| 460 p_audio_gbl_var->message_processed = TRUE; | |
| 461 } | |
| 462 break; | |
| 463 case AUDIO_VOICE_MEMO_AMR_RECORD_FEATURE: | |
| 464 { | |
| 465 switch (p_message->msg_id) | |
| 466 { | |
| 467 #if (AUDIO_NEW_FFS_MANAGER) | |
| 468 case AUDIO_VM_AMR_RECORD_TO_FFS_START_REQ: | |
| 469 /* close the file opened */ | |
| 470 if ( ffs_close(((T_AUDIO_VM_AMR_RECORD_TO_FFS_START *)p_message)->audio_ffs_fd) != EFFS_OK ) | |
| 471 { | |
| 472 audio_new_ffs_error_trace(AUDIO_ENTITY_FILE_NO_CLOSE); | |
| 473 } | |
| 474 audio_vm_amr_record_send_status (AUDIO_ERROR, 0, ((T_AUDIO_VM_AMR_RECORD_TO_FFS_START *)p_message)->return_path); | |
| 475 break; | |
| 476 #endif | |
| 477 #if (AUDIO_RAM_MANAGER) | |
| 478 case AUDIO_VM_AMR_RECORD_TO_RAM_START_REQ: | |
| 479 audio_vm_amr_record_send_status (AUDIO_ERROR, 0, ((T_AUDIO_VM_AMR_RECORD_TO_RAM_START *)p_message)->return_path); | |
| 480 break; | |
| 481 #endif | |
| 482 } | |
| 483 #if (AUDIO_MEM_MANAGER) | |
| 484 AUDIO_SEND_TRACE(" AUDIO ERROR: VM AMR record isn't compatible with a running task", | |
| 485 RV_TRACE_LEVEL_ERROR); | |
| 486 #endif | |
| 487 p_audio_gbl_var->message_processed = TRUE; | |
| 488 } | |
| 489 break; | |
| 490 #endif | |
| 491 #if (MELODY_E1) | |
| 492 case AUDIO_MELODY_E1_FEATURE: | |
| 493 { | |
| 494 /* close the file opened */ | |
| 495 #ifndef _WINDOWS | |
| 496 if ( ffs_close(((T_AUDIO_MELODY_E1_START *)(p_message))->audio_ffs_fd) != EFFS_OK ) | |
| 497 { | |
| 498 audio_ffs_error_trace(AUDIO_ENTITY_FILE_NO_CLOSE); | |
| 499 } | |
| 500 #endif | |
| 501 audio_melody_E1_send_status (AUDIO_ERROR, ((T_AUDIO_MELODY_E1_START *)(p_message))->return_path); | |
| 502 AUDIO_SEND_TRACE(" AUDIO ERROR: MELODY E1 isn't compatible with a running task", | |
| 503 RV_TRACE_LEVEL_ERROR); | |
| 504 p_audio_gbl_var->message_processed = TRUE; | |
| 505 break; | |
| 506 } | |
| 507 #endif | |
| 508 #if (SPEECH_RECO) | |
| 509 case AUDIO_SR_ENROLL_FEATURE: | |
| 510 { | |
| 511 /* close the model file */ | |
| 512 /* close the voice sample file if it exists*/ | |
| 513 #ifndef _WINDOWS | |
| 514 ffs_close(((T_AUDIO_SR_ENROLL_START *)(p_message))->sr_ffs_fd); | |
| 515 if ( ((T_AUDIO_SR_ENROLL_START *)(p_message))->voice_ffs_fd != AUDIO_SR_NO_RECORD_SPEECH) | |
| 516 { | |
| 517 ffs_close(((T_AUDIO_SR_ENROLL_START *)(p_message))->voice_ffs_fd); | |
| 518 } | |
| 519 #endif | |
| 520 | |
| 521 /* event error - send an error message*/ | |
| 522 audio_sr_enroll_send_status (AUDIO_ERROR, | |
| 523 ((T_AUDIO_SR_ENROLL_START *)(p_message))->return_path); | |
| 524 AUDIO_SEND_TRACE(" AUDIO ERROR: SR Enroll isn't compatible with a running task", | |
| 525 RV_TRACE_LEVEL_ERROR); | |
| 526 p_audio_gbl_var->message_processed = TRUE; | |
| 527 break; | |
| 528 } | |
| 529 case AUDIO_SR_UPDATE_FEATURE: | |
| 530 { | |
| 531 /* Free the database buffer */ | |
| 532 rvf_free_buf( (T_RVF_BUFFER *)(((T_AUDIO_SR_UPDATE_START *)(p_message))->p_database) ); | |
| 533 | |
| 534 /* event error - send an error message*/ | |
| 535 audio_sr_update_send_status (AUDIO_ERROR, | |
| 536 ((T_AUDIO_SR_UPDATE_START *)(p_message))->return_path); | |
| 537 AUDIO_SEND_TRACE(" AUDIO ERROR: SR upate isn't compatible with a running task", | |
| 538 RV_TRACE_LEVEL_ERROR); | |
| 539 p_audio_gbl_var->message_processed = TRUE; | |
| 540 break; | |
| 541 } | |
| 542 case AUDIO_SR_RECO_FEATURE: | |
| 543 { | |
| 544 /* Free the database buffer */ | |
| 545 rvf_free_buf( (T_RVF_BUFFER *)(((T_AUDIO_SR_RECO_START *)(p_message))->p_database) ); | |
| 546 | |
| 547 /* event error - send an error message*/ | |
| 548 audio_sr_reco_send_status (AUDIO_ERROR, 0, | |
| 549 ((T_AUDIO_SR_RECO_START *)(p_message))->return_path); | |
| 550 AUDIO_SEND_TRACE(" AUDIO ERROR: SR reco isn't compatible with a running task", | |
| 551 RV_TRACE_LEVEL_ERROR); | |
| 552 p_audio_gbl_var->message_processed = TRUE; | |
| 553 break; | |
| 554 } | |
| 555 #endif | |
| 556 #if (MELODY_E2) | |
| 557 case AUDIO_MELODY_E2_FEATURE: | |
| 558 { | |
| 559 /* close the file opened */ | |
| 560 #ifndef _WINDOWS | |
| 561 if ( ffs_close(((T_AUDIO_MELODY_E2_START *)(p_message))->audio_E2_ffs_fd) != EFFS_OK ) | |
| 562 { | |
| 563 audio_ffs_error_trace(AUDIO_ENTITY_FILE_NO_CLOSE); | |
| 564 } | |
| 565 #endif | |
| 566 audio_melody_E2_send_status (AUDIO_ERROR, ((T_AUDIO_MELODY_E2_START *)(p_message))->return_path); | |
| 567 AUDIO_SEND_TRACE(" AUDIO ERROR: MELODY E2 isn't compatible with a running task", | |
| 568 RV_TRACE_LEVEL_ERROR); | |
| 569 p_audio_gbl_var->message_processed = TRUE; | |
| 570 break; | |
| 571 } | |
| 572 #endif | |
| 573 #if (L1_GTT == 1) | |
| 574 case AUDIO_TTY_FEATURE: | |
| 575 { | |
| 576 tty_send_status (AUDIO_ERROR, ((T_TTY_START *)(p_message))->return_path); | |
| 577 AUDIO_SEND_TRACE(" AUDIO ERROR: TTY isn't compatible with a running task", | |
| 578 RV_TRACE_LEVEL_ERROR); | |
| 579 p_audio_gbl_var->message_processed = TRUE; | |
| 580 break; | |
| 581 } | |
| 582 #endif | |
| 583 #if (L1_MIDI==1) | |
| 584 case AUDIO_MIDI_FEATURE: | |
| 585 { | |
| 586 audio_midi_send_status(AUDIO_ERROR,&((T_AUDIO_MIDI_START *)p_message)->return_path); | |
| 587 AUDIO_SEND_TRACE(" AUDIO ERROR: MIDI isn't compatible with a running task", | |
| 588 RV_TRACE_LEVEL_ERROR); | |
| 589 p_audio_gbl_var->message_processed = TRUE; | |
| 590 break; | |
| 591 } | |
| 592 #endif | |
| 593 } | |
| 594 } /* feature_can_start == FALSE */ | |
| 595 } | |
| 596 return (feature_can_start); | |
| 597 } | |
| 598 #endif /* RVM_AUDIO_MAIN_SWE */ |
