6#include <QtCore/QTimer>
9#include <icomp/CComponentBase.h>
10#include <imod/CMultiModelDispatcherBase.h>
11#include <ilog/TLoggerCompWrap.h>
12#include <imod/TModelWrap.h>
13#include <imod/IModel.h>
14#include <imod/CModelUpdateBridge.h>
17#include <imtbase/CCollectionInfo.h>
18#include <imtbase/TModelUpdateBinder.h>
19#include <imtdev/IDeviceController.h>
20#include <imtdev/IDeviceInstance.h>
21#include <imtdev/IDeviceSpecification.h>
102 public ilog::CLoggerComponentBase,
103 public imod::CMultiModelDispatcherBase,
109 typedef ilog::CLoggerComponentBase BaseClass;
112 I_REGISTER_SUBELEMENT(DeviceTypeList);
114 I_REGISTER_SUBELEMENT_INTERFACE(DeviceTypeList, imod::IModel, ExtractDeviceTypeList);
115 I_REGISTER_SUBELEMENT_INTERFACE(DeviceTypeList, istd::IChangeable, ExtractDeviceTypeList);
116 I_REGISTER_SUBELEMENT(DeviceList);
118 I_REGISTER_SUBELEMENT_INTERFACE(DeviceList, imod::IModel, ExtractDeviceList);
119 I_REGISTER_SUBELEMENT_INTERFACE(DeviceList, istd::IChangeable, ExtractDeviceList);
120 I_REGISTER_SUBELEMENT(DeviceStateProvider);
121 I_REGISTER_SUBELEMENT_INTERFACE(DeviceStateProvider,
IDeviceStateProvider, ExtractDeviceStateProvider);
122 I_REGISTER_SUBELEMENT_INTERFACE(DeviceStateProvider, imod::IModel, ExtractDeviceStateProvider);
123 I_REGISTER_SUBELEMENT_INTERFACE(DeviceStateProvider, istd::IChangeable, ExtractDeviceStateProvider);
124 I_REGISTER_SUBELEMENT(OverriddenDeviceInfo);
126 I_REGISTER_SUBELEMENT_INTERFACE(OverriddenDeviceInfo, imod::IModel, ExtractOverriddenDeviceInfo);
127 I_REGISTER_SUBELEMENT_INTERFACE(OverriddenDeviceInfo, istd::IChangeable, ExtractOverriddenDeviceInfo);
129 I_ASSIGN_MULTI_0(m_deviceControllerCompPtr,
"DeviceControllers",
"Device controllers",
false);
130 I_ASSIGN_TO(m_deviceEnumeratorCompPtr, m_deviceControllerCompPtr,
true);
131 I_ASSIGN(m_enableAttrPtr,
"EnableEnumerationControl",
"Enable automatic enumeration control if true",
true,
false);
132 I_ASSIGN(m_intervalAttrPtr,
"EnumerationInterval",
"Interval between starts of successive enumeration cycles (secs)\n0 - Continuous enumeration",
true, 5);
138 virtual const QByteArrayList& GetSupportedDeviceTypeIds()
const override;
139 virtual const IDeviceSpecification* GetDeviceStaticInfo(
const QByteArray& deviceTypeId)
const override;
141 virtual bool SetDeviceInstanceName(
const QByteArray& deviceId,
const QString& name)
override;
142 virtual bool SetDeviceInstanceDescription(
const QByteArray& deviceId,
const QString& description)
override;
143 virtual DeviceInstancePtr GetDeviceInstance(
const QByteArray& deviceId)
const override;
145 virtual imtdev::DeviceAccessorPtr OpenDevice(
146 const QByteArray& deviceId,
147 const iprm::IParamsSet* paramsPtr)
override;
148 virtual bool CloseDevice(
const QByteArray& deviceId)
override;
152 virtual void CancelEnumeration()
override;
155 virtual void OnEnumerationResult(
161 virtual void OnModelChanged(
int modelId,
const istd::IChangeable::ChangeSet& changeSet)
override;
164 virtual void OnComponentCreated()
override;
165 virtual void OnComponentDestroyed()
override;
168 virtual void OnIntervalTimer();
171 virtual void StartEnumeration();
175 virtual void UpdateDeviceTypeIdList();
176 virtual void UpdateDeviceList();
177 virtual IDeviceController* FindDeviceController(
const QByteArray& deviceId)
const;
178 virtual QByteArray GetDeviceTypeId(
const QByteArray& deviceId)
const;
180 template <
class InteraceType>
183 return &parent.m_deviceTypeList;
186 template <
class InteraceType>
189 return &parent.m_deviceList;
192 template <
class InteraceType>
195 return &parent.m_deviceStateProvider;
198 template <
class InteraceType>
201 return &parent.m_overriddenDeviceInfo;
207 MI_DEVICE_LIST_BASE = 0
213 DeviceStateProvider();
217 virtual DeviceState GetDeviceState(
const QByteArray& deviceId)
const override;
226 I_ATTR(
bool, m_enableAttrPtr);
227 I_ATTR(
int, m_intervalAttrPtr);
229 QByteArrayList m_supportedDeviceTypeIds;
231 QMap<QByteArray, IDeviceController*> m_deviceControllerMap;
233 imod::TModelWrap<imtbase::CCollectionInfo> m_deviceTypeList;
234 imod::TModelWrap<imtbase::CCollectionInfo> m_deviceList;
235 imod::TModelWrap<DeviceStateProvider> m_deviceStateProvider;
236 imod::TModelWrap<imtbase::CCollectionInfo> m_overriddenDeviceInfo;
238 imod::CModelUpdateBridge m_deviceStateProviderUpdateBridge;
240 int m_enumeratorIndex;
241 QTimer m_intervalTimer;
245 void OnOverriddenDeviceInfoUpdated(
const istd::IChangeable::ChangeSet& changeset,
const imtbase::ICollectionInfo* objectPtr);
Proxy controller component aggregating multiple device controllers.
Common interface for controlling devices.
Callback interface for receiving enumeration results.
EnumerationResult
Enumeration result codes.
Interface for asynchronous device enumeration.
StartResult
Start enumeration result codes.
Interface for describing static information about a device type/class.
Interface for tracking device connection states.
DeviceState
Runtime state of a device.