Commit Graph
50 Commits
Author SHA1 Message Date
todd-herbertandGitHub 75dc8cccec Button ISR runs thread asap (#3801) 2024-05-08 16:08:24 -05:00
todd-herbertandGitHub 5dfa4b837f Ensure LED is off when disabling heartbeat (#3772) 2024-05-02 19:11:13 -05:00
todd-herbertandGitHub 0527fb10ce Init. battery voltage from ADC reading, instead of fixed value (#3761) 2024-05-02 07:14:44 -05:00
todd-herbertandGitHub 21311bbeda T-Echo touch button no longer requires "wake on tap or motion" (#3745) 2024-04-29 08:54:57 -05:00
todd-herbertandGitHub dfcabba0b2 Prevent overflow when calculating timezones (#3730) 2024-04-26 20:43:09 -05:00
todd-herbertandGitHub 4599534616 Terminate an async-full-refresh when caught by determineMode() instead of onNotify() (#3706) 2024-04-23 12:00:48 -05:00
todd-herbertandGitHub dfc43bae18 Fix crash on shutdown, if Bluetooth not enabled (#3686)
Previously attempted to call deinit method for a nullptr
2024-04-21 07:25:58 -05:00
todd-herbertandGitHub f6cfdfe881 (ESP-32S) Fix "critical error 3" after deep-sleep (#3685) 2024-04-21 07:25:12 -05:00
todd-herbertandGitHub 747c713ba9 (ESP32) Fix bluetooth after light-sleep; de-init for deep sleep (#3655) 2024-04-18 07:27:18 -05:00
todd-herbertandGitHub a01069a549 No more printing power-state changes to screen (#3640) 2024-04-16 07:36:14 -05:00
todd-herbertandGitHub 1d97544041 Wireless Paper: Fix BLE after Lightsleep (#3629)
* NimBLE deinit for deep-sleep only

* Optionally disable blink during light-sleep

* Advised to revert "blink disable"
This reverts commit 66347ce19bb7e6ade64827a01b0ba834bff1e361.
2024-04-15 06:50:42 -05:00
178877f2d9 Enable T-Echo touch button by default (#3604)
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
2024-04-12 07:18:36 -05:00
8e29efcb50 Fix button interrupt after light sleep (#3587)
* Make ButtonThread instance extern
Previously was a static local instance in setup(). Now declared in ButtonThread.cpp, accessible via extern declaration in ButtonThread.

* Extract attachInterrupt() calls to public method; create matching method for detachInterrupt()

* Change suspension of button interrupts for light-sleep

* Fix declaration for ARCH_PORTDUINO

* Remove LOG_DEBUG used during testing

* Don't assume device has a button..

* Guard entire constructor code

* Don't use BUTTON_PIN with ARCH_PORTDUINO

---------

Co-authored-by: Manuel <71137295+mverch67@users.noreply.github.com>
2024-04-11 07:02:50 -05:00
todd-herbertandGitHub 5b5f9c62b5 Remap backlight toggle and touch button (#3560)
* Update E-Ink display after sending adhoc ping or disable/enable GPS

* Resume display updates when touch button pressed

* Use touch hold as modifier; change double-click behavior for user button

* Fix preprocessor exclusions

* Purge backlight behavior

* Distinguish between 3x and 4x multi-presses

* Touch button considers "Wake screen on tap or motion" user-setting

* Don't assume device has BUTTON_PIN

* Rename misleading method
2024-04-06 08:04:26 -05:00
Todd Herbert 30ebb6ae46 use BUTTON_PIN macro 2024-04-04 17:18:40 +13:00
Todd Herbert d1db51830b set GPIOs for sleep 2024-04-04 17:05:12 +13:00
Todd Herbert eb0e705ba9 de-init bluetooth 2024-04-04 17:04:10 +13:00
todd-herbertandGitHub a570e50aca Disable holds / isolations on RTC IO pads after deep sleep (#3539)
* disable holds on RTC IO pads after deep sleep

* Don't assume SOC_RTCIO_HOLD_SUPPORTED
2024-04-03 06:59:53 -05:00
f2ed0f7c8c Fix Light-sleep for ESP32 (#3521)
* Change wakeup source from EXT0 to GPIO

* Avoid ISR issue on wake

* Detect press from wake reason, instead of digitalRead

* Missing #ifdef

Risky phone-typed commit

* Fix PowerFSM timed transition preventing light sleep
Addresses https://github.com/meshtastic/firmware/issues/3517

---------

Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
2024-04-02 14:55:48 -05:00
todd-herbertandGitHub 46a63bf293 Handle edge cases for E-Ink screensaver (#3518)
* remove redundant logic

* Handle special screens for old EInkDisplayClass

* Handle special screens for EInkDynamicDisplay class

* Join an async refresh in progress to avoid skipping screensaver

* attempt trunk fix
2024-03-31 07:04:05 -05:00
8187fa7115 E-Ink Screensaver (#3477)
* fix Wireless Paper double-clear screen at boot

* log when flooded with "responsive" frames

* show the "resuming" screen when waking from deep-sleep

* rename drawDeepSleepScreen
avoid future confusion with "Screen Paused" screen

* show a screensaver frame when screen off
The frame shown during deep sleep is now also passed through showScreensaverFrames()

* Add macros for E-Ink color values.
OLEDDISPLAY_COLOR is inverted. Result of light-mode on E-Ink vs dark-mode on OLED?

* adapt drawDeepSleepScreen to new screensaver convention

* Mark Wireless Paper V1.1 as having problems with ghosting
Any other issues can be marked in a similar way, then handled in code where relevant

* Change screensaver from fullscreen logo to overlay

* identify "quirks" rather than "problems"

* move async refresh polling from display() to a NotifiedWorkerThread

* Prevent skipping of deep-sleep screen
(Hopefully)

* Redesign screensaver overlay
Now displays short name

* Optimize refresh for different displays

* Support older EInkDisplay class

* Don't assume text alignment

* fix spelling of a quirk macro
(No impact to code, but avoids future issues)

* Handle impossibly unlikely millis() overflow error
Should have just let it go, but here we are..

---------

Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
2024-03-28 18:31:11 -05:00
Todd Herbert 1f766a04aa purge unused enum val 2024-03-12 04:04:28 +13:00
Todd Herbert 1d31be939f Swap Wireless Paper V1.0 dependency to meshtastic/GxEPD2 2024-03-12 03:06:01 +13:00
cf4753f7fd Async full-refresh for EInkDynamicDisplay (#3339)
* Move Wireless Paper V1.1 custom hibernate behavior to GxEPD2

* Async full-refresh for EInkDynamicDisplay

* initial config for T-Echo

* formatting
responds to https://github.com/meshtastic/firmware/pull/3339#discussion_r1518175434

* increase fast-refresh limit for T-Echo
https://github.com/meshtastic/firmware/pull/3339#issuecomment-1986245727

* change dependency from private repo to meshtastic/GxEPD2

---------

Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
2024-03-11 07:56:55 -05:00
Todd Herbert 1032e16ea4 reorder determineMode() checks 2024-03-11 01:02:03 +13:00
Todd Herbert c0a3b20aa3 while drafting, build from todd-herbert/meshtastic-GxEPD2#async 2024-03-10 13:45:35 +13:00
Todd Herbert 3daae24d29 fix fallback behavior for unmodified GxEPD2
Issues exposed by https://github.com/meshtastic/firmware/pull/3356#issuecomment-1986950317
2024-03-10 13:43:57 +13:00
Todd Herbert 7b70324435 handle special frames in Screen.cpp 2024-03-10 05:00:51 +13:00
Todd Herbert 94eb837ee8 function macro for tidier addFramFlag() calls 2024-03-10 04:14:45 +13:00
Todd Herbert a9c07a4c01 add frameFlags to LOG_DEBUG() messages 2024-03-10 04:07:51 +13:00
Todd Herbert e232e3462c add BLOCKING modifier to frameFlagTypes 2024-03-10 03:48:59 +13:00
Todd Herbert 94794edd43 add init code as a determineMode() check 2024-03-10 03:43:07 +13:00
Todd Herbert 95b6f27d2a change order of determineMode() checks 2024-03-10 03:38:39 +13:00
Todd Herbert efd818fe90 move storeAndReset() to end of update() 2024-03-10 03:07:13 +13:00
Todd Herbert 576f582cd9 rename setFrameFlag() method 2024-03-10 02:30:16 +13:00
Todd Herbert d5c11d1892 change dependency from private repo to meshtastic/GxEPD2 2024-03-10 02:11:49 +13:00
Todd Herbert 23926210d1 increase fast-refresh limit for T-Echo
https://github.com/meshtastic/firmware/pull/3339#issuecomment-1986245727
2024-03-09 09:57:30 +13:00
Todd Herbert 7275c21f6b formatting
responds to https://github.com/meshtastic/firmware/pull/3339#discussion_r1518175434
2024-03-09 09:34:53 +13:00
Todd Herbert ac89bb3387 initial config for T-Echo 2024-03-09 09:30:34 +13:00
Todd Herbert 07da130586 Async full-refresh for EInkDynamicDisplay 2024-03-09 09:30:34 +13:00
Todd Herbert 5d4d91f775 Move Wireless Paper V1.1 custom hibernate behavior to GxEPD2 2024-03-09 09:30:34 +13:00
todd-herbertandGitHub 5865add857 E-Ink: fast refresh for Wireless Paper V1.1 (#3320) 2024-03-03 07:13:56 -06:00
c659292836 Reimplement "Dynamic E-Ink" as a derived class (#3316)
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
2024-03-02 20:07:29 -06:00
6acc63729b Refactor EInkDisplay (#3299)
* Refactor EInkDisplay
A lot of variant specific code is merged, with the macros pushed to the respective variant.h files.
"Dynamic Partial" code has been purged, pending a rewrite.

* fix: declare class only if USE_EINK, init all members

* refactor: move macros to platformio.ini
Responds to https://github.com/meshtastic/firmware/pull/3299#issuecomment-1966425926

* fix: EInkDisplay::connect() references old macros
Usage was in a block of variant-specific code, which had been intentionally left untouched.

* fix: remove duplicate macros from variant.h

---------

Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
2024-02-28 09:45:15 -06:00
todd-herbertandGitHub 7aee014f5e Add Heltec Wireless Paper V1.0 to the build matrix (#3306) 2024-02-28 09:20:20 -06:00
todd-herbertandGitHub 3ad34f8759 E-Ink: change inaccurate terminology (#3269)
Follows a discussion with @markbirss on discord
2024-02-23 07:45:23 -06:00
78b4a65635 E-Ink: additional conditions for "Dynamic Partial" mode (#3256)
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
2024-02-21 13:00:56 -06:00
0b466fdca9 fix: Wireless Paper (v1.0 & v1.1) not showing battery percentage (#3208)
* fix: Wireless Paper (v1.0 & v1.1) not showing battery percentage
Addresses https://github.com/meshtastic/firmware/issues/3131

* refactor: count only valid samples
Responds to https://github.com/meshtastic/firmware/pull/3208#discussion_r1485661096

---------

Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
2024-02-13 10:20:48 -06:00
36cf9b9ef4 feat: E-Ink "Dynamic Partial" (#3193)
Use a mixture of full refresh, partial refresh, and skipped updates, balancing urgency and display health.

Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
2024-02-11 07:27:22 -06:00
8130b1cf43 feat: initial support for Heltec Wireless Paper v1.0 (#3181)
E-ink panel is DEPG0213BNS800. Otherwise, identical to v1.1 (?)
Partial refresh supported, but not implemented in this commit.

Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
2024-02-08 19:00:13 -06:00