2025-04-26 16:03:23 +08:00

125 lines
4.1 KiB
C

#include "demm_app.h"
#include "system_voltage_manage.h"
#include "Dem_Types.h"
#include "DEM_Cfg.h"
#include "key_adc_mid.h"
#include "key_digital_driver_cfg.h"
#include "key_digital_driver.h"
#include "Demm.h"
#include "WheelHeat.h"
#define NUM_OF_DTC_KEY 15
const uint8_t dtc_key_id_tab[NUM_OF_DTC_KEY] = {
DTC_PREV_BUTTON_STUCK_ID,
DTC_PHONE_BUTTON_STUCK_ID,
DTC_VOICE_BUTTON_STUCK_ID,
DTC_VEDIO_BUTTON_STUCK_ID,
DTC_NEXT_BUTTON_STUCK_ID,
DTC_MUTE_BUTTON_STUCK_ID,
DTC_CUSTOM_BUTTON_STUCK_ID,
DTC_MENU2_CTRL_BUTTON_STUCK_ID,
DTC_SPDP_BUTTON_STUCK_ID,
DTC_SPDD_BUTTON_STUCK_ID,
DTC_DSPD_BUTTON_STUCK_ID,
DTC_DSPP_BUTTON_STUCK_ID,
DTC_LEFT_MENU_STUCK_ID,
DTC_LEFT_PICK_STUCK_ID,
DTC_RIGHT_PICK_STUCK_ID
};
void demm_app_task(void)
{
uint8_t system_voltage_mode;
uint8_t key_state[NUM_OF_DTC_KEY];
uint8_t i;
uint8_t ntc_state;
uint8_t heat_overcurrent;
ntc_state = WheelHeat_GetNtcState();
heat_overcurrent = WheelHeat_GetHeatOverCurrent();
system_voltage_mode = system_voltage_manage_mode_get(FUNC_SYSTEM_VOLTAGE_MANAGE_ID);
if(system_voltage_mode == SYSTEM_VOLTAGE_MODE_LOW)
{
dem_set_test_result(DTC_POWER_LOW_ID, DTC_TEST_STATE_FAILED);
dem_set_test_result(DTC_POWER_HIGH_ID, DTC_TEST_STATE_PASSED);
}
else if(system_voltage_mode == SYSTEM_VOLTAGE_MODE_HIGH)
{
dem_set_test_result(DTC_POWER_HIGH_ID, DTC_TEST_STATE_FAILED);
dem_set_test_result(DTC_POWER_LOW_ID, DTC_TEST_STATE_PASSED);
}
else
{
dem_set_test_result(DTC_POWER_LOW_ID, DTC_TEST_STATE_PASSED);
dem_set_test_result(DTC_POWER_HIGH_ID, DTC_TEST_STATE_PASSED);
}
#if 0
if(ntc_state == WHEEL_HEAT_NTC_SHORT )
{
dem_set_test_result(DTC_HEAT_NTC_SHORT_ID, DTC_TEST_STATE_FAILED);
}
else if(ntc_state == WHEEL_HEAT_NTC_OPEN )
{
dem_set_test_result(DTC_HEAT_NTC_OPEN_ID, DTC_TEST_STATE_FAILED);
}
else
{
dem_set_test_result(DTC_HEAT_NTC_SHORT_ID, DTC_TEST_STATE_PASSED);
dem_set_test_result(DTC_HEAT_NTC_OPEN_ID, DTC_TEST_STATE_PASSED);
}
if(heat_overcurrent == WHEEL_HEAT_OVERCURRENT )
{
dem_set_test_result(DTC_HEAT_OVERCURRENT_ID, DTC_TEST_STATE_FAILED);
}
else
{
dem_set_test_result(DTC_HEAT_OVERCURRENT_ID, DTC_TEST_STATE_PASSED);
}
#endif
key_state[0] = key_digital_driver_get_state(KEY_DIGI_ID_PREV);
key_state[1] = key_digital_driver_get_state(KEY_DIGI_ID_PHONE);
key_state[2] = key_digital_driver_get_state(KEY_DIGI_ID_VOICE);
key_state[3] = key_adc_mid_get_result(KEY_ADC_ID_VEDIO);
key_state[4] = key_digital_driver_get_state(KEY_DIGI_ID_NEXT);
key_state[5] = key_digital_driver_get_state(KEY_DIGI_ID_MUTE);
key_state[6] = key_adc_mid_get_result(KEY_ADC_ID_CUSTOM);
key_state[7] = key_digital_driver_get_state(KEY_DIGI_ID_RMENU);
key_state[8] = key_adc_mid_get_result(KEY_ADC_ID_RES_SPD_ADD);
key_state[9] = key_adc_mid_get_result(KEY_ADC_ID_SET_SPD_SUB);
key_state[10] = key_adc_mid_get_result(KEY_ADC_ID_DSP_SUB);
key_state[11] = key_adc_mid_get_result(KEY_ADC_ID_DSP_PLUS);
key_state[12] = key_adc_mid_get_result(KEY_ADC_ID_LMENU);
key_state[13] = key_adc_mid_get_result(KEY_ADC_ID_LPICK);
key_state[14] = key_digital_driver_get_state(KEY_DIGI_ID_RPICK);;
for(i = 0; i < NUM_OF_DTC_KEY; i ++)
{
if(i == 0 || i == 1 || i == 2 || i == 4 || i == 5 || i == 7 || i == 14)
{
if(key_state[i] == KEY_DIGITAL_DRIVER_STATE_STICK)
{
dem_set_test_result(dtc_key_id_tab[i], DTC_TEST_STATE_FAILED);
}
else
{
dem_set_test_result(dtc_key_id_tab[i], DTC_TEST_STATE_PASSED);
}
}
else
{
if(key_state[i] == KEY_ADC_RESULT_STICK)
{
dem_set_test_result(dtc_key_id_tab[i], DTC_TEST_STATE_FAILED);
}
else
{
dem_set_test_result(dtc_key_id_tab[i], DTC_TEST_STATE_PASSED);
}
}
}
}