ImagingTools Core SDK
Classes | Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
imtdev::CDeviceInstanceBase

Base implementation class for device instances. More...

#include <CDeviceInstanceBase.h>

Inheritance diagram for imtdev::CDeviceInstanceBase:
imtdev::IEditableDeviceInstance imtdev::IDeviceInstance imtdev::CCompositeDeviceInstanceBase

Classes

class  VersionInfo
 Internal version information implementation. More...
 

Public Member Functions

 CDeviceInstanceBase ()
 Constructor.
 
 ~CDeviceInstanceBase ()
 Destructor.
 
virtual bool SetIdentifier (IdentifierTypes idType, const QByteArray &id) override
 Set device identifier.
 
virtual bool SetVersion (int versionId, quint32 version, const QString &description) override
 Set version information component.
 
virtual iattr::IAttributesManager * GetAttributesManager () override
 Get attributes manager for modification.
 
virtual QByteArray GetIdentifier (int idType) const override
 Get device identifier.
 
virtual const iser::IVersionInfo & GetVersion () const override
 Get version information.
 
virtual const iattr::IAttributesProvider * GetAttributes () const override
 Get attributes provider (read-only)
 
virtual int GetSupportedOperations () const override
 Get supported operations.
 
virtual bool CopyFrom (const IChangeable &object, CompatibilityMode mode=CM_WITHOUT_REFS) override
 Copy data from another instance.
 
virtual bool ResetData (CompatibilityMode mode=CM_WITHOUT_REFS) override
 Reset device instance data.
 
- Public Member Functions inherited from imtdev::IDeviceInstance
virtual const IDeviceSpecificationGetDeviceSpecification () const =0
 Get device static info associated with device instance.
 

Protected Member Functions

virtual bool EnsureAttributesCreated () const
 Ensure attributes provider is created.
 

Protected Attributes

imod::CModelUpdateBridge m_updateBridge
 Bridge for change notifications (mutable for change tracking in const methods)
 
std::unique_ptr< iattr::IAttributesProvider > m_attributesPtr
 Lazy-created attributes (mutable to allow creation in const GetAttributes())
 

Additional Inherited Members

- Public Types inherited from imtdev::IDeviceInstance
enum  IdentifierTypes { IT_SERIAL }
 Types of device identifiers. More...
 
enum  VersionIds {
  VI_FIRMWARE_VERSION_MAJOR = iser::IVersionInfo::UserVersionId , VI_FIRMWARE_VERSION_MINOR , VI_FIRMWARE_VERSION_PATCH , VI_HARDWARE_VERSION_MAJOR ,
  VI_HARDWARE_VERSION_MINOR , VI_HARDWARE_VERSION_PATCH
}
 Version information identifiers. More...
 

Detailed Description

Base implementation class for device instances.

CDeviceInstanceBase provides a complete, reusable implementation of IEditableDeviceInstance that manages device identifiers, version information, and attributes. This class serves as the foundation for device instance objects throughout the imtdev library.

Key Features:
  • Identifier Management: Storage for multiple identifier types (serial numbers, etc.)
  • Version Tracking: Comprehensive version information (firmware, hardware versions)
  • Attributes Support: Lazy-created attributes provider for dynamic properties
  • Change Notifications: Model update bridge for observer pattern support
  • Serialization: Support for copying and resetting device instance data
Design:
The class uses:
  • QMap for identifier storage (flexible, type-indexed)
  • TModelWrap for version info (automatic change tracking)
  • CModelUpdateBridge for propagating changes to observers
  • Lazy initialization for attributes (created only when needed)
Usage Example:
// Typically obtained from device controller
DeviceInstancePtr pInstance = pController->GetDeviceInstance(deviceId);
// For direct creation in derived classes or special scenarios:
CDeviceInstanceBase deviceInstance;
// Set device identifier
deviceInstance.SetIdentifier(
QByteArray("SN12345"));
// Set version information
deviceInstance.SetVersion(
2,
"Major version");
deviceInstance.SetVersion(
1,
"Minor version");
// Access attributes manager
iattr::IAttributesManager* attrMgr = deviceInstance.GetAttributesManager();
attrMgr->SetAttribute("Temperature", 25.5);
// Read device information
QByteArray serial = deviceInstance.GetIdentifier(IDeviceInstance::IT_SERIAL);
const iser::IVersionInfo& version = deviceInstance.GetVersion();
// Copy to another instance
CDeviceInstanceBase anotherInstance;
anotherInstance.CopyFrom(deviceInstance);
Base implementation class for device instances.
virtual bool SetVersion(int versionId, quint32 version, const QString &description) override
Set version information component.
virtual bool CopyFrom(const IChangeable &object, CompatibilityMode mode=CM_WITHOUT_REFS) override
Copy data from another instance.
virtual iattr::IAttributesManager * GetAttributesManager() override
Get attributes manager for modification.
virtual const iser::IVersionInfo & GetVersion() const override
Get version information.
virtual bool SetIdentifier(IdentifierTypes idType, const QByteArray &id) override
Set device identifier.
virtual QByteArray GetIdentifier(int idType) const override
Get device identifier.
@ IT_SERIAL
Serial number identifier.
@ VI_FIRMWARE_VERSION_MAJOR
Major firmware version number.
@ VI_FIRMWARE_VERSION_MINOR
Minor firmware version number.
Extension:
Derived classes can override EnsureAttributesCreated() to customize attribute provider initialization.
See also
IEditableDeviceInstance
IDeviceInstance
CCompositeDeviceInstanceBase

Definition at line 84 of file CDeviceInstanceBase.h.

Constructor & Destructor Documentation

◆ CDeviceInstanceBase()

imtdev::CDeviceInstanceBase::CDeviceInstanceBase ( )

Constructor.

Initializes the device instance with empty identifiers, version info, and no attributes (created lazily on first access).

◆ ~CDeviceInstanceBase()

imtdev::CDeviceInstanceBase::~CDeviceInstanceBase ( )

Destructor.

Cleans up resources including attributes provider if it was created.

Member Function Documentation

◆ CopyFrom()

virtual bool imtdev::CDeviceInstanceBase::CopyFrom ( const IChangeable &  object,
CompatibilityMode  mode = CM_WITHOUT_REFS 
)
overridevirtual

Copy data from another instance.

Copies identifiers, version info, and attributes from another device instance.

Parameters
objectSource object to copy from
modeCompatibility mode for copying
Returns
true if copy succeeded

Reimplemented in imtdev::CCompositeDeviceInstanceBase.

◆ EnsureAttributesCreated()

virtual bool imtdev::CDeviceInstanceBase::EnsureAttributesCreated ( ) const
protectedvirtual

Ensure attributes provider is created.

Creates the attributes provider if it doesn't exist yet (lazy initialization). Can be overridden by derived classes to customize attribute provider creation.

Returns
true if attributes exist or were created successfully

◆ GetAttributes()

virtual const iattr::IAttributesProvider * imtdev::CDeviceInstanceBase::GetAttributes ( ) const
overridevirtual

Get attributes provider (read-only)

Returns the attributes provider for reading attributes.

Returns
Pointer to attributes provider, or nullptr if not created yet

Implements imtdev::IDeviceInstance.

◆ GetAttributesManager()

virtual iattr::IAttributesManager * imtdev::CDeviceInstanceBase::GetAttributesManager ( )
overridevirtual

Get attributes manager for modification.

Returns the attributes manager, creating it if necessary (lazy initialization).

Returns
Pointer to attributes manager

Implements imtdev::IEditableDeviceInstance.

◆ GetIdentifier()

virtual QByteArray imtdev::CDeviceInstanceBase::GetIdentifier ( int  idType) const
overridevirtual

Get device identifier.

Retrieves the identifier value for the specified type.

Parameters
idTypeType of identifier to retrieve
Returns
Identifier value, or empty array if not set

Implements imtdev::IDeviceInstance.

◆ GetSupportedOperations()

virtual int imtdev::CDeviceInstanceBase::GetSupportedOperations ( ) const
overridevirtual

Get supported operations.

Returns flags indicating which operations are supported (copy, reset, etc.).

Returns
Operation flags

Reimplemented in imtdev::CCompositeDeviceInstanceBase.

◆ GetVersion()

virtual const iser::IVersionInfo & imtdev::CDeviceInstanceBase::GetVersion ( ) const
overridevirtual

Get version information.

Returns the complete version information object containing all version components.

Returns
Reference to version info

Implements imtdev::IDeviceInstance.

◆ ResetData()

virtual bool imtdev::CDeviceInstanceBase::ResetData ( CompatibilityMode  mode = CM_WITHOUT_REFS)
overridevirtual

Reset device instance data.

Clears all identifiers, version information, and attributes.

Parameters
modeCompatibility mode for reset
Returns
true if reset succeeded

Reimplemented in imtdev::CCompositeDeviceInstanceBase.

◆ SetIdentifier()

virtual bool imtdev::CDeviceInstanceBase::SetIdentifier ( IdentifierTypes  idType,
const QByteArray &  id 
)
overridevirtual

Set device identifier.

Stores the identifier value for the specified identifier type. Triggers change notification if the value differs from current.

Parameters
idTypeType of identifier (e.g., IT_SERIAL)
idIdentifier value
Returns
true (always succeeds)

Implements imtdev::IEditableDeviceInstance.

◆ SetVersion()

virtual bool imtdev::CDeviceInstanceBase::SetVersion ( int  versionId,
quint32  version,
const QString &  description 
)
overridevirtual

Set version information component.

Sets a specific version component (e.g., firmware major version) with its value and description.

Parameters
versionIdVersion component identifier
versionVersion number
descriptionHuman-readable description
Returns
true if set successfully

Implements imtdev::IEditableDeviceInstance.