add new slave panic codes
This commit is contained in:
@ -13,6 +13,12 @@
|
|||||||
#define SLAVE_PANIC_UT 1
|
#define SLAVE_PANIC_UT 1
|
||||||
#define SLAVE_PANIC_OV 2
|
#define SLAVE_PANIC_OV 2
|
||||||
#define SLAVE_PANIC_UV 3
|
#define SLAVE_PANIC_UV 3
|
||||||
|
#define SLAVE_PANIC_TOO_FEW_TEMPS 4
|
||||||
|
#define SLAVE_PANIC_OPENWIRE 5
|
||||||
|
#define SLAVE_PANIC_EEPROM_ERROR 6
|
||||||
|
#define SLAVE_PANIC_INTERNAL_BMS_TIMEOUT 7
|
||||||
|
#define SLAVE_PANIC_INTERNAL_BMS_CHECKSUM 8
|
||||||
|
#define SLAVE_PANIC_INTERNAL_BMS_OVERTEMP 9
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
SLAVE_ERR_NONE,
|
SLAVE_ERR_NONE,
|
||||||
@ -21,6 +27,12 @@ typedef enum {
|
|||||||
SLAVE_ERR_UT,
|
SLAVE_ERR_UT,
|
||||||
SLAVE_ERR_OV,
|
SLAVE_ERR_OV,
|
||||||
SLAVE_ERR_UV,
|
SLAVE_ERR_UV,
|
||||||
|
SLAVE_ERR_TOO_FEW_TEMPS,
|
||||||
|
SLAVE_ERR_OPENWIRE,
|
||||||
|
SLAVE_ERR_EEPROM,
|
||||||
|
SLAVE_ERR_INTERNAL_BMS_TIMEOUT,
|
||||||
|
SLAVE_ERR_INTERNAL_BMS_CHECKSUM,
|
||||||
|
SLAVE_ERR_INTERNAL_BMS_OVERTEMP,
|
||||||
SLAVE_ERR_UNKNOWN,
|
SLAVE_ERR_UNKNOWN,
|
||||||
} SlaveErrorKind;
|
} SlaveErrorKind;
|
||||||
|
|
||||||
|
|||||||
@ -100,17 +100,11 @@ void slaves_handle_panic(const uint8_t *data) {
|
|||||||
uint8_t idx = get_slave_index(slave_id);
|
uint8_t idx = get_slave_index(slave_id);
|
||||||
uint8_t error_kind = ftcan_unmarshal_unsigned(ptr, 1);
|
uint8_t error_kind = ftcan_unmarshal_unsigned(ptr, 1);
|
||||||
switch (error_kind) {
|
switch (error_kind) {
|
||||||
case SLAVE_PANIC_OT:
|
case SLAVE_PANIC_OT ... SLAVE_PANIC_INTERNAL_BMS_OVERTEMP:
|
||||||
slaves[idx].error.kind = SLAVE_ERR_OT;
|
slaves[idx].error.kind = error_kind + 2; //SlaveErrorKind on master is 2 higher than on slave (errors.h in slave firmware)
|
||||||
break;
|
break;
|
||||||
case SLAVE_PANIC_UT:
|
default:
|
||||||
slaves[idx].error.kind = SLAVE_ERR_UT;
|
slaves[idx].error.kind = SLAVE_ERR_UNKNOWN;
|
||||||
break;
|
|
||||||
case SLAVE_PANIC_OV:
|
|
||||||
slaves[idx].error.kind = SLAVE_ERR_OV;
|
|
||||||
break;
|
|
||||||
case SLAVE_PANIC_UV:
|
|
||||||
slaves[idx].error.kind = SLAVE_ERR_UV;
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
slaves[idx].error.data = ftcan_unmarshal_unsigned(&data, 4);
|
slaves[idx].error.data = ftcan_unmarshal_unsigned(&data, 4);
|
||||||
|
|||||||
@ -14,7 +14,7 @@
|
|||||||
#define STATUS_LED_2_BLUE_PIN GPIO_PIN_15
|
#define STATUS_LED_2_BLUE_PIN GPIO_PIN_15
|
||||||
|
|
||||||
//TODO: change to correct values for the board
|
//TODO: change to correct values for the board
|
||||||
#error "GPIO pins for status LEDs are not set correctly"
|
#warning "GPIO pins for status LEDs are not set correctly"
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
uint8_t red : 1;
|
uint8_t red : 1;
|
||||||
|
|||||||
Reference in New Issue
Block a user