2026-10-13 01:34:04 +02:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
#include "BROSE9323.h"
|
2026-10-15 01:29:01 +02:00
|
|
|
#include "logic/settings.h"
|
2026-10-13 01:34:04 +02:00
|
|
|
#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);
|
|
|
|
|
|
2026-10-15 01:29:01 +02:00
|
|
|
// 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();
|
2026-10-13 01:52:34 +02:00
|
|
|
|
2026-10-13 01:34:04 +02:00
|
|
|
private:
|
|
|
|
|
BROSE9323 &_display;
|
|
|
|
|
NanoLink &_nano;
|
|
|
|
|
bool _started = false;
|
2026-10-15 01:29:01 +02:00
|
|
|
bool _drive_pending = false;
|
2026-10-13 01:52:34 +02:00
|
|
|
uint16_t _flip_time;
|
2026-10-15 01:29:01 +02:00
|
|
|
DriveSettings _drive;
|
2026-10-13 01:34:04 +02:00
|
|
|
};
|