54 lines
1.0 KiB
C
54 lines
1.0 KiB
C
#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 |