32 lines
815 B
C++
32 lines
815 B
C++
#pragma once
|
|||
|
|
|
||
|
|
#include <cstdint>
|
||
|
|
|
||
|
|
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
|