ImagingTools Core SDK
CDeviceIdBasedConfigurationManagerComp.h
1// SPDX-License-Identifier: LGPL-2.1-or-later OR GPL-2.0-or-later OR GPL-3.0-or-later OR LicenseRef-ImtCore-Commercial
2#pragma once
3
4
5// Qt includes
6#include <QtCore/QMap>
7
8// ACF includes
9#include <ilog/TLoggerCompWrap.h>
10#include <istd/TIFactory.h>
11
12// ImtCore includes
13#include <imtdev/IDeviceConfigurationManager.h>
14#include <imtdev/IDeviceController.h>
15
16
17namespace imtdev
18{
19
20
97 public ilog::CLoggerComponentBase,
98 virtual public IDeviceConfigurationManager,
99 virtual public iser::ISerializable
100{
101public:
102 typedef ilog::CLoggerComponentBase BaseClass;
103
105 I_REGISTER_INTERFACE(IDeviceConfigurationManager);
106 I_REGISTER_INTERFACE(iser::ISerializable);
107 I_REGISTER_INTERFACE(istd::IChangeable);
108 I_ASSIGN(m_deviceControllerCompPtr, "DeviceController", "Device controller for creating and validating configurations", false, "DeviceController");
109 I_ASSIGN_MULTI_0(m_deviceConfigurationFactoryCompPtr, "ConfigurationFactory", "Configuration factories for deserialization", false);
110 I_END_COMPONENT;
111
112 // reimplemented (IDeviceConfigurationManager)
113 virtual DeviceConfigurationPtr GetDeviceConfiguration(const QByteArray& deviceId) const override;
114 virtual bool SetDeviceConfiguration(const QByteArray& deviceId, const iprm::IParamsSet& configuration) override;
115
116 // reimplemented (iser::ISerializable)
117 virtual bool Serialize(iser::IArchive& archive) override;
118
119private:
120 typedef istd::TIFactory<iprm::IParamsSet> ConfigurationFactory;
121
122 struct ConfigurationInfo
123 {
124 QByteArray deviceTypeId;
125 DeviceConfigurationPtr configurationPtr;
126 };
127
128private:
129 DeviceInstancePtr GetDeviceInstance(const QByteArray& deviceId) const;
130 ConfigurationFactory* FindConfigurationFactory(const QByteArray& deviceTypeId) const;
131
132private:
133 I_REF(IDeviceController, m_deviceControllerCompPtr);
134 I_MULTIREF(ConfigurationFactory, m_deviceConfigurationFactoryCompPtr);
135
136 QMap<QByteArray, ConfigurationInfo> m_configurations;
137};
138
139
140} // namespace imtdev
141
142
Interface for managing device-specific configurations.
Common interface for controlling devices.