Unify gpio state senders

This commit is contained in:
fvanroie 2021-05-30 16:17:58 +02:00
parent 498361654a
commit a1b6150fa2
4 changed files with 49 additions and 40 deletions

View File

@ -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();

View File

@ -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);

View File

@ -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;

View File

@ -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