FreeCalypso > hg > leo2moko-debug
diff chipsetsw/services/Audio/Audio_bgd/audio_bgd_task.c @ 0:509db1a7b7b8
initial import: leo2moko-r1
author | Space Falcon <falcon@ivan.Harhan.ORG> |
---|---|
date | Mon, 01 Jun 2015 03:24:05 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/chipsetsw/services/Audio/Audio_bgd/audio_bgd_task.c Mon Jun 01 03:24:05 2015 +0000 @@ -0,0 +1,95 @@ +/****************************************************************************/ +/* */ +/* Name audio_bgd_task.c */ +/* */ +/* Function this file contains the main AUDIO BACKGROUND functionk */ +/* */ +/* Version 1 */ +/* */ +/* Date Modification */ +/* ------------------------------------ */ +/* 19 June 2003 Create */ +/* */ +/* Author Frederic Turgis */ +/* */ +/* (C) Copyright 2001 by Texas Instruments Incorporated, All Rights Reserved*/ +/****************************************************************************/ + +#include "rv/rv_defined_swe.h" + +#ifdef RVM_AUDIO_BGD_SWE + + #include "rv/rv_general.h" + #include "audio/audio_bgd/audio_bgd_structs_i.h" + #include "audio/audio_bgd/audio_bgd_macro_i.h" + #include "audio/audio_bgd/audio_bgd_const_i.h" + #include "audio/audio_bgd/audio_bgd_env_i.h" + + /********************************************************************************/ + /* Function audio_bgd_core */ + /* */ + /* Description Core of the audio background task, which waits for events */ + /* */ + /********************************************************************************/ + T_RV_RET audio_bgd_core(void) + { + /* Declare local variables */ + BOOLEAN error = FALSE; + T_RV_HDR *p_message = NULL; + UINT16 received_event= 0x0000; + T_RV_RET status; + + AUDIO_BGD_SEND_TRACE("AUDIO_BACKGROUD TASK started", RV_TRACE_LEVEL_DEBUG_HIGH); + + /* loop to process messages */ + while (error == FALSE) + { + /* Wait for the necessary events (all events and no time out). */ + received_event = rvf_wait ( AUDIO_BGD_ALL_EVENT_FLAGS, AUDIO_BGD_NOT_TIME_OUT); + + /* If an event is received, then ....*/ + if (received_event & AUDIO_BGD_TASK_MBOX_EVT_MASK) + { + /* Read the message in the audio mailbox */ + p_message = (T_RV_HDR *) rvf_read_mbox(AUDIO_BGD_MBOX); + + if (p_message != NULL) + { + p_audio_bgd_gbl_var->message_processed = FALSE; + + // Handle messages + + // Check message has been processed + if (p_audio_bgd_gbl_var->message_processed == FALSE) + { + AUDIO_BGD_SEND_TRACE_PARAM(" AUDIO BGD ERROR (env). A wrong message is received ", + p_message->msg_id, RV_TRACE_LEVEL_ERROR); + } + status = rvf_free_buf((T_RVF_BUFFER *)p_message); + if (status != RVF_GREEN) + { + AUDIO_BGD_SEND_TRACE(" AUDIO BGD ERROR (env). Can't deallocate message", + RV_TRACE_LEVEL_ERROR); + } + } // if (p_message != NULL) + else + { + AUDIO_BGD_SEND_TRACE(" AUDIO BGD ERROR (env). Can't read the message received", + RV_TRACE_LEVEL_ERROR); + } + } // if (received_event & AUDIO_BGD_TASK_MBOX_EVT_MASK) + + /* If one of the occured events is unexpected (due to an unassigned */ + /* mailbox), then report an internal error. */ + if ( received_event & ~(AUDIO_BGD_TASK_MBOX_EVT_MASK) ) + { + AUDIO_BGD_SEND_TRACE(" AUDIO BGD ERROR (env). One of the events is unexpected ", + RV_TRACE_LEVEL_ERROR); + + error = TRUE; + } + } // while (error == FALSE) + return(RV_INTERNAL_ERR); + } /****************************** End of audio_bgd task function **************************/ + +#endif /* #ifdef RVM_AUDIO_BGD_SWE */