25 #ifndef DEVICE_STORE_HPP__
26 #define DEVICE_STORE_HPP__
35 #include <unordered_map>
37 #include <ccut/yml.hpp>
39 #include "DeviceBase.hpp"
40 #include "platform/PlatformFactory.hpp"
54 typedef std::shared_ptr<DeviceStore> Shared;
62 size_t probeDevices(
const PlatformBase::Shared &platform);
78 DeviceBase::Shared
getDevice(
const DeviceId &address)
const;
84 std::shared_ptr<T>
getDevice(
const DeviceId &address)
86 std::shared_ptr<T> ret{std::dynamic_pointer_cast<T>(
getDevice(address))};
89 throw Exception(ErrorCode::InvalidArguments,
90 "no such device: " + address);
118 DeviceId
getAlias(
const std::string &alias)
const;
128 bool addAlias(
const std::string &alias,
129 const DeviceId &deviceId,
130 bool override =
true);
140 void loadAlias(
const ccut::yml::NodeRef &aliasNode,
141 const ccut::yml::Parser *parser =
nullptr);
144 std::map<DeviceId, DeviceBase::Shared> m_devices;
145 std::unordered_map<std::string, DeviceId> m_alias;
146 mutable std::mutex m_devicesMutex;
Exception thrown by MotionController in case of issues with command.
DeviceId getAlias(const std::string &alias) const
Get the given alias.
std::shared_ptr< T > getDevice(const DeviceId &address)
Convenience function to get a typed device.
DeviceBase::Shared getDevice(const DeviceId &address) const
Get the Device with specified address.
void removeAlias(const std::string &alias)
remove an alias
bool addAlias(const std::string &alias, const DeviceId &deviceId, bool override=true)
add an alias
size_t probeDevices(const PlatformBase::Shared &platform)
Get devices generated by platform and store them.
std::set< std::string > getAliasList() const
Get current Alias list.
std::set< DeviceId > getDeviceList() const
Get the complete list of existing devices.
size_t getDeviceCount() const
Get the number of devices.
void loadAlias(const ccut::yml::NodeRef &aliasNode, const ccut::yml::Parser *parser=nullptr)
load alias from yml node
DeviceType
List of possible device types supported.
main motion-lib namespace