Skip to content

Commit

Permalink
Address issue #88
Browse files Browse the repository at this point in the history
  • Loading branch information
fvanroie committed Mar 26, 2021
1 parent 6ef4538 commit 1f1b3ee
Show file tree
Hide file tree
Showing 4 changed files with 54 additions and 53 deletions.
2 changes: 1 addition & 1 deletion include/lv_conf_v7.h
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ typedef int16_t lv_coord_t;

/* Repeated trigger period in long press [ms]
* Time between `LV_EVENT_LONG_PRESSED_REPEAT */
#define LV_INDEV_DEF_LONG_PRESS_REP_TIME 100
#define LV_INDEV_DEF_LONG_PRESS_REP_TIME 200


/* Gesture threshold in pixels */
Expand Down
25 changes: 8 additions & 17 deletions src/hasp/hasp_dispatch.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@

extern uint8_t hasp_sleep_state;

dispatch_conf_t dispatch_setings = {.teleperiod = 10};
dispatch_conf_t dispatch_setings = {.teleperiod = 300};

uint32_t dispatchLastMillis;
uint8_t nCommands = 0;
Expand Down Expand Up @@ -615,22 +615,13 @@ void dispatch_object_generic_event(lv_obj_t* obj, uint8_t eventid)
}

// Send out the on/off event, with the val
void dispatch_object_toggle_event(lv_obj_t* obj, bool state)
void dispatch_object_val_event(lv_obj_t* obj, uint8_t eventid, int16_t val)
{
char data[40];
char eventname[8];

dispatch_get_event_name(state, eventname, sizeof(eventname));
snprintf_P(data, sizeof(data), PSTR("{\"event\":\"%s\",\"val\":%d}"), eventname, state);
dispatch_obj_data(obj, data);
}

// Send out the changed event, with the val
void dispatch_object_value_changed(lv_obj_t* obj, int16_t state)
{
char data[48];

snprintf_P(data, sizeof(data), PSTR("{\"event\":\"changed\",\"val\":%d}"), state);
dispatch_get_event_name(eventid, eventname, sizeof(eventname));
snprintf_P(data, sizeof(data), PSTR("{\"event\":\"%s\",\"val\":%d}"), eventname, val);
dispatch_obj_data(obj, data);
}

Expand Down Expand Up @@ -1058,10 +1049,10 @@ void dispatch_output_statusupdate(const char*, const char*)
haspPages.get(), haspPages.count());
strcat(data, buffer);

// #if defined(ARDUINO_ARCH_ESP8266)
// snprintf_P(buffer, sizeof(buffer), PSTR("\"espVcc\":%.2f,"), (float)ESP.getVcc() / 1000);
// strcat(data, buffer);
// #endif
// #if defined(ARDUINO_ARCH_ESP8266)
// snprintf_P(buffer, sizeof(buffer), PSTR("\"espVcc\":%.2f,"), (float)ESP.getVcc() / 1000);
// strcat(data, buffer);
// #endif

snprintf_P(buffer, sizeof(buffer), PSTR("\"tftDriver\":\"%s\",\"tftWidth\":%u,\"tftHeight\":%u}"),
haspTft.get_tft_model(), (TFT_WIDTH), (TFT_HEIGHT));
Expand Down
3 changes: 1 addition & 2 deletions src/hasp/hasp_dispatch.h
Original file line number Diff line number Diff line change
Expand Up @@ -77,8 +77,7 @@ void dispatch_send_obj_attribute_color(uint8_t pageid, uint8_t btnid, const char
uint8_t b);

void dispatch_object_generic_event(lv_obj_t* obj, uint8_t eventid);
void dispatch_object_toggle_event(lv_obj_t* obj, bool state);
void dispatch_object_value_changed(lv_obj_t* obj, int16_t state);
void dispatch_object_val_event(lv_obj_t* obj, uint8_t eventid, int16_t val);
void dispatch_object_selection_changed(lv_obj_t* obj, int16_t val, const char* text);
void dispatch_object_color_changed(lv_obj_t* obj, lv_color_t color);

Expand Down
77 changes: 44 additions & 33 deletions src/hasp/hasp_object.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
const char** btnmatrix_default_map; // memory pointer to lvgl default btnmatrix map
// 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;

// ##################### Object Finders ########################################################

Expand Down Expand Up @@ -404,7 +405,6 @@ void generic_event_handler(lv_obj_t* obj, lv_event_t event)
void toggle_event_handler(lv_obj_t* obj, lv_event_t event)
{
if(event == LV_EVENT_VALUE_CHANGED) {
char property[36]; // 4 for val only
bool val = 0;
hasp_update_sleep_state(); // wakeup?

Expand All @@ -430,7 +430,7 @@ void toggle_event_handler(lv_obj_t* obj, lv_event_t event)
// hasp_send_obj_attribute_int(obj, property, val);

hasp_update_sleep_state(); // wakeup?
dispatch_object_toggle_event(obj, val);
dispatch_object_val_event(obj, val, val);
dispatch_normalized_group_value(obj->user_data.groupid, obj, val, HASP_EVENT_OFF, HASP_EVENT_ON);

} else if(event == LV_EVENT_DELETE) {
Expand Down Expand Up @@ -510,42 +510,53 @@ static void selector_event_handler(lv_obj_t* obj, lv_event_t event)
*/
void slider_event_handler(lv_obj_t* obj, lv_event_t event)
{
if(event == LV_EVENT_VALUE_CHANGED) {
/* bool is_dragged;
if(obj->user_data.objid == LV_HASP_SLIDER) {
is_dragged = lv_slider_is_dragged(obj);
} else if(obj->user_data.objid == LV_HASP_ARC) {
is_dragged = lv_arc_is_dragged(obj);
}
uint16_t evt;
switch(event) {
case LV_EVENT_VALUE_CHANGED:
break;

if(is_dragged && (millis() - last_change_event < LV_INDEV_DEF_LONG_PRESS_TIME)) {
return;
}
*/
case LV_EVENT_DELETE:
LOG_VERBOSE(TAG_HASP, F(D_OBJECT_DELETED));
hasp_object_delete(obj);
break;

int16_t val = 0;
int16_t min = 0;
int16_t max = 0;
hasp_update_sleep_state(); // wakeup?
case LV_EVENT_PRESSED:
hasp_update_sleep_state(); // wakeup on press down?
evt = HASP_EVENT_DOWN;
case LV_EVENT_LONG_PRESSED_REPEAT:
if(event == LV_EVENT_LONG_PRESSED_REPEAT) evt = HASP_EVENT_CHANGED;
case LV_EVENT_RELEASED: {
if(event == LV_EVENT_RELEASED) evt = HASP_EVENT_UP;

// case LV_EVENT_PRESSED || LV_EVENT_LONG_PRESSED_REPEAT || LV_EVENT_RELEASED
int16_t val;
int16_t min;
int16_t max;

if(obj->user_data.objid == LV_HASP_SLIDER) {
val = lv_slider_get_value(obj);
min = lv_slider_get_min_value(obj);
max = lv_slider_get_max_value(obj);
} else if(obj->user_data.objid == LV_HASP_ARC) {
val = lv_arc_get_value(obj);
min = lv_arc_get_min_value(obj);
max = lv_arc_get_max_value(obj);
} else {
return;
}

if(obj->user_data.objid == LV_HASP_SLIDER) {
val = lv_slider_get_value(obj);
min = lv_slider_get_min_value(obj);
max = lv_slider_get_max_value(obj);
} else if(obj->user_data.objid == LV_HASP_ARC) {
val = lv_arc_get_value(obj);
min = lv_arc_get_min_value(obj);
max = lv_arc_get_max_value(obj);
} else {
return;
if((event == LV_EVENT_LONG_PRESSED_REPEAT && last_value_sent != val) ||
event != LV_EVENT_LONG_PRESSED_REPEAT) {
last_value_sent = val;
dispatch_object_val_event(obj, evt, val);
dispatch_normalized_group_value(obj->user_data.groupid, obj, val, min, max);
}
break;
}
dispatch_object_value_changed(obj, val);
dispatch_normalized_group_value(obj->user_data.groupid, obj, val, min, max);

} else if(event == LV_EVENT_DELETE) {
LOG_VERBOSE(TAG_HASP, F(D_OBJECT_DELETED));
hasp_object_delete(obj);
default:
// LOG_VERBOSE(TAG_HASP, F("Event ID: %d"), event);
;
}
}

Expand Down

0 comments on commit 1f1b3ee

Please sign in to comment.