/*****************************************************************************
 * FUNCTION
 *  aud_media_stop_by_id_req_hdlr
 * DESCRIPTION
 *  
 * PARAMETERS
 *  ilm_ptr     [?]     
 * RETURNS
 *  void
 *****************************************************************************/
void aud_media_stop_by_id_req_hdlr(ilm_struct *ilm_ptr)
{

    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    kal_uint8 audio_id;
    media_aud_stop_by_id_req_struct *req_p = (media_aud_stop_by_id_req_struct*) ilm_ptr->local_para_ptr;
    media_aud_stop_by_id_cnf_struct *cnf_p = NULL;
    

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    aud_context_p->src_mod = ilm_ptr->src_mod_id;

    audio_id = req_p->audio_id;

    if (audio_id <= TONE_KEY_CLICK)
    {
        aud_keytone_stop();
    }
    else if ((audio_id > TONE_KEY_CLICK) && (audio_id <= MAX_TONE_ID))
    {
        aud_tone_stop();
    }

    cnf_p = (media_aud_stop_by_id_cnf_struct*)
        construct_local_para(sizeof(media_aud_stop_by_id_cnf_struct), TD_CTRL);

    cnf_p->result = MED_RES_OK;

    aud_send_ilm(ilm_ptr->src_mod_id, MSG_ID_MEDIA_AUD_STOP_BY_ID_CNF, cnf_p, NULL);

}
/*****************************************************************************
 * FUNCTION
 *  aud_send_set_audio_param_cnf
 * DESCRIPTION
 *  
 * PARAMETERS
 *  result      [IN]        
 * RETURNS
 *  void
 *****************************************************************************/
void aud_send_set_audio_param_cnf(kal_uint8 result)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    media_aud_set_audio_param_cnf_struct *cnf_p = NULL;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    cnf_p = (media_aud_set_audio_param_cnf_struct*)
        construct_local_para(sizeof(media_aud_set_audio_param_cnf_struct), TD_CTRL);

    /* send confirm message to L4 */
    cnf_p->src_id = aud_context_p->src_id;
    if(result == 0) /* MED_RES_OK */
    {
        cnf_p->result = KAL_TRUE;
    }
    else
    {
        cnf_p->result = KAL_FALSE;
    }
    cnf_p->cause = result;

    aud_send_ilm(aud_context_p->src_mod, MSG_ID_MEDIA_AUD_SET_AUDIO_PARAM_CNF, cnf_p, NULL);

}
예제 #3
0
/*****************************************************************************
 * FUNCTION
 *  _aud_trim_event_callback_fct
 * DESCRIPTION
 *  This function is used to receive the callback events from L1Audio.
 * PARAMETERS
 *  handle_p       [IN]        MHdl handle. 
 *  event          [IN]        Play event.
 * RETURNS
 *  void
 *****************************************************************************/
static void _aud_trim_event_callback_fct(MHdl *handle_p, Media_Event event)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    l4aud_trim_event_ind_struct *ind_p = (l4aud_trim_event_ind_struct*)
        construct_local_para(sizeof(l4aud_trim_event_ind_struct), TD_CTRL);

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/

    ind_p->handle = (kal_uint32)handle_p;
    ind_p->event  = event;

    aud_send_ilm(MOD_MED, MSG_ID_L4AUD_TRIM_EVENT_CALLBACK_IND, ind_p, NULL);
}
/*****************************************************************************
 * FUNCTION
 *  aud_send_startup_cnf
 * DESCRIPTION
 *  
 * PARAMETERS
 *  result      [IN]        
 * RETURNS
 *  void
 *****************************************************************************/
void aud_send_startup_cnf(kal_uint8 result)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    med_startup_cnf_struct *cnf_p = NULL;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    cnf_p = (med_startup_cnf_struct*) construct_local_para(sizeof(med_startup_cnf_struct), TD_CTRL);

    /* send confirm message to L4 */
    cnf_p->result = result;

    aud_send_ilm(aud_context_p->src_mod, MSG_ID_MED_STARTUP_CNF, cnf_p, NULL);

}
/*****************************************************************************
 * FUNCTION
 *  aud_media_play_by_id_req_hdlr
 * DESCRIPTION
 *  
 * PARAMETERS
 *  ilm_ptr     [?]     
 * RETURNS
 *  void
 *****************************************************************************/
void aud_media_play_by_id_req_hdlr(ilm_struct *ilm_ptr)
{

    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/    
    kal_uint8 audio_id;
    kal_uint8 audio_out_device;    
    kal_uint8 volume;
    media_aud_play_by_id_req_struct *req_p = (media_aud_play_by_id_req_struct*) ilm_ptr->local_para_ptr;
    media_aud_play_by_id_cnf_struct *cnf_p = NULL;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    audio_id = req_p->audio_id;

    if (req_p->output_path == AUDIO_DEVICE_SPEAKER2)
    {
        /* Use default configuration */
        aud_cfg_audio_out_device(audio_id, &audio_out_device);
    }
    else
    {
        /* Use user-specified path */
        audio_out_device = req_p->output_path;
    }

    if (audio_id <= TONE_KEY_CLICK)
    {
        aud_keytone_stop();

        /* Update keytone volume */
        volume = aud_get_volume_gain(aud_context_p->audio_mode, AUD_VOLUME_KEY, req_p->volume);
        aud_keytone_set_output_volume(volume, 0);
    
        aud_keytone_play(audio_id, audio_out_device, req_p->play_style);
    }
    else if ((audio_id > TONE_KEY_CLICK) && (audio_id <= MAX_TONE_ID))
    {
        /* if keytone is playing, stop it */
        aud_keytone_stop();

        if (req_p->play_style == DEVICE_AUDIO_PLAY_INFINITE)
        {
            aud_context_p->tone_playing = KAL_TRUE;
        }

        /* Update tone volume */
        volume = aud_get_volume_gain(aud_context_p->audio_mode, AUD_VOLUME_CTN, req_p->volume);
        aud_tone_set_output_volume(volume, 0);

        aud_tone_play(audio_id, audio_out_device);
    }

    cnf_p = (media_aud_play_by_id_cnf_struct*)
        construct_local_para(sizeof(media_aud_play_by_id_cnf_struct), TD_CTRL);

    cnf_p->result = MED_RES_OK;

    aud_send_ilm(ilm_ptr->src_mod_id, MSG_ID_MEDIA_AUD_PLAY_BY_ID_CNF, cnf_p, NULL);

}
/*****************************************************************************
 * FUNCTION
 *  aud_send_msg_to_nvram
 * DESCRIPTION
 *  
 * PARAMETERS
 *  msg_name        [IN]        
 *  ef_id           [IN]        
 *  data_ptr        [?]         
 *  length          [IN]        
 * RETURNS
 *  void
 *****************************************************************************/
void aud_send_msg_to_nvram(msg_type msg_name, kal_uint16 ef_id, void *data_ptr, kal_uint16 length)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    peer_buff_struct *data_stream;
    local_para_struct *parm_stream;
    kal_uint16 pdu_len;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    switch (msg_name)
    {
        case MSG_ID_NVRAM_WRITE_REQ:
            switch (ef_id)
            {
                case NVRAM_EF_CUST_ACOUSTIC_DATA_LID:
                case NVRAM_EF_AUDIO_PARAM_LID:
                case NVRAM_EF_AUDIO_DC_CALIBRATION_LID:
            #ifdef __AMRWB_LINK_SUPPORT__
                case NVRAM_EF_AUDIO_WB_SPEECH_INPUT_FIR_LID:
                case NVRAM_EF_AUDIO_WB_SPEECH_OUTPUT_FIR_LID:
                case NVRAM_EF_AUDIO_WB_SPEECH_MODE_PARAM_LID:
            #endif /* __AMRWB_LINK_SUPPORT__ */
                    parm_stream = construct_local_para(sizeof(nvram_write_req_struct), TD_CTRL);
                    data_stream = construct_peer_buff(length, 0, 0, TD_CTRL);

                    ((nvram_write_req_struct*) parm_stream)->file_idx = (kal_uint16) ef_id;
                    ((nvram_write_req_struct*) parm_stream)->para = 1;
                    ((nvram_write_req_struct*) parm_stream)->access_id = 0;

                    pdu_len = length;
                    kal_mem_cpy(get_peer_buff_pdu(data_stream, &pdu_len), data_ptr, length);

                    aud_send_ilm(MOD_NVRAM, MSG_ID_NVRAM_WRITE_REQ, parm_stream, data_stream);
                    break;
                default:
                    /* error write */
                    break;
            }
            break;
        case MSG_ID_NVRAM_READ_REQ:
            switch (ef_id)
            {
                case NVRAM_EF_CUST_ACOUSTIC_DATA_LID:
                case NVRAM_EF_AUDIO_PARAM_LID:
                case NVRAM_EF_AUDIO_DC_CALIBRATION_LID:
            #ifdef __GAIN_TABLE_SUPPORT__
                case NVRAM_EF_AUDIO_GAIN_TABLE_LID:
            #endif /* __GAIN_TABLE_SUPPORT__ */
            #ifdef __SPEECH_MODE_TABLE_SUPPORT__
                case NVRAM_EF_AUDIO_SPEECH_MODE_TABLE_LID:
            #endif /* __SPEECH_MODE_TABLE_SUPPORT__ */
            #ifdef __AMRWB_LINK_SUPPORT__
                case NVRAM_EF_AUDIO_WB_SPEECH_INPUT_FIR_LID:
                case NVRAM_EF_AUDIO_WB_SPEECH_OUTPUT_FIR_LID:
                case NVRAM_EF_AUDIO_WB_SPEECH_MODE_PARAM_LID:
            #endif /* __AMRWB_LINK_SUPPORT__ */
            #ifdef __DUAL_MIC_SUPPORT__
                case NVRAM_EF_AUDIO_DUAL_MIC_PARAM_LID:
            #endif
                    parm_stream = construct_local_para(sizeof(nvram_read_req_struct), TD_CTRL);

                    ((nvram_read_req_struct*) parm_stream)->file_idx = (kal_uint16) ef_id;
                    ((nvram_read_req_struct*) parm_stream)->para = 1;

                    aud_send_ilm(MOD_NVRAM, MSG_ID_NVRAM_READ_REQ, parm_stream, NULL);
                    break;
                default:
                    /* error read */
                    break;
            }
            break;
        default:
            break;
    }   /* End Switch */

    return;
}