Skip to content

Commit 1c44361

Browse files
Add T-Echo hibernation with e-ink clear and peripheral shutdown
1 parent 2ddd5ca commit 1c44361

File tree

4 files changed

+40
-0
lines changed

4 files changed

+40
-0
lines changed

examples/companion_radio/ui-new/UITask.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -688,7 +688,13 @@ void UITask::shutdown(bool restart){
688688
if (restart) {
689689
_board->reboot();
690690
} else {
691+
delay(2000);
692+
#ifdef DISPLAY_CLASS
693+
extern DISPLAY_CLASS display;
694+
display.hibernate();
695+
#else
691696
_display->turnOff();
697+
#endif
692698
radio_driver.powerOff();
693699
_board->powerOff();
694700
}

src/helpers/ui/GxEPDDisplay.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,14 @@ void GxEPDDisplay::turnOff() {
5555
_isOn = false;
5656
}
5757

58+
void GxEPDDisplay::hibernate() {
59+
display.fillScreen(GxEPD_BLACK);
60+
display.display(false);
61+
display.fillScreen(GxEPD_WHITE);
62+
display.display(false);
63+
display.hibernate();
64+
}
65+
5866
void GxEPDDisplay::clear() {
5967
display.fillScreen(GxEPD_WHITE);
6068
display.setTextColor(GxEPD_BLACK);

src/helpers/ui/GxEPDDisplay.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ class GxEPDDisplay : public DisplayDriver {
4949
bool isOn() override {return _isOn;};
5050
void turnOn() override;
5151
void turnOff() override;
52+
void hibernate();
5253
void clear() override;
5354
void startFrame(Color bkg = DARK) override;
5455
void setTextSize(int sz) override;

variants/lilygo_techo/TechoBoard.h

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
#include <MeshCore.h>
44
#include <Arduino.h>
5+
#include <Wire.h>
56
#include <helpers/NRF52Board.h>
67

78
// built-ins
@@ -26,18 +27,42 @@ class TechoBoard : public NRF52BoardOTA {
2627
void powerOff() override {
2728
#ifdef LED_RED
2829
digitalWrite(LED_RED, HIGH);
30+
pinMode(LED_RED, INPUT_PULLUP);
2931
#endif
3032
#ifdef LED_GREEN
3133
digitalWrite(LED_GREEN, HIGH);
34+
pinMode(LED_GREEN, INPUT_PULLUP);
3235
#endif
3336
#ifdef LED_BLUE
3437
digitalWrite(LED_BLUE, HIGH);
38+
pinMode(LED_BLUE, INPUT_PULLUP);
3539
#endif
3640
#ifdef DISP_BACKLIGHT
3741
digitalWrite(DISP_BACKLIGHT, LOW);
42+
pinMode(DISP_BACKLIGHT, INPUT_PULLDOWN);
43+
#endif
44+
#ifdef GPS_EN
45+
digitalWrite(GPS_EN, LOW);
46+
pinMode(GPS_EN, INPUT_PULLDOWN);
47+
#endif
48+
#ifdef PIN_GPS_RESET
49+
digitalWrite(PIN_GPS_RESET, LOW);
50+
pinMode(PIN_GPS_RESET, INPUT_PULLDOWN);
51+
#endif
52+
Wire.end();
53+
#ifdef PIN_WIRE_SDA
54+
pinMode(PIN_WIRE_SDA, INPUT_PULLUP);
55+
#endif
56+
#ifdef PIN_WIRE_SCL
57+
pinMode(PIN_WIRE_SCL, INPUT_PULLUP);
58+
#endif
59+
#ifdef SX126X_POWER_EN
60+
digitalWrite(SX126X_POWER_EN, LOW);
61+
pinMode(SX126X_POWER_EN, INPUT);
3862
#endif
3963
#ifdef PIN_PWR_EN
4064
digitalWrite(PIN_PWR_EN, LOW);
65+
pinMode(PIN_PWR_EN, INPUT);
4166
#endif
4267
sd_power_system_off();
4368
}

0 commit comments

Comments
 (0)