comparison src/cs/services/audio/audio_task.c @ 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
comparison
equal deleted inserted replaced
-1:000000000000 0:92470e5d0b9e
1 /****************************************************************************/
2 /* */
3 /* Name audio_task.c */
4 /* */
5 /* Function this file contains the main AUDIO function: audio_task */
6 /* It contains the body of the AUDIO task. */
7 /* It will initialize the AUDIO and then wait for messages */
8 /* or functions calls. */
9 /* */
10 /* Version 0.1 */
11 /* */
12 /* Date Modification */
13 /* ------------------------------------ */
14 /* 18 May 2001 Create */
15 /* */
16 /* Author Francois Mazard - Stephanie Gerthoux */
17 /* */
18 /* (C) Copyright 2001 by Texas Instruments Incorporated, All Rights Reserved*/
19 /****************************************************************************/
20
21 #include "rv/rv_defined_swe.h"
22
23 #ifdef RVM_AUDIO_MAIN_SWE
24 #ifndef _WINDOWS
25 #include "config/swconfig.cfg"
26 #include "config/sys.cfg"
27 #include "config/chipset.cfg"
28 #endif
29
30 #include "l1_confg.h"
31 #include "rvf/rvf_api.h"
32 #include "rv/rv_general.h"
33 #include "rvm/rvm_gen.h"
34 #include "audio/audio_features_i.h"
35 #include "audio/audio_api.h"
36 #include "audio/audio_env_i.h"
37 #include "audio/audio_ffs_i.h"
38 #include "audio/audio_structs_i.h"
39 #include "audio/audio_macro_i.h"
40 #include "rvf/rvf_target.h"
41 #include "audio/audio_const_i.h"
42 #include "audio/audio_var_i.h"
43 #include "audio/audio_error_hdlr_i.h"
44 #include "audio/audio_messages_i.h"
45 #if (L1_GTT == 1)
46 #include "tty/tty_i.h"
47 #include "l1gtt_signa.h"
48 #endif
49
50 #ifndef _WINDOWS
51 /* include the usefull L1 header */
52 #define BOOL_FLAG
53 #define CHAR_FLAG
54 #include "l1_types.h"
55 #include "cust_os.h"
56 #include "l1audio_cust.h"
57 #include "l1audio_msgty.h"
58 #include "l1audio_signa.h"
59 #include "l1_signa.h"
60 #else
61 /* include the usefull L1 header */
62 #define BOOL_FLAG
63 //#define CHAR_FLAG
64 #include "l1_types.h"
65 #include "l1audio_const.h"
66 #include "l1audio_cust.h"
67 #include "l1audio_defty.h"
68 #include "l1audio_msgty.h"
69 #include "l1audio_signa.h"
70 #include "l1_const.h"
71 #include "l1_defty.h"
72 #include "l1_msgty.h"
73 #include "l1_signa.h"
74 #include "l1_varex.h"
75 #include "audio/tests/audio_test.h"
76 #endif
77
78 #ifndef _WINDOWS
79 #if (TRACE_TYPE==4)
80 extern void l1_trace_message(xSignalHeaderRec *msg);
81 #endif
82 #endif
83 #if (L1_GTT == 1)
84 extern void tty_manager (T_RV_HDR *p_message);
85 extern T_TTY_ENV_CTRL_BLK *tty_env_ctrl_blk_p;
86 #endif
87 #if (L1_MIDI==1)
88 extern UINT8 audio_midi_message_switch(T_RV_HDR *p_message);
89 #endif
90 extern BOOLEAN audio_compatibilities_manager (T_RV_HDR *p_message);
91
92
93 /********************************************************************************/
94 /* */
95 /* Function Name: audio_allocate_l1_message */
96 /* */
97 /* Purpose: This function is called to allocate a buffer for the message */
98 /* to the l1 */
99 /* */
100 /* Input Parameters: */
101 /* Size */
102 /* */
103 /* Output Parameters: */
104 /* None. */
105 /* */
106 /* Note: */
107 /* None. */
108 /* */
109 /* Revision History: */
110 /* None. */
111 /* */
112 /********************************************************************************/
113 void *audio_allocate_l1_message(UINT16 size)
114 {
115 void *buffer = NULL;
116
117 #ifdef _WINDOWS
118 T_RVF_MB_STATUS mb_status;
119 /* allocate a buffer in the riviera environement */
120 if (size == 0)
121 {
122 /* allocate the memory for a message without parameter */
123 mb_status = rvf_get_buf (p_audio_gbl_var->mb_internal,
124 sizeof(T_RV_HDR),
125 (T_RVF_BUFFER **) (&buffer));
126 }
127 else
128 {
129 /* allocate the memory for a message with some parameters */
130 mb_status = rvf_get_buf (p_audio_gbl_var->mb_internal,
131 size,
132 (T_RVF_BUFFER **) (&buffer));
133 }
134
135 /* If insufficient resources, then report a memory error and abort. */
136 if (mb_status == RVF_YELLOW)
137 {
138 /* deallocate the memory */
139 rvf_free_buf((T_RVF_BUFFER *)buffer);
140 audio_error_trace(AUDIO_ENTITY_NO_MEMORY);
141 return (NULL);
142 }
143 else
144 if (mb_status == RVF_RED)
145 {
146 audio_error_trace(AUDIO_ENTITY_NO_MEMORY);
147 return (NULL);
148 }
149
150 #else
151 /* allocate a buffer in the L1 environement */
152 /* allocate a buffer in the L1 environement */
153 xSignalHeaderRec* p_msg;
154
155 p_msg = os_alloc_sig(size);
156
157 buffer = (void*)p_msg->SigP;
158 #endif
159
160 return(buffer);
161 }
162
163 /********************************************************************************/
164 /* */
165 /* Function Name: audio_deallocate_l1_message */
166 /* */
167 /* Purpose: This function is called to deallocate a buffer for the message */
168 /* to the l1. */
169 /* */
170 /* Input Parameters: */
171 /* Audio Key Beep Parameters, */
172 /* */
173 /* Output Parameters: */
174 /* None. */
175 /* */
176 /* Note: */
177 /* None. */
178 /* */
179 /* Revision History: */
180 /* None. */
181 /* */
182 /********************************************************************************/
183 void audio_deallocate_l1_message(void *message)
184 {
185 #ifdef _WINDOWS
186 T_RV_RET status;
187
188 /* deallocate the memory */
189 status = rvf_free_buf((T_RVF_BUFFER *)message);
190 if (status != RVF_GREEN)
191 {
192 AUDIO_SEND_TRACE(" AUDIO ERROR (env). A wrong message is deallocated ",
193 RV_TRACE_LEVEL_ERROR);
194 }
195
196 #else
197 /* deallocate a buffer in the L1 environement */
198 os_free_sig((xSignalHeaderRec*)message);
199 #endif
200 }
201
202 /********************************************************************************/
203 /* */
204 /* Function Name: audio_send_l1_message */
205 /* */
206 /* Purpose: This function is called to send the message to the L1 */
207 /* */
208 /* Input Parameters: */
209 /* the message id and the message, */
210 /* */
211 /* Output Parameters: */
212 /* None. */
213 /* */
214 /* Note: */
215 /* None. */
216 /* */
217 /* Revision History: */
218 /* None. */
219 /* */
220 /********************************************************************************/
221 T_RV_RET audio_send_l1_message(INT16 message_id, void *message)
222 {
223 #ifdef _WINDOWS
224 #if ((AUDIO_REGR == SW_COMPILED) || (AUDIO_MISC == SW_COMPILED))
225 ((T_RV_HDR *)message)->msg_id = message_id;
226
227 switch (message_id)
228 {
229 /* send the messsage to the audio entity */
230 #if (KEYBEEP)
231 case MMI_KEYBEEP_START_REQ:
232 case MMI_KEYBEEP_STOP_REQ:
233 {
234 rvf_send_msg (p_audio_gbl_var->keybeep.return_path.addr_id,
235 message);
236 break;
237 }
238 #endif
239 #if (TONE)
240 case MMI_TONE_START_REQ:
241 case MMI_TONE_STOP_REQ:
242 {
243 rvf_send_msg (p_audio_gbl_var->tones.return_path.addr_id,
244 message);
245 break;
246 }
247 #endif
248 #if (MELODY_E1)
249 case MMI_MELODY0_START_REQ:
250 case MMI_MELODY0_STOP_REQ:
251 {
252 rvf_send_msg (p_audio_gbl_var->melody_E1_0.return_path.addr_id,
253 message);
254 break;
255 }
256 case MMI_MELODY1_START_REQ:
257 case MMI_MELODY1_STOP_REQ:
258 {
259 rvf_send_msg (p_audio_gbl_var->melody_E1_1.return_path.addr_id,
260 message);
261 break;
262 }
263 #endif
264 #if (MELODY_E2)
265 case MMI_MELODY0_E2_START_REQ:
266 case MMI_MELODY0_E2_STOP_REQ:
267 {
268 rvf_send_msg (p_audio_gbl_var->melody_E2_0.return_path.addr_id,
269 message);
270 break;
271 }
272 case MMI_MELODY1_E2_START_REQ:
273 case MMI_MELODY1_E2_STOP_REQ:
274 {
275 rvf_send_msg (p_audio_gbl_var->melody_E2_1.return_path.addr_id,
276 message);
277 break;
278 }
279 #endif
280 #if (VOICE_MEMO)
281 case MMI_VM_PLAY_START_REQ:
282 case MMI_VM_PLAY_STOP_REQ:
283 {
284 rvf_send_msg (p_audio_gbl_var->vm_play.return_path.addr_id,
285 message);
286 break;
287 }
288 case MMI_VM_RECORD_START_REQ:
289 case MMI_VM_RECORD_STOP_REQ:
290 {
291 rvf_send_msg (p_audio_gbl_var->vm_record.return_path.addr_id,
292 message);
293 break;
294 }
295 #endif
296 #if (SPEECH_RECO)
297 case MMI_SR_ENROLL_START_REQ:
298 case MMI_SR_ENROLL_STOP_REQ:
299 {
300 rvf_send_msg (p_audio_gbl_var->speech_reco.sr_enroll.return_path.addr_id,
301 message);
302 break;
303 }
304 case MMI_SR_UPDATE_START_REQ:
305 case MMI_SR_UPDATE_STOP_REQ:
306 case MMI_SR_UPDATE_CHECK_START_REQ:
307 case MMI_SR_UPDATE_CHECK_STOP_REQ:
308 {
309 rvf_send_msg (p_audio_gbl_var->speech_reco.sr_update.return_path.addr_id,
310 message);
311 break;
312 }
313 case MMI_SR_RECO_START_REQ:
314 case MMI_SR_RECO_STOP_REQ:
315 {
316 rvf_send_msg (p_audio_gbl_var->speech_reco.sr_reco.return_path.addr_id,
317 message);
318 break;
319 }
320 #endif
321 #if (L1_GTT == 1)
322 case MMI_GTT_START_REQ:
323 case MMI_GTT_STOP_REQ:
324 {
325 rvf_send_msg (tty_env_ctrl_blk_p->return_path.addr_id,
326 message);
327 }
328 break;
329 #endif
330 #if (L1_MIDI==1)
331 case MMI_MIDI_START_REQ:
332 case MMI_MIDI_STOP_REQ:
333 {
334 rvf_send_msg(p_audio_gbl_var->addrId,message);
335 break;
336 }
337 #endif
338 #if (FIR)
339 case MMI_AUDIO_FIR_CON:
340 case MMI_AUDIO_FIR_REQ:
341 #endif
342 #if (AEC)
343 case MMI_AEC_CON:
344 case MMI_AEC_REQ:
345 #endif
346 #if (AUDIO_MODE)
347 case MMI_AUDIO_MODE_CON:
348 case MMI_AUDIO_MODE_REQ:
349 #endif
350 case OML1_STOP_DAI_TEST_REQ:
351 case OML1_STOP_DAI_TEST_CON:
352 {
353 rvf_send_msg (p_audio_test->test_addr_id,
354 message);
355 break;
356 }
357 }
358 return(RV_OK);
359 #endif
360 #else
361 xSignalHeaderRec *p_signal;
362
363 p_signal = (xSignalHeaderRec*)(message);
364 p_signal--;
365 p_signal->SigP = (DummyStruct*)(message);
366 p_signal->SignalCode = message_id;
367
368 #if (TRACE_TYPE==4)
369 l1_trace_message(p_signal);
370 #endif
371
372
373 /* send a message in the L1 environement */
374 os_send_sig(p_signal, L1C1_QUEUE);
375
376 return(RV_OK);
377 #endif
378 }
379
380 /********************************************************************************/
381 /* Function audio_core */
382 /* */
383 /* Description Core of the audio task, which initiliazes the audio SWE and */
384 /* waits for messages. */
385 /* */
386 /********************************************************************************/
387 T_RV_RET audio_core(void)
388 {
389 /* Declare local variables */
390 BOOLEAN error_occured = FALSE;
391 T_RV_HDR *p_message = NULL;
392 UINT16 received_event= 0x0000;
393 T_RV_RET status;
394
395 AUDIO_SEND_TRACE("AUDIO_TASK started",RV_TRACE_LEVEL_DEBUG_HIGH);
396
397 /* loop to process messages */
398 while (error_occured == FALSE)
399 {
400 /* Wait for the necessary events (all events and no time out). */
401 received_event = rvf_wait (AUDIO_ALL_EVENT_FLAGS, AUDIO_NOT_TIME_OUT);
402
403 #if (MELODY_E1) || (MELODY_E2) || (VOICE_MEMO)
404 /* the time out for the AUDIO FFS downloader is expired */
405 if (received_event & AUDIO_FFS_TIMER_EVT_MASK)
406 {
407 audio_ffs_downloader();
408 }
409 #endif /* MELODY_E1 || MELODY_E2 || VOICE_MEMO
410
411 /* If an event is received, then ....*/
412 if (received_event & AUDIO_TASK_MBOX_EVT_MASK)
413 {
414 /* Read the message in the audio mailbox */
415 p_message = (T_RV_HDR *) rvf_read_mbox(AUDIO_MBOX);
416
417 if (p_message != NULL)
418 {
419 p_audio_gbl_var->message_processed = FALSE;
420
421 #if (MELODY_E1) || (MELODY_E2) || (VOICE_MEMO)
422 if ( (p_message->msg_id == AUDIO_FFS_FLASH_2_RAM_START_REQ) ||
423 (p_message->msg_id == AUDIO_FFS_RAM_2_FLASH_START_REQ) ||
424 (p_message->msg_id == AUDIO_FFS_STOP_REQ) )
425 {
426 AUDIO_SEND_TRACE_PARAM("AUDIO FFS MANAGER with the msg", p_message->msg_id, RV_TRACE_LEVEL_DEBUG_LOW);
427 /* process FFS message */
428 audio_ffs_manager(p_message);
429 p_audio_gbl_var->message_processed = TRUE;
430 }
431 #endif /* MELODY_E1 || MELODY_E2 || VOICE_MEMO */
432
433 #if (AUDIO_MEM_MANAGER)
434 if (audio_mem_message_switch(p_message) == 1)
435 {
436 AUDIO_SEND_TRACE_PARAM("AUDIO MEMORY MANAGER with the msg", p_message->msg_id, RV_TRACE_LEVEL_DEBUG_LOW);
437 /* process FFS message */
438 audio_mem_manager(p_message);
439 p_audio_gbl_var->message_processed = TRUE;
440 }
441 #endif // AUDIO_MEM_MANAGER
442
443 /* Check the compatibility with the active audio task */
444 if (audio_compatibilities_manager(p_message))
445 {
446 #if (KEYBEEP)
447 if ( (p_message->msg_id == AUDIO_KEYBEEP_START_REQ) ||
448 (p_message->msg_id == AUDIO_KEYBEEP_STOP_REQ) ||
449 (p_message->msg_id == MMI_KEYBEEP_START_CON) ||
450 (p_message->msg_id == MMI_KEYBEEP_STOP_CON) )
451 {
452 AUDIO_SEND_TRACE_PARAM("AUDIO KEYBEEP with the msg", p_message->msg_id, RV_TRACE_LEVEL_DEBUG_LOW);
453 /* process the keybeep manager */
454 audio_keybeep_manager(p_message);
455 p_audio_gbl_var->message_processed = TRUE;
456 }
457 #endif
458 #if (TONE)
459 if ( (p_message->msg_id == AUDIO_TONES_START_REQ) ||
460 (p_message->msg_id == AUDIO_TONES_STOP_REQ) ||
461 (p_message->msg_id == MMI_TONE_START_CON) ||
462 (p_message->msg_id == MMI_TONE_STOP_CON) )
463 {
464 AUDIO_SEND_TRACE_PARAM("AUDIO TONES with the msg", p_message->msg_id, RV_TRACE_LEVEL_DEBUG_LOW);
465 /* process the tones manager */
466 audio_tones_manager(p_message);
467 p_audio_gbl_var->message_processed = TRUE;
468 }
469 #endif
470 #if (SPEECH_RECO)
471 if ( (p_message->msg_id == AUDIO_SR_ENROLL_START_REQ) ||
472 (p_message->msg_id == AUDIO_SR_ENROLL_STOP_REQ) ||
473 (p_message->msg_id == MMI_SR_ENROLL_START_CON) ||
474 (p_message->msg_id == MMI_SR_ENROLL_STOP_CON) )
475 {
476 AUDIO_SEND_TRACE_PARAM("AUDIO SR ENROLL with the msg", p_message->msg_id, RV_TRACE_LEVEL_DEBUG_LOW);
477 audio_sr_enroll_manager(p_message);
478 p_audio_gbl_var->message_processed = TRUE;
479 }
480 if ( (p_message->msg_id == AUDIO_SR_UPDATE_START_REQ) ||
481 (p_message->msg_id == AUDIO_SR_UPDATE_STOP_REQ) ||
482 (p_message->msg_id == MMI_SR_UPDATE_START_CON) ||
483 (p_message->msg_id == MMI_SR_UPDATE_STOP_CON) ||
484 (p_message->msg_id == MMI_SR_UPDATE_CHECK_START_CON) ||
485 (p_message->msg_id == MMI_SR_UPDATE_CHECK_STOP_CON) )
486 {
487 AUDIO_SEND_TRACE_PARAM("AUDIO SR UPDATE with the msg", p_message->msg_id, RV_TRACE_LEVEL_DEBUG_LOW);
488 audio_sr_update_manager(p_message);
489 p_audio_gbl_var->message_processed = TRUE;
490 }
491 if ( (p_message->msg_id == AUDIO_SR_RECO_START_REQ) ||
492 (p_message->msg_id == AUDIO_SR_RECO_STOP_REQ) ||
493 (p_message->msg_id == MMI_SR_RECO_START_CON) ||
494 (p_message->msg_id == MMI_SR_RECO_STOP_CON) )
495 {
496 AUDIO_SEND_TRACE_PARAM("AUDIO SR RECO with the msg", p_message->msg_id, RV_TRACE_LEVEL_DEBUG_LOW);
497 audio_sr_reco_manager(p_message);
498 p_audio_gbl_var->message_processed = TRUE;
499 }
500 #ifndef _WINDOWS
501 /* add the management of the background task in the audio entity */
502 if ( (p_message->msg_id == L1_SRBACK_SAVE_DATA_REQ) ||
503 (p_message->msg_id == L1_SRBACK_LOAD_MODEL_REQ) ||
504 (p_message->msg_id == L1_SRBACK_TEMP_SAVE_DATA_REQ) )
505 {
506 AUDIO_SEND_TRACE_PARAM("AUDIO SR BACKGROUND with the msg", p_message->msg_id, RV_TRACE_LEVEL_DEBUG_LOW);
507 audio_sr_background_manager(p_message);
508 p_audio_gbl_var->message_processed = TRUE;
509 }
510 #endif
511 #endif
512 #if (MELODY_E1)
513 /* determine which melody id is involved by this start or stop message */
514 switch (audio_melody_E1_message_switch(p_message))
515 {
516 /* The message is for the melody number 0 */
517 case AUDIO_MELODY_E1_0:
518 {
519 AUDIO_SEND_TRACE_PARAM("AUDIO MELODY E1.0 with the msg", p_message->msg_id, RV_TRACE_LEVEL_DEBUG_LOW);
520 /* process the melody E1 manager 0 */
521 audio_melody_E1_manager_0(p_message);
522 p_audio_gbl_var->message_processed = TRUE;
523 break;
524 }
525 /* The message is for the melody number 1 */
526 case AUDIO_MELODY_E1_1:
527 {
528 AUDIO_SEND_TRACE_PARAM("AUDIO MELODY E1.1 with the msg", p_message->msg_id, RV_TRACE_LEVEL_DEBUG_LOW);
529 /* process the melody E1 manager 1 */
530 audio_melody_E1_manager_1(p_message);
531 p_audio_gbl_var->message_processed = TRUE;
532 break;
533 }
534 } /* switch */
535 #endif
536 #if (MELODY_E2)
537 /* determine which melody id is involved by this start or stop messsage */
538 switch (audio_melody_E2_message_switch(p_message))
539 {
540 /* The message is for the melody number 0 */
541 case AUDIO_MELODY_E2_0:
542 {
543 AUDIO_SEND_TRACE_PARAM("AUDIO MELODY E2.0 with the msg", p_message->msg_id, RV_TRACE_LEVEL_DEBUG_LOW);
544 /* process the melody E2 manager 0 */
545 audio_melody_E2_manager_0(p_message);
546 p_audio_gbl_var->message_processed = TRUE;
547 break;
548 }
549 /* The message is for the melody number 1 */
550 case AUDIO_MELODY_E2_1:
551 {
552 AUDIO_SEND_TRACE_PARAM("AUDIO MELODY E2.1 with the msg", p_message->msg_id, RV_TRACE_LEVEL_DEBUG_LOW);
553 /* process the melody E2 manager 1 */
554 audio_melody_E2_manager_1(p_message);
555 p_audio_gbl_var->message_processed = TRUE;
556 break;
557 }
558 } /* switch */
559 #ifndef _WINDOWS
560 /* add the management of the melody E2 background task in the audio entity */
561 if ( (p_message->msg_id == L1_BACK_MELODY_E2_LOAD_INSTRUMENT_REQ) ||
562 (p_message->msg_id == L1_BACK_MELODY_E2_UNLOAD_INSTRUMENT_REQ) )
563 {
564 AUDIO_SEND_TRACE_PARAM("AUDIO MELODY E2 BACKGROUND with the msg", p_message->msg_id, RV_TRACE_LEVEL_DEBUG_LOW);
565 audio_background_melody_e2_download_instrument_manager(p_message);
566 p_audio_gbl_var->message_processed = TRUE;
567 }
568 #endif
569 #endif
570 #if (VOICE_MEMO)
571 switch (audio_voice_memo_message_switch(p_message))
572 {
573 /* The message is for the voice memo play*/
574 case AUDIO_VM_PLAY:
575 {
576 AUDIO_SEND_TRACE_PARAM("AUDIO VM PLAY with the msg", p_message->msg_id, RV_TRACE_LEVEL_DEBUG_LOW);
577 /* process the voice memo play manager */
578 audio_vm_play_manager(p_message);
579 p_audio_gbl_var->message_processed = TRUE;
580 break;
581 }
582 /* The message is for the voice memo record */
583 case AUDIO_VM_RECORD:
584 {
585 AUDIO_SEND_TRACE_PARAM("AUDIO VM RECORD with the msg", p_message->msg_id, RV_TRACE_LEVEL_DEBUG_LOW);
586 /* process the voice memo record manager */
587 audio_vm_record_manager(p_message);
588 p_audio_gbl_var->message_processed = TRUE;
589 break;
590 }
591 } /* switch */
592 #endif
593 #if (L1_GTT == 1)
594 if ( (p_message->msg_id == TTY_START_REQ) ||
595 (p_message->msg_id == TTY_STOP_REQ) ||
596 (p_message->msg_id == MMI_GTT_START_CON) ||
597 (p_message->msg_id == MMI_GTT_STOP_CON))
598 {
599 AUDIO_SEND_TRACE_PARAM("TTY with the msg", p_message->msg_id, RV_TRACE_LEVEL_DEBUG_LOW);
600 /* process the TTY manager */
601 tty_manager(p_message);
602 p_audio_gbl_var->message_processed = TRUE;
603 }
604 #endif
605 #if (L1_VOICE_MEMO_AMR)&&(AUDIO_MEM_MANAGER)
606 switch (audio_voice_memo_amr_memory_message_switch(p_message))
607 {
608 /* The message is for the voice memo play*/
609 case AUDIO_VM_AMR_PLAY:
610 {
611 AUDIO_SEND_TRACE_PARAM("AUDIO VM AMR MMS PLAY from memory with the msg", p_message->msg_id, RV_TRACE_LEVEL_DEBUG_LOW);
612 /* process the voice memo play manager */
613 audio_vm_amr_play_from_memory_manager(p_message);
614 p_audio_gbl_var->message_processed = TRUE;
615 }
616 break;
617 /* The message is for the voice memo record */
618 case AUDIO_VM_AMR_RECORD:
619 {
620 AUDIO_SEND_TRACE_PARAM("AUDIO VM AMR MMS RECORD to memory with the msg", p_message->msg_id, RV_TRACE_LEVEL_DEBUG_LOW);
621 /* process the voice memo record manager */
622 audio_vm_amr_record_to_memory_manager(p_message);
623 p_audio_gbl_var->message_processed = TRUE;
624 }
625 break;
626 } /* switch */
627 #endif
628
629 #if (L1_MIDI==1)
630 if(audio_midi_message_switch(p_message)==AUDIO_MIDI)
631 {
632 AUDIO_SEND_TRACE_PARAM("AUDIO MIDI with the msg",p_message->msg_id,RV_TRACE_LEVEL_DEBUG_LOW);
633 audio_midi_manager(p_message);
634 p_audio_gbl_var->message_processed = TRUE;
635 }
636 #endif
637
638 #if (L1_AUDIO_DRIVER)
639 switch (audio_driver_message_switch(p_message))
640 {
641 /* The message is for the voice memo play*/
642 case AUDIO_DRIVER_SWITCH:
643 {
644 AUDIO_SEND_TRACE_PARAM("AUDIO DRIVER with the msg", p_message->msg_id, RV_TRACE_LEVEL_DEBUG_LOW);
645 /* process the voice memo play manager */
646 audio_driver_manager(p_message);
647 p_audio_gbl_var->message_processed = TRUE;
648 }
649 break;
650 case AUDIO_DRIVER_VM_AMR_RECORD_SESSION_SWITCH:
651 {
652 AUDIO_SEND_TRACE_PARAM("AUDIO DRIVER VM AMR RECORD with the msg", p_message->msg_id, RV_TRACE_LEVEL_DEBUG_LOW);
653 /* process the voice memo record manager */
654 audio_driver_manager(p_message);
655 p_audio_gbl_var->message_processed = TRUE;
656 }
657 break;
658 case AUDIO_DRIVER_VM_AMR_PLAY_SESSION_SWITCH:
659 {
660 AUDIO_SEND_TRACE_PARAM("AUDIO DRIVER VM AMR PLAY with the msg", p_message->msg_id, RV_TRACE_LEVEL_DEBUG_LOW);
661 /* process the voice memo record manager */
662 audio_driver_manager(p_message);
663 p_audio_gbl_var->message_processed = TRUE;
664 }
665 break;
666 case AUDIO_DRIVER_MIDI_SESSION_SWITCH:
667 {
668 AUDIO_SEND_TRACE_PARAM("AUDIO DRIVER MIDI with the msg",p_message->msg_id,RV_TRACE_LEVEL_DEBUG_LOW);
669 /* process the voice memo record manager */
670 audio_driver_manager(p_message);
671 p_audio_gbl_var->message_processed=TRUE;
672 }
673 break;
674 } /* switch */
675 #endif
676 switch(audio_mode_message_switch(p_message))
677 {
678 case AUDIO_FULL_ACCESS_WRITE:
679 {
680 AUDIO_SEND_TRACE_PARAM("AUDIO MODE FULL ACCESS WRITE with the msg", p_message->msg_id, RV_TRACE_LEVEL_DEBUG_LOW);
681 audio_mode_full_access_write_manager(p_message);
682 p_audio_gbl_var->message_processed = TRUE;
683 break;
684 }
685 case AUDIO_MODE_SAVE:
686 {
687 AUDIO_SEND_TRACE_PARAM("AUDIO MODE SAVE with the msg", p_message->msg_id, RV_TRACE_LEVEL_DEBUG_LOW);
688 audio_mode_save_manager(p_message);
689 p_audio_gbl_var->message_processed = TRUE;
690 break;
691 }
692 case AUDIO_MODE_LOAD:
693 {
694 AUDIO_SEND_TRACE_PARAM("AUDIO MODE LOAD with the msg", p_message->msg_id, RV_TRACE_LEVEL_DEBUG_LOW);
695 audio_mode_load_manager(p_message);
696 p_audio_gbl_var->message_processed = TRUE;
697 break;
698 }
699 case AUDIO_SPEAKER_VOLUME:
700 {
701 AUDIO_SEND_TRACE_PARAM("AUDIO MODE SPEAKER VOLUME with the msg", p_message->msg_id, RV_TRACE_LEVEL_DEBUG_LOW);
702 audio_mode_speaker_volume_manager (p_message);
703 p_audio_gbl_var->message_processed = TRUE;
704 break;
705 }
706
707 }
708
709 #ifdef _WINDOWS
710 #if (L1_MIDI == 1)
711 // l1 simulator for MIDI
712 if(p_message->msg_id==MMI_MIDI_START_REQ || p_message->msg_id==MMI_MIDI_STOP_REQ)
713 {
714 AUDIO_SEND_TRACE_PARAM("AUDIO MIDI SIMUL with the msg",p_message->msg_id,RV_TRACE_LEVEL_DEBUG_LOW);
715 audio_midi_l1_simulator(received_event,p_message);
716 p_audio_gbl_var->message_processed = TRUE;
717 }
718 #endif
719 #endif // _WINDOWS
720
721 } /* audio_compatibilities_manager */
722
723 if (p_audio_gbl_var->message_processed == FALSE)
724 {
725 AUDIO_SEND_TRACE_PARAM(" AUDIO ERROR (env). A wrong message is received ",
726 p_message->msg_id, RV_TRACE_LEVEL_ERROR);
727 }
728 status = rvf_free_buf((T_RVF_BUFFER *)p_message);
729 if (status != RVF_GREEN)
730 {
731 AUDIO_SEND_TRACE(" AUDIO ERROR (env). A wrong message is deallocated ",
732 RV_TRACE_LEVEL_ERROR);
733 }
734 } /* if (p_message != NULL) */
735 else
736 {
737 AUDIO_SEND_TRACE(" AUDIO ERROR (env). Can't read the message received ",
738 RV_TRACE_LEVEL_ERROR);
739 }
740 } /* if (received_event & AUDIO_TASK_MBOX_EVT_MASK) */
741
742 /* Wait timer simulation event to send notifications */
743 #ifdef _WINDOWS
744 #if (L1_MIDI == 1)
745 if(received_event & AUDIO_MIDI_L1_SIMUL_TIMER_EVT_MASK)
746 audio_midi_l1_simulator(received_event,p_message);
747 #endif
748 #endif
749
750 /* If one of the occured events is unexpected (due to an unassigned */
751 /* mailbox), then report an internal error. */
752 #ifdef _WINDOWS
753 if(received_event & ~(AUDIO_TASK_MBOX_EVT_MASK | AUDIO_FFS_TIMER_EVT_MASK| AUDIO_MIDI_L1_SIMUL_TIMER_EVT_MASK))
754 #else
755 if(received_event & ~(AUDIO_TASK_MBOX_EVT_MASK | AUDIO_FFS_TIMER_EVT_MASK))
756 #endif
757 {
758 AUDIO_SEND_TRACE(" AUDIO ERROR (env). One of the occured events is unexpected ",
759 RV_TRACE_LEVEL_ERROR);
760
761 error_occured = TRUE;
762 }
763 } /* end of While */
764 return(RV_INTERNAL_ERR);
765 } /****************************** End of audio_task function **************************/
766
767 #endif /* #ifdef RVM_AUDIO_MAIN_SWE */