#include RGBled::RGBled(const uint8_t pin) : m_led(pin) { pinMode(m_led, OUTPUT); writeStatus(RGBled::ERROR); m_brightness = 1.0f; } RGBled::~RGBled() { pinMode(m_led, INPUT); } void RGBled::setBrightness(const float b) { m_brightness = b; } void RGBled::setStatus(const LedStatus s) { if (m_status == s) return; std::lock_guard lock(m_mutex); m_status = s; writeStatus(m_status); } const RGBled::LedStatus RGBled::getSatus(void) { return m_status; } void RGBled::writeStatus(const RGBled::LedStatus s) { const RGBled::color_u u{.status = s}; rgbLedWrite(m_led, (uint8_t)(m_brightness*u.color.r), (uint8_t)(m_brightness*u.color.g), (uint8_t)(m_brightness*u.color.b)); }