blob: 3b97e99e95c297f8a853b03ffb80c0b9e51cd3ef [file] [log] [blame]
#include "kal_public_api.h"
#include "kal_general_types.h"
#include "kal_trace.h"
#include "l1sp_trc.h"
#include "l1audio.h"
#include "drv_sap.h"
#include "speech_def.h"
#include "bgSnd.h"
//#include "afe_def.h" // for output device setting
//#include "sp_drv.h"
#include "audio_msgid.h"
#include "sp_drv.h"
#define MIN(a, b) ((a) < (b) ? (a) : (b))
typedef struct{
uint32 id;
bool is_used;
}VOLTE_TONE_T;
VOLTE_TONE_T volte_tone;
extern kal_spinlockid MCUTONESpinLockID;
extern void DTMF_MCU_DataRequestCallback();
extern void DTMF_MCU_GetReadBuffer(kal_int16 **pBuf_16b, kal_uint32 *uDataWord);
extern kal_bool DTMF_MCU_IsPlaying();
extern void DTMF_MCU_ReadDataDone(kal_uint32 uDataWord);
extern void EXT_BGSND_Hisr(BGSND_PROCESS_TYPE type);
uint32 VolteToneGetID()
{
return(volte_tone.id);
}
void VolteToneSetID(uint32 u32val)
{
volte_tone.id = u32val;
}
bool VolteToneGetUsed()
{
return(volte_tone.is_used);
}
void VolteToneSetUsed(bool bval)
{
volte_tone.is_used = bval;
}
void SP4G_PSR_Tone_init()
{
}
//tone
void SP4G_PSR_DL_Tone_Play(const L1SP_Tones *pToneList)
{
ilm_PSR_DL_TONE_t *local_para;
MD_TRC_SP4G_PSR_DL_TONE_PLAY_ENTER();
//TONE_Play(pToneList, DSP_TONE);
local_para = (ilm_PSR_DL_TONE_t *) construct_local_para( sizeof(ilm_PSR_DL_TONE_t), TD_CTRL/*TD_RESET*/ );
local_para->pToneList = (L1SP_Tones *)pToneList;
msg_send6(MOD_LTECSR, MOD_MED, AUDIO_SAP, MSG_ID_AUDIO_M2M_VOLTE_DL_TONE_PLAY, (local_para_struct *)local_para, NULL);
MD_TRC_SP4G_PSR_DL_TONE_PLAY_LEAVE();
}
void SP4G_PSR_DL_Tone_Stop( void )
{
MD_TRC_SP4G_PSR_DL_TONE_STOP_ENTER();
//TONE_Stop(DSP_TONE);
msg_send6(MOD_LTECSR, MOD_MED, AUDIO_SAP, MSG_ID_AUDIO_M2M_VOLTE_DL_TONE_STOP, NULL, NULL);
MD_TRC_SP4G_PSR_DL_TONE_STOP_LEAVE();
}
#if 0
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
#endif
#if 0
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
#endif
void volte_Tone_bgSnd_closeHandler(void);//BGSND HISR to MED ToDO
void volte_BGSND_ULHdr(void);
//TONE
void SP4G_PSR_UL_Tone_Play(const L1SP_Tones *pToneList )
{
ilm_PSR_DL_TONE_t *local_para;
MD_TRC_SP4G_PSR_UL_TONE_PLAY_ENTER();
/*if( !volte_tone.is_used ){
TONE_Play(pToneList, MCU_TONE);
volte_tone.id = EXT_BGSND_Start(volte_Tone_bgSnd_closeHandler, NULL, volte_BGSND_ULHdr, 7, 7);
volte_tone.is_used = true;
}else{
MD_TRC_SP4G_PSR_UL_TONE_PLAY_SKIP();
}*/
local_para = (ilm_PSR_DL_TONE_t *) construct_local_para( sizeof(ilm_PSR_DL_TONE_t), TD_CTRL/*TD_RESET*/ );
local_para->pToneList = (L1SP_Tones *)pToneList;
msg_send6(MOD_LTECSR, MOD_MED, AUDIO_SAP, MSG_ID_AUDIO_M2M_VOLTE_UL_TONE_PLAY, (local_para_struct *)local_para, NULL);
MD_TRC_SP4G_PSR_UL_TONE_PLAY_LEAVE();
}
void SP4G_PSR_UL_Tone_Stop( void )
{
MD_TRC_SP4G_PSR_UL_TONE_STOP_ENTER();
/*if( volte_tone.is_used ){
EXT_BGSND_Flush(volte_tone.id);
TONE_Stop(MCU_TONE);
}else{
MD_TRC_SP4G_PSR_UL_TONE_STOP_SKIP();
}*/
msg_send6(MOD_LTECSR, MOD_MED, AUDIO_SAP, MSG_ID_AUDIO_M2M_VOLTE_UL_TONE_STOP, NULL, NULL);
MD_TRC_SP4G_PSR_UL_TONE_STOP_LEAVE();
}
void volte_Tone_bgSnd_closeHandler(void)//BGSND HISR to MED ToDO
{
MD_TRC_VOLTE_BGSND_CLOSEHANDLER_ENTER();
ASSERT( volte_tone.is_used );
msg_send4(MOD_L1SP, MOD_MED, AUDIO_SAP, MSG_ID_AUDIO_M2M_VOLTE_TONE_BGSND_CLOSE);
MD_TRC_VOLTE_BGSND_CLOSEHANDLER_LEAVE();
}
void volte_Tone_BgSndClose(void)//trigger by MED
{
MD_TRC_VOLTE_BGSNDCLOSE_LEAVE();
ASSERT( volte_tone.is_used );
EXT_BGSND_Close(volte_tone.id);
volte_tone.is_used = false;
MD_TRC_VOLTE_BGSNDCLOSE_LEAVE();
}
//#############################################
//KT
void volte_KT_bgSnd_closeHandler(void);//BGSND HISR to MED ToDO
#if 0
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
#endif
#if 0
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
#endif
#if 0
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
#endif