Device wrapper for WS2812b LED strips controlled via the sensorring bus.
More...
#include <WS2812b_Device.hpp>
|
| | WS2812b_Device (WS2812b_Params params, com::ComInterfaceID interface, unsigned int idx) |
| | Construct a new WS2812b device instance.
|
|
| ~WS2812b_Device () |
| | Destructor.
|
| const WS2812b_Params & | getParams () const |
| | Get the parameters used to configure this device.
|
| | 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.
|
| | 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 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.
|
|
| 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.
|
|
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.
|
|
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.
|
Device wrapper for WS2812b LED strips controlled via the sensorring bus.
◆ WS2812b_Device()
Construct a new WS2812b device instance.
- Parameters
-
| [in] | params | LED strip configuration parameters. |
| [in] | interface | Communication interface used to talk to the device. |
| [in] | idx | Index of the device on the bus. |
◆ 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] | mode | Light mode to apply. |
| [in] | red | Red channel value. |
| [in] | green | Green channel value. |
| [in] | blue | Blue 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: