Public Access
Home Assistant: remove the Clock switch (its entity is deleted on connect), add an IP sensor and Mode / Off image dropdowns whose options follow the saved bitmaps. Remove the built-in "Nintendo border" bitmap. Off image: a bitmap (or blank) left on the dots when the display switches off. Nano: pause after each flip pulse and repeat pulses for changed dots, both stored in EEPROM (G/N commands). Refresh effects (E command): instant, sparkle, wipe, rain, from the middle out, diagonal, spiral, flip all then reveal, push and random, optionally only for small changes. Effects run in steps from loop() so serial input keeps flowing. Web UI: flip settings, refresh effect and test patterns under Settings; the System tab shows why the ESP32 last restarted. Settings records from versions 1 and 2 are migrated. Firmware 2.3.0. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
34 lines
1.1 KiB
C++
34 lines
1.1 KiB
C++
#pragma once
|
|
|
|
#include "BROSE9323.h"
|
|
#include "logic/settings.h"
|
|
#include "nano_link/nano_link.h"
|
|
|
|
// Short messages for situations outside the normal clock: booting, crashes, recovery app.
|
|
// Used by both the clock firmware and the recovery app.
|
|
class StatusScreen
|
|
{
|
|
public:
|
|
StatusScreen(BROSE9323 &display, NanoLink &nano);
|
|
|
|
// Power the display on, show up to two lines (TEXT_LINE_CHARS each). Unless keep_on,
|
|
// power off again once the dots have flipped: flipdots keep their image without power.
|
|
void show(const char *line1, const char *line2, bool keep_on = false);
|
|
|
|
// How the Nano drives the dots, sent with the first message (default: FLIP_TIME and
|
|
// the DriveSettings defaults, so the recovery app always shows its messages instantly)
|
|
void setDrive(uint16_t flip_time, const DriveSettings &drive);
|
|
// Send them again (they changed), from loop()
|
|
void sendDrive();
|
|
// Sends changed drive settings once the display is on. Not while the Nano is flashed.
|
|
void loop();
|
|
|
|
private:
|
|
BROSE9323 &_display;
|
|
NanoLink &_nano;
|
|
bool _started = false;
|
|
bool _drive_pending = false;
|
|
uint16_t _flip_time;
|
|
DriveSettings _drive;
|
|
};
|