18#include "sensorring/platform/SensorringExport.hpp"
46 std::future<bool> measure(std::uint8_t sequence_number);
47 std::future<bool> fetch();
80 virtual bool sendMeasurementRequest(std::uint8_t sequence_number) = 0;
81 virtual bool sendMeasurementTransmissionRequest() = 0;
83 virtual void onResetSensorState() {}
84 virtual void onClearDataFlag() {}
87 mutable std::mutex _state_mutex;
89 std::mutex _promise_mutex;
90 std::optional<std::promise<bool> > _data_available_promise;
91 std::optional<std::promise<bool> > _measurement_promise;
Unified device state enum covering lifecycle and runtime health.
Base class for all concrete sensor/actuator devices.
Device(DeviceID id, com::ComInterface *interface, com::ComEndpoint target)
Construct the device with identity and communication link.
std::future< bool > beginMeasurementWait()
Begin an asynchronous wait for the next measurement trigger.
void resetSensorState()
Reset the device to its initialised state, clearing all error flags.
std::future< bool > beginDataAvailableWait()
Begin an asynchronous wait for new data to become available.
void setDataAvailableReady(bool success)
Satisfy the pending data-available-wait future.
void clearDataFlag()
Clear the data-available flag so the device can accept the next measurement cycle.
Sensor(DeviceID id, com::ComInterface *interface, com::ComEndpoint target)
Construct the sensor with identity and communication link.
void setMeasurementReady(bool success)
Satisfy the pending measurement-wait future.
Uniquely identifies a communication endpoint as a (Direction, BoardAddress, DeviceId) tuple.
Definition ComEndpoint.hpp:37
Identifier for a device: type, human-readable name, and index.
Definition DeviceID.hpp:27