📄 am_event_handler_driver.cc
字号:
#if (MAKE_FTR_VR == TRUE){AUDSCM_SDSR_ENABLE_COMPLETE_IND_ID, &AM_Event_Handler::handle_audscm_sdsr_enable_complete},{AUDSCM_SDSR_DISABLE_COMPLETE_IND_ID, &AM_Event_Handler::handle_audscm_sdsr_disable_complete},//{AUDSCM_SDSR_DISABLE_COMPLETE_NORESP_IND_ID, &AM_Event_Handler::handle_audscm_sdsr_disable_complete_noresp},{DSP_MCU_VR_SD_CAPTURE_COMPLETE, &AM_Event_Handler::handle_audscm_sdsr_capture_complete},{DSP_MCU_VR_SD_RECOGNIZE_COMPLETE, &AM_Event_Handler::handle_audscm_sdsr_complete},{AUDSCM_SDSR_DELETE_COMPLETE_IND_ID, &AM_Event_Handler::handle_audscm_sdsr_delete_complete},{AUDSCM_SDSR_MODEL_ID_IND_ID, &AM_Event_Handler::handle_audscm_sdsr_model_id},{DSP_MCU_VR_SD_TRAIN_COMPLETE, &AM_Event_Handler::handle_audscm_sdsr_train_complete},{AUDSCM_VOICE_TAG_COMPLETE_IND_ID, &AM_Event_Handler::handle_audscm_voice_tag_complete},#endif#if (MAKE_FTR_VA == TRUE){DSP_MCU_VA_RECORD_OFF_CONFIRM, &AM_Event_Handler::handle_audscm_va_record_complete},{DSP_MCU_VA_PLAYBACK_OFF_CONFIRM, &AM_Event_Handler::handle_audscm_va_playback_complete},{AUDSCM_VA_ERASE_COMPLETE_IND_ID, &AM_Event_Handler::handle_audscm_va_erase_complete},#endif#if ((MAKE_FTR_VA == TRUE) ||\ (MAKE_FTR_VR == TRUE)){AUDSCM_REFORMAT_FLASH_COMPLETE_IND_ID, &AM_Event_Handler::handle_audscm_reformat_flash_complete},// the following are common for all platforms{AUD_HW_STUB_COMMAND_CNF_ID, &AM_Event_Handler::handle_aud_hw_stub_command_cnf},#endif#if (MAKE_FTR_VR == TRUE){AUD_ABORT_ALL_VR_ID, &AM_Event_Handler::handle_aud_abort_all_vr},{AUD_SDVR_CHECK_AVAIL_ID, &AM_Event_Handler::handle_aud_sdvr_check_avail},#endif{AUD_VOICE_REQ_ID, &AM_Event_Handler::handle_aud_voice_req},{AUD_VT_VOICE_REQ_ID, &AM_Event_Handler::handle_aud_vt_voice_req},{AUD_TONE_REQ_ID, &AM_Event_Handler::handle_aud_tone_req},{AUDSCM_TONE_CMPLT1_IND_ID, &AM_Event_Handler::handle_audscm_tone_cmplt1},{AUDSCM_DSP_AUDIO_ERROR_REPLY_ID, &AM_Event_Handler::handle_audscm_error_reply},{AUD_COMMAND_REQ_ID, &AM_Event_Handler::handle_aud_command_req},{AUDIO_DEACTIVATE_REQ_ID, &AM_Event_Handler::handle_audio_deactivate_req},{HSCAUD_DTMF_FBK_MUTE_IND_ID, &AM_Event_Handler::handle_hscaud_dtmf_fbk_mute_ind_event},{AUDIO_SUSPEND_REQ_ID, &AM_Event_Handler::handle_audio_suspend_req},{AUDIO_UNSUSPEND_REQ_ID, &AM_Event_Handler::handle_audio_unsuspend_req},{AUD_ACCESSORIES_CHANGE_IND_ID, &AM_Event_Handler::handle_audio_accessories_change_ind},{AUD_STOP_ALL_TONES_REQ_ID, &AM_Event_Handler::handle_aud_stop_all_tones_req},{AUD_MUTE_REQ_ID, &AM_Event_Handler::handle_aud_mute_req}, {AUD_CTIA_MODE_REQ_ID, &AM_Event_Handler::handle_aud_ctia_mode_req},{AM_MDI_Q_MSG_ID, &AM_Event_Handler::handle_am_mdi_q_command},{AM_MDI_Q_EXTERNAL_REPLY_ID, &AM_Event_Handler::handle_am_mdi_q_external_reply},{DL_MMSP_MEDIA_OPEN_SUCCESS, &AM_Event_Handler::handle_aud_media_open_success},{DL_MMSP_MEDIA_OPEN_FAILED, &AM_Event_Handler::handle_aud_media_open_failure},{DL_MMSP_MEDIA_STOP_COMPLETE, &AM_Event_Handler::handle_aud_media_complete},{DL_MMSP_MEDIA_ERROR, &AM_Event_Handler::handle_aud_media_open_failure},{DL_MMSP_MEDIA_STATE_CHANGE, &AM_Event_Handler::handle_aud_media_state_change},{DL_MMSP_MEDIA_CAPTURE_STARTED, &AM_Event_Handler::handle_aud_media_started},{AUD_RAT_CHANGE_IND_ID, &AM_Event_Handler::handle_aud_rat_change_ind},{DL_ACC_ATTRIBUTE_ENABLE_CHANGE_IND_ID, &AM_Event_Handler::handle_aud_dynamic_echo_noise_on_req},{DL_ACC_ATTRIBUTE_DISABLE_CHANGE_IND_ID,&AM_Event_Handler::handle_aud_dynamic_echo_noise_off_req},{AUD_AMR_ALLOW_NOISE_SUP, &AM_Event_Handler::handle_aud_amr_allow_ns_req},{AUD_SETTING_CHANGE_IND_ID, &AM_Event_Handler::handle_aud_setting_change_ind},#if (MAKE_HDW_OKI == TRUE){AUD_SOUNDLIB_TONE_REQ_ID, &AM_Event_Handler::handle_aud_soundlib_tone_req },{AUD_SOUNDLIB_TIMER_ID, &AM_Event_Handler::handle_aud_soundlib_timer},{AUD_SOUNDLIB_MIDI_DATA_IND_ID, &AM_Event_Handler::handle_aud_soundlib_midi_data_ind},{AUD_SOUNDLIB_MIDI_ON_ID, &AM_Event_Handler::handle_aud_soundlib_midi_msg},{AUD_SOUNDLIB_MYMIX_GRID_VALUE_ID, &AM_Event_Handler::handle_aud_soundlib_mymix_grid_value},{AUD_SOUNDLIB_MYMIX_PREFILL_CTRL_ID, &AM_Event_Handler::handle_aud_soundlib_mymix_prefill_ctrl}, #if (MAKE_HDW_MFT == TRUE) {AUD_VIB_REQ_ID, &AM_Event_Handler::handle_aud_soundlib_vibrate_req},#endif#endif{AUD_HAPTICS_SETTING_CHANGE_IND_ID, &AM_Event_Handler::handle_aud_haptics_setting_change_ind}};/************** FUNCTION DEFINITIONS ******************************************//* DESCRIPTION: AM_Event_Handler class constructor INPUTS: None OUTPUTS: None IMPORTANT NOTES: None*/AM_Event_Handler::AM_Event_Handler(void) : am_event_configuration_server (&am_event_memory.configuration_block),#if ( (MAKE_FTR_VR == TRUE) || (MAKE_FTR_VA == TRUE) ) am_event_va_vr_server (&am_event_memory.va_vr_block),#endif am_event_logic_processor (&am_event_memory.hw_audio#if ( (MAKE_FTR_VR == TRUE) || (MAKE_FTR_VA == TRUE) ) ,&am_event_memory.va_vr_block)#else )#endif{}/* DESCRIPTION: Map primitive to its handler function. Step 1: search table for matching primitive id. Step 2: if found, execute its handler function. Step 3: log current state. INPUTS: incoming primitive OUTPUTS: PRIM_STAT_DELETE_UNMODIFIED IMPORTANT NOTES: None*/TD_DSPR_PRIM_STATAM_Event_Handler::handle_primitive(void *message){ // UINT16 prim_id = generic_primitive.get_primitive_identifier(); UINT32 prim_id = suGetMessageType(message); BOOL am_video_tone = FALSE; // Typecast this to the AUD_TONE_REQ message and access the tone ID // only if this is a aud_tone_req message. This is to avoid illegal // accesses to the memory if the request is not a tone req if ( prim_id == AUD_TONE_REQ_ID ) { // extract tone type and request type from primitive TD_AUD_TONE_UNION_T tone = ((AUD_TONE_REQ *)message)->tone; if ( tone.type == DL_AUDIO_TONE_TYPE_MULTIMEDIA_VIDEO ) { am_video_tone = TRUE; } } if ((am_suspend == FALSE) || (prim_id == AUDIO_UNSUSPEND_REQ_ID) || (prim_id == AM_MDI_Q_MSG_ID) || (prim_id == AM_MDI_Q_EXTERNAL_REPLY_ID) || (am_video_tone == TRUE) // These 2 conditions have been added for the vibe test command in E380 #if ((MAKE_HDW_MFT == TRUE) && (MAKE_HDW_OKI == TRUE)) || (prim_id == AUD_VIB_REQ_ID) || (prim_id == AUD_SOUNDLIB_TIMER_ID) )#else )#endif { UINT16 bound = sizeof(am_event_handler_mapping_tbl) / sizeof(AM_EVENT_PRIM_TO_FUNC); for (UINT8 i = 0; i < bound; i++) { if (am_event_handler_mapping_tbl[i].primitive_id == prim_id) { (this->*am_event_handler_mapping_tbl[i].function_ptr)(message); break; } } send_to_logger(prim_id); } return(PRIM_STAT_DELETE_UNMODIFIED);}/* DESCRIPTION: Send a memory block to logger INPUTS: primitive id OUTPUTS: None IMPORTANT NOTES: None*/voidAM_Event_Handler::send_to_logger(UINT16 id){ am_event_memory.event_id = id; // logger_log_task_info(&am_event_memory.header, LOGGER_LOG_PORT_NUMBER, AUD_TASK_ID_NUMBER); // logger_log_msg (&am_event_memory.header);}/* DESCRIPTION: Initialize a memory block as an exec memory INPUTS: None OUTPUTS: None IMPORTANT NOTES: None*/voidAM_Event_Handler::init_mem_space(void){ void *tmp_ptr = &am_event_memory; // exec_init_memory_block((UINT16)(sizeof(AM_EH_AUDIO_MEM_BLOCK) - // sizeof(am_event_memory.exec_overhead)), // &tmp_ptr); // am_event_memory.header.primitive_identifier = LOG_AUDIO_PATH_INFO_REQ_ID;// am_event_memory.header.length = sizeof(AM_EH_AUDIO_MEM_BLOCK) -// sizeof(am_event_memory.exec_overhead) -// sizeof(TD_PRIMITIVE_HEADER);// am_event_memory.header.destination_subaddress = NONEXISTENT_SUBADDRESS;// am_event_memory.header.return_address.task_ptr = NONEXISTENT_TASK_PTR;// am_event_memory.header.return_address.subaddress = NONEXISTENT_SUBADDRESS;// am_event_memory.header.return_address.port_number = NONEXISTENT_PORT_NUMBER;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -