From a1b6150fa25f4676e3bc330de1791a8da594ef58 Mon Sep 17 00:00:00 2001 From: fvanroie <15969459+fvanroie@users.noreply.github.com> Date: Sun, 30 May 2021 16:17:58 +0200 Subject: [PATCH] Unify gpio state senders --- src/hasp/hasp_dispatch.cpp | 61 ++++++++++++++++++++++++++++---------- src/hasp/hasp_dispatch.h | 5 ++-- src/hasp/hasp_event.cpp | 18 ----------- src/hasp/hasp_event.h | 5 ---- 4 files changed, 49 insertions(+), 40 deletions(-) diff --git a/src/hasp/hasp_dispatch.cpp b/src/hasp/hasp_dispatch.cpp index 59715458..04aacbdc 100644 --- a/src/hasp/hasp_dispatch.cpp +++ b/src/hasp/hasp_dispatch.cpp @@ -75,21 +75,38 @@ void dispatch_state_subtopic(const char* subtopic, const char* payload) #endif } -// Format filesystem and erase EEPROM -bool dispatch_factory_reset() +void dispatch_state_eventid(const char* topic, hasp_event_t eventid) { - bool formated = true; - bool erased = true; + char payload[32]; + char eventname[8]; -#if HASP_USE_SPIFFS > 0 || HASP_USE_LITTLEFS > 0 - formated = HASP_FS.format(); -#endif + Parser::get_event_name(eventid, eventname, sizeof(eventname)); + if(eventid == HASP_EVENT_ON || eventid == HASP_EVENT_OFF) { + snprintf_P(payload, sizeof(payload), PSTR("{\"state\":\"%s\"}"), eventname); + } else { + snprintf_P(payload, sizeof(payload), PSTR("{\"event\":\"%s\"}"), eventname); + } + dispatch_state_subtopic(topic, payload); +} -#if HASP_USE_EEPROM > 0 - erased = false; -#endif +void dispatch_state_brightness(const char* topic, hasp_event_t eventid, int32_t val) +{ + char payload[64]; + char eventname[8]; - return formated && erased; + Parser::get_event_name(eventid, eventname, sizeof(eventname)); + snprintf_P(payload, sizeof(payload), PSTR("{\"state\":\"%s\",\"brightness\":%d}"), eventname, val); + dispatch_state_subtopic(topic, payload); +} + +void dispatch_state_val(const char* topic, hasp_event_t eventid, int32_t val) +{ + char payload[64]; + char eventname[8]; + + Parser::get_event_name(eventid, eventname, sizeof(eventname)); + snprintf_P(payload, sizeof(payload), PSTR("{\"state\":\"%s\",\"val\":%d}"), eventname, val); + dispatch_state_subtopic(topic, payload); } void dispatch_json_error(uint8_t tag, DeserializationError& jsonError) @@ -804,11 +821,8 @@ void dispatch_backlight(const char*, const char* payload) // Return the current state char topic[10]; - char buffer[64]; memcpy_P(topic, PSTR("backlight"), 10); - snprintf_P(buffer, sizeof(buffer), PSTR("{\"state\":\"%s\",\"brightness\":%u}"), - haspDevice.get_backlight_power() ? "on" : "off", haspDevice.get_backlight_level()); - dispatch_state_subtopic(topic, buffer); + dispatch_state_brightness(topic, (hasp_event_t)haspDevice.get_backlight_power(), haspDevice.get_backlight_level()); } void dispatch_web_update(const char*, const char* espOtaUrl) @@ -959,6 +973,23 @@ void dispatch_current_state() dispatch_send_discovery(NULL, NULL); } +// Format filesystem and erase EEPROM +bool dispatch_factory_reset() +{ + bool formated = true; + bool erased = true; + +#if HASP_USE_SPIFFS > 0 || HASP_USE_LITTLEFS > 0 + formated = HASP_FS.format(); +#endif + +#if HASP_USE_EEPROM > 0 + erased = false; +#endif + + return formated && erased; +} + void dispatch_calibrate(const char*, const char*) { guiCalibrate(); diff --git a/src/hasp/hasp_dispatch.h b/src/hasp/hasp_dispatch.h index fb51d558..d0912870 100644 --- a/src/hasp/hasp_dispatch.h +++ b/src/hasp/hasp_dispatch.h @@ -74,11 +74,12 @@ void dispatch_idle(const char*, const char*); void dispatch_calibrate(const char*, const char*); void dispatch_wakeup(const char*, const char*); -void dispatch_gpio_input_event(uint8_t pin, uint8_t group, uint8_t eventid); - void dispatch_normalized_group_values(hasp_update_value_t& value); void dispatch_state_subtopic(const char* subtopic, const char* payload); +void dispatch_state_eventid(const char* topic, hasp_event_t eventid); +void dispatch_state_brightness(const char* topic, hasp_event_t eventid, int32_t val); +void dispatch_state_val(const char* topic, hasp_event_t eventid, int32_t val); void dispatch_config(const char* topic, const char* payload); diff --git a/src/hasp/hasp_event.cpp b/src/hasp/hasp_event.cpp index 52f46eec..f7a8fb46 100644 --- a/src/hasp/hasp_event.cpp +++ b/src/hasp/hasp_event.cpp @@ -245,24 +245,6 @@ static inline void event_update_group(uint8_t group, lv_obj_t* obj, bool power, dispatch_normalized_group_values(value); } -#if HASP_USE_GPIO > 0 -void event_gpio_input(uint8_t pin, uint8_t eventid) -{ - char payload[32]; - char topic[10]; - char eventname[8]; - - snprintf_P(topic, sizeof(topic), PSTR("input%d"), pin); - Parser::get_event_name(eventid, eventname, sizeof(eventname)); - if(eventid == HASP_EVENT_ON || eventid == HASP_EVENT_OFF) { - snprintf_P(payload, sizeof(payload), PSTR("{\"state\":\"%s\"}"), eventname); - } else { - snprintf_P(payload, sizeof(payload), PSTR("{\"event\":\"%s\"}"), eventname); - } - dispatch_state_subtopic(topic, payload); -} -#endif - static void log_event(const char* name, lv_event_t event) { return; diff --git a/src/hasp/hasp_event.h b/src/hasp/hasp_event.h index 517c83ea..a4c67928 100644 --- a/src/hasp/hasp_event.h +++ b/src/hasp/hasp_event.h @@ -26,9 +26,4 @@ void msgbox_event_handler(lv_obj_t* obj, lv_event_t event); void cpicker_event_handler(lv_obj_t* obj, lv_event_t event); void calendar_event_handler(lv_obj_t* obj, lv_event_t event); -#if HASP_USE_GPIO > 0 -// GPIO event Handler -void event_gpio_input(uint8_t pin, uint8_t eventid); -#endif - #endif // HASP_EVENT_H \ No newline at end of file