/* * Copyright (c) Hisilicon Technologies Co., Ltd. 2020-2022. All rights reserved. * Description: virtualkeypad input lsadc interface * Author: App-Dev Group * Create: 2020-06-15 */ #include "LsadcInterface.h" using namespace std; using namespace android; td_s32 LsadcInterface::LsadcInit() const { #if (UAPI_VERSION_CODE == UAPI_VERSION(1, 0)) return uapi_lsadc_init(); #endif } td_s32 LsadcInterface::LsadcDeinit() const { #if (UAPI_VERSION_CODE == UAPI_VERSION(1, 0)) return uapi_lsadc_deinit(); #endif } td_s32 LsadcInterface::LsadcGetValue(td_u32 channel, td_u32& value) const { #if (UAPI_VERSION_CODE == UAPI_VERSION(1, 0)) return uapi_lsadc_get_value(channel, &value); #endif } td_s32 LsadcInterface::LsadcGetConfig(LSADC_Config& config) const { #if (UAPI_VERSION_CODE == UAPI_VERSION(1, 0)) return uapi_lsadc_get_config(&config); #endif } td_s32 LsadcInterface::LsadcSetConfig(LSADC_Config& config) const { #if (UAPI_VERSION_CODE == UAPI_VERSION(1, 0)) return uapi_lsadc_set_config(&config); #endif } void LsadcInterface::LsadcStructConfig(LSADC_Config& config, LsadcConfig& tempConfig) const { #if (UAPI_VERSION_CODE == UAPI_VERSION(1, 0)) config.channel_mask = tempConfig.channelMask; config.active_bit = tempConfig.activeBit; config.data_delta = tempConfig.dataDelta; config.deglitch_bypass = tempConfig.deglitchBypass; config.glitch_sample = tempConfig.glitchSample; config.lsadc_reset = tempConfig.lsadcReset; config.lsadc_zero = tempConfig.lsadcZero; config.model_sel = tempConfig.modelSel; config.power_down_mod = tempConfig.powerDownMod; config.time_scan = tempConfig.timeScan; #endif } td_u32 LsadcInterface::LsadcPmocPowerKeySet(const vector& powerKey, const td_u32 length, const td_u32 keyNum, const td_u32 channelMask) { uapi_pmoc_suspend_param attr; uapi_pmoc_wakeup_src source; td_u32 keyValHigh = 0; td_bool changed = TD_FALSE; td_u32 ret = uapi_pmoc_init(); if (ret != TD_SUCCESS) { LSADC_INTERFACE_LOG("uapi_pmoc_init err, 0x%08x !\n", ret); return ret; } if (memset_s(&attr, sizeof(attr), 0, sizeof(attr)) != EOK) { LSADC_INTERFACE_LOG("LsadcPmocPowerKeySet attr init failed"); return TD_FAILURE; } source = UAPI_PMOC_WAKEUP_LSADC; ret = uapi_pmoc_get_suspend_param(source, &changed, &attr); if (ret != TD_SUCCESS) { LSADC_INTERFACE_LOG("uapi_pmoc_get_suspend_param lsadc power key err, 0x%08x !\n", ret); return ret; } td_u32 count = (keyNum > length) ? length : keyNum; attr.lsadc_param.channel_mask = channelMask; for (td_u32 i = 0; i < count; i++) { keyValHigh = powerKey[i]; if (attr.lsadc_param.key_value_range[i].high != keyValHigh) { attr.lsadc_param.key_value_range[i].high = keyValHigh; attr.lsadc_param.key_value_range[i].low = (keyValHigh < lsadcMinThreshold) ? keyValHigh : (keyValHigh - lsadcThresholdCoordinate); changed = TD_TRUE; } } if (changed) { LSADC_INTERFACE_LOG("LsadcPmocPowerKeySet, changed !\n"); ret = uapi_pmoc_set_suspend_param(source, changed, &attr); if (ret != TD_SUCCESS) { LSADC_INTERFACE_LOG("uapi_pmoc_set_suspend_param lsadc power key err, 0x%08x !\n", ret); } } return TD_SUCCESS; } void LsadcInterface::LsadcPowerKeySet(const vector powerKey, const td_u32 length, const td_u32 keyNum, const td_u32 channelMask) { td_u32 ret = LsadcPmocPowerKeySet(powerKey, length, keyNum, channelMask); LSADC_INTERFACE_LOG("LsadcPmocPowerKeySet ret, %08x !\n", ret); }