#pragma once #include namespace microbu { /// XIAO ESP32-C5 active-low user LED: a visual indicator for TX/RX activity. class BoardControls { public: /// @brief Configures the LED GPIO and sets its idle state. BoardControls(); enum class LedMode { normal_tx, // Normally off, pulses on upon frame dissemination inverted_rx // Normally on, pulses off upon frame reception }; /// @brief Triggers visual indication (blink on in normal_tx mode, blink off in inverted_rx mode). void blink(); /// @brief Updates LED state and checks indication timers; call periodically. void tick(); private: void apply_led_state(); LedMode mode_ = LedMode::normal_tx; bool pulsing_ = false; std::int64_t pulse_until_us_ = 0; }; } // namespace microbu