Misc improvements and String removals

This commit is contained in:
fvanroie 2020-03-29 03:22:04 +02:00
parent 5b6bc1afb5
commit 041cec1514
2 changed files with 68 additions and 75 deletions

View File

@ -195,78 +195,62 @@ bool FindIdFromObj(lv_obj_t * obj, uint8_t * pageid, lv_obj_user_data_t * objid)
//////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////
void haspSendNewEvent(lv_obj_t * obj, char * val) static void hasp_send_event_attribute(lv_obj_t * obj, const char * event)
{ {
uint8_t pageid; uint8_t pageid;
uint8_t objid; uint8_t objid;
if(FindIdFromObj(obj, &pageid, &objid)) { if(FindIdFromObj(obj, &pageid, &objid)) {
// char buffer[128];
// sprintf_P(buffer, PSTR("HASP: Send p[%u].b[%u].event=%d"), pageid, objid, val);
// debugPrintln(buffer);
#if HASP_USE_MQTT > 0 #if HASP_USE_MQTT > 0
mqttSendNewEvent(pageid, objid, val); mqtt_send_event_attribute(pageid, objid, event);
#endif #endif
} }
} }
void haspSendNewValue(lv_obj_t * obj, int32_t val) static void hasp_send_val_attribute(lv_obj_t * obj, int32_t val)
{ {
uint8_t pageid; uint8_t pageid;
uint8_t objid; uint8_t objid;
if(FindIdFromObj(obj, &pageid, &objid)) { if(FindIdFromObj(obj, &pageid, &objid)) {
// char buffer[128];
// sprintf_P(buffer, PSTR("HASP: Send p[%u].b[%u].val=%d"), pageid, objid, val);
// debugPrintln(buffer);
#if HASP_USE_MQTT > 0 #if HASP_USE_MQTT > 0
mqttSendNewValue(pageid, objid, val); mqtt_send_val_attribute(pageid, objid, val);
#endif #endif
} }
} }
void haspSendNewValue(lv_obj_t * obj, String txt) static void hasp_send_txt_attribute(lv_obj_t * obj, String & txt)
{ {
uint8_t pageid; uint8_t pageid;
uint8_t objid; uint8_t objid;
if(FindIdFromObj(obj, &pageid, &objid)) { if(FindIdFromObj(obj, &pageid, &objid)) {
// char buffer[128];
// sprintf_P(buffer, PSTR("HASP: Send p[%u].b[%u].txt='%s'"), pageid, objid, txt.c_str());
// debugPrintln(buffer);
#if HASP_USE_MQTT > 0 #if HASP_USE_MQTT > 0
mqttSendNewValue(pageid, objid, txt); mqtt_send_txt_attribute(pageid, objid, txt.c_str());
#endif #endif
} }
} }
void haspSendNewValue(lv_obj_t * obj, const char * txt) static void hasp_send_txt_attribute(lv_obj_t * obj, const char * txt)
{ {
uint8_t pageid; uint8_t pageid;
uint8_t objid; uint8_t objid;
if(FindIdFromObj(obj, &pageid, &objid)) { if(FindIdFromObj(obj, &pageid, &objid)) {
// char buffer[128];
// sprintf_P(buffer, PSTR("HASP: Send p[%u].b[%u].txt='%s'"), pageid, objid, txt);
// debugPrintln(buffer);
#if HASP_USE_MQTT > 0 #if HASP_USE_MQTT > 0
mqttSendNewValue(pageid, objid, txt); mqtt_send_txt_attribute(pageid, objid, txt);
#endif #endif
} }
} }
void haspSendNewValue(lv_obj_t * obj, int16_t val) static inline void hasp_send_val_attribute(lv_obj_t * obj, int16_t val)
{ {
haspSendNewValue(obj, (int32_t)val); hasp_send_val_attribute(obj, (int32_t)val);
} }
void haspSendNewValue(lv_obj_t * obj, lv_color_t color) static inline void hasp_send_color_attribute(lv_obj_t * obj, lv_color_t color)
{ {
haspSendNewValue(obj, (int32_t)get_cpicker_value(obj)); hasp_send_val_attribute(obj, (int32_t)get_cpicker_value(obj)); // Needs a color function
} }
//////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////
@ -317,18 +301,19 @@ void haspSetToggle(lv_obj_t * obj, bool toggle)
lv_obj_set_event_cb(obj, toggle ? toggle_event_handler : btn_event_handler); lv_obj_set_event_cb(obj, toggle ? toggle_event_handler : btn_event_handler);
} }
void haspProcessAttribute(uint8_t pageid, uint8_t objid, String strAttr, String strPayload) // Used in the dispatcher
void hasp_process_attribute(uint8_t pageid, uint8_t objid, String strAttr, String strPayload)
{ {
lv_obj_t * obj = FindObjFromId((uint8_t)pageid, (uint8_t)objid); lv_obj_t * obj = FindObjFromId((uint8_t)pageid, (uint8_t)objid);
if(obj) { if(obj) {
if(strPayload != "") if(strPayload != "")
haspSetObjAttribute(obj, strAttr, strPayload); hasp_set_obj_attribute(obj, strAttr.c_str(), strPayload.c_str());
else { else {
/* publish the change */ // publish the change
std::string strValue = ""; std::string strValue = "";
if(haspGetObjAttribute(obj, strAttr, strValue)) { if(haspGetObjAttribute(obj, strAttr, strValue)) {
#if HASP_USE_MQTT > 0 #if HASP_USE_MQTT > 0
mqttSendNewValue(pageid, objid, String(strValue.c_str())); mqtt_send_attribute(pageid, objid, strAttr.c_str(), strValue.c_str());
#endif #endif
} else { } else {
Log.warning(F("HASP: Unknown property: %s"), strAttr.c_str()); Log.warning(F("HASP: Unknown property: %s"), strAttr.c_str());
@ -598,7 +583,15 @@ void haspFirstSetup(void)
*/ */
void haspSetup(JsonObject settings) void haspSetup(JsonObject settings)
{ {
haspSetConfig(settings); guiSetDim(haspStartDim);
/* Create all screens */
for(uint8_t i = 0; i < (sizeof pages / sizeof *pages); i++) {
pages[i] = lv_obj_create(NULL, NULL);
// lv_obj_set_size(pages[0], hres, vres);
}
// haspSetConfig(settings);
/* /*
#ifdef LV_HASP_HOR_RES_MAX #ifdef LV_HASP_HOR_RES_MAX
@ -690,11 +683,6 @@ void haspSetup(JsonObject settings)
} }
// lv_theme_set_current(th); // lv_theme_set_current(th);
*/ */
/*Create a screen*/
for(uint8_t i = 0; i < (sizeof pages / sizeof *pages); i++) {
pages[i] = lv_obj_create(NULL, NULL);
// lv_obj_set_size(pages[0], hres, vres);
}
/* /*
if(lv_zifont_font_init(&haspFonts[0], "/fonts/HMI FrankRuhlLibre 24.zi", 24) != 0) { if(lv_zifont_font_init(&haspFonts[0], "/fonts/HMI FrankRuhlLibre 24.zi", 24) != 0) {
@ -720,7 +708,6 @@ void haspSetup(JsonObject settings)
haspDisconnect(); haspDisconnect();
haspLoadPage(haspPagesPath); haspLoadPage(haspPagesPath);
haspSetPage(haspStartPage); haspSetPage(haspStartPage);
guiSetDim(haspStartDim);
} }
/********************** /**********************
@ -786,8 +773,13 @@ void hasp_background(uint16_t pageid, uint16_t imageid)
* @param btn pointer to a list button * @param btn pointer to a list button
* @param event type of event that occured * @param event type of event that occured
*/ */
static void btn_event_handler(lv_obj_t * obj, lv_event_t event) static void IRAM_ATTR btn_event_handler(lv_obj_t * obj, lv_event_t event)
{ {
char buffer[128];
sprintf(buffer, PSTR("HASP: "));
/*
// int16_t id = get_obj_id(obj); // int16_t id = get_obj_id(obj);
// uint8_t eventid = 0; // uint8_t eventid = 0;
@ -795,7 +787,6 @@ static void btn_event_handler(lv_obj_t * obj, lv_event_t event)
lv_obj_user_data_t objid; lv_obj_user_data_t objid;
char buffer[128]; char buffer[128];
sprintf(buffer, PSTR("HASP: "));
if(obj != lv_disp_get_layer_sys(NULL)) { if(obj != lv_disp_get_layer_sys(NULL)) {
if(!FindIdFromObj(obj, &pageid, &objid)) { if(!FindIdFromObj(obj, &pageid, &objid)) {
@ -804,6 +795,8 @@ static void btn_event_handler(lv_obj_t * obj, lv_event_t event)
} }
} }
*/
switch(event) { switch(event) {
case LV_EVENT_PRESSED: case LV_EVENT_PRESSED:
memcpy_P(buffer, PSTR("DOWN"), sizeof(buffer)); memcpy_P(buffer, PSTR("DOWN"), sizeof(buffer));
@ -845,11 +838,11 @@ static void btn_event_handler(lv_obj_t * obj, lv_event_t event)
if(obj == lv_disp_get_layer_sys(NULL)) { if(obj == lv_disp_get_layer_sys(NULL)) {
#if HASP_USE_MQTT > 0 #if HASP_USE_MQTT > 0
mqttSendState("wakeuptouch", buffer); // TO DO: Memory optimization ! mqtt_send_state(F("wakeuptouch"), buffer);
#endif #endif
} else { } else {
#if HASP_USE_MQTT > 0 #if HASP_USE_MQTT > 0
mqttSendNewEvent(pageid, objid, buffer); hasp_send_event_attribute(obj, buffer);
#endif #endif
} }
} }
@ -866,78 +859,78 @@ static void toggle_event_handler(lv_obj_t * obj, lv_event_t event)
{ {
bool toggled = bool toggled =
lv_btn_get_state(obj) == LV_BTN_STATE_CHECKED_PRESSED || lv_btn_get_state(obj) == LV_BTN_STATE_CHECKED_RELEASED; lv_btn_get_state(obj) == LV_BTN_STATE_CHECKED_PRESSED || lv_btn_get_state(obj) == LV_BTN_STATE_CHECKED_RELEASED;
if(event == LV_EVENT_VALUE_CHANGED) haspSendNewValue(obj, toggled); if(event == LV_EVENT_VALUE_CHANGED) hasp_send_val_attribute(obj, toggled);
} }
static void switch_event_handler(lv_obj_t * obj, lv_event_t event) static void switch_event_handler(lv_obj_t * obj, lv_event_t event)
{ {
if(event == LV_EVENT_VALUE_CHANGED) haspSendNewValue(obj, lv_switch_get_state(obj)); if(event == LV_EVENT_VALUE_CHANGED) hasp_send_val_attribute(obj, lv_switch_get_state(obj));
} }
static void checkbox_event_handler(lv_obj_t * obj, lv_event_t event) static void checkbox_event_handler(lv_obj_t * obj, lv_event_t event)
{ {
if(event == LV_EVENT_VALUE_CHANGED) haspSendNewValue(obj, lv_checkbox_is_checked(obj)); if(event == LV_EVENT_VALUE_CHANGED) hasp_send_val_attribute(obj, lv_checkbox_is_checked(obj));
} }
static void ddlist_event_handler(lv_obj_t * obj, lv_event_t event) static void ddlist_event_handler(lv_obj_t * obj, lv_event_t event)
{ {
if(event == LV_EVENT_VALUE_CHANGED) { if(event == LV_EVENT_VALUE_CHANGED) {
haspSendNewValue(obj, lv_dropdown_get_selected(obj)); hasp_send_val_attribute(obj, lv_dropdown_get_selected(obj));
char buffer[128]; char buffer[128];
lv_dropdown_get_selected_str(obj, buffer, sizeof(buffer)); lv_dropdown_get_selected_str(obj, buffer, sizeof(buffer));
haspSendNewValue(obj, String(buffer)); hasp_send_txt_attribute(obj, buffer);
} }
} }
#else #else
static void btnmap_event_handler(lv_obj_t * obj, lv_event_t event) static void btnmap_event_handler(lv_obj_t * obj, lv_event_t event)
{ {
if(event == LV_EVENT_VALUE_CHANGED) haspSendNewValue(obj, lv_btnm_get_pressed_btn(obj)); if(event == LV_EVENT_VALUE_CHANGED) hasp_send_val_attribute(obj, lv_btnm_get_pressed_btn(obj));
} }
static void toggle_event_handler(lv_obj_t * obj, lv_event_t event) static void toggle_event_handler(lv_obj_t * obj, lv_event_t event)
{ {
bool toggled = lv_btn_get_state(obj) == LV_BTN_STATE_TGL_PR || lv_btn_get_state(obj) == LV_BTN_STATE_TGL_REL; bool toggled = lv_btn_get_state(obj) == LV_BTN_STATE_TGL_PR || lv_btn_get_state(obj) == LV_BTN_STATE_TGL_REL;
if(event == LV_EVENT_VALUE_CHANGED) haspSendNewValue(obj, toggled); if(event == LV_EVENT_VALUE_CHANGED) hasp_send_val_attribute(obj, toggled);
} }
static void switch_event_handler(lv_obj_t * obj, lv_event_t event) static void switch_event_handler(lv_obj_t * obj, lv_event_t event)
{ {
if(event == LV_EVENT_VALUE_CHANGED) haspSendNewValue(obj, lv_sw_get_state(obj)); if(event == LV_EVENT_VALUE_CHANGED) hasp_send_val_attribute(obj, lv_sw_get_state(obj));
} }
static void checkbox_event_handler(lv_obj_t * obj, lv_event_t event) static void checkbox_event_handler(lv_obj_t * obj, lv_event_t event)
{ {
if(event == LV_EVENT_VALUE_CHANGED) haspSendNewValue(obj, lv_cb_is_checked(obj)); if(event == LV_EVENT_VALUE_CHANGED) hasp_send_val_attribute(obj, lv_cb_is_checked(obj));
} }
static void ddlist_event_handler(lv_obj_t * obj, lv_event_t event) static void ddlist_event_handler(lv_obj_t * obj, lv_event_t event)
{ {
if(event == LV_EVENT_VALUE_CHANGED) { if(event == LV_EVENT_VALUE_CHANGED) {
haspSendNewValue(obj, lv_ddlist_get_selected(obj)); hasp_send_val_attribute(obj, lv_ddlist_get_selected(obj));
char buffer[128]; char buffer[128];
lv_ddlist_get_selected_str(obj, buffer, sizeof(buffer)); lv_ddlist_get_selected_str(obj, buffer, sizeof(buffer));
haspSendNewValue(obj, String(buffer)); hasp_send_txt_attribute(obj, String(buffer));
} }
} }
#endif #endif
static void slider_event_handler(lv_obj_t * obj, lv_event_t event) static void slider_event_handler(lv_obj_t * obj, lv_event_t event)
{ {
if(event == LV_EVENT_VALUE_CHANGED) haspSendNewValue(obj, lv_slider_get_value(obj)); if(event == LV_EVENT_VALUE_CHANGED) hasp_send_val_attribute(obj, lv_slider_get_value(obj));
} }
static void cpicker_event_handler(lv_obj_t * obj, lv_event_t event) static void cpicker_event_handler(lv_obj_t * obj, lv_event_t event)
{ {
if(event == LV_EVENT_VALUE_CHANGED) haspSendNewValue(obj, lv_cpicker_get_color(obj)); if(event == LV_EVENT_VALUE_CHANGED) hasp_send_color_attribute(obj, lv_cpicker_get_color(obj));
} }
static void roller_event_handler(lv_obj_t * obj, lv_event_t event) static void roller_event_handler(lv_obj_t * obj, lv_event_t event)
{ {
if(event == LV_EVENT_VALUE_CHANGED) { if(event == LV_EVENT_VALUE_CHANGED) {
haspSendNewValue(obj, lv_roller_get_selected(obj)); hasp_send_val_attribute(obj, lv_roller_get_selected(obj));
char buffer[128]; char buffer[128];
lv_roller_get_selected_str(obj, buffer, sizeof(buffer)); lv_roller_get_selected_str(obj, buffer, sizeof(buffer));
haspSendNewValue(obj, String(buffer)); hasp_send_txt_attribute(obj, buffer);
} }
} }
@ -945,10 +938,10 @@ static void roller_event_handler(lv_obj_t * obj, lv_event_t event)
void haspSetNodename(String name) void haspSetNodename(String name)
{} {}
String haspGetNodename() // String haspGetNodename()
{ //{
return String(F("plate11")); // return String(F("plate11"));
} //}
String haspGetVersion() String haspGetVersion()
{ {
@ -984,8 +977,8 @@ void haspSetPage(uint16_t pageid)
Log.warning(F("HASP: %sCannot change to a layer")); Log.warning(F("HASP: %sCannot change to a layer"));
} else { } else {
Log.notice(F("HASP: Changing page to %u"), pageid); Log.notice(F("HASP: Changing page to %u"), pageid);
lv_scr_load(page);
current_page = pageid; current_page = pageid;
lv_scr_load(page);
} }
} }
@ -1247,7 +1240,7 @@ void haspNewObject(const JsonObject & config)
k = keyValue.key().c_str(); k = keyValue.key().c_str();
if(k != F("page") && k != F("id") && k != F("objid") && k != F("parentid")) { if(k != F("page") && k != F("id") && k != F("objid") && k != F("parentid")) {
v = keyValue.value().as<String>(); v = keyValue.value().as<String>();
haspSetObjAttribute(obj, k, v); hasp_set_obj_attribute(obj, k.c_str(), v.c_str());
Log.trace(F(" * %s => %s"), k.c_str(), v.c_str()); Log.trace(F(" * %s => %s"), k.c_str(), v.c_str());
} }
} }

View File

@ -71,7 +71,7 @@ String haspGetNodename();
String haspGetVersion(); String haspGetVersion();
void haspBackground(uint16_t pageid, uint16_t imageid); void haspBackground(uint16_t pageid, uint16_t imageid);
void haspProcessAttribute(uint8_t pageid, uint8_t objid, String strAttr, String strPayload); void hasp_process_attribute(uint8_t pageid, uint8_t objid, String strAttr, String strPayload);
void haspSendCmd(String nextionCmd); void haspSendCmd(String nextionCmd);
void haspParseJson(String & strPayload); void haspParseJson(String & strPayload);
void haspNewObject(const JsonObject & settings); void haspNewObject(const JsonObject & settings);