2026-05-24 20:41:25 +02:00
|
|
|
#pragma once
|
|
|
|
|
|
2026-05-24 22:20:42 +02:00
|
|
|
// Build-time feature flags derived from board defines. Two flavours:
|
|
|
|
|
//
|
|
|
|
|
// FEAT_* preprocessor macros — for conditional compilation of struct
|
|
|
|
|
// members, enum entries, and class fields where the preprocessor must
|
|
|
|
|
// run. Use `#if FEAT_X` instead of `#ifdef EINK_DISPLAY_MODEL`; the
|
|
|
|
|
// name documents *what* the flag toggles rather than *why* it's bound
|
|
|
|
|
// to e-ink.
|
|
|
|
|
//
|
|
|
|
|
// Features::* constexpr values — for runtime-shape decisions (booleans,
|
|
|
|
|
// timings, defaults). Compiler dead-branch-eliminates on the constexpr,
|
|
|
|
|
// so cost is identical to a preprocessor branch but the code stays
|
|
|
|
|
// reachable to tooling.
|
|
|
|
|
|
|
|
|
|
#if defined(EINK_DISPLAY_MODEL)
|
|
|
|
|
// E-ink build: slow refresh, rotatable panel, no per-second redraws
|
|
|
|
|
#define FEAT_BRIGHTNESS_SETTING 0
|
|
|
|
|
#define FEAT_CLOCK_SECONDS_SETTING 0
|
|
|
|
|
#define FEAT_DISPLAY_ROTATION_SETTING 1
|
|
|
|
|
#define FEAT_JOYSTICK_ROTATION_SETTING 1
|
|
|
|
|
#define FEAT_FULL_REFRESH_SETTING 1
|
|
|
|
|
#else
|
|
|
|
|
// OLED build: fast refresh, fixed orientation
|
|
|
|
|
#define FEAT_BRIGHTNESS_SETTING 1
|
|
|
|
|
#define FEAT_CLOCK_SECONDS_SETTING 1
|
|
|
|
|
#define FEAT_DISPLAY_ROTATION_SETTING 0
|
|
|
|
|
#define FEAT_JOYSTICK_ROTATION_SETTING 0
|
|
|
|
|
#define FEAT_FULL_REFRESH_SETTING 0
|
|
|
|
|
#endif
|
2026-05-24 20:41:25 +02:00
|
|
|
|
|
|
|
|
namespace Features {
|
|
|
|
|
|
|
|
|
|
#if defined(EINK_DISPLAY_MODEL)
|
|
|
|
|
static constexpr bool IS_EINK = true;
|
|
|
|
|
static constexpr bool BLINK_INDICATORS = false; // e-ink avoids high-rate redraws
|
|
|
|
|
static constexpr bool CLOCK_HIDE_SECONDS_DEFAULT = true; // pref starting value
|
|
|
|
|
static constexpr unsigned HOME_REFRESH_MS = 30000; // slow display polls less
|
|
|
|
|
static constexpr unsigned LOCKSCREEN_REFRESH_MS = 30000;
|
|
|
|
|
#else
|
|
|
|
|
static constexpr bool IS_EINK = false;
|
|
|
|
|
static constexpr bool BLINK_INDICATORS = true;
|
|
|
|
|
static constexpr bool CLOCK_HIDE_SECONDS_DEFAULT = false;
|
|
|
|
|
static constexpr unsigned HOME_REFRESH_MS = 1000;
|
|
|
|
|
static constexpr unsigned LOCKSCREEN_REFRESH_MS = 1000;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
} // namespace Features
|