/******************************************************************************* * FUNCTION * Custom_META_IsAllowedLimitedStateOperation * * DESCRIPTION * Customizable limited state META mode operation check function * * CALLS * INT_GetMetaModeSrc * * PARAMETERS * ptrMsg the ilm_struct of the request message * * RETURNS * The indicator of the operation is allowed or denied * *******************************************************************************/ kal_bool Custom_META_IsAllowedLimitedStateOperation(ilm_struct* ptrMsg) { #ifdef __TOOL_ACCESS_CTRL__ // default allowed kal_bool allowed = KAL_TRUE; FT_H * ft_header = NULL; MODE_ENTRY_SRC mode = INT_GetMetaModeSrc(); /********************************* * define more limited state below **********************************/ if(E_BLSUSB == mode) { ft_header=(FT_H *)(ptrMsg->local_para_ptr); // check the operation is basic operation or not // non-basic operations can be customized if(KAL_FALSE == FT_META_IsBasicOperation(ft_header->ft_msg_id)) { switch (ft_header->ft_msg_id) { /******************************************************* * Add more allowed operations below for E_BLSUSB state * message type id defined in interface\meta\ft_msg.h * enum type FT_MESSAGE_ID *******************************************************/ case FT_FAT_OPERATION_ID: allowed = KAL_TRUE; break; default: // if the state is limited state, default denied allowed = KAL_FALSE; break; } } } /********************************* * define more limited state below **********************************/ // else if(...) // { // } return allowed; #else // #ifdef __TOOL_ACCESS_CTRL__ return KAL_TRUE; #endif }
void FT_UtilityCommand(ilm_struct *ptrMsg) { FT_UTILITY_COMMAND_REQ *p_req=(FT_UTILITY_COMMAND_REQ *)ptrMsg->local_para_ptr; FT_UTILITY_COMMAND_CNF cnf; peer_buff_struct *peer_buff_ret = NULL; kal_mem_set(&cnf, '\0', sizeof(cnf)); cnf.type = p_req->type; cnf.status = FT_CNF_FAIL; peer_buff_ret = NULL; switch(p_req->type) { case FT_UTILCMD_CHECK_IF_FUNC_EXIST: ft_util_check_if_func_exist(p_req, &cnf); break; case FT_UTILCMD_CHECK_IF_ISP_SUPPORT: ft_util_check_if_isp_support(&cnf); break; case FT_UTILCMD_QUERY_BT_MODULE_ID: ft_util_query_bt_module_id(&cnf); break; case FT_UTILCMD_ENABLE_WATCHDOG_TIMER: ft_util_watch_dog_start(p_req, &cnf,peer_buff_ret); break; case FT_UTILCMD_CHECK_IF_ACOUSTIC16_SUPPORT: cnf.status = FT_CNF_OK; break; case FT_UTILCMD_CHECK_IF_AUDIOPARAM45_SUPPORT: cnf.status = FT_CNF_OK; break; case FT_UTILCMD_CHECK_IF_LOW_COST_SINGLE_BANK_FLASH: #ifdef _LOW_COST_SINGLE_BANK_FLASH_ cnf.status = FT_CNF_OK; #endif break; case FT_UTILCMD_QUERY_PMIC_ID: ft_util_query_pmic_id(&cnf); break; case FT_UTILCMD_LED_LIGHT_LEVEL: ft_util_set_led_light_level(p_req,&cnf); break; case FT_UTILCMD_VIBRATOR_ONOFF: ft_util_set_vibrator_onoff(p_req,&cnf); break; case FT_UTILCMD_QUERY_LOCAL_TIME: ft_util_query_rtc(&cnf); break; case FT_UTILCMD_RF_ITC_PCL: ft_util_query_itc_pcl(&cnf); break; case FT_UTILCMD_CHECK_IF_WIFI_ALC_SUPPORT: #if defined(__WIFI_SUPPORT__) if(wndrv_get_ALC_enable() && WiFi_Feature_Exist() == KAL_TRUE) cnf.status = FT_CNF_OK; #endif // #if defined(__WIFI_SUPPORT__) break; case FT_UTILCMD_CHECK_IF_DRC_SUPPORT: #if defined(DRC_ENABLED) cnf.status = FT_CNF_OK; #endif break; case FT_UTILCMD_MAIN_SUB_LCD_LIGHT_LEVEL: ft_util_set_lcd_light_level(p_req, &cnf); break; case FT_UTILCMD_CHECK_IF_BT_POWERON: #ifdef __BTMTK__ cnf.status=!Custom_BTQueryPowerOnState();// 0 implies not ready, 1 implies ready //cnf.status = FT_CNF_OK; #endif break; case FT_UTILCMD_CHECK_IF_ULC_FAT_SUPPORT: ft_util_check_if_ulc_support(&cnf); break; case FT_UTILCMD_CHECK_IF_SMART_PHONE_MODEM_SUPPORT: ft_util_check_if_smart_phone_modem_supported(&cnf); break; case FT_UTILCMD_CHECK_TARGET_META_REQUIRED_VERS: ft_util_check_vers(p_req,&cnf,&peer_buff_ret); break; case FT_UTILCMD_SET_TARGET_CHECK_PARAS: ft_util_set_check_paras(p_req,&cnf); break; case FT_UTILCMD_CHECK_IF_TARGET_NV_SEC_ON: #ifdef __NVRAM_SECRET_DATA__ ft_util_get_target_nv_sec_on_flag(&cnf); #else cnf.result.m_bNVSecOn = false; cnf.status = FT_CNF_OK; #endif break; case FT_UTILCMD_REBOOT_TO_NORMAL_MODE: ft_util_reboot_to_normal_mode(p_req, &cnf); break; #if defined(__WIFI_BT_SINGLE_ANTENNA_SUPPORT__) case FT_UTILCMD_QUERY_BT_WIFI_SINGLE_ANTENNA_CAP: cnf.status = FT_CNF_OK; cnf.result.m_bBTWiFiSingleAntenna = bwcs_query_single_antenna_capability(); break; case FT_UTILCMD_SET_ANTENNA_PATH_TO_BT: if(bwcs_query_single_antenna_capability() == KAL_TRUE) bwcs_set_antenna_path( KAL_TRUE ); cnf.status = FT_CNF_OK; break; case FT_UTILCMD_SET_ANTENNA_PATH_TO_WIFI: if(bwcs_query_single_antenna_capability() == KAL_TRUE) bwcs_set_antenna_path( KAL_FALSE ); cnf.status = FT_CNF_OK; break; #endif case FT_UTILCMD_QUERY_TARGET_OPTION_INFO: { cnf.result.m_u4TargetOptionInfo = 0; // reset to 0 #ifdef LIPTON_BB cnf.result.m_u4TargetOptionInfo |= META_LIPTON_OPTION_ON; // 0x00000001 #endif // #ifdef LIPTON_BB #ifdef __TC01__ /* under construction !*/ #endif // #ifdef __TC01__ #if defined(__UMTS_TDD128_MODE__) && defined(__AST_TL1_TDD__) cnf.result.m_u4TargetOptionInfo |= META_AST_TD_OPTION_ON; // 0x00000004 #endif // #if defined(__UMTS_TDD128_MODE__) && defined(__AST_TL1_TDD__) cnf.status = FT_CNF_OK; break; } #ifdef __TOOL_ACCESS_CTRL__ case FT_UTILCMD_QUERY_LIMITED_STATE: { // query the limited state indicator cnf.result.m_u4LimitedStateIndicator = INT_GetMetaModeSrc(); cnf.status = FT_CNF_OK; break; } #endif // #ifdef __TOOL_ACCESS_CTRL__ case FT_UTILCMD_QUERY_VPA_VOLTAGE_LIST: { ft_util_get_vpa_voltage_list(p_req, &cnf, &peer_buff_ret); break; } case FT_UTILCMD_QUERY_DRIVE_AVAILABLE_FOR_FILE_SIZE: { cnf.status = FT_CNF_OK; cnf.result.driveLetter = FT_GetAvailableDrive(p_req->cmd.requestedFileSize); break; } case FT_UTILCMD_QUERY_MAX_CTRL_BUFFER_SIZE: { cnf.status = FT_CNF_OK; /* * prevent from customization error */ if(ft_get_ctrlbuf_max_size() <= Custom_META_ControlBufferSize()) { cnf.result.maxControlBufferSize = ft_get_ctrlbuf_max_size(); } else { /* * Keep the original performance */ if(Custom_META_ControlBufferSize() < 2048) { cnf.result.maxControlBufferSize = 2048; } else { cnf.result.maxControlBufferSize = Custom_META_ControlBufferSize(); } } break; } case FT_UTILCMD_QUERY_ADC_MODULE_SUPPORT: { cnf.status = FT_CNF_OK; #if defined(DRV_ADC_NOT_EXIST)||defined(DRV_ADC_OFF) cnf.result.module_support = KAL_FALSE; #else cnf.result.module_support = KAL_TRUE; #endif // #if defined(DRV_ADC_NOT_EXIST)||defined(DRV_ADC_OFF) break; } case FT_UTILCMD_QUERY_RTC_MODULE_SUPPORT: { cnf.status = FT_CNF_OK; #if defined(DRV_RTC_OFF)||defined(DRV_RTC_NOT_EXIST) cnf.result.module_support = KAL_FALSE; #else cnf.result.module_support = KAL_TRUE; #endif // #if defined(DRV_RTC_NOT_EXIST)||defined(DRV_RTC_OFF) break; } case FT_UTILCMD_QUERY_META_MODE_TRACE: { #if defined(__TST_META_MODE_TRACE_ENABLE__) cnf.result.trace_mode = tst_get_meta_mode_trace_enable(); cnf.status = FT_CNF_OK; #else cnf.status = FT_CNF_FAIL; #endif // #if defined(__TST_META_MODE_TRACE_ENABLE__) break; } case FT_UTILCMD_ENABLE_META_MODE_TRACE: { #if defined(__TST_META_MODE_TRACE_ENABLE__) if(tst_set_meta_mode_trace_enable(p_req->cmd.trace_mode)) { cnf.status = FT_CNF_OK; } else #endif // #if defined(__TST_META_MODE_TRACE_ENABLE__) { cnf.status = FT_CNF_FAIL; } break; } default: break; } FT_UTIL_SendCnf(&cnf, peer_buff_ret); }