EduArt Sensor Ring Library 3.0.0
Loading...
Searching...
No Matches
eduart::device::WS2812b_Device Class Reference

Device wrapper for WS2812b LED strips controlled via the sensorring bus. More...

#include <WS2812b_Device.hpp>

Inheritance diagram for eduart::device::WS2812b_Device:
[legend]
Collaboration diagram for eduart::device::WS2812b_Device:
[legend]

Public Member Functions

 WS2812b_Device (WS2812b_Params params, com::ComInterfaceID interface, unsigned int idx)
 Construct a new WS2812b device instance.
 ~WS2812b_Device ()
 Destructor.
const WS2812b_ParamsgetParams () const
 Get the parameters used to configure this device.
Public Member Functions inherited from eduart::device::BaseDevice
 BaseDevice (DeviceID id, com::ComInterface *interface, com::ComEndpoint target, bool enable)
 Constructs the device with the given ID, communication interface, endpoint, and enable flag.
DeviceID getDeviceID () const
 Returns the device identifier.
void setPoseOffset (const DevicePoseOffset &offset)
 Set the pose offset of this device relative to the board center.
DevicePoseOffset getPoseOffset () const
 Get the pose offset of this device relative to the board center.
Public Member Functions inherited from eduart::device::BaseSensor
 BaseSensor (com::ComInterface *interface, com::ComEndpoint target, unsigned int idx, bool enable)
 Construct a base sensor and register it with the communication interface.
virtual ~BaseSensor ()
 Destructor.
unsigned int getIdx () const
 Get the index of this sensor instance.
bool getEnable () const
 Query if the sensor is currently enabled.
void setEnable (bool enable)
 Enable or disable the sensor.
void setPose (math::Vector3 translation, math::Vector3 rotation)
 Set the pose of the sensor in the common coordinate frame.
void resetSensorState ()
 Reset error state and internal flags to nominal values.
void clearDataFlag ()
 Clear state for the next measurement cycle. Calls the sensor-specific hook onClearDataFlag().
std::future< bool > beginMeasurementWait ()
 Start a measurement-wait cycle and return a future that will be set when the measurement is ready.
std::future< bool > beginDataAvailableWait ()
 Start a data-available-wait cycle and return a future that will be set when new data is available.

Static Public Member Functions

static bool setLight (LightMode mode, std::uint8_t red, std::uint8_t green, std::uint8_t blue)
 Set light mode and color for all WS2812b devices on the bus.
static bool syncLight ()
 Synchronize pending light updates on all WS2812b devices.

Friends

class WS2812b_DeviceImpl

Additional Inherited Members

Protected Member Functions inherited from eduart::device::BaseSensor
void setMeasurementReady (bool success)
 Set the result of the current measurement-wait cycle. Called from derived callbacks when ready.
void setDataAvailableReady (bool success)
 Set the result of the current data-available-wait cycle. Called from derived callbacks when "data available" is received.
virtual void comCallback (const com::ComEndpoint source, const std::vector< std::uint8_t > &data)=0
 Handle an incoming communication message for this sensor.
Protected Attributes inherited from eduart::device::BaseDevice
DeviceState _state
 Current lifecycle/runtime state.
DeviceID _id
 Device identifier.
bool _enable
 Whether the device is enabled.
DevicePoseOffset _pose_offset
 Pose offset of the device relative to the sensor board center.
Protected Attributes inherited from eduart::device::BaseSensor
unsigned int _idx
 Index of this sensor instance within its group.
DeviceState _error
 Current health state of the sensor.
com::ComInterface * _interface
 Communication interface used to talk to the sensor.
math::Vector3 _translation
 Translation of the sensor origin in the common coordinate frame.
math::Vector3 _rotation
 Rotation of the sensor expressed as Euler angles in degrees.
math::Matrix3 _rot_m
 Rotation matrix derived from the Euler angles.
bool _enable_flag
 Flag indicating whether the sensor is enabled.
std::mutex _state_mutex
std::optional< std::promise< bool > > _measurement_promise
 Promise for the current measurement-wait cycle; set by callback, consumed by wait + get().
std::optional< std::promise< bool > > _data_available_promise
 Promise for the current data-available-wait cycle; set by callback when "data available" is received.
std::mutex _promise_mutex
subscription::Subscription _com_subscription
 RAII subscription to the communication interface.

Detailed Description

Device wrapper for WS2812b LED strips controlled via the sensorring bus.

Constructor & Destructor Documentation

◆ WS2812b_Device()

eduart::device::WS2812b_Device::WS2812b_Device ( WS2812b_Params params,
com::ComInterfaceID interface,
unsigned int idx )

Construct a new WS2812b device instance.

Parameters
[in]paramsLED strip configuration parameters.
[in]interfaceCommunication interface used to talk to the device.
[in]idxIndex of the device on the bus.

Member Function Documentation

◆ getParams()

const WS2812b_Params & eduart::device::WS2812b_Device::getParams ( ) const

Get the parameters used to configure this device.

Returns
Reference to the internal WS2812b parameter struct.

◆ setLight()

bool eduart::device::WS2812b_Device::setLight ( LightMode mode,
std::uint8_t red,
std::uint8_t green,
std::uint8_t blue )
static

Set light mode and color for all WS2812b devices on the bus.

Parameters
[in]modeLight mode to apply.
[in]redRed channel value.
[in]greenGreen channel value.
[in]blueBlue channel value.
Returns
true on success.

◆ syncLight()

bool eduart::device::WS2812b_Device::syncLight ( )
static

Synchronize pending light updates on all WS2812b devices.

Returns
true on success.

The documentation for this class was generated from the following file: