13#include <unordered_map>
21#include "sensorring/device/hardware/htpa32/HTPA32_Params.hpp"
22#include "sensorring/device/hardware/vl53l8cx/VL53L8CX_Params.hpp"
23#include "sensorring/device/hardware/ws2812b/WS2812b_Params.hpp"
25#include "sensorring/platform/SensorringExport.hpp"
71 using DeviceParamsVariant = std::variant<device::VL53L8CX_Params, device::HTPA32_Params, device::WS2812b_Params>;
74 using EnumerationMap = std::unordered_map<com::ComInterfaceID, std::vector<device::EnumerationInformation> >;
152 struct BoardExpectation {
154 std::vector<DeviceParamsVariant> device_params;
155 bool has_explicit_devices =
false;
158 struct InterfaceConfig {
160 std::vector<BoardExpectation> expected_boards;
161 bool has_expectations =
false;
167 std::unordered_map<device::DeviceType, DeviceParamsVariant> buildDefaultParamsMap(
const std::vector<device::DeviceType>& devices)
const;
169 std::vector<InterfaceConfig> _interfaces;
170 std::unordered_map<device::DeviceType, DeviceParamsVariant> _default_device_params;
171 EnumerationMap _enumeration_results;
Interface type definition.
Enumeration of supported device hardware types.
DeviceType
Supported device hardware types used for device registration and grouping.
Definition DeviceType.hpp:25
Parameter structure of a sensor board.
ValidationMode
Controls how build() handles mismatches between expectations and discovered hardware.
Definition SensorRingFactory.hpp:35
@ Strict
All expectations must match exactly by index; build() returns nullptr on any mismatch.
Definition SensorRingFactory.hpp:37
@ Relaxed
Definition SensorRingFactory.hpp:41
Top-level container managing multiple sensor buses.
Factory for creating a SensorRing.
Definition SensorRingFactory.hpp:68
void expectBoard(device::SensorBoardParams params)
Declare an expected board on the current interface.
static constexpr Version MIN_FIRMWARE_VERSION
Minimum sensor board firmware version required by this library version.
Definition SensorRingFactory.hpp:77
std::unordered_map< com::ComInterfaceID, std::vector< device::EnumerationInformation > > EnumerationMap
Per-interface enumeration results, keyed by interface ID.
Definition SensorRingFactory.hpp:74
std::string printTopology() const
Format the latest enumeration results as a human-readable topology string.
std::variant< device::VL53L8CX_Params, device::HTPA32_Params, device::WS2812b_Params > DeviceParamsVariant
Currently supported devices for explicit configuration in expectBoard().
Definition SensorRingFactory.hpp:71
void addInterface(com::ComInterfaceID interface)
Add a communication interface (bus) to scan during build().
const EnumerationMap & getLatestEnumerationResult() const
Return the enumeration results from the last enumerate() or build() call.
EnumerationMap enumerate()
Enumerate hardware on all added interfaces without building a SensorRing.
std::unique_ptr< SensorRing > build(ValidationMode mode=ValidationMode::Strict)
Enumerate hardware on all added interfaces, validate against expectations, and construct the SensorRi...
void expectBoard(device::SensorBoardParams params, std::vector< DeviceParamsVariant > device_params)
Declare an expected board together with explicit per-device params.
void setDefaultDeviceParams(DeviceParamsVariant params)
Set default params applied to every device of the given type that has no explicit params from expectB...
void reset()
Reset the factory to its initial state. Enumeration results are preserved.
Semantic version (major, minor, patch) for firmware or board.
Definition EnumerationInformation.hpp:27
Definition ComInterfaceID.hpp:32
Parameter structure of a sensor board. A sensor board is one circuit board.
Definition SensorBoardParams.hpp:22