mirror of
https://github.com/HASwitchPlate/openHASP.git
synced 2025-07-26 20:56:37 +00:00
Add dispatch_normalized_group_values to event handlers
This commit is contained in:
parent
a8a34a1528
commit
0761b3f207
@ -463,15 +463,15 @@ static inline void dispatch_state_msg(const __FlashStringHelper* subtopic, const
|
|||||||
// // dispatch_output_group_state(groupid, payload);
|
// // 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;
|
if(groupid == 0) return;
|
||||||
|
|
||||||
LOG_VERBOSE(TAG_MSGR, F("GROUP %d value %d (%d-%d)"), groupid, val, min, max);
|
LOG_VERBOSE(TAG_MSGR, F("GROUP %d value %d (%d-%d)"), groupid, val, min, max);
|
||||||
#if HASP_USE_GPIO > 0
|
#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
|
#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 ****************************************/
|
/********************************************** Native Commands ****************************************/
|
||||||
@ -801,13 +801,6 @@ void dispatch_reboot(bool saveConfig)
|
|||||||
haspDevice.reboot();
|
haspDevice.reboot();
|
||||||
}
|
}
|
||||||
|
|
||||||
void dispatch_current_state()
|
|
||||||
{
|
|
||||||
dispatch_statusupdate(NULL, NULL);
|
|
||||||
dispatch_idle(NULL, NULL);
|
|
||||||
dispatch_current_page();
|
|
||||||
}
|
|
||||||
|
|
||||||
/******************************************* Command Wrapper Functions *********************************/
|
/******************************************* Command Wrapper Functions *********************************/
|
||||||
|
|
||||||
// Periodically publish a JSON string indicating system status
|
// Periodically publish a JSON string indicating system status
|
||||||
@ -907,6 +900,14 @@ void dispatch_statusupdate(const char*, const char*)
|
|||||||
#endif
|
#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*)
|
void dispatch_calibrate(const char*, const char*)
|
||||||
{
|
{
|
||||||
guiCalibrate();
|
guiCalibrate();
|
||||||
|
@ -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_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_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);
|
void dispatch_state_subtopic(const char* subtopic, const char* payload);
|
||||||
|
|
||||||
|
@ -103,7 +103,7 @@ static bool translate_event(lv_obj_t* obj, lv_event_t event, uint8_t& eventid)
|
|||||||
|
|
||||||
// ##################### Value Senders ########################################################
|
// ##################### 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 pageid;
|
||||||
uint8_t objid;
|
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
|
// 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 data[40];
|
||||||
char eventname[8];
|
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
|
// 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 data[200];
|
||||||
char eventname[8];
|
char eventname[8];
|
||||||
@ -157,7 +157,7 @@ void event_gpio_input(uint8_t pin, uint8_t group, uint8_t eventid)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void log_event(const char* name, lv_event_t event)
|
static void log_event(const char* name, lv_event_t event)
|
||||||
{
|
{
|
||||||
return;
|
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);
|
snprintf_P(data, sizeof(data), PSTR("{\"event\":\"%s\"}"), eventname);
|
||||||
event_send_object_data(obj, data);
|
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);
|
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
|
if(hasp_event_id == HASP_EVENT_CHANGED && last_value_sent == val) return; // same value as before
|
||||||
last_value_sent = val;
|
last_value_sent = val;
|
||||||
event_object_selection_changed(obj, hasp_event_id, val, buffer);
|
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
|
// set the property
|
||||||
// snprintf_P(property, sizeof(property), PSTR("val\":%d,\"text"), val);
|
// 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;
|
last_value_sent = val;
|
||||||
event_object_selection_changed(obj, hasp_event_id, val, buffer);
|
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;
|
last_value_sent = val;
|
||||||
event_object_selection_changed(obj, hasp_event_id, val, buffer);
|
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;
|
last_value_sent = val;
|
||||||
event_object_val_event(obj, hasp_event_id, 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);
|
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);
|
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);
|
||||||
}
|
}
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
#define HASP_NUM_PAGE_BACK (HASP_NUM_PAGES + 2)
|
#define HASP_NUM_PAGE_BACK (HASP_NUM_PAGES + 2)
|
||||||
#define HASP_NUM_PAGE_NEXT (HASP_NUM_PAGES + 3)
|
#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 wakeup_event_handler(lv_obj_t* obj, lv_event_t event);
|
||||||
void generic_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);
|
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);
|
void cpicker_event_handler(lv_obj_t* obj, lv_event_t event);
|
||||||
|
|
||||||
#if HASP_USE_GPIO > 0
|
#if HASP_USE_GPIO > 0
|
||||||
|
// GPIO event Handler
|
||||||
void event_gpio_input(uint8_t pin, uint8_t group, uint8_t eventid);
|
void event_gpio_input(uint8_t pin, uint8_t group, uint8_t eventid);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user