diff src/g23m-aci/aci/hl_audio_drv.c @ 1:fa8dc04885d8

src/g23m-*: import from Magnetite
author Mychaela Falconia <falcon@freecalypso.org>
date Fri, 16 Oct 2020 06:25:50 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/g23m-aci/aci/hl_audio_drv.c	Fri Oct 16 06:25:50 2020 +0000
@@ -0,0 +1,187 @@
+/*
++-----------------------------------------------------------------------------
+|  Project :  GSM-PS (6147)
+|  Modul   :  AOC
++-----------------------------------------------------------------------------
+|  Copyright 2002 Texas Instruments Berlin, AG
+|                 All rights reserved.
+|
+|                 This file is confidential and a trade secret of Texas
+|                 Instruments Berlin, AG
+|                 The receipt of or possession of this file does not convey
+|                 any rights to reproduce or disclose its contents or to
+|                 manufacture, use, or sell anything it may describe, in
+|                 whole, or in part, without the specific written consent of
+|                 Texas Instruments Berlin, AG.
++-----------------------------------------------------------------------------
+|  Purpose :  This module defines the functions for the high level audio 
+              driver interface.
++-----------------------------------------------------------------------------
+*/
+
+
+#ifndef HL_AUDIO_DRV_C
+#define HL_AUDIO_DRV_C
+#endif
+
+#include "aci_all.h"
+#include "aci_cmh.h"
+#include "aci.h"
+#include "psa.h"
+#include "hl_audio_drv.h"
+#include "rv/rv_general.h"
+#include "audio/audio_api.h"
+#include "fc-target.h"
+
+
+/* ===============GLOBAL VARIABLES====================*/
+
+LOCAL  T_HL_VOCODER_STATE currVocoderState;
+
+#ifdef CONFIG_MCSI_MODEM
+GLOBAL UBYTE aci_digital_voice_autoswitch;
+#endif
+
+
+/* =============FUNCTION DEFINITIONS FOR L1===========*/
+#ifdef VOCODER_FUNC_INTERFACE
+void vocoder_mute_dl( BOOL mute );
+void vocoder_mute_ul( BOOL mute );
+void enable_tch_vocoder (BOOL vocoder_on);
+#endif /* VOCODER_FUNC_INTERFACE */
+
+
+/*================= FUNCTIONS ========================*/
+
+/*
++-------------------------------------------------------------------+
+| PROJECT : GSM-PS (6147)         MODULE  : HL_AUDIO_DRV            |
+|                                 ROUTINE : hl_audio_drv_init       |
++-------------------------------------------------------------------+
+
+  PURPOSE : This function is called to initialise the variables in 
+            the High Level Audio driver
+*/
+GLOBAL void hl_audio_drv_init (void)
+{
+  TRACE_FUNCTION("hl_audio_drv_init()");
+
+  currVocoderState = HL_VOCODER_DISABLED;
+}
+
+#ifdef CONFIG_MCSI_MODEM
+static void audio_mode_callback(void *event_from_audio)
+{
+	/* do nothing at this time */
+}
+#endif
+
+/*
++-------------------------------------------------------------------+
+| PROJECT : GSM-PS (6147)         MODULE  : PSA_CCF                 |
+|                                 ROUTINE : hl_drv_set_vocoder_state|
++-------------------------------------------------------------------+
+
+  PURPOSE : This function will enable or disable vocoder as needed,
+            and possibly also enable/disable the MCSI digital voice
+            path if running on a FreeCalypso modem in the digital
+            voice interface configuration.
+*/
+GLOBAL void hl_drv_set_vocoder_state(BOOL user_attach)
+{
+#ifdef CONFIG_MCSI_MODEM
+  T_AUDIO_VOICE_PATH_SETTING vpath;
+  T_AUDIO_FULL_ACCESS_WRITE audio_param;
+  T_RV_RETURN return_path;
+#endif
+
+  TRACE_FUNCTION("hl_drv_set_vocoder_state");
+
+  if ( (user_attach EQ TRUE AND currVocoderState EQ HL_VOCODER_ENABLED) OR
+       (user_attach EQ FALSE AND currVocoderState EQ HL_VOCODER_DISABLED) )
+    return; /* No state change requested */
+
+  if (user_attach)
+  {
+    enable_tch_vocoder(TRUE);
+    vocoder_mute_dl (FALSE);      /* un-mute speaker    */
+    vocoder_mute_ul (FALSE);      /* un-mute microphone */
+  #ifdef CONFIG_MCSI_MODEM
+    if (aci_digital_voice_autoswitch)
+    {
+      vpath = AUDIO_BLUETOOTH_HEADSET;
+      audio_param.variable_indentifier = AUDIO_PATH_USED;
+      audio_param.data = &vpath;
+      return_path.addr_id       = NULL;
+      return_path.callback_func = audio_mode_callback;
+      audio_full_access_write(&audio_param, return_path);
+    }
+  #endif
+    currVocoderState = HL_VOCODER_ENABLED;
+  }
+  else
+  {
+    vocoder_mute_dl (TRUE);       /* mute speaker    */
+    vocoder_mute_ul (TRUE);       /* mute microphone */
+    enable_tch_vocoder (FALSE);   /* disable vocoder */
+  #ifdef CONFIG_MCSI_MODEM
+    if (aci_digital_voice_autoswitch)
+    {
+      vpath = AUDIO_GSM_VOICE_PATH;
+      audio_param.variable_indentifier = AUDIO_PATH_USED;
+      audio_param.data = &vpath;
+      return_path.addr_id       = NULL;
+      return_path.callback_func = audio_mode_callback;
+      audio_full_access_write(&audio_param, return_path);
+    }
+  #endif
+    currVocoderState = HL_VOCODER_DISABLED;
+  }
+
+  return;
+}
+
+/*
++-------------------------------------------------------------------+
+| PROJECT : GSM-PS (6147)        MODULE  : HL_AUDIO_DRV             |
+|                                ROUTINE : hl_drv_get_vocoder_state |
++-------------------------------------------------------------------+
+
+  PURPOSE : This function returns the state of the vocoder
+*/
+
+GLOBAL T_HL_VOCODER_STATE hl_drv_get_vocoder_state (void)
+{
+  return currVocoderState;
+}
+
+#ifndef VOCODER_FUNC_INTERFACE
+/*
++-------------------------------------------------------------------+
+| PROJECT : GSM-PS (6147)        MODULE  : HL_AUDIO_DRV             |
+|                                ROUTINE : hl_drv_vocoder_enabled   |
++-------------------------------------------------------------------+
+
+  PURPOSE : Currently this function does nothing
+*/
+
+GLOBAL void hl_drv_vocoder_state_set (void)
+{
+  TRACE_FUNCTION("hl_drv_vocoder_enabled()");
+
+  switch(currVocoderState)
+  {
+  case HL_VOCODER_ENABLE_INITIATED:
+    currVocoderState = HL_VOCODER_ENABLED;
+    break;
+
+  case HL_VOCODER_DISABLE_INITIATED:
+    currVocoderState = HL_VOCODER_DISABLED;
+    break;
+
+  default:
+    break;
+
+  }
+}
+#endif