#pragma once #include // Thin firmware HAL over the SDK frontlight manager. It is inert on boards // without a frontlight, so callers do not need board-specific conditionals. class HalFrontlight { public: static HalFrontlight& getInstance() { return instance; } void begin(uint8_t brightness, uint8_t warmth, bool on); bool present() const { return manager.present(); } bool hasColorTemperature() const { return manager.hasColorTemperature(); } void setBrightness(uint8_t percent); void setWarmth(uint8_t warmPercent); void setOn(bool on); uint8_t brightness() const { return lastBrightness; } uint8_t warmth() const { return manager.colorTemperature(); } bool isOn() const { return lit; } private: HalFrontlight() = default; FrontlightManager manager; // The SDK represents off as brightness 0. Keep the selected brightness so // toggling back on restores it. uint8_t lastBrightness = 60; bool lit = false; static HalFrontlight instance; }; #define Frontlight HalFrontlight::getInstance()