FreeCalypso > hg > fc-tourmaline
view src/cs/layer1/audio_cfile/l1audio_drive.c @ 300:edcb8364d45b
L1: resurrect TCH tap feature
In this new incarnation of our TCH tap feature, we support DL sniffing
in all 3 of FR1, HR1 and EFR, and the new implementation will capture
every 20 ms frame where the old one silently skipped a frame (sent
nothing) during FACCH stealing. The wire interface on RVTMUX changed
slightly, and fc-shell tch record will need to be updated to support
the new version.
TCH UL play or substitution is supported for FR1 and EFR only;
support for HR1 can be added later if needed.
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Tue, 13 Dec 2022 02:44:01 +0000 |
parents | 4e78acac3d88 |
children |
line wrap: on
line source
/************* Revision Controle System Header ************* * GSM Layer 1 software * L1AUDIO_DRIVE.C * * Filename l1audio_drive.c * Copyright 2003 (C) Texas Instruments * ************* Revision Controle System Header *************/ /************************************/ /* Include files... */ /************************************/ #include "l1_macro.h" #include "l1_confg.h" #if (AUDIO_TASK == 1) #include "l1_types.h" #include "sys_types.h" #if (CODE_VERSION == SIMULATION) && (AUDIO_SIMULATION) #include <stdlib.h> #include <string.h> #include "iq.h" // Debug / Init hardware ("eva3.lib") #include "l1_ver.h" #include "l1_const.h" #include "l1_signa.h" #if TESTMODE #include "l1tm_defty.h" #endif #include "l1audio_const.h" #include "l1audio_cust.h" #include "l1audio_defty.h" #include "l1audio_msgty.h" #if (L1_GTT == 1) #include "l1gtt_const.h" #include "l1gtt_defty.h" #endif //added here from e-sample for AAC #if (L1_DYN_DSP_DWNLD == 1) #include "l1_dyn_dwl_const.h" #include "l1_dyn_dwl_defty.h" #endif #if (L1_MP3 == 1) #include "l1mp3_defty.h" #endif #if (L1_MIDI == 1) #include "l1midi_defty.h" #endif //added here from e-sample for AAC #if (L1_AAC == 1) #include "l1aac_defty.h" #endif #include "l1_defty.h" #include "cust_os.h" #include "l1_msgty.h" #include "l1_varex.h" #include "l1_mftab.h" #include "l1_tabs.h" #include "l1_ctl.h" #include "l1_time.h" #include "l1_scen.h" #else // Layer1 and debug include files. #include <ctype.h> #include <math.h> #include "l1_ver.h" #include "l1_const.h" #include "l1_signa.h" #if TESTMODE #include "l1tm_defty.h" #endif #include "l1audio_const.h" #include "l1audio_cust.h" #include "l1audio_defty.h" #include "l1audio_msgty.h" #if (L1_GTT == 1) #include "l1gtt_const.h" #include "l1gtt_defty.h" #endif //added here from e-sample for AAC #if (L1_DYN_DSP_DWNLD == 1) #include "l1_dyn_dwl_const.h" #include "l1_dyn_dwl_defty.h" #endif #if (L1_MP3 == 1) #include "l1mp3_defty.h" #endif #if (L1_MIDI == 1) #include "l1midi_defty.h" #endif //added here from e-sample for AAC #if (L1_AAC == 1) #include "l1aac_defty.h" #endif #include "l1_defty.h" #include "cust_os.h" #include "l1_msgty.h" #include "tpudrv.h" // TPU drivers. ("eva3.lib") #include "l1_varex.h" #include "l1_proto.h" #include "l1_mftab.h" #include "l1_tabs.h" #include "mem.h" #include "armio.h" #include "timer.h" #include "timer1.h" #include "dma.h" #include "inth.h" #include "ulpd.h" #include "rhea_arm.h" #include "clkm.h" // Clockm ("eva3.lib") #include "l1_ctl.h" #include "l1_time.h" #if L2_L3_SIMUL #include "l1_scen.h" #endif #endif #include "l1audio_macro.h" /**************************************/ /* Prototypes for L1 SYNCH manager */ /**************************************/ void vocoder_mute_dl (BOOL mute); void vocoder_mute_ul (BOOL mute); #if (AUDIO_DSP_FEATURES == 1) void L1_audio_sidetone_write(UWORD16 sidetone_value); void L1_audio_CAL_DlVolume_write(UWORD16 vol_value); void L1_audio_CAL_UlVolume_write(UWORD16 vol_value); void L1_audio_volume_speed_write(UWORD16 volspeed_value); #endif /**************************************/ /* External prototypes */ /**************************************/ /*-------------------------------------------------------*/ /* vocoder_mute_dl() */ /*-------------------------------------------------------*/ /* */ /* Parameters : */ /* */ /* Return : */ /* */ /* Description : Mute the DL vocoder. */ /* */ /*-------------------------------------------------------*/ void vocoder_mute_dl(BOOL mute) { if (mute) { // Set the DL vocoder mute bit in the d_tch_mode register l1s_dsp_com.dsp_ndb_ptr->d_tch_mode |= (0x01<<14); } else { // Reset the DL vocoder mute bit in the d_tch_mode register l1s_dsp_com.dsp_ndb_ptr->d_tch_mode &= ~(0x01<<14); } } /*-------------------------------------------------------*/ /* vocoder_mute_ul() */ /*-------------------------------------------------------*/ /* */ /* Parameters : */ /* */ /* Return : */ /* */ /* Description : Mute the UL vocoder. */ /* */ /*-------------------------------------------------------*/ void vocoder_mute_ul(BOOL mute) { if (mute) { // Set the UL vocoder mute bit in the d_tch_mode register l1s_dsp_com.dsp_ndb_ptr->d_tch_mode |= (0x01<<15); } else { // Reset the UL vocoder mute bit in the d_tch_mode register l1s_dsp_com.dsp_ndb_ptr->d_tch_mode &= ~(0x01<<15); } } #if (AUDIO_DSP_FEATURES == 1) /*-------------------------------------------------------*/ /* L1_audio_sidetone_write() */ /*-------------------------------------------------------*/ /* */ /* Parameters : */ /* */ /* Return : */ /* */ /* Description : write sidetone gain in API for DSP */ /* sidetone process */ /* */ /*-------------------------------------------------------*/ void L1_audio_sidetone_write(UWORD16 sidetone_value) { l1s_dsp_com.dsp_ndb_ptr->d_sidetone_level = (API) sidetone_value; } /*-------------------------------------------------------*/ /* L1_audio_CAL_DlVolume_write() */ /*-------------------------------------------------------*/ /* */ /* Parameters : */ /* */ /* Return : */ /* */ /* Description : write DL gain in API for DSP vol ctrl */ /* process */ /* */ /*-------------------------------------------------------*/ void L1_audio_CAL_DlVolume_write(UWORD16 vol_value) { l1s_dsp_com.dsp_ndb_ptr->d_vol_dl_level = (API) vol_value; } /*-------------------------------------------------------*/ /* L1_audio_CAL_UlVolume_write() */ /*-------------------------------------------------------*/ /* */ /* Parameters : */ /* */ /* Return : */ /* */ /* Description : write UL gain in API for DSP vol ctrl */ /* process */ /* */ /*-------------------------------------------------------*/ void L1_audio_CAL_UlVolume_write(UWORD16 vol_value) { l1s_dsp_com.dsp_ndb_ptr->d_vol_ul_level = (API) vol_value; } /*-------------------------------------------------------*/ /* L1_audio_volume_speed_write() */ /*-------------------------------------------------------*/ /* */ /* Parameters : */ /* */ /* Return : */ /* */ /* Description : write volume speed in API for DSP vol */ /* ctrl process */ /* */ /*-------------------------------------------------------*/ void L1_audio_volume_speed_write(UWORD16 volspeed_value) { l1s_dsp_com.dsp_ndb_ptr->d_vol_speed = (API) volspeed_value; } #endif /* DSP_AUDIO_FEAT */ #endif // AUDIO_TASK