diff --git a/Core/Inc/slave_monitoring.h b/Core/Inc/slave_monitoring.h index 6a807e1..021ad43 100644 --- a/Core/Inc/slave_monitoring.h +++ b/Core/Inc/slave_monitoring.h @@ -13,6 +13,12 @@ #define SLAVE_PANIC_UT 1 #define SLAVE_PANIC_OV 2 #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 { SLAVE_ERR_NONE, @@ -21,6 +27,12 @@ typedef enum { SLAVE_ERR_UT, SLAVE_ERR_OV, 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, } SlaveErrorKind; diff --git a/Core/Src/slave_monitoring.c b/Core/Src/slave_monitoring.c index e00f190..af04600 100644 --- a/Core/Src/slave_monitoring.c +++ b/Core/Src/slave_monitoring.c @@ -100,18 +100,12 @@ void slaves_handle_panic(const uint8_t *data) { uint8_t idx = get_slave_index(slave_id); uint8_t error_kind = ftcan_unmarshal_unsigned(ptr, 1); switch (error_kind) { - case SLAVE_PANIC_OT: - slaves[idx].error.kind = SLAVE_ERR_OT; - break; - case SLAVE_PANIC_UT: - slaves[idx].error.kind = SLAVE_ERR_UT; - 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; + case SLAVE_PANIC_OT ... SLAVE_PANIC_INTERNAL_BMS_OVERTEMP: + slaves[idx].error.kind = error_kind + 2; //SlaveErrorKind on master is 2 higher than on slave (errors.h in slave firmware) + break; + default: + slaves[idx].error.kind = SLAVE_ERR_UNKNOWN; + break; } slaves[idx].error.data = ftcan_unmarshal_unsigned(&data, 4); slaves[idx].last_message = HAL_GetTick(); diff --git a/Core/Src/status_led.c b/Core/Src/status_led.c index 56fd439..14ac804 100644 --- a/Core/Src/status_led.c +++ b/Core/Src/status_led.c @@ -14,7 +14,7 @@ #define STATUS_LED_2_BLUE_PIN GPIO_PIN_15 //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 { uint8_t red : 1;