# HG changeset patch # User Mychaela Falconia # Date 1553733370 0 # Node ID 8c5d012b9c4d8ec1e09022532f779c1efbcf5a8f # Parent 5ad7f6a9d7d4ce3f7bdcf217f3dbda5674de43bc aci: AT@VSEL and vocoder revamping changes from Magnetite diff -r 5ad7f6a9d7d4 -r 8c5d012b9c4d src/g23m-aci/aci/aci_cmh.h --- a/src/g23m-aci/aci/aci_cmh.h Fri Mar 22 17:13:59 2019 +0000 +++ b/src/g23m-aci/aci/aci_cmh.h Thu Mar 28 00:36:10 2019 +0000 @@ -527,6 +527,7 @@ /* FreeCalypso additions */ AT_CMD_AT_SPKR, AT_CMD_AT_VPATH, + AT_CMD_AT_VSEL, AT_CMD_AT_SND, AT_CMD_AT_E1, AT_CMD_AT_E1STOP, diff -r 5ad7f6a9d7d4 -r 8c5d012b9c4d src/g23m-aci/aci/ati_audio.c --- a/src/g23m-aci/aci/ati_audio.c Fri Mar 22 17:13:59 2019 +0000 +++ b/src/g23m-aci/aci/ati_audio.c Thu Mar 28 00:36:10 2019 +0000 @@ -168,6 +168,8 @@ } #ifdef CONFIG_TARGET_FCDEV3B +extern UBYTE aci_digital_voice_autoswitch; + /* AT@VPATH - configure digital voice path */ GLOBAL T_ATI_RSLT atAtVPATH ( char *cl, UBYTE srcId ) { @@ -212,6 +214,33 @@ return (ATI_CMPL); } + +/* AT@VSEL - configure digital voice path automatic operation */ +GLOBAL T_ATI_RSLT atAtVSEL ( char *cl, UBYTE srcId ) +{ + int vsel_int; + + TRACE_FUNCTION("atAtVSEL()"); + + cl = parse(cl, "D", &vsel_int); + if (!cl) + return (ATI_FAIL); + if (vsel_int != 0 && vsel_int != 1) + return (ATI_FAIL); + aci_digital_voice_autoswitch = vsel_int; + return (ATI_CMPL); +} + +GLOBAL T_ATI_RSLT queatAtVSEL (char *cl, UBYTE srcId) +{ + char *me="@VSEL: "; + + TRACE_FUNCTION("queatAtVSEL()"); + + sprintf(g_sa, "%s%u", me, aci_digital_voice_autoswitch); + io_sendMessage(srcId, g_sa, ATI_NORMAL_OUTPUT); + return (ATI_CMPL); +} #endif static char melody_E1_name[AUDIO_PATH_NAME_MAX_SIZE]; diff -r 5ad7f6a9d7d4 -r 8c5d012b9c4d src/g23m-aci/aci/ati_cmd.c --- a/src/g23m-aci/aci/ati_cmd.c Fri Mar 22 17:13:59 2019 +0000 +++ b/src/g23m-aci/aci/ati_cmd.c Thu Mar 28 00:36:10 2019 +0000 @@ -750,6 +750,8 @@ #ifdef CONFIG_TARGET_FCDEV3B EXTERN T_ATI_RSLT atAtVPATH (char *cl, UBYTE srcId); EXTERN T_ATI_RSLT queatAtVPATH (char *cl, UBYTE srcId); +EXTERN T_ATI_RSLT atAtVSEL (char *cl, UBYTE srcId); +EXTERN T_ATI_RSLT queatAtVSEL (char *cl, UBYTE srcId); #endif EXTERN T_ATI_RSLT atAtSND (char *cl, UBYTE srcId); EXTERN T_ATI_RSLT atAtE1 (char *cl, UBYTE srcId); @@ -1212,6 +1214,7 @@ #endif #ifdef CONFIG_TARGET_FCDEV3B {"@VPATH", AT_CMD_AT_VPATH, atAtVPATH,test_gen, queatAtVPATH,"%s: (0-2)"}, + {"@VSEL", AT_CMD_AT_VSEL, atAtVSEL, test_gen, queatAtVSEL, "%s: (0,1)"}, #endif {"@SND", AT_CMD_AT_SND, atAtSND, 0, 0, 0}, {"@E1", AT_CMD_AT_E1, atAtE1, 0, 0, 0}, diff -r 5ad7f6a9d7d4 -r 8c5d012b9c4d src/g23m-aci/aci/hl_audio_drv.c --- a/src/g23m-aci/aci/hl_audio_drv.c Fri Mar 22 17:13:59 2019 +0000 +++ b/src/g23m-aci/aci/hl_audio_drv.c Thu Mar 28 00:36:10 2019 +0000 @@ -29,36 +29,26 @@ #include "aci.h" #include "psa.h" #include "hl_audio_drv.h" - -#ifdef VOCODER_FUNC_INTERFACE -#include "l4_tim.h" -#endif - +#include "rv/rv_general.h" +#include "audio/audio_api.h" +#include "fc-target.cfg" /* ===============GLOBAL VARIABLES====================*/ LOCAL T_HL_VOCODER_STATE currVocoderState; -#ifdef VOCODER_FUNC_INTERFACE -GLOBAL T_HL_VOCODER_ACTION currVocoderAction; -#endif -/* This flag helps enable the vocoder interface testing for - specific tescases -*/ -#ifdef _SIMULATION_ -BOOL vocoder_tst_flag; +#ifdef CONFIG_TARGET_FCDEV3B +GLOBAL UBYTE aci_digital_voice_autoswitch; #endif /* =============FUNCTION DEFINITIONS FOR L1===========*/ -#ifndef _SIMULATION_ #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 */ -#endif /* _SIMULATION_ */ /*================= FUNCTIONS ========================*/ @@ -77,14 +67,14 @@ TRACE_FUNCTION("hl_audio_drv_init()"); currVocoderState = HL_VOCODER_DISABLED; -#ifdef VOCODER_FUNC_INTERFACE - currVocoderAction= VOCODER_IDLE; +} + +#ifdef CONFIG_TARGET_FCDEV3B +static void audio_mode_callback(void *event_from_audio) +{ + /* do nothing at this time */ +} #endif -#ifdef _SIMULATION_ - vocoder_tst_flag = FALSE; -#endif - -} /* +-------------------------------------------------------------------+ @@ -92,115 +82,60 @@ | ROUTINE : hl_drv_set_vocoder_state| +-------------------------------------------------------------------+ - PURPOSE : This function will enable/disable vocoder OR put the - vocoder state to PENDING_ENABLE/DISABLE depending on the - vocoder states. Depending on the vocoder state and if - requires timer will be started. Timer implementation is - done to synchronize timing delay needed(appr 35ms) to actually - enable/disable of vocoder in DSP. + 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_TARGET_FCDEV3B + 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"); - #ifdef VOCODER_FUNC_INTERFACE if ( (user_attach EQ TRUE AND currVocoderState EQ HL_VOCODER_ENABLED) OR (user_attach EQ FALSE AND currVocoderState EQ HL_VOCODER_DISABLED) ) - return; /* Do nothing, when the timeout occurs corresponding action will be taken */ - - switch (currVocoderAction) /* currVocoderAction is the state */ - { - case VOCODER_IDLE: - break; - - case VOCODER_BUSY: - { - if ( (user_attach EQ TRUE) AND (currVocoderState EQ HL_VOCODER_DISABLED) ) - { - currVocoderAction = VOCODER_PENDING_ENABLE; - return; - } - else if ( (user_attach EQ FALSE) AND (currVocoderState EQ HL_VOCODER_ENABLED) ) - { - currVocoderAction = VOCODER_PENDING_DISABLE; - return; - } - } - break; - - case VOCODER_PENDING_ENABLE: - { - if (user_attach EQ TRUE) - return; /* Do nothing */ - else /* user_attach EQ FALSE */ - { - currVocoderAction = VOCODER_PENDING_DISABLE; - return; - } - } - break; - - case VOCODER_PENDING_DISABLE: - { - if (user_attach EQ FALSE) - return; /* Do nothing */ - else /* user_attach EQ TRUE */ - { - currVocoderAction = VOCODER_PENDING_ENABLE; - return; - } - } - break; + return; /* No state change requested */ - default: /* Assumed to be a never as all values caught */ - TRACE_ERROR ("Illegal value of currVocoderAction"); - break; - - } - #endif /* VOCODER_FUNC_INTERFACE */ - - #ifdef _SIMULATION_ - if(vocoder_tst_flag) - #endif + if (user_attach) { - - #ifndef VOCODER_FUNC_INTERFACE - { - if(user_attach AND (currVocoderState EQ HL_VOCODER_DISABLED OR currVocoderState EQ HL_VOCODER_DISABLE_INITIATED)) - { - PALLOC(mmi_tch_vocoder_cfg_req, MMI_TCH_VOCODER_CFG_REQ); - mmi_tch_vocoder_cfg_req->vocoder_state = VOCODER_ENABLE; - PSENDX(L1, mmi_tch_vocoder_cfg_req); - currVocoderState = HL_VOCODER_ENABLE_INITIATED; - } - if(!user_attach AND (currVocoderState EQ HL_VOCODER_ENABLED OR currVocoderState EQ HL_VOCODER_ENABLE_INITIATED)) - { - PALLOC(mmi_tch_vocoder_cfg_req, MMI_TCH_VOCODER_CFG_REQ); - mmi_tch_vocoder_cfg_req->vocoder_state = VOCODER_DISABLE; - PSENDX(L1, mmi_tch_vocoder_cfg_req); - currVocoderState = HL_VOCODER_DISABLE_INITIATED; - } - } - #else - #ifndef _SIMULATION_ - TRACE_EVENT("Function interface for Vocoder"); - - currVocoderAction = VOCODER_BUSY; - TIMERSTART(VOCODER_VALUE, ACI_VOCODER); - if (user_attach) - { - enable_tch_vocoder(TRUE); - vocoder_mute_dl (FALSE); /* un-mute speaker */ - vocoder_mute_ul (FALSE); /* un-mute microphone */ - } - else - { - vocoder_mute_dl (TRUE); /* mute speaker */ - vocoder_mute_ul (TRUE); /* mute microphone */ - enable_tch_vocoder (FALSE); /* disable vocoder */ - } - #endif /* _SIMULATION_ */ - #endif /* VOCODER_FUNC_INTERFACE */ + enable_tch_vocoder(TRUE); + vocoder_mute_dl (FALSE); /* un-mute speaker */ + vocoder_mute_ul (FALSE); /* un-mute microphone */ + #ifdef CONFIG_TARGET_FCDEV3B + 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_TARGET_FCDEV3B + 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; @@ -248,24 +183,5 @@ break; } -#ifdef VOCODER_FUNC_INTERFACE - currVocoderAction = VOCODER_IDLE; -#endif } #endif - -#ifdef _SIMULATION_ -/* -+-------------------------------------------------------------------+ -| PROJECT : GSM-PS (6147) MODULE : HL_AUDIO_DRV | -| ROUTINE : hl_audio_drv_initForTest | -+-------------------------------------------------------------------+ - - PURPOSE : Initialise global variables related to simulaed -*/ - -GLOBAL void hl_audio_drv_initForTest(void) -{ - vocoder_tst_flag = TRUE; -} -#endif diff -r 5ad7f6a9d7d4 -r 8c5d012b9c4d src/g23m-aci/aci/psa_f.c --- a/src/g23m-aci/aci/psa_f.c Fri Mar 22 17:13:59 2019 +0000 +++ b/src/g23m-aci/aci/psa_f.c Thu Mar 28 00:36:10 2019 +0000 @@ -59,7 +59,8 @@ #include "cmh_uart.h" #endif -#ifdef VOCODER_FUNC_INTERFACE +/* removed in FreeCalypso */ +#if 0 //#ifdef VOCODER_FUNC_INTERFACE #include "hl_audio_drv.h" #endif @@ -143,7 +144,8 @@ psaCC_DTMFTimeout(); return(TRUE); -#ifdef VOCODER_FUNC_INTERFACE +/* removed in FreeCalypso */ +#if 0 //#ifdef VOCODER_FUNC_INTERFACE case(ACI_VOCODER): { T_HL_VOCODER_ACTION tmpcurrVocoderAction = currVocoderAction;