FreeCalypso > hg > fc-tourmaline
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