Add dispatch_normalized_group_values to event handlers

This commit is contained in:
fvanroie 2021-05-04 02:20:19 +02:00
parent a8a34a1528
commit 0761b3f207
4 changed files with 44 additions and 23 deletions

View File

@ -463,15 +463,15 @@ static inline void dispatch_state_msg(const __FlashStringHelper* subtopic, const
// // dispatch_output_group_state(groupid, payload);
// }
void dispatch_normalized_group_value(uint8_t groupid, lv_obj_t* obj, int16_t val, int16_t min, int16_t max)
void dispatch_normalized_group_values(uint8_t groupid, lv_obj_t* obj, int16_t val, int16_t min, int16_t max)
{
if(groupid == 0) return;
LOG_VERBOSE(TAG_MSGR, F("GROUP %d value %d (%d-%d)"), groupid, val, min, max);
#if HASP_USE_GPIO > 0
gpio_set_normalized_group_value(groupid, val, min, max); // Update GPIO states
gpio_set_normalized_group_values(groupid, val, min, max); // Update GPIO states
#endif
object_set_normalized_group_value(groupid, obj, val, min, max); // Update onsreen objects
object_set_normalized_group_values(groupid, obj, val, min, max); // Update onsreen objects
}
/********************************************** Native Commands ****************************************/
@ -801,13 +801,6 @@ void dispatch_reboot(bool saveConfig)
haspDevice.reboot();
}
void dispatch_current_state()
{
dispatch_statusupdate(NULL, NULL);
dispatch_idle(NULL, NULL);
dispatch_current_page();
}
/******************************************* Command Wrapper Functions *********************************/
// Periodically publish a JSON string indicating system status
@ -907,6 +900,14 @@ void dispatch_statusupdate(const char*, const char*)
#endif
}
void dispatch_current_state()
{
dispatch_statusupdate(NULL, NULL);
dispatch_idle(NULL, NULL);
dispatch_current_page();
dispatch_send_discovery(NULL, NULL);
}
void dispatch_calibrate(const char*, const char*)
{
guiCalibrate();

View File

@ -64,7 +64,7 @@ void dispatch_wakeup(const char*, const char*);
void dispatch_gpio_input_event(uint8_t pin, uint8_t group, uint8_t eventid);
void dispatch_output_pin_value(uint8_t pin, uint16_t val);
void dispatch_normalized_group_value(uint8_t groupid, lv_obj_t* obj, int16_t val, int16_t min, int16_t max);
void dispatch_normalized_group_values(uint8_t groupid, lv_obj_t* obj, int16_t val, int16_t min, int16_t max);
void dispatch_state_subtopic(const char* subtopic, const char* payload);

View File

@ -103,7 +103,7 @@ static bool translate_event(lv_obj_t* obj, lv_event_t event, uint8_t& eventid)
// ##################### Value Senders ########################################################
void event_send_object_data(lv_obj_t* obj, const char* data)
static void event_send_object_data(lv_obj_t* obj, const char* data)
{
uint8_t pageid;
uint8_t objid;
@ -117,7 +117,7 @@ void event_send_object_data(lv_obj_t* obj, const char* data)
}
// Send out events with a val attribute
void event_object_val_event(lv_obj_t* obj, uint8_t eventid, int16_t val)
static void event_object_val_event(lv_obj_t* obj, uint8_t eventid, int16_t val)
{
char data[40];
char eventname[8];
@ -128,7 +128,7 @@ void event_object_val_event(lv_obj_t* obj, uint8_t eventid, int16_t val)
}
// Send out events with a val and text attribute
void event_object_selection_changed(lv_obj_t* obj, uint8_t eventid, int16_t val, const char* text)
static void event_object_selection_changed(lv_obj_t* obj, uint8_t eventid, int16_t val, const char* text)
{
char data[200];
char eventname[8];
@ -157,7 +157,7 @@ void event_gpio_input(uint8_t pin, uint8_t group, uint8_t eventid)
}
#endif
void log_event(const char* name, lv_event_t event)
static void log_event(const char* name, lv_event_t event)
{
return;
@ -346,8 +346,12 @@ void generic_event_handler(lv_obj_t* obj, lv_event_t event)
snprintf_P(data, sizeof(data), PSTR("{\"event\":\"%s\"}"), eventname);
event_send_object_data(obj, data);
}
dispatch_normalized_group_value(obj->user_data.groupid, obj, Parser::get_event_state(last_value_sent),
HASP_EVENT_OFF, HASP_EVENT_ON);
// Update group objects and gpios on release
if(last_value_sent == HASP_EVENT_UP || last_value_sent == HASP_EVENT_RELEASE) {
dispatch_normalized_group_values(obj->user_data.groupid, obj, Parser::get_event_state(last_value_sent),
HASP_EVENT_OFF, HASP_EVENT_ON);
}
}
/**
@ -386,7 +390,11 @@ void toggle_event_handler(lv_obj_t* obj, lv_event_t event)
}
event_object_val_event(obj, hasp_event_id, last_value_sent);
dispatch_normalized_group_value(obj->user_data.groupid, obj, last_value_sent, HASP_EVENT_OFF, HASP_EVENT_ON);
// Update group objects and gpios on release
if(last_value_sent == HASP_EVENT_UP) {
dispatch_normalized_group_values(obj->user_data.groupid, obj, last_value_sent, HASP_EVENT_OFF, HASP_EVENT_ON);
}
}
/**
@ -450,7 +458,11 @@ void selector_event_handler(lv_obj_t* obj, lv_event_t event)
if(hasp_event_id == HASP_EVENT_CHANGED && last_value_sent == val) return; // same value as before
last_value_sent = val;
event_object_selection_changed(obj, hasp_event_id, val, buffer);
// if(max > 0) dispatch_normalized_group_value(obj->user_data.groupid, obj, val, 0, max);
if(max > 0) // max a cannot be 0, its the divider
if(hasp_event_id == HASP_EVENT_UP || hasp_event_id == LV_EVENT_VALUE_CHANGED) {
dispatch_normalized_group_values(obj->user_data.groupid, obj, last_value_sent, 0, max);
}
// set the property
// snprintf_P(property, sizeof(property), PSTR("val\":%d,\"text"), val);
@ -485,7 +497,11 @@ void btnmatrix_event_handler(lv_obj_t* obj, lv_event_t event)
last_value_sent = val;
event_object_selection_changed(obj, hasp_event_id, val, buffer);
// if(max > 0) dispatch_normalized_group_value(obj->user_data.groupid, obj, val, 0, max);
// if(max > 0) // max a cannot be 0, its the divider
// if(hasp_event_id == HASP_EVENT_UP || hasp_event_id == LV_EVENT_VALUE_CHANGED) {
// dispatch_normalized_group_values(obj->user_data.groupid, obj, last_value_sent, 0, max);
// }
}
/**
@ -517,7 +533,7 @@ void msgbox_event_handler(lv_obj_t* obj, lv_event_t event)
last_value_sent = val;
event_object_selection_changed(obj, hasp_event_id, val, buffer);
// if(max > 0) dispatch_normalized_group_value(obj->user_data.groupid, obj, val, 0, max);
// if(max > 0) dispatch_normalized_group_values(obj->user_data.groupid, obj, val, 0, max);
}
/**
@ -555,7 +571,9 @@ void slider_event_handler(lv_obj_t* obj, lv_event_t event)
last_value_sent = val;
event_object_val_event(obj, hasp_event_id, val);
dispatch_normalized_group_value(obj->user_data.groupid, obj, val, min, max);
if(hasp_event_id == HASP_EVENT_CHANGED && min != max)
dispatch_normalized_group_values(obj->user_data.groupid, obj, val, min, max);
}
/**
@ -587,5 +605,5 @@ void cpicker_event_handler(lv_obj_t* obj, lv_event_t event)
eventname, c32.ch.red, c32.ch.green, c32.ch.blue, c32.ch.red, c32.ch.green, c32.ch.blue);
event_send_object_data(obj, data);
// dispatch_normalized_group_value(obj->user_data.groupid, obj, val, min, max);
// dispatch_normalized_group_values(obj->user_data.groupid, obj, val, min, max);
}

View File

@ -11,6 +11,7 @@
#define HASP_NUM_PAGE_BACK (HASP_NUM_PAGES + 2)
#define HASP_NUM_PAGE_NEXT (HASP_NUM_PAGES + 3)
// Object event Handlers
void wakeup_event_handler(lv_obj_t* obj, lv_event_t event);
void generic_event_handler(lv_obj_t* obj, lv_event_t event);
void toggle_event_handler(lv_obj_t* obj, lv_event_t event);
@ -21,6 +22,7 @@ void msgbox_event_handler(lv_obj_t* obj, lv_event_t event);
void cpicker_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 group, uint8_t eventid);
#endif