28 std::vector<BaseDevice> result;
29 for (
const auto &it :
data)
31 result.push_back(it.second.device);
38 auto it =
data.find(name);
45 auto &it =
data[name];
46 if (!it.device.isValid())
49 it.device.setDeviceName(name);
79 data[deviceName].newDeviceCallback = callback;
85 data[deviceName].properties.insert(propertyName);
95 for (
auto &deviceInfo :
data)
103 for (
auto it =
data.begin(); it !=
data.end();)
105 if (it->second.device.getDeviceName() ==
device.getDeviceName())
120 if (!deviceName.isValid() || deviceName.toString() ==
"" || !
isDeviceWatched(deviceName))
129 if (deviceInfo.properties.size() != 0)
132 if (it == deviceInfo.properties.end())
136 static const std::set<std::string> defVectors
138 "defTextVector",
"defNumberVector",
"defSwitchVector",
139 "defLightVector",
"defBLOBVector"
142 if (defVectors.find(root.
tagName()) != defVectors.end())
144 return deviceInfo.device.buildProp(root, errmsg);
147 static const std::set<std::string> setVectors
149 "setTextVector",
"setNumberVector",
"setSwitchVector",
150 "setLightVector",
"setBLOBVector"
153 if (setVectors.find(root.
tagName()) != setVectors.end())
155 return deviceInfo.device.setValue(root, errmsg);
Class to provide basic INDI device functionality.
std::string tagName() const
LilXmlAttribute getAttribute(const char *name) const
std::string toString() const
The class is used to create device instances. Class copying is not allowed. When an object is destroy...
void watchProperty(const std::string &deviceName, const std::string &propertyName)
bool isDeviceWatched(const char *deviceName) const
checks if the device is being watched by something
std::vector< BaseDevice > getDevices() const
DeviceInfo & ensureDeviceByName(const char *name, const std::function< ParentDevice()> &constructor)
std::map< std::string, DeviceInfo > data
BaseDevice getDeviceByName(const char *name)
std::set< std::string > watchedDevice
void watchDevice(const std::string &deviceName)
int processXml(const INDI::LilXmlElement &root, char *errmsg, const std::function< ParentDevice()> &constructor=[] { return ParentDevice(ParentDevice::Valid);})
bool deleteDevice(const BaseDevice &device)
Namespace to encapsulate INDI client, drivers, and mediator classes.