33#include " ../MyMesh.h"
44#include " target.h"
55
6- #define AUTO_OFF_MILLIS 15000 // 15 seconds
6+ #ifndef AUTO_OFF_MILLIS
7+ #define AUTO_OFF_MILLIS 15000 // 15 seconds
8+ #endif
79#define BOOT_SCREEN_MILLIS 3000 // 3 seconds
810
911#ifdef PIN_STATUS_LED
@@ -223,11 +225,11 @@ class HomeScreen : public UIScreen {
223225 }
224226
225227 bool handleInput (char c) override {
226- if (c == KEY_LEFT) {
228+ if (c == KEY_LEFT || c == KEY_PREV ) {
227229 _page = (_page + HomePage::Count - 1 ) % HomePage::Count;
228230 return true ;
229231 }
230- if (c == KEY_RIGHT || c == KEY_SELECT ) {
232+ if (c == KEY_NEXT || c == KEY_RIGHT ) {
231233 _page = (_page + 1 ) % HomePage::Count;
232234 if (_page == HomePage::RECENT) {
233235 _task->showAlert (" Recent adverts" , 800 );
@@ -321,11 +323,15 @@ class MsgPreviewScreen : public UIScreen {
321323 display.setColor (DisplayDriver::LIGHT);
322324 display.printWordWrap (p->msg , display.width ());
323325
326+ #if AUTO_OFF_MILLIS==0 // probably e-ink
327+ return 10000 ; // 10 s
328+ #else
324329 return 1000 ; // next render after 1000 ms
330+ #endif
325331 }
326332
327333 bool handleInput (char c) override {
328- if (c == KEY_SELECT || c == KEY_RIGHT) {
334+ if (c == KEY_NEXT || c == KEY_RIGHT) {
329335 num_unread--;
330336 if (num_unread == 0 ) {
331337 _task->gotoHomeScreen ();
@@ -419,38 +425,34 @@ void UITask::newMsg(uint8_t path_len, const char* from_name, const char* text, i
419425 if (_display != NULL ) {
420426 if (!_display->isOn ()) _display->turnOn ();
421427 _auto_off = millis () + AUTO_OFF_MILLIS; // extend the auto-off timer
422- _next_refresh = 0 ; // trigger refresh
428+ _next_refresh = 100 ; // trigger refresh
423429 }
424430}
425431
426432void UITask::userLedHandler () {
427433#ifdef PIN_STATUS_LED
428- static int state = 0 ;
429- static int next_change = 0 ;
430- static int last_increment = 0 ;
431-
432434 int cur_time = millis ();
433- if (cur_time > next_change ) {
434- if (state == 0 ) {
435- state = 1 ;
435+ if (cur_time > next_led_change ) {
436+ if (led_state == 0 ) {
437+ led_state = 1 ;
436438 if (_msgcount > 0 ) {
437- last_increment = LED_ON_MSG_MILLIS;
439+ last_led_increment = LED_ON_MSG_MILLIS;
438440 } else {
439- last_increment = LED_ON_MILLIS;
441+ last_led_increment = LED_ON_MILLIS;
440442 }
441- next_change = cur_time + last_increment ;
443+ next_led_change = cur_time + last_led_increment ;
442444 } else {
443- state = 0 ;
444- next_change = cur_time + LED_CYCLE_MILLIS - last_increment ;
445+ led_state = 0 ;
446+ next_led_change = cur_time + LED_CYCLE_MILLIS - last_led_increment ;
445447 }
446- digitalWrite (PIN_STATUS_LED, state );
448+ digitalWrite (PIN_STATUS_LED, led_state );
447449 }
448450#endif
449451}
450452
451453void UITask::setCurrScreen (UIScreen* c) {
452454 curr = c;
453- _next_refresh = 0 ;
455+ _next_refresh = 100 ;
454456}
455457
456458/*
@@ -492,9 +494,13 @@ void UITask::loop() {
492494#if defined(PIN_USER_BTN)
493495 int ev = user_btn.check ();
494496 if (ev == BUTTON_EVENT_CLICK) {
495- c = checkDisplayOn (KEY_SELECT );
497+ c = checkDisplayOn (KEY_NEXT );
496498 } else if (ev == BUTTON_EVENT_LONG_PRESS) {
497499 c = handleLongPress (KEY_ENTER);
500+ } else if (ev == BUTTON_EVENT_DOUBLE_CLICK) {
501+ c = handleDoubleClick (KEY_PREV);
502+ } else if (ev == BUTTON_EVENT_TRIPLE_CLICK) {
503+ c = handleTripleClick (KEY_SELECT);
498504 }
499505#endif
500506#if defined(WIO_TRACKER_L1)
@@ -514,16 +520,27 @@ void UITask::loop() {
514520#if defined(PIN_USER_BTN_ANA)
515521 ev = analog_btn.check ();
516522 if (ev == BUTTON_EVENT_CLICK) {
517- c = checkDisplayOn (KEY_SELECT );
523+ c = checkDisplayOn (KEY_NEXT );
518524 } else if (ev == BUTTON_EVENT_LONG_PRESS) {
519525 c = handleLongPress (KEY_ENTER);
526+ } else if (ev == BUTTON_EVENT_DOUBLE_CLICK) {
527+ c = handleDoubleClick (KEY_PREV);
528+ } else if (ev == BUTTON_EVENT_TRIPLE_CLICK) {
529+ c = handleTripleClick (KEY_SELECT);
530+ }
531+ #endif
532+ #if defined(DISP_BACKLIGHT) && defined(BACKLIGHT_BTN)
533+ if (millis () > next_backlight_btn_check) {
534+ bool touch_state = digitalRead (PIN_BUTTON2);
535+ digitalWrite (DISP_BACKLIGHT, !touch_state);
536+ next_backlight_btn_check = millis () + 300 ;
520537 }
521538#endif
522539
523540 if (c != 0 && curr) {
524541 curr->handleInput (c);
525542 _auto_off = millis () + AUTO_OFF_MILLIS; // extend auto-off timer
526- _next_refresh = 0 ; // trigger refresh
543+ _next_refresh = 100 ; // trigger refresh
527544 }
528545
529546 userLedHandler ();
@@ -553,9 +570,11 @@ void UITask::loop() {
553570 }
554571 _display->endFrame ();
555572 }
573+ #if AUTO_OFF_MILLIS > 0
556574 if (millis () > _auto_off) {
557575 _display->turnOff ();
558576 }
577+ #endif
559578 }
560579
561580#ifdef AUTO_SHUTDOWN_MILLIVOLTS
@@ -604,20 +623,53 @@ char UITask::handleLongPress(char c) {
604623 return c;
605624}
606625
607- /*
608- void UITask::handleButtonTriplePress() {
609- MESH_DEBUG_PRINTLN("UITask: triple press triggered");
610- // Toggle buzzer quiet mode
626+ char UITask::handleDoubleClick (char c) {
627+ MESH_DEBUG_PRINTLN (" UITask: double click triggered" );
628+ checkDisplayOn (c);
629+ return c;
630+ }
631+
632+ char UITask::handleTripleClick (char c) {
633+ MESH_DEBUG_PRINTLN (" UITask: triple click triggered" );
634+ checkDisplayOn (c);
635+ toggleBuzzer ();
636+ c = 0 ;
637+ return c;
638+ }
639+
640+ void UITask::toggleGPS () {
641+ if (_sensors != NULL ) {
642+ // toggle GPS on/off
643+ int num = _sensors->getNumSettings ();
644+ for (int i = 0 ; i < num; i++) {
645+ if (strcmp (_sensors->getSettingName (i), " gps" ) == 0 ) {
646+ if (strcmp (_sensors->getSettingValue (i), " 1" ) == 0 ) {
647+ _sensors->setSettingValue (" gps" , " 0" );
648+ soundBuzzer (UIEventType::ack);
649+ showAlert (" GPS: Disabled" , 800 );
650+ } else {
651+ _sensors->setSettingValue (" gps" , " 1" );
652+ soundBuzzer (UIEventType::ack);
653+ showAlert (" GPS: Enabled" , 800 );
654+ }
655+ _next_refresh = 0 ;
656+ break ;
657+ }
658+ }
659+ }
660+ }
661+
662+ void UITask::toggleBuzzer () {
663+ // Toggle buzzer quiet mode
611664 #ifdef PIN_BUZZER
612665 if (buzzer.isQuiet ()) {
613666 buzzer.quiet (false );
614667 soundBuzzer (UIEventType::ack);
615- showAlert("Buzzer: ON", 600 );
668+ showAlert (" Buzzer: ON" , 800 );
616669 } else {
617670 buzzer.quiet (true );
618- showAlert("Buzzer: OFF", 600 );
671+ showAlert (" Buzzer: OFF" , 800 );
619672 }
620673 _next_refresh = 0 ; // trigger refresh
621674 #endif
622675}
623- */
0 commit comments