125 lines
4.1 KiB
C
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);
|
|
}
|
|
}
|
|
}
|
|
} |