42 lines
1.1 KiB
C
42 lines
1.1 KiB
C
#ifndef INC_ERRORS_H
|
|
#define INC_ERRORS_H
|
|
|
|
#include <stdint.h>
|
|
|
|
#define ERROR_SOURCE_VOLTAGES (1 << 0)
|
|
#define ERROR_SOURCE_TEMPERATURES (1 << 1)
|
|
#define ERROR_SOURCE_TOO_FEW_WORKING_TEMP_SENSORS (1 << 2)
|
|
#define ERROR_SOURCE_OPEN_CELL_CONNECTION (1 << 3)
|
|
#define ERROR_SOURCE_EEPROM (1 << 4)
|
|
#define ERROR_SOURCE_INTERNAL (1 << 5)
|
|
|
|
#define ERROR_TIME_THRESH 150 // ms
|
|
|
|
typedef enum : uint16_t {
|
|
SEK_OVERTEMP = 0x0,
|
|
SEK_UNDERTEMP = 0x1,
|
|
SEK_OVERVOLT = 0x2,
|
|
SEK_UNDERVOLT = 0x3,
|
|
SEK_TOO_FEW_TEMPS = 0x4,
|
|
SEK_OPENWIRE = 0x5,
|
|
SEK_EEPROM_ERR = 0x6,
|
|
SEK_INTERNAL_BMS_TIMEOUT = 0x7,
|
|
SEK_INTERNAL_BMS_CHECKSUM_FAIL = 0x8,
|
|
SEK_INTERNAL_BMS_OVERTEMP = 0x9,
|
|
SEK_INTERNAL_BMS_FAULT = 0xA,
|
|
} SlaveErrorKind;
|
|
|
|
typedef struct {
|
|
uint16_t error_sources;
|
|
SlaveErrorKind data_kind;
|
|
uint8_t data[4];
|
|
uint32_t errors_since;
|
|
} SlaveErrorData;
|
|
|
|
extern SlaveErrorData error_data;
|
|
|
|
void set_error_source(SlaveErrorKind source);
|
|
void clear_error_source(SlaveErrorKind source);
|
|
|
|
#endif // INC_ERRORS_H
|