diff src/cs/services/Audio/Audio_bgd/audio_bgd_task.c @ 0:b6a5e36de839

src/cs: initial import from Magnetite
author Mychaela Falconia <falcon@freecalypso.org>
date Sun, 15 Jul 2018 04:39:26 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cs/services/Audio/Audio_bgd/audio_bgd_task.c	Sun Jul 15 04:39:26 2018 +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 */