mirror of
https://github.com/daveallie/crosspoint-reader.git
synced 2025-12-18 15:17:42 +03:00
Speedup boot by not waiting for Serial
This commit is contained in:
parent
ddec7f78dd
commit
85502b417e
@ -29,15 +29,15 @@ Button getPressedButton() {
|
|||||||
return NONE;
|
return NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
Input getInput(const bool skipWait) {
|
Input getInput(const long maxHoldMs) {
|
||||||
const Button button = getPressedButton();
|
const Button button = getPressedButton();
|
||||||
if (button == NONE) return {NONE, 0};
|
if (button == NONE) return {NONE, 0};
|
||||||
|
|
||||||
if (skipWait) {
|
|
||||||
return {button, 0};
|
|
||||||
}
|
|
||||||
|
|
||||||
const auto start = millis();
|
const auto start = millis();
|
||||||
while (getPressedButton() == button) delay(50);
|
unsigned long held = 0;
|
||||||
return {button, millis() - start};
|
while (getPressedButton() == button && (maxHoldMs < 0 || held < maxHoldMs)) {
|
||||||
|
delay(50);
|
||||||
|
held = millis() - start;
|
||||||
|
}
|
||||||
|
return {button, held};
|
||||||
}
|
}
|
||||||
|
|||||||
@ -25,4 +25,4 @@ struct Input {
|
|||||||
|
|
||||||
void setupInputPinModes();
|
void setupInputPinModes();
|
||||||
Button getPressedButton();
|
Button getPressedButton();
|
||||||
Input getInput(bool skipWait = false);
|
Input getInput(long maxHoldMs = -1);
|
||||||
|
|||||||
32
src/main.cpp
32
src/main.cpp
@ -67,10 +67,10 @@ void enterNewScreen(Screen* screen) {
|
|||||||
void verifyWakeupLongPress() {
|
void verifyWakeupLongPress() {
|
||||||
// Give the user up to 1000ms to start holding the power button, and must hold for POWER_BUTTON_WAKEUP_MS
|
// Give the user up to 1000ms to start holding the power button, and must hold for POWER_BUTTON_WAKEUP_MS
|
||||||
const auto start = millis();
|
const auto start = millis();
|
||||||
auto input = getInput();
|
auto input = getInput(POWER_BUTTON_WAKEUP_MS);
|
||||||
while (input.button != POWER && millis() - start < 1000) {
|
while (input.button != POWER && millis() - start < 1000) {
|
||||||
delay(50);
|
delay(50);
|
||||||
input = getInput();
|
input = getInput(POWER_BUTTON_WAKEUP_MS);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (input.button != POWER || input.pressTime < POWER_BUTTON_WAKEUP_MS) {
|
if (input.button != POWER || input.pressTime < POWER_BUTTON_WAKEUP_MS) {
|
||||||
@ -81,6 +81,12 @@ void verifyWakeupLongPress() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void waitForNoButton() {
|
||||||
|
while (getInput().button != NONE) {
|
||||||
|
delay(50);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Enter deep sleep mode
|
// Enter deep sleep mode
|
||||||
void enterDeepSleep() {
|
void enterDeepSleep() {
|
||||||
enterNewScreen(new FullScreenMessageScreen(renderer, "Sleeping", true, false, true));
|
enterNewScreen(new FullScreenMessageScreen(renderer, "Sleeping", true, false, true));
|
||||||
@ -97,20 +103,6 @@ void enterDeepSleep() {
|
|||||||
esp_deep_sleep_start();
|
esp_deep_sleep_start();
|
||||||
}
|
}
|
||||||
|
|
||||||
void setupSerial() {
|
|
||||||
Serial.begin(115200);
|
|
||||||
// Wait for serial monitor
|
|
||||||
const unsigned long start = millis();
|
|
||||||
while (!Serial && (millis() - start) < 3000) {
|
|
||||||
delay(10);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Serial) {
|
|
||||||
// delay for monitor to start reading
|
|
||||||
delay(1000);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void onGoHome();
|
void onGoHome();
|
||||||
void onSelectEpubFile(const std::string& path) {
|
void onSelectEpubFile(const std::string& path) {
|
||||||
enterNewScreen(new FullScreenMessageScreen(renderer, "Loading..."));
|
enterNewScreen(new FullScreenMessageScreen(renderer, "Loading..."));
|
||||||
@ -129,7 +121,8 @@ void onGoHome() { enterNewScreen(new FileSelectionScreen(renderer, onSelectEpubF
|
|||||||
void setup() {
|
void setup() {
|
||||||
setupInputPinModes();
|
setupInputPinModes();
|
||||||
verifyWakeupLongPress();
|
verifyWakeupLongPress();
|
||||||
setupSerial();
|
Serial.begin(115200);
|
||||||
|
Serial.println("Booting...");
|
||||||
|
|
||||||
// Initialize pins
|
// Initialize pins
|
||||||
pinMode(BAT_GPIO0, INPUT);
|
pinMode(BAT_GPIO0, INPUT);
|
||||||
@ -154,11 +147,16 @@ void setup() {
|
|||||||
Epub* epub = loadEpub(appState->openEpubPath);
|
Epub* epub = loadEpub(appState->openEpubPath);
|
||||||
if (epub) {
|
if (epub) {
|
||||||
enterNewScreen(new EpubReaderScreen(renderer, epub, onGoHome));
|
enterNewScreen(new EpubReaderScreen(renderer, epub, onGoHome));
|
||||||
|
// Ensure we're not still holding the power button before leaving setup
|
||||||
|
waitForNoButton();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
enterNewScreen(new FileSelectionScreen(renderer, onSelectEpubFile));
|
enterNewScreen(new FileSelectionScreen(renderer, onSelectEpubFile));
|
||||||
|
|
||||||
|
// Ensure we're not still holding the power button before leaving setup
|
||||||
|
waitForNoButton();
|
||||||
}
|
}
|
||||||
|
|
||||||
void loop() {
|
void loop() {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user