📄 aud_audio.c
字号:
/*----------------------------------------------------------------*/
AUD_FUNC_ENTRY(AUD_SET_AUDIO_MODE_REQ_HDLR);
req_p = (l4aud_set_audio_mode_req_struct*) ilm_ptr->local_para_ptr;
aud_context_p->audio_mode = req_p->mode;
aud_set_aud_path_volume(req_p->mode);
#ifdef DUMMY_CNF
cnf_p = (l4aud_set_audio_mode_cnf_struct*) construct_local_para(sizeof(l4aud_set_audio_mode_cnf_struct), TD_CTRL);
cnf_p->src_id = req_p->src_id;
cnf_p->result = KAL_TRUE;
cnf_p->cause = MED_RES_OK;
aud_send_ilm(ilm_ptr->src_mod_id, MSG_ID_L4AUD_SET_AUDIO_MODE_CNF, cnf_p, NULL);
#endif /* DUMMY_CNF */
}
/*****************************************************************************
* FUNCTION
* aud_gpio_detect_ind_hdlr
* DESCRIPTION
*
* PARAMETERS
* ilm_ptr [?]
* RETURNS
* void
*****************************************************************************/
void aud_gpio_detect_ind_hdlr(ilm_struct *ilm_ptr)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
/*
* l4aud_gpio_detect_ind_struct* ind_p;
*
* AUD_FUNC_ENTRY(AUD_GPIO_DETECT_IND_HDLR)
*
* ind_p = (l4aud_gpio_detect_ind_struct*)ilm_ptr->local_para_ptr;
*
* switch(ind_p->gpio_device)
* {
* case EXT_DEV_NONE:
* if (aud_context_p->audio_mode == AUD_MODE_HEADSET )
* aud_context_p->audio_mode = AUD_MODE_NORMAL;
* break;
* case EXT_DEV_EARPHONE:
* aud_context_p->audio_mode = AUD_MODE_HEADSET;
* break;
* }
* aud_set_aud_path_volume(aud_context_p->audio_mode);
*/
}
/*****************************************************************************
* FUNCTION
* aud_get_audio_profile_req_hdlr
* DESCRIPTION
*
* PARAMETERS
* ilm_ptr [?]
* RETURNS
* void
*****************************************************************************/
void aud_get_audio_profile_req_hdlr(ilm_struct *ilm_ptr)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
l4aud_get_audio_profile_req_struct *req_p;
l4aud_get_audio_profile_cnf_struct *cnf_p = NULL;
kal_uint8 mode;
audio_profile_struct *profile_p;
custom_acoustic_struct *data_p;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
AUD_FUNC_ENTRY(AUD_GET_AUDIO_PROFILE_REQ_HDLR);
req_p = (l4aud_get_audio_profile_req_struct*) ilm_ptr->local_para_ptr;
cnf_p = (l4aud_get_audio_profile_cnf_struct*)
construct_local_para(sizeof(l4aud_get_audio_profile_cnf_struct), TD_CTRL);
cnf_p->src_id = req_p->src_id;
mode = req_p->mode;
profile_p = &cnf_p->audio_profile;
data_p = &aud_context_p->acoustic_data;
profile_p->mode = mode;
if (mode < MAX_VOL_CATE)
{
kal_mem_cpy(
profile_p->speech,
data_p->volume_gain[mode][AUD_VOLUME_SPH],
sizeof(data_p->volume_gain[mode][AUD_VOLUME_SPH]));
kal_mem_cpy(
profile_p->keytone,
data_p->volume_gain[mode][AUD_VOLUME_KEY],
sizeof(data_p->volume_gain[mode][AUD_VOLUME_KEY]));
kal_mem_cpy(
profile_p->melody,
data_p->volume_gain[mode][AUD_VOLUME_MEDIA],
sizeof(data_p->volume_gain[mode][AUD_VOLUME_MEDIA]));
kal_mem_cpy(
profile_p->sound,
data_p->volume_gain[mode][AUD_VOLUME_FMR],
sizeof(data_p->volume_gain[mode][AUD_VOLUME_FMR]));
kal_mem_cpy(
profile_p->mic,
data_p->volume_gain[mode][AUD_VOLUME_MIC],
sizeof(data_p->volume_gain[mode][AUD_VOLUME_MIC]));
profile_p->sidetone = data_p->volume_gain[mode][AUD_VOLUME_SID][0];
#ifdef __16_LEVEL_AUDIO_VOLUME__
/* get 16-level audio volume settings */
profile_p->max_melody_volume_gain = data_p->max_melody_volume_gain[mode];
profile_p->melody_volume_gain_step = data_p->melody_volume_gain_step[mode];
#endif /* __16_LEVEL_AUDIO_VOLUME__ */
cnf_p->result = KAL_TRUE;
}
#if defined(TV_OUT_SUPPORT)
else if(mode == VOL_TV_OUT)
{
memset(profile_p, 0 , sizeof(audio_profile_struct));
#ifdef __16_LEVEL_AUDIO_VOLUME__
/* get 16-level audio volume settings */
profile_p->max_melody_volume_gain = data_p->max_melody_volume_gain[mode];
profile_p->melody_volume_gain_step = data_p->melody_volume_gain_step[mode];
#endif /* __16_LEVEL_AUDIO_VOLUME__ */
kal_mem_cpy(
profile_p->tv_out_volume_gain,
data_p->tv_out_volume_gain,
sizeof(data_p->tv_out_volume_gain));
}
#endif /* TV_OUT_SUPPORT */
else
{
cnf_p->result = KAL_FALSE;
}
aud_send_ilm(ilm_ptr->src_mod_id, MSG_ID_L4AUD_GET_AUDIO_PROFILE_CNF, cnf_p, NULL);
}
/*****************************************************************************
* FUNCTION
* aud_set_audio_profile_req_hdlr
* DESCRIPTION
*
* PARAMETERS
* ilm_ptr [?]
* RETURNS
* void
*****************************************************************************/
void aud_set_audio_profile_req_hdlr(ilm_struct *ilm_ptr)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
l4aud_set_audio_profile_req_struct *req_p = NULL;
audio_profile_struct *profile_p;
custom_acoustic_struct *data_p;
kal_uint8 mode;
kal_bool write_to_nvram = KAL_FALSE;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
req_p = (l4aud_set_audio_profile_req_struct*) ilm_ptr->local_para_ptr;
AUD_FUNC_ENTRY(AUD_SET_AUDIO_PROFILE_REQ_HDLR);
if (req_p)
{
aud_context_p->src_id = req_p->src_id;
profile_p = &req_p->audio_profile;
data_p = &aud_context_p->acoustic_data;
mode = profile_p->mode;
if (mode < MAX_VOL_CATE)
{
kal_mem_cpy(
data_p->volume_gain[mode][AUD_VOLUME_SPH],
profile_p->speech,
sizeof(data_p->volume_gain[mode][AUD_VOLUME_SPH]));
kal_mem_cpy(
data_p->volume_gain[mode][AUD_VOLUME_KEY],
profile_p->keytone,
sizeof(data_p->volume_gain[mode][AUD_VOLUME_KEY]));
kal_mem_cpy(
data_p->volume_gain[mode][AUD_VOLUME_MEDIA],
profile_p->melody,
sizeof(data_p->volume_gain[mode][AUD_VOLUME_MEDIA]));
kal_mem_cpy(
data_p->volume_gain[mode][AUD_VOLUME_FMR],
profile_p->sound,
sizeof(data_p->volume_gain[mode][AUD_VOLUME_FMR]));
kal_mem_cpy(
data_p->volume_gain[mode][AUD_VOLUME_MIC],
profile_p->mic,
sizeof(data_p->volume_gain[mode][AUD_VOLUME_MIC]));
kal_mem_set(
data_p->volume_gain[mode][AUD_VOLUME_SID],
profile_p->sidetone,
sizeof(data_p->volume_gain[mode][AUD_VOLUME_SID]));
#ifdef __16_LEVEL_AUDIO_VOLUME__
/* set 16-level audio volume settings */
data_p->max_melody_volume_gain[mode] = profile_p->max_melody_volume_gain;
data_p->melody_volume_gain_step[mode] = profile_p->melody_volume_gain_step;
#endif /* __16_LEVEL_AUDIO_VOLUME__ */
aud_set_aud_path_volume(aud_context_p->audio_mode);
write_to_nvram = KAL_TRUE;
}
#if defined(TV_OUT_SUPPORT)
else if(mode == VOL_TV_OUT)
{
#ifdef __16_LEVEL_AUDIO_VOLUME__
/* set 16-level audio volume settings */
data_p->max_melody_volume_gain[mode] = profile_p->max_melody_volume_gain;
data_p->melody_volume_gain_step[mode] = profile_p->melody_volume_gain_step;
#endif /* __16_LEVEL_AUDIO_VOLUME__ */
kal_mem_cpy(
data_p->tv_out_volume_gain,
profile_p->tv_out_volume_gain,
sizeof(data_p->tv_out_volume_gain));
write_to_nvram = KAL_TRUE;
}
#endif /* TV_OUT_SUPPORT */
if (write_to_nvram && (med_context_p->nvram_state == MED_POWERON_READING_NVRAM_FINISH))
{
aud_context_p->src_mod = ilm_ptr->src_mod_id;
aud_send_msg_to_nvram(
MSG_ID_NVRAM_WRITE_REQ,
NVRAM_EF_CUST_ACOUSTIC_DATA_LID,
&(aud_context_p->acoustic_data),
sizeof(custom_acoustic_struct));
}
else
{
aud_send_set_audio_profile_cnf(MED_RES_FAIL);
}
}
}
/*****************************************************************************
* FUNCTION
* aud_get_audio_param_req
* DESCRIPTION
*
* PARAMETERS
* param_p [?]
* RETURNS
* void
*****************************************************************************/
void aud_get_audio_param_req(audio_param_struct *param_p)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
kal_mem_cpy(param_p, &aud_context_p->audio_param, sizeof(audio_param_struct));
}
/*****************************************************************************
* FUNCTION
* aud_get_audio_param_req_hdlr
* DESCRIPTION
*
* PARAMETERS
* ilm_ptr [?]
* RETURNS
* void
*****************************************************************************/
void aud_get_audio_param_req_hdlr(ilm_struct *ilm_ptr)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
l4aud_get_audio_param_req_struct *req_p;
l4aud_get_audio_param_cnf_struct *cnf_p = NULL;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
AUD_FUNC_ENTRY(AUD_GET_AUDIO_PARAM_REQ_HDLR);
req_p = (l4aud_get_audio_param_req_struct*) ilm_ptr->local_para_ptr;
cnf_p = (l4aud_get_audio_param_cnf_struct*)
construct_local_para(sizeof(l4aud_get_audio_param_cnf_struct), TD_CTRL);
cnf_p->src_id = req_p->src_id;
kal_mem_cpy(&cnf_p->audio_param, &aud_context_p->audio_param, sizeof(audio_param_struct));
cnf_p->result = KAL_TRUE;
aud_send_ilm(ilm_ptr->src_mod_id, MSG_ID_L4AUD_GET_AUDIO_PARAM_CNF, cnf_p, NULL);
}
/*****************************************************************************
* FUNCTION
* aud_set_audio_param_req_hdlr
* DESCRIPTION
*
* PARAMETERS
* ilm_ptr [?]
* RETURNS
* void
*****************************************************************************/
void aud_set_audio_param_req_hdlr(ilm_struct *ilm_ptr)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
kal_uint8 param_data[NVRAM_EF_AUDIO_PARAM_SIZE];
kal_uint8 *data_p;
l4aud_set_audio_param_req_struct *req_p = NULL;
audio_param_struct *param_p;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
AUD_FUNC_ENTRY(AUD_SET_AUDIO_PARAM_REQ_HDLR);
aud_context_p->src_mod = ilm_ptr->src_mod_id;
req_p = (l4aud_set_audio_param_req_struct*) ilm_ptr->local_para_ptr;
if (req_p)
{
/* copy to context */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -