#ifndef __SCS_SDC_H #define __SCS_SDC_H typedef enum { TS_INACTIVE, TS_ACTIVE, TS_PRECHARGE, TS_DISCHARGE, TS_ERROR, TS_CHARGING_CHECK, TS_CHARGING, } TSState; typedef struct { TSState current_state; TSState target_state; uint16_t error_source; // TSErrorSource (bitmask) uint16_t error_type; // TSErrorKind } TSStateHandle; typedef enum { IMD_STATE_UNKNOWN, IMD_STATE_SHORTCIRCUIT_SUPPLY, IMD_STATE_SHORTCIRCUIT_GND, IMD_STATE_NORMAL, IMD_STATE_UNDERVOLTAGE, IMD_STATE_SST, IMD_STATE_DEV_ERROR, IMD_STATE_GND_FAULT, } IMDState; typedef struct { int ok; IMDState state; uint32_t r_iso; uint32_t freq; uint32_t duty_cycle; uint32_t last_high; } IMDData; extern TSStateHandle ts_state; extern IMDData imd_data; void error_led_init(); void sdc_init(); void ts_handle_ams_status(const uint8_t* data); HAL_StatusTypeDef change_ts_state(TSState state); void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin); HAL_StatusTypeDef check_sdc_state(); #endif