25 #ifndef DEVICE_BASE_HPP__
26 #define DEVICE_BASE_HPP__
33 #include <ccut/Signal.hpp>
35 #include "../Units.hpp"
36 #include "../util/serialize.hpp"
86 typedef std::string DeviceId;
88 class DeviceBase :
public std::enable_shared_from_this<DeviceBase>
92 typedef std::shared_ptr<DeviceBase> Shared;
103 DeviceId
uid()
const;
108 virtual std::future<std::set<std::string>>
listConfig()
const;
115 virtual std::future<std::string>
getConfig(
const std::string &name)
const;
122 virtual std::future<void>
setConfig(
const std::string &name,
123 const std::string &value)
const;
165 const std::string m_uid;
virtual std::future< std::set< std::string > > listConfig() const
list device configuration options
virtual bool convert(units::Value &value, units::unit_t unit) const
Convert value in a manner specific to this device.
virtual bool canConvert(const units::Value &value, units::unit_t unit) const
Check if unit conversion is possible in a manner specific to this device.
virtual std::future< void > setConfig(const std::string &name, const std::string &value) const
set device configuration value
ccut::Signal< const DeviceBase::Shared & > updateSignal
device update signal
std::string toString() const
debug and logging operation
virtual std::future< std::string > getConfig(const std::string &name) const
get device configuration value
DeviceBase(const std::string &uid)
Construct a new ABaseDevice, linking pointer to platform object.
DeviceId uid() const
Get the address of device.
AxisPositionMonitor::State from_string(const std::string &str)
convert string to state
const std::set< AxisPositionMonitor::State > & getEnumValues()
Get devices types list (to be iterated)
const std::string & to_string(Axis::State state)
convert State to string
DeviceType
List of possible device types supported.
@ AXIS_POSITION_MONITOR
device representing link with axis and position
@ UNKNOWN
unknown device type
@ PLATFORM
special device representing the platform itself
@ TRIGGER
hardware/software trigger device
@ POSITION_SENSOR
position sensor device
main motion-lib namespace