#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; };