Serialize event payloads properly #637

This commit is contained in:
fvanroie 2024-02-25 21:28:38 +01:00
parent d9ee633c92
commit 510565ca51

View File

@ -272,12 +272,16 @@ static void event_object_val_event(lv_obj_t* obj, uint8_t eventid, int16_t val)
{ {
char data[512]; char data[512];
{ {
StaticJsonDocument<512> doc;
char eventname[8]; char eventname[8];
Parser::get_event_name(eventid, eventname, sizeof(eventname)); Parser::get_event_name(eventid, eventname, sizeof(eventname));
if(const char* tag = my_obj_get_tag(obj)) doc["event"] = eventname;
snprintf_P(data, sizeof(data), PSTR("{\"event\":\"%s\",\"val\":%d,\"tag\":%s}"), eventname, val, tag); doc["val"] = val;
else if(const char* tag = my_obj_get_tag(obj)) doc["tag"] = tag;
snprintf_P(data, sizeof(data), PSTR("{\"event\":\"%s\",\"val\":%d}"), eventname, val); serializeJson(doc, data, sizeof(data));
// snprintf_P(data, sizeof(data), PSTR("{\"event\":\"%s\",\"val\":%d,\"tag\":%s}"), eventname, val, tag);
// else
// snprintf_P(data, sizeof(data), PSTR("{\"event\":\"%s\",\"val\":%d}"), eventname, val);
} }
event_send_object_data(obj, data); event_send_object_data(obj, data);
} }
@ -287,14 +291,21 @@ static void event_object_selection_changed(lv_obj_t* obj, uint8_t eventid, int16
{ {
char data[512]; char data[512];
{ {
StaticJsonDocument<512> doc;
char eventname[8]; char eventname[8];
Parser::get_event_name(eventid, eventname, sizeof(eventname)); Parser::get_event_name(eventid, eventname, sizeof(eventname));
doc["event"] = eventname;
if(const char* tag = my_obj_get_tag(obj)) doc["val"] = val;
snprintf_P(data, sizeof(data), PSTR("{\"event\":\"%s\",\"val\":%d,\"text\":\"%s\",\"tag\":%s}"), eventname, doc["text"] = text;
val, text, tag); if(const char* tag = my_obj_get_tag(obj)) doc["tag"] = tag;
else serializeJson(doc, data, sizeof(data));
snprintf_P(data, sizeof(data), PSTR("{\"event\":\"%s\",\"val\":%d,\"text\":\"%s\"}"), eventname, val, text); // if(const char* tag = my_obj_get_tag(obj))
// snprintf_P(data, sizeof(data), PSTR("{\"event\":\"%s\",\"val\":%d,\"text\":\"%s\",\"tag\":%s}"),
// eventname,
// val, text, tag);
// else
// snprintf_P(data, sizeof(data), PSTR("{\"event\":\"%s\",\"val\":%d,\"text\":\"%s\"}"), eventname, val,
// text);
} }
event_send_object_data(obj, data); event_send_object_data(obj, data);
} }
@ -433,15 +444,19 @@ void textarea_event_handler(lv_obj_t* obj, lv_event_t event)
char data[1024]; char data[1024];
{ {
StaticJsonDocument<1024> doc;
char eventname[8]; char eventname[8];
Parser::get_event_name(hasp_event_id, eventname, sizeof(eventname)); Parser::get_event_name(hasp_event_id, eventname, sizeof(eventname));
doc["event"] = eventname;
if(const char* tag = my_obj_get_tag(obj)) doc["text"] = lv_textarea_get_text(obj);
snprintf_P(data, sizeof(data), PSTR("{\"event\":\"%s\",\"text\":\"%s\",\"tag\":%s}"), eventname, if(const char* tag = my_obj_get_tag(obj)) doc["tag"] = tag;
lv_textarea_get_text(obj), tag); serializeJson(doc, data, sizeof(data));
else // if(const char* tag = my_obj_get_tag(obj))
snprintf_P(data, sizeof(data), PSTR("{\"event\":\"%s\",\"text\":\"%s\"}"), eventname, // snprintf_P(data, sizeof(data), PSTR("{\"event\":\"%s\",\"text\":\"%s\",\"tag\":%s}"), eventname,
lv_textarea_get_text(obj)); // lv_textarea_get_text(obj), tag);
// else
// snprintf_P(data, sizeof(data), PSTR("{\"event\":\"%s\",\"text\":\"%s\"}"), eventname,
// lv_textarea_get_text(obj));
} }
event_send_object_data(obj, data); event_send_object_data(obj, data);
@ -525,13 +540,16 @@ void generic_event_handler(lv_obj_t* obj, lv_event_t event)
} else { } else {
char data[512]; char data[512];
{ {
StaticJsonDocument<512> doc;
char eventname[8]; char eventname[8];
Parser::get_event_name(last_value_sent, eventname, sizeof(eventname)); Parser::get_event_name(last_value_sent, eventname, sizeof(eventname));
doc["event"] = eventname;
if(const char* tag = my_obj_get_tag(obj)) if(const char* tag = my_obj_get_tag(obj)) doc["tag"] = tag;
snprintf_P(data, sizeof(data), PSTR("{\"event\":\"%s\",\"tag\":%s}"), eventname, tag); serializeJson(doc, data, sizeof(data));
else // if(const char* tag = my_obj_get_tag(obj))
snprintf_P(data, sizeof(data), PSTR("{\"event\":\"%s\"}"), eventname); // snprintf_P(data, sizeof(data), PSTR("{\"event\":\"%s\",\"tag\":%s}"), eventname, tag);
// else
// snprintf_P(data, sizeof(data), PSTR("{\"event\":\"%s\"}"), eventname);
} }
event_send_object_data(obj, data); event_send_object_data(obj, data);
} }
@ -842,8 +860,10 @@ void cpicker_event_handler(lv_obj_t* obj, lv_event_t event)
char data[512]; char data[512];
{ {
char eventname[8]; StaticJsonDocument<512> doc;
Parser::get_event_name(hasp_event_id, eventname, sizeof(eventname)); char buffer[8];
Parser::get_event_name(hasp_event_id, buffer, sizeof(buffer));
doc["event"] = buffer;
lv_color32_t c32; lv_color32_t c32;
lv_color_hsv_t hsv; lv_color_hsv_t hsv;
@ -851,18 +871,30 @@ void cpicker_event_handler(lv_obj_t* obj, lv_event_t event)
hsv = lv_color_rgb_to_hsv(c32.ch.red, c32.ch.green, c32.ch.blue); hsv = lv_color_rgb_to_hsv(c32.ch.red, c32.ch.green, c32.ch.blue);
last_color_sent = color; last_color_sent = color;
if(const char* tag = my_obj_get_tag(obj)) snprintf_P(buffer, sizeof(buffer), PSTR("#%02x%02x%02x"), c32.ch.red, c32.ch.green, c32.ch.blue);
snprintf_P(data, sizeof(data), doc["color"] = buffer;
PSTR("{\"event\":\"%s\",\"color\":\"#%02x%02x%02x\",\"r\":%d,\"g\":%d,\"b\":%d,\"h\":%d,\"s\":%" doc["r"] = c32.ch.red;
"d,\"v\":%d,\"tag\":%s}"), doc["g"] = c32.ch.green;
eventname, c32.ch.red, c32.ch.green, c32.ch.blue, c32.ch.red, c32.ch.green, c32.ch.blue, hsv.h, doc["b"] = c32.ch.blue;
hsv.s, hsv.v, tag); doc["h"] = hsv.h;
else doc["s"] = hsv.s;
snprintf_P(data, sizeof(data), doc["v"] = hsv.v;
PSTR("{\"event\":\"%s\",\"color\":\"#%02x%02x%02x\",\"r\":%d,\"g\":%d,\"b\":%d,\"h\":%d,\"s\":%"
"d,\"v\":%d}"), if(const char* tag = my_obj_get_tag(obj)) doc["tag"] = tag;
eventname, c32.ch.red, c32.ch.green, c32.ch.blue, c32.ch.red, c32.ch.green, c32.ch.blue, hsv.h, serializeJson(doc, data, sizeof(data));
hsv.s, hsv.v);
// if(const char* tag = my_obj_get_tag(obj))
// snprintf_P(data, sizeof(data),
// PSTR("{\"event\":\"%s\",\"color\":\"#%02x%02x%02x\",\"r\":%d,\"g\":%d,\"b\":%d,\"h\":%d,\"s\":%"
// "d,\"v\":%d,\"tag\":%s}"),
// eventname, c32.ch.red, c32.ch.green, c32.ch.blue, c32.ch.red, c32.ch.green, c32.ch.blue, hsv.h,
// hsv.s, hsv.v, tag);
// else
// snprintf_P(data, sizeof(data),
// PSTR("{\"event\":\"%s\",\"color\":\"#%02x%02x%02x\",\"r\":%d,\"g\":%d,\"b\":%d,\"h\":%d,\"s\":%"
// "d,\"v\":%d}"),
// eventname, c32.ch.red, c32.ch.green, c32.ch.blue, c32.ch.red, c32.ch.green, c32.ch.blue, hsv.h,
// hsv.s, hsv.v);
} }
event_send_object_data(obj, data); event_send_object_data(obj, data);