Skip to content

Commit 564959b

Browse files
committed
Briefly show splash, add more epd modes, add feed for wdt so it doesnt miss ping and dc
1 parent 3a98977 commit 564959b

File tree

3 files changed

+31
-3
lines changed

3 files changed

+31
-3
lines changed

src/components/display/drivers/dispDrvBase.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,15 @@ class dispDrvBase {
125125
*/
126126
virtual void setTextSize(uint8_t s) { _text_sz = s; }
127127

128+
129+
/*!
130+
@brief Displays a splash screen on the display.
131+
@note This method can be overridden by derived classes to provide
132+
specific functionality.
133+
*/
134+
virtual void showSplash() { // No-op for base class
135+
}
136+
128137
protected:
129138
int16_t _pin_dc; ///< Data/Command pin
130139
int16_t _pin_rst; ///< Reset pin

src/components/display/drivers/dispDrvThinkInkGrayscale4Eaamfgn.h

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,10 +73,20 @@ class drvDispThinkInkGrayscale4Eaamfgn : public dispDrvBase {
7373
_height = _display->height();
7474
_width = _display->width();
7575
_display->clearBuffer();
76+
return true;
77+
}
78+
79+
virtual void showSplash() override {
80+
if (_display == nullptr)
81+
return;
82+
7683
// Show splash screen
7784
_display->drawBitmap(0, 0, epd_bitmap_ws_logo_296128, 296, 128, EPD_BLACK);
7885
_display->display();
79-
return true;
86+
delay(1000);
87+
_display->clearBuffer();
88+
_display->fillScreen(EPD_WHITE);
89+
_display->display();
8090
}
8191

8292
/*!

src/components/display/hardware.cpp

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -240,7 +240,13 @@ bool DisplayHardware::beginEPD(
240240
thinkinkmode_t epd_mode = THINKINK_MONO;
241241
if (config->mode == wippersnapper_display_v1_EPDMode_EPD_MODE_GRAYSCALE4) {
242242
epd_mode = THINKINK_GRAYSCALE4;
243-
WS_DEBUG_PRINTLN("[display] EPD mode: GRAYSCALE4");
243+
} else if (config->mode == wippersnapper_display_v1_EPDMode_EPD_MODE_MONO) {
244+
epd_mode = THINKINK_MONO;
245+
} else {
246+
WS_DEBUG_PRINTLN("[display] ERROR: Unsupported EPD mode!");
247+
delete _drvDisp;
248+
_drvDisp = nullptr;
249+
return false;
244250
}
245251

246252
if (!_drvDisp->begin(epd_mode)) {
@@ -250,6 +256,10 @@ bool DisplayHardware::beginEPD(
250256
return false;
251257
}
252258

259+
WS.feedWDT();
260+
_drvDisp->showSplash();
261+
WS.feedWDT();
262+
WS_DEBUG_PRINTLN("[display] Successfully initialized epd display!");
253263
return true;
254264
}
255265

@@ -328,7 +338,6 @@ bool DisplayHardware::beginTft(
328338
_drvDisp->setHeight(config->height);
329339
_drvDisp->setRotation(config->rotation);
330340
_drvDisp->begin();
331-
_drvDisp->setTextSize(text_sz);
332341

333342
return true;
334343
}

0 commit comments

Comments
 (0)