DeviceConfig.h
Go to the documentation of this file.
1#pragma once
2
3#include <map>
4
8
10{
11 class DeviceConfig;
12
13 /**
14 * @brief A base class that does not have Subdevices or Slaves but can be used for Subdevices
15 * or DeviceProfiles
16 */
18 {
19 friend class ConfigParser;
20 friend class DeviceConfig;
21
22 public:
23 DeviceConfigBase(std::string type, std::string name);
24
25 DeviceConfigBase(std::string type,
26 std::string name,
27 std::shared_ptr<DeviceConfigBase> profile);
28
29 ~DeviceConfigBase() = default;
30
31 std::string getType() const;
32
33 std::string getName() const;
34
35 void print(std::stringstream& s, int indention) const override;
36
37 private:
38 std::string type;
39 std::string name;
40 };
41
43 {
44 friend class ConfigParser;
45
46 public:
47 DeviceConfig(std::string type, std::string name);
48
49 DeviceConfig(std::string type, std::string name, std::shared_ptr<DeviceConfigBase> profile);
50
51 ~DeviceConfig() = default;
52
53 SlaveConfig& getSlaveConfig(const std::uint32_t vendorID,
54 const std::uint32_t productCode,
55 const std::uint32_t serialNumber);
56
57 SlaveConfig& getSlaveConfig(const std::string type, const std::string name = "");
58
60
61 DeviceConfigBase& getSubdeviceConfig(const std::string& subDeviceName);
62
63 std::list<std::reference_wrapper<DeviceConfigBase>>
64 getSubDeviceConfigsWithType(const std::string subDeviceType);
65
66 bool checkAllItemsRead(std::vector<std::string>& errors) const override;
67
68 void print(std::stringstream& s, int indention) const override;
69
70 void onParsingFinished() override;
71
72 private:
73 void addSlaveConfig(std::shared_ptr<SlaveConfig> slaveConfig);
74
75 void addSubDeviceConfig(const std::string name,
76 std::shared_ptr<DeviceConfigBase> subDeviceConfig);
77
78 std::list<std::shared_ptr<SlaveConfig>> slaveConfigs;
79 std::map<std::string, std::shared_ptr<DeviceConfigBase>> subDeviceConfigs;
80 };
81} // namespace armarx::control::hardware_config
void print(std::stringstream &s, int indention) const override
Print this configuration.
DeviceConfigBase(std::string type, std::string name)
std::list< std::reference_wrapper< DeviceConfigBase > > getSubDeviceConfigsWithType(const std::string subDeviceType)
bool checkAllItemsRead(std::vector< std::string > &errors) const override
This method is called once the device has read the configuration data it needs.
void onParsingFinished() override
This method is called when the config is completely read form the HardwareConfig file.
void print(std::stringstream &s, int indention) const override
Print this configuration.
DeviceConfigBase & getSubdeviceConfig(const std::string &subDeviceName)
SlaveConfig & getSlaveConfig(const std::uint32_t vendorID, const std::uint32_t productCode, const std::uint32_t serialNumber)
DeviceConfig(std::string type, std::string name)