Add quick resume

This commit is contained in:
jpirnay
2026-05-21 23:13:28 +02:00
parent ce521a63aa
commit 5bb3980dc0
40 changed files with 262 additions and 26 deletions
+2
View File
@@ -674,3 +674,5 @@ STR_LARGE_IMAGE_PLACEHOLDER: "Запаўняльнік для вялікіх в
STR_LARGE_IMAGE: "Вялікая выява"
STR_PRESS_CONFIRM_TO_LOAD: "Націсніце Пацв. для загрузкі"
STR_TOOL_UTILITIES: "Дапаможныя"
STR_QUICK_RESUME: "Хуткае узнаўленне"
STR_QUICK_RESUME_TIMEOUT: "Хуткае узнаўленне пасля таймаўту"
+2
View File
@@ -294,3 +294,5 @@ STR_LARGE_IMAGE_PLACEHOLDER: "Text de mostra per a imatges grans"
STR_LARGE_IMAGE: "Imatge gran"
STR_PRESS_CONFIRM_TO_LOAD: "Premeu Confirma per carregar"
STR_TOOL_UTILITIES: "Utilitats"
STR_QUICK_RESUME: "Represa ràpida"
STR_QUICK_RESUME_TIMEOUT: "Represa ràpida després del temps"
+2
View File
@@ -265,3 +265,5 @@ STR_LARGE_IMAGE_PLACEHOLDER: "Zástupný symbol pro velké obrázky"
STR_LARGE_IMAGE: "Velký obrázek"
STR_PRESS_CONFIRM_TO_LOAD: "Stiskněte Potvrdit pro načtení"
STR_TOOL_UTILITIES: "Nástroje"
STR_QUICK_RESUME: "Rychlé navázání"
STR_QUICK_RESUME_TIMEOUT: "Rychlé navázání po vypršení"
+2
View File
@@ -294,3 +294,5 @@ STR_LARGE_IMAGE_PLACEHOLDER: "Pladsholder for store billeder"
STR_LARGE_IMAGE: "Stort billede"
STR_PRESS_CONFIRM_TO_LOAD: "Tryk på Bekræft for at indlæse"
STR_TOOL_UTILITIES: "Hjælpeværktøjer"
STR_QUICK_RESUME: "Hurtig genoptagelse"
STR_QUICK_RESUME_TIMEOUT: "Hurtig genoptagelse ved timeout"
+2
View File
@@ -672,3 +672,5 @@ STR_LARGE_IMAGE_PLACEHOLDER: "Placeholder voor grote afbeeldingen"
STR_LARGE_IMAGE: "Grote afbeelding"
STR_PRESS_CONFIRM_TO_LOAD: "Druk op Bevestig om te laden"
STR_TOOL_UTILITIES: "Hulpmiddelen"
STR_QUICK_RESUME: "Snel hervatten"
STR_QUICK_RESUME_TIMEOUT: "Snel hervatten bij timeout"
+2
View File
@@ -91,6 +91,8 @@ STR_CAT_READER: "Reader"
STR_CAT_CONTROLS: "Controls"
STR_CAT_SYSTEM: "System"
STR_SLEEP_SCREEN: "Sleep Screen"
STR_QUICK_RESUME: "Quick Resume"
STR_QUICK_RESUME_TIMEOUT: "Quick Resume on Timeout"
STR_SLEEP_COVER_MODE: "Sleep Screen Cover Mode"
STR_HIDE_BATTERY: "Hide Battery %"
STR_EXTRA_SPACING: "Extra Paragraph Spacing"
+2
View File
@@ -264,3 +264,5 @@ STR_LARGE_IMAGE_PLACEHOLDER: "Paikkamerkki suurille kuville"
STR_LARGE_IMAGE: "Suuri kuva"
STR_PRESS_CONFIRM_TO_LOAD: "Paina Vahvista ladataksesi"
STR_TOOL_UTILITIES: "Apuvälineet"
STR_QUICK_RESUME: "Pikajatko"
STR_QUICK_RESUME_TIMEOUT: "Pikajatko aikakatkaisulla"
+2
View File
@@ -673,3 +673,5 @@ STR_LARGE_IMAGE_PLACEHOLDER: "Espace réservé pour les grandes images"
STR_LARGE_IMAGE: "Grande image"
STR_PRESS_CONFIRM_TO_LOAD: "Appuyez sur Confirmer pour charger"
STR_TOOL_UTILITIES: "Utilitaire"
STR_QUICK_RESUME: "Reprise rapide"
STR_QUICK_RESUME_TIMEOUT: "Reprise rapide après délai"
+2
View File
@@ -674,3 +674,5 @@ STR_LARGE_IMAGE_PLACEHOLDER: "Platzhalter für große Bilder"
STR_LARGE_IMAGE: "Großes Bild"
STR_PRESS_CONFIRM_TO_LOAD: "Zum Laden Bestätigen drücken"
STR_TOOL_UTILITIES: "Hilfsfunktionen"
STR_QUICK_RESUME: "Schnelles Fortsetzen"
STR_QUICK_RESUME_TIMEOUT: "Schnelles Fortsetzen nach Timeout"
+2
View File
@@ -294,3 +294,5 @@ STR_LARGE_IMAGE_PLACEHOLDER: "Helyőrző nagy képekhez"
STR_LARGE_IMAGE: "Nagy kép"
STR_PRESS_CONFIRM_TO_LOAD: "Nyomja meg a Megerősítés gombot a betöltéshez"
STR_TOOL_UTILITIES: "Segédeszközök"
STR_QUICK_RESUME: "Gyors folytatás"
STR_QUICK_RESUME_TIMEOUT: "Gyors folytatás időtúllépéskor"
+2
View File
@@ -673,3 +673,5 @@ STR_LARGE_IMAGE_PLACEHOLDER: "Segnaposto per immagini grandi"
STR_LARGE_IMAGE: "Immagine grande"
STR_PRESS_CONFIRM_TO_LOAD: "Premi Conferma per caricare"
STR_TOOL_UTILITIES: "Utilità"
STR_QUICK_RESUME: "Ripresa rapida"
STR_QUICK_RESUME_TIMEOUT: "Ripresa rapida dopo timeout"
+2
View File
@@ -293,3 +293,5 @@ STR_LARGE_IMAGE_PLACEHOLDER: "Үлкен суреттерге арналған
STR_LARGE_IMAGE: "Үлкен сурет"
STR_PRESS_CONFIRM_TO_LOAD: "Жүктеу үшін Растау түймесін басыңыз"
STR_TOOL_UTILITIES: "Құралдар"
STR_QUICK_RESUME: "Жылдам жалғастыру"
STR_QUICK_RESUME_TIMEOUT: "Таймауттан кейін жылдам жалғастыру"
+2
View File
@@ -294,3 +294,5 @@ STR_LARGE_IMAGE_PLACEHOLDER: "Vietaženklis dideliems paveikslėliams"
STR_LARGE_IMAGE: "Didelis paveikslėlis"
STR_PRESS_CONFIRM_TO_LOAD: "Paspauskite Gerai, kad įkeltumėte"
STR_TOOL_UTILITIES: "Pagalbiniai įrankiai"
STR_QUICK_RESUME: "Greitas tęsimas"
STR_QUICK_RESUME_TIMEOUT: "Greitas tęsimas po skirtojo laiko"
+2
View File
@@ -687,3 +687,5 @@ STR_LARGE_IMAGE_PLACEHOLDER: "Ramka dużego obrazka"
STR_LARGE_IMAGE: "Duży obrazek"
STR_PRESS_CONFIRM_TO_LOAD: "Naciśnij Potwierdź, aby wczytać"
STR_TOOL_UTILITIES: "Narzędzia"
STR_QUICK_RESUME: "Szybkie wznawianie"
STR_QUICK_RESUME_TIMEOUT: "Szybkie wznawianie po czasie"
+2
View File
@@ -673,3 +673,5 @@ STR_LARGE_IMAGE_PLACEHOLDER: "Marcador para imagens grandes"
STR_LARGE_IMAGE: "Imagem grande"
STR_PRESS_CONFIRM_TO_LOAD: "Pressione Confirmar para carregar"
STR_TOOL_UTILITIES: "Utilitários"
STR_QUICK_RESUME: "Retomada rápida"
STR_QUICK_RESUME_TIMEOUT: "Retomada rápida após tempo limite"
+2
View File
@@ -672,3 +672,5 @@ STR_LARGE_IMAGE_PLACEHOLDER: "Espaço reservado para imagens grandes"
STR_LARGE_IMAGE: "Imagem grande"
STR_PRESS_CONFIRM_TO_LOAD: "Prima Confirmar para carregar"
STR_TOOL_UTILITIES: "Utilitários"
STR_QUICK_RESUME: "Retomada rápida"
STR_QUICK_RESUME_TIMEOUT: "Retomada rápida após tempo limite"
+2
View File
@@ -294,3 +294,5 @@ STR_LARGE_IMAGE_PLACEHOLDER: "Substituent pentru imagini mari"
STR_LARGE_IMAGE: "Imagine mare"
STR_PRESS_CONFIRM_TO_LOAD: "Apăsați Confirmă pentru încărcare"
STR_TOOL_UTILITIES: "Utilitare"
STR_QUICK_RESUME: "Reluare rapidă"
STR_QUICK_RESUME_TIMEOUT: "Reluare rapidă la timeout"
+2
View File
@@ -673,3 +673,5 @@ STR_LARGE_IMAGE_PLACEHOLDER: "Заглушка для больших изобр
STR_LARGE_IMAGE: "Большое изображение"
STR_PRESS_CONFIRM_TO_LOAD: "Нажмите Подтв. для загрузки"
STR_TOOL_UTILITIES: "Утилиты"
STR_QUICK_RESUME: "Быстрое возобновление"
STR_QUICK_RESUME_TIMEOUT: "Быстрое возобновление по таймауту"
+2
View File
@@ -672,3 +672,5 @@ STR_LARGE_IMAGE_PLACEHOLDER: "Oznaka mesta za velike slike"
STR_LARGE_IMAGE: "Velika slika"
STR_PRESS_CONFIRM_TO_LOAD: "Pritisnite Potrdi za nalaganje"
STR_TOOL_UTILITIES: "Pomočnik"
STR_QUICK_RESUME: "Hitro nadaljevanje"
STR_QUICK_RESUME_TIMEOUT: "Hitro nadaljevanje po izteku"
+2
View File
@@ -673,3 +673,5 @@ STR_LARGE_IMAGE_PLACEHOLDER: "Marcador para imágenes grandes"
STR_LARGE_IMAGE: "Imagen grande"
STR_PRESS_CONFIRM_TO_LOAD: "Pulsa Confirmar para cargar"
STR_TOOL_UTILITIES: "Utilidades"
STR_QUICK_RESUME: "Reanudación rápida"
STR_QUICK_RESUME_TIMEOUT: "Reanudación rápida tras tiempo"
+2
View File
@@ -672,3 +672,5 @@ STR_LARGE_IMAGE_PLACEHOLDER: "Platshållare för stora bilder"
STR_LARGE_IMAGE: "Stor bild"
STR_PRESS_CONFIRM_TO_LOAD: "Tryck på Bekräfta för att läsa in"
STR_TOOL_UTILITIES: "Hjälpverktyg"
STR_QUICK_RESUME: "Snabb återupptagning"
STR_QUICK_RESUME_TIMEOUT: "Snabb återupptagning efter timeout"
+2
View File
@@ -672,3 +672,5 @@ STR_LARGE_IMAGE_PLACEHOLDER: "Büyük görseller için yer tutucu"
STR_LARGE_IMAGE: "Büyük görsel"
STR_PRESS_CONFIRM_TO_LOAD: "Yüklemek için Onayla'ya basın"
STR_TOOL_UTILITIES: "Yardımcı"
STR_QUICK_RESUME: "Hızlı Devam"
STR_QUICK_RESUME_TIMEOUT: "Zaman aşımında Hızlı Devam"
+2
View File
@@ -672,3 +672,5 @@ STR_LARGE_IMAGE_PLACEHOLDER: "Заглушка для великих зобра
STR_LARGE_IMAGE: "Велике зображення"
STR_PRESS_CONFIRM_TO_LOAD: "Натисніть Підтвердити, щоб завантажити"
STR_TOOL_UTILITIES: "Корисні інструменти"
STR_QUICK_RESUME: "Швидке продовження"
STR_QUICK_RESUME_TIMEOUT: "Швидке продовження після таймауту"
+2
View File
@@ -672,3 +672,5 @@ STR_LARGE_IMAGE_PLACEHOLDER: "Giữ chỗ cho hình ảnh lớn"
STR_LARGE_IMAGE: "Hình ảnh lớn"
STR_PRESS_CONFIRM_TO_LOAD: "Nhấn Xác nhận để tải"
STR_TOOL_UTILITIES: "Trợ giúp"
STR_QUICK_RESUME: "Tiếp tục nhanh"
STR_QUICK_RESUME_TIMEOUT: "Tiếp tục nhanh sau khi hết thời gian"
+9 -6
View File
@@ -10,7 +10,7 @@ HalDisplay::HalDisplay() : einkDisplay(EPD_SCLK, EPD_MOSI, EPD_CS, EPD_DC, EPD_R
HalDisplay::~HalDisplay() {}
void HalDisplay::begin() {
void HalDisplay::begin(bool seamless) {
// Set X3-specific panel mode before initializing.
if (gpio.deviceIsX3()) {
einkDisplay.setDisplayX3();
@@ -18,11 +18,14 @@ void HalDisplay::begin() {
einkDisplay.begin();
// Request resync after specific wakeup events to ensure clean display state
const auto wakeupReason = gpio.getWakeupReason();
if (wakeupReason == HalGPIO::WakeupReason::PowerButton || wakeupReason == HalGPIO::WakeupReason::AfterFlash ||
wakeupReason == HalGPIO::WakeupReason::Other) {
einkDisplay.requestResync();
// Request resync after specific wakeup events to ensure clean display state.
// Skip when seamless=true so the current panel content is preserved (Quick Resume).
if (!seamless) {
const auto wakeupReason = gpio.getWakeupReason();
if (wakeupReason == HalGPIO::WakeupReason::PowerButton || wakeupReason == HalGPIO::WakeupReason::AfterFlash ||
wakeupReason == HalGPIO::WakeupReason::Other) {
einkDisplay.requestResync();
}
}
}
+4 -2
View File
@@ -17,8 +17,10 @@ class HalDisplay {
FAST_REFRESH // Fast refresh using custom LUT
};
// Initialize the display hardware and driver
void begin();
// Initialize the display hardware and driver.
// When seamless=true, skip the on-wake resync so existing panel content is preserved
// (used by Quick Resume to bring back the last reader page without a boot screen).
void begin(bool seamless = false);
// Display dimensions
static constexpr uint16_t DISPLAY_WIDTH = EInkDisplay::DISPLAY_WIDTH;