⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 aud_audio.c

📁 最新MTK手机软件源码
💻 C
📖 第 1 页 / 共 5 页
字号:
    /*----------------------------------------------------------------*/
    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 + -