Update sleep screen

This commit is contained in:
Dave Allie 2025-12-06 04:20:03 +11:00
parent 899caab70c
commit 8679c8f57c
No known key found for this signature in database
GPG Key ID: F2FDDB3AD8D0276F
7 changed files with 2567 additions and 7 deletions

View File

@ -128,8 +128,13 @@ void EpdRenderer::fillCircle(const int x, const int y, const int radius, const u
}
void EpdRenderer::drawImage(const uint8_t bitmap[], const int x, const int y, const int width, const int height,
const bool invert) const {
display->drawImage(bitmap, x + marginLeft, y + marginTop, width, height, invert);
const bool invert, const bool mirrorY) const {
drawImageNoMargin(bitmap, x + marginLeft, y + marginTop, width, height, invert, mirrorY);
}
void EpdRenderer::drawImageNoMargin(const uint8_t bitmap[], const int x, const int y, const int width, const int height,
const bool invert, const bool mirrorY) const {
display->drawImage(bitmap, x, y, width, height, invert, mirrorY);
}
void EpdRenderer::clearScreen(const bool black) const {

View File

@ -32,7 +32,10 @@ class EpdRenderer {
void fillRect(int x, int y, int width, int height, uint16_t color = 1) const;
void drawCircle(int x, int y, int radius, uint16_t color = 1) const;
void fillCircle(int x, int y, int radius, uint16_t color = 1) const;
void drawImage(const uint8_t bitmap[], int x, int y, int width, int height, bool invert = false) const;
void drawImage(const uint8_t bitmap[], int x, int y, int width, int height, bool invert = false,
bool mirrorY = false) const;
void drawImageNoMargin(const uint8_t bitmap[], int x, int y, int width, int height, bool invert = false,
bool mirrorY = false) const;
void clearScreen(bool black = false) const;
void flushDisplay(bool partialUpdate = true) const;
void flushArea(int x, int y, int width, int height) const;

2532
src/images/SleepScreenImg.h Normal file

File diff suppressed because it is too large Load Diff

View File

@ -12,6 +12,7 @@
#include "screens/EpubReaderScreen.h"
#include "screens/FileSelectionScreen.h"
#include "screens/FullScreenMessageScreen.h"
#include "screens/SleepScreen.h"
#define SPI_FQ 40000000
// Display SPI pins (custom pins for XteinkX4, not hardware SPI defaults)
@ -94,7 +95,7 @@ void waitForNoButton() {
// Enter deep sleep mode
void enterDeepSleep() {
exitScreen();
enterNewScreen(new FullScreenMessageScreen(renderer, "Sleeping", BOLD, true, false));
enterNewScreen(new SleepScreen(renderer));
Serial.println("Power button released after a long press. Entering deep sleep.");
delay(1000); // Allow Serial buffer to empty and display to update
@ -135,8 +136,12 @@ void onGoHome() {
void setup() {
setupInputPinModes();
verifyWakeupLongPress();
Serial.begin(115200);
Serial.println("Booting...");
// Begin serial only if USB connected
pinMode(UART0_RXD, INPUT);
if (digitalRead(UART0_RXD) == HIGH) {
Serial.begin(115200);
}
// Initialize pins
pinMode(BAT_GPIO0, INPUT);

View File

@ -1,7 +1,7 @@
#pragma once
#include <freertos/FreeRTOS.h>
#include <freertos/task.h>
#include <freertos/semphr.h>
#include <freertos/task.h>
#include <functional>
#include <string>

View File

@ -0,0 +1,7 @@
#include "SleepScreen.h"
#include <EpdRenderer.h>
#include "images/SleepScreenImg.h"
void SleepScreen::onEnter() { renderer->drawImageNoMargin(SleepScreenImg, 0, 0, 800, 480, false, true); }

View File

@ -0,0 +1,8 @@
#pragma once
#include "Screen.h"
class SleepScreen final : public Screen {
public:
explicit SleepScreen(EpdRenderer* renderer) : Screen(renderer) {}
void onEnter() override;
};