//-----------------------------------------------------------------------------
// (C) Copyright 2005 - 2021 by MATRIX VISION GmbH
//
// This software is provided by MATRIX VISION GmbH "as is"
// and any express or implied warranties, including, but not limited to, the
// implied warranties of merchantability and fitness for a particular purpose
// are disclaimed.
//
// In no event shall MATRIX VISION GmbH be liable for any direct,
// indirect, incidental, special, exemplary, or consequential damages
// (including, but not limited to, procurement of substitute goods or services;
// loss of use, data, or profits; or business interruption) however caused and
// on any theory of liability, whether in contract, strict liability, or tort
// (including negligence or otherwise) arising in any way out of the use of
// this software, even if advised of the possibility of such damage.
//-----------------------------------------------------------------------------
#ifndef mvIMPACT_acquire_GenICam_CPP_autogen_h
#ifndef DOXYGEN_SHOULD_SKIP_THIS
#   define mvIMPACT_acquire_GenICam_CPP_autogen_h mvIMPACT_acquire_GenICam_CPP_autogen_h
#endif // #ifndef DOXYGEN_SHOULD_SKIP_THIS
//-----------------------------------------------------------------------------
// AUTOMATICALLY GENERATED CODE. DO NOT EDIT!!!

#include <mvIMPACT_CPP/mvIMPACT_acquire.h>

#ifdef _MSC_VER // is Microsoft compiler?
#   pragma warning( push )
#   if _MSC_VER < 1300 // is 'old' VC 6 compiler?
#       pragma warning( disable : 4786 ) // 'identifier was truncated to '255' characters in the debug information'
#       define __FUNCTION__ "No function name information as the __FUNCTION__ macro is not supported by this(VC 6) compiler"
#       pragma message( "WARNING: This header(" __FILE__ ") uses the __FUNCTION__ macro, which is not supported by this compiler. A default definition(\"" __FUNCTION__ "\") will be used!" )
#       pragma message( "WARNING: This header(" __FILE__ ") uses inheritance for exception classes. However this compiler can't handle this correctly. Trying to catch a specific exception by writing a catch block for a base class will not work!" )
#   endif // #if _MSC_VER < 1300
#   pragma warning( disable : 4512 ) // 'assignment operator could not be generated' (reason: assignment operators declared 'private' but not implemented)
#endif // #ifdef _MSC_VER

namespace mvIMPACT
{
namespace acquire
{
namespace GenICam
{

/// \defgroup GenICamInterface GenICam interface layout
/// \brief Classes and functions that will be available if the device is used
/// with the \a GenICam interface layout.
/**
 *  This group contains classes and functions that will be available if the device is used
 *  with the <b>mvIMPACT::acquire::dilGenICam</b> interface layout.
 */

/** \defgroup GenICamInterfaceDevice GenICam interface layout(device)
 * \brief Classes and functions that will be available if the device is used
 * with the \a GenICam interface layout.
 *
 *  This group contains classes and functions that will be available for a device used
 *  with the <b>mvIMPACT::acquire::dilGenICam</b> interface layout.
 *
 * \ingroup GenICamInterface
 */

/** \defgroup GenICamInterfaceProducer GenICam interface layout(producer)
 * \brief Classes and functions that will be available if the device is used
 * with the \a GenICam interface layout.
 *
 *  This group contains classes and functions that will be available for a \a GenICam \a GenTL \a producer
 *
 * \ingroup GenICamInterface
 */

//-----------------------------------------------------------------------------
/// \brief Category for device information and control.
/**
 *  A category for device information and control.
 * \ingroup GenICamInterfaceDevice
 */
class DeviceControl
//-----------------------------------------------------------------------------
{
public:
    /// \brief Constructs a new <b>mvIMPACT::acquire::GenICam::DeviceControl</b> object.
    explicit DeviceControl(
        /// [in] A pointer to a <b>mvIMPACT::acquire::Device</b> object obtained from a <b>mvIMPACT::acquire::DeviceManager</b> object.
        mvIMPACT::acquire::Device* pDev,
        /// [in] The name of the driver internal setting to access with this instance.
        /// A list of valid setting names can be obtained by a call to
        /// <b>mvIMPACT::acquire::FunctionInterface::getAvailableSettings</b>, new
        /// settings can be created with the function
        /// <b>mvIMPACT::acquire::FunctionInterface::createSetting</b>
        const std::string& settingName = "Base" ) :
        deviceType(),
        deviceScanType(),
        deviceVendorName(),
        deviceModelName(),
        deviceFamilyName(),
        deviceManufacturerInfo(),
        deviceVersion(),
        deviceFirmwareVersion(),
        mvDeviceFirmwareBuildDate(),
        deviceSerialNumber(),
        deviceID(),
        deviceUserID(),
        deviceSFNCVersionMajor(),
        deviceSFNCVersionMinor(),
        deviceSFNCVersionSubMinor(),
        deviceManifestEntrySelector(),
        deviceManifestXMLMajorVersion(),
        deviceManifestXMLMinorVersion(),
        deviceManifestXMLSubMinorVersion(),
        deviceManifestSchemaMajorVersion(),
        deviceManifestSchemaMinorVersion(),
        deviceManifestPrimaryURL(),
        deviceManifestSecondaryURL(),
        deviceTLType(),
        deviceTLVersionMajor(),
        deviceTLVersionMinor(),
        deviceTLVersionSubMinor(),
        deviceGenCPVersionMajor(),
        deviceGenCPVersionMinor(),
        deviceMaxThroughput(),
        deviceConnectionSelector(),
        deviceConnectionSpeed(),
        deviceConnectionStatus(),
        deviceLinkSelector(),
        deviceLinkSpeed(),
        deviceLinkThroughputLimitMode(),
        deviceLinkThroughputLimit(),
        deviceLinkConnectionCount(),
        deviceLinkHeartbeatMode(),
        deviceLinkHeartbeatTimeout(),
        deviceLinkCommandTimeout(),
        deviceStreamChannelCount(),
        deviceStreamChannelSelector(),
        deviceStreamChannelType(),
        deviceStreamChannelLink(),
        deviceStreamChannelEndianness(),
        deviceStreamChannelPacketSize(),
        deviceEventChannelCount(),
        deviceMessageChannelCount(),
        deviceCharacterSet(),
        deviceReset(),
        deviceIndicatorMode(),
        deviceFeaturePersistenceStart(),
        deviceFeaturePersistenceEnd(),
        deviceRegistersStreamingStart(),
        deviceRegistersStreamingEnd(),
        deviceRegistersCheck(),
        deviceRegistersValid(),
        mvDeviceRegistersStatus(),
        deviceRegistersEndianness(),
        deviceTemperatureSelector(),
        deviceTemperature(),
        deviceClockSelector(),
        deviceClockFrequency(),
        deviceSerialPortSelector(),
        deviceSerialPortBaudRate(),
        timestamp(),
        timestampReset(),
        timestampLatch(),
        timestampLatchValue(),
        mvDeviceTemperatureRaw(),
        mvDeviceTemperatureUpperLimit(),
        mvDeviceTemperatureLowerLimit(),
        mvDeviceTemperatureLimitHysteresis(),
        mvDeviceClockFrequency(),
        mvDeviceSensorColorMode(),
        mvDeviceFPGAVersion(),
        mvDeviceFirmwareSource(),
        mvDeviceProcessingUnitSelector(),
        mvDeviceProcessingUnit(),
        mvDeviceStatusLEDEnable(),
        mvDevicePowerMode(),
        mvDeviceStandbyTimeoutEnable(),
        mvDeviceStandbyTimeout(),
        mvDeviceFirmwareHashCode(),
        mvCalculateHashCode(),
        mvDeviceFirmwareHashAlgorithm(),
        mvDeviceLaserCurrent(),
        mvTimestampPPSSync(),
        mvTimestampPPSTriggerEdge(),
        mvTimestampPPSPulsesMissed(),
        mvTimestampPPSStatus(),
        mvTimestampResetValue(),
        mvTemperatureState(),
        mvTemperatureStateCriticalThreshold()
    {
        pDev->validateInterfaceLayout( dilGenICam );
        mvIMPACT::acquire::DeviceComponentLocator locator( pDev, mvIMPACT::acquire::dltSetting, settingName );
        locator.bindSearchBase( locator.searchbase_id(), "Camera/GenICam" );
        locator.bindComponent( deviceType, "DeviceType" );
        if( !deviceType.isValid() )
        {
            locator.bindComponent( deviceType, "GevDeviceClass" );
        }
        locator.bindComponent( deviceScanType, "DeviceScanType" );
        locator.bindComponent( deviceVendorName, "DeviceVendorName" );
        locator.bindComponent( deviceModelName, "DeviceModelName" );
        locator.bindComponent( deviceFamilyName, "DeviceFamilyName" );
        locator.bindComponent( deviceManufacturerInfo, "DeviceManufacturerInfo" );
        locator.bindComponent( deviceVersion, "DeviceVersion" );
        locator.bindComponent( deviceFirmwareVersion, "DeviceFirmwareVersion" );
        locator.bindComponent( mvDeviceFirmwareBuildDate, "mvDeviceFirmwareBuildDate" );
        locator.bindComponent( deviceSerialNumber, "DeviceSerialNumber" );
        if( !deviceSerialNumber.isValid() )
        {
            locator.bindComponent( deviceSerialNumber, "DeviceID" );
        }
        locator.bindComponent( deviceID, "DeviceID" );
        locator.bindComponent( deviceUserID, "DeviceUserID" );
        locator.bindComponent( deviceSFNCVersionMajor, "DeviceSFNCVersionMajor" );
        locator.bindComponent( deviceSFNCVersionMinor, "DeviceSFNCVersionMinor" );
        locator.bindComponent( deviceSFNCVersionSubMinor, "DeviceSFNCVersionSubMinor" );
        locator.bindComponent( deviceManifestEntrySelector, "DeviceManifestEntrySelector" );
        locator.bindComponent( deviceManifestXMLMajorVersion, "DeviceManifestXMLMajorVersion" );
        locator.bindComponent( deviceManifestXMLMinorVersion, "DeviceManifestXMLMinorVersion" );
        locator.bindComponent( deviceManifestXMLSubMinorVersion, "DeviceManifestXMLSubMinorVersion" );
        locator.bindComponent( deviceManifestSchemaMajorVersion, "DeviceManifestSchemaMajorVersion" );
        locator.bindComponent( deviceManifestSchemaMinorVersion, "DeviceManifestSchemaMinorVersion" );
        locator.bindComponent( deviceManifestPrimaryURL, "DeviceManifestPrimaryURL" );
        locator.bindComponent( deviceManifestSecondaryURL, "DeviceManifestSecondaryURL" );
        locator.bindComponent( deviceTLType, "DeviceTLType" );
        locator.bindComponent( deviceTLVersionMajor, "DeviceTLVersionMajor" );
        if( !deviceTLVersionMajor.isValid() )
        {
            locator.bindComponent( deviceTLVersionMajor, "GevVersionMajor" );
        }
        locator.bindComponent( deviceTLVersionMinor, "DeviceTLVersionMinor" );
        if( !deviceTLVersionMinor.isValid() )
        {
            locator.bindComponent( deviceTLVersionMinor, "GevVersionMinor" );
        }
        locator.bindComponent( deviceTLVersionSubMinor, "DeviceTLVersionSubMinor" );
        locator.bindComponent( deviceGenCPVersionMajor, "DeviceGenCPVersionMajor" );
        locator.bindComponent( deviceGenCPVersionMinor, "DeviceGenCPVersionMinor" );
        locator.bindComponent( deviceMaxThroughput, "DeviceMaxThroughput" );
        locator.bindComponent( deviceConnectionSelector, "DeviceConnectionSelector" );
        locator.bindComponent( deviceConnectionSpeed, "DeviceConnectionSpeed" );
        locator.bindComponent( deviceConnectionStatus, "DeviceConnectionStatus" );
        locator.bindComponent( deviceLinkSelector, "DeviceLinkSelector" );
        locator.bindComponent( deviceLinkSpeed, "DeviceLinkSpeed" );
        locator.bindComponent( deviceLinkThroughputLimitMode, "DeviceLinkThroughputLimitMode" );
        locator.bindComponent( deviceLinkThroughputLimit, "DeviceLinkThroughputLimit" );
        locator.bindComponent( deviceLinkConnectionCount, "DeviceLinkConnectionCount" );
        locator.bindComponent( deviceLinkHeartbeatMode, "DeviceLinkHeartbeatMode" );
        locator.bindComponent( deviceLinkHeartbeatTimeout, "DeviceLinkHeartbeatTimeout" );
        if( !deviceLinkHeartbeatTimeout.isValid() )
        {
            locator.bindComponent( deviceLinkHeartbeatTimeout, "GevHeartbeatTimeout" );
        }
        locator.bindComponent( deviceLinkCommandTimeout, "DeviceLinkCommandTimeout" );
        locator.bindComponent( deviceStreamChannelCount, "DeviceStreamChannelCount" );
        if( !deviceStreamChannelCount.isValid() )
        {
            locator.bindComponent( deviceStreamChannelCount, "GevStreamChannelCount" );
        }
        locator.bindComponent( deviceStreamChannelSelector, "DeviceStreamChannelSelector" );
        locator.bindComponent( deviceStreamChannelType, "DeviceStreamChannelType" );
        locator.bindComponent( deviceStreamChannelLink, "DeviceStreamChannelLink" );
        locator.bindComponent( deviceStreamChannelEndianness, "DeviceStreamChannelEndianness" );
        locator.bindComponent( deviceStreamChannelPacketSize, "DeviceStreamChannelPacketSize" );
        locator.bindComponent( deviceEventChannelCount, "DeviceEventChannelCount" );
        if( !deviceEventChannelCount.isValid() )
        {
            locator.bindComponent( deviceEventChannelCount, "GevMessageChannelCount" );
        }
        locator.bindComponent( deviceMessageChannelCount, "DeviceMessageChannelCount" );
        if( !deviceMessageChannelCount.isValid() )
        {
            locator.bindComponent( deviceMessageChannelCount, "GevMessageChannelCount" );
        }
        locator.bindComponent( deviceCharacterSet, "DeviceCharacterSet" );
        if( !deviceCharacterSet.isValid() )
        {
            locator.bindComponent( deviceCharacterSet, "GevDeviceModeCharacterSet" );
        }
        locator.bindComponent( deviceReset, "DeviceReset@i" );
        locator.bindComponent( deviceIndicatorMode, "DeviceIndicatorMode" );
        locator.bindComponent( deviceFeaturePersistenceStart, "DeviceFeaturePersistenceStart@i" );
        locator.bindComponent( deviceFeaturePersistenceEnd, "DeviceFeaturePersistenceEnd@i" );
        locator.bindComponent( deviceRegistersStreamingStart, "DeviceRegistersStreamingStart@i" );
        locator.bindComponent( deviceRegistersStreamingEnd, "DeviceRegistersStreamingEnd@i" );
        locator.bindComponent( deviceRegistersCheck, "DeviceRegistersCheck@i" );
        locator.bindComponent( deviceRegistersValid, "DeviceRegistersValid" );
        locator.bindComponent( mvDeviceRegistersStatus, "mvDeviceRegistersStatus" );
        locator.bindComponent( deviceRegistersEndianness, "DeviceRegistersEndianness" );
        if( !deviceRegistersEndianness.isValid() )
        {
            locator.bindComponent( deviceRegistersEndianness, "GevDeviceModeIsBigEndian" );
        }
        locator.bindComponent( deviceTemperatureSelector, "DeviceTemperatureSelector" );
        locator.bindComponent( deviceTemperature, "DeviceTemperature" );
        locator.bindComponent( deviceClockSelector, "DeviceClockSelector" );
        locator.bindComponent( deviceClockFrequency, "DeviceClockFrequency" );
        locator.bindComponent( deviceSerialPortSelector, "DeviceSerialPortSelector" );
        locator.bindComponent( deviceSerialPortBaudRate, "DeviceSerialPortBaudRate" );
        locator.bindComponent( timestamp, "Timestamp" );
        locator.bindComponent( timestampReset, "TimestampReset@i" );
        if( !timestampReset.isValid() )
        {
            locator.bindComponent( timestampReset, "GevTimestampControlReset@i" );
        }
        locator.bindComponent( timestampLatch, "TimestampLatch@i" );
        if( !timestampLatch.isValid() )
        {
            locator.bindComponent( timestampLatch, "GevTimestampControlLatch@i" );
        }
        locator.bindComponent( timestampLatchValue, "TimestampLatchValue" );
        if( !timestampLatchValue.isValid() )
        {
            locator.bindComponent( timestampLatchValue, "GevTimestampValue" );
        }
        locator.bindComponent( mvDeviceTemperatureRaw, "mvDeviceTemperatureRaw" );
        locator.bindComponent( mvDeviceTemperatureUpperLimit, "mvDeviceTemperatureUpperLimit" );
        locator.bindComponent( mvDeviceTemperatureLowerLimit, "mvDeviceTemperatureLowerLimit" );
        locator.bindComponent( mvDeviceTemperatureLimitHysteresis, "mvDeviceTemperatureLimitHysteresis" );
        locator.bindComponent( mvDeviceClockFrequency, "mvDeviceClockFrequency" );
        locator.bindComponent( mvDeviceSensorColorMode, "mvDeviceSensorColorMode" );
        locator.bindComponent( mvDeviceFPGAVersion, "mvDeviceFPGAVersion" );
        locator.bindComponent( mvDeviceFirmwareSource, "mvDeviceFirmwareSource" );
        if( !mvDeviceFirmwareSource.isValid() )
        {
            locator.bindComponent( mvDeviceFirmwareSource, "FirmwareSource" );
        }
        locator.bindComponent( mvDeviceProcessingUnitSelector, "mvDeviceProcessingUnitSelector" );
        locator.bindComponent( mvDeviceProcessingUnit, "mvDeviceProcessingUnit" );
        locator.bindComponent( mvDeviceStatusLEDEnable, "mvDeviceStatusLEDEnable" );
        locator.bindComponent( mvDevicePowerMode, "mvDevicePowerMode" );
        locator.bindComponent( mvDeviceStandbyTimeoutEnable, "mvDeviceStandbyTimeoutEnable" );
        locator.bindComponent( mvDeviceStandbyTimeout, "mvDeviceStandbyTimeout" );
        locator.bindComponent( mvDeviceFirmwareHashCode, "mvDeviceFirmwareHashCode" );
        locator.bindComponent( mvCalculateHashCode, "mvCalculateHashCode@i" );
        locator.bindComponent( mvDeviceFirmwareHashAlgorithm, "mvDeviceFirmwareHashAlgorithm" );
        locator.bindComponent( mvDeviceLaserCurrent, "mvDeviceLaserCurrent" );
        locator.bindComponent( mvTimestampPPSSync, "mvTimestampPPSSync" );
        if( !mvTimestampPPSSync.isValid() )
        {
            locator.bindComponent( mvTimestampPPSSync, "mvGevTimestampPPSSync" );
        }
        locator.bindComponent( mvTimestampPPSTriggerEdge, "mvTimestampPPSTriggerEdge" );
        locator.bindComponent( mvTimestampPPSPulsesMissed, "mvTimestampPPSPulsesMissed" );
        locator.bindComponent( mvTimestampPPSStatus, "mvTimestampPPSStatus" );
        locator.bindComponent( mvTimestampResetValue, "mvTimestampResetValue" );
        locator.bindComponent( mvTemperatureState, "mvTemperatureState" );
        locator.bindComponent( mvTemperatureStateCriticalThreshold, "mvTemperatureStateCriticalThreshold" );
    }
    // *INDENT-OFF*
    PYTHON_OR_JAVA_ONLY( %immutable; )
    // *INDENT-ON*
    /// \brief An enumerated integer property. Returns the device type.
    /**
     *  Returns the device type.
     *
     *  The following string values might be valid for this feature:
     *  - \b Transmitter (Display string: 'Transmitter'): Data stream transmitter device.
     *  - \b Receiver (Display string: 'Receiver'): Data stream receiver device.
     *  - \b Transceiver (Display string: 'Transceiver'): Data stream receiver and transmitter device.
     *  - \b Peripheral (Display string: 'Peripheral'): Controllable device (with no data stream handling).
     *  - \b Mixed (Display string: 'Mixed'): This enumeration value indicates that this is a device for a mixed protocol.
     *  - \b Custom (Display string: 'Custom'): This enumeration value indicates that this is a device for a custom protocol.
     *  - \b GEV (Display string: 'GigE Vision'): This enumeration value indicates that this is a device for the GigE Vision protocol.
     *  - \b CameraLink (Display string: 'CameraLink'): This enumeration value indicates that this is a device for the CameraLink protocol.
     *  - \b CoaXPress (Display string: 'CoaXPress'): This enumeration value indicates that this is a device for the CoaXPress protocol.
     *  - \b CameraLinkHS (Display string: 'CameraLink HS'): This enumeration value indicates that this is a device for the CameraLink HS protocol.
     *  - \b U3V (Display string: 'USB3 Vision'): This enumeration value indicates that this is a device for the USB3 Vision protocol.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 deviceType;
    /// \brief An enumerated integer property. Scan type of the sensor of the device.
    /**
     *  Scan type of the sensor of the device.
     *
     *  The following string values might be valid for this feature:
     *  - \b Areascan (Display string: 'Areascan'): 2D sensor.
     *  - \b Linescan (Display string: 'Linescan'): 1D sensor.
     *  - \b Areascan3D (Display string: 'Areascan 3D'): device outputs 2D range image.
     *  - \b Linescan3D (Display string: 'Linescan 3D'): device outputs 1D range image.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 deviceScanType;
    /// \brief A string property. Name of the manufacturer of the device.
    /**
     *  Name of the manufacturer of the device.
     */
    PropertyS deviceVendorName;
    /// \brief A string property. Model of the device.
    /**
     *  Model of the device.
     */
    PropertyS deviceModelName;
    /// \brief A string property. Identifier of the product family of the device.
    /**
     *  Identifier of the product family of the device.
     */
    PropertyS deviceFamilyName;
    /// \brief A string property. Manufacturer information about the device.
    /**
     *  Manufacturer information about the device.
     */
    PropertyS deviceManufacturerInfo;
    /// \brief A string property. Version of the device.
    /**
     *  Version of the device.
     */
    PropertyS deviceVersion;
    /// \brief A string property. Version of the firmware in the device.
    /**
     *  Version of the firmware in the device.
     */
    PropertyS deviceFirmwareVersion;
    /// \brief A string property. The build time and date of the firmware
    /**
     *  The build time and date of the firmware
     */
    PropertyS mvDeviceFirmwareBuildDate;
    /// \brief A string property. Device's serial number.
    /**
     *  Device's serial number. This string is a unique identifier of the device.
     */
    PropertyS deviceSerialNumber;
    /// \brief A string property. This feature is deprecated (See DeviceSerialNumber).
    /**
     *  \deprecated
     *  This feature is deprecated (See DeviceSerialNumber). It was representing the Device unique identifier (serial number).
     */
    PropertyS deviceID;
    /// \brief A string property. User-programmable device identifier.
    /**
     *  User-programmable device identifier.
     */
    PropertyS deviceUserID;
    /// \brief An integer property. Major version of the Standard Features Naming Convention that was used to create the device's GenICam XML.
    /**
     *  Major version of the Standard Features Naming Convention that was used to create the device's GenICam XML.
     */
    PropertyI64 deviceSFNCVersionMajor;
    /// \brief An integer property. Minor version of the Standard Features Naming Convention that was used to create the device's GenICam XML.
    /**
     *  Minor version of the Standard Features Naming Convention that was used to create the device's GenICam XML.
     */
    PropertyI64 deviceSFNCVersionMinor;
    /// \brief An integer property. Sub minor version of Standard Features Naming Convention that was used to create the device's GenICam XML.
    /**
     *  Sub minor version of Standard Features Naming Convention that was used to create the device's GenICam XML.
     */
    PropertyI64 deviceSFNCVersionSubMinor;
    /// \brief An integer property. Selects the manifest entry to reference.
    /**
     *  Selects the manifest entry to reference.
     */
    PropertyI64 deviceManifestEntrySelector;
    /// \brief An integer property. Indicates the major version number of the GenICam XML file of the selected manifest entry.
    /**
     *  Indicates the major version number of the GenICam XML file of the selected manifest entry.
     */
    PropertyI64 deviceManifestXMLMajorVersion;
    /// \brief An integer property. Indicates the minor version number of the GenICam XML file of the selected manifest entry.
    /**
     *  Indicates the minor version number of the GenICam XML file of the selected manifest entry.
     */
    PropertyI64 deviceManifestXMLMinorVersion;
    /// \brief An integer property. Indicates the subminor version number of the GenICam XML file of the selected manifest entry.
    /**
     *  Indicates the subminor version number of the GenICam XML file of the selected manifest entry.
     */
    PropertyI64 deviceManifestXMLSubMinorVersion;
    /// \brief An integer property. Indicates the major version number of the schema file of the selected manifest entry.
    /**
     *  Indicates the major version number of the schema file of the selected manifest entry.
     */
    PropertyI64 deviceManifestSchemaMajorVersion;
    /// \brief An integer property. Indicates the minor version number of the schema file of the selected manifest entry.
    /**
     *  Indicates the minor version number of the schema file of the selected manifest entry.
     */
    PropertyI64 deviceManifestSchemaMinorVersion;
    /// \brief A string property. Indicates the first URL to the GenICam XML device description file of the selected manifest entry.
    /**
     *  Indicates the first URL to the GenICam XML device description file of the selected manifest entry.
     */
    PropertyS deviceManifestPrimaryURL;
    /// \brief A string property. Indicates the second URL to the GenICam XML device description file of the selected manifest entry.
    /**
     *  Indicates the second URL to the GenICam XML device description file of the selected manifest entry.
     */
    PropertyS deviceManifestSecondaryURL;
    /// \brief An enumerated integer property. Transport Layer type of the device.
    /**
     *  Transport Layer type of the device.
     *
     *  The following string values might be valid for this feature:
     *  - \b GigEVision (Display string: 'GigE Vision'): GigE Vision.
     *  - \b CameraLink (Display string: 'Camera Link'): Camera Link.
     *  - \b CameraLinkHS (Display string: 'Camera Link HS'): Camera Link High Speed.
     *  - \b CoaXPress (Display string: 'CoaXPress'): CoaXPress.
     *  - \b USB3Vision (Display string: 'USB3 Vision'): USB3 Vision.
     *  - \b Custom (Display string: 'Custom'): Custom Transport Layer.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 deviceTLType;
    /// \brief An integer property. Major version of the Transport Layer of the device.
    /**
     *  Major version of the Transport Layer of the device.
     */
    PropertyI64 deviceTLVersionMajor;
    /// \brief An integer property. Minor version of the Transport Layer of the device.
    /**
     *  Minor version of the Transport Layer of the device.
     */
    PropertyI64 deviceTLVersionMinor;
    /// \brief An integer property. Sub minor version of the Transport Layer of the device.
    /**
     *  Sub minor version of the Transport Layer of the device.
     */
    PropertyI64 deviceTLVersionSubMinor;
    /// \brief An integer property. Major version of the GenCP protocol supported by the device.
    /**
     *  Major version of the GenCP protocol supported by the device.
     */
    PropertyI64 deviceGenCPVersionMajor;
    /// \brief An integer property. Minor version of the GenCP protocol supported by the device.
    /**
     *  Minor version of the GenCP protocol supported by the device.
     */
    PropertyI64 deviceGenCPVersionMinor;
    /// \brief An integer property. Maximum bandwidth of the data that can be streamed out of the device.
    /**
     *  Maximum bandwidth of the data that can be streamed out of the device. This can be used to estimate if the physical connection(s) can sustain transfer of free-running images from the camera at its maximum speed.
     */
    PropertyI64 deviceMaxThroughput;
    /// \brief An integer property. Selects which Connection of the device to control.
    /**
     *  Selects which Connection of the device to control.
     */
    PropertyI64 deviceConnectionSelector;
    /// \brief An integer property. Indicates the speed of transmission of the specified Connection.
    /**
     *  Indicates the speed of transmission of the specified Connection
     */
    PropertyI64 deviceConnectionSpeed;
    /// \brief An enumerated integer property. Indicates the status of the specified Connection.
    /**
     *  Indicates the status of the specified Connection.
     *
     *  The following string values might be valid for this feature:
     *  - \b Active (Display string: 'Active'): Connection is in use.
     *  - \b Inactive (Display string: 'Inactive'): Connection is not in use.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 deviceConnectionStatus;
    /// \brief An integer property. Selects which Link of the device to control.
    /**
     *  Selects which Link of the device to control.
     */
    PropertyI64 deviceLinkSelector;
    /// \brief An integer property. Indicates the speed of transmission negotiated on the specified Link.
    /**
     *  Indicates the speed of transmission negotiated on the specified Link.
     */
    PropertyI64 deviceLinkSpeed;
    /// \brief An enumerated integer property. Controls if the DeviceLinkThroughputLimit is active.
    /**
     *  Controls if the DeviceLinkThroughputLimit is active. When disabled, lower level TL specific features are expected to control the throughput. When enabled, DeviceLinkThroughputLimit controls the overall throughput.
     *
     *  The following string values might be valid for this feature:
     *  - \b On (Display string: 'On'): Enables the DeviceLinkThroughputLimit feature.
     *  - \b Off (Display string: 'Off'): Disables the DeviceLinkThroughputLimit feature.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 deviceLinkThroughputLimitMode;
    /// \brief An integer property. Limits the maximum bandwidth of the data that will be streamed out by the device on the selected Link.
    /**
     *  Limits the maximum bandwidth of the data that will be streamed out by the device on the selected Link. If necessary, delays will be uniformly inserted between transport layer packets in order to control the peak bandwidth.
     */
    PropertyI64 deviceLinkThroughputLimit;
    /// \brief An integer property. Returns the number of physical connection of the device used by a particular Link.
    /**
     *  Returns the number of physical connection of the device used by a particular Link.
     */
    PropertyI64 deviceLinkConnectionCount;
    /// \brief An enumerated integer property. Activate or deactivate the Link's heartbeat.
    /**
     *  Activate or deactivate the Link's heartbeat.
     *
     *  The following string values might be valid for this feature:
     *  - \b On (Display string: 'On'): Enables the Link heartbeat.
     *  - \b Off (Display string: 'Off'): Disables the Link heartbeat.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 deviceLinkHeartbeatMode;
    /// \brief A floating point property. Controls the current heartbeat timeout of the specific Link.
    /**
     *  Controls the current heartbeat timeout of the specific Link.
     */
    PropertyF deviceLinkHeartbeatTimeout;
    /// \brief A floating point property. Indicates the command timeout of the specified Link.
    /**
     *  Indicates the command timeout of the specified Link. This corresponds to the maximum response time of the device for a command sent on that link.
     */
    PropertyF deviceLinkCommandTimeout;
    /// \brief An integer property. Indicates the number of streaming channels supported by the device.
    /**
     *  Indicates the number of streaming channels supported by the device.
     */
    PropertyI64 deviceStreamChannelCount;
    /// \brief An integer property. Selects the stream channel to control.
    /**
     *  Selects the stream channel to control.
     */
    PropertyI64 deviceStreamChannelSelector;
    /// \brief An enumerated integer property. Reports the type of the stream channel.
    /**
     *  Reports the type of the stream channel.
     *
     *  The following string values might be valid for this feature:
     *  - \b Transmitter (Display string: 'Transmitter'): Data stream transmitter channel.
     *  - \b Receiver (Display string: 'Receiver'): Data stream receiver channel.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 deviceStreamChannelType;
    /// \brief An integer property. Index of device's Link to use for streaming the specified stream channel.
    /**
     *  Index of device's Link to use for streaming the specified stream channel.
     */
    PropertyI64 deviceStreamChannelLink;
    /// \brief An enumerated integer property. Endianness of multi-byte pixel data for this stream.
    /**
     *  Endianness of multi-byte pixel data for this stream.
     *
     *  The following string values might be valid for this feature:
     *  - \b Big (Display string: 'Big'): Stream channel data is big Endian.
     *  - \b Little (Display string: 'Little'): Stream channel data is little Endian.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 deviceStreamChannelEndianness;
    /// \brief An integer property. Specifies the stream packet size, in bytes, to send on the selected channel for a Transmitter or specifies the maximum packet size supported by a receiver.
    /**
     *  Specifies the stream packet size, in bytes, to send on the selected channel for a Transmitter or specifies the maximum packet size supported by a receiver.
     */
    PropertyI64 deviceStreamChannelPacketSize;
    /// \brief An integer property. Indicates the number of event channels supported by the device.
    /**
     *  Indicates the number of event channels supported by the device.
     */
    PropertyI64 deviceEventChannelCount;
    /// \brief An integer property. This feature is deprecated (See DeviceEventChannelCount).
    /**
     *  \deprecated
     *  This feature is deprecated (See DeviceEventChannelCount). It indicates the number of message/event channels supported by the device.
     */
    PropertyI64 deviceMessageChannelCount;
    /// \brief An enumerated integer property. Character set used by the strings of the device.
    /**
     *  Character set used by the strings of the device.
     *
     *  The following string values might be valid for this feature:
     *  - \b UTF8 (Display string: 'UTF 8'): Device use UTF8 character set.
     *  - \b ASCII (Display string: 'ASCII'): Device use ASCII character set.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 deviceCharacterSet;
    /// \brief A method object. Resets the device to its power up state.
    /**
     *  Resets the device to its power up state. After reset, the device must be rediscovered.
     */
    Method deviceReset;
    /// \brief An enumerated integer property. Controls the behavior of the indicators (such as LEDs) showing the status of the Device.
    /**
     *  Controls the behavior of the indicators (such as LEDs) showing the status of the Device.
     *
     *  The following string values might be valid for this feature:
     *  - \b Inactive (Display string: 'Inactive'): Device's indicators are inactive (Off).
     *  - \b Active (Display string: 'Active'): Device's indicators are active showing their respective status.
     *  - \b ErrorStatus (Display string: 'Error Status'): Device's indicators are inactive unless an error occurs.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 deviceIndicatorMode;
    /// \brief A method object. Indicate to the device and GenICam XML to get ready for persisting of all streamable features.
    /**
     *  Indicate to the device and GenICam XML to get ready for persisting of all streamable features.
     */
    Method deviceFeaturePersistenceStart;
    /// \brief A method object. Indicate to the device the end of feature persistence.
    /**
     *  Indicate to the device the end of feature persistence.
     */
    Method deviceFeaturePersistenceEnd;
    /// \brief A method object. Prepare the device for registers streaming without checking for consistency.
    /**
     *  Prepare the device for registers streaming without checking for consistency.
     */
    Method deviceRegistersStreamingStart;
    /// \brief A method object. Announce the end of registers streaming.
    /**
     *  Announce the end of registers streaming. This will do a register set validation for consistency and activate it. This will also update the DeviceRegistersValid flag.
     */
    Method deviceRegistersStreamingEnd;
    /// \brief A method object. Perform the validation of the current register set for consistency.
    /**
     *  Perform the validation of the current register set for consistency. This will update the DeviceRegistersValid flag.
     */
    Method deviceRegistersCheck;
    /// \brief A boolean property. Returns if the current register set is valid and consistent.
    /**
     *  Returns if the current register set is valid and consistent.
     */
    PropertyIBoolean deviceRegistersValid;
    /// \brief An enumerated integer property. Will give a hint where to find the invalid register settings if any.
    /**
     *  Will give a hint where to find the invalid register settings if any.
     *
     *  The following string values might be valid for this feature:
     *  - \b Valid (Display string: 'Valid'): The current register settings are in a consistent state.
     *  - \b Invalid (Display string: 'Invalid'): The current register settings are in an invalid and/or inconsistent state.
     *  - \b BinningHorizontalValueInvalid (Display string: 'Binning Horizontal Value Invalid'): The current BinningHorizontal value is not supported.
     *  - \b BinningVerticalValueInvalid (Display string: 'Binning Vertical Value Invalid'): The current BinningVertical value is not supported.
     *  - \b DecimationHorizontalValueInvalid (Display string: 'Decimation Horizontal Value Invalid'): The current DecimationHorizontal value is not supported.
     *  - \b DecimationVerticalValueInvalid (Display string: 'Decimation Vertical Value Invalid'): The current DecimationVertical value is not supported.
     *  - \b BinningDecimationCombinationInvalid (Display string: 'Binning Decimation Combination Invalid'): The current combination of binning and decimation is not valid.
     *  - \b BinningDecimationImageTooWide (Display string: 'Binning Decimation Image Too Wide'): The current Width is too wide for the BinningVertical and/or DecimationVertical settings. Please reduce the Width or add BinningHorizontal orDecimationHorizontal.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvDeviceRegistersStatus;
    /// \brief An enumerated integer property. Endianness of the registers of the device.
    /**
     *  Endianness of the registers of the device.
     *
     *  The following string values might be valid for this feature:
     *  - \b Big (Display string: 'Big'): Device's registers are big Endian.
     *  - \b Little (Display string: 'Little'): Device's registers are little Endian.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 deviceRegistersEndianness;
    /// \brief An enumerated integer property. Selects the location within the device, where the temperature will be measured.
    /**
     *  Selects the location within the device, where the temperature will be measured.
     *
     *  The following string values might be valid for this feature:
     *  - \b Sensor (Display string: 'Sensor'): Temperature of the image sensor of the camera.
     *  - \b Mainboard (Display string: 'Mainboard'): Temperature of the device's mainboard.
     *  - \b XLamp (Display string: 'X Lamp')
     *  - \b SensorCMVx000 (Display string: 'Sensor CM Vx 000')
     *  - \b SensorInternal (Display string: 'Sensor Internal')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 deviceTemperatureSelector;
    /// \brief A floating point property. Device temperature in degrees Celsius (C).
    /**
     *  Device temperature in degrees Celsius (C). It is measured at the location selected by DeviceTemperatureSelector.
     */
    PropertyF deviceTemperature;
    /// \brief An enumerated integer property. Selects the clock frequency to access from the device.
    /**
     *  Selects the clock frequency to access from the device.
     *
     *  The following string values might be valid for this feature:
     *  - \b Sensor (Display string: 'Sensor'): Clock frequency of the image sensor of the camera.
     *  - \b SensorDigitization (Display string: 'Sensor Digitization'): Clock frequency of the camera A/D conversion stage.
     *  - \b CameraLink (Display string: 'Camera Link'): Frequency of the Camera Link clock.
     *  - \b DeviceSpecific (Display string: 'Device Specific')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 deviceClockSelector;
    /// \brief A floating point property. Returns the frequency of the selected Clock.
    /**
     *  Returns the frequency of the selected Clock.
     */
    PropertyF deviceClockFrequency;
    /// \brief An enumerated integer property. Selects which serial port of the device to control.
    /**
     *  Selects which serial port of the device to control.
     *
     *  The following string values might be valid for this feature:
     *  - \b CameraLink (Display string: 'Camera Link'): Serial port associated to the Camera link connection.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 deviceSerialPortSelector;
    /// \brief An enumerated integer property. This feature controls the baud rate used by the selected serial port.
    /**
     *  This feature controls the baud rate used by the selected serial port.
     *
     *  The following string values might be valid for this feature:
     *  - \b Baud9600 (Display string: 'Baud 9600'): Serial port speed of 9600 baud.
     *  - \b Baud19200 (Display string: 'Baud 19200'): Serial port speed of 19200 baud.
     *  - \b Baud38400 (Display string: 'Baud 38400'): Serial port speed of 38400 baud.
     *  - \b Baud57600 (Display string: 'Baud 57600'): Serial port speed of 57600 baud.
     *  - \b Baud115200 (Display string: 'Baud 115200'): Serial port speed of 115200 baud.
     *  - \b Baud230400 (Display string: 'Baud 230400'): Serial port speed of 230400 baud.
     *  - \b Baud460800 (Display string: 'Baud 460800'): Serial port speed of 460800 baud.
     *  - \b Baud921600 (Display string: 'Baud 921600'): Serial port speed of 921600 baud.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 deviceSerialPortBaudRate;
    /// \brief An integer property. Reports the current value of the device timestamp counter.
    /**
     *  Reports the current value of the device timestamp counter.
     */
    PropertyI64 timestamp;
    /// \brief A method object. Resets the current value of the device timestamp counter.
    /**
     *  Resets the current value of the device timestamp counter.
     */
    Method timestampReset;
    /// \brief A method object. Latches the current timestamp counter into TimestampLatchValue.
    /**
     *  Latches the current timestamp counter into TimestampLatchValue.
     */
    Method timestampLatch;
    /// \brief An integer property. Returns the latched value of the timestamp counter.
    /**
     *  Returns the latched value of the timestamp counter.
     */
    PropertyI64 timestampLatchValue;
    /// \brief An integer property. Device temperature in degrees Celsius (C).
    /**
     *  Device temperature in degrees Celsius (C). It is measured at the location selected by DeviceTemperatureSelector.
     */
    PropertyI64 mvDeviceTemperatureRaw;
    /// \brief An integer property. Upper limit in degrees Celsius(C) for the TemperatureOutOfRange signal.
    /**
     *  Upper limit in degrees Celsius(C) for the TemperatureOutOfRange signal.
     */
    PropertyI64 mvDeviceTemperatureUpperLimit;
    /// \brief An integer property. Lower limit in degrees Celsius(C) for the TemperatureOutOfRange signal.
    /**
     *  Lower limit in degrees Celsius(C) for the TemperatureOutOfRange signal.
     */
    PropertyI64 mvDeviceTemperatureLowerLimit;
    /// \brief An enumerated integer property. Hysteresis in degrees Celsius(C) for temperature limits.
    /**
     *  Hysteresis in degrees Celsius(C) for temperature limits.
     *
     *  The following string values might be valid for this feature:
     *  - \b deg_0p0 (Display string: 'deg 0p 0')
     *  - \b deg_1p5 (Display string: 'deg 1p 5')
     *  - \b deg_3p0 (Display string: 'deg 3p 0')
     *  - \b deg_6p0 (Display string: 'deg 6p 0')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvDeviceTemperatureLimitHysteresis;
    /// \brief An enumerated integer property. Clock frequency of the image sensor of the camera.
    /**
     *  Clock frequency of the image sensor of the camera.
     *
     *  The following string values might be valid for this feature:
     *  - \b kHz_08000 (Display string: '8000 kHz')
     *  - \b kHz_10000 (Display string: '10000 kHz')
     *  - \b kHz_11000 (Display string: '11000 kHz')
     *  - \b kHz_12000 (Display string: '12000 kHz')
     *  - \b kHz_20000 (Display string: '20000 kHz')
     *  - \b kHz_22000 (Display string: '22000 kHz')
     *  - \b kHz_23000 (Display string: '23000 kHz')
     *  - \b kHz_24000 (Display string: '24000 kHz')
     *  - \b kHz_24540 (Display string: '24540 kHz')
     *  - \b kHz_25000 (Display string: '25000 kHz')
     *  - \b kHz_26000 (Display string: '26000 kHz')
     *  - \b kHz_27000 (Display string: '27000 kHz')
     *  - \b kHz_28000 (Display string: '28000 kHz')
     *  - \b kHz_29000 (Display string: '29000 kHz')
     *  - \b kHz_29500 (Display string: '29500 kHz')
     *  - \b kHz_30000 (Display string: '30000 kHz')
     *  - \b kHz_32000 (Display string: '32000 kHz')
     *  - \b kHz_36000 (Display string: '36000 kHz')
     *  - \b kHz_37120 (Display string: '37120 kHz')
     *  - \b kHz_40000 (Display string: '40000 kHz')
     *  - \b kHz_45000 (Display string: '45000 kHz')
     *  - \b kHz_48000 (Display string: '48000 kHz')
     *  - \b kHz_50000 (Display string: '50000 kHz')
     *  - \b kHz_56000 (Display string: '56000 kHz')
     *  - \b kHz_60000 (Display string: '60000 kHz')
     *  - \b kHz_65000 (Display string: '65000 kHz')
     *  - \b kHz_66000 (Display string: '66000 kHz')
     *  - \b kHz_74250 (Display string: '74250 kHz')
     *  - \b kHz_80000 (Display string: '80000 kHz')
     *  - \b kHz_85000 (Display string: '85000 kHz')
     *  - \b kHz_96000 (Display string: '96000 kHz')
     *  - \b kHz_98000 (Display string: '98000 kHz')
     *  - \b kHz_120000 (Display string: '120000 kHz')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvDeviceClockFrequency;
    /// \brief An enumerated integer property. Shows color mode of the sensor.
    /**
     *  Shows color mode of the sensor.
     *
     *  The following string values might be valid for this feature:
     *  - \b Unknown (Display string: 'Unknown')
     *  - \b Grey (Display string: 'Grey')
     *  - \b BayerMosaic (Display string: 'Bayer Mosaic')
     *  - \b NearInfraRed (Display string: 'Near Infra Red')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvDeviceSensorColorMode;
    /// \brief A string property. Shows version number of the FPGA.
    /**
     *  Shows version number of the FPGA.
     */
    PropertyS mvDeviceFPGAVersion;
    /// \brief An enumerated integer property. Shows the location from where the firmware was loaded.
    /**
     *  Shows the location from where the firmware was loaded.
     *
     *  The following string values might be valid for this feature:
     *  - \b BootSection (Display string: 'Boot Section')
     *  - \b ProgramSection (Display string: 'Program Section')
     *  - \b Upload (Display string: 'Upload')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvDeviceFirmwareSource;
    /// \brief An integer property. Selects the device processing unit.
    /**
     *  Selects the device processing unit.
     */
    PropertyI64 mvDeviceProcessingUnitSelector;
    /// \brief An enumerated integer property. The processing unit to activate for the selected processing unit.
    /**
     *  The processing unit to activate for the selected processing unit.
     *
     *  The following string values might be valid for this feature:
     *  - \b mvFFC (Display string: 'mv FFC'): Selects the Flat-field correction engine for this processing unit.
     *  - \b mvFrameAverage (Display string: 'mv Frame Average'): Selects the frame average engine for this processing unit.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvDeviceProcessingUnit;
    /// \brief A boolean property. This feature is deprecated (See DeviceIndicatorMode). If enabled, the color of the LED changes depending on the state of the camera. Otherwise the LED is Off.
    /**
     *  \deprecated
     *  This feature is deprecated (See DeviceIndicatorMode). If enabled, the color of the LED changes depending on the state of the camera. Otherwise the LED is Off.
     */
    PropertyIBoolean mvDeviceStatusLEDEnable;
    /// \brief An enumerated integer property. Selects the device power mode.
    /**
     *  Selects the device power mode.
     *
     *  The following string values might be valid for this feature:
     *  - \b mvActive (Display string: 'mv Active'): Puts the device to power-active mode. Going back to 'mvActive' will take about 10 seconds.
     *  - \b mvStandby (Display string: 'mv Standby'): Puts the device in power-saving mode. In this mode the device will only consume up to 20 percent of its normal power consumption. Going back to 'mvActive' will take about 10 seconds.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvDevicePowerMode;
    /// \brief A boolean property. If enabled, the device switch to standby after a configurable time if no register is read.
    /**
     *  If enabled, the device switch to standby after a configurable time if no register is read.
     */
    PropertyIBoolean mvDeviceStandbyTimeoutEnable;
    /// \brief An integer property. Defines the time in seconds after which the device automatically switches to standby if no register is read.
    /**
     *  Defines the time in seconds after which the device automatically switches to standby if no register is read.
     */
    PropertyI64 mvDeviceStandbyTimeout;
    /// \brief A string property. Shows the hash code of the firmware.
    /**
     *  Shows the hash code of the firmware.
     */
    PropertyS mvDeviceFirmwareHashCode;
    /// \brief A method object. Do a new calculation of the hash code. This might serve as a means to check whether the firmware has been changed in flash.
    /**
     *  Do a new calculation of the hash code. This might serve as a means to check whether the firmware has been changed in flash. Caution: This needs approximately 15-20 seconds!
     */
    Method mvCalculateHashCode;
    /// \brief An enumerated integer property. The algorithm used for the hash calculation.
    /**
     *  The algorithm used for the hash calculation.
     *
     *  The following string values might be valid for this feature:
     *  - \b mvCRC32b (Display string: 'mv CRC 32b'): CRC32b will be used.
     *  - \b mvSHA1 (Display string: 'mv SHA 1'): SHA1 will be used.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvDeviceFirmwareHashAlgorithm;
    /// \brief An integer property. Laser current consumption value (mA).
    /**
     *  Laser current consumption value (mA).
     */
    PropertyI64 mvDeviceLaserCurrent;
    /// \brief An enumerated integer property. Will synchronize the internal clock to an external GPS(PPS) signal.
    /**
     *  Will synchronize the internal clock to an external GPS(PPS) signal.
     *
     *  The following string values might be valid for this feature:
     *  - \b Off (Display string: 'Off')
     *  - \b Line4 (Display string: 'Line 4')
     *  - \b Line5 (Display string: 'Line 5')
     *  - \b Line6 (Display string: 'Line 6')
     *  - \b Line7 (Display string: 'Line 7')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvTimestampPPSSync;
    /// \brief An enumerated integer property. Selects the trigger edge on which the controller will be pulsed.
    /**
     *  Selects the trigger edge on which the controller will be pulsed.
     *
     *  The following string values might be valid for this feature:
     *  - \b mvRisingEdge (Display string: 'mv Rising Edge'): Controller is pulsed on rising edges.
     *  - \b mvFallingEdge (Display string: 'mv Falling Edge'): Controller is pulsed on falling edges.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvTimestampPPSTriggerEdge;
    /// \brief An integer property. Shows the number of missed pulses since the last status latch.
    /**
     *  Shows the number of missed pulses since the last status latch.
     */
    PropertyI64 mvTimestampPPSPulsesMissed;
    /// \brief An enumerated integer property. Shows the current status of the pulse per second controller.
    /**
     *  Shows the current status of the pulse per second controller.
     *
     *  The following string values might be valid for this feature:
     *  - \b Disabled (Display string: 'Disabled'): Controller is disabled.
     *  - \b NoPulses (Display string: 'No Pulses'): Controller is enabled but pps pulses are missing.
     *  - \b Unstable (Display string: 'Unstable'): Controller has not reached the steady state so far.
     *  - \b Stable (Display string: 'Stable'): Controller has reached the range of steady state.
     *  - \b Error (Display string: 'Error'): Controller is in faulty state and must be reenabled manually.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvTimestampPPSStatus;
    /// \brief An integer property. Defines the initial value after the cameras timestamp timer has been reset.
    /**
     *  Defines the initial value after the cameras timestamp timer has been reset.
     */
    PropertyI64 mvTimestampResetValue;
    /// \brief An enumerated integer property. Indicates the current temperature state of the camera
    /**
     *  Indicates the current temperature state of the camera
     *
     *  The following string values might be valid for this feature:
     *  - \b Normal (Display string: 'Normal')
     *  - \b Critical (Display string: 'Critical')
     *  - \b OverTemperature (Display string: 'Over Temperature')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvTemperatureState;
    /// \brief An integer property. If the temperature of the camera exceeds this value mvTemperatureState switches from normal to critical
    /**
     *  If the temperature of the camera exceeds this value mvTemperatureState switches from normal to critical
     */
    PropertyI64 mvTemperatureStateCriticalThreshold;
    // *INDENT-OFF*
    PYTHON_OR_JAVA_ONLY( %mutable; )
    // *INDENT-ON*
};

//-----------------------------------------------------------------------------
/// \brief Category for Image Format Control features.
/**
 *  A category for Image Format Control features.
 * \ingroup GenICamInterfaceDevice
 */
class ImageFormatControl
//-----------------------------------------------------------------------------
{
public:
    /// \brief Constructs a new <b>mvIMPACT::acquire::GenICam::ImageFormatControl</b> object.
    explicit ImageFormatControl(
        /// [in] A pointer to a <b>mvIMPACT::acquire::Device</b> object obtained from a <b>mvIMPACT::acquire::DeviceManager</b> object.
        mvIMPACT::acquire::Device* pDev,
        /// [in] The name of the driver internal setting to access with this instance.
        /// A list of valid setting names can be obtained by a call to
        /// <b>mvIMPACT::acquire::FunctionInterface::getAvailableSettings</b>, new
        /// settings can be created with the function
        /// <b>mvIMPACT::acquire::FunctionInterface::createSetting</b>
        const std::string& settingName = "Base" ) :
        sensorWidth(),
        sensorHeight(),
        sensorPixelWidth(),
        sensorPixelHeight(),
        sensorName(),
        sensorShutterMode(),
        sensorTaps(),
        sensorDigitizationTaps(),
        widthMax(),
        heightMax(),
        regionSelector(),
        regionMode(),
        regionDestination(),
        regionIDValue(),
        componentSelector(),
        componentEnable(),
        componentIDValue(),
        groupSelector(),
        groupIDValue(),
        imageComponentSelector(),
        imageComponentEnable(),
        width(),
        height(),
        offsetX(),
        offsetY(),
        mvBlockscanLinesPerBlock(),
        mvBlockscanBlockCount(),
        mvMultiAreaMode(),
        mvAreaSelector(),
        mvAreaEnable(),
        mvAreaWidth(),
        mvAreaHeight(),
        mvAreaOffsetX(),
        mvAreaOffsetY(),
        mvAreaResultingOffsetX(),
        mvAreaResultingOffsetY(),
        linePitchEnable(),
        linePitch(),
        binningSelector(),
        binningHorizontalMode(),
        binningHorizontal(),
        binningVerticalMode(),
        binningVertical(),
        decimationHorizontalMode(),
        decimationHorizontal(),
        decimationVerticalMode(),
        decimationVertical(),
        reverseX(),
        reverseY(),
        pixelFormat(),
        pixelFormatInfoSelector(),
        pixelFormatInfoID(),
        pixelCoding(),
        pixelSize(),
        pixelColorFilter(),
        pixelDynamicRangeMin(),
        pixelDynamicRangeMax(),
        testPatternGeneratorSelector(),
        testPattern(),
        testImageSelector(),
        deinterlacing(),
        imageCompressionMode(),
        imageCompressionRateOption(),
        imageCompressionQuality(),
        imageCompressionBitrate(),
        imageCompressionJPEGFormatOption(),
        mvSensorDigitizationBitDepth()
    {
        pDev->validateInterfaceLayout( dilGenICam );
        mvIMPACT::acquire::DeviceComponentLocator locator( pDev, mvIMPACT::acquire::dltSetting, settingName );
        locator.bindSearchBase( locator.searchbase_id(), "Camera/GenICam" );
        locator.bindComponent( sensorWidth, "SensorWidth" );
        locator.bindComponent( sensorHeight, "SensorHeight" );
        locator.bindComponent( sensorPixelWidth, "SensorPixelWidth" );
        if( !sensorPixelWidth.isValid() )
        {
            locator.bindComponent( sensorPixelWidth, "mvDeviceSensorPixelWidth" );
        }
        locator.bindComponent( sensorPixelHeight, "SensorPixelHeight" );
        if( !sensorPixelHeight.isValid() )
        {
            locator.bindComponent( sensorPixelHeight, "mvDeviceSensorPixelHeight" );
        }
        locator.bindComponent( sensorName, "SensorName" );
        if( !sensorName.isValid() )
        {
            locator.bindComponent( sensorName, "mvDeviceSensorName" );
        }
        locator.bindComponent( sensorShutterMode, "SensorShutterMode" );
        locator.bindComponent( sensorTaps, "SensorTaps" );
        locator.bindComponent( sensorDigitizationTaps, "SensorDigitizationTaps" );
        locator.bindComponent( widthMax, "WidthMax" );
        locator.bindComponent( heightMax, "HeightMax" );
        locator.bindComponent( regionSelector, "RegionSelector" );
        locator.bindComponent( regionMode, "RegionMode" );
        locator.bindComponent( regionDestination, "RegionDestination" );
        locator.bindComponent( regionIDValue, "RegionIDValue" );
        locator.bindComponent( componentSelector, "ComponentSelector" );
        locator.bindComponent( componentEnable, "ComponentEnable" );
        locator.bindComponent( componentIDValue, "ComponentIDValue" );
        locator.bindComponent( groupSelector, "GroupSelector" );
        locator.bindComponent( groupIDValue, "GroupIDValue" );
        locator.bindComponent( imageComponentSelector, "ImageComponentSelector" );
        locator.bindComponent( imageComponentEnable, "ImageComponentEnable" );
        locator.bindComponent( width, "Width" );
        locator.bindComponent( height, "Height" );
        locator.bindComponent( offsetX, "OffsetX" );
        locator.bindComponent( offsetY, "OffsetY" );
        locator.bindComponent( mvBlockscanLinesPerBlock, "mvBlockscanLinesPerBlock" );
        locator.bindComponent( mvBlockscanBlockCount, "mvBlockscanBlockCount" );
        locator.bindComponent( mvMultiAreaMode, "mvMultiAreaMode" );
        locator.bindComponent( mvAreaSelector, "mvAreaSelector" );
        locator.bindComponent( mvAreaEnable, "mvAreaEnable" );
        locator.bindComponent( mvAreaWidth, "mvAreaWidth" );
        locator.bindComponent( mvAreaHeight, "mvAreaHeight" );
        locator.bindComponent( mvAreaOffsetX, "mvAreaOffsetX" );
        locator.bindComponent( mvAreaOffsetY, "mvAreaOffsetY" );
        locator.bindComponent( mvAreaResultingOffsetX, "mvAreaResultingOffsetX" );
        locator.bindComponent( mvAreaResultingOffsetY, "mvAreaResultingOffsetY" );
        locator.bindComponent( linePitchEnable, "LinePitchEnable" );
        locator.bindComponent( linePitch, "LinePitch" );
        locator.bindComponent( binningSelector, "BinningSelector" );
        locator.bindComponent( binningHorizontalMode, "BinningHorizontalMode" );
        locator.bindComponent( binningHorizontal, "BinningHorizontal" );
        locator.bindComponent( binningVerticalMode, "BinningVerticalMode" );
        locator.bindComponent( binningVertical, "BinningVertical" );
        locator.bindComponent( decimationHorizontalMode, "DecimationHorizontalMode" );
        locator.bindComponent( decimationHorizontal, "DecimationHorizontal" );
        locator.bindComponent( decimationVerticalMode, "DecimationVerticalMode" );
        locator.bindComponent( decimationVertical, "DecimationVertical" );
        locator.bindComponent( reverseX, "ReverseX" );
        locator.bindComponent( reverseY, "ReverseY" );
        locator.bindComponent( pixelFormat, "PixelFormat" );
        locator.bindComponent( pixelFormatInfoSelector, "PixelFormatInfoSelector" );
        locator.bindComponent( pixelFormatInfoID, "PixelFormatInfoID" );
        locator.bindComponent( pixelCoding, "PixelCoding" );
        locator.bindComponent( pixelSize, "PixelSize" );
        locator.bindComponent( pixelColorFilter, "PixelColorFilter" );
        locator.bindComponent( pixelDynamicRangeMin, "PixelDynamicRangeMin" );
        locator.bindComponent( pixelDynamicRangeMax, "PixelDynamicRangeMax" );
        locator.bindComponent( testPatternGeneratorSelector, "TestPatternGeneratorSelector" );
        locator.bindComponent( testPattern, "TestPattern" );
        if( !testPattern.isValid() )
        {
            locator.bindComponent( testPattern, "TestImageSelector" );
        }
        locator.bindComponent( testImageSelector, "TestImageSelector" );
        locator.bindComponent( deinterlacing, "Deinterlacing" );
        locator.bindComponent( imageCompressionMode, "ImageCompressionMode" );
        locator.bindComponent( imageCompressionRateOption, "ImageCompressionRateOption" );
        locator.bindComponent( imageCompressionQuality, "ImageCompressionQuality" );
        locator.bindComponent( imageCompressionBitrate, "ImageCompressionBitrate" );
        locator.bindComponent( imageCompressionJPEGFormatOption, "ImageCompressionJPEGFormatOption" );
        locator.bindComponent( mvSensorDigitizationBitDepth, "mvSensorDigitizationBitDepth" );
    }
    // *INDENT-OFF*
    PYTHON_OR_JAVA_ONLY( %immutable; )
    // *INDENT-ON*
    /// \brief An integer property. Effective width of the sensor in pixels.
    /**
     *  Effective width of the sensor in pixels.
     */
    PropertyI64 sensorWidth;
    /// \brief An integer property. Effective height of the sensor in pixels.
    /**
     *  Effective height of the sensor in pixels.
     */
    PropertyI64 sensorHeight;
    /// \brief A floating point property. Physical size (pitch) in the x direction of a photo sensitive pixel unit.
    /**
     *  Physical size (pitch) in the x direction of a photo sensitive pixel unit.
     */
    PropertyF sensorPixelWidth;
    /// \brief A floating point property. Physical size (pitch) in the y direction of a photo sensitive pixel unit.
    /**
     *  Physical size (pitch) in the y direction of a photo sensitive pixel unit.
     */
    PropertyF sensorPixelHeight;
    /// \brief A string property. Product name of the imaging Sensor.
    /**
     *  Product name of the imaging Sensor.
     */
    PropertyS sensorName;
    /// \brief An enumerated integer property. Specifies the shutter mode of the device.
    /**
     *  Specifies the shutter mode of the device.
     *
     *  The following string values might be valid for this feature:
     *  - \b Global (Display string: 'Global'): The shutter opens and closes at the same time for all pixels. All the pixels are exposed for the same length of time at the same time.
     *  - \b Rolling (Display string: 'Rolling'): The shutter opens and closes sequentially for groups (typically lines) of pixels. All the pixels are exposed for the same length of time but not at the same time.
     *  - \b GlobalReset (Display string: 'Global Reset'): The shutter opens at the same time for all pixels but ends in a sequential manner. The pixels are exposed for different lengths of time.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 sensorShutterMode;
    /// \brief An enumerated integer property. Number of taps of the camera sensor.
    /**
     *  Number of taps of the camera sensor.
     *
     *  The following string values might be valid for this feature:
     *  - \b One (Display string: 'One'): 1 tap.
     *  - \b Two (Display string: 'Two'): 2 taps.
     *  - \b Three (Display string: 'Three'): 3 taps.
     *  - \b Four (Display string: 'Four'): 4 taps.
     *  - \b Eight (Display string: 'Eight'): 8 taps.
     *  - \b Ten (Display string: 'Ten'): 10 taps.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 sensorTaps;
    /// \brief An enumerated integer property. Number of digitized samples outputted simultaneously by the camera A/D conversion stage.
    /**
     *  Number of digitized samples outputted simultaneously by the camera A/D conversion stage.
     *
     *  The following string values might be valid for this feature:
     *  - \b One (Display string: 'One'): 1 tap.
     *  - \b Two (Display string: 'Two'): 2 taps.
     *  - \b Three (Display string: 'Three'): 3 taps.
     *  - \b Four (Display string: 'Four'): 4 taps.
     *  - \b Eight (Display string: 'Eight'): 8 taps.
     *  - \b Ten (Display string: 'Ten'): 10 taps.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 sensorDigitizationTaps;
    /// \brief An integer property. Maximum width of the image (in pixels).
    /**
     *  Maximum width of the image (in pixels). The dimension is calculated after horizontal binning, decimation or any other function changing the horizontal dimension of the image.
     */
    PropertyI64 widthMax;
    /// \brief An integer property. Maximum height of the image (in pixels).
    /**
     *  Maximum height of the image (in pixels). This dimension is calculated after vertical binning, decimation or any other function changing the vertical dimension of the image.
     */
    PropertyI64 heightMax;
    /// \brief An enumerated integer property. Selects the Region of interest to control.
    /**
     *  Selects the Region of interest to control. The RegionSelector feature allows devices that are able to extract multiple regions out of an image, to configure the features of those individual regions independently.
     *
     *  The following string values might be valid for this feature:
     *  - \b Region0 (Display string: 'Region 0'): Selected feature will control the region 0.
     *  - \b Region1 (Display string: 'Region 1'): Selected feature will control the region 1.
     *  - \b Region2 (Display string: 'Region 2'): Selected feature will control the region 2.
     *  - \b Region\#3\# (Display string: 'Region \#3\#'): Selected feature will control the region \#3\#.
     *  - \b Scan3dExtraction0 (Display string: 'Scan 3d Extraction 0'): Selected feature will control the Scan3dExtraction0 output Region.
     *  - \b Scan3dExtraction1 (Display string: 'Scan 3d Extraction 1'): Selected feature will control the Scan3dExtraction1 output Region.
     *  - \b Scan3dExtraction2 (Display string: 'Scan 3d Extraction 2'): Selected feature will control the Scan3dExtraction2 output Region.
     *  - \b All (Display string: 'All'): Selected features will control all the regions at the same time.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 regionSelector;
    /// \brief An enumerated integer property. Controls if the selected Region of interest is active and streaming.
    /**
     *  Controls if the selected Region of interest is active and streaming.
     *
     *  The following string values might be valid for this feature:
     *  - \b Off (Display string: 'Off'): Disable the usage of the Region.
     *  - \b On (Display string: 'On'): Enable the usage of the Region.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 regionMode;
    /// \brief An enumerated integer property. Control the destination of the selected region.
    /**
     *  Control the destination of the selected region.
     *
     *  The following string values might be valid for this feature:
     *  - \b Stream0 (Display string: 'Stream 0'): The destination of the region is the data stream 0.
     *  - \b Stream1 (Display string: 'Stream 1'): The destination of the region is the data stream 1.
     *  - \b Stream2 (Display string: 'Stream 2'): The destination of the region is the data stream 2.
     *  - \b Stream\#3\# (Display string: 'Stream \#3\#'): The destination of the region is the data stream \#3\#.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 regionDestination;
    /// \brief An integer property. Returns a unique Identifier value that corresponds to the selected Region.
    /**
     *  Returns a unique Identifier value that corresponds to the selected Region.
     */
    PropertyI64 regionIDValue;
    /// \brief An enumerated integer property. Selects a component to activate/deactivate its data streaming.
    /**
     *  Selects a component to activate/deactivate its data streaming.
     *
     *  The following string values might be valid for this feature:
     *  - \b Intensity (Display string: 'Intensity'): The acquisition of intensity (monochrome or color) of the visible reflected light is controlled.
     *  - \b Infrared (Display string: 'Infrared'): The acquisition of non-visible infrared light is controlled.
     *  - \b Ultraviolet (Display string: 'Ultraviolet'): The acquisition of non-visible ultraviolet light is controlled.
     *  - \b Range (Display string: 'Range'): The acquisition of range (distance) data is controlled. The data produced may be only range (2.5D) or a point cloud giving the 3D coordinates depending on the Scan3dControl features.
     *  - \b Reflectance (Display string: 'Reflectance'): The reflected intensity acquired together with Range in a Linescan3D sensor acquiring a single linescan profile for each exposure of the sensor.
     *  - \b Confidence (Display string: 'Confidence'): The acquisition of confidence map of the acquired image is controlled. Confidence data may be binary (0 - invalid) or an integer where 0 is invalid and increasing value is increased confidence in the data in the corresponding pixel. If floating point representation is used the confidence image is normalized to the range [0,1], for integer representation the maximum possible integer represents maximum confidence.
     *  - \b Disparity (Display string: 'Disparity'): The acquisition of stereo camera disparity data is controlled. Disparity is a more specific range format approximately inversely proportional to distance. Disparity is typically given in pixel units.
     *  - \b Scatter (Display string: 'Scatter'): The acquisition of data measuring how much light is scattered around the reflected light. In processing this is used as an additional intensity image, often together with the standard intensity or reflectance.
     *  - \b Multispectral (Display string: 'Multispectral'): The acquisition of multiple spectral bands corresponding to various light wavelenghts is controlled.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 componentSelector;
    /// \brief A boolean property. Controls if the selected component streaming is active.
    /**
     *  Controls if the selected component streaming is active.
     */
    PropertyIBoolean componentEnable;
    /// \brief An integer property. Returns a unique Identifier value that corresponds to type of the component selected by ComponentSelector.
    /**
     *  Returns a unique Identifier value that corresponds to type of the component selected by ComponentSelector.
     */
    PropertyI64 componentIDValue;
    /// \brief An enumerated integer property. Selects a Group of component to control or inquire.
    /**
     *  Selects a Group of component to control or inquire. The GroupSelector determines which components Group will be used for the selected features.
     *
     *  The following string values might be valid for this feature:
     *  - \b Group0 (Display string: 'Group 0'): Group 0
     *  - \b Group1 (Display string: 'Group 1'): Group 1
     *  - \b Group2 (Display string: 'Group 2'): Group 2
     *  - \b Group\#3\# (Display string: 'Group \#3\#'): Group \#3\#
     *  - \b Group3 (Display string: 'Group 3'): Group 3
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 groupSelector;
    /// \brief An integer property. Returns a unique Identifier value corresponding to the selected Group of Components.
    /**
     *  Returns a unique Identifier value corresponding to the selected Group of Components. If no grouping is required, this value should be set to 0.
     */
    PropertyI64 groupIDValue;
    /// \brief An enumerated integer property. This feature is deprecated (See ComponentSelector).
    /**
     *  \deprecated
     *  This feature is deprecated (See ComponentSelector). It was used to select a component.
     *
     *  The following string values might be valid for this feature:
     *  - \b Intensity (Display string: 'Intensity'): The acquisition of intensity (monochrome or color) of the visible reflected light is controlled.
     *  - \b Color (Display string: 'Color'): The acquisition of color of the reflected light is controlled
     *  - \b Infrared (Display string: 'Infrared'): The acquisition of non-visible infrared light is controlled.
     *  - \b Ultraviolet (Display string: 'Ultraviolet'): The acquisition of non-visible ultraviolet light is controlled.
     *  - \b Range (Display string: 'Range'): The acquisition of range (distance) data is controlled. The data produced may be only range (2.5D) or a point cloud 3D coordinates depending on the Scan3dControl features.
     *  - \b Confidence (Display string: 'Confidence'): The acquisition of confidence map of the acquired image is controlled. Confidence data may be binary (0 - invalid) or an integer where 0 is invalid and increasing value is increased confidence in the data in the corresponding pixel. If floating point representation is used the confidence image is normalized to the range [0,1], for integer representation the maximum possible integer represents maximum confidence.
     *  - \b Disparity (Display string: 'Disparity'): The acquisition of stereo camera disparity data is controlled. Disparity is a more specific range format approximately inversely proportional to distance. Disparity is typically given in pixel units.
     *  - \b Scatter (Display string: 'Scatter'): The acquisition of data measuring how much light is scattered around the reflected light. In processing this is used as an additional intensity image, often together with the standard intensity.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 imageComponentSelector;
    /// \brief A boolean property. This feature is deprecated (See ComponentEnable).
    /**
     *  \deprecated
     *  This feature is deprecated (See ComponentEnable). It was used to control if the selected component streaming is active.
     */
    PropertyIBoolean imageComponentEnable;
    /// \brief An integer property. Width of the image provided by the device (in pixels).
    /**
     *  Width of the image provided by the device (in pixels).
     */
    PropertyI64 width;
    /// \brief An integer property. Height of the image provided by the device (in pixels).
    /**
     *  Height of the image provided by the device (in pixels).
     */
    PropertyI64 height;
    /// \brief An integer property. Horizontal offset from the origin to the region of interest (in pixels).
    /**
     *  Horizontal offset from the origin to the region of interest (in pixels).
     */
    PropertyI64 offsetX;
    /// \brief An integer property. Vertical offset from the origin to the region of interest (in pixels).
    /**
     *  Vertical offset from the origin to the region of interest (in pixels).
     */
    PropertyI64 offsetY;
    /// \brief An integer property. Blockscan mode only: Number of lines per block.
    /**
     *  Blockscan mode only: Number of lines per block.
     */
    PropertyI64 mvBlockscanLinesPerBlock;
    /// \brief An integer property. Blockscan mode only: Number of blocks combined to one frame.
    /**
     *  Blockscan mode only: Number of blocks combined to one frame
     */
    PropertyI64 mvBlockscanBlockCount;
    /// \brief An enumerated integer property. Selects the overall multi area mode.
    /**
     *  Selects the overall multi area mode.
     *
     *  The following string values might be valid for this feature:
     *  - \b mvOff (Display string: 'mv Off'): Multi area mode is altogether switched off. Only one single AOI as defined in Width, Height, OffsetX and OffsetY properties is used and valid.
     *  - \b mvMultiAreasCombined (Display string: 'mv Multi Areas Combined'): Image is combined from multiple areas. The overlapping of areas is allowed. The camera decides which areas it needs to crop from the image and combines all areas into one image.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvMultiAreaMode;
    /// \brief An enumerated integer property. Selects the area in multi area context.
    /**
     *  Selects the area in multi area context.
     *
     *  The following string values might be valid for this feature:
     *  - \b mvArea0 (Display string: 'mv Area 0'): First area in multi area context.
     *  - \b mvArea1 (Display string: 'mv Area 1'): Second area in multi area context.
     *  - \b mvArea2 (Display string: 'mv Area 2'): Third area in multi area context.
     *  - \b mvArea3 (Display string: 'mv Area 3'): Fourth area in multi area context.
     *  - \b mvArea4 (Display string: 'mv Area 4'): Fifth area in multi area context.
     *  - \b mvArea5 (Display string: 'mv Area 5'): Sixth area in multi area context.
     *  - \b mvArea6 (Display string: 'mv Area 6'): Seventh area in multi area context.
     *  - \b mvArea7 (Display string: 'mv Area 7'): Eighth area in multi area context.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvAreaSelector;
    /// \brief A boolean property. This feature controls whether the selected area is active during streaming or not.
    /**
     *  This feature controls whether the selected area is active during streaming or not.
     */
    PropertyIBoolean mvAreaEnable;
    /// \brief An integer property. Width of this area's part of the image (in pixels).
    /**
     *  Width of this area's part of the image (in pixels).
     */
    PropertyI64 mvAreaWidth;
    /// \brief An integer property. Height of this area's part of the image (in pixels).
    /**
     *  Height of this area's part of the image (in pixels).
     */
    PropertyI64 mvAreaHeight;
    /// \brief An integer property. Horizontal offset of this area within the image (in pixels).
    /**
     *  Horizontal offset of this area within the image (in pixels).
     */
    PropertyI64 mvAreaOffsetX;
    /// \brief An integer property. Vertical offset of this area within the image (in pixels).
    /**
     *  Vertical offset of this area within the image (in pixels).
     */
    PropertyI64 mvAreaOffsetY;
    /// \brief An integer property. Horizontal offset of this area within the resulting image (in pixels).
    /**
     *  Horizontal offset of this area within the resulting image (in pixels).
     */
    PropertyI64 mvAreaResultingOffsetX;
    /// \brief An integer property. Vertical offset of this area within the resulting image (in pixels).
    /**
     *  Vertical offset of this area within the resulting image (in pixels).
     */
    PropertyI64 mvAreaResultingOffsetY;
    /// \brief A boolean property. This feature controls whether the LinePitch feature is writable.
    /**
     *  This feature controls whether the LinePitch feature is writable. Otherwise LinePitch is implicitly controlled by the combination of features like Width, PixelFormat, etc...
     */
    PropertyIBoolean linePitchEnable;
    /// \brief An integer property. Total number of bytes between the starts of 2 consecutive lines.
    /**
     *  Total number of bytes between the starts of 2 consecutive lines. This feature is used to facilitate alignment of image data.
     */
    PropertyI64 linePitch;
    /// \brief An enumerated integer property. Selects which binning engine is controlled by the BinningHorizontal and BinningVertical features.
    /**
     *  Selects which binning engine is controlled by the BinningHorizontal and BinningVertical features.
     *
     *  The following string values might be valid for this feature:
     *  - \b Sensor (Display string: 'Sensor'): Selected features will control the sensor binning.
     *  - \b Region0 (Display string: 'Region 0'): Selected feature will control the region 0 binning.
     *  - \b Region1 (Display string: 'Region 1'): Selected feature will control the region 1 binning.
     *  - \b Region2 (Display string: 'Region 2'): Selected feature will control the region 2 binning.
     *  - \b Region\#3\# (Display string: 'Region \#3\#'): Selected feature will control the region \#3\# binning.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 binningSelector;
    /// \brief An enumerated integer property. Sets the mode to use to combine horizontal photo-sensitive cells together when BinningHorizontal is used.
    /**
     *  Sets the mode to use to combine horizontal photo-sensitive cells together when BinningHorizontal is used.
     *
     *  The following string values might be valid for this feature:
     *  - \b Sum (Display string: 'Sum'): The response from the combined cells will be added, resulting in increased sensitivity.
     *  - \b Average (Display string: 'Average'): The response from the combined cells will be averaged, resulting in increased signal/noise ratio.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 binningHorizontalMode;
    /// \brief An integer property. Number of horizontal photo-sensitive cells to combine together.
    /**
     *  Number of horizontal photo-sensitive cells to combine together. This reduces the horizontal resolution (width) of the image.
     */
    PropertyI64 binningHorizontal;
    /// \brief An enumerated integer property. Sets the mode to use to combine vertical photo-sensitive cells together when BinningVertical is used.
    /**
     *  Sets the mode to use to combine vertical photo-sensitive cells together when BinningVertical is used.
     *
     *  The following string values might be valid for this feature:
     *  - \b Sum (Display string: 'Sum'): The response from the combined cells will be added, resulting in increased sensitivity.
     *  - \b Average (Display string: 'Average'): The response from the combined cells will be averaged, resulting in increased signal/noise ratio.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 binningVerticalMode;
    /// \brief An integer property. Number of vertical photo-sensitive cells to combine together.
    /**
     *  Number of vertical photo-sensitive cells to combine together. This reduces the vertical resolution (height) of the image.
     */
    PropertyI64 binningVertical;
    /// \brief An enumerated integer property. Sets the mode used to reduce the horizontal resolution when DecimationHorizontal is used.
    /**
     *  Sets the mode used to reduce the horizontal resolution when DecimationHorizontal is used.
     *
     *  The following string values might be valid for this feature:
     *  - \b Discard (Display string: 'Discard'): The value of every Nth pixel is kept, others are discarded.
     *  - \b Average (Display string: 'Average'): The values of a group of N adjacent pixels are averaged.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 decimationHorizontalMode;
    /// \brief An integer property. Horizontal sub-sampling of the image.
    /**
     *  Horizontal sub-sampling of the image. This reduces the horizontal resolution (width) of the image by the specified horizontal decimation factor.
     */
    PropertyI64 decimationHorizontal;
    /// \brief An enumerated integer property. Sets the mode used to reduce the Vertical resolution when DecimationVertical is used.
    /**
     *  Sets the mode used to reduce the Vertical resolution when DecimationVertical is used.
     *
     *  The following string values might be valid for this feature:
     *  - \b Discard (Display string: 'Discard'): The value of every Nth pixel is kept, others are discarded.
     *  - \b Average (Display string: 'Average'): The values of a group of N adjacent pixels are averaged.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 decimationVerticalMode;
    /// \brief An integer property. Vertical sub-sampling of the image.
    /**
     *  Vertical sub-sampling of the image. This reduces the vertical resolution (height) of the image by the specified vertical decimation factor.
     */
    PropertyI64 decimationVertical;
    /// \brief A boolean property. Flip horizontally the image sent by the device.
    /**
     *  Flip horizontally the image sent by the device. The Region of interest is applied after the flipping.
     */
    PropertyIBoolean reverseX;
    /// \brief A boolean property. Flip vertically the image sent by the device.
    /**
     *  Flip vertically the image sent by the device. The Region of interest is applied after the flipping.
     */
    PropertyIBoolean reverseY;
    /// \brief An enumerated integer property. Format of the pixels provided by the device.
    /**
     *  Format of the pixels provided by the device. It represents all the information provided by PixelSize, PixelColorFilter combined in a single feature.
     *
     *  The following string values might be valid for this feature:
     *  - \b Mono1p (Display string: 'Mono1p'): Mono 1 bit packed.
     *  - \b Mono2p (Display string: 'Mono2p'): Mono 2 bit packed.
     *  - \b Mono4p (Display string: 'Mono4p'): Mono 4 bit packed.
     *  - \b Mono8 (Display string: 'Mono8'): Mono 8 bit packed.
     *  - \b Mono8s (Display string: 'Mono8s'): Mono 1 bit signed.
     *  - \b Mono10 (Display string: 'Mono10'): Mono 10 bit.
     *  - \b Mono10p (Display string: 'Mono10p'): Mono 10 bit packed.
     *  - \b Mono12 (Display string: 'Mono12'): Mono 12 bit.
     *  - \b Mono12p (Display string: 'Mono12p'): Mono 12 bit packed.
     *  - \b Mono14 (Display string: 'Mono14'): Mono 14 bit.
     *  - \b Mono16 (Display string: 'Mono16'): Mono 16 bit.
     *  - \b R8 (Display string: 'R8'): Red 8 bit.
     *  - \b G8 (Display string: 'G8'): Green 8 bit.
     *  - \b B8 (Display string: 'B8'): Blue 8 bit.
     *  - \b RGB8 (Display string: 'RGB8'): Red, Green, Blue 8 bit
     *  - \b RGB8_Planar (Display string: 'RGB8_Planar'): Red, Green, Blue 8 bit planar.
     *  - \b RGBa8 (Display string: 'RGBa8'): Red, Green, Blue 8 bit aligned on 8 bit
     *  - \b RGB10 (Display string: 'RGB10'): Red, Green, Blue 10 bit.
     *  - \b RGB10_Planar (Display string: 'RGB10_Planar'): Red, Green, Blue 10 bit planar.
     *  - \b RGB10p32 (Display string: 'RGB10p32'): Red, Green, Blue 10 bit packed in 32 bit pixel.
     *  - \b RGB12 (Display string: 'RGB12'): Red, Green, Blue 12 bit.
     *  - \b RGB12_Planar (Display string: 'RGB12_Planar'): Red, Green, Blue 12 bit planar.
     *  - \b RGB16 (Display string: 'RGB16'): Red, Green, Blue 16 bit.
     *  - \b RGB16_Planar (Display string: 'RGB16_Planar'): Red, Green, Blue 16 bit planar.
     *  - \b RGB565p (Display string: 'RGB565p'): Red, Green, Blue 16 bit packet in 5, 6, 5 bits.
     *  - \b BGR10 (Display string: 'BGR10'): Blue, Green, Red, 10 bit.
     *  - \b BGR12 (Display string: 'BGR12'): Blue, Green, Red, 12 bit.
     *  - \b BGR16 (Display string: 'BGR16'): Blue, Green, Red, 16 bit.
     *  - \b BGR565p (Display string: 'BGR565p'): Blue, Green, Red, 16 bit packet in 5, 6, 5 bits.
     *  - \b BGR8 (Display string: 'BGR8'): Blue, Green, Red, 8 bit.
     *  - \b BGRa8 (Display string: 'BGRa8'): Blue, Green, Red, Alpha 8 bit.
     *  - \b YUV422_8 (Display string: 'YUV422_8'): YUV 422 8 bit.
     *  - \b YCbCr411_8 (Display string: 'YCbCr411_8'): YCrCb 411 8 bit.
     *  - \b YCbCr422_8 (Display string: 'YCbCr422_8'): YCrCb 422 8 bit.
     *  - \b YCbCr601_422_8 (Display string: 'YCbCr601_422_8'): YCrCb 601 422 8 bit.
     *  - \b YCbCr709_422_8 (Display string: 'YCbCr709_422_8'): YCrCb 709 422 8 bit.
     *  - \b YCbCr8 (Display string: 'YCbCr8'): YCbCr 8 bit.
     *  - \b BayerBG8 (Display string: 'BayerBG8'): Bayer Blue Green 8 bit.
     *  - \b BayerGB8 (Display string: 'BayerGB8'): Bayer Green Blue 8 bit.
     *  - \b BayerGR8 (Display string: 'BayerGR8'): Bayer Green Red 8 bit.
     *  - \b BayerRG8 (Display string: 'BayerRG8'): Bayer Red Green 8 bit.
     *  - \b BayerBG10 (Display string: 'BayerBG10'): Bayer Blue Green 10 bit.
     *  - \b BayerGB10 (Display string: 'BayerGB10'): Bayer Green Blue 10 bit.
     *  - \b BayerGR10 (Display string: 'BayerGR10'): Bayer Green Red 10 bit.
     *  - \b BayerRG10 (Display string: 'BayerRG10'): Bayer Red Green 10 bit.
     *  - \b BayerBG12 (Display string: 'BayerBG12'): Bayer Blue Green 12 bit
     *  - \b BayerGB12 (Display string: 'BayerGB12'): Bayer Green Blue 12 bit
     *  - \b BayerGR12 (Display string: 'BayerGR12'): Bayer Green Red 12 bit.
     *  - \b BayerRG12 (Display string: 'BayerRG12'): Bayer Red Green 12 bit.
     *  - \b BayerBG16 (Display string: 'BayerBG16'): Bayer Blue Green 16 bit.
     *  - \b BayerGB16 (Display string: 'BayerGB16'): Bayer Green Blue 16 bit.
     *  - \b BayerGR16 (Display string: 'BayerGR16'): Bayer Green Red 16 bit.
     *  - \b BayerRG16 (Display string: 'BayerRG16'): Bayer Red Green 16 bit.
     *  - \b Coord3D_A8 (Display string: 'Coord3D_A8'): 3D coordinate, first component 8 bit.
     *  - \b Coord3D_B8 (Display string: 'Coord3D_B8'): 3D coordinate, second component 8 bit.
     *  - \b Coord3D_C8 (Display string: 'Coord3D_C8'): 3D coordinate, third component 8 bit.
     *  - \b Coord3D_ABC8 (Display string: 'Coord3D_ABC8'): 3D coordinates, 3 components 8 bit.
     *  - \b Coord3D_ABC8_Planar (Display string: 'Coord3D_ABC8_Planar'): 3D coordinates, 3 components 8 bit planar.
     *  - \b Coord3D_A16 (Display string: 'Coord3D_A16'): 3D coordinate, first component 16 bit.
     *  - \b Coord3D_B16 (Display string: 'Coord3D_B16'): 3D coordinate, second component 16 bit.
     *  - \b Coord3D_C16 (Display string: 'Coord3D_C16'): 3D coordinate, third component 16 bit.
     *  - \b Coord3D_ABC16 (Display string: 'Coord3D_ABC16'): 3D coordinates, 3 components 16 bit.
     *  - \b Coord3D_ABC16_Planar (Display string: 'Coord3D_ABC16_Planar'): 3D coordinates, 3 components 16 bit planar.
     *  - \b Coord3D_A32f (Display string: 'Coord3D_A32f'): 3D coordinate, first component 32 bit float.
     *  - \b Coord3D_B32f (Display string: 'Coord3D_B32f'): 3D coordinate, second component 32 bit float.
     *  - \b Coord3D_C32f (Display string: 'Coord3D_C32f'): 3D coordinate, third component 32 bit float.
     *  - \b Coord3D_ABC32f (Display string: 'Coord3D_ABC32f'): 3D coordinates, 3 components 32 bit float.
     *  - \b Coord3D_ABC32f_Planar (Display string: 'Coord3D_ABC32f_Planar'): 3D coordinates, 3 components 32 bit float planar.
     *  - \b Confidence1 (Display string: 'Confidence1'): Confidence data 1 bit.
     *  - \b Confidence1p (Display string: 'Confidence1p'): Confidence data 1 bit packed.
     *  - \b Confidence8 (Display string: 'Confidence8'): Confidence data 8 bit.
     *  - \b Confidence16 (Display string: 'Confidence16'): Confidence data 16 bit.
     *  - \b Confidence32f (Display string: 'Confidence32f'): Confidence data 32 bit float.
     *  - \b Data8 (Display string: 'Data8'): Generic non-pixel data 8 bit.
     *  - \b Data8s (Display string: 'Data8s'): Generic non-pixel data 8 bit signed.
     *  - \b Data16 (Display string: 'Data16'): Generic non-pixel data 16 bit.
     *  - \b Data16s (Display string: 'Data16s'): Generic non-pixel data 16 bit signed.
     *  - \b Data32 (Display string: 'Data32'): Generic non-pixel data 32 bit.
     *  - \b Data32s (Display string: 'Data32s'): Generic non-pixel data 32 bit signed.
     *  - \b Data32f (Display string: 'Data32f'): Generic non-pixel data 32 bit floating point.
     *  - \b Data64 (Display string: 'Data64'): Generic non-pixel data 64 bit.
     *  - \b Data64s (Display string: 'Data64s'): Generic non-pixel data 64 bit signed.
     *  - \b Data64f (Display string: 'Data64f'): Generic non-pixel data 64 bit floating point.
     *  - \b Raw8 (Display string: 'Raw8'): Raw 8 bit.
     *  - \b Raw16 (Display string: 'Raw16'): Raw 16 bit.
     *  - \b Mono12Packed (Display string: 'Mono12Packed'): Mono 12 bit packed (GigE Vision Specific).
     *  - \b BayerGR10Packed (Display string: 'BayerGR10Packed'): Bayer GR 10 bit packed (GigE Vision Specific).
     *  - \b BayerRG10Packed (Display string: 'BayerRG10Packed'): Bayer RG 10 bit packed (GigE Vision Specific).
     *  - \b BayerGB10Packed (Display string: 'BayerGB10Packed'): Bayer GB 10 bit packed (GigE Vision Specific).
     *  - \b BayerBG10Packed (Display string: 'BayerBG10Packed'): Bayer BG 10 bit packed (GigE Vision Specific).
     *  - \b BayerGR12Packed (Display string: 'BayerGR12Packed'): Bayer GR 12 bit packed (GigE Vision Specific).
     *  - \b BayerRG12Packed (Display string: 'BayerRG12Packed'): Bayer RG 12 bit packed (GigE Vision Specific).
     *  - \b BayerGB12Packed (Display string: 'BayerGB12Packed'): Bayer GB 12 bit packed (GigE Vision Specific).
     *  - \b BayerBG12Packed (Display string: 'BayerBG12Packed'): Bayer BG 12 bit packed (GigE Vision Specific).
     *  - \b RGB10V1Packed (Display string: 'RGB10V1Packed'): RGB 10 bit packed (GigE Vision Specific).
     *  - \b RGB12V1Packed (Display string: 'RGB12V1Packed'): RGB 12 bit packed (GigE Vision Specific).
     *  - \b Mono8Signed (Display string: 'Mono 8 Signed')
     *  - \b Mono10Packed (Display string: 'Mono 10 Packed')
     *  - \b RGB8Packed (Display string: 'RGB 8 Packed')
     *  - \b BGR8Packed (Display string: 'BGR 8 Packed')
     *  - \b RGBA8Packed (Display string: 'RGBA 8 Packed')
     *  - \b BGRA8Packed (Display string: 'BGRA 8 Packed')
     *  - \b RGB10Packed (Display string: 'RGB 10 Packed')
     *  - \b BGR10Packed (Display string: 'BGR 10 Packed')
     *  - \b RGB12Packed (Display string: 'RGB 12 Packed')
     *  - \b BGR12Packed (Display string: 'BGR 12 Packed')
     *  - \b RGB16Packed (Display string: 'RGB 16 Packed')
     *  - \b RGB10V2Packed (Display string: 'RGB 10 V 2 Packed')
     *  - \b RGB565Packed (Display string: 'RGB 565 Packed')
     *  - \b BGR565Packed (Display string: 'BGR 565 Packed')
     *  - \b YUV411Packed (Display string: 'YUV 411 Packed')
     *  - \b YUV422Packed (Display string: 'YUV 422 Packed')
     *  - \b YUV444Packed (Display string: 'YUV 444 Packed')
     *  - \b YUYVPacked (Display string: 'YUYV Packed')
     *  - \b RGB8Planar (Display string: 'RGB 8 Planar')
     *  - \b RGB10Planar (Display string: 'RGB 10 Planar')
     *  - \b RGB12Planar (Display string: 'RGB 12 Planar')
     *  - \b RGB16Planar (Display string: 'RGB 16 Planar')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 pixelFormat;
    /// \brief An enumerated integer property. Select the pixel format for which the information will be returned.
    /**
     *  Select the pixel format for which the information will be returned.
     *
     *  The following string values might be valid for this feature:
     *  - \b Mono1p (Display string: 'Mono1p'): Mono 1 bit packed.
     *  - \b Mono2p (Display string: 'Mono2p'): Mono 2 bit packed.
     *  - \b Mono4p (Display string: 'Mono4p'): Mono 4 bit packed.
     *  - \b Mono8 (Display string: 'Mono8'): Mono 8 bit packed.
     *  - \b Mono10 (Display string: 'Mono10'): Mono 10 bit.
     *  - \b Mono10p (Display string: 'Mono10p'): Mono 10 bit packed.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 pixelFormatInfoSelector;
    /// \brief An integer property. Returns the value used by the streaming channels to identify the selected pixel format.
    /**
     *  Returns the value used by the streaming channels to identify the selected pixel format.
     */
    PropertyI64 pixelFormatInfoID;
    /// \brief An enumerated integer property. This feature is deprecated.
    /**
     *  \deprecated
     *  This feature is deprecated. It represents the coding of the pixels in the image. Raw gives the data in the native format of the sensor.
     *
     *  The following string values might be valid for this feature:
     *  - \b Mono (Display string: 'Mono'): Mono.
     *  - \b MonoSigned (Display string: 'MonoSigned'): Mono signed.
     *  - \b MonoPacked (Display string: 'MonoPacked'): Mono packed.
     *  - \b RGBPacked (Display string: 'RGBPacked'): RGB packed.
     *  - \b BGRPacked (Display string: 'BGRPacked'): BGR packed.
     *  - \b RGBAPacked (Display string: 'RGBAPacked'): RGBA packed.
     *  - \b BGRAPacked (Display string: 'BGRAPacked'): BGRA packed.
     *  - \b RGBPlanar (Display string: 'RGBPlanar'): RGB planar.
     *  - \b YUV411Packed (Display string: 'YUV411Packed'): YUV 411 packed.
     *  - \b YUV422Packed (Display string: 'YUV422Packed'): YUV 422 packed.
     *  - \b YUV444Packed (Display string: 'YUV444Packed'): YUV 444 packed.
     *  - \b YUYVPacked (Display string: 'YUYVPacked'): YUYV packed.
     *  - \b Raw (Display string: 'Raw'): Raw.
     *  - \b RawPacked (Display string: 'RawPacked'): Raw packed.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 pixelCoding;
    /// \brief An enumerated integer property. Total size in bits of a pixel of the image.
    /**
     *  Total size in bits of a pixel of the image.
     *
     *  The following string values might be valid for this feature:
     *  - \b Bpp1 (Display string: 'Bpp1'): 1 bit per pixel.
     *  - \b Bpp2 (Display string: 'Bpp2'): 2 bits per pixel.
     *  - \b Bpp4 (Display string: 'Bpp4'): 4 bits per pixel.
     *  - \b Bpp8 (Display string: 'Bpp8'): 8 bits per pixel.
     *  - \b Bpp10 (Display string: 'Bpp10'): 10 bits per pixel.
     *  - \b Bpp12 (Display string: 'Bpp12'): 12 bits per pixel.
     *  - \b Bpp14 (Display string: 'Bpp14'): 14 bits per pixel.
     *  - \b Bpp16 (Display string: 'Bpp16'): 16 bits per pixel.
     *  - \b Bpp20 (Display string: 'Bpp20'): 20 bits per pixel.
     *  - \b Bpp24 (Display string: 'Bpp24'): 24 bits per pixel.
     *  - \b Bpp30 (Display string: 'Bpp30'): 30 bits per pixel.
     *  - \b Bpp32 (Display string: 'Bpp32'): 32 bits per pixel.
     *  - \b Bpp36 (Display string: 'Bpp36'): 36 bits per pixel.
     *  - \b Bpp48 (Display string: 'Bpp48'): 48 bits per pixel.
     *  - \b Bpp64 (Display string: 'Bpp64'): 64 bits per pixel.
     *  - \b Bpp96 (Display string: 'Bpp96'): 96 bits per pixel.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 pixelSize;
    /// \brief An enumerated integer property. Type of color filter that is applied to the image.
    /**
     *  Type of color filter that is applied to the image.
     *
     *  The following string values might be valid for this feature:
     *  - \b None (Display string: 'None'): No color filter.
     *  - \b BayerRG (Display string: 'BayerRG'): Bayer Red Green filter.
     *  - \b BayerGB (Display string: 'BayerGB'): Bayer Green Blue filter.
     *  - \b BayerGR (Display string: 'BayerGR'): Bayer Green Red filter.
     *  - \b BayerBG (Display string: 'BayerBG'): Bayer Blue Green filter.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 pixelColorFilter;
    /// \brief An integer property. Minimum value that can be returned during the digitization process.
    /**
     *  Minimum value that can be returned during the digitization process. This corresponds to the darkest value of the camera. For color camera, this returns the smallest value that each color component can take.
     */
    PropertyI64 pixelDynamicRangeMin;
    /// \brief An integer property. Maximum value that will be returned during the digitization process.
    /**
     *  Maximum value that will be returned during the digitization process. This corresponds to the brightest value of the camera. For color camera, this returns the biggest value that each color component can take.
     */
    PropertyI64 pixelDynamicRangeMax;
    /// \brief An enumerated integer property. Selects which test pattern generator is controlled by the TestPattern feature.
    /**
     *  Selects which test pattern generator is controlled by the TestPattern feature.
     *
     *  The following string values might be valid for this feature:
     *  - \b Sensor (Display string: 'Sensor'): TestPattern feature will control the sensor's test pattern generator.
     *  - \b Region0 (Display string: 'Region 0'): TestPattern feature will control the region 0 test pattern generator.
     *  - \b Region1 (Display string: 'Region 1'): TestPattern feature will control the region 1 test pattern generator.
     *  - \b Region2 (Display string: 'Region 2'): TestPattern feature will control the region 2 test pattern generator.
     *  - \b Region\#3\# (Display string: 'Region \#3\#'): TestPattern feature will control the region \#3\# test pattern generator.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 testPatternGeneratorSelector;
    /// \brief An enumerated integer property. Selects the type of test pattern that is generated by the device as image source.
    /**
     *  Selects the type of test pattern that is generated by the device as image source.
     *
     *  The following string values might be valid for this feature:
     *  - \b Off (Display string: 'Off'): Image is coming from the sensor.
     *  - \b Black (Display string: 'Black'): Image is filled with the darkest possible image.
     *  - \b White (Display string: 'White'): Image is filled with the brightest possible image.
     *  - \b GreyHorizontalRamp (Display string: 'Grey Horizontal Ramp'): Image is filled horizontally with an image that goes from the darkest possible value to the brightest.
     *  - \b GreyVerticalRamp (Display string: 'Grey Vertical Ramp'): Image is filled vertically with an image that goes from the darkest possible value to the brightest.
     *  - \b GreyHorizontalRampMoving (Display string: 'Grey Horizontal Ramp Moving'): Image is filled horizontally with an image that goes from the darkest possible value to the brightest and that moves horizontally from left to right at each frame.
     *  - \b GreyVerticalRampMoving (Display string: 'Grey Vertical Ramp Moving'): Image is filled vertically with an image that goes from the darkest possible value to the brightest and that moves vertically from top to bottom at each frame.
     *  - \b HorizontalLineMoving (Display string: 'Horizontal Line Moving'): A moving horizontal line is superimposed on the live image.
     *  - \b VerticalLineMoving (Display string: 'Vertical Line Moving'): A moving vertical line is superimposed on the live image.
     *  - \b ColorBar (Display string: 'Color Bar'): Image is filled with stripes of color including White, Black, Red, Green, Blue, Cyan, Magenta and Yellow.
     *  - \b FrameCounter (Display string: 'Frame Counter'): A frame counter is superimposed on the live image.
     *  - \b HorzontalLineMoving (Display string: 'Horzontal Line Moving')
     *  - \b mvBayerRaw (Display string: 'mv Bayer Raw')
     *  - \b mvGreyDiagonalRamp (Display string: 'mv Grey Diagonal Ramp')
     *  - \b mvFadeToGreyColorBar (Display string: 'mv Fade To Grey Color Bar')
     *  - \b mvFFCImage (Display string: 'mv FFC Image')
     *  - \b mvMovingGreyDiagonalRamp (Display string: 'mv Moving Grey Diagonal Ramp')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 testPattern;
    /// \brief An enumerated integer property. This feature is deprecated (See TestPattern).
    /**
     *  \deprecated
     *  This feature is deprecated (See TestPattern). Selects the type of test image that is sent by the device.
     *
     *  The following string values might be valid for this feature:
     *  - \b Off (Display string: 'Off'): Image is coming from the sensor.
     *  - \b Black (Display string: 'Black'): Image is filled with the darkest possible image.
     *  - \b White (Display string: 'White'): Image is filled with the brightest possible image.
     *  - \b GreyHorizontalRamp (Display string: 'Grey Horizontal Ramp'): Image is filled horizontally with an image that goes from the darkest possible value to the brightest.
     *  - \b GreyVerticalRamp (Display string: 'Grey Vertical Ramp'): Image is filled vertically with an image that goes from the darkest possible value to the brightest.
     *  - \b GreyHorizontalRampMoving (Display string: 'Grey Horizontal Ramp Moving'): Image is filled horizontally with an image that goes from the darkest possible value to the brightest and that moves horizontally from left to right at each frame.
     *  - \b GreyVerticalRampMoving (Display string: 'Grey Vertical Ramp Moving'): Image is filled vertically with an image that goes from the darkest possible value to the brightest and that moves vertically from top to bottom at each frame.
     *  - \b HorizontalLineMoving (Display string: 'Horizontal Line Moving'): A moving horizontal line is superimposed on the live image.
     *  - \b VerticalLineMoving (Display string: 'Vertical Line Moving'): A moving vertical line is superimposed on the live image.
     *  - \b ColorBar (Display string: 'Color Bar'): Image is filled with stripes of color including White, Black, Red, Green, Blue, Cyan, Magenta and Yellow.
     *  - \b FrameCounter (Display string: 'Frame Counter'): A frame counter is superimposed on the live image.
     *  - \b HorzontalLineMoving (Display string: 'Horzontal Line Moving')
     *  - \b mvBayerRaw (Display string: 'mv Bayer Raw')
     *  - \b mvGreyDiagonalRamp (Display string: 'mv Grey Diagonal Ramp')
     *  - \b mvFadeToGreyColorBar (Display string: 'mv Fade To Grey Color Bar')
     *  - \b mvFFCImage (Display string: 'mv FFC Image')
     *  - \b mvMovingGreyDiagonalRamp (Display string: 'mv Moving Grey Diagonal Ramp')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 testImageSelector;
    /// \brief An enumerated integer property. Controls how the device performs de-interlacing.
    /**
     *  Controls how the device performs de-interlacing.
     *
     *  The following string values might be valid for this feature:
     *  - \b Off (Display string: 'Off'): The device doesn't perform de-interlacing.
     *  - \b LineDuplication (Display string: 'Line Duplication'): The device performs de-interlacing by outputting each line of each field twice.
     *  - \b Weave (Display string: 'Weave'): The device performs de-interlacing by interleaving the lines of all fields.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 deinterlacing;
    /// \brief An enumerated integer property. Enable a specific image compression mode as the base mode for image transfer.
    /**
     *  Enable a specific image compression mode as the base mode for image transfer. Optionally, chunk data can be appended to the compressed image (See the  REF _Ref397502619 \h  chapter).
     *
     *  The following string values might be valid for this feature:
     *  - \b Off (Display string: 'Off'): Default value. Image compression is disabled. Images are transmitted uncompressed.
     *  - \b JPEG (Display string: 'JPEG'): JPEG compression is selected.
     *  - \b JPEG2000 (Display string: 'JPEG 2000'): JPEG 2000 compression is selected.
     *  - \b H264 (Display string: 'H 264'): H.264 compression is selected.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 imageCompressionMode;
    /// \brief An enumerated integer property. Two rate controlling options are offered: fixed bit rate or fixed quality.
    /**
     *  Two rate controlling options are offered: fixed bit rate or fixed quality. The exact implementation to achieve one or the other is vendor-specific.
     *
     *  The following string values might be valid for this feature:
     *  - \b FixBitrate (Display string: 'Fix Bitrate'): Output stream follows a constant bit rate. Allows easy bandwidth management on the link.
     *  - \b FixQuality (Display string: 'Fix Quality'): Output stream has a constant image quality. Can be used when image processing algorithms are sensitive to image degradation caused by excessive data compression.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 imageCompressionRateOption;
    /// \brief An integer property. Control the quality of the produced compressed stream.
    /**
     *  Control the quality of the produced compressed stream.
     */
    PropertyI64 imageCompressionQuality;
    /// \brief A floating point property. Control the rate of the produced compressed stream.
    /**
     *  Control the rate of the produced compressed stream.
     */
    PropertyF imageCompressionBitrate;
    /// \brief An enumerated integer property. When JPEG is selected as the compression format, a device might optionally offer better control over JPEG-specific options through this feature.
    /**
     *  When JPEG is selected as the compression format, a device might optionally offer better control over JPEG-specific options through this feature.
     *
     *  The following string values might be valid for this feature:
     *  - \b Lossless (Display string: 'Lossless'): Selects lossless JPEG compression based on a predictive coding model.
     *  - \b BaselineStandard (Display string: 'Baseline Standard'): Indicates this is a baseline sequential (single-scan) DCT-based JPEG.
     *  - \b BaselineOptimized (Display string: 'Baseline Optimized'): Provides optimized color and slightly better compression than baseline standard by using custom Huffman tables optimized after statistical analysis of the image content.
     *  - \b Progressive (Display string: 'Progressive'): Indicates this is a progressive (multi-scan) DCT-based JPEG.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 imageCompressionJPEGFormatOption;
    /// \brief An enumerated integer property. This feature manually selects the resolution of the device's ADC.
    /**
     *  This feature manually selects the resolution of the device's ADC.
     *
     *  The following string values might be valid for this feature:
     *  - \b Auto (Display string: 'Auto'): When the selected pixel format has 12 bits or more the ADC will work with 12 bits. Otherwise the ADC will work with 10 bits.
     *  - \b Bpp8 (Display string: 'Bpp 8'): The ADC will always work with a resolution of  8 bits no matter which pixel format has been selected.
     *  - \b Bpp10 (Display string: 'Bpp 10'): The ADC will always work with a resolution of 10 bits no matter which pixel format has been selected.
     *  - \b Bpp12 (Display string: 'Bpp 12'): The ADC will always work with a resolution of 12 bits no matter which pixel format has been selected. This will allow to achieve higher precision and thus improved quality when internal processing is done (e.g. when applying digital gain to the image).
     *  - \b Fixed (Display string: 'Fixed')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvSensorDigitizationBitDepth;
    // *INDENT-OFF*
    PYTHON_OR_JAVA_ONLY( %mutable; )
    // *INDENT-ON*
};

//-----------------------------------------------------------------------------
/// \brief Category for the acquisition and trigger control features.
/**
 *  A category for the acquisition and trigger control features.
 * \ingroup GenICamInterfaceDevice
 */
class AcquisitionControl
//-----------------------------------------------------------------------------
{
public:
    /// \brief Constructs a new <b>mvIMPACT::acquire::GenICam::AcquisitionControl</b> object.
    explicit AcquisitionControl(
        /// [in] A pointer to a <b>mvIMPACT::acquire::Device</b> object obtained from a <b>mvIMPACT::acquire::DeviceManager</b> object.
        mvIMPACT::acquire::Device* pDev,
        /// [in] The name of the driver internal setting to access with this instance.
        /// A list of valid setting names can be obtained by a call to
        /// <b>mvIMPACT::acquire::FunctionInterface::getAvailableSettings</b>, new
        /// settings can be created with the function
        /// <b>mvIMPACT::acquire::FunctionInterface::createSetting</b>
        const std::string& settingName = "Base" ) :
        acquisitionMode(),
        acquisitionStart(),
        acquisitionStop(),
        acquisitionStopMode(),
        acquisitionAbort(),
        acquisitionArm(),
        acquisitionFrameCount(),
        acquisitionBurstFrameCount(),
        mvSensorRegister(),
        mvSensorRegisterValue(),
        acquisitionFrameRate(),
        acquisitionFrameRateEnable(),
        acquisitionLineRate(),
        acquisitionLineRateEnable(),
        acquisitionStatusSelector(),
        acquisitionStatus(),
        triggerSelector(),
        triggerMode(),
        triggerSoftware(),
        triggerSource(),
        triggerActivation(),
        triggerOverlap(),
        triggerDelay(),
        triggerDivider(),
        triggerMultiplier(),
        exposureMode(),
        exposureTimeMode(),
        exposureTimeSelector(),
        exposureTime(),
        mvExposureHorizontalZoneDivider(),
        exposureAuto(),
        multiSlopeMode(),
        multiSlopeKneePointCount(),
        multiSlopeKneePointSelector(),
        multiSlopeExposureLimit(),
        multiSlopeSaturationThreshold(),
        multiSlopeIntensityLimit(),
        multiSlopeExposureGradient(),
        mvAcquisitionFrameRateLimitMode(),
        mvAcquisitionFrameRateEnable(),
        mvResultingFrameRate(),
        mvShutterMode(),
        mvCompressionKneepoint(),
        mvExposureAutoLowerLimit(),
        mvExposureAutoUpperLimit(),
        mvExposureAutoSpeed(),
        mvExposureAutoDelayImages(),
        mvExposureAutoAverageGrey(),
        mvExposureAutoHighlightAOI(),
        mvExposureAutoAOIMode(),
        mvExposureAutoOffsetX(),
        mvExposureAutoOffsetY(),
        mvExposureAutoWidth(),
        mvExposureAutoHeight(),
        mvExposureAutoMode(),
        mvSmearReduction(),
        mvAcquisitionMemoryMode(),
        mvPretriggerFrameCount(),
        mvAcquisitionMemoryMaxFrameCount(),
        mvAcquisitionMemoryFrameCount(),
        mvAcquisitionMemoryAOIParameterChanged(),
        mvFeatureMode(),
        mvSmartFrameRecallEnable(),
        mvSmartFrameRecallTimestampLookupAccuracy(),
        mvSmartFrameRecallFrameSkipRatio(),
        mvLensCalibrationEnable()
    {
        pDev->validateInterfaceLayout( dilGenICam );
        mvIMPACT::acquire::DeviceComponentLocator locator( pDev, mvIMPACT::acquire::dltSetting, settingName );
        locator.bindSearchBase( locator.searchbase_id(), "Camera/GenICam" );
        locator.bindComponent( acquisitionMode, "AcquisitionMode" );
        locator.bindComponent( acquisitionStart, "AcquisitionStart@i" );
        locator.bindComponent( acquisitionStop, "AcquisitionStop@i" );
        locator.bindComponent( acquisitionStopMode, "AcquisitionStopMode" );
        locator.bindComponent( acquisitionAbort, "AcquisitionAbort@i" );
        locator.bindComponent( acquisitionArm, "AcquisitionArm@i" );
        locator.bindComponent( acquisitionFrameCount, "AcquisitionFrameCount" );
        locator.bindComponent( acquisitionBurstFrameCount, "AcquisitionBurstFrameCount" );
        locator.bindComponent( mvSensorRegister, "mvSensorRegister" );
        locator.bindComponent( mvSensorRegisterValue, "mvSensorRegisterValue" );
        locator.bindComponent( acquisitionFrameRate, "AcquisitionFrameRate" );
        if( !acquisitionFrameRate.isValid() )
        {
            locator.bindComponent( acquisitionFrameRate, "AcquisitionFrameRateAbs" );
        }
        locator.bindComponent( acquisitionFrameRateEnable, "AcquisitionFrameRateEnable" );
        locator.bindComponent( acquisitionLineRate, "AcquisitionLineRate" );
        if( !acquisitionLineRate.isValid() )
        {
            locator.bindComponent( acquisitionLineRate, "AcquisitionLineRateAbs" );
        }
        locator.bindComponent( acquisitionLineRateEnable, "AcquisitionLineRateEnable" );
        locator.bindComponent( acquisitionStatusSelector, "AcquisitionStatusSelector" );
        locator.bindComponent( acquisitionStatus, "AcquisitionStatus" );
        locator.bindComponent( triggerSelector, "TriggerSelector" );
        locator.bindComponent( triggerMode, "TriggerMode" );
        locator.bindComponent( triggerSoftware, "TriggerSoftware@i" );
        locator.bindComponent( triggerSource, "TriggerSource" );
        locator.bindComponent( triggerActivation, "TriggerActivation" );
        locator.bindComponent( triggerOverlap, "TriggerOverlap" );
        locator.bindComponent( triggerDelay, "TriggerDelay" );
        if( !triggerDelay.isValid() )
        {
            locator.bindComponent( triggerDelay, "TriggerDelayAbs" );
        }
        locator.bindComponent( triggerDivider, "TriggerDivider" );
        locator.bindComponent( triggerMultiplier, "TriggerMultiplier" );
        locator.bindComponent( exposureMode, "ExposureMode" );
        locator.bindComponent( exposureTimeMode, "ExposureTimeMode" );
        locator.bindComponent( exposureTimeSelector, "ExposureTimeSelector" );
        locator.bindComponent( exposureTime, "ExposureTime" );
        if( !exposureTime.isValid() )
        {
            locator.bindComponent( exposureTime, "ExposureTimeAbs" );
        }
        locator.bindComponent( mvExposureHorizontalZoneDivider, "mvExposureHorizontalZoneDivider" );
        locator.bindComponent( exposureAuto, "ExposureAuto" );
        locator.bindComponent( multiSlopeMode, "MultiSlopeMode" );
        locator.bindComponent( multiSlopeKneePointCount, "MultiSlopeKneePointCount" );
        locator.bindComponent( multiSlopeKneePointSelector, "MultiSlopeKneePointSelector" );
        locator.bindComponent( multiSlopeExposureLimit, "MultiSlopeExposureLimit" );
        locator.bindComponent( multiSlopeSaturationThreshold, "MultiSlopeSaturationThreshold" );
        locator.bindComponent( multiSlopeIntensityLimit, "MultiSlopeIntensityLimit" );
        locator.bindComponent( multiSlopeExposureGradient, "MultiSlopeExposureGradient" );
        locator.bindComponent( mvAcquisitionFrameRateLimitMode, "mvAcquisitionFrameRateLimitMode" );
        locator.bindComponent( mvAcquisitionFrameRateEnable, "mvAcquisitionFrameRateEnable" );
        locator.bindComponent( mvResultingFrameRate, "mvResultingFrameRate" );
        locator.bindComponent( mvShutterMode, "mvShutterMode" );
        locator.bindComponent( mvCompressionKneepoint, "mvCompressionKneepoint" );
        locator.bindComponent( mvExposureAutoLowerLimit, "mvExposureAutoLowerLimit" );
        locator.bindComponent( mvExposureAutoUpperLimit, "mvExposureAutoUpperLimit" );
        locator.bindComponent( mvExposureAutoSpeed, "mvExposureAutoSpeed" );
        locator.bindComponent( mvExposureAutoDelayImages, "mvExposureAutoDelayImages" );
        locator.bindComponent( mvExposureAutoAverageGrey, "mvExposureAutoAverageGrey" );
        locator.bindComponent( mvExposureAutoHighlightAOI, "mvExposureAutoHighlightAOI" );
        locator.bindComponent( mvExposureAutoAOIMode, "mvExposureAutoAOIMode" );
        locator.bindComponent( mvExposureAutoOffsetX, "mvExposureAutoOffsetX" );
        locator.bindComponent( mvExposureAutoOffsetY, "mvExposureAutoOffsetY" );
        locator.bindComponent( mvExposureAutoWidth, "mvExposureAutoWidth" );
        locator.bindComponent( mvExposureAutoHeight, "mvExposureAutoHeight" );
        locator.bindComponent( mvExposureAutoMode, "mvExposureAutoMode" );
        locator.bindComponent( mvSmearReduction, "mvSmearReduction" );
        locator.bindComponent( mvAcquisitionMemoryMode, "mvAcquisitionMemoryMode" );
        locator.bindComponent( mvPretriggerFrameCount, "mvPretriggerFrameCount" );
        locator.bindComponent( mvAcquisitionMemoryMaxFrameCount, "mvAcquisitionMemoryMaxFrameCount" );
        locator.bindComponent( mvAcquisitionMemoryFrameCount, "mvAcquisitionMemoryFrameCount" );
        locator.bindComponent( mvAcquisitionMemoryAOIParameterChanged, "mvAcquisitionMemoryAOIParameterChanged" );
        locator.bindComponent( mvFeatureMode, "mvFeatureMode" );
        locator.bindComponent( mvSmartFrameRecallEnable, "mvSmartFrameRecallEnable" );
        locator.bindComponent( mvSmartFrameRecallTimestampLookupAccuracy, "mvSmartFrameRecallTimestampLookupAccuracy" );
        locator.bindComponent( mvSmartFrameRecallFrameSkipRatio, "mvSmartFrameRecallFrameSkipRatio" );
        locator.bindComponent( mvLensCalibrationEnable, "mvLensCalibrationEnable" );
    }
    // *INDENT-OFF*
    PYTHON_OR_JAVA_ONLY( %immutable; )
    // *INDENT-ON*
    /// \brief An enumerated integer property. Sets the acquisition mode of the device.
    /**
     *  Sets the acquisition mode of the device. It defines mainly the number of frames to capture during an acquisition and the way the acquisition stops.
     *
     *  The following string values might be valid for this feature:
     *  - \b SingleFrame (Display string: 'Single Frame'): One frame is captured.
     *  - \b MultiFrame (Display string: 'Multi Frame'): The number of frames specified by AcquisitionFrameCount is captured.
     *  - \b Continuous (Display string: 'Continuous'): Frames are captured continuously until stopped with the AcquisitionStop command.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 acquisitionMode;
    /// \brief A method object. Starts the Acquisition of the device.
    /**
     *  Starts the Acquisition of the device. The number of frames captured is specified by AcquisitionMode.
     */
    Method acquisitionStart;
    /// \brief A method object. Stops the Acquisition of the device at the end of the current Frame.
    /**
     *  Stops the Acquisition of the device at the end of the current Frame. It is mainly used when AcquisitionMode is Continuous but can be used in any acquisition mode.
     */
    Method acquisitionStop;
    /// \brief An enumerated integer property. Controls how the AcquisitionStop command and the acquisition stopped using a trigger (e.g.
    /**
     *  Controls how the AcquisitionStop command and the acquisition stopped using a trigger (e.g. AcquisitionActive, FrameBurstActive, FrameActive or FrameEnd trigger), ends an ongoing frame. This feature is mainly used in Linescan devices where each line in a frame is acquired sequentially.
     *
     *  The following string values might be valid for this feature:
     *  - \b Complete (Display string: 'Complete'): When stopped during a frame, the device will continue acquisition of lines until the specified Height is reached to deliver a complete default size frame. Note that if each line is triggered from an external source and this line trigger stops no frame is delivered, and an AcquisitionAbort is needed.
     *  - \b Immediate (Display string: 'Immediate'): Acquisition stops immediately even during a frame and only the lines acquired at the time  are delivered.
     *  - \b ImmediateWithPadding (Display string: 'Immediate With Padding'): Acquisition stops immediately even during a frame but the remaining of the frame will be padded with data to deliver a complete default Height frame.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 acquisitionStopMode;
    /// \brief A method object. Aborts the Acquisition immediately.
    /**
     *  Aborts the Acquisition immediately. This will end the capture without completing the current Frame or waiting on a trigger. If no Acquisition is in progress, the command is ignored.
     */
    Method acquisitionAbort;
    /// \brief A method object. Arms the device before an AcquisitionStart command.
    /**
     *  Arms the device before an AcquisitionStart command. This optional command validates all the current features for consistency and prepares the device for a fast start of the Acquisition.
     */
    Method acquisitionArm;
    /// \brief An integer property. Number of frames to acquire in MultiFrame Acquisition mode.
    /**
     *  Number of frames to acquire in MultiFrame Acquisition mode.
     */
    PropertyI64 acquisitionFrameCount;
    /// \brief An integer property. Number of frames to acquire for each FrameBurstStart trigger.
    /**
     *  Number of frames to acquire for each FrameBurstStart trigger.
     */
    PropertyI64 acquisitionBurstFrameCount;
    /// \brief An integer property. Number of sensor register to access.
    /**
     *  Number of sensor register to access.
     */
    PropertyI64 mvSensorRegister;
    /// \brief An integer property. Value of sensor register.
    /**
     *  Value of sensor register.
     */
    PropertyI64 mvSensorRegisterValue;
    /// \brief A floating point property. Controls the acquisition rate (in Hertz) at which the frames are captured.
    /**
     *  Controls the acquisition rate (in Hertz) at which the frames are captured.
     */
    PropertyF acquisitionFrameRate;
    /// \brief A boolean property. Controls if the AcquisitionFrameRate feature is writable and used to control the acquisition rate.
    /**
     *  Controls if the AcquisitionFrameRate feature is writable and used to control the acquisition rate. Otherwise, the acquisition rate is implicitly controlled by the combination of other features like ExposureTime, etc...
     */
    PropertyIBoolean acquisitionFrameRateEnable;
    /// \brief A floating point property. Controls the rate (in Hertz) at which the Lines in a Frame are captured.
    /**
     *  Controls the rate (in Hertz) at which the Lines in a Frame are captured.
     */
    PropertyF acquisitionLineRate;
    /// \brief A boolean property. Controls if the AcquisitionLineRate feature is writable and used to control the acquisition rate.
    /**
     *  Controls if the AcquisitionLineRate feature is writable and used to control the acquisition rate. Otherwise, the acquisition rate is implicitly controlled by the combination of other features like ExposureTime, etc...
     */
    PropertyIBoolean acquisitionLineRateEnable;
    /// \brief An enumerated integer property. Selects the internal acquisition signal to read using AcquisitionStatus.
    /**
     *  Selects the internal acquisition signal to read using AcquisitionStatus.
     *
     *  The following string values might be valid for this feature:
     *  - \b AcquisitionTriggerWait (Display string: 'Acquisition Trigger Wait'): Device is currently waiting for a trigger for the capture of one or many frames.
     *  - \b AcquisitionActive (Display string: 'Acquisition Active'): Device is currently doing an acquisition of one or many frames.
     *  - \b AcquisitionTransfer (Display string: 'Acquisition Transfer'): Device is currently transferring an acquisition of one or many frames.
     *  - \b FrameTriggerWait (Display string: 'Frame Trigger Wait'): Device is currently waiting for a frame start trigger.
     *  - \b FrameActive (Display string: 'Frame Active'): Device is currently doing the capture of a frame.
     *  - \b ExposureActive (Display string: 'Exposure Active'): Device is doing the exposure of a frame.
     *  - \b FrameTransfer (Display string: 'Frame Transfer'): See TransferStatus.
     *  - \b FrameTransfer (Display string: 'Frame Transfer'): See TransferStatus.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 acquisitionStatusSelector;
    /// \brief A boolean property. Reads the state of the internal acquisition signal selected using AcquisitionStatusSelector.
    /**
     *  Reads the state of the internal acquisition signal selected using AcquisitionStatusSelector.
     */
    PropertyIBoolean acquisitionStatus;
    /// \brief An enumerated integer property. Selects the type of trigger to configure.
    /**
     *  Selects the type of trigger to configure.
     *
     *  The following string values might be valid for this feature:
     *  - \b AcquisitionStart (Display string: 'Acquisition Start'): Selects a trigger that starts the Acquisition of one or many frames according to AcquisitionMode.
     *  - \b AcquisitionEnd (Display string: 'Acquisition End'): Selects a trigger that ends the Acquisition of one or many frames according to AcquisitionMode.
     *  - \b AcquisitionActive (Display string: 'Acquisition Active'): Selects a trigger that controls the duration of the Acquisition of one or many frames. The Acquisition is activated when the trigger signal becomes active and terminated when it goes back to the inactive state.
     *  - \b FrameStart (Display string: 'Frame Start'): Selects a trigger starting the capture of one frame.
     *  - \b FrameEnd (Display string: 'Frame End'): Selects a trigger ending the capture of one frame (mainly used in linescan mode).
     *  - \b FrameActive (Display string: 'Frame Active'): Selects a trigger controlling the duration of one frame (mainly used in linescan mode).
     *  - \b FrameBurstStart (Display string: 'Frame Burst Start'): Selects a trigger starting the capture of the bursts of frames in an acquisition. AcquisitionBurstFrameCount controls the length of each burst unless a FrameBurstEnd trigger is active. The total number of frames captured is also conditioned by AcquisitionFrameCount if AcquisitionMode is MultiFrame.
     *  - \b FrameBurstEnd (Display string: 'Frame Burst End'): Selects a trigger ending the capture of the bursts of frames in an acquisition.
     *  - \b FrameBurstActive (Display string: 'Frame Burst Active'): Selects a trigger controlling the duration of the capture of the bursts of frames in an acquisition.
     *  - \b LineStart (Display string: 'Line Start'): Selects a trigger starting the capture of one Line of a Frame (mainly used in linescan mode).
     *  - \b ExposureStart (Display string: 'Exposure Start'): Selects a trigger controlling the start of the exposure of one Frame (or Line).
     *  - \b ExposureEnd (Display string: 'Exposure End'): Selects a trigger controlling the end of the exposure of one Frame (or Line).
     *  - \b ExposureActive (Display string: 'Exposure Active'): Selects a trigger controlling the duration of the exposure of one frame (or Line).
     *  - \b MultiSlopeExposureLimit1 (Display string: 'Multi Slope Exposure Limit 1'): Selects a trigger controlling the first duration of a multi-slope exposure. Exposure is continued according to the pre-defined multi-slope settings.
     *  - \b mvTimestampReset (Display string: 'mv Timestamp Reset')
     *  - \b mvLoopRecordEnd (Display string: 'mv Loop Record End')
     *  - \b mvFrameStartSensor2 (Display string: 'mv Frame Start Sensor 2')
     *  - \b mvInvalidTriggerSelector (Display string: 'mv Invalid Trigger Selector')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 triggerSelector;
    /// \brief An enumerated integer property. Controls if the selected trigger is active.
    /**
     *  Controls if the selected trigger is active.
     *
     *  The following string values might be valid for this feature:
     *  - \b Off (Display string: 'Off'): Disables the selected trigger.
     *  - \b On (Display string: 'On'): Enable the selected trigger.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 triggerMode;
    /// \brief A method object. Generates an internal trigger.
    /**
     *  Generates an internal trigger. TriggerSource must be set to Software.
     */
    Method triggerSoftware;
    /// \brief An enumerated integer property. Specifies the internal signal or physical input Line to use as the trigger source.
    /**
     *  Specifies the internal signal or physical input Line to use as the trigger source. The selected trigger must have its TriggerMode set to On.
     *
     *  The following string values might be valid for this feature:
     *  - \b Software (Display string: 'Software'): Specifies that the trigger source will be generated by software using the TriggerSoftware command.
     *  - \b SoftwareSignal0 (Display string: 'Software Signal 0'): Specifies that the trigger source will be a signal generated by software using the SoftwareSignalPulse command.
     *  - \b SoftwareSignal1 (Display string: 'Software Signal 1'): Specifies that the trigger source will be a signal generated by software using the SoftwareSignalPulse command.
     *  - \b SoftwareSignal2 (Display string: 'Software Signal 2'): Specifies that the trigger source will be a signal generated by software using the SoftwareSignalPulse command.
     *  - \b SoftwareSignal\#3\# (Display string: 'Software Signal \#3\#'): Specifies that the trigger source will be a signal generated by software using the SoftwareSignalPulse command.
     *  - \b Line0 (Display string: 'Line 0'): Specifies which physical line (or pin) and associated I/O control block to use as external source for the trigger signal.
     *  - \b Line1 (Display string: 'Line 1'): Specifies which physical line (or pin) and associated I/O control block to use as external source for the trigger signal.
     *  - \b Line2 (Display string: 'Line 2'): Specifies which physical line (or pin) and associated I/O control block to use as external source for the trigger signal.
     *  - \b Line\#3\# (Display string: 'Line \#3\#'): Specifies which physical line (or pin) and associated I/O control block to use as external source for the trigger signal.
     *  - \b UserOutput0 (Display string: 'User Output 0'): Specifies which User Output bit signal to use as internal source for the trigger.
     *  - \b UserOutput1 (Display string: 'User Output 1'): Specifies which User Output bit signal to use as internal source for the trigger.
     *  - \b UserOutput2 (Display string: 'User Output 2'): Specifies which User Output bit signal to use as internal source for the trigger.
     *  - \b UserOutput\#3\# (Display string: 'User Output \#3\#'): Specifies which User Output bit signal to use as internal source for the trigger.
     *  - \b Counter0Start (Display string: 'Counter 0 Start'): Specifies which of the Counter signal to use as internal source for the trigger.
     *  - \b Counter1Start (Display string: 'Counter 1 Start'): Specifies which of the Counter signal to use as internal source for the trigger.
     *  - \b Counter2Start (Display string: 'Counter 2 Start'): Specifies which of the Counter signal to use as internal source for the trigger.
     *  - \b Counter\#3\#Start (Display string: 'Counter \#3\# Start'): Specifies which of the Counter signal to use as internal source for the trigger.
     *  - \b Counter0End (Display string: 'Counter 0 End'): Specifies which of the Counter signal to use as internal source for the trigger.
     *  - \b Counter1End (Display string: 'Counter 1 End'): Specifies which of the Counter signal to use as internal source for the trigger.
     *  - \b Counter2End (Display string: 'Counter 2 End'): Specifies which of the Counter signal to use as internal source for the trigger.
     *  - \b Counter\#3\#End (Display string: 'Counter \#3\# End'): Specifies which of the Counter signal to use as internal source for the trigger.
     *  - \b Timer0Start (Display string: 'Timer 0 Start'): Specifies which Timer signal to use as internal source for the trigger.
     *  - \b Timer1Start (Display string: 'Timer 1 Start'): Specifies which Timer signal to use as internal source for the trigger.
     *  - \b Timer2Start (Display string: 'Timer 2 Start'): Specifies which Timer signal to use as internal source for the trigger.
     *  - \b Timer\#3\#Start (Display string: 'Timer \#3\# Start'): Specifies which Timer signal to use as internal source for the trigger.
     *  - \b Timer0End (Display string: 'Timer 0 End'): Specifies which Timer signal to use as internal source for the trigger.
     *  - \b Timer1End (Display string: 'Timer 1 End'): Specifies which Timer signal to use as internal source for the trigger.
     *  - \b Timer2End (Display string: 'Timer 2 End'): Specifies which Timer signal to use as internal source for the trigger.
     *  - \b Timer\#3\#End (Display string: 'Timer \#3\# End'): Specifies which Timer signal to use as internal source for the trigger.
     *  - \b Encoder0 (Display string: 'Encoder 0'): Specifies which Encoder signal to use as internal source for the trigger.
     *  - \b Encoder1 (Display string: 'Encoder 1'): Specifies which Encoder signal to use as internal source for the trigger.
     *  - \b Encoder2 (Display string: 'Encoder 2'): Specifies which Encoder signal to use as internal source for the trigger.
     *  - \b Encoder\#3\# (Display string: 'Encoder \#3\#'): Specifies which Encoder signal to use as internal source for the trigger.
     *  - \b LogicBlock0 (Display string: 'Logic Block 0'): Specifies which Logic Block signal to use as internal source for the trigger.
     *  - \b LogicBlock1 (Display string: 'Logic Block 1'): Specifies which Logic Block signal to use as internal source for the trigger.
     *  - \b LogicBlock2 (Display string: 'Logic Block 2'): Specifies which Logic Block signal to use as internal source for the trigger.
     *  - \b LogicBlock\#3\# (Display string: 'Logic Block \#3\#'): Specifies which Logic Block signal to use as internal source for the trigger.
     *  - \b Action0 (Display string: 'Action 0'): Specifies which Action command to use as internal source for the trigger.
     *  - \b Action1 (Display string: 'Action 1'): Specifies which Action command to use as internal source for the trigger.
     *  - \b Action2 (Display string: 'Action 2'): Specifies which Action command to use as internal source for the trigger.
     *  - \b Action\#3\# (Display string: 'Action \#3\#'): Specifies which Action command to use as internal source for the trigger.
     *  - \b LinkTrigger0 (Display string: 'Link Trigger 0'): Specifies which Link Trigger to use as  source for the trigger (received from the transport layer).
     *  - \b LinkTrigger1 (Display string: 'Link Trigger 1'): Specifies which Link Trigger to use as  source for the trigger (received from the transport layer).
     *  - \b LinkTrigger2 (Display string: 'Link Trigger 2'): Specifies which Link Trigger to use as  source for the trigger (received from the transport layer).
     *  - \b LinkTrigger\#3\# (Display string: 'Link Trigger \#3\#'): Specifies which Link Trigger to use as  source for the trigger (received from the transport layer).
     *  - \b CC1 (Display string: 'CC 1'): Index of the Camera Link physical line and associated I/O control block to use. This ensures a direct mapping between the lines on the frame grabber and on the camera. Applicable to CameraLink products only.
     *  - \b CC2 (Display string: 'CC 2'): Index of the Camera Link physical line and associated I/O control block to use. This ensures a direct mapping between the lines on the frame grabber and on the camera. Applicable to CameraLink products only.
     *  - \b CC3 (Display string: 'CC 3'): Index of the Camera Link physical line and associated I/O control block to use. This ensures a direct mapping between the lines on the frame grabber and on the camera. Applicable to CameraLink products only.
     *  - \b CC4 (Display string: 'CC 4'): Index of the Camera Link physical line and associated I/O control block to use. This ensures a direct mapping between the lines on the frame grabber and on the camera. Applicable to CameraLink products only.
     *  - \b CC\#5\# (Display string: 'CC \#5\#'): Index of the Camera Link physical line and associated I/O control block to use. This ensures a direct mapping between the lines on the frame grabber and on the camera. Applicable to CameraLink products only.
     *  - \b Line3 (Display string: 'Line 3'): Specifies which physical line (or pin) and associated I/O control block to use as external source for the trigger signal.
     *  - \b Line4 (Display string: 'Line 4'): Specifies which physical line (or pin) and associated I/O control block to use as external source for the trigger signal.
     *  - \b Line5 (Display string: 'Line 5'): Specifies which physical line (or pin) and associated I/O control block to use as external source for the trigger signal.
     *  - \b Line6 (Display string: 'Line 6'): Specifies which physical line (or pin) and associated I/O control block to use as external source for the trigger signal.
     *  - \b Line7 (Display string: 'Line 7'): Specifies which physical line (or pin) and associated I/O control block to use as external source for the trigger signal.
     *  - \b Line8 (Display string: 'Line 8'): Specifies which physical line (or pin) and associated I/O control block to use as external source for the trigger signal.
     *  - \b Line9 (Display string: 'Line 9'): Specifies which physical line (or pin) and associated I/O control block to use as external source for the trigger signal.
     *  - \b Line10 (Display string: 'Line 10'): Specifies which physical line (or pin) and associated I/O control block to use as external source for the trigger signal.
     *  - \b Line11 (Display string: 'Line 11'): Specifies which physical line (or pin) and associated I/O control block to use as external source for the trigger signal.
     *  - \b Line12 (Display string: 'Line 12'): Specifies which physical line (or pin) and associated I/O control block to use as external source for the trigger signal.
     *  - \b Line13 (Display string: 'Line 13'): Specifies which physical line (or pin) and associated I/O control block to use as external source for the trigger signal.
     *  - \b Line14 (Display string: 'Line 14'): Specifies which physical line (or pin) and associated I/O control block to use as external source for the trigger signal.
     *  - \b Line15 (Display string: 'Line 15'): Specifies which physical line (or pin) and associated I/O control block to use as external source for the trigger signal.
     *  - \b Timer3Start (Display string: 'Timer 3 Start'): Specifies which Timer signal to use as internal source for the trigger.
     *  - \b Timer4Start (Display string: 'Timer 4 Start'): Specifies which Timer signal to use as internal source for the trigger.
     *  - \b Timer5Start (Display string: 'Timer 5 Start'): Specifies which Timer signal to use as internal source for the trigger.
     *  - \b Timer6Start (Display string: 'Timer 6 Start'): Specifies which Timer signal to use as internal source for the trigger.
     *  - \b Timer7Start (Display string: 'Timer 7 Start'): Specifies which Timer signal to use as internal source for the trigger.
     *  - \b Timer8Start (Display string: 'Timer 8 Start'): Specifies which Timer signal to use as internal source for the trigger.
     *  - \b Timer9Start (Display string: 'Timer 9 Start'): Specifies which Timer signal to use as internal source for the trigger.
     *  - \b Timer10Start (Display string: 'Timer 10 Start'): Specifies which Timer signal to use as internal source for the trigger.
     *  - \b Timer11Start (Display string: 'Timer 11 Start'): Specifies which Timer signal to use as internal source for the trigger.
     *  - \b Timer12Start (Display string: 'Timer 12 Start'): Specifies which Timer signal to use as internal source for the trigger.
     *  - \b Timer13Start (Display string: 'Timer 13 Start'): Specifies which Timer signal to use as internal source for the trigger.
     *  - \b Timer14Start (Display string: 'Timer 14 Start'): Specifies which Timer signal to use as internal source for the trigger.
     *  - \b Timer15Start (Display string: 'Timer 15 Start'): Specifies which Timer signal to use as internal source for the trigger.
     *  - \b Timer16Start (Display string: 'Timer 16 Start')
     *  - \b Timer3End (Display string: 'Timer 3 End'): Specifies which Timer signal to use as internal source for the trigger.
     *  - \b Timer4End (Display string: 'Timer 4 End'): Specifies which Timer signal to use as internal source for the trigger.
     *  - \b Timer5End (Display string: 'Timer 5 End'): Specifies which Timer signal to use as internal source for the trigger.
     *  - \b Timer6End (Display string: 'Timer 6 End'): Specifies which Timer signal to use as internal source for the trigger.
     *  - \b Timer7End (Display string: 'Timer 7 End'): Specifies which Timer signal to use as internal source for the trigger.
     *  - \b Timer8End (Display string: 'Timer 8 End'): Specifies which Timer signal to use as internal source for the trigger.
     *  - \b Timer9End (Display string: 'Timer 9 End'): Specifies which Timer signal to use as internal source for the trigger.
     *  - \b Timer10End (Display string: 'Timer 10 End'): Specifies which Timer signal to use as internal source for the trigger.
     *  - \b Timer11End (Display string: 'Timer 11 End'): Specifies which Timer signal to use as internal source for the trigger.
     *  - \b Timer12End (Display string: 'Timer 12 End'): Specifies which Timer signal to use as internal source for the trigger.
     *  - \b Timer13End (Display string: 'Timer 13 End'): Specifies which Timer signal to use as internal source for the trigger.
     *  - \b Timer14End (Display string: 'Timer 14 End'): Specifies which Timer signal to use as internal source for the trigger.
     *  - \b Timer15End (Display string: 'Timer 15 End'): Specifies which Timer signal to use as internal source for the trigger.
     *  - \b Timer16End (Display string: 'Timer 16 End')
     *  - \b Counter3Start (Display string: 'Counter 3 Start'): Specifies which of the Counter signal to use as internal source for the trigger.
     *  - \b Counter4Start (Display string: 'Counter 4 Start'): Specifies which of the Counter signal to use as internal source for the trigger.
     *  - \b Counter5Start (Display string: 'Counter 5 Start'): Specifies which of the Counter signal to use as internal source for the trigger.
     *  - \b Counter6Start (Display string: 'Counter 6 Start'): Specifies which of the Counter signal to use as internal source for the trigger.
     *  - \b Counter7Start (Display string: 'Counter 7 Start'): Specifies which of the Counter signal to use as internal source for the trigger.
     *  - \b Counter8Start (Display string: 'Counter 8 Start'): Specifies which of the Counter signal to use as internal source for the trigger.
     *  - \b Counter9Start (Display string: 'Counter 9 Start'): Specifies which of the Counter signal to use as internal source for the trigger.
     *  - \b Counter10Start (Display string: 'Counter 10 Start'): Specifies which of the Counter signal to use as internal source for the trigger.
     *  - \b Counter11Start (Display string: 'Counter 11 Start'): Specifies which of the Counter signal to use as internal source for the trigger.
     *  - \b Counter12Start (Display string: 'Counter 12 Start'): Specifies which of the Counter signal to use as internal source for the trigger.
     *  - \b Counter13Start (Display string: 'Counter 13 Start'): Specifies which of the Counter signal to use as internal source for the trigger.
     *  - \b Counter14Start (Display string: 'Counter 14 Start'): Specifies which of the Counter signal to use as internal source for the trigger.
     *  - \b Counter15Start (Display string: 'Counter 15 Start'): Specifies which of the Counter signal to use as internal source for the trigger.
     *  - \b Counter16Start (Display string: 'Counter 16 Start')
     *  - \b Counter3End (Display string: 'Counter 3 End'): Specifies which of the Counter signal to use as internal source for the trigger.
     *  - \b Counter4End (Display string: 'Counter 4 End'): Specifies which of the Counter signal to use as internal source for the trigger.
     *  - \b Counter5End (Display string: 'Counter 5 End'): Specifies which of the Counter signal to use as internal source for the trigger.
     *  - \b Counter6End (Display string: 'Counter 6 End'): Specifies which of the Counter signal to use as internal source for the trigger.
     *  - \b Counter7End (Display string: 'Counter 7 End'): Specifies which of the Counter signal to use as internal source for the trigger.
     *  - \b Counter8End (Display string: 'Counter 8 End'): Specifies which of the Counter signal to use as internal source for the trigger.
     *  - \b Counter9End (Display string: 'Counter 9 End'): Specifies which of the Counter signal to use as internal source for the trigger.
     *  - \b Counter10End (Display string: 'Counter 10 End'): Specifies which of the Counter signal to use as internal source for the trigger.
     *  - \b Counter11End (Display string: 'Counter 11 End'): Specifies which of the Counter signal to use as internal source for the trigger.
     *  - \b Counter12End (Display string: 'Counter 12 End'): Specifies which of the Counter signal to use as internal source for the trigger.
     *  - \b Counter13End (Display string: 'Counter 13 End'): Specifies which of the Counter signal to use as internal source for the trigger.
     *  - \b Counter14End (Display string: 'Counter 14 End'): Specifies which of the Counter signal to use as internal source for the trigger.
     *  - \b Counter15End (Display string: 'Counter 15 End'): Specifies which of the Counter signal to use as internal source for the trigger.
     *  - \b Counter16End (Display string: 'Counter 16 End')
     *  - \b mvLogicGateOR1Output (Display string: 'mv Logic Gate OR 1 Output')
     *  - \b mvLogicGateOR2Output (Display string: 'mv Logic Gate OR 2 Output')
     *  - \b mvLogicGateOR3Output (Display string: 'mv Logic Gate OR 3 Output')
     *  - \b mvLogicGateOR4Output (Display string: 'mv Logic Gate OR 4 Output')
     *  - \b UserOutput3 (Display string: 'User Output 3'): Specifies which User Output bit signal to use as internal source for the trigger.
     *  - \b UserOutput4 (Display string: 'User Output 4'): Specifies which User Output bit signal to use as internal source for the trigger.
     *  - \b UserOutput5 (Display string: 'User Output 5'): Specifies which User Output bit signal to use as internal source for the trigger.
     *  - \b UserOutput6 (Display string: 'User Output 6'): Specifies which User Output bit signal to use as internal source for the trigger.
     *  - \b UserOutput7 (Display string: 'User Output 7'): Specifies which User Output bit signal to use as internal source for the trigger.
     *  - \b UserOutput8 (Display string: 'User Output 8'): Specifies which User Output bit signal to use as internal source for the trigger.
     *  - \b UserOutput9 (Display string: 'User Output 9'): Specifies which User Output bit signal to use as internal source for the trigger.
     *  - \b UserOutput10 (Display string: 'User Output 10'): Specifies which User Output bit signal to use as internal source for the trigger.
     *  - \b UserOutput11 (Display string: 'User Output 11'): Specifies which User Output bit signal to use as internal source for the trigger.
     *  - \b UserOutput12 (Display string: 'User Output 12'): Specifies which User Output bit signal to use as internal source for the trigger.
     *  - \b UserOutput13 (Display string: 'User Output 13'): Specifies which User Output bit signal to use as internal source for the trigger.
     *  - \b UserOutput14 (Display string: 'User Output 14'): Specifies which User Output bit signal to use as internal source for the trigger.
     *  - \b UserOutput15 (Display string: 'User Output 15'): Specifies which User Output bit signal to use as internal source for the trigger.
     *  - \b Action3 (Display string: 'Action 3'): Specifies which Action command to use as internal source for the trigger.
     *  - \b Action4 (Display string: 'Action 4'): Specifies which Action command to use as internal source for the trigger.
     *  - \b Action5 (Display string: 'Action 5'): Specifies which Action command to use as internal source for the trigger.
     *  - \b Action6 (Display string: 'Action 6'): Specifies which Action command to use as internal source for the trigger.
     *  - \b Action7 (Display string: 'Action 7'): Specifies which Action command to use as internal source for the trigger.
     *  - \b Action8 (Display string: 'Action 8'): Specifies which Action command to use as internal source for the trigger.
     *  - \b Action9 (Display string: 'Action 9'): Specifies which Action command to use as internal source for the trigger.
     *  - \b Action10 (Display string: 'Action 10'): Specifies which Action command to use as internal source for the trigger.
     *  - \b Action11 (Display string: 'Action 11'): Specifies which Action command to use as internal source for the trigger.
     *  - \b Action12 (Display string: 'Action 12'): Specifies which Action command to use as internal source for the trigger.
     *  - \b Action13 (Display string: 'Action 13'): Specifies which Action command to use as internal source for the trigger.
     *  - \b Action14 (Display string: 'Action 14'): Specifies which Action command to use as internal source for the trigger.
     *  - \b Action15 (Display string: 'Action 15'): Specifies which Action command to use as internal source for the trigger.
     *  - \b Action16 (Display string: 'Action 16')
     *  - \b CC5 (Display string: 'CC 5'): Index of the Camera Link physical line and associated I/O control block to use. This ensures a direct mapping between the lines on the frame grabber and on the camera. Applicable to CameraLink products only.
     *  - \b CC6 (Display string: 'CC 6'): Index of the Camera Link physical line and associated I/O control block to use. This ensures a direct mapping between the lines on the frame grabber and on the camera. Applicable to CameraLink products only.
     *  - \b CC7 (Display string: 'CC 7'): Index of the Camera Link physical line and associated I/O control block to use. This ensures a direct mapping between the lines on the frame grabber and on the camera. Applicable to CameraLink products only.
     *  - \b CC8 (Display string: 'CC 8'): Index of the Camera Link physical line and associated I/O control block to use. This ensures a direct mapping between the lines on the frame grabber and on the camera. Applicable to CameraLink products only.
     *  - \b CC9 (Display string: 'CC 9'): Index of the Camera Link physical line and associated I/O control block to use. This ensures a direct mapping between the lines on the frame grabber and on the camera. Applicable to CameraLink products only.
     *  - \b CC10 (Display string: 'CC 10'): Index of the Camera Link physical line and associated I/O control block to use. This ensures a direct mapping between the lines on the frame grabber and on the camera. Applicable to CameraLink products only.
     *  - \b CC11 (Display string: 'CC 11'): Index of the Camera Link physical line and associated I/O control block to use. This ensures a direct mapping between the lines on the frame grabber and on the camera. Applicable to CameraLink products only.
     *  - \b CC12 (Display string: 'CC 12'): Index of the Camera Link physical line and associated I/O control block to use. This ensures a direct mapping between the lines on the frame grabber and on the camera. Applicable to CameraLink products only.
     *  - \b CC13 (Display string: 'CC 13'): Index of the Camera Link physical line and associated I/O control block to use. This ensures a direct mapping between the lines on the frame grabber and on the camera. Applicable to CameraLink products only.
     *  - \b CC14 (Display string: 'CC 14'): Index of the Camera Link physical line and associated I/O control block to use. This ensures a direct mapping between the lines on the frame grabber and on the camera. Applicable to CameraLink products only.
     *  - \b CC15 (Display string: 'CC 15'): Index of the Camera Link physical line and associated I/O control block to use. This ensures a direct mapping between the lines on the frame grabber and on the camera. Applicable to CameraLink products only.
     *  - \b CC16 (Display string: 'CC 16')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 triggerSource;
    /// \brief An enumerated integer property. Specifies the activation mode of the trigger.
    /**
     *  Specifies the activation mode of the trigger.
     *
     *  The following string values might be valid for this feature:
     *  - \b RisingEdge (Display string: 'Rising Edge'): Specifies that the trigger is considered valid on the rising edge of the source signal.
     *  - \b FallingEdge (Display string: 'Falling Edge'): Specifies that the trigger is considered valid on the falling edge of the source signal.
     *  - \b AnyEdge (Display string: 'Any Edge'): Specifies that the trigger is considered valid on the falling or rising edge of the source signal.
     *  - \b LevelHigh (Display string: 'Level High'): Specifies that the trigger is considered valid as long as the level of the source signal is high.
     *  - \b LevelLow (Display string: 'Level Low'): Specifies that the trigger is considered valid as long as the level of the source signal is low.
     *  - \b mvNone (Display string: 'mv None')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 triggerActivation;
    /// \brief An enumerated integer property. Specifies the type trigger overlap permitted with the previous frame or line.
    /**
     *  Specifies the type trigger overlap permitted with the previous frame or line. This defines when a valid trigger will be accepted (or latched) for a new frame or a new line.
     *
     *  The following string values might be valid for this feature:
     *  - \b Off (Display string: 'Off'): No trigger overlap is permitted.
     *  - \b ReadOut (Display string: 'Read Out'): Trigger is accepted immediately after the exposure period.
     *  - \b PreviousFrame (Display string: 'Previous Frame'): Trigger is accepted (latched) at any time during the capture of the previous frame.
     *  - \b PreviousLine (Display string: 'Previous Line'): Trigger is accepted (latched) at any time during the capture of the previous line.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 triggerOverlap;
    /// \brief A floating point property. Specifies the delay in microseconds (us) to apply after the trigger reception before activating it.
    /**
     *  Specifies the delay in microseconds (us) to apply after the trigger reception before activating it.
     */
    PropertyF triggerDelay;
    /// \brief An integer property. Specifies a division factor for the incoming trigger pulses.
    /**
     *  Specifies a division factor for the incoming trigger pulses.
     */
    PropertyI64 triggerDivider;
    /// \brief An integer property. Specifies a multiplication factor for the incoming trigger pulses.
    /**
     *  Specifies a multiplication factor for the incoming trigger pulses. It is generally used in conjunction with TriggerDivider to control the ratio of triggers that are accepted.
     */
    PropertyI64 triggerMultiplier;
    /// \brief An enumerated integer property. Sets the operation mode of the Exposure.
    /**
     *  Sets the operation mode of the Exposure.
     *
     *  The following string values might be valid for this feature:
     *  - \b Off (Display string: 'Off'): Disables the Exposure and let the shutter open.
     *  - \b Timed (Display string: 'Timed'): Timed exposure. The exposure duration time is set using the ExposureTime or ExposureAuto features and the exposure starts with the FrameStart or LineStart.
     *  - \b TriggerWidth (Display string: 'Trigger Width'): Uses the width of the current Frame or Line trigger signal(s) pulse to control the exposure duration. Note that if the Frame or Line TriggerActivation is RisingEdge or LevelHigh, the exposure duration will be the time the trigger stays High. If TriggerActivation is FallingEdge or LevelLow, the exposure time will last as long as the trigger stays Low.
     *  - \b TriggerControlled (Display string: 'Trigger Controlled'): Uses one or more trigger signal(s) to control the exposure duration independently from the current Frame or Line triggers. See ExposureStart, ExposureEnd and ExposureActive of the TriggerSelector feature.
     *  - \b mvMultiZone (Display string: 'mv Multi Zone'): The exposure duration time can be configured individually for different zones within the image by setting the 'ExposureTimeSelector' to one of the 'mvHorizontalZone' values. This mode will only have effect on the image when operating the device in a 'mvMultiAreaMode' different from 'mvOff'.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 exposureMode;
    /// \brief An enumerated integer property. Sets the configuration mode of the ExposureTime feature.
    /**
     *  Sets the configuration mode of the ExposureTime feature.
     *
     *  The following string values might be valid for this feature:
     *  - \b Common (Display string: 'Common'): The exposure time is common to all the color components. The common ExposureTime value to use can be set selecting it with ExposureTimeSelector[Common].
     *  - \b Individual (Display string: 'Individual'): The exposure time is individual for each color component. Each individual ExposureTime values to use can be set by selecting them with ExposureTimeSelector.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 exposureTimeMode;
    /// \brief An enumerated integer property. Selects which exposure time is controlled by the ExposureTime feature.
    /**
     *  Selects which exposure time is controlled by the ExposureTime feature. This allows for independent control over the exposure components.
     *
     *  The following string values might be valid for this feature:
     *  - \b Common (Display string: 'Common'): Selects the common ExposureTime.
     *  - \b Red (Display string: 'Red'): Selects the red common ExposureTime.
     *  - \b Green (Display string: 'Green'): Selects the green ExposureTime.
     *  - \b Blue (Display string: 'Blue'): Selects the blue ExposureTime.
     *  - \b Cyan (Display string: 'Cyan'): Selects the cyan common ExposureTime.
     *  - \b Magenta (Display string: 'Magenta'): Selects the magenta ExposureTime.
     *  - \b Yellow (Display string: 'Yellow'): Selects the yellow ExposureTime.
     *  - \b Infrared (Display string: 'Infrared'): Selects the infrared ExposureTime.
     *  - \b Ultraviolet (Display string: 'Ultraviolet'): Selects the ultraviolet ExposureTime.
     *  - \b Stage1 (Display string: 'Stage 1'): Selects the first stage ExposureTime.
     *  - \b Stage2 (Display string: 'Stage 2'): Selects the second stage ExposureTime.
     *  - \b Stage\#3\# (Display string: 'Stage \#3\#'): Selects the second stage ExposureTime.
     *  - \b mvHorizontalZone0 (Display string: 'mv Horizontal Zone 0'): Selects the first horizontal exposure zone used when 'ExposureMode' is set to 'mvMultiZone' and when operating the device in a 'mvMultiAreaMode' different from 'mvOff'.
     *  - \b mvHorizontalZone1 (Display string: 'mv Horizontal Zone 1'): Selects the second horizontal exposure zone used when 'ExposureMode' is set to 'mvMultiZone' and when operating the device in a 'mvMultiAreaMode' different from 'mvOff'.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 exposureTimeSelector;
    /// \brief A floating point property. Sets the Exposure time when ExposureMode is Timed and ExposureAuto is Off.
    /**
     *  Sets the Exposure time when ExposureMode is Timed and ExposureAuto is Off. This controls the duration where the photosensitive cells are exposed to light.
     */
    PropertyF exposureTime;
    /// \brief A floating point property. Defines the position(in percent of the total number of lines) within the image to switch from one exposure time to the next.
    /**
     *  Defines the position(in percent of the total number of lines) within the image to switch from one exposure time to the next. 100% means that only one zone exists. 25% means that the upper 25% of the image are defined by the exposure time of 'mvHorizontalZone0' and the lower 75% are defined by the exposure time of 'mvHorizontalZone1'.
     */
    PropertyF mvExposureHorizontalZoneDivider;
    /// \brief An enumerated integer property. Sets the automatic exposure mode when ExposureMode is Timed.
    /**
     *  Sets the automatic exposure mode when ExposureMode is Timed. The exact algorithm used to implement this control is device-specific.
     *
     *  The following string values might be valid for this feature:
     *  - \b Off (Display string: 'Off'): Exposure duration is user controlled using ExposureTime.
     *  - \b Once (Display string: 'Once'): Exposure duration is adapted once by the device. Once it has converged, it returns to the Off state.
     *  - \b Continuous (Display string: 'Continuous'): Exposure duration is constantly adapted by the device to maximize the dynamic range.
     *  - \b mvSequenced (Display string: 'mv Sequenced')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 exposureAuto;
    /// \brief An enumerated integer property. Controls multi-slope exposure state.
    /**
     *  Controls multi-slope exposure state.
     *
     *  The following string values might be valid for this feature:
     *  - \b Off (Display string: 'Off'): Off
     *  - \b Manual (Display string: 'Manual'): Manual
     *  - \b PresetSoft (Display string: 'Preset Soft'): Preset Soft
     *  - \b PresetMedium (Display string: 'Preset Medium'): Preset Medium
     *  - \b PresetAggressive (Display string: 'Preset Aggressive'): Preset Aggressive
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 multiSlopeMode;
    /// \brief An integer property. The number of knee-points as well as the number of additional exposure slopes used for multi-slope exposure.
    /**
     *  The number of knee-points as well as the number of additional exposure slopes used for multi-slope exposure.
     */
    PropertyI64 multiSlopeKneePointCount;
    /// \brief An integer property. Selects the parameters for controlling an additional slope in multi-slope exposure.
    /**
     *  Selects the parameters for controlling an additional slope in multi-slope exposure.
     */
    PropertyI64 multiSlopeKneePointSelector;
    /// \brief A floating point property. Percent of the ExposureTime at a certain knee-point of multi-slope exposure.
    /**
     *  Percent of the ExposureTime at a certain knee-point of multi-slope exposure.
     */
    PropertyF multiSlopeExposureLimit;
    /// \brief A floating point property. The percentage of the full saturation that is applied at a certain knee-point of a multi-slope exposure.
    /**
     *  The percentage of the full saturation that is applied at a certain knee-point of a multi-slope exposure.
     */
    PropertyF multiSlopeSaturationThreshold;
    /// \brief A floating point property. The relative intensity which divides intensities influenced by different exposure slopes.
    /**
     *  The relative intensity which divides intensities influenced by different exposure slopes.
     */
    PropertyF multiSlopeIntensityLimit;
    /// \brief A floating point property. The gradient of the additional slope that is defined by this knee-point.
    /**
     *  The gradient of the additional slope that is defined by this knee-point.
     */
    PropertyF multiSlopeExposureGradient;
    /// \brief An enumerated integer property. Controls the calculation of the maximum frame rate.
    /**
     *  Controls the calculation of the maximum frame rate.
     *
     *  The following string values might be valid for this feature:
     *  - \b mvDeviceLinkThroughput (Display string: 'mv Device Link Throughput'): Uses the highest possible frame rate depending on bandwidth and sensor settings.
     *  - \b mvDeviceMaxSensorThroughput (Display string: 'mv Device Max Sensor Throughput'): Maximum frame rate the sensor can provide depending on AOI and pixel clock. Note: Images might be buffered in the cameras memory. This can result in delayed images.
     *  - \b mvLegacy (Display string: 'mv Legacy'): Compatibility mode, not recommended.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvAcquisitionFrameRateLimitMode;
    /// \brief An enumerated integer property. Enables the use of the 'AcquisitionFrameRate' feature.
    /**
     *  Enables the use of the 'AcquisitionFrameRate' feature.
     *
     *  The following string values might be valid for this feature:
     *  - \b Off (Display string: 'Off'): The acquisition frame rate is set automatically to the limit, calculated according to 'mvAcquisitionFrameRateLimitMode' feature.
     *  - \b On (Display string: 'On'): The acquisition frame rate is set by the 'AcquisitionFrameRate' feature.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvAcquisitionFrameRateEnable;
    /// \brief A floating point property. Shows the resulting frame rate.
    /**
     *  Shows the resulting frame rate.
     */
    PropertyF mvResultingFrameRate;
    /// \brief An enumerated integer property. Selects the shutter mode of the sensor.
    /**
     *  Selects the shutter mode of the sensor.
     *
     *  The following string values might be valid for this feature:
     *  - \b mvRollingShutter (Display string: 'mv Rolling Shutter')
     *  - \b mvGlobalReset (Display string: 'mv Global Reset')
     *  - \b mvGlobalShutter (Display string: 'mv Global Shutter')
     *  - \b mvGlobalShutterWithoutReset (Display string: 'mv Global Shutter Without Reset')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvShutterMode;
    /// \brief An integer property. Knee point of 10 to 8 bit compression.
    /**
     *  Knee point of 10 to 8 bit compression.
     */
    PropertyI64 mvCompressionKneepoint;
    /// \brief A floating point property. The lower limit of the exposure time in auto exposure mode.
    /**
     *  The lower limit of the exposure time in auto exposure mode.
     */
    PropertyF mvExposureAutoLowerLimit;
    /// \brief A floating point property. The upper limit of the exposure time in auto exposure mode.
    /**
     *  The upper limit of the exposure time in auto exposure mode.
     */
    PropertyF mvExposureAutoUpperLimit;
    /// \brief An enumerated integer property. Determines the increment or decrement size of exposure value from frame to frame.
    /**
     *  Determines the increment or decrement size of exposure value from frame to frame.
     *
     *  The following string values might be valid for this feature:
     *  - \b Slow (Display string: 'Slow')
     *  - \b Medium (Display string: 'Medium')
     *  - \b Fast (Display string: 'Fast')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvExposureAutoSpeed;
    /// \brief An integer property. The number of frames that the AEC must skip before updating the exposure register.
    /**
     *  The number of frames that the AEC must skip before updating the exposure register.
     */
    PropertyI64 mvExposureAutoDelayImages;
    /// \brief An integer property. Common desired average grey value (in percent) used for Auto Gain Control(AGC) and Auto Exposure Control(AEC).
    /**
     *  Common desired average grey value (in percent) used for auto gain control(AGC) and auto exposure control (AEC).
     */
    PropertyI64 mvExposureAutoAverageGrey;
    /// \brief An enumerated integer property. Highlight auto control AOI to check AOI settings. Switch off for normal operation.
    /**
     *  Highlight auto control AOI to check AOI settings. Switch off for normal operation.
     *
     *  The following string values might be valid for this feature:
     *  - \b Off (Display string: 'Off')
     *  - \b On (Display string: 'On')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvExposureAutoHighlightAOI;
    /// \brief An enumerated integer property. Common AutoControl AOI used for Auto Gain Control(AGC), Auto Exposure Control(AEC) and Auto White Balance(AWB).
    /**
     *  Common AutoControl AOI used for Auto Gain Control(AGC), Auto Exposure Control(AEC) and Auto White Balance(AWB).
     *
     *  The following string values might be valid for this feature:
     *  - \b mvFull (Display string: 'mv Full')
     *  - \b mvCenter (Display string: 'mv Center')
     *  - \b mvUser (Display string: 'mv User')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvExposureAutoAOIMode;
    /// \brief An integer property. Common AOI XOffset used for auto gain control(AGC), Auto Exposure Control(AEC) and Auto White Balance(AWB).
    /**
     *  Common AOI XOffset used for auto gain control(AGC), Auto Exposure Control(AEC) and Auto White Balance(AWB).
     */
    PropertyI64 mvExposureAutoOffsetX;
    /// \brief An integer property. Common AOI YOffset used for auto gain control(AGC), Auto Exposure Control(AEC) and Auto White Balance(AWB).
    /**
     *  Common AOI YOffset used for auto gain control(AGC), Auto Exposure Control(AEC) and Auto White Balance(AWB).
     */
    PropertyI64 mvExposureAutoOffsetY;
    /// \brief An integer property. Common AOI Width used for auto gain control(AGC), Auto Exposure Control(AEC) and Auto White Balance(AWB).
    /**
     *  Common AOI Width used for auto gain control(AGC), Auto Exposure Control(AEC) and Auto White Balance(AWB).
     */
    PropertyI64 mvExposureAutoWidth;
    /// \brief An integer property. Common AOI Height used for auto gain control(AGC), Auto Exposure Control(AEC) and Auto White Balance(AWB).
    /**
     *  Common AOI Height used for auto gain control(AGC), Auto Exposure Control(AEC) and Auto White Balance(AWB).
     */
    PropertyI64 mvExposureAutoHeight;
    /// \brief An enumerated integer property. Selects the common auto mode for gain and exposure.
    /**
     *  Selects the common auto mode for gain and exposure.
     *
     *  The following string values might be valid for this feature:
     *  - \b mvSensor (Display string: 'mv Sensor'): The sensor itself will do the auto control.
     *  - \b mvDevice (Display string: 'mv Device'): The device(firmware) will do the auto control.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvExposureAutoMode;
    /// \brief An enumerated integer property. Smear reduction in triggered and non-overlapped mode.
    /**
     *  Smear reduction in triggered and non-overlapped mode.
     *
     *  The following string values might be valid for this feature:
     *  - \b mvStandard (Display string: 'mv Standard'): Standard smear reduction.
     *  - \b mvMedium (Display string: 'mv Medium'): Medium smear reduction.
     *  - \b mvHighest (Display string: 'mv Highest'): Highest smear but more power consumption.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvSmearReduction;
    /// \brief An enumerated integer property. mvRecord is used to store frames in memory. mvPlayback transfers stored frames. mvPretrigger stores frames in memory to be transferred after trigger.
    /**
     *  mvRecord is used to store frames in memory. mvPlayback transfers stored frames. mvPretrigger stores frames in memory to be transferred after trigger.
     *
     *  The following string values might be valid for this feature:
     *  - \b Default (Display string: 'Default'): Default memory mode.
     *  - \b mvRecord (Display string: 'mv Record'): Stores frames in memory.
     *  - \b mvPlayback (Display string: 'mv Playback'): Transfers stored frames.
     *  - \b mvPretrigger (Display string: 'mv Pretrigger'): Stores frames in memory to be transferred after trigger.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvAcquisitionMemoryMode;
    /// \brief An integer property. Number of frames to acquire before the occurrence of an AcquisitionStart or AcquisitionActive trigger.
    /**
     *  Number of frames to acquire before the occurrence of an AcquisitionStart or AcquisitionActive trigger.
     */
    PropertyI64 mvPretriggerFrameCount;
    /// \brief An integer property. Maximum number of frames that can be recorded in the current configuration(deprecated, use the maximum value of 'mvAcquisitionMemoryFrameCount' instead).
    /**
     *  \deprecated
     *  Maximum number of frames that can be recorded in the current configuration(deprecated, use the maximum value of 'mvAcquisitionMemoryFrameCount' instead).
     */
    PropertyI64 mvAcquisitionMemoryMaxFrameCount;
    /// \brief An integer property. The number of frames currently stored in the frame buffer.
    /**
     *  The number of frames currently stored in the frame buffer. If this value keeps increasing this can indicate a bandwidth/transmission problem.
     */
    PropertyI64 mvAcquisitionMemoryFrameCount;
    /// \brief An integer property. AOI and/or binning parameter changed after last Acquisition.
    /**
     *  AOI and/or binning parameter changed after last Acquisition.
     */
    PropertyI64 mvAcquisitionMemoryAOIParameterChanged;
    /// \brief An enumerated integer property. Enables feature mode.
    /**
     *  Enables feature mode.
     *
     *  The following string values might be valid for this feature:
     *  - \b Off (Display string: 'Off'): No smart feature mode is selected
     *  - \b mvJPEGWithRaw (Display string: 'mv JPEG With Raw'): When active a binned raw image is sent together with a full resolution JPEG.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvFeatureMode;
    /// \brief A boolean property. When active in addition to the processed image data also the unprocessed image is stored inside the devices RAM.
    /**
     *  When active in addition to the processed image data (e.g. after binning, decimation, de-Bayering, LUT etc. applied inside the device) also the unprocessed image is stored inside the devices RAM allowing to request the transmission of these images by an application as well. This will effectively reduce the number of images that can be stored inside the frame buffer.
     */
    PropertyIBoolean mvSmartFrameRecallEnable;
    /// \brief An integer property. This value defines the strictness of the timestamp-check for the recalled image (given in us).
    /**
     *  This value defines the strictness of the timestamp-check for the recalled image (given in us).
     */
    PropertyI64 mvSmartFrameRecallTimestampLookupAccuracy;
    /// \brief An integer property. When set to a value != 0, the smaller frames get thinned out. AOI requests can still be done for all frames.
    /**
     *  The number of processed images to drop, i.e. skip. This can be used to reduce the frame rate even further. AOIs for unsent images can still be requested - the timestamps for these dropped images must be interpolated.
     */
    PropertyI64 mvSmartFrameRecallFrameSkipRatio;
    /// \brief A boolean property. Enables or disables lens calibration.
    /**
     *  When active lens calibration will be applied to the image. The calibration data must have been correctly calculated for the scene and loaded into device memory using, for example, the file interface with filename 'mvLensCalibrationBlocks' and 'mvLensCalibrationPixels'. This will effectively reduce the number of images that can be stored inside the frame buffer.
     */
    PropertyIBoolean mvLensCalibrationEnable;
    // *INDENT-OFF*
    PYTHON_OR_JAVA_ONLY( %mutable; )
    // *INDENT-ON*
};

//-----------------------------------------------------------------------------
/// \brief Category that contains the Analog control features.
/**
 *  A category that contains the Analog control features.
 * \ingroup GenICamInterfaceDevice
 */
class AnalogControl
//-----------------------------------------------------------------------------
{
public:
    /// \brief Constructs a new <b>mvIMPACT::acquire::GenICam::AnalogControl</b> object.
    explicit AnalogControl(
        /// [in] A pointer to a <b>mvIMPACT::acquire::Device</b> object obtained from a <b>mvIMPACT::acquire::DeviceManager</b> object.
        mvIMPACT::acquire::Device* pDev,
        /// [in] The name of the driver internal setting to access with this instance.
        /// A list of valid setting names can be obtained by a call to
        /// <b>mvIMPACT::acquire::FunctionInterface::getAvailableSettings</b>, new
        /// settings can be created with the function
        /// <b>mvIMPACT::acquire::FunctionInterface::createSetting</b>
        const std::string& settingName = "Base" ) :
        mvTapBalancingMode(),
        mvGainMode(),
        gainSelector(),
        gain(),
        mvGainHorizontalZoneDivider(),
        gainAuto(),
        gainAutoBalance(),
        blackLevelSelector(),
        blackLevel(),
        blackLevelAuto(),
        blackLevelAutoBalance(),
        whiteClipSelector(),
        whiteClip(),
        balanceRatioSelector(),
        balanceRatio(),
        balanceWhiteAuto(),
        mvGainAutoDelayImages(),
        mvGainAutoUpperLimit(),
        mvGainAutoLowerLimit(),
        mvGainAutoSpeed(),
        mvGainAutoAverageGrey(),
        mvGainAutoHighlightAOI(),
        mvGainAutoAOIMode(),
        mvGainAutoOffsetX(),
        mvGainAutoOffsetY(),
        mvGainAutoWidth(),
        mvGainAutoHeight(),
        mvGainAutoMode(),
        mvBalanceWhiteAutoAOIMode(),
        mvBalanceWhiteAutoOffsetX(),
        mvBalanceWhiteAutoOffsetY(),
        mvBalanceWhiteAutoWidth(),
        mvBalanceWhiteAutoHeight(),
        mvLowLight(),
        mvADCGain(),
        mvVRamp(),
        mvLinearLogarithmicMode(),
        mvDigitalGainOffset(),
        mvSaveCalibrationData(),
        mvGammaEnable(),
        mvGammaSelector(),
        gamma()
    {
        pDev->validateInterfaceLayout( dilGenICam );
        mvIMPACT::acquire::DeviceComponentLocator locator( pDev, mvIMPACT::acquire::dltSetting, settingName );
        locator.bindSearchBase( locator.searchbase_id(), "Camera/GenICam" );
        locator.bindComponent( mvTapBalancingMode, "mvTapBalancingMode" );
        locator.bindComponent( mvGainMode, "mvGainMode" );
        locator.bindComponent( gainSelector, "GainSelector" );
        locator.bindComponent( gain, "Gain" );
        if( !gain.isValid() )
        {
            locator.bindComponent( gain, "GainAbs" );
        }
        locator.bindComponent( mvGainHorizontalZoneDivider, "mvGainHorizontalZoneDivider" );
        locator.bindComponent( gainAuto, "GainAuto" );
        locator.bindComponent( gainAutoBalance, "GainAutoBalance" );
        locator.bindComponent( blackLevelSelector, "BlackLevelSelector" );
        locator.bindComponent( blackLevel, "BlackLevel" );
        if( !blackLevel.isValid() )
        {
            locator.bindComponent( blackLevel, "BlackLevelAbs" );
        }
        locator.bindComponent( blackLevelAuto, "BlackLevelAuto" );
        locator.bindComponent( blackLevelAutoBalance, "BlackLevelAutoBalance" );
        locator.bindComponent( whiteClipSelector, "WhiteClipSelector" );
        locator.bindComponent( whiteClip, "WhiteClip" );
        if( !whiteClip.isValid() )
        {
            locator.bindComponent( whiteClip, "WhiteClipAbs" );
        }
        locator.bindComponent( balanceRatioSelector, "BalanceRatioSelector" );
        locator.bindComponent( balanceRatio, "BalanceRatio" );
        if( !balanceRatio.isValid() )
        {
            locator.bindComponent( balanceRatio, "BalanceRatioAbs" );
        }
        locator.bindComponent( balanceWhiteAuto, "BalanceWhiteAuto" );
        locator.bindComponent( mvGainAutoDelayImages, "mvGainAutoDelayImages" );
        locator.bindComponent( mvGainAutoUpperLimit, "mvGainAutoUpperLimit" );
        locator.bindComponent( mvGainAutoLowerLimit, "mvGainAutoLowerLimit" );
        locator.bindComponent( mvGainAutoSpeed, "mvGainAutoSpeed" );
        locator.bindComponent( mvGainAutoAverageGrey, "mvGainAutoAverageGrey" );
        locator.bindComponent( mvGainAutoHighlightAOI, "mvGainAutoHighlightAOI" );
        locator.bindComponent( mvGainAutoAOIMode, "mvGainAutoAOIMode" );
        locator.bindComponent( mvGainAutoOffsetX, "mvGainAutoOffsetX" );
        locator.bindComponent( mvGainAutoOffsetY, "mvGainAutoOffsetY" );
        locator.bindComponent( mvGainAutoWidth, "mvGainAutoWidth" );
        locator.bindComponent( mvGainAutoHeight, "mvGainAutoHeight" );
        locator.bindComponent( mvGainAutoMode, "mvGainAutoMode" );
        locator.bindComponent( mvBalanceWhiteAutoAOIMode, "mvBalanceWhiteAutoAOIMode" );
        locator.bindComponent( mvBalanceWhiteAutoOffsetX, "mvBalanceWhiteAutoOffsetX" );
        locator.bindComponent( mvBalanceWhiteAutoOffsetY, "mvBalanceWhiteAutoOffsetY" );
        locator.bindComponent( mvBalanceWhiteAutoWidth, "mvBalanceWhiteAutoWidth" );
        locator.bindComponent( mvBalanceWhiteAutoHeight, "mvBalanceWhiteAutoHeight" );
        locator.bindComponent( mvLowLight, "mvLowLight" );
        locator.bindComponent( mvADCGain, "mvADCGain" );
        locator.bindComponent( mvVRamp, "mvVRamp" );
        locator.bindComponent( mvLinearLogarithmicMode, "mvLinearLogarithmicMode" );
        locator.bindComponent( mvDigitalGainOffset, "mvDigitalGainOffset" );
        locator.bindComponent( mvSaveCalibrationData, "mvSaveCalibrationData@i" );
        locator.bindComponent( mvGammaEnable, "mvGammaEnable" );
        locator.bindComponent( mvGammaSelector, "mvGammaSelector" );
        locator.bindComponent( gamma, "Gamma" );
    }
    // *INDENT-OFF*
    PYTHON_OR_JAVA_ONLY( %immutable; )
    // *INDENT-ON*
    /// \brief An enumerated integer property. Where do the tap balancing calibration data come from?
    /**
     *  Where do the tap balancing calibration data come from?
     *
     *  The following string values might be valid for this feature:
     *  - \b mvFactory (Display string: 'mv Factory')
     *  - \b mvUser (Display string: 'mv User')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvTapBalancingMode;
    /// \brief An enumerated integer property. Sets the operation mode of Gain.
    /**
     *  Sets the operation mode of Gain
     *
     *  The following string values might be valid for this feature:
     *  - \b Default (Display string: 'Default'): Default operation mode. The whole image is configured as a single zone.
     *  - \b mvMultiZone (Display string: 'mv Multi Zone'): In this mode different gains can be applied to different zones of the image by writing them into the 'mvHorizontalZone' registers selectable via the 'GainSelector'. This mode will only have effect on the image when operating the device in a 'mvMultiAreaMode' different from 'mvOff'.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvGainMode;
    /// \brief An enumerated integer property. Selects which Gain is controlled by the various Gain features.
    /**
     *  Selects which Gain is controlled by the various Gain features.
     *
     *  The following string values might be valid for this feature:
     *  - \b All (Display string: 'All'): Gain will be applied to all channels or taps.
     *  - \b Red (Display string: 'Red'): Gain will be applied to the red channel.
     *  - \b Green (Display string: 'Green'): Gain will be applied to the green channel.
     *  - \b Blue (Display string: 'Blue'): Gain will be applied to the blue channel.
     *  - \b Y (Display string: 'Y'): Gain will be applied to Y channel.
     *  - \b U (Display string: 'U'): Gain will be applied to U channel.
     *  - \b V (Display string: 'V'): Gain will be applied to V channel.
     *  - \b Tap1 (Display string: 'Tap 1'): Gain will be applied to Tap 1.
     *  - \b Tap2 (Display string: 'Tap 2'): Gain will be applied to Tap 2.
     *  - \b Tap\#3\# (Display string: 'Tap \#3\#'): Gain will be applied to Tap \#3\#.
     *  - \b AnalogAll (Display string: 'Analog All'): Gain will be applied to all analog channels or taps.
     *  - \b AnalogRed (Display string: 'Analog Red'): Gain will be applied to the red analog channel.
     *  - \b AnalogGreen (Display string: 'Analog Green'): Gain will be applied to the green analog channel.
     *  - \b AnalogBlue (Display string: 'Analog Blue'): Gain will be applied to the blue analog channel.
     *  - \b AnalogY (Display string: 'Analog Y'): Gain will be applied to Y analog channel.
     *  - \b AnalogU (Display string: 'Analog U'): Gain will be applied to U analog channel.
     *  - \b AnalogV (Display string: 'Analog V'): Gain will be applied to V analog channel.
     *  - \b AnalogTap1 (Display string: 'Analog Tap 1'): Analog gain will be applied to Tap 1.
     *  - \b AnalogTap2 (Display string: 'Analog Tap 2'): Analog gain will be applied to Tap 2.
     *  - \b AnalogTap\#3\# (Display string: 'Analog Tap \#3\#'): Analog gain will be applied to Tap \#3\#.
     *  - \b DigitalAll (Display string: 'Digital All'): Gain will be applied to all digital channels or taps.
     *  - \b DigitalRed (Display string: 'Digital Red'): Gain will be applied to the red digital channel.
     *  - \b DigitalGreen (Display string: 'Digital Green'): Gain will be applied to the green digital channel.
     *  - \b DigitalBlue (Display string: 'Digital Blue'): Gain will be applied to the blue digital channel.
     *  - \b DigitalY (Display string: 'Digital Y'): Gain will be applied to Y digital channel.
     *  - \b DigitalU (Display string: 'Digital U'): Gain will be applied to U digital channel.
     *  - \b DigitalV (Display string: 'Digital V'): Gain will be applied to V digital channel.
     *  - \b DigitalTap1 (Display string: 'Digital Tap 1'): Digital gain will be applied to Tap 1.
     *  - \b DigitalTap2 (Display string: 'Digital Tap 2'): Digital gain will be applied to Tap 2.
     *  - \b DigitalTap\#3\# (Display string: 'Digital Tap \#3\#'): Digital gain will be applied to Tap \#3\#.
     *  - \b Tap3 (Display string: 'Tap 3'): Gain will be applied to Tap 3.
     *  - \b Tap4 (Display string: 'Tap 4'): Gain will be applied to Tap 4.
     *  - \b Tap5 (Display string: 'Tap 5'): Gain will be applied to Tap 5.
     *  - \b Tap6 (Display string: 'Tap 6'): Gain will be applied to Tap 6.
     *  - \b Tap7 (Display string: 'Tap 7'): Gain will be applied to Tap 7.
     *  - \b Tap8 (Display string: 'Tap 8'): Gain will be applied to Tap 8.
     *  - \b Tap9 (Display string: 'Tap 9'): Gain will be applied to Tap 9.
     *  - \b Tap10 (Display string: 'Tap 10'): Gain will be applied to Tap 10.
     *  - \b Tap11 (Display string: 'Tap 11'): Gain will be applied to Tap 11.
     *  - \b Tap12 (Display string: 'Tap 12'): Gain will be applied to Tap 12.
     *  - \b Tap13 (Display string: 'Tap 13'): Gain will be applied to Tap 13.
     *  - \b Tap14 (Display string: 'Tap 14'): Gain will be applied to Tap 14.
     *  - \b Tap15 (Display string: 'Tap 15'): Gain will be applied to Tap 15.
     *  - \b Tap16 (Display string: 'Tap 16')
     *  - \b AnalogTap3 (Display string: 'Analog Tap 3'): Analog gain will be applied to Tap 3.
     *  - \b AnalogTap4 (Display string: 'Analog Tap 4'): Analog gain will be applied to Tap 4.
     *  - \b AnalogTap5 (Display string: 'Analog Tap 5'): Analog gain will be applied to Tap 5.
     *  - \b AnalogTap6 (Display string: 'Analog Tap 6'): Analog gain will be applied to Tap 6.
     *  - \b AnalogTap7 (Display string: 'Analog Tap 7'): Analog gain will be applied to Tap 7.
     *  - \b AnalogTap8 (Display string: 'Analog Tap 8'): Analog gain will be applied to Tap 8.
     *  - \b AnalogTap9 (Display string: 'Analog Tap 9'): Analog gain will be applied to Tap 9.
     *  - \b AnalogTap10 (Display string: 'Analog Tap 10'): Analog gain will be applied to Tap 10.
     *  - \b AnalogTap11 (Display string: 'Analog Tap 11'): Analog gain will be applied to Tap 11.
     *  - \b AnalogTap12 (Display string: 'Analog Tap 12'): Analog gain will be applied to Tap 12.
     *  - \b AnalogTap13 (Display string: 'Analog Tap 13'): Analog gain will be applied to Tap 13.
     *  - \b AnalogTap14 (Display string: 'Analog Tap 14'): Analog gain will be applied to Tap 14.
     *  - \b AnalogTap15 (Display string: 'Analog Tap 15'): Analog gain will be applied to Tap 15.
     *  - \b AnalogTap16 (Display string: 'Analog Tap 16')
     *  - \b DigitalTap3 (Display string: 'Digital Tap 3'): Digital gain will be applied to Tap 3.
     *  - \b DigitalTap4 (Display string: 'Digital Tap 4'): Digital gain will be applied to Tap 4.
     *  - \b DigitalTap5 (Display string: 'Digital Tap 5'): Digital gain will be applied to Tap 5.
     *  - \b DigitalTap6 (Display string: 'Digital Tap 6'): Digital gain will be applied to Tap 6.
     *  - \b DigitalTap7 (Display string: 'Digital Tap 7'): Digital gain will be applied to Tap 7.
     *  - \b DigitalTap8 (Display string: 'Digital Tap 8'): Digital gain will be applied to Tap 8.
     *  - \b DigitalTap9 (Display string: 'Digital Tap 9'): Digital gain will be applied to Tap 9.
     *  - \b DigitalTap10 (Display string: 'Digital Tap 10'): Digital gain will be applied to Tap 10.
     *  - \b DigitalTap11 (Display string: 'Digital Tap 11'): Digital gain will be applied to Tap 11.
     *  - \b DigitalTap12 (Display string: 'Digital Tap 12'): Digital gain will be applied to Tap 12.
     *  - \b DigitalTap13 (Display string: 'Digital Tap 13'): Digital gain will be applied to Tap 13.
     *  - \b DigitalTap14 (Display string: 'Digital Tap 14'): Digital gain will be applied to Tap 14.
     *  - \b DigitalTap15 (Display string: 'Digital Tap 15'): Digital gain will be applied to Tap 15.
     *  - \b DigitalTap16 (Display string: 'Digital Tap 16')
     *  - \b mvAnalogSensorA (Display string: 'mv Analog Sensor A')
     *  - \b mvAnalogSensorB (Display string: 'mv Analog Sensor B')
     *  - \b mvHorizontalZone0 (Display string: 'mv Horizontal Zone 0'): Selects the first horizontal gain zone used when 'mvGainMode' is set to 'mvMultiZone' and when operating the device in a 'mvMultiAreaMode' different from 'mvOff'.
     *  - \b mvHorizontalZone1 (Display string: 'mv Horizontal Zone 1'): Selects the second horizontal gain zone used when 'mvGainMode' is set to 'mvMultiZone' and when operating the device in a 'mvMultiAreaMode' different from 'mvOff'.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 gainSelector;
    /// \brief A floating point property. Controls the selected gain as an absolute physical value.
    /**
     *  Controls the selected gain as an absolute physical value. This is an amplification factor applied to the video signal.
     */
    PropertyF gain;
    /// \brief A floating point property. Defines the position(in percent of the total number of lines) within the image to switch from one gain value to the next.
    /**
     *  Defines the position(in percent of the total number of lines) within the image to switch from one gain value to the next. 100% means that only one zone exists. 25% means that the upper 25% of the image are defined by the gain value of 'mvHorizontalZone0' and the lower 75% are defined by the gain value of 'mvHorizontalZone1'. Some sensors may only allow to change the gain at certain positions e.g. the last line of a defined ROI. In this case the first possible switching point above the actual line will be used.
     */
    PropertyF mvGainHorizontalZoneDivider;
    /// \brief An enumerated integer property. Sets the automatic gain control (AGC) mode.
    /**
     *  Sets the automatic gain control (AGC) mode. The exact algorithm used to implement AGC is device-specific.
     *
     *  The following string values might be valid for this feature:
     *  - \b Off (Display string: 'Off'): Gain is User controlled using Gain.
     *  - \b Once (Display string: 'Once'): Gain is automatically adjusted once by the device. Once it has converged, it automatically returns to the Off state.
     *  - \b Continuous (Display string: 'Continuous'): Gain is constantly adjusted by the device.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 gainAuto;
    /// \brief An enumerated integer property. Sets the mode for automatic gain balancing between the sensor color channels or taps.
    /**
     *  Sets the mode for automatic gain balancing between the sensor color channels or taps. The gain coefficients of each channel or tap are adjusted so they are matched.
     *
     *  The following string values might be valid for this feature:
     *  - \b Off (Display string: 'Off'): Gain tap balancing is user controlled using Gain .
     *  - \b Once (Display string: 'Once'): Gain tap balancing is automatically adjusted once by the device. Once it has converged, it automatically returns to the Off state.
     *  - \b Continuous (Display string: 'Continuous'): Gain tap balancing is constantly adjusted by the device.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 gainAutoBalance;
    /// \brief An enumerated integer property. Selects which Black Level is controlled by the various Black Level features.
    /**
     *  Selects which Black Level is controlled by the various Black Level features.
     *
     *  The following string values might be valid for this feature:
     *  - \b All (Display string: 'All'): Black Level will be applied to all channels or taps.
     *  - \b Red (Display string: 'Red'): Black Level will be applied to the red channel.
     *  - \b Green (Display string: 'Green'): Black Level will be applied to the green channel.
     *  - \b Blue (Display string: 'Blue'): Black Level will be applied to the blue channel.
     *  - \b Y (Display string: 'Y'): Black Level will be applied to Y channel.
     *  - \b U (Display string: 'U'): Black Level will be applied to U channel.
     *  - \b V (Display string: 'V'): Black Level will be applied to V channel.
     *  - \b Tap1 (Display string: 'Tap 1'): Black Level will be applied to Tap 1.
     *  - \b Tap2 (Display string: 'Tap 2'): Black Level will be applied to Tap 2.
     *  - \b Tap\#3\# (Display string: 'Tap \#3\#'): Black Level will be applied to Tap \#3\#.
     *  - \b Tap3 (Display string: 'Tap 3'): Black Level will be applied to Tap 3.
     *  - \b Tap4 (Display string: 'Tap 4'): Black Level will be applied to Tap 4.
     *  - \b Tap5 (Display string: 'Tap 5'): Black Level will be applied to Tap 5.
     *  - \b Tap6 (Display string: 'Tap 6'): Black Level will be applied to Tap 6.
     *  - \b Tap7 (Display string: 'Tap 7'): Black Level will be applied to Tap 7.
     *  - \b Tap8 (Display string: 'Tap 8'): Black Level will be applied to Tap 8.
     *  - \b Tap9 (Display string: 'Tap 9'): Black Level will be applied to Tap 9.
     *  - \b Tap10 (Display string: 'Tap 10'): Black Level will be applied to Tap 10.
     *  - \b Tap11 (Display string: 'Tap 11'): Black Level will be applied to Tap 11.
     *  - \b Tap12 (Display string: 'Tap 12'): Black Level will be applied to Tap 12.
     *  - \b Tap13 (Display string: 'Tap 13'): Black Level will be applied to Tap 13.
     *  - \b Tap14 (Display string: 'Tap 14'): Black Level will be applied to Tap 14.
     *  - \b Tap15 (Display string: 'Tap 15'): Black Level will be applied to Tap 15.
     *  - \b Tap16 (Display string: 'Tap 16')
     *  - \b mvAnalogSensorA (Display string: 'mv Analog Sensor A')
     *  - \b mvAnalogSensorB (Display string: 'mv Analog Sensor B')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 blackLevelSelector;
    /// \brief A floating point property. Controls the analog black level as an absolute physical value.
    /**
     *  Controls the analog black level as an absolute physical value. This represents a DC offset applied to the video signal.
     */
    PropertyF blackLevel;
    /// \brief An enumerated integer property. Controls the mode for automatic black level adjustment.
    /**
     *  Controls the mode for automatic black level adjustment. The exact algorithm used to implement this adjustment is device-specific.
     *
     *  The following string values might be valid for this feature:
     *  - \b Off (Display string: 'Off'): Analog black level is user controlled using BlackLevel.
     *  - \b Once (Display string: 'Once'): Analog black level is automatically adjusted once by the device. Once it has converged, it automatically returns to the Off state.
     *  - \b Continuous (Display string: 'Continuous'): Analog black level is constantly adjusted by the device.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 blackLevelAuto;
    /// \brief An enumerated integer property. Controls the mode for automatic black level balancing between the sensor color channels or taps.
    /**
     *  Controls the mode for automatic black level balancing between the sensor color channels or taps. The black level coefficients of each channel are adjusted so they are matched.
     *
     *  The following string values might be valid for this feature:
     *  - \b Off (Display string: 'Off'): Black level tap balancing is user controlled using BlackLevel.
     *  - \b Once (Display string: 'Once'): Black level tap balancing is automatically adjusted once by the device. Once it has converged, it automatically returns to the Off state.
     *  - \b Continuous (Display string: 'Continuous'): Black level tap balancing is constantly adjusted by the device.
     *  - \b mvRaw (Display string: 'mv Raw')
     *  - \b mvFixed (Display string: 'mv Fixed')
     *  - \b mvLowerLine (Display string: 'mv Lower Line')
     *  - \b mvSlow (Display string: 'mv Slow')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 blackLevelAutoBalance;
    /// \brief An enumerated integer property. Selects which White Clip to control.
    /**
     *  Selects which White Clip to control.
     *
     *  The following string values might be valid for this feature:
     *  - \b All (Display string: 'All'): White Clip will be applied to all channels or taps.
     *  - \b Red (Display string: 'Red'): White Clip will be applied to the red channel.
     *  - \b Green (Display string: 'Green'): White Clip will be applied to the green channel.
     *  - \b Blue (Display string: 'Blue'): White Clip will be applied to the blue channel.
     *  - \b Y (Display string: 'Y'): White Clip will be applied to Y channel.
     *  - \b U (Display string: 'U'): White Clip will be applied to U channel.
     *  - \b V (Display string: 'V'): White Clip will be applied to V channel.
     *  - \b Tap1 (Display string: 'Tap 1'): White Clip will be applied to Tap 1.
     *  - \b Tap2 (Display string: 'Tap 2'): White Clip will be applied to Tap 2.
     *  - \b Tap\#3\# (Display string: 'Tap \#3\#'): White Clip will be applied to Tap \#3\#.
     *  - \b Tap3 (Display string: 'Tap 3'): White Clip will be applied to Tap 3.
     *  - \b Tap4 (Display string: 'Tap 4'): White Clip will be applied to Tap 4.
     *  - \b Tap5 (Display string: 'Tap 5'): White Clip will be applied to Tap 5.
     *  - \b Tap6 (Display string: 'Tap 6'): White Clip will be applied to Tap 6.
     *  - \b Tap7 (Display string: 'Tap 7'): White Clip will be applied to Tap 7.
     *  - \b Tap8 (Display string: 'Tap 8'): White Clip will be applied to Tap 8.
     *  - \b Tap9 (Display string: 'Tap 9'): White Clip will be applied to Tap 9.
     *  - \b Tap10 (Display string: 'Tap 10'): White Clip will be applied to Tap 10.
     *  - \b Tap11 (Display string: 'Tap 11'): White Clip will be applied to Tap 11.
     *  - \b Tap12 (Display string: 'Tap 12'): White Clip will be applied to Tap 12.
     *  - \b Tap13 (Display string: 'Tap 13'): White Clip will be applied to Tap 13.
     *  - \b Tap14 (Display string: 'Tap 14'): White Clip will be applied to Tap 14.
     *  - \b Tap15 (Display string: 'Tap 15'): White Clip will be applied to Tap 15.
     *  - \b Tap16 (Display string: 'Tap 16')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 whiteClipSelector;
    /// \brief A floating point property. Controls the maximal intensity taken by the video signal before being clipped as an absolute physical value.
    /**
     *  Controls the maximal intensity taken by the video signal before being clipped as an absolute physical value. The video signal will never exceed the white clipping point: it will saturate at that level.
     */
    PropertyF whiteClip;
    /// \brief An enumerated integer property. Selects which Balance ratio to control.
    /**
     *  Selects which Balance ratio to control.
     *
     *  The following string values might be valid for this feature:
     *  - \b All (Display string: 'All'): Balance Ratio will be applied to all channels or taps.
     *  - \b Red (Display string: 'Red'): Balance Ratio will be applied to the red channel.
     *  - \b Green (Display string: 'Green'): Balance Ratio will be applied to the green channel.
     *  - \b Blue (Display string: 'Blue'): Balance Ratio will be applied to the blue channel.
     *  - \b Y (Display string: 'Y'): Balance Ratio will be applied to Y channel.
     *  - \b U (Display string: 'U'): Balance Ratio will be applied to U channel.
     *  - \b V (Display string: 'V'): Balance Ratio will be applied to V channel.
     *  - \b Tap1 (Display string: 'Tap 1'): Balance Ratio will be applied to Tap 1.
     *  - \b Tap2 (Display string: 'Tap 2'): Balance Ratio will be applied to Tap 2.
     *  - \b Tap\#3\# (Display string: 'Tap \#3\#'): Balance Ratio will be applied to Tap \#3\#.
     *  - \b Green0 (Display string: 'Green 0')
     *  - \b Green1 (Display string: 'Green 1')
     *  - \b Tap3 (Display string: 'Tap 3'): Balance Ratio will be applied to Tap 3.
     *  - \b Tap4 (Display string: 'Tap 4'): Balance Ratio will be applied to Tap 4.
     *  - \b Tap5 (Display string: 'Tap 5'): Balance Ratio will be applied to Tap 5.
     *  - \b Tap6 (Display string: 'Tap 6'): Balance Ratio will be applied to Tap 6.
     *  - \b Tap7 (Display string: 'Tap 7'): Balance Ratio will be applied to Tap 7.
     *  - \b Tap8 (Display string: 'Tap 8'): Balance Ratio will be applied to Tap 8.
     *  - \b Tap9 (Display string: 'Tap 9'): Balance Ratio will be applied to Tap 9.
     *  - \b Tap10 (Display string: 'Tap 10'): Balance Ratio will be applied to Tap 10.
     *  - \b Tap11 (Display string: 'Tap 11'): Balance Ratio will be applied to Tap 11.
     *  - \b Tap12 (Display string: 'Tap 12'): Balance Ratio will be applied to Tap 12.
     *  - \b Tap13 (Display string: 'Tap 13'): Balance Ratio will be applied to Tap 13.
     *  - \b Tap14 (Display string: 'Tap 14'): Balance Ratio will be applied to Tap 14.
     *  - \b Tap15 (Display string: 'Tap 15'): Balance Ratio will be applied to Tap 15.
     *  - \b Tap16 (Display string: 'Tap 16')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 balanceRatioSelector;
    /// \brief A floating point property. Controls ratio of the selected color component to a reference color component.
    /**
     *  Controls ratio of the selected color component to a reference color component. It is used for white balancing.
     */
    PropertyF balanceRatio;
    /// \brief An enumerated integer property. Controls the mode for automatic white balancing between the color channels.
    /**
     *  Controls the mode for automatic white balancing between the color channels. The white balancing ratios are automatically adjusted.
     *
     *  The following string values might be valid for this feature:
     *  - \b Off (Display string: 'Off'): White balancing is user controlled using BalanceRatioSelector and BalanceRatio.
     *  - \b Once (Display string: 'Once'): White balancing is automatically adjusted once by the device. Once it has converged, it automatically returns to the Off state.
     *  - \b Continuous (Display string: 'Continuous'): White balancing is constantly adjusted by the device.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 balanceWhiteAuto;
    /// \brief An integer property. The number of frames that the AEC must skip before updating the exposure register
    /**
     *  The number of frames that the AEC must skip before updating the exposure register
     */
    PropertyI64 mvGainAutoDelayImages;
    /// \brief A floating point property. The upper limit of the gain in auto gain mode
    /**
     *  The upper limit of the gain in auto gain mode
     */
    PropertyF mvGainAutoUpperLimit;
    /// \brief A floating point property. The lower limit of the gain in auto gain mode
    /**
     *  The lower limit of the gain in auto gain mode
     */
    PropertyF mvGainAutoLowerLimit;
    /// \brief An enumerated integer property. Determines the increment or decrement size of gain value from frame to frame.
    /**
     *  Determines the increment or decrement size of gain value from frame to frame.
     *
     *  The following string values might be valid for this feature:
     *  - \b Slow (Display string: 'Slow')
     *  - \b Medium (Display string: 'Medium')
     *  - \b Fast (Display string: 'Fast')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvGainAutoSpeed;
    /// \brief An integer property. Common desired average grey value (in percent) used for Auto Gain Control(AGC) and Auto Exposure Control(AEC).
    /**
     *  Common desired average grey value (in percent) used for Auto Gain Control(AGC) and Auto Exposure Control(AEC).
     */
    PropertyI64 mvGainAutoAverageGrey;
    /// \brief An enumerated integer property. Highlight auto control AOI to check AOI settings. Switch off for normal operation.
    /**
     *  Highlight auto control AOI to check AOI settings. Switch off for normal operation.
     *
     *  The following string values might be valid for this feature:
     *  - \b Off (Display string: 'Off')
     *  - \b On (Display string: 'On')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvGainAutoHighlightAOI;
    /// \brief An enumerated integer property. Common AutoControl AOI used for Auto Gain Control(AGC), Auto Exposure Control(AEC) and Auto White Balancing.
    /**
     *  Common AutoControl AOI used for Auto Gain Control(AGC), Auto Exposure Control(AEC) and Auto White Balancing.
     *
     *  The following string values might be valid for this feature:
     *  - \b mvFull (Display string: 'mv Full')
     *  - \b mvCenter (Display string: 'mv Center')
     *  - \b mvUser (Display string: 'mv User')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvGainAutoAOIMode;
    /// \brief An integer property. Common AOI X-Offset used for Auto Gain Control(AGC), Auto Exposure Control(AEC) and Auto White Balance(AWB).
    /**
     *  Common AOI X-Offset used for Auto Gain Control(AGC), Auto Exposure Control(AEC) and Auto White Balance(AWB).
     */
    PropertyI64 mvGainAutoOffsetX;
    /// \brief An integer property. Common AOI Y-Offset used for Auto Gain Control(AGC), Auto Exposure Control(AEC) and Auto White Balance(AWB).
    /**
     *  Common AOI Y-Offset used for Auto Gain Control(AGC), Auto Exposure Control(AEC) and Auto White Balance(AWB).
     */
    PropertyI64 mvGainAutoOffsetY;
    /// \brief An integer property. Common AOI Width used for Auto Gain Control(AGC), Auto Exposure Control(AEC) and Auto White Balance(AWB).
    /**
     *  Common AOI Width used for Auto Gain Control(AGC), Auto Exposure Control(AEC) and Auto White Balance(AWB).
     */
    PropertyI64 mvGainAutoWidth;
    /// \brief An integer property. Common AOI Height used for Auto Gain Control(AGC), Auto Exposure Control(AEC) and Auto White Balance(AWB).
    /**
     *  Common AOI Height used for Auto Gain Control(AGC), Auto Exposure Control(AEC) and Auto White Balance(AWB).
     */
    PropertyI64 mvGainAutoHeight;
    /// \brief An enumerated integer property. Selects the common auto mode for gain and exposure.
    /**
     *  Selects the common auto mode for gain and exposure.
     *
     *  The following string values might be valid for this feature:
     *  - \b mvSensor (Display string: 'mv Sensor'): The sensor itself will do the auto control.
     *  - \b mvDevice (Display string: 'mv Device'): The device(firmware) will do the auto control.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvGainAutoMode;
    /// \brief An enumerated integer property. Common AutoControl AOI used for Auto Gain Control(AGC), Auto Exposure Control(AEC) and Auto White Balance(AWB).
    /**
     *  Common AutoControl AOI used for Auto Gain Control(AGC), Auto Exposure Control(AEC) and Auto White Balance(AWB).
     *
     *  The following string values might be valid for this feature:
     *  - \b mvFull (Display string: 'mv Full')
     *  - \b mvCenter (Display string: 'mv Center')
     *  - \b mvUser (Display string: 'mv User')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvBalanceWhiteAutoAOIMode;
    /// \brief An integer property. Common AOI X-Offset used for Auto Gain Control(AGC), Auto Exposure Control(AEC) and Auto White Balance(AWB).
    /**
     *  Common AOI XOffset used for auto gain control(AGC), Auto Exposure Control(AEC) and Auto White Balance(AWB).
     */
    PropertyI64 mvBalanceWhiteAutoOffsetX;
    /// \brief An integer property. Common AOI Y-Offset used for Auto Gain Control(AGC), Auto Exposure Control(AEC) and Auto White Balance(AWB).
    /**
     *  Common AOI Y-Offset used for Auto Gain Control(AGC), Auto Exposure Control(AEC) and Auto White Balance(AWB).
     */
    PropertyI64 mvBalanceWhiteAutoOffsetY;
    /// \brief An integer property. Common AOI Width used for Auto Gain Control(AGC), Auto Exposure Control(AEC) and Auto White Balance(AWB).
    /**
     *  Common AOI Width used for Auto Gain Control(AGC), Auto Exposure Control(AEC) and Auto White Balance(AWB).
     */
    PropertyI64 mvBalanceWhiteAutoWidth;
    /// \brief An integer property. Common AOI Height used for Auto Gain Control(AGC), Auto Exposure Control(AEC) and Auto White Balance(AWB).
    /**
     *  Common AOI Height used for Auto Gain Control(AGC), Auto Exposure Control(AEC) and Auto White Balance(AWB).
     */
    PropertyI64 mvBalanceWhiteAutoHeight;
    /// \brief An enumerated integer property. Makes the image brighter.
    /**
     *  Makes the image brighter.
     *
     *  The following string values might be valid for this feature:
     *  - \b On (Display string: 'On')
     *  - \b Off (Display string: 'Off')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvLowLight;
    /// \brief An integer property. Adapt gain. Gain value of the sensor may differ from sensor to sensor.
    /**
     *  Adapt gain. Gain value of the sensor may differ from sensor to sensor.
     */
    PropertyI64 mvADCGain;
    /// \brief An integer property. Adjusting this value will result in better column CDS (correlated double sampling) which will remove the column FPN from the image.
    /**
     *  Adjusting this value will result in better column CDS (correlated double sampling) which will remove the column FPN from the image.
     */
    PropertyI64 mvVRamp;
    /// \brief An integer property. Controls the knee point between linear response and logarithmic response.
    /**
     *  Controls the knee point between linear response and logarithmic response.
     */
    PropertyI64 mvLinearLogarithmicMode;
    /// \brief An integer property. Used for fine tuning of the brightness of the sensor.
    /**
     *  Used for fine tuning of the brightness of the sensor.
     */
    PropertyI64 mvDigitalGainOffset;
    /// \brief A method object. Saves the calibration data to non-volatile memory.
    /**
     *  Saves the calibration data to non-volatile memory.
     */
    Method mvSaveCalibrationData;
    /// \brief A boolean property. Enables Gamma correction. All other LUT will be disabled.
    /**
     *  Enables gamma correction. All other LUT will be disabled.
     */
    PropertyIBoolean mvGammaEnable;
    /// \brief An enumerated integer property. Sets the type of Gamma to be used.
    /**
     *  Sets the type of Gamma to be used.
     *
     *  The following string values might be valid for this feature:
     *  - \b mvSRGB (Display string: 'mv SRGB'): Gamma curve is fixed to a sRGB curve.
     *  - \b mvUser (Display string: 'mv User'): Gamma curve can be configured by user.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvGammaSelector;
    /// \brief A floating point property. Controls the gamma correction of pixel intensity.
    /**
     *  Controls the gamma correction of pixel intensity.
     *  Since the human eye perceives light similar to a logarithm of real light intensity it's characteristic curve is
     *  non-linear. It follows the rule of (intensity ^ gamma) with a gamma value between 0.3-0.5.
     *  To provide as much useful information as possible, the image is converted from 12-bit acquired by the sensor to 8-bit utilizing
     *  this characteristic curve. The result is a linearized image optimized for the human eye's non-linear behavior which allows
     *  to perceive as much intensity differences as possible.
     *  \image html Gamma_correction_camera.png
     <center>Conversion from 12- to 8-bit utilizing the gamma function</center>
     */
    PropertyF gamma;
    // *INDENT-OFF*
    PYTHON_OR_JAVA_ONLY( %mutable; )
    // *INDENT-ON*
};

//-----------------------------------------------------------------------------
/// \brief Category that includes the LUT control features.
/**
 *  A category that includes the LUT control features.
 * \ingroup GenICamInterfaceDevice
 */
class LUTControl
//-----------------------------------------------------------------------------
{
public:
    /// \brief Constructs a new <b>mvIMPACT::acquire::GenICam::LUTControl</b> object.
    explicit LUTControl(
        /// [in] A pointer to a <b>mvIMPACT::acquire::Device</b> object obtained from a <b>mvIMPACT::acquire::DeviceManager</b> object.
        mvIMPACT::acquire::Device* pDev,
        /// [in] The name of the driver internal setting to access with this instance.
        /// A list of valid setting names can be obtained by a call to
        /// <b>mvIMPACT::acquire::FunctionInterface::getAvailableSettings</b>, new
        /// settings can be created with the function
        /// <b>mvIMPACT::acquire::FunctionInterface::createSetting</b>
        const std::string& settingName = "Base" ) :
        LUTSelector(),
        LUTEnable(),
        LUTIndex(),
        LUTValue(),
        LUTValueAll(),
        mvLUTType(),
        mvLUTInputData(),
        mvLUTMapping()
    {
        pDev->validateInterfaceLayout( dilGenICam );
        mvIMPACT::acquire::DeviceComponentLocator locator( pDev, mvIMPACT::acquire::dltSetting, settingName );
        locator.bindSearchBase( locator.searchbase_id(), "Camera/GenICam" );
        locator.bindComponent( LUTSelector, "LUTSelector" );
        locator.bindComponent( LUTEnable, "LUTEnable" );
        locator.bindComponent( LUTIndex, "LUTIndex" );
        locator.bindComponent( LUTValue, "LUTValue" );
        locator.bindComponent( LUTValueAll, "LUTValueAll" );
        locator.bindComponent( mvLUTType, "mvLUTType" );
        locator.bindComponent( mvLUTInputData, "mvLUTInputData" );
        locator.bindComponent( mvLUTMapping, "mvLUTMapping" );
    }
    // *INDENT-OFF*
    PYTHON_OR_JAVA_ONLY( %immutable; )
    // *INDENT-ON*
    /// \brief An enumerated integer property. Selects which LUT to control.
    /**
     *  Selects which LUT to control.
     *
     *  The following string values might be valid for this feature:
     *  - \b Luminance (Display string: 'Luminance'): Selects the Luminance LUT.
     *  - \b Red (Display string: 'Red'): Selects the Red LUT.
     *  - \b Green (Display string: 'Green'): Selects the Green LUT.
     *  - \b Blue (Display string: 'Blue'): Selects the Blue LUT.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 LUTSelector;
    /// \brief A boolean property. Activates the selected LUT.
    /**
     *  Activates the selected LUT.
     */
    PropertyIBoolean LUTEnable;
    /// \brief An integer property. Control the index (offset) of the coefficient to access in the selected LUT.
    /**
     *  Control the index (offset) of the coefficient to access in the selected LUT.
     */
    PropertyI64 LUTIndex;
    /// \brief An integer property. Returns the Value at entry LUTIndex of the LUT selected by LUTSelector.
    /**
     *  Returns the Value at entry LUTIndex of the LUT selected by LUTSelector.
     */
    PropertyI64 LUTValue;
    /// \brief A string property. Accesses all the LUT coefficients in a single access without using individual LUTIndex.
    /**
     *  Accesses all the LUT coefficients in a single access without using individual LUTIndex.
     */
    PropertyS LUTValueAll;
    /// \brief An enumerated integer property. Describes the type of LUT used.
    /**
     *  Describes the type of LUT used.
     *
     *  The following string values might be valid for this feature:
     *  - \b Direct (Display string: 'Direct'): The user can define an output value for each input value of the LUT.
     *  - \b Interpolated (Display string: 'Interpolated'): The user can define the output values for equidistant nodes in the LUT. Linear interpolation is used to determine the output values for input values that lie in between the given nodes.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvLUTType;
    /// \brief An enumerated integer property. Describes the data the LUT is operating on
    /**
     *  Describes the data the LUT is operating on
     *
     *  The following string values might be valid for this feature:
     *  - \b Bayer (Display string: 'Bayer'): The LUT is operating on raw Bayer data (i.e. before debayering)
     *  - \b Gray (Display string: 'Gray'): The LUT is operating on gray data
     *  - \b RGB (Display string: 'RGB'): The LUT is operating on RGB data (i.e. after debayering)
     *  - \b DeviceSpecific (Display string: 'Device Specific'): The LUT is operating on device specific data
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvLUTInputData;
    /// \brief An enumerated integer property. Describes mapping of the LUT
    /**
     *  Describes the mapping of the LUT
     *
     *  The following string values might be valid for this feature:
     *  - \b map_8To12 (Display string: 'map 8 To 12'): The LUT maps 8 bit input data to 12 bit output data.
     *  - \b map_10To12 (Display string: 'map 10 To 12'): The LUT maps 10 bit input data to 12 bit output data.
     *  - \b map_10To10 (Display string: 'map 10 To 10'): The LUT maps 10 bit input data to 10 bit output data.
     *  - \b map_8To10 (Display string: 'map 8 To 10'): The LUT maps 8 bit input data to 12 bit output data.
     *  - \b map_12To10 (Display string: 'map 12 To 10'): The LUT maps 12 bit input data to 10 bit output data.
     *  - \b map_10To9 (Display string: 'map 10 To 9'): The LUT maps 10 bit input data to 9 bit output data.
     *  - \b map_12To9 (Display string: 'map 12 To 9'): The LUT maps 12 bit input data to 9 bit output data.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvLUTMapping;
    // *INDENT-OFF*
    PYTHON_OR_JAVA_ONLY( %mutable; )
    // *INDENT-ON*
};

//-----------------------------------------------------------------------------
/// \brief Category that contains the Color Transformation control features.
/**
 *  A category that contains the Color Transformation control features.
 * \ingroup GenICamInterfaceDevice
 */
class ColorTransformationControl
//-----------------------------------------------------------------------------
{
public:
    /// \brief Constructs a new <b>mvIMPACT::acquire::GenICam::ColorTransformationControl</b> object.
    explicit ColorTransformationControl(
        /// [in] A pointer to a <b>mvIMPACT::acquire::Device</b> object obtained from a <b>mvIMPACT::acquire::DeviceManager</b> object.
        mvIMPACT::acquire::Device* pDev,
        /// [in] The name of the driver internal setting to access with this instance.
        /// A list of valid setting names can be obtained by a call to
        /// <b>mvIMPACT::acquire::FunctionInterface::getAvailableSettings</b>, new
        /// settings can be created with the function
        /// <b>mvIMPACT::acquire::FunctionInterface::createSetting</b>
        const std::string& settingName = "Base" ) :
        colorTransformationSelector(),
        colorTransformationEnable(),
        colorTransformationValueSelector(),
        colorTransformationValue()
    {
        pDev->validateInterfaceLayout( dilGenICam );
        mvIMPACT::acquire::DeviceComponentLocator locator( pDev, mvIMPACT::acquire::dltSetting, settingName );
        locator.bindSearchBase( locator.searchbase_id(), "Camera/GenICam" );
        locator.bindComponent( colorTransformationSelector, "ColorTransformationSelector" );
        locator.bindComponent( colorTransformationEnable, "ColorTransformationEnable" );
        locator.bindComponent( colorTransformationValueSelector, "ColorTransformationValueSelector" );
        locator.bindComponent( colorTransformationValue, "ColorTransformationValue" );
    }
    // *INDENT-OFF*
    PYTHON_OR_JAVA_ONLY( %immutable; )
    // *INDENT-ON*
    /// \brief An enumerated integer property. Selects which Color Transformation module is controlled by the various Color Transformation features.
    /**
     *  Selects which Color Transformation module is controlled by the various Color Transformation features.
     *
     *  The following string values might be valid for this feature:
     *  - \b RGBtoRGB (Display string: 'RGB to RGB'): RGB to RGB color transformation.
     *  - \b RGBtoYUV (Display string: 'RGB to YUV'): RGB to YUV color transformation.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 colorTransformationSelector;
    /// \brief A boolean property. Activates the selected Color Transformation module.
    /**
     *  Activates the selected Color Transformation module.
     */
    PropertyIBoolean colorTransformationEnable;
    /// \brief An enumerated integer property. Selects the Gain factor or Offset of the Transformation matrix to access in the selected Color Transformation module.
    /**
     *  Selects the Gain factor or Offset of the Transformation matrix to access in the selected Color Transformation module.
     *
     *  The following string values might be valid for this feature:
     *  - \b Gain00 (Display string: 'Gain 00'): Gain 0,0 of the transformation matrix.
     *  - \b Gain01 (Display string: 'Gain 01'): Gain 0,1 of the transformation matrix.
     *  - \b Gain02 (Display string: 'Gain 02'): Gain 0,2 of the transformation matrix.
     *  - \b Gain10 (Display string: 'Gain 10'): Gain 1,0 of the transformation matrix.
     *  - \b Gain11 (Display string: 'Gain 11'): Gain 1,1 of the transformation matrix.
     *  - \b Gain12 (Display string: 'Gain 12'): Gain 1,2 of the transformation matrix.
     *  - \b Gain20 (Display string: 'Gain 20'): Gain 2,0 of the transformation matrix.
     *  - \b Gain21 (Display string: 'Gain 21'): Gain 2,1 of the transformation matrix.
     *  - \b Gain22 (Display string: 'Gain 22'): Gain 2,2 of the transformation matrix.
     *  - \b Offset0 (Display string: 'Offset 0'): Offset 0 of the transformation matrix.
     *  - \b Offset1 (Display string: 'Offset 1'): Offset 1 of the transformation matrix.
     *  - \b Offset2 (Display string: 'Offset 2'): Offset 2 of the transformation matrix.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 colorTransformationValueSelector;
    /// \brief A floating point property. Represents the value of the selected Gain factor or Offset inside the Transformation matrix.
    /**
     *  Represents the value of the selected Gain factor or Offset inside the Transformation matrix.
     */
    PropertyF colorTransformationValue;
    // *INDENT-OFF*
    PYTHON_OR_JAVA_ONLY( %mutable; )
    // *INDENT-ON*
};

//-----------------------------------------------------------------------------
/// \brief Category that contains the digital input and output control features.
/**
 *  A category that contains the digital input and output control features.
 * \ingroup GenICamInterfaceDevice
 */
class DigitalIOControl
//-----------------------------------------------------------------------------
{
public:
    /// \brief Constructs a new <b>mvIMPACT::acquire::GenICam::DigitalIOControl</b> object.
    explicit DigitalIOControl(
        /// [in] A pointer to a <b>mvIMPACT::acquire::Device</b> object obtained from a <b>mvIMPACT::acquire::DeviceManager</b> object.
        mvIMPACT::acquire::Device* pDev,
        /// [in] The name of the driver internal setting to access with this instance.
        /// A list of valid setting names can be obtained by a call to
        /// <b>mvIMPACT::acquire::FunctionInterface::getAvailableSettings</b>, new
        /// settings can be created with the function
        /// <b>mvIMPACT::acquire::FunctionInterface::createSetting</b>
        const std::string& settingName = "Base" ) :
        lineSelector(),
        lineMode(),
        lineInverter(),
        lineStatus(),
        lineStatusAll(),
        lineSource(),
        lineFormat(),
        userOutputSelector(),
        userOutputValue(),
        userOutputValueAll(),
        userOutputValueAllMask(),
        mvLineDebounceTimeRisingEdge(),
        mvLineDebounceTimeFallingEdge(),
        mvRTMInputSelector(),
        mvRTMSource(),
        mvLineLED(),
        mvEnable12VPowerOut()
    {
        pDev->validateInterfaceLayout( dilGenICam );
        mvIMPACT::acquire::DeviceComponentLocator locator( pDev, mvIMPACT::acquire::dltSetting, settingName );
        locator.bindSearchBase( locator.searchbase_id(), "Camera/GenICam" );
        locator.bindComponent( lineSelector, "LineSelector" );
        locator.bindComponent( lineMode, "LineMode" );
        locator.bindComponent( lineInverter, "LineInverter" );
        locator.bindComponent( lineStatus, "LineStatus" );
        locator.bindComponent( lineStatusAll, "LineStatusAll" );
        locator.bindComponent( lineSource, "LineSource" );
        locator.bindComponent( lineFormat, "LineFormat" );
        locator.bindComponent( userOutputSelector, "UserOutputSelector" );
        locator.bindComponent( userOutputValue, "UserOutputValue" );
        locator.bindComponent( userOutputValueAll, "UserOutputValueAll" );
        locator.bindComponent( userOutputValueAllMask, "UserOutputValueAllMask" );
        locator.bindComponent( mvLineDebounceTimeRisingEdge, "mvLineDebounceTimeRisingEdge" );
        locator.bindComponent( mvLineDebounceTimeFallingEdge, "mvLineDebounceTimeFallingEdge" );
        locator.bindComponent( mvRTMInputSelector, "mvRTMInputSelector" );
        locator.bindComponent( mvRTMSource, "mvRTMSource" );
        locator.bindComponent( mvLineLED, "mvLineLED" );
        locator.bindComponent( mvEnable12VPowerOut, "mvEnable12VPowerOut" );
    }
    // *INDENT-OFF*
    PYTHON_OR_JAVA_ONLY( %immutable; )
    // *INDENT-ON*
    /// \brief An enumerated integer property. Selects the physical line (or pin) of the external device connector or the virtual line of the Transport Layer to configure.
    /**
     *  Selects the physical line (or pin) of the external device connector or the virtual line of the Transport Layer to configure.
     *
     *  The following string values might be valid for this feature:
     *  - \b Line0 (Display string: 'Line 0'): Index of the physical line and associated I/O control block to use.
     *  - \b Line1 (Display string: 'Line 1'): Index of the physical line and associated I/O control block to use.
     *  - \b Line2 (Display string: 'Line 2'): Index of the physical line and associated I/O control block to use.
     *  - \b Line\#3\# (Display string: 'Line \#3\#'): Index of the physical line and associated I/O control block to use.
     *  - \b LinkTrigger0 (Display string: 'Link Trigger 0'): Index of the virtual line going on the Transport layer to use.
     *  - \b LinkTrigger1 (Display string: 'Link Trigger 1'): Index of the virtual line going on the Transport layer to use.
     *  - \b LinkTrigger2 (Display string: 'Link Trigger 2'): Index of the virtual line going on the Transport layer to use.
     *  - \b LinkTrigger\#3\# (Display string: 'Link Trigger \#3\#'): Index of the virtual line going on the Transport layer to use.
     *  - \b CC1 (Display string: 'CC 1'): Index of the Camera Link physical line and associated I/O control block to use. This ensures a direct mapping between the lines on the frame grabber and on the camera. Applicable to CameraLink Product only.
     *  - \b CC2 (Display string: 'CC 2'): Index of the Camera Link physical line and associated I/O control block to use. This ensures a direct mapping between the lines on the frame grabber and on the camera. Applicable to CameraLink Product only.
     *  - \b CC3 (Display string: 'CC 3'): Index of the Camera Link physical line and associated I/O control block to use. This ensures a direct mapping between the lines on the frame grabber and on the camera. Applicable to CameraLink Product only.
     *  - \b CC4 (Display string: 'CC 4'): Index of the Camera Link physical line and associated I/O control block to use. This ensures a direct mapping between the lines on the frame grabber and on the camera. Applicable to CameraLink Product only.
     *  - \b CC\#5\# (Display string: 'CC \#5\#'): Index of the Camera Link physical line and associated I/O control block to use. This ensures a direct mapping between the lines on the frame grabber and on the camera. Applicable to CameraLink Product only.
     *  - \b Line3 (Display string: 'Line 3'): Index of the physical line and associated I/O control block to use.
     *  - \b Line4 (Display string: 'Line 4'): Index of the physical line and associated I/O control block to use.
     *  - \b Line5 (Display string: 'Line 5'): Index of the physical line and associated I/O control block to use.
     *  - \b Line6 (Display string: 'Line 6'): Index of the physical line and associated I/O control block to use.
     *  - \b Line7 (Display string: 'Line 7'): Index of the physical line and associated I/O control block to use.
     *  - \b Line8 (Display string: 'Line 8'): Index of the physical line and associated I/O control block to use.
     *  - \b Line9 (Display string: 'Line 9'): Index of the physical line and associated I/O control block to use.
     *  - \b Line10 (Display string: 'Line 10'): Index of the physical line and associated I/O control block to use.
     *  - \b Line11 (Display string: 'Line 11'): Index of the physical line and associated I/O control block to use.
     *  - \b Line12 (Display string: 'Line 12'): Index of the physical line and associated I/O control block to use.
     *  - \b Line13 (Display string: 'Line 13'): Index of the physical line and associated I/O control block to use.
     *  - \b Line14 (Display string: 'Line 14'): Index of the physical line and associated I/O control block to use.
     *  - \b Line15 (Display string: 'Line 15'): Index of the physical line and associated I/O control block to use.
     *  - \b CC5 (Display string: 'CC 5'): Index of the Camera Link physical line and associated I/O control block to use. This ensures a direct mapping between the lines on the frame grabber and on the camera. Applicable to CameraLink Product only.
     *  - \b CC6 (Display string: 'CC 6'): Index of the Camera Link physical line and associated I/O control block to use. This ensures a direct mapping between the lines on the frame grabber and on the camera. Applicable to CameraLink Product only.
     *  - \b CC7 (Display string: 'CC 7'): Index of the Camera Link physical line and associated I/O control block to use. This ensures a direct mapping between the lines on the frame grabber and on the camera. Applicable to CameraLink Product only.
     *  - \b CC8 (Display string: 'CC 8'): Index of the Camera Link physical line and associated I/O control block to use. This ensures a direct mapping between the lines on the frame grabber and on the camera. Applicable to CameraLink Product only.
     *  - \b CC9 (Display string: 'CC 9'): Index of the Camera Link physical line and associated I/O control block to use. This ensures a direct mapping between the lines on the frame grabber and on the camera. Applicable to CameraLink Product only.
     *  - \b CC10 (Display string: 'CC 10'): Index of the Camera Link physical line and associated I/O control block to use. This ensures a direct mapping between the lines on the frame grabber and on the camera. Applicable to CameraLink Product only.
     *  - \b CC11 (Display string: 'CC 11'): Index of the Camera Link physical line and associated I/O control block to use. This ensures a direct mapping between the lines on the frame grabber and on the camera. Applicable to CameraLink Product only.
     *  - \b CC12 (Display string: 'CC 12'): Index of the Camera Link physical line and associated I/O control block to use. This ensures a direct mapping between the lines on the frame grabber and on the camera. Applicable to CameraLink Product only.
     *  - \b CC13 (Display string: 'CC 13'): Index of the Camera Link physical line and associated I/O control block to use. This ensures a direct mapping between the lines on the frame grabber and on the camera. Applicable to CameraLink Product only.
     *  - \b CC14 (Display string: 'CC 14'): Index of the Camera Link physical line and associated I/O control block to use. This ensures a direct mapping between the lines on the frame grabber and on the camera. Applicable to CameraLink Product only.
     *  - \b CC15 (Display string: 'CC 15'): Index of the Camera Link physical line and associated I/O control block to use. This ensures a direct mapping between the lines on the frame grabber and on the camera. Applicable to CameraLink Product only.
     *  - \b CC16 (Display string: 'CC 16')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     *
     *  See \b lineStatusAll to find out which line corresponds to which input or output of your device
     *
     */
    PropertyI64 lineSelector;
    /// \brief An enumerated integer property. Controls if the physical Line is used to Input or Output a signal.
    /**
     *  Controls if the physical Line is used to Input or Output a signal.
     *
     *  The following string values might be valid for this feature:
     *  - \b Input (Display string: 'Input'): The selected physical line is used to Input an electrical signal.
     *  - \b Output (Display string: 'Output'): The selected physical line is used to Output an electrical signal.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 lineMode;
    /// \brief A boolean property. Controls the inversion of the signal of the selected input or output Line.
    /**
     *  Controls the inversion of the signal of the selected input or output Line.
     */
    PropertyIBoolean lineInverter;
    /// \brief A boolean property. Returns the current status of the selected input or output Line.
    /**
     *  Returns the current status of the selected input or output Line.
     */
    PropertyIBoolean lineStatus;
    /// \brief An integer property. Returns the current status of all available Line signals at time of polling in a single bitfield.
    /**
     *  Returns the current status of all available Line signals at time of polling in a single bitfield.
     *
     *  The following table documents which bit in this property represents the state of which digital I/O for \b mvBlueCOUGAR-X and \b mvBlueFOX3 devices:
     *
     *  <table>
     *  <tr><td class="header">bit</td><td class="header">IO</td><td class="header">LineSelectorValue</td></tr>
     *  <tr><td class="indexvalue">0</td><td class="indexvalue">out 0</td><td class="indexvalue">Line0</td></tr>
     *  <tr><td class="indexvalue">1</td><td class="indexvalue">out 1</td><td class="indexvalue">Line1</td></tr>
     *  <tr><td class="indexvalue">2</td><td class="indexvalue">out 2</td><td class="indexvalue">Line2</td></tr>
     *  <tr><td class="indexvalue">3</td><td class="indexvalue">out 3</td><td class="indexvalue">Line3</td></tr>
     *  <tr><td class="indexvalue">4</td><td class="indexvalue">in 0</td><td class="indexvalue">Line4</td></tr>
     *  <tr><td class="indexvalue">5</td><td class="indexvalue">in 1</td><td class="indexvalue">Line5</td></tr>
     *  </table>
     *
     *  The following table documents which bit in this property represents the state of which digital I/O for \b mvBlueCOUGAR-X-POE devices:
     *
     *  <table>
     *  <tr><td class="header">bit</td><td class="header">IO</td><td class="header">LineSelectorValue</td></tr>
     *  <tr><td class="indexvalue">0</td><td class="indexvalue">out 0</td><td class="indexvalue">Line0</td></tr>
     *  <tr><td class="indexvalue">1</td><td class="indexvalue">out 1</td><td class="indexvalue">Line1</td></tr>
     *  <tr><td class="indexvalue">2</td><td class="indexvalue">-</td><td class="indexvalue">-</td></tr>
     *  <tr><td class="indexvalue">3</td><td class="indexvalue">-</td><td class="indexvalue">-</td></tr>
     *  <tr><td class="indexvalue">4</td><td class="indexvalue">in 0</td><td class="indexvalue">Line4</td></tr>
     *  <tr><td class="indexvalue">5</td><td class="indexvalue">in 1</td><td class="indexvalue">Line5</td></tr>
     *  </table>
     *
     *  The following table documents which bit in this property represents the state of which digital I/O for \b mvBlueCOUGAR-X-POEI \b mvBlueCOUGAR-XD devices:
     *
     *  <table>
     *  <tr><td class="header">bit</td><td class="header">IO</td><td class="header">LineSelectorValue</td></tr>
     *  <tr><td class="indexvalue">0</td><td class="indexvalue">out 0</td><td class="indexvalue">Line0</td></tr>
     *  <tr><td class="indexvalue">1</td><td class="indexvalue">out 1</td><td class="indexvalue">Line1</td></tr>
     *  <tr><td class="indexvalue">2</td><td class="indexvalue">out 2</td><td class="indexvalue">Line2</td></tr>
     *  <tr><td class="indexvalue">3</td><td class="indexvalue">out 3</td><td class="indexvalue">Line3</td></tr>
     *  <tr><td class="indexvalue">4</td><td class="indexvalue">in 0</td><td class="indexvalue">Line4</td></tr>
     *  <tr><td class="indexvalue">5</td><td class="indexvalue">in 1</td><td class="indexvalue">Line5</td></tr>
     *  <tr><td class="indexvalue">6</td><td class="indexvalue">in 2</td><td class="indexvalue">Line6</td></tr>
     *  <tr><td class="indexvalue">7</td><td class="indexvalue">in 3</td><td class="indexvalue">Line7</td></tr>
     *  </table>
     */
    PropertyI64 lineStatusAll;
    /// \brief An enumerated integer property. Selects which internal acquisition or I/O source signal to output on the selected Line.
    /**
     *  Selects which internal acquisition or I/O source signal to output on the selected Line. LineMode must be Output.
     *
     *  The following string values might be valid for this feature:
     *  - \b Off (Display string: 'Off'): Line output is disabled (Tri-State).
     *  - \b UserOutput0 (Display string: 'User Output 0'): The chosen User Output Bit state as defined by its current UserOutputValue.
     *  - \b UserOutput1 (Display string: 'User Output 1'): The chosen User Output Bit state as defined by its current UserOutputValue.
     *  - \b UserOutput2 (Display string: 'User Output 2'): The chosen User Output Bit state as defined by its current UserOutputValue.
     *  - \b UserOutput\#3\# (Display string: 'User Output \#3\#'): The chosen User Output Bit state as defined by its current UserOutputValue.
     *  - \b AcquisitionTriggerWait (Display string: 'Acquisition Trigger Wait'): Device is currently waiting for a trigger for the capture of one or many Frames.
     *  - \b AcquisitionTrigger (Display string: 'Acquisition Trigger'): Device is currently waiting for a trigger for the capture of one or many Frames.
     *  - \b AcquisitionTriggerMissed (Display string: 'Acquisition Trigger Missed'): Device has missed an Acquisition start trigger.
     *  - \b AcquisitionActive (Display string: 'Acquisition Active'): Device is currently doing an acquisition of one or many Frames.
     *  - \b FrameTriggerWait (Display string: 'Frame Trigger Wait'): Device is currently waiting for a Frame start trigger.
     *  - \b FrameTrigger (Display string: 'Frame Trigger'): Device is currently waiting for a Frame start trigger.
     *  - \b FrameTriggerMissed (Display string: 'Frame Trigger Missed'): Device has missed a Frame start trigger.
     *  - \b FrameActive (Display string: 'Frame Active'): Device is currently doing the capture of a Frame.
     *  - \b ExposureActive (Display string: 'Exposure Active'): Device is doing the exposure of a Frame (or Line).
     *  - \b LineTriggerWait (Display string: 'Line Trigger Wait'): Device is currently waiting for a Line start trigger.
     *  - \b LineTrigger (Display string: 'Line Trigger'): Device is currently waiting for a Line start trigger.
     *  - \b LineTriggerMissed (Display string: 'Line Trigger Missed'): Device has missed a Line start trigger.
     *  - \b LineActive (Display string: 'Line Active'): Device is currently doing the capture of a Line.
     *  - \b Counter0Active (Display string: 'Counter 0 Active'): The chosen counter is in active state (counting).
     *  - \b Counter1Active (Display string: 'Counter 1 Active'): The chosen counter is in active state (counting).
     *  - \b Counter2Active (Display string: 'Counter 2 Active'): The chosen counter is in active state (counting).
     *  - \b Counter\#3\#Active (Display string: 'Counter \#3\# Active'): The chosen counter is in active state (counting).
     *  - \b Timer0Active (Display string: 'Timer 0 Active'): The chosen Timer is in active state.
     *  - \b Timer1Active (Display string: 'Timer 1 Active'): The chosen Timer is in active state.
     *  - \b Timer2Active (Display string: 'Timer 2 Active'): The chosen Timer is in active state.
     *  - \b Timer\#3\#Active (Display string: 'Timer \#3\# Active'): The chosen Timer is in active state.
     *  - \b Encoder0 (Display string: 'Encoder 0'): The chosen Encoder Output state.
     *  - \b Encoder1 (Display string: 'Encoder 1'): The chosen Encoder Output state.
     *  - \b Encoder2 (Display string: 'Encoder 2'): The chosen Encoder Output state.
     *  - \b Encoder\#3\# (Display string: 'Encoder \#3\#'): The chosen Encoder Output state.
     *  - \b LogicBlock0 (Display string: 'Logic Block 0'): The choosen Logic Block output state.
     *  - \b LogicBlock1 (Display string: 'Logic Block 1'): The choosen Logic Block output state.
     *  - \b LogicBlock2 (Display string: 'Logic Block 2'): The choosen Logic Block output state.
     *  - \b LogicBlock\#3\# (Display string: 'Logic Block \#3\#'): The choosen Logic Block output state.
     *  - \b SoftwareSignal0 (Display string: 'Software Signal 0'): The choosen Software Signal output state.
     *  - \b SoftwareSignal1 (Display string: 'Software Signal 1'): The choosen Software Signal output state.
     *  - \b SoftwareSignal2 (Display string: 'Software Signal 2'): The choosen Software Signal output state.
     *  - \b SoftwareSignal\#3\# (Display string: 'Software Signal \#3\#'): The choosen Software Signal output state.
     *  - \b Stream0TransferActive (Display string: 'Stream 0 Transfer Active'): Transfer on the stream is active.
     *  - \b Stream1TransferActive (Display string: 'Stream 1 Transfer Active'): Transfer on the stream is active.
     *  - \b Stream\#2\#TransferActive (Display string: 'Stream \#2\# Transfer Active'): Transfer on the stream is active.
     *  - \b Stream0TransferPaused (Display string: 'Stream 0 Transfer Paused'): Transfer on the stream is paused.
     *  - \b Stream1TransferPaused (Display string: 'Stream 1 Transfer Paused'): Transfer on the stream is paused.
     *  - \b Stream\#2\#TransferPaused (Display string: 'Stream \#2\# Transfer Paused'): Transfer on the stream is paused.
     *  - \b Stream0TransferStopping (Display string: 'Stream 0 Transfer Stopping'): Transfer on the stream is stopping.
     *  - \b Stream1TransferStopping (Display string: 'Stream 1 Transfer Stopping'): Transfer on the stream is stopping.
     *  - \b Stream\#2\#TransferStopping (Display string: 'Stream \#2\# Transfer Stopping'): Transfer on the stream is stopping.
     *  - \b Stream0TransferStopped (Display string: 'Stream 0 Transfer Stopped'): Transfer on the stream is stopped.
     *  - \b Stream1TransferStopped (Display string: 'Stream 1 Transfer Stopped'): Transfer on the stream is stopped.
     *  - \b Stream\#2\#TransferStopped (Display string: 'Stream \#2\# Transfer Stopped'): Transfer on the stream is stopped.
     *  - \b Stream0TransferOverflow (Display string: 'Stream 0 Transfer Overflow'): Transfer on the stream is in overflow.
     *  - \b Stream1TransferOverflow (Display string: 'Stream 1 Transfer Overflow'): Transfer on the stream is in overflow.
     *  - \b Stream\#2\#TransferOverflow (Display string: 'Stream \#2\# Transfer Overflow'): Transfer on the stream is in overflow.
     *  - \b mvExposureSensor2Active (Display string: 'mv Exposure Sensor 2 Active')
     *  - \b UserOutput3 (Display string: 'User Output 3'): The chosen User Output Bit state as defined by its current UserOutputValue.
     *  - \b UserOutput4 (Display string: 'User Output 4'): The chosen User Output Bit state as defined by its current UserOutputValue.
     *  - \b UserOutput5 (Display string: 'User Output 5'): The chosen User Output Bit state as defined by its current UserOutputValue.
     *  - \b UserOutput6 (Display string: 'User Output 6'): The chosen User Output Bit state as defined by its current UserOutputValue.
     *  - \b UserOutput7 (Display string: 'User Output 7'): The chosen User Output Bit state as defined by its current UserOutputValue.
     *  - \b Counter3Active (Display string: 'Counter 3 Active'): The chosen counter is in active state (counting).
     *  - \b Counter4Active (Display string: 'Counter 4 Active'): The chosen counter is in active state (counting).
     *  - \b Counter5Active (Display string: 'Counter 5 Active'): The chosen counter is in active state (counting).
     *  - \b Counter6Active (Display string: 'Counter 6 Active'): The chosen counter is in active state (counting).
     *  - \b Counter7Active (Display string: 'Counter 7 Active'): The chosen counter is in active state (counting).
     *  - \b Counter8Active (Display string: 'Counter 8 Active'): The chosen counter is in active state (counting).
     *  - \b mvReadOutActive (Display string: 'mv Read Out Active')
     *  - \b mvExposureAndAcquisitionActive (Display string: 'mv Exposure And Acquisition Active')
     *  - \b mvTemperatureOutOfRange (Display string: 'mv Temperature Out Of Range')
     *  - \b mvLogicGateOR1Output (Display string: 'mv Logic Gate OR 1 Output')
     *  - \b mvLogicGateOR2Output (Display string: 'mv Logic Gate OR 2 Output')
     *  - \b mvLogicGateOR3Output (Display string: 'mv Logic Gate OR 3 Output')
     *  - \b mvLogicGateOR4Output (Display string: 'mv Logic Gate OR 4 Output')
     *  - \b mvExposureActive (Display string: 'mv Exposure Active')
     *  - \b mvRTMOutput0 (Display string: 'mv RTM Output 0')
     *  - \b mvRTMOutput1 (Display string: 'mv RTM Output 1')
     *  - \b mvRTMOutput2 (Display string: 'mv RTM Output 2')
     *  - \b mvRTMOutput3 (Display string: 'mv RTM Output 3')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 lineSource;
    /// \brief An enumerated integer property. Controls the current electrical format of the selected physical input or output Line.
    /**
     *  Controls the current electrical format of the selected physical input or output Line.
     *
     *  The following string values might be valid for this feature:
     *  - \b NoConnect (Display string: 'No Connect'): The Line is not connected.
     *  - \b TriState (Display string: 'Tri State'): The Line is currently in Tri-State mode (Not driven).
     *  - \b TTL (Display string: 'TTL'): The Line is currently accepting or sending TTL level signals.
     *  - \b LVDS (Display string: 'LVDS'): The Line is currently accepting or sending LVDS level signals.
     *  - \b RS422 (Display string: 'RS 422'): The Line is currently accepting or sending RS422 level signals.
     *  - \b OptoCoupled (Display string: 'Opto Coupled'): The Line is opto-coupled.
     *  - \b OpenDrain (Display string: 'Open Drain'): The Line is Open Drain (or Open Collector).
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 lineFormat;
    /// \brief An enumerated integer property. Selects which bit of the User Output register will be set by UserOutputValue.
    /**
     *  Selects which bit of the User Output register will be set by UserOutputValue.
     *
     *  The following string values might be valid for this feature:
     *  - \b UserOutput0 (Display string: 'User Output 0'): Selects the bit 0 of the User Output register.
     *  - \b UserOutput1 (Display string: 'User Output 1'): Selects the bit 1 of the User Output register.
     *  - \b UserOutput2 (Display string: 'User Output 2'): Selects the bit 2 of the User Output register.
     *  - \b UserOutput\#3\# (Display string: 'User Output \#3\#'): Selects the bit \#3\# of the User Output register.
     *  - \b UserOutput3 (Display string: 'User Output 3'): Selects the bit 3 of the User Output register.
     *  - \b UserOutput4 (Display string: 'User Output 4'): Selects the bit 4 of the User Output register.
     *  - \b UserOutput5 (Display string: 'User Output 5'): Selects the bit 5 of the User Output register.
     *  - \b UserOutput6 (Display string: 'User Output 6'): Selects the bit 6 of the User Output register.
     *  - \b UserOutput7 (Display string: 'User Output 7'): Selects the bit 7 of the User Output register.
     *  - \b UserOutput8 (Display string: 'User Output 8'): Selects the bit 8 of the User Output register.
     *  - \b UserOutput9 (Display string: 'User Output 9'): Selects the bit 9 of the User Output register.
     *  - \b UserOutput10 (Display string: 'User Output 10'): Selects the bit 10 of the User Output register.
     *  - \b UserOutput11 (Display string: 'User Output 11'): Selects the bit 11 of the User Output register.
     *  - \b UserOutput12 (Display string: 'User Output 12'): Selects the bit 12 of the User Output register.
     *  - \b UserOutput13 (Display string: 'User Output 13'): Selects the bit 13 of the User Output register.
     *  - \b UserOutput14 (Display string: 'User Output 14'): Selects the bit 14 of the User Output register.
     *  - \b UserOutput15 (Display string: 'User Output 15'): Selects the bit 15 of the User Output register.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 userOutputSelector;
    /// \brief A boolean property. Sets the value of the bit selected by UserOutputSelector.
    /**
     *  Sets the value of the bit selected by UserOutputSelector.
     */
    PropertyIBoolean userOutputValue;
    /// \brief An integer property. Sets the value of all the bits of the User Output register.
    /**
     *  Sets the value of all the bits of the User Output register. It is subject to the UserOutputValueAllMask.
     */
    PropertyI64 userOutputValueAll;
    /// \brief An integer property. Sets the write mask to apply to the value specified by UserOutputValueAll before writing it in the User Output register.
    /**
     *  Sets the write mask to apply to the value specified by UserOutputValueAll before writing it in the User Output register. If the UserOutputValueAllMask feature is present, setting the user Output register using UserOutputValueAll will only change the bits that have a corresponding bit in the mask set to one.
     */
    PropertyI64 userOutputValueAllMask;
    /// \brief An integer property. Sets the debounce time in micro seconds for low to high transitions.
    /**
     *  Sets the debounce time in micro seconds for low to high transitions.
     */
    PropertyI64 mvLineDebounceTimeRisingEdge;
    /// \brief An integer property. Sets the debounce time in micro seconds for high to low transitions.
    /**
     *  Sets the debounce time in micro seconds for high to low transitions.
     */
    PropertyI64 mvLineDebounceTimeFallingEdge;
    /// \brief An enumerated integer property. Selects which RTM input to configure.
    /**
     *  Selects which RTM input to configure.
     *
     *  The following string values might be valid for this feature:
     *  - \b mvRTMInput0 (Display string: 'mv RTM Input 0')
     *  - \b mvRTMInput1 (Display string: 'mv RTM Input 1')
     *  - \b mvRTMInput2 (Display string: 'mv RTM Input 2')
     *  - \b mvRTMInput3 (Display string: 'mv RTM Input 3')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvRTMInputSelector;
    /// \brief An enumerated integer property. Selects which signal to connect to the selected RTM input.
    /**
     *  Selects which signal to connect to the selected RTM input.
     *
     *  The following string values might be valid for this feature:
     *  - \b Off (Display string: 'Off')
     *  - \b Line4 (Display string: 'Line 4')
     *  - \b Line5 (Display string: 'Line 5')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvRTMSource;
    /// \brief An enumerated integer property. Selects the digital I/O line to be stated by the LED
    /**
     *  Selects the digital I/O line to be stated by the LED
     *
     *  The following string values might be valid for this feature:
     *  - \b Off (Display string: 'Off')
     *  - \b Line0 (Display string: 'Line 0')
     *  - \b Line1 (Display string: 'Line 1')
     *  - \b Line2 (Display string: 'Line 2')
     *  - \b Line3 (Display string: 'Line 3')
     *  - \b Line4 (Display string: 'Line 4')
     *  - \b Line5 (Display string: 'Line 5')
     *  - \b Line6 (Display string: 'Line 6')
     *  - \b Line7 (Display string: 'Line 7')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvLineLED;
    /// \brief A boolean property. Enable 12V power out on MultipurposeIO POWER_OUT pin.
    /**
     *  Enable 12V power out on MultipurposeIO POWER_OUT pin.
     */
    PropertyIBoolean mvEnable12VPowerOut;
    // *INDENT-OFF*
    PYTHON_OR_JAVA_ONLY( %mutable; )
    // *INDENT-ON*
};

//-----------------------------------------------------------------------------
/// \brief Category that contains the Counter and Timer control features.
/**
 *  A category that contains the Counter and Timer control features.
 * \ingroup GenICamInterfaceDevice
 */
class CounterAndTimerControl
//-----------------------------------------------------------------------------
{
public:
    /// \brief Constructs a new <b>mvIMPACT::acquire::GenICam::CounterAndTimerControl</b> object.
    explicit CounterAndTimerControl(
        /// [in] A pointer to a <b>mvIMPACT::acquire::Device</b> object obtained from a <b>mvIMPACT::acquire::DeviceManager</b> object.
        mvIMPACT::acquire::Device* pDev,
        /// [in] The name of the driver internal setting to access with this instance.
        /// A list of valid setting names can be obtained by a call to
        /// <b>mvIMPACT::acquire::FunctionInterface::getAvailableSettings</b>, new
        /// settings can be created with the function
        /// <b>mvIMPACT::acquire::FunctionInterface::createSetting</b>
        const std::string& settingName = "Base" ) :
        counterSelector(),
        counterEventSource(),
        counterEventActivation(),
        counterResetSource(),
        counterResetActivation(),
        counterReset(),
        counterValue(),
        counterValueAtReset(),
        counterDuration(),
        counterStatus(),
        counterTriggerSource(),
        counterTriggerActivation(),
        timerSelector(),
        timerDuration(),
        timerDelay(),
        timerReset(),
        timerValue(),
        timerStatus(),
        timerTriggerSource(),
        timerTriggerActivation(),
        timerTriggerArmDelay()
    {
        pDev->validateInterfaceLayout( dilGenICam );
        mvIMPACT::acquire::DeviceComponentLocator locator( pDev, mvIMPACT::acquire::dltSetting, settingName );
        locator.bindSearchBase( locator.searchbase_id(), "Camera/GenICam" );
        locator.bindComponent( counterSelector, "CounterSelector" );
        locator.bindComponent( counterEventSource, "CounterEventSource" );
        locator.bindComponent( counterEventActivation, "CounterEventActivation" );
        locator.bindComponent( counterResetSource, "CounterResetSource" );
        locator.bindComponent( counterResetActivation, "CounterResetActivation" );
        locator.bindComponent( counterReset, "CounterReset@i" );
        locator.bindComponent( counterValue, "CounterValue" );
        locator.bindComponent( counterValueAtReset, "CounterValueAtReset" );
        locator.bindComponent( counterDuration, "CounterDuration" );
        locator.bindComponent( counterStatus, "CounterStatus" );
        locator.bindComponent( counterTriggerSource, "CounterTriggerSource" );
        locator.bindComponent( counterTriggerActivation, "CounterTriggerActivation" );
        locator.bindComponent( timerSelector, "TimerSelector" );
        locator.bindComponent( timerDuration, "TimerDuration" );
        if( !timerDuration.isValid() )
        {
            locator.bindComponent( timerDuration, "TimerDurationAbs" );
        }
        locator.bindComponent( timerDelay, "TimerDelay" );
        if( !timerDelay.isValid() )
        {
            locator.bindComponent( timerDelay, "TimerDelayAbs" );
        }
        locator.bindComponent( timerReset, "TimerReset@i" );
        locator.bindComponent( timerValue, "TimerValue" );
        if( !timerValue.isValid() )
        {
            locator.bindComponent( timerValue, "TimerValueAbs" );
        }
        locator.bindComponent( timerStatus, "TimerStatus" );
        locator.bindComponent( timerTriggerSource, "TimerTriggerSource" );
        locator.bindComponent( timerTriggerActivation, "TimerTriggerActivation" );
        locator.bindComponent( timerTriggerArmDelay, "TimerTriggerArmDelay" );
    }
    // *INDENT-OFF*
    PYTHON_OR_JAVA_ONLY( %immutable; )
    // *INDENT-ON*
    /// \brief An enumerated integer property. Selects which Counter to configure.
    /**
     *  Selects which Counter to configure.
     *
     *  The following string values might be valid for this feature:
     *  - \b Counter0 (Display string: 'Counter 0'): Selects the counter 0.
     *  - \b Counter1 (Display string: 'Counter 1'): Selects the counter 1.
     *  - \b Counter2 (Display string: 'Counter 2'): Selects the counter 2.
     *  - \b Counter\#3\# (Display string: 'Counter \#3\#'): Selects the counter \#3\#.
     *  - \b Counter3 (Display string: 'Counter 3'): Selects the counter 3.
     *  - \b Counter4 (Display string: 'Counter 4'): Selects the counter 4.
     *  - \b Counter5 (Display string: 'Counter 5'): Selects the counter 5.
     *  - \b Counter6 (Display string: 'Counter 6'): Selects the counter 6.
     *  - \b Counter7 (Display string: 'Counter 7'): Selects the counter 7.
     *  - \b Counter8 (Display string: 'Counter 8'): Selects the counter 8.
     *  - \b Counter9 (Display string: 'Counter 9'): Selects the counter 9.
     *  - \b Counter10 (Display string: 'Counter 10'): Selects the counter 10.
     *  - \b Counter11 (Display string: 'Counter 11'): Selects the counter 11.
     *  - \b Counter12 (Display string: 'Counter 12'): Selects the counter 12.
     *  - \b Counter13 (Display string: 'Counter 13'): Selects the counter 13.
     *  - \b Counter14 (Display string: 'Counter 14'): Selects the counter 14.
     *  - \b Counter15 (Display string: 'Counter 15'): Selects the counter 15.
     *  - \b Counter16 (Display string: 'Counter 16')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 counterSelector;
    /// \brief An enumerated integer property. Select the events that will be the source to increment the Counter.
    /**
     *  Select the events that will be the source to increment the Counter.
     *
     *  The following string values might be valid for this feature:
     *  - \b Off (Display string: 'Off'): Counter is stopped.
     *  - \b AcquisitionTrigger (Display string: 'Acquisition Trigger'): Counts the number of Acquisition Trigger.
     *  - \b AcquisitionTriggerMissed (Display string: 'Acquisition Trigger Missed'): Counts the number of missed Acquisition Start Trigger.
     *  - \b AcquisitionStart (Display string: 'Acquisition Start'): Counts the number of Acquisition Start.
     *  - \b AcquisitionEnd (Display string: 'Acquisition End'): Counts the number of Acquisition End.
     *  - \b FrameTrigger (Display string: 'Frame Trigger'): Counts the number of Frame Start Trigger.
     *  - \b FrameTriggerMissed (Display string: 'Frame Trigger Missed'): Counts the number of missed Frame Start Trigger.
     *  - \b FrameStart (Display string: 'Frame Start'): Counts the number of Frame Start.
     *  - \b FrameEnd (Display string: 'Frame End'): Counts the number of Frame End.
     *  - \b FrameBurstStart (Display string: 'Frame Burst Start'): Counts the number of Frame Burst Start.
     *  - \b FrameBurstEnd (Display string: 'Frame Burst End'): Counts the number of Frame Burst End.
     *  - \b LineTrigger (Display string: 'Line Trigger'): Counts the number of Line Start Trigger.
     *  - \b LineTriggerMissed (Display string: 'Line Trigger Missed'): Counts the number of missed Line Start Trigger.
     *  - \b LineStart (Display string: 'Line Start'): Counts the number of Line Start.
     *  - \b LineEnd (Display string: 'Line End'): Counts the number of Line End.
     *  - \b ExposureStart (Display string: 'Exposure Start'): Counts the number of Exposure Start.
     *  - \b ExposureEnd (Display string: 'Exposure End'): Counts the number of Exposure End.
     *  - \b Line0 (Display string: 'Line 0'): Counts the number of transitions on the chosen I/O Line.
     *  - \b Line1 (Display string: 'Line 1'): Counts the number of transitions on the chosen I/O Line.
     *  - \b Line2 (Display string: 'Line 2'): Counts the number of transitions on the chosen I/O Line.
     *  - \b Line\#3\# (Display string: 'Line \#3\#'): Counts the number of transitions on the chosen I/O Line.
     *  - \b Counter0Start (Display string: 'Counter 0 Start'): Counts the number of Counter Start.
     *  - \b Counter1Start (Display string: 'Counter 1 Start'): Counts the number of Counter Start.
     *  - \b Counter2Start (Display string: 'Counter 2 Start'): Counts the number of Counter Start.
     *  - \b Counter\#3\#Start (Display string: 'Counter \#3\# Start'): Counts the number of Counter Start.
     *  - \b Counter0End (Display string: 'Counter 0 End'): Counts the number of Counter End.
     *  - \b Counter1End (Display string: 'Counter 1 End'): Counts the number of Counter End.
     *  - \b Counter2End (Display string: 'Counter 2 End'): Counts the number of Counter End.
     *  - \b Counter\#3\#End (Display string: 'Counter \#3\# End'): Counts the number of Counter End.
     *  - \b Timer0Start (Display string: 'Timer 0 Start'): Counts the number of Timer Start pulses generated.
     *  - \b Timer1Start (Display string: 'Timer 1 Start'): Counts the number of Timer Start pulses generated.
     *  - \b Timer2Start (Display string: 'Timer 2 Start'): Counts the number of Timer Start pulses generated.
     *  - \b Timer\#3\#Start (Display string: 'Timer \#3\# Start'): Counts the number of Timer Start pulses generated.
     *  - \b Timer0End (Display string: 'Timer 0 End'): Counts the number of Timer End pulses generated.
     *  - \b Timer1End (Display string: 'Timer 1 End'): Counts the number of Timer End pulses generated.
     *  - \b Timer2End (Display string: 'Timer 2 End'): Counts the number of Timer End pulses generated.
     *  - \b Timer\#3\#End (Display string: 'Timer \#3\# End'): Counts the number of Timer End pulses generated.
     *  - \b Encoder0 (Display string: 'Encoder 0'): Counts the number of Encoder output pulses.
     *  - \b Encoder1 (Display string: 'Encoder 1'): Counts the number of Encoder output pulses.
     *  - \b Encoder2 (Display string: 'Encoder 2'): Counts the number of Encoder output pulses.
     *  - \b Encoder\#3\# (Display string: 'Encoder \#3\#'): Counts the number of Encoder output pulses.
     *  - \b LogicBlock0 (Display string: 'Logic Block 0'): Counts the number of Logic Block output pulses.
     *  - \b LogicBlock1 (Display string: 'Logic Block 1'): Counts the number of Logic Block output pulses.
     *  - \b LogicBlock2 (Display string: 'Logic Block 2'): Counts the number of Logic Block output pulses.
     *  - \b LogicBlock\#3\# (Display string: 'Logic Block \#3\#'): Counts the number of Logic Block output pulses.
     *  - \b SoftwareSignal0 (Display string: 'Software Signal 0'): Counts the number of Software Signal.
     *  - \b SoftwareSignal1 (Display string: 'Software Signal 1'): Counts the number of Software Signal.
     *  - \b SoftwareSignal2 (Display string: 'Software Signal 2'): Counts the number of Software Signal.
     *  - \b SoftwareSignal\#3\# (Display string: 'Software Signal \#3\#'): Counts the number of Software Signal.
     *  - \b Action0 (Display string: 'Action 0'): Counts the number of assertions of the chosen action signal.
     *  - \b Action1 (Display string: 'Action 1'): Counts the number of assertions of the chosen action signal.
     *  - \b Action2 (Display string: 'Action 2'): Counts the number of assertions of the chosen action signal.
     *  - \b Action\#3\# (Display string: 'Action \#3\#'): Counts the number of assertions of the chosen action signal.
     *  - \b LinkTrigger0 (Display string: 'Link Trigger 0'): Counts the number of  Link Triggers.
     *  - \b LinkTrigger1 (Display string: 'Link Trigger 1'): Counts the number of  Link Triggers.
     *  - \b LinkTrigger2 (Display string: 'Link Trigger 2'): Counts the number of  Link Triggers.
     *  - \b LinkTrigger\#3\# (Display string: 'Link Trigger \#3\#'): Counts the number of  Link Triggers.
     *  - \b LinkTriggerMissed0 (Display string: 'Link Trigger Missed 0'): Counts the number of Link Triggers missed.
     *  - \b LinkTriggerMissed1 (Display string: 'Link Trigger Missed 1'): Counts the number of Link Triggers missed.
     *  - \b LinkTriggerMissed2 (Display string: 'Link Trigger Missed 2'): Counts the number of Link Triggers missed.
     *  - \b LinkTriggerMissed\#3\# (Display string: 'Link Trigger Missed \#3\#'): Counts the number of Link Triggers missed.
     *  - \b TimestampTick (Display string: 'Timestamp Tick'): Counts the number of clock ticks of the Timestamp clock. Can be used to create a programmable timer.
     *  - \b Line3 (Display string: 'Line 3'): Counts the number of transitions on the chosen I/O Line.
     *  - \b Line4 (Display string: 'Line 4'): Counts the number of transitions on the chosen I/O Line.
     *  - \b Line5 (Display string: 'Line 5'): Counts the number of transitions on the chosen I/O Line.
     *  - \b Line6 (Display string: 'Line 6'): Counts the number of transitions on the chosen I/O Line.
     *  - \b Line7 (Display string: 'Line 7'): Counts the number of transitions on the chosen I/O Line.
     *  - \b Line8 (Display string: 'Line 8'): Counts the number of transitions on the chosen I/O Line.
     *  - \b Line9 (Display string: 'Line 9'): Counts the number of transitions on the chosen I/O Line.
     *  - \b Line10 (Display string: 'Line 10'): Counts the number of transitions on the chosen I/O Line.
     *  - \b Line11 (Display string: 'Line 11'): Counts the number of transitions on the chosen I/O Line.
     *  - \b Line12 (Display string: 'Line 12'): Counts the number of transitions on the chosen I/O Line.
     *  - \b Line13 (Display string: 'Line 13'): Counts the number of transitions on the chosen I/O Line.
     *  - \b Line14 (Display string: 'Line 14'): Counts the number of transitions on the chosen I/O Line.
     *  - \b Line15 (Display string: 'Line 15'): Counts the number of transitions on the chosen I/O Line.
     *  - \b Counter3End (Display string: 'Counter 3 End'): Counts the number of Counter End.
     *  - \b Counter4End (Display string: 'Counter 4 End'): Counts the number of Counter End.
     *  - \b Counter5End (Display string: 'Counter 5 End'): Counts the number of Counter End.
     *  - \b Counter6End (Display string: 'Counter 6 End'): Counts the number of Counter End.
     *  - \b Counter7End (Display string: 'Counter 7 End'): Counts the number of Counter End.
     *  - \b Counter8End (Display string: 'Counter 8 End'): Counts the number of Counter End.
     *  - \b Counter9End (Display string: 'Counter 9 End'): Counts the number of Counter End.
     *  - \b Counter10End (Display string: 'Counter 10 End'): Counts the number of Counter End.
     *  - \b Counter11End (Display string: 'Counter 11 End'): Counts the number of Counter End.
     *  - \b Counter12End (Display string: 'Counter 12 End'): Counts the number of Counter End.
     *  - \b Counter13End (Display string: 'Counter 13 End'): Counts the number of Counter End.
     *  - \b Counter14End (Display string: 'Counter 14 End'): Counts the number of Counter End.
     *  - \b Counter15End (Display string: 'Counter 15 End'): Counts the number of Counter End.
     *  - \b Counter16End (Display string: 'Counter 16 End')
     *  - \b Timer3End (Display string: 'Timer 3 End'): Counts the number of Timer End pulses generated.
     *  - \b Timer4End (Display string: 'Timer 4 End'): Counts the number of Timer End pulses generated.
     *  - \b Timer5End (Display string: 'Timer 5 End'): Counts the number of Timer End pulses generated.
     *  - \b Timer6End (Display string: 'Timer 6 End'): Counts the number of Timer End pulses generated.
     *  - \b Timer7End (Display string: 'Timer 7 End'): Counts the number of Timer End pulses generated.
     *  - \b Timer8End (Display string: 'Timer 8 End'): Counts the number of Timer End pulses generated.
     *  - \b Timer9End (Display string: 'Timer 9 End'): Counts the number of Timer End pulses generated.
     *  - \b Timer10End (Display string: 'Timer 10 End'): Counts the number of Timer End pulses generated.
     *  - \b Timer11End (Display string: 'Timer 11 End'): Counts the number of Timer End pulses generated.
     *  - \b Timer12End (Display string: 'Timer 12 End'): Counts the number of Timer End pulses generated.
     *  - \b Timer13End (Display string: 'Timer 13 End'): Counts the number of Timer End pulses generated.
     *  - \b Timer14End (Display string: 'Timer 14 End'): Counts the number of Timer End pulses generated.
     *  - \b Timer15End (Display string: 'Timer 15 End'): Counts the number of Timer End pulses generated.
     *  - \b Timer16End (Display string: 'Timer 16 End')
     *  - \b Action3 (Display string: 'Action 3'): Counts the number of assertions of the chosen action signal.
     *  - \b Action4 (Display string: 'Action 4'): Counts the number of assertions of the chosen action signal.
     *  - \b Action5 (Display string: 'Action 5'): Counts the number of assertions of the chosen action signal.
     *  - \b Action6 (Display string: 'Action 6'): Counts the number of assertions of the chosen action signal.
     *  - \b Action7 (Display string: 'Action 7'): Counts the number of assertions of the chosen action signal.
     *  - \b Action8 (Display string: 'Action 8'): Counts the number of assertions of the chosen action signal.
     *  - \b Action9 (Display string: 'Action 9'): Counts the number of assertions of the chosen action signal.
     *  - \b Action10 (Display string: 'Action 10'): Counts the number of assertions of the chosen action signal.
     *  - \b Action11 (Display string: 'Action 11'): Counts the number of assertions of the chosen action signal.
     *  - \b Action12 (Display string: 'Action 12'): Counts the number of assertions of the chosen action signal.
     *  - \b Action13 (Display string: 'Action 13'): Counts the number of assertions of the chosen action signal.
     *  - \b Action14 (Display string: 'Action 14'): Counts the number of assertions of the chosen action signal.
     *  - \b Action15 (Display string: 'Action 15'): Counts the number of assertions of the chosen action signal.
     *  - \b Action16 (Display string: 'Action 16')
     *  - \b Line0RisingEdge (Display string: 'Line 0 Rising Edge')
     *  - \b Line1RisingEdge (Display string: 'Line 1 Rising Edge')
     *  - \b Line2RisingEdge (Display string: 'Line 2 Rising Edge')
     *  - \b Line3RisingEdge (Display string: 'Line 3 Rising Edge')
     *  - \b Line4RisingEdge (Display string: 'Line 4 Rising Edge')
     *  - \b Line5RisingEdge (Display string: 'Line 5 Rising Edge')
     *  - \b Line6RisingEdge (Display string: 'Line 6 Rising Edge')
     *  - \b Line7RisingEdge (Display string: 'Line 7 Rising Edge')
     *  - \b Line8RisingEdge (Display string: 'Line 8 Rising Edge')
     *  - \b Line9RisingEdge (Display string: 'Line 9 Rising Edge')
     *  - \b Line10RisingEdge (Display string: 'Line 10 Rising Edge')
     *  - \b Line11RisingEdge (Display string: 'Line 11 Rising Edge')
     *  - \b Line12RisingEdge (Display string: 'Line 12 Rising Edge')
     *  - \b Line13RisingEdge (Display string: 'Line 13 Rising Edge')
     *  - \b Line14RisingEdge (Display string: 'Line 14 Rising Edge')
     *  - \b Line15RisingEdge (Display string: 'Line 15 Rising Edge')
     *  - \b mvTemperatureOutOfRange (Display string: 'mv Temperature Out Of Range')
     *  - \b mvLogicGateOR1Output (Display string: 'mv Logic Gate OR 1 Output')
     *  - \b mvLogicGateOR2Output (Display string: 'mv Logic Gate OR 2 Output')
     *  - \b mvLogicGateOR3Output (Display string: 'mv Logic Gate OR 3 Output')
     *  - \b mvLogicGateOR4Output (Display string: 'mv Logic Gate OR 4 Output')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 counterEventSource;
    /// \brief An enumerated integer property. Selects the Activation mode Event Source signal.
    /**
     *  Selects the Activation mode Event Source signal.
     *
     *  The following string values might be valid for this feature:
     *  - \b RisingEdge (Display string: 'Rising Edge'): Counts on the Rising Edge of the signal.
     *  - \b FallingEdge (Display string: 'Falling Edge'): Counts on the Falling Edge of the signal.
     *  - \b AnyEdge (Display string: 'Any Edge'): Counts on the Falling or rising Edge of the selected signal.
     *  - \b LevelHigh (Display string: 'Level High')
     *  - \b LevelLow (Display string: 'Level Low')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 counterEventActivation;
    /// \brief An enumerated integer property. Selects the signals that will be the source to reset the Counter.
    /**
     *  Selects the signals that will be the source to reset the Counter.
     *
     *  The following string values might be valid for this feature:
     *  - \b Off (Display string: 'Off'): Disable the Counter Reset trigger.
     *  - \b CounterTrigger (Display string: 'Counter Trigger'): Resets with the reception of a trigger on the CounterTriggerSource.
     *  - \b AcquisitionTrigger (Display string: 'Acquisition Trigger'): Resets with the reception of the Acquisition Trigger.
     *  - \b AcquisitionTriggerMissed (Display string: 'Acquisition Trigger Missed'): Resets with the reception of the missed Acquisition start trigger.
     *  - \b AcquisitionStart (Display string: 'Acquisition Start'): Resets with the reception of the Acquisition Start.
     *  - \b AcquisitionEnd (Display string: 'Acquisition End'): Resets with the reception of the Acquisition End.
     *  - \b FrameTrigger (Display string: 'Frame Trigger'): Resets with the reception of the Frame Start Trigger.
     *  - \b FrameTriggerMissed (Display string: 'Frame Trigger Missed'): Resets with the reception of the missed Frame start trigger.
     *  - \b FrameStart (Display string: 'Frame Start'): Resets with the reception of the Frame Start.
     *  - \b FrameEnd (Display string: 'Frame End'): Resets with the reception of the Frame End.
     *  - \b LineTrigger (Display string: 'Line Trigger'): Resets with the reception of the Line Start Trigger.
     *  - \b LineTriggerMissed (Display string: 'Line Trigger Missed'): Resets with the reception of the missed Line start trigger.
     *  - \b LineStart (Display string: 'Line Start'): Resets with the reception of the Line Start.
     *  - \b LineEnd (Display string: 'Line End'): Resets with the reception of the Line End.
     *  - \b ExposureStart (Display string: 'Exposure Start'): Resets with the reception of the Exposure Start.
     *  - \b ExposureEnd (Display string: 'Exposure End'): Resets with the reception of the Exposure End.
     *  - \b Line0 (Display string: 'Line 0'): Resets by the chosen I/O Line.
     *  - \b Line1 (Display string: 'Line 1'): Resets by the chosen I/O Line.
     *  - \b Line2 (Display string: 'Line 2'): Resets by the chosen I/O Line.
     *  - \b Line\#3\# (Display string: 'Line \#3\#'): Resets by the chosen I/O Line.
     *  - \b UserOutput0 (Display string: 'User Output 0'): Resets by the chosen User Output bit.
     *  - \b UserOutput1 (Display string: 'User Output 1'): Resets by the chosen User Output bit.
     *  - \b UserOutput2 (Display string: 'User Output 2'): Resets by the chosen User Output bit.
     *  - \b UserOutput\#3\# (Display string: 'User Output \#3\#'): Resets by the chosen User Output bit.
     *  - \b Counter0Start (Display string: 'Counter 0 Start'): Resets with the reception of the Counter Start.
     *  - \b Counter1Start (Display string: 'Counter 1 Start'): Resets with the reception of the Counter Start.
     *  - \b Counter2Start (Display string: 'Counter 2 Start'): Resets with the reception of the Counter Start.
     *  - \b Counter\#3\#Start (Display string: 'Counter \#3\# Start'): Resets with the reception of the Counter Start.
     *  - \b Counter0End (Display string: 'Counter 0 End'): Resets with the reception of the Counter End.
     *  - \b Counter1End (Display string: 'Counter 1 End'): Resets with the reception of the Counter End.
     *  - \b Counter2End (Display string: 'Counter 2 End'): Resets with the reception of the Counter End.
     *  - \b Counter\#3\#End (Display string: 'Counter \#3\# End'): Resets with the reception of the Counter End.
     *  - \b Timer0Start (Display string: 'Timer 0 Start'): Resets with the reception of the Timer Start.
     *  - \b Timer1Start (Display string: 'Timer 1 Start'): Resets with the reception of the Timer Start.
     *  - \b Timer2Start (Display string: 'Timer 2 Start'): Resets with the reception of the Timer Start.
     *  - \b Timer\#3\#Start (Display string: 'Timer \#3\# Start'): Resets with the reception of the Timer Start.
     *  - \b Timer0End (Display string: 'Timer 0 End'): Resets with the reception of the Timer End.
     *  - \b Timer1End (Display string: 'Timer 1 End'): Resets with the reception of the Timer End.
     *  - \b Timer2End (Display string: 'Timer 2 End'): Resets with the reception of the Timer End.
     *  - \b Timer\#3\#End (Display string: 'Timer \#3\# End'): Resets with the reception of the Timer End.
     *  - \b Encoder0 (Display string: 'Encoder 0'): Resets with the reception of the Encoder output signal.
     *  - \b Encoder1 (Display string: 'Encoder 1'): Resets with the reception of the Encoder output signal.
     *  - \b Encoder2 (Display string: 'Encoder 2'): Resets with the reception of the Encoder output signal.
     *  - \b Encoder\#3\# (Display string: 'Encoder \#3\#'): Resets with the reception of the Encoder output signal.
     *  - \b LogicBlock0 (Display string: 'Logic Block 0'): Resets with the reception of the LogicBlock output signal.
     *  - \b LogicBlock1 (Display string: 'Logic Block 1'): Resets with the reception of the LogicBlock output signal.
     *  - \b LogicBlock2 (Display string: 'Logic Block 2'): Resets with the reception of the LogicBlock output signal.
     *  - \b LogicBlock\#3\# (Display string: 'Logic Block \#3\#'): Resets with the reception of the LogicBlock output signal.
     *  - \b SoftwareSignal0 (Display string: 'Software Signal 0'): Resets on the reception of the Software Signal.
     *  - \b SoftwareSignal1 (Display string: 'Software Signal 1'): Resets on the reception of the Software Signal.
     *  - \b SoftwareSignal2 (Display string: 'Software Signal 2'): Resets on the reception of the Software Signal.
     *  - \b SoftwareSignal\#3\# (Display string: 'Software Signal \#3\#'): Resets on the reception of the Software Signal.
     *  - \b Action0 (Display string: 'Action 0'): Resets on assertions of the chosen action signal (Broadcasted signal on the transport layer).
     *  - \b Action1 (Display string: 'Action 1'): Resets on assertions of the chosen action signal (Broadcasted signal on the transport layer).
     *  - \b Action2 (Display string: 'Action 2'): Resets on assertions of the chosen action signal (Broadcasted signal on the transport layer).
     *  - \b Action\#3\# (Display string: 'Action \#3\#'): Resets on assertions of the chosen action signal (Broadcasted signal on the transport layer).
     *  - \b LinkTrigger0 (Display string: 'Link Trigger 0'): Resets on the reception of the chosen Link Trigger (received from the transport layer).
     *  - \b LinkTrigger1 (Display string: 'Link Trigger 1'): Resets on the reception of the chosen Link Trigger (received from the transport layer).
     *  - \b LinkTrigger2 (Display string: 'Link Trigger 2'): Resets on the reception of the chosen Link Trigger (received from the transport layer).
     *  - \b LinkTrigger\#3\# (Display string: 'Link Trigger \#3\#'): Resets on the reception of the chosen Link Trigger (received from the transport layer).
     *  - \b Line3 (Display string: 'Line 3'): Resets by the chosen I/O Line.
     *  - \b Line4 (Display string: 'Line 4'): Resets by the chosen I/O Line.
     *  - \b Line5 (Display string: 'Line 5'): Resets by the chosen I/O Line.
     *  - \b Line6 (Display string: 'Line 6'): Resets by the chosen I/O Line.
     *  - \b Line7 (Display string: 'Line 7'): Resets by the chosen I/O Line.
     *  - \b Line8 (Display string: 'Line 8'): Resets by the chosen I/O Line.
     *  - \b Line9 (Display string: 'Line 9'): Resets by the chosen I/O Line.
     *  - \b Line10 (Display string: 'Line 10'): Resets by the chosen I/O Line.
     *  - \b Line11 (Display string: 'Line 11'): Resets by the chosen I/O Line.
     *  - \b Line12 (Display string: 'Line 12'): Resets by the chosen I/O Line.
     *  - \b Line13 (Display string: 'Line 13'): Resets by the chosen I/O Line.
     *  - \b Line14 (Display string: 'Line 14'): Resets by the chosen I/O Line.
     *  - \b Line15 (Display string: 'Line 15'): Resets by the chosen I/O Line.
     *  - \b Counter3End (Display string: 'Counter 3 End'): Resets with the reception of the Counter End.
     *  - \b Counter4End (Display string: 'Counter 4 End'): Resets with the reception of the Counter End.
     *  - \b Counter5End (Display string: 'Counter 5 End'): Resets with the reception of the Counter End.
     *  - \b Counter6End (Display string: 'Counter 6 End'): Resets with the reception of the Counter End.
     *  - \b Counter7End (Display string: 'Counter 7 End'): Resets with the reception of the Counter End.
     *  - \b Counter8End (Display string: 'Counter 8 End'): Resets with the reception of the Counter End.
     *  - \b Counter9End (Display string: 'Counter 9 End'): Resets with the reception of the Counter End.
     *  - \b Counter10End (Display string: 'Counter 10 End'): Resets with the reception of the Counter End.
     *  - \b Counter11End (Display string: 'Counter 11 End'): Resets with the reception of the Counter End.
     *  - \b Counter12End (Display string: 'Counter 12 End'): Resets with the reception of the Counter End.
     *  - \b Counter13End (Display string: 'Counter 13 End'): Resets with the reception of the Counter End.
     *  - \b Counter14End (Display string: 'Counter 14 End'): Resets with the reception of the Counter End.
     *  - \b Counter15End (Display string: 'Counter 15 End'): Resets with the reception of the Counter End.
     *  - \b Counter16End (Display string: 'Counter 16 End')
     *  - \b Timer3End (Display string: 'Timer 3 End'): Resets with the reception of the Timer End.
     *  - \b Timer4End (Display string: 'Timer 4 End'): Resets with the reception of the Timer End.
     *  - \b Timer5End (Display string: 'Timer 5 End'): Resets with the reception of the Timer End.
     *  - \b Timer6End (Display string: 'Timer 6 End'): Resets with the reception of the Timer End.
     *  - \b Timer7End (Display string: 'Timer 7 End'): Resets with the reception of the Timer End.
     *  - \b Timer8End (Display string: 'Timer 8 End'): Resets with the reception of the Timer End.
     *  - \b Timer9End (Display string: 'Timer 9 End'): Resets with the reception of the Timer End.
     *  - \b Timer10End (Display string: 'Timer 10 End'): Resets with the reception of the Timer End.
     *  - \b Timer11End (Display string: 'Timer 11 End'): Resets with the reception of the Timer End.
     *  - \b Timer12End (Display string: 'Timer 12 End'): Resets with the reception of the Timer End.
     *  - \b Timer13End (Display string: 'Timer 13 End'): Resets with the reception of the Timer End.
     *  - \b Timer14End (Display string: 'Timer 14 End'): Resets with the reception of the Timer End.
     *  - \b Timer15End (Display string: 'Timer 15 End'): Resets with the reception of the Timer End.
     *  - \b Timer16End (Display string: 'Timer 16 End')
     *  - \b UserOutput3 (Display string: 'User Output 3'): Resets by the chosen User Output bit.
     *  - \b UserOutput4 (Display string: 'User Output 4'): Resets by the chosen User Output bit.
     *  - \b UserOutput5 (Display string: 'User Output 5'): Resets by the chosen User Output bit.
     *  - \b UserOutput6 (Display string: 'User Output 6'): Resets by the chosen User Output bit.
     *  - \b UserOutput7 (Display string: 'User Output 7'): Resets by the chosen User Output bit.
     *  - \b UserOutput8 (Display string: 'User Output 8'): Resets by the chosen User Output bit.
     *  - \b UserOutput9 (Display string: 'User Output 9'): Resets by the chosen User Output bit.
     *  - \b UserOutput10 (Display string: 'User Output 10'): Resets by the chosen User Output bit.
     *  - \b UserOutput11 (Display string: 'User Output 11'): Resets by the chosen User Output bit.
     *  - \b UserOutput12 (Display string: 'User Output 12'): Resets by the chosen User Output bit.
     *  - \b UserOutput13 (Display string: 'User Output 13'): Resets by the chosen User Output bit.
     *  - \b UserOutput14 (Display string: 'User Output 14'): Resets by the chosen User Output bit.
     *  - \b UserOutput15 (Display string: 'User Output 15'): Resets by the chosen User Output bit.
     *  - \b Action3 (Display string: 'Action 3'): Resets on assertions of the chosen action signal (Broadcasted signal on the transport layer).
     *  - \b Action4 (Display string: 'Action 4'): Resets on assertions of the chosen action signal (Broadcasted signal on the transport layer).
     *  - \b Action5 (Display string: 'Action 5'): Resets on assertions of the chosen action signal (Broadcasted signal on the transport layer).
     *  - \b Action6 (Display string: 'Action 6'): Resets on assertions of the chosen action signal (Broadcasted signal on the transport layer).
     *  - \b Action7 (Display string: 'Action 7'): Resets on assertions of the chosen action signal (Broadcasted signal on the transport layer).
     *  - \b Action8 (Display string: 'Action 8'): Resets on assertions of the chosen action signal (Broadcasted signal on the transport layer).
     *  - \b Action9 (Display string: 'Action 9'): Resets on assertions of the chosen action signal (Broadcasted signal on the transport layer).
     *  - \b Action10 (Display string: 'Action 10'): Resets on assertions of the chosen action signal (Broadcasted signal on the transport layer).
     *  - \b Action11 (Display string: 'Action 11'): Resets on assertions of the chosen action signal (Broadcasted signal on the transport layer).
     *  - \b Action12 (Display string: 'Action 12'): Resets on assertions of the chosen action signal (Broadcasted signal on the transport layer).
     *  - \b Action13 (Display string: 'Action 13'): Resets on assertions of the chosen action signal (Broadcasted signal on the transport layer).
     *  - \b Action14 (Display string: 'Action 14'): Resets on assertions of the chosen action signal (Broadcasted signal on the transport layer).
     *  - \b Action15 (Display string: 'Action 15'): Resets on assertions of the chosen action signal (Broadcasted signal on the transport layer).
     *  - \b Action16 (Display string: 'Action 16')
     *  - \b mvTemperatureOutOfRange (Display string: 'mv Temperature Out Of Range')
     *  - \b mvLogicGateOR1Output (Display string: 'mv Logic Gate OR 1 Output')
     *  - \b mvLogicGateOR2Output (Display string: 'mv Logic Gate OR 2 Output')
     *  - \b mvLogicGateOR3Output (Display string: 'mv Logic Gate OR 3 Output')
     *  - \b mvLogicGateOR4Output (Display string: 'mv Logic Gate OR 4 Output')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 counterResetSource;
    /// \brief An enumerated integer property. Selects the Activation mode of the Counter Reset Source signal.
    /**
     *  Selects the Activation mode of the Counter Reset Source signal.
     *
     *  The following string values might be valid for this feature:
     *  - \b RisingEdge (Display string: 'Rising Edge'): Resets the counter on the Rising Edge of the signal.
     *  - \b FallingEdge (Display string: 'Falling Edge'): Resets the counter on the Falling Edge of the signal.
     *  - \b AnyEdge (Display string: 'Any Edge'): Resets the counter on the Falling or rising Edge of the selected signal.
     *  - \b LevelHigh (Display string: 'Level High'): Resets the counter as long as the selected signal level is High.
     *  - \b LevelLow (Display string: 'Level Low'): Resets the counter as long as the selected signal level is Low.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 counterResetActivation;
    /// \brief A method object. Does a software reset of the selected Counter and starts it.
    /**
     *  Does a software reset of the selected Counter and starts it. The counter starts counting events immediately after the reset unless a Counter trigger is active. CounterReset can be used to reset the Counter independently from the CounterResetSource. To disable the counter temporarily, set CounterEventSource to Off.
     */
    Method counterReset;
    /// \brief An integer property. Reads or writes the current value of the selected Counter.
    /**
     *  Reads or writes the current value of the selected Counter.
     */
    PropertyI64 counterValue;
    /// \brief An integer property. Reads the value of the selected Counter when it was reset by a trigger or by an explicit CounterReset command.
    /**
     *  Reads the value of the selected Counter when it was reset by a trigger or by an explicit CounterReset command.
     */
    PropertyI64 counterValueAtReset;
    /// \brief An integer property. Sets the duration (or number of events) before the CounterEnd event is generated.
    /**
     *  Sets the duration (or number of events) before the CounterEnd event is generated.
     */
    PropertyI64 counterDuration;
    /// \brief An enumerated integer property. Returns the current status of the Counter.
    /**
     *  Returns the current status of the Counter.
     *
     *  The following string values might be valid for this feature:
     *  - \b CounterIdle (Display string: 'Counter Idle'): The counter is idle.
     *  - \b CounterTriggerWait (Display string: 'Counter Trigger Wait'): The counter is waiting for a start trigger.
     *  - \b CounterActive (Display string: 'Counter Active'): The counter is counting for the specified duration.
     *  - \b CounterCompleted (Display string: 'Counter Completed'): The counter reached the CounterDuration count.
     *  - \b CounterOverflow (Display string: 'Counter Overflow'): The counter reached its maximum possible count.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 counterStatus;
    /// \brief An enumerated integer property. Selects the source to start the Counter.
    /**
     *  Selects the source to start the Counter.
     *
     *  The following string values might be valid for this feature:
     *  - \b Off (Display string: 'Off'): Disables the Counter trigger.
     *  - \b AcquisitionTrigger (Display string: 'Acquisition Trigger'): Starts with the reception of the Acquisition Trigger.
     *  - \b AcquisitionTriggerMissed (Display string: 'Acquisition Trigger Missed'): Device has missed an Acquisition start trigger.
     *  - \b AcquisitionStart (Display string: 'Acquisition Start'): Starts with the reception of the Acquisition Start.
     *  - \b AcquisitionEnd (Display string: 'Acquisition End'): Starts with the reception of the Acquisition End.
     *  - \b FrameTrigger (Display string: 'Frame Trigger'): Starts with the reception of the Frame Start Trigger.
     *  - \b FrameTriggerMissed (Display string: 'Frame Trigger Missed'): Device has missed a Frame start trigger.
     *  - \b FrameStart (Display string: 'Frame Start'): Starts with the reception of the Frame Start.
     *  - \b FrameEnd (Display string: 'Frame End'): Starts with the reception of the Frame End.
     *  - \b FrameBurstStart (Display string: 'Frame Burst Start'): Starts with the reception of the Frame Burst Start.
     *  - \b FrameBurstEnd (Display string: 'Frame Burst End'): Starts with the reception of the Frame Burst End.
     *  - \b LineTrigger (Display string: 'Line Trigger'): Starts with the reception of the Line Start Trigger.
     *  - \b LineTriggerMissed (Display string: 'Line Trigger Missed'): Device has missed a Line start trigger.
     *  - \b LineStart (Display string: 'Line Start'): Starts with the reception of the Line Start.
     *  - \b LineEnd (Display string: 'Line End'): Starts with the reception of the Line End.
     *  - \b ExposureStart (Display string: 'Exposure Start'): Starts with the reception of the Exposure Start.
     *  - \b ExposureEnd (Display string: 'Exposure End'): Starts with the reception of the Exposure End.
     *  - \b Line0 (Display string: 'Line 0'): Starts when the specified CounterTriggerActivation condition is met on the chosen I/O Line.
     *  - \b Line1 (Display string: 'Line 1'): Starts when the specified CounterTriggerActivation condition is met on the chosen I/O Line.
     *  - \b Line2 (Display string: 'Line 2'): Starts when the specified CounterTriggerActivation condition is met on the chosen I/O Line.
     *  - \b Line\#3\# (Display string: 'Line \#3\#'): Starts when the specified CounterTriggerActivation condition is met on the chosen I/O Line.
     *  - \b UserOutput0 (Display string: 'User Output 0'): Specifies which User Output bit signal to use as internal source for the trigger.
     *  - \b UserOutput1 (Display string: 'User Output 1'): Specifies which User Output bit signal to use as internal source for the trigger.
     *  - \b UserOutput2 (Display string: 'User Output 2'): Specifies which User Output bit signal to use as internal source for the trigger.
     *  - \b UserOutput\#3\# (Display string: 'User Output \#3\#'): Specifies which User Output bit signal to use as internal source for the trigger.
     *  - \b Counter0Start (Display string: 'Counter 0 Start'): Starts with the reception of the Counter Start.
     *  - \b Counter1Start (Display string: 'Counter 1 Start'): Starts with the reception of the Counter Start.
     *  - \b Counter2Start (Display string: 'Counter 2 Start'): Starts with the reception of the Counter Start.
     *  - \b Counter\#3\#Start (Display string: 'Counter \#3\# Start'): Starts with the reception of the Counter Start.
     *  - \b Counter0End (Display string: 'Counter 0 End'): Starts with the reception of the Counter End.
     *  - \b Counter1End (Display string: 'Counter 1 End'): Starts with the reception of the Counter End.
     *  - \b Counter2End (Display string: 'Counter 2 End'): Starts with the reception of the Counter End.
     *  - \b Counter\#3\#End (Display string: 'Counter \#3\# End'): Starts with the reception of the Counter End.
     *  - \b Timer0Start (Display string: 'Timer 0 Start'): Starts with the reception of the Timer Start.
     *  - \b Timer1Start (Display string: 'Timer 1 Start'): Starts with the reception of the Timer Start.
     *  - \b Timer2Start (Display string: 'Timer 2 Start'): Starts with the reception of the Timer Start.
     *  - \b Timer\#3\#Start (Display string: 'Timer \#3\# Start'): Starts with the reception of the Timer Start.
     *  - \b Timer0End (Display string: 'Timer 0 End'): Starts with the reception of the Timer End.
     *  - \b Timer1End (Display string: 'Timer 1 End'): Starts with the reception of the Timer End.
     *  - \b Timer2End (Display string: 'Timer 2 End'): Starts with the reception of the Timer End.
     *  - \b Timer\#3\#End (Display string: 'Timer \#3\# End'): Starts with the reception of the Timer End.
     *  - \b Encoder0 (Display string: 'Encoder 0'): Starts with the reception of the Encoder output signal.
     *  - \b Encoder1 (Display string: 'Encoder 1'): Starts with the reception of the Encoder output signal.
     *  - \b Encoder2 (Display string: 'Encoder 2'): Starts with the reception of the Encoder output signal.
     *  - \b Encoder\#3\# (Display string: 'Encoder \#3\#'): Starts with the reception of the Encoder output signal.
     *  - \b LogicBlock0 (Display string: 'Logic Block 0'): Starts with the reception of the Logic Block output signal.
     *  - \b LogicBlock1 (Display string: 'Logic Block 1'): Starts with the reception of the Logic Block output signal.
     *  - \b LogicBlock2 (Display string: 'Logic Block 2'): Starts with the reception of the Logic Block output signal.
     *  - \b LogicBlock\#3\# (Display string: 'Logic Block \#3\#'): Starts with the reception of the Logic Block output signal.
     *  - \b SoftwareSignal0 (Display string: 'Software Signal 0'): Starts on the reception of the Software Signal.
     *  - \b SoftwareSignal1 (Display string: 'Software Signal 1'): Starts on the reception of the Software Signal.
     *  - \b SoftwareSignal2 (Display string: 'Software Signal 2'): Starts on the reception of the Software Signal.
     *  - \b SoftwareSignal\#3\# (Display string: 'Software Signal \#3\#'): Starts on the reception of the Software Signal.
     *  - \b Action0 (Display string: 'Action 0'): Starts with the assertion of the chosen action signal.
     *  - \b Action1 (Display string: 'Action 1'): Starts with the assertion of the chosen action signal.
     *  - \b Action2 (Display string: 'Action 2'): Starts with the assertion of the chosen action signal.
     *  - \b Action\#3\# (Display string: 'Action \#3\#'): Starts with the assertion of the chosen action signal.
     *  - \b LinkTrigger0 (Display string: 'Link Trigger 0'): Starts with the reception of the chosen Link Trigger signal.
     *  - \b LinkTrigger1 (Display string: 'Link Trigger 1'): Starts with the reception of the chosen Link Trigger signal.
     *  - \b LinkTrigger2 (Display string: 'Link Trigger 2'): Starts with the reception of the chosen Link Trigger signal.
     *  - \b LinkTrigger\#3\# (Display string: 'Link Trigger \#3\#'): Starts with the reception of the chosen Link Trigger signal.
     *  - \b Line3 (Display string: 'Line 3'): Starts when the specified CounterTriggerActivation condition is met on the chosen I/O Line.
     *  - \b Line4 (Display string: 'Line 4'): Starts when the specified CounterTriggerActivation condition is met on the chosen I/O Line.
     *  - \b Line5 (Display string: 'Line 5'): Starts when the specified CounterTriggerActivation condition is met on the chosen I/O Line.
     *  - \b Line6 (Display string: 'Line 6'): Starts when the specified CounterTriggerActivation condition is met on the chosen I/O Line.
     *  - \b Line7 (Display string: 'Line 7'): Starts when the specified CounterTriggerActivation condition is met on the chosen I/O Line.
     *  - \b Line8 (Display string: 'Line 8'): Starts when the specified CounterTriggerActivation condition is met on the chosen I/O Line.
     *  - \b Line9 (Display string: 'Line 9'): Starts when the specified CounterTriggerActivation condition is met on the chosen I/O Line.
     *  - \b Line10 (Display string: 'Line 10'): Starts when the specified CounterTriggerActivation condition is met on the chosen I/O Line.
     *  - \b Line11 (Display string: 'Line 11'): Starts when the specified CounterTriggerActivation condition is met on the chosen I/O Line.
     *  - \b Line12 (Display string: 'Line 12'): Starts when the specified CounterTriggerActivation condition is met on the chosen I/O Line.
     *  - \b Line13 (Display string: 'Line 13'): Starts when the specified CounterTriggerActivation condition is met on the chosen I/O Line.
     *  - \b Line14 (Display string: 'Line 14'): Starts when the specified CounterTriggerActivation condition is met on the chosen I/O Line.
     *  - \b Line15 (Display string: 'Line 15'): Starts when the specified CounterTriggerActivation condition is met on the chosen I/O Line.
     *  - \b UserOutput3 (Display string: 'User Output 3'): Specifies which User Output bit signal to use as internal source for the trigger.
     *  - \b UserOutput4 (Display string: 'User Output 4'): Specifies which User Output bit signal to use as internal source for the trigger.
     *  - \b UserOutput5 (Display string: 'User Output 5'): Specifies which User Output bit signal to use as internal source for the trigger.
     *  - \b UserOutput6 (Display string: 'User Output 6'): Specifies which User Output bit signal to use as internal source for the trigger.
     *  - \b UserOutput7 (Display string: 'User Output 7'): Specifies which User Output bit signal to use as internal source for the trigger.
     *  - \b UserOutput8 (Display string: 'User Output 8'): Specifies which User Output bit signal to use as internal source for the trigger.
     *  - \b UserOutput9 (Display string: 'User Output 9'): Specifies which User Output bit signal to use as internal source for the trigger.
     *  - \b UserOutput10 (Display string: 'User Output 10'): Specifies which User Output bit signal to use as internal source for the trigger.
     *  - \b UserOutput11 (Display string: 'User Output 11'): Specifies which User Output bit signal to use as internal source for the trigger.
     *  - \b UserOutput12 (Display string: 'User Output 12'): Specifies which User Output bit signal to use as internal source for the trigger.
     *  - \b UserOutput13 (Display string: 'User Output 13'): Specifies which User Output bit signal to use as internal source for the trigger.
     *  - \b UserOutput14 (Display string: 'User Output 14'): Specifies which User Output bit signal to use as internal source for the trigger.
     *  - \b UserOutput15 (Display string: 'User Output 15'): Specifies which User Output bit signal to use as internal source for the trigger.
     *  - \b Counter3End (Display string: 'Counter 3 End'): Starts with the reception of the Counter End.
     *  - \b Counter4End (Display string: 'Counter 4 End'): Starts with the reception of the Counter End.
     *  - \b Counter5End (Display string: 'Counter 5 End'): Starts with the reception of the Counter End.
     *  - \b Counter6End (Display string: 'Counter 6 End'): Starts with the reception of the Counter End.
     *  - \b Counter7End (Display string: 'Counter 7 End'): Starts with the reception of the Counter End.
     *  - \b Counter8End (Display string: 'Counter 8 End'): Starts with the reception of the Counter End.
     *  - \b Counter9End (Display string: 'Counter 9 End'): Starts with the reception of the Counter End.
     *  - \b Counter10End (Display string: 'Counter 10 End'): Starts with the reception of the Counter End.
     *  - \b Counter11End (Display string: 'Counter 11 End'): Starts with the reception of the Counter End.
     *  - \b Counter12End (Display string: 'Counter 12 End'): Starts with the reception of the Counter End.
     *  - \b Counter13End (Display string: 'Counter 13 End'): Starts with the reception of the Counter End.
     *  - \b Counter14End (Display string: 'Counter 14 End'): Starts with the reception of the Counter End.
     *  - \b Counter15End (Display string: 'Counter 15 End'): Starts with the reception of the Counter End.
     *  - \b Counter16End (Display string: 'Counter 16 End')
     *  - \b Timer3End (Display string: 'Timer 3 End'): Starts with the reception of the Timer End.
     *  - \b Timer4End (Display string: 'Timer 4 End'): Starts with the reception of the Timer End.
     *  - \b Timer5End (Display string: 'Timer 5 End'): Starts with the reception of the Timer End.
     *  - \b Timer6End (Display string: 'Timer 6 End'): Starts with the reception of the Timer End.
     *  - \b Timer7End (Display string: 'Timer 7 End'): Starts with the reception of the Timer End.
     *  - \b Timer8End (Display string: 'Timer 8 End'): Starts with the reception of the Timer End.
     *  - \b Timer9End (Display string: 'Timer 9 End'): Starts with the reception of the Timer End.
     *  - \b Timer10End (Display string: 'Timer 10 End'): Starts with the reception of the Timer End.
     *  - \b Timer11End (Display string: 'Timer 11 End'): Starts with the reception of the Timer End.
     *  - \b Timer12End (Display string: 'Timer 12 End'): Starts with the reception of the Timer End.
     *  - \b Timer13End (Display string: 'Timer 13 End'): Starts with the reception of the Timer End.
     *  - \b Timer14End (Display string: 'Timer 14 End'): Starts with the reception of the Timer End.
     *  - \b Timer15End (Display string: 'Timer 15 End'): Starts with the reception of the Timer End.
     *  - \b Timer16End (Display string: 'Timer 16 End')
     *  - \b Action3 (Display string: 'Action 3'): Starts with the assertion of the chosen action signal.
     *  - \b Action4 (Display string: 'Action 4'): Starts with the assertion of the chosen action signal.
     *  - \b Action5 (Display string: 'Action 5'): Starts with the assertion of the chosen action signal.
     *  - \b Action6 (Display string: 'Action 6'): Starts with the assertion of the chosen action signal.
     *  - \b Action7 (Display string: 'Action 7'): Starts with the assertion of the chosen action signal.
     *  - \b Action8 (Display string: 'Action 8'): Starts with the assertion of the chosen action signal.
     *  - \b Action9 (Display string: 'Action 9'): Starts with the assertion of the chosen action signal.
     *  - \b Action10 (Display string: 'Action 10'): Starts with the assertion of the chosen action signal.
     *  - \b Action11 (Display string: 'Action 11'): Starts with the assertion of the chosen action signal.
     *  - \b Action12 (Display string: 'Action 12'): Starts with the assertion of the chosen action signal.
     *  - \b Action13 (Display string: 'Action 13'): Starts with the assertion of the chosen action signal.
     *  - \b Action14 (Display string: 'Action 14'): Starts with the assertion of the chosen action signal.
     *  - \b Action15 (Display string: 'Action 15'): Starts with the assertion of the chosen action signal.
     *  - \b Action16 (Display string: 'Action 16')
     *  - \b mvLogicGateOR1Output (Display string: 'mv Logic Gate OR 1 Output')
     *  - \b mvLogicGateOR2Output (Display string: 'mv Logic Gate OR 2 Output')
     *  - \b mvLogicGateOR3Output (Display string: 'mv Logic Gate OR 3 Output')
     *  - \b mvLogicGateOR4Output (Display string: 'mv Logic Gate OR 4 Output')
     *  - \b mvReadOutActive (Display string: 'mv Read Out Active')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 counterTriggerSource;
    /// \brief An enumerated integer property. Selects the activation mode of the trigger to start the Counter.
    /**
     *  Selects the activation mode of the trigger to start the Counter.
     *
     *  The following string values might be valid for this feature:
     *  - \b RisingEdge (Display string: 'Rising Edge'): Starts counting on the Rising Edge of the selected trigger signal.
     *  - \b FallingEdge (Display string: 'Falling Edge'): Starts counting on the Falling Edge of the selected trigger signal.
     *  - \b AnyEdge (Display string: 'Any Edge'): Starts counting on the Falling or rising Edge of the selected trigger signal.
     *  - \b LevelHigh (Display string: 'Level High'): Counts as long as the selected trigger signal level is High.
     *  - \b LevelLow (Display string: 'Level Low'): Counts as long as the selected trigger signal level is Low.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 counterTriggerActivation;
    /// \brief An enumerated integer property. Selects which Timer to configure.
    /**
     *  Selects which Timer to configure.
     *
     *  The following string values might be valid for this feature:
     *  - \b Timer0 (Display string: 'Timer 0'): Selects the Timer 0.
     *  - \b Timer1 (Display string: 'Timer 1'): Selects the Timer 1.
     *  - \b Timer2 (Display string: 'Timer 2'): Selects the Timer 2.
     *  - \b Timer\#3\# (Display string: 'Timer \#3\#'): Selects the Timer \#3\#.
     *  - \b Timer3 (Display string: 'Timer 3'): Selects the Timer 3.
     *  - \b Timer4 (Display string: 'Timer 4'): Selects the Timer 4.
     *  - \b Timer5 (Display string: 'Timer 5'): Selects the Timer 5.
     *  - \b Timer6 (Display string: 'Timer 6'): Selects the Timer 6.
     *  - \b Timer7 (Display string: 'Timer 7'): Selects the Timer 7.
     *  - \b Timer8 (Display string: 'Timer 8'): Selects the Timer 8.
     *  - \b Timer9 (Display string: 'Timer 9'): Selects the Timer 9.
     *  - \b Timer10 (Display string: 'Timer 10'): Selects the Timer 10.
     *  - \b Timer11 (Display string: 'Timer 11'): Selects the Timer 11.
     *  - \b Timer12 (Display string: 'Timer 12'): Selects the Timer 12.
     *  - \b Timer13 (Display string: 'Timer 13'): Selects the Timer 13.
     *  - \b Timer14 (Display string: 'Timer 14'): Selects the Timer 14.
     *  - \b Timer15 (Display string: 'Timer 15'): Selects the Timer 15.
     *  - \b Timer16 (Display string: 'Timer 16')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 timerSelector;
    /// \brief A floating point property. Sets the duration (in microseconds) of the Timer pulse.
    /**
     *  Sets the duration (in microseconds) of the Timer pulse.
     */
    PropertyF timerDuration;
    /// \brief A floating point property. Sets the duration (in microseconds) of the delay to apply at the reception of a trigger before starting the Timer.
    /**
     *  Sets the duration (in microseconds) of the delay to apply at the reception of a trigger before starting the Timer.
     */
    PropertyF timerDelay;
    /// \brief A method object. Does a software reset of the selected timer and starts it.
    /**
     *  Does a software reset of the selected timer and starts it. The timer starts immediately after the reset unless a timer trigger is active.
     */
    Method timerReset;
    /// \brief A floating point property. Reads or writes the current value (in microseconds) of the selected Timer.
    /**
     *  Reads or writes the current value (in microseconds) of the selected Timer.
     */
    PropertyF timerValue;
    /// \brief An enumerated integer property. Returns the current status of the Timer.
    /**
     *  Returns the current status of the Timer.
     *
     *  The following string values might be valid for this feature:
     *  - \b TimerIdle (Display string: 'Timer Idle'): The Timer is idle.
     *  - \b TimerTriggerWait (Display string: 'Timer Trigger Wait'): The Timer is waiting for a start trigger.
     *  - \b TimerActive (Display string: 'Timer Active'): The Timer is counting for the specified duration.
     *  - \b TimerCompleted (Display string: 'Timer Completed'): The Timer reached the TimerDuration count.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 timerStatus;
    /// \brief An enumerated integer property. Selects the source of the trigger to start the Timer.
    /**
     *  Selects the source of the trigger to start the Timer.
     *
     *  The following string values might be valid for this feature:
     *  - \b Off (Display string: 'Off'): Disables the Timer trigger.
     *  - \b AcquisitionTrigger (Display string: 'Acquisition Trigger'): Starts with the reception of the Acquisition Trigger.
     *  - \b AcquisitionTriggerMissed (Display string: 'Acquisition Trigger Missed'): Starts with the reception of a missed Acquisition Trigger.
     *  - \b AcquisitionStart (Display string: 'Acquisition Start'): Starts with the reception of the Acquisition Start.
     *  - \b AcquisitionEnd (Display string: 'Acquisition End'): Starts with the reception of the Acquisition End.
     *  - \b FrameTrigger (Display string: 'Frame Trigger'): Starts with the reception of the Frame Start Trigger.
     *  - \b FrameTriggerMissed (Display string: 'Frame Trigger Missed'): Starts with the reception of a missed Frame Trigger.
     *  - \b FrameStart (Display string: 'Frame Start'): Starts with the reception of the Frame Start.
     *  - \b FrameEnd (Display string: 'Frame End'): Starts with the reception of the Frame End.
     *  - \b FrameBurstStart (Display string: 'Frame Burst Start'): Starts with the reception of the Frame Burst Start.
     *  - \b FrameBurstEnd (Display string: 'Frame Burst End'): Starts with the reception of the Frame Burst End.
     *  - \b LineTrigger (Display string: 'Line Trigger'): Starts with the reception of the Line Start Trigger.
     *  - \b LineTriggerMissed (Display string: 'Line Trigger Missed'): Starts with the reception of a missed Line Trigger.
     *  - \b LineStart (Display string: 'Line Start'): Starts with the reception of the Line Start.
     *  - \b LineEnd (Display string: 'Line End'): Starts with the reception of the Line End.
     *  - \b ExposureStart (Display string: 'Exposure Start'): Starts with the reception of the Exposure Start.
     *  - \b ExposureEnd (Display string: 'Exposure End'): Starts with the reception of the Exposure End.
     *  - \b Line0 (Display string: 'Line 0'): Starts when the specified TimerTriggerActivation condition is met on the chosen I/O Line.
     *  - \b Line1 (Display string: 'Line 1'): Starts when the specified TimerTriggerActivation condition is met on the chosen I/O Line.
     *  - \b Line2 (Display string: 'Line 2'): Starts when the specified TimerTriggerActivation condition is met on the chosen I/O Line.
     *  - \b Line\#3\# (Display string: 'Line \#3\#'): Starts when the specified TimerTriggerActivation condition is met on the chosen I/O Line.
     *  - \b UserOutput0 (Display string: 'User Output 0'): Specifies which User Output bit signal to use as internal source for the trigger.
     *  - \b UserOutput1 (Display string: 'User Output 1'): Specifies which User Output bit signal to use as internal source for the trigger.
     *  - \b UserOutput2 (Display string: 'User Output 2'): Specifies which User Output bit signal to use as internal source for the trigger.
     *  - \b UserOutput\#3\# (Display string: 'User Output \#3\#'): Specifies which User Output bit signal to use as internal source for the trigger.
     *  - \b Counter0Start (Display string: 'Counter 0 Start'): Starts with the reception of the Counter Start.
     *  - \b Counter1Start (Display string: 'Counter 1 Start'): Starts with the reception of the Counter Start.
     *  - \b Counter2Start (Display string: 'Counter 2 Start'): Starts with the reception of the Counter Start.
     *  - \b Counter\#3\#Start (Display string: 'Counter \#3\# Start'): Starts with the reception of the Counter Start.
     *  - \b Counter0End (Display string: 'Counter 0 End'): Starts with the reception of the Counter End.
     *  - \b Counter1End (Display string: 'Counter 1 End'): Starts with the reception of the Counter End.
     *  - \b Counter2End (Display string: 'Counter 2 End'): Starts with the reception of the Counter End.
     *  - \b Counter\#3\#End (Display string: 'Counter \#3\# End'): Starts with the reception of the Counter End.
     *  - \b Timer0Start (Display string: 'Timer 0 Start'): Starts with the reception of the Timer Start.
     *  - \b Timer1Start (Display string: 'Timer 1 Start'): Starts with the reception of the Timer Start.
     *  - \b Timer2Start (Display string: 'Timer 2 Start'): Starts with the reception of the Timer Start.
     *  - \b Timer\#3\#Start (Display string: 'Timer \#3\# Start'): Starts with the reception of the Timer Start.
     *  - \b Timer0End (Display string: 'Timer 0 End'): Starts with the reception of the Timer End. Note that a timer can retrigger itself to achieve a free running Timer.
     *  - \b Timer1End (Display string: 'Timer 1 End'): Starts with the reception of the Timer End. Note that a timer can retrigger itself to achieve a free running Timer.
     *  - \b Timer2End (Display string: 'Timer 2 End'): Starts with the reception of the Timer End. Note that a timer can retrigger itself to achieve a free running Timer.
     *  - \b Timer\#3\#End (Display string: 'Timer \#3\# End'): Starts with the reception of the Timer End. Note that a timer can retrigger itself to achieve a free running Timer.
     *  - \b Encoder0 (Display string: 'Encoder 0'): Starts with the reception of the Encoder output signal.
     *  - \b Encoder1 (Display string: 'Encoder 1'): Starts with the reception of the Encoder output signal.
     *  - \b Encoder2 (Display string: 'Encoder 2'): Starts with the reception of the Encoder output signal.
     *  - \b Encoder\#3\# (Display string: 'Encoder \#3\#'): Starts with the reception of the Encoder output signal.
     *  - \b LogicBlock0 (Display string: 'Logic Block 0'): Starts with the reception of the Logic Block output signal.
     *  - \b LogicBlock1 (Display string: 'Logic Block 1'): Starts with the reception of the Logic Block output signal.
     *  - \b LogicBlock2 (Display string: 'Logic Block 2'): Starts with the reception of the Logic Block output signal.
     *  - \b LogicBlock\#3\# (Display string: 'Logic Block \#3\#'): Starts with the reception of the Logic Block output signal.
     *  - \b SoftwareSignal0 (Display string: 'Software Signal 0'): Starts on the reception of the Software Signal.
     *  - \b SoftwareSignal1 (Display string: 'Software Signal 1'): Starts on the reception of the Software Signal.
     *  - \b SoftwareSignal2 (Display string: 'Software Signal 2'): Starts on the reception of the Software Signal.
     *  - \b SoftwareSignal\#3\# (Display string: 'Software Signal \#3\#'): Starts on the reception of the Software Signal.
     *  - \b Action0 (Display string: 'Action 0'): Starts with the assertion of the chosen action signal.
     *  - \b Action1 (Display string: 'Action 1'): Starts with the assertion of the chosen action signal.
     *  - \b Action2 (Display string: 'Action 2'): Starts with the assertion of the chosen action signal.
     *  - \b Action\#3\# (Display string: 'Action \#3\#'): Starts with the assertion of the chosen action signal.
     *  - \b LinkTrigger0 (Display string: 'Link Trigger 0'): Starts with the reception of the chosen Link Trigger.
     *  - \b LinkTrigger1 (Display string: 'Link Trigger 1'): Starts with the reception of the chosen Link Trigger.
     *  - \b LinkTrigger2 (Display string: 'Link Trigger 2'): Starts with the reception of the chosen Link Trigger.
     *  - \b LinkTrigger\#3\# (Display string: 'Link Trigger \#3\#'): Starts with the reception of the chosen Link Trigger.
     *  - \b Line3 (Display string: 'Line 3'): Starts when the specified TimerTriggerActivation condition is met on the chosen I/O Line.
     *  - \b Line4 (Display string: 'Line 4'): Starts when the specified TimerTriggerActivation condition is met on the chosen I/O Line.
     *  - \b Line5 (Display string: 'Line 5'): Starts when the specified TimerTriggerActivation condition is met on the chosen I/O Line.
     *  - \b Line6 (Display string: 'Line 6'): Starts when the specified TimerTriggerActivation condition is met on the chosen I/O Line.
     *  - \b Line7 (Display string: 'Line 7'): Starts when the specified TimerTriggerActivation condition is met on the chosen I/O Line.
     *  - \b Line8 (Display string: 'Line 8'): Starts when the specified TimerTriggerActivation condition is met on the chosen I/O Line.
     *  - \b Line9 (Display string: 'Line 9'): Starts when the specified TimerTriggerActivation condition is met on the chosen I/O Line.
     *  - \b Line10 (Display string: 'Line 10'): Starts when the specified TimerTriggerActivation condition is met on the chosen I/O Line.
     *  - \b Line11 (Display string: 'Line 11'): Starts when the specified TimerTriggerActivation condition is met on the chosen I/O Line.
     *  - \b Line12 (Display string: 'Line 12'): Starts when the specified TimerTriggerActivation condition is met on the chosen I/O Line.
     *  - \b Line13 (Display string: 'Line 13'): Starts when the specified TimerTriggerActivation condition is met on the chosen I/O Line.
     *  - \b Line14 (Display string: 'Line 14'): Starts when the specified TimerTriggerActivation condition is met on the chosen I/O Line.
     *  - \b Line15 (Display string: 'Line 15'): Starts when the specified TimerTriggerActivation condition is met on the chosen I/O Line.
     *  - \b UserOutput3 (Display string: 'User Output 3'): Specifies which User Output bit signal to use as internal source for the trigger.
     *  - \b UserOutput4 (Display string: 'User Output 4'): Specifies which User Output bit signal to use as internal source for the trigger.
     *  - \b UserOutput5 (Display string: 'User Output 5'): Specifies which User Output bit signal to use as internal source for the trigger.
     *  - \b UserOutput6 (Display string: 'User Output 6'): Specifies which User Output bit signal to use as internal source for the trigger.
     *  - \b UserOutput7 (Display string: 'User Output 7'): Specifies which User Output bit signal to use as internal source for the trigger.
     *  - \b Counter3End (Display string: 'Counter 3 End'): Starts with the reception of the Counter End.
     *  - \b Counter4End (Display string: 'Counter 4 End'): Starts with the reception of the Counter End.
     *  - \b Counter5End (Display string: 'Counter 5 End'): Starts with the reception of the Counter End.
     *  - \b Counter6End (Display string: 'Counter 6 End'): Starts with the reception of the Counter End.
     *  - \b Counter7End (Display string: 'Counter 7 End'): Starts with the reception of the Counter End.
     *  - \b Counter8End (Display string: 'Counter 8 End'): Starts with the reception of the Counter End.
     *  - \b Counter9End (Display string: 'Counter 9 End'): Starts with the reception of the Counter End.
     *  - \b Counter10End (Display string: 'Counter 10 End'): Starts with the reception of the Counter End.
     *  - \b Counter11End (Display string: 'Counter 11 End'): Starts with the reception of the Counter End.
     *  - \b Counter12End (Display string: 'Counter 12 End'): Starts with the reception of the Counter End.
     *  - \b Counter13End (Display string: 'Counter 13 End'): Starts with the reception of the Counter End.
     *  - \b Counter14End (Display string: 'Counter 14 End'): Starts with the reception of the Counter End.
     *  - \b Counter15End (Display string: 'Counter 15 End'): Starts with the reception of the Counter End.
     *  - \b Counter16End (Display string: 'Counter 16 End')
     *  - \b Timer3End (Display string: 'Timer 3 End'): Starts with the reception of the Timer End. Note that a timer can retrigger itself to achieve a free running Timer.
     *  - \b Timer4End (Display string: 'Timer 4 End'): Starts with the reception of the Timer End. Note that a timer can retrigger itself to achieve a free running Timer.
     *  - \b Timer5End (Display string: 'Timer 5 End'): Starts with the reception of the Timer End. Note that a timer can retrigger itself to achieve a free running Timer.
     *  - \b Timer6End (Display string: 'Timer 6 End'): Starts with the reception of the Timer End. Note that a timer can retrigger itself to achieve a free running Timer.
     *  - \b Timer7End (Display string: 'Timer 7 End'): Starts with the reception of the Timer End. Note that a timer can retrigger itself to achieve a free running Timer.
     *  - \b Timer8End (Display string: 'Timer 8 End'): Starts with the reception of the Timer End. Note that a timer can retrigger itself to achieve a free running Timer.
     *  - \b Timer9End (Display string: 'Timer 9 End'): Starts with the reception of the Timer End. Note that a timer can retrigger itself to achieve a free running Timer.
     *  - \b Timer10End (Display string: 'Timer 10 End'): Starts with the reception of the Timer End. Note that a timer can retrigger itself to achieve a free running Timer.
     *  - \b Timer11End (Display string: 'Timer 11 End'): Starts with the reception of the Timer End. Note that a timer can retrigger itself to achieve a free running Timer.
     *  - \b Timer12End (Display string: 'Timer 12 End'): Starts with the reception of the Timer End. Note that a timer can retrigger itself to achieve a free running Timer.
     *  - \b Timer13End (Display string: 'Timer 13 End'): Starts with the reception of the Timer End. Note that a timer can retrigger itself to achieve a free running Timer.
     *  - \b Timer14End (Display string: 'Timer 14 End'): Starts with the reception of the Timer End. Note that a timer can retrigger itself to achieve a free running Timer.
     *  - \b Timer15End (Display string: 'Timer 15 End'): Starts with the reception of the Timer End. Note that a timer can retrigger itself to achieve a free running Timer.
     *  - \b Timer16End (Display string: 'Timer 16 End')
     *  - \b Action3 (Display string: 'Action 3'): Starts with the assertion of the chosen action signal.
     *  - \b Action4 (Display string: 'Action 4'): Starts with the assertion of the chosen action signal.
     *  - \b Action5 (Display string: 'Action 5'): Starts with the assertion of the chosen action signal.
     *  - \b Action6 (Display string: 'Action 6'): Starts with the assertion of the chosen action signal.
     *  - \b Action7 (Display string: 'Action 7'): Starts with the assertion of the chosen action signal.
     *  - \b Action8 (Display string: 'Action 8'): Starts with the assertion of the chosen action signal.
     *  - \b Action9 (Display string: 'Action 9'): Starts with the assertion of the chosen action signal.
     *  - \b Action10 (Display string: 'Action 10'): Starts with the assertion of the chosen action signal.
     *  - \b Action11 (Display string: 'Action 11'): Starts with the assertion of the chosen action signal.
     *  - \b Action12 (Display string: 'Action 12'): Starts with the assertion of the chosen action signal.
     *  - \b Action13 (Display string: 'Action 13'): Starts with the assertion of the chosen action signal.
     *  - \b Action14 (Display string: 'Action 14'): Starts with the assertion of the chosen action signal.
     *  - \b Action15 (Display string: 'Action 15'): Starts with the assertion of the chosen action signal.
     *  - \b Action16 (Display string: 'Action 16')
     *  - \b mvLogicGateOR1Output (Display string: 'mv Logic Gate OR 1 Output')
     *  - \b mvLogicGateOR2Output (Display string: 'mv Logic Gate OR 2 Output')
     *  - \b mvLogicGateOR3Output (Display string: 'mv Logic Gate OR 3 Output')
     *  - \b mvLogicGateOR4Output (Display string: 'mv Logic Gate OR 4 Output')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 timerTriggerSource;
    /// \brief An enumerated integer property. Selects the activation mode of the trigger to start the Timer.
    /**
     *  Selects the activation mode of the trigger to start the Timer.
     *
     *  The following string values might be valid for this feature:
     *  - \b RisingEdge (Display string: 'Rising Edge'): Starts counting on the Rising Edge of the selected trigger signal.
     *  - \b FallingEdge (Display string: 'Falling Edge'): Starts counting on the Falling Edge of the selected trigger signal.
     *  - \b AnyEdge (Display string: 'Any Edge'): Starts counting on the Falling or Rising Edge of the selected trigger signal.
     *  - \b LevelHigh (Display string: 'Level High'): Counts as long as the selected trigger signal level is High.
     *  - \b LevelLow (Display string: 'Level Low'): Counts as long as the selected trigger signal level is Low.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 timerTriggerActivation;
    /// \brief A floating point property. Sets the minimum period between two valid timer triggers.
    /**
     *  Sets the minimum period between two valid timer triggers.
     */
    PropertyF timerTriggerArmDelay;
    // *INDENT-OFF*
    PYTHON_OR_JAVA_ONLY( %mutable; )
    // *INDENT-ON*
};

//-----------------------------------------------------------------------------
/// \brief Category that contains the quadrature Encoder Control features.
/**
 *  A category that contains the quadrature Encoder Control features.
 * \ingroup GenICamInterfaceDevice
 */
class EncoderControl
//-----------------------------------------------------------------------------
{
public:
    /// \brief Constructs a new <b>mvIMPACT::acquire::GenICam::EncoderControl</b> object.
    explicit EncoderControl(
        /// [in] A pointer to a <b>mvIMPACT::acquire::Device</b> object obtained from a <b>mvIMPACT::acquire::DeviceManager</b> object.
        mvIMPACT::acquire::Device* pDev,
        /// [in] The name of the driver internal setting to access with this instance.
        /// A list of valid setting names can be obtained by a call to
        /// <b>mvIMPACT::acquire::FunctionInterface::getAvailableSettings</b>, new
        /// settings can be created with the function
        /// <b>mvIMPACT::acquire::FunctionInterface::createSetting</b>
        const std::string& settingName = "Base" ) :
        encoderSelector(),
        encoderSourceA(),
        encoderSourceB(),
        encoderMode(),
        encoderDivider(),
        encoderOutputMode(),
        encoderStatus(),
        encoderTimeout(),
        encoderResetSource(),
        encoderResetActivation(),
        encoderReset(),
        encoderValue(),
        encoderValueAtReset(),
        encoderResolution()
    {
        pDev->validateInterfaceLayout( dilGenICam );
        mvIMPACT::acquire::DeviceComponentLocator locator( pDev, mvIMPACT::acquire::dltSetting, settingName );
        locator.bindSearchBase( locator.searchbase_id(), "Camera/GenICam" );
        locator.bindComponent( encoderSelector, "EncoderSelector" );
        locator.bindComponent( encoderSourceA, "EncoderSourceA" );
        locator.bindComponent( encoderSourceB, "EncoderSourceB" );
        locator.bindComponent( encoderMode, "EncoderMode" );
        locator.bindComponent( encoderDivider, "EncoderDivider" );
        locator.bindComponent( encoderOutputMode, "EncoderOutputMode" );
        locator.bindComponent( encoderStatus, "EncoderStatus" );
        locator.bindComponent( encoderTimeout, "EncoderTimeout" );
        locator.bindComponent( encoderResetSource, "EncoderResetSource" );
        locator.bindComponent( encoderResetActivation, "EncoderResetActivation" );
        locator.bindComponent( encoderReset, "EncoderReset@i" );
        locator.bindComponent( encoderValue, "EncoderValue" );
        locator.bindComponent( encoderValueAtReset, "EncoderValueAtReset" );
        locator.bindComponent( encoderResolution, "EncoderResolution" );
    }
    // *INDENT-OFF*
    PYTHON_OR_JAVA_ONLY( %immutable; )
    // *INDENT-ON*
    /// \brief An enumerated integer property. Selects which Encoder to configure.
    /**
     *  Selects which Encoder to configure.
     *
     *  The following string values might be valid for this feature:
     *  - \b Encoder0 (Display string: 'Encoder 0'): Selects Encoder 0.
     *  - \b Encoder1 (Display string: 'Encoder 1'): Selects Encoder 1.
     *  - \b Encoder2 (Display string: 'Encoder 2'): Selects Encoder 2.
     *  - \b Encoder\#3\# (Display string: 'Encoder \#3\#'): Selects Encoder \#3\#.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 encoderSelector;
    /// \brief An enumerated integer property. Selects the signal which will be the source of the A input of the Encoder.
    /**
     *  Selects the signal which will be the source of the A input of the Encoder.
     *
     *  The following string values might be valid for this feature:
     *  - \b Off (Display string: 'Off'): Counter is stopped.
     *  - \b Line0 (Display string: 'Line 0'): Encoder Forward input is taken from the chosen I/O Line.
     *  - \b Line1 (Display string: 'Line 1'): Encoder Forward input is taken from the chosen I/O Line.
     *  - \b Line2 (Display string: 'Line 2'): Encoder Forward input is taken from the chosen I/O Line.
     *  - \b Line\#3\# (Display string: 'Line \#3\#'): Encoder Forward input is taken from the chosen I/O Line.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 encoderSourceA;
    /// \brief An enumerated integer property. Selects the signal which will be the source of the B input of the Encoder.
    /**
     *  Selects the signal which will be the source of the B input of the Encoder.
     *
     *  The following string values might be valid for this feature:
     *  - \b Off (Display string: 'Off'): Counter is stopped.
     *  - \b Line0 (Display string: 'Line 0'): Encoder Reverse input is taken from the chosen I/O Line.
     *  - \b Line1 (Display string: 'Line 1'): Encoder Reverse input is taken from the chosen I/O Line.
     *  - \b Line2 (Display string: 'Line 2'): Encoder Reverse input is taken from the chosen I/O Line.
     *  - \b Line\#3\# (Display string: 'Line \#3\#'): Encoder Reverse input is taken from the chosen I/O Line.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 encoderSourceB;
    /// \brief An enumerated integer property. Selects if the count of encoder uses FourPhase mode with jitter filtering or the HighResolution mode without jitter filtering.
    /**
     *  Selects if the count of encoder uses FourPhase mode with jitter filtering or the HighResolution mode without jitter filtering.
     *
     *  The following string values might be valid for this feature:
     *  - \b FourPhase (Display string: 'Four Phase'): The counter increments or decrements 1 for every full quadrature cycle with jitter filtering.
     *  - \b HighResolution (Display string: 'High Resolution'): The counter increments or decrements every quadrature phase for high resolution counting, but without jitter filtering.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 encoderMode;
    /// \brief An integer property. Sets how many Encoder increments/decrements are needed to generate an Encoder output pulse signal.
    /**
     *  Sets how many Encoder increments/decrements are needed to generate an Encoder output pulse signal.
     */
    PropertyI64 encoderDivider;
    /// \brief An enumerated integer property. Selects the conditions for the Encoder interface to generate a valid Encoder output signal.
    /**
     *  Selects the conditions for the Encoder interface to generate a valid Encoder output signal.
     *
     *  The following string values might be valid for this feature:
     *  - \b Off (Display string: 'Off'): No output pulse are generated.
     *  - \b PositionUp (Display string: 'Position Up'): Output pulses are generated at all new positions in the positive direction. If the encoder reverses no output pulse are generated until it has again passed the position where the reversal started.
     *  - \b PositionDown (Display string: 'Position Down'): Output pulses are generated at all new positions in the negative direction. If the encoder reverses no output pulse are generated until it has again passed the position where the reversal started.
     *  - \b DirectionUp (Display string: 'Direction Up'): Output pulses are generated at all position increments in the positive direction while ignoring negative direction motion.
     *  - \b DirectionDown (Display string: 'Direction Down'): Output pulses are generated at all position increments in the negative direction while ignoring positive direction motion.
     *  - \b Motion (Display string: 'Motion'): Output pulses are generated at all motion increments in both directions.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     *
     *  The following figure explains the different \b encoderOutputModes
     *
     *  <center>
     *     \image html EventControl.png
     *      encoderOutputModes
     *  </center>
     *
     */
    PropertyI64 encoderOutputMode;
    /// \brief An enumerated integer property. Returns the motion status of the encoder.
    /**
     *  Returns the motion status of the encoder.
     *
     *  The following string values might be valid for this feature:
     *  - \b EncoderUp (Display string: 'Encoder Up'): The encoder counter last incremented.
     *  - \b EncoderDown (Display string: 'Encoder Down'): The encoder counter last decremented.
     *  - \b EncoderIdle (Display string: 'Encoder Idle'): The encoder is not active.
     *  - \b EncoderStatic (Display string: 'Encoder Static'): No motion within the EncoderTimeout time.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 encoderStatus;
    /// \brief A floating point property. Sets the maximum time interval between encoder counter increments before the status turns to static.
    /**
     *  Sets the maximum time interval between encoder counter increments before the status turns to static.
     */
    PropertyF encoderTimeout;
    /// \brief An enumerated integer property. Selects the signals that will be the source to reset the Encoder.
    /**
     *  Selects the signals that will be the source to reset the Encoder.
     *
     *  The following string values might be valid for this feature:
     *  - \b Off (Display string: 'Off'): Disable the Encoder Reset trigger.
     *  - \b AcquisitionTrigger (Display string: 'Acquisition Trigger'): Resets with the reception of the Acquisition Trigger.
     *  - \b AcquisitionTriggerMissed (Display string: 'Acquisition Trigger Missed'): Resets with the reception of a missed Acquisition Trigger.
     *  - \b AcquisitionStart (Display string: 'Acquisition Start'): Resets with the reception of the Acquisition Start.
     *  - \b AcquisitionEnd (Display string: 'Acquisition End'): Resets with the reception of the Acquisition End.
     *  - \b FrameTrigger (Display string: 'Frame Trigger'): Resets with the reception of the Frame Start Trigger.
     *  - \b FrameTriggerMissed (Display string: 'Frame Trigger Missed'): Resets with the reception of a missed Frame Trigger.
     *  - \b FrameStart (Display string: 'Frame Start'): Resets with the reception of the Frame Start.
     *  - \b FrameEnd (Display string: 'Frame End'): Resets with the reception of the Frame End.
     *  - \b ExposureStart (Display string: 'Exposure Start'): Resets with the reception of the Exposure Start.
     *  - \b ExposureEnd (Display string: 'Exposure End'): Resets with the reception of the Exposure End.
     *  - \b Line0 (Display string: 'Line 0'): Resets by the chosen I/O Line.
     *  - \b Line1 (Display string: 'Line 1'): Resets by the chosen I/O Line.
     *  - \b Line2 (Display string: 'Line 2'): Resets by the chosen I/O Line.
     *  - \b Line\#3\# (Display string: 'Line \#3\#'): Resets by the chosen I/O Line.
     *  - \b UserOutput0 (Display string: 'User Output 0'): Resets by the chosen User Output bit.
     *  - \b UserOutput1 (Display string: 'User Output 1'): Resets by the chosen User Output bit.
     *  - \b UserOutput2 (Display string: 'User Output 2'): Resets by the chosen User Output bit.
     *  - \b UserOutput\#3\# (Display string: 'User Output \#3\#'): Resets by the chosen User Output bit.
     *  - \b Counter0Start (Display string: 'Counter 0 Start'): Resets with the reception of the Counter Start.
     *  - \b Counter1Start (Display string: 'Counter 1 Start'): Resets with the reception of the Counter Start.
     *  - \b Counter2Start (Display string: 'Counter 2 Start'): Resets with the reception of the Counter Start.
     *  - \b Counter\#3\#Start (Display string: 'Counter \#3\# Start'): Resets with the reception of the Counter Start.
     *  - \b Counter0End (Display string: 'Counter 0 End'): Resets with the reception of the Counter End.
     *  - \b Counter1End (Display string: 'Counter 1 End'): Resets with the reception of the Counter End.
     *  - \b Counter2End (Display string: 'Counter 2 End'): Resets with the reception of the Counter End.
     *  - \b Counter\#3\#End (Display string: 'Counter \#3\# End'): Resets with the reception of the Counter End.
     *  - \b Timer0Start (Display string: 'Timer 0 Start'): Resets with the reception of the Timer Start.
     *  - \b Timer1Start (Display string: 'Timer 1 Start'): Resets with the reception of the Timer Start.
     *  - \b Timer2Start (Display string: 'Timer 2 Start'): Resets with the reception of the Timer Start.
     *  - \b Timer\#3\#Start (Display string: 'Timer \#3\# Start'): Resets with the reception of the Timer Start.
     *  - \b Timer0End (Display string: 'Timer 0 End'): Resets with the reception of the Timer End.
     *  - \b Timer1End (Display string: 'Timer 1 End'): Resets with the reception of the Timer End.
     *  - \b Timer2End (Display string: 'Timer 2 End'): Resets with the reception of the Timer End.
     *  - \b Timer\#3\#End (Display string: 'Timer \#3\# End'): Resets with the reception of the Timer End.
     *  - \b LogicBlock0 (Display string: 'Logic Block 0'): Reset by the choosen Logic Block signal.
     *  - \b LogicBlock1 (Display string: 'Logic Block 1'): Reset by the choosen Logic Block signal.
     *  - \b LogicBlock2 (Display string: 'Logic Block 2'): Reset by the choosen Logic Block signal.
     *  - \b LogicBlock\#3\# (Display string: 'Logic Block \#3\#'): Reset by the choosen Logic Block signal.
     *  - \b SoftwareSignal0 (Display string: 'Software Signal 0'): Resets on the reception of the Software Signal.
     *  - \b SoftwareSignal1 (Display string: 'Software Signal 1'): Resets on the reception of the Software Signal.
     *  - \b SoftwareSignal2 (Display string: 'Software Signal 2'): Resets on the reception of the Software Signal.
     *  - \b SoftwareSignal\#3\# (Display string: 'Software Signal \#3\#'): Resets on the reception of the Software Signal.
     *  - \b Action0 (Display string: 'Action 0'): Resets on assertions of the chosen action signal (Broadcasted signal on the transport layer).
     *  - \b Action1 (Display string: 'Action 1'): Resets on assertions of the chosen action signal (Broadcasted signal on the transport layer).
     *  - \b Action2 (Display string: 'Action 2'): Resets on assertions of the chosen action signal (Broadcasted signal on the transport layer).
     *  - \b Action\#3\# (Display string: 'Action \#3\#'): Resets on assertions of the chosen action signal (Broadcasted signal on the transport layer).
     *  - \b LinkTrigger0 (Display string: 'Link Trigger 0'): Resets on the reception of the chosen Link Trigger (received from the transport layer).
     *  - \b LinkTrigger1 (Display string: 'Link Trigger 1'): Resets on the reception of the chosen Link Trigger (received from the transport layer).
     *  - \b LinkTrigger2 (Display string: 'Link Trigger 2'): Resets on the reception of the chosen Link Trigger (received from the transport layer).
     *  - \b LinkTrigger\#3\# (Display string: 'Link Trigger \#3\#'): Resets on the reception of the chosen Link Trigger (received from the transport layer).
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 encoderResetSource;
    /// \brief An enumerated integer property. Selects the Activation mode of the Encoder Reset Source signal.
    /**
     *  Selects the Activation mode of the Encoder Reset Source signal.
     *
     *  The following string values might be valid for this feature:
     *  - \b RisingEdge (Display string: 'Rising Edge'): Resets the Encoder on the Rising Edge of the signal.
     *  - \b FallingEdge (Display string: 'Falling Edge'): Resets the Encoder on the Falling Edge of the signal.
     *  - \b AnyEdge (Display string: 'Any Edge'): Resets the Encoder on the Falling or rising Edge of the selected signal.
     *  - \b LevelHigh (Display string: 'Level High'): Resets the Encoder as long as the selected signal level is High.
     *  - \b LevelLow (Display string: 'Level Low'): Resets the Encoder as long as the selected signal level is Low.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 encoderResetActivation;
    /// \brief A method object. Does a software reset of the selected Encoder and starts it.
    /**
     *  Does a software reset of the selected Encoder and starts it. The Encoder starts counting events immediately after the reset. EncoderReset can be used to reset the Encoder independently from the EncoderResetSource.
     */
    Method encoderReset;
    /// \brief An integer property. Reads or writes the current value of the position counter of the selected Encoder.
    /**
     *  Reads or writes the current value of the position counter of the selected Encoder.
     */
    PropertyI64 encoderValue;
    /// \brief An integer property. Reads the value of the of the position counter of the selected Encoder when it was reset by a signal or by an explicit EncoderReset command.
    /**
     *  Reads the value of the of the position counter of the selected Encoder when it was reset by a signal or by an explicit EncoderReset command.
     */
    PropertyI64 encoderValueAtReset;
    /// \brief A floating point property. Defines the resolution of one encoder step.
    /**
     *  Defines the resolution of one encoder step.
     */
    PropertyF encoderResolution;
    // *INDENT-OFF*
    PYTHON_OR_JAVA_ONLY( %mutable; )
    // *INDENT-ON*
};

//-----------------------------------------------------------------------------
/// \brief Category that contains the Logic Block control features.
/**
 *  A category that contains the Logic Block control features.
 * \ingroup GenICamInterfaceDevice
 */
class LogicBlockControl
//-----------------------------------------------------------------------------
{
public:
    /// \brief Constructs a new <b>mvIMPACT::acquire::GenICam::LogicBlockControl</b> object.
    explicit LogicBlockControl(
        /// [in] A pointer to a <b>mvIMPACT::acquire::Device</b> object obtained from a <b>mvIMPACT::acquire::DeviceManager</b> object.
        mvIMPACT::acquire::Device* pDev,
        /// [in] The name of the driver internal setting to access with this instance.
        /// A list of valid setting names can be obtained by a call to
        /// <b>mvIMPACT::acquire::FunctionInterface::getAvailableSettings</b>, new
        /// settings can be created with the function
        /// <b>mvIMPACT::acquire::FunctionInterface::createSetting</b>
        const std::string& settingName = "Base" ) :
        logicBlockSelector(),
        logicBlockFunction(),
        logicBlockInputNumber(),
        logicBlockInputSelector(),
        logicBlockInputSource(),
        logicBlockInputInverter(),
        logicBlockLUTIndex(),
        logicBlockLUTValue(),
        logicBlockLUTValueAll(),
        logicBlockLUTSelector()
    {
        pDev->validateInterfaceLayout( dilGenICam );
        mvIMPACT::acquire::DeviceComponentLocator locator( pDev, mvIMPACT::acquire::dltSetting, settingName );
        locator.bindSearchBase( locator.searchbase_id(), "Camera/GenICam" );
        locator.bindComponent( logicBlockSelector, "LogicBlockSelector" );
        locator.bindComponent( logicBlockFunction, "LogicBlockFunction" );
        locator.bindComponent( logicBlockInputNumber, "LogicBlockInputNumber" );
        locator.bindComponent( logicBlockInputSelector, "LogicBlockInputSelector" );
        locator.bindComponent( logicBlockInputSource, "LogicBlockInputSource" );
        locator.bindComponent( logicBlockInputInverter, "LogicBlockInputInverter" );
        locator.bindComponent( logicBlockLUTIndex, "LogicBlockLUTIndex" );
        locator.bindComponent( logicBlockLUTValue, "LogicBlockLUTValue" );
        locator.bindComponent( logicBlockLUTValueAll, "LogicBlockLUTValueAll" );
        locator.bindComponent( logicBlockLUTSelector, "LogicBlockLUTSelector" );
    }
    // *INDENT-OFF*
    PYTHON_OR_JAVA_ONLY( %immutable; )
    // *INDENT-ON*
    /// \brief An enumerated integer property. Specifies the Logic Block to configure.
    /**
     *  Specifies the Logic Block to configure.
     *
     *  The following string values might be valid for this feature:
     *  - \b LogicBlock0 (Display string: 'Logic Block 0'): Logic Block 0 is selected.
     *  - \b LogicBlock1 (Display string: 'Logic Block 1'): Logic Block 1 is selected.
     *  - \b LogicBlock2 (Display string: 'Logic Block 2'): Logic Block 2 is selected.
     *  - \b LogicBlock\#3\# (Display string: 'Logic Block \#3\#'): Logic Block \#3\# is selected.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 logicBlockSelector;
    /// \brief An enumerated integer property. Selects the combinational logic Function of the Logic Block to configure.
    /**
     *  Selects the combinational logic Function of the Logic Block to configure.
     *
     *  The following string values might be valid for this feature:
     *  - \b AND (Display string: 'AND'): Selects a Logic Block that does the logical AND of all the inputs.
     *  - \b OR (Display string: 'OR'): Selects a Logic Block that does the logical OR of all the inputs.
     *  - \b LUT (Display string: 'LUT'): Selects a Logic Block that does a Look Up Table Transformation on all the inputs.
     *  - \b LatchedLUT (Display string: 'Latched LUT'): Selects a Logic Block with 2 LUTs as inputs to a Flip-Flop.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 logicBlockFunction;
    /// \brief An integer property. Specifies the number of active signal inputs of the Logic Block.
    /**
     *  Specifies the number of active signal inputs of the Logic Block.
     */
    PropertyI64 logicBlockInputNumber;
    /// \brief An integer property. Selects the Logic Block's input to configure.
    /**
     *  Selects the Logic Block's input to configure.
     */
    PropertyI64 logicBlockInputSelector;
    /// \brief An enumerated integer property. Selects the source signal for the input into the Logic Block.
    /**
     *  Selects the source signal for the input into the Logic Block. True or False indicates the input is forced constant.
     *
     *  The following string values might be valid for this feature:
     *  - \b True (Display string: 'True'): Logic Block input is forced to One.
     *  - \b False (Display string: 'False'): Logic Block input is forced to Zero.
     *  - \b AcquisitionTriggerWait (Display string: 'Acquisition Trigger Wait'): Device is currently waiting for a trigger for the capture of one or many Frames.
     *  - \b AcquisitionTrigger (Display string: 'Acquisition Trigger'): Device is currently waiting for a trigger for the capture of one or many Frames.
     *  - \b AcquisitionTriggerMissed (Display string: 'Acquisition Trigger Missed'): Device has missed a trigger for the capture of one or many Frames.
     *  - \b AcquisitionActive (Display string: 'Acquisition Active'): Device is acquiring one or many Frames.
     *  - \b FrameTriggerWait (Display string: 'Frame Trigger Wait'): Device is currently waiting for a Frame start trigger.
     *  - \b FrameTrigger (Display string: 'Frame Trigger'): Device is currently waiting for a Frame start trigger.
     *  - \b FrameTriggerMissed (Display string: 'Frame Trigger Missed'): Device has missed a Frame start trigger.
     *  - \b FrameActive (Display string: 'Frame Active'): Device is currently doing the capture of a Frame.
     *  - \b ExposureActive (Display string: 'Exposure Active'): Device is doing the exposure of a Frame (or Line).
     *  - \b LineTriggerWait (Display string: 'Line Trigger Wait'): Device is currently waiting for a Line start trigger.
     *  - \b LineTrigger (Display string: 'Line Trigger'): Device is currently waiting for a Line start trigger.
     *  - \b LineTriggerMissed (Display string: 'Line Trigger Missed'): Device has missed a Line start trigger.
     *  - \b LineActive (Display string: 'Line Active'): Device is currently doing the capture of a Line.
     *  - \b Counter0Active (Display string: 'Counter 0 Active'): The chosen counter is in active state (counting).
     *  - \b Counter1Active (Display string: 'Counter 1 Active'): The chosen counter is in active state (counting).
     *  - \b Counter2Active (Display string: 'Counter 2 Active'): The chosen counter is in active state (counting).
     *  - \b Counter\#3\#Active (Display string: 'Counter \#3\# Active'): The chosen counter is in active state (counting).
     *  - \b Timer0Active (Display string: 'Timer 0 Active'): The chosen Timer is in active state.
     *  - \b Timer1Active (Display string: 'Timer 1 Active'): The chosen Timer is in active state.
     *  - \b Timer2Active (Display string: 'Timer 2 Active'): The chosen Timer is in active state.
     *  - \b Timer\#3\#Active (Display string: 'Timer \#3\# Active'): The chosen Timer is in active state.
     *  - \b Encoder0 (Display string: 'Encoder 0'): The chosen Encoder Output state.
     *  - \b Encoder1 (Display string: 'Encoder 1'): The chosen Encoder Output state.
     *  - \b Encoder2 (Display string: 'Encoder 2'): The chosen Encoder Output state.
     *  - \b Encoder\#3\# (Display string: 'Encoder \#3\#'): The chosen Encoder Output state.
     *  - \b LogicBlock0 (Display string: 'Logic Block 0'): The choosen Logic Block output state.
     *  - \b LogicBlock1 (Display string: 'Logic Block 1'): The choosen Logic Block output state.
     *  - \b LogicBlock2 (Display string: 'Logic Block 2'): The choosen Logic Block output state.
     *  - \b LogicBlock\#3\# (Display string: 'Logic Block \#3\#'): The choosen Logic Block output state.
     *  - \b SoftwareSignal0 (Display string: 'Software Signal 0'): The choosen Software Signal output state.
     *  - \b SoftwareSignal1 (Display string: 'Software Signal 1'): The choosen Software Signal output state.
     *  - \b SoftwareSignal2 (Display string: 'Software Signal 2'): The choosen Software Signal output state.
     *  - \b SoftwareSignal\#3\# (Display string: 'Software Signal \#3\#'): The choosen Software Signal output state.
     *  - \b Line0 (Display string: 'Line 0'): The chosen I/OLine state.
     *  - \b Line1 (Display string: 'Line 1'): The chosen I/OLine state.
     *  - \b Line2 (Display string: 'Line 2'): The chosen I/OLine state.
     *  - \b Line\#3\# (Display string: 'Line \#3\#'): The chosen I/OLine state.
     *  - \b UserOutput0 (Display string: 'User Output 0'): The chosen User Output bit state as defined by its current UserOutputValue.
     *  - \b UserOutput1 (Display string: 'User Output 1'): The chosen User Output bit state as defined by its current UserOutputValue.
     *  - \b UserOutput2 (Display string: 'User Output 2'): The chosen User Output bit state as defined by its current UserOutputValue.
     *  - \b UserOutput\#3\# (Display string: 'User Output \#3\#'): The chosen User Output bit state as defined by its current UserOutputValue.
     *  - \b Stream0TransferActive (Display string: 'Stream 0 Transfer Active'): Transfer on the stream is active.
     *  - \b Stream1TransferActive (Display string: 'Stream 1 Transfer Active'): Transfer on the stream is active.
     *  - \b Stream\#2\#TransferActive (Display string: 'Stream \#2\# Transfer Active'): Transfer on the stream is active.
     *  - \b Stream0TransferPaused (Display string: 'Stream 0 Transfer Paused'): Transfer on the stream is paused.
     *  - \b Stream1TransferPaused (Display string: 'Stream 1 Transfer Paused'): Transfer on the stream is paused.
     *  - \b Stream\#2\#TransferPaused (Display string: 'Stream \#2\# Transfer Paused'): Transfer on the stream is paused.
     *  - \b Stream0TransferStopping (Display string: 'Stream 0 Transfer Stopping'): Transfer on the stream is stopping.
     *  - \b Stream1TransferStopping (Display string: 'Stream 1 Transfer Stopping'): Transfer on the stream is stopping.
     *  - \b Stream\#2\#TransferStopping (Display string: 'Stream \#2\# Transfer Stopping'): Transfer on the stream is stopping.
     *  - \b Stream0TransferStopped (Display string: 'Stream 0 Transfer Stopped'): Transfer on the stream is stopped.
     *  - \b Stream1TransferStopped (Display string: 'Stream 1 Transfer Stopped'): Transfer on the stream is stopped.
     *  - \b Stream\#2\#TransferStopped (Display string: 'Stream \#2\# Transfer Stopped'): Transfer on the stream is stopped.
     *  - \b Stream0TransferOverflow (Display string: 'Stream 0 Transfer Overflow'): Transfer on the stream is in overflow.
     *  - \b Stream1TransferOverflow (Display string: 'Stream 1 Transfer Overflow'): Transfer on the stream is in overflow.
     *  - \b Stream\#2\#TransferOverflow (Display string: 'Stream \#2\# Transfer Overflow'): Transfer on the stream is in overflow.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 logicBlockInputSource;
    /// \brief A boolean property. Selects if the selected Logic Block Input source signal is inverted.
    /**
     *  Selects if the selected Logic Block Input source signal is inverted. This feature is not available when the LogicBlockInputSource is set to True or False.
     */
    PropertyIBoolean logicBlockInputInverter;
    /// \brief An integer property. Controls the index of the truth table to access in the selected LUT.
    /**
     *  Controls the index of the truth table to access in the selected LUT.
     */
    PropertyI64 logicBlockLUTIndex;
    /// \brief A boolean property. Read or Write the Value associated with the entry at index LogicBlockLUTIndex of the selected LUT.
    /**
     *  Read or Write the Value associated with the entry at index LogicBlockLUTIndex of the selected LUT.
     */
    PropertyIBoolean logicBlockLUTValue;
    /// \brief An integer property. Sets the values of all the output bits of the selected LUT in one access ignoring LogicBlockLUTIndex.
    /**
     *  Sets the values of all the output bits of the selected LUT in one access ignoring LogicBlockLUTIndex. LogicBlockLUTValueAll value can be any binary number and each bit correspond to the output value for the corresponding index (i.e. Bit 0 = LUT Index 0 output binary value).
     */
    PropertyI64 logicBlockLUTValueAll;
    /// \brief An enumerated integer property. Selects which of the two LUTs to configure when the selected Logic Block is a Latched dual LUTs (i.e: LogicalBlockFunction = LatchedLUT).
    /**
     *  Selects which of the two LUTs to configure when the selected Logic Block is a Latched dual LUTs (i.e: LogicalBlockFunction = LatchedLUT).
     *
     *  The following string values might be valid for this feature:
     *  - \b Value (Display string: 'Value'): Selects the LUT controlling the data input of the flip-flop.
     *  - \b Enable (Display string: 'Enable'): Selects the LUT controlling the enable input of the flip-flop.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 logicBlockLUTSelector;
    // *INDENT-OFF*
    PYTHON_OR_JAVA_ONLY( %mutable; )
    // *INDENT-ON*
};

//-----------------------------------------------------------------------------
/// \brief Category that contains the Software Signal Control features.
/**
 *  A category that contains the Software Signal Control features.
 * \ingroup GenICamInterfaceDevice
 */
class SoftwareSignalControl
//-----------------------------------------------------------------------------
{
public:
    /// \brief Constructs a new <b>mvIMPACT::acquire::GenICam::SoftwareSignalControl</b> object.
    explicit SoftwareSignalControl(
        /// [in] A pointer to a <b>mvIMPACT::acquire::Device</b> object obtained from a <b>mvIMPACT::acquire::DeviceManager</b> object.
        mvIMPACT::acquire::Device* pDev,
        /// [in] The name of the driver internal setting to access with this instance.
        /// A list of valid setting names can be obtained by a call to
        /// <b>mvIMPACT::acquire::FunctionInterface::getAvailableSettings</b>, new
        /// settings can be created with the function
        /// <b>mvIMPACT::acquire::FunctionInterface::createSetting</b>
        const std::string& settingName = "Base" ) :
        softwareSignalSelector(),
        softwareSignalPulse()
    {
        pDev->validateInterfaceLayout( dilGenICam );
        mvIMPACT::acquire::DeviceComponentLocator locator( pDev, mvIMPACT::acquire::dltSetting, settingName );
        locator.bindSearchBase( locator.searchbase_id(), "Camera/GenICam" );
        locator.bindComponent( softwareSignalSelector, "SoftwareSignalSelector" );
        locator.bindComponent( softwareSignalPulse, "SoftwareSignalPulse@i" );
    }
    // *INDENT-OFF*
    PYTHON_OR_JAVA_ONLY( %immutable; )
    // *INDENT-ON*
    /// \brief An enumerated integer property. Selects which Software Signal features to control.
    /**
     *  Selects which Software Signal features to control.
     *
     *  The following string values might be valid for this feature:
     *  - \b SoftwareSignal0 (Display string: 'Software Signal 0'): Selects the software generated signal to control.
     *  - \b SoftwareSignal1 (Display string: 'Software Signal 1'): Selects the software generated signal to control.
     *  - \b SoftwareSignal2 (Display string: 'Software Signal 2'): Selects the software generated signal to control.
     *  - \b SoftwareSignal\#3\# (Display string: 'Software Signal \#3\#'): Selects the software generated signal to control.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 softwareSignalSelector;
    /// \brief A method object. Generates a pulse signal that can be used as a software trigger.
    /**
     *  Generates a pulse signal that can be used as a software trigger. This command can be used to trigger other modules that accept a SoftwareSignal as trigger source.
     */
    Method softwareSignalPulse;
    // *INDENT-OFF*
    PYTHON_OR_JAVA_ONLY( %mutable; )
    // *INDENT-ON*
};

//-----------------------------------------------------------------------------
/// \brief Category that contains the Action control features.
/**
 *  A category that contains the Action control features.
 * \ingroup GenICamInterfaceDevice
 */
class ActionControl
//-----------------------------------------------------------------------------
{
public:
    /// \brief Constructs a new <b>mvIMPACT::acquire::GenICam::ActionControl</b> object.
    explicit ActionControl(
        /// [in] A pointer to a <b>mvIMPACT::acquire::Device</b> object obtained from a <b>mvIMPACT::acquire::DeviceManager</b> object.
        mvIMPACT::acquire::Device* pDev,
        /// [in] The name of the driver internal setting to access with this instance.
        /// A list of valid setting names can be obtained by a call to
        /// <b>mvIMPACT::acquire::FunctionInterface::getAvailableSettings</b>, new
        /// settings can be created with the function
        /// <b>mvIMPACT::acquire::FunctionInterface::createSetting</b>
        const std::string& settingName = "Base" ) :
        actionUnconditionalMode(),
        actionDeviceKey(),
        actionQueueSize(),
        actionSelector(),
        actionGroupMask(),
        actionGroupKey()
    {
        pDev->validateInterfaceLayout( dilGenICam );
        mvIMPACT::acquire::DeviceComponentLocator locator( pDev, mvIMPACT::acquire::dltSetting, settingName );
        locator.bindSearchBase( locator.searchbase_id(), "Camera/GenICam" );
        locator.bindComponent( actionUnconditionalMode, "ActionUnconditionalMode" );
        locator.bindComponent( actionDeviceKey, "ActionDeviceKey" );
        locator.bindComponent( actionQueueSize, "ActionQueueSize" );
        locator.bindComponent( actionSelector, "ActionSelector" );
        locator.bindComponent( actionGroupMask, "ActionGroupMask" );
        locator.bindComponent( actionGroupKey, "ActionGroupKey" );
    }
    // *INDENT-OFF*
    PYTHON_OR_JAVA_ONLY( %immutable; )
    // *INDENT-ON*
    /// \brief An enumerated integer property. Enables the unconditional action command mode where action commands are processed even when the primary control channel is closed.
    /**
     *  Enables the unconditional action command mode where action commands are processed even when the primary control channel is closed.
     *
     *  The following string values might be valid for this feature:
     *  - \b Off (Display string: 'Off'): Unconditional mode is disabled.
     *  - \b On (Display string: 'On'): Unconditional mode is enabled.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 actionUnconditionalMode;
    /// \brief An integer property. Provides the device key that allows the device to check the validity of action commands.
    /**
     *  Provides the device key that allows the device to check the validity of action commands. The device internal assertion of an action signal is only authorized if the ActionDeviceKey and the action device key value in the protocol message are equal.
     */
    PropertyI64 actionDeviceKey;
    /// \brief An integer property. Indicates the size of the scheduled action commands queue.
    /**
     *  Indicates the size of the scheduled action commands queue. This number represents the maximum number of scheduled action commands that can be pending at a given point in time.
     */
    PropertyI64 actionQueueSize;
    /// \brief An integer property. Selects to which Action Signal further Action settings apply.
    /**
     *  Selects to which Action Signal further Action settings apply.
     */
    PropertyI64 actionSelector;
    /// \brief An integer property. Provides the mask that the device will use to validate the action on reception of the action protocol message.
    /**
     *  Provides the mask that the device will use to validate the action on reception of the action protocol message.
     */
    PropertyI64 actionGroupMask;
    /// \brief An integer property. Provides the key that the device will use to validate the action on reception of the action protocol message.
    /**
     *  Provides the key that the device will use to validate the action on reception of the action protocol message.
     */
    PropertyI64 actionGroupKey;
    // *INDENT-OFF*
    PYTHON_OR_JAVA_ONLY( %mutable; )
    // *INDENT-ON*
};

//-----------------------------------------------------------------------------
/// \brief Category that contains Event control features.
/**
 *  A category that contains Event control features.
 * \ingroup GenICamInterfaceDevice
 */
class EventControl
//-----------------------------------------------------------------------------
{
public:
    /// \brief Constructs a new <b>mvIMPACT::acquire::GenICam::EventControl</b> object.
    explicit EventControl(
        /// [in] A pointer to a <b>mvIMPACT::acquire::Device</b> object obtained from a <b>mvIMPACT::acquire::DeviceManager</b> object.
        mvIMPACT::acquire::Device* pDev,
        /// [in] The name of the driver internal setting to access with this instance.
        /// A list of valid setting names can be obtained by a call to
        /// <b>mvIMPACT::acquire::FunctionInterface::getAvailableSettings</b>, new
        /// settings can be created with the function
        /// <b>mvIMPACT::acquire::FunctionInterface::createSetting</b>
        const std::string& settingName = "Base" ) :
        eventSelector(),
        eventNotification(),
        eventAcquisitionTrigger(),
        eventAcquisitionTriggerTimestamp(),
        eventAcquisitionTriggerFrameID(),
        eventAcquisitionTriggerMissed(),
        eventAcquisitionTriggerMissedTimestamp(),
        eventAcquisitionTriggerMissedFrameID(),
        eventAcquisitionStart(),
        eventAcquisitionStartTimestamp(),
        eventAcquisitionStartFrameID(),
        eventAcquisitionEnd(),
        eventAcquisitionEndTimestamp(),
        eventAcquisitionEndFrameID(),
        eventAcquisitionTransferStart(),
        eventAcquisitionTransferStartTimestamp(),
        eventAcquisitionTransferStartFrameID(),
        eventAcquisitionTransferEnd(),
        eventAcquisitionTransferEndTimestamp(),
        eventAcquisitionTransferEndFrameID(),
        eventAcquisitionError(),
        eventAcquisitionErrorTimestamp(),
        eventAcquisitionErrorFrameID(),
        eventFrameBurstStart(),
        eventFrameBurstStartTimestamp(),
        eventFrameBurstStartFrameID(),
        eventFrameBurstEnd(),
        eventFrameBurstEndTimestamp(),
        eventFrameBurstEndFrameID(),
        eventFrameTrigger(),
        eventFrameTriggerTimestamp(),
        eventFrameTriggerFrameID(),
        eventFrameTriggerMissed(),
        eventFrameTriggerMissedTimestamp(),
        eventFrameTriggerMissedFrameID(),
        eventFrameStart(),
        eventFrameStartTimestamp(),
        eventFrameStartFrameID(),
        eventFrameEnd(),
        eventFrameEndTimestamp(),
        eventFrameEndFrameID(),
        eventFrameTransferStart(),
        eventFrameTransferStartTimestamp(),
        eventFrameTransferStartFrameID(),
        eventFrameTransferEnd(),
        eventFrameTransferEndTimestamp(),
        eventFrameTransferEndFrameID(),
        eventLineTrigger(),
        eventLineTriggerTimestamp(),
        eventLineTriggerFrameID(),
        eventLineTriggerMissed(),
        eventLineTriggerMissedTimestamp(),
        eventLineTriggerMissedFrameID(),
        eventLineStart(),
        eventLineStartTimestamp(),
        eventLineStartFrameID(),
        eventLineEnd(),
        eventLineEndTimestamp(),
        eventLineEndFrameID(),
        eventExposureStart(),
        eventExposureStartTimestamp(),
        eventExposureStartFrameID(),
        eventExposureEnd(),
        eventExposureEndTimestamp(),
        eventExposureEndFrameID(),
        eventActionLate(),
        eventActionLateTimestamp(),
        eventActionLateFrameID(),
        eventPrimaryApplicationSwitch(),
        eventPrimaryApplicationSwitchTimestamp(),
        eventPrimaryApplicationSwitchFrameID(),
        eventTest(),
        eventTestTimestamp(),
        eventCounter0Start(),
        eventCounter0StartTimestamp(),
        eventCounter0StartFrameID(),
        eventCounter1Start(),
        eventCounter1StartTimestamp(),
        eventCounter1StartFrameID(),
        eventCounter2Start(),
        eventCounter2StartTimestamp(),
        eventCounter2StartFrameID(),
        eventCounter3Start(),
        eventCounter3StartTimestamp(),
        eventCounter3StartFrameID(),
        eventCounter4Start(),
        eventCounter4StartTimestamp(),
        eventCounter4StartFrameID(),
        eventCounter5Start(),
        eventCounter5StartTimestamp(),
        eventCounter5StartFrameID(),
        eventCounter6Start(),
        eventCounter6StartTimestamp(),
        eventCounter6StartFrameID(),
        eventCounter7Start(),
        eventCounter7StartTimestamp(),
        eventCounter7StartFrameID(),
        eventCounter8Start(),
        eventCounter8StartTimestamp(),
        eventCounter8StartFrameID(),
        eventCounter9Start(),
        eventCounter9StartTimestamp(),
        eventCounter9StartFrameID(),
        eventCounter10Start(),
        eventCounter10StartTimestamp(),
        eventCounter10StartFrameID(),
        eventCounter11Start(),
        eventCounter11StartTimestamp(),
        eventCounter11StartFrameID(),
        eventCounter12Start(),
        eventCounter12StartTimestamp(),
        eventCounter12StartFrameID(),
        eventCounter13Start(),
        eventCounter13StartTimestamp(),
        eventCounter13StartFrameID(),
        eventCounter14Start(),
        eventCounter14StartTimestamp(),
        eventCounter14StartFrameID(),
        eventCounter0End(),
        eventCounter0EndTimestamp(),
        eventCounter0EndFrameID(),
        eventCounter1End(),
        eventCounter1EndTimestamp(),
        eventCounter1EndFrameID(),
        eventCounter2End(),
        eventCounter2EndTimestamp(),
        eventCounter2EndFrameID(),
        eventCounter3End(),
        eventCounter3EndTimestamp(),
        eventCounter3EndFrameID(),
        eventCounter4End(),
        eventCounter4EndTimestamp(),
        eventCounter4EndFrameID(),
        eventCounter5End(),
        eventCounter5EndTimestamp(),
        eventCounter5EndFrameID(),
        eventCounter6End(),
        eventCounter6EndTimestamp(),
        eventCounter6EndFrameID(),
        eventCounter7End(),
        eventCounter7EndTimestamp(),
        eventCounter7EndFrameID(),
        eventCounter8End(),
        eventCounter8EndTimestamp(),
        eventCounter8EndFrameID(),
        eventCounter9End(),
        eventCounter9EndTimestamp(),
        eventCounter9EndFrameID(),
        eventCounter10End(),
        eventCounter10EndTimestamp(),
        eventCounter10EndFrameID(),
        eventCounter11End(),
        eventCounter11EndTimestamp(),
        eventCounter11EndFrameID(),
        eventCounter12End(),
        eventCounter12EndTimestamp(),
        eventCounter12EndFrameID(),
        eventCounter13End(),
        eventCounter13EndTimestamp(),
        eventCounter13EndFrameID(),
        eventCounter14End(),
        eventCounter14EndTimestamp(),
        eventCounter14EndFrameID(),
        eventTimer0Start(),
        eventTimer0StartTimestamp(),
        eventTimer0StartFrameID(),
        eventTimer1Start(),
        eventTimer1StartTimestamp(),
        eventTimer1StartFrameID(),
        eventTimer2Start(),
        eventTimer2StartTimestamp(),
        eventTimer2StartFrameID(),
        eventTimer3Start(),
        eventTimer3StartTimestamp(),
        eventTimer3StartFrameID(),
        eventTimer4Start(),
        eventTimer4StartTimestamp(),
        eventTimer4StartFrameID(),
        eventTimer5Start(),
        eventTimer5StartTimestamp(),
        eventTimer5StartFrameID(),
        eventTimer6Start(),
        eventTimer6StartTimestamp(),
        eventTimer6StartFrameID(),
        eventTimer7Start(),
        eventTimer7StartTimestamp(),
        eventTimer7StartFrameID(),
        eventTimer8Start(),
        eventTimer8StartTimestamp(),
        eventTimer8StartFrameID(),
        eventTimer9Start(),
        eventTimer9StartTimestamp(),
        eventTimer9StartFrameID(),
        eventTimer10Start(),
        eventTimer10StartTimestamp(),
        eventTimer10StartFrameID(),
        eventTimer11Start(),
        eventTimer11StartTimestamp(),
        eventTimer11StartFrameID(),
        eventTimer12Start(),
        eventTimer12StartTimestamp(),
        eventTimer12StartFrameID(),
        eventTimer13Start(),
        eventTimer13StartTimestamp(),
        eventTimer13StartFrameID(),
        eventTimer14Start(),
        eventTimer14StartTimestamp(),
        eventTimer14StartFrameID(),
        eventTimer0End(),
        eventTimer0EndTimestamp(),
        eventTimer0EndFrameID(),
        eventTimer1End(),
        eventTimer1EndTimestamp(),
        eventTimer1EndFrameID(),
        eventTimer2End(),
        eventTimer2EndTimestamp(),
        eventTimer2EndFrameID(),
        eventTimer3End(),
        eventTimer3EndTimestamp(),
        eventTimer3EndFrameID(),
        eventTimer4End(),
        eventTimer4EndTimestamp(),
        eventTimer4EndFrameID(),
        eventTimer5End(),
        eventTimer5EndTimestamp(),
        eventTimer5EndFrameID(),
        eventTimer6End(),
        eventTimer6EndTimestamp(),
        eventTimer6EndFrameID(),
        eventTimer7End(),
        eventTimer7EndTimestamp(),
        eventTimer7EndFrameID(),
        eventTimer8End(),
        eventTimer8EndTimestamp(),
        eventTimer8EndFrameID(),
        eventTimer9End(),
        eventTimer9EndTimestamp(),
        eventTimer9EndFrameID(),
        eventTimer10End(),
        eventTimer10EndTimestamp(),
        eventTimer10EndFrameID(),
        eventTimer11End(),
        eventTimer11EndTimestamp(),
        eventTimer11EndFrameID(),
        eventTimer12End(),
        eventTimer12EndTimestamp(),
        eventTimer12EndFrameID(),
        eventTimer13End(),
        eventTimer13EndTimestamp(),
        eventTimer13EndFrameID(),
        eventTimer14End(),
        eventTimer14EndTimestamp(),
        eventTimer14EndFrameID(),
        eventEncoder0Stopped(),
        eventEncoder0StoppedTimestamp(),
        eventEncoder0StoppedFrameID(),
        eventEncoder1Stopped(),
        eventEncoder1StoppedTimestamp(),
        eventEncoder1StoppedFrameID(),
        eventEncoder2Stopped(),
        eventEncoder2StoppedTimestamp(),
        eventEncoder2StoppedFrameID(),
        eventEncoder3Stopped(),
        eventEncoder3StoppedTimestamp(),
        eventEncoder3StoppedFrameID(),
        eventEncoder4Stopped(),
        eventEncoder4StoppedTimestamp(),
        eventEncoder4StoppedFrameID(),
        eventEncoder5Stopped(),
        eventEncoder5StoppedTimestamp(),
        eventEncoder5StoppedFrameID(),
        eventEncoder6Stopped(),
        eventEncoder6StoppedTimestamp(),
        eventEncoder6StoppedFrameID(),
        eventEncoder7Stopped(),
        eventEncoder7StoppedTimestamp(),
        eventEncoder7StoppedFrameID(),
        eventEncoder8Stopped(),
        eventEncoder8StoppedTimestamp(),
        eventEncoder8StoppedFrameID(),
        eventEncoder9Stopped(),
        eventEncoder9StoppedTimestamp(),
        eventEncoder9StoppedFrameID(),
        eventEncoder10Stopped(),
        eventEncoder10StoppedTimestamp(),
        eventEncoder10StoppedFrameID(),
        eventEncoder11Stopped(),
        eventEncoder11StoppedTimestamp(),
        eventEncoder11StoppedFrameID(),
        eventEncoder12Stopped(),
        eventEncoder12StoppedTimestamp(),
        eventEncoder12StoppedFrameID(),
        eventEncoder13Stopped(),
        eventEncoder13StoppedTimestamp(),
        eventEncoder13StoppedFrameID(),
        eventEncoder14Stopped(),
        eventEncoder14StoppedTimestamp(),
        eventEncoder14StoppedFrameID(),
        eventEncoder0Restarted(),
        eventEncoder0RestartedTimestamp(),
        eventEncoder0RestartedFrameID(),
        eventEncoder1Restarted(),
        eventEncoder1RestartedTimestamp(),
        eventEncoder1RestartedFrameID(),
        eventEncoder2Restarted(),
        eventEncoder2RestartedTimestamp(),
        eventEncoder2RestartedFrameID(),
        eventEncoder3Restarted(),
        eventEncoder3RestartedTimestamp(),
        eventEncoder3RestartedFrameID(),
        eventEncoder4Restarted(),
        eventEncoder4RestartedTimestamp(),
        eventEncoder4RestartedFrameID(),
        eventEncoder5Restarted(),
        eventEncoder5RestartedTimestamp(),
        eventEncoder5RestartedFrameID(),
        eventEncoder6Restarted(),
        eventEncoder6RestartedTimestamp(),
        eventEncoder6RestartedFrameID(),
        eventEncoder7Restarted(),
        eventEncoder7RestartedTimestamp(),
        eventEncoder7RestartedFrameID(),
        eventEncoder8Restarted(),
        eventEncoder8RestartedTimestamp(),
        eventEncoder8RestartedFrameID(),
        eventEncoder9Restarted(),
        eventEncoder9RestartedTimestamp(),
        eventEncoder9RestartedFrameID(),
        eventEncoder10Restarted(),
        eventEncoder10RestartedTimestamp(),
        eventEncoder10RestartedFrameID(),
        eventEncoder11Restarted(),
        eventEncoder11RestartedTimestamp(),
        eventEncoder11RestartedFrameID(),
        eventEncoder12Restarted(),
        eventEncoder12RestartedTimestamp(),
        eventEncoder12RestartedFrameID(),
        eventEncoder13Restarted(),
        eventEncoder13RestartedTimestamp(),
        eventEncoder13RestartedFrameID(),
        eventEncoder14Restarted(),
        eventEncoder14RestartedTimestamp(),
        eventEncoder14RestartedFrameID(),
        eventLine0RisingEdge(),
        eventLine0RisingEdgeTimestamp(),
        eventLine0RisingEdgeFrameID(),
        eventLine1RisingEdge(),
        eventLine1RisingEdgeTimestamp(),
        eventLine1RisingEdgeFrameID(),
        eventLine2RisingEdge(),
        eventLine2RisingEdgeTimestamp(),
        eventLine2RisingEdgeFrameID(),
        eventLine3RisingEdge(),
        eventLine3RisingEdgeTimestamp(),
        eventLine3RisingEdgeFrameID(),
        eventLine4RisingEdge(),
        eventLine4RisingEdgeTimestamp(),
        eventLine4RisingEdgeFrameID(),
        eventLine5RisingEdge(),
        eventLine5RisingEdgeTimestamp(),
        eventLine5RisingEdgeFrameID(),
        eventLine6RisingEdge(),
        eventLine6RisingEdgeTimestamp(),
        eventLine6RisingEdgeFrameID(),
        eventLine7RisingEdge(),
        eventLine7RisingEdgeTimestamp(),
        eventLine7RisingEdgeFrameID(),
        eventLine8RisingEdge(),
        eventLine8RisingEdgeTimestamp(),
        eventLine8RisingEdgeFrameID(),
        eventLine9RisingEdge(),
        eventLine9RisingEdgeTimestamp(),
        eventLine9RisingEdgeFrameID(),
        eventLine10RisingEdge(),
        eventLine10RisingEdgeTimestamp(),
        eventLine10RisingEdgeFrameID(),
        eventLine11RisingEdge(),
        eventLine11RisingEdgeTimestamp(),
        eventLine11RisingEdgeFrameID(),
        eventLine12RisingEdge(),
        eventLine12RisingEdgeTimestamp(),
        eventLine12RisingEdgeFrameID(),
        eventLine13RisingEdge(),
        eventLine13RisingEdgeTimestamp(),
        eventLine13RisingEdgeFrameID(),
        eventLine14RisingEdge(),
        eventLine14RisingEdgeTimestamp(),
        eventLine14RisingEdgeFrameID(),
        eventLine0FallingEdge(),
        eventLine0FallingEdgeTimestamp(),
        eventLine0FallingEdgeFrameID(),
        eventLine1FallingEdge(),
        eventLine1FallingEdgeTimestamp(),
        eventLine1FallingEdgeFrameID(),
        eventLine2FallingEdge(),
        eventLine2FallingEdgeTimestamp(),
        eventLine2FallingEdgeFrameID(),
        eventLine3FallingEdge(),
        eventLine3FallingEdgeTimestamp(),
        eventLine3FallingEdgeFrameID(),
        eventLine4FallingEdge(),
        eventLine4FallingEdgeTimestamp(),
        eventLine4FallingEdgeFrameID(),
        eventLine5FallingEdge(),
        eventLine5FallingEdgeTimestamp(),
        eventLine5FallingEdgeFrameID(),
        eventLine6FallingEdge(),
        eventLine6FallingEdgeTimestamp(),
        eventLine6FallingEdgeFrameID(),
        eventLine7FallingEdge(),
        eventLine7FallingEdgeTimestamp(),
        eventLine7FallingEdgeFrameID(),
        eventLine8FallingEdge(),
        eventLine8FallingEdgeTimestamp(),
        eventLine8FallingEdgeFrameID(),
        eventLine9FallingEdge(),
        eventLine9FallingEdgeTimestamp(),
        eventLine9FallingEdgeFrameID(),
        eventLine10FallingEdge(),
        eventLine10FallingEdgeTimestamp(),
        eventLine10FallingEdgeFrameID(),
        eventLine11FallingEdge(),
        eventLine11FallingEdgeTimestamp(),
        eventLine11FallingEdgeFrameID(),
        eventLine12FallingEdge(),
        eventLine12FallingEdgeTimestamp(),
        eventLine12FallingEdgeFrameID(),
        eventLine13FallingEdge(),
        eventLine13FallingEdgeTimestamp(),
        eventLine13FallingEdgeFrameID(),
        eventLine14FallingEdge(),
        eventLine14FallingEdgeTimestamp(),
        eventLine14FallingEdgeFrameID(),
        eventLine0AnyEdge(),
        eventLine0AnyEdgeTimestamp(),
        eventLine0AnyEdgeFrameID(),
        eventLine1AnyEdge(),
        eventLine1AnyEdgeTimestamp(),
        eventLine1AnyEdgeFrameID(),
        eventLine2AnyEdge(),
        eventLine2AnyEdgeTimestamp(),
        eventLine2AnyEdgeFrameID(),
        eventLine3AnyEdge(),
        eventLine3AnyEdgeTimestamp(),
        eventLine3AnyEdgeFrameID(),
        eventLine4AnyEdge(),
        eventLine4AnyEdgeTimestamp(),
        eventLine4AnyEdgeFrameID(),
        eventLine5AnyEdge(),
        eventLine5AnyEdgeTimestamp(),
        eventLine5AnyEdgeFrameID(),
        eventLine6AnyEdge(),
        eventLine6AnyEdgeTimestamp(),
        eventLine6AnyEdgeFrameID(),
        eventLine7AnyEdge(),
        eventLine7AnyEdgeTimestamp(),
        eventLine7AnyEdgeFrameID(),
        eventLine8AnyEdge(),
        eventLine8AnyEdgeTimestamp(),
        eventLine8AnyEdgeFrameID(),
        eventLine9AnyEdge(),
        eventLine9AnyEdgeTimestamp(),
        eventLine9AnyEdgeFrameID(),
        eventLine10AnyEdge(),
        eventLine10AnyEdgeTimestamp(),
        eventLine10AnyEdgeFrameID(),
        eventLine11AnyEdge(),
        eventLine11AnyEdgeTimestamp(),
        eventLine11AnyEdgeFrameID(),
        eventLine12AnyEdge(),
        eventLine12AnyEdgeTimestamp(),
        eventLine12AnyEdgeFrameID(),
        eventLine13AnyEdge(),
        eventLine13AnyEdgeTimestamp(),
        eventLine13AnyEdgeFrameID(),
        eventLine14AnyEdge(),
        eventLine14AnyEdgeTimestamp(),
        eventLine14AnyEdgeFrameID(),
        eventLinkTrigger0(),
        eventLinkTrigger0Timestamp(),
        eventLinkTrigger0FrameID(),
        eventLinkTrigger1(),
        eventLinkTrigger1Timestamp(),
        eventLinkTrigger1FrameID(),
        eventLinkTrigger2(),
        eventLinkTrigger2Timestamp(),
        eventLinkTrigger2FrameID(),
        eventLinkTrigger3(),
        eventLinkTrigger3Timestamp(),
        eventLinkTrigger3FrameID(),
        eventLinkTrigger4(),
        eventLinkTrigger4Timestamp(),
        eventLinkTrigger4FrameID(),
        eventLinkTrigger5(),
        eventLinkTrigger5Timestamp(),
        eventLinkTrigger5FrameID(),
        eventLinkTrigger6(),
        eventLinkTrigger6Timestamp(),
        eventLinkTrigger6FrameID(),
        eventLinkTrigger7(),
        eventLinkTrigger7Timestamp(),
        eventLinkTrigger7FrameID(),
        eventLinkTrigger8(),
        eventLinkTrigger8Timestamp(),
        eventLinkTrigger8FrameID(),
        eventLinkTrigger9(),
        eventLinkTrigger9Timestamp(),
        eventLinkTrigger9FrameID(),
        eventLinkTrigger10(),
        eventLinkTrigger10Timestamp(),
        eventLinkTrigger10FrameID(),
        eventLinkTrigger11(),
        eventLinkTrigger11Timestamp(),
        eventLinkTrigger11FrameID(),
        eventLinkTrigger12(),
        eventLinkTrigger12Timestamp(),
        eventLinkTrigger12FrameID(),
        eventLinkTrigger13(),
        eventLinkTrigger13Timestamp(),
        eventLinkTrigger13FrameID(),
        eventLinkTrigger14(),
        eventLinkTrigger14Timestamp(),
        eventLinkTrigger14FrameID(),
        eventError(),
        eventErrorTimestamp(),
        eventErrorFrameID(),
        eventErrorCode()
    {
        pDev->validateInterfaceLayout( dilGenICam );
        mvIMPACT::acquire::DeviceComponentLocator locator( pDev, mvIMPACT::acquire::dltSetting, settingName );
        locator.bindSearchBase( locator.searchbase_id(), "Camera/GenICam" );
        locator.bindComponent( eventSelector, "EventSelector" );
        locator.bindComponent( eventNotification, "EventNotification" );
        locator.bindComponent( eventAcquisitionTrigger, "EventAcquisitionTrigger" );
        locator.bindComponent( eventAcquisitionTriggerTimestamp, "EventAcquisitionTriggerTimestamp" );
        locator.bindComponent( eventAcquisitionTriggerFrameID, "EventAcquisitionTriggerFrameID" );
        locator.bindComponent( eventAcquisitionTriggerMissed, "EventAcquisitionTriggerMissed" );
        locator.bindComponent( eventAcquisitionTriggerMissedTimestamp, "EventAcquisitionTriggerMissedTimestamp" );
        locator.bindComponent( eventAcquisitionTriggerMissedFrameID, "EventAcquisitionTriggerMissedFrameID" );
        locator.bindComponent( eventAcquisitionStart, "EventAcquisitionStart" );
        locator.bindComponent( eventAcquisitionStartTimestamp, "EventAcquisitionStartTimestamp" );
        locator.bindComponent( eventAcquisitionStartFrameID, "EventAcquisitionStartFrameID" );
        locator.bindComponent( eventAcquisitionEnd, "EventAcquisitionEnd" );
        locator.bindComponent( eventAcquisitionEndTimestamp, "EventAcquisitionEndTimestamp" );
        locator.bindComponent( eventAcquisitionEndFrameID, "EventAcquisitionEndFrameID" );
        locator.bindComponent( eventAcquisitionTransferStart, "EventAcquisitionTransferStart" );
        locator.bindComponent( eventAcquisitionTransferStartTimestamp, "EventAcquisitionTransferStartTimestamp" );
        locator.bindComponent( eventAcquisitionTransferStartFrameID, "EventAcquisitionTransferStartFrameID" );
        locator.bindComponent( eventAcquisitionTransferEnd, "EventAcquisitionTransferEnd" );
        locator.bindComponent( eventAcquisitionTransferEndTimestamp, "EventAcquisitionTransferEndTimestamp" );
        locator.bindComponent( eventAcquisitionTransferEndFrameID, "EventAcquisitionTransferEndFrameID" );
        locator.bindComponent( eventAcquisitionError, "EventAcquisitionError" );
        locator.bindComponent( eventAcquisitionErrorTimestamp, "EventAcquisitionErrorTimestamp" );
        locator.bindComponent( eventAcquisitionErrorFrameID, "EventAcquisitionErrorFrameID" );
        locator.bindComponent( eventFrameBurstStart, "EventFrameBurstStart" );
        locator.bindComponent( eventFrameBurstStartTimestamp, "EventFrameBurstStartTimestamp" );
        locator.bindComponent( eventFrameBurstStartFrameID, "EventFrameBurstStartFrameID" );
        locator.bindComponent( eventFrameBurstEnd, "EventFrameBurstEnd" );
        locator.bindComponent( eventFrameBurstEndTimestamp, "EventFrameBurstEndTimestamp" );
        locator.bindComponent( eventFrameBurstEndFrameID, "EventFrameBurstEndFrameID" );
        locator.bindComponent( eventFrameTrigger, "EventFrameTrigger" );
        locator.bindComponent( eventFrameTriggerTimestamp, "EventFrameTriggerTimestamp" );
        locator.bindComponent( eventFrameTriggerFrameID, "EventFrameTriggerFrameID" );
        locator.bindComponent( eventFrameTriggerMissed, "EventFrameTriggerMissed" );
        locator.bindComponent( eventFrameTriggerMissedTimestamp, "EventFrameTriggerMissedTimestamp" );
        locator.bindComponent( eventFrameTriggerMissedFrameID, "EventFrameTriggerMissedFrameID" );
        locator.bindComponent( eventFrameStart, "EventFrameStart" );
        locator.bindComponent( eventFrameStartTimestamp, "EventFrameStartTimestamp" );
        locator.bindComponent( eventFrameStartFrameID, "EventFrameStartFrameID" );
        locator.bindComponent( eventFrameEnd, "EventFrameEnd" );
        locator.bindComponent( eventFrameEndTimestamp, "EventFrameEndTimestamp" );
        locator.bindComponent( eventFrameEndFrameID, "EventFrameEndFrameID" );
        locator.bindComponent( eventFrameTransferStart, "EventFrameTransferStart" );
        locator.bindComponent( eventFrameTransferStartTimestamp, "EventFrameTransferStartTimestamp" );
        locator.bindComponent( eventFrameTransferStartFrameID, "EventFrameTransferStartFrameID" );
        locator.bindComponent( eventFrameTransferEnd, "EventFrameTransferEnd" );
        locator.bindComponent( eventFrameTransferEndTimestamp, "EventFrameTransferEndTimestamp" );
        locator.bindComponent( eventFrameTransferEndFrameID, "EventFrameTransferEndFrameID" );
        locator.bindComponent( eventLineTrigger, "EventLineTrigger" );
        locator.bindComponent( eventLineTriggerTimestamp, "EventLineTriggerTimestamp" );
        locator.bindComponent( eventLineTriggerFrameID, "EventLineTriggerFrameID" );
        locator.bindComponent( eventLineTriggerMissed, "EventLineTriggerMissed" );
        locator.bindComponent( eventLineTriggerMissedTimestamp, "EventLineTriggerMissedTimestamp" );
        locator.bindComponent( eventLineTriggerMissedFrameID, "EventLineTriggerMissedFrameID" );
        locator.bindComponent( eventLineStart, "EventLineStart" );
        locator.bindComponent( eventLineStartTimestamp, "EventLineStartTimestamp" );
        locator.bindComponent( eventLineStartFrameID, "EventLineStartFrameID" );
        locator.bindComponent( eventLineEnd, "EventLineEnd" );
        locator.bindComponent( eventLineEndTimestamp, "EventLineEndTimestamp" );
        locator.bindComponent( eventLineEndFrameID, "EventLineEndFrameID" );
        locator.bindComponent( eventExposureStart, "EventExposureStart" );
        locator.bindComponent( eventExposureStartTimestamp, "EventExposureStartTimestamp" );
        locator.bindComponent( eventExposureStartFrameID, "EventExposureStartFrameID" );
        locator.bindComponent( eventExposureEnd, "EventExposureEnd" );
        locator.bindComponent( eventExposureEndTimestamp, "EventExposureEndTimestamp" );
        locator.bindComponent( eventExposureEndFrameID, "EventExposureEndFrameID" );
        locator.bindComponent( eventActionLate, "EventActionLate" );
        locator.bindComponent( eventActionLateTimestamp, "EventActionLateTimestamp" );
        locator.bindComponent( eventActionLateFrameID, "EventActionLateFrameID" );
        locator.bindComponent( eventPrimaryApplicationSwitch, "EventPrimaryApplicationSwitch" );
        locator.bindComponent( eventPrimaryApplicationSwitchTimestamp, "EventPrimaryApplicationSwitchTimestamp" );
        locator.bindComponent( eventPrimaryApplicationSwitchFrameID, "EventPrimaryApplicationSwitchFrameID" );
        locator.bindComponent( eventTest, "EventTest" );
        locator.bindComponent( eventTestTimestamp, "EventTestTimestamp" );
        locator.bindComponent( eventCounter0Start, "EventCounter0Start" );
        locator.bindComponent( eventCounter0StartTimestamp, "EventCounter0StartTimestamp" );
        locator.bindComponent( eventCounter0StartFrameID, "EventCounter0StartFrameID" );
        locator.bindComponent( eventCounter1Start, "EventCounter1Start" );
        locator.bindComponent( eventCounter1StartTimestamp, "EventCounter1StartTimestamp" );
        locator.bindComponent( eventCounter1StartFrameID, "EventCounter1StartFrameID" );
        locator.bindComponent( eventCounter2Start, "EventCounter2Start" );
        locator.bindComponent( eventCounter2StartTimestamp, "EventCounter2StartTimestamp" );
        locator.bindComponent( eventCounter2StartFrameID, "EventCounter2StartFrameID" );
        locator.bindComponent( eventCounter3Start, "EventCounter3Start" );
        locator.bindComponent( eventCounter3StartTimestamp, "EventCounter3StartTimestamp" );
        locator.bindComponent( eventCounter3StartFrameID, "EventCounter3StartFrameID" );
        locator.bindComponent( eventCounter4Start, "EventCounter4Start" );
        locator.bindComponent( eventCounter4StartTimestamp, "EventCounter4StartTimestamp" );
        locator.bindComponent( eventCounter4StartFrameID, "EventCounter4StartFrameID" );
        locator.bindComponent( eventCounter5Start, "EventCounter5Start" );
        locator.bindComponent( eventCounter5StartTimestamp, "EventCounter5StartTimestamp" );
        locator.bindComponent( eventCounter5StartFrameID, "EventCounter5StartFrameID" );
        locator.bindComponent( eventCounter6Start, "EventCounter6Start" );
        locator.bindComponent( eventCounter6StartTimestamp, "EventCounter6StartTimestamp" );
        locator.bindComponent( eventCounter6StartFrameID, "EventCounter6StartFrameID" );
        locator.bindComponent( eventCounter7Start, "EventCounter7Start" );
        locator.bindComponent( eventCounter7StartTimestamp, "EventCounter7StartTimestamp" );
        locator.bindComponent( eventCounter7StartFrameID, "EventCounter7StartFrameID" );
        locator.bindComponent( eventCounter8Start, "EventCounter8Start" );
        locator.bindComponent( eventCounter8StartTimestamp, "EventCounter8StartTimestamp" );
        locator.bindComponent( eventCounter8StartFrameID, "EventCounter8StartFrameID" );
        locator.bindComponent( eventCounter9Start, "EventCounter9Start" );
        locator.bindComponent( eventCounter9StartTimestamp, "EventCounter9StartTimestamp" );
        locator.bindComponent( eventCounter9StartFrameID, "EventCounter9StartFrameID" );
        locator.bindComponent( eventCounter10Start, "EventCounter10Start" );
        locator.bindComponent( eventCounter10StartTimestamp, "EventCounter10StartTimestamp" );
        locator.bindComponent( eventCounter10StartFrameID, "EventCounter10StartFrameID" );
        locator.bindComponent( eventCounter11Start, "EventCounter11Start" );
        locator.bindComponent( eventCounter11StartTimestamp, "EventCounter11StartTimestamp" );
        locator.bindComponent( eventCounter11StartFrameID, "EventCounter11StartFrameID" );
        locator.bindComponent( eventCounter12Start, "EventCounter12Start" );
        locator.bindComponent( eventCounter12StartTimestamp, "EventCounter12StartTimestamp" );
        locator.bindComponent( eventCounter12StartFrameID, "EventCounter12StartFrameID" );
        locator.bindComponent( eventCounter13Start, "EventCounter13Start" );
        locator.bindComponent( eventCounter13StartTimestamp, "EventCounter13StartTimestamp" );
        locator.bindComponent( eventCounter13StartFrameID, "EventCounter13StartFrameID" );
        locator.bindComponent( eventCounter14Start, "EventCounter14Start" );
        locator.bindComponent( eventCounter14StartTimestamp, "EventCounter14StartTimestamp" );
        locator.bindComponent( eventCounter14StartFrameID, "EventCounter14StartFrameID" );
        locator.bindComponent( eventCounter0End, "EventCounter0End" );
        locator.bindComponent( eventCounter0EndTimestamp, "EventCounter0EndTimestamp" );
        locator.bindComponent( eventCounter0EndFrameID, "EventCounter0EndFrameID" );
        locator.bindComponent( eventCounter1End, "EventCounter1End" );
        locator.bindComponent( eventCounter1EndTimestamp, "EventCounter1EndTimestamp" );
        locator.bindComponent( eventCounter1EndFrameID, "EventCounter1EndFrameID" );
        locator.bindComponent( eventCounter2End, "EventCounter2End" );
        locator.bindComponent( eventCounter2EndTimestamp, "EventCounter2EndTimestamp" );
        locator.bindComponent( eventCounter2EndFrameID, "EventCounter2EndFrameID" );
        locator.bindComponent( eventCounter3End, "EventCounter3End" );
        locator.bindComponent( eventCounter3EndTimestamp, "EventCounter3EndTimestamp" );
        locator.bindComponent( eventCounter3EndFrameID, "EventCounter3EndFrameID" );
        locator.bindComponent( eventCounter4End, "EventCounter4End" );
        locator.bindComponent( eventCounter4EndTimestamp, "EventCounter4EndTimestamp" );
        locator.bindComponent( eventCounter4EndFrameID, "EventCounter4EndFrameID" );
        locator.bindComponent( eventCounter5End, "EventCounter5End" );
        locator.bindComponent( eventCounter5EndTimestamp, "EventCounter5EndTimestamp" );
        locator.bindComponent( eventCounter5EndFrameID, "EventCounter5EndFrameID" );
        locator.bindComponent( eventCounter6End, "EventCounter6End" );
        locator.bindComponent( eventCounter6EndTimestamp, "EventCounter6EndTimestamp" );
        locator.bindComponent( eventCounter6EndFrameID, "EventCounter6EndFrameID" );
        locator.bindComponent( eventCounter7End, "EventCounter7End" );
        locator.bindComponent( eventCounter7EndTimestamp, "EventCounter7EndTimestamp" );
        locator.bindComponent( eventCounter7EndFrameID, "EventCounter7EndFrameID" );
        locator.bindComponent( eventCounter8End, "EventCounter8End" );
        locator.bindComponent( eventCounter8EndTimestamp, "EventCounter8EndTimestamp" );
        locator.bindComponent( eventCounter8EndFrameID, "EventCounter8EndFrameID" );
        locator.bindComponent( eventCounter9End, "EventCounter9End" );
        locator.bindComponent( eventCounter9EndTimestamp, "EventCounter9EndTimestamp" );
        locator.bindComponent( eventCounter9EndFrameID, "EventCounter9EndFrameID" );
        locator.bindComponent( eventCounter10End, "EventCounter10End" );
        locator.bindComponent( eventCounter10EndTimestamp, "EventCounter10EndTimestamp" );
        locator.bindComponent( eventCounter10EndFrameID, "EventCounter10EndFrameID" );
        locator.bindComponent( eventCounter11End, "EventCounter11End" );
        locator.bindComponent( eventCounter11EndTimestamp, "EventCounter11EndTimestamp" );
        locator.bindComponent( eventCounter11EndFrameID, "EventCounter11EndFrameID" );
        locator.bindComponent( eventCounter12End, "EventCounter12End" );
        locator.bindComponent( eventCounter12EndTimestamp, "EventCounter12EndTimestamp" );
        locator.bindComponent( eventCounter12EndFrameID, "EventCounter12EndFrameID" );
        locator.bindComponent( eventCounter13End, "EventCounter13End" );
        locator.bindComponent( eventCounter13EndTimestamp, "EventCounter13EndTimestamp" );
        locator.bindComponent( eventCounter13EndFrameID, "EventCounter13EndFrameID" );
        locator.bindComponent( eventCounter14End, "EventCounter14End" );
        locator.bindComponent( eventCounter14EndTimestamp, "EventCounter14EndTimestamp" );
        locator.bindComponent( eventCounter14EndFrameID, "EventCounter14EndFrameID" );
        locator.bindComponent( eventTimer0Start, "EventTimer0Start" );
        locator.bindComponent( eventTimer0StartTimestamp, "EventTimer0StartTimestamp" );
        locator.bindComponent( eventTimer0StartFrameID, "EventTimer0StartFrameID" );
        locator.bindComponent( eventTimer1Start, "EventTimer1Start" );
        locator.bindComponent( eventTimer1StartTimestamp, "EventTimer1StartTimestamp" );
        locator.bindComponent( eventTimer1StartFrameID, "EventTimer1StartFrameID" );
        locator.bindComponent( eventTimer2Start, "EventTimer2Start" );
        locator.bindComponent( eventTimer2StartTimestamp, "EventTimer2StartTimestamp" );
        locator.bindComponent( eventTimer2StartFrameID, "EventTimer2StartFrameID" );
        locator.bindComponent( eventTimer3Start, "EventTimer3Start" );
        locator.bindComponent( eventTimer3StartTimestamp, "EventTimer3StartTimestamp" );
        locator.bindComponent( eventTimer3StartFrameID, "EventTimer3StartFrameID" );
        locator.bindComponent( eventTimer4Start, "EventTimer4Start" );
        locator.bindComponent( eventTimer4StartTimestamp, "EventTimer4StartTimestamp" );
        locator.bindComponent( eventTimer4StartFrameID, "EventTimer4StartFrameID" );
        locator.bindComponent( eventTimer5Start, "EventTimer5Start" );
        locator.bindComponent( eventTimer5StartTimestamp, "EventTimer5StartTimestamp" );
        locator.bindComponent( eventTimer5StartFrameID, "EventTimer5StartFrameID" );
        locator.bindComponent( eventTimer6Start, "EventTimer6Start" );
        locator.bindComponent( eventTimer6StartTimestamp, "EventTimer6StartTimestamp" );
        locator.bindComponent( eventTimer6StartFrameID, "EventTimer6StartFrameID" );
        locator.bindComponent( eventTimer7Start, "EventTimer7Start" );
        locator.bindComponent( eventTimer7StartTimestamp, "EventTimer7StartTimestamp" );
        locator.bindComponent( eventTimer7StartFrameID, "EventTimer7StartFrameID" );
        locator.bindComponent( eventTimer8Start, "EventTimer8Start" );
        locator.bindComponent( eventTimer8StartTimestamp, "EventTimer8StartTimestamp" );
        locator.bindComponent( eventTimer8StartFrameID, "EventTimer8StartFrameID" );
        locator.bindComponent( eventTimer9Start, "EventTimer9Start" );
        locator.bindComponent( eventTimer9StartTimestamp, "EventTimer9StartTimestamp" );
        locator.bindComponent( eventTimer9StartFrameID, "EventTimer9StartFrameID" );
        locator.bindComponent( eventTimer10Start, "EventTimer10Start" );
        locator.bindComponent( eventTimer10StartTimestamp, "EventTimer10StartTimestamp" );
        locator.bindComponent( eventTimer10StartFrameID, "EventTimer10StartFrameID" );
        locator.bindComponent( eventTimer11Start, "EventTimer11Start" );
        locator.bindComponent( eventTimer11StartTimestamp, "EventTimer11StartTimestamp" );
        locator.bindComponent( eventTimer11StartFrameID, "EventTimer11StartFrameID" );
        locator.bindComponent( eventTimer12Start, "EventTimer12Start" );
        locator.bindComponent( eventTimer12StartTimestamp, "EventTimer12StartTimestamp" );
        locator.bindComponent( eventTimer12StartFrameID, "EventTimer12StartFrameID" );
        locator.bindComponent( eventTimer13Start, "EventTimer13Start" );
        locator.bindComponent( eventTimer13StartTimestamp, "EventTimer13StartTimestamp" );
        locator.bindComponent( eventTimer13StartFrameID, "EventTimer13StartFrameID" );
        locator.bindComponent( eventTimer14Start, "EventTimer14Start" );
        locator.bindComponent( eventTimer14StartTimestamp, "EventTimer14StartTimestamp" );
        locator.bindComponent( eventTimer14StartFrameID, "EventTimer14StartFrameID" );
        locator.bindComponent( eventTimer0End, "EventTimer0End" );
        locator.bindComponent( eventTimer0EndTimestamp, "EventTimer0EndTimestamp" );
        locator.bindComponent( eventTimer0EndFrameID, "EventTimer0EndFrameID" );
        locator.bindComponent( eventTimer1End, "EventTimer1End" );
        locator.bindComponent( eventTimer1EndTimestamp, "EventTimer1EndTimestamp" );
        locator.bindComponent( eventTimer1EndFrameID, "EventTimer1EndFrameID" );
        locator.bindComponent( eventTimer2End, "EventTimer2End" );
        locator.bindComponent( eventTimer2EndTimestamp, "EventTimer2EndTimestamp" );
        locator.bindComponent( eventTimer2EndFrameID, "EventTimer2EndFrameID" );
        locator.bindComponent( eventTimer3End, "EventTimer3End" );
        locator.bindComponent( eventTimer3EndTimestamp, "EventTimer3EndTimestamp" );
        locator.bindComponent( eventTimer3EndFrameID, "EventTimer3EndFrameID" );
        locator.bindComponent( eventTimer4End, "EventTimer4End" );
        locator.bindComponent( eventTimer4EndTimestamp, "EventTimer4EndTimestamp" );
        locator.bindComponent( eventTimer4EndFrameID, "EventTimer4EndFrameID" );
        locator.bindComponent( eventTimer5End, "EventTimer5End" );
        locator.bindComponent( eventTimer5EndTimestamp, "EventTimer5EndTimestamp" );
        locator.bindComponent( eventTimer5EndFrameID, "EventTimer5EndFrameID" );
        locator.bindComponent( eventTimer6End, "EventTimer6End" );
        locator.bindComponent( eventTimer6EndTimestamp, "EventTimer6EndTimestamp" );
        locator.bindComponent( eventTimer6EndFrameID, "EventTimer6EndFrameID" );
        locator.bindComponent( eventTimer7End, "EventTimer7End" );
        locator.bindComponent( eventTimer7EndTimestamp, "EventTimer7EndTimestamp" );
        locator.bindComponent( eventTimer7EndFrameID, "EventTimer7EndFrameID" );
        locator.bindComponent( eventTimer8End, "EventTimer8End" );
        locator.bindComponent( eventTimer8EndTimestamp, "EventTimer8EndTimestamp" );
        locator.bindComponent( eventTimer8EndFrameID, "EventTimer8EndFrameID" );
        locator.bindComponent( eventTimer9End, "EventTimer9End" );
        locator.bindComponent( eventTimer9EndTimestamp, "EventTimer9EndTimestamp" );
        locator.bindComponent( eventTimer9EndFrameID, "EventTimer9EndFrameID" );
        locator.bindComponent( eventTimer10End, "EventTimer10End" );
        locator.bindComponent( eventTimer10EndTimestamp, "EventTimer10EndTimestamp" );
        locator.bindComponent( eventTimer10EndFrameID, "EventTimer10EndFrameID" );
        locator.bindComponent( eventTimer11End, "EventTimer11End" );
        locator.bindComponent( eventTimer11EndTimestamp, "EventTimer11EndTimestamp" );
        locator.bindComponent( eventTimer11EndFrameID, "EventTimer11EndFrameID" );
        locator.bindComponent( eventTimer12End, "EventTimer12End" );
        locator.bindComponent( eventTimer12EndTimestamp, "EventTimer12EndTimestamp" );
        locator.bindComponent( eventTimer12EndFrameID, "EventTimer12EndFrameID" );
        locator.bindComponent( eventTimer13End, "EventTimer13End" );
        locator.bindComponent( eventTimer13EndTimestamp, "EventTimer13EndTimestamp" );
        locator.bindComponent( eventTimer13EndFrameID, "EventTimer13EndFrameID" );
        locator.bindComponent( eventTimer14End, "EventTimer14End" );
        locator.bindComponent( eventTimer14EndTimestamp, "EventTimer14EndTimestamp" );
        locator.bindComponent( eventTimer14EndFrameID, "EventTimer14EndFrameID" );
        locator.bindComponent( eventEncoder0Stopped, "EventEncoder0Stopped" );
        locator.bindComponent( eventEncoder0StoppedTimestamp, "EventEncoder0StoppedTimestamp" );
        locator.bindComponent( eventEncoder0StoppedFrameID, "EventEncoder0StoppedFrameID" );
        locator.bindComponent( eventEncoder1Stopped, "EventEncoder1Stopped" );
        locator.bindComponent( eventEncoder1StoppedTimestamp, "EventEncoder1StoppedTimestamp" );
        locator.bindComponent( eventEncoder1StoppedFrameID, "EventEncoder1StoppedFrameID" );
        locator.bindComponent( eventEncoder2Stopped, "EventEncoder2Stopped" );
        locator.bindComponent( eventEncoder2StoppedTimestamp, "EventEncoder2StoppedTimestamp" );
        locator.bindComponent( eventEncoder2StoppedFrameID, "EventEncoder2StoppedFrameID" );
        locator.bindComponent( eventEncoder3Stopped, "EventEncoder3Stopped" );
        locator.bindComponent( eventEncoder3StoppedTimestamp, "EventEncoder3StoppedTimestamp" );
        locator.bindComponent( eventEncoder3StoppedFrameID, "EventEncoder3StoppedFrameID" );
        locator.bindComponent( eventEncoder4Stopped, "EventEncoder4Stopped" );
        locator.bindComponent( eventEncoder4StoppedTimestamp, "EventEncoder4StoppedTimestamp" );
        locator.bindComponent( eventEncoder4StoppedFrameID, "EventEncoder4StoppedFrameID" );
        locator.bindComponent( eventEncoder5Stopped, "EventEncoder5Stopped" );
        locator.bindComponent( eventEncoder5StoppedTimestamp, "EventEncoder5StoppedTimestamp" );
        locator.bindComponent( eventEncoder5StoppedFrameID, "EventEncoder5StoppedFrameID" );
        locator.bindComponent( eventEncoder6Stopped, "EventEncoder6Stopped" );
        locator.bindComponent( eventEncoder6StoppedTimestamp, "EventEncoder6StoppedTimestamp" );
        locator.bindComponent( eventEncoder6StoppedFrameID, "EventEncoder6StoppedFrameID" );
        locator.bindComponent( eventEncoder7Stopped, "EventEncoder7Stopped" );
        locator.bindComponent( eventEncoder7StoppedTimestamp, "EventEncoder7StoppedTimestamp" );
        locator.bindComponent( eventEncoder7StoppedFrameID, "EventEncoder7StoppedFrameID" );
        locator.bindComponent( eventEncoder8Stopped, "EventEncoder8Stopped" );
        locator.bindComponent( eventEncoder8StoppedTimestamp, "EventEncoder8StoppedTimestamp" );
        locator.bindComponent( eventEncoder8StoppedFrameID, "EventEncoder8StoppedFrameID" );
        locator.bindComponent( eventEncoder9Stopped, "EventEncoder9Stopped" );
        locator.bindComponent( eventEncoder9StoppedTimestamp, "EventEncoder9StoppedTimestamp" );
        locator.bindComponent( eventEncoder9StoppedFrameID, "EventEncoder9StoppedFrameID" );
        locator.bindComponent( eventEncoder10Stopped, "EventEncoder10Stopped" );
        locator.bindComponent( eventEncoder10StoppedTimestamp, "EventEncoder10StoppedTimestamp" );
        locator.bindComponent( eventEncoder10StoppedFrameID, "EventEncoder10StoppedFrameID" );
        locator.bindComponent( eventEncoder11Stopped, "EventEncoder11Stopped" );
        locator.bindComponent( eventEncoder11StoppedTimestamp, "EventEncoder11StoppedTimestamp" );
        locator.bindComponent( eventEncoder11StoppedFrameID, "EventEncoder11StoppedFrameID" );
        locator.bindComponent( eventEncoder12Stopped, "EventEncoder12Stopped" );
        locator.bindComponent( eventEncoder12StoppedTimestamp, "EventEncoder12StoppedTimestamp" );
        locator.bindComponent( eventEncoder12StoppedFrameID, "EventEncoder12StoppedFrameID" );
        locator.bindComponent( eventEncoder13Stopped, "EventEncoder13Stopped" );
        locator.bindComponent( eventEncoder13StoppedTimestamp, "EventEncoder13StoppedTimestamp" );
        locator.bindComponent( eventEncoder13StoppedFrameID, "EventEncoder13StoppedFrameID" );
        locator.bindComponent( eventEncoder14Stopped, "EventEncoder14Stopped" );
        locator.bindComponent( eventEncoder14StoppedTimestamp, "EventEncoder14StoppedTimestamp" );
        locator.bindComponent( eventEncoder14StoppedFrameID, "EventEncoder14StoppedFrameID" );
        locator.bindComponent( eventEncoder0Restarted, "EventEncoder0Restarted" );
        locator.bindComponent( eventEncoder0RestartedTimestamp, "EventEncoder0RestartedTimestamp" );
        locator.bindComponent( eventEncoder0RestartedFrameID, "EventEncoder0RestartedFrameID" );
        locator.bindComponent( eventEncoder1Restarted, "EventEncoder1Restarted" );
        locator.bindComponent( eventEncoder1RestartedTimestamp, "EventEncoder1RestartedTimestamp" );
        locator.bindComponent( eventEncoder1RestartedFrameID, "EventEncoder1RestartedFrameID" );
        locator.bindComponent( eventEncoder2Restarted, "EventEncoder2Restarted" );
        locator.bindComponent( eventEncoder2RestartedTimestamp, "EventEncoder2RestartedTimestamp" );
        locator.bindComponent( eventEncoder2RestartedFrameID, "EventEncoder2RestartedFrameID" );
        locator.bindComponent( eventEncoder3Restarted, "EventEncoder3Restarted" );
        locator.bindComponent( eventEncoder3RestartedTimestamp, "EventEncoder3RestartedTimestamp" );
        locator.bindComponent( eventEncoder3RestartedFrameID, "EventEncoder3RestartedFrameID" );
        locator.bindComponent( eventEncoder4Restarted, "EventEncoder4Restarted" );
        locator.bindComponent( eventEncoder4RestartedTimestamp, "EventEncoder4RestartedTimestamp" );
        locator.bindComponent( eventEncoder4RestartedFrameID, "EventEncoder4RestartedFrameID" );
        locator.bindComponent( eventEncoder5Restarted, "EventEncoder5Restarted" );
        locator.bindComponent( eventEncoder5RestartedTimestamp, "EventEncoder5RestartedTimestamp" );
        locator.bindComponent( eventEncoder5RestartedFrameID, "EventEncoder5RestartedFrameID" );
        locator.bindComponent( eventEncoder6Restarted, "EventEncoder6Restarted" );
        locator.bindComponent( eventEncoder6RestartedTimestamp, "EventEncoder6RestartedTimestamp" );
        locator.bindComponent( eventEncoder6RestartedFrameID, "EventEncoder6RestartedFrameID" );
        locator.bindComponent( eventEncoder7Restarted, "EventEncoder7Restarted" );
        locator.bindComponent( eventEncoder7RestartedTimestamp, "EventEncoder7RestartedTimestamp" );
        locator.bindComponent( eventEncoder7RestartedFrameID, "EventEncoder7RestartedFrameID" );
        locator.bindComponent( eventEncoder8Restarted, "EventEncoder8Restarted" );
        locator.bindComponent( eventEncoder8RestartedTimestamp, "EventEncoder8RestartedTimestamp" );
        locator.bindComponent( eventEncoder8RestartedFrameID, "EventEncoder8RestartedFrameID" );
        locator.bindComponent( eventEncoder9Restarted, "EventEncoder9Restarted" );
        locator.bindComponent( eventEncoder9RestartedTimestamp, "EventEncoder9RestartedTimestamp" );
        locator.bindComponent( eventEncoder9RestartedFrameID, "EventEncoder9RestartedFrameID" );
        locator.bindComponent( eventEncoder10Restarted, "EventEncoder10Restarted" );
        locator.bindComponent( eventEncoder10RestartedTimestamp, "EventEncoder10RestartedTimestamp" );
        locator.bindComponent( eventEncoder10RestartedFrameID, "EventEncoder10RestartedFrameID" );
        locator.bindComponent( eventEncoder11Restarted, "EventEncoder11Restarted" );
        locator.bindComponent( eventEncoder11RestartedTimestamp, "EventEncoder11RestartedTimestamp" );
        locator.bindComponent( eventEncoder11RestartedFrameID, "EventEncoder11RestartedFrameID" );
        locator.bindComponent( eventEncoder12Restarted, "EventEncoder12Restarted" );
        locator.bindComponent( eventEncoder12RestartedTimestamp, "EventEncoder12RestartedTimestamp" );
        locator.bindComponent( eventEncoder12RestartedFrameID, "EventEncoder12RestartedFrameID" );
        locator.bindComponent( eventEncoder13Restarted, "EventEncoder13Restarted" );
        locator.bindComponent( eventEncoder13RestartedTimestamp, "EventEncoder13RestartedTimestamp" );
        locator.bindComponent( eventEncoder13RestartedFrameID, "EventEncoder13RestartedFrameID" );
        locator.bindComponent( eventEncoder14Restarted, "EventEncoder14Restarted" );
        locator.bindComponent( eventEncoder14RestartedTimestamp, "EventEncoder14RestartedTimestamp" );
        locator.bindComponent( eventEncoder14RestartedFrameID, "EventEncoder14RestartedFrameID" );
        locator.bindComponent( eventLine0RisingEdge, "EventLine0RisingEdge" );
        locator.bindComponent( eventLine0RisingEdgeTimestamp, "EventLine0RisingEdgeTimestamp" );
        locator.bindComponent( eventLine0RisingEdgeFrameID, "EventLine0RisingEdgeFrameID" );
        locator.bindComponent( eventLine1RisingEdge, "EventLine1RisingEdge" );
        locator.bindComponent( eventLine1RisingEdgeTimestamp, "EventLine1RisingEdgeTimestamp" );
        locator.bindComponent( eventLine1RisingEdgeFrameID, "EventLine1RisingEdgeFrameID" );
        locator.bindComponent( eventLine2RisingEdge, "EventLine2RisingEdge" );
        locator.bindComponent( eventLine2RisingEdgeTimestamp, "EventLine2RisingEdgeTimestamp" );
        locator.bindComponent( eventLine2RisingEdgeFrameID, "EventLine2RisingEdgeFrameID" );
        locator.bindComponent( eventLine3RisingEdge, "EventLine3RisingEdge" );
        locator.bindComponent( eventLine3RisingEdgeTimestamp, "EventLine3RisingEdgeTimestamp" );
        locator.bindComponent( eventLine3RisingEdgeFrameID, "EventLine3RisingEdgeFrameID" );
        locator.bindComponent( eventLine4RisingEdge, "EventLine4RisingEdge" );
        locator.bindComponent( eventLine4RisingEdgeTimestamp, "EventLine4RisingEdgeTimestamp" );
        locator.bindComponent( eventLine4RisingEdgeFrameID, "EventLine4RisingEdgeFrameID" );
        locator.bindComponent( eventLine5RisingEdge, "EventLine5RisingEdge" );
        locator.bindComponent( eventLine5RisingEdgeTimestamp, "EventLine5RisingEdgeTimestamp" );
        locator.bindComponent( eventLine5RisingEdgeFrameID, "EventLine5RisingEdgeFrameID" );
        locator.bindComponent( eventLine6RisingEdge, "EventLine6RisingEdge" );
        locator.bindComponent( eventLine6RisingEdgeTimestamp, "EventLine6RisingEdgeTimestamp" );
        locator.bindComponent( eventLine6RisingEdgeFrameID, "EventLine6RisingEdgeFrameID" );
        locator.bindComponent( eventLine7RisingEdge, "EventLine7RisingEdge" );
        locator.bindComponent( eventLine7RisingEdgeTimestamp, "EventLine7RisingEdgeTimestamp" );
        locator.bindComponent( eventLine7RisingEdgeFrameID, "EventLine7RisingEdgeFrameID" );
        locator.bindComponent( eventLine8RisingEdge, "EventLine8RisingEdge" );
        locator.bindComponent( eventLine8RisingEdgeTimestamp, "EventLine8RisingEdgeTimestamp" );
        locator.bindComponent( eventLine8RisingEdgeFrameID, "EventLine8RisingEdgeFrameID" );
        locator.bindComponent( eventLine9RisingEdge, "EventLine9RisingEdge" );
        locator.bindComponent( eventLine9RisingEdgeTimestamp, "EventLine9RisingEdgeTimestamp" );
        locator.bindComponent( eventLine9RisingEdgeFrameID, "EventLine9RisingEdgeFrameID" );
        locator.bindComponent( eventLine10RisingEdge, "EventLine10RisingEdge" );
        locator.bindComponent( eventLine10RisingEdgeTimestamp, "EventLine10RisingEdgeTimestamp" );
        locator.bindComponent( eventLine10RisingEdgeFrameID, "EventLine10RisingEdgeFrameID" );
        locator.bindComponent( eventLine11RisingEdge, "EventLine11RisingEdge" );
        locator.bindComponent( eventLine11RisingEdgeTimestamp, "EventLine11RisingEdgeTimestamp" );
        locator.bindComponent( eventLine11RisingEdgeFrameID, "EventLine11RisingEdgeFrameID" );
        locator.bindComponent( eventLine12RisingEdge, "EventLine12RisingEdge" );
        locator.bindComponent( eventLine12RisingEdgeTimestamp, "EventLine12RisingEdgeTimestamp" );
        locator.bindComponent( eventLine12RisingEdgeFrameID, "EventLine12RisingEdgeFrameID" );
        locator.bindComponent( eventLine13RisingEdge, "EventLine13RisingEdge" );
        locator.bindComponent( eventLine13RisingEdgeTimestamp, "EventLine13RisingEdgeTimestamp" );
        locator.bindComponent( eventLine13RisingEdgeFrameID, "EventLine13RisingEdgeFrameID" );
        locator.bindComponent( eventLine14RisingEdge, "EventLine14RisingEdge" );
        locator.bindComponent( eventLine14RisingEdgeTimestamp, "EventLine14RisingEdgeTimestamp" );
        locator.bindComponent( eventLine14RisingEdgeFrameID, "EventLine14RisingEdgeFrameID" );
        locator.bindComponent( eventLine0FallingEdge, "EventLine0FallingEdge" );
        locator.bindComponent( eventLine0FallingEdgeTimestamp, "EventLine0FallingEdgeTimestamp" );
        locator.bindComponent( eventLine0FallingEdgeFrameID, "EventLine0FallingEdgeFrameID" );
        locator.bindComponent( eventLine1FallingEdge, "EventLine1FallingEdge" );
        locator.bindComponent( eventLine1FallingEdgeTimestamp, "EventLine1FallingEdgeTimestamp" );
        locator.bindComponent( eventLine1FallingEdgeFrameID, "EventLine1FallingEdgeFrameID" );
        locator.bindComponent( eventLine2FallingEdge, "EventLine2FallingEdge" );
        locator.bindComponent( eventLine2FallingEdgeTimestamp, "EventLine2FallingEdgeTimestamp" );
        locator.bindComponent( eventLine2FallingEdgeFrameID, "EventLine2FallingEdgeFrameID" );
        locator.bindComponent( eventLine3FallingEdge, "EventLine3FallingEdge" );
        locator.bindComponent( eventLine3FallingEdgeTimestamp, "EventLine3FallingEdgeTimestamp" );
        locator.bindComponent( eventLine3FallingEdgeFrameID, "EventLine3FallingEdgeFrameID" );
        locator.bindComponent( eventLine4FallingEdge, "EventLine4FallingEdge" );
        locator.bindComponent( eventLine4FallingEdgeTimestamp, "EventLine4FallingEdgeTimestamp" );
        locator.bindComponent( eventLine4FallingEdgeFrameID, "EventLine4FallingEdgeFrameID" );
        locator.bindComponent( eventLine5FallingEdge, "EventLine5FallingEdge" );
        locator.bindComponent( eventLine5FallingEdgeTimestamp, "EventLine5FallingEdgeTimestamp" );
        locator.bindComponent( eventLine5FallingEdgeFrameID, "EventLine5FallingEdgeFrameID" );
        locator.bindComponent( eventLine6FallingEdge, "EventLine6FallingEdge" );
        locator.bindComponent( eventLine6FallingEdgeTimestamp, "EventLine6FallingEdgeTimestamp" );
        locator.bindComponent( eventLine6FallingEdgeFrameID, "EventLine6FallingEdgeFrameID" );
        locator.bindComponent( eventLine7FallingEdge, "EventLine7FallingEdge" );
        locator.bindComponent( eventLine7FallingEdgeTimestamp, "EventLine7FallingEdgeTimestamp" );
        locator.bindComponent( eventLine7FallingEdgeFrameID, "EventLine7FallingEdgeFrameID" );
        locator.bindComponent( eventLine8FallingEdge, "EventLine8FallingEdge" );
        locator.bindComponent( eventLine8FallingEdgeTimestamp, "EventLine8FallingEdgeTimestamp" );
        locator.bindComponent( eventLine8FallingEdgeFrameID, "EventLine8FallingEdgeFrameID" );
        locator.bindComponent( eventLine9FallingEdge, "EventLine9FallingEdge" );
        locator.bindComponent( eventLine9FallingEdgeTimestamp, "EventLine9FallingEdgeTimestamp" );
        locator.bindComponent( eventLine9FallingEdgeFrameID, "EventLine9FallingEdgeFrameID" );
        locator.bindComponent( eventLine10FallingEdge, "EventLine10FallingEdge" );
        locator.bindComponent( eventLine10FallingEdgeTimestamp, "EventLine10FallingEdgeTimestamp" );
        locator.bindComponent( eventLine10FallingEdgeFrameID, "EventLine10FallingEdgeFrameID" );
        locator.bindComponent( eventLine11FallingEdge, "EventLine11FallingEdge" );
        locator.bindComponent( eventLine11FallingEdgeTimestamp, "EventLine11FallingEdgeTimestamp" );
        locator.bindComponent( eventLine11FallingEdgeFrameID, "EventLine11FallingEdgeFrameID" );
        locator.bindComponent( eventLine12FallingEdge, "EventLine12FallingEdge" );
        locator.bindComponent( eventLine12FallingEdgeTimestamp, "EventLine12FallingEdgeTimestamp" );
        locator.bindComponent( eventLine12FallingEdgeFrameID, "EventLine12FallingEdgeFrameID" );
        locator.bindComponent( eventLine13FallingEdge, "EventLine13FallingEdge" );
        locator.bindComponent( eventLine13FallingEdgeTimestamp, "EventLine13FallingEdgeTimestamp" );
        locator.bindComponent( eventLine13FallingEdgeFrameID, "EventLine13FallingEdgeFrameID" );
        locator.bindComponent( eventLine14FallingEdge, "EventLine14FallingEdge" );
        locator.bindComponent( eventLine14FallingEdgeTimestamp, "EventLine14FallingEdgeTimestamp" );
        locator.bindComponent( eventLine14FallingEdgeFrameID, "EventLine14FallingEdgeFrameID" );
        locator.bindComponent( eventLine0AnyEdge, "EventLine0AnyEdge" );
        locator.bindComponent( eventLine0AnyEdgeTimestamp, "EventLine0AnyEdgeTimestamp" );
        locator.bindComponent( eventLine0AnyEdgeFrameID, "EventLine0AnyEdgeFrameID" );
        locator.bindComponent( eventLine1AnyEdge, "EventLine1AnyEdge" );
        locator.bindComponent( eventLine1AnyEdgeTimestamp, "EventLine1AnyEdgeTimestamp" );
        locator.bindComponent( eventLine1AnyEdgeFrameID, "EventLine1AnyEdgeFrameID" );
        locator.bindComponent( eventLine2AnyEdge, "EventLine2AnyEdge" );
        locator.bindComponent( eventLine2AnyEdgeTimestamp, "EventLine2AnyEdgeTimestamp" );
        locator.bindComponent( eventLine2AnyEdgeFrameID, "EventLine2AnyEdgeFrameID" );
        locator.bindComponent( eventLine3AnyEdge, "EventLine3AnyEdge" );
        locator.bindComponent( eventLine3AnyEdgeTimestamp, "EventLine3AnyEdgeTimestamp" );
        locator.bindComponent( eventLine3AnyEdgeFrameID, "EventLine3AnyEdgeFrameID" );
        locator.bindComponent( eventLine4AnyEdge, "EventLine4AnyEdge" );
        locator.bindComponent( eventLine4AnyEdgeTimestamp, "EventLine4AnyEdgeTimestamp" );
        locator.bindComponent( eventLine4AnyEdgeFrameID, "EventLine4AnyEdgeFrameID" );
        locator.bindComponent( eventLine5AnyEdge, "EventLine5AnyEdge" );
        locator.bindComponent( eventLine5AnyEdgeTimestamp, "EventLine5AnyEdgeTimestamp" );
        locator.bindComponent( eventLine5AnyEdgeFrameID, "EventLine5AnyEdgeFrameID" );
        locator.bindComponent( eventLine6AnyEdge, "EventLine6AnyEdge" );
        locator.bindComponent( eventLine6AnyEdgeTimestamp, "EventLine6AnyEdgeTimestamp" );
        locator.bindComponent( eventLine6AnyEdgeFrameID, "EventLine6AnyEdgeFrameID" );
        locator.bindComponent( eventLine7AnyEdge, "EventLine7AnyEdge" );
        locator.bindComponent( eventLine7AnyEdgeTimestamp, "EventLine7AnyEdgeTimestamp" );
        locator.bindComponent( eventLine7AnyEdgeFrameID, "EventLine7AnyEdgeFrameID" );
        locator.bindComponent( eventLine8AnyEdge, "EventLine8AnyEdge" );
        locator.bindComponent( eventLine8AnyEdgeTimestamp, "EventLine8AnyEdgeTimestamp" );
        locator.bindComponent( eventLine8AnyEdgeFrameID, "EventLine8AnyEdgeFrameID" );
        locator.bindComponent( eventLine9AnyEdge, "EventLine9AnyEdge" );
        locator.bindComponent( eventLine9AnyEdgeTimestamp, "EventLine9AnyEdgeTimestamp" );
        locator.bindComponent( eventLine9AnyEdgeFrameID, "EventLine9AnyEdgeFrameID" );
        locator.bindComponent( eventLine10AnyEdge, "EventLine10AnyEdge" );
        locator.bindComponent( eventLine10AnyEdgeTimestamp, "EventLine10AnyEdgeTimestamp" );
        locator.bindComponent( eventLine10AnyEdgeFrameID, "EventLine10AnyEdgeFrameID" );
        locator.bindComponent( eventLine11AnyEdge, "EventLine11AnyEdge" );
        locator.bindComponent( eventLine11AnyEdgeTimestamp, "EventLine11AnyEdgeTimestamp" );
        locator.bindComponent( eventLine11AnyEdgeFrameID, "EventLine11AnyEdgeFrameID" );
        locator.bindComponent( eventLine12AnyEdge, "EventLine12AnyEdge" );
        locator.bindComponent( eventLine12AnyEdgeTimestamp, "EventLine12AnyEdgeTimestamp" );
        locator.bindComponent( eventLine12AnyEdgeFrameID, "EventLine12AnyEdgeFrameID" );
        locator.bindComponent( eventLine13AnyEdge, "EventLine13AnyEdge" );
        locator.bindComponent( eventLine13AnyEdgeTimestamp, "EventLine13AnyEdgeTimestamp" );
        locator.bindComponent( eventLine13AnyEdgeFrameID, "EventLine13AnyEdgeFrameID" );
        locator.bindComponent( eventLine14AnyEdge, "EventLine14AnyEdge" );
        locator.bindComponent( eventLine14AnyEdgeTimestamp, "EventLine14AnyEdgeTimestamp" );
        locator.bindComponent( eventLine14AnyEdgeFrameID, "EventLine14AnyEdgeFrameID" );
        locator.bindComponent( eventLinkTrigger0, "EventLinkTrigger0" );
        locator.bindComponent( eventLinkTrigger0Timestamp, "EventLinkTrigger0Timestamp" );
        locator.bindComponent( eventLinkTrigger0FrameID, "EventLinkTrigger0FrameID" );
        locator.bindComponent( eventLinkTrigger1, "EventLinkTrigger1" );
        locator.bindComponent( eventLinkTrigger1Timestamp, "EventLinkTrigger1Timestamp" );
        locator.bindComponent( eventLinkTrigger1FrameID, "EventLinkTrigger1FrameID" );
        locator.bindComponent( eventLinkTrigger2, "EventLinkTrigger2" );
        locator.bindComponent( eventLinkTrigger2Timestamp, "EventLinkTrigger2Timestamp" );
        locator.bindComponent( eventLinkTrigger2FrameID, "EventLinkTrigger2FrameID" );
        locator.bindComponent( eventLinkTrigger3, "EventLinkTrigger3" );
        locator.bindComponent( eventLinkTrigger3Timestamp, "EventLinkTrigger3Timestamp" );
        locator.bindComponent( eventLinkTrigger3FrameID, "EventLinkTrigger3FrameID" );
        locator.bindComponent( eventLinkTrigger4, "EventLinkTrigger4" );
        locator.bindComponent( eventLinkTrigger4Timestamp, "EventLinkTrigger4Timestamp" );
        locator.bindComponent( eventLinkTrigger4FrameID, "EventLinkTrigger4FrameID" );
        locator.bindComponent( eventLinkTrigger5, "EventLinkTrigger5" );
        locator.bindComponent( eventLinkTrigger5Timestamp, "EventLinkTrigger5Timestamp" );
        locator.bindComponent( eventLinkTrigger5FrameID, "EventLinkTrigger5FrameID" );
        locator.bindComponent( eventLinkTrigger6, "EventLinkTrigger6" );
        locator.bindComponent( eventLinkTrigger6Timestamp, "EventLinkTrigger6Timestamp" );
        locator.bindComponent( eventLinkTrigger6FrameID, "EventLinkTrigger6FrameID" );
        locator.bindComponent( eventLinkTrigger7, "EventLinkTrigger7" );
        locator.bindComponent( eventLinkTrigger7Timestamp, "EventLinkTrigger7Timestamp" );
        locator.bindComponent( eventLinkTrigger7FrameID, "EventLinkTrigger7FrameID" );
        locator.bindComponent( eventLinkTrigger8, "EventLinkTrigger8" );
        locator.bindComponent( eventLinkTrigger8Timestamp, "EventLinkTrigger8Timestamp" );
        locator.bindComponent( eventLinkTrigger8FrameID, "EventLinkTrigger8FrameID" );
        locator.bindComponent( eventLinkTrigger9, "EventLinkTrigger9" );
        locator.bindComponent( eventLinkTrigger9Timestamp, "EventLinkTrigger9Timestamp" );
        locator.bindComponent( eventLinkTrigger9FrameID, "EventLinkTrigger9FrameID" );
        locator.bindComponent( eventLinkTrigger10, "EventLinkTrigger10" );
        locator.bindComponent( eventLinkTrigger10Timestamp, "EventLinkTrigger10Timestamp" );
        locator.bindComponent( eventLinkTrigger10FrameID, "EventLinkTrigger10FrameID" );
        locator.bindComponent( eventLinkTrigger11, "EventLinkTrigger11" );
        locator.bindComponent( eventLinkTrigger11Timestamp, "EventLinkTrigger11Timestamp" );
        locator.bindComponent( eventLinkTrigger11FrameID, "EventLinkTrigger11FrameID" );
        locator.bindComponent( eventLinkTrigger12, "EventLinkTrigger12" );
        locator.bindComponent( eventLinkTrigger12Timestamp, "EventLinkTrigger12Timestamp" );
        locator.bindComponent( eventLinkTrigger12FrameID, "EventLinkTrigger12FrameID" );
        locator.bindComponent( eventLinkTrigger13, "EventLinkTrigger13" );
        locator.bindComponent( eventLinkTrigger13Timestamp, "EventLinkTrigger13Timestamp" );
        locator.bindComponent( eventLinkTrigger13FrameID, "EventLinkTrigger13FrameID" );
        locator.bindComponent( eventLinkTrigger14, "EventLinkTrigger14" );
        locator.bindComponent( eventLinkTrigger14Timestamp, "EventLinkTrigger14Timestamp" );
        locator.bindComponent( eventLinkTrigger14FrameID, "EventLinkTrigger14FrameID" );
        locator.bindComponent( eventError, "EventError" );
        locator.bindComponent( eventErrorTimestamp, "EventErrorTimestamp" );
        locator.bindComponent( eventErrorFrameID, "EventErrorFrameID" );
        locator.bindComponent( eventErrorCode, "EventErrorCode" );
    }
    // *INDENT-OFF*
    PYTHON_OR_JAVA_ONLY( %immutable; )
    // *INDENT-ON*
    /// \brief An enumerated integer property. Selects which Event to signal to the host application.
    /**
     *  Selects which Event to signal to the host application.
     *
     *  The following string values might be valid for this feature:
     *  - \b AcquisitionTrigger (Display string: 'Acquisition Trigger'): Device just received a trigger for the Acquisition of one or many Frames.
     *  - \b AcquisitionTriggerMissed (Display string: 'Acquisition Trigger Missed'): Device just missed a trigger for the Acquisition of one or many Frames.
     *  - \b AcquisitionStart (Display string: 'Acquisition Start'): Device just started the Acquisition of one or many Frames.
     *  - \b AcquisitionEnd (Display string: 'Acquisition End'): Device just completed the Acquisition of one or many Frames.
     *  - \b AcquisitionTransferStart (Display string: 'Acquisition Transfer Start'): Device just started the transfer of one or many Frames.
     *  - \b AcquisitionTransferEnd (Display string: 'Acquisition Transfer End'): Device just completed the transfer of one or many Frames.
     *  - \b AcquisitionError (Display string: 'Acquisition Error'): Device just detected an error during the active Acquisition.
     *  - \b FrameBurstStart (Display string: 'Frame Burst Start'): Device just started the capture of a burst of Frames.
     *  - \b FrameBurstEnd (Display string: 'Frame Burst End'): Device just completed the capture of a burst of Frames.
     *  - \b FrameTrigger (Display string: 'Frame Trigger'): Device just received a trigger to start the capture of one Frame.
     *  - \b FrameTriggerMissed (Display string: 'Frame Trigger Missed'): Device just missed a trigger to start the capture of one Frame.
     *  - \b FrameStart (Display string: 'Frame Start'): Device just started the capture of one Frame.
     *  - \b FrameEnd (Display string: 'Frame End'): Device just completed the capture of one Frame.
     *  - \b FrameTransferStart (Display string: 'Frame Transfer Start'): Device just started the transfer of one Frame.
     *  - \b FrameTransferEnd (Display string: 'Frame Transfer End'): Device just completed the transfer of one Frame.
     *  - \b LineTrigger (Display string: 'Line Trigger'): Device just received a trigger to start the capture of one Line.
     *  - \b LineTriggerMissed (Display string: 'Line Trigger Missed'): Device just missed a trigger to start the capture of one Line.
     *  - \b LineStart (Display string: 'Line Start'): Device just started the capture of one Line.
     *  - \b LineEnd (Display string: 'Line End'): Device just completed the capture of one Line.
     *  - \b ExposureStart (Display string: 'Exposure Start'): Device just started the exposure of one Frame (or Line).
     *  - \b ExposureEnd (Display string: 'Exposure End'): Device just completed the exposure of one Frame (or Line).
     *  - \b Stream0TransferStart (Display string: 'Stream 0 Transfer Start'): Device just started the transfer of one or many Blocks.
     *  - \b Stream0TransferEnd (Display string: 'Stream 0 Transfer End'): Device just completed the transfer of one or many Blocks.
     *  - \b Stream0TransferPause (Display string: 'Stream 0 Transfer Pause'): Device just paused the transfer.
     *  - \b Stream0TransferResume (Display string: 'Stream 0 Transfer Resume'): Device just resumed the transfer.
     *  - \b Stream0TransferBlockStart (Display string: 'Stream 0 Transfer Block Start'): Device just started the transfer of one Block.
     *  - \b Stream0TransferBlockEnd (Display string: 'Stream 0 Transfer Block End'): Device just completed the transfer of one Block.
     *  - \b Stream0TransferBlockTrigger (Display string: 'Stream 0 Transfer Block Trigger'): Device just received a trigger to start the transfer of one Block.
     *  - \b Stream0TransferBurstStart (Display string: 'Stream 0 Transfer Burst Start'): Device just started the transfer of a burst of Blocks.
     *  - \b Stream0TransferBurstEnd (Display string: 'Stream 0 Transfer Burst End'): Device just completed the transfer of a burst of Blocks.
     *  - \b Stream0TransferOverflow (Display string: 'Stream 0 Transfer Overflow'): Device transfer queue overflowed.
     *  - \b SequencerSetChange (Display string: 'Sequencer Set Change'): Device sequencer set has changed.
     *  - \b Counter0Start (Display string: 'Counter 0 Start'): The event will be generated when counter 0 starts counting.
     *  - \b Counter1Start (Display string: 'Counter 1 Start'): The event will be generated when counter 1 starts counting.
     *  - \b Counter\#2\#Start (Display string: 'Counter \#2\# Start'): The event will be generated when counter \#2\# starts counting.
     *  - \b Counter0End (Display string: 'Counter 0 End'): The event will be generated when counter 0 ends counting.
     *  - \b Counter1End (Display string: 'Counter 1 End'): The event will be generated when counter 1 ends counting.
     *  - \b Counter\#2\#End (Display string: 'Counter \#2\# End'): The event will be generated when counter \#2\# ends counting.
     *  - \b Timer0Start (Display string: 'Timer 0 Start'): The event will be generated when Timer 0 starts counting.
     *  - \b Timer1Start (Display string: 'Timer 1 Start'): The event will be generated when Timer 1 starts counting.
     *  - \b Timer\#2\#Start (Display string: 'Timer \#2\# Start'): The event will be generated when Timer \#2\# starts counting.
     *  - \b Timer0End (Display string: 'Timer 0 End'): The event will be generated when Timer 0 ends counting.
     *  - \b Timer1End (Display string: 'Timer 1 End'): The event will be generated when Timer 1 ends counting.
     *  - \b Timer\#2\#End (Display string: 'Timer \#2\# End'): The event will be generated when Timer \#2\# ends counting.
     *  - \b Encoder0Stopped (Display string: 'Encoder 0 Stopped'): The event will be generated when the Encoder 0 stops for longer than EncoderTimeout.
     *  - \b Encoder1Stopped (Display string: 'Encoder 1 Stopped'): The event will be generated when the Encoder 1 stops for longer than EncoderTimeout.
     *  - \b Encoder\#2\#Stopped (Display string: 'Encoder \#2\# Stopped'): The event will be generated when the Encoder \#2\# stops for longer than EncoderTimeout.
     *  - \b Encoder0Restarted (Display string: 'Encoder 0 Restarted'): The event will be generated when the Encoder 0 restarts moving.
     *  - \b Encoder1Restarted (Display string: 'Encoder 1 Restarted'): The event will be generated when the Encoder 1 restarts moving.
     *  - \b Encoder\#2\#Restarted (Display string: 'Encoder \#2\# Restarted'): The event will be generated when the Encoder \#2\# restarts moving.
     *  - \b Line0RisingEdge (Display string: 'Line 0 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 0.
     *  - \b Line1RisingEdge (Display string: 'Line 1 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 1.
     *  - \b Line\#2\#RisingEdge (Display string: 'Line \#2\# Rising Edge'): The event will be generated when a Rising Edge is detected on the Line \#2\#.
     *  - \b Line0FallingEdge (Display string: 'Line 0 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 0.
     *  - \b Line1FallingEdge (Display string: 'Line 1 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 1.
     *  - \b Line\#2\#FallingEdge (Display string: 'Line \#2\# Falling Edge'): The event will be generated when a Falling Edge is detected on the Line \#2\#.
     *  - \b Line0AnyEdge (Display string: 'Line 0 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 0.
     *  - \b Line1AnyEdge (Display string: 'Line 1 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 1.
     *  - \b Line\#2\#AnyEdge (Display string: 'Line \#2\# Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line \#2\#.
     *  - \b LinkTrigger0 (Display string: 'Link Trigger 0'): The event will be generated when a Rising Edge is detected on the LinkTrigger 0.
     *  - \b LinkTrigger1 (Display string: 'Link Trigger 1'): The event will be generated when a Rising Edge is detected on the LinkTrigger 1.
     *  - \b LinkTrigger\#2\# (Display string: 'Link Trigger \#2\#'): The event will be generated when a Rising Edge is detected on the LinkTrigger \#2\#.
     *  - \b LinkSpeedChange (Display string: 'Link Speed Change'): The event will be generated when the link speed has changed.
     *  - \b ActionLate (Display string: 'Action Late'): The event will be generated when a valid scheduled action command is received and is scheduled to be executed at a time that is already past.
     *  - \b Error (Display string: 'Error'): Device just detected an error during the active Acquisition.
     *  - \b Test (Display string: 'Test'): The test event will be generated when the device receives the TestEventGenerate command (EventNotification for the Test event is always On).
     *  - \b PrimaryApplicationSwitch (Display string: 'Primary Application Switch'): The event will be generated when a primary application switchover has been granted (GigE Vision Specific).
     *  - \b Counter2Start (Display string: 'Counter 2 Start'): The event will be generated when counter 2 starts counting.
     *  - \b Counter3Start (Display string: 'Counter 3 Start'): The event will be generated when counter 3 starts counting.
     *  - \b Counter4Start (Display string: 'Counter 4 Start'): The event will be generated when counter 4 starts counting.
     *  - \b Counter5Start (Display string: 'Counter 5 Start'): The event will be generated when counter 5 starts counting.
     *  - \b Counter6Start (Display string: 'Counter 6 Start'): The event will be generated when counter 6 starts counting.
     *  - \b Counter7Start (Display string: 'Counter 7 Start'): The event will be generated when counter 7 starts counting.
     *  - \b Counter8Start (Display string: 'Counter 8 Start'): The event will be generated when counter 8 starts counting.
     *  - \b Counter9Start (Display string: 'Counter 9 Start'): The event will be generated when counter 9 starts counting.
     *  - \b Counter10Start (Display string: 'Counter 10 Start'): The event will be generated when counter 10 starts counting.
     *  - \b Counter11Start (Display string: 'Counter 11 Start'): The event will be generated when counter 11 starts counting.
     *  - \b Counter12Start (Display string: 'Counter 12 Start'): The event will be generated when counter 12 starts counting.
     *  - \b Counter13Start (Display string: 'Counter 13 Start'): The event will be generated when counter 13 starts counting.
     *  - \b Counter14Start (Display string: 'Counter 14 Start'): The event will be generated when counter 14 starts counting.
     *  - \b Counter15Start (Display string: 'Counter 15 Start'): The event will be generated when counter 15 starts counting.
     *  - \b Counter2End (Display string: 'Counter 2 End'): The event will be generated when counter 2 ends counting.
     *  - \b Counter3End (Display string: 'Counter 3 End'): The event will be generated when counter 3 ends counting.
     *  - \b Counter4End (Display string: 'Counter 4 End'): The event will be generated when counter 4 ends counting.
     *  - \b Counter5End (Display string: 'Counter 5 End'): The event will be generated when counter 5 ends counting.
     *  - \b Counter6End (Display string: 'Counter 6 End'): The event will be generated when counter 6 ends counting.
     *  - \b Counter7End (Display string: 'Counter 7 End'): The event will be generated when counter 7 ends counting.
     *  - \b Counter8End (Display string: 'Counter 8 End'): The event will be generated when counter 8 ends counting.
     *  - \b Counter9End (Display string: 'Counter 9 End'): The event will be generated when counter 9 ends counting.
     *  - \b Counter10End (Display string: 'Counter 10 End'): The event will be generated when counter 10 ends counting.
     *  - \b Counter11End (Display string: 'Counter 11 End'): The event will be generated when counter 11 ends counting.
     *  - \b Counter12End (Display string: 'Counter 12 End'): The event will be generated when counter 12 ends counting.
     *  - \b Counter13End (Display string: 'Counter 13 End'): The event will be generated when counter 13 ends counting.
     *  - \b Counter14End (Display string: 'Counter 14 End'): The event will be generated when counter 14 ends counting.
     *  - \b Counter15End (Display string: 'Counter 15 End'): The event will be generated when counter 15 ends counting.
     *  - \b Timer2Start (Display string: 'Timer 2 Start'): The event will be generated when Timer 2 starts counting.
     *  - \b Timer3Start (Display string: 'Timer 3 Start'): The event will be generated when Timer 3 starts counting.
     *  - \b Timer4Start (Display string: 'Timer 4 Start'): The event will be generated when Timer 4 starts counting.
     *  - \b Timer5Start (Display string: 'Timer 5 Start'): The event will be generated when Timer 5 starts counting.
     *  - \b Timer6Start (Display string: 'Timer 6 Start'): The event will be generated when Timer 6 starts counting.
     *  - \b Timer7Start (Display string: 'Timer 7 Start'): The event will be generated when Timer 7 starts counting.
     *  - \b Timer8Start (Display string: 'Timer 8 Start'): The event will be generated when Timer 8 starts counting.
     *  - \b Timer9Start (Display string: 'Timer 9 Start'): The event will be generated when Timer 9 starts counting.
     *  - \b Timer10Start (Display string: 'Timer 10 Start'): The event will be generated when Timer 10 starts counting.
     *  - \b Timer11Start (Display string: 'Timer 11 Start'): The event will be generated when Timer 11 starts counting.
     *  - \b Timer12Start (Display string: 'Timer 12 Start'): The event will be generated when Timer 12 starts counting.
     *  - \b Timer13Start (Display string: 'Timer 13 Start'): The event will be generated when Timer 13 starts counting.
     *  - \b Timer14Start (Display string: 'Timer 14 Start'): The event will be generated when Timer 14 starts counting.
     *  - \b Timer15Start (Display string: 'Timer 15 Start'): The event will be generated when Timer 15 starts counting.
     *  - \b Timer2End (Display string: 'Timer 2 End'): The event will be generated when Timer 2 ends counting.
     *  - \b Timer3End (Display string: 'Timer 3 End'): The event will be generated when Timer 3 ends counting.
     *  - \b Timer4End (Display string: 'Timer 4 End'): The event will be generated when Timer 4 ends counting.
     *  - \b Timer5End (Display string: 'Timer 5 End'): The event will be generated when Timer 5 ends counting.
     *  - \b Timer6End (Display string: 'Timer 6 End'): The event will be generated when Timer 6 ends counting.
     *  - \b Timer7End (Display string: 'Timer 7 End'): The event will be generated when Timer 7 ends counting.
     *  - \b Timer8End (Display string: 'Timer 8 End'): The event will be generated when Timer 8 ends counting.
     *  - \b Timer9End (Display string: 'Timer 9 End'): The event will be generated when Timer 9 ends counting.
     *  - \b Timer10End (Display string: 'Timer 10 End'): The event will be generated when Timer 10 ends counting.
     *  - \b Timer11End (Display string: 'Timer 11 End'): The event will be generated when Timer 11 ends counting.
     *  - \b Timer12End (Display string: 'Timer 12 End'): The event will be generated when Timer 12 ends counting.
     *  - \b Timer13End (Display string: 'Timer 13 End'): The event will be generated when Timer 13 ends counting.
     *  - \b Timer14End (Display string: 'Timer 14 End'): The event will be generated when Timer 14 ends counting.
     *  - \b Timer15End (Display string: 'Timer 15 End'): The event will be generated when Timer 15 ends counting.
     *  - \b Encoder2Stopped (Display string: 'Encoder 2 Stopped'): The event will be generated when the Encoder 2 stops for longer than EncoderTimeout.
     *  - \b Encoder3Stopped (Display string: 'Encoder 3 Stopped'): The event will be generated when the Encoder 3 stops for longer than EncoderTimeout.
     *  - \b Encoder4Stopped (Display string: 'Encoder 4 Stopped'): The event will be generated when the Encoder 4 stops for longer than EncoderTimeout.
     *  - \b Encoder5Stopped (Display string: 'Encoder 5 Stopped'): The event will be generated when the Encoder 5 stops for longer than EncoderTimeout.
     *  - \b Encoder6Stopped (Display string: 'Encoder 6 Stopped'): The event will be generated when the Encoder 6 stops for longer than EncoderTimeout.
     *  - \b Encoder7Stopped (Display string: 'Encoder 7 Stopped'): The event will be generated when the Encoder 7 stops for longer than EncoderTimeout.
     *  - \b Encoder8Stopped (Display string: 'Encoder 8 Stopped'): The event will be generated when the Encoder 8 stops for longer than EncoderTimeout.
     *  - \b Encoder9Stopped (Display string: 'Encoder 9 Stopped'): The event will be generated when the Encoder 9 stops for longer than EncoderTimeout.
     *  - \b Encoder10Stopped (Display string: 'Encoder 10 Stopped'): The event will be generated when the Encoder 10 stops for longer than EncoderTimeout.
     *  - \b Encoder11Stopped (Display string: 'Encoder 11 Stopped'): The event will be generated when the Encoder 11 stops for longer than EncoderTimeout.
     *  - \b Encoder12Stopped (Display string: 'Encoder 12 Stopped'): The event will be generated when the Encoder 12 stops for longer than EncoderTimeout.
     *  - \b Encoder13Stopped (Display string: 'Encoder 13 Stopped'): The event will be generated when the Encoder 13 stops for longer than EncoderTimeout.
     *  - \b Encoder14Stopped (Display string: 'Encoder 14 Stopped'): The event will be generated when the Encoder 14 stops for longer than EncoderTimeout.
     *  - \b Encoder15Stopped (Display string: 'Encoder 15 Stopped'): The event will be generated when the Encoder 15 stops for longer than EncoderTimeout.
     *  - \b Encoder2Restarted (Display string: 'Encoder 2 Restarted'): The event will be generated when the Encoder 2 restarts moving.
     *  - \b Encoder3Restarted (Display string: 'Encoder 3 Restarted'): The event will be generated when the Encoder 3 restarts moving.
     *  - \b Encoder4Restarted (Display string: 'Encoder 4 Restarted'): The event will be generated when the Encoder 4 restarts moving.
     *  - \b Encoder5Restarted (Display string: 'Encoder 5 Restarted'): The event will be generated when the Encoder 5 restarts moving.
     *  - \b Encoder6Restarted (Display string: 'Encoder 6 Restarted'): The event will be generated when the Encoder 6 restarts moving.
     *  - \b Encoder7Restarted (Display string: 'Encoder 7 Restarted'): The event will be generated when the Encoder 7 restarts moving.
     *  - \b Encoder8Restarted (Display string: 'Encoder 8 Restarted'): The event will be generated when the Encoder 8 restarts moving.
     *  - \b Encoder9Restarted (Display string: 'Encoder 9 Restarted'): The event will be generated when the Encoder 9 restarts moving.
     *  - \b Encoder10Restarted (Display string: 'Encoder 10 Restarted'): The event will be generated when the Encoder 10 restarts moving.
     *  - \b Encoder11Restarted (Display string: 'Encoder 11 Restarted'): The event will be generated when the Encoder 11 restarts moving.
     *  - \b Encoder12Restarted (Display string: 'Encoder 12 Restarted'): The event will be generated when the Encoder 12 restarts moving.
     *  - \b Encoder13Restarted (Display string: 'Encoder 13 Restarted'): The event will be generated when the Encoder 13 restarts moving.
     *  - \b Encoder14Restarted (Display string: 'Encoder 14 Restarted'): The event will be generated when the Encoder 14 restarts moving.
     *  - \b Encoder15Restarted (Display string: 'Encoder 15 Restarted'): The event will be generated when the Encoder 15 restarts moving.
     *  - \b Line2RisingEdge (Display string: 'Line 2 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 2.
     *  - \b Line3RisingEdge (Display string: 'Line 3 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 3.
     *  - \b Line4RisingEdge (Display string: 'Line 4 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 4.
     *  - \b Line5RisingEdge (Display string: 'Line 5 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 5.
     *  - \b Line6RisingEdge (Display string: 'Line 6 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 6.
     *  - \b Line7RisingEdge (Display string: 'Line 7 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 7.
     *  - \b Line8RisingEdge (Display string: 'Line 8 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 8.
     *  - \b Line9RisingEdge (Display string: 'Line 9 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 9.
     *  - \b Line10RisingEdge (Display string: 'Line 10 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 10.
     *  - \b Line11RisingEdge (Display string: 'Line 11 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 11.
     *  - \b Line12RisingEdge (Display string: 'Line 12 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 12.
     *  - \b Line13RisingEdge (Display string: 'Line 13 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 13.
     *  - \b Line14RisingEdge (Display string: 'Line 14 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 14.
     *  - \b Line15RisingEdge (Display string: 'Line 15 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 15.
     *  - \b Line2FallingEdge (Display string: 'Line 2 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 2.
     *  - \b Line3FallingEdge (Display string: 'Line 3 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 3.
     *  - \b Line4FallingEdge (Display string: 'Line 4 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 4.
     *  - \b Line5FallingEdge (Display string: 'Line 5 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 5.
     *  - \b Line6FallingEdge (Display string: 'Line 6 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 6.
     *  - \b Line7FallingEdge (Display string: 'Line 7 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 7.
     *  - \b Line8FallingEdge (Display string: 'Line 8 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 8.
     *  - \b Line9FallingEdge (Display string: 'Line 9 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 9.
     *  - \b Line10FallingEdge (Display string: 'Line 10 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 10.
     *  - \b Line11FallingEdge (Display string: 'Line 11 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 11.
     *  - \b Line12FallingEdge (Display string: 'Line 12 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 12.
     *  - \b Line13FallingEdge (Display string: 'Line 13 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 13.
     *  - \b Line14FallingEdge (Display string: 'Line 14 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 14.
     *  - \b Line15FallingEdge (Display string: 'Line 15 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 15.
     *  - \b Line2AnyEdge (Display string: 'Line 2 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 2.
     *  - \b Line3AnyEdge (Display string: 'Line 3 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 3.
     *  - \b Line4AnyEdge (Display string: 'Line 4 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 4.
     *  - \b Line5AnyEdge (Display string: 'Line 5 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 5.
     *  - \b Line6AnyEdge (Display string: 'Line 6 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 6.
     *  - \b Line7AnyEdge (Display string: 'Line 7 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 7.
     *  - \b Line8AnyEdge (Display string: 'Line 8 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 8.
     *  - \b Line9AnyEdge (Display string: 'Line 9 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 9.
     *  - \b Line10AnyEdge (Display string: 'Line 10 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 10.
     *  - \b Line11AnyEdge (Display string: 'Line 11 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 11.
     *  - \b Line12AnyEdge (Display string: 'Line 12 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 12.
     *  - \b Line13AnyEdge (Display string: 'Line 13 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 13.
     *  - \b Line14AnyEdge (Display string: 'Line 14 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 14.
     *  - \b Line15AnyEdge (Display string: 'Line 15 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 15.
     *  - \b Link0Trigger (Display string: 'Link 0 Trigger')
     *  - \b Link1Trigger (Display string: 'Link 1 Trigger')
     *  - \b Link2Trigger (Display string: 'Link 2 Trigger')
     *  - \b Link3Trigger (Display string: 'Link 3 Trigger')
     *  - \b Link4Trigger (Display string: 'Link 4 Trigger')
     *  - \b Link5Trigger (Display string: 'Link 5 Trigger')
     *  - \b Link6Trigger (Display string: 'Link 6 Trigger')
     *  - \b Link7Trigger (Display string: 'Link 7 Trigger')
     *  - \b Link8Trigger (Display string: 'Link 8 Trigger')
     *  - \b Link9Trigger (Display string: 'Link 9 Trigger')
     *  - \b Link10Trigger (Display string: 'Link 10 Trigger')
     *  - \b Link11Trigger (Display string: 'Link 11 Trigger')
     *  - \b Link12Trigger (Display string: 'Link 12 Trigger')
     *  - \b Link13Trigger (Display string: 'Link 13 Trigger')
     *  - \b Link14Trigger (Display string: 'Link 14 Trigger')
     *  - \b Link15Trigger (Display string: 'Link 15 Trigger')
     *  - \b InterfaceListChanged (Display string: 'Interface List Changed'): This enumeration value indicates an event that is fired when the list of interfaces has been updated.
     *  - \b InterfaceLost (Display string: 'Interface Lost'): This enumeration value indicates an event that is raised when the interface connection is lost.
     *  - \b DeviceListChanged (Display string: 'Device List Changed'): This enumeration value indicates an event that is fired when the list of devices has been updated.
     *  - \b DeviceLost (Display string: 'Device Lost'): This enumeration value indicates an event that is raised when the local host looses connection to the physical(remote) device.
     *  - \b BufferTooSmall (Display string: 'Buffer Too Small'): This enumeration value indicates an event that is raised when the buffer was too small to receive the expected amount of data.
     *  - \b BuffersDiscarded (Display string: 'Buffers Discarded'): This enumeration value indicates an event that is raised when buffers discared by GenTL or device. This event could optionally carry two numeric child data fields EventBuffersDiscardedDeviceCount and EventBuffersDiscardedProducerCount.
     *  - \b BuffersDiscardedDeviceCount (Display string: 'Buffers Discarded Device Count'): This enumeration value indicates the number of buffers discarded by the device since last fired instance of this event (the producer would get to know about this for example by observing a gap in the block_id sequence).
     *  - \b BuffersDiscardedProducerCount (Display string: 'Buffers Discarded Producer Count'): This enumeration value indicates the number of buffers discarded by the producer since last fired instance of this event (this would happen e.g. if there are no free buffers available or if given buffer handling mode requires discarding old buffers etc.).
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 eventSelector;
    /// \brief An enumerated integer property. Activate or deactivate the notification to the host application of the occurrence of the selected Event.
    /**
     *  Activate or deactivate the notification to the host application of the occurrence of the selected Event.
     *
     *  The following string values might be valid for this feature:
     *  - \b Off (Display string: 'Off'): The selected Event notification is disabled.
     *  - \b On (Display string: 'On'): The selected Event notification is enabled.
     *  - \b Once (Display string: 'Once'): The selected Event notification is enabled for one event then return to Off state.
     *  - \b GigEVisionEvent (Display string: 'Gig E Vision Event')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 eventNotification;
    /// \brief An integer property. Returns the unique Identifier of the Acquisition Trigger type of Event.
    /**
     *  Returns the unique Identifier of the Acquisition Trigger type of Event.
     */
    PropertyI64 eventAcquisitionTrigger;
    /// \brief An integer property. Returns the Timestamp of the Acquisition Trigger Event.
    /**
     *  Returns the Timestamp of the Acquisition Trigger Event.
     */
    PropertyI64 eventAcquisitionTriggerTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Acquisition Trigger Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Acquisition Trigger Event.
     */
    PropertyI64 eventAcquisitionTriggerFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Acquisition Trigger Missed type of Event.
    /**
     *  Returns the unique Identifier of the Acquisition Trigger Missed type of Event.
     */
    PropertyI64 eventAcquisitionTriggerMissed;
    /// \brief An integer property. Returns the Timestamp of the Acquisition Trigger Missed Event.
    /**
     *  Returns the Timestamp of the Acquisition Trigger Missed Event.
     */
    PropertyI64 eventAcquisitionTriggerMissedTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Acquisition Trigger Missed Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Acquisition Trigger Missed Event.
     */
    PropertyI64 eventAcquisitionTriggerMissedFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Acquisition Start type of Event.
    /**
     *  Returns the unique Identifier of the Acquisition Start type of Event.
     */
    PropertyI64 eventAcquisitionStart;
    /// \brief An integer property. Returns the Timestamp of the Acquisition Start Event.
    /**
     *  Returns the Timestamp of the Acquisition Start Event.
     */
    PropertyI64 eventAcquisitionStartTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Acquisition Start Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Acquisition Start Event.
     */
    PropertyI64 eventAcquisitionStartFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Acquisition End type of Event.
    /**
     *  Returns the unique Identifier of the Acquisition End type of Event.
     */
    PropertyI64 eventAcquisitionEnd;
    /// \brief An integer property. Returns the Timestamp of the Acquisition End Event.
    /**
     *  Returns the Timestamp of the Acquisition End Event.
     */
    PropertyI64 eventAcquisitionEndTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Acquisition End Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Acquisition End Event.
     */
    PropertyI64 eventAcquisitionEndFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Acquisition Transfer Start type of Event.
    /**
     *  Returns the unique Identifier of the Acquisition Transfer Start type of Event.
     */
    PropertyI64 eventAcquisitionTransferStart;
    /// \brief An integer property. Returns the Timestamp of the Acquisition Transfer Start Event.
    /**
     *  Returns the Timestamp of the Acquisition Transfer Start Event.
     */
    PropertyI64 eventAcquisitionTransferStartTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Acquisition Transfer Start Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Acquisition Transfer Start Event.
     */
    PropertyI64 eventAcquisitionTransferStartFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Acquisition Transfer End type of Event.
    /**
     *  Returns the unique Identifier of the Acquisition Transfer End type of Event.
     */
    PropertyI64 eventAcquisitionTransferEnd;
    /// \brief An integer property. Returns the Timestamp of the Acquisition Transfer End Event.
    /**
     *  Returns the Timestamp of the Acquisition Transfer End Event.
     */
    PropertyI64 eventAcquisitionTransferEndTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Acquisition Transfer End Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Acquisition Transfer End Event.
     */
    PropertyI64 eventAcquisitionTransferEndFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Acquisition Error type of Event.
    /**
     *  Returns the unique Identifier of the Acquisition Error type of Event.
     */
    PropertyI64 eventAcquisitionError;
    /// \brief An integer property. Returns the Timestamp of the Acquisition Error Event.
    /**
     *  Returns the Timestamp of the Acquisition Error Event.
     */
    PropertyI64 eventAcquisitionErrorTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Acquisition Error Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Acquisition Error Event.
     */
    PropertyI64 eventAcquisitionErrorFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Frame Burst Start type of Event.
    /**
     *  Returns the unique Identifier of the Frame Burst Start type of Event.
     */
    PropertyI64 eventFrameBurstStart;
    /// \brief An integer property. Returns the Timestamp of the Frame Burst Start Event.
    /**
     *  Returns the Timestamp of the Frame Burst Start Event.
     */
    PropertyI64 eventFrameBurstStartTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Frame Burst Start Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Frame Burst Start Event.
     */
    PropertyI64 eventFrameBurstStartFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Frame Burst End type of Event.
    /**
     *  Returns the unique Identifier of the Frame Burst End type of Event.
     */
    PropertyI64 eventFrameBurstEnd;
    /// \brief An integer property. Returns the Timestamp of the Frame Burst End Event.
    /**
     *  Returns the Timestamp of the Frame Burst End Event.
     */
    PropertyI64 eventFrameBurstEndTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Frame Burst End Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Frame Burst End Event.
     */
    PropertyI64 eventFrameBurstEndFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Frame Trigger type of Event.
    /**
     *  Returns the unique Identifier of the Frame Trigger type of Event.
     */
    PropertyI64 eventFrameTrigger;
    /// \brief An integer property. Returns the Timestamp of the Frame Trigger Event.
    /**
     *  Returns the Timestamp of the Frame Trigger Event.
     */
    PropertyI64 eventFrameTriggerTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Frame Trigger Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Frame Trigger Event.
     */
    PropertyI64 eventFrameTriggerFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Frame Trigger Missed type of Event.
    /**
     *  Returns the unique Identifier of the Frame Trigger Missed type of Event.
     */
    PropertyI64 eventFrameTriggerMissed;
    /// \brief An integer property. Returns the Timestamp of the Frame Trigger Missed Event.
    /**
     *  Returns the Timestamp of the Frame Trigger Missed Event.
     */
    PropertyI64 eventFrameTriggerMissedTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Frame Trigger Missed Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Frame Trigger Missed Event.
     */
    PropertyI64 eventFrameTriggerMissedFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Frame Start type of Event.
    /**
     *  Returns the unique Identifier of the Frame Start type of Event.
     */
    PropertyI64 eventFrameStart;
    /// \brief An integer property. Returns the Timestamp of the Frame Start Event.
    /**
     *  Returns the Timestamp of the Frame Start Event.
     */
    PropertyI64 eventFrameStartTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Frame Start Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Frame Start Event.
     */
    PropertyI64 eventFrameStartFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Frame End type of Event.
    /**
     *  Returns the unique Identifier of the Frame End type of Event.
     */
    PropertyI64 eventFrameEnd;
    /// \brief An integer property. Returns the Timestamp of the Frame End Event.
    /**
     *  Returns the Timestamp of the Frame End Event.
     */
    PropertyI64 eventFrameEndTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Frame End Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Frame End Event.
     */
    PropertyI64 eventFrameEndFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Frame Transfer Start type of Event.
    /**
     *  Returns the unique Identifier of the Frame Transfer Start type of Event.
     */
    PropertyI64 eventFrameTransferStart;
    /// \brief An integer property. Returns the Timestamp of the Frame Transfer Start Event.
    /**
     *  Returns the Timestamp of the Frame Transfer Start Event.
     */
    PropertyI64 eventFrameTransferStartTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Frame Transfer Start Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Frame Transfer Start Event.
     */
    PropertyI64 eventFrameTransferStartFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Frame Transfer End type of Event.
    /**
     *  Returns the unique Identifier of the Frame Transfer End type of Event.
     */
    PropertyI64 eventFrameTransferEnd;
    /// \brief An integer property. Returns the Timestamp of the Frame Transfer End Event.
    /**
     *  Returns the Timestamp of the Frame Transfer End Event.
     */
    PropertyI64 eventFrameTransferEndTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Frame Transfer End Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Frame Transfer End Event.
     */
    PropertyI64 eventFrameTransferEndFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Line Trigger type of Event.
    /**
     *  Returns the unique Identifier of the Line Trigger type of Event.
     */
    PropertyI64 eventLineTrigger;
    /// \brief An integer property. Returns the Timestamp of the Line Trigger Event.
    /**
     *  Returns the Timestamp of the Line Trigger Event.
     */
    PropertyI64 eventLineTriggerTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Line Trigger Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Line Trigger Event.
     */
    PropertyI64 eventLineTriggerFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Line Trigger Missed type of Event.
    /**
     *  Returns the unique Identifier of the Line Trigger Missed type of Event.
     */
    PropertyI64 eventLineTriggerMissed;
    /// \brief An integer property. Returns the Timestamp of the Line Trigger Missed Event.
    /**
     *  Returns the Timestamp of the Line Trigger Missed Event.
     */
    PropertyI64 eventLineTriggerMissedTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Line Trigger Missed Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Line Trigger Missed Event.
     */
    PropertyI64 eventLineTriggerMissedFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Line Start type of Event.
    /**
     *  Returns the unique Identifier of the Line Start type of Event.
     */
    PropertyI64 eventLineStart;
    /// \brief An integer property. Returns the Timestamp of the Line Start Event.
    /**
     *  Returns the Timestamp of the Line Start Event.
     */
    PropertyI64 eventLineStartTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Line Start Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Line Start Event.
     */
    PropertyI64 eventLineStartFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Line End type of Event.
    /**
     *  Returns the unique Identifier of the Line End type of Event.
     */
    PropertyI64 eventLineEnd;
    /// \brief An integer property. Returns the Timestamp of the Line End Event.
    /**
     *  Returns the Timestamp of the Line End Event.
     */
    PropertyI64 eventLineEndTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Line End Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Line End Event.
     */
    PropertyI64 eventLineEndFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Exposure Start type of Event.
    /**
     *  Returns the unique Identifier of the Exposure Start type of Event.
     */
    PropertyI64 eventExposureStart;
    /// \brief An integer property. Returns the Timestamp of the Exposure Start Event.
    /**
     *  Returns the Timestamp of the Exposure Start Event.
     */
    PropertyI64 eventExposureStartTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Exposure Start Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Exposure Start Event.
     */
    PropertyI64 eventExposureStartFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Exposure End type of Event.
    /**
     *  Returns the unique Identifier of the Exposure End type of Event.
     */
    PropertyI64 eventExposureEnd;
    /// \brief An integer property. Returns the Timestamp of the Exposure End Event.
    /**
     *  Returns the Timestamp of the Exposure End Event.
     */
    PropertyI64 eventExposureEndTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Exposure End Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Exposure End Event.
     */
    PropertyI64 eventExposureEndFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Action Late type of Event.
    /**
     *  Returns the unique Identifier of the Action Late type of Event.
     */
    PropertyI64 eventActionLate;
    /// \brief An integer property. Returns the Timestamp of the Action Late Event.
    /**
     *  Returns the Timestamp of the Action Late Event.
     */
    PropertyI64 eventActionLateTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Action Late Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Action Late Event.
     */
    PropertyI64 eventActionLateFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Primary Application Switch type of Event.
    /**
     *  Returns the unique Identifier of the Primary Application Switch type of Event.
     */
    PropertyI64 eventPrimaryApplicationSwitch;
    /// \brief An integer property. Returns the Timestamp of the Primary Application Switch Event.
    /**
     *  Returns the Timestamp of the Primary Application Switch Event.
     */
    PropertyI64 eventPrimaryApplicationSwitchTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Primary Application Switch Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Primary Application Switch Event.
     */
    PropertyI64 eventPrimaryApplicationSwitchFrameID;
    /// \brief An integer property. Returns the unique identifier of the Event Test type of event generated using the TestEventGenerate command.
    /**
     *  Returns the unique identifier of the Event Test type of event generated using the TestEventGenerate command. It can be used to register a callback function to be notified of the EventTest event occurrence. Its value uniquely identifies that the event received was an Event Test.
     */
    PropertyI64 eventTest;
    /// \brief An integer property. Returns the Timestamp of the Event Test event.
    /**
     *  Returns the Timestamp of the Event Test event. It can be used to determine when the event occurred.
     */
    PropertyI64 eventTestTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Counter 0 Start type of Event.
    /**
     *  Returns the unique Identifier of the Counter 0 Start type of Event.
     */
    PropertyI64 eventCounter0Start;
    /// \brief An integer property. Returns the Timestamp of the Counter 0 Start Event.
    /**
     *  Returns the Timestamp of the Counter 0 Start Event.
     */
    PropertyI64 eventCounter0StartTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Counter 0 Start Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Counter 0 Start Event.
     */
    PropertyI64 eventCounter0StartFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Counter 1 Start type of Event.
    /**
     *  Returns the unique Identifier of the Counter 1 Start type of Event.
     */
    PropertyI64 eventCounter1Start;
    /// \brief An integer property. Returns the Timestamp of the Counter 1 Start Event.
    /**
     *  Returns the Timestamp of the Counter 1 Start Event.
     */
    PropertyI64 eventCounter1StartTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Counter 1 Start Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Counter 1 Start Event.
     */
    PropertyI64 eventCounter1StartFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Counter 2 Start type of Event.
    /**
     *  Returns the unique Identifier of the Counter 2 Start type of Event.
     */
    PropertyI64 eventCounter2Start;
    /// \brief An integer property. Returns the Timestamp of the Counter 2 Start Event.
    /**
     *  Returns the Timestamp of the Counter 2 Start Event.
     */
    PropertyI64 eventCounter2StartTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Counter 2 Start Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Counter 2 Start Event.
     */
    PropertyI64 eventCounter2StartFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Counter 3 Start type of Event.
    /**
     *  Returns the unique Identifier of the Counter 3 Start type of Event.
     */
    PropertyI64 eventCounter3Start;
    /// \brief An integer property. Returns the Timestamp of the Counter 3 Start Event.
    /**
     *  Returns the Timestamp of the Counter 3 Start Event.
     */
    PropertyI64 eventCounter3StartTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Counter 3 Start Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Counter 3 Start Event.
     */
    PropertyI64 eventCounter3StartFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Counter 4 Start type of Event.
    /**
     *  Returns the unique Identifier of the Counter 4 Start type of Event.
     */
    PropertyI64 eventCounter4Start;
    /// \brief An integer property. Returns the Timestamp of the Counter 4 Start Event.
    /**
     *  Returns the Timestamp of the Counter 4 Start Event.
     */
    PropertyI64 eventCounter4StartTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Counter 4 Start Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Counter 4 Start Event.
     */
    PropertyI64 eventCounter4StartFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Counter 5 Start type of Event.
    /**
     *  Returns the unique Identifier of the Counter 5 Start type of Event.
     */
    PropertyI64 eventCounter5Start;
    /// \brief An integer property. Returns the Timestamp of the Counter 5 Start Event.
    /**
     *  Returns the Timestamp of the Counter 5 Start Event.
     */
    PropertyI64 eventCounter5StartTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Counter 5 Start Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Counter 5 Start Event.
     */
    PropertyI64 eventCounter5StartFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Counter 6 Start type of Event.
    /**
     *  Returns the unique Identifier of the Counter 6 Start type of Event.
     */
    PropertyI64 eventCounter6Start;
    /// \brief An integer property. Returns the Timestamp of the Counter 6 Start Event.
    /**
     *  Returns the Timestamp of the Counter 6 Start Event.
     */
    PropertyI64 eventCounter6StartTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Counter 6 Start Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Counter 6 Start Event.
     */
    PropertyI64 eventCounter6StartFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Counter 7 Start type of Event.
    /**
     *  Returns the unique Identifier of the Counter 7 Start type of Event.
     */
    PropertyI64 eventCounter7Start;
    /// \brief An integer property. Returns the Timestamp of the Counter 7 Start Event.
    /**
     *  Returns the Timestamp of the Counter 7 Start Event.
     */
    PropertyI64 eventCounter7StartTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Counter 7 Start Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Counter 7 Start Event.
     */
    PropertyI64 eventCounter7StartFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Counter 8 Start type of Event.
    /**
     *  Returns the unique Identifier of the Counter 8 Start type of Event.
     */
    PropertyI64 eventCounter8Start;
    /// \brief An integer property. Returns the Timestamp of the Counter 8 Start Event.
    /**
     *  Returns the Timestamp of the Counter 8 Start Event.
     */
    PropertyI64 eventCounter8StartTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Counter 8 Start Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Counter 8 Start Event.
     */
    PropertyI64 eventCounter8StartFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Counter 9 Start type of Event.
    /**
     *  Returns the unique Identifier of the Counter 9 Start type of Event.
     */
    PropertyI64 eventCounter9Start;
    /// \brief An integer property. Returns the Timestamp of the Counter 9 Start Event.
    /**
     *  Returns the Timestamp of the Counter 9 Start Event.
     */
    PropertyI64 eventCounter9StartTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Counter 9 Start Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Counter 9 Start Event.
     */
    PropertyI64 eventCounter9StartFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Counter 10 Start type of Event.
    /**
     *  Returns the unique Identifier of the Counter 10 Start type of Event.
     */
    PropertyI64 eventCounter10Start;
    /// \brief An integer property. Returns the Timestamp of the Counter 10 Start Event.
    /**
     *  Returns the Timestamp of the Counter 10 Start Event.
     */
    PropertyI64 eventCounter10StartTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Counter 10 Start Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Counter 10 Start Event.
     */
    PropertyI64 eventCounter10StartFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Counter 11 Start type of Event.
    /**
     *  Returns the unique Identifier of the Counter 11 Start type of Event.
     */
    PropertyI64 eventCounter11Start;
    /// \brief An integer property. Returns the Timestamp of the Counter 11 Start Event.
    /**
     *  Returns the Timestamp of the Counter 11 Start Event.
     */
    PropertyI64 eventCounter11StartTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Counter 11 Start Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Counter 11 Start Event.
     */
    PropertyI64 eventCounter11StartFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Counter 12 Start type of Event.
    /**
     *  Returns the unique Identifier of the Counter 12 Start type of Event.
     */
    PropertyI64 eventCounter12Start;
    /// \brief An integer property. Returns the Timestamp of the Counter 12 Start Event.
    /**
     *  Returns the Timestamp of the Counter 12 Start Event.
     */
    PropertyI64 eventCounter12StartTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Counter 12 Start Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Counter 12 Start Event.
     */
    PropertyI64 eventCounter12StartFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Counter 13 Start type of Event.
    /**
     *  Returns the unique Identifier of the Counter 13 Start type of Event.
     */
    PropertyI64 eventCounter13Start;
    /// \brief An integer property. Returns the Timestamp of the Counter 13 Start Event.
    /**
     *  Returns the Timestamp of the Counter 13 Start Event.
     */
    PropertyI64 eventCounter13StartTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Counter 13 Start Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Counter 13 Start Event.
     */
    PropertyI64 eventCounter13StartFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Counter 14 Start type of Event.
    /**
     *  Returns the unique Identifier of the Counter 14 Start type of Event.
     */
    PropertyI64 eventCounter14Start;
    /// \brief An integer property. Returns the Timestamp of the Counter 14 Start Event.
    /**
     *  Returns the Timestamp of the Counter 14 Start Event.
     */
    PropertyI64 eventCounter14StartTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Counter 14 Start Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Counter 14 Start Event.
     */
    PropertyI64 eventCounter14StartFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Counter 0 End type of Event.
    /**
     *  Returns the unique Identifier of the Counter 0 End type of Event.
     */
    PropertyI64 eventCounter0End;
    /// \brief An integer property. Returns the Timestamp of the Counter 0 End Event.
    /**
     *  Returns the Timestamp of the Counter 0 End Event.
     */
    PropertyI64 eventCounter0EndTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Counter 0 End Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Counter 0 End Event.
     */
    PropertyI64 eventCounter0EndFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Counter 1 End type of Event.
    /**
     *  Returns the unique Identifier of the Counter 1 End type of Event.
     */
    PropertyI64 eventCounter1End;
    /// \brief An integer property. Returns the Timestamp of the Counter 1 End Event.
    /**
     *  Returns the Timestamp of the Counter 1 End Event.
     */
    PropertyI64 eventCounter1EndTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Counter 1 End Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Counter 1 End Event.
     */
    PropertyI64 eventCounter1EndFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Counter 2 End type of Event.
    /**
     *  Returns the unique Identifier of the Counter 2 End type of Event.
     */
    PropertyI64 eventCounter2End;
    /// \brief An integer property. Returns the Timestamp of the Counter 2 End Event.
    /**
     *  Returns the Timestamp of the Counter 2 End Event.
     */
    PropertyI64 eventCounter2EndTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Counter 2 End Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Counter 2 End Event.
     */
    PropertyI64 eventCounter2EndFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Counter 3 End type of Event.
    /**
     *  Returns the unique Identifier of the Counter 3 End type of Event.
     */
    PropertyI64 eventCounter3End;
    /// \brief An integer property. Returns the Timestamp of the Counter 3 End Event.
    /**
     *  Returns the Timestamp of the Counter 3 End Event.
     */
    PropertyI64 eventCounter3EndTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Counter 3 End Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Counter 3 End Event.
     */
    PropertyI64 eventCounter3EndFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Counter 4 End type of Event.
    /**
     *  Returns the unique Identifier of the Counter 4 End type of Event.
     */
    PropertyI64 eventCounter4End;
    /// \brief An integer property. Returns the Timestamp of the Counter 4 End Event.
    /**
     *  Returns the Timestamp of the Counter 4 End Event.
     */
    PropertyI64 eventCounter4EndTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Counter 4 End Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Counter 4 End Event.
     */
    PropertyI64 eventCounter4EndFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Counter 5 End type of Event.
    /**
     *  Returns the unique Identifier of the Counter 5 End type of Event.
     */
    PropertyI64 eventCounter5End;
    /// \brief An integer property. Returns the Timestamp of the Counter 5 End Event.
    /**
     *  Returns the Timestamp of the Counter 5 End Event.
     */
    PropertyI64 eventCounter5EndTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Counter 5 End Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Counter 5 End Event.
     */
    PropertyI64 eventCounter5EndFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Counter 6 End type of Event.
    /**
     *  Returns the unique Identifier of the Counter 6 End type of Event.
     */
    PropertyI64 eventCounter6End;
    /// \brief An integer property. Returns the Timestamp of the Counter 6 End Event.
    /**
     *  Returns the Timestamp of the Counter 6 End Event.
     */
    PropertyI64 eventCounter6EndTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Counter 6 End Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Counter 6 End Event.
     */
    PropertyI64 eventCounter6EndFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Counter 7 End type of Event.
    /**
     *  Returns the unique Identifier of the Counter 7 End type of Event.
     */
    PropertyI64 eventCounter7End;
    /// \brief An integer property. Returns the Timestamp of the Counter 7 End Event.
    /**
     *  Returns the Timestamp of the Counter 7 End Event.
     */
    PropertyI64 eventCounter7EndTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Counter 7 End Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Counter 7 End Event.
     */
    PropertyI64 eventCounter7EndFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Counter 8 End type of Event.
    /**
     *  Returns the unique Identifier of the Counter 8 End type of Event.
     */
    PropertyI64 eventCounter8End;
    /// \brief An integer property. Returns the Timestamp of the Counter 8 End Event.
    /**
     *  Returns the Timestamp of the Counter 8 End Event.
     */
    PropertyI64 eventCounter8EndTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Counter 8 End Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Counter 8 End Event.
     */
    PropertyI64 eventCounter8EndFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Counter 9 End type of Event.
    /**
     *  Returns the unique Identifier of the Counter 9 End type of Event.
     */
    PropertyI64 eventCounter9End;
    /// \brief An integer property. Returns the Timestamp of the Counter 9 End Event.
    /**
     *  Returns the Timestamp of the Counter 9 End Event.
     */
    PropertyI64 eventCounter9EndTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Counter 9 End Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Counter 9 End Event.
     */
    PropertyI64 eventCounter9EndFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Counter 10 End type of Event.
    /**
     *  Returns the unique Identifier of the Counter 10 End type of Event.
     */
    PropertyI64 eventCounter10End;
    /// \brief An integer property. Returns the Timestamp of the Counter 10 End Event.
    /**
     *  Returns the Timestamp of the Counter 10 End Event.
     */
    PropertyI64 eventCounter10EndTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Counter 10 End Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Counter 10 End Event.
     */
    PropertyI64 eventCounter10EndFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Counter 11 End type of Event.
    /**
     *  Returns the unique Identifier of the Counter 11 End type of Event.
     */
    PropertyI64 eventCounter11End;
    /// \brief An integer property. Returns the Timestamp of the Counter 11 End Event.
    /**
     *  Returns the Timestamp of the Counter 11 End Event.
     */
    PropertyI64 eventCounter11EndTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Counter 11 End Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Counter 11 End Event.
     */
    PropertyI64 eventCounter11EndFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Counter 12 End type of Event.
    /**
     *  Returns the unique Identifier of the Counter 12 End type of Event.
     */
    PropertyI64 eventCounter12End;
    /// \brief An integer property. Returns the Timestamp of the Counter 12 End Event.
    /**
     *  Returns the Timestamp of the Counter 12 End Event.
     */
    PropertyI64 eventCounter12EndTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Counter 12 End Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Counter 12 End Event.
     */
    PropertyI64 eventCounter12EndFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Counter 13 End type of Event.
    /**
     *  Returns the unique Identifier of the Counter 13 End type of Event.
     */
    PropertyI64 eventCounter13End;
    /// \brief An integer property. Returns the Timestamp of the Counter 13 End Event.
    /**
     *  Returns the Timestamp of the Counter 13 End Event.
     */
    PropertyI64 eventCounter13EndTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Counter 13 End Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Counter 13 End Event.
     */
    PropertyI64 eventCounter13EndFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Counter 14 End type of Event.
    /**
     *  Returns the unique Identifier of the Counter 14 End type of Event.
     */
    PropertyI64 eventCounter14End;
    /// \brief An integer property. Returns the Timestamp of the Counter 14 End Event.
    /**
     *  Returns the Timestamp of the Counter 14 End Event.
     */
    PropertyI64 eventCounter14EndTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Counter 14 End Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Counter 14 End Event.
     */
    PropertyI64 eventCounter14EndFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Timer 0 Start type of Event.
    /**
     *  Returns the unique Identifier of the Timer 0 Start type of Event.
     */
    PropertyI64 eventTimer0Start;
    /// \brief An integer property. Returns the Timestamp of the Timer 0 Start Event.
    /**
     *  Returns the Timestamp of the Timer 0 Start Event.
     */
    PropertyI64 eventTimer0StartTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Timer 0 Start Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Timer 0 Start Event.
     */
    PropertyI64 eventTimer0StartFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Timer 1 Start type of Event.
    /**
     *  Returns the unique Identifier of the Timer 1 Start type of Event.
     */
    PropertyI64 eventTimer1Start;
    /// \brief An integer property. Returns the Timestamp of the Timer 1 Start Event.
    /**
     *  Returns the Timestamp of the Timer 1 Start Event.
     */
    PropertyI64 eventTimer1StartTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Timer 1 Start Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Timer 1 Start Event.
     */
    PropertyI64 eventTimer1StartFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Timer 2 Start type of Event.
    /**
     *  Returns the unique Identifier of the Timer 2 Start type of Event.
     */
    PropertyI64 eventTimer2Start;
    /// \brief An integer property. Returns the Timestamp of the Timer 2 Start Event.
    /**
     *  Returns the Timestamp of the Timer 2 Start Event.
     */
    PropertyI64 eventTimer2StartTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Timer 2 Start Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Timer 2 Start Event.
     */
    PropertyI64 eventTimer2StartFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Timer 3 Start type of Event.
    /**
     *  Returns the unique Identifier of the Timer 3 Start type of Event.
     */
    PropertyI64 eventTimer3Start;
    /// \brief An integer property. Returns the Timestamp of the Timer 3 Start Event.
    /**
     *  Returns the Timestamp of the Timer 3 Start Event.
     */
    PropertyI64 eventTimer3StartTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Timer 3 Start Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Timer 3 Start Event.
     */
    PropertyI64 eventTimer3StartFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Timer 4 Start type of Event.
    /**
     *  Returns the unique Identifier of the Timer 4 Start type of Event.
     */
    PropertyI64 eventTimer4Start;
    /// \brief An integer property. Returns the Timestamp of the Timer 4 Start Event.
    /**
     *  Returns the Timestamp of the Timer 4 Start Event.
     */
    PropertyI64 eventTimer4StartTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Timer 4 Start Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Timer 4 Start Event.
     */
    PropertyI64 eventTimer4StartFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Timer 5 Start type of Event.
    /**
     *  Returns the unique Identifier of the Timer 5 Start type of Event.
     */
    PropertyI64 eventTimer5Start;
    /// \brief An integer property. Returns the Timestamp of the Timer 5 Start Event.
    /**
     *  Returns the Timestamp of the Timer 5 Start Event.
     */
    PropertyI64 eventTimer5StartTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Timer 5 Start Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Timer 5 Start Event.
     */
    PropertyI64 eventTimer5StartFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Timer 6 Start type of Event.
    /**
     *  Returns the unique Identifier of the Timer 6 Start type of Event.
     */
    PropertyI64 eventTimer6Start;
    /// \brief An integer property. Returns the Timestamp of the Timer 6 Start Event.
    /**
     *  Returns the Timestamp of the Timer 6 Start Event.
     */
    PropertyI64 eventTimer6StartTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Timer 6 Start Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Timer 6 Start Event.
     */
    PropertyI64 eventTimer6StartFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Timer 7 Start type of Event.
    /**
     *  Returns the unique Identifier of the Timer 7 Start type of Event.
     */
    PropertyI64 eventTimer7Start;
    /// \brief An integer property. Returns the Timestamp of the Timer 7 Start Event.
    /**
     *  Returns the Timestamp of the Timer 7 Start Event.
     */
    PropertyI64 eventTimer7StartTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Timer 7 Start Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Timer 7 Start Event.
     */
    PropertyI64 eventTimer7StartFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Timer 8 Start type of Event.
    /**
     *  Returns the unique Identifier of the Timer 8 Start type of Event.
     */
    PropertyI64 eventTimer8Start;
    /// \brief An integer property. Returns the Timestamp of the Timer 8 Start Event.
    /**
     *  Returns the Timestamp of the Timer 8 Start Event.
     */
    PropertyI64 eventTimer8StartTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Timer 8 Start Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Timer 8 Start Event.
     */
    PropertyI64 eventTimer8StartFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Timer 9 Start type of Event.
    /**
     *  Returns the unique Identifier of the Timer 9 Start type of Event.
     */
    PropertyI64 eventTimer9Start;
    /// \brief An integer property. Returns the Timestamp of the Timer 9 Start Event.
    /**
     *  Returns the Timestamp of the Timer 9 Start Event.
     */
    PropertyI64 eventTimer9StartTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Timer 9 Start Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Timer 9 Start Event.
     */
    PropertyI64 eventTimer9StartFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Timer 10 Start type of Event.
    /**
     *  Returns the unique Identifier of the Timer 10 Start type of Event.
     */
    PropertyI64 eventTimer10Start;
    /// \brief An integer property. Returns the Timestamp of the Timer 10 Start Event.
    /**
     *  Returns the Timestamp of the Timer 10 Start Event.
     */
    PropertyI64 eventTimer10StartTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Timer 10 Start Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Timer 10 Start Event.
     */
    PropertyI64 eventTimer10StartFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Timer 11 Start type of Event.
    /**
     *  Returns the unique Identifier of the Timer 11 Start type of Event.
     */
    PropertyI64 eventTimer11Start;
    /// \brief An integer property. Returns the Timestamp of the Timer 11 Start Event.
    /**
     *  Returns the Timestamp of the Timer 11 Start Event.
     */
    PropertyI64 eventTimer11StartTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Timer 11 Start Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Timer 11 Start Event.
     */
    PropertyI64 eventTimer11StartFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Timer 12 Start type of Event.
    /**
     *  Returns the unique Identifier of the Timer 12 Start type of Event.
     */
    PropertyI64 eventTimer12Start;
    /// \brief An integer property. Returns the Timestamp of the Timer 12 Start Event.
    /**
     *  Returns the Timestamp of the Timer 12 Start Event.
     */
    PropertyI64 eventTimer12StartTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Timer 12 Start Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Timer 12 Start Event.
     */
    PropertyI64 eventTimer12StartFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Timer 13 Start type of Event.
    /**
     *  Returns the unique Identifier of the Timer 13 Start type of Event.
     */
    PropertyI64 eventTimer13Start;
    /// \brief An integer property. Returns the Timestamp of the Timer 13 Start Event.
    /**
     *  Returns the Timestamp of the Timer 13 Start Event.
     */
    PropertyI64 eventTimer13StartTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Timer 13 Start Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Timer 13 Start Event.
     */
    PropertyI64 eventTimer13StartFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Timer 14 Start type of Event.
    /**
     *  Returns the unique Identifier of the Timer 14 Start type of Event.
     */
    PropertyI64 eventTimer14Start;
    /// \brief An integer property. Returns the Timestamp of the Timer 14 Start Event.
    /**
     *  Returns the Timestamp of the Timer 14 Start Event.
     */
    PropertyI64 eventTimer14StartTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Timer 14 Start Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Timer 14 Start Event.
     */
    PropertyI64 eventTimer14StartFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Timer 0 End type of Event.
    /**
     *  Returns the unique Identifier of the Timer 0 End type of Event.
     */
    PropertyI64 eventTimer0End;
    /// \brief An integer property. Returns the Timestamp of the Timer 0 End Event.
    /**
     *  Returns the Timestamp of the Timer 0 End Event.
     */
    PropertyI64 eventTimer0EndTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Timer 0 End Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Timer 0 End Event.
     */
    PropertyI64 eventTimer0EndFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Timer 1 End type of Event.
    /**
     *  Returns the unique Identifier of the Timer 1 End type of Event.
     */
    PropertyI64 eventTimer1End;
    /// \brief An integer property. Returns the Timestamp of the Timer 1 End Event.
    /**
     *  Returns the Timestamp of the Timer 1 End Event.
     */
    PropertyI64 eventTimer1EndTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Timer 1 End Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Timer 1 End Event.
     */
    PropertyI64 eventTimer1EndFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Timer 2 End type of Event.
    /**
     *  Returns the unique Identifier of the Timer 2 End type of Event.
     */
    PropertyI64 eventTimer2End;
    /// \brief An integer property. Returns the Timestamp of the Timer 2 End Event.
    /**
     *  Returns the Timestamp of the Timer 2 End Event.
     */
    PropertyI64 eventTimer2EndTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Timer 2 End Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Timer 2 End Event.
     */
    PropertyI64 eventTimer2EndFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Timer 3 End type of Event.
    /**
     *  Returns the unique Identifier of the Timer 3 End type of Event.
     */
    PropertyI64 eventTimer3End;
    /// \brief An integer property. Returns the Timestamp of the Timer 3 End Event.
    /**
     *  Returns the Timestamp of the Timer 3 End Event.
     */
    PropertyI64 eventTimer3EndTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Timer 3 End Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Timer 3 End Event.
     */
    PropertyI64 eventTimer3EndFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Timer 4 End type of Event.
    /**
     *  Returns the unique Identifier of the Timer 4 End type of Event.
     */
    PropertyI64 eventTimer4End;
    /// \brief An integer property. Returns the Timestamp of the Timer 4 End Event.
    /**
     *  Returns the Timestamp of the Timer 4 End Event.
     */
    PropertyI64 eventTimer4EndTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Timer 4 End Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Timer 4 End Event.
     */
    PropertyI64 eventTimer4EndFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Timer 5 End type of Event.
    /**
     *  Returns the unique Identifier of the Timer 5 End type of Event.
     */
    PropertyI64 eventTimer5End;
    /// \brief An integer property. Returns the Timestamp of the Timer 5 End Event.
    /**
     *  Returns the Timestamp of the Timer 5 End Event.
     */
    PropertyI64 eventTimer5EndTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Timer 5 End Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Timer 5 End Event.
     */
    PropertyI64 eventTimer5EndFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Timer 6 End type of Event.
    /**
     *  Returns the unique Identifier of the Timer 6 End type of Event.
     */
    PropertyI64 eventTimer6End;
    /// \brief An integer property. Returns the Timestamp of the Timer 6 End Event.
    /**
     *  Returns the Timestamp of the Timer 6 End Event.
     */
    PropertyI64 eventTimer6EndTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Timer 6 End Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Timer 6 End Event.
     */
    PropertyI64 eventTimer6EndFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Timer 7 End type of Event.
    /**
     *  Returns the unique Identifier of the Timer 7 End type of Event.
     */
    PropertyI64 eventTimer7End;
    /// \brief An integer property. Returns the Timestamp of the Timer 7 End Event.
    /**
     *  Returns the Timestamp of the Timer 7 End Event.
     */
    PropertyI64 eventTimer7EndTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Timer 7 End Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Timer 7 End Event.
     */
    PropertyI64 eventTimer7EndFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Timer 8 End type of Event.
    /**
     *  Returns the unique Identifier of the Timer 8 End type of Event.
     */
    PropertyI64 eventTimer8End;
    /// \brief An integer property. Returns the Timestamp of the Timer 8 End Event.
    /**
     *  Returns the Timestamp of the Timer 8 End Event.
     */
    PropertyI64 eventTimer8EndTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Timer 8 End Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Timer 8 End Event.
     */
    PropertyI64 eventTimer8EndFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Timer 9 End type of Event.
    /**
     *  Returns the unique Identifier of the Timer 9 End type of Event.
     */
    PropertyI64 eventTimer9End;
    /// \brief An integer property. Returns the Timestamp of the Timer 9 End Event.
    /**
     *  Returns the Timestamp of the Timer 9 End Event.
     */
    PropertyI64 eventTimer9EndTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Timer 9 End Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Timer 9 End Event.
     */
    PropertyI64 eventTimer9EndFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Timer 10 End type of Event.
    /**
     *  Returns the unique Identifier of the Timer 10 End type of Event.
     */
    PropertyI64 eventTimer10End;
    /// \brief An integer property. Returns the Timestamp of the Timer 10 End Event.
    /**
     *  Returns the Timestamp of the Timer 10 End Event.
     */
    PropertyI64 eventTimer10EndTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Timer 10 End Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Timer 10 End Event.
     */
    PropertyI64 eventTimer10EndFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Timer 11 End type of Event.
    /**
     *  Returns the unique Identifier of the Timer 11 End type of Event.
     */
    PropertyI64 eventTimer11End;
    /// \brief An integer property. Returns the Timestamp of the Timer 11 End Event.
    /**
     *  Returns the Timestamp of the Timer 11 End Event.
     */
    PropertyI64 eventTimer11EndTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Timer 11 End Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Timer 11 End Event.
     */
    PropertyI64 eventTimer11EndFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Timer 12 End type of Event.
    /**
     *  Returns the unique Identifier of the Timer 12 End type of Event.
     */
    PropertyI64 eventTimer12End;
    /// \brief An integer property. Returns the Timestamp of the Timer 12 End Event.
    /**
     *  Returns the Timestamp of the Timer 12 End Event.
     */
    PropertyI64 eventTimer12EndTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Timer 12 End Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Timer 12 End Event.
     */
    PropertyI64 eventTimer12EndFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Timer 13 End type of Event.
    /**
     *  Returns the unique Identifier of the Timer 13 End type of Event.
     */
    PropertyI64 eventTimer13End;
    /// \brief An integer property. Returns the Timestamp of the Timer 13 End Event.
    /**
     *  Returns the Timestamp of the Timer 13 End Event.
     */
    PropertyI64 eventTimer13EndTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Timer 13 End Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Timer 13 End Event.
     */
    PropertyI64 eventTimer13EndFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Timer 14 End type of Event.
    /**
     *  Returns the unique Identifier of the Timer 14 End type of Event.
     */
    PropertyI64 eventTimer14End;
    /// \brief An integer property. Returns the Timestamp of the Timer 14 End Event.
    /**
     *  Returns the Timestamp of the Timer 14 End Event.
     */
    PropertyI64 eventTimer14EndTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Timer 14 End Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Timer 14 End Event.
     */
    PropertyI64 eventTimer14EndFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Encoder 0 Stopped type of Event.
    /**
     *  Returns the unique Identifier of the Encoder 0 Stopped type of Event.
     */
    PropertyI64 eventEncoder0Stopped;
    /// \brief An integer property. Returns the Timestamp of the Encoder 0 Stopped Event.
    /**
     *  Returns the Timestamp of the Encoder 0 Stopped Event.
     */
    PropertyI64 eventEncoder0StoppedTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Encoder 0 Stopped Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Encoder 0 Stopped Event.
     */
    PropertyI64 eventEncoder0StoppedFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Encoder 1 Stopped type of Event.
    /**
     *  Returns the unique Identifier of the Encoder 1 Stopped type of Event.
     */
    PropertyI64 eventEncoder1Stopped;
    /// \brief An integer property. Returns the Timestamp of the Encoder 1 Stopped Event.
    /**
     *  Returns the Timestamp of the Encoder 1 Stopped Event.
     */
    PropertyI64 eventEncoder1StoppedTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Encoder 1 Stopped Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Encoder 1 Stopped Event.
     */
    PropertyI64 eventEncoder1StoppedFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Encoder 2 Stopped type of Event.
    /**
     *  Returns the unique Identifier of the Encoder 2 Stopped type of Event.
     */
    PropertyI64 eventEncoder2Stopped;
    /// \brief An integer property. Returns the Timestamp of the Encoder 2 Stopped Event.
    /**
     *  Returns the Timestamp of the Encoder 2 Stopped Event.
     */
    PropertyI64 eventEncoder2StoppedTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Encoder 2 Stopped Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Encoder 2 Stopped Event.
     */
    PropertyI64 eventEncoder2StoppedFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Encoder 3 Stopped type of Event.
    /**
     *  Returns the unique Identifier of the Encoder 3 Stopped type of Event.
     */
    PropertyI64 eventEncoder3Stopped;
    /// \brief An integer property. Returns the Timestamp of the Encoder 3 Stopped Event.
    /**
     *  Returns the Timestamp of the Encoder 3 Stopped Event.
     */
    PropertyI64 eventEncoder3StoppedTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Encoder 3 Stopped Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Encoder 3 Stopped Event.
     */
    PropertyI64 eventEncoder3StoppedFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Encoder 4 Stopped type of Event.
    /**
     *  Returns the unique Identifier of the Encoder 4 Stopped type of Event.
     */
    PropertyI64 eventEncoder4Stopped;
    /// \brief An integer property. Returns the Timestamp of the Encoder 4 Stopped Event.
    /**
     *  Returns the Timestamp of the Encoder 4 Stopped Event.
     */
    PropertyI64 eventEncoder4StoppedTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Encoder 4 Stopped Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Encoder 4 Stopped Event.
     */
    PropertyI64 eventEncoder4StoppedFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Encoder 5 Stopped type of Event.
    /**
     *  Returns the unique Identifier of the Encoder 5 Stopped type of Event.
     */
    PropertyI64 eventEncoder5Stopped;
    /// \brief An integer property. Returns the Timestamp of the Encoder 5 Stopped Event.
    /**
     *  Returns the Timestamp of the Encoder 5 Stopped Event.
     */
    PropertyI64 eventEncoder5StoppedTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Encoder 5 Stopped Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Encoder 5 Stopped Event.
     */
    PropertyI64 eventEncoder5StoppedFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Encoder 6 Stopped type of Event.
    /**
     *  Returns the unique Identifier of the Encoder 6 Stopped type of Event.
     */
    PropertyI64 eventEncoder6Stopped;
    /// \brief An integer property. Returns the Timestamp of the Encoder 6 Stopped Event.
    /**
     *  Returns the Timestamp of the Encoder 6 Stopped Event.
     */
    PropertyI64 eventEncoder6StoppedTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Encoder 6 Stopped Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Encoder 6 Stopped Event.
     */
    PropertyI64 eventEncoder6StoppedFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Encoder 7 Stopped type of Event.
    /**
     *  Returns the unique Identifier of the Encoder 7 Stopped type of Event.
     */
    PropertyI64 eventEncoder7Stopped;
    /// \brief An integer property. Returns the Timestamp of the Encoder 7 Stopped Event.
    /**
     *  Returns the Timestamp of the Encoder 7 Stopped Event.
     */
    PropertyI64 eventEncoder7StoppedTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Encoder 7 Stopped Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Encoder 7 Stopped Event.
     */
    PropertyI64 eventEncoder7StoppedFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Encoder 8 Stopped type of Event.
    /**
     *  Returns the unique Identifier of the Encoder 8 Stopped type of Event.
     */
    PropertyI64 eventEncoder8Stopped;
    /// \brief An integer property. Returns the Timestamp of the Encoder 8 Stopped Event.
    /**
     *  Returns the Timestamp of the Encoder 8 Stopped Event.
     */
    PropertyI64 eventEncoder8StoppedTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Encoder 8 Stopped Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Encoder 8 Stopped Event.
     */
    PropertyI64 eventEncoder8StoppedFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Encoder 9 Stopped type of Event.
    /**
     *  Returns the unique Identifier of the Encoder 9 Stopped type of Event.
     */
    PropertyI64 eventEncoder9Stopped;
    /// \brief An integer property. Returns the Timestamp of the Encoder 9 Stopped Event.
    /**
     *  Returns the Timestamp of the Encoder 9 Stopped Event.
     */
    PropertyI64 eventEncoder9StoppedTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Encoder 9 Stopped Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Encoder 9 Stopped Event.
     */
    PropertyI64 eventEncoder9StoppedFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Encoder 10 Stopped type of Event.
    /**
     *  Returns the unique Identifier of the Encoder 10 Stopped type of Event.
     */
    PropertyI64 eventEncoder10Stopped;
    /// \brief An integer property. Returns the Timestamp of the Encoder 10 Stopped Event.
    /**
     *  Returns the Timestamp of the Encoder 10 Stopped Event.
     */
    PropertyI64 eventEncoder10StoppedTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Encoder 10 Stopped Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Encoder 10 Stopped Event.
     */
    PropertyI64 eventEncoder10StoppedFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Encoder 11 Stopped type of Event.
    /**
     *  Returns the unique Identifier of the Encoder 11 Stopped type of Event.
     */
    PropertyI64 eventEncoder11Stopped;
    /// \brief An integer property. Returns the Timestamp of the Encoder 11 Stopped Event.
    /**
     *  Returns the Timestamp of the Encoder 11 Stopped Event.
     */
    PropertyI64 eventEncoder11StoppedTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Encoder 11 Stopped Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Encoder 11 Stopped Event.
     */
    PropertyI64 eventEncoder11StoppedFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Encoder 12 Stopped type of Event.
    /**
     *  Returns the unique Identifier of the Encoder 12 Stopped type of Event.
     */
    PropertyI64 eventEncoder12Stopped;
    /// \brief An integer property. Returns the Timestamp of the Encoder 12 Stopped Event.
    /**
     *  Returns the Timestamp of the Encoder 12 Stopped Event.
     */
    PropertyI64 eventEncoder12StoppedTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Encoder 12 Stopped Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Encoder 12 Stopped Event.
     */
    PropertyI64 eventEncoder12StoppedFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Encoder 13 Stopped type of Event.
    /**
     *  Returns the unique Identifier of the Encoder 13 Stopped type of Event.
     */
    PropertyI64 eventEncoder13Stopped;
    /// \brief An integer property. Returns the Timestamp of the Encoder 13 Stopped Event.
    /**
     *  Returns the Timestamp of the Encoder 13 Stopped Event.
     */
    PropertyI64 eventEncoder13StoppedTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Encoder 13 Stopped Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Encoder 13 Stopped Event.
     */
    PropertyI64 eventEncoder13StoppedFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Encoder 14 Stopped type of Event.
    /**
     *  Returns the unique Identifier of the Encoder 14 Stopped type of Event.
     */
    PropertyI64 eventEncoder14Stopped;
    /// \brief An integer property. Returns the Timestamp of the Encoder 14 Stopped Event.
    /**
     *  Returns the Timestamp of the Encoder 14 Stopped Event.
     */
    PropertyI64 eventEncoder14StoppedTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Encoder 14 Stopped Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Encoder 14 Stopped Event.
     */
    PropertyI64 eventEncoder14StoppedFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Encoder 0 Restarted type of Event.
    /**
     *  Returns the unique Identifier of the Encoder 0 Restarted type of Event.
     */
    PropertyI64 eventEncoder0Restarted;
    /// \brief An integer property. Returns the Timestamp of the Encoder 0 Restarted Event.
    /**
     *  Returns the Timestamp of the Encoder 0 Restarted Event.
     */
    PropertyI64 eventEncoder0RestartedTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Encoder 0 Restarted Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Encoder 0 Restarted Event.
     */
    PropertyI64 eventEncoder0RestartedFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Encoder 1 Restarted type of Event.
    /**
     *  Returns the unique Identifier of the Encoder 1 Restarted type of Event.
     */
    PropertyI64 eventEncoder1Restarted;
    /// \brief An integer property. Returns the Timestamp of the Encoder 1 Restarted Event.
    /**
     *  Returns the Timestamp of the Encoder 1 Restarted Event.
     */
    PropertyI64 eventEncoder1RestartedTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Encoder 1 Restarted Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Encoder 1 Restarted Event.
     */
    PropertyI64 eventEncoder1RestartedFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Encoder 2 Restarted type of Event.
    /**
     *  Returns the unique Identifier of the Encoder 2 Restarted type of Event.
     */
    PropertyI64 eventEncoder2Restarted;
    /// \brief An integer property. Returns the Timestamp of the Encoder 2 Restarted Event.
    /**
     *  Returns the Timestamp of the Encoder 2 Restarted Event.
     */
    PropertyI64 eventEncoder2RestartedTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Encoder 2 Restarted Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Encoder 2 Restarted Event.
     */
    PropertyI64 eventEncoder2RestartedFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Encoder 3 Restarted type of Event.
    /**
     *  Returns the unique Identifier of the Encoder 3 Restarted type of Event.
     */
    PropertyI64 eventEncoder3Restarted;
    /// \brief An integer property. Returns the Timestamp of the Encoder 3 Restarted Event.
    /**
     *  Returns the Timestamp of the Encoder 3 Restarted Event.
     */
    PropertyI64 eventEncoder3RestartedTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Encoder 3 Restarted Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Encoder 3 Restarted Event.
     */
    PropertyI64 eventEncoder3RestartedFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Encoder 4 Restarted type of Event.
    /**
     *  Returns the unique Identifier of the Encoder 4 Restarted type of Event.
     */
    PropertyI64 eventEncoder4Restarted;
    /// \brief An integer property. Returns the Timestamp of the Encoder 4 Restarted Event.
    /**
     *  Returns the Timestamp of the Encoder 4 Restarted Event.
     */
    PropertyI64 eventEncoder4RestartedTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Encoder 4 Restarted Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Encoder 4 Restarted Event.
     */
    PropertyI64 eventEncoder4RestartedFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Encoder 5 Restarted type of Event.
    /**
     *  Returns the unique Identifier of the Encoder 5 Restarted type of Event.
     */
    PropertyI64 eventEncoder5Restarted;
    /// \brief An integer property. Returns the Timestamp of the Encoder 5 Restarted Event.
    /**
     *  Returns the Timestamp of the Encoder 5 Restarted Event.
     */
    PropertyI64 eventEncoder5RestartedTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Encoder 5 Restarted Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Encoder 5 Restarted Event.
     */
    PropertyI64 eventEncoder5RestartedFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Encoder 6 Restarted type of Event.
    /**
     *  Returns the unique Identifier of the Encoder 6 Restarted type of Event.
     */
    PropertyI64 eventEncoder6Restarted;
    /// \brief An integer property. Returns the Timestamp of the Encoder 6 Restarted Event.
    /**
     *  Returns the Timestamp of the Encoder 6 Restarted Event.
     */
    PropertyI64 eventEncoder6RestartedTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Encoder 6 Restarted Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Encoder 6 Restarted Event.
     */
    PropertyI64 eventEncoder6RestartedFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Encoder 7 Restarted type of Event.
    /**
     *  Returns the unique Identifier of the Encoder 7 Restarted type of Event.
     */
    PropertyI64 eventEncoder7Restarted;
    /// \brief An integer property. Returns the Timestamp of the Encoder 7 Restarted Event.
    /**
     *  Returns the Timestamp of the Encoder 7 Restarted Event.
     */
    PropertyI64 eventEncoder7RestartedTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Encoder 7 Restarted Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Encoder 7 Restarted Event.
     */
    PropertyI64 eventEncoder7RestartedFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Encoder 8 Restarted type of Event.
    /**
     *  Returns the unique Identifier of the Encoder 8 Restarted type of Event.
     */
    PropertyI64 eventEncoder8Restarted;
    /// \brief An integer property. Returns the Timestamp of the Encoder 8 Restarted Event.
    /**
     *  Returns the Timestamp of the Encoder 8 Restarted Event.
     */
    PropertyI64 eventEncoder8RestartedTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Encoder 8 Restarted Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Encoder 8 Restarted Event.
     */
    PropertyI64 eventEncoder8RestartedFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Encoder 9 Restarted type of Event.
    /**
     *  Returns the unique Identifier of the Encoder 9 Restarted type of Event.
     */
    PropertyI64 eventEncoder9Restarted;
    /// \brief An integer property. Returns the Timestamp of the Encoder 9 Restarted Event.
    /**
     *  Returns the Timestamp of the Encoder 9 Restarted Event.
     */
    PropertyI64 eventEncoder9RestartedTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Encoder 9 Restarted Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Encoder 9 Restarted Event.
     */
    PropertyI64 eventEncoder9RestartedFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Encoder 10 Restarted type of Event.
    /**
     *  Returns the unique Identifier of the Encoder 10 Restarted type of Event.
     */
    PropertyI64 eventEncoder10Restarted;
    /// \brief An integer property. Returns the Timestamp of the Encoder 10 Restarted Event.
    /**
     *  Returns the Timestamp of the Encoder 10 Restarted Event.
     */
    PropertyI64 eventEncoder10RestartedTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Encoder 10 Restarted Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Encoder 10 Restarted Event.
     */
    PropertyI64 eventEncoder10RestartedFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Encoder 11 Restarted type of Event.
    /**
     *  Returns the unique Identifier of the Encoder 11 Restarted type of Event.
     */
    PropertyI64 eventEncoder11Restarted;
    /// \brief An integer property. Returns the Timestamp of the Encoder 11 Restarted Event.
    /**
     *  Returns the Timestamp of the Encoder 11 Restarted Event.
     */
    PropertyI64 eventEncoder11RestartedTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Encoder 11 Restarted Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Encoder 11 Restarted Event.
     */
    PropertyI64 eventEncoder11RestartedFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Encoder 12 Restarted type of Event.
    /**
     *  Returns the unique Identifier of the Encoder 12 Restarted type of Event.
     */
    PropertyI64 eventEncoder12Restarted;
    /// \brief An integer property. Returns the Timestamp of the Encoder 12 Restarted Event.
    /**
     *  Returns the Timestamp of the Encoder 12 Restarted Event.
     */
    PropertyI64 eventEncoder12RestartedTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Encoder 12 Restarted Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Encoder 12 Restarted Event.
     */
    PropertyI64 eventEncoder12RestartedFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Encoder 13 Restarted type of Event.
    /**
     *  Returns the unique Identifier of the Encoder 13 Restarted type of Event.
     */
    PropertyI64 eventEncoder13Restarted;
    /// \brief An integer property. Returns the Timestamp of the Encoder 13 Restarted Event.
    /**
     *  Returns the Timestamp of the Encoder 13 Restarted Event.
     */
    PropertyI64 eventEncoder13RestartedTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Encoder 13 Restarted Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Encoder 13 Restarted Event.
     */
    PropertyI64 eventEncoder13RestartedFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Encoder 14 Restarted type of Event.
    /**
     *  Returns the unique Identifier of the Encoder 14 Restarted type of Event.
     */
    PropertyI64 eventEncoder14Restarted;
    /// \brief An integer property. Returns the Timestamp of the Encoder 14 Restarted Event.
    /**
     *  Returns the Timestamp of the Encoder 14 Restarted Event.
     */
    PropertyI64 eventEncoder14RestartedTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Encoder 14 Restarted Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Encoder 14 Restarted Event.
     */
    PropertyI64 eventEncoder14RestartedFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Line 0 Rising Edge type of Event.
    /**
     *  Returns the unique Identifier of the Line 0 Rising Edge type of Event.
     */
    PropertyI64 eventLine0RisingEdge;
    /// \brief An integer property. Returns the Timestamp of the Line 0 Rising Edge Event.
    /**
     *  Returns the Timestamp of the Line 0 Rising Edge Event.
     */
    PropertyI64 eventLine0RisingEdgeTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Line 0 Rising Edge Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Line 0 Rising Edge Event.
     */
    PropertyI64 eventLine0RisingEdgeFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Line 1 Rising Edge type of Event.
    /**
     *  Returns the unique Identifier of the Line 1 Rising Edge type of Event.
     */
    PropertyI64 eventLine1RisingEdge;
    /// \brief An integer property. Returns the Timestamp of the Line 1 Rising Edge Event.
    /**
     *  Returns the Timestamp of the Line 1 Rising Edge Event.
     */
    PropertyI64 eventLine1RisingEdgeTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Line 1 Rising Edge Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Line 1 Rising Edge Event.
     */
    PropertyI64 eventLine1RisingEdgeFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Line 2 Rising Edge type of Event.
    /**
     *  Returns the unique Identifier of the Line 2 Rising Edge type of Event.
     */
    PropertyI64 eventLine2RisingEdge;
    /// \brief An integer property. Returns the Timestamp of the Line 2 Rising Edge Event.
    /**
     *  Returns the Timestamp of the Line 2 Rising Edge Event.
     */
    PropertyI64 eventLine2RisingEdgeTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Line 2 Rising Edge Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Line 2 Rising Edge Event.
     */
    PropertyI64 eventLine2RisingEdgeFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Line 3 Rising Edge type of Event.
    /**
     *  Returns the unique Identifier of the Line 3 Rising Edge type of Event.
     */
    PropertyI64 eventLine3RisingEdge;
    /// \brief An integer property. Returns the Timestamp of the Line 3 Rising Edge Event.
    /**
     *  Returns the Timestamp of the Line 3 Rising Edge Event.
     */
    PropertyI64 eventLine3RisingEdgeTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Line 3 Rising Edge Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Line 3 Rising Edge Event.
     */
    PropertyI64 eventLine3RisingEdgeFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Line 4 Rising Edge type of Event.
    /**
     *  Returns the unique Identifier of the Line 4 Rising Edge type of Event.
     */
    PropertyI64 eventLine4RisingEdge;
    /// \brief An integer property. Returns the Timestamp of the Line 4 Rising Edge Event.
    /**
     *  Returns the Timestamp of the Line 4 Rising Edge Event.
     */
    PropertyI64 eventLine4RisingEdgeTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Line 4 Rising Edge Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Line 4 Rising Edge Event.
     */
    PropertyI64 eventLine4RisingEdgeFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Line 5 Rising Edge type of Event.
    /**
     *  Returns the unique Identifier of the Line 5 Rising Edge type of Event.
     */
    PropertyI64 eventLine5RisingEdge;
    /// \brief An integer property. Returns the Timestamp of the Line 5 Rising Edge Event.
    /**
     *  Returns the Timestamp of the Line 5 Rising Edge Event.
     */
    PropertyI64 eventLine5RisingEdgeTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Line 5 Rising Edge Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Line 5 Rising Edge Event.
     */
    PropertyI64 eventLine5RisingEdgeFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Line 6 Rising Edge type of Event.
    /**
     *  Returns the unique Identifier of the Line 6 Rising Edge type of Event.
     */
    PropertyI64 eventLine6RisingEdge;
    /// \brief An integer property. Returns the Timestamp of the Line 6 Rising Edge Event.
    /**
     *  Returns the Timestamp of the Line 6 Rising Edge Event.
     */
    PropertyI64 eventLine6RisingEdgeTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Line 6 Rising Edge Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Line 6 Rising Edge Event.
     */
    PropertyI64 eventLine6RisingEdgeFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Line 7 Rising Edge type of Event.
    /**
     *  Returns the unique Identifier of the Line 7 Rising Edge type of Event.
     */
    PropertyI64 eventLine7RisingEdge;
    /// \brief An integer property. Returns the Timestamp of the Line 7 Rising Edge Event.
    /**
     *  Returns the Timestamp of the Line 7 Rising Edge Event.
     */
    PropertyI64 eventLine7RisingEdgeTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Line 7 Rising Edge Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Line 7 Rising Edge Event.
     */
    PropertyI64 eventLine7RisingEdgeFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Line 8 Rising Edge type of Event.
    /**
     *  Returns the unique Identifier of the Line 8 Rising Edge type of Event.
     */
    PropertyI64 eventLine8RisingEdge;
    /// \brief An integer property. Returns the Timestamp of the Line 8 Rising Edge Event.
    /**
     *  Returns the Timestamp of the Line 8 Rising Edge Event.
     */
    PropertyI64 eventLine8RisingEdgeTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Line 8 Rising Edge Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Line 8 Rising Edge Event.
     */
    PropertyI64 eventLine8RisingEdgeFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Line 9 Rising Edge type of Event.
    /**
     *  Returns the unique Identifier of the Line 9 Rising Edge type of Event.
     */
    PropertyI64 eventLine9RisingEdge;
    /// \brief An integer property. Returns the Timestamp of the Line 9 Rising Edge Event.
    /**
     *  Returns the Timestamp of the Line 9 Rising Edge Event.
     */
    PropertyI64 eventLine9RisingEdgeTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Line 9 Rising Edge Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Line 9 Rising Edge Event.
     */
    PropertyI64 eventLine9RisingEdgeFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Line 10 Rising Edge type of Event.
    /**
     *  Returns the unique Identifier of the Line 10 Rising Edge type of Event.
     */
    PropertyI64 eventLine10RisingEdge;
    /// \brief An integer property. Returns the Timestamp of the Line 10 Rising Edge Event.
    /**
     *  Returns the Timestamp of the Line 10 Rising Edge Event.
     */
    PropertyI64 eventLine10RisingEdgeTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Line 10 Rising Edge Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Line 10 Rising Edge Event.
     */
    PropertyI64 eventLine10RisingEdgeFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Line 11 Rising Edge type of Event.
    /**
     *  Returns the unique Identifier of the Line 11 Rising Edge type of Event.
     */
    PropertyI64 eventLine11RisingEdge;
    /// \brief An integer property. Returns the Timestamp of the Line 11 Rising Edge Event.
    /**
     *  Returns the Timestamp of the Line 11 Rising Edge Event.
     */
    PropertyI64 eventLine11RisingEdgeTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Line 11 Rising Edge Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Line 11 Rising Edge Event.
     */
    PropertyI64 eventLine11RisingEdgeFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Line 12 Rising Edge type of Event.
    /**
     *  Returns the unique Identifier of the Line 12 Rising Edge type of Event.
     */
    PropertyI64 eventLine12RisingEdge;
    /// \brief An integer property. Returns the Timestamp of the Line 12 Rising Edge Event.
    /**
     *  Returns the Timestamp of the Line 12 Rising Edge Event.
     */
    PropertyI64 eventLine12RisingEdgeTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Line 12 Rising Edge Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Line 12 Rising Edge Event.
     */
    PropertyI64 eventLine12RisingEdgeFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Line 13 Rising Edge type of Event.
    /**
     *  Returns the unique Identifier of the Line 13 Rising Edge type of Event.
     */
    PropertyI64 eventLine13RisingEdge;
    /// \brief An integer property. Returns the Timestamp of the Line 13 Rising Edge Event.
    /**
     *  Returns the Timestamp of the Line 13 Rising Edge Event.
     */
    PropertyI64 eventLine13RisingEdgeTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Line 13 Rising Edge Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Line 13 Rising Edge Event.
     */
    PropertyI64 eventLine13RisingEdgeFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Line 14 Rising Edge type of Event.
    /**
     *  Returns the unique Identifier of the Line 14 Rising Edge type of Event.
     */
    PropertyI64 eventLine14RisingEdge;
    /// \brief An integer property. Returns the Timestamp of the Line 14 Rising Edge Event.
    /**
     *  Returns the Timestamp of the Line 14 Rising Edge Event.
     */
    PropertyI64 eventLine14RisingEdgeTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Line 14 Rising Edge Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Line 14 Rising Edge Event.
     */
    PropertyI64 eventLine14RisingEdgeFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Line 0 Falling Edge type of Event.
    /**
     *  Returns the unique Identifier of the Line 0 Falling Edge type of Event.
     */
    PropertyI64 eventLine0FallingEdge;
    /// \brief An integer property. Returns the Timestamp of the Line 0 Falling Edge Event.
    /**
     *  Returns the Timestamp of the Line 0 Falling Edge Event.
     */
    PropertyI64 eventLine0FallingEdgeTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Line 0 Falling Edge Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Line 0 Falling Edge Event.
     */
    PropertyI64 eventLine0FallingEdgeFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Line 1 Falling Edge type of Event.
    /**
     *  Returns the unique Identifier of the Line 1 Falling Edge type of Event.
     */
    PropertyI64 eventLine1FallingEdge;
    /// \brief An integer property. Returns the Timestamp of the Line 1 Falling Edge Event.
    /**
     *  Returns the Timestamp of the Line 1 Falling Edge Event.
     */
    PropertyI64 eventLine1FallingEdgeTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Line 1 Falling Edge Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Line 1 Falling Edge Event.
     */
    PropertyI64 eventLine1FallingEdgeFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Line 2 Falling Edge type of Event.
    /**
     *  Returns the unique Identifier of the Line 2 Falling Edge type of Event.
     */
    PropertyI64 eventLine2FallingEdge;
    /// \brief An integer property. Returns the Timestamp of the Line 2 Falling Edge Event.
    /**
     *  Returns the Timestamp of the Line 2 Falling Edge Event.
     */
    PropertyI64 eventLine2FallingEdgeTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Line 2 Falling Edge Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Line 2 Falling Edge Event.
     */
    PropertyI64 eventLine2FallingEdgeFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Line 3 Falling Edge type of Event.
    /**
     *  Returns the unique Identifier of the Line 3 Falling Edge type of Event.
     */
    PropertyI64 eventLine3FallingEdge;
    /// \brief An integer property. Returns the Timestamp of the Line 3 Falling Edge Event.
    /**
     *  Returns the Timestamp of the Line 3 Falling Edge Event.
     */
    PropertyI64 eventLine3FallingEdgeTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Line 3 Falling Edge Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Line 3 Falling Edge Event.
     */
    PropertyI64 eventLine3FallingEdgeFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Line 4 Falling Edge type of Event.
    /**
     *  Returns the unique Identifier of the Line 4 Falling Edge type of Event.
     */
    PropertyI64 eventLine4FallingEdge;
    /// \brief An integer property. Returns the Timestamp of the Line 4 Falling Edge Event.
    /**
     *  Returns the Timestamp of the Line 4 Falling Edge Event.
     */
    PropertyI64 eventLine4FallingEdgeTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Line 4 Falling Edge Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Line 4 Falling Edge Event.
     */
    PropertyI64 eventLine4FallingEdgeFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Line 5 Falling Edge type of Event.
    /**
     *  Returns the unique Identifier of the Line 5 Falling Edge type of Event.
     */
    PropertyI64 eventLine5FallingEdge;
    /// \brief An integer property. Returns the Timestamp of the Line 5 Falling Edge Event.
    /**
     *  Returns the Timestamp of the Line 5 Falling Edge Event.
     */
    PropertyI64 eventLine5FallingEdgeTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Line 5 Falling Edge Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Line 5 Falling Edge Event.
     */
    PropertyI64 eventLine5FallingEdgeFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Line 6 Falling Edge type of Event.
    /**
     *  Returns the unique Identifier of the Line 6 Falling Edge type of Event.
     */
    PropertyI64 eventLine6FallingEdge;
    /// \brief An integer property. Returns the Timestamp of the Line 6 Falling Edge Event.
    /**
     *  Returns the Timestamp of the Line 6 Falling Edge Event.
     */
    PropertyI64 eventLine6FallingEdgeTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Line 6 Falling Edge Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Line 6 Falling Edge Event.
     */
    PropertyI64 eventLine6FallingEdgeFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Line 7 Falling Edge type of Event.
    /**
     *  Returns the unique Identifier of the Line 7 Falling Edge type of Event.
     */
    PropertyI64 eventLine7FallingEdge;
    /// \brief An integer property. Returns the Timestamp of the Line 7 Falling Edge Event.
    /**
     *  Returns the Timestamp of the Line 7 Falling Edge Event.
     */
    PropertyI64 eventLine7FallingEdgeTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Line 7 Falling Edge Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Line 7 Falling Edge Event.
     */
    PropertyI64 eventLine7FallingEdgeFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Line 8 Falling Edge type of Event.
    /**
     *  Returns the unique Identifier of the Line 8 Falling Edge type of Event.
     */
    PropertyI64 eventLine8FallingEdge;
    /// \brief An integer property. Returns the Timestamp of the Line 8 Falling Edge Event.
    /**
     *  Returns the Timestamp of the Line 8 Falling Edge Event.
     */
    PropertyI64 eventLine8FallingEdgeTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Line 8 Falling Edge Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Line 8 Falling Edge Event.
     */
    PropertyI64 eventLine8FallingEdgeFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Line 9 Falling Edge type of Event.
    /**
     *  Returns the unique Identifier of the Line 9 Falling Edge type of Event.
     */
    PropertyI64 eventLine9FallingEdge;
    /// \brief An integer property. Returns the Timestamp of the Line 9 Falling Edge Event.
    /**
     *  Returns the Timestamp of the Line 9 Falling Edge Event.
     */
    PropertyI64 eventLine9FallingEdgeTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Line 9 Falling Edge Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Line 9 Falling Edge Event.
     */
    PropertyI64 eventLine9FallingEdgeFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Line 10 Falling Edge type of Event.
    /**
     *  Returns the unique Identifier of the Line 10 Falling Edge type of Event.
     */
    PropertyI64 eventLine10FallingEdge;
    /// \brief An integer property. Returns the Timestamp of the Line 10 Falling Edge Event.
    /**
     *  Returns the Timestamp of the Line 10 Falling Edge Event.
     */
    PropertyI64 eventLine10FallingEdgeTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Line 10 Falling Edge Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Line 10 Falling Edge Event.
     */
    PropertyI64 eventLine10FallingEdgeFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Line 11 Falling Edge type of Event.
    /**
     *  Returns the unique Identifier of the Line 11 Falling Edge type of Event.
     */
    PropertyI64 eventLine11FallingEdge;
    /// \brief An integer property. Returns the Timestamp of the Line 11 Falling Edge Event.
    /**
     *  Returns the Timestamp of the Line 11 Falling Edge Event.
     */
    PropertyI64 eventLine11FallingEdgeTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Line 11 Falling Edge Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Line 11 Falling Edge Event.
     */
    PropertyI64 eventLine11FallingEdgeFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Line 12 Falling Edge type of Event.
    /**
     *  Returns the unique Identifier of the Line 12 Falling Edge type of Event.
     */
    PropertyI64 eventLine12FallingEdge;
    /// \brief An integer property. Returns the Timestamp of the Line 12 Falling Edge Event.
    /**
     *  Returns the Timestamp of the Line 12 Falling Edge Event.
     */
    PropertyI64 eventLine12FallingEdgeTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Line 12 Falling Edge Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Line 12 Falling Edge Event.
     */
    PropertyI64 eventLine12FallingEdgeFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Line 13 Falling Edge type of Event.
    /**
     *  Returns the unique Identifier of the Line 13 Falling Edge type of Event.
     */
    PropertyI64 eventLine13FallingEdge;
    /// \brief An integer property. Returns the Timestamp of the Line 13 Falling Edge Event.
    /**
     *  Returns the Timestamp of the Line 13 Falling Edge Event.
     */
    PropertyI64 eventLine13FallingEdgeTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Line 13 Falling Edge Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Line 13 Falling Edge Event.
     */
    PropertyI64 eventLine13FallingEdgeFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Line 14 Falling Edge type of Event.
    /**
     *  Returns the unique Identifier of the Line 14 Falling Edge type of Event.
     */
    PropertyI64 eventLine14FallingEdge;
    /// \brief An integer property. Returns the Timestamp of the Line 14 Falling Edge Event.
    /**
     *  Returns the Timestamp of the Line 14 Falling Edge Event.
     */
    PropertyI64 eventLine14FallingEdgeTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Line 14 Falling Edge Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Line 14 Falling Edge Event.
     */
    PropertyI64 eventLine14FallingEdgeFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Line 0 Any Edge type of Event.
    /**
     *  Returns the unique Identifier of the Line 0 Any Edge type of Event.
     */
    PropertyI64 eventLine0AnyEdge;
    /// \brief An integer property. Returns the Timestamp of the Line 0 Any Edge Event.
    /**
     *  Returns the Timestamp of the Line 0 Any Edge Event.
     */
    PropertyI64 eventLine0AnyEdgeTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Line 0 Any Edge Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Line 0 Any Edge Event.
     */
    PropertyI64 eventLine0AnyEdgeFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Line 1 Any Edge type of Event.
    /**
     *  Returns the unique Identifier of the Line 1 Any Edge type of Event.
     */
    PropertyI64 eventLine1AnyEdge;
    /// \brief An integer property. Returns the Timestamp of the Line 1 Any Edge Event.
    /**
     *  Returns the Timestamp of the Line 1 Any Edge Event.
     */
    PropertyI64 eventLine1AnyEdgeTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Line 1 Any Edge Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Line 1 Any Edge Event.
     */
    PropertyI64 eventLine1AnyEdgeFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Line 2 Any Edge type of Event.
    /**
     *  Returns the unique Identifier of the Line 2 Any Edge type of Event.
     */
    PropertyI64 eventLine2AnyEdge;
    /// \brief An integer property. Returns the Timestamp of the Line 2 Any Edge Event.
    /**
     *  Returns the Timestamp of the Line 2 Any Edge Event.
     */
    PropertyI64 eventLine2AnyEdgeTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Line 2 Any Edge Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Line 2 Any Edge Event.
     */
    PropertyI64 eventLine2AnyEdgeFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Line 3 Any Edge type of Event.
    /**
     *  Returns the unique Identifier of the Line 3 Any Edge type of Event.
     */
    PropertyI64 eventLine3AnyEdge;
    /// \brief An integer property. Returns the Timestamp of the Line 3 Any Edge Event.
    /**
     *  Returns the Timestamp of the Line 3 Any Edge Event.
     */
    PropertyI64 eventLine3AnyEdgeTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Line 3 Any Edge Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Line 3 Any Edge Event.
     */
    PropertyI64 eventLine3AnyEdgeFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Line 4 Any Edge type of Event.
    /**
     *  Returns the unique Identifier of the Line 4 Any Edge type of Event.
     */
    PropertyI64 eventLine4AnyEdge;
    /// \brief An integer property. Returns the Timestamp of the Line 4 Any Edge Event.
    /**
     *  Returns the Timestamp of the Line 4 Any Edge Event.
     */
    PropertyI64 eventLine4AnyEdgeTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Line 4 Any Edge Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Line 4 Any Edge Event.
     */
    PropertyI64 eventLine4AnyEdgeFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Line 5 Any Edge type of Event.
    /**
     *  Returns the unique Identifier of the Line 5 Any Edge type of Event.
     */
    PropertyI64 eventLine5AnyEdge;
    /// \brief An integer property. Returns the Timestamp of the Line 5 Any Edge Event.
    /**
     *  Returns the Timestamp of the Line 5 Any Edge Event.
     */
    PropertyI64 eventLine5AnyEdgeTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Line 5 Any Edge Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Line 5 Any Edge Event.
     */
    PropertyI64 eventLine5AnyEdgeFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Line 6 Any Edge type of Event.
    /**
     *  Returns the unique Identifier of the Line 6 Any Edge type of Event.
     */
    PropertyI64 eventLine6AnyEdge;
    /// \brief An integer property. Returns the Timestamp of the Line 6 Any Edge Event.
    /**
     *  Returns the Timestamp of the Line 6 Any Edge Event.
     */
    PropertyI64 eventLine6AnyEdgeTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Line 6 Any Edge Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Line 6 Any Edge Event.
     */
    PropertyI64 eventLine6AnyEdgeFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Line 7 Any Edge type of Event.
    /**
     *  Returns the unique Identifier of the Line 7 Any Edge type of Event.
     */
    PropertyI64 eventLine7AnyEdge;
    /// \brief An integer property. Returns the Timestamp of the Line 7 Any Edge Event.
    /**
     *  Returns the Timestamp of the Line 7 Any Edge Event.
     */
    PropertyI64 eventLine7AnyEdgeTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Line 7 Any Edge Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Line 7 Any Edge Event.
     */
    PropertyI64 eventLine7AnyEdgeFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Line 8 Any Edge type of Event.
    /**
     *  Returns the unique Identifier of the Line 8 Any Edge type of Event.
     */
    PropertyI64 eventLine8AnyEdge;
    /// \brief An integer property. Returns the Timestamp of the Line 8 Any Edge Event.
    /**
     *  Returns the Timestamp of the Line 8 Any Edge Event.
     */
    PropertyI64 eventLine8AnyEdgeTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Line 8 Any Edge Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Line 8 Any Edge Event.
     */
    PropertyI64 eventLine8AnyEdgeFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Line 9 Any Edge type of Event.
    /**
     *  Returns the unique Identifier of the Line 9 Any Edge type of Event.
     */
    PropertyI64 eventLine9AnyEdge;
    /// \brief An integer property. Returns the Timestamp of the Line 9 Any Edge Event.
    /**
     *  Returns the Timestamp of the Line 9 Any Edge Event.
     */
    PropertyI64 eventLine9AnyEdgeTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Line 9 Any Edge Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Line 9 Any Edge Event.
     */
    PropertyI64 eventLine9AnyEdgeFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Line 10 Any Edge type of Event.
    /**
     *  Returns the unique Identifier of the Line 10 Any Edge type of Event.
     */
    PropertyI64 eventLine10AnyEdge;
    /// \brief An integer property. Returns the Timestamp of the Line 10 Any Edge Event.
    /**
     *  Returns the Timestamp of the Line 10 Any Edge Event.
     */
    PropertyI64 eventLine10AnyEdgeTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Line 10 Any Edge Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Line 10 Any Edge Event.
     */
    PropertyI64 eventLine10AnyEdgeFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Line 11 Any Edge type of Event.
    /**
     *  Returns the unique Identifier of the Line 11 Any Edge type of Event.
     */
    PropertyI64 eventLine11AnyEdge;
    /// \brief An integer property. Returns the Timestamp of the Line 11 Any Edge Event.
    /**
     *  Returns the Timestamp of the Line 11 Any Edge Event.
     */
    PropertyI64 eventLine11AnyEdgeTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Line 11 Any Edge Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Line 11 Any Edge Event.
     */
    PropertyI64 eventLine11AnyEdgeFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Line 12 Any Edge type of Event.
    /**
     *  Returns the unique Identifier of the Line 12 Any Edge type of Event.
     */
    PropertyI64 eventLine12AnyEdge;
    /// \brief An integer property. Returns the Timestamp of the Line 12 Any Edge Event.
    /**
     *  Returns the Timestamp of the Line 12 Any Edge Event.
     */
    PropertyI64 eventLine12AnyEdgeTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Line 12 Any Edge Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Line 12 Any Edge Event.
     */
    PropertyI64 eventLine12AnyEdgeFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Line 13 Any Edge type of Event.
    /**
     *  Returns the unique Identifier of the Line 13 Any Edge type of Event.
     */
    PropertyI64 eventLine13AnyEdge;
    /// \brief An integer property. Returns the Timestamp of the Line 13 Any Edge Event.
    /**
     *  Returns the Timestamp of the Line 13 Any Edge Event.
     */
    PropertyI64 eventLine13AnyEdgeTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Line 13 Any Edge Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Line 13 Any Edge Event.
     */
    PropertyI64 eventLine13AnyEdgeFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Line 14 Any Edge type of Event.
    /**
     *  Returns the unique Identifier of the Line 14 Any Edge type of Event.
     */
    PropertyI64 eventLine14AnyEdge;
    /// \brief An integer property. Returns the Timestamp of the Line 14 Any Edge Event.
    /**
     *  Returns the Timestamp of the Line 14 Any Edge Event.
     */
    PropertyI64 eventLine14AnyEdgeTimestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Line 14 Any Edge Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Line 14 Any Edge Event.
     */
    PropertyI64 eventLine14AnyEdgeFrameID;
    /// \brief An integer property. Returns the unique Identifier of the Link Trigger 0 type of Event.
    /**
     *  Returns the unique Identifier of the Link Trigger 0 type of Event.
     */
    PropertyI64 eventLinkTrigger0;
    /// \brief An integer property. Returns the Timestamp of the Link Trigger 0 Event.
    /**
     *  Returns the Timestamp of the Link Trigger 0 Event.
     */
    PropertyI64 eventLinkTrigger0Timestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Link Trigger 0 Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Link Trigger 0 Event.
     */
    PropertyI64 eventLinkTrigger0FrameID;
    /// \brief An integer property. Returns the unique Identifier of the Link Trigger 1 type of Event.
    /**
     *  Returns the unique Identifier of the Link Trigger 1 type of Event.
     */
    PropertyI64 eventLinkTrigger1;
    /// \brief An integer property. Returns the Timestamp of the Link Trigger 1 Event.
    /**
     *  Returns the Timestamp of the Link Trigger 1 Event.
     */
    PropertyI64 eventLinkTrigger1Timestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Link Trigger 1 Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Link Trigger 1 Event.
     */
    PropertyI64 eventLinkTrigger1FrameID;
    /// \brief An integer property. Returns the unique Identifier of the Link Trigger 2 type of Event.
    /**
     *  Returns the unique Identifier of the Link Trigger 2 type of Event.
     */
    PropertyI64 eventLinkTrigger2;
    /// \brief An integer property. Returns the Timestamp of the Link Trigger 2 Event.
    /**
     *  Returns the Timestamp of the Link Trigger 2 Event.
     */
    PropertyI64 eventLinkTrigger2Timestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Link Trigger 2 Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Link Trigger 2 Event.
     */
    PropertyI64 eventLinkTrigger2FrameID;
    /// \brief An integer property. Returns the unique Identifier of the Link Trigger 3 type of Event.
    /**
     *  Returns the unique Identifier of the Link Trigger 3 type of Event.
     */
    PropertyI64 eventLinkTrigger3;
    /// \brief An integer property. Returns the Timestamp of the Link Trigger 3 Event.
    /**
     *  Returns the Timestamp of the Link Trigger 3 Event.
     */
    PropertyI64 eventLinkTrigger3Timestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Link Trigger 3 Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Link Trigger 3 Event.
     */
    PropertyI64 eventLinkTrigger3FrameID;
    /// \brief An integer property. Returns the unique Identifier of the Link Trigger 4 type of Event.
    /**
     *  Returns the unique Identifier of the Link Trigger 4 type of Event.
     */
    PropertyI64 eventLinkTrigger4;
    /// \brief An integer property. Returns the Timestamp of the Link Trigger 4 Event.
    /**
     *  Returns the Timestamp of the Link Trigger 4 Event.
     */
    PropertyI64 eventLinkTrigger4Timestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Link Trigger 4 Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Link Trigger 4 Event.
     */
    PropertyI64 eventLinkTrigger4FrameID;
    /// \brief An integer property. Returns the unique Identifier of the Link Trigger 5 type of Event.
    /**
     *  Returns the unique Identifier of the Link Trigger 5 type of Event.
     */
    PropertyI64 eventLinkTrigger5;
    /// \brief An integer property. Returns the Timestamp of the Link Trigger 5 Event.
    /**
     *  Returns the Timestamp of the Link Trigger 5 Event.
     */
    PropertyI64 eventLinkTrigger5Timestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Link Trigger 5 Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Link Trigger 5 Event.
     */
    PropertyI64 eventLinkTrigger5FrameID;
    /// \brief An integer property. Returns the unique Identifier of the Link Trigger 6 type of Event.
    /**
     *  Returns the unique Identifier of the Link Trigger 6 type of Event.
     */
    PropertyI64 eventLinkTrigger6;
    /// \brief An integer property. Returns the Timestamp of the Link Trigger 6 Event.
    /**
     *  Returns the Timestamp of the Link Trigger 6 Event.
     */
    PropertyI64 eventLinkTrigger6Timestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Link Trigger 6 Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Link Trigger 6 Event.
     */
    PropertyI64 eventLinkTrigger6FrameID;
    /// \brief An integer property. Returns the unique Identifier of the Link Trigger 7 type of Event.
    /**
     *  Returns the unique Identifier of the Link Trigger 7 type of Event.
     */
    PropertyI64 eventLinkTrigger7;
    /// \brief An integer property. Returns the Timestamp of the Link Trigger 7 Event.
    /**
     *  Returns the Timestamp of the Link Trigger 7 Event.
     */
    PropertyI64 eventLinkTrigger7Timestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Link Trigger 7 Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Link Trigger 7 Event.
     */
    PropertyI64 eventLinkTrigger7FrameID;
    /// \brief An integer property. Returns the unique Identifier of the Link Trigger 8 type of Event.
    /**
     *  Returns the unique Identifier of the Link Trigger 8 type of Event.
     */
    PropertyI64 eventLinkTrigger8;
    /// \brief An integer property. Returns the Timestamp of the Link Trigger 8 Event.
    /**
     *  Returns the Timestamp of the Link Trigger 8 Event.
     */
    PropertyI64 eventLinkTrigger8Timestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Link Trigger 8 Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Link Trigger 8 Event.
     */
    PropertyI64 eventLinkTrigger8FrameID;
    /// \brief An integer property. Returns the unique Identifier of the Link Trigger 9 type of Event.
    /**
     *  Returns the unique Identifier of the Link Trigger 9 type of Event.
     */
    PropertyI64 eventLinkTrigger9;
    /// \brief An integer property. Returns the Timestamp of the Link Trigger 9 Event.
    /**
     *  Returns the Timestamp of the Link Trigger 9 Event.
     */
    PropertyI64 eventLinkTrigger9Timestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Link Trigger 9 Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Link Trigger 9 Event.
     */
    PropertyI64 eventLinkTrigger9FrameID;
    /// \brief An integer property. Returns the unique Identifier of the Link Trigger 10 type of Event.
    /**
     *  Returns the unique Identifier of the Link Trigger 10 type of Event.
     */
    PropertyI64 eventLinkTrigger10;
    /// \brief An integer property. Returns the Timestamp of the Link Trigger 10 Event.
    /**
     *  Returns the Timestamp of the Link Trigger 10 Event.
     */
    PropertyI64 eventLinkTrigger10Timestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Link Trigger 10 Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Link Trigger 10 Event.
     */
    PropertyI64 eventLinkTrigger10FrameID;
    /// \brief An integer property. Returns the unique Identifier of the Link Trigger 11 type of Event.
    /**
     *  Returns the unique Identifier of the Link Trigger 11 type of Event.
     */
    PropertyI64 eventLinkTrigger11;
    /// \brief An integer property. Returns the Timestamp of the Link Trigger 11 Event.
    /**
     *  Returns the Timestamp of the Link Trigger 11 Event.
     */
    PropertyI64 eventLinkTrigger11Timestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Link Trigger 11 Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Link Trigger 11 Event.
     */
    PropertyI64 eventLinkTrigger11FrameID;
    /// \brief An integer property. Returns the unique Identifier of the Link Trigger 12 type of Event.
    /**
     *  Returns the unique Identifier of the Link Trigger 12 type of Event.
     */
    PropertyI64 eventLinkTrigger12;
    /// \brief An integer property. Returns the Timestamp of the Link Trigger 12 Event.
    /**
     *  Returns the Timestamp of the Link Trigger 12 Event.
     */
    PropertyI64 eventLinkTrigger12Timestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Link Trigger 12 Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Link Trigger 12 Event.
     */
    PropertyI64 eventLinkTrigger12FrameID;
    /// \brief An integer property. Returns the unique Identifier of the Link Trigger 13 type of Event.
    /**
     *  Returns the unique Identifier of the Link Trigger 13 type of Event.
     */
    PropertyI64 eventLinkTrigger13;
    /// \brief An integer property. Returns the Timestamp of the Link Trigger 13 Event.
    /**
     *  Returns the Timestamp of the Link Trigger 13 Event.
     */
    PropertyI64 eventLinkTrigger13Timestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Link Trigger 13 Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Link Trigger 13 Event.
     */
    PropertyI64 eventLinkTrigger13FrameID;
    /// \brief An integer property. Returns the unique Identifier of the Link Trigger 14 type of Event.
    /**
     *  Returns the unique Identifier of the Link Trigger 14 type of Event.
     */
    PropertyI64 eventLinkTrigger14;
    /// \brief An integer property. Returns the Timestamp of the Link Trigger 14 Event.
    /**
     *  Returns the Timestamp of the Link Trigger 14 Event.
     */
    PropertyI64 eventLinkTrigger14Timestamp;
    /// \brief An integer property. Returns the unique Identifier of the Frame (or image) that generated the Link Trigger 14 Event.
    /**
     *  Returns the unique Identifier of the Frame (or image) that generated the Link Trigger 14 Event.
     */
    PropertyI64 eventLinkTrigger14FrameID;
    /// \brief An integer property. Returns the unique identifier of the Error type of Event.
    /**
     *  Returns the unique identifier of the Error type of Event. It can be used to register a callback function to be notified of the Error event occurrence. Its value uniquely identifies that the event received was an Error.
     */
    PropertyI64 eventError;
    /// \brief An integer property. Returns the Timestamp of the Error Event.
    /**
     *  Returns the Timestamp of the Error Event. It can be used to determine when the event occurred.
     */
    PropertyI64 eventErrorTimestamp;
    /// \brief An integer property. If applicable, returns the unique Identifier of the Frame (or image) that generated the Error Event.
    /**
     *  If applicable, returns the unique Identifier of the Frame (or image) that generated the Error Event.
     */
    PropertyI64 eventErrorFrameID;
    /// \brief An integer property. Returns an error code for the error(s) that happened.
    /**
     *  Returns an error code for the error(s) that happened.
     */
    PropertyI64 eventErrorCode;
    // *INDENT-OFF*
    PYTHON_OR_JAVA_ONLY( %mutable; )
    // *INDENT-ON*
};

//-----------------------------------------------------------------------------
/// \brief Category that contains the User Set control features.
/**
 *  A category that contains the User Set control features.
 * \ingroup GenICamInterfaceDevice
 */
class UserSetControl
//-----------------------------------------------------------------------------
{
public:
    /// \brief Constructs a new <b>mvIMPACT::acquire::GenICam::UserSetControl</b> object.
    explicit UserSetControl(
        /// [in] A pointer to a <b>mvIMPACT::acquire::Device</b> object obtained from a <b>mvIMPACT::acquire::DeviceManager</b> object.
        mvIMPACT::acquire::Device* pDev,
        /// [in] The name of the driver internal setting to access with this instance.
        /// A list of valid setting names can be obtained by a call to
        /// <b>mvIMPACT::acquire::FunctionInterface::getAvailableSettings</b>, new
        /// settings can be created with the function
        /// <b>mvIMPACT::acquire::FunctionInterface::createSetting</b>
        const std::string& settingName = "Base" ) :
        userSetSelector(),
        userSetDescription(),
        userSetLoad(),
        userSetSave(),
        userSetDefault(),
        userSetDefaultSelector(),
        userSetFeatureSelector(),
        userSetFeatureEnable(),
        mvUserData()
    {
        pDev->validateInterfaceLayout( dilGenICam );
        mvIMPACT::acquire::DeviceComponentLocator locator( pDev, mvIMPACT::acquire::dltSetting, settingName );
        locator.bindSearchBase( locator.searchbase_id(), "Camera/GenICam" );
        locator.bindComponent( userSetSelector, "UserSetSelector" );
        locator.bindComponent( userSetDescription, "UserSetDescription" );
        locator.bindComponent( userSetLoad, "UserSetLoad@i" );
        locator.bindComponent( userSetSave, "UserSetSave@i" );
        locator.bindComponent( userSetDefault, "UserSetDefault" );
        if( !userSetDefault.isValid() )
        {
            locator.bindComponent( userSetDefault, "UserSetDefaultSelector" );
        }
        locator.bindComponent( userSetDefaultSelector, "UserSetDefaultSelector" );
        locator.bindComponent( userSetFeatureSelector, "UserSetFeatureSelector" );
        locator.bindComponent( userSetFeatureEnable, "UserSetFeatureEnable" );
        locator.bindComponent( mvUserData, "mvUserData" );
    }
    // *INDENT-OFF*
    PYTHON_OR_JAVA_ONLY( %immutable; )
    // *INDENT-ON*
    /// \brief An enumerated integer property. Selects the feature User Set to load, save or configure.
    /**
     *  Selects the feature User Set to load, save or configure.
     *
     *  The following string values might be valid for this feature:
     *  - \b Default (Display string: 'Default'): Selects the factory setting user set.
     *  - \b UserSet0 (Display string: 'User Set 0'): Selects the user set 0.
     *  - \b UserSet1 (Display string: 'User Set 1'): Selects the user set 1.
     *  - \b UserSet\#2\# (Display string: 'User Set \#2\#'): Selects the user set \#2\#.
     *  - \b UserSet2 (Display string: 'User Set 2'): Selects the user set 2.
     *  - \b UserSet3 (Display string: 'User Set 3'): Selects the user set 3.
     *  - \b UserSet4 (Display string: 'User Set 4'): Selects the user set 4.
     *  - \b UserSet5 (Display string: 'User Set 5'): Selects the user set 5.
     *  - \b UserSet6 (Display string: 'User Set 6'): Selects the user set 6.
     *  - \b UserSet7 (Display string: 'User Set 7'): Selects the user set 7.
     *  - \b UserSet8 (Display string: 'User Set 8'): Selects the user set 8.
     *  - \b UserSet9 (Display string: 'User Set 9'): Selects the user set 9.
     *  - \b UserSet10 (Display string: 'User Set 10'): Selects the user set 10.
     *  - \b UserSet11 (Display string: 'User Set 11'): Selects the user set 11.
     *  - \b UserSet12 (Display string: 'User Set 12'): Selects the user set 12.
     *  - \b UserSet13 (Display string: 'User Set 13'): Selects the user set 13.
     *  - \b UserSet14 (Display string: 'User Set 14'): Selects the user set 14.
     *  - \b UserSet15 (Display string: 'User Set 15'): Selects the user set 15.
     *  - \b UserSet16 (Display string: 'User Set 16')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 userSetSelector;
    /// \brief A string property. Description of the selected User Set content.
    /**
     *  Description of the selected User Set content.
     */
    PropertyS userSetDescription;
    /// \brief A method object. Loads the User Set specified by UserSetSelector to the device and makes it active.
    /**
     *  Loads the User Set specified by UserSetSelector to the device and makes it active.
     */
    Method userSetLoad;
    /// \brief A method object. Save the User Set specified by UserSetSelector to the non-volatile memory of the device.
    /**
     *  Save the User Set specified by UserSetSelector to the non-volatile memory of the device.
     */
    Method userSetSave;
    /// \brief An enumerated integer property. Selects the feature User Set to load and make active by default when the device is reset.
    /**
     *  Selects the feature User Set to load and make active by default when the device is reset.
     *
     *  The following string values might be valid for this feature:
     *  - \b Default (Display string: 'Default'): Select the factory setting user set.
     *  - \b UserSet0 (Display string: 'User Set 0'): Select the user set 0.
     *  - \b UserSet1 (Display string: 'User Set 1'): Select the user set 1.
     *  - \b UserSet\#2\# (Display string: 'User Set \#2\#'): Select the user set \#2\#.
     *  - \b UserSet2 (Display string: 'User Set 2'): Select the user set 2.
     *  - \b UserSet3 (Display string: 'User Set 3'): Select the user set 3.
     *  - \b UserSet4 (Display string: 'User Set 4'): Select the user set 4.
     *  - \b UserSet5 (Display string: 'User Set 5'): Select the user set 5.
     *  - \b UserSet6 (Display string: 'User Set 6'): Select the user set 6.
     *  - \b UserSet7 (Display string: 'User Set 7'): Select the user set 7.
     *  - \b UserSet8 (Display string: 'User Set 8'): Select the user set 8.
     *  - \b UserSet9 (Display string: 'User Set 9'): Select the user set 9.
     *  - \b UserSet10 (Display string: 'User Set 10'): Select the user set 10.
     *  - \b UserSet11 (Display string: 'User Set 11'): Select the user set 11.
     *  - \b UserSet12 (Display string: 'User Set 12'): Select the user set 12.
     *  - \b UserSet13 (Display string: 'User Set 13'): Select the user set 13.
     *  - \b UserSet14 (Display string: 'User Set 14'): Select the user set 14.
     *  - \b UserSet15 (Display string: 'User Set 15'): Select the user set 15.
     *  - \b UserSet16 (Display string: 'User Set 16')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 userSetDefault;
    /// \brief An enumerated integer property. This feature is deprecated (See UserSetDefault).
    /**
     *  \deprecated
     *  This feature is deprecated (See UserSetDefault). Selects the feature User Set to load and make active when the device is reset.
     *
     *  The following string values might be valid for this feature:
     *  - \b Default (Display string: 'Default'): Select the factory setting user set.
     *  - \b UserSet0 (Display string: 'User Set 0'): Select the user set 0.
     *  - \b UserSet1 (Display string: 'User Set 1'): Select the user set 1.
     *  - \b UserSet\#2\# (Display string: 'User Set \#2\#'): Select the user set \#2\#.
     *  - \b UserSet2 (Display string: 'User Set 2'): Select the user set 2.
     *  - \b UserSet3 (Display string: 'User Set 3'): Select the user set 3.
     *  - \b UserSet4 (Display string: 'User Set 4'): Select the user set 4.
     *  - \b UserSet5 (Display string: 'User Set 5'): Select the user set 5.
     *  - \b UserSet6 (Display string: 'User Set 6'): Select the user set 6.
     *  - \b UserSet7 (Display string: 'User Set 7'): Select the user set 7.
     *  - \b UserSet8 (Display string: 'User Set 8'): Select the user set 8.
     *  - \b UserSet9 (Display string: 'User Set 9'): Select the user set 9.
     *  - \b UserSet10 (Display string: 'User Set 10'): Select the user set 10.
     *  - \b UserSet11 (Display string: 'User Set 11'): Select the user set 11.
     *  - \b UserSet12 (Display string: 'User Set 12'): Select the user set 12.
     *  - \b UserSet13 (Display string: 'User Set 13'): Select the user set 13.
     *  - \b UserSet14 (Display string: 'User Set 14'): Select the user set 14.
     *  - \b UserSet15 (Display string: 'User Set 15'): Select the user set 15.
     *  - \b UserSet16 (Display string: 'User Set 16')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 userSetDefaultSelector;
    /// \brief An enumerated integer property. Selects which individual UserSet feature to control.
    /**
     *  Selects which individual UserSet feature to control.
     *
     *  The following string values might be valid for this feature:
     *  - \b Device-Specific (Display string: 'Device - Specific'): Device - Specific
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 userSetFeatureSelector;
    /// \brief A boolean property. Enables the selected feature and make it active in all the UserSets.
    /**
     *  Enables the selected feature and make it active in all the UserSets.
     */
    PropertyIBoolean userSetFeatureEnable;
    /// \brief A string property. A register to store arbitrary user data into the devices non-volatile memory.
    /**
     *  A register to store arbitrary user data into the devices non-volatile memory
     */
    PropertyS mvUserData;
    // *INDENT-OFF*
    PYTHON_OR_JAVA_ONLY( %mutable; )
    // *INDENT-ON*
};

//-----------------------------------------------------------------------------
/// \brief Category for the Sequencer Control features.
/**
 *  A category for the Sequencer Control features.
 * \ingroup GenICamInterfaceDevice
 */
class SequencerControl
//-----------------------------------------------------------------------------
{
public:
    /// \brief Constructs a new <b>mvIMPACT::acquire::GenICam::SequencerControl</b> object.
    explicit SequencerControl(
        /// [in] A pointer to a <b>mvIMPACT::acquire::Device</b> object obtained from a <b>mvIMPACT::acquire::DeviceManager</b> object.
        mvIMPACT::acquire::Device* pDev,
        /// [in] The name of the driver internal setting to access with this instance.
        /// A list of valid setting names can be obtained by a call to
        /// <b>mvIMPACT::acquire::FunctionInterface::getAvailableSettings</b>, new
        /// settings can be created with the function
        /// <b>mvIMPACT::acquire::FunctionInterface::createSetting</b>
        const std::string& settingName = "Base" ) :
        sequencerMode(),
        sequencerConfigurationMode(),
        sequencerFeatureSelector(),
        sequencerFeatureEnable(),
        sequencerSetSelector(),
        sequencerSetSave(),
        sequencerSetLoad(),
        sequencerSetActive(),
        sequencerSetStart(),
        sequencerPathSelector(),
        sequencerSetNext(),
        sequencerTriggerSource(),
        sequencerTriggerActivation()
    {
        pDev->validateInterfaceLayout( dilGenICam );
        mvIMPACT::acquire::DeviceComponentLocator locator( pDev, mvIMPACT::acquire::dltSetting, settingName );
        locator.bindSearchBase( locator.searchbase_id(), "Camera/GenICam" );
        locator.bindComponent( sequencerMode, "SequencerMode" );
        locator.bindComponent( sequencerConfigurationMode, "SequencerConfigurationMode" );
        locator.bindComponent( sequencerFeatureSelector, "SequencerFeatureSelector" );
        locator.bindComponent( sequencerFeatureEnable, "SequencerFeatureEnable" );
        locator.bindComponent( sequencerSetSelector, "SequencerSetSelector" );
        locator.bindComponent( sequencerSetSave, "SequencerSetSave@i" );
        locator.bindComponent( sequencerSetLoad, "SequencerSetLoad@i" );
        locator.bindComponent( sequencerSetActive, "SequencerSetActive" );
        locator.bindComponent( sequencerSetStart, "SequencerSetStart" );
        locator.bindComponent( sequencerPathSelector, "SequencerPathSelector" );
        locator.bindComponent( sequencerSetNext, "SequencerSetNext" );
        locator.bindComponent( sequencerTriggerSource, "SequencerTriggerSource" );
        locator.bindComponent( sequencerTriggerActivation, "SequencerTriggerActivation" );
    }
    // *INDENT-OFF*
    PYTHON_OR_JAVA_ONLY( %immutable; )
    // *INDENT-ON*
    /// \brief An enumerated integer property. Controls if the sequencer mechanism is active.
    /**
     *  Controls if the sequencer mechanism is active.
     *
     *  The following string values might be valid for this feature:
     *  - \b On (Display string: 'On'): Enables the sequencer.
     *  - \b Off (Display string: 'Off'): Disables the sequencer.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 sequencerMode;
    /// \brief An enumerated integer property. Controls if the sequencer configuration mode is active.
    /**
     *  Controls if the sequencer configuration mode is active.
     *
     *  The following string values might be valid for this feature:
     *  - \b On (Display string: 'On'): Enables the sequencer configuration mode.
     *  - \b Off (Display string: 'Off'): Disables the sequencer configuration mode.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 sequencerConfigurationMode;
    /// \brief An enumerated integer property. Selects which sequencer features to control.
    /**
     *  Selects which sequencer features to control.
     *
     *  The following string values might be valid for this feature:
     *  - \b Device-Specific (Display string: 'Device - Specific'): Device - Specific
     *  - \b ExposureTime (Display string: 'Exposure Time')
     *  - \b CounterDuration (Display string: 'Counter Duration')
     *  - \b mvImagePositionAndSize (Display string: 'mv Image Position And Size'): This value selects whether features affecting the image position and size shall be controlled by the sequencer.
     *  - \b Width (Display string: 'Width')
     *  - \b Height (Display string: 'Height')
     *  - \b OffsetX (Display string: 'Offset X')
     *  - \b OffsetY (Display string: 'Offset Y')
     *  - \b BinningHorizontal (Display string: 'Binning Horizontal')
     *  - \b BinningVertical (Display string: 'Binning Vertical')
     *  - \b DecimationHorizontal (Display string: 'Decimation Horizontal')
     *  - \b DecimationVertical (Display string: 'Decimation Vertical')
     *  - \b Gain (Display string: 'Gain')
     *  - \b UserOutputValueAll (Display string: 'User Output Value All')
     *  - \b UserOutputValueAllMask (Display string: 'User Output Value All Mask')
     *  - \b mvUserOutput (Display string: 'mv User Output'): This value selects whether features affecting the user outputs shall be controlled by the sequencer.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 sequencerFeatureSelector;
    /// \brief A boolean property. Enables the selected feature and make it active in all the sequencer sets.
    /**
     *  Enables the selected feature and make it active in all the sequencer sets.
     */
    PropertyIBoolean sequencerFeatureEnable;
    /// \brief An integer property. Selects the sequencer set to which further feature settings applies.
    /**
     *  Selects the sequencer set to which further feature settings applies.
     */
    PropertyI64 sequencerSetSelector;
    /// \brief A method object. Saves the current device state to the sequencer set selected by the SequencerSetSelector.
    /**
     *  Saves the current device state to the sequencer set selected by the SequencerSetSelector.
     */
    Method sequencerSetSave;
    /// \brief A method object. Loads the sequencer set selected by SequencerSetSelector in the device.
    /**
     *  Loads the sequencer set selected by SequencerSetSelector in the device. Even if SequencerMode is off, this will change the device state to the configuration of the selected set.
     */
    Method sequencerSetLoad;
    /// \brief An integer property. Contains the currently active sequencer set.
    /**
     *  Contains the currently active sequencer set.
     */
    PropertyI64 sequencerSetActive;
    /// \brief An integer property. Sets the initial/start sequencer set, which is the first set used within a sequencer.
    /**
     *  Sets the initial/start sequencer set, which is the first set used within a sequencer.
     */
    PropertyI64 sequencerSetStart;
    /// \brief An integer property. Selects to which branching path further path settings applies.
    /**
     *  Selects to which branching path further path settings applies.
     */
    PropertyI64 sequencerPathSelector;
    /// \brief An integer property. Specifies the next sequencer set.
    /**
     *  Specifies the next sequencer set.
     */
    PropertyI64 sequencerSetNext;
    /// \brief An enumerated integer property. Specifies the internal signal or physical input line to use as the sequencer trigger source.
    /**
     *  Specifies the internal signal or physical input line to use as the sequencer trigger source.
     *
     *  The following string values might be valid for this feature:
     *  - \b Off (Display string: 'Off'): Disables the sequencer trigger.
     *  - \b AcquisitionTrigger (Display string: 'Acquisition Trigger'): Starts with the reception of the Acquisition Trigger.
     *  - \b AcquisitionTriggerMissed (Display string: 'Acquisition Trigger Missed'): Starts with the reception of the missed Acquisition Trigger.
     *  - \b AcquisitionStart (Display string: 'Acquisition Start'): Starts with the reception of the Acquisition Start.
     *  - \b AcquisitionEnd (Display string: 'Acquisition End'): Starts with the reception of the Acquisition End.
     *  - \b FrameTrigger (Display string: 'Frame Trigger'): Starts with the reception of the Frame Start Trigger.
     *  - \b FrameTriggerMissed (Display string: 'Frame Trigger Missed'): Starts with the reception of the missed Frame Trigger.
     *  - \b FrameStart (Display string: 'Frame Start'): Starts with the reception of the Frame Start.
     *  - \b FrameEnd (Display string: 'Frame End'): Starts with the reception of the Frame End.
     *  - \b FrameBurstStart (Display string: 'Frame Burst Start'): Starts with the reception of the Frame Burst Start.
     *  - \b FrameBurstEnd (Display string: 'Frame Burst End'): Starts with the reception of the Frame Burst End.
     *  - \b ExposureStart (Display string: 'Exposure Start'): Starts with the reception of the Exposure Start.
     *  - \b ExposureEnd (Display string: 'Exposure End'): Starts with the reception of the Exposure End.
     *  - \b Line0 (Display string: 'Line 0'): Starts when the specified TimerTriggerActivation condition is met on the chosen I/O Line.
     *  - \b Line1 (Display string: 'Line 1'): Starts when the specified TimerTriggerActivation condition is met on the chosen I/O Line.
     *  - \b Line2 (Display string: 'Line 2'): Starts when the specified TimerTriggerActivation condition is met on the chosen I/O Line.
     *  - \b Line\#3\# (Display string: 'Line \#3\#'): Starts when the specified TimerTriggerActivation condition is met on the chosen I/O Line.
     *  - \b UserOutput0 (Display string: 'User Output 0'): Specifies which User Output bit signal to use as internal source for the trigger.
     *  - \b UserOutput1 (Display string: 'User Output 1'): Specifies which User Output bit signal to use as internal source for the trigger.
     *  - \b UserOutput2 (Display string: 'User Output 2'): Specifies which User Output bit signal to use as internal source for the trigger.
     *  - \b UserOutput\#3\# (Display string: 'User Output \#3\#'): Specifies which User Output bit signal to use as internal source for the trigger.
     *  - \b Counter0Start (Display string: 'Counter 0 Start'): Starts with the reception of the Counter Start.
     *  - \b Counter1Start (Display string: 'Counter 1 Start'): Starts with the reception of the Counter Start.
     *  - \b Counter2Start (Display string: 'Counter 2 Start'): Starts with the reception of the Counter Start.
     *  - \b Counter\#3\#Start (Display string: 'Counter \#3\# Start'): Starts with the reception of the Counter Start.
     *  - \b Counter0End (Display string: 'Counter 0 End'): Starts with the reception of the Counter End.
     *  - \b Counter1End (Display string: 'Counter 1 End'): Starts with the reception of the Counter End.
     *  - \b Counter2End (Display string: 'Counter 2 End'): Starts with the reception of the Counter End.
     *  - \b Counter\#3\#End (Display string: 'Counter \#3\# End'): Starts with the reception of the Counter End.
     *  - \b Timer0Start (Display string: 'Timer 0 Start'): Starts with the reception of the Timer Start.
     *  - \b Timer1Start (Display string: 'Timer 1 Start'): Starts with the reception of the Timer Start.
     *  - \b Timer2Start (Display string: 'Timer 2 Start'): Starts with the reception of the Timer Start.
     *  - \b Timer\#3\#Start (Display string: 'Timer \#3\# Start'): Starts with the reception of the Timer Start.
     *  - \b Timer0End (Display string: 'Timer 0 End'): Starts with the reception of the Timer End.
     *  - \b Timer1End (Display string: 'Timer 1 End'): Starts with the reception of the Timer End.
     *  - \b Timer2End (Display string: 'Timer 2 End'): Starts with the reception of the Timer End.
     *  - \b Timer\#3\#End (Display string: 'Timer \#3\# End'): Starts with the reception of the Timer End.
     *  - \b Encoder0 (Display string: 'Encoder 0'): Starts with the reception of the Encoder output signal.
     *  - \b Encoder1 (Display string: 'Encoder 1'): Starts with the reception of the Encoder output signal.
     *  - \b Encoder2 (Display string: 'Encoder 2'): Starts with the reception of the Encoder output signal.
     *  - \b Encoder\#3\# (Display string: 'Encoder \#3\#'): Starts with the reception of the Encoder output signal.
     *  - \b LogicBlock0 (Display string: 'Logic Block 0'): Starts with the reception of the Logic Block output signal.
     *  - \b LogicBlock1 (Display string: 'Logic Block 1'): Starts with the reception of the Logic Block output signal.
     *  - \b LogicBlock2 (Display string: 'Logic Block 2'): Starts with the reception of the Logic Block output signal.
     *  - \b LogicBlock\#3\# (Display string: 'Logic Block \#3\#'): Starts with the reception of the Logic Block output signal.
     *  - \b SoftwareSignal0 (Display string: 'Software Signal 0'): Starts on the reception of the Software Signal.
     *  - \b SoftwareSignal1 (Display string: 'Software Signal 1'): Starts on the reception of the Software Signal.
     *  - \b SoftwareSignal2 (Display string: 'Software Signal 2'): Starts on the reception of the Software Signal.
     *  - \b SoftwareSignal\#3\# (Display string: 'Software Signal \#3\#'): Starts on the reception of the Software Signal.
     *  - \b Action0 (Display string: 'Action 0'): Starts with the assertion of the chosen action signal.
     *  - \b Action1 (Display string: 'Action 1'): Starts with the assertion of the chosen action signal.
     *  - \b Action2 (Display string: 'Action 2'): Starts with the assertion of the chosen action signal.
     *  - \b Action\#3\# (Display string: 'Action \#3\#'): Starts with the assertion of the chosen action signal.
     *  - \b LinkTrigger0 (Display string: 'Link Trigger 0'): Starts with the reception of the chosen Link Trigger.
     *  - \b LinkTrigger1 (Display string: 'Link Trigger 1'): Starts with the reception of the chosen Link Trigger.
     *  - \b LinkTrigger2 (Display string: 'Link Trigger 2'): Starts with the reception of the chosen Link Trigger.
     *  - \b LinkTrigger\#3\# (Display string: 'Link Trigger \#3\#'): Starts with the reception of the chosen Link Trigger.
     *  - \b CC1 (Display string: 'CC 1'): Index of the Camera Link physical line and associated I/O control block to use. This ensures a direct mapping between the lines on the frame grabber and on the camera. Applicable to CameraLink products only.
     *  - \b CC2 (Display string: 'CC 2'): Index of the Camera Link physical line and associated I/O control block to use. This ensures a direct mapping between the lines on the frame grabber and on the camera. Applicable to CameraLink products only.
     *  - \b CC3 (Display string: 'CC 3'): Index of the Camera Link physical line and associated I/O control block to use. This ensures a direct mapping between the lines on the frame grabber and on the camera. Applicable to CameraLink products only.
     *  - \b CC4 (Display string: 'CC 4'): Index of the Camera Link physical line and associated I/O control block to use. This ensures a direct mapping between the lines on the frame grabber and on the camera. Applicable to CameraLink products only.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 sequencerTriggerSource;
    /// \brief An enumerated integer property. Specifies the activation mode of the sequencer trigger.
    /**
     *  Specifies the activation mode of the sequencer trigger.
     *
     *  The following string values might be valid for this feature:
     *  - \b RisingEdge (Display string: 'Rising Edge'): Specifies that the trigger is considered valid on the rising edge of the source signal.
     *  - \b FallingEdge (Display string: 'Falling Edge'): Specifies that the trigger is considered valid on the falling edge of the source signal.
     *  - \b AnyEdge (Display string: 'Any Edge'): Specifies that the trigger is considered valid on the falling or rising edge of the source signal.
     *  - \b LevelHigh (Display string: 'Level High'): Specifies that the trigger is considered valid as long as the level of the source signal is high.
     *  - \b LevelLow (Display string: 'Level Low'): Specifies that the trigger is considered valid as long as the level of the source signal is low.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 sequencerTriggerActivation;
    // *INDENT-OFF*
    PYTHON_OR_JAVA_ONLY( %mutable; )
    // *INDENT-ON*
};

//-----------------------------------------------------------------------------
/// \brief Contains features to control the device's defective pixel correction parameters.
/**
 *  Contains features to control the device's defective pixel correction parameters.
 * \ingroup GenICamInterfaceDevice
 */
class mvDefectivePixelCorrectionControl : public mvIMPACT::acquire::ComponentCollection
//-----------------------------------------------------------------------------
{
public:
    /// \brief Constructs a new <b>mvIMPACT::acquire::GenICam::mvDefectivePixelCorrectionControl</b> object.
    explicit mvDefectivePixelCorrectionControl(
        /// [in] A pointer to a <b>mvIMPACT::acquire::Device</b> object obtained from a <b>mvIMPACT::acquire::DeviceManager</b> object.
        mvIMPACT::acquire::Device* pDev,
        /// [in] The name of the driver internal setting to access with this instance.
        /// A list of valid setting names can be obtained by a call to
        /// <b>mvIMPACT::acquire::FunctionInterface::getAvailableSettings</b>, new
        /// settings can be created with the function
        /// <b>mvIMPACT::acquire::FunctionInterface::createSetting</b>
        const std::string& settingName = "Base" ) :
        mvIMPACT::acquire::ComponentCollection( pDev ),
        mvDefectPixelThreshold(),
        mvDefectivePixelEnable(),
        mvDefectivePixelBlinkingMode(),
        mvDefectivePixelSelector(),
        mvDefectivePixelOffsetX(),
        mvDefectivePixelOffsetY(),
        mvDefectivePixelCount(),
        mvDefectivePixelDataLoad(),
        mvDefectivePixelDataSave()
    {
        pDev->validateInterfaceLayout( dilGenICam );
        mvIMPACT::acquire::DeviceComponentLocator locator( pDev, mvIMPACT::acquire::dltSetting, settingName );
        locator.bindSearchBase( locator.searchbase_id(), "Camera/GenICam/mvDefectivePixelCorrectionControl" );
        m_hRoot = locator.searchbase_id();
        locator.bindComponent( mvDefectPixelThreshold, "mvDefectPixelThreshold" );
        locator.bindComponent( mvDefectivePixelEnable, "mvDefectivePixelEnable" );
        locator.bindComponent( mvDefectivePixelBlinkingMode, "mvDefectivePixelBlinkingMode" );
        locator.bindComponent( mvDefectivePixelSelector, "mvDefectivePixelSelector" );
        locator.bindComponent( mvDefectivePixelOffsetX, "mvDefectivePixelOffsetX" );
        locator.bindComponent( mvDefectivePixelOffsetY, "mvDefectivePixelOffsetY" );
        locator.bindComponent( mvDefectivePixelCount, "mvDefectivePixelCount" );
        locator.bindComponent( mvDefectivePixelDataLoad, "mvDefectivePixelDataLoad@i" );
        locator.bindComponent( mvDefectivePixelDataSave, "mvDefectivePixelDataSave@i" );
    }
    // *INDENT-OFF*
    PYTHON_OR_JAVA_ONLY( %immutable; )
    // *INDENT-ON*
    /// \brief An integer property. Sets the threshold for the defect pixel detection.
    /**
     *  Sets the threshold for the defect pixel detection.
     */
    PropertyI64 mvDefectPixelThreshold;
    /// \brief A boolean property. Activates the camera's defective pixel correction.
    /**
     *  Activates the camera's defective pixel correction.
     */
    PropertyIBoolean mvDefectivePixelEnable;
    /// \brief A boolean property. Activates the blinking mode of the camera's defective pixel correction.
    /**
     *  Activates the blinking mode of the camera's defective pixel correction.
     */
    PropertyIBoolean mvDefectivePixelBlinkingMode;
    /// \brief An integer property. Controls the index (offset) of the defective pixel to access.
    /**
     *  Controls the index (offset) of the defective pixel to access. Data selected by this selector is NOT part of a user set, but must be written to non volatile memory by calling 'mvDefectivePixelDataSave' explicitly.
     */
    PropertyI64 mvDefectivePixelSelector;
    /// \brief An integer property. Returns the horizontal offset of the defective pixel selected by mvDefectivePixelSelector.
    /**
     *  Returns the horizontal offset of the defective pixel selected by mvDefectivePixelSelector. This data is NOT part of a user set, but must be written to non volatile memory by calling 'mvDefectivePixelDataSave' explicitly.
     */
    PropertyI64 mvDefectivePixelOffsetX;
    /// \brief An integer property. Returns the vertical offset of the defective pixel selected by mvDefectivePixelSelector.
    /**
     *  Returns the vertical offset of the defective pixel selected by mvDefectivePixelSelector. This data is NOT part of a user set, but must be written to non volatile memory by calling 'mvDefectivePixelDataSave' explicitly.
     */
    PropertyI64 mvDefectivePixelOffsetY;
    /// \brief An integer property. Contains the number of valid defective pixels. Increasing this value adds a new empty entry. Decreasing this value deletes the last entry.
    /**
     *  Contains the number of valid defective pixels. Increasing this value adds a new empty entry. Decreasing this value deletes the last entry.
     */
    PropertyI64 mvDefectivePixelCount;
    /// \brief A method object. Loads the defective pixels from device non volatile memory.
    /**
     *  Loads the defective pixels from device non volatile memory.
     */
    Method mvDefectivePixelDataLoad;
    /// \brief A method object. Saves the defective pixels to device non volatile memory.
    /**
     *  Saves the defective pixels to device non volatile memory.
     */
    Method mvDefectivePixelDataSave;
    // *INDENT-OFF*
    PYTHON_OR_JAVA_ONLY( %mutable; )
    // *INDENT-ON*
};

//-----------------------------------------------------------------------------
/// \brief Category that contains the File Access control features.
/**
 *  A category that contains the File Access control features.
 * \ingroup GenICamInterfaceDevice
 */
class FileAccessControl
//-----------------------------------------------------------------------------
{
public:
    /// \brief Constructs a new <b>mvIMPACT::acquire::GenICam::FileAccessControl</b> object.
    explicit FileAccessControl(
        /// [in] A pointer to a <b>mvIMPACT::acquire::Device</b> object obtained from a <b>mvIMPACT::acquire::DeviceManager</b> object.
        mvIMPACT::acquire::Device* pDev,
        /// [in] The name of the driver internal setting to access with this instance.
        /// A list of valid setting names can be obtained by a call to
        /// <b>mvIMPACT::acquire::FunctionInterface::getAvailableSettings</b>, new
        /// settings can be created with the function
        /// <b>mvIMPACT::acquire::FunctionInterface::createSetting</b>
        const std::string& settingName = "Base" ) :
        fileSelector(),
        fileOperationSelector(),
        fileOperationExecute(),
        fileOpenMode(),
        fileAccessBuffer(),
        fileAccessOffset(),
        fileAccessLength(),
        fileOperationStatus(),
        fileOperationResult(),
        fileSize()
    {
        pDev->validateInterfaceLayout( dilGenICam );
        mvIMPACT::acquire::DeviceComponentLocator locator( pDev, mvIMPACT::acquire::dltSetting, settingName );
        locator.bindSearchBase( locator.searchbase_id(), "Camera/GenICam" );
        locator.bindComponent( fileSelector, "FileSelector" );
        locator.bindComponent( fileOperationSelector, "FileOperationSelector" );
        locator.bindComponent( fileOperationExecute, "FileOperationExecute@i" );
        locator.bindComponent( fileOpenMode, "FileOpenMode" );
        locator.bindComponent( fileAccessBuffer, "FileAccessBuffer" );
        locator.bindComponent( fileAccessOffset, "FileAccessOffset" );
        locator.bindComponent( fileAccessLength, "FileAccessLength" );
        locator.bindComponent( fileOperationStatus, "FileOperationStatus" );
        locator.bindComponent( fileOperationResult, "FileOperationResult" );
        locator.bindComponent( fileSize, "FileSize" );
    }
    // *INDENT-OFF*
    PYTHON_OR_JAVA_ONLY( %immutable; )
    // *INDENT-ON*
    /// \brief An enumerated integer property. Selects the target file in the device.
    /**
     *  Selects the target file in the device.
     *
     *  The following string values might be valid for this feature:
     *  - \b UserSetDefault (Display string: 'User Set Default'): The default user set of the device.
     *  - \b UserSet1 (Display string: 'User Set 1'): The first user set of the device.
     *  - \b UserSet2 (Display string: 'User Set 2'): The second user set of the device.
     *  - \b UserSet3 (Display string: 'User Set 3'): The third user set of the device.
     *  - \b UserSet\#4\# (Display string: 'User Set \#4\#'): The third user set of the device.
     *  - \b LUTLuminance (Display string: 'LUT Luminance'): The Luminance LUT of the camera.
     *  - \b LUTRed (Display string: 'LUT Red'): The Red LUT of the camera.
     *  - \b LUTGreen (Display string: 'LUT Green'): The Green LUT of the camera.
     *  - \b LUTBlue (Display string: 'LUT Blue'): The Blue LUT of the camera.
     *  - \b DeviceFirmware (Display string: 'Device Firmware')
     *  - \b UserFile (Display string: 'User File')
     *  - \b mvFFCImage (Display string: 'mv FFC Image')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 fileSelector;
    /// \brief An enumerated integer property. Selects the target operation for the selected file in the device.
    /**
     *  Selects the target operation for the selected file in the device. This Operation is executed when the FileOperationExecute feature is called.
     *
     *  The following string values might be valid for this feature:
     *  - \b Open (Display string: 'Open'): Opens the file selected by FileSelector in the device. The access mode in which the file is opened is selected by FileOpenMode.
     *  - \b Close (Display string: 'Close'): Closes the file selected by FileSelector in the device.
     *  - \b Read (Display string: 'Read'): Reads FileAccessLength bytes from the device storage at the file relative offset FileAccessOffset into FileAccessBuffer.
     *  - \b Write (Display string: 'Write'): Writes FileAccessLength bytes taken from the FileAccessBuffer into the device storage at the file relative offset FileAccessOffset.
     *  - \b Delete (Display string: 'Delete'): Deletes the file selected by FileSelector in the device. Note that deleting a device file should not remove the associated FileSelector entry to allow future operation on this file.
     *  - \b MvFlashWrite (Display string: 'Mv Flash Write')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 fileOperationSelector;
    /// \brief A method object. Executes the operation selected by FileOperationSelector on the selected file.
    /**
     *  Executes the operation selected by FileOperationSelector on the selected file.
     */
    Method fileOperationExecute;
    /// \brief An enumerated integer property. Selects the access mode in which a file is opened in the device.
    /**
     *  Selects the access mode in which a file is opened in the device.
     *
     *  The following string values might be valid for this feature:
     *  - \b Read (Display string: 'Read'): This mode selects read-only open mode.
     *  - \b Write (Display string: 'Write'): This mode selects write-only open mode.
     *  - \b ReadWrite (Display string: 'Read Write'): This mode selects read and write open mode.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 fileOpenMode;
    /// \brief A string property. Defines the intermediate access buffer that allows the exchange of data between the device file storage and the application.
    /**
     *  Defines the intermediate access buffer that allows the exchange of data between the device file storage and the application.
     */
    PropertyS fileAccessBuffer;
    /// \brief An integer property. Controls the Offset of the mapping between the device file storage and the FileAccessBuffer.
    /**
     *  Controls the Offset of the mapping between the device file storage and the FileAccessBuffer.
     */
    PropertyI64 fileAccessOffset;
    /// \brief An integer property. Controls the Length of the mapping between the device file storage and the FileAccessBuffer.
    /**
     *  Controls the Length of the mapping between the device file storage and the FileAccessBuffer.
     */
    PropertyI64 fileAccessLength;
    /// \brief An enumerated integer property. Represents the file operation execution status.
    /**
     *  Represents the file operation execution status.
     *
     *  The following string values might be valid for this feature:
     *  - \b Success (Display string: 'Success'): File Operation was successful.
     *  - \b Failure (Display string: 'Failure'): File Operation failed.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 fileOperationStatus;
    /// \brief An integer property. Represents the file operation result.
    /**
     *  Represents the file operation result. For Read or Write operations, the number of successfully read/written bytes is returned.
     */
    PropertyI64 fileOperationResult;
    /// \brief An integer property. Represents the size of the selected file in bytes.
    /**
     *  Represents the size of the selected file in bytes.
     */
    PropertyI64 fileSize;
    // *INDENT-OFF*
    PYTHON_OR_JAVA_ONLY( %mutable; )
    // *INDENT-ON*
};

//-----------------------------------------------------------------------------
/// \brief Category that contains the source control features.
/**
 *  A category that contains the source control features.
 * \ingroup GenICamInterfaceDevice
 */
class SourceControl
//-----------------------------------------------------------------------------
{
public:
    /// \brief Constructs a new <b>mvIMPACT::acquire::GenICam::SourceControl</b> object.
    explicit SourceControl(
        /// [in] A pointer to a <b>mvIMPACT::acquire::Device</b> object obtained from a <b>mvIMPACT::acquire::DeviceManager</b> object.
        mvIMPACT::acquire::Device* pDev,
        /// [in] The name of the driver internal setting to access with this instance.
        /// A list of valid setting names can be obtained by a call to
        /// <b>mvIMPACT::acquire::FunctionInterface::getAvailableSettings</b>, new
        /// settings can be created with the function
        /// <b>mvIMPACT::acquire::FunctionInterface::createSetting</b>
        const std::string& settingName = "Base" ) :
        sourceCount(),
        sourceSelector(),
        sourceIDValue()
    {
        pDev->validateInterfaceLayout( dilGenICam );
        mvIMPACT::acquire::DeviceComponentLocator locator( pDev, mvIMPACT::acquire::dltSetting, settingName );
        locator.bindSearchBase( locator.searchbase_id(), "Camera/GenICam" );
        locator.bindComponent( sourceCount, "SourceCount" );
        locator.bindComponent( sourceSelector, "SourceSelector" );
        locator.bindComponent( sourceIDValue, "SourceIDValue" );
    }
    // *INDENT-OFF*
    PYTHON_OR_JAVA_ONLY( %immutable; )
    // *INDENT-ON*
    /// \brief An integer property. Controls or returns the number of sources supported by the device.
    /**
     *  Controls or returns the number of sources supported by the device.
     */
    PropertyI64 sourceCount;
    /// \brief An enumerated integer property. Selects the source to control.
    /**
     *  Selects the source to control.
     *
     *  The following string values might be valid for this feature:
     *  - \b Source0 (Display string: 'Source 0'): Selects the data source 0.
     *  - \b Source1 (Display string: 'Source 1'): Selects the data source 1.
     *  - \b Source2 (Display string: 'Source 2'): Selects the data source 2.
     *  - \b Source\#3\# (Display string: 'Source \#3\#'): Selects the data source \#3\#.
     *  - \b All (Display string: 'All'): Selects all the data sources.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 sourceSelector;
    /// \brief An integer property. Returns a unique Identifier value that correspond to the selected Source.
    /**
     *  Returns a unique Identifier value that correspond to the selected Source.
     */
    PropertyI64 sourceIDValue;
    // *INDENT-OFF*
    PYTHON_OR_JAVA_ONLY( %mutable; )
    // *INDENT-ON*
};

//-----------------------------------------------------------------------------
/// \brief Category for the data Transfer Control features.
/**
 *  A category for the data Transfer Control features.
 * \ingroup GenICamInterfaceDevice
 */
class TransferControl
//-----------------------------------------------------------------------------
{
public:
    /// \brief Constructs a new <b>mvIMPACT::acquire::GenICam::TransferControl</b> object.
    explicit TransferControl(
        /// [in] A pointer to a <b>mvIMPACT::acquire::Device</b> object obtained from a <b>mvIMPACT::acquire::DeviceManager</b> object.
        mvIMPACT::acquire::Device* pDev,
        /// [in] The name of the driver internal setting to access with this instance.
        /// A list of valid setting names can be obtained by a call to
        /// <b>mvIMPACT::acquire::FunctionInterface::getAvailableSettings</b>, new
        /// settings can be created with the function
        /// <b>mvIMPACT::acquire::FunctionInterface::createSetting</b>
        const std::string& settingName = "Base" ) :
        transferSelector(),
        transferControlMode(),
        transferOperationMode(),
        transferBlockCount(),
        transferBurstCount(),
        transferQueueMaxBlockCount(),
        transferQueueCurrentBlockCount(),
        transferQueueMode(),
        transferStart(),
        transferStop(),
        transferAbort(),
        transferPause(),
        transferResume(),
        transferTriggerSelector(),
        transferTriggerMode(),
        transferTriggerSource(),
        transferTriggerActivation(),
        transferStatusSelector(),
        transferStatus(),
        transferComponentSelector(),
        transferStreamChannel()
    {
        pDev->validateInterfaceLayout( dilGenICam );
        mvIMPACT::acquire::DeviceComponentLocator locator( pDev, mvIMPACT::acquire::dltSetting, settingName );
        locator.bindSearchBase( locator.searchbase_id(), "Camera/GenICam" );
        locator.bindComponent( transferSelector, "TransferSelector" );
        locator.bindComponent( transferControlMode, "TransferControlMode" );
        locator.bindComponent( transferOperationMode, "TransferOperationMode" );
        locator.bindComponent( transferBlockCount, "TransferBlockCount" );
        locator.bindComponent( transferBurstCount, "TransferBurstCount" );
        locator.bindComponent( transferQueueMaxBlockCount, "TransferQueueMaxBlockCount" );
        locator.bindComponent( transferQueueCurrentBlockCount, "TransferQueueCurrentBlockCount" );
        locator.bindComponent( transferQueueMode, "TransferQueueMode" );
        locator.bindComponent( transferStart, "TransferStart@i" );
        locator.bindComponent( transferStop, "TransferStop@i" );
        locator.bindComponent( transferAbort, "TransferAbort@i" );
        locator.bindComponent( transferPause, "TransferPause@i" );
        locator.bindComponent( transferResume, "TransferResume@i" );
        locator.bindComponent( transferTriggerSelector, "TransferTriggerSelector" );
        locator.bindComponent( transferTriggerMode, "TransferTriggerMode" );
        locator.bindComponent( transferTriggerSource, "TransferTriggerSource" );
        locator.bindComponent( transferTriggerActivation, "TransferTriggerActivation" );
        locator.bindComponent( transferStatusSelector, "TransferStatusSelector" );
        locator.bindComponent( transferStatus, "TransferStatus" );
        locator.bindComponent( transferComponentSelector, "TransferComponentSelector" );
        locator.bindComponent( transferStreamChannel, "TransferStreamChannel" );
    }
    // *INDENT-OFF*
    PYTHON_OR_JAVA_ONLY( %immutable; )
    // *INDENT-ON*
    /// \brief An enumerated integer property. Selects which stream transfers are currently controlled by the selected Transfer features.
    /**
     *  Selects which stream transfers are currently controlled by the selected Transfer features.
     *
     *  The following string values might be valid for this feature:
     *  - \b Stream0 (Display string: 'Stream 0'): The transfer features control the data stream 0.
     *  - \b Stream1 (Display string: 'Stream 1'): The transfer features control the data stream 1.
     *  - \b Stream2 (Display string: 'Stream 2'): The transfer features control the data stream 2.
     *  - \b Stream\#3\# (Display string: 'Stream \#3\#'): The transfer features control the data stream \#3\#.
     *  - \b All (Display string: 'All'): The transfer features control all the data streams simultaneously.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 transferSelector;
    /// \brief An enumerated integer property. Selects the control method for the transfers.
    /**
     *  Selects the control method for the transfers.
     *
     *  The following string values might be valid for this feature:
     *  - \b Basic (Display string: 'Basic'): Basic
     *  - \b Automatic (Display string: 'Automatic'): Automatic
     *  - \b UserControlled (Display string: 'User Controlled'): User Controlled
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 transferControlMode;
    /// \brief An enumerated integer property. Selects the operation mode of the transfer.
    /**
     *  Selects the operation mode of the transfer.
     *
     *  The following string values might be valid for this feature:
     *  - \b Continuous (Display string: 'Continuous'): Continuous
     *  - \b MultiBlock (Display string: 'Multi Block'): Multi Block
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 transferOperationMode;
    /// \brief An integer property. Specifies the number of data Blocks that the device should stream before stopping.
    /**
     *  Specifies the number of data Blocks that the device should stream before stopping. This feature is only active if the TransferOperationMode is set to MultiBlock.
     */
    PropertyI64 transferBlockCount;
    /// \brief An integer property. Number of Block(s) to transfer for each TransferBurstStart trigger.
    /**
     *  Number of Block(s) to transfer for each TransferBurstStart trigger.
     */
    PropertyI64 transferBurstCount;
    /// \brief An integer property. Controls the maximum number of data blocks that can be stored in the block queue of the selected stream.
    /**
     *  Controls the maximum number of data blocks that can be stored in the block queue of the selected stream.
     */
    PropertyI64 transferQueueMaxBlockCount;
    /// \brief An integer property. Returns the number of Block(s) currently in the transfer queue.
    /**
     *  Returns the number of Block(s) currently in the transfer queue.
     */
    PropertyI64 transferQueueCurrentBlockCount;
    /// \brief An enumerated integer property. Specifies the operation mode of the transfer queue.
    /**
     *  Specifies the operation mode of the transfer queue.
     *
     *  The following string values might be valid for this feature:
     *  - \b FirstInFirstOut (Display string: 'First In First Out'): Blocks first In are transferred Out first.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 transferQueueMode;
    /// \brief A method object. Starts the streaming of data blocks out of the device.
    /**
     *  Starts the streaming of data blocks out of the device. This feature must be available when the TransferControlMode is set to 'UserControlled'. If the TransferStart feature is not writable (locked), the application should not start the transfer and should avoid using the feature until it becomes writable again.
     */
    Method transferStart;
    /// \brief A method object. Stops the streaming of data Block(s).
    /**
     *  Stops the streaming of data Block(s). The current block transmission will be completed. This feature must be available when the TransferControlMode is set to 'UserControlled'.
     */
    Method transferStop;
    /// \brief A method object. Aborts immediately the streaming of data block(s).
    /**
     *  Aborts immediately the streaming of data block(s). Aborting the transfer will result in the lost of the data that is present or currently entering in the block queue. However, the next new block received will be stored in the queue and transferred to the host when the streaming is restarted. If implemented, this feature should be available when the TransferControlMode is set to 'UserControlled'.
     */
    Method transferAbort;
    /// \brief A method object. Pauses the streaming of data Block(s).
    /**
     *  Pauses the streaming of data Block(s). Pausing the streaming will immediately suspend the ongoing data transfer even if a block is partially transfered. The device will resume its transmission at the reception of a TransferResume command.
     */
    Method transferPause;
    /// \brief A method object. Resumes a data Blocks streaming that was previously paused by a TransferPause command.
    /**
     *  Resumes a data Blocks streaming that was previously paused by a TransferPause command.
     */
    Method transferResume;
    /// \brief An enumerated integer property. Selects the type of transfer trigger to configure.
    /**
     *  Selects the type of transfer trigger to configure.
     *
     *  The following string values might be valid for this feature:
     *  - \b TransferStart (Display string: 'Transfer Start'): Selects a trigger to start the transfers.
     *  - \b TransferStop (Display string: 'Transfer Stop'): Selects a trigger to stop the transfers.
     *  - \b TransferAbort (Display string: 'Transfer Abort'): Selects a trigger to abort the transfers.
     *  - \b TransferPause (Display string: 'Transfer Pause'): Selects a trigger to pause the transfers.
     *  - \b TransferResume (Display string: 'Transfer Resume'): Selects a trigger to Resume the transfers.
     *  - \b TransferActive (Display string: 'Transfer Active'): Selects a trigger to Activate the transfers. This trigger type is used when TriggerActivation is set LevelHigh or levelLow.
     *  - \b TransferBurstStart (Display string: 'Transfer Burst Start'): Selects a trigger to start the transfer of a burst of frames specified by TransferBurstCount.
     *  - \b TransferBurstStop (Display string: 'Transfer Burst Stop'): Selects a trigger to end the transfer of a burst of frames.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 transferTriggerSelector;
    /// \brief An enumerated integer property. Controls if the selected trigger is active.
    /**
     *  Controls if the selected trigger is active.
     *
     *  The following string values might be valid for this feature:
     *  - \b Off (Display string: 'Off'): Disables the selected trigger.
     *  - \b On (Display string: 'On'): Enable the selected trigger.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 transferTriggerMode;
    /// \brief An enumerated integer property. Specifies the signal to use as the trigger source for transfers.
    /**
     *  Specifies the signal to use as the trigger source for transfers.
     *
     *  The following string values might be valid for this feature:
     *  - \b Line0 (Display string: 'Line 0'): Specifies which physical line (or pin) and associated I/O control block to use as external source for the transfer control trigger signal.
     *  - \b Line1 (Display string: 'Line 1'): Specifies which physical line (or pin) and associated I/O control block to use as external source for the transfer control trigger signal.
     *  - \b Line2 (Display string: 'Line 2'): Specifies which physical line (or pin) and associated I/O control block to use as external source for the transfer control trigger signal.
     *  - \b Line\#3\# (Display string: 'Line \#3\#'): Specifies which physical line (or pin) and associated I/O control block to use as external source for the transfer control trigger signal.
     *  - \b Counter0Start (Display string: 'Counter 0 Start'): Specifies which of the Counter signal to use as internal source for the transfer control trigger signal.
     *  - \b Counter1Start (Display string: 'Counter 1 Start'): Specifies which of the Counter signal to use as internal source for the transfer control trigger signal.
     *  - \b Counter2Start (Display string: 'Counter 2 Start'): Specifies which of the Counter signal to use as internal source for the transfer control trigger signal.
     *  - \b Counter\#3\#Start (Display string: 'Counter \#3\# Start'): Specifies which of the Counter signal to use as internal source for the transfer control trigger signal.
     *  - \b Counter0End (Display string: 'Counter 0 End'): Specifies which of the Counter signal to use as internal source for the transfer control trigger signal.
     *  - \b Counter1End (Display string: 'Counter 1 End'): Specifies which of the Counter signal to use as internal source for the transfer control trigger signal.
     *  - \b Counter2End (Display string: 'Counter 2 End'): Specifies which of the Counter signal to use as internal source for the transfer control trigger signal.
     *  - \b Counter\#3\#End (Display string: 'Counter \#3\# End'): Specifies which of the Counter signal to use as internal source for the transfer control trigger signal.
     *  - \b Timer0Start (Display string: 'Timer 0 Start'): Specifies which Timer signal to use as internal source for the transfer control trigger signal.
     *  - \b Timer1Start (Display string: 'Timer 1 Start'): Specifies which Timer signal to use as internal source for the transfer control trigger signal.
     *  - \b Timer2Start (Display string: 'Timer 2 Start'): Specifies which Timer signal to use as internal source for the transfer control trigger signal.
     *  - \b Timer\#3\#Start (Display string: 'Timer \#3\# Start'): Specifies which Timer signal to use as internal source for the transfer control trigger signal.
     *  - \b Timer0End (Display string: 'Timer 0 End'): Specifies which Timer signal to use as internal source for the transfer control trigger signal.
     *  - \b Timer1End (Display string: 'Timer 1 End'): Specifies which Timer signal to use as internal source for the transfer control trigger signal.
     *  - \b Timer2End (Display string: 'Timer 2 End'): Specifies which Timer signal to use as internal source for the transfer control trigger signal.
     *  - \b Timer\#3\#End (Display string: 'Timer \#3\# End'): Specifies which Timer signal to use as internal source for the transfer control trigger signal.
     *  - \b LogicBlock0 (Display string: 'Logic Block 0'): Specifies which Logic Block to use as internal source for the transfer control trigger signal.
     *  - \b LogicBlock1 (Display string: 'Logic Block 1'): Specifies which Logic Block to use as internal source for the transfer control trigger signal.
     *  - \b LogicBlock2 (Display string: 'Logic Block 2'): Specifies which Logic Block to use as internal source for the transfer control trigger signal.
     *  - \b LogicBlock\#3\# (Display string: 'Logic Block \#3\#'): Specifies which Logic Block to use as internal source for the transfer control trigger signal.
     *  - \b SoftwareSignal0 (Display string: 'Software Signal 0'): Specifies which Software Signal to use as internal source for the transfer control trigger signal.
     *  - \b SoftwareSignal1 (Display string: 'Software Signal 1'): Specifies which Software Signal to use as internal source for the transfer control trigger signal.
     *  - \b SoftwareSignal2 (Display string: 'Software Signal 2'): Specifies which Software Signal to use as internal source for the transfer control trigger signal.
     *  - \b SoftwareSignal\#3\# (Display string: 'Software Signal \#3\#'): Specifies which Software Signal to use as internal source for the transfer control trigger signal.
     *  - \b Action0 (Display string: 'Action 0'): Specifies which Action command to use as internal source for the transfer control trigger signal.
     *  - \b Action1 (Display string: 'Action 1'): Specifies which Action command to use as internal source for the transfer control trigger signal.
     *  - \b Action2 (Display string: 'Action 2'): Specifies which Action command to use as internal source for the transfer control trigger signal.
     *  - \b Action\#3\# (Display string: 'Action \#3\#'): Specifies which Action command to use as internal source for the transfer control trigger signal.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 transferTriggerSource;
    /// \brief An enumerated integer property. Specifies the activation mode of the transfer control trigger.
    /**
     *  Specifies the activation mode of the transfer control trigger.
     *
     *  The following string values might be valid for this feature:
     *  - \b RisingEdge (Display string: 'Rising Edge'): Specifies that the trigger is considered valid on the rising edge of the source signal.
     *  - \b FallingEdge (Display string: 'Falling Edge'): Specifies that the trigger is considered valid on the falling edge of the source signal.
     *  - \b AnyEdge (Display string: 'Any Edge'): Specifies that the trigger is considered valid on the falling or rising edge of the source signal.
     *  - \b LevelHigh (Display string: 'Level High'): Specifies that the trigger is considered valid as long as the level of the source signal is high. This can apply to TransferActive and TransferPause trigger.
     *  - \b LevelLow (Display string: 'Level Low'): Specifies that the trigger is considered valid as long as the level of the source signal is low. This can apply to TransferActive and TransferPause trigger.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 transferTriggerActivation;
    /// \brief An enumerated integer property. Selects which status of the transfer module to read.
    /**
     *  Selects which status of the transfer module to read.
     *
     *  The following string values might be valid for this feature:
     *  - \b Streaming (Display string: 'Streaming'): Data blocks are transmitted when enough data is available.
     *  - \b Paused (Display string: 'Paused'): Data blocks transmission is suspended immediately.
     *  - \b Stopping (Display string: 'Stopping'): Data blocks transmission is stopping. The current block transmission will be completed and the transfer state will stop.
     *  - \b Stopped (Display string: 'Stopped'): Data blocks transmission is stopped.
     *  - \b QueueOverflow (Display string: 'Queue Overflow'): Data blocks queue is in overflow state.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 transferStatusSelector;
    /// \brief A boolean property. Reads the status of the Transfer module signal selected by TransferStatusSelector.
    /**
     *  Reads the status of the Transfer module signal selected by TransferStatusSelector.
     */
    PropertyIBoolean transferStatus;
    /// \brief An enumerated integer property. Selects the color component for the control of the TransferStreamChannel feature.
    /**
     *  Selects the color component for the control of the TransferStreamChannel feature.
     *
     *  The following string values might be valid for this feature:
     *  - \b Red (Display string: 'Red'): The TransferStreamChannel feature controls the index of the stream channel for the streaming of the red plane of the planar pixel formats.
     *  - \b Green (Display string: 'Green'): The TransferStreamChannel feature controls the index of the stream channel for the streaming of the green plane of the planar pixel formats.
     *  - \b Blue (Display string: 'Blue'): The TransferStreamChannel feature controls the index of the stream channel for the streaming of blue plane of the planar pixel formats.
     *  - \b All (Display string: 'All'): The TransferStreamChannel feature controls the index of the stream channel for the streaming of all the planes of the planar pixel formats simultaneously or non planar pixel formats.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 transferComponentSelector;
    /// \brief An integer property. Selects the streaming channel that will be used to transfer the selected stream of data.
    /**
     *  Selects the streaming channel that will be used to transfer the selected stream of data. In general, this feature can be omitted and the default streaming channel will be used.
     */
    PropertyI64 transferStreamChannel;
    // *INDENT-OFF*
    PYTHON_OR_JAVA_ONLY( %mutable; )
    // *INDENT-ON*
};

//-----------------------------------------------------------------------------
/// \brief Category for control of 3D camera specific features.
/**
 *  A category for control of 3D camera specific features.
 * \ingroup GenICamInterfaceDevice
 */
class Scan3dControl
//-----------------------------------------------------------------------------
{
public:
    /// \brief Constructs a new <b>mvIMPACT::acquire::GenICam::Scan3dControl</b> object.
    explicit Scan3dControl(
        /// [in] A pointer to a <b>mvIMPACT::acquire::Device</b> object obtained from a <b>mvIMPACT::acquire::DeviceManager</b> object.
        mvIMPACT::acquire::Device* pDev,
        /// [in] The name of the driver internal setting to access with this instance.
        /// A list of valid setting names can be obtained by a call to
        /// <b>mvIMPACT::acquire::FunctionInterface::getAvailableSettings</b>, new
        /// settings can be created with the function
        /// <b>mvIMPACT::acquire::FunctionInterface::createSetting</b>
        const std::string& settingName = "Base" ) :
        scan3dExtractionSelector(),
        scan3dExtractionSource(),
        scan3dExtractionMethod(),
        scan3dDistanceUnit(),
        scan3dCoordinateSystem(),
        scan3dOutputMode(),
        scan3dCoordinateSystemReference(),
        scan3dCoordinateSelector(),
        scan3dCoordinateScale(),
        scan3dCoordinateOffset(),
        scan3dInvalidDataFlag(),
        scan3dInvalidDataValue(),
        scan3dAxisMin(),
        scan3dAxisMax(),
        scan3dCoordinateTransformSelector(),
        scan3dTransformValue(),
        scan3dCoordinateReferenceSelector(),
        scan3dCoordinateReferenceValue(),
        scan3dFocalLength(),
        scan3dBaseline(),
        scan3dPrincipalPointU(),
        scan3dPrincipalPointV()
    {
        pDev->validateInterfaceLayout( dilGenICam );
        mvIMPACT::acquire::DeviceComponentLocator locator( pDev, mvIMPACT::acquire::dltSetting, settingName );
        locator.bindSearchBase( locator.searchbase_id(), "Camera/GenICam" );
        locator.bindComponent( scan3dExtractionSelector, "Scan3dExtractionSelector" );
        locator.bindComponent( scan3dExtractionSource, "Scan3dExtractionSource" );
        locator.bindComponent( scan3dExtractionMethod, "Scan3dExtractionMethod" );
        locator.bindComponent( scan3dDistanceUnit, "Scan3dDistanceUnit" );
        locator.bindComponent( scan3dCoordinateSystem, "Scan3dCoordinateSystem" );
        locator.bindComponent( scan3dOutputMode, "Scan3dOutputMode" );
        locator.bindComponent( scan3dCoordinateSystemReference, "Scan3dCoordinateSystemReference" );
        locator.bindComponent( scan3dCoordinateSelector, "Scan3dCoordinateSelector" );
        locator.bindComponent( scan3dCoordinateScale, "Scan3dCoordinateScale" );
        locator.bindComponent( scan3dCoordinateOffset, "Scan3dCoordinateOffset" );
        locator.bindComponent( scan3dInvalidDataFlag, "Scan3dInvalidDataFlag" );
        locator.bindComponent( scan3dInvalidDataValue, "Scan3dInvalidDataValue" );
        locator.bindComponent( scan3dAxisMin, "Scan3dAxisMin" );
        locator.bindComponent( scan3dAxisMax, "Scan3dAxisMax" );
        locator.bindComponent( scan3dCoordinateTransformSelector, "Scan3dCoordinateTransformSelector" );
        locator.bindComponent( scan3dTransformValue, "Scan3dTransformValue" );
        locator.bindComponent( scan3dCoordinateReferenceSelector, "Scan3dCoordinateReferenceSelector" );
        locator.bindComponent( scan3dCoordinateReferenceValue, "Scan3dCoordinateReferenceValue" );
        locator.bindComponent( scan3dFocalLength, "Scan3dFocalLength" );
        locator.bindComponent( scan3dBaseline, "Scan3dBaseline" );
        locator.bindComponent( scan3dPrincipalPointU, "Scan3dPrincipalPointU" );
        locator.bindComponent( scan3dPrincipalPointV, "Scan3dPrincipalPointV" );
    }
    // *INDENT-OFF*
    PYTHON_OR_JAVA_ONLY( %immutable; )
    // *INDENT-ON*
    /// \brief An enumerated integer property. Selects the 3DExtraction processing module to control (if multiple ones are present).
    /**
     *  Selects the 3DExtraction processing module to control (if multiple ones are present).
     *
     *  The following string values might be valid for this feature:
     *  - \b Scan3dExtraction0 (Display string: 'Scan 3d Extraction 0'): Selects Scan3d Extraction module 0.
     *  - \b Scan3dExtraction1 (Display string: 'Scan 3d Extraction 1'): Selects Scan3d Extraction module 1.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 scan3dExtractionSelector;
    /// \brief An enumerated integer property. Selects the sensor's data source region for 3D Extraction module.
    /**
     *  Selects the sensor's data source region for 3D Extraction module.
     *
     *  The following string values might be valid for this feature:
     *  - \b Region0 (Display string: 'Region 0'): Data come from Sensor's Region0.
     *  - \b Region1 (Display string: 'Region 1'): Data come from Sensor's Region1.
     *  - \b Region\#2\# (Display string: 'Region \#2\#'): Data come from Sensor's Region\#2\#.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 scan3dExtractionSource;
    /// \brief An enumerated integer property. Selects the method for extracting 3D from the input sensor data.
    /**
     *  Selects the method for extracting 3D from the input sensor data.
     *
     *  The following string values might be valid for this feature:
     *  - \b Default (Display string: 'Default'): Default range extraction method for the device.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 scan3dExtractionMethod;
    /// \brief An enumerated integer property. Specifies the unit used when delivering (calibrated) distance data.
    /**
     *  Specifies the unit used when delivering (calibrated) distance data.
     *
     *  The following string values might be valid for this feature:
     *  - \b Millimeter (Display string: 'Millimeter'): Distance values are in millimeter units (default).
     *  - \b Meter (Display string: 'Meter'): Distance values are in meter units.
     *  - \b Inch (Display string: 'Inch'): Distance values are in inch units.
     *  - \b Pixel (Display string: 'Pixel'): Distance values are given as a multiple of the size of a pixel.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 scan3dDistanceUnit;
    /// \brief An enumerated integer property. Specifies the Coordinate system to use for the device.
    /**
     *  Specifies the Coordinate system to use for the device.
     *
     *  The following string values might be valid for this feature:
     *  - \b Cartesian (Display string: 'Cartesian'): Default value. 3-axis orthogonal, right-hand X-Y-Z.
     *  - \b Spherical (Display string: 'Spherical'): A Theta-Phi-Rho coordinate system.
     *  - \b Cylindrical (Display string: 'Cylindrical'): A Theta-Y-Rho coordinate system.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 scan3dCoordinateSystem;
    /// \brief An enumerated integer property. Controls the Calibration and data organization of the device and  the coordinates transmitted.
    /**
     *  Controls the Calibration and data organization of the device and  the coordinates transmitted.
     *
     *  The following string values might be valid for this feature:
     *  - \b UncalibratedC (Display string: 'Uncalibrated C'): Uncalibrated 2.5D Depth map. The distance data does not represent a physical unit and may be non-linear. The data is a 2.5D range map only.
     *  - \b CalibratedABC_Grid (Display string: 'Calibrated ABC Grid'): 3 Coordinates in grid organization. The full 3 coordinate data with the grid array organization from the sensor kept.
     *  - \b CalibratedABC_PointCloud (Display string: 'Calibrated ABC Point Cloud'): 3 Coordinates without organization. The full 3 coordinate data without any organization of data points. Typically only valid points transmitted giving varying image size.
     *  - \b CalibratedAC (Display string: 'Calibrated AC'): 2 Coordinates with fixed B sampling. The data is sent as a A and C coordinates (X,Z or Theta,Rho). The B (Y) axis uses the scale and offset parameters for the B axis.
     *  - \b CalibratedAC_Linescan (Display string: 'Calibrated AC Linescan'): 2 Coordinates with varying sampling. The data is sent as a A and C coordinates (X,Z or Theta,Rho). The B (Y) axis comes from the encoder chunk value.
     *  - \b CalibratedC (Display string: 'Calibrated C'): Calibrated 2.5D Depth map. The distance data is expressed in the chosen distance unit. The data is a 2.5D range map. No information on X-Y axes available.
     *  - \b CalibratedC_Linescan (Display string: 'Calibrated C Linescan'): Depth Map with varying B sampling. The distance data is expressed in the chosen distance unit. The data is a 2.5D range map. The B (Y) axis comes from the encoder chunk value.
     *  - \b RectifiedC (Display string: 'Rectified C'): Rectified 2.5D Depth map. The distance data has been rectified to a uniform sampling pattern in the X and Y direction. The data is a 2.5D range map only. If a complete 3D point cloud is rectified but transmitted as explicit coordinates it should be transmitted as one of the 'CalibratedABC' formats.
     *  - \b RectifiedC_Linescan (Display string: 'Rectified C Linescan'): Rectified 2.5D Depth map with varying B sampling. The data is sent as rectified 1D profiles using Coord3D_C pixels. The B (Y) axis comes from the encoder chunk value.
     *  - \b DisparityC (Display string: 'Disparity C'): Disparity 2.5D Depth map. The distance is inversely proportional to the pixel (disparity) value.
     *  - \b DisparityC_Linescan (Display string: 'Disparity C Linescan'): Disparity 2.5D Depth map with varying B sampling. The distance is inversely proportional to the pixel (disparity) value. The B (Y) axis comes from the encoder chunk value.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 scan3dOutputMode;
    /// \brief An enumerated integer property. Defines coordinate system reference location.
    /**
     *  Defines coordinate system reference location.
     *
     *  The following string values might be valid for this feature:
     *  - \b Anchor (Display string: 'Anchor'): Default value. Original fixed reference. The coordinate system fixed relative the camera reference point marker is used.
     *  - \b Transformed (Display string: 'Transformed'): Transformed reference system. The transformed coordinate system is used according to the definition in the rotation and translation matrices.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 scan3dCoordinateSystemReference;
    /// \brief An enumerated integer property. Selects the individual coordinates in the vectors for 3D information/transformation.
    /**
     *  Selects the individual coordinates in the vectors for 3D information/transformation.
     *
     *  The following string values might be valid for this feature:
     *  - \b CoordinateA (Display string: 'Coordinate A'): The first (X or Theta) coordinate
     *  - \b CoordinateB (Display string: 'Coordinate B'): The second (Y or Phi) coordinate
     *  - \b CoordinateC (Display string: 'Coordinate C'): The third (Z or Rho) coordinate.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 scan3dCoordinateSelector;
    /// \brief A floating point property. Scale factor when transforming a pixel from relative coordinates to world coordinates.
    /**
     *  Scale factor when transforming a pixel from relative coordinates to world coordinates.
     */
    PropertyF scan3dCoordinateScale;
    /// \brief A floating point property. Offset when transforming a pixel from relative coordinates to world coordinates.
    /**
     *  Offset when transforming a pixel from relative coordinates to world coordinates.
     */
    PropertyF scan3dCoordinateOffset;
    /// \brief A boolean property. Enables the definition of a non-valid flag value in the data stream.
    /**
     *  Enables the definition of a non-valid flag value in the data stream. Note that the confidence output is an alternate recommended way to identify non-valid pixels. Using a Scan3dInvalidDataValue may give processing penalties due to special handling.
     */
    PropertyIBoolean scan3dInvalidDataFlag;
    /// \brief A floating point property. Value which identifies a non-valid pixel if Scan3dInvalidDataFlag is enabled.
    /**
     *  Value which identifies a non-valid pixel if Scan3dInvalidDataFlag is enabled.
     */
    PropertyF scan3dInvalidDataValue;
    /// \brief A floating point property. Minimum valid transmitted coordinate value of the selected Axis.
    /**
     *  Minimum valid transmitted coordinate value of the selected Axis.
     */
    PropertyF scan3dAxisMin;
    /// \brief A floating point property. Maximum valid transmitted coordinate value of the selected Axis.
    /**
     *  Maximum valid transmitted coordinate value of the selected Axis.
     */
    PropertyF scan3dAxisMax;
    /// \brief An enumerated integer property. Sets the index to read/write a coordinate transform value.
    /**
     *  Sets the index to read/write a coordinate transform value.
     *
     *  The following string values might be valid for this feature:
     *  - \b RotationX (Display string: 'Rotation X'): Rotation around X axis.
     *  - \b RotationY (Display string: 'Rotation Y'): Rotation around Y axis.
     *  - \b RotationZ (Display string: 'Rotation Z'): Rotation around Z axis.
     *  - \b TranslationX (Display string: 'Translation X'): Translation along X axis.
     *  - \b TranslationY (Display string: 'Translation Y'): Translation along Y axis.
     *  - \b TranslationZ (Display string: 'Translation Z'): Translation along Z axis.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 scan3dCoordinateTransformSelector;
    /// \brief A floating point property. Specifies the transform value selected.
    /**
     *  Specifies the transform value selected. For translations (Scan3dCoordinateTransformSelector = TranslationX/Y/Z) it is expressed in the distance unit of the system, for rotations (Scan3dCoordinateTransformSelector =RotationX/Y/Z) in degrees.
     */
    PropertyF scan3dTransformValue;
    /// \brief An enumerated integer property. Sets the index to read a coordinate system reference value defining the transform of a point from the current (Anchor or Transformed) system to the reference system.
    /**
     *  Sets the index to read a coordinate system reference value defining the transform of a point from the current (Anchor or Transformed) system to the reference system.
     *
     *  The following string values might be valid for this feature:
     *  - \b RotationX (Display string: 'Rotation X'): Rotation around X axis.
     *  - \b RotationY (Display string: 'Rotation Y'): Rotation around Y axis.
     *  - \b RotationZ (Display string: 'Rotation Z'): Rotation around Z axis.
     *  - \b TranslationX (Display string: 'Translation X'): X axis translation.
     *  - \b TranslationY (Display string: 'Translation Y'): Y axis translation.
     *  - \b TranslationZ (Display string: 'Translation Z'): Z axis translation.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 scan3dCoordinateReferenceSelector;
    /// \brief A floating point property. Returns the reference value selected.
    /**
     *  Returns the reference value selected. Reads the value of a rotation or translation value for the current (Anchor or Transformed) coordinate system transformation to the Reference system.
     */
    PropertyF scan3dCoordinateReferenceValue;
    /// \brief A floating point property. Returns the focal length of the camera in pixel.
    /**
     *  Returns the focal length of the camera in pixel. The focal length depends on the selected region. The value of this feature takes into account horizontal binning, decimation, or any other function changing the image resolution.
     */
    PropertyF scan3dFocalLength;
    /// \brief A floating point property. Returns the baseline as the physical distance of two cameras in a stereo camera setup.
    /**
     *  Returns the baseline as the physical distance of two cameras in a stereo camera setup. The value of this feature can be used for 3D reconstruction from disparity images. In this case, the unit of the 3D coordinates corresponds to the unit of the baseline.
     */
    PropertyF scan3dBaseline;
    /// \brief A floating point property. Returns the value of the horizontal position of the principal point, relative to the region origin, i.e.
    /**
     *  Returns the value of the horizontal position of the principal point, relative to the region origin, i.e. OffsetX. The value of this feature takes into account horizontal binning, decimation, or any other function changing the image resolution.
     */
    PropertyF scan3dPrincipalPointU;
    /// \brief A floating point property. Returns the value of the vertical position of the principal point, relative to the region origin, i.e.
    /**
     *  Returns the value of the vertical position of the principal point, relative to the region origin, i.e. OffsetY. The value of this feature takes into account vertical binning, decimation, or any other function changing the image resolution.
     */
    PropertyF scan3dPrincipalPointV;
    // *INDENT-OFF*
    PYTHON_OR_JAVA_ONLY( %mutable; )
    // *INDENT-ON*
};

//-----------------------------------------------------------------------------
/// \brief Category containing the Lighting control features.
/**
 *  A category containing the Lighting control features.
 * \ingroup GenICamInterfaceDevice
 */
class LightControl
//-----------------------------------------------------------------------------
{
public:
    /// \brief Constructs a new <b>mvIMPACT::acquire::GenICam::LightControl</b> object.
    explicit LightControl(
        /// [in] A pointer to a <b>mvIMPACT::acquire::Device</b> object obtained from a <b>mvIMPACT::acquire::DeviceManager</b> object.
        mvIMPACT::acquire::Device* pDev,
        /// [in] The name of the driver internal setting to access with this instance.
        /// A list of valid setting names can be obtained by a call to
        /// <b>mvIMPACT::acquire::FunctionInterface::getAvailableSettings</b>, new
        /// settings can be created with the function
        /// <b>mvIMPACT::acquire::FunctionInterface::createSetting</b>
        const std::string& settingName = "Base" ) :
        lightControllerSelector(),
        lightControllerSource(),
        lightCurrentRating(),
        lightVoltageRating(),
        lightBrightness(),
        lightConnectionStatus(),
        lightCurrentMeasured(),
        lightVoltageMeasured()
    {
        pDev->validateInterfaceLayout( dilGenICam );
        mvIMPACT::acquire::DeviceComponentLocator locator( pDev, mvIMPACT::acquire::dltSetting, settingName );
        locator.bindSearchBase( locator.searchbase_id(), "Camera/GenICam" );
        locator.bindComponent( lightControllerSelector, "LightControllerSelector" );
        locator.bindComponent( lightControllerSource, "LightControllerSource" );
        locator.bindComponent( lightCurrentRating, "LightCurrentRating" );
        locator.bindComponent( lightVoltageRating, "LightVoltageRating" );
        locator.bindComponent( lightBrightness, "LightBrightness" );
        locator.bindComponent( lightConnectionStatus, "LightConnectionStatus" );
        locator.bindComponent( lightCurrentMeasured, "LightCurrentMeasured" );
        locator.bindComponent( lightVoltageMeasured, "LightVoltageMeasured" );
    }
    // *INDENT-OFF*
    PYTHON_OR_JAVA_ONLY( %immutable; )
    // *INDENT-ON*
    /// \brief An enumerated integer property. Selects the Light Controller to configure.
    /**
     *  Selects the Light Controller to configure.
     *
     *  The following string values might be valid for this feature:
     *  - \b LightController0 (Display string: 'Light Controller 0'): Light Controller 0
     *  - \b LightController1 (Display string: 'Light Controller 1'): Light Controller 1
     *  - \b LightController2 (Display string: 'Light Controller 2'): Light Controller 2
     *  - \b LightController\#3\# (Display string: 'Light Controller \#3\#'): Light Controller \#3\#
     *  - \b LightController3 (Display string: 'Light Controller 3'): Light Controller 3
     *  - \b LightController4 (Display string: 'Light Controller 4'): Light Controller 4
     *  - \b LightController5 (Display string: 'Light Controller 5'): Light Controller 5
     *  - \b LightController6 (Display string: 'Light Controller 6'): Light Controller 6
     *  - \b LightController7 (Display string: 'Light Controller 7'): Light Controller 7
     *  - \b LightController8 (Display string: 'Light Controller 8'): Light Controller 8
     *  - \b LightController9 (Display string: 'Light Controller 9'): Light Controller 9
     *  - \b LightController10 (Display string: 'Light Controller 10'): Light Controller 10
     *  - \b LightController11 (Display string: 'Light Controller 11'): Light Controller 11
     *  - \b LightController12 (Display string: 'Light Controller 12'): Light Controller 12
     *  - \b LightController13 (Display string: 'Light Controller 13'): Light Controller 13
     *  - \b LightController14 (Display string: 'Light Controller 14'): Light Controller 14
     *  - \b LightController15 (Display string: 'Light Controller 15'): Light Controller 15
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 lightControllerSelector;
    /// \brief An enumerated integer property. Selects the input source signal of the Light Controller.
    /**
     *  Selects the input source signal of the Light Controller.
     *
     *  The following string values might be valid for this feature:
     *  - \b Line0 (Display string: 'Line 0'): Line 0
     *  - \b Line\#1\# (Display string: 'Line \#1\#'): Line \#1\#
     *  - \b Timer0 (Display string: 'Timer 0'): Timer 0
     *  - \b Timer\#1\# (Display string: 'Timer \#1\#'): Timer \#1\#
     *  - \b Counter0 (Display string: 'Counter 0'): Counter 0
     *  - \b Counter\#1\# (Display string: 'Counter \#1\#'): Counter \#1\#
     *  - \b UserOutput0 (Display string: 'User Output 0'): User Output 0
     *  - \b UserOutput\#1\# (Display string: 'User Output \#1\#'): User Output \#1\#
     *  - \b Line1 (Display string: 'Line 1'): Line 1
     *  - \b Line2 (Display string: 'Line 2'): Line 2
     *  - \b Line3 (Display string: 'Line 3'): Line 3
     *  - \b Line4 (Display string: 'Line 4'): Line 4
     *  - \b Line5 (Display string: 'Line 5'): Line 5
     *  - \b Line6 (Display string: 'Line 6'): Line 6
     *  - \b Line7 (Display string: 'Line 7'): Line 7
     *  - \b Line8 (Display string: 'Line 8'): Line 8
     *  - \b Line9 (Display string: 'Line 9'): Line 9
     *  - \b Line10 (Display string: 'Line 10'): Line 10
     *  - \b Line11 (Display string: 'Line 11'): Line 11
     *  - \b Line12 (Display string: 'Line 12'): Line 12
     *  - \b Line13 (Display string: 'Line 13'): Line 13
     *  - \b Line14 (Display string: 'Line 14'): Line 14
     *  - \b Line15 (Display string: 'Line 15'): Line 15
     *  - \b Timer1 (Display string: 'Timer 1'): Timer 1
     *  - \b Timer2 (Display string: 'Timer 2'): Timer 2
     *  - \b Timer3 (Display string: 'Timer 3'): Timer 3
     *  - \b Timer4 (Display string: 'Timer 4'): Timer 4
     *  - \b Timer5 (Display string: 'Timer 5'): Timer 5
     *  - \b Timer6 (Display string: 'Timer 6'): Timer 6
     *  - \b Timer7 (Display string: 'Timer 7'): Timer 7
     *  - \b Timer8 (Display string: 'Timer 8'): Timer 8
     *  - \b Timer9 (Display string: 'Timer 9'): Timer 9
     *  - \b Timer10 (Display string: 'Timer 10'): Timer 10
     *  - \b Timer11 (Display string: 'Timer 11'): Timer 11
     *  - \b Timer12 (Display string: 'Timer 12'): Timer 12
     *  - \b Timer13 (Display string: 'Timer 13'): Timer 13
     *  - \b Timer14 (Display string: 'Timer 14'): Timer 14
     *  - \b Timer15 (Display string: 'Timer 15'): Timer 15
     *  - \b Counter1 (Display string: 'Counter 1'): Counter 1
     *  - \b Counter2 (Display string: 'Counter 2'): Counter 2
     *  - \b Counter3 (Display string: 'Counter 3'): Counter 3
     *  - \b Counter4 (Display string: 'Counter 4'): Counter 4
     *  - \b Counter5 (Display string: 'Counter 5'): Counter 5
     *  - \b Counter6 (Display string: 'Counter 6'): Counter 6
     *  - \b Counter7 (Display string: 'Counter 7'): Counter 7
     *  - \b Counter8 (Display string: 'Counter 8'): Counter 8
     *  - \b Counter9 (Display string: 'Counter 9'): Counter 9
     *  - \b Counter10 (Display string: 'Counter 10'): Counter 10
     *  - \b Counter11 (Display string: 'Counter 11'): Counter 11
     *  - \b Counter12 (Display string: 'Counter 12'): Counter 12
     *  - \b Counter13 (Display string: 'Counter 13'): Counter 13
     *  - \b Counter14 (Display string: 'Counter 14'): Counter 14
     *  - \b Counter15 (Display string: 'Counter 15'): Counter 15
     *  - \b UserOutput1 (Display string: 'User Output 1'): User Output 1
     *  - \b UserOutput2 (Display string: 'User Output 2'): User Output 2
     *  - \b UserOutput3 (Display string: 'User Output 3'): User Output 3
     *  - \b UserOutput4 (Display string: 'User Output 4'): User Output 4
     *  - \b UserOutput5 (Display string: 'User Output 5'): User Output 5
     *  - \b UserOutput6 (Display string: 'User Output 6'): User Output 6
     *  - \b UserOutput7 (Display string: 'User Output 7'): User Output 7
     *  - \b UserOutput8 (Display string: 'User Output 8'): User Output 8
     *  - \b UserOutput9 (Display string: 'User Output 9'): User Output 9
     *  - \b UserOutput10 (Display string: 'User Output 10'): User Output 10
     *  - \b UserOutput11 (Display string: 'User Output 11'): User Output 11
     *  - \b UserOutput12 (Display string: 'User Output 12'): User Output 12
     *  - \b UserOutput13 (Display string: 'User Output 13'): User Output 13
     *  - \b UserOutput14 (Display string: 'User Output 14'): User Output 14
     *  - \b UserOutput15 (Display string: 'User Output 15'): User Output 15
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 lightControllerSource;
    /// \brief A floating point property. Set the current rating of the lighting output.
    /**
     *  Set the current rating of the lighting output.
     */
    PropertyF lightCurrentRating;
    /// \brief A floating point property. Set the voltage rating of the lighting output.
    /**
     *  Set the voltage rating of the lighting output.
     */
    PropertyF lightVoltageRating;
    /// \brief A floating point property. Set the brightness of the lighting output in percent.
    /**
     *  Set the brightness of the lighting output in percent. Can be greater than 100% for short overdrive period.
     */
    PropertyF lightBrightness;
    /// \brief An enumerated integer property. Status of a light connected to the controller's output Line.
    /**
     *  Status of a light connected to the controller's output Line.
     *
     *  The following string values might be valid for this feature:
     *  - \b Sensing (Display string: 'Sensing'): Sensing
     *  - \b Ready (Display string: 'Ready'): Ready
     *  - \b NoConnect (Display string: 'No Connect'): No Connect
     *  - \b Error (Display string: 'Error'): Error
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 lightConnectionStatus;
    /// \brief A floating point property. The measured current applied to the lighting.
    /**
     *  The measured current applied to the lighting.
     */
    PropertyF lightCurrentMeasured;
    /// \brief A floating point property. The measured voltage applied to the lighting.
    /**
     *  The measured voltage applied to the lighting.
     */
    PropertyF lightVoltageMeasured;
    // *INDENT-OFF*
    PYTHON_OR_JAVA_ONLY( %mutable; )
    // *INDENT-ON*
};

//-----------------------------------------------------------------------------
/// \brief Category that contains the Chunk Data control features.
/**
 *  A category that contains the Chunk Data control features.
 * \ingroup GenICamInterfaceDevice
 */
class ChunkDataControl
//-----------------------------------------------------------------------------
{
public:
    /// \brief Constructs a new <b>mvIMPACT::acquire::GenICam::ChunkDataControl</b> object.
    explicit ChunkDataControl(
        /// [in] A pointer to a <b>mvIMPACT::acquire::Device</b> object obtained from a <b>mvIMPACT::acquire::DeviceManager</b> object.
        mvIMPACT::acquire::Device* pDev,
        /// [in] The name of the driver internal setting to access with this instance.
        /// A list of valid setting names can be obtained by a call to
        /// <b>mvIMPACT::acquire::FunctionInterface::getAvailableSettings</b>, new
        /// settings can be created with the function
        /// <b>mvIMPACT::acquire::FunctionInterface::createSetting</b>
        const std::string& settingName = "Base" ) :
        chunkModeActive(),
        chunkXMLEnable(),
        chunkSelector(),
        chunkEnable(),
        chunkRegionSelector(),
        chunkRegionID(),
        chunkRegionIDValue(),
        chunkComponentSelector(),
        chunkComponentID(),
        chunkComponentIDValue(),
        chunkGroupSelector(),
        chunkGroupID(),
        chunkImageComponent(),
        chunkGroupIDValue(),
        chunkPartSelector(),
        chunkImage(),
        chunkOffsetX(),
        chunkOffsetY(),
        chunkWidth(),
        chunkHeight(),
        chunkPixelFormat(),
        chunkPixelDynamicRangeMin(),
        chunkPixelDynamicRangeMax(),
        chunkBinningHorizontal(),
        chunkBinningVertical(),
        chunkDecimationHorizontal(),
        chunkDecimationVertical(),
        chunkReverseX(),
        chunkReverseY(),
        chunkTimestamp(),
        chunkTimestampLatchValue(),
        chunkLineStatusAll(),
        chunkCounterSelector(),
        chunkCounterValue(),
        chunkTimerSelector(),
        chunkTimerValue(),
        chunkScanLineSelector(),
        chunkEncoderSelector(),
        chunkEncoderValue(),
        chunkEncoderStatus(),
        chunkExposureTimeSelector(),
        chunkExposureTime(),
        chunkGainSelector(),
        chunkGain(),
        chunkBlackLevelSelector(),
        chunkBlackLevel(),
        chunkLinePitch(),
        chunkFrameID(),
        chunkSourceSelector(),
        chunkSourceID(),
        chunkSourceIDValue(),
        chunkTransferBlockID(),
        chunkTransferStreamID(),
        chunkTransferQueueCurrentBlockCount(),
        chunkStreamChannelID(),
        chunkSequencerSetActive(),
        chunkScan3dDistanceUnit(),
        chunkScan3dOutputMode(),
        chunkScan3dCoordinateSystem(),
        chunkScan3dCoordinateSystemReference(),
        chunkScan3dCoordinateSelector(),
        chunkScan3dCoordinateScale(),
        chunkScan3dCoordinateOffset(),
        chunkScan3dInvalidDataFlag(),
        chunkScan3dInvalidDataValue(),
        chunkScan3dAxisMin(),
        chunkScan3dAxisMax(),
        chunkScan3dCoordinateTransformSelector(),
        chunkScan3dTransformValue(),
        chunkScan3dCoordinateReferenceSelector(),
        chunkScan3dCoordinateReferenceValue(),
        chunkScan3dFocalLength(),
        chunkScan3dBaseline(),
        chunkScan3dPrincipalPointU(),
        chunkScan3dPrincipalPointV(),
        mvChunkJPEG(),
        chunkmvCustomIdentifier()
    {
        pDev->validateInterfaceLayout( dilGenICam );
        mvIMPACT::acquire::DeviceComponentLocator locator( pDev, mvIMPACT::acquire::dltSetting, settingName );
        locator.bindSearchBase( locator.searchbase_id(), "Camera/GenICam" );
        locator.bindComponent( chunkModeActive, "ChunkModeActive" );
        locator.bindComponent( chunkXMLEnable, "ChunkXMLEnable" );
        locator.bindComponent( chunkSelector, "ChunkSelector" );
        locator.bindComponent( chunkEnable, "ChunkEnable" );
        locator.bindComponent( chunkRegionSelector, "ChunkRegionSelector" );
        locator.bindComponent( chunkRegionID, "ChunkRegionID" );
        locator.bindComponent( chunkRegionIDValue, "ChunkRegionIDValue" );
        locator.bindComponent( chunkComponentSelector, "ChunkComponentSelector" );
        locator.bindComponent( chunkComponentID, "ChunkComponentID" );
        locator.bindComponent( chunkComponentIDValue, "ChunkComponentIDValue" );
        locator.bindComponent( chunkGroupSelector, "ChunkGroupSelector" );
        locator.bindComponent( chunkGroupID, "ChunkGroupID" );
        locator.bindComponent( chunkImageComponent, "ChunkImageComponent" );
        locator.bindComponent( chunkGroupIDValue, "ChunkGroupIDValue" );
        locator.bindComponent( chunkPartSelector, "ChunkPartSelector" );
        locator.bindComponent( chunkImage, "ChunkImage" );
        locator.bindComponent( chunkOffsetX, "ChunkOffsetX" );
        locator.bindComponent( chunkOffsetY, "ChunkOffsetY" );
        locator.bindComponent( chunkWidth, "ChunkWidth" );
        locator.bindComponent( chunkHeight, "ChunkHeight" );
        locator.bindComponent( chunkPixelFormat, "ChunkPixelFormat" );
        locator.bindComponent( chunkPixelDynamicRangeMin, "ChunkPixelDynamicRangeMin" );
        if( !chunkPixelDynamicRangeMin.isValid() )
        {
            locator.bindComponent( chunkPixelDynamicRangeMin, "ChunkDynamicRangeMin" );
        }
        locator.bindComponent( chunkPixelDynamicRangeMax, "ChunkPixelDynamicRangeMax" );
        if( !chunkPixelDynamicRangeMax.isValid() )
        {
            locator.bindComponent( chunkPixelDynamicRangeMax, "ChunkDynamicRangeMax" );
        }
        locator.bindComponent( chunkBinningHorizontal, "ChunkBinningHorizontal" );
        locator.bindComponent( chunkBinningVertical, "ChunkBinningVertical" );
        locator.bindComponent( chunkDecimationHorizontal, "ChunkDecimationHorizontal" );
        locator.bindComponent( chunkDecimationVertical, "ChunkDecimationVertical" );
        locator.bindComponent( chunkReverseX, "ChunkReverseX" );
        locator.bindComponent( chunkReverseY, "ChunkReverseY" );
        locator.bindComponent( chunkTimestamp, "ChunkTimestamp" );
        locator.bindComponent( chunkTimestampLatchValue, "ChunkTimestampLatchValue" );
        locator.bindComponent( chunkLineStatusAll, "ChunkLineStatusAll" );
        locator.bindComponent( chunkCounterSelector, "ChunkCounterSelector" );
        locator.bindComponent( chunkCounterValue, "ChunkCounterValue" );
        if( !chunkCounterValue.isValid() )
        {
            locator.bindComponent( chunkCounterValue, "ChunkCounter" );
        }
        locator.bindComponent( chunkTimerSelector, "ChunkTimerSelector" );
        locator.bindComponent( chunkTimerValue, "ChunkTimerValue" );
        if( !chunkTimerValue.isValid() )
        {
            locator.bindComponent( chunkTimerValue, "ChunkTimer" );
        }
        locator.bindComponent( chunkScanLineSelector, "ChunkScanLineSelector" );
        locator.bindComponent( chunkEncoderSelector, "ChunkEncoderSelector" );
        locator.bindComponent( chunkEncoderValue, "ChunkEncoderValue" );
        locator.bindComponent( chunkEncoderStatus, "ChunkEncoderStatus" );
        locator.bindComponent( chunkExposureTimeSelector, "ChunkExposureTimeSelector" );
        locator.bindComponent( chunkExposureTime, "ChunkExposureTime" );
        locator.bindComponent( chunkGainSelector, "ChunkGainSelector" );
        locator.bindComponent( chunkGain, "ChunkGain" );
        locator.bindComponent( chunkBlackLevelSelector, "ChunkBlackLevelSelector" );
        locator.bindComponent( chunkBlackLevel, "ChunkBlackLevel" );
        locator.bindComponent( chunkLinePitch, "ChunkLinePitch" );
        locator.bindComponent( chunkFrameID, "ChunkFrameID" );
        locator.bindComponent( chunkSourceSelector, "ChunkSourceSelector" );
        locator.bindComponent( chunkSourceID, "ChunkSourceID" );
        locator.bindComponent( chunkSourceIDValue, "ChunkSourceIDValue" );
        locator.bindComponent( chunkTransferBlockID, "ChunkTransferBlockID" );
        locator.bindComponent( chunkTransferStreamID, "ChunkTransferStreamID" );
        locator.bindComponent( chunkTransferQueueCurrentBlockCount, "ChunkTransferQueueCurrentBlockCount" );
        locator.bindComponent( chunkStreamChannelID, "ChunkStreamChannelID" );
        locator.bindComponent( chunkSequencerSetActive, "ChunkSequencerSetActive" );
        locator.bindComponent( chunkScan3dDistanceUnit, "ChunkScan3dDistanceUnit" );
        locator.bindComponent( chunkScan3dOutputMode, "ChunkScan3dOutputMode" );
        locator.bindComponent( chunkScan3dCoordinateSystem, "ChunkScan3dCoordinateSystem" );
        locator.bindComponent( chunkScan3dCoordinateSystemReference, "ChunkScan3dCoordinateSystemReference" );
        locator.bindComponent( chunkScan3dCoordinateSelector, "ChunkScan3dCoordinateSelector" );
        locator.bindComponent( chunkScan3dCoordinateScale, "ChunkScan3dCoordinateScale" );
        locator.bindComponent( chunkScan3dCoordinateOffset, "ChunkScan3dCoordinateOffset" );
        locator.bindComponent( chunkScan3dInvalidDataFlag, "ChunkScan3dInvalidDataFlag" );
        locator.bindComponent( chunkScan3dInvalidDataValue, "ChunkScan3dInvalidDataValue" );
        locator.bindComponent( chunkScan3dAxisMin, "ChunkScan3dAxisMin" );
        locator.bindComponent( chunkScan3dAxisMax, "ChunkScan3dAxisMax" );
        locator.bindComponent( chunkScan3dCoordinateTransformSelector, "ChunkScan3dCoordinateTransformSelector" );
        locator.bindComponent( chunkScan3dTransformValue, "ChunkScan3dTransformValue" );
        locator.bindComponent( chunkScan3dCoordinateReferenceSelector, "ChunkScan3dCoordinateReferenceSelector" );
        locator.bindComponent( chunkScan3dCoordinateReferenceValue, "ChunkScan3dCoordinateReferenceValue" );
        locator.bindComponent( chunkScan3dFocalLength, "ChunkScan3dFocalLength" );
        locator.bindComponent( chunkScan3dBaseline, "ChunkScan3dBaseline" );
        locator.bindComponent( chunkScan3dPrincipalPointU, "ChunkScan3dPrincipalPointU" );
        locator.bindComponent( chunkScan3dPrincipalPointV, "ChunkScan3dPrincipalPointV" );
        locator.bindComponent( mvChunkJPEG, "mvChunkJPEG" );
        locator.bindComponent( chunkmvCustomIdentifier, "ChunkmvCustomIdentifier" );
    }
    // *INDENT-OFF*
    PYTHON_OR_JAVA_ONLY( %immutable; )
    // *INDENT-ON*
    /// \brief A boolean property. Activates the inclusion of Chunk data in the transmitted payload.
    /**
     *  Activates the inclusion of Chunk data in the transmitted payload.
     */
    PropertyIBoolean chunkModeActive;
    /// \brief A boolean property. Activates the inclusion of the GenICam XML necessary to the chunk parser to decode all the Chunk data included in the transmitted payload.
    /**
     *  Activates the inclusion of the GenICam XML necessary to the chunk parser to decode all the Chunk data included in the transmitted payload.
     */
    PropertyIBoolean chunkXMLEnable;
    /// \brief An enumerated integer property. Selects which Chunk to enable or control.
    /**
     *  Selects which Chunk to enable or control.
     *
     *  The following string values might be valid for this feature:
     *  - \b Image (Display string: 'Image'): Image
     *  - \b OffsetX (Display string: 'Offset X'): Offset X
     *  - \b OffsetY (Display string: 'Offset Y'): Offset Y
     *  - \b Width (Display string: 'Width'): Width
     *  - \b Height (Display string: 'Height'): Height
     *  - \b PixelFormat (Display string: 'Pixel Format'): Pixel Format
     *  - \b PixelDynamicRangeMin (Display string: 'Pixel Dynamic Range Min'): Pixel Dynamic Range Min
     *  - \b PixelDynamicRangeMax (Display string: 'Pixel Dynamic Range Max'): Pixel Dynamic Range Max
     *  - \b BinningHorizontal (Display string: 'Binning Horizontal'): Binning Horizontal
     *  - \b BinningVertical (Display string: 'Binning Vertical'): Binning Vertical
     *  - \b DecimationHorizontal (Display string: 'Decimation Horizontal'): Decimation Horizontal
     *  - \b DecimationVertical (Display string: 'Decimation Vertical'): Decimation Vertical
     *  - \b ReverseX (Display string: 'Reverse X'): Reverse X
     *  - \b ReverseY (Display string: 'Reverse Y'): Reverse Y
     *  - \b Timestamp (Display string: 'Timestamp'): Timestamp
     *  - \b TimestampLatchValue (Display string: 'Timestamp Latch Value'): Timestamp Latch Value
     *  - \b LineStatusAll (Display string: 'Line Status All'): Line Status All
     *  - \b CounterValue (Display string: 'Counter Value'): Counter Value
     *  - \b TimerValue (Display string: 'Timer Value'): Timer Value
     *  - \b EncoderValue (Display string: 'Encoder Value'): Encoder Value
     *  - \b EncoderStatusValue (Display string: 'Encoder Status Value'): Encoder Status Value
     *  - \b ExposureTime (Display string: 'Exposure Time'): Exposure Time
     *  - \b Gain (Display string: 'Gain'): Gain
     *  - \b BlackLevel (Display string: 'Black Level'): Black Level
     *  - \b LinePitch (Display string: 'Line Pitch'): Line Pitch
     *  - \b FrameID (Display string: 'Frame ID'): Frame ID
     *  - \b SourceID (Display string: 'Source ID'): Source ID
     *  - \b SourceIDValue (Display string: 'Source ID Value'): Source ID Value
     *  - \b RegionID (Display string: 'Region ID'): Region ID
     *  - \b RegionIDValue (Display string: 'Region ID Value'): Region ID Value
     *  - \b ComponentID (Display string: 'Component ID'): Component ID
     *  - \b ComponentIDValue (Display string: 'Component ID Value'): Component ID Value
     *  - \b GroupIDValue (Display string: 'Group ID Value'): Group ID Value
     *  - \b TransferBlockID (Display string: 'Transfer Block ID'): Transfer Block ID
     *  - \b TransferStreamID (Display string: 'Transfer Stream ID'): Transfer Stream ID
     *  - \b TransferQueueCurrentBlockCount (Display string: 'Transfer Queue Current Block Count'): Transfer Queue Current Block Count
     *  - \b StreamChannelID (Display string: 'Stream Channel ID'): Stream Channel ID
     *  - \b SequencerSetActive (Display string: 'Sequencer Set Active'): Sequencer Set Active
     *  - \b Scan3dDistanceUnit (Display string: 'Scan 3d Distance Unit'): Scan 3d Distance Unit
     *  - \b Scan3dOutputMode (Display string: 'Scan 3d Output Mode'): Scan 3d Output Mode
     *  - \b Scan3dCoordinateSystem (Display string: 'Scan 3d Coordinate System'): Scan 3d Coordinate System
     *  - \b Scan3dCoordinateSystemReference (Display string: 'Scan 3d Coordinate System Reference'): Scan 3d Coordinate System Reference
     *  - \b Scan3dCoordinateScale (Display string: 'Scan 3d Coordinate Scale'): Scan 3d Coordinate Scale
     *  - \b Scan3dCoordinateOffset (Display string: 'Scan 3d Coordinate Offset'): Scan 3d Coordinate Offset
     *  - \b Scan3dInvalidDataFlag (Display string: 'Scan 3d Invalid Data Flag'): Scan 3d Invalid Data Flag
     *  - \b Scan3dInvalidDataValue (Display string: 'Scan 3d Invalid Data Value'): Scan 3d Invalid Data Value
     *  - \b Scan3dAxisMin (Display string: 'Scan 3d Axis Min'): Scan 3d Axis Min
     *  - \b Scan3dAxisMax (Display string: 'Scan 3d Axis Max'): Scan 3d Axis Max
     *  - \b Scan3dCoordinateTransformValue (Display string: 'Scan 3d Coordinate Transform Value'): Scan 3d Coordinate Transform Value
     *  - \b Scan3dCoordinateReferenceValue (Display string: 'Scan 3d Coordinate Reference Value'): Scan 3d Coordinate Reference Value
     *  - \b AdditionalInfo (Display string: 'Additional Info')
     *  - \b JPEG (Display string: 'JPEG')
     *  - \b mvCustomIdentifier (Display string: 'mv Custom Identifier')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 chunkSelector;
    /// \brief A boolean property. Enables the inclusion of the selected Chunk data in the payload of the image.
    /**
     *  Enables the inclusion of the selected Chunk data in the payload of the image.
     */
    PropertyIBoolean chunkEnable;
    /// \brief An enumerated integer property. Selects which Region to retrieve data from.
    /**
     *  Selects which Region to retrieve data from.
     *
     *  The following string values might be valid for this feature:
     *  - \b Region0 (Display string: 'Region 0'): Image comes from the Region 0.
     *  - \b Region1 (Display string: 'Region 1'): Image comes from the Region 1.
     *  - \b Region2 (Display string: 'Region 2'): Image comes from the Region 2.
     *  - \b Region\#3\# (Display string: 'Region \#3\#'): Image comes from the Region \#3\#.
     *  - \b Scan3dExtraction0 (Display string: 'Scan 3d Extraction 0'): Image comes from the Scan3dExtraction output Region 0.
     *  - \b Scan3dExtraction1 (Display string: 'Scan 3d Extraction 1'): Image comes from the Scan3dExtraction output Region 1.
     *  - \b Scan3dExtraction2 (Display string: 'Scan 3d Extraction 2'): Image comes from the Scan3dExtraction output Region 2.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 chunkRegionSelector;
    /// \brief An enumerated integer property. Returns the Identifier of Region that the image comes from.
    /**
     *  Returns the Identifier of Region that the image comes from.
     *
     *  The following string values might be valid for this feature:
     *  - \b Region0 (Display string: 'Region 0'): Image comes from the Region 0.
     *  - \b Region1 (Display string: 'Region 1'): Image comes from the Region 1.
     *  - \b Region2 (Display string: 'Region 2'): Image comes from the Region 2.
     *  - \b Region\#3\# (Display string: 'Region \#3\#'): Image comes from the Region \#3\#.
     *  - \b Scan3dExtraction0 (Display string: 'Scan 3d Extraction 0'): Image comes from the Scan3dExtraction output Region 0.
     *  - \b Scan3dExtraction1 (Display string: 'Scan 3d Extraction 1'): Image comes from the Scan3dExtraction output Region 1.
     *  - \b Scan3dExtraction2 (Display string: 'Scan 3d Extraction 2'): Image comes from the Scan3dExtraction output Region 2.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 chunkRegionID;
    /// \brief An integer property. Returns the unique integer Identifier value of the Region that the image comes from.
    /**
     *  Returns the unique integer Identifier value of the Region that the image comes from.
     */
    PropertyI64 chunkRegionIDValue;
    /// \brief An enumerated integer property. Selects the Component from which to retrieve data from.
    /**
     *  Selects the Component from which to retrieve data from.
     *
     *  The following string values might be valid for this feature:
     *  - \b Intensity (Display string: 'Intensity'): The image data is the intensity component (visible).
     *  - \b Infrared (Display string: 'Infrared'): The image data is the infrared component.
     *  - \b Ultraviolet (Display string: 'Ultraviolet'): The image data is the ultraviolet component.
     *  - \b Range (Display string: 'Range'): The image data is the range component (distance or depth).
     *  - \b Reflectance (Display string: 'Reflectance'): The image data is the reflected intensity component (acquired with the Range).
     *  - \b Disparity (Display string: 'Disparity'): The image data is the disparity component.
     *  - \b Confidence (Display string: 'Confidence'): The image data is the confidence map component.
     *  - \b Scatter (Display string: 'Scatter'): The image data is the scatter component.
     *  - \b Multispectral (Display string: 'Multispectral'): The image data is the multispectral component.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 chunkComponentSelector;
    /// \brief An enumerated integer property. Returns the Identifier of the selected Component.
    /**
     *  Returns the Identifier of the selected Component. This can be used to identify the image component type of a multi-component payload.
     *
     *  The following string values might be valid for this feature:
     *  - \b Intensity (Display string: 'Intensity'): The image data is the intensity component (visible).
     *  - \b Infrared (Display string: 'Infrared'): The image data is the infrared component.
     *  - \b Ultraviolet (Display string: 'Ultraviolet'): The image data is the ultraviolet component.
     *  - \b Range (Display string: 'Range'): The image data is the range component (distance or depth).
     *  - \b Reflectance (Display string: 'Reflectance'): The image data is the reflected intensity component (acquired with the Range).
     *  - \b Disparity (Display string: 'Disparity'): The image data is the disparity component.
     *  - \b Confidence (Display string: 'Confidence'): The image data is the confidence map component.
     *  - \b Scatter (Display string: 'Scatter'): The image data is the scatter component.
     *  - \b Multispectral (Display string: 'Multispectral'): The image data is the multispectral component.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 chunkComponentID;
    /// \brief An integer property. Returns a unique Identifier value that corresponds to the selected chunk Component.
    /**
     *  Returns a unique Identifier value that corresponds to the selected chunk Component.
     */
    PropertyI64 chunkComponentIDValue;
    /// \brief An enumerated integer property. Selects the component Group from which to retrieve data from.
    /**
     *  Selects the component Group from which to retrieve data from.
     *
     *  The following string values might be valid for this feature:
     *  - \b Group0 (Display string: 'Group 0'): Selects Components group 0.
     *  - \b Group1 (Display string: 'Group 1'): Selects Components group 1.
     *  - \b Group2 (Display string: 'Group 2'): Selects Components group 2.
     *  - \b Group\#3\# (Display string: 'Group \#3\#'): Selects Components group \#3\#.
     *  - \b Group3 (Display string: 'Group 3'): Selects Components group 3.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 chunkGroupSelector;
    /// \brief An enumerated integer property. Returns a unique Identifier corresponding to the selected Group of components.
    /**
     *  Returns a unique Identifier corresponding to the selected Group of components. This can be used to identify the component Group of a multi-group payload.
     *
     *  The following string values might be valid for this feature:
     *  - \b Group0 (Display string: 'Group 0'): Selects Components group 0.
     *  - \b Group1 (Display string: 'Group 1'): Selects Components group 1.
     *  - \b Group2 (Display string: 'Group 2'): Selects Components group 2.
     *  - \b Group\#3\# (Display string: 'Group \#3\#'): Selects Components group \#3\#.
     *  - \b Group3 (Display string: 'Group 3'): Selects Components group 3.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 chunkGroupID;
    /// \brief An enumerated integer property. This feature is deprecated (See ChunkComponentID).
    /**
     *  \deprecated
     *  This feature is deprecated (See ChunkComponentID). It was representing the component of the payload image.
     *
     *  The following string values might be valid for this feature:
     *  - \b Intensity (Display string: 'Intensity'): Intensity
     *  - \b Infrared (Display string: 'Infrared'): Infrared
     *  - \b Ultraviolet (Display string: 'Ultraviolet'): Ultraviolet
     *  - \b Range (Display string: 'Range'): Range
     *  - \b Reflectance (Display string: 'Reflectance'): Reflectance
     *  - \b Disparity (Display string: 'Disparity'): Disparity
     *  - \b Confidence (Display string: 'Confidence'): Confidence
     *  - \b Scatter (Display string: 'Scatter'): Scatter
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 chunkImageComponent;
    /// \brief An integer property. Returns a unique Identifier value that corresponds to the Group of Components of the selected chunk Component.
    /**
     *  Returns a unique Identifier value that corresponds to the Group of Components of the selected chunk Component.
     */
    PropertyI64 chunkGroupIDValue;
    /// \brief An integer property. This feature is deprecated (See ChunkComponentSelector).
    /**
     *  \deprecated
     *  This feature is deprecated (See ChunkComponentSelector). It was selecting the individual parts of a multi-component/multi-part buffer to access.
     */
    PropertyI64 chunkPartSelector;
    /// \brief A string property. Returns the entire image data included in the payload.
    /**
     *  Returns the entire image data included in the payload.
     */
    PropertyS chunkImage;
    /// \brief An integer property. Returns the OffsetX of the image included in the payload.
    /**
     *  Returns the OffsetX of the image included in the payload.
     */
    PropertyI64 chunkOffsetX;
    /// \brief An integer property. Returns the OffsetY of the image included in the payload.
    /**
     *  Returns the OffsetY of the image included in the payload.
     */
    PropertyI64 chunkOffsetY;
    /// \brief An integer property. Returns the Width of the image included in the payload.
    /**
     *  Returns the Width of the image included in the payload.
     */
    PropertyI64 chunkWidth;
    /// \brief An integer property. Returns the Height of the image included in the payload.
    /**
     *  Returns the Height of the image included in the payload.
     */
    PropertyI64 chunkHeight;
    /// \brief An enumerated integer property. Returns the PixelFormat of the image included in the payload.
    /**
     *  Returns the PixelFormat of the image included in the payload.
     *
     *  The following string values might be valid for this feature:
     *  - \b Mono1p (Display string: 'Mono1p'): Mono 1 bit packed.
     *  - \b Mono2p (Display string: 'Mono2p'): Mono 2 bit packed.
     *  - \b Mono4p (Display string: 'Mono4p'): Mono 4 bit packed.
     *  - \b Mono8 (Display string: 'Mono8'): Mono 8 bit packed.
     *  - \b Mono8s (Display string: 'Mono8s'): Mono 1 bit signed.
     *  - \b Mono10 (Display string: 'Mono10'): Mono 10 bit.
     *  - \b Mono10p (Display string: 'Mono10p'): Mono 10 bit packed.
     *  - \b Mono12 (Display string: 'Mono12'): Mono 12 bit.
     *  - \b Mono12p (Display string: 'Mono12p'): Mono 12 bit packed.
     *  - \b Mono14 (Display string: 'Mono14'): Mono 14 bit.
     *  - \b Mono16 (Display string: 'Mono16'): Mono 16 bit.
     *  - \b R8 (Display string: 'R8'): Red 8 bit.
     *  - \b G8 (Display string: 'G8'): Green 8 bit.
     *  - \b B8 (Display string: 'B8'): Blue 8 bit.
     *  - \b RGB8 (Display string: 'RGB8'): Red, Green, Blue 8 bit
     *  - \b RGB8_Planar (Display string: 'RGB8_Planar'): Red, Green, Blue 8 bit planar.
     *  - \b RGBa8 (Display string: 'RGBa8'): Red, Green, Blue 8 bit aligned on 8 bit
     *  - \b RGB10 (Display string: 'RGB10'): Red, Green, Blue 10 bit.
     *  - \b RGB10_Planar (Display string: 'RGB10_Planar'): Red, Green, Blue 10 bit planar.
     *  - \b RGB10p32 (Display string: 'RGB10p32'): Red, Green, Blue 10 bit packed in 32 bit pixel.
     *  - \b RGB12 (Display string: 'RGB12'): Red, Green, Blue 12 bit.
     *  - \b RGB12_Planar (Display string: 'RGB12_Planar'): Red, Green, Blue 12 bit planar.
     *  - \b RGB16 (Display string: 'RGB16'): Red, Green, Blue 16 bit.
     *  - \b RGB16_Planar (Display string: 'RGB16_Planar'): Red, Green, Blue 16 bit planar.
     *  - \b RGB565p (Display string: 'RGB565p'): Red, Green, Blue 16 bit packet in 5, 6, 5 bits.
     *  - \b BGR10 (Display string: 'BGR10'): Blue, Green, Red, 10 bit.
     *  - \b BGR12 (Display string: 'BGR12'): Blue, Green, Red, 12 bit.
     *  - \b BGR16 (Display string: 'BGR16'): Blue, Green, Red, 16 bit.
     *  - \b BGR565p (Display string: 'BGR565p'): Blue, Green, Red, 16 bit packet in 5, 6, 5 bits.
     *  - \b BGR8 (Display string: 'BGR8'): Blue, Green, Red, 8 bit.
     *  - \b BGRa8 (Display string: 'BGRa8'): Blue, Green, Red, Alpha 8 bit.
     *  - \b YUV422_8 (Display string: 'YUV422_8'): YUV 422 8 bit.
     *  - \b YCbCr411_8 (Display string: 'YCbCr411_8'): YCrCb 411 8 bit.
     *  - \b YCbCr422_8 (Display string: 'YCbCr422_8'): YCrCb 422 8 bit.
     *  - \b YCbCr601_422_8 (Display string: 'YCbCr601_422_8'): YCrCb 601 422 8 bit.
     *  - \b YCbCr709_422_8 (Display string: 'YCbCr709_422_8'): YCrCb 709 422 8 bit.
     *  - \b YCbCr8 (Display string: 'YCbCr8'): YCbCr 8 bit.
     *  - \b BayerBG8 (Display string: 'BayerBG8'): Bayer Blue Green 8 bit.
     *  - \b BayerGB8 (Display string: 'BayerGB8'): Bayer Green Blue 8 bit.
     *  - \b BayerGR8 (Display string: 'BayerGR8'): Bayer Green Red 8 bit.
     *  - \b BayerRG8 (Display string: 'BayerRG8'): Bayer Red Green 8 bit.
     *  - \b BayerBG10 (Display string: 'BayerBG10'): Bayer Blue Green 10 bit.
     *  - \b BayerGB10 (Display string: 'BayerGB10'): Bayer Green Blue 10 bit.
     *  - \b BayerGR10 (Display string: 'BayerGR10'): Bayer Green Red 10 bit.
     *  - \b BayerRG10 (Display string: 'BayerRG10'): Bayer Red Green 10 bit.
     *  - \b BayerBG12 (Display string: 'BayerBG12'): Bayer Blue Green 12 bit
     *  - \b BayerGB12 (Display string: 'BayerGB12'): Bayer Green Blue 12 bit
     *  - \b BayerGR12 (Display string: 'BayerGR12'): Bayer Green Red 12 bit.
     *  - \b BayerRG12 (Display string: 'BayerRG12'): Bayer Red Green 12 bit.
     *  - \b BayerBG16 (Display string: 'BayerBG16'): Bayer Blue Green 16 bit.
     *  - \b BayerGB16 (Display string: 'BayerGB16'): Bayer Green Blue 16 bit.
     *  - \b BayerGR16 (Display string: 'BayerGR16'): Bayer Green Red 16 bit.
     *  - \b BayerRG16 (Display string: 'BayerRG16'): Bayer Red Green 16 bit.
     *  - \b Coord3D_A8 (Display string: 'Coord3D_A8'): 3D coordinate, first component 8 bit.
     *  - \b Coord3D_B8 (Display string: 'Coord3D_B8'): 3D coordinate, second component 8 bit.
     *  - \b Coord3D_C8 (Display string: 'Coord3D_C8'): 3D coordinate, third component 8 bit.
     *  - \b Coord3D_ABC8 (Display string: 'Coord3D_ABC8'): 3D coordinates, 3 components 8 bit.
     *  - \b Coord3D_ABC8_Planar (Display string: 'Coord3D_ABC8_Planar'): 3D coordinates, 3 components 8 bit planar.
     *  - \b Coord3D_A16 (Display string: 'Coord3D_A16'): 3D coordinate, first component 16 bit.
     *  - \b Coord3D_B16 (Display string: 'Coord3D_B16'): 3D coordinate, second component 16 bit.
     *  - \b Coord3D_C16 (Display string: 'Coord3D_C16'): 3D coordinate, third component 16 bit.
     *  - \b Coord3D_ABC16 (Display string: 'Coord3D_ABC16'): 3D coordinates, 3 components 16 bit.
     *  - \b Coord3D_ABC16_Planar (Display string: 'Coord3D_ABC16_Planar'): 3D coordinates, 3 components 16 bit planar.
     *  - \b Coord3D_A32f (Display string: 'Coord3D_A32f'): 3D coordinate, first component 32 bit float.
     *  - \b Coord3D_B32f (Display string: 'Coord3D_B32f'): 3D coordinate, second component 32 bit float.
     *  - \b Coord3D_C32f (Display string: 'Coord3D_C32f'): 3D coordinate, third component 32 bit float.
     *  - \b Coord3D_ABC32f (Display string: 'Coord3D_ABC32f'): 3D coordinates, 3 components 32 bit float.
     *  - \b Coord3D_ABC32f_Planar (Display string: 'Coord3D_ABC32f_Planar'): 3D coordinates, 3 components 32 bit float planar.
     *  - \b Confidence1 (Display string: 'Confidence1'): Confidence data 1 bit.
     *  - \b Confidence1p (Display string: 'Confidence1p'): Confidence data 1 bit packed.
     *  - \b Confidence8 (Display string: 'Confidence8'): Confidence data 8 bit.
     *  - \b Confidence16 (Display string: 'Confidence16'): Confidence data 16 bit.
     *  - \b Confidence32f (Display string: 'Confidence32f'): Confidence data 32 bit float.
     *  - \b Data8 (Display string: 'Data8'): Generic non-pixel data 8 bit.
     *  - \b Data8s (Display string: 'Data8s'): Generic non-pixel data 8 bit signed.
     *  - \b Data16 (Display string: 'Data16'): Generic non-pixel data 16 bit.
     *  - \b Data16s (Display string: 'Data16s'): Generic non-pixel data 16 bit signed.
     *  - \b Data32 (Display string: 'Data32'): Generic non-pixel data 32 bit.
     *  - \b Data32s (Display string: 'Data32s'): Generic non-pixel data 32 bit signed.
     *  - \b Data32f (Display string: 'Data32f'): Generic non-pixel data 32 bit floating point.
     *  - \b Data64 (Display string: 'Data64'): Generic non-pixel data 64 bit.
     *  - \b Data64s (Display string: 'Data64s'): Generic non-pixel data 64 bit signed.
     *  - \b Data64f (Display string: 'Data64f'): Generic non-pixel data 64 bit floating point.
     *  - \b Raw8 (Display string: 'Raw8'): Raw 8 bit.
     *  - \b Raw16 (Display string: 'Raw16'): Raw 16 bit.
     *  - \b Mono12Packed (Display string: 'Mono12Packed'): Mono 12 bit packed (GigE Vision Specific).
     *  - \b BayerGR10Packed (Display string: 'BayerGR10Packed'): Bayer GR 10 bit packed (GigE Vision Specific).
     *  - \b BayerRG10Packed (Display string: 'BayerRG10Packed'): Bayer RG 10 bit packed (GigE Vision Specific).
     *  - \b BayerGB10Packed (Display string: 'BayerGB10Packed'): Bayer GB 10 bit packed (GigE Vision Specific).
     *  - \b BayerBG10Packed (Display string: 'BayerBG10Packed'): Bayer BG 10 bit packed (GigE Vision Specific).
     *  - \b BayerGR12Packed (Display string: 'BayerGR12Packed'): Bayer GR 12 bit packed (GigE Vision Specific).
     *  - \b BayerRG12Packed (Display string: 'BayerRG12Packed'): Bayer RG 12 bit packed (GigE Vision Specific).
     *  - \b BayerGB12Packed (Display string: 'BayerGB12Packed'): Bayer GB 12 bit packed (GigE Vision Specific).
     *  - \b BayerBG12Packed (Display string: 'BayerBG12Packed'): Bayer BG 12 bit packed (GigE Vision Specific).
     *  - \b RGB10V1Packed (Display string: 'RGB10V1Packed'): RGB 10 bit packed (GigE Vision Specific).
     *  - \b RGB12V1Packed (Display string: 'RGB12V1Packed'): RGB 12 bit packed (GigE Vision Specific).
     *  - \b Mono8Signed (Display string: 'Mono 8 Signed')
     *  - \b Mono10Packed (Display string: 'Mono 10 Packed')
     *  - \b RGB8Packed (Display string: 'RGB 8 Packed')
     *  - \b BGR8Packed (Display string: 'BGR 8 Packed')
     *  - \b RGBA8Packed (Display string: 'RGBA 8 Packed')
     *  - \b BGRA8Packed (Display string: 'BGRA 8 Packed')
     *  - \b RGB10Packed (Display string: 'RGB 10 Packed')
     *  - \b BGR10Packed (Display string: 'BGR 10 Packed')
     *  - \b RGB12Packed (Display string: 'RGB 12 Packed')
     *  - \b BGR12Packed (Display string: 'BGR 12 Packed')
     *  - \b RGB16Packed (Display string: 'RGB 16 Packed')
     *  - \b RGB10V2Packed (Display string: 'RGB 10 V 2 Packed')
     *  - \b RGB565Packed (Display string: 'RGB 565 Packed')
     *  - \b BGR565Packed (Display string: 'BGR 565 Packed')
     *  - \b YUV411Packed (Display string: 'YUV 411 Packed')
     *  - \b YUV422Packed (Display string: 'YUV 422 Packed')
     *  - \b YUV444Packed (Display string: 'YUV 444 Packed')
     *  - \b YUYVPacked (Display string: 'YUYV Packed')
     *  - \b RGB8Planar (Display string: 'RGB 8 Planar')
     *  - \b RGB10Planar (Display string: 'RGB 10 Planar')
     *  - \b RGB12Planar (Display string: 'RGB 12 Planar')
     *  - \b RGB16Planar (Display string: 'RGB 16 Planar')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 chunkPixelFormat;
    /// \brief An integer property. Returns the minimum value of dynamic range of the image included in the payload.
    /**
     *  Returns the minimum value of dynamic range of the image included in the payload.
     */
    PropertyI64 chunkPixelDynamicRangeMin;
    /// \brief An integer property. Returns the maximum value of dynamic range of the image included in the payload.
    /**
     *  Returns the maximum value of dynamic range of the image included in the payload.
     */
    PropertyI64 chunkPixelDynamicRangeMax;
    /// \brief An integer property. Number of horizontal photo-sensitive cells combined together.
    /**
     *  Number of horizontal photo-sensitive cells combined together.
     */
    PropertyI64 chunkBinningHorizontal;
    /// \brief An integer property. Number of vertical photo-sensitive cells combined together.
    /**
     *  Number of vertical photo-sensitive cells combined together.
     */
    PropertyI64 chunkBinningVertical;
    /// \brief An integer property. Horizontal sub-sampling of the image.
    /**
     *  Horizontal sub-sampling of the image.
     */
    PropertyI64 chunkDecimationHorizontal;
    /// \brief An integer property. Vertical sub-sampling of the image.
    /**
     *  Vertical sub-sampling of the image.
     */
    PropertyI64 chunkDecimationVertical;
    /// \brief A boolean property. Flip horizontal of the image sent by the device.
    /**
     *  Flip horizontal of the image sent by the device.
     */
    PropertyIBoolean chunkReverseX;
    /// \brief A boolean property. Flip vertically of the image sent by the device.
    /**
     *  Flip vertically of the image sent by the device.
     */
    PropertyIBoolean chunkReverseY;
    /// \brief An integer property. Returns the Timestamp of the image included in the payload at the time of the FrameStart internal event.
    /**
     *  Returns the Timestamp of the image included in the payload at the time of the FrameStart internal event.
     */
    PropertyI64 chunkTimestamp;
    /// \brief An integer property. Returns the last Timestamp latched with the TimestampLatch command.
    /**
     *  Returns the last Timestamp latched with the TimestampLatch command.
     */
    PropertyI64 chunkTimestampLatchValue;
    /// \brief An integer property. Returns the status of all the I/O lines at the time of the FrameStart internal event.
    /**
     *  Returns the status of all the I/O lines at the time of the FrameStart internal event.
     */
    PropertyI64 chunkLineStatusAll;
    /// \brief An enumerated integer property. Selects which counter to retrieve data from.
    /**
     *  Selects which counter to retrieve data from.
     *
     *  The following string values might be valid for this feature:
     *  - \b Counter0 (Display string: 'Counter 0'): Selects the counter 0.
     *  - \b Counter1 (Display string: 'Counter 1'): Selects the counter 1.
     *  - \b Counter2 (Display string: 'Counter 2'): Selects the counter 2.
     *  - \b Counter\#3\# (Display string: 'Counter \#3\#'): Selects the counter \#3\#.
     *  - \b Counter3 (Display string: 'Counter 3'): Selects the counter 3.
     *  - \b Counter4 (Display string: 'Counter 4'): Selects the counter 4.
     *  - \b Counter5 (Display string: 'Counter 5'): Selects the counter 5.
     *  - \b Counter6 (Display string: 'Counter 6'): Selects the counter 6.
     *  - \b Counter7 (Display string: 'Counter 7'): Selects the counter 7.
     *  - \b Counter8 (Display string: 'Counter 8'): Selects the counter 8.
     *  - \b Counter9 (Display string: 'Counter 9'): Selects the counter 9.
     *  - \b Counter10 (Display string: 'Counter 10'): Selects the counter 10.
     *  - \b Counter11 (Display string: 'Counter 11'): Selects the counter 11.
     *  - \b Counter12 (Display string: 'Counter 12'): Selects the counter 12.
     *  - \b Counter13 (Display string: 'Counter 13'): Selects the counter 13.
     *  - \b Counter14 (Display string: 'Counter 14'): Selects the counter 14.
     *  - \b Counter15 (Display string: 'Counter 15'): Selects the counter 15.
     *  - \b Counter16 (Display string: 'Counter 16')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 chunkCounterSelector;
    /// \brief An integer property. Returns the value of the selected Chunk counter at the time of the FrameStart event.
    /**
     *  Returns the value of the selected Chunk counter at the time of the FrameStart event.
     */
    PropertyI64 chunkCounterValue;
    /// \brief An enumerated integer property. Selects which Timer to retrieve data from.
    /**
     *  Selects which Timer to retrieve data from.
     *
     *  The following string values might be valid for this feature:
     *  - \b Timer0 (Display string: 'Timer 0'): Selects the first Timer.
     *  - \b Timer1 (Display string: 'Timer 1'): Selects the first Timer.
     *  - \b Timer2 (Display string: 'Timer 2'): Selects the second Timer.
     *  - \b Timer\#3\# (Display string: 'Timer \#3\#'): Selects the second Timer.
     *  - \b Timer3 (Display string: 'Timer 3'): Selects the second Timer.
     *  - \b Timer4 (Display string: 'Timer 4'): Selects the second Timer.
     *  - \b Timer5 (Display string: 'Timer 5'): Selects the second Timer.
     *  - \b Timer6 (Display string: 'Timer 6'): Selects the second Timer.
     *  - \b Timer7 (Display string: 'Timer 7'): Selects the second Timer.
     *  - \b Timer8 (Display string: 'Timer 8'): Selects the second Timer.
     *  - \b Timer9 (Display string: 'Timer 9'): Selects the second Timer.
     *  - \b Timer10 (Display string: 'Timer 10'): Selects the second Timer.
     *  - \b Timer11 (Display string: 'Timer 11'): Selects the second Timer.
     *  - \b Timer12 (Display string: 'Timer 12'): Selects the second Timer.
     *  - \b Timer13 (Display string: 'Timer 13'): Selects the second Timer.
     *  - \b Timer14 (Display string: 'Timer 14'): Selects the second Timer.
     *  - \b Timer15 (Display string: 'Timer 15'): Selects the second Timer.
     *  - \b Timer16 (Display string: 'Timer 16')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 chunkTimerSelector;
    /// \brief A floating point property. Returns the value of the selected Timer at the time of the FrameStart internal event.
    /**
     *  Returns the value of the selected Timer at the time of the FrameStart internal event.
     */
    PropertyF chunkTimerValue;
    /// \brief An integer property. Index for vector representation of one chunk value per line in an image.
    /**
     *  Index for vector representation of one chunk value per line in an image.
     */
    PropertyI64 chunkScanLineSelector;
    /// \brief An enumerated integer property. Selects which Encoder to retrieve data from.
    /**
     *  Selects which Encoder to retrieve data from.
     *
     *  The following string values might be valid for this feature:
     *  - \b Encoder0 (Display string: 'Encoder 0'): Selects the first Encoder.
     *  - \b Encoder1 (Display string: 'Encoder 1'): Selects the first Encoder.
     *  - \b Encoder2 (Display string: 'Encoder 2'): Selects the second Encoder.
     *  - \b Encoder\#3\# (Display string: 'Encoder \#3\#'): Selects the second Encoder.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 chunkEncoderSelector;
    /// \brief An integer property. Returns the counter's value of the selected Encoder at the time of the FrameStart in area scan mode or the counter's value at the time of the LineStart selected by ChunkScanLineSelector in Linescan mode.
    /**
     *  Returns the counter's value of the selected Encoder at the time of the FrameStart in area scan mode or the counter's value at the time of the LineStart selected by ChunkScanLineSelector in Linescan mode.
     */
    PropertyI64 chunkEncoderValue;
    /// \brief An enumerated integer property. Returns the motion status of the selected encoder.
    /**
     *  Returns the motion status of the selected encoder.
     *
     *  The following string values might be valid for this feature:
     *  - \b EncoderUp (Display string: 'Encoder Up'): The encoder counter last incremented.
     *  - \b EncoderDown (Display string: 'Encoder Down'): The encoder counter last decremented.
     *  - \b EncoderIdle (Display string: 'Encoder Idle'): The encoder is not active.
     *  - \b EncoderStatic (Display string: 'Encoder Static'): No motion within the EncoderTimeout time.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 chunkEncoderStatus;
    /// \brief An enumerated integer property. Selects which exposure time is read by the ChunkExposureTime feature.
    /**
     *  Selects which exposure time is read by the ChunkExposureTime feature.
     *
     *  The following string values might be valid for this feature:
     *  - \b Common (Display string: 'Common'): Selects the common ExposureTime.
     *  - \b Red (Display string: 'Red'): Selects the red common ExposureTime.
     *  - \b Green (Display string: 'Green'): Selects the green ExposureTime.
     *  - \b Blue (Display string: 'Blue'): Selects the blue ExposureTime.
     *  - \b Cyan (Display string: 'Cyan'): Selects the cyan common ExposureTime..
     *  - \b Magenta (Display string: 'Magenta'): Selects the magenta ExposureTime..
     *  - \b Yellow (Display string: 'Yellow'): Selects the yellow ExposureTime..
     *  - \b Infrared (Display string: 'Infrared'): Selects the infrared ExposureTime.
     *  - \b Ultraviolet (Display string: 'Ultraviolet'): Selects the ultraviolet ExposureTime.
     *  - \b Stage1 (Display string: 'Stage 1'): Selects the first stage ExposureTime.
     *  - \b Stage2 (Display string: 'Stage 2'): Selects the second stage ExposureTime.
     *  - \b Stage\#3\# (Display string: 'Stage \#3\#'): Selects the second stage ExposureTime.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 chunkExposureTimeSelector;
    /// \brief A floating point property. Returns the exposure time used to capture the image.
    /**
     *  Returns the exposure time used to capture the image.
     */
    PropertyF chunkExposureTime;
    /// \brief An enumerated integer property. Selects which Gain to return.
    /**
     *  Selects which Gain to return.
     *
     *  The following string values might be valid for this feature:
     *  - \b All (Display string: 'All'): Gain will be applied to all channels or taps.
     *  - \b Red (Display string: 'Red'): Gain will be applied to the red channel.
     *  - \b Green (Display string: 'Green'): Gain will be applied to the green channel.
     *  - \b Blue (Display string: 'Blue'): Gain will be applied to the blue channel.
     *  - \b Y (Display string: 'Y'): Gain will be applied to Y channel.
     *  - \b U (Display string: 'U'): Gain will be applied to U channel.
     *  - \b V (Display string: 'V'): Gain will be applied to V channel.
     *  - \b Tap1 (Display string: 'Tap 1'): Gain will be applied to Tap 1.
     *  - \b Tap2 (Display string: 'Tap 2'): Gain will be applied to Tap 2.
     *  - \b Tap\#3\# (Display string: 'Tap \#3\#'): Gain will be applied to Tap \#3\#.
     *  - \b AnalogAll (Display string: 'Analog All'): Gain will be applied to all analog channels or taps.
     *  - \b AnalogRed (Display string: 'Analog Red'): Gain will be applied to the red analog channel.
     *  - \b AnalogGreen (Display string: 'Analog Green'): Gain will be applied to the green analog channel.
     *  - \b AnalogBlue (Display string: 'Analog Blue'): Gain will be applied to the blue analog channel.
     *  - \b AnalogY (Display string: 'Analog Y'): Gain will be applied to Y analog channel.
     *  - \b AnalogU (Display string: 'Analog U'): Gain will be applied to U analog channel.
     *  - \b AnalogV (Display string: 'Analog V'): Gain will be applied to V analog channel.
     *  - \b AnalogTap1 (Display string: 'Analog Tap 1'): Analog gain will be applied to Tap 1.
     *  - \b AnalogTap2 (Display string: 'Analog Tap 2'): Analog gain will be applied to Tap 2.
     *  - \b AnalogTap\#3\# (Display string: 'Analog Tap \#3\#'): Analog gain will be applied to Tap \#3\#.
     *  - \b DigitalAll (Display string: 'Digital All'): Gain will be applied to all digital channels or taps.
     *  - \b DigitalRed (Display string: 'Digital Red'): Gain will be applied to the red digital channel.
     *  - \b DigitalGreen (Display string: 'Digital Green'): Gain will be applied to the green digital channel.
     *  - \b DigitalBlue (Display string: 'Digital Blue'): Gain will be applied to the blue digital channel.
     *  - \b DigitalY (Display string: 'Digital Y'): Gain will be applied to Y digital channel.
     *  - \b DigitalU (Display string: 'Digital U'): Gain will be applied to U digital channel.
     *  - \b DigitalV (Display string: 'Digital V'): Gain will be applied to V digital channel.
     *  - \b DigitalTap1 (Display string: 'Digital Tap 1'): Digital gain will be applied to Tap 1.
     *  - \b DigitalTap2 (Display string: 'Digital Tap 2'): Digital gain will be applied to Tap 2.
     *  - \b DigitalTap\#3\# (Display string: 'Digital Tap \#3\#'): Digital gain will be applied to Tap \#3\#.
     *  - \b Tap3 (Display string: 'Tap 3'): Gain will be applied to Tap 3.
     *  - \b Tap4 (Display string: 'Tap 4'): Gain will be applied to Tap 4.
     *  - \b Tap5 (Display string: 'Tap 5'): Gain will be applied to Tap 5.
     *  - \b Tap6 (Display string: 'Tap 6'): Gain will be applied to Tap 6.
     *  - \b Tap7 (Display string: 'Tap 7'): Gain will be applied to Tap 7.
     *  - \b Tap8 (Display string: 'Tap 8'): Gain will be applied to Tap 8.
     *  - \b Tap9 (Display string: 'Tap 9'): Gain will be applied to Tap 9.
     *  - \b Tap10 (Display string: 'Tap 10'): Gain will be applied to Tap 10.
     *  - \b Tap11 (Display string: 'Tap 11'): Gain will be applied to Tap 11.
     *  - \b Tap12 (Display string: 'Tap 12'): Gain will be applied to Tap 12.
     *  - \b Tap13 (Display string: 'Tap 13'): Gain will be applied to Tap 13.
     *  - \b Tap14 (Display string: 'Tap 14'): Gain will be applied to Tap 14.
     *  - \b Tap15 (Display string: 'Tap 15'): Gain will be applied to Tap 15.
     *  - \b Tap16 (Display string: 'Tap 16')
     *  - \b AnalogTap3 (Display string: 'Analog Tap 3'): Analog gain will be applied to Tap 3.
     *  - \b AnalogTap4 (Display string: 'Analog Tap 4'): Analog gain will be applied to Tap 4.
     *  - \b AnalogTap5 (Display string: 'Analog Tap 5'): Analog gain will be applied to Tap 5.
     *  - \b AnalogTap6 (Display string: 'Analog Tap 6'): Analog gain will be applied to Tap 6.
     *  - \b AnalogTap7 (Display string: 'Analog Tap 7'): Analog gain will be applied to Tap 7.
     *  - \b AnalogTap8 (Display string: 'Analog Tap 8'): Analog gain will be applied to Tap 8.
     *  - \b AnalogTap9 (Display string: 'Analog Tap 9'): Analog gain will be applied to Tap 9.
     *  - \b AnalogTap10 (Display string: 'Analog Tap 10'): Analog gain will be applied to Tap 10.
     *  - \b AnalogTap11 (Display string: 'Analog Tap 11'): Analog gain will be applied to Tap 11.
     *  - \b AnalogTap12 (Display string: 'Analog Tap 12'): Analog gain will be applied to Tap 12.
     *  - \b AnalogTap13 (Display string: 'Analog Tap 13'): Analog gain will be applied to Tap 13.
     *  - \b AnalogTap14 (Display string: 'Analog Tap 14'): Analog gain will be applied to Tap 14.
     *  - \b AnalogTap15 (Display string: 'Analog Tap 15'): Analog gain will be applied to Tap 15.
     *  - \b AnalogTap16 (Display string: 'Analog Tap 16')
     *  - \b DigitalTap3 (Display string: 'Digital Tap 3'): Digital gain will be applied to Tap 3.
     *  - \b DigitalTap4 (Display string: 'Digital Tap 4'): Digital gain will be applied to Tap 4.
     *  - \b DigitalTap5 (Display string: 'Digital Tap 5'): Digital gain will be applied to Tap 5.
     *  - \b DigitalTap6 (Display string: 'Digital Tap 6'): Digital gain will be applied to Tap 6.
     *  - \b DigitalTap7 (Display string: 'Digital Tap 7'): Digital gain will be applied to Tap 7.
     *  - \b DigitalTap8 (Display string: 'Digital Tap 8'): Digital gain will be applied to Tap 8.
     *  - \b DigitalTap9 (Display string: 'Digital Tap 9'): Digital gain will be applied to Tap 9.
     *  - \b DigitalTap10 (Display string: 'Digital Tap 10'): Digital gain will be applied to Tap 10.
     *  - \b DigitalTap11 (Display string: 'Digital Tap 11'): Digital gain will be applied to Tap 11.
     *  - \b DigitalTap12 (Display string: 'Digital Tap 12'): Digital gain will be applied to Tap 12.
     *  - \b DigitalTap13 (Display string: 'Digital Tap 13'): Digital gain will be applied to Tap 13.
     *  - \b DigitalTap14 (Display string: 'Digital Tap 14'): Digital gain will be applied to Tap 14.
     *  - \b DigitalTap15 (Display string: 'Digital Tap 15'): Digital gain will be applied to Tap 15.
     *  - \b DigitalTap16 (Display string: 'Digital Tap 16')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 chunkGainSelector;
    /// \brief A floating point property. Returns the gain used to capture the image.
    /**
     *  Returns the gain used to capture the image.
     */
    PropertyF chunkGain;
    /// \brief An enumerated integer property. Selects which Black Level to return.
    /**
     *  Selects which Black Level to return. Possible values are:
     *
     *  The following string values might be valid for this feature:
     *  - \b All (Display string: 'All'): Black Level will be applied to all channels or taps.
     *  - \b Red (Display string: 'Red'): Black Level will be applied to the red channel.
     *  - \b Green (Display string: 'Green'): Black Level will be applied to the green channel.
     *  - \b Blue (Display string: 'Blue'): Black Level will be applied to the blue channel.
     *  - \b Y (Display string: 'Y'): Black Level will be applied to Y channel.
     *  - \b U (Display string: 'U'): Black Level will be applied to U channel.
     *  - \b V (Display string: 'V'): Black Level will be applied to V channel.
     *  - \b Tap1 (Display string: 'Tap 1'): Black Level will be applied to Tap 1.
     *  - \b Tap2 (Display string: 'Tap 2'): Black Level will be applied to Tap 2.
     *  - \b Tap\#3\# (Display string: 'Tap \#3\#'): Black Level will be applied to Tap \#3\#.
     *  - \b Tap3 (Display string: 'Tap 3'): Black Level will be applied to Tap 3.
     *  - \b Tap4 (Display string: 'Tap 4'): Black Level will be applied to Tap 4.
     *  - \b Tap5 (Display string: 'Tap 5'): Black Level will be applied to Tap 5.
     *  - \b Tap6 (Display string: 'Tap 6'): Black Level will be applied to Tap 6.
     *  - \b Tap7 (Display string: 'Tap 7'): Black Level will be applied to Tap 7.
     *  - \b Tap8 (Display string: 'Tap 8'): Black Level will be applied to Tap 8.
     *  - \b Tap9 (Display string: 'Tap 9'): Black Level will be applied to Tap 9.
     *  - \b Tap10 (Display string: 'Tap 10'): Black Level will be applied to Tap 10.
     *  - \b Tap11 (Display string: 'Tap 11'): Black Level will be applied to Tap 11.
     *  - \b Tap12 (Display string: 'Tap 12'): Black Level will be applied to Tap 12.
     *  - \b Tap13 (Display string: 'Tap 13'): Black Level will be applied to Tap 13.
     *  - \b Tap14 (Display string: 'Tap 14'): Black Level will be applied to Tap 14.
     *  - \b Tap15 (Display string: 'Tap 15'): Black Level will be applied to Tap 15.
     *  - \b Tap16 (Display string: 'Tap 16')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 chunkBlackLevelSelector;
    /// \brief A floating point property. Returns the black level used to capture the image included in the payload.
    /**
     *  Returns the black level used to capture the image included in the payload.
     */
    PropertyF chunkBlackLevel;
    /// \brief An integer property. Returns the LinePitch of the image included in the payload.
    /**
     *  Returns the LinePitch of the image included in the payload.
     */
    PropertyI64 chunkLinePitch;
    /// \brief An integer property. Returns the unique Identifier of the frame (or image) included in the payload.
    /**
     *  Returns the unique Identifier of the frame (or image) included in the payload.
     */
    PropertyI64 chunkFrameID;
    /// \brief An enumerated integer property. Selects which Source to retrieve data from.
    /**
     *  Selects which Source to retrieve data from.
     *
     *  The following string values might be valid for this feature:
     *  - \b Source0 (Display string: 'Source 0'): Image comes from the Source 0.
     *  - \b Source1 (Display string: 'Source 1'): Image comes from the Source 1.
     *  - \b Source2 (Display string: 'Source 2'): Image comes from the Source 2.
     *  - \b Source\#3\# (Display string: 'Source \#3\#'): Image comes from the Source \#3\#.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 chunkSourceSelector;
    /// \brief An enumerated integer property. Returns the Identifier of Source that the image comes from.
    /**
     *  Returns the Identifier of Source that the image comes from.
     *
     *  The following string values might be valid for this feature:
     *  - \b Source0 (Display string: 'Source 0'): Image comes from the Source 0.
     *  - \b Source1 (Display string: 'Source 1'): Image comes from the Source 1.
     *  - \b Source2 (Display string: 'Source 2'): Image comes from the Source 2.
     *  - \b Source\#3\# (Display string: 'Source \#3\#'): Image comes from the Source \#3\#.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 chunkSourceID;
    /// \brief An integer property. Returns the unique integer Identifier value of the Source that the image comes from.
    /**
     *  Returns the unique integer Identifier value of the Source that the image comes from.
     */
    PropertyI64 chunkSourceIDValue;
    /// \brief An integer property. Returns the unique identifier of the transfer block used to transport the payload.
    /**
     *  Returns the unique identifier of the transfer block used to transport the payload.
     */
    PropertyI64 chunkTransferBlockID;
    /// \brief An enumerated integer property. Returns identifier of the stream that generated this block.
    /**
     *  Returns identifier of the stream that generated this block.
     *
     *  The following string values might be valid for this feature:
     *  - \b Stream0 (Display string: 'Stream 0'): Data comes from Stream0.
     *  - \b Stream1 (Display string: 'Stream 1'): Data comes from Stream1.
     *  - \b Stream2 (Display string: 'Stream 2'): Data comes from Stream2.
     *  - \b Stream3 (Display string: 'Stream 3'): Data comes from Stream3.
     *  - \b Stream\#4\# (Display string: 'Stream \#4\#'): Data comes from Stream\#4\#.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 chunkTransferStreamID;
    /// \brief An integer property. Returns the current number of blocks in the transfer queue.
    /**
     *  Returns the current number of blocks in the transfer queue.
     */
    PropertyI64 chunkTransferQueueCurrentBlockCount;
    /// \brief An integer property. Returns identifier of the stream channel used to carry the block.
    /**
     *  Returns identifier of the stream channel used to carry the block.
     */
    PropertyI64 chunkStreamChannelID;
    /// \brief An integer property. Return the index of the active set of the running sequencer included in the payload.
    /**
     *  Return the index of the active set of the running sequencer included in the payload.
     */
    PropertyI64 chunkSequencerSetActive;
    /// \brief An enumerated integer property. Returns the Distance Unit of the payload image.
    /**
     *  Returns the Distance Unit of the payload image.
     *
     *  The following string values might be valid for this feature:
     *  - \b Millimeter (Display string: 'Millimeter'): Default value. Distance values are in millimeter units.
     *  - \b Inch (Display string: 'Inch'): Distance values are in inch units.
     *  - \b Pixel (Display string: 'Pixel'): Distance values are given as a multiple of the size of a pixel.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 chunkScan3dDistanceUnit;
    /// \brief An enumerated integer property. Returns the Calibrated Mode of the payload image.
    /**
     *  Returns the Calibrated Mode of the payload image.
     *
     *  The following string values might be valid for this feature:
     *  - \b UncalibratedC (Display string: 'Uncalibrated C'): Uncalibrated 2.5D Depth map. The distance data does not represent a physical unit and may be non-linear. The data is a 2.5D range map only.
     *  - \b CalibratedABC_Grid (Display string: 'Calibrated ABC Grid'): 3 Coordinates in grid organization. The full 3 coordinate data with the grid array organization from the sensor kept.
     *  - \b CalibratedABC_PointCloud (Display string: 'Calibrated ABC Point Cloud'): 3 Coordinates without organization. The full 3 coordinate data without any organization of data points. Typically only valid points transmitted giving varying image size.
     *  - \b CalibratedAC (Display string: 'Calibrated AC'): 2 Coordinates with fixed B sampling. The data is sent as a A and C coordinates (X,Z or Theta,Rho). The B (Y) axis uses the scale and offset parameters for the B axis.
     *  - \b CalibratedAC_Linescan (Display string: 'Calibrated AC Linescan'): 2 Coordinates with varying sampling. The data is sent as a A and C coordinates (X,Z or Theta,Rho). The B (Y) axis comes from the encoder chunk value.
     *  - \b CalibratedC (Display string: 'Calibrated C'): Calibrated 2.5D Depth map. The distance data is expressed in the chosen distance unit. The data is a 2.5D range map. No information on X-Y axes available.
     *  - \b CalibratedC_Linescan (Display string: 'Calibrated C Linescan'): Depth Map with varying B sampling. The distance data is expressed in the chosen distance unit. The data is a 2.5D range map. The B (Y) axis comes from the encoder chunk value.
     *  - \b RectifiedC (Display string: 'Rectified C'): Rectified 2.5D Depth map. The distance data has been rectified to a uniform sampling pattern in the X and Y direction. The data is a 2.5D range map only. If a complete 3D point cloud is rectified but transmitted as explicit coordinates it should be transmitted as one of the 'CalibratedABC' formats.
     *  - \b RectifiedC_Linescan (Display string: 'Rectified C Linescan'): Rectified 2.5D Depth map with varying B sampling. The data is sent as rectified 1D profiles using Coord3D_C pixels. The B (Y) axis comes from the encoder chunk value.
     *  - \b DisparityC (Display string: 'Disparity C'): Disparity 2.5D Depth map. The distance is inversely proportional to the pixel (disparity) value.
     *  - \b DisparityC_Linescan (Display string: 'Disparity C Linescan'): Disparity 2.5D Depth map with varying B sampling. The distance is inversely proportional to the pixel (disparity) value. The B (Y) axis comes from the encoder chunk value.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 chunkScan3dOutputMode;
    /// \brief An enumerated integer property. Returns the Coordinate System of the image included in the payload.
    /**
     *  Returns the Coordinate System of the image included in the payload.
     *
     *  The following string values might be valid for this feature:
     *  - \b Cartesian (Display string: 'Cartesian'): Default value. 3-axis orthogonal, right-hand X-Y-Z.
     *  - \b Spherical (Display string: 'Spherical'): A Theta-Phi-Rho coordinate system.
     *  - \b Cylindrical (Display string: 'Cylindrical'): A Theta-Y-Rho coordinate system.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 chunkScan3dCoordinateSystem;
    /// \brief An enumerated integer property. Returns the Coordinate System Position of the image included in the payload.
    /**
     *  Returns the Coordinate System Position of the image included in the payload.
     *
     *  The following string values might be valid for this feature:
     *  - \b Anchor (Display string: 'Anchor'): Default value. Original fixed reference. The coordinate system fixed relative the camera reference point marker is used.
     *  - \b Transformed (Display string: 'Transformed'): Transformed reference system. The transformed coordinate system is used according to the definition in the rotation and translation matrices.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 chunkScan3dCoordinateSystemReference;
    /// \brief An enumerated integer property. Selects which Coordinate to retrieve data from.
    /**
     *  Selects which Coordinate to retrieve data from.
     *
     *  The following string values might be valid for this feature:
     *  - \b CoordinateA (Display string: 'Coordinate A'): The first (X or Theta) coordinate
     *  - \b CoordinateB (Display string: 'Coordinate B'): The second (Y or Phi) coordinate
     *  - \b CoordinateC (Display string: 'Coordinate C'): The third (Z or Rho) coordinate.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 chunkScan3dCoordinateSelector;
    /// \brief A floating point property. Returns the Scale for the selected coordinate axis of the image included in the payload.
    /**
     *  Returns the Scale for the selected coordinate axis of the image included in the payload.
     */
    PropertyF chunkScan3dCoordinateScale;
    /// \brief A floating point property. Returns the Offset for the selected coordinate axis of the image included in the payload.
    /**
     *  Returns the Offset for the selected coordinate axis of the image included in the payload.
     */
    PropertyF chunkScan3dCoordinateOffset;
    /// \brief A boolean property. Returns if a specific non-valid data flag is used in the data stream.
    /**
     *  Returns if a specific non-valid data flag is used in the data stream.
     */
    PropertyIBoolean chunkScan3dInvalidDataFlag;
    /// \brief A floating point property. Returns the Invalid Data Value used for the image included in the payload.
    /**
     *  Returns the Invalid Data Value used for the image included in the payload.
     */
    PropertyF chunkScan3dInvalidDataValue;
    /// \brief A floating point property. Returns the Minimum Axis value for the selected coordinate axis of the image included in the payload.
    /**
     *  Returns the Minimum Axis value for the selected coordinate axis of the image included in the payload.
     */
    PropertyF chunkScan3dAxisMin;
    /// \brief A floating point property. Returns the Maximum Axis value for the selected coordinate axis of the image included in the payload.
    /**
     *  Returns the Maximum Axis value for the selected coordinate axis of the image included in the payload.
     */
    PropertyF chunkScan3dAxisMax;
    /// \brief An enumerated integer property. Selector for transform values.
    /**
     *  Selector for transform values.
     *
     *  The following string values might be valid for this feature:
     *  - \b RotationX (Display string: 'Rotation X'): Rotation around X axis.
     *  - \b RotationY (Display string: 'Rotation Y'): Rotation around Y axis.
     *  - \b RotationZ (Display string: 'Rotation Z'): Rotation around Z axis.
     *  - \b TranslationX (Display string: 'Translation X'): Translation along X axis.
     *  - \b TranslationY (Display string: 'Translation Y'): Translation along Y axis.
     *  - \b TranslationZ (Display string: 'Translation Z'): Translation along Z axis.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 chunkScan3dCoordinateTransformSelector;
    /// \brief A floating point property. Returns the transform value.
    /**
     *  Returns the transform value.
     */
    PropertyF chunkScan3dTransformValue;
    /// \brief An enumerated integer property. Selector to read a coordinate system reference value defining the transform of a point from one system to the other.
    /**
     *  Selector to read a coordinate system reference value defining the transform of a point from one system to the other.
     *
     *  The following string values might be valid for this feature:
     *  - \b RotationX (Display string: 'Rotation X'): Rotation around X axis.
     *  - \b RotationY (Display string: 'Rotation Y'): Rotation around Y axis.
     *  - \b RotationZ (Display string: 'Rotation Z'): Rotation around Z axis.
     *  - \b TranslationX (Display string: 'Translation X'): X axis translation.
     *  - \b TranslationY (Display string: 'Translation Y'): Y axis translation.
     *  - \b TranslationZ (Display string: 'Translation Z'): Z axis translation.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 chunkScan3dCoordinateReferenceSelector;
    /// \brief A floating point property. Returns the value of a position or pose coordinate for the anchor or transformed coordinate systems relative to the reference point.
    /**
     *  Returns the value of a position or pose coordinate for the anchor or transformed coordinate systems relative to the reference point.
     */
    PropertyF chunkScan3dCoordinateReferenceValue;
    /// \brief A floating point property. Returns the focal length of the camera in pixel.
    /**
     *  Returns the focal length of the camera in pixel. The focal length depends on the selected region. The value of this feature takes into account horizontal binning, decimation, or any other function changing the image resolution.
     */
    PropertyF chunkScan3dFocalLength;
    /// \brief A floating point property. Returns the baseline as the physical distance of two cameras in a stereo camera setup.
    /**
     *  Returns the baseline as the physical distance of two cameras in a stereo camera setup. The value of this feature can be used for 3D reconstruction from disparity images. In this case, the unit of the 3D coordinates corresponds to the unit of the baseline.
     */
    PropertyF chunkScan3dBaseline;
    /// \brief A floating point property. Returns the value of this feature gives the horizontal position of the principal point, relative to the region origin, i.e.
    /**
     *  Returns the value of this feature gives the horizontal position of the principal point, relative to the region origin, i.e. OffsetX. The value of this feature takes into account horizontal binning, decimation, or any other function changing the image resolution.
     */
    PropertyF chunkScan3dPrincipalPointU;
    /// \brief A floating point property. Returns the value of this feature gives the vertical position of the principal point, relative to the region origin, i.e.
    /**
     *  Returns the value of this feature gives the vertical position of the principal point, relative to the region origin, i.e. OffsetY. The value of this feature takes into account vertical binning, decimation, or any other function changing the image resolution.
     */
    PropertyF chunkScan3dPrincipalPointV;
    /// \brief A string property. Provides access to a JPEG image transmitted as part of the chunk data.
    /**
     *  Provides access to a JPEG image transmitted as part of the chunk data.
     */
    PropertyS mvChunkJPEG;
    /// \brief An integer property. Contains a custom identifier previously specified by the user.
    /**
     *  Contains a custom identifier previously specified by the user.
     */
    PropertyI64 chunkmvCustomIdentifier;
    // *INDENT-OFF*
    PYTHON_OR_JAVA_ONLY( %mutable; )
    // *INDENT-ON*
};

//-----------------------------------------------------------------------------
/// \brief Category for Test Control features.
/**
 *  A category for Test Control features.
 * \ingroup GenICamInterfaceDevice
 */
class TestControl
//-----------------------------------------------------------------------------
{
public:
    /// \brief Constructs a new <b>mvIMPACT::acquire::GenICam::TestControl</b> object.
    explicit TestControl(
        /// [in] A pointer to a <b>mvIMPACT::acquire::Device</b> object obtained from a <b>mvIMPACT::acquire::DeviceManager</b> object.
        mvIMPACT::acquire::Device* pDev,
        /// [in] The name of the driver internal setting to access with this instance.
        /// A list of valid setting names can be obtained by a call to
        /// <b>mvIMPACT::acquire::FunctionInterface::getAvailableSettings</b>, new
        /// settings can be created with the function
        /// <b>mvIMPACT::acquire::FunctionInterface::createSetting</b>
        const std::string& settingName = "Base" ) :
        testPendingAck(),
        testEventGenerate(),
        testPayloadFormatMode()
    {
        pDev->validateInterfaceLayout( dilGenICam );
        mvIMPACT::acquire::DeviceComponentLocator locator( pDev, mvIMPACT::acquire::dltSetting, settingName );
        locator.bindSearchBase( locator.searchbase_id(), "Camera/GenICam" );
        locator.bindComponent( testPendingAck, "TestPendingAck" );
        locator.bindComponent( testEventGenerate, "TestEventGenerate@i" );
        locator.bindComponent( testPayloadFormatMode, "TestPayloadFormatMode" );
    }
    // *INDENT-OFF*
    PYTHON_OR_JAVA_ONLY( %immutable; )
    // *INDENT-ON*
    /// \brief An integer property. Tests the device's pending acknowledge feature.
    /**
     *  Tests the device's pending acknowledge feature. When this feature is written, the device waits a time period corresponding to the value of TestPendingAck before acknowledging the write.
     */
    PropertyI64 testPendingAck;
    /// \brief A method object. Generates a Test Event.
    /**
     *  Generates a Test Event.
     */
    Method testEventGenerate;
    /// \brief An enumerated integer property. This feature allows setting a device in test mode and to output a specific payload format for validation of data streaming.
    /**
     *  This feature allows setting a device in test mode and to output a specific payload format for validation of data streaming. This feature is intended solely for test purposes. The data can be real acquired data or any test pattern.
     *
     *  The following string values might be valid for this feature:
     *  - \b Off (Display string: 'Off'): The test mode is disabled. This feature has no effect and the device is streaming data normally according to its configuration. This option has to be the default after each boot of the device.
     *  - \b MultiPart (Display string: 'Multi Part'): The device streams data using multi-part payload format with at least one part in each payload. This option must be present if and only if the device supports the multi-part payload format. If the underlying transport layer negotiation has failed to allow the device to enter multi-part mode, it must not be possible to enable this test mode.
     *  - \b GenDC (Display string: 'Gen DC'): The device streams data using GenDC payload format with at least one component in each payload. This option must be present if the device supports the GenDC payload format. If the underlying transport layer negotiation has failed to allow the device to enter GenDC mode, it must not be possible to enable this test mode.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 testPayloadFormatMode;
    // *INDENT-OFF*
    PYTHON_OR_JAVA_ONLY( %mutable; )
    // *INDENT-ON*
};

//-----------------------------------------------------------------------------
/// \brief Category that contains the transport Layer control features.
/**
 *  A category that contains the transport Layer control features.
 * \ingroup GenICamInterfaceDevice
 */
class TransportLayerControl
//-----------------------------------------------------------------------------
{
public:
    /// \brief Constructs a new <b>mvIMPACT::acquire::GenICam::TransportLayerControl</b> object.
    explicit TransportLayerControl(
        /// [in] A pointer to a <b>mvIMPACT::acquire::Device</b> object obtained from a <b>mvIMPACT::acquire::DeviceManager</b> object.
        mvIMPACT::acquire::Device* pDev,
        /// [in] The name of the driver internal setting to access with this instance.
        /// A list of valid setting names can be obtained by a call to
        /// <b>mvIMPACT::acquire::FunctionInterface::getAvailableSettings</b>, new
        /// settings can be created with the function
        /// <b>mvIMPACT::acquire::FunctionInterface::createSetting</b>
        const std::string& settingName = "Base" ) :
        payloadSize(),
        genDCStreamingMode(),
        genDCStreamingStatus(),
        genDCDescriptor(),
        genDCFlowMappingTable(),
        mvU3VPHYErrorCount(),
        mvU3VLNKErrorCount(),
        mvU3VEndpointSelector(),
        mvU3VEndpointResetEventCount(),
        mvU3VEndpointRetryEventCount(),
        mvU3VErrorCounterReset(),
        mvU3VSpreadSpectrumClockingSupportDisable(),
        deviceTapGeometry(),
        ptpEnable(),
        ptpClockAccuracy(),
        ptpDataSetLatch(),
        ptpStatus(),
        ptpServoStatus(),
        ptpOffsetFromMaster(),
        ptpClockID(),
        ptpParentClockID(),
        ptpGrandmasterClockID(),
        gevVersionMajor(),
        gevVersionMinor(),
        gevDeviceModeIsBigEndian(),
        gevDeviceClass(),
        gevDeviceModeCharacterSet(),
        gevPhysicalLinkConfiguration(),
        gevCurrentPhysicalLinkConfiguration(),
        gevActiveLinkCount(),
        gevSupportedOptionSelector(),
        gevSupportedOption(),
        gevInterfaceSelector(),
        gevLinkSpeed(),
        gevMACAddress(),
        gevPAUSEFrameReception(),
        gevPAUSEFrameTransmission(),
        gevCurrentIPConfigurationLLA(),
        gevCurrentIPConfigurationDHCP(),
        gevCurrentIPConfigurationPersistentIP(),
        gevCurrentIPAddress(),
        gevCurrentSubnetMask(),
        gevCurrentDefaultGateway(),
        gevIPConfigurationStatus(),
        gevFirstURL(),
        gevSecondURL(),
        gevNumberOfInterfaces(),
        gevPersistentIPAddress(),
        gevPersistentSubnetMask(),
        gevPersistentDefaultGateway(),
        gevMessageChannelCount(),
        gevStreamChannelCount(),
        gevHeartbeatTimeout(),
        gevTimestampTickFrequency(),
        gevTimestampControlLatch(),
        gevTimestampControlReset(),
        gevTimestampValue(),
        gevDiscoveryAckDelay(),
        gevIEEE1588(),
        gevIEEE1588ClockAccuracy(),
        gevIEEE1588Status(),
        gevGVCPExtendedStatusCodesSelector(),
        gevGVCPExtendedStatusCodes(),
        gevGVCPPendingAck(),
        gevGVCPHeartbeatDisable(),
        gevGVCPPendingTimeout(),
        gevPrimaryApplicationSwitchoverKey(),
        gevGVSPExtendedIDMode(),
        gevCCP(),
        gevPrimaryApplicationSocket(),
        gevPrimaryApplicationIPAddress(),
        gevMCPHostPort(),
        gevMCDA(),
        gevMCTT(),
        gevMCRC(),
        gevMCSP(),
        gevStreamChannelSelector(),
        gevSCCFGPacketResendDestination(),
        gevSCCFGAllInTransmission(),
        gevSCCFGUnconditionalStreaming(),
        gevSCCFGExtendedChunkData(),
        gevSCPDirection(),
        gevSCPInterfaceIndex(),
        gevSCPHostPort(),
        gevSCPSFireTestPacket(),
        gevSCPSDoNotFragment(),
        gevSCPSBigEndian(),
        gevSCPSPacketSize(),
        gevSCPD(),
        gevSCDA(),
        gevSCSP(),
        gevSCZoneCount(),
        gevSCZoneDirectionAll(),
        gevSCZoneConfigurationLock(),
        aPAUSEMACCtrlFramesTransmitted(),
        aPAUSEMACCtrlFramesReceived(),
        clConfiguration(),
        clTimeSlotsCount(),
        cxpLinkConfigurationStatus(),
        cxpLinkConfigurationPreferred(),
        cxpLinkConfiguration(),
        cxpLinkSharingEnable(),
        cxpLinkSharingSubDeviceSelector(),
        cxpLinkSharingSubDeviceType(),
        cxpLinkSharingHorizontalStripeCount(),
        cxpLinkSharingVerticalStripeCount(),
        cxpLinkSharingHorizontalOverlap(),
        cxpLinkSharingVerticalOverlap(),
        cxpLinkSharingDuplicateStripe(),
        cxpConnectionSelector(),
        cxpConnectionTestMode(),
        cxpConnectionTestErrorCount(),
        cxpSendReceiveSelector(),
        cxpConnectionTestPacketCount(),
        cxpErrorCounterSelector(),
        cxpErrorCounterReset(),
        cxpErrorCounterValue(),
        cxpErrorCounterStatus(),
        cxpPoCxpAuto(),
        cxpPoCxpTurnOff(),
        cxpPoCxpTripReset(),
        cxpPoCxpStatus(),
        cxpFirstLineTriggerWithFrameStart(),
        mvGevSCBWControl(),
        mvGevSCBW()
    {
        pDev->validateInterfaceLayout( dilGenICam );
        mvIMPACT::acquire::DeviceComponentLocator locator( pDev, mvIMPACT::acquire::dltSetting, settingName );
        locator.bindSearchBase( locator.searchbase_id(), "Camera/GenICam" );
        locator.bindComponent( payloadSize, "PayloadSize" );
        locator.bindComponent( genDCStreamingMode, "GenDCStreamingMode" );
        locator.bindComponent( genDCStreamingStatus, "GenDCStreamingStatus" );
        locator.bindComponent( genDCDescriptor, "GenDCDescriptor" );
        locator.bindComponent( genDCFlowMappingTable, "GenDCFlowMappingTable" );
        locator.bindComponent( mvU3VPHYErrorCount, "mvU3VPHYErrorCount" );
        locator.bindComponent( mvU3VLNKErrorCount, "mvU3VLNKErrorCount" );
        locator.bindComponent( mvU3VEndpointSelector, "mvU3VEndpointSelector" );
        locator.bindComponent( mvU3VEndpointResetEventCount, "mvU3VEndpointResetEventCount" );
        locator.bindComponent( mvU3VEndpointRetryEventCount, "mvU3VEndpointRetryEventCount" );
        locator.bindComponent( mvU3VErrorCounterReset, "mvU3VErrorCounterReset@i" );
        locator.bindComponent( mvU3VSpreadSpectrumClockingSupportDisable, "mvU3VSpreadSpectrumClockingSupportDisable@i" );
        locator.bindComponent( deviceTapGeometry, "DeviceTapGeometry" );
        locator.bindComponent( ptpEnable, "PtpEnable" );
        locator.bindComponent( ptpClockAccuracy, "PtpClockAccuracy" );
        locator.bindComponent( ptpDataSetLatch, "PtpDataSetLatch@i" );
        locator.bindComponent( ptpStatus, "PtpStatus" );
        locator.bindComponent( ptpServoStatus, "PtpServoStatus" );
        locator.bindComponent( ptpOffsetFromMaster, "PtpOffsetFromMaster" );
        locator.bindComponent( ptpClockID, "PtpClockID" );
        if( !ptpClockID.isValid() )
        {
            locator.bindComponent( ptpClockID, "PtpClockId" );
        }
        locator.bindComponent( ptpParentClockID, "PtpParentClockID" );
        if( !ptpParentClockID.isValid() )
        {
            locator.bindComponent( ptpParentClockID, "PtpParentClockId" );
        }
        locator.bindComponent( ptpGrandmasterClockID, "PtpGrandmasterClockID" );
        locator.bindComponent( gevVersionMajor, "GevVersionMajor" );
        locator.bindComponent( gevVersionMinor, "GevVersionMinor" );
        locator.bindComponent( gevDeviceModeIsBigEndian, "GevDeviceModeIsBigEndian" );
        locator.bindComponent( gevDeviceClass, "GevDeviceClass" );
        locator.bindComponent( gevDeviceModeCharacterSet, "GevDeviceModeCharacterSet" );
        locator.bindComponent( gevPhysicalLinkConfiguration, "GevPhysicalLinkConfiguration" );
        locator.bindComponent( gevCurrentPhysicalLinkConfiguration, "GevCurrentPhysicalLinkConfiguration" );
        locator.bindComponent( gevActiveLinkCount, "GevActiveLinkCount" );
        locator.bindComponent( gevSupportedOptionSelector, "GevSupportedOptionSelector" );
        locator.bindComponent( gevSupportedOption, "GevSupportedOption" );
        locator.bindComponent( gevInterfaceSelector, "GevInterfaceSelector" );
        locator.bindComponent( gevLinkSpeed, "GevLinkSpeed" );
        locator.bindComponent( gevMACAddress, "GevMACAddress" );
        locator.bindComponent( gevPAUSEFrameReception, "GevPAUSEFrameReception" );
        locator.bindComponent( gevPAUSEFrameTransmission, "GevPAUSEFrameTransmission" );
        locator.bindComponent( gevCurrentIPConfigurationLLA, "GevCurrentIPConfigurationLLA" );
        locator.bindComponent( gevCurrentIPConfigurationDHCP, "GevCurrentIPConfigurationDHCP" );
        locator.bindComponent( gevCurrentIPConfigurationPersistentIP, "GevCurrentIPConfigurationPersistentIP" );
        locator.bindComponent( gevCurrentIPAddress, "GevCurrentIPAddress" );
        locator.bindComponent( gevCurrentSubnetMask, "GevCurrentSubnetMask" );
        locator.bindComponent( gevCurrentDefaultGateway, "GevCurrentDefaultGateway" );
        locator.bindComponent( gevIPConfigurationStatus, "GevIPConfigurationStatus" );
        locator.bindComponent( gevFirstURL, "GevFirstURL" );
        locator.bindComponent( gevSecondURL, "GevSecondURL" );
        locator.bindComponent( gevNumberOfInterfaces, "GevNumberOfInterfaces" );
        locator.bindComponent( gevPersistentIPAddress, "GevPersistentIPAddress" );
        locator.bindComponent( gevPersistentSubnetMask, "GevPersistentSubnetMask" );
        locator.bindComponent( gevPersistentDefaultGateway, "GevPersistentDefaultGateway" );
        locator.bindComponent( gevMessageChannelCount, "GevMessageChannelCount" );
        locator.bindComponent( gevStreamChannelCount, "GevStreamChannelCount" );
        locator.bindComponent( gevHeartbeatTimeout, "GevHeartbeatTimeout" );
        locator.bindComponent( gevTimestampTickFrequency, "GevTimestampTickFrequency" );
        locator.bindComponent( gevTimestampControlLatch, "GevTimestampControlLatch@i" );
        locator.bindComponent( gevTimestampControlReset, "GevTimestampControlReset@i" );
        locator.bindComponent( gevTimestampValue, "GevTimestampValue" );
        locator.bindComponent( gevDiscoveryAckDelay, "GevDiscoveryAckDelay" );
        locator.bindComponent( gevIEEE1588, "GevIEEE1588" );
        locator.bindComponent( gevIEEE1588ClockAccuracy, "GevIEEE1588ClockAccuracy" );
        locator.bindComponent( gevIEEE1588Status, "GevIEEE1588Status" );
        locator.bindComponent( gevGVCPExtendedStatusCodesSelector, "GevGVCPExtendedStatusCodesSelector" );
        locator.bindComponent( gevGVCPExtendedStatusCodes, "GevGVCPExtendedStatusCodes" );
        locator.bindComponent( gevGVCPPendingAck, "GevGVCPPendingAck" );
        locator.bindComponent( gevGVCPHeartbeatDisable, "GevGVCPHeartbeatDisable" );
        locator.bindComponent( gevGVCPPendingTimeout, "GevGVCPPendingTimeout" );
        locator.bindComponent( gevPrimaryApplicationSwitchoverKey, "GevPrimaryApplicationSwitchoverKey" );
        locator.bindComponent( gevGVSPExtendedIDMode, "GevGVSPExtendedIDMode" );
        locator.bindComponent( gevCCP, "GevCCP" );
        locator.bindComponent( gevPrimaryApplicationSocket, "GevPrimaryApplicationSocket" );
        locator.bindComponent( gevPrimaryApplicationIPAddress, "GevPrimaryApplicationIPAddress" );
        locator.bindComponent( gevMCPHostPort, "GevMCPHostPort" );
        locator.bindComponent( gevMCDA, "GevMCDA" );
        locator.bindComponent( gevMCTT, "GevMCTT" );
        locator.bindComponent( gevMCRC, "GevMCRC" );
        locator.bindComponent( gevMCSP, "GevMCSP" );
        locator.bindComponent( gevStreamChannelSelector, "GevStreamChannelSelector" );
        locator.bindComponent( gevSCCFGPacketResendDestination, "GevSCCFGPacketResendDestination" );
        locator.bindComponent( gevSCCFGAllInTransmission, "GevSCCFGAllInTransmission" );
        locator.bindComponent( gevSCCFGUnconditionalStreaming, "GevSCCFGUnconditionalStreaming" );
        locator.bindComponent( gevSCCFGExtendedChunkData, "GevSCCFGExtendedChunkData" );
        locator.bindComponent( gevSCPDirection, "GevSCPDirection" );
        locator.bindComponent( gevSCPInterfaceIndex, "GevSCPInterfaceIndex" );
        locator.bindComponent( gevSCPHostPort, "GevSCPHostPort" );
        locator.bindComponent( gevSCPSFireTestPacket, "GevSCPSFireTestPacket" );
        locator.bindComponent( gevSCPSDoNotFragment, "GevSCPSDoNotFragment" );
        locator.bindComponent( gevSCPSBigEndian, "GevSCPSBigEndian" );
        locator.bindComponent( gevSCPSPacketSize, "GevSCPSPacketSize" );
        locator.bindComponent( gevSCPD, "GevSCPD" );
        locator.bindComponent( gevSCDA, "GevSCDA" );
        locator.bindComponent( gevSCSP, "GevSCSP" );
        locator.bindComponent( gevSCZoneCount, "GevSCZoneCount" );
        locator.bindComponent( gevSCZoneDirectionAll, "GevSCZoneDirectionAll" );
        locator.bindComponent( gevSCZoneConfigurationLock, "GevSCZoneConfigurationLock" );
        locator.bindComponent( aPAUSEMACCtrlFramesTransmitted, "aPAUSEMACCtrlFramesTransmitted" );
        locator.bindComponent( aPAUSEMACCtrlFramesReceived, "aPAUSEMACCtrlFramesReceived" );
        locator.bindComponent( clConfiguration, "ClConfiguration" );
        locator.bindComponent( clTimeSlotsCount, "ClTimeSlotsCount" );
        locator.bindComponent( cxpLinkConfigurationStatus, "CxpLinkConfigurationStatus" );
        locator.bindComponent( cxpLinkConfigurationPreferred, "CxpLinkConfigurationPreferred" );
        locator.bindComponent( cxpLinkConfiguration, "CxpLinkConfiguration" );
        locator.bindComponent( cxpLinkSharingEnable, "CxpLinkSharingEnable" );
        locator.bindComponent( cxpLinkSharingSubDeviceSelector, "CxpLinkSharingSubDeviceSelector" );
        locator.bindComponent( cxpLinkSharingSubDeviceType, "CxpLinkSharingSubDeviceType" );
        locator.bindComponent( cxpLinkSharingHorizontalStripeCount, "CxpLinkSharingHorizontalStripeCount" );
        locator.bindComponent( cxpLinkSharingVerticalStripeCount, "CxpLinkSharingVerticalStripeCount" );
        locator.bindComponent( cxpLinkSharingHorizontalOverlap, "CxpLinkSharingHorizontalOverlap" );
        locator.bindComponent( cxpLinkSharingVerticalOverlap, "CxpLinkSharingVerticalOverlap" );
        locator.bindComponent( cxpLinkSharingDuplicateStripe, "CxpLinkSharingDuplicateStripe" );
        locator.bindComponent( cxpConnectionSelector, "CxpConnectionSelector" );
        locator.bindComponent( cxpConnectionTestMode, "CxpConnectionTestMode" );
        locator.bindComponent( cxpConnectionTestErrorCount, "CxpConnectionTestErrorCount" );
        locator.bindComponent( cxpSendReceiveSelector, "CxpSendReceiveSelector" );
        locator.bindComponent( cxpConnectionTestPacketCount, "CxpConnectionTestPacketCount" );
        locator.bindComponent( cxpErrorCounterSelector, "CxpErrorCounterSelector" );
        locator.bindComponent( cxpErrorCounterReset, "CxpErrorCounterReset@i" );
        locator.bindComponent( cxpErrorCounterValue, "CxpErrorCounterValue" );
        locator.bindComponent( cxpErrorCounterStatus, "CxpErrorCounterStatus" );
        locator.bindComponent( cxpPoCxpAuto, "CxpPoCxpAuto@i" );
        locator.bindComponent( cxpPoCxpTurnOff, "CxpPoCxpTurnOff@i" );
        locator.bindComponent( cxpPoCxpTripReset, "CxpPoCxpTripReset@i" );
        locator.bindComponent( cxpPoCxpStatus, "CxpPoCxpStatus" );
        locator.bindComponent( cxpFirstLineTriggerWithFrameStart, "CxpFirstLineTriggerWithFrameStart" );
        locator.bindComponent( mvGevSCBWControl, "mvGevSCBWControl" );
        locator.bindComponent( mvGevSCBW, "mvGevSCBW" );
    }
    // *INDENT-OFF*
    PYTHON_OR_JAVA_ONLY( %immutable; )
    // *INDENT-ON*
    /// \brief An integer property. Provides the number of bytes transferred for each data buffer or chunk on the stream channel.
    /**
     *  Provides the number of bytes transferred for each data buffer or chunk on the stream channel. This includes any end-of-line, end-of-frame statistics or other stamp data. This is the total size of data payload for a data block.
     */
    PropertyI64 payloadSize;
    /// \brief An enumerated integer property. Controls the device's streaming format.
    /**
     *  Controls the device's streaming format.
     *
     *  The following string values might be valid for this feature:
     *  - \b Off (Display string: 'Off'): The device will only stream data in its native format.
     *  - \b On (Display string: 'On'): The device will stream all its data in the generic GenDC format.
     *  - \b Automatic (Display string: 'Automatic'): The device will automatically choose in which format it streams its data.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 genDCStreamingMode;
    /// \brief An enumerated integer property. Returns whether the current device data streaming format is GenDC.
    /**
     *  Returns whether the current device data streaming format is GenDC. This value is conditioned by the GenDCStreamingMode.
     *
     *  The following string values might be valid for this feature:
     *  - \b Off (Display string: 'Off'): The device will only stream data in its native format.
     *  - \b On (Display string: 'On'): The device will stream all its data in the generic GenDC format.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 genDCStreamingStatus;
    /// \brief A string property. Returns a preliminary GenDC Descriptor that can be used as reference for the data to be streamed out by the device in its current configuration.
    /**
     *  Returns a preliminary GenDC Descriptor that can be used as reference for the data to be streamed out by the device in its current configuration. This information can be used to set up the receiver in advance to be ready for the data Containers to come.
     */
    PropertyS genDCDescriptor;
    /// \brief A string property. Returns the GenDC Container data Flow mapping table that will be used to transport the GenDC Container.
    /**
     *  Returns the GenDC Container data Flow mapping table that will be used to transport the GenDC Container.
     */
    PropertyS genDCFlowMappingTable;
    /// \brief An integer property. Counts the number of errors on the PHY interface.
    /**
     *  Counts the number of errors on the PHY interface.
     */
    PropertyI64 mvU3VPHYErrorCount;
    /// \brief An integer property. Counts the number of errors on the USB3 link.
    /**
     *  Counts the number of errors on the USB3 link.
     */
    PropertyI64 mvU3VLNKErrorCount;
    /// \brief An enumerated integer property. Selects the endpoint for the event counters.
    /**
     *  Selects the endpoint for the event counters.
     *
     *  The following string values might be valid for this feature:
     *  - \b mvControl (Display string: 'mv Control'): The control endpoint of the camera.
     *  - \b mvEvent (Display string: 'mv Event'): The event endpoint of the camera.
     *  - \b mvStreaming (Display string: 'mv Streaming'): The streaming endpoint of the camera.
     *  - \b mvDebug (Display string: 'mv Debug'): The debug endpoint of the camera.
     *  - \b mvAll (Display string: 'mv All'): Sums up data from all endpoints.
     *  - \b mvReserved (Display string: 'mv Reserved'): Reserved.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvU3VEndpointSelector;
    /// \brief An integer property. Counts the number of reset events received on all endpoints.
    /**
     *  Counts the number of reset events received on all endpoints.
     */
    PropertyI64 mvU3VEndpointResetEventCount;
    /// \brief An integer property. Counts the number of retry events received on all endpoints.
    /**
     *  Counts the number of retry events received on all endpoints.
     */
    PropertyI64 mvU3VEndpointRetryEventCount;
    /// \brief A method object. Resets the 'mvU3VPHYErrorCount' and 'mvU3VLNKErrorCount' registers.
    /**
     *  Resets the 'mvU3VPHYErrorCount' and 'mvU3VLNKErrorCount' registers.
     */
    Method mvU3VErrorCounterReset;
    /// \brief A method object. Disable the spread spectrum clocking support.
    /**
     *  Disable the spread spectrum clocking support.
     */
    Method mvU3VSpreadSpectrumClockingSupportDisable;
    /// \brief An enumerated integer property. This device tap geometry feature describes the geometrical properties characterizing the taps of a camera as presented at the output of the device.
    /**
     *  This device tap geometry feature describes the geometrical properties characterizing the taps of a camera as presented at the output of the device.
     *
     *  The following string values might be valid for this feature:
     *  - \b Geometry_1X_1Y (Display string: 'Geometry_1X_1Y'): Geometry_1X_1Y
     *  - \b Geometry_1X2_1Y (Display string: 'Geometry_1X2_1Y'): Geometry_1X2_1Y
     *  - \b Geometry_1X2_1Y2 (Display string: 'Geometry_1X2_1Y2'): Geometry_1X2_1Y2
     *  - \b Geometry_2X_1Y (Display string: 'Geometry_2X_1Y'): Geometry_2X_1Y
     *  - \b Geometry_2X_1Y2 (Display string: 'Geometry_2X_1Y2'): Geometry_2X_1Y2
     *  - \b Geometry_2XE_1Y (Display string: 'Geometry_2XE_1Y'): Geometry_2XE_1Y
     *  - \b Geometry_2XE_1Y2 (Display string: 'Geometry_2XE_1Y2'): Geometry_2XE_1Y2
     *  - \b Geometry_2XM_1Y (Display string: 'Geometry_2XM_1Y'): Geometry_2XM_1Y
     *  - \b Geometry_2XM_1Y2 (Display string: 'Geometry_2XM_1Y2'): Geometry_2XM_1Y2
     *  - \b Geometry_1X_1Y2 (Display string: 'Geometry_1X_1Y2'): Geometry_1X_1Y2
     *  - \b Geometry_1X_2YE (Display string: 'Geometry_1X_2YE'): Geometry_1X_2YE
     *  - \b Geometry_1X3_1Y (Display string: 'Geometry_1X3_1Y'): Geometry_1X3_1Y
     *  - \b Geometry_3X_1Y (Display string: 'Geometry_3X_1Y'): Geometry_3X_1Y
     *  - \b Geometry_1X (Display string: 'Geometry_1X'): Geometry_1X
     *  - \b Geometry_1X2 (Display string: 'Geometry_1X2'): Geometry_1X2
     *  - \b Geometry_2X (Display string: 'Geometry_2X'): Geometry_2X
     *  - \b Geometry_2XE (Display string: 'Geometry_2XE'): Geometry_2XE
     *  - \b Geometry_2XM (Display string: 'Geometry_2XM'): Geometry_2XM
     *  - \b Geometry_1X3 (Display string: 'Geometry_1X3'): Geometry_1X3
     *  - \b Geometry_3X (Display string: 'Geometry_3X'): Geometry_3X
     *  - \b Geometry_1X4_1Y (Display string: 'Geometry_1X4_1Y'): Geometry_1X4_1Y
     *  - \b Geometry_4X_1Y (Display string: 'Geometry_4X_1Y'): Geometry_4X_1Y
     *  - \b Geometry_2X2_1Y (Display string: 'Geometry_2X2_1Y'): Geometry_2X2_1Y
     *  - \b Geometry_2X2E_1Y (Display string: 'Geometry_2X2E_1Y'): Geometry_2X2E_1Y
     *  - \b Geometry_2X2M_1Y (Display string: 'Geometry_2X2M_1Y'): Geometry_2X2M_1Y
     *  - \b Geometry_1X2_2YE (Display string: 'Geometry_1X2_2YE'): Geometry_1X2_2YE
     *  - \b Geometry_2X_2YE (Display string: 'Geometry_2X_2YE'): Geometry_2X_2YE
     *  - \b Geometry_2XE_2YE (Display string: 'Geometry_2XE_2YE'): Geometry_2XE_2YE
     *  - \b Geometry_2XM_2YE (Display string: 'Geometry_2XM_2YE'): Geometry_2XM_2YE
     *  - \b Geometry_1X4 (Display string: 'Geometry_1X4'): Geometry_1X4
     *  - \b Geometry_4X (Display string: 'Geometry_4X'): Geometry_4X
     *  - \b Geometry_2X2 (Display string: 'Geometry_2X2'): Geometry_2X2
     *  - \b Geometry_2X2E (Display string: 'Geometry_2X2E'): Geometry_2X2E
     *  - \b Geometry_2X2M (Display string: 'Geometry_2X2M'): Geometry_2X2M
     *  - \b Geometry_1X8_1Y (Display string: 'Geometry_1X8_1Y'): Geometry_1X8_1Y
     *  - \b Geometry_8X_1Y (Display string: 'Geometry_8X_1Y'): Geometry_8X_1Y
     *  - \b Geometry_4X2_1Y (Display string: 'Geometry_4X2_1Y'): Geometry_4X2_1Y
     *  - \b Geometry_2X2E_2YE (Display string: 'Geometry_2X2E_2YE'): Geometry_2X2E_2YE
     *  - \b Geometry_1X8 (Display string: 'Geometry_1X8'): Geometry_1X8
     *  - \b Geometry_8X (Display string: 'Geometry_8X'): Geometry_8X
     *  - \b Geometry_4X2 (Display string: 'Geometry_4X2'): Geometry_4X2
     *  - \b Geometry_4X2E (Display string: 'Geometry_4X2E'): Geometry_4X2E
     *  - \b Geometry_4X2E_1Y (Display string: 'Geometry_4X2E_1Y'): Geometry_4X2E_1Y
     *  - \b Geometry_1X10_1Y (Display string: 'Geometry_1X10_1Y'): Geometry_1X10_1Y
     *  - \b Geometry_10X_1Y (Display string: 'Geometry_10X_1Y'): Geometry_10X_1Y
     *  - \b Geometry_1X10 (Display string: 'Geometry_1X10'): Geometry_1X10
     *  - \b Geometry_10X (Display string: 'Geometry_10X'): Geometry_10X
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 deviceTapGeometry;
    /// \brief A boolean property. Enables the Precision Time Protocol (PTP).
    /**
     *  Enables the Precision Time Protocol (PTP).
     */
    PropertyIBoolean ptpEnable;
    /// \brief An enumerated integer property. Indicates the expected accuracy of the device PTP clock when it is the grandmaster, or in the event it becomes the grandmaster.
    /**
     *  Indicates the expected accuracy of the device PTP clock when it is the grandmaster, or in the event it becomes the grandmaster.
     *
     *  The following string values might be valid for this feature:
     *  - \b Within25ns (Display string: 'Within 25ns'): Within 25ns
     *  - \b Within100ns (Display string: 'Within 100ns'): Within 100ns
     *  - \b Within250ns (Display string: 'Within 250ns'): Within 250ns
     *  - \b Within1us (Display string: 'Within 1us'): Within 1us
     *  - \b Within2p5us (Display string: 'Within 2p 5us'): Within 2p 5us
     *  - \b Within10us (Display string: 'Within 10us'): Within 10us
     *  - \b Within25us (Display string: 'Within 25us'): Within 25us
     *  - \b Within100us (Display string: 'Within 100us'): Within 100us
     *  - \b Within250us (Display string: 'Within 250us'): Within 250us
     *  - \b Within1ms (Display string: 'Within 1ms'): Within 1ms
     *  - \b Within2p5ms (Display string: 'Within 2p 5ms'): Within 2p 5ms
     *  - \b Within10ms (Display string: 'Within 10ms'): Within 10ms
     *  - \b Within25ms (Display string: 'Within 25ms'): Within 25ms
     *  - \b Within100ms (Display string: 'Within 100ms'): Within 100ms
     *  - \b Within250ms (Display string: 'Within 250ms'): Within 250ms
     *  - \b Within1s (Display string: 'Within 1s'): Within 1s
     *  - \b Within10s (Display string: 'Within 10s'): Within 10s
     *  - \b GreaterThan10s (Display string: 'Greater Than 10s'): Greater Than 10s
     *  - \b AlternatePTPProfile (Display string: 'Alternate PTP Profile'): Alternate PTP Profile
     *  - \b Unknown (Display string: 'Unknown'): Unknown
     *  - \b Reserved (Display string: 'Reserved'): Reserved
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 ptpClockAccuracy;
    /// \brief A method object. Latches the current values from the device's PTP clock data set.
    /**
     *  Latches the current values from the device's PTP clock data set.
     */
    Method ptpDataSetLatch;
    /// \brief An enumerated integer property. Returns the latched state of the PTP clock.
    /**
     *  Returns the latched state of the PTP clock.
     *
     *  The following string values might be valid for this feature:
     *  - \b Initializing (Display string: 'Initializing'): Initializing
     *  - \b Faulty (Display string: 'Faulty'): Faulty
     *  - \b Disabled (Display string: 'Disabled'): Disabled
     *  - \b Listening (Display string: 'Listening'): Listening
     *  - \b PreMaster (Display string: 'Pre Master'): Pre Master
     *  - \b Master (Display string: 'Master'): Master
     *  - \b Passive (Display string: 'Passive'): Passive
     *  - \b Uncalibrated (Display string: 'Uncalibrated'): Uncalibrated
     *  - \b Slave (Display string: 'Slave'): Slave
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 ptpStatus;
    /// \brief An enumerated integer property. Returns the latched state of the clock servo.
    /**
     *  Returns the latched state of the clock servo. When the servo is in a locked state, the value returned is 'Locked'. When the servo is in a non-locked state, a device-specific value can be returned to give specific information. If no device-specific value is available to describe the current state of the clock servo, the value should be 'Unknown'.
     *
     *  The following string values might be valid for this feature:
     *  - \b Unknown (Display string: 'Unknown'): Unknown
     *  - \b Locked (Display string: 'Locked'): Locked
     *  - \b Device-Specific (Display string: 'Device - Specific'): Device - Specific
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 ptpServoStatus;
    /// \brief An integer property. Returns the latched offset from the PTP master clock in nanoseconds.
    /**
     *  Returns the latched offset from the PTP master clock in nanoseconds.
     */
    PropertyI64 ptpOffsetFromMaster;
    /// \brief An integer property. Returns the latched clock ID of the PTP device.
    /**
     *  Returns the latched clock ID of the PTP device.
     */
    PropertyI64 ptpClockID;
    /// \brief An integer property. Returns the latched parent clock ID of the PTP device.
    /**
     *  Returns the latched parent clock ID of the PTP device. The parent clock ID is the clock ID of the current master clock.
     */
    PropertyI64 ptpParentClockID;
    /// \brief An integer property. Returns the latched grandmaster clock ID of the PTP device.
    /**
     *  Returns the latched grandmaster clock ID of the PTP device. The grandmaster clock ID is the clock ID of the current grandmaster clock.
     */
    PropertyI64 ptpGrandmasterClockID;
    /// \brief An integer property. This feature is deprecated (See DeviceTLVersionMajor).
    /**
     *  \deprecated
     *  This feature is deprecated (See DeviceTLVersionMajor). It was representing the major version of the specification.
     */
    PropertyI64 gevVersionMajor;
    /// \brief An integer property. This feature is deprecated (See DeviceTLVersionMinor).
    /**
     *  \deprecated
     *  This feature is deprecated (See DeviceTLVersionMinor). It was representing the minor version of the specification.
     */
    PropertyI64 gevVersionMinor;
    /// \brief A boolean property. This feature is deprecated (See DeviceRegistersEndianness).
    /**
     *  \deprecated
     *  This feature is deprecated (See DeviceRegistersEndianness). It was representing the Endianness of the device registers.
     */
    PropertyIBoolean gevDeviceModeIsBigEndian;
    /// \brief An enumerated integer property. This feature is deprecated (See DeviceType).
    /**
     *  \deprecated
     *  This feature is deprecated (See DeviceType). It was representing the class of the device.
     *
     *  The following string values might be valid for this feature:
     *  - \b Transmitter (Display string: 'Transmitter'): Transmitter
     *  - \b Receiver (Display string: 'Receiver'): Receiver
     *  - \b Transceiver (Display string: 'Transceiver'): Transceiver
     *  - \b Peripheral (Display string: 'Peripheral'): Peripheral
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 gevDeviceClass;
    /// \brief An enumerated integer property. This feature is deprecated (See DeviceCharacterSet).
    /**
     *  \deprecated
     *  This feature is deprecated (See DeviceCharacterSet). It was representing the character set used by all the strings of the device.
     *
     *  The following string values might be valid for this feature:
     *  - \b UTF8 (Display string: 'UTF 8'): UTF 8
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 gevDeviceModeCharacterSet;
    /// \brief An enumerated integer property. Controls the principal physical link configuration to use on next restart/power-up of the device.
    /**
     *  Controls the principal physical link configuration to use on next restart/power-up of the device.
     *
     *  The following string values might be valid for this feature:
     *  - \b SingleLink (Display string: 'Single Link'): Single Link
     *  - \b MultiLink (Display string: 'Multi Link'): Multi Link
     *  - \b StaticLAG (Display string: 'Static LAG'): Static LAG
     *  - \b DynamicLAG (Display string: 'Dynamic LAG'): Dynamic LAG
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 gevPhysicalLinkConfiguration;
    /// \brief An enumerated integer property. Indicates the current physical link configuration of the device.
    /**
     *  Indicates the current physical link configuration of the device.
     *
     *  The following string values might be valid for this feature:
     *  - \b SingleLink (Display string: 'Single Link'): Single Link
     *  - \b MultiLink (Display string: 'Multi Link'): Multi Link
     *  - \b StaticLAG (Display string: 'Static LAG'): Static LAG
     *  - \b DynamicLAG (Display string: 'Dynamic LAG'): Dynamic LAG
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 gevCurrentPhysicalLinkConfiguration;
    /// \brief An integer property. Indicates the current number of active logical links.
    /**
     *  Indicates the current number of active logical links.
     */
    PropertyI64 gevActiveLinkCount;
    /// \brief An enumerated integer property. Selects the GEV option to interrogate for existing support.
    /**
     *  Selects the GEV option to interrogate for existing support.
     *
     *  The following string values might be valid for this feature:
     *  - \b SingleLink (Display string: 'Single Link'): Single Link
     *  - \b MultiLink (Display string: 'Multi Link'): Multi Link
     *  - \b StaticLAG (Display string: 'Static LAG'): Static LAG
     *  - \b DynamicLAG (Display string: 'Dynamic LAG'): Dynamic LAG
     *  - \b PAUSEFrameReception (Display string: 'PAUSE Frame Reception'): PAUSE Frame Reception
     *  - \b PAUSEFrameGeneration (Display string: 'PAUSE Frame Generation'): PAUSE Frame Generation
     *  - \b IPConfigurationLLA (Display string: 'IP Configuration LLA'): IP Configuration LLA
     *  - \b IPConfigurationDHCP (Display string: 'IP Configuration DHCP'): IP Configuration DHCP
     *  - \b IPConfigurationPersistentIP (Display string: 'IP Configuration Persistent IP'): IP Configuration Persistent IP
     *  - \b StreamChannelSourceSocket (Display string: 'Stream Channel Source Socket'): Stream Channel Source Socket
     *  - \b StandardIDMode (Display string: 'Standard ID Mode'): Standard ID Mode
     *  - \b MessageChannelSourceSocket (Display string: 'Message Channel Source Socket'): Message Channel Source Socket
     *  - \b CommandsConcatenation (Display string: 'Commands Concatenation'): Commands Concatenation
     *  - \b WriteMem (Display string: 'Write Mem'): Write Mem
     *  - \b PacketResend (Display string: 'Packet Resend'): Packet Resend
     *  - \b Event (Display string: 'Event'): Event
     *  - \b EventData (Display string: 'Event Data'): Event Data
     *  - \b PendingAck (Display string: 'Pending Ack'): Pending Ack
     *  - \b IEEE1588 (Display string: 'IEEE 1588'): IEEE 1588
     *  - \b Ptp (Display string: 'Ptp'): Ptp
     *  - \b Action (Display string: 'Action'): Action
     *  - \b UnconditionalAction (Display string: 'Unconditional Action'): Unconditional Action
     *  - \b ScheduledAction (Display string: 'Scheduled Action'): Scheduled Action
     *  - \b PrimaryApplicationSwitchover (Display string: 'Primary Application Switchover'): Primary Application Switchover
     *  - \b ExtendedStatusCodes (Display string: 'Extended Status Codes'): Extended Status Codes
     *  - \b ExtendedStatusCodesVersion2_0 (Display string: 'Extended Status Codes Version 2 0'): Extended Status Codes Version 2 0
     *  - \b DiscoveryAckDelay (Display string: 'Discovery Ack Delay'): Discovery Ack Delay
     *  - \b DiscoveryAckDelayWritable (Display string: 'Discovery Ack Delay Writable'): Discovery Ack Delay Writable
     *  - \b TestData (Display string: 'Test Data'): Test Data
     *  - \b ManifestTable (Display string: 'Manifest Table'): Manifest Table
     *  - \b CCPApplicationSocket (Display string: 'CCP Application Socket'): CCP Application Socket
     *  - \b LinkSpeed (Display string: 'Link Speed'): Link Speed
     *  - \b HeartbeatDisable (Display string: 'Heartbeat Disable'): Heartbeat Disable
     *  - \b SerialNumber (Display string: 'Serial Number'): Serial Number
     *  - \b UserDefinedName (Display string: 'User Defined Name'): User Defined Name
     *  - \b StreamChannel0BigAndLittleEndian (Display string: 'Stream Channel 0 Big And Little Endian'): Stream Channel 0 Big And Little Endian
     *  - \b StreamChannel0IPReassembly (Display string: 'Stream Channel 0 IP Reassembly'): Stream Channel 0 IP Reassembly
     *  - \b StreamChannel0MultiZone (Display string: 'Stream Channel 0 Multi Zone'): Stream Channel 0 Multi Zone
     *  - \b StreamChannel0PacketResendDestination (Display string: 'Stream Channel 0 Packet Resend Destination'): Stream Channel 0 Packet Resend Destination
     *  - \b StreamChannel0AllInTransmission (Display string: 'Stream Channel 0 All In Transmission'): Stream Channel 0 All In Transmission
     *  - \b StreamChannel0UnconditionalStreaming (Display string: 'Stream Channel 0 Unconditional Streaming'): Stream Channel 0 Unconditional Streaming
     *  - \b StreamChannel0ExtendedChunkData (Display string: 'Stream Channel 0 Extended Chunk Data'): Stream Channel 0 Extended Chunk Data
     *  - \b StreamChannel1BigAndLittleEndian (Display string: 'Stream Channel 1 Big And Little Endian'): Stream Channel 1 Big And Little Endian
     *  - \b StreamChannel1IPReassembly (Display string: 'Stream Channel 1 IP Reassembly'): Stream Channel 1 IP Reassembly
     *  - \b StreamChannel1MultiZone (Display string: 'Stream Channel 1 Multi Zone'): Stream Channel 1 Multi Zone
     *  - \b StreamChannel1PacketResendDestination (Display string: 'Stream Channel 1 Packet Resend Destination'): Stream Channel 1 Packet Resend Destination
     *  - \b StreamChannel1AllInTransmission (Display string: 'Stream Channel 1 All In Transmission'): Stream Channel 1 All In Transmission
     *  - \b StreamChannel1UnconditionalStreaming (Display string: 'Stream Channel 1 Unconditional Streaming'): Stream Channel 1 Unconditional Streaming
     *  - \b StreamChannel1ExtendedChunkData (Display string: 'Stream Channel 1 Extended Chunk Data'): Stream Channel 1 Extended Chunk Data
     *  - \b StreamChannel2BigAndLittleEndian (Display string: 'Stream Channel 2 Big And Little Endian'): Stream Channel 2 Big And Little Endian
     *  - \b StreamChannel2IPReassembly (Display string: 'Stream Channel 2 IP Reassembly'): Stream Channel 2 IP Reassembly
     *  - \b StreamChannel2MultiZone (Display string: 'Stream Channel 2 Multi Zone'): Stream Channel 2 Multi Zone
     *  - \b StreamChannel2PacketResendDestination (Display string: 'Stream Channel 2 Packet Resend Destination'): Stream Channel 2 Packet Resend Destination
     *  - \b StreamChannel2AllInTransmission (Display string: 'Stream Channel 2 All In Transmission'): Stream Channel 2 All In Transmission
     *  - \b StreamChannel2UnconditionalStreaming (Display string: 'Stream Channel 2 Unconditional Streaming'): Stream Channel 2 Unconditional Streaming
     *  - \b StreamChannel2ExtendedChunkData (Display string: 'Stream Channel 2 Extended Chunk Data'): Stream Channel 2 Extended Chunk Data
     *  - \b StreamChannel\#3\#ExtendedChunkData (Display string: 'Stream Channel \#3\# Extended Chunk Data'): Stream Channel \#3\# Extended Chunk Data
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 gevSupportedOptionSelector;
    /// \brief A boolean property. Returns if the selected GEV option is supported.
    /**
     *  Returns if the selected GEV option is supported.
     */
    PropertyIBoolean gevSupportedOption;
    /// \brief An integer property. Selects which logical link to control.
    /**
     *  Selects which logical link to control.
     */
    PropertyI64 gevInterfaceSelector;
    /// \brief An integer property. This feature is deprecated (See DeviceLinkSpeed).
    /**
     *  \deprecated
     *  This feature is deprecated (See DeviceLinkSpeed). It was representing the speed of transmission negotiated by the given logical link.
     */
    PropertyI64 gevLinkSpeed;
    /// \brief An integer property. MAC address of the logical link.
    /**
     *  MAC address of the logical link.
     */
    PropertyI64 gevMACAddress;
    /// \brief A boolean property. Controls whether incoming PAUSE Frames are handled on the given logical link.
    /**
     *  Controls whether incoming PAUSE Frames are handled on the given logical link.
     */
    PropertyIBoolean gevPAUSEFrameReception;
    /// \brief A boolean property. Controls whether PAUSE Frames can be generated on the given logical link.
    /**
     *  Controls whether PAUSE Frames can be generated on the given logical link.
     */
    PropertyIBoolean gevPAUSEFrameTransmission;
    /// \brief A boolean property. Controls whether the Link Local Address IP configuration scheme is activated on the given logical link.
    /**
     *  Controls whether the Link Local Address IP configuration scheme is activated on the given logical link.
     */
    PropertyIBoolean gevCurrentIPConfigurationLLA;
    /// \brief A boolean property. Controls whether the DHCP IP configuration scheme is activated on the given logical link.
    /**
     *  Controls whether the DHCP IP configuration scheme is activated on the given logical link.
     */
    PropertyIBoolean gevCurrentIPConfigurationDHCP;
    /// \brief A boolean property. Controls whether the PersistentIP configuration scheme is activated on the given logical link.
    /**
     *  Controls whether the PersistentIP configuration scheme is activated on the given logical link.
     */
    PropertyIBoolean gevCurrentIPConfigurationPersistentIP;
    /// \brief An integer property. Reports the IP address for the given logical link.
    /**
     *  Reports the IP address for the given logical link.
     */
    PropertyI64 gevCurrentIPAddress;
    /// \brief An integer property. Reports the subnet mask of the given logical link.
    /**
     *  Reports the subnet mask of the given logical link.
     */
    PropertyI64 gevCurrentSubnetMask;
    /// \brief An integer property. Reports the default gateway IP address of the given logical link.
    /**
     *  Reports the default gateway IP address of the given logical link.
     */
    PropertyI64 gevCurrentDefaultGateway;
    /// \brief An enumerated integer property. Reports the current IP configuration status.
    /**
     *  Reports the current IP configuration status.
     *
     *  The following string values might be valid for this feature:
     *  - \b None (Display string: 'None'): None
     *  - \b PersistentIP (Display string: 'Persistent IP'): Persistent IP
     *  - \b DHCP (Display string: 'DHCP'): DHCP
     *  - \b LLA (Display string: 'LLA'): LLA
     *  - \b ForceIP (Display string: 'Force IP'): Force IP
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 gevIPConfigurationStatus;
    /// \brief A string property. Indicates the first URL to the GenICam XML device description file.
    /**
     *  Indicates the first URL to the GenICam XML device description file. The First URL is used as the first choice by the application to retrieve the GenICam XML device description file.
     */
    PropertyS gevFirstURL;
    /// \brief A string property. Indicates the second URL to the GenICam XML device description file.
    /**
     *  Indicates the second URL to the GenICam XML device description file. This URL is an alternative if the application was unsuccessful to retrieve the device description file using the first URL.
     */
    PropertyS gevSecondURL;
    /// \brief An integer property. This feature is deprecated (See DeviceLinkSelector).
    /**
     *  \deprecated
     *  This feature is deprecated (See DeviceLinkSelector). It was representing the number of logical links supported by this device.
     */
    PropertyI64 gevNumberOfInterfaces;
    /// \brief An integer property. Controls the Persistent IP address for this logical link.
    /**
     *  Controls the Persistent IP address for this logical link. It is only used when the device boots with the Persistent IP configuration scheme.
     */
    PropertyI64 gevPersistentIPAddress;
    /// \brief An integer property. Controls the Persistent subnet mask associated with the Persistent IP address on this logical link.
    /**
     *  Controls the Persistent subnet mask associated with the Persistent IP address on this logical link. It is only used when the device boots with the Persistent IP configuration scheme.
     */
    PropertyI64 gevPersistentSubnetMask;
    /// \brief An integer property. Controls the persistent default gateway for this logical link.
    /**
     *  Controls the persistent default gateway for this logical link. It is only used when the device boots with the Persistent IP configuration scheme.
     */
    PropertyI64 gevPersistentDefaultGateway;
    /// \brief An integer property. This feature is deprecated (See DeviceEventChannelCount).
    /**
     *  \deprecated
     *  This feature is deprecated (See DeviceEventChannelCount). It was representing the number of message channels supported by this device.
     */
    PropertyI64 gevMessageChannelCount;
    /// \brief An integer property. This feature is deprecated (See DeviceStreamChannelCount).
    /**
     *  \deprecated
     *  This feature is deprecated (See DeviceStreamChannelCount). It was representing the number of stream channels supported by this device.
     */
    PropertyI64 gevStreamChannelCount;
    /// \brief An integer property. This feature is deprecated (See DeviceLinkHeartbeatTimeout).
    /**
     *  \deprecated
     *  This feature is deprecated (See DeviceLinkHeartbeatTimeout). It was controlling the current heartbeat timeout in milliseconds.
     */
    PropertyI64 gevHeartbeatTimeout;
    /// \brief An integer property. This feature is deprecated (See the increment of the TimestampLatchValue feature).
    /**
     *  \deprecated
     *  This feature is deprecated (See the increment of the TimestampLatchValue feature). It was used to indicate the number of timestamp ticks in 1 second (frequency in Hz). If PTP is used, this feature must return 1,000,000,000 (1 GHz).
     */
    PropertyI64 gevTimestampTickFrequency;
    /// \brief A method object. This feature is deprecated (See TimestampLatch).
    /**
     *  \deprecated
     *  This feature is deprecated (See TimestampLatch). It was used to latche the current timestamp counter into GevTimestampValue.
     */
    Method gevTimestampControlLatch;
    /// \brief A method object. This feature is deprecated (See TimestampReset).
    /**
     *  \deprecated
     *  This feature is deprecated (See TimestampReset). It was used to reset the timestamp counter to 0. This feature is not available or as no effect when  PTP is used.
     */
    Method gevTimestampControlReset;
    /// \brief An integer property. This feature is deprecated (See TimestampLatchValue).
    /**
     *  \deprecated
     *  This feature is deprecated (See TimestampLatchValue). It was used to return the latched 64-bit value of the timestamp counter.
     */
    PropertyI64 gevTimestampValue;
    /// \brief An integer property. Indicates the maximum randomized delay the device will wait to acknowledge a discovery command.
    /**
     *  Indicates the maximum randomized delay the device will wait to acknowledge a discovery command.
     */
    PropertyI64 gevDiscoveryAckDelay;
    /// \brief A boolean property. This feature is deprecated (See PtpEnable).
    /**
     *  \deprecated
     *  This feature is deprecated (See PtpEnable). It was used to enable the IEEE 1588 Precision Time Protocol to control the timestamp register.
     */
    PropertyIBoolean gevIEEE1588;
    /// \brief An enumerated integer property. This feature is deprecated (See PtpClockAccurarcy).
    /**
     *  \deprecated
     *  This feature is deprecated (See PtpClockAccurarcy). It was used to indicate the expected accuracy of the device clock when it is the grandmaster, or in the event it becomes the grandmaster.
     *
     *  The following string values might be valid for this feature:
     *  - \b Within25ns (Display string: 'Within 25ns'): Within 25ns
     *  - \b Within100ns (Display string: 'Within 100ns'): Within 100ns
     *  - \b Within250ns (Display string: 'Within 250ns'): Within 250ns
     *  - \b Within1us (Display string: 'Within 1us'): Within 1us
     *  - \b Within2p5u (Display string: 'Within 2p 5u'): Within 2p 5u
     *  - \b Within10us (Display string: 'Within 10us'): Within 10us
     *  - \b Within25us (Display string: 'Within 25us'): Within 25us
     *  - \b Within100us (Display string: 'Within 100us'): Within 100us
     *  - \b Within250us (Display string: 'Within 250us'): Within 250us
     *  - \b Within1ms (Display string: 'Within 1ms'): Within 1ms
     *  - \b Within2p5ms (Display string: 'Within 2p 5ms'): Within 2p 5ms
     *  - \b Within10ms (Display string: 'Within 10ms'): Within 10ms
     *  - \b Within25ms (Display string: 'Within 25ms'): Within 25ms
     *  - \b Within100ms (Display string: 'Within 100ms'): Within 100ms
     *  - \b Within250ms (Display string: 'Within 250ms'): Within 250ms
     *  - \b Within1s (Display string: 'Within 1s'): Within 1s
     *  - \b Within10s (Display string: 'Within 10s'): Within 10s
     *  - \b GreaterThan10s (Display string: 'Greater Than 10s'): Greater Than 10s
     *  - \b AlternatePTPProfile (Display string: 'Alternate PTP Profile'): Alternate PTP Profile
     *  - \b Unknown (Display string: 'Unknown'): Unknown
     *  - \b Reserved (Display string: 'Reserved'): Reserved
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 gevIEEE1588ClockAccuracy;
    /// \brief An enumerated integer property. This feature is deprecated (See PtpStatus).
    /**
     *  \deprecated
     *  This feature is deprecated (See PtpStatus). It was used to Provide the status of the IEEE 1588 clock.
     *
     *  The following string values might be valid for this feature:
     *  - \b Initializing (Display string: 'Initializing'): Initializing
     *  - \b Faulty (Display string: 'Faulty'): Faulty
     *  - \b Disabled (Display string: 'Disabled'): Disabled
     *  - \b Listening (Display string: 'Listening'): Listening
     *  - \b PreMaster (Display string: 'Pre Master'): Pre Master
     *  - \b Master (Display string: 'Master'): Master
     *  - \b Passive (Display string: 'Passive'): Passive
     *  - \b Uncalibrated (Display string: 'Uncalibrated'): Uncalibrated
     *  - \b Slave (Display string: 'Slave'): Slave
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 gevIEEE1588Status;
    /// \brief An enumerated integer property. Selects the GigE Vision version to control extended status codes for.
    /**
     *  Selects the GigE Vision version to control extended status codes for.
     *
     *  The following string values might be valid for this feature:
     *  - \b Version1_1 (Display string: 'Version 1 1'): Version 1 1
     *  - \b Version2_0 (Display string: 'Version 2 0'): Version 2 0
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 gevGVCPExtendedStatusCodesSelector;
    /// \brief A boolean property. Enables the generation of extended status codes.
    /**
     *  Enables the generation of extended status codes.
     */
    PropertyIBoolean gevGVCPExtendedStatusCodes;
    /// \brief A boolean property. Enables the generation of PENDING_ACK.
    /**
     *  Enables the generation of PENDING_ACK.
     */
    PropertyIBoolean gevGVCPPendingAck;
    /// \brief A boolean property. This feature is deprecated (See DeviceLinkHeartbeatMode).
    /**
     *  \deprecated
     *  This feature is deprecated (See DeviceLinkHeartbeatMode). It was used to disable the GVCP heartbeat.
     */
    PropertyIBoolean gevGVCPHeartbeatDisable;
    /// \brief An integer property. This feature is deprecated (See DeviceLinkCommandTimeout).
    /**
     *  \deprecated
     *  This feature is deprecated (See DeviceLinkCommandTimeout). It was used to indicate the longest GVCP command execution time before a device returns a PENDING_ACK.
     */
    PropertyI64 gevGVCPPendingTimeout;
    /// \brief An integer property. Controls the key to use to authenticate primary application switchover requests.
    /**
     *  Controls the key to use to authenticate primary application switchover requests.
     */
    PropertyI64 gevPrimaryApplicationSwitchoverKey;
    /// \brief An enumerated integer property. Enables the extended IDs mode.
    /**
     *  Enables the extended IDs mode.
     *
     *  The following string values might be valid for this feature:
     *  - \b Off (Display string: 'Off'): Off
     *  - \b On (Display string: 'On'): On
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 gevGVSPExtendedIDMode;
    /// \brief An enumerated integer property. Controls the device access privilege of an application.
    /**
     *  Controls the device access privilege of an application.
     *
     *  The following string values might be valid for this feature:
     *  - \b OpenAccess (Display string: 'Open Access'): Open Access
     *  - \b ExclusiveAccess (Display string: 'Exclusive Access'): Exclusive Access
     *  - \b ControlAccess (Display string: 'Control Access'): Control Access
     *  - \b ControlAccessSwitchoverActive (Display string: 'Control Access Switchover Active'): Control Access Switchover Active
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 gevCCP;
    /// \brief An integer property. Returns the UDP source port of the primary application.
    /**
     *  Returns the UDP source port of the primary application.
     */
    PropertyI64 gevPrimaryApplicationSocket;
    /// \brief An integer property. Returns the address of the primary application.
    /**
     *  Returns the address of the primary application.
     */
    PropertyI64 gevPrimaryApplicationIPAddress;
    /// \brief An integer property. Controls the port to which the device must send messages.
    /**
     *  Controls the port to which the device must send messages. Setting this value to 0 closes the message channel.
     */
    PropertyI64 gevMCPHostPort;
    /// \brief An integer property. Controls the destination IP address for the message channel.
    /**
     *  Controls the destination IP address for the message channel.
     */
    PropertyI64 gevMCDA;
    /// \brief An integer property. Provides the transmission timeout value in milliseconds.
    /**
     *  Provides the transmission timeout value in milliseconds.
     */
    PropertyI64 gevMCTT;
    /// \brief An integer property. Controls the number of retransmissions allowed when a message channel message times out.
    /**
     *  Controls the number of retransmissions allowed when a message channel message times out.
     */
    PropertyI64 gevMCRC;
    /// \brief An integer property. This feature indicates the source port for the message channel.
    /**
     *  This feature indicates the source port for the message channel.
     */
    PropertyI64 gevMCSP;
    /// \brief An integer property. Selects the stream channel to control.
    /**
     *  Selects the stream channel to control.
     */
    PropertyI64 gevStreamChannelSelector;
    /// \brief A boolean property. Enables the alternate IP destination for stream packets resent due to a packet resend request.
    /**
     *  Enables the alternate IP destination for stream packets resent due to a packet resend request. When True, the source IP address provided in the packet resend command packet is used. When False, the value set in the GevSCDA[GevStreamChannelSelector] feature is used.
     */
    PropertyIBoolean gevSCCFGPacketResendDestination;
    /// \brief A boolean property. Enables the selected GVSP transmitter to use the single packet per data block All-in Transmission mode.
    /**
     *  Enables the selected GVSP transmitter to use the single packet per data block All-in Transmission mode.
     */
    PropertyIBoolean gevSCCFGAllInTransmission;
    /// \brief A boolean property. Enables the camera to continue to stream, for this stream channel, if its control channel is closed or regardless of the reception of any ICMP messages (such as destination unreachable messages).
    /**
     *  Enables the camera to continue to stream, for this stream channel, if its control channel is closed or regardless of the reception of any ICMP messages (such as destination unreachable messages).
     */
    PropertyIBoolean gevSCCFGUnconditionalStreaming;
    /// \brief A boolean property. Enables cameras to use the extended chunk data payload type for this stream channel.
    /**
     *  Enables cameras to use the extended chunk data payload type for this stream channel.
     */
    PropertyIBoolean gevSCCFGExtendedChunkData;
    /// \brief An enumerated integer property. This feature is deprecated (See DeviceStreamChannelType).
    /**
     *  \deprecated
     *  This feature is deprecated (See DeviceStreamChannelType). It was used to report the direction of the stream channel.
     *
     *  The following string values might be valid for this feature:
     *  - \b Transmitter (Display string: 'Transmitter'): Transmitter
     *  - \b Receiver (Display string: 'Receiver'): Receiver
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 gevSCPDirection;
    /// \brief An integer property. Index of the logical link to use.
    /**
     *  Index of the logical link to use.
     */
    PropertyI64 gevSCPInterfaceIndex;
    /// \brief An integer property. Controls the port of the selected channel to which a GVSP transmitter must send data stream or the port from which a GVSP receiver may receive data stream.
    /**
     *  Controls the port of the selected channel to which a GVSP transmitter must send data stream or the port from which a GVSP receiver may receive data stream. Setting this value to 0 closes the stream channel.
     */
    PropertyI64 gevSCPHostPort;
    /// \brief A boolean property. Sends a test packet.
    /**
     *  Sends a test packet. When this feature is set, the device will fire one test packet.
     */
    PropertyIBoolean gevSCPSFireTestPacket;
    /// \brief A boolean property. The state of this feature is copied into the 'do not fragment' bit of IP header of each stream packet.
    /**
     *  The state of this feature is copied into the 'do not fragment' bit of IP header of each stream packet. It can be used by the application to prevent IP fragmentation of packets on the stream channel.
     */
    PropertyIBoolean gevSCPSDoNotFragment;
    /// \brief A boolean property. This feature is deprecated (See DeviceStreamChannelEndianness).
    /**
     *  \deprecated
     *  This feature is deprecated (See DeviceStreamChannelEndianness). It was used to control the endianness of multi-byte pixel data for this stream.
     */
    PropertyIBoolean gevSCPSBigEndian;
    /// \brief An integer property. This GigE Vision specific feature corresponds to DeviceStreamChannelPacketSize and should be kept in sync with it.
    /**
     *  This GigE Vision specific feature corresponds to DeviceStreamChannelPacketSize and should be kept in sync with it. It specifies the stream packet size, in bytes, to send on the selected channel for a GVSP transmitter or specifies the maximum packet size supported by a GVSP receiver.
     */
    PropertyI64 gevSCPSPacketSize;
    /// \brief An integer property. Controls the delay (in GEV timestamp counter unit) to insert between each packet for this stream channel.
    /**
     *  Controls the delay (in GEV timestamp counter unit) to insert between each packet for this stream channel. This can be used as a crude flow-control mechanism if the application or the network infrastructure cannot keep up with the packets coming from the device.
     */
    PropertyI64 gevSCPD;
    /// \brief An integer property. Controls the destination IP address of the selected stream channel to which a GVSP transmitter must send data stream or the destination IP address from which a GVSP receiver may receive data stream.
    /**
     *  Controls the destination IP address of the selected stream channel to which a GVSP transmitter must send data stream or the destination IP address from which a GVSP receiver may receive data stream.
     */
    PropertyI64 gevSCDA;
    /// \brief An integer property. Indicates the source port of the stream channel.
    /**
     *  Indicates the source port of the stream channel.
     */
    PropertyI64 gevSCSP;
    /// \brief An integer property. Reports the number of zones per block transmitted on the selected stream channel.
    /**
     *  Reports the number of zones per block transmitted on the selected stream channel.
     */
    PropertyI64 gevSCZoneCount;
    /// \brief An integer property. Reports the transmission direction of each zone transmitted on the selected stream channel.
    /**
     *  Reports the transmission direction of each zone transmitted on the selected stream channel.
     */
    PropertyI64 gevSCZoneDirectionAll;
    /// \brief A boolean property. Controls whether the selected stream channel multi-zone configuration is locked.
    /**
     *  Controls whether the selected stream channel multi-zone configuration is locked. When locked, the GVSP transmitter is not allowed to change the number of zones and their direction during block acquisition and transmission.
     */
    PropertyIBoolean gevSCZoneConfigurationLock;
    /// \brief An integer property. Reports the number of transmitted PAUSE frames.
    /**
     *  Reports the number of transmitted PAUSE frames.
     */
    PropertyI64 aPAUSEMACCtrlFramesTransmitted;
    /// \brief An integer property. Reports the number of received PAUSE frames.
    /**
     *  Reports the number of received PAUSE frames.
     */
    PropertyI64 aPAUSEMACCtrlFramesReceived;
    /// \brief An enumerated integer property. This Camera Link specific feature describes the configuration used by the camera.
    /**
     *  This Camera Link specific feature describes the configuration used by the camera. It helps especially when a camera is capable of operation in a non-standard configuration, and when the features PixelSize, SensorDigitizationTaps, and DeviceTapGeometry do not provide enough information for interpretation of the image data provided by the camera.
     *
     *  The following string values might be valid for this feature:
     *  - \b Base (Display string: 'Base'): Standard base configuration described by the Camera Link standard.
     *  - \b Medium (Display string: 'Medium'): Standard medium configuration described by the Camera Link standard.
     *  - \b Full (Display string: 'Full'): Standard full configuration described by the Camera Link standard.
     *  - \b DualBase (Display string: 'Dual Base'): The camera streams the data from multiple taps (that do not fit in the standard base configuration) through two Camera Link base ports. It is responsibility of the application or frame grabber to reconstruct the full image. Only one of the ports (fixed) serves as the 'master' for serial communication and triggering.
     *  - \b EightyBit (Display string: 'Eighty Bit'): Standard 80-bit configuration with 10 taps of 8 bits or 8 taps of 10 bits, as described by the Camera Link standard.
     *  - \b Deca (Display string: 'Deca'): This enumeration entry is deprecated. It was used for Deca configuration with 10 taps of 8-bit. Use EightyBit instead.
     *  - \b Deca (Display string: 'Deca'): This enumeration entry is deprecated. It was used for Deca configuration with 10 taps of 8-bit. Use EightyBit instead.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 clConfiguration;
    /// \brief An enumerated integer property. This Camera Link specific feature describes the time multiplexing of the camera link connection to transfer more than the configuration allows, in one single clock.
    /**
     *  This Camera Link specific feature describes the time multiplexing of the camera link connection to transfer more than the configuration allows, in one single clock.
     *
     *  The following string values might be valid for this feature:
     *  - \b One (Display string: 'One'): One
     *  - \b Two (Display string: 'Two'): Two
     *  - \b Three (Display string: 'Three'): Three
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 clTimeSlotsCount;
    /// \brief An enumerated integer property. This feature indicates the current and active Link configuration used by the Device.
    /**
     *  This feature indicates the current and active Link configuration used by the Device.
     *
     *  The following string values might be valid for this feature:
     *  - \b None (Display string: 'None'): The Link configuration of the Device is unknown. Either the configuration operation has failed or there is nothing connected.
     *  - \b Pending (Display string: 'Pending'): The Device is in the process of configuring the Link. The Link cannot be used yet.
     *  - \b CXP1_X1 (Display string: 'CXP 1 X 1'): 1 Connection operating at CXP-1 speed (1.25 Gbps).
     *  - \b CXP2_X1 (Display string: 'CXP 2 X 1'): 1 Connection operating at CXP-2 speed (2.50 Gbps).
     *  - \b CXP3_X1 (Display string: 'CXP 3 X 1'): 1 Connection operating at CXP-3 speed (3.125 Gbps).
     *  - \b CXP5_X1 (Display string: 'CXP 5 X 1'): 1 Connection operating at CXP-5 speed (5.00 Gbps).
     *  - \b CXP6_X1 (Display string: 'CXP 6 X 1'): 1 Connection operating at CXP-6 speed (6.25 Gbps).
     *  - \b CXP10_X1 (Display string: 'CXP 10 X 1'): 1 Connection operating at CXP-10 speed (10.00 Gbps).
     *  - \b CXP12_X1 (Display string: 'CXP 12 X 1'): 1 Connection operating at CXP-12 speed (12.50 Gbps).
     *  - \b CXP1_X2 (Display string: 'CXP 1 X 2'): 2 Connections operating at CXP-1 speed (1.25 Gbps).
     *  - \b CXP2_X2 (Display string: 'CXP 2 X 2'): 2 Connections operating at CXP-2 speed (2.50 Gbps).
     *  - \b CXP3_X2 (Display string: 'CXP 3 X 2'): 2 Connections operating at CXP-3 speed (3.125 Gbps).
     *  - \b CXP5_X2 (Display string: 'CXP 5 X 2'): 2 Connections operating at CXP-5 speed (5.00 Gbps).
     *  - \b CXP6_X2 (Display string: 'CXP 6 X 2'): 2 Connections operating at CXP-6 speed (6.25 Gbps).
     *  - \b CXP10_X2 (Display string: 'CXP 10 X 2'): 2 Connections operating at CXP-10 speed (10.00 Gbps).
     *  - \b CXP12_X2 (Display string: 'CXP 12 X 2'): 2 Connections operating at CXP-12 speed (12.50 Gbps).
     *  - \b CXP1_X3 (Display string: 'CXP 1 X 3'): 3 Connections operating at CXP-1 speed (1.25 Gbps).
     *  - \b CXP2_X3 (Display string: 'CXP 2 X 3'): 3 Connections operating at CXP-2 speed (2.50 Gbps).
     *  - \b CXP3_X3 (Display string: 'CXP 3 X 3'): 3 Connections operating at CXP-3 speed (3.125 Gbps).
     *  - \b CXP5_X3 (Display string: 'CXP 5 X 3'): 3 Connections operating at CXP-5 speed (5.00 Gbps).
     *  - \b CXP6_X3 (Display string: 'CXP 6 X 3'): 3 Connections operating at CXP-6 speed (6.25 Gbps).
     *  - \b CXP10_X3 (Display string: 'CXP 10 X 3'): 3 Connections operating at CXP-10 speed (10.00 Gbps).
     *  - \b CXP12_X3 (Display string: 'CXP 12 X 3'): 3 Connections operating at CXP-12 speed (12.50 Gbps).
     *  - \b CXP1_X4 (Display string: 'CXP 1 X 4'): 4 Connections operating at CXP-1 speed (1.25 Gbps).
     *  - \b CXP2_X4 (Display string: 'CXP 2 X 4'): 4 Connections operating at CXP-2 speed (2.50 Gbps).
     *  - \b CXP3_X4 (Display string: 'CXP 3 X 4'): 4 Connections operating at CXP-3 speed (3.125 Gbps).
     *  - \b CXP5_X4 (Display string: 'CXP 5 X 4'): 4 Connections operating at CXP-5 speed (5.00 Gbps).
     *  - \b CXP6_X4 (Display string: 'CXP 6 X 4'): 4 Connections operating at CXP-6 speed (6.25 Gbps).
     *  - \b CXP10_X4 (Display string: 'CXP 10 X 4'): 4 Connections operating at CXP-10 speed (10.00 Gbps).
     *  - \b CXP12_X4 (Display string: 'CXP 12 X 4'): 4 Connections operating at CXP-12 speed (12.50 Gbps).
     *  - \b CXP1_X5 (Display string: 'CXP 1 X 5'): 5 Connections operating at CXP-1 speed (1.25 Gbps).
     *  - \b CXP2_X5 (Display string: 'CXP 2 X 5'): 5 Connections operating at CXP-2 speed (2.50 Gbps).
     *  - \b CXP3_X5 (Display string: 'CXP 3 X 5'): 5 Connections operating at CXP-3 speed (3.125 Gbps).
     *  - \b CXP5_X5 (Display string: 'CXP 5 X 5'): 5 Connections operating at CXP-5 speed (5.00 Gbps).
     *  - \b CXP6_X5 (Display string: 'CXP 6 X 5'): 5 Connections operating at CXP-6 speed (6.25 Gbps).
     *  - \b CXP10_X5 (Display string: 'CXP 10 X 5'): 5 Connections operating at CXP-10 speed (10.00 Gbps).
     *  - \b CXP12_X5 (Display string: 'CXP 12 X 5'): 5 Connections operating at CXP-12 speed (12.50 Gbps).
     *  - \b CXP1_X6 (Display string: 'CXP 1 X 6'): 6 Connections operating at CXP-1 speed (1.25 Gbps).
     *  - \b CXP2_X6 (Display string: 'CXP 2 X 6'): 6 Connections operating at CXP-2 speed (2.50 Gbps).
     *  - \b CXP3_X6 (Display string: 'CXP 3 X 6'): 6 Connections operating at CXP-3 speed (3.125 Gbps).
     *  - \b CXP5_X6 (Display string: 'CXP 5 X 6'): 6 Connections operating at CXP-5 speed (5.00 Gbps).
     *  - \b CXP6_X6 (Display string: 'CXP 6 X 6'): 6 Connections operating at CXP-6 speed (6.25 Gbps).
     *  - \b CXP10_X6 (Display string: 'CXP 10 X 6'): 6 Connections operating at CXP-10 speed (10.00 Gbps).
     *  - \b CXP12_X6 (Display string: 'CXP 12 X 6'): 6 Connections operating at CXP-12 speed (12.50 Gbps).
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 cxpLinkConfigurationStatus;
    /// \brief An enumerated integer property. Provides the Link configuration that allows the Transmitter Device to operate in its default mode.
    /**
     *  Provides the Link configuration that allows the Transmitter Device to operate in its default mode.
     *
     *  The following string values might be valid for this feature:
     *  - \b CXP1_X1 (Display string: 'CXP 1 X 1'): 1 Connection operating at CXP-1 speed (1.25 Gbps).
     *  - \b CXP2_X1 (Display string: 'CXP 2 X 1'): 1 Connection operating at CXP-2 speed (2.50 Gbps).
     *  - \b CXP3_X1 (Display string: 'CXP 3 X 1'): 1 Connection operating at CXP-3 speed (3.125 Gbps).
     *  - \b CXP5_X1 (Display string: 'CXP 5 X 1'): 1 Connection operating at CXP-5 speed (5.00 Gbps).
     *  - \b CXP6_X1 (Display string: 'CXP 6 X 1'): 1 Connection operating at CXP-6 speed (6.25 Gbps).
     *  - \b CXP10_X1 (Display string: 'CXP 10 X 1'): 1 Connection operating at CXP-10 speed (10.00 Gbps).
     *  - \b CXP12_X1 (Display string: 'CXP 12 X 1'): 1 Connection operating at CXP-12 speed (12.50 Gbps).
     *  - \b CXP1_X2 (Display string: 'CXP 1 X 2'): 2 Connections operating at CXP-1 speed (1.25 Gbps).
     *  - \b CXP2_X2 (Display string: 'CXP 2 X 2'): 2 Connections operating at CXP-2 speed (2.50 Gbps).
     *  - \b CXP3_X2 (Display string: 'CXP 3 X 2'): 2 Connections operating at CXP-3 speed (3.125 Gbps).
     *  - \b CXP5_X2 (Display string: 'CXP 5 X 2'): 2 Connections operating at CXP-5 speed (5.00 Gbps).
     *  - \b CXP6_X2 (Display string: 'CXP 6 X 2'): 2 Connections operating at CXP-6 speed (6.25 Gbps).
     *  - \b CXP10_X2 (Display string: 'CXP 10 X 2'): 2 Connections operating at CXP-10 speed (10.00 Gbps).
     *  - \b CXP12_X2 (Display string: 'CXP 12 X 2'): 2 Connections operating at CXP-12 speed (12.50 Gbps).
     *  - \b CXP1_X3 (Display string: 'CXP 1 X 3'): 3 Connections operating at CXP-1 speed (1.25 Gbps).
     *  - \b CXP2_X3 (Display string: 'CXP 2 X 3'): 3 Connections operating at CXP-2 speed (2.50 Gbps).
     *  - \b CXP3_X3 (Display string: 'CXP 3 X 3'): 3 Connections operating at CXP-3 speed (3.125 Gbps).
     *  - \b CXP5_X3 (Display string: 'CXP 5 X 3'): 3 Connections operating at CXP-5 speed (5.00 Gbps).
     *  - \b CXP6_X3 (Display string: 'CXP 6 X 3'): 3 Connections operating at CXP-6 speed (6.25 Gbps).
     *  - \b CXP10_X3 (Display string: 'CXP 10 X 3'): 3 Connections operating at CXP-10 speed (10.00 Gbps).
     *  - \b CXP12_X3 (Display string: 'CXP 12 X 3'): 3 Connections operating at CXP-12 speed (12.50 Gbps).
     *  - \b CXP1_X4 (Display string: 'CXP 1 X 4'): 4 Connections operating at CXP-1 speed (1.25 Gbps).
     *  - \b CXP2_X4 (Display string: 'CXP 2 X 4'): 4 Connections operating at CXP-2 speed (2.50 Gbps).
     *  - \b CXP3_X4 (Display string: 'CXP 3 X 4'): 4 Connections operating at CXP-3 speed (3.125 Gbps).
     *  - \b CXP5_X4 (Display string: 'CXP 5 X 4'): 4 Connections operating at CXP-5 speed (5.00 Gbps).
     *  - \b CXP6_X4 (Display string: 'CXP 6 X 4'): 4 Connections operating at CXP-6 speed (6.25 Gbps).
     *  - \b CXP10_X4 (Display string: 'CXP 10 X 4'): 4 Connections operating at CXP-10 speed (10.00 Gbps).
     *  - \b CXP12_X4 (Display string: 'CXP 12 X 4'): 4 Connections operating at CXP-12 speed (12.50 Gbps).
     *  - \b CXP1_X5 (Display string: 'CXP 1 X 5'): 5 Connections operating at CXP-1 speed (1.25 Gbps).
     *  - \b CXP2_X5 (Display string: 'CXP 2 X 5'): 5 Connections operating at CXP-2 speed (2.50 Gbps).
     *  - \b CXP3_X5 (Display string: 'CXP 3 X 5'): 5 Connections operating at CXP-3 speed (3.125 Gbps).
     *  - \b CXP5_X5 (Display string: 'CXP 5 X 5'): 5 Connections operating at CXP-5 speed (5.00 Gbps).
     *  - \b CXP6_X5 (Display string: 'CXP 6 X 5'): 5 Connections operating at CXP-6 speed (6.25 Gbps).
     *  - \b CXP10_X5 (Display string: 'CXP 10 X 5'): 5 Connections operating at CXP-10 speed (10.00 Gbps).
     *  - \b CXP12_X5 (Display string: 'CXP 12 X 5'): 5 Connections operating at CXP-12 speed (12.50 Gbps).
     *  - \b CXP1_X6 (Display string: 'CXP 1 X 6'): 6 Connections operating at CXP-1 speed (1.25 Gbps).
     *  - \b CXP2_X6 (Display string: 'CXP 2 X 6'): 6 Connections operating at CXP-2 speed (2.50 Gbps).
     *  - \b CXP3_X6 (Display string: 'CXP 3 X 6'): 6 Connections operating at CXP-3 speed (3.125 Gbps).
     *  - \b CXP5_X6 (Display string: 'CXP 5 X 6'): 6 Connections operating at CXP-5 speed (5.00 Gbps).
     *  - \b CXP6_X6 (Display string: 'CXP 6 X 6'): 6 Connections operating at CXP-6 speed (6.25 Gbps).
     *  - \b CXP10_X6 (Display string: 'CXP 10 X 6'): 6 Connections operating at CXP-10 speed (10.00 Gbps).
     *  - \b CXP12_X6 (Display string: 'CXP 12 X 6'): 6 Connections operating at CXP-12 speed (12.50 Gbps).
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 cxpLinkConfigurationPreferred;
    /// \brief An enumerated integer property. This feature allows specifying the Link configuration for the communication between the Receiver and Transmitter Device.
    /**
     *  This feature allows specifying the Link configuration for the communication between the Receiver and Transmitter Device. In most cases this feature does not need to be written because automatic discovery will set configuration correctly to the value returned by CxpLinkConfigurationPreferred. Note that the currently active configuration of the Link can be read using CxpLinkConfigurationStatus.
     *
     *  The following string values might be valid for this feature:
     *  - \b Auto (Display string: 'Auto'): Sets Automatic discovery for the Link Configuration.
     *  - \b CXP1_X1 (Display string: 'CXP 1 X 1'): Force the Link to 1 Connection operating at CXP-1 speed (1.25 Gbps).
     *  - \b CXP2_X1 (Display string: 'CXP 2 X 1'): Force the Link to 1 Connection operating at CXP-2 speed (2.50 Gbps).
     *  - \b CXP3_X1 (Display string: 'CXP 3 X 1'): Force the Link to 1 Connection operating at CXP-3 speed (3.125 Gbps).
     *  - \b CXP5_X1 (Display string: 'CXP 5 X 1'): Force the Link to 1 Connection operating at CXP-5 speed (5.00 Gbps).
     *  - \b CXP6_X1 (Display string: 'CXP 6 X 1'): Force the Link to 1 Connection operating at CXP-6 speed (6.25 Gbps).
     *  - \b CXP10_X1 (Display string: 'CXP 10 X 1'): Force the Link to 1 Connection operating at CXP-10 speed (10.00 Gbps).
     *  - \b CXP12_X1 (Display string: 'CXP 12 X 1'): Force the Link to 1 Connection operating at CXP-12 speed (12.50 Gbps).
     *  - \b CXP1_X2 (Display string: 'CXP 1 X 2'): Force the Link to 2 Connections operating at CXP-1 speed (1.25 Gbps).
     *  - \b CXP2_X2 (Display string: 'CXP 2 X 2'): Force the Link to 2 Connections operating at CXP-2 speed (2.50 Gbps).
     *  - \b CXP3_X2 (Display string: 'CXP 3 X 2'): Force the Link to 2 Connections operating at CXP-3 speed (3.125 Gbps).
     *  - \b CXP5_X2 (Display string: 'CXP 5 X 2'): Force the Link to 2 Connections operating at CXP-5 speed (5.00 Gbps).
     *  - \b CXP6_X2 (Display string: 'CXP 6 X 2'): Force the Link to 2 Connections operating at CXP-6 speed (6.25 Gbps).
     *  - \b CXP10_X2 (Display string: 'CXP 10 X 2'): Force the Link to 2 Connections operating at CXP-10 speed (10.00 Gbps).
     *  - \b CXP12_X2 (Display string: 'CXP 12 X 2'): Force the Link to 2 Connections operating at CXP-12 speed (12.50 Gbps).
     *  - \b CXP1_X3 (Display string: 'CXP 1 X 3'): Force the Link to 3 Connections operating at CXP-1 speed (1.25 Gbps).
     *  - \b CXP2_X3 (Display string: 'CXP 2 X 3'): Force the Link to 3 Connections operating at CXP-2 speed (2.50 Gbps).
     *  - \b CXP3_X3 (Display string: 'CXP 3 X 3'): Force the Link to 3 Connections operating at CXP-3 speed (3.125 Gbps).
     *  - \b CXP5_X3 (Display string: 'CXP 5 X 3'): Force the Link to 3 Connections operating at CXP-5 speed (5.00 Gbps).
     *  - \b CXP6_X3 (Display string: 'CXP 6 X 3'): Force the Link to 3 Connections operating at CXP-6 speed (6.25 Gbps).
     *  - \b CXP10_X3 (Display string: 'CXP 10 X 3'): Force the Link to 3 Connections operating at CXP-10 speed (10.00 Gbps).
     *  - \b CXP12_X3 (Display string: 'CXP 12 X 3'): Force the Link to 3 Connections operating at CXP-12 speed (12.50 Gbps).
     *  - \b CXP1_X4 (Display string: 'CXP 1 X 4'): Force the Link to 4 Connections operating at CXP-1 speed (1.25 Gbps).
     *  - \b CXP2_X4 (Display string: 'CXP 2 X 4'): Force the Link to 4 Connections operating at CXP-2 speed (2.50 Gbps).
     *  - \b CXP3_X4 (Display string: 'CXP 3 X 4'): Force the Link to 4 Connections operating at CXP-3 speed (3.125 Gbps).
     *  - \b CXP5_X4 (Display string: 'CXP 5 X 4'): Force the Link to 4 Connections operating at CXP-5 speed (5.00 Gbps).
     *  - \b CXP6_X4 (Display string: 'CXP 6 X 4'): Force the Link to 4 Connections operating at CXP-6 speed (6.25 Gbps).
     *  - \b CXP10_X4 (Display string: 'CXP 10 X 4'): Force the Link to 4 Connections operating at CXP-10 speed (10.00 Gbps).
     *  - \b CXP12_X4 (Display string: 'CXP 12 X 4'): Force the Link to 4 Connections operating at CXP-12 speed (12.50 Gbps).
     *  - \b CXP1_X5 (Display string: 'CXP 1 X 5'): Force the Link to 5 Connections operating at CXP-1 speed (1.25 Gbps).
     *  - \b CXP2_X5 (Display string: 'CXP 2 X 5'): Force the Link to 5 Connections operating at CXP-2 speed (2.50 Gbps).
     *  - \b CXP3_X5 (Display string: 'CXP 3 X 5'): Force the Link to 5 Connections operating at CXP-3 speed (3.125 Gbps).
     *  - \b CXP5_X5 (Display string: 'CXP 5 X 5'): Force the Link to 5 Connections operating at CXP-5 speed (5.00 Gbps).
     *  - \b CXP6_X5 (Display string: 'CXP 6 X 5'): Force the Link to 5 Connections operating at CXP-6 speed (6.25 Gbps).
     *  - \b CXP10_X5 (Display string: 'CXP 10 X 5'): Force the Link to 5 Connections operating at CXP-10 speed (10.00 Gbps).
     *  - \b CXP12_X5 (Display string: 'CXP 12 X 5'): Force the Link to 5 Connections operating at CXP-12 speed (12.50 Gbps).
     *  - \b CXP1_X6 (Display string: 'CXP 1 X 6'): Force the Link to 6 Connections operating at CXP-1 speed (1.25 Gbps).
     *  - \b CXP2_X6 (Display string: 'CXP 2 X 6'): Force the Link to 6 Connections operating at CXP-2 speed (2.50 Gbps).
     *  - \b CXP3_X6 (Display string: 'CXP 3 X 6'): Force the Link to 6 Connections operating at CXP-3 speed (3.125 Gbps).
     *  - \b CXP5_X6 (Display string: 'CXP 5 X 6'): Force the Link to 6 Connections operating at CXP-5 speed (5.00 Gbps).
     *  - \b CXP6_X6 (Display string: 'CXP 6 X 6'): Force the Link to 6 Connections operating at CXP-6 speed (6.25 Gbps).
     *  - \b CXP10_X6 (Display string: 'CXP 10 X 6'): Force the Link to 6 Connections operating at CXP-10 speed (10.00 Gbps).
     *  - \b CXP12_X6 (Display string: 'CXP 12 X 6'): Force the Link to 6 Connections operating at CXP-12 speed (12.50 Gbps).
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 cxpLinkConfiguration;
    /// \brief A boolean property. Enable or disable the link sharing functionality of the device.
    /**
     *  Enable or disable the link sharing functionality of the device.
     */
    PropertyIBoolean cxpLinkSharingEnable;
    /// \brief An integer property. Index of the sub device used in the Link Sharing.
    /**
     *  Index of the sub device used in the Link Sharing.
     */
    PropertyI64 cxpLinkSharingSubDeviceSelector;
    /// \brief An enumerated integer property. This feature provides the type of sub device.
    /**
     *  This feature provides the type of sub device.
     *
     *  The following string values might be valid for this feature:
     *  - \b Master (Display string: 'Master'): The sub device is the master.
     *  - \b Slave (Display string: 'Slave'): The sub device is a slave.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 cxpLinkSharingSubDeviceType;
    /// \brief An integer property. This feature provides the number of horizontal stripes that the device implements.
    /**
     *  This feature provides the number of horizontal stripes that the device implements.
     */
    PropertyI64 cxpLinkSharingHorizontalStripeCount;
    /// \brief An integer property. This feature provides the number of vertical stripes that the device implements.
    /**
     *  This feature provides the number of vertical stripes that the device implements.
     */
    PropertyI64 cxpLinkSharingVerticalStripeCount;
    /// \brief An integer property. This feature provides the number of pixel overlap in the horizontal stripes that the device implements.
    /**
     *  This feature provides the number of pixel overlap in the horizontal stripes that the device implements.
     */
    PropertyI64 cxpLinkSharingHorizontalOverlap;
    /// \brief An integer property. This feature provides the number of pixel overlap in the vertical stripes that the device implements.
    /**
     *  This feature provides the number of pixel overlap in the vertical stripes that the device implements.
     */
    PropertyI64 cxpLinkSharingVerticalOverlap;
    /// \brief An integer property. This feature provides the duplicate count in striped system.
    /**
     *  This feature provides the duplicate count in striped system. A non-zero value sets the number of duplicate images sent to sub-Devices.
     */
    PropertyI64 cxpLinkSharingDuplicateStripe;
    /// \brief An integer property. Selects the CoaXPress physical connection to control.
    /**
     *  Selects the CoaXPress physical connection to control.
     */
    PropertyI64 cxpConnectionSelector;
    /// \brief An enumerated integer property. Enables the test mode for an individual physical connection of the Device.
    /**
     *  Enables the test mode for an individual physical connection of the Device.
     *
     *  The following string values might be valid for this feature:
     *  - \b Off (Display string: 'Off'): Off
     *  - \b Mode1 (Display string: 'Mode 1'): Mode 1
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 cxpConnectionTestMode;
    /// \brief An integer property. Reports the current connection error count for test packets received by the device on the connection selected by CxpConnectionSelector.
    /**
     *  Reports the current connection error count for test packets received by the device on the connection selected by CxpConnectionSelector.
     */
    PropertyI64 cxpConnectionTestErrorCount;
    /// \brief An enumerated integer property. Selects which one of the send or receive features to control.
    /**
     *  Selects which one of the send or receive features to control.
     *
     *  The following string values might be valid for this feature:
     *  - \b Send (Display string: 'Send'): Send
     *  - \b Receive (Display string: 'Receive'): Receive
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 cxpSendReceiveSelector;
    /// \brief An integer property. Reports the current count for the test packets on the connection selected by CxpConnectionSelector.
    /**
     *  Reports the current count for the test packets on the connection selected by CxpConnectionSelector.
     */
    PropertyI64 cxpConnectionTestPacketCount;
    /// \brief An enumerated integer property. Selects which Cxp Error Counter to read or reset.
    /**
     *  Selects which Cxp Error Counter to read or reset.
     *
     *  The following string values might be valid for this feature:
     *  - \b ConnectionLockLoss (Display string: 'Connection Lock Loss'): Counts the number of times the lock was lost.
     *  - \b Encoding (Display string: 'Encoding'): Counts the number of protocol encoding errors detected.
     *  - \b StreamDataPacketCrc (Display string: 'Stream Data Packet Crc'): Counts the number of CRC errors detected in a data packet. This counter is only available on the CoaXpress host.
     *  - \b ControlPacketCrc (Display string: 'Control Packet Crc'): Counts the number of CRC errors detected in a control packet.
     *  - \b EventPacketCrc (Display string: 'Event Packet Crc'): Counts the number of CRC errors detected in an event packet.
     *  - \b DuplicatedCharactersCorrected (Display string: 'Duplicated Characters Corrected'): Counts the number of corrected errors in the duplicated characters in CXP control words.
     *  - \b DuplicatedCharactersUncorrected (Display string: 'Duplicated Characters Uncorrected'): Counts the number of uncorrected errors in the duplicated characters in CXP control words.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 cxpErrorCounterSelector;
    /// \brief A method object. Resets the selected Cxp Error Counter on the connection selected by CxpConnectionSelector.
    /**
     *  Resets the selected Cxp Error Counter on the connection selected by CxpConnectionSelector. The counter starts counting events immediately after the reset.
     */
    Method cxpErrorCounterReset;
    /// \brief An integer property. Reads the current value of the selected Cxp Error Counter on the connection selected by CxpConnectionSelector.
    /**
     *  Reads the current value of the selected Cxp Error Counter on the connection selected by CxpConnectionSelector.
     */
    PropertyI64 cxpErrorCounterValue;
    /// \brief An enumerated integer property. Returns the current status of the selected Cxp Error Counter on the connection selected by CxpConnectionSelector.
    /**
     *  Returns the current status of the selected Cxp Error Counter on the connection selected by CxpConnectionSelector.
     *
     *  The following string values might be valid for this feature:
     *  - \b CounterActive (Display string: 'Counter Active'): The counter is actively counting errors.
     *  - \b CounterOverflow (Display string: 'Counter Overflow'): The counter exceeded its maximum error count.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 cxpErrorCounterStatus;
    /// \brief A method object. Activate automatic control of the Power over CoaXPress (PoCXP) for the Link.
    /**
     *  Activate automatic control of the Power over CoaXPress (PoCXP) for the Link.
     */
    Method cxpPoCxpAuto;
    /// \brief A method object. Disable Power over CoaXPress (PoCXP) for the Link.
    /**
     *  Disable Power over CoaXPress (PoCXP) for the Link.
     */
    Method cxpPoCxpTurnOff;
    /// \brief A method object. Reset the Power over CoaXPress (PoCXP) Link after an over-current trip on the Device connection(s).
    /**
     *  Reset the Power over CoaXPress (PoCXP) Link after an over-current trip on the Device connection(s).
     */
    Method cxpPoCxpTripReset;
    /// \brief An enumerated integer property. Returns the Power over CoaXPress (PoCXP) status of the Device.
    /**
     *  Returns the Power over CoaXPress (PoCXP) status of the Device.
     *
     *  The following string values might be valid for this feature:
     *  - \b Auto (Display string: 'Auto'): Normal automatic PoCXP operation.
     *  - \b Off (Display string: 'Off'): PoCXP is forced off.
     *  - \b Tripped (Display string: 'Tripped'): The Link has shut down because of an over-current trip.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 cxpPoCxpStatus;
    /// \brief A boolean property. Specifies if a FrameStart trigger also triggers the first LineStart at the same time.
    /**
     *  Specifies if a FrameStart trigger also triggers the first LineStart at the same time.
     */
    PropertyIBoolean cxpFirstLineTriggerWithFrameStart;
    /// \brief An enumerated integer property. Selects the bandwidth control for the selected stream channel.
    /**
     *  This enumeration selects the bandwidth control for the selected stream channel.
     *
     *  The following string values might be valid for this feature:
     *  - \b GevSCPD (Display string: 'Gev SCPD')
     *  - \b mvGevSCBW (Display string: 'mv Gev SCBW')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvGevSCBWControl;
    /// \brief An integer property. Sets the stream channels max. bandwidth in KBps
    /**
     *  This value sets the stream channels max. bandwidth in KBps.
     */
    PropertyI64 mvGevSCBW;
    // *INDENT-OFF*
    PYTHON_OR_JAVA_ONLY( %mutable; )
    // *INDENT-ON*
    /// \brief Calculates the effective number of payload packets (not including leader and trailer) per block of data (e.g. an image) for a GigE Vision data stream when transferring the payload type \a image.
    /**
     *  This will include all overhead introduced by the network protocol. The value will be correct for payload type image only, thus e.g. when
     *  transferring chunk data the result will not be 100 per cent accurate as then some packets will use a slightly different layout. However
     *  these differences are negligible when working in modes, where individual images are not smaller than roughly 64 by 64 pixels.
     *  \since 2.5.11
     *  \return The effective number of payload packets (not including leader and trailer) per block of data (e.g. an image) transferred by a GigE Vision device with the current parameters.
     */
    static int64_type gevGetEffectivePayloadPacketsPerImage(
        /// [in] The current or desired gevSCPSPacketSizeValue. This value depends e.g. on the MTU of the NIC the stream has been created on. See network configuration chapters for details.
        const int64_type gevSCPSPacketSizeValue,
        /// [in] The current value of the \a payloadSize property.
        const int64_type payloadSizeValue,
        /// [in] Indicates whether the bandwidth shall be calculated for the extended ID mode (introduced in GigE Vision 2.0) or not.
        /// With \a boExtendedID the protocol overhead will increase slightly.
        const bool boExtendedID = false )
    {
        const int64_type PacketSizeWithoutEthernet = boExtendedID ? 48LL : 36LL; // 20 (IP Header) + 8 (UDP Header) + boExtendedID ? 20 : 8 (GVSP Header)
        const int64_type gevSCPSPacketSizeValue_effective = gevSCPSPacketSizeValue - PacketSizeWithoutEthernet; // The Ethernet header is not taken into account here!
        return ( payloadSizeValue + gevSCPSPacketSizeValue_effective - 1LL ) / gevSCPSPacketSizeValue_effective;
    }
    /**
     *  This will include all overhead introduced by the network protocol. The value will be correct for payload type image only, thus e.g. when
     *  transferring chunk data the result will not be 100 per cent accurate as then some packets will use a slightly different layout. However
     *  these differences are negligible when working in modes, where individual images are not smaller than roughly 64 by 64 pixels.
     *  \since 2.5.7
     *  \return The effective number of payload packets (not including leader and trailer) per block of data (e.g. an image) transferred by a GigE Vision device with the current parameters.
     */
    int64_type gevGetEffectivePayloadPacketsPerImage(
        /// [in] The current or desired gevSCPSPacketSizeValue. This value depends e.g. on the MTU of the NIC the stream has been created on. See network configuration chapters for details.
        const int64_type gevSCPSPacketSizeValue,
        /// [in] Indicates whether the bandwidth shall be calculated for the extended ID mode (introduced in GigE Vision 2.0) or not.
        /// With \a boExtendedID the protocol overhead will increase slightly.
        const bool boExtendedID = false ) const
    {
        return gevGetEffectivePayloadPacketsPerImage( gevSCPSPacketSizeValue, payloadSize.read(), boExtendedID );
    }
    /// \brief Calculates the effective bytes per block of data (e.g. an image) for a GigE Vision data stream when transferring the payload type \a image.
    /**
     *  This will include all overhead introduced by the network protocol. The value will be correct for payload type image only, thus e.g. when
     *  transferring chunk data the result will not be 100 per cent accurate as then some packets will use a slightly different layout. However
     *  these differences are negligible when working in modes, where individual images are not smaller than roughly 64 by 64 pixels.
     *  \since 2.5.11
     *  \return The effective bytes per block of data (e.g. an image) transferred by a GigE Vision device with the current parameters.
     */
    static int64_type gevGetEffectiveBytesPerImage(
        /// [in] The current or desired gevSCPSPacketSizeValue. This value depends e.g. on the MTU of the NIC the stream has been created on. See network configuration chapters for details.
        const int64_type gevSCPSPacketSizeValue,
        /// [in] The current value of the \a payloadSize property.
        const int64_type payloadSizeValue,
        /// [in] Indicates whether the bandwidth shall be calculated for the extended ID mode (introduced in GigE Vision 2.0) or not.
        /// With \a boExtendedID the protocol overhead will increase slightly.
        const bool boExtendedID = false )
    {
        const int64_type PacketSizeWithoutEthernet = boExtendedID ? 48LL : 36LL; // 20 (IP Header) + 8 (UDP Header) + boExtendedID ? 20 : 8 (GVSP Header)
        const int64_type GVSPHeaderSize = PacketSizeWithoutEthernet + 14LL; // 14 (Ethernet Header)
        const int64_type GVSPImageLeaderSize = GVSPHeaderSize + 36LL;
        const int64_type GVSPImageTrailerSize = GVSPHeaderSize + 8LL;
        const int64_type protocolOverhead = GVSPImageLeaderSize + ( gevGetEffectivePayloadPacketsPerImage( gevSCPSPacketSizeValue, payloadSizeValue, boExtendedID ) * GVSPHeaderSize ) + GVSPImageTrailerSize;
        return protocolOverhead + payloadSizeValue;
    }
    /// \brief Calculates the effective bytes per block of data (e.g. an image) for a GigE Vision data stream when transferring the payload type \a image.
    /**
     *  This will include all overhead introduced by the network protocol. The value will be correct for payload type image only, thus e.g. when
     *  transferring chunk data the result will not be 100 per cent accurate as then some packets will use a slightly different layout. However
     *  these differences are negligible when working in modes, where individual images are not smaller than roughly 64 by 64 pixels.
     *  \since 2.5.7
     *  \return The effective bytes per block of data (e.g. an image) transferred by a GigE Vision device with the current parameters.
     */
    int64_type gevGetEffectiveBytesPerImage(
        /// [in] The current or desired gevSCPSPacketSizeValue. This value depends e.g. on the MTU of the NIC the stream has been created on. See network configuration chapters for details.
        const int64_type gevSCPSPacketSizeValue,
        /// [in] Indicates whether the bandwidth shall be calculated for the extended ID mode (introduced in GigE Vision 2.0) or not.
        /// With \a boExtendedID the protocol overhead will increase slightly.
        const bool boExtendedID = false ) const
    {
        return gevGetEffectiveBytesPerImage( gevSCPSPacketSizeValue, payloadSize.read(), boExtendedID );
    }
    /// \brief Calculates the overall resulting bandwidth (in bytes) needed for GigE Vision data streams when transferring the payload type \a image.
    /**
     *  This will include all overhead introduced by the network protocol. The value will be correct for payload type image only, thus e.g. when
     *  transferring chunk data the result will not be 100 per cent precise as then some packets will use a slightly different layout. However
     *  these differences are negligible when working in modes, where individual images are not smaller than roughly 64 by 64 pixels.
     *  \since 2.5.11
     *  \return The overall resulting bandwidth (in bytes) needed for GigE Vision data streams when transferring the payload type \a image.
     */
    static int64_type gevGetResultingBandwidth(
        /// [in] The overall current or desired frame rate.
        const double acquisitionFrameRateValue,
        /// [in] The current or desired gevSCPSPacketSizeValue. This value depends e.g. on the MTU of the NIC the stream has been created on. See network configuration chapters for details.
        const int64_type gevSCPSPacketSizeValue,
        /// [in] The current value of the \a payloadSize property.
        const int64_type payloadSizeValue,
        /// [in] Indicates whether the bandwidth shall be calculated for the extended ID mode (introduced in GigE Vision 2.0) or not.
        /// With \a boExtendedID the protocol overhead will increase slightly.
        const bool boExtendedID = false )
    {
        return static_cast<int64_type>( static_cast<double>( gevGetEffectiveBytesPerImage( gevSCPSPacketSizeValue, payloadSizeValue, boExtendedID ) ) * acquisitionFrameRateValue );
    }
    /// \brief Calculates the overall resulting bandwidth (in bytes) needed for GigE Vision data streams when transferring the payload type \a image.
    /**
     *  This will include all overhead introduced by the network protocol. The value will be correct for payload type image only, thus e.g. when
     *  transferring chunk data the result will not be 100 per cent precise as then some packets will use a slightly different layout. However
     *  these differences are negligible when working in modes, where individual images are not smaller than roughly 64 by 64 pixels.
     *  \since 2.5.7
     *  \return The overall resulting bandwidth (in bytes) needed for GigE Vision data streams when transferring the payload type \a image.
     */
    int64_type gevGetResultingBandwidth(
        /// [in] The overall current or desired frame rate.
        const double acquisitionFrameRateValue,
        /// [in] The current or desired gevSCPSPacketSizeValue. This value depends e.g. on the MTU of the NIC the stream has been created on. See network configuration chapters for details.
        const int64_type gevSCPSPacketSizeValue,
        /// [in] Indicates whether the bandwidth shall be calculated for the extended ID mode (introduced in GigE Vision 2.0) or not.
        /// With \a boExtendedID the protocol overhead will increase slightly.
        const bool boExtendedID = false ) const
    {
        return static_cast<int64_type>( static_cast<double>( gevGetEffectiveBytesPerImage( gevSCPSPacketSizeValue, boExtendedID ) ) * acquisitionFrameRateValue );
    }
    /// \brief Calculates the inter-packet delay needed to achieve a uniform packet and thus payload distribution for GigE Vision data streams when transferring the payload type \a image.
    /**
     *  This will include all overhead introduced by the network protocol. The value will be correct for payload type image only, thus e.g. when
     *  transferring chunk data the result will not be 100 per cent accurate as then some packets will use a slightly different layout. However
     *  these differences are negligible when working in modes, where individual images are not smaller than roughly 64 by 64 pixels.
     *
     *  The result of this function should be written to the property <b>mvIMPACT::acquire::TransportLayerControl::gevSCPD</b> if supported by the device.
     *  \since 2.5.11
     *  \return The \a GevSCPD value for the given input parameters. If this value is negative, this indicates that the overall bandwidth resulting
     *  from the given input parameters is higher than stated by \a bandwidthAvailable. In such a case the inter-packet delay must be set to 0 and
     *  it should be noted that the desired frame rate cannot be reached in this configuration.
     */
    static int64_type gevGetResultingPacketDelay(
        /// [in] The overall current or desired frame rate.
        const double acquisitionFrameRateValue,
        /// [in] The current or desired gevSCPSPacketSizeValue. This value depends e.g. on the MTU of the NIC the stream has been created on. See network configuration chapters for details.
        const int64_type gevSCPSPacketSizeValue,
        /// [in] The current value of the \a payloadSize property.
        const int64_type payloadSizeValue,
        /// [in] The timestamp tick frequency of the GEV remote device.
        const int64_type gevTimestampTickFrequencyValue,
        /// [in] The overall bandwidth in bytes that is available on the given link.
        const int64_type bandwidthAvailable,
        /// [in] Indicates whether the bandwidth shall be calculated for the extended ID mode (introduced in GigE Vision 2.0) or not.
        /// With \a boExtendedID the protocol overhead will increase slightly.
        const bool boExtendedID = false )
    {
        const int64_type bandwidthNeeded = gevGetResultingBandwidth( acquisitionFrameRateValue, gevSCPSPacketSizeValue, payloadSizeValue, boExtendedID );
        const int64_type packetsPerImage = gevGetEffectivePayloadPacketsPerImage( gevSCPSPacketSizeValue, payloadSizeValue, boExtendedID ) + 2; // one leader, one trailer
        const double totalDelayTime = 1. - static_cast<double>( bandwidthNeeded ) / static_cast<double>( bandwidthAvailable );
        const double interPacketDelayTime = totalDelayTime / ( static_cast<double>( packetsPerImage ) * acquisitionFrameRateValue );
        return static_cast<int64_type>( ( interPacketDelayTime < 0.0 ) ? 0 : interPacketDelayTime * gevTimestampTickFrequencyValue );
    }
    /// \brief Calculates the inter-packet delay needed to achieve a uniform packet and thus payload distribution for GigE Vision data streams when transferring the payload type \a image.
    /**
     *  This will include all overhead introduced by the network protocol. The value will be correct for payload type image only, thus e.g. when
     *  transferring chunk data the result will not be 100 per cent accurate as then some packets will use a slightly different layout. However
     *  these differences are negligible when working in modes, where individual images are not smaller than roughly 64 by 64 pixels.
     *
     *  The result of this function should be written to the property <b>mvIMPACT::acquire::TransportLayerControl::gevSCPD</b> if supported by the device.
     *  \since 2.5.7
     *  \return The \a GevSCPD value for the given input parameters. If this value is negative, this indicates that the overall bandwidth resulting
     *  from the given input parameters is higher than stated by \a bandwidthAvailable. In such a case the inter-packet delay must be set to 0 and
     *  it should be noted that the desired frame rate cannot be reached in this configuration.
     */
    int64_type gevGetResultingPacketDelay(
        /// [in] The overall current or desired frame rate.
        const double acquisitionFrameRateValue,
        /// [in] The current or desired gevSCPSPacketSizeValue. This value depends e.g. on the MTU of the NIC the stream has been created on. See network configuration chapters for details.
        const int64_type gevSCPSPacketSizeValue,
        /// [in] The timestamp tick frequency of the GEV remote device.
        const int64_type gevTimestampTickFrequencyValue,
        /// [in] The overall bandwidth in bytes that is available on the given link.
        const int64_type bandwidthAvailable,
        /// [in] Indicates whether the bandwidth shall be calculated for the extended ID mode (introduced in GigE Vision 2.0) or not.
        /// With \a boExtendedID the protocol overhead will increase slightly.
        const bool boExtendedID = false ) const
    {
        return gevGetResultingPacketDelay( acquisitionFrameRateValue, gevSCPSPacketSizeValue, payloadSize.read(), gevTimestampTickFrequencyValue, bandwidthAvailable, boExtendedID );
    }
};

//-----------------------------------------------------------------------------
/// \brief Contains features to control the serial interface.
/**
 *  Contains features to control the serial interface.
 * \ingroup GenICamInterfaceDevice
 */
class mvSerialInterfaceControl : public mvIMPACT::acquire::ComponentCollection
//-----------------------------------------------------------------------------
{
public:
    /// \brief Constructs a new <b>mvIMPACT::acquire::GenICam::mvSerialInterfaceControl</b> object.
    explicit mvSerialInterfaceControl(
        /// [in] A pointer to a <b>mvIMPACT::acquire::Device</b> object obtained from a <b>mvIMPACT::acquire::DeviceManager</b> object.
        mvIMPACT::acquire::Device* pDev,
        /// [in] The name of the driver internal setting to access with this instance.
        /// A list of valid setting names can be obtained by a call to
        /// <b>mvIMPACT::acquire::FunctionInterface::getAvailableSettings</b>, new
        /// settings can be created with the function
        /// <b>mvIMPACT::acquire::FunctionInterface::createSetting</b>
        const std::string& settingName = "Base" ) :
        mvIMPACT::acquire::ComponentCollection( pDev ),
        mvSerialInterfaceEnable(),
        mvSerialInterfaceMode(),
        mvSerialInterfaceBaudRate(),
        mvSerialInterfaceDataBits(),
        mvSerialInterfaceStopBits(),
        mvSerialInterfaceParity(),
        mvSerialInterfaceASCIIBuffer(),
        mvSerialInterfaceBinaryBuffer(),
        mvSerialInterfaceBytesToWrite(),
        mvSerialInterfaceBytesAvailableForRead(),
        mvSerialInterfaceReceiveStatus(),
        mvSerialInterfaceBytesToRead(),
        mvSerialInterfaceRead(),
        mvSerialInterfaceWrite(),
        mvLiquidLensFirmwareVersion(),
        mvLiquidLensStatus(),
        mvLiquidLensErrorCount(),
        mvLiquidLensPowerMode(),
        mvLiquidLensSetFocusValue(),
        mvLiquidLensReceiveStatus(),
        mvLiquidLensSaveFocusValue(),
        mvStepperFirmwareVersion(),
        mvStepperReceiveStatus(),
        mvStepperErrorCount(),
        mvStepperAutoSavePositionEnable(),
        mvStepperMotorSelector(),
        mvStepperStatus(),
        mvStepperCurrentPosition(),
        mvStepperDesiredPosition(),
        mvStepperSpeed(),
        mvStepperAcceleration(),
        mvStepperSpeedManual(),
        mvStepperPositionSetSelector(),
        mvStepperPositionSetLoad(),
        mvStepperPositionSetSave(),
        mvStepperMoveToHomeAll(),
        mvStepperStopAll()
    {
        pDev->validateInterfaceLayout( dilGenICam );
        mvIMPACT::acquire::DeviceComponentLocator locator( pDev, mvIMPACT::acquire::dltSetting, settingName );
        locator.bindSearchBase( locator.searchbase_id(), "Camera/GenICam/mvSerialInterfaceControl" );
        m_hRoot = locator.searchbase_id();
        locator.bindComponent( mvSerialInterfaceEnable, "mvSerialInterfaceEnable" );
        locator.bindComponent( mvSerialInterfaceMode, "mvSerialInterfaceMode" );
        locator.bindComponent( mvSerialInterfaceBaudRate, "mvSerialInterfaceBaudRate" );
        locator.bindComponent( mvSerialInterfaceDataBits, "mvSerialInterfaceDataBits" );
        locator.bindComponent( mvSerialInterfaceStopBits, "mvSerialInterfaceStopBits" );
        locator.bindComponent( mvSerialInterfaceParity, "mvSerialInterfaceParity" );
        locator.bindComponent( mvSerialInterfaceASCIIBuffer, "mvSerialInterfaceASCIIBuffer" );
        locator.bindComponent( mvSerialInterfaceBinaryBuffer, "mvSerialInterfaceBinaryBuffer" );
        locator.bindComponent( mvSerialInterfaceBytesToWrite, "mvSerialInterfaceBytesToWrite" );
        locator.bindComponent( mvSerialInterfaceBytesAvailableForRead, "mvSerialInterfaceBytesAvailableForRead" );
        locator.bindComponent( mvSerialInterfaceReceiveStatus, "mvSerialInterfaceReceiveStatus" );
        locator.bindComponent( mvSerialInterfaceBytesToRead, "mvSerialInterfaceBytesToRead" );
        locator.bindComponent( mvSerialInterfaceRead, "mvSerialInterfaceRead@i" );
        locator.bindComponent( mvSerialInterfaceWrite, "mvSerialInterfaceWrite@i" );
        locator.bindComponent( mvLiquidLensFirmwareVersion, "mvLiquidLensFirmwareVersion" );
        locator.bindComponent( mvLiquidLensStatus, "mvLiquidLensStatus" );
        locator.bindComponent( mvLiquidLensErrorCount, "mvLiquidLensErrorCount" );
        locator.bindComponent( mvLiquidLensPowerMode, "mvLiquidLensPowerMode" );
        locator.bindComponent( mvLiquidLensSetFocusValue, "mvLiquidLensSetFocusValue" );
        locator.bindComponent( mvLiquidLensReceiveStatus, "mvLiquidLensReceiveStatus" );
        locator.bindComponent( mvLiquidLensSaveFocusValue, "mvLiquidLensSaveFocusValue@i" );
        locator.bindComponent( mvStepperFirmwareVersion, "mvStepperFirmwareVersion" );
        locator.bindComponent( mvStepperReceiveStatus, "mvStepperReceiveStatus" );
        locator.bindComponent( mvStepperErrorCount, "mvStepperErrorCount" );
        locator.bindComponent( mvStepperAutoSavePositionEnable, "mvStepperAutoSavePositionEnable" );
        locator.bindComponent( mvStepperMotorSelector, "mvStepperMotorSelector" );
        locator.bindComponent( mvStepperStatus, "mvStepperStatus" );
        locator.bindComponent( mvStepperCurrentPosition, "mvStepperCurrentPosition" );
        locator.bindComponent( mvStepperDesiredPosition, "mvStepperDesiredPosition" );
        locator.bindComponent( mvStepperSpeed, "mvStepperSpeed" );
        locator.bindComponent( mvStepperAcceleration, "mvStepperAcceleration" );
        locator.bindComponent( mvStepperSpeedManual, "mvStepperSpeedManual" );
        locator.bindComponent( mvStepperPositionSetSelector, "mvStepperPositionSetSelector" );
        locator.bindComponent( mvStepperPositionSetLoad, "mvStepperPositionSetLoad@i" );
        locator.bindComponent( mvStepperPositionSetSave, "mvStepperPositionSetSave@i" );
        locator.bindComponent( mvStepperMoveToHomeAll, "mvStepperMoveToHomeAll@i" );
        locator.bindComponent( mvStepperStopAll, "mvStepperStopAll@i" );
    }
    // *INDENT-OFF*
    PYTHON_OR_JAVA_ONLY( %immutable; )
    // *INDENT-ON*
    /// \brief A boolean property. Controls whether the serial interface is enabled or not.
    /**
     *  Controls whether the serial interface is enabled or not.
     */
    PropertyIBoolean mvSerialInterfaceEnable;
    /// \brief An enumerated integer property. States the interface mode of the serial interface
    /**
     *  States the interface mode of the serial interface
     *
     *  The following string values might be valid for this feature:
     *  - \b Plain (Display string: 'Plain')
     *  - \b InveniosLiquidLens (Display string: 'Invenios Liquid Lens')
     *  - \b OptoEngineeringStepper (Display string: 'Opto Engineering Stepper')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvSerialInterfaceMode;
    /// \brief An enumerated integer property. Serial interface clock frequency.
    /**
     *  Serial interface clock frequency.
     *
     *  The following string values might be valid for this feature:
     *  - \b Hz_115200 (Display string: '115200 Hz')
     *  - \b Hz_57600 (Display string: '57600 Hz')
     *  - \b Hz_38400 (Display string: '38400 Hz')
     *  - \b Hz_19200 (Display string: '19200 Hz')
     *  - \b Hz_9600 (Display string: '9600 Hz')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvSerialInterfaceBaudRate;
    /// \brief An enumerated integer property. Number of data bits.
    /**
     *  Number of data bits.
     *
     *  The following string values might be valid for this feature:
     *  - \b Seven (Display string: 'Seven')
     *  - \b Eight (Display string: 'Eight')
     *  - \b Nine (Display string: 'Nine')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvSerialInterfaceDataBits;
    /// \brief An enumerated integer property. Number of stop bits.
    /**
     *  Number of stop bits.
     *
     *  The following string values might be valid for this feature:
     *  - \b One (Display string: 'One')
     *  - \b Two (Display string: 'Two')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvSerialInterfaceStopBits;
    /// \brief An enumerated integer property. Serial interface parity.
    /**
     *  Serial interface parity.
     *
     *  The following string values might be valid for this feature:
     *  - \b None (Display string: 'None')
     *  - \b Odd (Display string: 'Odd')
     *  - \b Even (Display string: 'Even')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvSerialInterfaceParity;
    /// \brief A string property. Buffer for exchanging ASCII data over the serial interface. This buffer uses the same memory as 'mvSerialInterfaceBinaryBuffer'.
    /**
     *  Buffer for exchanging ASCII data over the serial interface. This buffer uses the same memory as 'mvSerialInterfaceBinaryBuffer'.
     */
    PropertyS mvSerialInterfaceASCIIBuffer;
    /// \brief A string property. Buffer for exchanging binary data over the serial interface. This buffer uses the same memory as 'mvSerialInterfaceASCIIBuffer'.
    /**
     *  Buffer for exchanging binary data over the serial interface. This buffer uses the same memory as 'mvSerialInterfaceASCIIBuffer'.
     */
    PropertyS mvSerialInterfaceBinaryBuffer;
    /// \brief An integer property. Length of data to write.
    /**
     *  Length of data to write.
     */
    PropertyI64 mvSerialInterfaceBytesToWrite;
    /// \brief An integer property. Number of serial data bytes available for read.
    /**
     *  Number of serial data bytes available for read.
     */
    PropertyI64 mvSerialInterfaceBytesAvailableForRead;
    /// \brief An integer property. Result of the serial receive error detection mechanism.
    /**
     *  Result of the serial receive error detection mechanism.
     */
    PropertyI64 mvSerialInterfaceReceiveStatus;
    /// \brief An integer property. Number of serial bytes to read.
    /**
     *  Number of serial bytes to read.
     */
    PropertyI64 mvSerialInterfaceBytesToRead;
    /// \brief A method object. Command to read data from serial interface.
    /**
     *  Command to read data from serial interface.
     */
    Method mvSerialInterfaceRead;
    /// \brief A method object. Command to write data to serial interface
    /**
     *  Command to write data to serial interface
     */
    Method mvSerialInterfaceWrite;
    /// \brief An integer property. Returns the firmware version of the Liquid Lens.
    /**
     *  Returns the firmware version of the Liquid Lens.
     */
    PropertyI64 mvLiquidLensFirmwareVersion;
    /// \brief An enumerated integer property. Returns the current status of the Liquid Lens.
    /**
     *  Returns the current status of the Liquid Lens.
     *
     *  The following string values might be valid for this feature:
     *  - \b NoError (Display string: 'No Error'): No Errors.
     *  - \b VhOverload (Display string: 'Vh Overload'): Vh below 70V because Liquid Lens is taking too much current.
     *  - \b ThermalOverload (Display string: 'Thermal Overload'): Driver shutdown because Liquid Lens is too hot.
     *  - \b VhAndThermalOverload (Display string: 'Vh And Thermal Overload'): Vh does not reach 70V and driver shutdown because Liquid Lens is too hot.
     *  - \b StatusReadErrorNoAnswer (Display string: 'Status Read Error No Answer'): No response from Liquid Lens.
     *  - \b StatusReadErrorCRC (Display string: 'Status Read Error CRC'): CRC error in response from Liquid Lens.
     *  - \b StatusReadErrorNakAnswer (Display string: 'Status Read Error Nak Answer'): NAK response from Liquid Lens.
     *  - \b StatusReadErrorInvalidAnswer (Display string: 'Status Read Error Invalid Answer'): Invalid Size or Command in response from Liquid Lens.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvLiquidLensStatus;
    /// \brief An integer property. This register increments whenever an error occurred while communicating with the Liquid Lens.
    /**
     *  This register increments whenever an error occurred while communicating with the Liquid Lens.
     */
    PropertyI64 mvLiquidLensErrorCount;
    /// \brief An enumerated integer property. Selects the device power mode.
    /**
     *  Selects the device power mode.
     *
     *  The following string values might be valid for this feature:
     *  - \b mvLiquidLensActive (Display string: 'mv Liquid Lens Active'): Puts the device to power-active mode.
     *  - \b mvLiquidLensStandby (Display string: 'mv Liquid Lens Standby'): Puts the Liquid Lens in power-saving mode. In this mode the device will only consume up to 25 percent of its normal power consumption.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvLiquidLensPowerMode;
    /// \brief An integer property. Focus position value for Liquid Lens.
    /**
     *  Focus position value for Liquid Lens.
     */
    PropertyI64 mvLiquidLensSetFocusValue;
    /// \brief An integer property. Result of the serial receive error detection mechanism.
    /**
     *  Result of the serial receive error detection mechanism. This is a bit field. The bits have the following meaning: 0x1: CRC Error, 0x2: NAK received, 0x4: No response, 0x8 Incorrect answer received.
     */
    PropertyI64 mvLiquidLensReceiveStatus;
    /// \brief A method object. Saves the current Focus position into LiquidLens EEPROM.
    /**
     *  Saves the current Focus position into LiquidLens EEPROM.
     */
    Method mvLiquidLensSaveFocusValue;
    /// \brief An integer property. Returns the firmware version of the Opto Engineering Stepper.
    /**
     *  Returns the firmware version of the Opto Engineering Stepper.
     */
    PropertyI64 mvStepperFirmwareVersion;
    /// \brief An integer property. Result of the serial receive error detection mechanism.
    /**
     *  Result of the serial receive error detection mechanism. This is a bit field. The bits have the following meaning: 0x1: Reserved, 0x2: Mismatch in answer detected, 0x4: No response, 0x8 Incorrect answer received.
     */
    PropertyI64 mvStepperReceiveStatus;
    /// \brief An integer property. This register increments whenever an error occurred while communicating with the Opto Engineering Stepper.
    /**
     *  This register increments whenever an error occurred while communicating with the Opto Engineering Stepper.
     */
    PropertyI64 mvStepperErrorCount;
    /// \brief A boolean property. Controls if the auto-save of motor positions is active.
    /**
     *  Controls if the auto-save of motor positions is active.
     */
    PropertyIBoolean mvStepperAutoSavePositionEnable;
    /// \brief An enumerated integer property. Selects the stepper motor to control.
    /**
     *  Selects the stepper motor to control(Zoom, Iris or Focus).
     *
     *  The following string values might be valid for this feature:
     *  - \b All (Display string: 'All'): All stepper motors are selected.
     *  - \b Zoom (Display string: 'Zoom'): Selects the stepper motor controlling the zoom.
     *  - \b Focus (Display string: 'Focus'): Selects the stepper motor controlling the focus.
     *  - \b Iris (Display string: 'Iris'): Selects the stepper motor controlling the iris.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvStepperMotorSelector;
    /// \brief An enumerated integer property. Returns the current status of the stepper.
    /**
     *  Returns the current status of the stepper.
     *
     *  The following string values might be valid for this feature:
     *  - \b Unknown (Display string: 'Unknown'): The current status of the stepper is unknown.
     *  - \b Moving (Display string: 'Moving'): The selected stepper motor is currently moving.
     *  - \b StoppedAtLowerLimitWithTorque (Display string: 'Stopped At Lower Limit With Torque'): The selected stepper motor has stopped at its lower limit with torque(this should never happen and indicates a problem).
     *  - \b StoppedAtLowerLimit (Display string: 'Stopped At Lower Limit'): The selected stepper motor has stopped at its lower limit.
     *  - \b StoppedAtUpperLimitWithTorque (Display string: 'Stopped At Upper Limit With Torque'): The selected stepper motor has stopped at its upper limit with torque(this should never happen and indicates a problem).
     *  - \b StoppedAtUpperLimit (Display string: 'Stopped At Upper Limit'): The selected stepper motor has stopped at its upper limit.
     *  - \b StoppedWithTorque (Display string: 'Stopped With Torque'): The selected stepper motor has stopped with torque(this should never happen and indicates a problem).
     *  - \b Stopped (Display string: 'Stopped'): The selected stepper motor has stopped.
     *  - \b OvercurrentOrOvertemperatureError (Display string: 'Overcurrent Or Overtemperature Error'): The selected stepper motor either became too hot or is taking in too much current(this should never happen and indicates a problem).
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvStepperStatus;
    /// \brief An integer property. Read current position from stepper.
    /**
     *  Read current position from stepper.
     */
    PropertyI64 mvStepperCurrentPosition;
    /// \brief An integer property. The desired position of the selected stepper motor.
    /**
     *  The desired position of the selected stepper motor. When the motor has not yet reached this position(is moving) this value may differ from 'mvStepperCurrentPosition'.
     */
    PropertyI64 mvStepperDesiredPosition;
    /// \brief A floating point property. Current speed of the selected stepper motor.
    /**
     *  Current speed of the selected stepper motor.
     */
    PropertyF mvStepperSpeed;
    /// \brief A floating point property. Current acceleration of the selected stepper motor.
    /**
     *  Current acceleration of the selected stepper motor.
     */
    PropertyF mvStepperAcceleration;
    /// \brief A floating point property. Manual speed of the selected stepper motor.
    /**
     *  Manual speed of the selected stepper motor.
     */
    PropertyF mvStepperSpeedManual;
    /// \brief An integer property. Selects the stepper parameter set to load or save.
    /**
     *  Selects the stepper parameter set to load or save.
     */
    PropertyI64 mvStepperPositionSetSelector;
    /// \brief A method object. Loads the stepper 'mvStepperDesiredPosition' specified by 'mvStepperPositionSetSelector' and makes it active for each motor.
    /**
     *  Loads the stepper 'mvStepperDesiredPosition' specified by 'mvStepperPositionSetSelector' and makes it active for each motor.
     */
    Method mvStepperPositionSetLoad;
    /// \brief A method object. Saves the stepper 'mvStepperDesiredPosition' specified by 'mvStepperPositionSetSelector' into the steppers non-volatile memory for each motor.
    /**
     *  Saves the stepper 'mvStepperDesiredPosition' specified by 'mvStepperPositionSetSelector' into the steppers non-volatile memory for each motor.
     */
    Method mvStepperPositionSetSave;
    /// \brief A method object. Moves all stepper motors to their home position.
    /**
     *  Moves all stepper motors to their home position.
     */
    Method mvStepperMoveToHomeAll;
    /// \brief A method object. Stops all stepper motors.
    /**
     *  Stops all stepper motors.
     */
    Method mvStepperStopAll;
    // *INDENT-OFF*
    PYTHON_OR_JAVA_ONLY( %mutable; )
    // *INDENT-ON*
};

//-----------------------------------------------------------------------------
/// \brief Contains features to control the I2C interface.
/**
 *  Contains features to control the I2C interface.
 * \ingroup GenICamInterfaceDevice
 */
class mvI2cInterfaceControl
//-----------------------------------------------------------------------------
{
public:
    /// \brief Constructs a new <b>mvIMPACT::acquire::GenICam::mvI2cInterfaceControl</b> object.
    explicit mvI2cInterfaceControl(
        /// [in] A pointer to a <b>mvIMPACT::acquire::Device</b> object obtained from a <b>mvIMPACT::acquire::DeviceManager</b> object.
        mvIMPACT::acquire::Device* pDev,
        /// [in] The name of the driver internal setting to access with this instance.
        /// A list of valid setting names can be obtained by a call to
        /// <b>mvIMPACT::acquire::FunctionInterface::getAvailableSettings</b>, new
        /// settings can be created with the function
        /// <b>mvIMPACT::acquire::FunctionInterface::createSetting</b>
        const std::string& settingName = "Base" ) :
        mvI2cInterfaceEnable(),
        mvI2cInterfaceDeviceAddress(),
        mvI2cInterfaceDeviceSubAddress(),
        mvI2cInterfaceASCIIBuffer(),
        mvI2cInterfaceBinaryBuffer(),
        mvI2cInterfaceBytesToWrite(),
        mvI2cInterfaceBytesToRead(),
        mvI2cInterfaceRead(),
        mvI2cInterfaceWrite(),
        mvI2cInterfaceSpeed()
    {
        pDev->validateInterfaceLayout( dilGenICam );
        mvIMPACT::acquire::DeviceComponentLocator locator( pDev, mvIMPACT::acquire::dltSetting, settingName );
        locator.bindComponent( mvI2cInterfaceEnable, "mvI2cInterfaceEnable" );
        locator.bindComponent( mvI2cInterfaceDeviceAddress, "mvI2cInterfaceDeviceAddress" );
        locator.bindComponent( mvI2cInterfaceDeviceSubAddress, "mvI2cInterfaceDeviceSubAddress" );
        locator.bindComponent( mvI2cInterfaceASCIIBuffer, "mvI2cInterfaceASCIIBuffer" );
        locator.bindComponent( mvI2cInterfaceBinaryBuffer, "mvI2cInterfaceBinaryBuffer" );
        locator.bindComponent( mvI2cInterfaceBytesToWrite, "mvI2cInterfaceBytesToWrite" );
        locator.bindComponent( mvI2cInterfaceBytesToRead, "mvI2cInterfaceBytesToRead" );
        locator.bindComponent( mvI2cInterfaceRead, "mvI2cInterfaceRead@i" );
        locator.bindComponent( mvI2cInterfaceWrite, "mvI2cInterfaceWrite@i" );
        locator.bindComponent( mvI2cInterfaceSpeed, "mvI2cInterfaceSpeed" );
    }
    // *INDENT-OFF*
    PYTHON_OR_JAVA_ONLY( %immutable; )
    // *INDENT-ON*
    /// \brief A boolean property. Controls whether the I2C interface is enabled or not.
    /**
     *  Controls whether the I2C interface is enabled or not.
     */
    PropertyIBoolean mvI2cInterfaceEnable;
    /// \brief An integer property. I2C device address, must be even.
    /**
     *  I2C device address, must be even, blocked addresses: 0x20, 0x30 (Test), 0x32, 0x34, 0x36, 0x3E, 0x60, 0x62, 0x64, 0x66, 0x6E, 0x90, 0x92, 0xA0, 0xA2, 0xA4, 0xA6, 0xAE, 0xB0, 0xB2, 0xB4, 0xB6, 0xB8, 0xBA, 0xBC, 0xBE.
     */
    PropertyI64 mvI2cInterfaceDeviceAddress;
    /// \brief An integer property. I2C device sub address ignored when set to -1, 2 byte address if bit 0x10000 is set, else 1 Byte.
    /**
     *  I2C device sub address ignored when set to -1, 2 byte address if bit 0x10000 is set, else 1 Byte.
     */
    PropertyI64 mvI2cInterfaceDeviceSubAddress;
    /// \brief A string property. Buffer for exchanging ASCII data over the I2C interface. This buffer uses the same memory as 'mvI2cInterfaceBinaryBuffer'.
    /**
     *  Buffer for exchanging ASCII data over the I2C interface. This buffer uses the same memory as 'mvI2cInterfaceBinaryBuffer'.
     */
    PropertyS mvI2cInterfaceASCIIBuffer;
    /// \brief A string property. Buffer for exchanging binary data over the I2C interface. This buffer uses the same memory as 'mvI2cInterfaceASCIIBuffer'.
    /**
     *  Buffer for exchanging binary data over the I2C interface. This buffer uses the same memory as 'mvI2cInterfaceASCIIBuffer'.
     */
    PropertyS mvI2cInterfaceBinaryBuffer;
    /// \brief An integer property. Number of bytes from mvI2cInterfaceBuffer to write to I2C device.
    /**
     *  Number of bytes from mvI2cInterfaceBuffer to write to I2C device.
     */
    PropertyI64 mvI2cInterfaceBytesToWrite;
    /// \brief An integer property. Number of bytes to read from I2C device.
    /**
     *  Number of bytes to read from I2C device.
     */
    PropertyI64 mvI2cInterfaceBytesToRead;
    /// \brief A method object. Command to read data from I2C device.
    /**
     *  Command to read data from I2C device.
     */
    Method mvI2cInterfaceRead;
    /// \brief A method object. Command to write data to I2C device
    /**
     *  Command to write data to I2C device
     */
    Method mvI2cInterfaceWrite;
    /// \brief An enumerated integer property. I2C interface clock frequency.
    /**
     *  I2C interface clock frequency.
     *
     *  The following string values might be valid for this feature:
     *  - \b kHz_100 (Display string: '100 kHz'): default speed
     *  - \b kHz_400 (Display string: '400 kHz'): fast speed
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvI2cInterfaceSpeed;
    // *INDENT-OFF*
    PYTHON_OR_JAVA_ONLY( %mutable; )
    // *INDENT-ON*
};

//-----------------------------------------------------------------------------
/// \brief Custom area.
/**
 *  Custom area.
 * \ingroup GenICamInterfaceDevice
 */
class mvCustomData : public mvIMPACT::acquire::ComponentCollection
//-----------------------------------------------------------------------------
{
public:
    /// \brief Constructs a new <b>mvIMPACT::acquire::GenICam::mvCustomData</b> object.
    explicit mvCustomData(
        /// [in] A pointer to a <b>mvIMPACT::acquire::Device</b> object obtained from a <b>mvIMPACT::acquire::DeviceManager</b> object.
        mvIMPACT::acquire::Device* pDev,
        /// [in] The name of the driver internal setting to access with this instance.
        /// A list of valid setting names can be obtained by a call to
        /// <b>mvIMPACT::acquire::FunctionInterface::getAvailableSettings</b>, new
        /// settings can be created with the function
        /// <b>mvIMPACT::acquire::FunctionInterface::createSetting</b>
        const std::string& settingName = "Base" ) :
        mvIMPACT::acquire::ComponentCollection( pDev ),
        mvCustomText(),
        mvWriteCustomData(),
        mvReadCustomData(),
        mvSensorRegister(),
        mvSensorRegisterValue(),
        mvInternalRegister(),
        mvInternalRegisterValue(),
        mvMSeqRegister(),
        mvMSeqRegisterValue(),
        mvStateSumRegister(),
        mvStat2SumRegister(),
        mvStat3SumRegister(),
        mvStat4SumRegister(),
        mvStat5SumRegister(),
        mvStat6SumRegister(),
        mvStateSumRegisterReset(),
        mvStateSumRegister3Reset(),
        mvLVDSSelection(),
        mvLVDSAlignment(),
        mvRunTest(),
        mvTestNumber(),
        mvTestMin(),
        mvTestMax(),
        mvCustomCommandInterpreterVersionMajor(),
        mvCustomCommandInterpreterVersionMinor(),
        mvCustomCommandBuffer(),
        mvImxSensorType(),
        mvImxSensorIdOne(),
        mvImxGroup(),
        mvImxSensorIdTwo()
    {
        pDev->validateInterfaceLayout( dilGenICam );
        mvIMPACT::acquire::DeviceComponentLocator locator( pDev, mvIMPACT::acquire::dltSetting, settingName );
        locator.bindSearchBase( locator.searchbase_id(), "Camera/GenICam/mvCustomData" );
        m_hRoot = locator.searchbase_id();
        locator.bindComponent( mvCustomText, "mvCustomText" );
        locator.bindComponent( mvWriteCustomData, "mvWriteCustomData@i" );
        locator.bindComponent( mvReadCustomData, "mvReadCustomData@i" );
        locator.bindComponent( mvSensorRegister, "mvSensorRegister" );
        locator.bindComponent( mvSensorRegisterValue, "mvSensorRegisterValue" );
        locator.bindComponent( mvInternalRegister, "mvInternalRegister" );
        locator.bindComponent( mvInternalRegisterValue, "mvInternalRegisterValue" );
        locator.bindComponent( mvMSeqRegister, "mvMSeqRegister" );
        locator.bindComponent( mvMSeqRegisterValue, "mvMSeqRegisterValue" );
        locator.bindComponent( mvStateSumRegister, "mvStateSumRegister" );
        locator.bindComponent( mvStat2SumRegister, "mvStat2SumRegister" );
        locator.bindComponent( mvStat3SumRegister, "mvStat3SumRegister" );
        locator.bindComponent( mvStat4SumRegister, "mvStat4SumRegister" );
        locator.bindComponent( mvStat5SumRegister, "mvStat5SumRegister" );
        locator.bindComponent( mvStat6SumRegister, "mvStat6SumRegister" );
        locator.bindComponent( mvStateSumRegisterReset, "mvStateSumRegisterReset@i" );
        locator.bindComponent( mvStateSumRegister3Reset, "mvStateSumRegister3Reset@i" );
        locator.bindComponent( mvLVDSSelection, "mvLVDSSelection" );
        locator.bindComponent( mvLVDSAlignment, "mvLVDSAlignment" );
        locator.bindComponent( mvRunTest, "mvRunTest@i" );
        locator.bindComponent( mvTestNumber, "mvTestNumber" );
        locator.bindComponent( mvTestMin, "mvTestMin" );
        locator.bindComponent( mvTestMax, "mvTestMax" );
        locator.bindComponent( mvCustomCommandInterpreterVersionMajor, "mvCustomCommandInterpreterVersionMajor" );
        locator.bindComponent( mvCustomCommandInterpreterVersionMinor, "mvCustomCommandInterpreterVersionMinor" );
        locator.bindComponent( mvCustomCommandBuffer, "mvCustomCommandBuffer" );
        locator.bindComponent( mvImxSensorType, "mvImxSensorType" );
        locator.bindComponent( mvImxSensorIdOne, "mvImxSensorIdOne" );
        locator.bindComponent( mvImxGroup, "mvImxGroup" );
        locator.bindComponent( mvImxSensorIdTwo, "mvImxSensorIdTwo" );
    }
    // *INDENT-OFF*
    PYTHON_OR_JAVA_ONLY( %immutable; )
    // *INDENT-ON*
    /// \brief A string property. Custom text.
    /**
     *  Custom text.
     */
    PropertyS mvCustomText;
    /// \brief A method object. Function to write custom data.
    /**
     *  Function to write custom data.
     */
    Method mvWriteCustomData;
    /// \brief A method object. Function to read custom data.
    /**
     *  Function to read custom data.
     */
    Method mvReadCustomData;
    /// \brief An integer property. Sensor register address to access.
    /**
     *  Sensor register address to access.
     */
    PropertyI64 mvSensorRegister;
    /// \brief An integer property. Value of sensor register.
    /**
     *  Value of sensor register.
     */
    PropertyI64 mvSensorRegisterValue;
    /// \brief An integer property. Register address to access.
    /**
     *  Register address to access.
     */
    PropertyI64 mvInternalRegister;
    /// \brief An integer property. Value of internal register.
    /**
     *  Value of internal register.
     */
    PropertyI64 mvInternalRegisterValue;
    /// \brief An integer property. Register address to access.
    /**
     *  Register address to access.
     */
    PropertyI64 mvMSeqRegister;
    /// \brief An integer property. Value of mseq register.
    /**
     *  Value of mseq register.
     */
    PropertyI64 mvMSeqRegisterValue;
    /// \brief An integer property. Indicates several states besides some other info.
    /**
     *  Indicates several states besides some other info.
     */
    PropertyI64 mvStateSumRegister;
    /// \brief An integer property. Indicates several states besides some other info.
    /**
     *  Indicates several states besides some other info.
     */
    PropertyI64 mvStat2SumRegister;
    /// \brief An integer property. Indicates several states besides some other info.
    /**
     *  Indicates several states besides some other info.
     */
    PropertyI64 mvStat3SumRegister;
    /// \brief An integer property. Indicates several states besides some other info.
    /**
     *  Indicates several states besides some other info.
     */
    PropertyI64 mvStat4SumRegister;
    /// \brief An integer property. Indicates several states besides some other info.
    /**
     *  Indicates several states besides some other info.
     */
    PropertyI64 mvStat5SumRegister;
    /// \brief An integer property. Indicates several states besides some other info.
    /**
     *  Indicates several states besides some other info.
     */
    PropertyI64 mvStat6SumRegister;
    /// \brief A method object. Resets the state register.
    /**
     *  Resets the state register.
     */
    Method mvStateSumRegisterReset;
    /// \brief A method object. Resets the state register.
    /**
     *  Resets the state register.
     */
    Method mvStateSumRegister3Reset;
    /// \brief An integer property. Selector for LVDS lanes.
    /**
     *  Selector for LVDS lanes.
     */
    PropertyI64 mvLVDSSelection;
    /// \brief An integer property. Alignment of LVDS lanes.
    /**
     *  Alignment of LVDS lanes.
     */
    PropertyI64 mvLVDSAlignment;
    /// \brief A method object. Runs internal test.
    /**
     *  Runs internal test.
     */
    Method mvRunTest;
    /// \brief An integer property. Number of test to run.
    /**
     *  Number of test to run.
     */
    PropertyI64 mvTestNumber;
    /// \brief An integer property. Min number for test.
    /**
     *  Min number for test.
     */
    PropertyI64 mvTestMin;
    /// \brief An integer property. Max number for test.
    /**
     *  Max number for test.
     */
    PropertyI64 mvTestMax;
    /// \brief An integer property. Returns the major version of the custom command interpreter on the device.
    /**
     *  Returns the major version of the custom command interpreter on the device.
     */
    PropertyI64 mvCustomCommandInterpreterVersionMajor;
    /// \brief An integer property. Returns the minor version of the custom command interpreter on the device.
    /**
     *  Returns the minor version of the custom command interpreter on the device.
     */
    PropertyI64 mvCustomCommandInterpreterVersionMinor;
    /// \brief A string property. Command buffer for custom commands.
    /**
     *  Command buffer for custom commands.
     */
    PropertyS mvCustomCommandBuffer;
    /// \brief An enumerated integer property. IMX sensor type from registers.
    /**
     *  IMX sensor type from registers.
     *
     *  The following string values might be valid for this feature:
     *  - \b mvUnknown (Display string: 'mv Unknown'): unknown or TS
     *  - \b IMX250G (Display string: 'IMX250G'): IMX250 Grey
     *  - \b IMX250G_POL (Display string: 'IMX250G_POL'): IMX250 Grey with POL filter
     *  - \b IMX250C (Display string: 'IMX250C'): IMX250 Color
     *  - \b IMX250C_POL (Display string: 'IMX250C_POL'): IMX250 Color with POL filter
     *  - \b IMX252G (Display string: 'IMX252G'): IMX252 Grey
     *  - \b IMX252C (Display string: 'IMX252C'): IMX252 Color
     *  - \b IMX253G (Display string: 'IMX253G'): IMX253 Grey
     *  - \b IMX253C (Display string: 'IMX253C'): IMX253 Color
     *  - \b IMX255G (Display string: 'IMX255G'): IMX255 Grey
     *  - \b IMX255C (Display string: 'IMX255C'): IMX255 Color
     *  - \b IMX264G (Display string: 'IMX264G'): IMX264 Grey
     *  - \b IMX264C (Display string: 'IMX264C'): IMX264 Color
     *  - \b IMX265G (Display string: 'IMX265G'): IMX265 Grey
     *  - \b IMX265C (Display string: 'IMX265C'): IMX265 Color
     *  - \b IMX267G (Display string: 'IMX267G'): IMX267 Grey
     *  - \b IMX267C (Display string: 'IMX267C'): IMX267 Color
     *  - \b IMX273G (Display string: 'IMX273G'): IMX273 Grey
     *  - \b IMX273C (Display string: 'IMX273C'): IMX273 Color
     *  - \b IMX392G (Display string: 'IMX392G'): IMX392 Grey
     *  - \b IMX392C (Display string: 'IMX392C'): IMX392 Color
     *  - \b IMX287G (Display string: 'IMX287G'): IMX287 Grey
     *  - \b IMX287C (Display string: 'IMX287C'): IMX287 Color
     *  - \b IMX304G (Display string: 'IMX304G'): IMX304 Grey
     *  - \b IMX304C (Display string: 'IMX304C'): IMX304 Color
     *  - \b IMX342G (Display string: 'IMX342G'): IMX342 Grey
     *  - \b IMX342C (Display string: 'IMX342C'): IMX342 Color
     *  - \b IMX367G (Display string: 'IMX367G'): IMX367 Grey
     *  - \b IMX367C (Display string: 'IMX367C'): IMX367 Color
     *  - \b IMX387G (Display string: 'IMX387G'): IMX387 Grey
     *  - \b IMX387C (Display string: 'IMX387C'): IMX387 Color
     *  - \b IMX420G (Display string: 'IMX420G'): IMX420 Grey
     *  - \b IMX420C (Display string: 'IMX420C'): IMX420 Color
     *  - \b IMX425G (Display string: 'IMX425G'): IMX425 Grey
     *  - \b IMX425C (Display string: 'IMX425C'): IMX425 Color
     *  - \b IMX428G (Display string: 'IMX428G'): IMX428 Grey
     *  - \b IMX428C (Display string: 'IMX428C'): IMX428 Color
     *  - \b IMX430G (Display string: 'IMX430G'): IMX430 Grey
     *  - \b IMX430C (Display string: 'IMX430C'): IMX430 Color
     *  - \b IMX432G (Display string: 'IMX432G'): IMX432 Grey
     *  - \b IMX432C (Display string: 'IMX432C'): IMX432 Color
     *  - \b IMX531G (Display string: 'IMX531G'): IMX531 Grey
     *  - \b IMX531C (Display string: 'IMX531C'): IMX531 Color
     *  - \b IMX532G (Display string: 'IMX532G'): IMX532 Grey
     *  - \b IMX532C (Display string: 'IMX532C'): IMX532 Color
     *  - \b IMX535G (Display string: 'IMX535G'): IMX535 Grey
     *  - \b IMX535C (Display string: 'IMX535C'): IMX535 Color
     *  - \b IMX540G (Display string: 'IMX540G'): IMX540 Grey
     *  - \b IMX540C (Display string: 'IMX540C'): IMX540 Color
     *  - \b IMX541G (Display string: 'IMX541G'): IMX541 Grey
     *  - \b IMX541C (Display string: 'IMX541C'): IMX541 Color
     *  - \b IMX542G (Display string: 'IMX542G'): IMX542 Grey
     *  - \b IMX542C (Display string: 'IMX542C'): IMX542 Color
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvImxSensorType;
    /// \brief An integer property. IMX SensorID1
    /**
     *  IMX SensorID1
     */
    PropertyI64 mvImxSensorIdOne;
    /// \brief An enumerated integer property. IMX Group
    /**
     *  IMX Group
     *
     *  The following string values might be valid for this feature:
     *  - \b mvUnknown (Display string: 'mv Unknown'): unknown
     *  - \b V2TypeOneGroup (Display string: 'V2 Type One Group'): Type 1/1 Group: IMX253/255/267/304/305 (2nd Generation GS-CIS)
     *  - \b V2TypeTwoThirdsGroup (Display string: 'V2 Type Two Thirds Group'): Type 2/3 Group: IMX250/252/264/265 (2nd Generation GS-CIS)
     *  - \b V2TypeOneThirdGroup (Display string: 'V2 Type One Third Group'): Type 1/3 Group: IMX273/287/296/297/392 (2nd Generation GS-CIS)
     *  - \b V25Group342 (Display string: 'V2.5 Group 342'): Group 342: IMX342/367/387 (IMX342 GS-CIS)
     *  - \b V3Group1 (Display string: 'V3 Group 1'): Group 1: IMX420/428 (3rd Generation GS-CIS)
     *  - \b V3Group2 (Display string: 'V3 Group 2'): Group 2: IMX421/422/429/430/437 (3rd Generation GS-CIS)
     *  - \b V3Group3 (Display string: 'V3 Group 3'): Group 3: IMX425/432 (3rd Generation GS-CIS)
     *  - \b V3Group4 (Display string: 'V3 Group 4'): Group 4: IMX426/433 (3rd Generation GS-CIS)
     *  - \b V4Group1 (Display string: 'V4 Group 1'): Group 1: IMX530/540 (4th Generation GS-CIS)
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvImxGroup;
    /// \brief An integer property. IMX SensorID2
    /**
     *  IMX SensorID2
     */
    PropertyI64 mvImxSensorIdTwo;
    // *INDENT-OFF*
    PYTHON_OR_JAVA_ONLY( %mutable; )
    // *INDENT-ON*
};

//-----------------------------------------------------------------------------
/// \brief Category that contains features to control the devices Logic Gate Control parameters.
/**
 *  A category that contains features to control the devices Logic Gate Control parameters.
 * \ingroup GenICamInterfaceDevice
 */
class mvLogicGateControl : public mvIMPACT::acquire::ComponentCollection
//-----------------------------------------------------------------------------
{
public:
    /// \brief Constructs a new <b>mvIMPACT::acquire::GenICam::mvLogicGateControl</b> object.
    explicit mvLogicGateControl(
        /// [in] A pointer to a <b>mvIMPACT::acquire::Device</b> object obtained from a <b>mvIMPACT::acquire::DeviceManager</b> object.
        mvIMPACT::acquire::Device* pDev,
        /// [in] The name of the driver internal setting to access with this instance.
        /// A list of valid setting names can be obtained by a call to
        /// <b>mvIMPACT::acquire::FunctionInterface::getAvailableSettings</b>, new
        /// settings can be created with the function
        /// <b>mvIMPACT::acquire::FunctionInterface::createSetting</b>
        const std::string& settingName = "Base" ) :
        mvIMPACT::acquire::ComponentCollection( pDev ),
        mvLogicGateANDSelector(),
        mvLogicGateANDSource1(),
        mvANDSource1Inverter(),
        mvLogicGateANDSource2(),
        mvANDSource2Inverter(),
        mvLogicGateORSelector(),
        mvLogicGateORSource1(),
        mvLogicGateORSource2(),
        mvLogicGateORSource3(),
        mvLogicGateORSource4(),
        mvLogicGateSourceSelector(),
        mvLogicGateSource(),
        mvLogicGateSourceInverter(),
        mvLogicGateANDTermSelector(),
        mvLogicGateANDTermSrc0(),
        mvLogicGateANDTermSrc1(),
        mvLogicGateORTermSelector(),
        mvLogicGateORTermSrc0(),
        mvLogicGateORTermSrc1()
    {
        pDev->validateInterfaceLayout( dilGenICam );
        mvIMPACT::acquire::DeviceComponentLocator locator( pDev, mvIMPACT::acquire::dltSetting, settingName );
        locator.bindSearchBase( locator.searchbase_id(), "Camera/GenICam/mvLogicGateControl" );
        m_hRoot = locator.searchbase_id();
        locator.bindComponent( mvLogicGateANDSelector, "mvLogicGateANDSelector" );
        locator.bindComponent( mvLogicGateANDSource1, "mvLogicGateANDSource1" );
        locator.bindComponent( mvANDSource1Inverter, "mvANDSource1Inverter" );
        locator.bindComponent( mvLogicGateANDSource2, "mvLogicGateANDSource2" );
        locator.bindComponent( mvANDSource2Inverter, "mvANDSource2Inverter" );
        locator.bindComponent( mvLogicGateORSelector, "mvLogicGateORSelector" );
        locator.bindComponent( mvLogicGateORSource1, "mvLogicGateORSource1" );
        locator.bindComponent( mvLogicGateORSource2, "mvLogicGateORSource2" );
        locator.bindComponent( mvLogicGateORSource3, "mvLogicGateORSource3" );
        locator.bindComponent( mvLogicGateORSource4, "mvLogicGateORSource4" );
        locator.bindComponent( mvLogicGateSourceSelector, "mvLogicGateSourceSelector" );
        locator.bindComponent( mvLogicGateSource, "mvLogicGateSource" );
        locator.bindComponent( mvLogicGateSourceInverter, "mvLogicGateSourceInverter" );
        locator.bindComponent( mvLogicGateANDTermSelector, "mvLogicGateANDTermSelector" );
        locator.bindComponent( mvLogicGateANDTermSrc0, "mvLogicGateANDTermSrc0" );
        locator.bindComponent( mvLogicGateANDTermSrc1, "mvLogicGateANDTermSrc1" );
        locator.bindComponent( mvLogicGateORTermSelector, "mvLogicGateORTermSelector" );
        locator.bindComponent( mvLogicGateORTermSrc0, "mvLogicGateORTermSrc0" );
        locator.bindComponent( mvLogicGateORTermSrc1, "mvLogicGateORTermSrc1" );
    }
    // *INDENT-OFF*
    PYTHON_OR_JAVA_ONLY( %immutable; )
    // *INDENT-ON*
    /// \brief An enumerated integer property. Selects the AND gate to configure.
    /**
     *  This enumeration selects the AND gate to configure.
     *
     *  The following string values might be valid for this feature:
     *  - \b mvLogicGateAND1 (Display string: 'mv Logic Gate AND 1')
     *  - \b mvLogicGateAND2 (Display string: 'mv Logic Gate AND 2')
     *  - \b mvLogicGateAND3 (Display string: 'mv Logic Gate AND 3')
     *  - \b mvLogicGateAND4 (Display string: 'mv Logic Gate AND 4')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvLogicGateANDSelector;
    /// \brief An enumerated integer property. Selects the first input signal of the AND gate selected by mvLogicGateANDSelector.
    /**
     *  This enumeration can be used to select the first input signal of the AND gate selected by mvLogicGateANDSelector.
     *
     *  The following string values might be valid for this feature:
     *  - \b Off (Display string: 'Off')
     *  - \b Line4 (Display string: 'Line 4')
     *  - \b Line5 (Display string: 'Line 5')
     *  - \b Line6 (Display string: 'Line 6')
     *  - \b Line7 (Display string: 'Line 7')
     *  - \b Line12 (Display string: 'Line 12')
     *  - \b Line13 (Display string: 'Line 13')
     *  - \b Line14 (Display string: 'Line 14')
     *  - \b Line15 (Display string: 'Line 15')
     *  - \b ExposureActive (Display string: 'Exposure Active')
     *  - \b mvExposureSensor2Active (Display string: 'mv Exposure Sensor 2 Active')
     *  - \b UserOutput0 (Display string: 'User Output 0')
     *  - \b UserOutput1 (Display string: 'User Output 1')
     *  - \b UserOutput2 (Display string: 'User Output 2')
     *  - \b UserOutput3 (Display string: 'User Output 3')
     *  - \b UserOutput4 (Display string: 'User Output 4')
     *  - \b UserOutput5 (Display string: 'User Output 5')
     *  - \b UserOutput6 (Display string: 'User Output 6')
     *  - \b UserOutput7 (Display string: 'User Output 7')
     *  - \b Timer1Active (Display string: 'Timer 1 Active')
     *  - \b Timer2Active (Display string: 'Timer 2 Active')
     *  - \b Timer3Active (Display string: 'Timer 3 Active')
     *  - \b Counter1Active (Display string: 'Counter 1 Active')
     *  - \b Counter2Active (Display string: 'Counter 2 Active')
     *  - \b Counter3Active (Display string: 'Counter 3 Active')
     *  - \b Counter4Active (Display string: 'Counter 4 Active')
     *  - \b Counter5Active (Display string: 'Counter 5 Active')
     *  - \b Counter6Active (Display string: 'Counter 6 Active')
     *  - \b Counter7Active (Display string: 'Counter 7 Active')
     *  - \b Counter8Active (Display string: 'Counter 8 Active')
     *  - \b AcquisitionActive (Display string: 'Acquisition Active')
     *  - \b FrameActive (Display string: 'Frame Active')
     *  - \b LineActive (Display string: 'Line Active')
     *  - \b FrameTriggerWait (Display string: 'Frame Trigger Wait')
     *  - \b mvTemperatureOutOfRange (Display string: 'mv Temperature Out Of Range')
     *  - \b mvExposureActive (Display string: 'mv Exposure Active')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvLogicGateANDSource1;
    /// \brief A boolean property. Inverts the first input signal of the AND gate selected by mvLogicGateANDSelector
    /**
     *  Inverts the first input signal of the AND gate selected by mvLogicGateANDSelector
     */
    PropertyIBoolean mvANDSource1Inverter;
    /// \brief An enumerated integer property. Selects the second input signal of the AND gate selected by mvLogicGateANDSelector.
    /**
     *  This enumeration can be used to select the second input signal of the AND gate selected by mvLogicGateANDSelector.
     *
     *  The following string values might be valid for this feature:
     *  - \b Off (Display string: 'Off')
     *  - \b Line4 (Display string: 'Line 4')
     *  - \b Line5 (Display string: 'Line 5')
     *  - \b Line6 (Display string: 'Line 6')
     *  - \b Line7 (Display string: 'Line 7')
     *  - \b Line12 (Display string: 'Line 12')
     *  - \b Line13 (Display string: 'Line 13')
     *  - \b Line14 (Display string: 'Line 14')
     *  - \b Line15 (Display string: 'Line 15')
     *  - \b ExposureActive (Display string: 'Exposure Active')
     *  - \b mvExposureSensor2Active (Display string: 'mv Exposure Sensor 2 Active')
     *  - \b UserOutput0 (Display string: 'User Output 0')
     *  - \b UserOutput1 (Display string: 'User Output 1')
     *  - \b UserOutput2 (Display string: 'User Output 2')
     *  - \b UserOutput3 (Display string: 'User Output 3')
     *  - \b UserOutput4 (Display string: 'User Output 4')
     *  - \b UserOutput5 (Display string: 'User Output 5')
     *  - \b UserOutput6 (Display string: 'User Output 6')
     *  - \b UserOutput7 (Display string: 'User Output 7')
     *  - \b Timer1Active (Display string: 'Timer 1 Active')
     *  - \b Timer2Active (Display string: 'Timer 2 Active')
     *  - \b Timer3Active (Display string: 'Timer 3 Active')
     *  - \b Counter1Active (Display string: 'Counter 1 Active')
     *  - \b Counter2Active (Display string: 'Counter 2 Active')
     *  - \b Counter3Active (Display string: 'Counter 3 Active')
     *  - \b Counter4Active (Display string: 'Counter 4 Active')
     *  - \b Counter5Active (Display string: 'Counter 5 Active')
     *  - \b Counter6Active (Display string: 'Counter 6 Active')
     *  - \b Counter7Active (Display string: 'Counter 7 Active')
     *  - \b Counter8Active (Display string: 'Counter 8 Active')
     *  - \b AcquisitionActive (Display string: 'Acquisition Active')
     *  - \b FrameActive (Display string: 'Frame Active')
     *  - \b LineActive (Display string: 'Line Active')
     *  - \b FrameTriggerWait (Display string: 'Frame Trigger Wait')
     *  - \b mvTemperatureOutOfRange (Display string: 'mv Temperature Out Of Range')
     *  - \b mvExposureActive (Display string: 'mv Exposure Active')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvLogicGateANDSource2;
    /// \brief A boolean property. Inverts the second input signal of the AND gate selected by mvLogicGateANDSelector
    /**
     *  Inverts the second input signal of the AND gate selected by mvLogicGateANDSelector
     */
    PropertyIBoolean mvANDSource2Inverter;
    /// \brief An enumerated integer property. Selects the OR gate to configure.
    /**
     *  This enumeration selects the OR gate to configure.
     *
     *  The following string values might be valid for this feature:
     *  - \b mvLogicGateOR1 (Display string: 'mv Logic Gate OR 1')
     *  - \b mvLogicGateOR2 (Display string: 'mv Logic Gate OR 2')
     *  - \b mvLogicGateOR3 (Display string: 'mv Logic Gate OR 3')
     *  - \b mvLogicGateOR4 (Display string: 'mv Logic Gate OR 4')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvLogicGateORSelector;
    /// \brief An enumerated integer property. Selects the first input signal of the OR gate selected by mvLogicGateORSelector.
    /**
     *  This enumeration can be used to select the first input signal of the OR gate selected by mvLogicGateORSelector.
     *
     *  The following string values might be valid for this feature:
     *  - \b mvLogicGateAND1Output (Display string: 'mv Logic Gate AND 1 Output')
     *  - \b mvLogicGateAND2Output (Display string: 'mv Logic Gate AND 2 Output')
     *  - \b mvLogicGateAND3Output (Display string: 'mv Logic Gate AND 3 Output')
     *  - \b mvLogicGateAND4Output (Display string: 'mv Logic Gate AND 4 Output')
     *  - \b Off (Display string: 'Off')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvLogicGateORSource1;
    /// \brief An enumerated integer property. Selects the second input signal of the OR gate selected by mvLogicGateORSelector.
    /**
     *  This enumeration can be used to select the second input signal of the OR gate selected by mvLogicGateORSelector.
     *
     *  The following string values might be valid for this feature:
     *  - \b mvLogicGateAND1Output (Display string: 'mv Logic Gate AND 1 Output')
     *  - \b mvLogicGateAND2Output (Display string: 'mv Logic Gate AND 2 Output')
     *  - \b mvLogicGateAND3Output (Display string: 'mv Logic Gate AND 3 Output')
     *  - \b mvLogicGateAND4Output (Display string: 'mv Logic Gate AND 4 Output')
     *  - \b Off (Display string: 'Off')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvLogicGateORSource2;
    /// \brief An enumerated integer property. Selects the third input signal of the OR gate selected by mvLogicGateORSelector.
    /**
     *  This enumeration can be used to select the third input signal of the OR gate selected by mvLogicGateORSelector.
     *
     *  The following string values might be valid for this feature:
     *  - \b mvLogicGateAND1Output (Display string: 'mv Logic Gate AND 1 Output')
     *  - \b mvLogicGateAND2Output (Display string: 'mv Logic Gate AND 2 Output')
     *  - \b mvLogicGateAND3Output (Display string: 'mv Logic Gate AND 3 Output')
     *  - \b mvLogicGateAND4Output (Display string: 'mv Logic Gate AND 4 Output')
     *  - \b Off (Display string: 'Off')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvLogicGateORSource3;
    /// \brief An enumerated integer property. Selects the fourth input signal of the OR gate selected by mvLogicGateORSelector.
    /**
     *  This enumeration can be used to select the fourth input signal of the OR gate selected by mvLogicGateORSelector.
     *
     *  The following string values might be valid for this feature:
     *  - \b mvLogicGateAND1Output (Display string: 'mv Logic Gate AND 1 Output')
     *  - \b mvLogicGateAND2Output (Display string: 'mv Logic Gate AND 2 Output')
     *  - \b mvLogicGateAND3Output (Display string: 'mv Logic Gate AND 3 Output')
     *  - \b mvLogicGateAND4Output (Display string: 'mv Logic Gate AND 4 Output')
     *  - \b Off (Display string: 'Off')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvLogicGateORSource4;
    /// \brief An enumerated integer property. Selects the LogicGateSource of the AND-OR-Matrix.
    /**
     *  Selects the LogicGateSource of the AND-OR-Matrix.
     *
     *  The following string values might be valid for this feature:
     *  - \b mvLogicGateSource0 (Display string: 'mv Logic Gate Source 0')
     *  - \b mvLogicGateSource1 (Display string: 'mv Logic Gate Source 1')
     *  - \b mvLogicGateSource2 (Display string: 'mv Logic Gate Source 2')
     *  - \b mvLogicGateSource3 (Display string: 'mv Logic Gate Source 3')
     *  - \b mvLogicGateSource4 (Display string: 'mv Logic Gate Source 4')
     *  - \b mvLogicGateSource5 (Display string: 'mv Logic Gate Source 5')
     *  - \b mvLogicGateSource6 (Display string: 'mv Logic Gate Source 6')
     *  - \b mvLogicGateSource7 (Display string: 'mv Logic Gate Source 7')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvLogicGateSourceSelector;
    /// \brief An enumerated integer property. Selects the input signal of the AND-OR-Matrix selected by mvLogicGateSourceSelector.
    /**
     *  Selects the input signal of the AND-OR-Matrix selected by mvLogicGateSourceSelector.
     *
     *  The following string values might be valid for this feature:
     *  - \b Off (Display string: 'Off')
     *  - \b Line4 (Display string: 'Line 4')
     *  - \b Line5 (Display string: 'Line 5')
     *  - \b Line6 (Display string: 'Line 6')
     *  - \b Line7 (Display string: 'Line 7')
     *  - \b ExposureActive (Display string: 'Exposure Active')
     *  - \b mvExposureSensor2Active (Display string: 'mv Exposure Sensor 2 Active')
     *  - \b UserOutput0 (Display string: 'User Output 0')
     *  - \b UserOutput1 (Display string: 'User Output 1')
     *  - \b UserOutput2 (Display string: 'User Output 2')
     *  - \b UserOutput3 (Display string: 'User Output 3')
     *  - \b UserOutput4 (Display string: 'User Output 4')
     *  - \b UserOutput5 (Display string: 'User Output 5')
     *  - \b UserOutput6 (Display string: 'User Output 6')
     *  - \b UserOutput7 (Display string: 'User Output 7')
     *  - \b Timer1Active (Display string: 'Timer 1 Active')
     *  - \b Timer2Active (Display string: 'Timer 2 Active')
     *  - \b Timer3Active (Display string: 'Timer 3 Active')
     *  - \b Counter1Active (Display string: 'Counter 1 Active')
     *  - \b Counter2Active (Display string: 'Counter 2 Active')
     *  - \b Counter3Active (Display string: 'Counter 3 Active')
     *  - \b Counter4Active (Display string: 'Counter 4 Active')
     *  - \b Counter5Active (Display string: 'Counter 5 Active')
     *  - \b Counter6Active (Display string: 'Counter 6 Active')
     *  - \b Counter7Active (Display string: 'Counter 7 Active')
     *  - \b Counter8Active (Display string: 'Counter 8 Active')
     *  - \b AcquisitionActive (Display string: 'Acquisition Active')
     *  - \b FrameActive (Display string: 'Frame Active')
     *  - \b LineActive (Display string: 'Line Active')
     *  - \b FrameTriggerWait (Display string: 'Frame Trigger Wait')
     *  - \b mvTemperatureOutOfRange (Display string: 'mv Temperature Out Of Range')
     *  - \b mvExposureActive (Display string: 'mv Exposure Active')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvLogicGateSource;
    /// \brief A boolean property. Inverts the input signal.
    /**
     *  Inverts the input signal.
     */
    PropertyIBoolean mvLogicGateSourceInverter;
    /// \brief An enumerated integer property. Selects the AND-term of the AND-OR-matrix.
    /**
     *  Selects the AND-term of the AND-OR-matrix.
     *
     *  The following string values might be valid for this feature:
     *  - \b mvLogicGateANDTerm0 (Display string: 'mv Logic Gate AND Term 0')
     *  - \b mvLogicGateANDTerm1 (Display string: 'mv Logic Gate AND Term 1')
     *  - \b mvLogicGateANDTerm2 (Display string: 'mv Logic Gate AND Term 2')
     *  - \b mvLogicGateANDTerm3 (Display string: 'mv Logic Gate AND Term 3')
     *  - \b mvLogicGateANDTerm4 (Display string: 'mv Logic Gate AND Term 4')
     *  - \b mvLogicGateANDTerm5 (Display string: 'mv Logic Gate AND Term 5')
     *  - \b mvLogicGateANDTerm6 (Display string: 'mv Logic Gate AND Term 6')
     *  - \b mvLogicGateANDTerm7 (Display string: 'mv Logic Gate AND Term 7')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvLogicGateANDTermSelector;
    /// \brief An enumerated integer property. Selects the first input signal of the AND-term selected by mvLogicGateANDTermSelector.
    /**
     *  Selects the first input signal of the AND-term selected by mvLogicGateANDTermSelector.
     *
     *  The following string values might be valid for this feature:
     *  - \b Off (Display string: 'Off')
     *  - \b mvLogicGateSource0 (Display string: 'mv Logic Gate Source 0')
     *  - \b mvLogicGateSource1 (Display string: 'mv Logic Gate Source 1')
     *  - \b mvLogicGateSource2 (Display string: 'mv Logic Gate Source 2')
     *  - \b mvLogicGateSource3 (Display string: 'mv Logic Gate Source 3')
     *  - \b mvLogicGateSource4 (Display string: 'mv Logic Gate Source 4')
     *  - \b mvLogicGateSource5 (Display string: 'mv Logic Gate Source 5')
     *  - \b mvLogicGateSource6 (Display string: 'mv Logic Gate Source 6')
     *  - \b mvLogicGateSource7 (Display string: 'mv Logic Gate Source 7')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvLogicGateANDTermSrc0;
    /// \brief An enumerated integer property. Selects the second input signal of the AND-term selected by mvLogicGateANDTermSelector.
    /**
     *  Selects the second input signal of the AND-term selected by mvLogicGateANDTermSelector.
     *
     *  The following string values might be valid for this feature:
     *  - \b Off (Display string: 'Off')
     *  - \b mvLogicGateSource0 (Display string: 'mv Logic Gate Source 0')
     *  - \b mvLogicGateSource1 (Display string: 'mv Logic Gate Source 1')
     *  - \b mvLogicGateSource2 (Display string: 'mv Logic Gate Source 2')
     *  - \b mvLogicGateSource3 (Display string: 'mv Logic Gate Source 3')
     *  - \b mvLogicGateSource4 (Display string: 'mv Logic Gate Source 4')
     *  - \b mvLogicGateSource5 (Display string: 'mv Logic Gate Source 5')
     *  - \b mvLogicGateSource6 (Display string: 'mv Logic Gate Source 6')
     *  - \b mvLogicGateSource7 (Display string: 'mv Logic Gate Source 7')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvLogicGateANDTermSrc1;
    /// \brief An enumerated integer property. Selects the OR-term of the AND-OR-matrix.
    /**
     *  Selects the OR-term of the AND-OR-matrix.
     *
     *  The following string values might be valid for this feature:
     *  - \b mvLogicGateORTerm0 (Display string: 'mv Logic Gate OR Term 0')
     *  - \b mvLogicGateORTerm1 (Display string: 'mv Logic Gate OR Term 1')
     *  - \b mvLogicGateORTerm2 (Display string: 'mv Logic Gate OR Term 2')
     *  - \b mvLogicGateORTerm3 (Display string: 'mv Logic Gate OR Term 3')
     *  - \b mvLogicGateORTerm4 (Display string: 'mv Logic Gate OR Term 4')
     *  - \b mvLogicGateORTerm5 (Display string: 'mv Logic Gate OR Term 5')
     *  - \b mvLogicGateORTerm6 (Display string: 'mv Logic Gate OR Term 6')
     *  - \b mvLogicGateORTerm7 (Display string: 'mv Logic Gate OR Term 7')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvLogicGateORTermSelector;
    /// \brief An enumerated integer property. Selects the first input signal of the ORTerm selected by mvLogicGateORTermSelector.
    /**
     *  Selects the first input signal of the ORTerm selected by mvLogicGateORTermSelector.
     *
     *  The following string values might be valid for this feature:
     *  - \b Off (Display string: 'Off')
     *  - \b mvLogicGateANDTerm0 (Display string: 'mv Logic Gate AND Term 0')
     *  - \b mvLogicGateANDTerm1 (Display string: 'mv Logic Gate AND Term 1')
     *  - \b mvLogicGateANDTerm2 (Display string: 'mv Logic Gate AND Term 2')
     *  - \b mvLogicGateANDTerm3 (Display string: 'mv Logic Gate AND Term 3')
     *  - \b mvLogicGateANDTerm4 (Display string: 'mv Logic Gate AND Term 4')
     *  - \b mvLogicGateANDTerm5 (Display string: 'mv Logic Gate AND Term 5')
     *  - \b mvLogicGateANDTerm6 (Display string: 'mv Logic Gate AND Term 6')
     *  - \b mvLogicGateANDTerm7 (Display string: 'mv Logic Gate AND Term 7')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvLogicGateORTermSrc0;
    /// \brief An enumerated integer property. Selects the second input signal of the ORTerm selected by mvLogicGateORTermSelector.
    /**
     *  Selects the second input signal of the ORTerm selected by mvLogicGateORTermSelector.
     *
     *  The following string values might be valid for this feature:
     *  - \b Off (Display string: 'Off')
     *  - \b mvLogicGateANDTerm0 (Display string: 'mv Logic Gate AND Term 0')
     *  - \b mvLogicGateANDTerm1 (Display string: 'mv Logic Gate AND Term 1')
     *  - \b mvLogicGateANDTerm2 (Display string: 'mv Logic Gate AND Term 2')
     *  - \b mvLogicGateANDTerm3 (Display string: 'mv Logic Gate AND Term 3')
     *  - \b mvLogicGateANDTerm4 (Display string: 'mv Logic Gate AND Term 4')
     *  - \b mvLogicGateANDTerm5 (Display string: 'mv Logic Gate AND Term 5')
     *  - \b mvLogicGateANDTerm6 (Display string: 'mv Logic Gate AND Term 6')
     *  - \b mvLogicGateANDTerm7 (Display string: 'mv Logic Gate AND Term 7')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvLogicGateORTermSrc1;
    // *INDENT-OFF*
    PYTHON_OR_JAVA_ONLY( %mutable; )
    // *INDENT-ON*
};

//-----------------------------------------------------------------------------
/// \brief Category that contains features to control the devices Current Control parameters.
/**
 *  A category that contains features to control the devices Current Control parameters.
 * \ingroup GenICamInterfaceDevice
 */
class mvCurrentControl : public mvIMPACT::acquire::ComponentCollection
//-----------------------------------------------------------------------------
{
public:
    /// \brief Constructs a new <b>mvIMPACT::acquire::GenICam::mvCurrentControl</b> object.
    explicit mvCurrentControl(
        /// [in] A pointer to a <b>mvIMPACT::acquire::Device</b> object obtained from a <b>mvIMPACT::acquire::DeviceManager</b> object.
        mvIMPACT::acquire::Device* pDev,
        /// [in] The name of the driver internal setting to access with this instance.
        /// A list of valid setting names can be obtained by a call to
        /// <b>mvIMPACT::acquire::FunctionInterface::getAvailableSettings</b>, new
        /// settings can be created with the function
        /// <b>mvIMPACT::acquire::FunctionInterface::createSetting</b>
        const std::string& settingName = "Base" ) :
        mvIMPACT::acquire::ComponentCollection( pDev ),
        mvCurrentSelector(),
        mvCurrent()
    {
        pDev->validateInterfaceLayout( dilGenICam );
        mvIMPACT::acquire::DeviceComponentLocator locator( pDev, mvIMPACT::acquire::dltSetting, settingName );
        locator.bindSearchBase( locator.searchbase_id(), "Camera/GenICam/mvCurrentControl" );
        m_hRoot = locator.searchbase_id();
        locator.bindComponent( mvCurrentSelector, "mvCurrentSelector" );
        locator.bindComponent( mvCurrent, "mvCurrent" );
    }
    // *INDENT-OFF*
    PYTHON_OR_JAVA_ONLY( %immutable; )
    // *INDENT-ON*
    /// \brief An enumerated integer property. Selects the current source to configure.
    /**
     *  Selects the current source to configure.
     *
     *  The following string values might be valid for this feature:
     *  - \b Current0 (Display string: 'Current 0')
     *  - \b Current1 (Display string: 'Current 1')
     *  - \b Current2 (Display string: 'Current 2')
     *  - \b Current3 (Display string: 'Current 3')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvCurrentSelector;
    /// \brief An integer property. Sets the current value for the selected device(e.g.: LED).
    /**
     *  Sets the current value for the selected device(e.g.: LED).
     */
    PropertyI64 mvCurrent;
    // *INDENT-OFF*
    PYTHON_OR_JAVA_ONLY( %mutable; )
    // *INDENT-ON*
};

//-----------------------------------------------------------------------------
/// \brief Contains features to control motorized lenses
/**
 *  Contains features to control motorized lenses.
 * \ingroup GenICamInterfaceDevice
 */
class mvLensControl : public mvIMPACT::acquire::ComponentCollection
//-----------------------------------------------------------------------------
{
public:
    /// \brief Constructs a new <b>mvIMPACT::acquire::GenICam::mvLensControl</b> object.
    explicit mvLensControl(
        /// [in] A pointer to a <b>mvIMPACT::acquire::Device</b> object obtained from a <b>mvIMPACT::acquire::DeviceManager</b> object.
        mvIMPACT::acquire::Device* pDev,
        /// [in] The name of the driver internal setting to access with this instance.
        /// A list of valid setting names can be obtained by a call to
        /// <b>mvIMPACT::acquire::FunctionInterface::getAvailableSettings</b>, new
        /// settings can be created with the function
        /// <b>mvIMPACT::acquire::FunctionInterface::createSetting</b>
        const std::string& settingName = "Base" ) :
        mvIMPACT::acquire::ComponentCollection( pDev ),
        mvIrisType(),
        mvIrisMode(),
        mvIrisSignalLevelMin(),
        mvIrisSignalLevelMax(),
        mvDriveSelector(),
        mvDriveForward(),
        mvDriveBackward(),
        mvDriveDuration(),
        mvDriveLevel()
    {
        pDev->validateInterfaceLayout( dilGenICam );
        mvIMPACT::acquire::DeviceComponentLocator locator( pDev, mvIMPACT::acquire::dltSetting, settingName );
        locator.bindSearchBase( locator.searchbase_id(), "Camera/GenICam/mvLensControl" );
        m_hRoot = locator.searchbase_id();
        locator.bindComponent( mvIrisType, "mvIrisType" );
        locator.bindComponent( mvIrisMode, "mvIrisMode" );
        locator.bindComponent( mvIrisSignalLevelMin, "mvIrisSignalLevelMin" );
        locator.bindComponent( mvIrisSignalLevelMax, "mvIrisSignalLevelMax" );
        locator.bindComponent( mvDriveSelector, "mvDriveSelector" );
        locator.bindComponent( mvDriveForward, "mvDriveForward@i" );
        locator.bindComponent( mvDriveBackward, "mvDriveBackward@i" );
        locator.bindComponent( mvDriveDuration, "mvDriveDuration" );
        locator.bindComponent( mvDriveLevel, "mvDriveLevel" );
    }
    // *INDENT-OFF*
    PYTHON_OR_JAVA_ONLY( %immutable; )
    // *INDENT-ON*
    /// \brief An enumerated integer property. Sets the iris type.
    /**
     *  Sets the iris type.
     *
     *  The following string values might be valid for this feature:
     *  - \b mvVideoIris (Display string: 'mv Video Iris')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvIrisType;
    /// \brief An enumerated integer property. Sets the iris operating mode.
    /**
     *  Sets the iris operating mode.
     *
     *  The following string values might be valid for this feature:
     *  - \b Off (Display string: 'Off'): No iris adjustment will be done.
     *  - \b mvIrisAuto (Display string: 'mv Iris Auto'): The iris adjustment will be done automatically by evaluating the current image data.
     *  - \b mvIrisOpen (Display string: 'mv Iris Open'): The iris is fully open.
     *  - \b mvIrisClose (Display string: 'mv Iris Close'): The iris is fully closed.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvIrisMode;
    /// \brief An integer property. Sets the minimum iris signal level in mV.
    /**
     *  Sets the minimum iris signal level in mV.
     */
    PropertyI64 mvIrisSignalLevelMin;
    /// \brief An integer property. Sets the maximum iris signal level in mV.
    /**
     *  Sets the maximum iris signal level in mV.
     */
    PropertyI64 mvIrisSignalLevelMax;
    /// \brief An enumerated integer property. Selects the lens drive that should be adjusted.
    /**
     *  Selects the lens drive that should be adjusted.
     *
     *  The following string values might be valid for this feature:
     *  - \b mvFocus (Display string: 'mv Focus'): Selects the motor to control the focus.
     *  - \b mvZoom (Display string: 'mv Zoom'): Selects the motor to control the zoom.
     *  - \b mvIris (Display string: 'mv Iris'): Selects the motor to control the iris.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvDriveSelector;
    /// \brief A method object. Generates a pulse defined by 'mvDriveDuration' and 'mvDriveLevel' to move the selected motor in forward direction.
    /**
     *  Generates a pulse defined by 'mvDriveDuration' and 'mvDriveLevel' to move the selected motor in forward direction.
     */
    Method mvDriveForward;
    /// \brief A method object. Generates a pulse defined by 'mvDriveDuration' and 'mvDriveLevel' to move the selected motor in backward direction.
    /**
     *  Generates a pulse defined by 'mvDriveDuration' and 'mvDriveLevel' to move the selected motor in backward direction.
     */
    Method mvDriveBackward;
    /// \brief An integer property. Sets the duration of the drive command in us.
    /**
     *  Sets the duration of the drive command in us.
     */
    PropertyI64 mvDriveDuration;
    /// \brief An integer property. Sets the voltage level of the drive command in mV.
    /**
     *  Sets the voltage level of the drive command in mV.
     */
    PropertyI64 mvDriveLevel;
    // *INDENT-OFF*
    PYTHON_OR_JAVA_ONLY( %mutable; )
    // *INDENT-ON*
};

//-----------------------------------------------------------------------------
/// \brief Contains features to control the devices Flat Field Correction parameters.
/**
 *  Contains features to control the devices Flat Field Correction parameters.
 * \ingroup GenICamInterfaceDevice
 */
class mvFFCControl : public mvIMPACT::acquire::ComponentCollection
//-----------------------------------------------------------------------------
{
public:
    /// \brief Constructs a new <b>mvIMPACT::acquire::GenICam::mvFFCControl</b> object.
    explicit mvFFCControl(
        /// [in] A pointer to a <b>mvIMPACT::acquire::Device</b> object obtained from a <b>mvIMPACT::acquire::DeviceManager</b> object.
        mvIMPACT::acquire::Device* pDev,
        /// [in] The name of the driver internal setting to access with this instance.
        /// A list of valid setting names can be obtained by a call to
        /// <b>mvIMPACT::acquire::FunctionInterface::getAvailableSettings</b>, new
        /// settings can be created with the function
        /// <b>mvIMPACT::acquire::FunctionInterface::createSetting</b>
        const std::string& settingName = "Base" ) :
        mvIMPACT::acquire::ComponentCollection( pDev ),
        mvFFCEnable(),
        mvFFCCalibrationImageCount(),
        mvFFCCalibrate(),
        mvFFCImageLoad(),
        mvFFCImageSave(),
        mvFFCAutoLoadMode()
    {
        pDev->validateInterfaceLayout( dilGenICam );
        mvIMPACT::acquire::DeviceComponentLocator locator( pDev, mvIMPACT::acquire::dltSetting, settingName );
        locator.bindSearchBase( locator.searchbase_id(), "Camera/GenICam/mvFFCControl" );
        m_hRoot = locator.searchbase_id();
        locator.bindComponent( mvFFCEnable, "mvFFCEnable" );
        locator.bindComponent( mvFFCCalibrationImageCount, "mvFFCCalibrationImageCount" );
        locator.bindComponent( mvFFCCalibrate, "mvFFCCalibrate@i" );
        locator.bindComponent( mvFFCImageLoad, "mvFFCImageLoad@i" );
        locator.bindComponent( mvFFCImageSave, "mvFFCImageSave@i" );
        locator.bindComponent( mvFFCAutoLoadMode, "mvFFCAutoLoadMode" );
    }
    // *INDENT-OFF*
    PYTHON_OR_JAVA_ONLY( %immutable; )
    // *INDENT-ON*
    /// \brief A boolean property. Enables the Flat Field Correction.
    /**
     *  Enables the Flat Field Correction.
     */
    PropertyIBoolean mvFFCEnable;
    /// \brief An integer property. The number of images to use for the calculation of the correction image.
    /**
     *  The number of images to use for the calculation of the correction image.
     */
    PropertyI64 mvFFCCalibrationImageCount;
    /// \brief A method object. Starts the Calibration of the Flat Field Correction.
    /**
     *  Starts the Calibration of the Flat Field Correction.
     */
    Method mvFFCCalibrate;
    /// \brief A method object. Loads the Flat Field Correction image from flash.
    /**
     *  Loads the Flat Field Correction image from flash.
     */
    Method mvFFCImageLoad;
    /// \brief A method object. Saves the calibrated Flat Field Correction image to flash.
    /**
     *  Saves the calibrated Flat Field Correction image to flash.
     */
    Method mvFFCImageSave;
    /// \brief An enumerated integer property. Selects whether FFC image shall be automatically loaded at camera startup.
    /**
     *  Selects whether FFC image shall be automatically loaded at camera startup.
     *
     *  The following string values might be valid for this feature:
     *  - \b mvLegacy (Display string: 'mv Legacy'): )
     *  - \b Off (Display string: 'Off'): FFC image will not be automatically loaded at startup. Use this for short boot times.
     *  - \b On (Display string: 'On'): FFC image will be automatically loaded at startup. Boot time will increase accordingly.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvFFCAutoLoadMode;
    // *INDENT-OFF*
    PYTHON_OR_JAVA_ONLY( %mutable; )
    // *INDENT-ON*
};

//-----------------------------------------------------------------------------
/// \brief Category that contains features to control the frame averaging engine.
/**
 *  A category that contains features to control the frame averaging engine.
 * \ingroup GenICamInterfaceDevice
 */
class mvFrameAverageControl : public mvIMPACT::acquire::ComponentCollection
//-----------------------------------------------------------------------------
{
public:
    /// \brief Constructs a new <b>mvIMPACT::acquire::GenICam::mvFrameAverageControl</b> object.
    explicit mvFrameAverageControl(
        /// [in] A pointer to a <b>mvIMPACT::acquire::Device</b> object obtained from a <b>mvIMPACT::acquire::DeviceManager</b> object.
        mvIMPACT::acquire::Device* pDev,
        /// [in] The name of the driver internal setting to access with this instance.
        /// A list of valid setting names can be obtained by a call to
        /// <b>mvIMPACT::acquire::FunctionInterface::getAvailableSettings</b>, new
        /// settings can be created with the function
        /// <b>mvIMPACT::acquire::FunctionInterface::createSetting</b>
        const std::string& settingName = "Base" ) :
        mvIMPACT::acquire::ComponentCollection( pDev ),
        mvFrameAverageMode(),
        mvFrameAverageEnable(),
        mvFrameAverageSlope(),
        mvFrameAverageDynamicMode(),
        mvFrameAverageNoiseLimit(),
        mvFrameAverageNoiseGain(),
        mvFrameAverageFrameCount()
    {
        pDev->validateInterfaceLayout( dilGenICam );
        mvIMPACT::acquire::DeviceComponentLocator locator( pDev, mvIMPACT::acquire::dltSetting, settingName );
        locator.bindSearchBase( locator.searchbase_id(), "Camera/GenICam/mvFrameAverageControl" );
        m_hRoot = locator.searchbase_id();
        locator.bindComponent( mvFrameAverageMode, "mvFrameAverageMode" );
        locator.bindComponent( mvFrameAverageEnable, "mvFrameAverageEnable" );
        locator.bindComponent( mvFrameAverageSlope, "mvFrameAverageSlope" );
        locator.bindComponent( mvFrameAverageDynamicMode, "mvFrameAverageDynamicMode" );
        locator.bindComponent( mvFrameAverageNoiseLimit, "mvFrameAverageNoiseLimit" );
        locator.bindComponent( mvFrameAverageNoiseGain, "mvFrameAverageNoiseGain" );
        locator.bindComponent( mvFrameAverageFrameCount, "mvFrameAverageFrameCount" );
    }
    // *INDENT-OFF*
    PYTHON_OR_JAVA_ONLY( %immutable; )
    // *INDENT-ON*
    /// \brief An enumerated integer property. Sets the frame average operating mode.
    /**
     *  Sets the frame average operating mode.
     *
     *  The following string values might be valid for this feature:
     *  - \b mvPlain (Display string: 'mv Plain')
     *  - \b mvDynamic (Display string: 'mv Dynamic')
     *  - \b mvNTo1 (Display string: 'mv N To 1')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvFrameAverageMode;
    /// \brief A boolean property. Enables the frame averaging engine.
    /**
     *  Enables the frame averaging engine.
     */
    PropertyIBoolean mvFrameAverageEnable;
    /// \brief An integer property. Here you specify the noise border for very dark pictures.
    /**
     *  Here you specify the noise border for very dark pictures.
     */
    PropertyI64 mvFrameAverageSlope;
    /// \brief An enumerated integer property. Sets the frame average dynamic operating mode.
    /**
     *  Sets the frame average dynamic operating mode.
     *
     *  The following string values might be valid for this feature:
     *  - \b mvStandard (Display string: 'mv Standard')
     *  - \b mvGauss (Display string: 'mv Gauss')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvFrameAverageDynamicMode;
    /// \brief An integer property. Here you specify the noise limit for very bright pictures.
    /**
     *  Here you specify the noise limit for very bright pictures.
     */
    PropertyI64 mvFrameAverageNoiseLimit;
    /// \brief An integer property. Here you specify the noise border for very bright pictures.
    /**
     *  Here you specify the noise border for very bright pictures.
     */
    PropertyI64 mvFrameAverageNoiseGain;
    /// \brief An integer property. Here you specify the frame count used for the calculation of the frame average.
    /**
     *  Here you specify the frame count used for the calculation of the frame average.
     */
    PropertyI64 mvFrameAverageFrameCount;
    // *INDENT-OFF*
    PYTHON_OR_JAVA_ONLY( %mutable; )
    // *INDENT-ON*
};

//-----------------------------------------------------------------------------
/// \brief Category that contains features to control the devices High Dynamic Range parameters.
/**
 *  A category that contains features to control the devices High Dynamic Range parameters.
 * \ingroup GenICamInterfaceDevice
 */
class mvHDRControl : public mvIMPACT::acquire::ComponentCollection
//-----------------------------------------------------------------------------
{
public:
    /// \brief Constructs a new <b>mvIMPACT::acquire::GenICam::mvHDRControl</b> object.
    explicit mvHDRControl(
        /// [in] A pointer to a <b>mvIMPACT::acquire::Device</b> object obtained from a <b>mvIMPACT::acquire::DeviceManager</b> object.
        mvIMPACT::acquire::Device* pDev,
        /// [in] The name of the driver internal setting to access with this instance.
        /// A list of valid setting names can be obtained by a call to
        /// <b>mvIMPACT::acquire::FunctionInterface::getAvailableSettings</b>, new
        /// settings can be created with the function
        /// <b>mvIMPACT::acquire::FunctionInterface::createSetting</b>
        const std::string& settingName = "Base" ) :
        mvIMPACT::acquire::ComponentCollection( pDev ),
        mvHDREnable(),
        mvHDRPreset(),
        mvHDRSelector(),
        mvHDRVoltage1(),
        mvHDRVoltage2(),
        mvHDRExposure1(),
        mvHDRExposure2(),
        mvHDRExposureRatio(),
        mvHDRMotionCompensationEnable(),
        mvHDRAdaptiveLocalToneMappingEnable()
    {
        pDev->validateInterfaceLayout( dilGenICam );
        mvIMPACT::acquire::DeviceComponentLocator locator( pDev, mvIMPACT::acquire::dltSetting, settingName );
        locator.bindSearchBase( locator.searchbase_id(), "Camera/GenICam/mvHDRControl" );
        m_hRoot = locator.searchbase_id();
        locator.bindComponent( mvHDREnable, "mvHDREnable" );
        locator.bindComponent( mvHDRPreset, "mvHDRPreset" );
        locator.bindComponent( mvHDRSelector, "mvHDRSelector" );
        locator.bindComponent( mvHDRVoltage1, "mvHDRVoltage1" );
        locator.bindComponent( mvHDRVoltage2, "mvHDRVoltage2" );
        locator.bindComponent( mvHDRExposure1, "mvHDRExposure1" );
        locator.bindComponent( mvHDRExposure2, "mvHDRExposure2" );
        locator.bindComponent( mvHDRExposureRatio, "mvHDRExposureRatio" );
        locator.bindComponent( mvHDRMotionCompensationEnable, "mvHDRMotionCompensationEnable" );
        locator.bindComponent( mvHDRAdaptiveLocalToneMappingEnable, "mvHDRAdaptiveLocalToneMappingEnable" );
    }
    // *INDENT-OFF*
    PYTHON_OR_JAVA_ONLY( %immutable; )
    // *INDENT-ON*
    /// \brief A boolean property. Enables the High Dynamic Range Feature.
    /**
     *  Enables the High Dynamic Range Feature.
     */
    PropertyIBoolean mvHDREnable;
    /// \brief An enumerated integer property. Selects the HDR parameter set.
    /**
     *  Selects the HDR parameter set.
     *
     *  The following string values might be valid for this feature:
     *  - \b mvDualKneePoint0 (Display string: 'mv Dual Knee Point 0')
     *  - \b mvDualKneePoint1 (Display string: 'mv Dual Knee Point 1')
     *  - \b mvDualKneePoint2 (Display string: 'mv Dual Knee Point 2')
     *  - \b mvDualKneePoint3 (Display string: 'mv Dual Knee Point 3')
     *  - \b mvDualKneePoint4 (Display string: 'mv Dual Knee Point 4')
     *  - \b mvDualKneePoint5 (Display string: 'mv Dual Knee Point 5')
     *  - \b mvDualKneePoint6 (Display string: 'mv Dual Knee Point 6')
     *  - \b mvDualKneePointUser (Display string: 'mv Dual Knee Point User')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvHDRPreset;
    /// \brief An enumerated integer property. Selects the HDR parameter set to configure.
    /**
     *  This enumeration selects the HDR parameter set to configure.
     *
     *  The following string values might be valid for this feature:
     *  - \b mvDualKneePoint0 (Display string: 'mv Dual Knee Point 0')
     *  - \b mvDualKneePoint1 (Display string: 'mv Dual Knee Point 1')
     *  - \b mvDualKneePoint2 (Display string: 'mv Dual Knee Point 2')
     *  - \b mvDualKneePoint3 (Display string: 'mv Dual Knee Point 3')
     *  - \b mvDualKneePoint4 (Display string: 'mv Dual Knee Point 4')
     *  - \b mvDualKneePoint5 (Display string: 'mv Dual Knee Point 5')
     *  - \b mvDualKneePoint6 (Display string: 'mv Dual Knee Point 6')
     *  - \b mvDualKneePointUser (Display string: 'mv Dual Knee Point User')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvHDRSelector;
    /// \brief An integer property. First HDR Voltage in mV.
    /**
     *  First HDR Voltage in mV.
     */
    PropertyI64 mvHDRVoltage1;
    /// \brief An integer property. Second HDR Voltage in mV.
    /**
     *  Second HDR Voltage in mV.
     */
    PropertyI64 mvHDRVoltage2;
    /// \brief An integer property. First HDR Exposure in ppm.
    /**
     *  First HDR Exposure in ppm.
     */
    PropertyI64 mvHDRExposure1;
    /// \brief An integer property. Second HDR Exposure in ppm.
    /**
     *  Second HDR Exposure in ppm.
     */
    PropertyI64 mvHDRExposure2;
    /// \brief An enumerated integer property. T1/T2 Exposure Ratio
    /**
     *  The ratio of the long exposure time to the short exposure time.
     *
     *  The following string values might be valid for this feature:
     *  - \b mvRatio4x (Display string: 'mv Ratio 4x')
     *  - \b mvRatio8x (Display string: 'mv Ratio 8x')
     *  - \b mvRatio16x (Display string: 'mv Ratio 16x')
     *  - \b mvRatio32x (Display string: 'mv Ratio 32x')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvHDRExposureRatio;
    /// \brief A boolean property. Enables motion compensation
    /**
     *  Enables motion compensation. Recommended for scenes with a lot of motion.
     */
    PropertyIBoolean mvHDRMotionCompensationEnable;
    /// \brief A boolean property. Enables Adaptive Local Tone Mapping
    /**
     *  Enables Adaptive Local Tone Mapping. Recommended if mvHDRMotionCompensationEnable is enabled.
     */
    PropertyIBoolean mvHDRAdaptiveLocalToneMappingEnable;
    // *INDENT-OFF*
    PYTHON_OR_JAVA_ONLY( %mutable; )
    // *INDENT-ON*
};

//-----------------------------------------------------------------------------
/// \brief Category that contains items that belong to the system module of the transport layer.
/**
 *  The System category contains items that belong to the system module of the transport layer.
 * \ingroup GenICamInterfaceProducer
 */
class SystemModule : public mvIMPACT::acquire::ComponentCollection
//-----------------------------------------------------------------------------
{
private:
    void init( mvIMPACT::acquire::ComponentLocator& locator )
    {
        locator.bindComponent( TLVendorName, "TLVendorName" );
        locator.bindComponent( TLModelName, "TLModelName" );
        locator.bindComponent( TLID, "TLID" );
        locator.bindComponent( TLVersion, "TLVersion" );
        locator.bindComponent( TLFileName, "TLFileName" );
        locator.bindComponent( TLDisplayName, "TLDisplayName" );
        locator.bindComponent( TLPath, "TLPath" );
        locator.bindComponent( TLType, "TLType" );
        locator.bindComponent( genTLVersionMajor, "GenTLVersionMajor" );
        locator.bindComponent( genTLVersionMinor, "GenTLVersionMinor" );
        locator.bindComponent( genTLSFNCVersionMajor, "GenTLSFNCVersionMajor" );
        locator.bindComponent( genTLSFNCVersionMinor, "GenTLSFNCVersionMinor" );
        locator.bindComponent( genTLSFNCVersionSubMinor, "GenTLSFNCVersionSubMinor" );
        locator.bindComponent( genCPVersionMajor, "GenCPVersionMajor" );
        locator.bindComponent( genCPVersionMinor, "GenCPVersionMinor" );
        locator.bindComponent( gevVersionMajor, "GevVersionMajor" );
        locator.bindComponent( gevVersionMinor, "GevVersionMinor" );
        locator.bindComponent( u3vVersionMajor, "U3vVersionMajor" );
        locator.bindComponent( u3vVersionMinor, "U3vVersionMinor" );
        locator.bindComponent( mvGevChannelDummyPacketSendEnable, "mvGevChannelDummyPacketSendEnable" );
        locator.bindComponent( mvGevChannelDummyPacketSendInterval, "mvGevChannelDummyPacketSendInterval" );
        locator.bindComponent( mvInterfaceTechnologyToIgnoreSelector, "mvInterfaceTechnologyToIgnoreSelector" );
        locator.bindComponent( mvInterfaceTechnologyToIgnoreEnable, "mvInterfaceTechnologyToIgnoreEnable" );
        locator.bindComponent( interfaceUpdateList, "InterfaceUpdateList@i" );
        locator.bindComponent( interfaceUpdateTimeout, "InterfaceUpdateTimeout" );
        locator.bindComponent( interfaceSelector, "InterfaceSelector" );
        locator.bindComponent( interfaceID, "InterfaceID" );
        locator.bindComponent( interfaceDisplayName, "InterfaceDisplayName" );
        locator.bindComponent( interfaceType, "InterfaceType" );
        locator.bindComponent( gevInterfaceMACAddress, "GevInterfaceMACAddress" );
        locator.bindComponent( gevInterfaceDefaultIPAddress, "GevInterfaceDefaultIPAddress" );
        locator.bindComponent( gevInterfaceDefaultSubnetMask, "GevInterfaceDefaultSubnetMask" );
        locator.bindComponent( gevInterfaceDefaultGateway, "GevInterfaceDefaultGateway" );
        locator.bindComponent( mvGevInterfaceMTU, "mvGevInterfaceMTU" );
        locator.bindComponent( mvGevInterfaceLinkSpeed, "mvGevInterfaceLinkSpeed" );
        locator.bindComponent( mvDeviceUpdateListBehaviour, "mvDeviceUpdateListBehaviour" );
        locator.bindComponent( eventSelector, "EventSelector" );
        locator.bindComponent( eventNotification, "EventNotification" );
    }
public:
    /// \brief Constructs a new <b>mvIMPACT::acquire::GenICam::SystemModule</b> object.
    explicit SystemModule(
        /// [in] A pointer to a <b>mvIMPACT::acquire::Device</b> object obtained from a <b>mvIMPACT::acquire::DeviceManager</b> object.
        mvIMPACT::acquire::Device* pDev,
        /// [in] The \a index of the instance this object shall be created for. Passing an invalid index will raise an exception.
        int64_type index = 0 ) :
        mvIMPACT::acquire::ComponentCollection( INVALID_ID ),
        TLVendorName(),
        TLModelName(),
        TLID(),
        TLVersion(),
        TLFileName(),
        TLDisplayName(),
        TLPath(),
        TLType(),
        genTLVersionMajor(),
        genTLVersionMinor(),
        genTLSFNCVersionMajor(),
        genTLSFNCVersionMinor(),
        genTLSFNCVersionSubMinor(),
        genCPVersionMajor(),
        genCPVersionMinor(),
        gevVersionMajor(),
        gevVersionMinor(),
        u3vVersionMajor(),
        u3vVersionMinor(),
        mvGevChannelDummyPacketSendEnable(),
        mvGevChannelDummyPacketSendInterval(),
        mvInterfaceTechnologyToIgnoreSelector(),
        mvInterfaceTechnologyToIgnoreEnable(),
        interfaceUpdateList(),
        interfaceUpdateTimeout(),
        interfaceSelector(),
        interfaceID(),
        interfaceDisplayName(),
        interfaceType(),
        gevInterfaceMACAddress(),
        gevInterfaceDefaultIPAddress(),
        gevInterfaceDefaultSubnetMask(),
        gevInterfaceDefaultGateway(),
        mvGevInterfaceMTU(),
        mvGevInterfaceLinkSpeed(),
        mvDeviceUpdateListBehaviour(),
        eventSelector(),
        eventNotification()
    {
        mvIMPACT::acquire::ComponentLocator locator( pDev->deviceDriverFeatureList(), "GenTL" );
        if( locator.findComponent( "System", 0, 1 ) == INVALID_ID )
        {
            std::ostringstream oss;
            oss << "Producers/Producer" << index << "/System";
            locator = mvIMPACT::acquire::ComponentLocator( locator.findComponent( oss.str() ) );
        }
        else if( index == 0 )
        {
            locator = mvIMPACT::acquire::ComponentLocator( locator.findComponent( "System" ) );
        }
        else
        {
            std::ostringstream oss;
            oss << "Producers/Producer" << index - 1 << "/System";
            locator = mvIMPACT::acquire::ComponentLocator( locator.findComponent( oss.str() ) );
        }
        m_hRoot = locator.searchbase_id();
        init( locator );
    }
    /// \brief Constructs a new <b>mvIMPACT::acquire::GenICam::SystemModule</b> object.
    /**
     *  \since 2.17.0
     */
    explicit SystemModule(
        /// [in] The \a index of the instance this object shall be created for. Passing an invalid index will raise an exception.
        int64_type index = 0 ) :
        mvIMPACT::acquire::ComponentCollection( INVALID_ID ),
        TLVendorName(),
        TLModelName(),
        TLID(),
        TLVersion(),
        TLFileName(),
        TLDisplayName(),
        TLPath(),
        TLType(),
        genTLVersionMajor(),
        genTLVersionMinor(),
        genTLSFNCVersionMajor(),
        genTLSFNCVersionMinor(),
        genTLSFNCVersionSubMinor(),
        genCPVersionMajor(),
        genCPVersionMinor(),
        gevVersionMajor(),
        gevVersionMinor(),
        u3vVersionMajor(),
        u3vVersionMinor(),
        mvGevChannelDummyPacketSendEnable(),
        mvGevChannelDummyPacketSendInterval(),
        mvInterfaceTechnologyToIgnoreSelector(),
        mvInterfaceTechnologyToIgnoreEnable(),
        interfaceUpdateList(),
        interfaceUpdateTimeout(),
        interfaceSelector(),
        interfaceID(),
        interfaceDisplayName(),
        interfaceType(),
        gevInterfaceMACAddress(),
        gevInterfaceDefaultIPAddress(),
        gevInterfaceDefaultSubnetMask(),
        gevInterfaceDefaultGateway(),
        mvGevInterfaceMTU(),
        mvGevInterfaceLinkSpeed(),
        mvDeviceUpdateListBehaviour(),
        eventSelector(),
        eventNotification()
    {
        HLIST hList;
        TDMR_ERROR result;
        if( ( result = DMR_FindList( INVALID_ID, "mvGenTLConsumer", dmltDeviceDriverLib, 0, &hList ) ) != DMR_NO_ERROR )
        {
            ExceptionFactory::raiseException( MVIA_FUNCTION, __LINE__, result, "Couldn't find list 'mvGenTLConsumer'(type: dmltDeviceDriverLib)" );
        }
        mvIMPACT::acquire::ComponentLocator locator( hList, "GenTL" );
        if( locator.findComponent( "System", 0, 1 ) == INVALID_ID )
        {
            std::ostringstream oss;
            oss << "Producers/Producer" << index << "/System";
            locator = mvIMPACT::acquire::ComponentLocator( locator.findComponent( oss.str() ) );
        }
        else if( index == 0 )
        {
            locator = mvIMPACT::acquire::ComponentLocator( locator.findComponent( "System" ) );
        }
        else
        {
            std::ostringstream oss;
            oss << "Producers/Producer" << index - 1 << "/System";
            locator = mvIMPACT::acquire::ComponentLocator( locator.findComponent( oss.str() ) );
        }
        m_hRoot = locator.searchbase_id();
        init( locator );
    }
    // *INDENT-OFF*
    PYTHON_OR_JAVA_ONLY( %immutable; )
    // *INDENT-ON*
    /// \brief A string property. Indicates the name of the transport layer vendor.
    /**
     *  This is a read only element. It is a string that indicates the name of the transport layer vendor.
     */
    PropertyS TLVendorName;
    /// \brief A string property. Indicates the name of the transport layer Model.
    /**
     *  This is a read only element. It is a string that indicates the name of the transport layer Model to distinguish different kinds of GenTL Producer implementations from one vendor.
     */
    PropertyS TLModelName;
    /// \brief A string property. Indicates the ID of the transport layer.
    /**
     *  This is a read only element. It is a string that indicates the ID of the transport layer.
     */
    PropertyS TLID;
    /// \brief A string property. Indicates a vendor specific version string for this transport layer.
    /**
     *  This is a read only element. It is a string that indicates a vendor specific version string for this transport layer.
     */
    PropertyS TLVersion;
    /// \brief A string property. Indicates the file name of the GenTL Producer driver including name and extension.
    /**
     *  This is a read only element. It is a string that indicates the file name of the GenTL Producer driver including name and extension.
     */
    PropertyS TLFileName;
    /// \brief A string property. User readable name of the GenTL Producer.
    /**
     *  This is a read only element. It is a string that indicates a user readable name of the GenTL Producer.
     */
    PropertyS TLDisplayName;
    /// \brief A string property. Indicates the full path to the GenTL Producer driver including name and extension.
    /**
     *  This is a read only element. It is a string that indicates the full path to the GenTL Producer driver including name and extension.
     */
    PropertyS TLPath;
    /// \brief An enumerated integer property. Identifies the transport layer technology of the GenTL Producer implementation.
    /**
     *  This is a read only feature. This enumeration provides a value that indicates the transport layer technology of the GenTL Producer implementation.
     *
     *  The following string values might be valid for this feature:
     *  - \b Mixed (Display string: 'Mixed'): This enumeration value indicates that this is a transport layer for a mixed protocol.
     *  - \b Custom (Display string: 'Custom'): This enumeration value indicates that this is a transport layer for a custom protocol.
     *  - \b GEV (Display string: 'GigE Vision'): This enumeration value indicates that this is a transport layer for the GigE Vision protocol.
     *  - \b CameraLink (Display string: 'CameraLink'): This enumeration value indicates that this is a transport layer for the CameraLink protocol.
     *  - \b CoaXPress (Display string: 'CoaXPress'): This enumeration value indicates that this is a transport layer for the CoaXPress protocol.
     *  - \b CameraLinkHS (Display string: 'CameraLink HS'): This enumeration value indicates that this is a transport layer for the CameraLink HS protocol.
     *  - \b U3V (Display string: 'USB3 Vision'): This enumeration value indicates that this is a transport layer for the USB3 Vision protocol.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 TLType;
    /// \brief An integer property. Defines the major version number of the GenTL specification the GenTL Producer implementation complies with.
    /**
     *  This is a read only element. It defines the major version number of the GenTL specification the GenTL Producer implementation complies with.
     */
    PropertyI64 genTLVersionMajor;
    /// \brief An integer property. Defines the minor version number of the GenTL specification the GenTL Producer implementation complies with.
    /**
     *  This is a read only element. It defines the minor version number of the GenTL specification the GenTL Producer implementation complies with.
     */
    PropertyI64 genTLVersionMinor;
    /// \brief An integer property. Defines the major version number of the GenTL SFNC specification the GenTL Producer implementation complies with.
    /**
     *  This is a read only element. It defines the major version number of the GenTL SFNC specification the GenTL Producer implementation complies with.
     */
    PropertyI64 genTLSFNCVersionMajor;
    /// \brief An integer property. Defines the minor version number of the GenTL SFNC specification the GenTL Producer implementation complies with.
    /**
     *  This is a read only element. It defines the minor version number of the GenTL SFNC specification the GenTL Producer implementation complies with.
     */
    PropertyI64 genTLSFNCVersionMinor;
    /// \brief An integer property. Defines the sub minor version number of the GenTL SFNC specification the GenTL Producer implementation complies with.
    /**
     *  This is a read only element. It defines the sub minor version number of the GenTL SFNC specification the GenTL Producer implementation complies with.
     */
    PropertyI64 genTLSFNCVersionSubMinor;
    /// \brief An integer property. Indicates the major version number of the GenCP specification this GenTL Producer implementation complies with.
    /**
     *  This is a read only element. It indicates the major version number of the GenCP specification this GenTL Producer implementation complies with.
     */
    PropertyI64 genCPVersionMajor;
    /// \brief An integer property. Indicates the minor version number of the GenCP specification this GenTL Producer implementation complies with.
    /**
     *  This is a read only element. It indicates the minor version number of the GenCP specification this GenTL Producer implementation complies with.
     */
    PropertyI64 genCPVersionMinor;
    /// \brief An integer property. Indicates the major version number of the GigE Vision specification this GenTL Producer implementation complies with.
    /**
     *  This is a read only element. It indicates the major version number of the GigE Vision specification this GenTL Producer implementation complies with.
     */
    PropertyI64 gevVersionMajor;
    /// \brief An integer property. Indicates the minor version number of the GigE Vision specification this GenTL Producer implementation complies with.
    /**
     *  This is a read only element. It indicates the minor version number of the GigE Vision specification this GenTL Producer implementation complies with.
     */
    PropertyI64 gevVersionMinor;
    /// \brief An integer property. Indicates the major version number of the USB3 Vision specification this GenTL Producer implementation complies with.
    /**
     *  This is a read only element. It indicates the major version number of the USB3 Vision specification this GenTL Producer implementation complies with.
     */
    PropertyI64 u3vVersionMajor;
    /// \brief An integer property. Indicates the minor version number of the USB3 Vision specification this GenTL Producer implementation complies with.
    /**
     *  This is a read only element. It indicates the minor version number of the USB3 Vision specification this GenTL Producer implementation complies with.
     */
    PropertyI64 u3vVersionMinor;
    /// \brief A boolean property. Enables or disables the periodical sending of dummy packets to a stream or message channel source port of a GigE Vision device.
    /**
     *  Enables or disables the periodical sending of dummy packets to a stream or message channel source port of a GigE Vision device. This might be useful to overcome firewall related problems when working with network devices.
     */
    PropertyIBoolean mvGevChannelDummyPacketSendEnable;
    /// \brief An integer property. Defines the period(in ms) for sending dummy packets to a stream or message channel source port of a GigE Vision device.
    /**
     *  Defines the period(in ms) for sending dummy packets to a stream or message channel source port of a GigE Vision device. This might be useful to overcome firewall related problems when working with network devices.
     */
    PropertyI64 mvGevChannelDummyPacketSendInterval;
    /// \brief An enumerated integer property. Selects the interface technology type that should be ignored when updating the device list.
    /**
     *  Selects the interface technology type that should be ignored when updating the device list.
     *
     *  The following string values might be valid for this feature:
     *  - \b Mixed (Display string: 'Mixed')
     *  - \b Custom (Display string: 'Custom')
     *  - \b GEV (Display string: 'GigE Vision')
     *  - \b CameraLink (Display string: 'CameraLink')
     *  - \b CoaXPress (Display string: 'CoaXPress')
     *  - \b CameraLinkHS (Display string: 'CameraLink HS')
     *  - \b U3V (Display string: 'USB3 Vision')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvInterfaceTechnologyToIgnoreSelector;
    /// \brief A boolean property. When enabled, the selected interface technology type is ignored when updating the device list.
    /**
     *  When enabled, the selected interface technology type is ignored when updating the device list.
     */
    PropertyIBoolean mvInterfaceTechnologyToIgnoreEnable;
    /// \brief A method object. Updates the internal interface list.
    /**
     *  This command updates the internal interface list of this transport layer.
     */
    Method interfaceUpdateList;
    /// \brief An integer property. Specifies timeout for the InterfaceUpdateList Command.
    /**
     *  Specifies timeout for the InterfaceUpdateList Command.
     */
    PropertyI64 interfaceUpdateTimeout;
    /// \brief An integer property. Selector for the different GenTL Producer interfaces.
    /**
     *  Selector for the different GenTL Producer interfaces. Selector for the different GenTL Producer interfaces. This interface list only changes on execution of InterfaceUpdateList. The selector is 0-based in order to match the index of the C interface.
     */
    PropertyI64 interfaceSelector;
    /// \brief A string property. GenTL producer wide unique identifier of the selected interface.
    /**
     *  This is a read only element. It is a string that indicates a GenTL producer wide unique identifier of the selected interface.
     */
    PropertyS interfaceID;
    /// \brief A string property. A user-friendly name of the Interface.
    /**
     *  This is a read only element. It is a string that indicates a  user-friendly name of the Interface.
     */
    PropertyS interfaceDisplayName;
    /// \brief An enumerated integer property. Identifies the interfaces technology of the GenTL Producer implementation.
    /**
     *  This is a read only feature. This enumeration provides a value that indicates interfaces technology of the GenTL Producer implementation.
     *
     *  The following string values might be valid for this feature:
     *  - \b Mixed (Display string: 'Mixed'): This enumeration value indicates that this is an interface for a mixed protocol.
     *  - \b Custom (Display string: 'Custom'): This enumeration value indicates that this is an interface for a custom protocol.
     *  - \b GEV (Display string: 'GigE Vision'): This enumeration value indicates that this is an interface for the GigE Vision protocol.
     *  - \b CameraLink (Display string: 'CameraLink'): This enumeration value indicates that this is an interface for the CameraLink protocol.
     *  - \b CoaXPress (Display string: 'CoaXPress'): This enumeration value indicates that this is an interface for the CoaXPress protocol.
     *  - \b CameraLinkHS (Display string: 'CameraLink HS'): This enumeration value indicates that this is an interface for the CameraLink HS protocol.
     *  - \b U3V (Display string: 'USB3 Vision'): This enumeration value indicates that this is an interface for the USB3 Vision protocol.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 interfaceType;
    /// \brief An integer property. Indicates the 48-bit MAC address of the selected interface.
    /**
     *  This is a read only element. It indicates the 48-bit MAC address of the selected interface.
     */
    PropertyI64 gevInterfaceMACAddress;
    /// \brief An integer property. Indicates the IP address of the first subnet of the selected interface.
    /**
     *  This is a read only element. It indicates the IP address of the first subnet of the selected interface.
     */
    PropertyI64 gevInterfaceDefaultIPAddress;
    /// \brief An integer property. Indicates the subnet mask of the first subnet of the selected interface.
    /**
     *  This is a read only element. It indicates the subnet mask of the first subnet of the selected interface.
     */
    PropertyI64 gevInterfaceDefaultSubnetMask;
    /// \brief An integer property. Indicates the default gateway of the first subnet of the selected interface.
    /**
     *  This is a read only element. It indicates the default gateway of the first subnet of the selected interface.
     */
    PropertyI64 gevInterfaceDefaultGateway;
    /// \brief An integer property. Indicates the MTU of the selected interface.
    /**
     *  This is a read only element. It indicates the MTU(Maximum Transmission Unit) of the selected interface.
     */
    PropertyI64 mvGevInterfaceMTU;
    /// \brief An integer property. Indicates the link speed of this interface.
    /**
     *  This is a read only element. It indicates the link speed(in Mbits per second) of this interface.
     */
    PropertyI64 mvGevInterfaceLinkSpeed;
    /// \brief An enumerated integer property. Defines the behavior of the interface when the device list is being updated.
    /**
     *  Defines the behavior of the interface when the device list is being updated.
     *
     *  The following string values might be valid for this feature:
     *  - \b NotConfigured (Display string: 'Not Configured'): Interface will enumerate devices or not according to the general enumeration behavior of this interface type(according to mvInterfaceTechnologyToIgnoreEnable setting).
     *  - \b ForceIgnore (Display string: 'Force Ignore'): Interface will not enumerate devices, regardless of the the general enumeration behavior of this interface type(overrides mvInterfaceTechnologyToIgnoreEnable setting).
     *  - \b ForceEnumerate (Display string: 'Force Enumerate'): Interface will forcefully enumerate devices, regardless of the the general enumeration behavior of this interface type(overrides mvInterfaceTechnologyToIgnoreEnable setting).
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 mvDeviceUpdateListBehaviour;
    /// \brief An enumerated integer property. Selects which Event to signal to the host application.
    /**
     *  Selects which Event to signal to the host application.
     *
     *  The following string values might be valid for this feature:
     *  - \b AcquisitionTrigger (Display string: 'Acquisition Trigger'): Device just received a trigger for the Acquisition of one or many Frames.
     *  - \b AcquisitionTriggerMissed (Display string: 'Acquisition Trigger Missed'): Device just missed a trigger for the Acquisition of one or many Frames.
     *  - \b AcquisitionStart (Display string: 'Acquisition Start'): Device just started the Acquisition of one or many Frames.
     *  - \b AcquisitionEnd (Display string: 'Acquisition End'): Device just completed the Acquisition of one or many Frames.
     *  - \b AcquisitionTransferStart (Display string: 'Acquisition Transfer Start'): Device just started the transfer of one or many Frames.
     *  - \b AcquisitionTransferEnd (Display string: 'Acquisition Transfer End'): Device just completed the transfer of one or many Frames.
     *  - \b AcquisitionError (Display string: 'Acquisition Error'): Device just detected an error during the active Acquisition.
     *  - \b FrameBurstStart (Display string: 'Frame Burst Start'): Device just started the capture of a burst of Frames.
     *  - \b FrameBurstEnd (Display string: 'Frame Burst End'): Device just completed the capture of a burst of Frames.
     *  - \b FrameTrigger (Display string: 'Frame Trigger'): Device just received a trigger to start the capture of one Frame.
     *  - \b FrameTriggerMissed (Display string: 'Frame Trigger Missed'): Device just missed a trigger to start the capture of one Frame.
     *  - \b FrameStart (Display string: 'Frame Start'): Device just started the capture of one Frame.
     *  - \b FrameEnd (Display string: 'Frame End'): Device just completed the capture of one Frame.
     *  - \b FrameTransferStart (Display string: 'Frame Transfer Start'): Device just started the transfer of one Frame.
     *  - \b FrameTransferEnd (Display string: 'Frame Transfer End'): Device just completed the transfer of one Frame.
     *  - \b LineTrigger (Display string: 'Line Trigger'): Device just received a trigger to start the capture of one Line.
     *  - \b LineTriggerMissed (Display string: 'Line Trigger Missed'): Device just missed a trigger to start the capture of one Line.
     *  - \b LineStart (Display string: 'Line Start'): Device just started the capture of one Line.
     *  - \b LineEnd (Display string: 'Line End'): Device just completed the capture of one Line.
     *  - \b ExposureStart (Display string: 'Exposure Start'): Device just started the exposure of one Frame (or Line).
     *  - \b ExposureEnd (Display string: 'Exposure End'): Device just completed the exposure of one Frame (or Line).
     *  - \b Stream0TransferStart (Display string: 'Stream 0 Transfer Start'): Device just started the transfer of one or many Blocks.
     *  - \b Stream0TransferEnd (Display string: 'Stream 0 Transfer End'): Device just completed the transfer of one or many Blocks.
     *  - \b Stream0TransferPause (Display string: 'Stream 0 Transfer Pause'): Device just paused the transfer.
     *  - \b Stream0TransferResume (Display string: 'Stream 0 Transfer Resume'): Device just resumed the transfer.
     *  - \b Stream0TransferBlockStart (Display string: 'Stream 0 Transfer Block Start'): Device just started the transfer of one Block.
     *  - \b Stream0TransferBlockEnd (Display string: 'Stream 0 Transfer Block End'): Device just completed the transfer of one Block.
     *  - \b Stream0TransferBlockTrigger (Display string: 'Stream 0 Transfer Block Trigger'): Device just received a trigger to start the transfer of one Block.
     *  - \b Stream0TransferBurstStart (Display string: 'Stream 0 Transfer Burst Start'): Device just started the transfer of a burst of Blocks.
     *  - \b Stream0TransferBurstEnd (Display string: 'Stream 0 Transfer Burst End'): Device just completed the transfer of a burst of Blocks.
     *  - \b Stream0TransferOverflow (Display string: 'Stream 0 Transfer Overflow'): Device transfer queue overflowed.
     *  - \b SequencerSetChange (Display string: 'Sequencer Set Change'): Device sequencer set has changed.
     *  - \b Counter0Start (Display string: 'Counter 0 Start'): The event will be generated when counter 0 starts counting.
     *  - \b Counter1Start (Display string: 'Counter 1 Start'): The event will be generated when counter 1 starts counting.
     *  - \b Counter\#2\#Start (Display string: 'Counter \#2\# Start'): The event will be generated when counter \#2\# starts counting.
     *  - \b Counter0End (Display string: 'Counter 0 End'): The event will be generated when counter 0 ends counting.
     *  - \b Counter1End (Display string: 'Counter 1 End'): The event will be generated when counter 1 ends counting.
     *  - \b Counter\#2\#End (Display string: 'Counter \#2\# End'): The event will be generated when counter \#2\# ends counting.
     *  - \b Timer0Start (Display string: 'Timer 0 Start'): The event will be generated when Timer 0 starts counting.
     *  - \b Timer1Start (Display string: 'Timer 1 Start'): The event will be generated when Timer 1 starts counting.
     *  - \b Timer\#2\#Start (Display string: 'Timer \#2\# Start'): The event will be generated when Timer \#2\# starts counting.
     *  - \b Timer0End (Display string: 'Timer 0 End'): The event will be generated when Timer 0 ends counting.
     *  - \b Timer1End (Display string: 'Timer 1 End'): The event will be generated when Timer 1 ends counting.
     *  - \b Timer\#2\#End (Display string: 'Timer \#2\# End'): The event will be generated when Timer \#2\# ends counting.
     *  - \b Encoder0Stopped (Display string: 'Encoder 0 Stopped'): The event will be generated when the Encoder 0 stops for longer than EncoderTimeout.
     *  - \b Encoder1Stopped (Display string: 'Encoder 1 Stopped'): The event will be generated when the Encoder 1 stops for longer than EncoderTimeout.
     *  - \b Encoder\#2\#Stopped (Display string: 'Encoder \#2\# Stopped'): The event will be generated when the Encoder \#2\# stops for longer than EncoderTimeout.
     *  - \b Encoder0Restarted (Display string: 'Encoder 0 Restarted'): The event will be generated when the Encoder 0 restarts moving.
     *  - \b Encoder1Restarted (Display string: 'Encoder 1 Restarted'): The event will be generated when the Encoder 1 restarts moving.
     *  - \b Encoder\#2\#Restarted (Display string: 'Encoder \#2\# Restarted'): The event will be generated when the Encoder \#2\# restarts moving.
     *  - \b Line0RisingEdge (Display string: 'Line 0 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 0.
     *  - \b Line1RisingEdge (Display string: 'Line 1 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 1.
     *  - \b Line\#2\#RisingEdge (Display string: 'Line \#2\# Rising Edge'): The event will be generated when a Rising Edge is detected on the Line \#2\#.
     *  - \b Line0FallingEdge (Display string: 'Line 0 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 0.
     *  - \b Line1FallingEdge (Display string: 'Line 1 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 1.
     *  - \b Line\#2\#FallingEdge (Display string: 'Line \#2\# Falling Edge'): The event will be generated when a Falling Edge is detected on the Line \#2\#.
     *  - \b Line0AnyEdge (Display string: 'Line 0 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 0.
     *  - \b Line1AnyEdge (Display string: 'Line 1 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 1.
     *  - \b Line\#2\#AnyEdge (Display string: 'Line \#2\# Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line \#2\#.
     *  - \b LinkTrigger0 (Display string: 'Link Trigger 0'): The event will be generated when a Rising Edge is detected on the LinkTrigger 0.
     *  - \b LinkTrigger1 (Display string: 'Link Trigger 1'): The event will be generated when a Rising Edge is detected on the LinkTrigger 1.
     *  - \b LinkTrigger\#2\# (Display string: 'Link Trigger \#2\#'): The event will be generated when a Rising Edge is detected on the LinkTrigger \#2\#.
     *  - \b LinkSpeedChange (Display string: 'Link Speed Change'): The event will be generated when the link speed has changed.
     *  - \b ActionLate (Display string: 'Action Late'): The event will be generated when a valid scheduled action command is received and is scheduled to be executed at a time that is already past.
     *  - \b Error (Display string: 'Error'): Device just detected an error during the active Acquisition.
     *  - \b Test (Display string: 'Test'): The test event will be generated when the device receives the TestEventGenerate command (EventNotification for the Test event is always On).
     *  - \b PrimaryApplicationSwitch (Display string: 'Primary Application Switch'): The event will be generated when a primary application switchover has been granted (GigE Vision Specific).
     *  - \b Counter2Start (Display string: 'Counter 2 Start'): The event will be generated when counter 2 starts counting.
     *  - \b Counter3Start (Display string: 'Counter 3 Start'): The event will be generated when counter 3 starts counting.
     *  - \b Counter4Start (Display string: 'Counter 4 Start'): The event will be generated when counter 4 starts counting.
     *  - \b Counter5Start (Display string: 'Counter 5 Start'): The event will be generated when counter 5 starts counting.
     *  - \b Counter6Start (Display string: 'Counter 6 Start'): The event will be generated when counter 6 starts counting.
     *  - \b Counter7Start (Display string: 'Counter 7 Start'): The event will be generated when counter 7 starts counting.
     *  - \b Counter8Start (Display string: 'Counter 8 Start'): The event will be generated when counter 8 starts counting.
     *  - \b Counter9Start (Display string: 'Counter 9 Start'): The event will be generated when counter 9 starts counting.
     *  - \b Counter10Start (Display string: 'Counter 10 Start'): The event will be generated when counter 10 starts counting.
     *  - \b Counter11Start (Display string: 'Counter 11 Start'): The event will be generated when counter 11 starts counting.
     *  - \b Counter12Start (Display string: 'Counter 12 Start'): The event will be generated when counter 12 starts counting.
     *  - \b Counter13Start (Display string: 'Counter 13 Start'): The event will be generated when counter 13 starts counting.
     *  - \b Counter14Start (Display string: 'Counter 14 Start'): The event will be generated when counter 14 starts counting.
     *  - \b Counter15Start (Display string: 'Counter 15 Start'): The event will be generated when counter 15 starts counting.
     *  - \b Counter2End (Display string: 'Counter 2 End'): The event will be generated when counter 2 ends counting.
     *  - \b Counter3End (Display string: 'Counter 3 End'): The event will be generated when counter 3 ends counting.
     *  - \b Counter4End (Display string: 'Counter 4 End'): The event will be generated when counter 4 ends counting.
     *  - \b Counter5End (Display string: 'Counter 5 End'): The event will be generated when counter 5 ends counting.
     *  - \b Counter6End (Display string: 'Counter 6 End'): The event will be generated when counter 6 ends counting.
     *  - \b Counter7End (Display string: 'Counter 7 End'): The event will be generated when counter 7 ends counting.
     *  - \b Counter8End (Display string: 'Counter 8 End'): The event will be generated when counter 8 ends counting.
     *  - \b Counter9End (Display string: 'Counter 9 End'): The event will be generated when counter 9 ends counting.
     *  - \b Counter10End (Display string: 'Counter 10 End'): The event will be generated when counter 10 ends counting.
     *  - \b Counter11End (Display string: 'Counter 11 End'): The event will be generated when counter 11 ends counting.
     *  - \b Counter12End (Display string: 'Counter 12 End'): The event will be generated when counter 12 ends counting.
     *  - \b Counter13End (Display string: 'Counter 13 End'): The event will be generated when counter 13 ends counting.
     *  - \b Counter14End (Display string: 'Counter 14 End'): The event will be generated when counter 14 ends counting.
     *  - \b Counter15End (Display string: 'Counter 15 End'): The event will be generated when counter 15 ends counting.
     *  - \b Timer2Start (Display string: 'Timer 2 Start'): The event will be generated when Timer 2 starts counting.
     *  - \b Timer3Start (Display string: 'Timer 3 Start'): The event will be generated when Timer 3 starts counting.
     *  - \b Timer4Start (Display string: 'Timer 4 Start'): The event will be generated when Timer 4 starts counting.
     *  - \b Timer5Start (Display string: 'Timer 5 Start'): The event will be generated when Timer 5 starts counting.
     *  - \b Timer6Start (Display string: 'Timer 6 Start'): The event will be generated when Timer 6 starts counting.
     *  - \b Timer7Start (Display string: 'Timer 7 Start'): The event will be generated when Timer 7 starts counting.
     *  - \b Timer8Start (Display string: 'Timer 8 Start'): The event will be generated when Timer 8 starts counting.
     *  - \b Timer9Start (Display string: 'Timer 9 Start'): The event will be generated when Timer 9 starts counting.
     *  - \b Timer10Start (Display string: 'Timer 10 Start'): The event will be generated when Timer 10 starts counting.
     *  - \b Timer11Start (Display string: 'Timer 11 Start'): The event will be generated when Timer 11 starts counting.
     *  - \b Timer12Start (Display string: 'Timer 12 Start'): The event will be generated when Timer 12 starts counting.
     *  - \b Timer13Start (Display string: 'Timer 13 Start'): The event will be generated when Timer 13 starts counting.
     *  - \b Timer14Start (Display string: 'Timer 14 Start'): The event will be generated when Timer 14 starts counting.
     *  - \b Timer15Start (Display string: 'Timer 15 Start'): The event will be generated when Timer 15 starts counting.
     *  - \b Timer2End (Display string: 'Timer 2 End'): The event will be generated when Timer 2 ends counting.
     *  - \b Timer3End (Display string: 'Timer 3 End'): The event will be generated when Timer 3 ends counting.
     *  - \b Timer4End (Display string: 'Timer 4 End'): The event will be generated when Timer 4 ends counting.
     *  - \b Timer5End (Display string: 'Timer 5 End'): The event will be generated when Timer 5 ends counting.
     *  - \b Timer6End (Display string: 'Timer 6 End'): The event will be generated when Timer 6 ends counting.
     *  - \b Timer7End (Display string: 'Timer 7 End'): The event will be generated when Timer 7 ends counting.
     *  - \b Timer8End (Display string: 'Timer 8 End'): The event will be generated when Timer 8 ends counting.
     *  - \b Timer9End (Display string: 'Timer 9 End'): The event will be generated when Timer 9 ends counting.
     *  - \b Timer10End (Display string: 'Timer 10 End'): The event will be generated when Timer 10 ends counting.
     *  - \b Timer11End (Display string: 'Timer 11 End'): The event will be generated when Timer 11 ends counting.
     *  - \b Timer12End (Display string: 'Timer 12 End'): The event will be generated when Timer 12 ends counting.
     *  - \b Timer13End (Display string: 'Timer 13 End'): The event will be generated when Timer 13 ends counting.
     *  - \b Timer14End (Display string: 'Timer 14 End'): The event will be generated when Timer 14 ends counting.
     *  - \b Timer15End (Display string: 'Timer 15 End'): The event will be generated when Timer 15 ends counting.
     *  - \b Encoder2Stopped (Display string: 'Encoder 2 Stopped'): The event will be generated when the Encoder 2 stops for longer than EncoderTimeout.
     *  - \b Encoder3Stopped (Display string: 'Encoder 3 Stopped'): The event will be generated when the Encoder 3 stops for longer than EncoderTimeout.
     *  - \b Encoder4Stopped (Display string: 'Encoder 4 Stopped'): The event will be generated when the Encoder 4 stops for longer than EncoderTimeout.
     *  - \b Encoder5Stopped (Display string: 'Encoder 5 Stopped'): The event will be generated when the Encoder 5 stops for longer than EncoderTimeout.
     *  - \b Encoder6Stopped (Display string: 'Encoder 6 Stopped'): The event will be generated when the Encoder 6 stops for longer than EncoderTimeout.
     *  - \b Encoder7Stopped (Display string: 'Encoder 7 Stopped'): The event will be generated when the Encoder 7 stops for longer than EncoderTimeout.
     *  - \b Encoder8Stopped (Display string: 'Encoder 8 Stopped'): The event will be generated when the Encoder 8 stops for longer than EncoderTimeout.
     *  - \b Encoder9Stopped (Display string: 'Encoder 9 Stopped'): The event will be generated when the Encoder 9 stops for longer than EncoderTimeout.
     *  - \b Encoder10Stopped (Display string: 'Encoder 10 Stopped'): The event will be generated when the Encoder 10 stops for longer than EncoderTimeout.
     *  - \b Encoder11Stopped (Display string: 'Encoder 11 Stopped'): The event will be generated when the Encoder 11 stops for longer than EncoderTimeout.
     *  - \b Encoder12Stopped (Display string: 'Encoder 12 Stopped'): The event will be generated when the Encoder 12 stops for longer than EncoderTimeout.
     *  - \b Encoder13Stopped (Display string: 'Encoder 13 Stopped'): The event will be generated when the Encoder 13 stops for longer than EncoderTimeout.
     *  - \b Encoder14Stopped (Display string: 'Encoder 14 Stopped'): The event will be generated when the Encoder 14 stops for longer than EncoderTimeout.
     *  - \b Encoder15Stopped (Display string: 'Encoder 15 Stopped'): The event will be generated when the Encoder 15 stops for longer than EncoderTimeout.
     *  - \b Encoder2Restarted (Display string: 'Encoder 2 Restarted'): The event will be generated when the Encoder 2 restarts moving.
     *  - \b Encoder3Restarted (Display string: 'Encoder 3 Restarted'): The event will be generated when the Encoder 3 restarts moving.
     *  - \b Encoder4Restarted (Display string: 'Encoder 4 Restarted'): The event will be generated when the Encoder 4 restarts moving.
     *  - \b Encoder5Restarted (Display string: 'Encoder 5 Restarted'): The event will be generated when the Encoder 5 restarts moving.
     *  - \b Encoder6Restarted (Display string: 'Encoder 6 Restarted'): The event will be generated when the Encoder 6 restarts moving.
     *  - \b Encoder7Restarted (Display string: 'Encoder 7 Restarted'): The event will be generated when the Encoder 7 restarts moving.
     *  - \b Encoder8Restarted (Display string: 'Encoder 8 Restarted'): The event will be generated when the Encoder 8 restarts moving.
     *  - \b Encoder9Restarted (Display string: 'Encoder 9 Restarted'): The event will be generated when the Encoder 9 restarts moving.
     *  - \b Encoder10Restarted (Display string: 'Encoder 10 Restarted'): The event will be generated when the Encoder 10 restarts moving.
     *  - \b Encoder11Restarted (Display string: 'Encoder 11 Restarted'): The event will be generated when the Encoder 11 restarts moving.
     *  - \b Encoder12Restarted (Display string: 'Encoder 12 Restarted'): The event will be generated when the Encoder 12 restarts moving.
     *  - \b Encoder13Restarted (Display string: 'Encoder 13 Restarted'): The event will be generated when the Encoder 13 restarts moving.
     *  - \b Encoder14Restarted (Display string: 'Encoder 14 Restarted'): The event will be generated when the Encoder 14 restarts moving.
     *  - \b Encoder15Restarted (Display string: 'Encoder 15 Restarted'): The event will be generated when the Encoder 15 restarts moving.
     *  - \b Line2RisingEdge (Display string: 'Line 2 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 2.
     *  - \b Line3RisingEdge (Display string: 'Line 3 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 3.
     *  - \b Line4RisingEdge (Display string: 'Line 4 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 4.
     *  - \b Line5RisingEdge (Display string: 'Line 5 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 5.
     *  - \b Line6RisingEdge (Display string: 'Line 6 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 6.
     *  - \b Line7RisingEdge (Display string: 'Line 7 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 7.
     *  - \b Line8RisingEdge (Display string: 'Line 8 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 8.
     *  - \b Line9RisingEdge (Display string: 'Line 9 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 9.
     *  - \b Line10RisingEdge (Display string: 'Line 10 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 10.
     *  - \b Line11RisingEdge (Display string: 'Line 11 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 11.
     *  - \b Line12RisingEdge (Display string: 'Line 12 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 12.
     *  - \b Line13RisingEdge (Display string: 'Line 13 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 13.
     *  - \b Line14RisingEdge (Display string: 'Line 14 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 14.
     *  - \b Line15RisingEdge (Display string: 'Line 15 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 15.
     *  - \b Line2FallingEdge (Display string: 'Line 2 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 2.
     *  - \b Line3FallingEdge (Display string: 'Line 3 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 3.
     *  - \b Line4FallingEdge (Display string: 'Line 4 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 4.
     *  - \b Line5FallingEdge (Display string: 'Line 5 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 5.
     *  - \b Line6FallingEdge (Display string: 'Line 6 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 6.
     *  - \b Line7FallingEdge (Display string: 'Line 7 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 7.
     *  - \b Line8FallingEdge (Display string: 'Line 8 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 8.
     *  - \b Line9FallingEdge (Display string: 'Line 9 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 9.
     *  - \b Line10FallingEdge (Display string: 'Line 10 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 10.
     *  - \b Line11FallingEdge (Display string: 'Line 11 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 11.
     *  - \b Line12FallingEdge (Display string: 'Line 12 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 12.
     *  - \b Line13FallingEdge (Display string: 'Line 13 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 13.
     *  - \b Line14FallingEdge (Display string: 'Line 14 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 14.
     *  - \b Line15FallingEdge (Display string: 'Line 15 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 15.
     *  - \b Line2AnyEdge (Display string: 'Line 2 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 2.
     *  - \b Line3AnyEdge (Display string: 'Line 3 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 3.
     *  - \b Line4AnyEdge (Display string: 'Line 4 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 4.
     *  - \b Line5AnyEdge (Display string: 'Line 5 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 5.
     *  - \b Line6AnyEdge (Display string: 'Line 6 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 6.
     *  - \b Line7AnyEdge (Display string: 'Line 7 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 7.
     *  - \b Line8AnyEdge (Display string: 'Line 8 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 8.
     *  - \b Line9AnyEdge (Display string: 'Line 9 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 9.
     *  - \b Line10AnyEdge (Display string: 'Line 10 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 10.
     *  - \b Line11AnyEdge (Display string: 'Line 11 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 11.
     *  - \b Line12AnyEdge (Display string: 'Line 12 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 12.
     *  - \b Line13AnyEdge (Display string: 'Line 13 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 13.
     *  - \b Line14AnyEdge (Display string: 'Line 14 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 14.
     *  - \b Line15AnyEdge (Display string: 'Line 15 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 15.
     *  - \b Link0Trigger (Display string: 'Link 0 Trigger')
     *  - \b Link1Trigger (Display string: 'Link 1 Trigger')
     *  - \b Link2Trigger (Display string: 'Link 2 Trigger')
     *  - \b Link3Trigger (Display string: 'Link 3 Trigger')
     *  - \b Link4Trigger (Display string: 'Link 4 Trigger')
     *  - \b Link5Trigger (Display string: 'Link 5 Trigger')
     *  - \b Link6Trigger (Display string: 'Link 6 Trigger')
     *  - \b Link7Trigger (Display string: 'Link 7 Trigger')
     *  - \b Link8Trigger (Display string: 'Link 8 Trigger')
     *  - \b Link9Trigger (Display string: 'Link 9 Trigger')
     *  - \b Link10Trigger (Display string: 'Link 10 Trigger')
     *  - \b Link11Trigger (Display string: 'Link 11 Trigger')
     *  - \b Link12Trigger (Display string: 'Link 12 Trigger')
     *  - \b Link13Trigger (Display string: 'Link 13 Trigger')
     *  - \b Link14Trigger (Display string: 'Link 14 Trigger')
     *  - \b Link15Trigger (Display string: 'Link 15 Trigger')
     *  - \b InterfaceListChanged (Display string: 'Interface List Changed'): This enumeration value indicates an event that is fired when the list of interfaces has been updated.
     *  - \b InterfaceLost (Display string: 'Interface Lost'): This enumeration value indicates an event that is raised when the interface connection is lost.
     *  - \b DeviceListChanged (Display string: 'Device List Changed'): This enumeration value indicates an event that is fired when the list of devices has been updated.
     *  - \b DeviceLost (Display string: 'Device Lost'): This enumeration value indicates an event that is raised when the local host looses connection to the physical(remote) device.
     *  - \b BufferTooSmall (Display string: 'Buffer Too Small'): This enumeration value indicates an event that is raised when the buffer was too small to receive the expected amount of data.
     *  - \b BuffersDiscarded (Display string: 'Buffers Discarded'): This enumeration value indicates an event that is raised when buffers discared by GenTL or device. This event could optionally carry two numeric child data fields EventBuffersDiscardedDeviceCount and EventBuffersDiscardedProducerCount.
     *  - \b BuffersDiscardedDeviceCount (Display string: 'Buffers Discarded Device Count'): This enumeration value indicates the number of buffers discarded by the device since last fired instance of this event (the producer would get to know about this for example by observing a gap in the block_id sequence).
     *  - \b BuffersDiscardedProducerCount (Display string: 'Buffers Discarded Producer Count'): This enumeration value indicates the number of buffers discarded by the producer since last fired instance of this event (this would happen e.g. if there are no free buffers available or if given buffer handling mode requires discarding old buffers etc.).
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 eventSelector;
    /// \brief An enumerated integer property. Activate or deactivate the notification to the host application of the occurrence of the selected Event.
    /**
     *  Activate or deactivate the notification to the host application of the occurrence of the selected Event.
     *
     *  The following string values might be valid for this feature:
     *  - \b Off (Display string: 'Off'): The selected Event notification is disabled.
     *  - \b On (Display string: 'On'): The selected Event notification is enabled.
     *  - \b Once (Display string: 'Once'): The selected Event notification is enabled for one event then return to Off state.
     *  - \b GigEVisionEvent (Display string: 'Gig E Vision Event')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 eventNotification;
    // *INDENT-OFF*
    PYTHON_OR_JAVA_ONLY( %mutable; )
    // *INDENT-ON*
    /// \brief Returns the number of GenTL producers detected in the current system.
    /**
     *  This is also the number of system modules detected thus this value - 1 defines the maximum value that can
     *  be passed as the \a index parameter into a <b>mvIMPACT::acquire::SystemModule</b> constructor.
     *  \since 2.32.0
     */
    static int64_type getSystemModuleCount( void )
    {
        int64_type systemModuleCount = 0;
        HLIST hList = INVALID_ID;
        if( DMR_FindList( INVALID_ID, "mvGenTLConsumer", dmltDeviceDriverLib, 0, &hList ) == DMR_NO_ERROR )
        {
            if( hList != INVALID_ID )
            {
                ComponentLocator locator( hList );
                hList = locator.findComponent( "GenTL", 0, 1 );
                if( hList != INVALID_ID )
                {
                    locator = ComponentLocator( hList );
                    if( locator.findComponent( "System", 0, 1 ) != INVALID_ID )
                    {
                        systemModuleCount++;
                    }
                    const HLIST hListProducers = locator.findComponent( "Producers", 0, 1 );
                    if( hListProducers != INVALID_ID )
                    {
                        ComponentList producers( hListProducers );
                        systemModuleCount += static_cast<int64_type>( producers.size() );
                    }
                }
            }
        }
        return systemModuleCount;
    }
    /// \brief Returns the number of interfaces associated with this GenTL producer.
    /**
     * This should return the same value as when calling <b>mvIMPACT::acquire::GenICam::SystemModule::interfaceSelector::getMaxValue</b>
     * however there are producers out there that do not implement the \c interfaceSelector property correctly.
     *
     *  \since 2.34.0
     */
    int64_type getInterfaceModuleCount( void )
    {
        int64_type interfaceCount = 0;
        ComponentLocator locator( Component( hObj() ).parent() );
        const HLIST hList = locator.findComponent( "Interfaces", smIgnoreMethods | smIgnoreProperties );
        if( hList != INVALID_ID )
        {
            Component it( hList );
            it = it.firstChild();
            while( it.isValid() )
            {
                ++interfaceCount;
                it = it.nextSibling();
            }
        }
        return interfaceCount;
    }
};

//-----------------------------------------------------------------------------
/// \brief Category that contains items that belong to the interface module of the transport layer.
/**
 *  The Interface category contains items that belong to the interface module of the transport layer.
 * \ingroup GenICamInterfaceProducer
 */
class InterfaceModule : public mvIMPACT::acquire::ComponentCollection
//-----------------------------------------------------------------------------
{
private:
    void init( mvIMPACT::acquire::ComponentLocator& locator )
    {
        locator.bindComponent( interfaceID, "InterfaceID" );
        locator.bindComponent( interfaceDisplayName, "InterfaceDisplayName" );
        locator.bindComponent( interfaceType, "InterfaceType" );
        locator.bindComponent( interfaceTLVersionMajor, "InterfaceTLVersionMajor" );
        locator.bindComponent( interfaceTLVersionMinor, "InterfaceTLVersionMinor" );
        locator.bindComponent( gevInterfaceGatewaySelector, "GevInterfaceGatewaySelector" );
        locator.bindComponent( gevInterfaceGateway, "GevInterfaceGateway" );
        locator.bindComponent( gevInterfaceMACAddress, "GevInterfaceMACAddress" );
        locator.bindComponent( gevInterfaceSubnetSelector, "GevInterfaceSubnetSelector" );
        locator.bindComponent( gevInterfaceSubnetIPAddress, "GevInterfaceSubnetIPAddress" );
        locator.bindComponent( gevInterfaceSubnetMask, "GevInterfaceSubnetMask" );
        locator.bindComponent( mvGevInterfaceMTU, "mvGevInterfaceMTU" );
        locator.bindComponent( mvGevInterfaceLinkSpeed, "mvGevInterfaceLinkSpeed" );
        locator.bindComponent( mvGevAdvancedDeviceDiscoveryEnable, "mvGevAdvancedDeviceDiscoveryEnable" );
        locator.bindComponent( deviceUpdateList, "DeviceUpdateList@i" );
        locator.bindComponent( mvUnicastDeviceDiscoveryCommandCount, "mvUnicastDeviceDiscoveryCommandCount" );
        locator.bindComponent( mvUnicastDeviceDiscoveryCommandSelector, "mvUnicastDeviceDiscoveryCommandSelector" );
        locator.bindComponent( mvUnicastDeviceDiscoveryDestinationIPAddress, "mvUnicastDeviceDiscoveryDestinationIPAddress" );
        locator.bindComponent( deviceUpdateTimeout, "DeviceUpdateTimeout" );
        locator.bindComponent( deviceSelector, "DeviceSelector" );
        locator.bindComponent( deviceID, "DeviceID" );
        locator.bindComponent( deviceVendorName, "DeviceVendorName" );
        locator.bindComponent( deviceModelName, "DeviceModelName" );
        locator.bindComponent( deviceType, "DeviceType" );
        locator.bindComponent( deviceLinkSpeed, "DeviceLinkSpeed" );
        locator.bindComponent( deviceAccessStatus, "DeviceAccessStatus" );
        locator.bindComponent( deviceSerialNumber, "DeviceSerialNumber" );
        locator.bindComponent( deviceUserID, "DeviceUserID" );
        locator.bindComponent( deviceTLVersionMajor, "DeviceTLVersionMajor" );
        locator.bindComponent( deviceTLVersionMinor, "DeviceTLVersionMinor" );
        locator.bindComponent( gevDeviceIPAddress, "GevDeviceIPAddress" );
        locator.bindComponent( gevDeviceSubnetMask, "GevDeviceSubnetMask" );
        locator.bindComponent( gevDeviceGateway, "GevDeviceGateway" );
        locator.bindComponent( gevDeviceIPConfigurationStatus, "GevDeviceIPConfigurationStatus" );
        locator.bindComponent( gevDeviceMACAddress, "GevDeviceMACAddress" );
        locator.bindComponent( gevCurrentControlMode, "GevCurrentControlMode" );
        locator.bindComponent( mvDeviceCommandChannelTransmissionTimeout, "mvDeviceCommandChannelTransmissionTimeout" );
        locator.bindComponent( mvDeviceCommandChannelRetryCount, "mvDeviceCommandChannelRetryCount" );
        locator.bindComponent( gevVersionMajor, "GevVersionMajor" );
        locator.bindComponent( gevVersionMinor, "GevVersionMinor" );
        locator.bindComponent( genCPVersionMajor, "GenCPVersionMajor" );
        locator.bindComponent( genCPVersionMinor, "GenCPVersionMinor" );
        locator.bindComponent( u3vVersionMajor, "U3vVersionMajor" );
        locator.bindComponent( u3vVersionMinor, "U3vVersionMinor" );
        locator.bindComponent( mvDevicePrimaryApplicationSwitchoverSupported, "mvDevicePrimaryApplicationSwitchoverSupported" );
        locator.bindComponent( mvDevicePrimaryApplicationSwitchoverEnable, "mvDevicePrimaryApplicationSwitchoverEnable" );
        locator.bindComponent( gevApplicationSwitchoverKey, "GevApplicationSwitchoverKey" );
        if( !gevApplicationSwitchoverKey.isValid() )
        {
            locator.bindComponent( gevApplicationSwitchoverKey, "mvDevicePrimaryApplicationSwitchoverKey" );
        }
        locator.bindComponent( mvDeviceNetworkInterfaceCount, "mvDeviceNetworkInterfaceCount" );
        locator.bindComponent( gevDeviceForceIP, "GevDeviceForceIP@i" );
        locator.bindComponent( gevDeviceForceIPAddress, "GevDeviceForceIPAddress" );
        locator.bindComponent( gevDeviceForceSubnetMask, "GevDeviceForceSubnetMask" );
        locator.bindComponent( gevDeviceForceGateway, "GevDeviceForceGateway" );
        locator.bindComponent( mvDeviceUpdateFirmware, "mvDeviceUpdateFirmware@i" );
        locator.bindComponent( actionCommand, "ActionCommand@i" );
        if( !actionCommand.isValid() )
        {
            locator.bindComponent( actionCommand, "mvActionSend@i" );
        }
        locator.bindComponent( actionDeviceKey, "ActionDeviceKey" );
        if( !actionDeviceKey.isValid() )
        {
            locator.bindComponent( actionDeviceKey, "mvActionDeviceKey" );
        }
        locator.bindComponent( actionGroupKey, "ActionGroupKey" );
        if( !actionGroupKey.isValid() )
        {
            locator.bindComponent( actionGroupKey, "mvActionGroupKey" );
        }
        locator.bindComponent( actionGroupMask, "ActionGroupMask" );
        if( !actionGroupMask.isValid() )
        {
            locator.bindComponent( actionGroupMask, "mvActionGroupMask" );
        }
        locator.bindComponent( actionScheduledTimeEnable, "ActionScheduledTimeEnable" );
        if( !actionScheduledTimeEnable.isValid() )
        {
            locator.bindComponent( actionScheduledTimeEnable, "mvActionScheduledTimeEnable" );
        }
        locator.bindComponent( actionScheduledTime, "ActionScheduledTime" );
        if( !actionScheduledTime.isValid() )
        {
            locator.bindComponent( actionScheduledTime, "mvActionScheduledTime" );
        }
        locator.bindComponent( gevActionDestinationIPAddress, "GevActionDestinationIPAddress" );
        if( !gevActionDestinationIPAddress.isValid() )
        {
            locator.bindComponent( gevActionDestinationIPAddress, "mvActionDestinationIPAddress" );
        }
        locator.bindComponent( eventSelector, "EventSelector" );
        locator.bindComponent( eventNotification, "EventNotification" );
    }
public:
#ifndef WRAP_ANY
    /// \brief Constructs a new <b>mvIMPACT::acquire::GenICam::InterfaceModule</b> object(\b deprecated).
    /**
     *  \deprecated This constructor has been declared deprecated as it doesn't allow to access features from 3rd party GenTL producers. Use a constructor that allows the selection of the desired GenTL producer instead.
     *  \since 2.17.0
     */
    explicit MVIMPACT_DEPRECATED_CPP( InterfaceModule(
                                          /// [in] A pointer to a <b>mvIMPACT::acquire::Device</b> object obtained from a <b>mvIMPACT::acquire::DeviceManager</b> object.
                                          mvIMPACT::acquire::Device* pDev,
                                          /// [in] The \a index of the instance this object shall be created for. Passing an invalid index will raise an exception.
                                          int64_type index ) );
#endif // #ifndef WRAP_ANY
#ifndef WRAP_ANY
    /// \brief Constructs a new <b>mvIMPACT::acquire::GenICam::InterfaceModule</b> object(\b deprecated).
    /**
     *  \deprecated This constructor has been declared deprecated as it doesn't allow to access features from 3rd party GenTL producers. Use a constructor that allows the selection of the desired GenTL producer instead.
     *  \since 2.17.0
     */
    explicit MVIMPACT_DEPRECATED_CPP( InterfaceModule(
                                          /// [in] The \a index of the instance this object shall be created for. Passing an invalid index will raise an exception.
                                          int64_type index ) );
#endif // #ifndef WRAP_ANY
    /// \brief Constructs a new <b>mvIMPACT::acquire::GenICam::InterfaceModule</b> object.
    /**
     *  \since 2.32.0
     */
    explicit InterfaceModule(
        /// [in] The <b>mvIMPACT::acquire::GenICam::SystemModule</b> instance providing access to the interface module to be created.
        const SystemModule& parent,
        /// [in] The \a index of the instance this object shall be created for. Passing an invalid index will raise an exception.
        int64_type index ) :
        mvIMPACT::acquire::ComponentCollection( INVALID_ID ),
        interfaceID(),
        interfaceDisplayName(),
        interfaceType(),
        interfaceTLVersionMajor(),
        interfaceTLVersionMinor(),
        gevInterfaceGatewaySelector(),
        gevInterfaceGateway(),
        gevInterfaceMACAddress(),
        gevInterfaceSubnetSelector(),
        gevInterfaceSubnetIPAddress(),
        gevInterfaceSubnetMask(),
        mvGevInterfaceMTU(),
        mvGevInterfaceLinkSpeed(),
        mvGevAdvancedDeviceDiscoveryEnable(),
        deviceUpdateList(),
        mvUnicastDeviceDiscoveryCommandCount(),
        mvUnicastDeviceDiscoveryCommandSelector(),
        mvUnicastDeviceDiscoveryDestinationIPAddress(),
        deviceUpdateTimeout(),
        deviceSelector(),
        deviceID(),
        deviceVendorName(),
        deviceModelName(),
        deviceType(),
        deviceLinkSpeed(),
        deviceAccessStatus(),
        deviceSerialNumber(),
        deviceUserID(),
        deviceTLVersionMajor(),
        deviceTLVersionMinor(),
        gevDeviceIPAddress(),
        gevDeviceSubnetMask(),
        gevDeviceGateway(),
        gevDeviceIPConfigurationStatus(),
        gevDeviceMACAddress(),
        gevCurrentControlMode(),
        mvDeviceCommandChannelTransmissionTimeout(),
        mvDeviceCommandChannelRetryCount(),
        gevVersionMajor(),
        gevVersionMinor(),
        genCPVersionMajor(),
        genCPVersionMinor(),
        u3vVersionMajor(),
        u3vVersionMinor(),
        mvDevicePrimaryApplicationSwitchoverSupported(),
        mvDevicePrimaryApplicationSwitchoverEnable(),
        gevApplicationSwitchoverKey(),
        mvDeviceNetworkInterfaceCount(),
        gevDeviceForceIP(),
        gevDeviceForceIPAddress(),
        gevDeviceForceSubnetMask(),
        gevDeviceForceGateway(),
        mvDeviceUpdateFirmware(),
        actionCommand(),
        actionDeviceKey(),
        actionGroupKey(),
        actionGroupMask(),
        actionScheduledTimeEnable(),
        actionScheduledTime(),
        gevActionDestinationIPAddress(),
        eventSelector(),
        eventNotification()
    {
        ComponentList baseList( parent.hObj() );
        mvIMPACT::acquire::ComponentLocator locator( baseList.parent(), "Interfaces" );
        std::ostringstream oss;
        oss << "Interface" << index;
        locator = mvIMPACT::acquire::ComponentLocator( locator.findComponent( oss.str() ) );
        m_hRoot = locator.searchbase_id();
        init( locator );
    }
    // *INDENT-OFF*
    PYTHON_OR_JAVA_ONLY( %immutable; )
    // *INDENT-ON*
    /// \brief A string property. GenTL producer wide unique identifier of the selected interface.
    /**
     *  This is a read only element. It is a string that indicates a GenTL producer wide unique identifier of the selected interface.
     */
    PropertyS interfaceID;
    /// \brief A string property. A user-friendly name of the Interface.
    /**
     *  This is a read only element. It is a string that indicates a  user-friendly name of the Interface.
     */
    PropertyS interfaceDisplayName;
    /// \brief An enumerated integer property. Identifies the interfaces technology of the GenTL Producer implementation.
    /**
     *  This is a read only feature. This enumeration provides a value that indicates interfaces technology of the GenTL Producer implementation.
     *
     *  The following string values might be valid for this feature:
     *  - \b Mixed (Display string: 'Mixed'): This enumeration value indicates that this is an interface for a mixed protocol.
     *  - \b Custom (Display string: 'Custom'): This enumeration value indicates that this is an interface for a custom protocol.
     *  - \b GEV (Display string: 'GigE Vision'): This enumeration value indicates that this is an interface for the GigE Vision protocol.
     *  - \b CameraLink (Display string: 'CameraLink'): This enumeration value indicates that this is an interface for the CameraLink protocol.
     *  - \b CoaXPress (Display string: 'CoaXPress'): This enumeration value indicates that this is an interface for the CoaXPress protocol.
     *  - \b CameraLinkHS (Display string: 'CameraLink HS'): This enumeration value indicates that this is an interface for the CameraLink HS protocol.
     *  - \b U3V (Display string: 'USB3 Vision'): This enumeration value indicates that this is an interface for the USB3 Vision protocol.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 interfaceType;
    /// \brief An integer property. Indicates the major version number of the transport layer specification the GenTL Producer complies with.
    /**
     *  This is a read only element. It indicates the major version number of the transport layer specification the GenTL Producer complies with.
     */
    PropertyI64 interfaceTLVersionMajor;
    /// \brief An integer property. Indicates the minor version number of the transport layer specification the GenTL Producer complies with.
    /**
     *  This is a read only element. It indicates the minor version number of the transport layer specification the GenTL Producer complies with.
     */
    PropertyI64 interfaceTLVersionMinor;
    /// \brief An integer property. Selector for the different gateway entries for this interface.
    /**
     *  Selector for the different gateway entries for this interface. The selector is 0-based in order to match the index of the C interface.
     */
    PropertyI64 gevInterfaceGatewaySelector;
    /// \brief An integer property. Indicates the IP address of the selected gateway entry of this interface.
    /**
     *  This is a read only element. It indicates the IP address of the selected gateway entry of this interface.
     */
    PropertyI64 gevInterfaceGateway;
    /// \brief An integer property. Indicates the 48-bit MAC address of the selected interface.
    /**
     *  This is a read only element. It indicates the 48-bit MAC address of the selected interface.
     */
    PropertyI64 gevInterfaceMACAddress;
    /// \brief An integer property. Selector for the different subnet entries for this interface.
    /**
     *  Selector for the different subnet entries for this interface. The selector is 0-based in order to match the index of the C interface.
     */
    PropertyI64 gevInterfaceSubnetSelector;
    /// \brief An integer property. Indicates the IP address of the selected subnet entry of this interface.
    /**
     *  This is a read only element. It indicates the IP address of the selected subnet entry of this interface.
     */
    PropertyI64 gevInterfaceSubnetIPAddress;
    /// \brief An integer property. Indicates the subnet mask of the selected subnet entry of this interface.
    /**
     *  This is a read only element. It indicates the subnet mask of the selected subnet entry of this interface.
     */
    PropertyI64 gevInterfaceSubnetMask;
    /// \brief An integer property. Indicates the MTU of this interface.
    /**
     *  This is a read only element. It indicates the MTU(Maximum Transmission Unit) of this interface.
     */
    PropertyI64 mvGevInterfaceMTU;
    /// \brief An integer property. Indicates the link speed of this interface.
    /**
     *  This is a read only element. It indicates the link speed(in Mbits per second) of this interface.
     */
    PropertyI64 mvGevInterfaceLinkSpeed;
    /// \brief A boolean property. Enables or disables the advanced device discovery.
    /**
     *  Enables or disables the advanced device discovery. When enabled also devices, which currently use an incorrect IP configuration for the network they are connected to might be detectable. However depending on the operating system this may result in devices showing up on interfaces to which they are not physically connected.
     */
    PropertyIBoolean mvGevAdvancedDeviceDiscoveryEnable;
    /// \brief A method object. Updates the internal device list of this interface.
    /**
     *  This command updates the internal device list of this interface.
     */
    Method deviceUpdateList;
    /// \brief An integer property. Specifies the number of discovery commands which will be sent to destinations defined by 'mvUnicastDeviceDiscoveryCommandSelector' and 'mvUnicastDeviceDiscoveryDestinationIPAddress'.
    /**
     *  Specifies the number of discovery commands which will be sent to destinations defined by 'mvUnicastDeviceDiscoveryCommandSelector' and 'mvUnicastDeviceDiscoveryDestinationIPAddress'. No unicast device discovery will be performed once set to '0'. The mvUnicastDeviceDiscoveryCommandCount specifies the maximum value of the mvUnicastDeviceDiscoveryCommandSelector property.
     */
    PropertyI64 mvUnicastDeviceDiscoveryCommandCount;
    /// \brief An integer property. Selects unicast discovery command to configure.
    /**
     *  Selects unicast discovery command to configure.
     */
    PropertyI64 mvUnicastDeviceDiscoveryCommandSelector;
    /// \brief An integer property. Controls the destination IP address of the selected unicast device discovery command.
    /**
     *  Controls the destination IP address of the selected unicast device discovery command.
     */
    PropertyI64 mvUnicastDeviceDiscoveryDestinationIPAddress;
    /// \brief An integer property. Specifies timeout for the DeviceUpdateList Command.
    /**
     *  Specifies timeout for the DeviceUpdateList Command.
     */
    PropertyI64 deviceUpdateTimeout;
    /// \brief An integer property. Selector for the different devices on this interface.
    /**
     *  Selector for the different devices on this interface. The limits of this feature might change upon execution of DeviceUpdateList.
     */
    PropertyI64 deviceSelector;
    /// \brief A string property. This feature is deprecated (See DeviceSerialNumber).
    /**
     *  \deprecated
     *  This feature is deprecated (See DeviceSerialNumber). It was representing the Device unique identifier (serial number).
     */
    PropertyS deviceID;
    /// \brief A string property. Name of the manufacturer of the device.
    /**
     *  Name of the manufacturer of the device.
     */
    PropertyS deviceVendorName;
    /// \brief A string property. Model of the device.
    /**
     *  Model of the device.
     */
    PropertyS deviceModelName;
    /// \brief An enumerated integer property. Returns the device type.
    /**
     *  Returns the device type.
     *
     *  The following string values might be valid for this feature:
     *  - \b Transmitter (Display string: 'Transmitter'): Data stream transmitter device.
     *  - \b Receiver (Display string: 'Receiver'): Data stream receiver device.
     *  - \b Transceiver (Display string: 'Transceiver'): Data stream receiver and transmitter device.
     *  - \b Peripheral (Display string: 'Peripheral'): Controllable device (with no data stream handling).
     *  - \b Mixed (Display string: 'Mixed'): This enumeration value indicates that this is a device for a mixed protocol.
     *  - \b Custom (Display string: 'Custom'): This enumeration value indicates that this is a device for a custom protocol.
     *  - \b GEV (Display string: 'GigE Vision'): This enumeration value indicates that this is a device for the GigE Vision protocol.
     *  - \b CameraLink (Display string: 'CameraLink'): This enumeration value indicates that this is a device for the CameraLink protocol.
     *  - \b CoaXPress (Display string: 'CoaXPress'): This enumeration value indicates that this is a device for the CoaXPress protocol.
     *  - \b CameraLinkHS (Display string: 'CameraLink HS'): This enumeration value indicates that this is a device for the CameraLink HS protocol.
     *  - \b U3V (Display string: 'USB3 Vision'): This enumeration value indicates that this is a device for the USB3 Vision protocol.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 deviceType;
    /// \brief An integer property. Indicates the speed of transmission negotiated on the specified Link.
    /**
     *  Indicates the speed of transmission negotiated on the specified Link.
     */
    PropertyI64 deviceLinkSpeed;
    /// \brief An enumerated integer property. Indicates the current access status for the device.
    /**
     *  This is a read only feature. This enumeration gives the device's access status at the moment of the last execution of the DeviceUpdateList command. This value only changes on execution of the DeviceUpdateList command.
     *
     *  The following string values might be valid for this feature:
     *  - \b Unknown (Display string: 'Unknown'): This enumeration value indicates that the device accessibility is not known.
     *  - \b ReadWrite (Display string: 'Read/Write'): This enumeration value indicates that full access to the device is available.
     *  - \b ReadOnly (Display string: 'Read Only'): This enumeration value indicates that read access to the device is available.
     *  - \b NoAccess (Display string: 'No Access'): This enumeration value indicates that no access to the device is available.
     *  - \b Busy (Display string: 'Busy'): This enumeration value indicates that the device is already opened by another entity.
     *  - \b OpenReadWrite (Display string: 'Open Read Write'): This enumeration value indicates that the device is open in Read/Write mode by this GenTL host.
     *  - \b OpenReadOnly (Display string: 'Open Read Only'): This enumeration value indicates that the device is open in Read only mode by this GenTL host.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 deviceAccessStatus;
    /// \brief A string property. Device's serial number.
    /**
     *  Device's serial number. This string is a unique identifier of the device.
     */
    PropertyS deviceSerialNumber;
    /// \brief A string property. User-programmable device identifier.
    /**
     *  User-programmable device identifier.
     */
    PropertyS deviceUserID;
    /// \brief An integer property. Major version of the Transport Layer of the device.
    /**
     *  Major version of the Transport Layer of the device.
     */
    PropertyI64 deviceTLVersionMajor;
    /// \brief An integer property. Minor version of the Transport Layer of the device.
    /**
     *  Minor version of the Transport Layer of the device.
     */
    PropertyI64 deviceTLVersionMinor;
    /// \brief An integer property. Indicates the current IP address of the GVCP interface of the selected remote device.
    /**
     *  This is a read only element. It indicates the current IP address of the GVCP interface of the selected remote device.
     */
    PropertyI64 gevDeviceIPAddress;
    /// \brief An integer property. Indicates the current subnet mask of the GVCP interface of the selected remote device.
    /**
     *  This is a read only element. It indicates the current subnet mask of the GVCP interface of the selected remote device.
     */
    PropertyI64 gevDeviceSubnetMask;
    /// \brief An integer property. Indicates the current gateway of the GVCP interface of the selected remote device.
    /**
     *  This is a read only element. It indicates the current gateway of the GVCP interface of the selected remote device.
     */
    PropertyI64 gevDeviceGateway;
    /// \brief An enumerated integer property. Identifies the IP configuration of the GVCP interface of the selected remote device.
    /**
     *  This is a read only feature. This enumeration provides a value that indicates the Device IP configuration of the GVCP interface of the selected remote device. This value only changes on execution of the DeviceUpdateList command.
     *
     *  The following string values might be valid for this feature:
     *  - \b DHCP (Display string: 'DHCP')
     *  - \b PersistentIP (Display string: 'Persistent IP')
     *  - \b LinkLocal (Display string: 'Link Local')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 gevDeviceIPConfigurationStatus;
    /// \brief An integer property. Indicates the 48-bit MAC address of the GVCP interface of the selected remote device.
    /**
     *  This is a read only element. It indicates the 48-bit MAC address of the GVCP interface of the selected remote device.
     */
    PropertyI64 gevDeviceMACAddress;
    /// \brief An enumerated integer property. The current control mode of the device.
    /**
     *  This enumeration provides a value that indicates the current control mode of the device.
     *
     *  The following string values might be valid for this feature:
     *  - \b Open (Display string: 'Open'): This enumeration value indicates that the device is open for control or exclusive access.
     *  - \b ControlAccess (Display string: 'Control Access'): This enumeration value indicates that the device is controlled by another host, but switchover or read-only access is possible.
     *  - \b ExclusiveAccess (Display string: 'Exclusive Access'): This enumeration value indicates that the device is under exclusive access by a host and cannot be accessed by another.
     *  - \b NoAccess (Display string: 'No Access'): This enumeration value indicates that the device cannot be accessed, for instance it may be a GigE Vision device on a subnet different from the interface.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 gevCurrentControlMode;
    /// \brief An integer property. Defines the maximum time in milli-seconds the host driver will wait for an ACK from the device to a previously sent command(deprecated).
    /**
     *  \deprecated
     *  Defines the maximum time in milli-seconds the host driver will wait for an ACK from the device to a previously sent command. This feature has been declared deprecated. Use 'LinkCommandTimeout' of the DeviceModule instead.
     */
    PropertyI64 mvDeviceCommandChannelTransmissionTimeout;
    /// \brief An integer property. Indicates the number of retransmissions allowed when command channel message timed out (no ACK was received from the device)(deprecated).
    /**
     *  \deprecated
     *  Indicates the number of retransmissions allowed when command channel message timed out (no ACK was received from the device). This feature has been declared deprecated. Use 'LinkCommandRetryCount' of the DeviceModule instead.
     */
    PropertyI64 mvDeviceCommandChannelRetryCount;
    /// \brief An integer property. Indicates the major version number of the GigE Vision specification this device complies with.
    /**
     *  This is a read only element. It indicates the major version number of the GigE Vision specification this device complies with.
     */
    PropertyI64 gevVersionMajor;
    /// \brief An integer property. Indicates the minor version number of the GigE Vision specification this device complies with.
    /**
     *  This is a read only element. It indicates the minor version number of the GigE Vision specification this device complies with.
     */
    PropertyI64 gevVersionMinor;
    /// \brief An integer property. Indicates the major version number of the GenCP specification this device complies with.
    /**
     *  This is a read only element. It indicates the major version number of the GenCP specification this device complies with.
     */
    PropertyI64 genCPVersionMajor;
    /// \brief An integer property. Indicates the minor version number of the GenCP specification this device complies with.
    /**
     *  This is a read only element. It indicates the minor version number of the GenCP specification this device complies with.
     */
    PropertyI64 genCPVersionMinor;
    /// \brief An integer property. Indicates the major version number of the USB3 Vision specification this device complies with.
    /**
     *  This is a read only element. It indicates the major version number of the USB3 Vision specification this device complies with.
     */
    PropertyI64 u3vVersionMajor;
    /// \brief An integer property. Indicates the minor version number of the USB3 Vision specification this device complies with.
    /**
     *  This is a read only element. It indicates the minor version number of the USB3 Vision specification this device complies with.
     */
    PropertyI64 u3vVersionMinor;
    /// \brief A boolean property. Reports the availability of the primary application switchover feature.
    /**
     *  Reports the availability of the primary application switchover feature.
     */
    PropertyIBoolean mvDevicePrimaryApplicationSwitchoverSupported;
    /// \brief A boolean property. Enables or disables primary application switchover.
    /**
     *  Enables or disables primary application switchover.
     */
    PropertyIBoolean mvDevicePrimaryApplicationSwitchoverEnable;
    /// \brief An integer property. Controls the key to use to authenticate primary application switchover requests.
    /**
     *  Controls the key to use to authenticate primary application switchover requests. If the device to take over has 'mvDevicePrimaryApplicationSwitchoverEnable' set to true and this key matches the devices internal key control access will be granted.
     */
    PropertyI64 gevApplicationSwitchoverKey;
    /// \brief An integer property. The number of physical network interfaces supported by this device.
    /**
     *  This is an integer feature. It contains the number of physical network interfaces supported by this device.
     */
    PropertyI64 mvDeviceNetworkInterfaceCount;
    /// \brief A method object. Apply the force IP settings (GevDeviceForceIPAddress, GevDeviceForceSubnetMask and GevDeviceForceGateway) in the Device using ForceIP command.
    /**
     *  Apply the force IP settings (GevDeviceForceIPAddress, GevDeviceForceSubnetMask and GevDeviceForceGateway) in the Device using ForceIP command.
     */
    Method gevDeviceForceIP;
    /// \brief An integer property. Static IP address to set for the GVCP interface of the selected remote device.
    /**
     *  Static IP address to set for the GVCP interface of the selected remote device.
     */
    PropertyI64 gevDeviceForceIPAddress;
    /// \brief An integer property. Static subnet mask to set for the GVCP interface of the selected remote device.
    /**
     *  Static subnet mask to set for the GVCP interface of the selected remote device.
     */
    PropertyI64 gevDeviceForceSubnetMask;
    /// \brief An integer property. Static gateway IP address to set for the GVCP interface of the selected remote device.
    /**
     *  Static gateway IP address to set for the GVCP interface of the selected remote device.
     */
    PropertyI64 gevDeviceForceGateway;
    /// \brief A method object. Updates the device's firmware.
    /**
     *  Updates the device using the firmware images embedded into this producer library.
     */
    Method mvDeviceUpdateFirmware;
    /// \brief A method object. Sends the action command
    /**
     *  It either sends an action command unicast packet to the IP address specified by the 'mvActionDestinationIPAddress' property, or broadcasts an action command broadcast packet on the broadcast domain specified by the 'mvActionDestinationIPAddress' property
     */
    Method actionCommand;
    /// \brief An integer property. The device key for the action command
    /**
     *  The device key is one of the three main components that constitute an action command packet. It partly defines which device(s) will positively assert the action command packet.
     */
    PropertyI64 actionDeviceKey;
    /// \brief An integer property. The group key for the action command
    /**
     *  The group key is one of the three main components that constitute an action command packet. It partly defines which device(s) will positively assert the action command packet.
     */
    PropertyI64 actionGroupKey;
    /// \brief An integer property. The group mask for the action command
    /**
     *  The group mask is one of the three main components that constitute an action command packet. It partly defines which device(s) will positively assert the action command packet.
     */
    PropertyI64 actionGroupMask;
    /// \brief A boolean property. Enables or disables action command scheduling
    /**
     *  Action commands can be scheduled to execute at a particular moment in time, defined by the 'mvActionScheduledTime' property. If this is disabled the action command takes place immediately after it is received and asserted by each device.
     */
    PropertyIBoolean actionScheduledTimeEnable;
    /// \brief An integer property. Sets the time in which the action command will be executed
    /**
     *  Sets the time in which the action command will be executed
     */
    PropertyI64 actionScheduledTime;
    /// \brief An integer property. The IP address of the action command recipient
    /**
     *  A valid IP address if the action command shall be unicast. A broadcast subnet if the action command shall be broadcast.
     */
    PropertyI64 gevActionDestinationIPAddress;
    /// \brief An enumerated integer property. Selects which Event to signal to the host application.
    /**
     *  Selects which Event to signal to the host application.
     *
     *  The following string values might be valid for this feature:
     *  - \b AcquisitionTrigger (Display string: 'Acquisition Trigger'): Device just received a trigger for the Acquisition of one or many Frames.
     *  - \b AcquisitionTriggerMissed (Display string: 'Acquisition Trigger Missed'): Device just missed a trigger for the Acquisition of one or many Frames.
     *  - \b AcquisitionStart (Display string: 'Acquisition Start'): Device just started the Acquisition of one or many Frames.
     *  - \b AcquisitionEnd (Display string: 'Acquisition End'): Device just completed the Acquisition of one or many Frames.
     *  - \b AcquisitionTransferStart (Display string: 'Acquisition Transfer Start'): Device just started the transfer of one or many Frames.
     *  - \b AcquisitionTransferEnd (Display string: 'Acquisition Transfer End'): Device just completed the transfer of one or many Frames.
     *  - \b AcquisitionError (Display string: 'Acquisition Error'): Device just detected an error during the active Acquisition.
     *  - \b FrameBurstStart (Display string: 'Frame Burst Start'): Device just started the capture of a burst of Frames.
     *  - \b FrameBurstEnd (Display string: 'Frame Burst End'): Device just completed the capture of a burst of Frames.
     *  - \b FrameTrigger (Display string: 'Frame Trigger'): Device just received a trigger to start the capture of one Frame.
     *  - \b FrameTriggerMissed (Display string: 'Frame Trigger Missed'): Device just missed a trigger to start the capture of one Frame.
     *  - \b FrameStart (Display string: 'Frame Start'): Device just started the capture of one Frame.
     *  - \b FrameEnd (Display string: 'Frame End'): Device just completed the capture of one Frame.
     *  - \b FrameTransferStart (Display string: 'Frame Transfer Start'): Device just started the transfer of one Frame.
     *  - \b FrameTransferEnd (Display string: 'Frame Transfer End'): Device just completed the transfer of one Frame.
     *  - \b LineTrigger (Display string: 'Line Trigger'): Device just received a trigger to start the capture of one Line.
     *  - \b LineTriggerMissed (Display string: 'Line Trigger Missed'): Device just missed a trigger to start the capture of one Line.
     *  - \b LineStart (Display string: 'Line Start'): Device just started the capture of one Line.
     *  - \b LineEnd (Display string: 'Line End'): Device just completed the capture of one Line.
     *  - \b ExposureStart (Display string: 'Exposure Start'): Device just started the exposure of one Frame (or Line).
     *  - \b ExposureEnd (Display string: 'Exposure End'): Device just completed the exposure of one Frame (or Line).
     *  - \b Stream0TransferStart (Display string: 'Stream 0 Transfer Start'): Device just started the transfer of one or many Blocks.
     *  - \b Stream0TransferEnd (Display string: 'Stream 0 Transfer End'): Device just completed the transfer of one or many Blocks.
     *  - \b Stream0TransferPause (Display string: 'Stream 0 Transfer Pause'): Device just paused the transfer.
     *  - \b Stream0TransferResume (Display string: 'Stream 0 Transfer Resume'): Device just resumed the transfer.
     *  - \b Stream0TransferBlockStart (Display string: 'Stream 0 Transfer Block Start'): Device just started the transfer of one Block.
     *  - \b Stream0TransferBlockEnd (Display string: 'Stream 0 Transfer Block End'): Device just completed the transfer of one Block.
     *  - \b Stream0TransferBlockTrigger (Display string: 'Stream 0 Transfer Block Trigger'): Device just received a trigger to start the transfer of one Block.
     *  - \b Stream0TransferBurstStart (Display string: 'Stream 0 Transfer Burst Start'): Device just started the transfer of a burst of Blocks.
     *  - \b Stream0TransferBurstEnd (Display string: 'Stream 0 Transfer Burst End'): Device just completed the transfer of a burst of Blocks.
     *  - \b Stream0TransferOverflow (Display string: 'Stream 0 Transfer Overflow'): Device transfer queue overflowed.
     *  - \b SequencerSetChange (Display string: 'Sequencer Set Change'): Device sequencer set has changed.
     *  - \b Counter0Start (Display string: 'Counter 0 Start'): The event will be generated when counter 0 starts counting.
     *  - \b Counter1Start (Display string: 'Counter 1 Start'): The event will be generated when counter 1 starts counting.
     *  - \b Counter\#2\#Start (Display string: 'Counter \#2\# Start'): The event will be generated when counter \#2\# starts counting.
     *  - \b Counter0End (Display string: 'Counter 0 End'): The event will be generated when counter 0 ends counting.
     *  - \b Counter1End (Display string: 'Counter 1 End'): The event will be generated when counter 1 ends counting.
     *  - \b Counter\#2\#End (Display string: 'Counter \#2\# End'): The event will be generated when counter \#2\# ends counting.
     *  - \b Timer0Start (Display string: 'Timer 0 Start'): The event will be generated when Timer 0 starts counting.
     *  - \b Timer1Start (Display string: 'Timer 1 Start'): The event will be generated when Timer 1 starts counting.
     *  - \b Timer\#2\#Start (Display string: 'Timer \#2\# Start'): The event will be generated when Timer \#2\# starts counting.
     *  - \b Timer0End (Display string: 'Timer 0 End'): The event will be generated when Timer 0 ends counting.
     *  - \b Timer1End (Display string: 'Timer 1 End'): The event will be generated when Timer 1 ends counting.
     *  - \b Timer\#2\#End (Display string: 'Timer \#2\# End'): The event will be generated when Timer \#2\# ends counting.
     *  - \b Encoder0Stopped (Display string: 'Encoder 0 Stopped'): The event will be generated when the Encoder 0 stops for longer than EncoderTimeout.
     *  - \b Encoder1Stopped (Display string: 'Encoder 1 Stopped'): The event will be generated when the Encoder 1 stops for longer than EncoderTimeout.
     *  - \b Encoder\#2\#Stopped (Display string: 'Encoder \#2\# Stopped'): The event will be generated when the Encoder \#2\# stops for longer than EncoderTimeout.
     *  - \b Encoder0Restarted (Display string: 'Encoder 0 Restarted'): The event will be generated when the Encoder 0 restarts moving.
     *  - \b Encoder1Restarted (Display string: 'Encoder 1 Restarted'): The event will be generated when the Encoder 1 restarts moving.
     *  - \b Encoder\#2\#Restarted (Display string: 'Encoder \#2\# Restarted'): The event will be generated when the Encoder \#2\# restarts moving.
     *  - \b Line0RisingEdge (Display string: 'Line 0 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 0.
     *  - \b Line1RisingEdge (Display string: 'Line 1 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 1.
     *  - \b Line\#2\#RisingEdge (Display string: 'Line \#2\# Rising Edge'): The event will be generated when a Rising Edge is detected on the Line \#2\#.
     *  - \b Line0FallingEdge (Display string: 'Line 0 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 0.
     *  - \b Line1FallingEdge (Display string: 'Line 1 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 1.
     *  - \b Line\#2\#FallingEdge (Display string: 'Line \#2\# Falling Edge'): The event will be generated when a Falling Edge is detected on the Line \#2\#.
     *  - \b Line0AnyEdge (Display string: 'Line 0 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 0.
     *  - \b Line1AnyEdge (Display string: 'Line 1 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 1.
     *  - \b Line\#2\#AnyEdge (Display string: 'Line \#2\# Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line \#2\#.
     *  - \b LinkTrigger0 (Display string: 'Link Trigger 0'): The event will be generated when a Rising Edge is detected on the LinkTrigger 0.
     *  - \b LinkTrigger1 (Display string: 'Link Trigger 1'): The event will be generated when a Rising Edge is detected on the LinkTrigger 1.
     *  - \b LinkTrigger\#2\# (Display string: 'Link Trigger \#2\#'): The event will be generated when a Rising Edge is detected on the LinkTrigger \#2\#.
     *  - \b LinkSpeedChange (Display string: 'Link Speed Change'): The event will be generated when the link speed has changed.
     *  - \b ActionLate (Display string: 'Action Late'): The event will be generated when a valid scheduled action command is received and is scheduled to be executed at a time that is already past.
     *  - \b Error (Display string: 'Error'): Device just detected an error during the active Acquisition.
     *  - \b Test (Display string: 'Test'): The test event will be generated when the device receives the TestEventGenerate command (EventNotification for the Test event is always On).
     *  - \b PrimaryApplicationSwitch (Display string: 'Primary Application Switch'): The event will be generated when a primary application switchover has been granted (GigE Vision Specific).
     *  - \b Counter2Start (Display string: 'Counter 2 Start'): The event will be generated when counter 2 starts counting.
     *  - \b Counter3Start (Display string: 'Counter 3 Start'): The event will be generated when counter 3 starts counting.
     *  - \b Counter4Start (Display string: 'Counter 4 Start'): The event will be generated when counter 4 starts counting.
     *  - \b Counter5Start (Display string: 'Counter 5 Start'): The event will be generated when counter 5 starts counting.
     *  - \b Counter6Start (Display string: 'Counter 6 Start'): The event will be generated when counter 6 starts counting.
     *  - \b Counter7Start (Display string: 'Counter 7 Start'): The event will be generated when counter 7 starts counting.
     *  - \b Counter8Start (Display string: 'Counter 8 Start'): The event will be generated when counter 8 starts counting.
     *  - \b Counter9Start (Display string: 'Counter 9 Start'): The event will be generated when counter 9 starts counting.
     *  - \b Counter10Start (Display string: 'Counter 10 Start'): The event will be generated when counter 10 starts counting.
     *  - \b Counter11Start (Display string: 'Counter 11 Start'): The event will be generated when counter 11 starts counting.
     *  - \b Counter12Start (Display string: 'Counter 12 Start'): The event will be generated when counter 12 starts counting.
     *  - \b Counter13Start (Display string: 'Counter 13 Start'): The event will be generated when counter 13 starts counting.
     *  - \b Counter14Start (Display string: 'Counter 14 Start'): The event will be generated when counter 14 starts counting.
     *  - \b Counter15Start (Display string: 'Counter 15 Start'): The event will be generated when counter 15 starts counting.
     *  - \b Counter2End (Display string: 'Counter 2 End'): The event will be generated when counter 2 ends counting.
     *  - \b Counter3End (Display string: 'Counter 3 End'): The event will be generated when counter 3 ends counting.
     *  - \b Counter4End (Display string: 'Counter 4 End'): The event will be generated when counter 4 ends counting.
     *  - \b Counter5End (Display string: 'Counter 5 End'): The event will be generated when counter 5 ends counting.
     *  - \b Counter6End (Display string: 'Counter 6 End'): The event will be generated when counter 6 ends counting.
     *  - \b Counter7End (Display string: 'Counter 7 End'): The event will be generated when counter 7 ends counting.
     *  - \b Counter8End (Display string: 'Counter 8 End'): The event will be generated when counter 8 ends counting.
     *  - \b Counter9End (Display string: 'Counter 9 End'): The event will be generated when counter 9 ends counting.
     *  - \b Counter10End (Display string: 'Counter 10 End'): The event will be generated when counter 10 ends counting.
     *  - \b Counter11End (Display string: 'Counter 11 End'): The event will be generated when counter 11 ends counting.
     *  - \b Counter12End (Display string: 'Counter 12 End'): The event will be generated when counter 12 ends counting.
     *  - \b Counter13End (Display string: 'Counter 13 End'): The event will be generated when counter 13 ends counting.
     *  - \b Counter14End (Display string: 'Counter 14 End'): The event will be generated when counter 14 ends counting.
     *  - \b Counter15End (Display string: 'Counter 15 End'): The event will be generated when counter 15 ends counting.
     *  - \b Timer2Start (Display string: 'Timer 2 Start'): The event will be generated when Timer 2 starts counting.
     *  - \b Timer3Start (Display string: 'Timer 3 Start'): The event will be generated when Timer 3 starts counting.
     *  - \b Timer4Start (Display string: 'Timer 4 Start'): The event will be generated when Timer 4 starts counting.
     *  - \b Timer5Start (Display string: 'Timer 5 Start'): The event will be generated when Timer 5 starts counting.
     *  - \b Timer6Start (Display string: 'Timer 6 Start'): The event will be generated when Timer 6 starts counting.
     *  - \b Timer7Start (Display string: 'Timer 7 Start'): The event will be generated when Timer 7 starts counting.
     *  - \b Timer8Start (Display string: 'Timer 8 Start'): The event will be generated when Timer 8 starts counting.
     *  - \b Timer9Start (Display string: 'Timer 9 Start'): The event will be generated when Timer 9 starts counting.
     *  - \b Timer10Start (Display string: 'Timer 10 Start'): The event will be generated when Timer 10 starts counting.
     *  - \b Timer11Start (Display string: 'Timer 11 Start'): The event will be generated when Timer 11 starts counting.
     *  - \b Timer12Start (Display string: 'Timer 12 Start'): The event will be generated when Timer 12 starts counting.
     *  - \b Timer13Start (Display string: 'Timer 13 Start'): The event will be generated when Timer 13 starts counting.
     *  - \b Timer14Start (Display string: 'Timer 14 Start'): The event will be generated when Timer 14 starts counting.
     *  - \b Timer15Start (Display string: 'Timer 15 Start'): The event will be generated when Timer 15 starts counting.
     *  - \b Timer2End (Display string: 'Timer 2 End'): The event will be generated when Timer 2 ends counting.
     *  - \b Timer3End (Display string: 'Timer 3 End'): The event will be generated when Timer 3 ends counting.
     *  - \b Timer4End (Display string: 'Timer 4 End'): The event will be generated when Timer 4 ends counting.
     *  - \b Timer5End (Display string: 'Timer 5 End'): The event will be generated when Timer 5 ends counting.
     *  - \b Timer6End (Display string: 'Timer 6 End'): The event will be generated when Timer 6 ends counting.
     *  - \b Timer7End (Display string: 'Timer 7 End'): The event will be generated when Timer 7 ends counting.
     *  - \b Timer8End (Display string: 'Timer 8 End'): The event will be generated when Timer 8 ends counting.
     *  - \b Timer9End (Display string: 'Timer 9 End'): The event will be generated when Timer 9 ends counting.
     *  - \b Timer10End (Display string: 'Timer 10 End'): The event will be generated when Timer 10 ends counting.
     *  - \b Timer11End (Display string: 'Timer 11 End'): The event will be generated when Timer 11 ends counting.
     *  - \b Timer12End (Display string: 'Timer 12 End'): The event will be generated when Timer 12 ends counting.
     *  - \b Timer13End (Display string: 'Timer 13 End'): The event will be generated when Timer 13 ends counting.
     *  - \b Timer14End (Display string: 'Timer 14 End'): The event will be generated when Timer 14 ends counting.
     *  - \b Timer15End (Display string: 'Timer 15 End'): The event will be generated when Timer 15 ends counting.
     *  - \b Encoder2Stopped (Display string: 'Encoder 2 Stopped'): The event will be generated when the Encoder 2 stops for longer than EncoderTimeout.
     *  - \b Encoder3Stopped (Display string: 'Encoder 3 Stopped'): The event will be generated when the Encoder 3 stops for longer than EncoderTimeout.
     *  - \b Encoder4Stopped (Display string: 'Encoder 4 Stopped'): The event will be generated when the Encoder 4 stops for longer than EncoderTimeout.
     *  - \b Encoder5Stopped (Display string: 'Encoder 5 Stopped'): The event will be generated when the Encoder 5 stops for longer than EncoderTimeout.
     *  - \b Encoder6Stopped (Display string: 'Encoder 6 Stopped'): The event will be generated when the Encoder 6 stops for longer than EncoderTimeout.
     *  - \b Encoder7Stopped (Display string: 'Encoder 7 Stopped'): The event will be generated when the Encoder 7 stops for longer than EncoderTimeout.
     *  - \b Encoder8Stopped (Display string: 'Encoder 8 Stopped'): The event will be generated when the Encoder 8 stops for longer than EncoderTimeout.
     *  - \b Encoder9Stopped (Display string: 'Encoder 9 Stopped'): The event will be generated when the Encoder 9 stops for longer than EncoderTimeout.
     *  - \b Encoder10Stopped (Display string: 'Encoder 10 Stopped'): The event will be generated when the Encoder 10 stops for longer than EncoderTimeout.
     *  - \b Encoder11Stopped (Display string: 'Encoder 11 Stopped'): The event will be generated when the Encoder 11 stops for longer than EncoderTimeout.
     *  - \b Encoder12Stopped (Display string: 'Encoder 12 Stopped'): The event will be generated when the Encoder 12 stops for longer than EncoderTimeout.
     *  - \b Encoder13Stopped (Display string: 'Encoder 13 Stopped'): The event will be generated when the Encoder 13 stops for longer than EncoderTimeout.
     *  - \b Encoder14Stopped (Display string: 'Encoder 14 Stopped'): The event will be generated when the Encoder 14 stops for longer than EncoderTimeout.
     *  - \b Encoder15Stopped (Display string: 'Encoder 15 Stopped'): The event will be generated when the Encoder 15 stops for longer than EncoderTimeout.
     *  - \b Encoder2Restarted (Display string: 'Encoder 2 Restarted'): The event will be generated when the Encoder 2 restarts moving.
     *  - \b Encoder3Restarted (Display string: 'Encoder 3 Restarted'): The event will be generated when the Encoder 3 restarts moving.
     *  - \b Encoder4Restarted (Display string: 'Encoder 4 Restarted'): The event will be generated when the Encoder 4 restarts moving.
     *  - \b Encoder5Restarted (Display string: 'Encoder 5 Restarted'): The event will be generated when the Encoder 5 restarts moving.
     *  - \b Encoder6Restarted (Display string: 'Encoder 6 Restarted'): The event will be generated when the Encoder 6 restarts moving.
     *  - \b Encoder7Restarted (Display string: 'Encoder 7 Restarted'): The event will be generated when the Encoder 7 restarts moving.
     *  - \b Encoder8Restarted (Display string: 'Encoder 8 Restarted'): The event will be generated when the Encoder 8 restarts moving.
     *  - \b Encoder9Restarted (Display string: 'Encoder 9 Restarted'): The event will be generated when the Encoder 9 restarts moving.
     *  - \b Encoder10Restarted (Display string: 'Encoder 10 Restarted'): The event will be generated when the Encoder 10 restarts moving.
     *  - \b Encoder11Restarted (Display string: 'Encoder 11 Restarted'): The event will be generated when the Encoder 11 restarts moving.
     *  - \b Encoder12Restarted (Display string: 'Encoder 12 Restarted'): The event will be generated when the Encoder 12 restarts moving.
     *  - \b Encoder13Restarted (Display string: 'Encoder 13 Restarted'): The event will be generated when the Encoder 13 restarts moving.
     *  - \b Encoder14Restarted (Display string: 'Encoder 14 Restarted'): The event will be generated when the Encoder 14 restarts moving.
     *  - \b Encoder15Restarted (Display string: 'Encoder 15 Restarted'): The event will be generated when the Encoder 15 restarts moving.
     *  - \b Line2RisingEdge (Display string: 'Line 2 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 2.
     *  - \b Line3RisingEdge (Display string: 'Line 3 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 3.
     *  - \b Line4RisingEdge (Display string: 'Line 4 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 4.
     *  - \b Line5RisingEdge (Display string: 'Line 5 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 5.
     *  - \b Line6RisingEdge (Display string: 'Line 6 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 6.
     *  - \b Line7RisingEdge (Display string: 'Line 7 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 7.
     *  - \b Line8RisingEdge (Display string: 'Line 8 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 8.
     *  - \b Line9RisingEdge (Display string: 'Line 9 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 9.
     *  - \b Line10RisingEdge (Display string: 'Line 10 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 10.
     *  - \b Line11RisingEdge (Display string: 'Line 11 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 11.
     *  - \b Line12RisingEdge (Display string: 'Line 12 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 12.
     *  - \b Line13RisingEdge (Display string: 'Line 13 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 13.
     *  - \b Line14RisingEdge (Display string: 'Line 14 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 14.
     *  - \b Line15RisingEdge (Display string: 'Line 15 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 15.
     *  - \b Line2FallingEdge (Display string: 'Line 2 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 2.
     *  - \b Line3FallingEdge (Display string: 'Line 3 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 3.
     *  - \b Line4FallingEdge (Display string: 'Line 4 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 4.
     *  - \b Line5FallingEdge (Display string: 'Line 5 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 5.
     *  - \b Line6FallingEdge (Display string: 'Line 6 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 6.
     *  - \b Line7FallingEdge (Display string: 'Line 7 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 7.
     *  - \b Line8FallingEdge (Display string: 'Line 8 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 8.
     *  - \b Line9FallingEdge (Display string: 'Line 9 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 9.
     *  - \b Line10FallingEdge (Display string: 'Line 10 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 10.
     *  - \b Line11FallingEdge (Display string: 'Line 11 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 11.
     *  - \b Line12FallingEdge (Display string: 'Line 12 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 12.
     *  - \b Line13FallingEdge (Display string: 'Line 13 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 13.
     *  - \b Line14FallingEdge (Display string: 'Line 14 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 14.
     *  - \b Line15FallingEdge (Display string: 'Line 15 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 15.
     *  - \b Line2AnyEdge (Display string: 'Line 2 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 2.
     *  - \b Line3AnyEdge (Display string: 'Line 3 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 3.
     *  - \b Line4AnyEdge (Display string: 'Line 4 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 4.
     *  - \b Line5AnyEdge (Display string: 'Line 5 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 5.
     *  - \b Line6AnyEdge (Display string: 'Line 6 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 6.
     *  - \b Line7AnyEdge (Display string: 'Line 7 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 7.
     *  - \b Line8AnyEdge (Display string: 'Line 8 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 8.
     *  - \b Line9AnyEdge (Display string: 'Line 9 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 9.
     *  - \b Line10AnyEdge (Display string: 'Line 10 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 10.
     *  - \b Line11AnyEdge (Display string: 'Line 11 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 11.
     *  - \b Line12AnyEdge (Display string: 'Line 12 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 12.
     *  - \b Line13AnyEdge (Display string: 'Line 13 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 13.
     *  - \b Line14AnyEdge (Display string: 'Line 14 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 14.
     *  - \b Line15AnyEdge (Display string: 'Line 15 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 15.
     *  - \b Link0Trigger (Display string: 'Link 0 Trigger')
     *  - \b Link1Trigger (Display string: 'Link 1 Trigger')
     *  - \b Link2Trigger (Display string: 'Link 2 Trigger')
     *  - \b Link3Trigger (Display string: 'Link 3 Trigger')
     *  - \b Link4Trigger (Display string: 'Link 4 Trigger')
     *  - \b Link5Trigger (Display string: 'Link 5 Trigger')
     *  - \b Link6Trigger (Display string: 'Link 6 Trigger')
     *  - \b Link7Trigger (Display string: 'Link 7 Trigger')
     *  - \b Link8Trigger (Display string: 'Link 8 Trigger')
     *  - \b Link9Trigger (Display string: 'Link 9 Trigger')
     *  - \b Link10Trigger (Display string: 'Link 10 Trigger')
     *  - \b Link11Trigger (Display string: 'Link 11 Trigger')
     *  - \b Link12Trigger (Display string: 'Link 12 Trigger')
     *  - \b Link13Trigger (Display string: 'Link 13 Trigger')
     *  - \b Link14Trigger (Display string: 'Link 14 Trigger')
     *  - \b Link15Trigger (Display string: 'Link 15 Trigger')
     *  - \b InterfaceListChanged (Display string: 'Interface List Changed'): This enumeration value indicates an event that is fired when the list of interfaces has been updated.
     *  - \b InterfaceLost (Display string: 'Interface Lost'): This enumeration value indicates an event that is raised when the interface connection is lost.
     *  - \b DeviceListChanged (Display string: 'Device List Changed'): This enumeration value indicates an event that is fired when the list of devices has been updated.
     *  - \b DeviceLost (Display string: 'Device Lost'): This enumeration value indicates an event that is raised when the local host looses connection to the physical(remote) device.
     *  - \b BufferTooSmall (Display string: 'Buffer Too Small'): This enumeration value indicates an event that is raised when the buffer was too small to receive the expected amount of data.
     *  - \b BuffersDiscarded (Display string: 'Buffers Discarded'): This enumeration value indicates an event that is raised when buffers discared by GenTL or device. This event could optionally carry two numeric child data fields EventBuffersDiscardedDeviceCount and EventBuffersDiscardedProducerCount.
     *  - \b BuffersDiscardedDeviceCount (Display string: 'Buffers Discarded Device Count'): This enumeration value indicates the number of buffers discarded by the device since last fired instance of this event (the producer would get to know about this for example by observing a gap in the block_id sequence).
     *  - \b BuffersDiscardedProducerCount (Display string: 'Buffers Discarded Producer Count'): This enumeration value indicates the number of buffers discarded by the producer since last fired instance of this event (this would happen e.g. if there are no free buffers available or if given buffer handling mode requires discarding old buffers etc.).
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 eventSelector;
    /// \brief An enumerated integer property. Activate or deactivate the notification to the host application of the occurrence of the selected Event.
    /**
     *  Activate or deactivate the notification to the host application of the occurrence of the selected Event.
     *
     *  The following string values might be valid for this feature:
     *  - \b Off (Display string: 'Off'): The selected Event notification is disabled.
     *  - \b On (Display string: 'On'): The selected Event notification is enabled.
     *  - \b Once (Display string: 'Once'): The selected Event notification is enabled for one event then return to Off state.
     *  - \b GigEVisionEvent (Display string: 'Gig E Vision Event')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 eventNotification;
    // *INDENT-OFF*
    PYTHON_OR_JAVA_ONLY( %mutable; )
    // *INDENT-ON*
};

#if !defined( DOXYGEN_SHOULD_SKIP_THIS ) && !defined( WRAP_ANY )
//-----------------------------------------------------------------------------
inline InterfaceModule::InterfaceModule( mvIMPACT::acquire::Device* pDev, int64_type index ) :
    mvIMPACT::acquire::ComponentCollection( INVALID_ID ),
    interfaceID(),
    interfaceDisplayName(),
    interfaceType(),
    interfaceTLVersionMajor(),
    interfaceTLVersionMinor(),
    gevInterfaceGatewaySelector(),
    gevInterfaceGateway(),
    gevInterfaceMACAddress(),
    gevInterfaceSubnetSelector(),
    gevInterfaceSubnetIPAddress(),
    gevInterfaceSubnetMask(),
    mvGevInterfaceMTU(),
    mvGevInterfaceLinkSpeed(),
    mvGevAdvancedDeviceDiscoveryEnable(),
    deviceUpdateList(),
    mvUnicastDeviceDiscoveryCommandCount(),
    mvUnicastDeviceDiscoveryCommandSelector(),
    mvUnicastDeviceDiscoveryDestinationIPAddress(),
    deviceUpdateTimeout(),
    deviceSelector(),
    deviceID(),
    deviceVendorName(),
    deviceModelName(),
    deviceType(),
    deviceLinkSpeed(),
    deviceAccessStatus(),
    deviceSerialNumber(),
    deviceUserID(),
    deviceTLVersionMajor(),
    deviceTLVersionMinor(),
    gevDeviceIPAddress(),
    gevDeviceSubnetMask(),
    gevDeviceGateway(),
    gevDeviceIPConfigurationStatus(),
    gevDeviceMACAddress(),
    gevCurrentControlMode(),
    mvDeviceCommandChannelTransmissionTimeout(),
    mvDeviceCommandChannelRetryCount(),
    gevVersionMajor(),
    gevVersionMinor(),
    genCPVersionMajor(),
    genCPVersionMinor(),
    u3vVersionMajor(),
    u3vVersionMinor(),
    mvDevicePrimaryApplicationSwitchoverSupported(),
    mvDevicePrimaryApplicationSwitchoverEnable(),
    gevApplicationSwitchoverKey(),
    mvDeviceNetworkInterfaceCount(),
    gevDeviceForceIP(),
    gevDeviceForceIPAddress(),
    gevDeviceForceSubnetMask(),
    gevDeviceForceGateway(),
    mvDeviceUpdateFirmware(),
    actionCommand(),
    actionDeviceKey(),
    actionGroupKey(),
    actionGroupMask(),
    actionScheduledTimeEnable(),
    actionScheduledTime(),
    gevActionDestinationIPAddress(),
    eventSelector(),
    eventNotification()
//-----------------------------------------------------------------------------
{
    mvIMPACT::acquire::ComponentLocator locator( pDev->deviceDriverFeatureList() );
    locator.bindSearchBase( locator.searchbase_id(), "GenTL/Interfaces" );
    std::ostringstream oss;
    oss << "Interface" << index;
    locator = mvIMPACT::acquire::ComponentLocator( locator.findComponent( oss.str() ) );
    m_hRoot = locator.searchbase_id();
    init( locator );
}
#endif // #if !defined( DOXYGEN_SHOULD_SKIP_THIS ) && !defined( WRAP_ANY )

#if !defined( DOXYGEN_SHOULD_SKIP_THIS ) && !defined( WRAP_ANY )
//-----------------------------------------------------------------------------
inline InterfaceModule::InterfaceModule( int64_type index ) :
    mvIMPACT::acquire::ComponentCollection( INVALID_ID ),
    interfaceID(),
    interfaceDisplayName(),
    interfaceType(),
    interfaceTLVersionMajor(),
    interfaceTLVersionMinor(),
    gevInterfaceGatewaySelector(),
    gevInterfaceGateway(),
    gevInterfaceMACAddress(),
    gevInterfaceSubnetSelector(),
    gevInterfaceSubnetIPAddress(),
    gevInterfaceSubnetMask(),
    mvGevInterfaceMTU(),
    mvGevInterfaceLinkSpeed(),
    mvGevAdvancedDeviceDiscoveryEnable(),
    deviceUpdateList(),
    mvUnicastDeviceDiscoveryCommandCount(),
    mvUnicastDeviceDiscoveryCommandSelector(),
    mvUnicastDeviceDiscoveryDestinationIPAddress(),
    deviceUpdateTimeout(),
    deviceSelector(),
    deviceID(),
    deviceVendorName(),
    deviceModelName(),
    deviceType(),
    deviceLinkSpeed(),
    deviceAccessStatus(),
    deviceSerialNumber(),
    deviceUserID(),
    deviceTLVersionMajor(),
    deviceTLVersionMinor(),
    gevDeviceIPAddress(),
    gevDeviceSubnetMask(),
    gevDeviceGateway(),
    gevDeviceIPConfigurationStatus(),
    gevDeviceMACAddress(),
    gevCurrentControlMode(),
    mvDeviceCommandChannelTransmissionTimeout(),
    mvDeviceCommandChannelRetryCount(),
    gevVersionMajor(),
    gevVersionMinor(),
    genCPVersionMajor(),
    genCPVersionMinor(),
    u3vVersionMajor(),
    u3vVersionMinor(),
    mvDevicePrimaryApplicationSwitchoverSupported(),
    mvDevicePrimaryApplicationSwitchoverEnable(),
    gevApplicationSwitchoverKey(),
    mvDeviceNetworkInterfaceCount(),
    gevDeviceForceIP(),
    gevDeviceForceIPAddress(),
    gevDeviceForceSubnetMask(),
    gevDeviceForceGateway(),
    mvDeviceUpdateFirmware(),
    actionCommand(),
    actionDeviceKey(),
    actionGroupKey(),
    actionGroupMask(),
    actionScheduledTimeEnable(),
    actionScheduledTime(),
    gevActionDestinationIPAddress(),
    eventSelector(),
    eventNotification()
//-----------------------------------------------------------------------------
{
    HLIST hList;
    TDMR_ERROR result;
    if( ( result = DMR_FindList( INVALID_ID, "mvGenTLConsumer", dmltDeviceDriverLib, 0, &hList ) ) != DMR_NO_ERROR )
    {
        ExceptionFactory::raiseException( MVIA_FUNCTION, __LINE__, result, "Couldn't find list 'mvGenTLConsumer'(type: dmltDeviceDriverLib)" );
    }
    mvIMPACT::acquire::ComponentLocator locator( hList );
    locator.bindSearchBase( locator.searchbase_id(), "GenTL/Interfaces" );
    std::ostringstream oss;
    oss << "Interface" << index;
    locator = mvIMPACT::acquire::ComponentLocator( locator.findComponent( oss.str() ) );
    m_hRoot = locator.searchbase_id();
    init( locator );
}
#endif // #if !defined( DOXYGEN_SHOULD_SKIP_THIS ) && !defined( WRAP_ANY )

//-----------------------------------------------------------------------------
/// \brief Category contains items that belong to the device module of the transport layer.
/**
 *  The Device category contains items that belong to the device module of the transport layer.
 * \ingroup GenICamInterfaceProducer
 */
class DeviceModule : public mvIMPACT::acquire::ComponentCollection
//-----------------------------------------------------------------------------
{
public:
    /// \brief Constructs a new <b>mvIMPACT::acquire::GenICam::DeviceModule</b> object.
    explicit DeviceModule(
        /// [in] A pointer to a <b>mvIMPACT::acquire::Device</b> object obtained from a <b>mvIMPACT::acquire::DeviceManager</b> object.
        mvIMPACT::acquire::Device* pDev,
        /// [in] The name of the driver internal setting to access with this instance.
        /// A list of valid setting names can be obtained by a call to
        /// <b>mvIMPACT::acquire::FunctionInterface::getAvailableSettings</b>, new
        /// settings can be created with the function
        /// <b>mvIMPACT::acquire::FunctionInterface::createSetting</b>
        const std::string& settingName = "Base" ) :
        mvIMPACT::acquire::ComponentCollection( pDev ),
        deviceID(),
        deviceSerialNumber(),
        deviceUserID(),
        deviceVendorName(),
        deviceModelName(),
        deviceFamilyName(),
        deviceVersion(),
        deviceManufacturerInfo(),
        deviceType(),
        deviceDisplayName(),
        deviceTimestampFrequency(),
        deviceAccessStatus(),
        deviceChunkDataFormat(),
        deviceEventDataFormat(),
        gevDeviceMACAddress(),
        gevDeviceIPAddress(),
        gevDeviceSubnetMask(),
        gevDeviceGateway(),
        gevVersionMajor(),
        gevVersionMinor(),
        genCPVersionMajor(),
        genCPVersionMinor(),
        u3vVersionMajor(),
        u3vVersionMinor(),
        deviceEndianessMechanism(),
        linkCommandTimeout(),
        mvLinkCommandTimeoutCheckGranularity(),
        linkCommandRetryCount(),
        streamSelector(),
        streamID(),
        eventSelector(),
        eventNotification()
    {
        pDev->validateInterfaceLayout( dilGenICam );
        mvIMPACT::acquire::DeviceComponentLocator locator( pDev, mvIMPACT::acquire::dltSetting, settingName );
        locator.bindSearchBase( locator.searchbase_id(), "Camera/GenTL/Device" );
        m_hRoot = locator.searchbase_id();
        locator.bindComponent( deviceID, "DeviceID" );
        locator.bindComponent( deviceSerialNumber, "DeviceSerialNumber" );
        locator.bindComponent( deviceUserID, "DeviceUserID" );
        locator.bindComponent( deviceVendorName, "DeviceVendorName" );
        locator.bindComponent( deviceModelName, "DeviceModelName" );
        locator.bindComponent( deviceFamilyName, "DeviceFamilyName" );
        locator.bindComponent( deviceVersion, "DeviceVersion" );
        locator.bindComponent( deviceManufacturerInfo, "DeviceManufacturerInfo" );
        locator.bindComponent( deviceType, "DeviceType" );
        locator.bindComponent( deviceDisplayName, "DeviceDisplayName" );
        locator.bindComponent( deviceTimestampFrequency, "DeviceTimestampFrequency" );
        locator.bindComponent( deviceAccessStatus, "DeviceAccessStatus" );
        locator.bindComponent( deviceChunkDataFormat, "DeviceChunkDataFormat" );
        locator.bindComponent( deviceEventDataFormat, "DeviceEventDataFormat" );
        locator.bindComponent( gevDeviceMACAddress, "GevDeviceMACAddress" );
        locator.bindComponent( gevDeviceIPAddress, "GevDeviceIPAddress" );
        locator.bindComponent( gevDeviceSubnetMask, "GevDeviceSubnetMask" );
        locator.bindComponent( gevDeviceGateway, "GevDeviceGateway" );
        locator.bindComponent( gevVersionMajor, "GevVersionMajor" );
        locator.bindComponent( gevVersionMinor, "GevVersionMinor" );
        locator.bindComponent( genCPVersionMajor, "GenCPVersionMajor" );
        locator.bindComponent( genCPVersionMinor, "GenCPVersionMinor" );
        locator.bindComponent( u3vVersionMajor, "U3vVersionMajor" );
        locator.bindComponent( u3vVersionMinor, "U3vVersionMinor" );
        locator.bindComponent( deviceEndianessMechanism, "DeviceEndianessMechanism" );
        locator.bindComponent( linkCommandTimeout, "LinkCommandTimeout" );
        locator.bindComponent( mvLinkCommandTimeoutCheckGranularity, "mvLinkCommandTimeoutCheckGranularity" );
        locator.bindComponent( linkCommandRetryCount, "LinkCommandRetryCount" );
        locator.bindComponent( streamSelector, "StreamSelector" );
        locator.bindComponent( streamID, "StreamID" );
        locator.bindComponent( eventSelector, "EventSelector" );
        locator.bindComponent( eventNotification, "EventNotification" );
    }
    // *INDENT-OFF*
    PYTHON_OR_JAVA_ONLY( %immutable; )
    // *INDENT-ON*
    /// \brief A string property. This feature is deprecated (See DeviceSerialNumber).
    /**
     *  \deprecated
     *  This feature is deprecated (See DeviceSerialNumber). It was representing the Device unique identifier (serial number).
     */
    PropertyS deviceID;
    /// \brief A string property. Device's serial number.
    /**
     *  Device's serial number. This string is a unique identifier of the device.
     */
    PropertyS deviceSerialNumber;
    /// \brief A string property. User-programmable device identifier.
    /**
     *  User-programmable device identifier.
     */
    PropertyS deviceUserID;
    /// \brief A string property. Name of the manufacturer of the device.
    /**
     *  Name of the manufacturer of the device.
     */
    PropertyS deviceVendorName;
    /// \brief A string property. Model of the device.
    /**
     *  Model of the device.
     */
    PropertyS deviceModelName;
    /// \brief A string property. Identifier of the product family of the device.
    /**
     *  Identifier of the product family of the device.
     */
    PropertyS deviceFamilyName;
    /// \brief A string property. Version of the device.
    /**
     *  Version of the device.
     */
    PropertyS deviceVersion;
    /// \brief A string property. Manufacturer information about the device.
    /**
     *  Manufacturer information about the device.
     */
    PropertyS deviceManufacturerInfo;
    /// \brief An enumerated integer property. Returns the device type.
    /**
     *  Returns the device type.
     *
     *  The following string values might be valid for this feature:
     *  - \b Transmitter (Display string: 'Transmitter'): Data stream transmitter device.
     *  - \b Receiver (Display string: 'Receiver'): Data stream receiver device.
     *  - \b Transceiver (Display string: 'Transceiver'): Data stream receiver and transmitter device.
     *  - \b Peripheral (Display string: 'Peripheral'): Controllable device (with no data stream handling).
     *  - \b Mixed (Display string: 'Mixed'): This enumeration value indicates that this is a device for a mixed protocol.
     *  - \b Custom (Display string: 'Custom'): This enumeration value indicates that this is a device for a custom protocol.
     *  - \b GEV (Display string: 'GigE Vision'): This enumeration value indicates that this is a device for the GigE Vision protocol.
     *  - \b CameraLink (Display string: 'CameraLink'): This enumeration value indicates that this is a device for the CameraLink protocol.
     *  - \b CoaXPress (Display string: 'CoaXPress'): This enumeration value indicates that this is a device for the CoaXPress protocol.
     *  - \b CameraLinkHS (Display string: 'CameraLink HS'): This enumeration value indicates that this is a device for the CameraLink HS protocol.
     *  - \b U3V (Display string: 'USB3 Vision'): This enumeration value indicates that this is a device for the USB3 Vision protocol.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 deviceType;
    /// \brief A string property. Indicates user readable name for the remote device.
    /**
     *  This is a read only element. It is a string that indicates user readable name for the remote device model.
     */
    PropertyS deviceDisplayName;
    /// \brief An integer property. Indicates the tick-frequency of the timestamp clock of the remote device.
    /**
     *  Indicates the tick-frequency of the timestamp clock of the remote device.
     */
    PropertyI64 deviceTimestampFrequency;
    /// \brief An enumerated integer property. Indicates the current access status for the device.
    /**
     *  This is a read only feature. This enumeration gives the device's access status at the moment of the last execution of the DeviceUpdateList command. This value only changes on execution of the DeviceUpdateList command.
     *
     *  The following string values might be valid for this feature:
     *  - \b Unknown (Display string: 'Unknown'): This enumeration value indicates that the device accessibility is not known.
     *  - \b ReadWrite (Display string: 'Read/Write'): This enumeration value indicates that full access to the device is available.
     *  - \b ReadOnly (Display string: 'Read Only'): This enumeration value indicates that read access to the device is available.
     *  - \b NoAccess (Display string: 'No Access'): This enumeration value indicates that no access to the device is available.
     *  - \b Busy (Display string: 'Busy'): This enumeration value indicates that the device is already opened by another entity.
     *  - \b OpenReadWrite (Display string: 'Open Read Write'): This enumeration value indicates that the device is open in Read/Write mode by this GenTL host.
     *  - \b OpenReadOnly (Display string: 'Open Read Only'): This enumeration value indicates that the device is open in Read only mode by this GenTL host.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 deviceAccessStatus;
    /// \brief An enumerated integer property. Indicates the chunk data format used by the remote device.
    /**
     *  This is a read only feature. This enumeration provides a value that indicates the chunk data format used by the remote device.
     *
     *  The following string values might be valid for this feature:
     *  - \b None (Display string: 'None'): This enumeration value indicates that the device does not use chunk data at all.
     *  - \b GigEVision (Display string: 'GigE Vision'): This enumeration value indicates that the device formats the chunk data using chunk data format defined by GigE Vision specification version 1.x. The chunk data decoding algorithm (chunk adapter) common for the GigE Vision devices can be used.
     *  - \b Custom (Display string: 'Custom'): This enumeration value indicates that the device formats the chunk data using a custom, non-standard format. Without a-priori additional knowledge about the device and its implementation, the GenTL Consumer should always use the generic chunk adapter to decode the chunk data, not making any assumptions about the internal event data layout..
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 deviceChunkDataFormat;
    /// \brief An enumerated integer property. Indicates the event data format used by the remote device.
    /**
     *  This is a read only feature. This enumeration provides a value that indicates the event data format used by the remote device.
     *
     *  The following string values might be valid for this feature:
     *  - \b None (Display string: 'None'): This enumeration value indicates that the device does not use event data at all.
     *  - \b GigEVision (Display string: 'GigE Vision'): This enumeration value indicates that the device formats the event data using the event data format defined by GigE Vision specification version 1.x. The event data decoding algorithm (event adapter) common for the GigE Vision devices can be used.
     *  - \b GigEVisionExtendedId (Display string: 'GigE Vision Extended Id'): This enumeration value indicates that the device formats the event data using the event data format defined by GigE Vision specification version 2.x. The event data decoding algorithm (event adapter) common for the GigE Vision devices can be used.
     *  - \b Custom (Display string: 'Custom'): This enumeration value indicates that the device formats the event data using a custom, non-standard format. Without a-priori additional knowledge about the device and its implementation, the GenTL Consumer should always use the generic event adapter to decode the event data, not making any assumptions about the internal event data layout..
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 deviceEventDataFormat;
    /// \brief An integer property. Indicates the 48-bit MAC address of the GVCP interface of the selected remote device.
    /**
     *  This is a read only element. It indicates the 48-bit MAC address of the GVCP interface of the selected remote device.
     */
    PropertyI64 gevDeviceMACAddress;
    /// \brief An integer property. Indicates the current IP address of the GVCP interface of the selected remote device.
    /**
     *  This is a read only element. It indicates the current IP address of the GVCP interface of the selected remote device.
     */
    PropertyI64 gevDeviceIPAddress;
    /// \brief An integer property. Indicates the current subnet mask of the GVCP interface of the selected remote device.
    /**
     *  This is a read only element. It indicates the current subnet mask of the GVCP interface of the selected remote device.
     */
    PropertyI64 gevDeviceSubnetMask;
    /// \brief An integer property. Indicates the current gateway of the GVCP interface of the selected remote device.
    /**
     *  This is a read only element. It indicates the current gateway of the GVCP interface of the selected remote device.
     */
    PropertyI64 gevDeviceGateway;
    /// \brief An integer property. Indicates the major version number of the GigE Vision specification this device complies with.
    /**
     *  This is a read only element. It indicates the major version number of the GigE Vision specification this device complies with.
     */
    PropertyI64 gevVersionMajor;
    /// \brief An integer property. Indicates the minor version number of the GigE Vision specification this device complies with.
    /**
     *  This is a read only element. It indicates the minor version number of the GigE Vision specification this device complies with.
     */
    PropertyI64 gevVersionMinor;
    /// \brief An integer property. Indicates the major version number of the GenCP specification this device complies with.
    /**
     *  This is a read only element. It indicates the major version number of the GenCP specification this device complies with.
     */
    PropertyI64 genCPVersionMajor;
    /// \brief An integer property. Indicates the minor version number of the GenCP specification this device complies with.
    /**
     *  This is a read only element. It indicates the minor version number of the GenCP specification this device complies with.
     */
    PropertyI64 genCPVersionMinor;
    /// \brief An integer property. Indicates the major version number of the USB3 Vision specification this device complies with.
    /**
     *  This is a read only element. It indicates the major version number of the USB3 Vision specification this device complies with.
     */
    PropertyI64 u3vVersionMajor;
    /// \brief An integer property. Indicates the minor version number of the USB3 Vision specification this device complies with.
    /**
     *  This is a read only element. It indicates the minor version number of the USB3 Vision specification this device complies with.
     */
    PropertyI64 u3vVersionMinor;
    /// \brief An enumerated integer property. Identifies the endianess mode to be used for this device.
    /**
     *  This is a read only feature. This enumeration provides a value that indicates the endianess mode to be used for this device.
     *
     *  The following string values might be valid for this feature:
     *  - \b Legacy (Display string: 'Legacy'): This enumeration value indicates that this device shall be handled according to GenICam Schema 1.0.
     *  - \b Standard (Display string: 'Standard'): This enumeration value indicates that this device shall be handled according to GenICam Schema 1.1 and later.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 deviceEndianessMechanism;
    /// \brief A floating point property. Specifies application timeout for the control channel communication.
    /**
     *  The feature specifies application timeout for the control channel communication. It defines the application timeout, and it is related to the device feature DeviceLinkCommandTimeout specifying the maximum time for handling a command in the device. Up to DeviceLinkCommandRetryCount attempts with this timeout are made before a command fails with a timout error.
     */
    PropertyF linkCommandTimeout;
    /// \brief An integer property. Indicates how often the driver shall check the link during one 'DeviceLinkCommandTimeout' interval.
    /**
     *  Indicates how often the driver shall check the link during one 'DeviceLinkCommandTimeout' interval. The higher this value the more often the link will be checked. However additional traffic on the link is only generated if no other communication like polling certain registers, reading or writing is performed by an application. A higher value will result in a faster notification in case a device has been physically been unplugged.
     */
    PropertyI64 mvLinkCommandTimeoutCheckGranularity;
    /// \brief An integer property. Specifies maximum number of tries before failing the control channel commands.
    /**
     *  This feature specifies maximum number of tries before failing the control channel commands.
     */
    PropertyI64 linkCommandRetryCount;
    /// \brief An integer property. Selects the stream channel.
    /**
     *  Selects the stream channel.
     */
    PropertyI64 streamSelector;
    /// \brief A string property. Device wide unique ID of the selected stream.
    /**
     *  This is a read only element. It is a string that indicates a device wide unique identifier of the selected stream.
     */
    PropertyS streamID;
    /// \brief An enumerated integer property. Selects which Event to signal to the host application.
    /**
     *  Selects which Event to signal to the host application.
     *
     *  The following string values might be valid for this feature:
     *  - \b AcquisitionTrigger (Display string: 'Acquisition Trigger'): Device just received a trigger for the Acquisition of one or many Frames.
     *  - \b AcquisitionTriggerMissed (Display string: 'Acquisition Trigger Missed'): Device just missed a trigger for the Acquisition of one or many Frames.
     *  - \b AcquisitionStart (Display string: 'Acquisition Start'): Device just started the Acquisition of one or many Frames.
     *  - \b AcquisitionEnd (Display string: 'Acquisition End'): Device just completed the Acquisition of one or many Frames.
     *  - \b AcquisitionTransferStart (Display string: 'Acquisition Transfer Start'): Device just started the transfer of one or many Frames.
     *  - \b AcquisitionTransferEnd (Display string: 'Acquisition Transfer End'): Device just completed the transfer of one or many Frames.
     *  - \b AcquisitionError (Display string: 'Acquisition Error'): Device just detected an error during the active Acquisition.
     *  - \b FrameBurstStart (Display string: 'Frame Burst Start'): Device just started the capture of a burst of Frames.
     *  - \b FrameBurstEnd (Display string: 'Frame Burst End'): Device just completed the capture of a burst of Frames.
     *  - \b FrameTrigger (Display string: 'Frame Trigger'): Device just received a trigger to start the capture of one Frame.
     *  - \b FrameTriggerMissed (Display string: 'Frame Trigger Missed'): Device just missed a trigger to start the capture of one Frame.
     *  - \b FrameStart (Display string: 'Frame Start'): Device just started the capture of one Frame.
     *  - \b FrameEnd (Display string: 'Frame End'): Device just completed the capture of one Frame.
     *  - \b FrameTransferStart (Display string: 'Frame Transfer Start'): Device just started the transfer of one Frame.
     *  - \b FrameTransferEnd (Display string: 'Frame Transfer End'): Device just completed the transfer of one Frame.
     *  - \b LineTrigger (Display string: 'Line Trigger'): Device just received a trigger to start the capture of one Line.
     *  - \b LineTriggerMissed (Display string: 'Line Trigger Missed'): Device just missed a trigger to start the capture of one Line.
     *  - \b LineStart (Display string: 'Line Start'): Device just started the capture of one Line.
     *  - \b LineEnd (Display string: 'Line End'): Device just completed the capture of one Line.
     *  - \b ExposureStart (Display string: 'Exposure Start'): Device just started the exposure of one Frame (or Line).
     *  - \b ExposureEnd (Display string: 'Exposure End'): Device just completed the exposure of one Frame (or Line).
     *  - \b Stream0TransferStart (Display string: 'Stream 0 Transfer Start'): Device just started the transfer of one or many Blocks.
     *  - \b Stream0TransferEnd (Display string: 'Stream 0 Transfer End'): Device just completed the transfer of one or many Blocks.
     *  - \b Stream0TransferPause (Display string: 'Stream 0 Transfer Pause'): Device just paused the transfer.
     *  - \b Stream0TransferResume (Display string: 'Stream 0 Transfer Resume'): Device just resumed the transfer.
     *  - \b Stream0TransferBlockStart (Display string: 'Stream 0 Transfer Block Start'): Device just started the transfer of one Block.
     *  - \b Stream0TransferBlockEnd (Display string: 'Stream 0 Transfer Block End'): Device just completed the transfer of one Block.
     *  - \b Stream0TransferBlockTrigger (Display string: 'Stream 0 Transfer Block Trigger'): Device just received a trigger to start the transfer of one Block.
     *  - \b Stream0TransferBurstStart (Display string: 'Stream 0 Transfer Burst Start'): Device just started the transfer of a burst of Blocks.
     *  - \b Stream0TransferBurstEnd (Display string: 'Stream 0 Transfer Burst End'): Device just completed the transfer of a burst of Blocks.
     *  - \b Stream0TransferOverflow (Display string: 'Stream 0 Transfer Overflow'): Device transfer queue overflowed.
     *  - \b SequencerSetChange (Display string: 'Sequencer Set Change'): Device sequencer set has changed.
     *  - \b Counter0Start (Display string: 'Counter 0 Start'): The event will be generated when counter 0 starts counting.
     *  - \b Counter1Start (Display string: 'Counter 1 Start'): The event will be generated when counter 1 starts counting.
     *  - \b Counter\#2\#Start (Display string: 'Counter \#2\# Start'): The event will be generated when counter \#2\# starts counting.
     *  - \b Counter0End (Display string: 'Counter 0 End'): The event will be generated when counter 0 ends counting.
     *  - \b Counter1End (Display string: 'Counter 1 End'): The event will be generated when counter 1 ends counting.
     *  - \b Counter\#2\#End (Display string: 'Counter \#2\# End'): The event will be generated when counter \#2\# ends counting.
     *  - \b Timer0Start (Display string: 'Timer 0 Start'): The event will be generated when Timer 0 starts counting.
     *  - \b Timer1Start (Display string: 'Timer 1 Start'): The event will be generated when Timer 1 starts counting.
     *  - \b Timer\#2\#Start (Display string: 'Timer \#2\# Start'): The event will be generated when Timer \#2\# starts counting.
     *  - \b Timer0End (Display string: 'Timer 0 End'): The event will be generated when Timer 0 ends counting.
     *  - \b Timer1End (Display string: 'Timer 1 End'): The event will be generated when Timer 1 ends counting.
     *  - \b Timer\#2\#End (Display string: 'Timer \#2\# End'): The event will be generated when Timer \#2\# ends counting.
     *  - \b Encoder0Stopped (Display string: 'Encoder 0 Stopped'): The event will be generated when the Encoder 0 stops for longer than EncoderTimeout.
     *  - \b Encoder1Stopped (Display string: 'Encoder 1 Stopped'): The event will be generated when the Encoder 1 stops for longer than EncoderTimeout.
     *  - \b Encoder\#2\#Stopped (Display string: 'Encoder \#2\# Stopped'): The event will be generated when the Encoder \#2\# stops for longer than EncoderTimeout.
     *  - \b Encoder0Restarted (Display string: 'Encoder 0 Restarted'): The event will be generated when the Encoder 0 restarts moving.
     *  - \b Encoder1Restarted (Display string: 'Encoder 1 Restarted'): The event will be generated when the Encoder 1 restarts moving.
     *  - \b Encoder\#2\#Restarted (Display string: 'Encoder \#2\# Restarted'): The event will be generated when the Encoder \#2\# restarts moving.
     *  - \b Line0RisingEdge (Display string: 'Line 0 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 0.
     *  - \b Line1RisingEdge (Display string: 'Line 1 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 1.
     *  - \b Line\#2\#RisingEdge (Display string: 'Line \#2\# Rising Edge'): The event will be generated when a Rising Edge is detected on the Line \#2\#.
     *  - \b Line0FallingEdge (Display string: 'Line 0 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 0.
     *  - \b Line1FallingEdge (Display string: 'Line 1 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 1.
     *  - \b Line\#2\#FallingEdge (Display string: 'Line \#2\# Falling Edge'): The event will be generated when a Falling Edge is detected on the Line \#2\#.
     *  - \b Line0AnyEdge (Display string: 'Line 0 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 0.
     *  - \b Line1AnyEdge (Display string: 'Line 1 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 1.
     *  - \b Line\#2\#AnyEdge (Display string: 'Line \#2\# Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line \#2\#.
     *  - \b LinkTrigger0 (Display string: 'Link Trigger 0'): The event will be generated when a Rising Edge is detected on the LinkTrigger 0.
     *  - \b LinkTrigger1 (Display string: 'Link Trigger 1'): The event will be generated when a Rising Edge is detected on the LinkTrigger 1.
     *  - \b LinkTrigger\#2\# (Display string: 'Link Trigger \#2\#'): The event will be generated when a Rising Edge is detected on the LinkTrigger \#2\#.
     *  - \b LinkSpeedChange (Display string: 'Link Speed Change'): The event will be generated when the link speed has changed.
     *  - \b ActionLate (Display string: 'Action Late'): The event will be generated when a valid scheduled action command is received and is scheduled to be executed at a time that is already past.
     *  - \b Error (Display string: 'Error'): Device just detected an error during the active Acquisition.
     *  - \b Test (Display string: 'Test'): The test event will be generated when the device receives the TestEventGenerate command (EventNotification for the Test event is always On).
     *  - \b PrimaryApplicationSwitch (Display string: 'Primary Application Switch'): The event will be generated when a primary application switchover has been granted (GigE Vision Specific).
     *  - \b Counter2Start (Display string: 'Counter 2 Start'): The event will be generated when counter 2 starts counting.
     *  - \b Counter3Start (Display string: 'Counter 3 Start'): The event will be generated when counter 3 starts counting.
     *  - \b Counter4Start (Display string: 'Counter 4 Start'): The event will be generated when counter 4 starts counting.
     *  - \b Counter5Start (Display string: 'Counter 5 Start'): The event will be generated when counter 5 starts counting.
     *  - \b Counter6Start (Display string: 'Counter 6 Start'): The event will be generated when counter 6 starts counting.
     *  - \b Counter7Start (Display string: 'Counter 7 Start'): The event will be generated when counter 7 starts counting.
     *  - \b Counter8Start (Display string: 'Counter 8 Start'): The event will be generated when counter 8 starts counting.
     *  - \b Counter9Start (Display string: 'Counter 9 Start'): The event will be generated when counter 9 starts counting.
     *  - \b Counter10Start (Display string: 'Counter 10 Start'): The event will be generated when counter 10 starts counting.
     *  - \b Counter11Start (Display string: 'Counter 11 Start'): The event will be generated when counter 11 starts counting.
     *  - \b Counter12Start (Display string: 'Counter 12 Start'): The event will be generated when counter 12 starts counting.
     *  - \b Counter13Start (Display string: 'Counter 13 Start'): The event will be generated when counter 13 starts counting.
     *  - \b Counter14Start (Display string: 'Counter 14 Start'): The event will be generated when counter 14 starts counting.
     *  - \b Counter15Start (Display string: 'Counter 15 Start'): The event will be generated when counter 15 starts counting.
     *  - \b Counter2End (Display string: 'Counter 2 End'): The event will be generated when counter 2 ends counting.
     *  - \b Counter3End (Display string: 'Counter 3 End'): The event will be generated when counter 3 ends counting.
     *  - \b Counter4End (Display string: 'Counter 4 End'): The event will be generated when counter 4 ends counting.
     *  - \b Counter5End (Display string: 'Counter 5 End'): The event will be generated when counter 5 ends counting.
     *  - \b Counter6End (Display string: 'Counter 6 End'): The event will be generated when counter 6 ends counting.
     *  - \b Counter7End (Display string: 'Counter 7 End'): The event will be generated when counter 7 ends counting.
     *  - \b Counter8End (Display string: 'Counter 8 End'): The event will be generated when counter 8 ends counting.
     *  - \b Counter9End (Display string: 'Counter 9 End'): The event will be generated when counter 9 ends counting.
     *  - \b Counter10End (Display string: 'Counter 10 End'): The event will be generated when counter 10 ends counting.
     *  - \b Counter11End (Display string: 'Counter 11 End'): The event will be generated when counter 11 ends counting.
     *  - \b Counter12End (Display string: 'Counter 12 End'): The event will be generated when counter 12 ends counting.
     *  - \b Counter13End (Display string: 'Counter 13 End'): The event will be generated when counter 13 ends counting.
     *  - \b Counter14End (Display string: 'Counter 14 End'): The event will be generated when counter 14 ends counting.
     *  - \b Counter15End (Display string: 'Counter 15 End'): The event will be generated when counter 15 ends counting.
     *  - \b Timer2Start (Display string: 'Timer 2 Start'): The event will be generated when Timer 2 starts counting.
     *  - \b Timer3Start (Display string: 'Timer 3 Start'): The event will be generated when Timer 3 starts counting.
     *  - \b Timer4Start (Display string: 'Timer 4 Start'): The event will be generated when Timer 4 starts counting.
     *  - \b Timer5Start (Display string: 'Timer 5 Start'): The event will be generated when Timer 5 starts counting.
     *  - \b Timer6Start (Display string: 'Timer 6 Start'): The event will be generated when Timer 6 starts counting.
     *  - \b Timer7Start (Display string: 'Timer 7 Start'): The event will be generated when Timer 7 starts counting.
     *  - \b Timer8Start (Display string: 'Timer 8 Start'): The event will be generated when Timer 8 starts counting.
     *  - \b Timer9Start (Display string: 'Timer 9 Start'): The event will be generated when Timer 9 starts counting.
     *  - \b Timer10Start (Display string: 'Timer 10 Start'): The event will be generated when Timer 10 starts counting.
     *  - \b Timer11Start (Display string: 'Timer 11 Start'): The event will be generated when Timer 11 starts counting.
     *  - \b Timer12Start (Display string: 'Timer 12 Start'): The event will be generated when Timer 12 starts counting.
     *  - \b Timer13Start (Display string: 'Timer 13 Start'): The event will be generated when Timer 13 starts counting.
     *  - \b Timer14Start (Display string: 'Timer 14 Start'): The event will be generated when Timer 14 starts counting.
     *  - \b Timer15Start (Display string: 'Timer 15 Start'): The event will be generated when Timer 15 starts counting.
     *  - \b Timer2End (Display string: 'Timer 2 End'): The event will be generated when Timer 2 ends counting.
     *  - \b Timer3End (Display string: 'Timer 3 End'): The event will be generated when Timer 3 ends counting.
     *  - \b Timer4End (Display string: 'Timer 4 End'): The event will be generated when Timer 4 ends counting.
     *  - \b Timer5End (Display string: 'Timer 5 End'): The event will be generated when Timer 5 ends counting.
     *  - \b Timer6End (Display string: 'Timer 6 End'): The event will be generated when Timer 6 ends counting.
     *  - \b Timer7End (Display string: 'Timer 7 End'): The event will be generated when Timer 7 ends counting.
     *  - \b Timer8End (Display string: 'Timer 8 End'): The event will be generated when Timer 8 ends counting.
     *  - \b Timer9End (Display string: 'Timer 9 End'): The event will be generated when Timer 9 ends counting.
     *  - \b Timer10End (Display string: 'Timer 10 End'): The event will be generated when Timer 10 ends counting.
     *  - \b Timer11End (Display string: 'Timer 11 End'): The event will be generated when Timer 11 ends counting.
     *  - \b Timer12End (Display string: 'Timer 12 End'): The event will be generated when Timer 12 ends counting.
     *  - \b Timer13End (Display string: 'Timer 13 End'): The event will be generated when Timer 13 ends counting.
     *  - \b Timer14End (Display string: 'Timer 14 End'): The event will be generated when Timer 14 ends counting.
     *  - \b Timer15End (Display string: 'Timer 15 End'): The event will be generated when Timer 15 ends counting.
     *  - \b Encoder2Stopped (Display string: 'Encoder 2 Stopped'): The event will be generated when the Encoder 2 stops for longer than EncoderTimeout.
     *  - \b Encoder3Stopped (Display string: 'Encoder 3 Stopped'): The event will be generated when the Encoder 3 stops for longer than EncoderTimeout.
     *  - \b Encoder4Stopped (Display string: 'Encoder 4 Stopped'): The event will be generated when the Encoder 4 stops for longer than EncoderTimeout.
     *  - \b Encoder5Stopped (Display string: 'Encoder 5 Stopped'): The event will be generated when the Encoder 5 stops for longer than EncoderTimeout.
     *  - \b Encoder6Stopped (Display string: 'Encoder 6 Stopped'): The event will be generated when the Encoder 6 stops for longer than EncoderTimeout.
     *  - \b Encoder7Stopped (Display string: 'Encoder 7 Stopped'): The event will be generated when the Encoder 7 stops for longer than EncoderTimeout.
     *  - \b Encoder8Stopped (Display string: 'Encoder 8 Stopped'): The event will be generated when the Encoder 8 stops for longer than EncoderTimeout.
     *  - \b Encoder9Stopped (Display string: 'Encoder 9 Stopped'): The event will be generated when the Encoder 9 stops for longer than EncoderTimeout.
     *  - \b Encoder10Stopped (Display string: 'Encoder 10 Stopped'): The event will be generated when the Encoder 10 stops for longer than EncoderTimeout.
     *  - \b Encoder11Stopped (Display string: 'Encoder 11 Stopped'): The event will be generated when the Encoder 11 stops for longer than EncoderTimeout.
     *  - \b Encoder12Stopped (Display string: 'Encoder 12 Stopped'): The event will be generated when the Encoder 12 stops for longer than EncoderTimeout.
     *  - \b Encoder13Stopped (Display string: 'Encoder 13 Stopped'): The event will be generated when the Encoder 13 stops for longer than EncoderTimeout.
     *  - \b Encoder14Stopped (Display string: 'Encoder 14 Stopped'): The event will be generated when the Encoder 14 stops for longer than EncoderTimeout.
     *  - \b Encoder15Stopped (Display string: 'Encoder 15 Stopped'): The event will be generated when the Encoder 15 stops for longer than EncoderTimeout.
     *  - \b Encoder2Restarted (Display string: 'Encoder 2 Restarted'): The event will be generated when the Encoder 2 restarts moving.
     *  - \b Encoder3Restarted (Display string: 'Encoder 3 Restarted'): The event will be generated when the Encoder 3 restarts moving.
     *  - \b Encoder4Restarted (Display string: 'Encoder 4 Restarted'): The event will be generated when the Encoder 4 restarts moving.
     *  - \b Encoder5Restarted (Display string: 'Encoder 5 Restarted'): The event will be generated when the Encoder 5 restarts moving.
     *  - \b Encoder6Restarted (Display string: 'Encoder 6 Restarted'): The event will be generated when the Encoder 6 restarts moving.
     *  - \b Encoder7Restarted (Display string: 'Encoder 7 Restarted'): The event will be generated when the Encoder 7 restarts moving.
     *  - \b Encoder8Restarted (Display string: 'Encoder 8 Restarted'): The event will be generated when the Encoder 8 restarts moving.
     *  - \b Encoder9Restarted (Display string: 'Encoder 9 Restarted'): The event will be generated when the Encoder 9 restarts moving.
     *  - \b Encoder10Restarted (Display string: 'Encoder 10 Restarted'): The event will be generated when the Encoder 10 restarts moving.
     *  - \b Encoder11Restarted (Display string: 'Encoder 11 Restarted'): The event will be generated when the Encoder 11 restarts moving.
     *  - \b Encoder12Restarted (Display string: 'Encoder 12 Restarted'): The event will be generated when the Encoder 12 restarts moving.
     *  - \b Encoder13Restarted (Display string: 'Encoder 13 Restarted'): The event will be generated when the Encoder 13 restarts moving.
     *  - \b Encoder14Restarted (Display string: 'Encoder 14 Restarted'): The event will be generated when the Encoder 14 restarts moving.
     *  - \b Encoder15Restarted (Display string: 'Encoder 15 Restarted'): The event will be generated when the Encoder 15 restarts moving.
     *  - \b Line2RisingEdge (Display string: 'Line 2 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 2.
     *  - \b Line3RisingEdge (Display string: 'Line 3 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 3.
     *  - \b Line4RisingEdge (Display string: 'Line 4 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 4.
     *  - \b Line5RisingEdge (Display string: 'Line 5 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 5.
     *  - \b Line6RisingEdge (Display string: 'Line 6 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 6.
     *  - \b Line7RisingEdge (Display string: 'Line 7 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 7.
     *  - \b Line8RisingEdge (Display string: 'Line 8 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 8.
     *  - \b Line9RisingEdge (Display string: 'Line 9 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 9.
     *  - \b Line10RisingEdge (Display string: 'Line 10 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 10.
     *  - \b Line11RisingEdge (Display string: 'Line 11 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 11.
     *  - \b Line12RisingEdge (Display string: 'Line 12 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 12.
     *  - \b Line13RisingEdge (Display string: 'Line 13 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 13.
     *  - \b Line14RisingEdge (Display string: 'Line 14 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 14.
     *  - \b Line15RisingEdge (Display string: 'Line 15 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 15.
     *  - \b Line2FallingEdge (Display string: 'Line 2 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 2.
     *  - \b Line3FallingEdge (Display string: 'Line 3 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 3.
     *  - \b Line4FallingEdge (Display string: 'Line 4 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 4.
     *  - \b Line5FallingEdge (Display string: 'Line 5 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 5.
     *  - \b Line6FallingEdge (Display string: 'Line 6 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 6.
     *  - \b Line7FallingEdge (Display string: 'Line 7 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 7.
     *  - \b Line8FallingEdge (Display string: 'Line 8 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 8.
     *  - \b Line9FallingEdge (Display string: 'Line 9 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 9.
     *  - \b Line10FallingEdge (Display string: 'Line 10 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 10.
     *  - \b Line11FallingEdge (Display string: 'Line 11 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 11.
     *  - \b Line12FallingEdge (Display string: 'Line 12 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 12.
     *  - \b Line13FallingEdge (Display string: 'Line 13 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 13.
     *  - \b Line14FallingEdge (Display string: 'Line 14 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 14.
     *  - \b Line15FallingEdge (Display string: 'Line 15 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 15.
     *  - \b Line2AnyEdge (Display string: 'Line 2 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 2.
     *  - \b Line3AnyEdge (Display string: 'Line 3 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 3.
     *  - \b Line4AnyEdge (Display string: 'Line 4 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 4.
     *  - \b Line5AnyEdge (Display string: 'Line 5 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 5.
     *  - \b Line6AnyEdge (Display string: 'Line 6 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 6.
     *  - \b Line7AnyEdge (Display string: 'Line 7 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 7.
     *  - \b Line8AnyEdge (Display string: 'Line 8 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 8.
     *  - \b Line9AnyEdge (Display string: 'Line 9 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 9.
     *  - \b Line10AnyEdge (Display string: 'Line 10 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 10.
     *  - \b Line11AnyEdge (Display string: 'Line 11 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 11.
     *  - \b Line12AnyEdge (Display string: 'Line 12 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 12.
     *  - \b Line13AnyEdge (Display string: 'Line 13 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 13.
     *  - \b Line14AnyEdge (Display string: 'Line 14 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 14.
     *  - \b Line15AnyEdge (Display string: 'Line 15 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 15.
     *  - \b Link0Trigger (Display string: 'Link 0 Trigger')
     *  - \b Link1Trigger (Display string: 'Link 1 Trigger')
     *  - \b Link2Trigger (Display string: 'Link 2 Trigger')
     *  - \b Link3Trigger (Display string: 'Link 3 Trigger')
     *  - \b Link4Trigger (Display string: 'Link 4 Trigger')
     *  - \b Link5Trigger (Display string: 'Link 5 Trigger')
     *  - \b Link6Trigger (Display string: 'Link 6 Trigger')
     *  - \b Link7Trigger (Display string: 'Link 7 Trigger')
     *  - \b Link8Trigger (Display string: 'Link 8 Trigger')
     *  - \b Link9Trigger (Display string: 'Link 9 Trigger')
     *  - \b Link10Trigger (Display string: 'Link 10 Trigger')
     *  - \b Link11Trigger (Display string: 'Link 11 Trigger')
     *  - \b Link12Trigger (Display string: 'Link 12 Trigger')
     *  - \b Link13Trigger (Display string: 'Link 13 Trigger')
     *  - \b Link14Trigger (Display string: 'Link 14 Trigger')
     *  - \b Link15Trigger (Display string: 'Link 15 Trigger')
     *  - \b InterfaceListChanged (Display string: 'Interface List Changed'): This enumeration value indicates an event that is fired when the list of interfaces has been updated.
     *  - \b InterfaceLost (Display string: 'Interface Lost'): This enumeration value indicates an event that is raised when the interface connection is lost.
     *  - \b DeviceListChanged (Display string: 'Device List Changed'): This enumeration value indicates an event that is fired when the list of devices has been updated.
     *  - \b DeviceLost (Display string: 'Device Lost'): This enumeration value indicates an event that is raised when the local host looses connection to the physical(remote) device.
     *  - \b BufferTooSmall (Display string: 'Buffer Too Small'): This enumeration value indicates an event that is raised when the buffer was too small to receive the expected amount of data.
     *  - \b BuffersDiscarded (Display string: 'Buffers Discarded'): This enumeration value indicates an event that is raised when buffers discared by GenTL or device. This event could optionally carry two numeric child data fields EventBuffersDiscardedDeviceCount and EventBuffersDiscardedProducerCount.
     *  - \b BuffersDiscardedDeviceCount (Display string: 'Buffers Discarded Device Count'): This enumeration value indicates the number of buffers discarded by the device since last fired instance of this event (the producer would get to know about this for example by observing a gap in the block_id sequence).
     *  - \b BuffersDiscardedProducerCount (Display string: 'Buffers Discarded Producer Count'): This enumeration value indicates the number of buffers discarded by the producer since last fired instance of this event (this would happen e.g. if there are no free buffers available or if given buffer handling mode requires discarding old buffers etc.).
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 eventSelector;
    /// \brief An enumerated integer property. Activate or deactivate the notification to the host application of the occurrence of the selected Event.
    /**
     *  Activate or deactivate the notification to the host application of the occurrence of the selected Event.
     *
     *  The following string values might be valid for this feature:
     *  - \b Off (Display string: 'Off'): The selected Event notification is disabled.
     *  - \b On (Display string: 'On'): The selected Event notification is enabled.
     *  - \b Once (Display string: 'Once'): The selected Event notification is enabled for one event then return to Off state.
     *  - \b GigEVisionEvent (Display string: 'Gig E Vision Event')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 eventNotification;
    // *INDENT-OFF*
    PYTHON_OR_JAVA_ONLY( %mutable; )
    // *INDENT-ON*
};

//-----------------------------------------------------------------------------
/// \brief Category that contains items that belong to the data stream module of the transport layer.
/**
 *  The DataStream category contains items that belong to the data stream module of the transport layer.
 * \ingroup GenICamInterfaceProducer
 */
class DataStreamModule : public mvIMPACT::acquire::ComponentCollection
//-----------------------------------------------------------------------------
{
public:
    /// \brief Constructs a new <b>mvIMPACT::acquire::GenICam::DataStreamModule</b> object.
    explicit DataStreamModule(
        /// [in] A pointer to a <b>mvIMPACT::acquire::Device</b> object obtained from a <b>mvIMPACT::acquire::DeviceManager</b> object.
        mvIMPACT::acquire::Device* pDev,
        /// [in] The \a index of the instance this object shall be created for. Passing an invalid index will raise an exception.
        int64_type index,
        /// [in] The name of the driver internal setting to access with this instance.
        /// A list of valid setting names can be obtained by a call to
        /// <b>mvIMPACT::acquire::FunctionInterface::getAvailableSettings</b>, new
        /// settings can be created with the function
        /// <b>mvIMPACT::acquire::FunctionInterface::createSetting</b>
        const std::string& settingName = "Base" ) :
        mvIMPACT::acquire::ComponentCollection( pDev ),
        streamID(),
        streamType(),
        mvStreamDriverTechnology(),
        mvAutoJoinMulticastGroups(),
        mvResendActive(),
        mvResendUserControlledEnable(),
        mvResendMode(),
        mvResendBatchingActive(),
        mvResendMaximumGapSize(),
        mvResendThreshold(),
        mvResendRequestMax(),
        mvResendRequestCredits(),
        mvResendResponseTimeout(),
        mvResendsPerTimeout(),
        mvMultiCPUStreamProcessingEnable(),
        mvMultiCPUStreamProcessingCPUCount(),
        mvMultiCPUStreamProcessingFirstCPUIndex(),
        mvMultiCPUStreamProcessingSwitchInterval(),
        streamAnnouncedBufferCount(),
        streamBufferHandlingMode(),
        streamAnnounceBufferMinimum(),
        mvStreamAnnounceBufferMaximum(),
        streamDeliveredFrameCount(),
        streamLostFrameCount(),
        streamInputBufferCount(),
        streamOutputBufferCount(),
        streamStartedFrameCount(),
        payloadSize(),
        streamIsGrabbing(),
        streamChunkCountMaximum(),
        streamBufferAlignment(),
        eventSelector(),
        eventNotification()
    {
        pDev->validateInterfaceLayout( dilGenICam );
        mvIMPACT::acquire::DeviceComponentLocator locator( pDev, mvIMPACT::acquire::dltSetting, settingName );
        locator.bindSearchBase( locator.searchbase_id(), "Camera/GenTL/DataStreams" );
        std::ostringstream oss;
        oss << "Stream" << index;
        locator = mvIMPACT::acquire::DeviceComponentLocator( locator.findComponent( oss.str() ) );
        m_hRoot = locator.searchbase_id();
        locator.bindComponent( streamID, "StreamID" );
        locator.bindComponent( streamType, "StreamType" );
        locator.bindComponent( mvStreamDriverTechnology, "mvStreamDriverTechnology" );
        locator.bindComponent( mvAutoJoinMulticastGroups, "mvAutoJoinMulticastGroups" );
        locator.bindComponent( mvResendActive, "mvResendActive" );
        locator.bindComponent( mvResendUserControlledEnable, "mvResendUserControlledEnable" );
        locator.bindComponent( mvResendMode, "mvResendMode" );
        locator.bindComponent( mvResendBatchingActive, "mvResendBatchingActive" );
        locator.bindComponent( mvResendMaximumGapSize, "mvResendMaximumGapSize" );
        if( !mvResendMaximumGapSize.isValid() )
        {
            locator.bindComponent( mvResendMaximumGapSize, "mvResendCaptureWindowSize" );
        }
        locator.bindComponent( mvResendThreshold, "mvResendThreshold" );
        locator.bindComponent( mvResendRequestMax, "mvResendRequestMax" );
        locator.bindComponent( mvResendRequestCredits, "mvResendRequestCredits" );
        locator.bindComponent( mvResendResponseTimeout, "mvResendResponseTimeout" );
        locator.bindComponent( mvResendsPerTimeout, "mvResendsPerTimeout" );
        locator.bindComponent( mvMultiCPUStreamProcessingEnable, "mvMultiCPUStreamProcessingEnable" );
        locator.bindComponent( mvMultiCPUStreamProcessingCPUCount, "mvMultiCPUStreamProcessingCPUCount" );
        locator.bindComponent( mvMultiCPUStreamProcessingFirstCPUIndex, "mvMultiCPUStreamProcessingFirstCPUIndex" );
        locator.bindComponent( mvMultiCPUStreamProcessingSwitchInterval, "mvMultiCPUStreamProcessingSwitchInterval" );
        locator.bindComponent( streamAnnouncedBufferCount, "StreamAnnouncedBufferCount" );
        locator.bindComponent( streamBufferHandlingMode, "StreamBufferHandlingMode" );
        locator.bindComponent( streamAnnounceBufferMinimum, "StreamAnnounceBufferMinimum" );
        locator.bindComponent( mvStreamAnnounceBufferMaximum, "mvStreamAnnounceBufferMaximum" );
        locator.bindComponent( streamDeliveredFrameCount, "StreamDeliveredFrameCount" );
        locator.bindComponent( streamLostFrameCount, "StreamLostFrameCount" );
        locator.bindComponent( streamInputBufferCount, "StreamInputBufferCount" );
        locator.bindComponent( streamOutputBufferCount, "StreamOutputBufferCount" );
        locator.bindComponent( streamStartedFrameCount, "StreamStartedFrameCount" );
        locator.bindComponent( payloadSize, "PayloadSize" );
        locator.bindComponent( streamIsGrabbing, "StreamIsGrabbing" );
        locator.bindComponent( streamChunkCountMaximum, "StreamChunkCountMaximum" );
        locator.bindComponent( streamBufferAlignment, "StreamBufferAlignment" );
        locator.bindComponent( eventSelector, "EventSelector" );
        locator.bindComponent( eventNotification, "EventNotification" );
    }
    // *INDENT-OFF*
    PYTHON_OR_JAVA_ONLY( %immutable; )
    // *INDENT-ON*
    /// \brief A string property. Device wide unique ID of the selected stream.
    /**
     *  This is a read only element. It is a string that indicates a device wide unique identifier of the selected stream.
     */
    PropertyS streamID;
    /// \brief An enumerated integer property. Identifies the stream technology of the GenTL Producer implementation.
    /**
     *  This is a read only feature. This enumeration provides a value that indicates stream technology of the GenTL Producer implementation.
     *
     *  The following string values might be valid for this feature:
     *  - \b Mixed (Display string: 'Mixed'): This enumeration value indicates that this is a data stream for a mixed protocol.
     *  - \b Custom (Display string: 'Custom'): This enumeration value indicates that this is a data stream for a custom protocol.
     *  - \b GEV (Display string: 'GigE Vision'): This enumeration value indicates that this is a data stream for the GigE Vision protocol.
     *  - \b CameraLink (Display string: 'CameraLink'): This enumeration value indicates that this is a data stream for the CameraLink protocol.
     *  - \b CoaXPress (Display string: 'CoaXPress'): This enumeration value indicates that this is a data stream for the CoaXPress protocol.
     *  - \b CameraLinkHS (Display string: 'CameraLink HS'): This enumeration value indicates that this is a data stream for the CameraLink HS protocol.
     *  - \b U3V (Display string: 'USB3 Vision'): This enumeration value indicates that this is a data stream for the USB3 Vision protocol.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 streamType;
    /// \brief A string property. The underlying driver technology used by this stream.
    /**
     *  This is a read only element. It is a string that contains the underlying driver technology used by this stream.
     */
    PropertyS mvStreamDriverTechnology;
    /// \brief A boolean property. This feature controls whether the host automatically joins the multicast group(s) of the camera(s) it configures.
    /**
     *  This feature controls whether the host automatically joins the multicast group(s) of the camera(s) it configures.
     */
    PropertyIBoolean mvAutoJoinMulticastGroups;
    /// \brief A boolean property. This feature controls if the stream will issue packet resend requests.
    /**
     *  This feature controls if the stream will issue packet resend requests.
     */
    PropertyIBoolean mvResendActive;
    /// \brief A boolean property. This feature controls if the resend related parameters on this stream will be controlled by the driver or the host application.
    /**
     *  This feature controls if the resend related parameters on this stream will be controlled by the driver or the host application.
     */
    PropertyIBoolean mvResendUserControlledEnable;
    /// \brief An integer property. Indicates the mode the internal resend algorithm is working in. This feature is a bit mask. The bits have the following meaning (LSB to MSB): Request Resends when a new block starts and the current one has missing packets(0x01)(not recommended for LAG), Request Resends when a new block starts and the current one has no trailer so far(0x02)(not recommended for LAG), Request Resends when more than 'ResendThreshold' packets have been received since a missing packet has been detected(0x04), Request Resends whenever 'mvResendResponseTimeout' did elapse for the previous still incomplete buffer(0x08), Request Resends whenever 'mvResendResponseTimeout' did elapse for the current still incomplete buffer(0x10), Request Resends whenever a packet is considered as missing(0x20)(not recommended for LAG), Request Resends whenever a block start has been missing(e.g. because no capture buffer was available at the time the block did start)(0x40)
    /**
     *  Indicates the mode the internal resend algorithm is working in. This feature is a bit mask. The bits have the following meaning (LSB to MSB): Request Resends when a new block starts and the current one has missing packets(0x01)(not recommended for LAG), Request Resends when a new block starts and the current one has no trailer so far(0x02)(not recommended for LAG), Request Resends when more than 'ResendThreshold' packets have been received since a missing packet has been detected(0x04), Request Resends whenever 'mvResendResponseTimeout' did elapse for the previous still incomplete buffer(0x08), Request Resends whenever 'mvResendResponseTimeout' did elapse for the current still incomplete buffer(0x10), Request Resends whenever a packet is considered as missing(0x20)(not recommended for LAG), Request Resends whenever a block start has been missing(e.g. because no capture buffer was available at the time the block did start)(0x40)
     */
    PropertyI64 mvResendMode;
    /// \brief A boolean property. This feature controls if the stream will issue batched packet resend requests if it detects several consecutive missing packets.
    /**
     *  This feature controls if the stream will issue batched packet resend requests if it detects several consecutive missing packets.
     */
    PropertyIBoolean mvResendBatchingActive;
    /// \brief An integer property. Defines the maximum gap between 2 consecutive packets in the stream.
    /**
     *  This feature defines the maximum gap between 2 consecutive packets in the stream. If a detected gap larger than 'MaximumGapSize' this block is considered as incomplete. When this parameter is 0 no gap will be considered as too big!
     */
    PropertyI64 mvResendMaximumGapSize;
    /// \brief An integer property. Indicates the resend threshold within the capture window.
    /**
     *  This feature indicates the resend threshold within the capture window. If current packet ID and first missing packet ID are mvResendThreshold IDs apart the stream will issue a resend request.
     */
    PropertyI64 mvResendThreshold;
    /// \brief An integer property. Indicates the maximum number of resend requests per packet to send to the device until the packet is considered as lost.
    /**
     *  This feature indicates the maximum number of resend requests per packet to send to the device until the packet is considered as lost.
     */
    PropertyI64 mvResendRequestMax;
    /// \brief A floating point property. Indicates the maximum number of resend requests in percent of payload packets per buffer to send to the device until the packet is considered as lost.
    /**
     *  This feature indicates the maximum number of resend requests in percent of payload packets per buffer to send to the device until the packet is considered as lost.
     */
    PropertyF mvResendRequestCredits;
    /// \brief An integer property. This feature controls the resend response timeout in milliseconds.
    /**
     *  This float value sets the resend response timeout in milliseconds. Whenever a requested packet does not arrive within this timer period it will be requested again until mvResendRequestMax resend requests for this packet have been issued.
     */
    PropertyI64 mvResendResponseTimeout;
    /// \brief An integer property. Indicates the number of packets to be requested whenever the resend response timeout elapses.
    /**
     *  This feature indicates the number of packets to be requested whenever the resend response timeout elapses.
     */
    PropertyI64 mvResendsPerTimeout;
    /// \brief A boolean property. This (PRELIMINARY) feature controls whether the host shall process incoming data on multiple CPUs or a single dedicated one.
    /**
     *  This (PRELIMINARY) feature controls whether the host shall process incoming data on multiple CPUs or a single dedicated one. ATTENTION: CHANGES MAY BE APPLIED TO THIS FEATURE WITHOUT FURTHER NOTICE! USE IT FOR EVALUATION PURPOSES ONLY!
     */
    PropertyIBoolean mvMultiCPUStreamProcessingEnable;
    /// \brief An integer property. This (PRELIMINARY) feature controls how many CPUs will be used for the processing of network data for this stream.
    /**
     *  This (PRELIMINARY) feature controls how many CPUs will be used for the processing of network data for this stream. ATTENTION: CHANGES MAY BE APPLIED TO THIS FEATURE WITHOUT FURTHER NOTICE! USE IT FOR EVALUATION PURPOSES ONLY!
     */
    PropertyI64 mvMultiCPUStreamProcessingCPUCount;
    /// \brief An integer property. This (PRELIMINARY) feature controls which is the first CPU to use for processing network data out of the list of CPUs available for this task for the NIC associated with this stream.
    /**
     *  This (PRELIMINARY) feature controls which is the first CPU to use for processing network data out of the list of CPUs available for this task for the NIC associated with this stream. Please note that this number does NOT have a 1:1 relationship to the CPU in your system but to the CPUs available for processing on the selected NIC. So if e.g. the corresponding NICs RSS table can access CPUs 6, 8, 10 and 12 then setting 'mvMultiCPUStreamProcessingFirstCPUIndex' to 2 will result in CPUs 10 and 12 to be used! ATTENTION: CHANGES MAY BE APPLIED TO THIS FEATURE WITHOUT FURTHER NOTICE! USE IT FOR EVALUATION PURPOSES ONLY!
     */
    PropertyI64 mvMultiCPUStreamProcessingFirstCPUIndex;
    /// \brief An integer property. This (PRELIMINARY) feature controls after how many network packets the processing shall switch to another CPU. Smaller values introduce a higher overhead, values too high might result in loss of data when the network card runs out of buffers. The recommended values are in the range of 32 - 256.
    /**
     *  This (PRELIMINARY) feature controls after how many network packets the processing shall switch to another CPU. Smaller values introduce a higher overhead, values too high might result in loss of data when the network card runs out of buffers. The recommended values are in the range of 32 - 256. ATTENTION: CHANGES MAY BE APPLIED TO THIS FEATURE WITHOUT FURTHER NOTICE! USE IT FOR EVALUATION PURPOSES ONLY!
     */
    PropertyI64 mvMultiCPUStreamProcessingSwitchInterval;
    /// \brief An integer property. Number of announced (known) buffers on this stream. This value is volatile. It may change if additional buffers are announced and/or buffers are revoked by the GenTL Consumer.
    /**
     *  This is a read-only feature. It indicates the number of announced (known) buffers on this stream. This value is volatile. It may change if additional buffers are announced and/or buffers are revoked by the GenTL Consumer.
     */
    PropertyI64 streamAnnouncedBufferCount;
    /// \brief An enumerated integer property. Allows to select the buffer handling mode for the stream.
    /**
     *  This enumeration allows the selection of the buffer handling mode for the stream.
     *
     *  The following string values might be valid for this feature:
     *  - \b OldestFirst (Display string: 'OldestFirst'): This enumeration value indicates that this stream is using the default acquisition mode.
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 streamBufferHandlingMode;
    /// \brief An integer property. Minimal number of buffers to announce to enable selected acquisition mode.
    /**
     *  This feature indicates the minimal number of buffers to announce to enable selected acquisition mode.
     */
    PropertyI64 streamAnnounceBufferMinimum;
    /// \brief An integer property. Maximal number of buffers to announce to enable selected acquisition mode.
    /**
     *  This feature indicates the maximal number of buffers to announce to enable selected acquisition mode.
     */
    PropertyI64 mvStreamAnnounceBufferMaximum;
    /// \brief An integer property. Number of delivered frames since last acquisition start.
    /**
     *  This feature indicates the number of delivered frames since last acquisition start. It is not reset until the stream is closed.
     */
    PropertyI64 streamDeliveredFrameCount;
    /// \brief An integer property. Number of lost frames due to queue underrun.
    /**
     *  This feature indicates the number of lost frames due to queue underrun. This number is initialized with zero at the time the stream is opened and incremented every time the data could not be acquired because there was no buffer in the input buffer pool. It is not reset until the stream is closed.
     */
    PropertyI64 streamLostFrameCount;
    /// \brief An integer property. Number of buffers in the input buffer pool plus the buffers(s) currently being filled.
    /**
     *  This feature indicates the number of buffers in the input buffer pool plus the buffers(s) currently being filled.
     */
    PropertyI64 streamInputBufferCount;
    /// \brief An integer property. Number of buffers in the output buffer queue.
    /**
     *  This feature indicates the number of buffers in the output buffer queue.
     */
    PropertyI64 streamOutputBufferCount;
    /// \brief An integer property. Number of frames started in the acquisition engine.
    /**
     *  This feature indicates the number of frames started in the acquisition engine. This number is incremented every time in case of a new buffer is started and then to be filled (data written to) regardless even if the buffer is later delivered to the user or discarded for any reason. This number is initialized with 0 at the time the stream is opened. It is not reset until the stream is closed.
     */
    PropertyI64 streamStartedFrameCount;
    /// \brief An integer property. Provides the number of bytes transferred for each data buffer or chunk on the stream channel.
    /**
     *  Provides the number of bytes transferred for each data buffer or chunk on the stream channel. This includes any end-of-line, end-of-frame statistics or other stamp data. This is the total size of data payload for a data block.
     */
    PropertyI64 payloadSize;
    /// \brief A boolean property. Flag indicating whether the acquisition engine is started or not.
    /**
     *  This feature indicates whether the acquisition engine is started or not. This is independent from the acquisition status of the remote device.
     */
    PropertyIBoolean streamIsGrabbing;
    /// \brief An integer property. Maximum number of chunks to be expected in a buffer (can be used to allocate the array for the DSGetBufferChunkData function).
    /**
     *  Maximum number of chunks to be expected in a buffer (can be used to allocate the array for the DSGetBufferChunkData function).
     */
    PropertyI64 streamChunkCountMaximum;
    /// \brief An integer property. Alignment size in bytes of the buffers passed to DSAnnounceBuffer.
    /**
     *  This feature indicates the alignment size in bytes of the buffers passed to DSAnnounceBuffer. If a buffer is passed to DSAnnounceBuffer which is not aligned according to the alignment size it is up to the Producer to either reject the buffer and return a GC_ERR_INVALID_BUFFER error code or to cope with a potential overhead and use the unaligned buffer as is.
     */
    PropertyI64 streamBufferAlignment;
    /// \brief An enumerated integer property. Selects which Event to signal to the host application.
    /**
     *  Selects which Event to signal to the host application.
     *
     *  The following string values might be valid for this feature:
     *  - \b AcquisitionTrigger (Display string: 'Acquisition Trigger'): Device just received a trigger for the Acquisition of one or many Frames.
     *  - \b AcquisitionTriggerMissed (Display string: 'Acquisition Trigger Missed'): Device just missed a trigger for the Acquisition of one or many Frames.
     *  - \b AcquisitionStart (Display string: 'Acquisition Start'): Device just started the Acquisition of one or many Frames.
     *  - \b AcquisitionEnd (Display string: 'Acquisition End'): Device just completed the Acquisition of one or many Frames.
     *  - \b AcquisitionTransferStart (Display string: 'Acquisition Transfer Start'): Device just started the transfer of one or many Frames.
     *  - \b AcquisitionTransferEnd (Display string: 'Acquisition Transfer End'): Device just completed the transfer of one or many Frames.
     *  - \b AcquisitionError (Display string: 'Acquisition Error'): Device just detected an error during the active Acquisition.
     *  - \b FrameBurstStart (Display string: 'Frame Burst Start'): Device just started the capture of a burst of Frames.
     *  - \b FrameBurstEnd (Display string: 'Frame Burst End'): Device just completed the capture of a burst of Frames.
     *  - \b FrameTrigger (Display string: 'Frame Trigger'): Device just received a trigger to start the capture of one Frame.
     *  - \b FrameTriggerMissed (Display string: 'Frame Trigger Missed'): Device just missed a trigger to start the capture of one Frame.
     *  - \b FrameStart (Display string: 'Frame Start'): Device just started the capture of one Frame.
     *  - \b FrameEnd (Display string: 'Frame End'): Device just completed the capture of one Frame.
     *  - \b FrameTransferStart (Display string: 'Frame Transfer Start'): Device just started the transfer of one Frame.
     *  - \b FrameTransferEnd (Display string: 'Frame Transfer End'): Device just completed the transfer of one Frame.
     *  - \b LineTrigger (Display string: 'Line Trigger'): Device just received a trigger to start the capture of one Line.
     *  - \b LineTriggerMissed (Display string: 'Line Trigger Missed'): Device just missed a trigger to start the capture of one Line.
     *  - \b LineStart (Display string: 'Line Start'): Device just started the capture of one Line.
     *  - \b LineEnd (Display string: 'Line End'): Device just completed the capture of one Line.
     *  - \b ExposureStart (Display string: 'Exposure Start'): Device just started the exposure of one Frame (or Line).
     *  - \b ExposureEnd (Display string: 'Exposure End'): Device just completed the exposure of one Frame (or Line).
     *  - \b Stream0TransferStart (Display string: 'Stream 0 Transfer Start'): Device just started the transfer of one or many Blocks.
     *  - \b Stream0TransferEnd (Display string: 'Stream 0 Transfer End'): Device just completed the transfer of one or many Blocks.
     *  - \b Stream0TransferPause (Display string: 'Stream 0 Transfer Pause'): Device just paused the transfer.
     *  - \b Stream0TransferResume (Display string: 'Stream 0 Transfer Resume'): Device just resumed the transfer.
     *  - \b Stream0TransferBlockStart (Display string: 'Stream 0 Transfer Block Start'): Device just started the transfer of one Block.
     *  - \b Stream0TransferBlockEnd (Display string: 'Stream 0 Transfer Block End'): Device just completed the transfer of one Block.
     *  - \b Stream0TransferBlockTrigger (Display string: 'Stream 0 Transfer Block Trigger'): Device just received a trigger to start the transfer of one Block.
     *  - \b Stream0TransferBurstStart (Display string: 'Stream 0 Transfer Burst Start'): Device just started the transfer of a burst of Blocks.
     *  - \b Stream0TransferBurstEnd (Display string: 'Stream 0 Transfer Burst End'): Device just completed the transfer of a burst of Blocks.
     *  - \b Stream0TransferOverflow (Display string: 'Stream 0 Transfer Overflow'): Device transfer queue overflowed.
     *  - \b SequencerSetChange (Display string: 'Sequencer Set Change'): Device sequencer set has changed.
     *  - \b Counter0Start (Display string: 'Counter 0 Start'): The event will be generated when counter 0 starts counting.
     *  - \b Counter1Start (Display string: 'Counter 1 Start'): The event will be generated when counter 1 starts counting.
     *  - \b Counter\#2\#Start (Display string: 'Counter \#2\# Start'): The event will be generated when counter \#2\# starts counting.
     *  - \b Counter0End (Display string: 'Counter 0 End'): The event will be generated when counter 0 ends counting.
     *  - \b Counter1End (Display string: 'Counter 1 End'): The event will be generated when counter 1 ends counting.
     *  - \b Counter\#2\#End (Display string: 'Counter \#2\# End'): The event will be generated when counter \#2\# ends counting.
     *  - \b Timer0Start (Display string: 'Timer 0 Start'): The event will be generated when Timer 0 starts counting.
     *  - \b Timer1Start (Display string: 'Timer 1 Start'): The event will be generated when Timer 1 starts counting.
     *  - \b Timer\#2\#Start (Display string: 'Timer \#2\# Start'): The event will be generated when Timer \#2\# starts counting.
     *  - \b Timer0End (Display string: 'Timer 0 End'): The event will be generated when Timer 0 ends counting.
     *  - \b Timer1End (Display string: 'Timer 1 End'): The event will be generated when Timer 1 ends counting.
     *  - \b Timer\#2\#End (Display string: 'Timer \#2\# End'): The event will be generated when Timer \#2\# ends counting.
     *  - \b Encoder0Stopped (Display string: 'Encoder 0 Stopped'): The event will be generated when the Encoder 0 stops for longer than EncoderTimeout.
     *  - \b Encoder1Stopped (Display string: 'Encoder 1 Stopped'): The event will be generated when the Encoder 1 stops for longer than EncoderTimeout.
     *  - \b Encoder\#2\#Stopped (Display string: 'Encoder \#2\# Stopped'): The event will be generated when the Encoder \#2\# stops for longer than EncoderTimeout.
     *  - \b Encoder0Restarted (Display string: 'Encoder 0 Restarted'): The event will be generated when the Encoder 0 restarts moving.
     *  - \b Encoder1Restarted (Display string: 'Encoder 1 Restarted'): The event will be generated when the Encoder 1 restarts moving.
     *  - \b Encoder\#2\#Restarted (Display string: 'Encoder \#2\# Restarted'): The event will be generated when the Encoder \#2\# restarts moving.
     *  - \b Line0RisingEdge (Display string: 'Line 0 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 0.
     *  - \b Line1RisingEdge (Display string: 'Line 1 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 1.
     *  - \b Line\#2\#RisingEdge (Display string: 'Line \#2\# Rising Edge'): The event will be generated when a Rising Edge is detected on the Line \#2\#.
     *  - \b Line0FallingEdge (Display string: 'Line 0 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 0.
     *  - \b Line1FallingEdge (Display string: 'Line 1 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 1.
     *  - \b Line\#2\#FallingEdge (Display string: 'Line \#2\# Falling Edge'): The event will be generated when a Falling Edge is detected on the Line \#2\#.
     *  - \b Line0AnyEdge (Display string: 'Line 0 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 0.
     *  - \b Line1AnyEdge (Display string: 'Line 1 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 1.
     *  - \b Line\#2\#AnyEdge (Display string: 'Line \#2\# Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line \#2\#.
     *  - \b LinkTrigger0 (Display string: 'Link Trigger 0'): The event will be generated when a Rising Edge is detected on the LinkTrigger 0.
     *  - \b LinkTrigger1 (Display string: 'Link Trigger 1'): The event will be generated when a Rising Edge is detected on the LinkTrigger 1.
     *  - \b LinkTrigger\#2\# (Display string: 'Link Trigger \#2\#'): The event will be generated when a Rising Edge is detected on the LinkTrigger \#2\#.
     *  - \b LinkSpeedChange (Display string: 'Link Speed Change'): The event will be generated when the link speed has changed.
     *  - \b ActionLate (Display string: 'Action Late'): The event will be generated when a valid scheduled action command is received and is scheduled to be executed at a time that is already past.
     *  - \b Error (Display string: 'Error'): Device just detected an error during the active Acquisition.
     *  - \b Test (Display string: 'Test'): The test event will be generated when the device receives the TestEventGenerate command (EventNotification for the Test event is always On).
     *  - \b PrimaryApplicationSwitch (Display string: 'Primary Application Switch'): The event will be generated when a primary application switchover has been granted (GigE Vision Specific).
     *  - \b Counter2Start (Display string: 'Counter 2 Start'): The event will be generated when counter 2 starts counting.
     *  - \b Counter3Start (Display string: 'Counter 3 Start'): The event will be generated when counter 3 starts counting.
     *  - \b Counter4Start (Display string: 'Counter 4 Start'): The event will be generated when counter 4 starts counting.
     *  - \b Counter5Start (Display string: 'Counter 5 Start'): The event will be generated when counter 5 starts counting.
     *  - \b Counter6Start (Display string: 'Counter 6 Start'): The event will be generated when counter 6 starts counting.
     *  - \b Counter7Start (Display string: 'Counter 7 Start'): The event will be generated when counter 7 starts counting.
     *  - \b Counter8Start (Display string: 'Counter 8 Start'): The event will be generated when counter 8 starts counting.
     *  - \b Counter9Start (Display string: 'Counter 9 Start'): The event will be generated when counter 9 starts counting.
     *  - \b Counter10Start (Display string: 'Counter 10 Start'): The event will be generated when counter 10 starts counting.
     *  - \b Counter11Start (Display string: 'Counter 11 Start'): The event will be generated when counter 11 starts counting.
     *  - \b Counter12Start (Display string: 'Counter 12 Start'): The event will be generated when counter 12 starts counting.
     *  - \b Counter13Start (Display string: 'Counter 13 Start'): The event will be generated when counter 13 starts counting.
     *  - \b Counter14Start (Display string: 'Counter 14 Start'): The event will be generated when counter 14 starts counting.
     *  - \b Counter15Start (Display string: 'Counter 15 Start'): The event will be generated when counter 15 starts counting.
     *  - \b Counter2End (Display string: 'Counter 2 End'): The event will be generated when counter 2 ends counting.
     *  - \b Counter3End (Display string: 'Counter 3 End'): The event will be generated when counter 3 ends counting.
     *  - \b Counter4End (Display string: 'Counter 4 End'): The event will be generated when counter 4 ends counting.
     *  - \b Counter5End (Display string: 'Counter 5 End'): The event will be generated when counter 5 ends counting.
     *  - \b Counter6End (Display string: 'Counter 6 End'): The event will be generated when counter 6 ends counting.
     *  - \b Counter7End (Display string: 'Counter 7 End'): The event will be generated when counter 7 ends counting.
     *  - \b Counter8End (Display string: 'Counter 8 End'): The event will be generated when counter 8 ends counting.
     *  - \b Counter9End (Display string: 'Counter 9 End'): The event will be generated when counter 9 ends counting.
     *  - \b Counter10End (Display string: 'Counter 10 End'): The event will be generated when counter 10 ends counting.
     *  - \b Counter11End (Display string: 'Counter 11 End'): The event will be generated when counter 11 ends counting.
     *  - \b Counter12End (Display string: 'Counter 12 End'): The event will be generated when counter 12 ends counting.
     *  - \b Counter13End (Display string: 'Counter 13 End'): The event will be generated when counter 13 ends counting.
     *  - \b Counter14End (Display string: 'Counter 14 End'): The event will be generated when counter 14 ends counting.
     *  - \b Counter15End (Display string: 'Counter 15 End'): The event will be generated when counter 15 ends counting.
     *  - \b Timer2Start (Display string: 'Timer 2 Start'): The event will be generated when Timer 2 starts counting.
     *  - \b Timer3Start (Display string: 'Timer 3 Start'): The event will be generated when Timer 3 starts counting.
     *  - \b Timer4Start (Display string: 'Timer 4 Start'): The event will be generated when Timer 4 starts counting.
     *  - \b Timer5Start (Display string: 'Timer 5 Start'): The event will be generated when Timer 5 starts counting.
     *  - \b Timer6Start (Display string: 'Timer 6 Start'): The event will be generated when Timer 6 starts counting.
     *  - \b Timer7Start (Display string: 'Timer 7 Start'): The event will be generated when Timer 7 starts counting.
     *  - \b Timer8Start (Display string: 'Timer 8 Start'): The event will be generated when Timer 8 starts counting.
     *  - \b Timer9Start (Display string: 'Timer 9 Start'): The event will be generated when Timer 9 starts counting.
     *  - \b Timer10Start (Display string: 'Timer 10 Start'): The event will be generated when Timer 10 starts counting.
     *  - \b Timer11Start (Display string: 'Timer 11 Start'): The event will be generated when Timer 11 starts counting.
     *  - \b Timer12Start (Display string: 'Timer 12 Start'): The event will be generated when Timer 12 starts counting.
     *  - \b Timer13Start (Display string: 'Timer 13 Start'): The event will be generated when Timer 13 starts counting.
     *  - \b Timer14Start (Display string: 'Timer 14 Start'): The event will be generated when Timer 14 starts counting.
     *  - \b Timer15Start (Display string: 'Timer 15 Start'): The event will be generated when Timer 15 starts counting.
     *  - \b Timer2End (Display string: 'Timer 2 End'): The event will be generated when Timer 2 ends counting.
     *  - \b Timer3End (Display string: 'Timer 3 End'): The event will be generated when Timer 3 ends counting.
     *  - \b Timer4End (Display string: 'Timer 4 End'): The event will be generated when Timer 4 ends counting.
     *  - \b Timer5End (Display string: 'Timer 5 End'): The event will be generated when Timer 5 ends counting.
     *  - \b Timer6End (Display string: 'Timer 6 End'): The event will be generated when Timer 6 ends counting.
     *  - \b Timer7End (Display string: 'Timer 7 End'): The event will be generated when Timer 7 ends counting.
     *  - \b Timer8End (Display string: 'Timer 8 End'): The event will be generated when Timer 8 ends counting.
     *  - \b Timer9End (Display string: 'Timer 9 End'): The event will be generated when Timer 9 ends counting.
     *  - \b Timer10End (Display string: 'Timer 10 End'): The event will be generated when Timer 10 ends counting.
     *  - \b Timer11End (Display string: 'Timer 11 End'): The event will be generated when Timer 11 ends counting.
     *  - \b Timer12End (Display string: 'Timer 12 End'): The event will be generated when Timer 12 ends counting.
     *  - \b Timer13End (Display string: 'Timer 13 End'): The event will be generated when Timer 13 ends counting.
     *  - \b Timer14End (Display string: 'Timer 14 End'): The event will be generated when Timer 14 ends counting.
     *  - \b Timer15End (Display string: 'Timer 15 End'): The event will be generated when Timer 15 ends counting.
     *  - \b Encoder2Stopped (Display string: 'Encoder 2 Stopped'): The event will be generated when the Encoder 2 stops for longer than EncoderTimeout.
     *  - \b Encoder3Stopped (Display string: 'Encoder 3 Stopped'): The event will be generated when the Encoder 3 stops for longer than EncoderTimeout.
     *  - \b Encoder4Stopped (Display string: 'Encoder 4 Stopped'): The event will be generated when the Encoder 4 stops for longer than EncoderTimeout.
     *  - \b Encoder5Stopped (Display string: 'Encoder 5 Stopped'): The event will be generated when the Encoder 5 stops for longer than EncoderTimeout.
     *  - \b Encoder6Stopped (Display string: 'Encoder 6 Stopped'): The event will be generated when the Encoder 6 stops for longer than EncoderTimeout.
     *  - \b Encoder7Stopped (Display string: 'Encoder 7 Stopped'): The event will be generated when the Encoder 7 stops for longer than EncoderTimeout.
     *  - \b Encoder8Stopped (Display string: 'Encoder 8 Stopped'): The event will be generated when the Encoder 8 stops for longer than EncoderTimeout.
     *  - \b Encoder9Stopped (Display string: 'Encoder 9 Stopped'): The event will be generated when the Encoder 9 stops for longer than EncoderTimeout.
     *  - \b Encoder10Stopped (Display string: 'Encoder 10 Stopped'): The event will be generated when the Encoder 10 stops for longer than EncoderTimeout.
     *  - \b Encoder11Stopped (Display string: 'Encoder 11 Stopped'): The event will be generated when the Encoder 11 stops for longer than EncoderTimeout.
     *  - \b Encoder12Stopped (Display string: 'Encoder 12 Stopped'): The event will be generated when the Encoder 12 stops for longer than EncoderTimeout.
     *  - \b Encoder13Stopped (Display string: 'Encoder 13 Stopped'): The event will be generated when the Encoder 13 stops for longer than EncoderTimeout.
     *  - \b Encoder14Stopped (Display string: 'Encoder 14 Stopped'): The event will be generated when the Encoder 14 stops for longer than EncoderTimeout.
     *  - \b Encoder15Stopped (Display string: 'Encoder 15 Stopped'): The event will be generated when the Encoder 15 stops for longer than EncoderTimeout.
     *  - \b Encoder2Restarted (Display string: 'Encoder 2 Restarted'): The event will be generated when the Encoder 2 restarts moving.
     *  - \b Encoder3Restarted (Display string: 'Encoder 3 Restarted'): The event will be generated when the Encoder 3 restarts moving.
     *  - \b Encoder4Restarted (Display string: 'Encoder 4 Restarted'): The event will be generated when the Encoder 4 restarts moving.
     *  - \b Encoder5Restarted (Display string: 'Encoder 5 Restarted'): The event will be generated when the Encoder 5 restarts moving.
     *  - \b Encoder6Restarted (Display string: 'Encoder 6 Restarted'): The event will be generated when the Encoder 6 restarts moving.
     *  - \b Encoder7Restarted (Display string: 'Encoder 7 Restarted'): The event will be generated when the Encoder 7 restarts moving.
     *  - \b Encoder8Restarted (Display string: 'Encoder 8 Restarted'): The event will be generated when the Encoder 8 restarts moving.
     *  - \b Encoder9Restarted (Display string: 'Encoder 9 Restarted'): The event will be generated when the Encoder 9 restarts moving.
     *  - \b Encoder10Restarted (Display string: 'Encoder 10 Restarted'): The event will be generated when the Encoder 10 restarts moving.
     *  - \b Encoder11Restarted (Display string: 'Encoder 11 Restarted'): The event will be generated when the Encoder 11 restarts moving.
     *  - \b Encoder12Restarted (Display string: 'Encoder 12 Restarted'): The event will be generated when the Encoder 12 restarts moving.
     *  - \b Encoder13Restarted (Display string: 'Encoder 13 Restarted'): The event will be generated when the Encoder 13 restarts moving.
     *  - \b Encoder14Restarted (Display string: 'Encoder 14 Restarted'): The event will be generated when the Encoder 14 restarts moving.
     *  - \b Encoder15Restarted (Display string: 'Encoder 15 Restarted'): The event will be generated when the Encoder 15 restarts moving.
     *  - \b Line2RisingEdge (Display string: 'Line 2 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 2.
     *  - \b Line3RisingEdge (Display string: 'Line 3 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 3.
     *  - \b Line4RisingEdge (Display string: 'Line 4 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 4.
     *  - \b Line5RisingEdge (Display string: 'Line 5 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 5.
     *  - \b Line6RisingEdge (Display string: 'Line 6 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 6.
     *  - \b Line7RisingEdge (Display string: 'Line 7 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 7.
     *  - \b Line8RisingEdge (Display string: 'Line 8 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 8.
     *  - \b Line9RisingEdge (Display string: 'Line 9 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 9.
     *  - \b Line10RisingEdge (Display string: 'Line 10 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 10.
     *  - \b Line11RisingEdge (Display string: 'Line 11 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 11.
     *  - \b Line12RisingEdge (Display string: 'Line 12 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 12.
     *  - \b Line13RisingEdge (Display string: 'Line 13 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 13.
     *  - \b Line14RisingEdge (Display string: 'Line 14 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 14.
     *  - \b Line15RisingEdge (Display string: 'Line 15 Rising Edge'): The event will be generated when a Rising Edge is detected on the Line 15.
     *  - \b Line2FallingEdge (Display string: 'Line 2 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 2.
     *  - \b Line3FallingEdge (Display string: 'Line 3 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 3.
     *  - \b Line4FallingEdge (Display string: 'Line 4 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 4.
     *  - \b Line5FallingEdge (Display string: 'Line 5 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 5.
     *  - \b Line6FallingEdge (Display string: 'Line 6 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 6.
     *  - \b Line7FallingEdge (Display string: 'Line 7 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 7.
     *  - \b Line8FallingEdge (Display string: 'Line 8 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 8.
     *  - \b Line9FallingEdge (Display string: 'Line 9 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 9.
     *  - \b Line10FallingEdge (Display string: 'Line 10 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 10.
     *  - \b Line11FallingEdge (Display string: 'Line 11 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 11.
     *  - \b Line12FallingEdge (Display string: 'Line 12 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 12.
     *  - \b Line13FallingEdge (Display string: 'Line 13 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 13.
     *  - \b Line14FallingEdge (Display string: 'Line 14 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 14.
     *  - \b Line15FallingEdge (Display string: 'Line 15 Falling Edge'): The event will be generated when a Falling Edge is detected on the Line 15.
     *  - \b Line2AnyEdge (Display string: 'Line 2 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 2.
     *  - \b Line3AnyEdge (Display string: 'Line 3 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 3.
     *  - \b Line4AnyEdge (Display string: 'Line 4 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 4.
     *  - \b Line5AnyEdge (Display string: 'Line 5 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 5.
     *  - \b Line6AnyEdge (Display string: 'Line 6 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 6.
     *  - \b Line7AnyEdge (Display string: 'Line 7 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 7.
     *  - \b Line8AnyEdge (Display string: 'Line 8 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 8.
     *  - \b Line9AnyEdge (Display string: 'Line 9 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 9.
     *  - \b Line10AnyEdge (Display string: 'Line 10 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 10.
     *  - \b Line11AnyEdge (Display string: 'Line 11 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 11.
     *  - \b Line12AnyEdge (Display string: 'Line 12 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 12.
     *  - \b Line13AnyEdge (Display string: 'Line 13 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 13.
     *  - \b Line14AnyEdge (Display string: 'Line 14 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 14.
     *  - \b Line15AnyEdge (Display string: 'Line 15 Any Edge'): The event will be generated when a Falling or Rising Edge is detected on the Line 15.
     *  - \b Link0Trigger (Display string: 'Link 0 Trigger')
     *  - \b Link1Trigger (Display string: 'Link 1 Trigger')
     *  - \b Link2Trigger (Display string: 'Link 2 Trigger')
     *  - \b Link3Trigger (Display string: 'Link 3 Trigger')
     *  - \b Link4Trigger (Display string: 'Link 4 Trigger')
     *  - \b Link5Trigger (Display string: 'Link 5 Trigger')
     *  - \b Link6Trigger (Display string: 'Link 6 Trigger')
     *  - \b Link7Trigger (Display string: 'Link 7 Trigger')
     *  - \b Link8Trigger (Display string: 'Link 8 Trigger')
     *  - \b Link9Trigger (Display string: 'Link 9 Trigger')
     *  - \b Link10Trigger (Display string: 'Link 10 Trigger')
     *  - \b Link11Trigger (Display string: 'Link 11 Trigger')
     *  - \b Link12Trigger (Display string: 'Link 12 Trigger')
     *  - \b Link13Trigger (Display string: 'Link 13 Trigger')
     *  - \b Link14Trigger (Display string: 'Link 14 Trigger')
     *  - \b Link15Trigger (Display string: 'Link 15 Trigger')
     *  - \b InterfaceListChanged (Display string: 'Interface List Changed'): This enumeration value indicates an event that is fired when the list of interfaces has been updated.
     *  - \b InterfaceLost (Display string: 'Interface Lost'): This enumeration value indicates an event that is raised when the interface connection is lost.
     *  - \b DeviceListChanged (Display string: 'Device List Changed'): This enumeration value indicates an event that is fired when the list of devices has been updated.
     *  - \b DeviceLost (Display string: 'Device Lost'): This enumeration value indicates an event that is raised when the local host looses connection to the physical(remote) device.
     *  - \b BufferTooSmall (Display string: 'Buffer Too Small'): This enumeration value indicates an event that is raised when the buffer was too small to receive the expected amount of data.
     *  - \b BuffersDiscarded (Display string: 'Buffers Discarded'): This enumeration value indicates an event that is raised when buffers discared by GenTL or device. This event could optionally carry two numeric child data fields EventBuffersDiscardedDeviceCount and EventBuffersDiscardedProducerCount.
     *  - \b BuffersDiscardedDeviceCount (Display string: 'Buffers Discarded Device Count'): This enumeration value indicates the number of buffers discarded by the device since last fired instance of this event (the producer would get to know about this for example by observing a gap in the block_id sequence).
     *  - \b BuffersDiscardedProducerCount (Display string: 'Buffers Discarded Producer Count'): This enumeration value indicates the number of buffers discarded by the producer since last fired instance of this event (this would happen e.g. if there are no free buffers available or if given buffer handling mode requires discarding old buffers etc.).
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 eventSelector;
    /// \brief An enumerated integer property. Activate or deactivate the notification to the host application of the occurrence of the selected Event.
    /**
     *  Activate or deactivate the notification to the host application of the occurrence of the selected Event.
     *
     *  The following string values might be valid for this feature:
     *  - \b Off (Display string: 'Off'): The selected Event notification is disabled.
     *  - \b On (Display string: 'On'): The selected Event notification is enabled.
     *  - \b Once (Display string: 'Once'): The selected Event notification is enabled for one event then return to Off state.
     *  - \b GigEVisionEvent (Display string: 'Gig E Vision Event')
     *
     *  \note Depending on the device some of these values might not be supported and especially when working with third party devices there might be custom values which are not listed here.
     *  To get a complete and reliable list of supported values at runtime an application should therefore call <b>mvIMPACT::acquire::EnumPropertyI::getTranslationDictStrings()</b> or one of the other functions dealing with translation dictionaries for enumerated properties.
     */
    PropertyI64 eventNotification;
    // *INDENT-OFF*
    PYTHON_OR_JAVA_ONLY( %mutable; )
    // *INDENT-ON*
};

} // namespace GenICam
} // namespace acquire
} // namespace mvIMPACT

#endif //mvIMPACT_acquire_GenICam_CPP_autogen_h
