Refactoring led handler, webserver and mqtt to all use a common BE status enum rather than relying on duplicatitng logic or using led color

This commit is contained in:
Matt Holmes 2025-08-21 17:33:15 +01:00
parent 980d914ffd
commit d4f0e188fe
5 changed files with 55 additions and 44 deletions

View file

@ -14,6 +14,7 @@ typedef struct {
static EVENT_TYPE events;
static const char* EVENTS_ENUM_TYPE_STRING[] = {EVENTS_ENUM_TYPE(GENERATE_STRING)};
static const char* EVENTS_LEVEL_TYPE_STRING[] = {EVENTS_LEVEL_TYPE(GENERATE_STRING)};
static const char* EMULATOR_STATUS_STRING[] = {EMULATOR_STATUS(GENERATE_STRING)};
/* Local function prototypes */
static void set_event(EVENTS_ENUM_TYPE event, uint8_t data, bool latched);
@ -393,6 +394,11 @@ const char* get_event_level_string(EVENTS_ENUM_TYPE event) {
return EVENTS_LEVEL_TYPE_STRING[events.entries[event].level] + 12;
}
const char* get_event_level_string(EVENTS_LEVEL_TYPE event_level) {
// Return the event level but skip "EVENT_LEVEL_TYPE_" that should always be first
return EVENTS_LEVEL_TYPE_STRING[event_level] + 17;
}
const EVENTS_STRUCT_TYPE* get_event_pointer(EVENTS_ENUM_TYPE event) {
return &events.entries[event];
}
@ -401,6 +407,27 @@ EVENTS_LEVEL_TYPE get_event_level(void) {
return events.level;
}
EMULATOR_STATUS get_emulator_status() {
switch (events.level) {
case EVENT_LEVEL_DEBUG:
case EVENT_LEVEL_INFO:
return EMULATOR_STATUS::STATUS_OK;
case EVENT_LEVEL_WARNING:
return EMULATOR_STATUS::STATUS_WARNING;
case EVENT_LEVEL_UPDATE:
return EMULATOR_STATUS::STATUS_UPDATING;
case EVENT_LEVEL_ERROR:
return EMULATOR_STATUS::STATUS_ERROR;
default:
return EMULATOR_STATUS::STATUS_OK;
}
}
const char* get_emulator_staus_string(EMULATOR_STATUS status) {
// Return the status string but skip "STATUS_" that should always be first
return EMULATOR_STATUS_STRING[status] + 7;
}
/* Local functions */
static void set_event(EVENTS_ENUM_TYPE event, uint8_t data, bool latched) {