mirror of
https://github.com/HASwitchPlate/openHASP.git
synced 2025-04-19 12:57:19 +00:00
Rename "short" and "up" events to "up" and "release"
This commit is contained in:
parent
f68d303ae7
commit
e8a5c123f8
@ -13,16 +13,15 @@ struct dispatch_conf_t
|
||||
};
|
||||
|
||||
enum hasp_event_t { // even = released, odd = pressed
|
||||
HASP_EVENT_OFF = 0,
|
||||
HASP_EVENT_ON = 1,
|
||||
HASP_EVENT_UP = 2,
|
||||
HASP_EVENT_DOWN = 3,
|
||||
|
||||
HASP_EVENT_SHORT = 4,
|
||||
HASP_EVENT_LONG = 5,
|
||||
HASP_EVENT_LOST = 6,
|
||||
HASP_EVENT_HOLD = 7,
|
||||
HASP_EVENT_DOUBLE = 8,
|
||||
HASP_EVENT_OFF = 0,
|
||||
HASP_EVENT_ON = 1,
|
||||
HASP_EVENT_UP = 2,
|
||||
HASP_EVENT_DOWN = 3,
|
||||
HASP_EVENT_RELEASE = 4,
|
||||
HASP_EVENT_HOLD = 5,
|
||||
HASP_EVENT_LONG = 6,
|
||||
HASP_EVENT_LOST = 7,
|
||||
HASP_EVENT_DOUBLE = 8,
|
||||
|
||||
HASP_EVENT_CHANGED = 32
|
||||
};
|
||||
|
@ -12,8 +12,6 @@
|
||||
#include "hasp_conf.h"
|
||||
#include "hasplib.h"
|
||||
|
||||
// static unsigned long last_change_event = 0;
|
||||
static bool last_press_was_short = false; // Avoid SHORT + UP double events
|
||||
static lv_style_int_t last_value_sent;
|
||||
static lv_color_t last_color_sent;
|
||||
|
||||
@ -32,9 +30,7 @@ void event_obj_data(lv_obj_t* obj, const char* data)
|
||||
|
||||
if(hasp_find_id_from_obj(obj, &pageid, &objid)) {
|
||||
if(!data) return;
|
||||
#if HASP_USE_MQTT > 0
|
||||
object_dispatch_state(pageid, objid, data);
|
||||
#endif
|
||||
} else {
|
||||
LOG_ERROR(TAG_MSGR, F(D_OBJECT_UNKNOWN));
|
||||
}
|
||||
@ -95,9 +91,9 @@ void event_gpio_input(uint8_t pin, uint8_t group, uint8_t eventid)
|
||||
{
|
||||
char payload[64];
|
||||
char topic[8];
|
||||
char event[8];
|
||||
Parser::get_event_name(eventid, event, sizeof(event));
|
||||
snprintf_P(payload, sizeof(payload), PSTR("{\"pin\":%d,\"group\":%d,\"event\":\"%s\"}"), pin, group, event);
|
||||
char eventname[8];
|
||||
Parser::get_event_name(eventid, eventname, sizeof(eventname));
|
||||
snprintf_P(payload, sizeof(payload), PSTR("{\"pin\":%d,\"group\":%d,\"event\":\"%s\"}"), pin, group, eventname);
|
||||
|
||||
memcpy_P(topic, PSTR("input"), 6);
|
||||
dispatch_state_subtopic(topic, payload);
|
||||
@ -165,6 +161,18 @@ void log_event(const char* name, lv_event_t event)
|
||||
LOG_TRACE(TAG_EVENT, "%s Changed", name);
|
||||
break;
|
||||
|
||||
case LV_EVENT_GESTURE:
|
||||
LOG_TRACE(TAG_EVENT, "%s Gesture", name);
|
||||
break;
|
||||
|
||||
case LV_EVENT_FOCUSED:
|
||||
LOG_TRACE(TAG_EVENT, "%s Focussed", name);
|
||||
break;
|
||||
|
||||
case LV_EVENT_DEFOCUSED:
|
||||
LOG_TRACE(TAG_EVENT, "%s Defocussed", name);
|
||||
break;
|
||||
|
||||
case LV_EVENT_PRESSING:
|
||||
break;
|
||||
|
||||
@ -219,70 +227,64 @@ void page_event_handler(lv_obj_t* obj, lv_event_t event)
|
||||
*/
|
||||
void generic_event_handler(lv_obj_t* obj, lv_event_t event)
|
||||
{
|
||||
uint8_t eventid;
|
||||
log_event("generic", event);
|
||||
|
||||
switch(event) {
|
||||
case LV_EVENT_PRESSED:
|
||||
eventid = HASP_EVENT_DOWN;
|
||||
last_press_was_short = false;
|
||||
hasp_update_sleep_state(); // wakeup?
|
||||
last_value_sent = HASP_EVENT_DOWN;
|
||||
break;
|
||||
|
||||
case LV_EVENT_CLICKED:
|
||||
// UP = the same object was release then was pressed and press was not lost!
|
||||
eventid = last_press_was_short ? HASP_EVENT_SHORT : HASP_EVENT_UP;
|
||||
break;
|
||||
|
||||
case LV_EVENT_SHORT_CLICKED:
|
||||
last_press_was_short = true; // Avoid SHORT + UP double events
|
||||
// eventid = HASP_EVENT_UP;
|
||||
if(last_value_sent != HASP_EVENT_LOST && last_value_sent != HASP_EVENT_UP)
|
||||
last_value_sent = HASP_EVENT_LONG;
|
||||
return;
|
||||
|
||||
// eventid = HASP_EVENT_SHORT;
|
||||
// break;
|
||||
case LV_EVENT_SHORT_CLICKED:
|
||||
if(last_value_sent != HASP_EVENT_LOST) last_value_sent = HASP_EVENT_UP; // Avoid SHORT + UP double events
|
||||
break;
|
||||
|
||||
case LV_EVENT_LONG_PRESSED:
|
||||
eventid = HASP_EVENT_LONG;
|
||||
last_press_was_short = false;
|
||||
if(last_value_sent != HASP_EVENT_LOST) last_value_sent = HASP_EVENT_LONG;
|
||||
break;
|
||||
|
||||
case LV_EVENT_LONG_PRESSED_REPEAT:
|
||||
// last_press_was_short = false;
|
||||
return; // we don't care about hold
|
||||
// eventid = HASP_EVENT_HOLD;
|
||||
// break;
|
||||
if(last_value_sent != HASP_EVENT_LOST) last_value_sent = HASP_EVENT_HOLD;
|
||||
break; // we do care about hold
|
||||
|
||||
case LV_EVENT_PRESS_LOST:
|
||||
eventid = HASP_EVENT_LOST;
|
||||
last_press_was_short = false;
|
||||
last_value_sent = HASP_EVENT_LOST;
|
||||
break;
|
||||
|
||||
case LV_EVENT_PRESSING:
|
||||
case LV_EVENT_FOCUSED:
|
||||
case LV_EVENT_DEFOCUSED:
|
||||
case LV_EVENT_RELEASED:
|
||||
return;
|
||||
case LV_EVENT_GESTURE:
|
||||
return; // Don't care about these
|
||||
|
||||
case LV_EVENT_VALUE_CHANGED:
|
||||
LOG_WARNING(TAG_EVENT, F("Value changed Event %d occured"),
|
||||
event); // Shouldn't happen in this event handler
|
||||
last_press_was_short = false;
|
||||
return;
|
||||
case LV_EVENT_RELEASED:
|
||||
if(last_value_sent == HASP_EVENT_UP) return;
|
||||
last_value_sent = HASP_EVENT_RELEASE;
|
||||
break;
|
||||
|
||||
case LV_EVENT_DELETE:
|
||||
LOG_VERBOSE(TAG_EVENT, F(D_OBJECT_DELETED));
|
||||
event_delete_object(obj); // free and destroy persistent memory allocated for certain objects
|
||||
last_press_was_short = false;
|
||||
return;
|
||||
|
||||
case LV_EVENT_VALUE_CHANGED: // Should not occur in this event handler
|
||||
default:
|
||||
LOG_WARNING(TAG_EVENT, F(D_OBJECT_EVENT_UNKNOWN), event);
|
||||
last_press_was_short = false;
|
||||
return;
|
||||
}
|
||||
|
||||
hasp_update_sleep_state(); // wakeup?
|
||||
if(last_value_sent == HASP_EVENT_LOST) return;
|
||||
|
||||
/* If an actionid is attached, perform that action on UP event only */
|
||||
if(obj->user_data.actionid) {
|
||||
if(eventid == HASP_EVENT_UP || eventid == HASP_EVENT_SHORT) {
|
||||
if(last_value_sent == HASP_EVENT_UP || last_value_sent == HASP_EVENT_RELEASE) {
|
||||
lv_scr_load_anim_t transitionid = (lv_scr_load_anim_t)obj->user_data.transitionid;
|
||||
switch(obj->user_data.actionid) {
|
||||
case HASP_NUM_PAGE_PREV:
|
||||
@ -300,7 +302,7 @@ void generic_event_handler(lv_obj_t* obj, lv_event_t event)
|
||||
dispatch_output_current_page();
|
||||
}
|
||||
} else {
|
||||
event_object_generic_event(obj, eventid); // send normal object event
|
||||
event_object_generic_event(obj, last_value_sent); // send normal object event
|
||||
}
|
||||
dispatch_normalized_group_value(obj->user_data.groupid, obj, Parser::get_event_state(eventid), HASP_EVENT_OFF,
|
||||
HASP_EVENT_ON);
|
||||
|
@ -68,8 +68,7 @@ lv_obj_t* hasp_find_obj_from_parent_id(lv_obj_t* parent, uint8_t objid)
|
||||
bool hasp_find_id_from_obj(lv_obj_t* obj, uint8_t* pageid, uint8_t* objid)
|
||||
{
|
||||
if(!haspPages.get_id(obj, pageid)) return false;
|
||||
if(!(obj->user_data.id > 0)) return false;
|
||||
// memcpy(objid, &obj->user_data.id, sizeof(lv_obj_user_data_t));
|
||||
if(!obj || obj->user_data.id == 0) return false;
|
||||
*objid = obj->user_data.id;
|
||||
return true;
|
||||
}
|
||||
|
@ -122,8 +122,8 @@ void Parser::get_event_name(uint8_t eventid, char* buffer, size_t size)
|
||||
case HASP_EVENT_DOWN:
|
||||
memcpy_P(buffer, PSTR("down"), size);
|
||||
break;
|
||||
case HASP_EVENT_SHORT:
|
||||
memcpy_P(buffer, PSTR("short"), size);
|
||||
case HASP_EVENT_RELEASE:
|
||||
memcpy_P(buffer, PSTR("release"), size);
|
||||
break;
|
||||
case HASP_EVENT_LONG:
|
||||
memcpy_P(buffer, PSTR("long"), size);
|
||||
|
@ -118,7 +118,7 @@ void mqtt_ha_register_button(uint8_t page, uint8_t id)
|
||||
discovery_prefix, haspDevice.get_hostname(), page, id, "short_press");
|
||||
mqtt_ha_send_json(buffer, doc);
|
||||
|
||||
Parser::get_event_name(HASP_EVENT_SHORT, buffer, sizeof(buffer));
|
||||
Parser::get_event_name(HASP_EVENT_UP, buffer, sizeof(buffer));
|
||||
doc[F("pl")] = buffer;
|
||||
doc[F("type")] = "button_short_release";
|
||||
snprintf_P(buffer, sizeof(buffer), PSTR("%s/device_automation/%s/" HASP_OBJECT_NOTATION "_%s/config"),
|
||||
@ -132,7 +132,7 @@ void mqtt_ha_register_button(uint8_t page, uint8_t id)
|
||||
discovery_prefix, haspDevice.get_hostname(), page, id, "long_press");
|
||||
mqtt_ha_send_json(buffer, doc);
|
||||
|
||||
Parser::get_event_name(HASP_EVENT_UP, buffer, sizeof(buffer));
|
||||
Parser::get_event_name(HASP_EVENT_RELEASE, buffer, sizeof(buffer));
|
||||
doc[F("pl")] = buffer;
|
||||
doc[F("type")] = "button_long_release";
|
||||
snprintf_P(buffer, sizeof(buffer), PSTR("%s/device_automation/%s/" HASP_OBJECT_NOTATION "_%s/config"),
|
||||
|
Loading…
x
Reference in New Issue
Block a user