////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
// All Rights Reserved.
// Confidential and Proprietary - Qualcomm Technologies, Inc.
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// THIS IS AUTO-GENERATED CODE.  PLEASE DO NOT EDIT (File bug reports against tools).
///
/// Auto-generated by: Parameter Parser V5.5.1 (2411131018)
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// @file  camxmoduleconfig.h
/// @brief Auto-generated Chromatix parameter file
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#ifndef CAMXMODULECONFIG_H
#define CAMXMODULECONFIG_H

#include "parametermodule.h"
#include "parameterfilesymboltable.h"
#include "parametertypes.h"
#include "camxsensorcommon.h"

#define CAMX_NAMESPACE_BEGIN namespace CamX {
#define CAMX_NAMESPACE_END }

CAMX_NAMESPACE_BEGIN

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// CameraPosition
/// Comments:      Position of the sensor module.
///                Valid values are: REAR, FRONT, REAR_AUX, FRONT_AUX, EXTERNAL, VIRTUAL
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
enum class CameraPosition
{
    REAR      = 0,
    FRONT     = 1,
    REAR_AUX  = 2,
    FRONT_AUX = 3,
    EXTERNAL  = 4,
    VIRTUAL   = 5
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// @brief Read enum value
/// @param entry [in] Symbol table entry
/// @param enumValue [out] Enum value to read
/// @param alignment [in] Symbol table byte alignment
/// @return true if successful
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
bool ReadEnum_CameraPosition(
    ParameterFileSymbolTableEntry* const entry,
    CameraPosition& enumValue,
    BYTE const alignment);

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// CSIPHYChannelType
/// Comments:      CSIPHY channel type
///                Supported types are: SHORT, STANDARD
///                The physical length of channel determines which type of channel it is.
///                Some register values for each channel are somewhat different.
///                We should have enough margins to pass the test using standard channel.
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
enum class CSIPHYChannelType
{
    SHORT    = 0,
    STANDARD = 1
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// @brief Read enum value
/// @param entry [in] Symbol table entry
/// @param enumValue [out] Enum value to read
/// @param alignment [in] Symbol table byte alignment
/// @return true if successful
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
bool ReadEnum_CSIPHYChannelType(
    ParameterFileSymbolTableEntry* const entry,
    CSIPHYChannelType& enumValue,
    BYTE const alignment);

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// CSIInformation
///
/// Description:   CSI Information
/// Comments:      CSI information
///                element for laneAssign
///                element for isComboMode
///                element for isSharedMode
///                element for CPHYDPHYComboMode
///                element for datarate channel type
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct CSIInformation
{
    /// lane Assign: Total Number of lanes configured for the sensor.
    /// This 2-byte hex value uses each 4-bit segment to represent lane activation.
    /// Each 4-bit segment form right to left represents lane 0 to 3.
    /// If the corresponding lane number is set in its 4-bit segment, then those lanes will be enabled.
    /// e.g. 0x3210 represents all 4 lanes (L3, L2, L1, L0) are enabled
    UINT32             laneAssignExists;
    UINT32             laneAssignID;
    UINT16             laneAssign;
    /// Flag to enable combo mode
    /// This flag is enabled if multiple sensors are using same CSI-PHY receiver.
    UINT32             isComboModeExists;
    UINT32             isComboModeID;
    UINT8              isComboMode;
    /// Flag to enable shared mode
    /// This flag is enabled if multiple GMSL sensors are using the same CSI-PHY receiver.
    UINT32             isSharedModeExists;
    UINT32             isSharedModeID;
    UINT8              isSharedMode;
    /// Flag to enable cphy-dphy combo mode
    /// This flag is enabled if multiple sensors are being used in the following
    /// combination:
    /// 1. Two sensors using CPHY receiver and One sensor with DPHY receiever
    /// 1. Two sensors using DPHY receiver and One sensor with CPHY receiever
    UINT32             cphyDphyComboModeExists;
    UINT32             cphyDphyComboModeID;
    UINT8              cphyDphyComboMode;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// channelType - Optional
    /// Default Value: SHORT
    /// Min Length:    0
    /// Max Length:    1
    /// Comments:      CSIPHY channel type
    ///                Supported types are: SHORT, STANDARD
    ///                The physical length of channel determines which type of channel it is.
    ///                Some register values for each channel are somewhat different.
    ///                We should have enough margins to pass the test using standard channel.
    ///                ChannelType indicates apply which channel settings.
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    UINT32             channelTypeExists;
    UINT32             channelTypeID;
    CSIPHYChannelType  channelType;

    bool Load(ParameterFileSymbolTableEntry* const entry, BYTE const alignment);
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// AONCameraInfo
/// Comments:      Parameters specific to AON camera
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct AONCameraInfo
{
    /// Parameter indicating if the I2C bus of this sensor is shared with any AON camera
    /// This is optional and must be provided if the bus is shared for AON camera and any other camera
    UINT32 isSharedBusExists;
    UINT32 isSharedBusID;
    BOOL   isSharedBus;

    bool Load(ParameterFileSymbolTableEntry* const entry, BYTE const alignment);
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// DepthOutputFormat
/// Comments:      Output formats supported by depth library
///                Supported formats are: DEPTH16, POINTCLOUD
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
enum class DepthOutputFormat
{
    DEPTH16    = 0,
    POINTCLOUD = 1
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// @brief Read enum value
/// @param entry [in] Symbol table entry
/// @param enumValue [out] Enum value to read
/// @param alignment [in] Symbol table byte alignment
/// @return true if successful
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
bool ReadEnum_DepthOutputFormat(
    ParameterFileSymbolTableEntry* const entry,
    DepthOutputFormat& enumValue,
    BYTE const alignment);

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// DepthOutputFormatList - Array
/// Min Length:    1
/// Max Length:    Unbounded
/// Comments:      List of depth output formats
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
typedef DepthOutputFormat* DepthOutputFormatList;

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// DepthConversionLibInfo
/// Comments:      Information of depth conversion library
///                element for libraryName
///                element for libraryName
///                element for depthOutputFormat
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct DepthConversionLibInfo
{
    /// Library name
    CHAR*                  libraryName;
    /// preprocLibrary name
    CHAR*                  preprocLibraryName;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// depthOutputFormat - Array
    /// Min Length:    1
    /// Max Length:    Unbounded
    /// Comments:      List of depth output formats
    ///                Output format list supported by the conversion library
    ///                Multiple formats can be added with space as separation
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    UINT32                 depthOutputFormatCount;
    UINT32                 depthOutputFormatID;
    DepthOutputFormatList  depthOutputFormat;

    bool Load(ParameterFileSymbolTableEntry* const entry, BYTE const alignment);
    void Unload(ParameterFileSymbolTable* const __table);
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// LensInformation
///
/// Description:   Lens Information
/// Comments:      Lens information
///                element for focalLength
///                element for fNumber
///                element for minFocusDistance
///                element for maxFocusDistance
///                element for horizontalViewAngle
///                element for verticalViewAngle
///                element for maxRollDegree
///                element for maxPitchDegree
///                This corresponds to the camera mountAngle
///                element for maxYawDegree
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct LensInformation
{
    /// Focal length of the lens in millimeters.
    double  focalLength;
    /// F-Number of the optical system.
    double  fNumber;
    /// Minimum focus distance in meters.
    double  minFocusDistance;
    /// Total focus distance in meters.
    double  maxFocusDistance;
    /// Horizontal view angle in degrees.
    double  horizontalViewAngle;
    /// Vertical view angle in degrees.
    double  verticalViewAngle;
    /// Maximum Roll Degree: Camera mount rotation along X axis
    /// Valid values: 0-359; 360 corresponds to invalid roll degree
    UINT32  maxRollDegreeExists;
    UINT32  maxRollDegreeID;
    double  maxRollDegree;
    /// Maximum Pitch degree: Camera mount rotation along Y axis
    /// Valid values: 0, 90, 180, 270; 360 corresponds to invalid pitch degree
    UINT32  maxPitchDegreeExists;
    UINT32  maxPitchDegreeID;
    double  maxPitchDegree;
    /// Maximum Yaw degree: Camera mount rotation along Z axis
    /// Valid values: 0-359; 360 corresponds to invalid yaw degree
    UINT32  maxYawDegreeExists;
    UINT32  maxYawDegreeID;
    double  maxYawDegree;

    bool Load(ParameterFileSymbolTableEntry* const entry, BYTE const alignment);
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// ModuleConfiguration
///
/// Description:   Module configuration
/// Comments:      Module configuration
///                element for CameraId
///                element for module name
///                Element for sensorName
///                Element for sensorVersion
///                Element for sensorSlaveAddress
///                Element for actuatorName
///                Element for actuatorSlaveAddress
///                Element for oisName
///                Element for eepromName
///                Element for eepromSlaveAddress
///                Element for flashName
///                Element for flashNameSecondary
///                Element for chromatixName
///                Element for i2cFrenquencyMode
///                element for aonCamInfo
///                element for position
///                element for CSIInfo
///                element for lensInfo
///                Element for pdafName
///                Element for depthConversionLibInfo
///                Element for sensorBroadcastName
///                Element for numSensorsInBroadcast
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct ModuleConfiguration
{
    /// CameraId is the id to which DTSI node is mapped.
    /// Typically CameraId is the slot Id for non combo mode.
    /// External sensor use the upper 8bit to specified the slot Id
    UINT16                              cameraId;
    /// Name of the module integrator
    UINT32                              moduleNameExists;
    UINT32                              moduleNameID;
    CHAR*                               moduleName;
    /// Name of the sensor in the image sensor module
    CHAR*                               sensorName;
    /// Version of the sensor in the image sensor module
    UINT16                              sensorVersion;
    /// Sensor slave adddress to over ride the value present in the Sensor Driver
    /// This is an optional element. Do not use this entry if override is not required.
    UINT32                              sensorSlaveAddressExists;
    UINT32                              sensorSlaveAddressID;
    UINT16                              sensorSlaveAddress;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// sensorI2CFrequencyMode - Optional
    /// Min Length:    0
    /// Max Length:    1
    /// Comments:      I2C frequency mode of slave
    ///                Supported modes are: STANDARD (100 KHz), FAST (400 KHz), FAST_PLUS (1 MHz), CUSTOM (Custom frequency in
    ///                DTSI)
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    UINT32                              sensorI2CFrequencyModeExists;
    UINT32                              sensorI2CFrequencyModeID;
    I2CFrequencyMode  sensorI2CFrequencyMode;
    /// Actuator name in the image sensor module
    /// This is an optional element. Skip this element if actuator is not present
    UINT32                              actuatorNameExists;
    UINT32                              actuatorNameID;
    CHAR*                               actuatorName;
    /// Actuator slave adddress to over ride the value present in the Actuator driver
    /// This is an optional element. Do not use this entry if override is not required.
    UINT32                              actuatorSlaveAddressExists;
    UINT32                              actuatorSlaveAddressID;
    UINT16                              actuatorSlaveAddress;
    /// OIS name in the image sensor module
    /// This is an optional element. Skip this element if OIS is not present
    UINT32                              oisNameExists;
    UINT32                              oisNameID;
    CHAR*                               oisName;
    /// EEPROM name in the image sensor module
    /// This is an optional element. Skip this element if EEPROM is not present
    UINT32                              eepromNameExists;
    UINT32                              eepromNameID;
    CHAR*                               eepromName;
    /// eeprom slave adddress to over ride the value present in the EEPROM driver
    /// This is an optional element. Do not use this entry if override is not required.
    UINT32                              eepromSlaveAddressExists;
    UINT32                              eepromSlaveAddressID;
    UINT16                              eepromSlaveAddress;
    /// Flash name is used to used to open binary.
    /// Binary name is of form flashName_flash.bin Ex:- pmic_flash.bin
    UINT32                              flashNameExists;
    UINT32                              flashNameID;
    CHAR*                               flashName;
    /// Secondary Flash name is used to open binary.
    /// Binary name is of form flashName_flash.bin Ex:- module_i2c_flash.bin
    UINT32                              flashNameSecondaryExists;
    UINT32                              flashNameSecondaryID;
    CHAR*                               flashNameSecondary;
    /// Chromatix name is used to used to open binary.
    /// Binary name is of the form sensor_model_chromatix.bin
    UINT32                              chromatixNameExists;
    UINT32                              chromatixNameID;
    CHAR*                               chromatixName;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// i2cFrequencyMode - Optional
    /// Min Length:    0
    /// Max Length:    1
    /// Comments:      I2C frequency mode of slave
    ///                Supported modes are: STANDARD (100 KHz), FAST (400 KHz), FAST_PLUS (1 MHz), CUSTOM (Custom frequency in
    ///                DTSI)
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    UINT32                              i2cFrequencyModeExists;
    UINT32                              i2cFrequencyModeID;
    I2CFrequencyMode  i2cFrequencyMode;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// aonCamInfo - Optional
    /// Min Length:    0
    /// Max Length:    1
    /// Comments:      Parameters specific to AON camera
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    UINT32                              aonCamInfoExists;
    UINT32                              aonCamInfoID;
    AONCameraInfo                       aonCamInfo;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// position
    /// Comments:      Position of the sensor module.
    ///                Valid values are: REAR, FRONT, REAR_AUX, FRONT_AUX, EXTERNAL, VIRTUAL
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    CameraPosition                      position;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// CSIInfo
    ///
    /// Description:   CSI Information
    /// Comments:      CSI information
    ///                element for laneAssign
    ///                element for isComboMode
    ///                element for isSharedMode
    ///                element for CPHYDPHYComboMode
    ///                element for datarate channel type
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    CSIInformation                      CSIInfo;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// lensInfo
    ///
    /// Description:   Lens Information
    /// Comments:      Lens information
    ///                element for focalLength
    ///                element for fNumber
    ///                element for minFocusDistance
    ///                element for maxFocusDistance
    ///                element for horizontalViewAngle
    ///                element for verticalViewAngle
    ///                element for maxRollDegree
    ///                element for maxPitchDegree
    ///                This corresponds to the camera mountAngle
    ///                element for maxYawDegree
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    LensInformation                     lensInfo;
    UINT32                              pdafNameExists;
    UINT32                              pdafNameID;
    CHAR*                               pdafName;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// depthConversionLibInfo - Optional
    /// Min Length:    0
    /// Max Length:    1
    /// Comments:      Information of depth conversion library
    ///                element for libraryName
    ///                element for libraryName
    ///                element for depthOutputFormat
    ///                Conversion Library Information for Depth Sensors
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    UINT32                              depthConversionLibInfoExists;
    UINT32                              depthConversionLibInfoID;
    DepthConversionLibInfo              depthConversionLibInfo;
    /// Name of the broadcast sensor in the image sensor module
    UINT32                              sensorBroadcastNameExists;
    UINT32                              sensorBroadcastNameID;
    CHAR*                               sensorBroadcastName;
    /// Number of sensors which will be used in broadcast group
    UINT32                              numSensorsInBroadcastExists;
    UINT32                              numSensorsInBroadcastID;
    UINT8                               numSensorsInBroadcast;

    bool Load(ParameterFileSymbolTableEntry* const entry, BYTE const alignment);
    void Unload(ParameterFileSymbolTable* const __table);
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// ModuleGroup
/// Comments:      Module group can contain either 1 module or 2 modules
///                Dual camera, stereo camera use cases contain 2 modules in the group
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct ModuleGroup
{

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// moduleConfiguration - Array
    ///
    /// Description:   Module configuration
    /// Min Length:    1
    /// Max Length:    Unbounded
    /// Comments:      Module configuration
    ///                element for CameraId
    ///                element for module name
    ///                Element for sensorName
    ///                Element for sensorVersion
    ///                Element for sensorSlaveAddress
    ///                Element for actuatorName
    ///                Element for actuatorSlaveAddress
    ///                Element for oisName
    ///                Element for eepromName
    ///                Element for eepromSlaveAddress
    ///                Element for flashName
    ///                Element for flashNameSecondary
    ///                Element for chromatixName
    ///                Element for i2cFrenquencyMode
    ///                element for aonCamInfo
    ///                element for position
    ///                element for CSIInfo
    ///                element for lensInfo
    ///                Element for pdafName
    ///                Element for depthConversionLibInfo
    ///                Element for sensorBroadcastName
    ///                Element for numSensorsInBroadcast
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    UINT32               moduleConfigurationCount;
    UINT32               moduleConfigurationID;
    ModuleConfiguration* moduleConfiguration;

    bool Load(ParameterFileSymbolTableEntry* const entry, BYTE const alignment);
    void Unload(ParameterFileSymbolTable* const __table);
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// CameraModuleData
/// Comments:      Camera module data
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct CameraModuleData
{
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Binary file symbol table entry ID
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    UINT32 SymbolTableID;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// module_version
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct module_versionStruct
    {
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// Binary file symbol table entry ID
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        UINT32 SymbolTableID;
        INT32  major_revision;
        INT32  minor_revision;
        INT32  incr_revision;

        bool Load(ParameterFileSymbolTableEntry* const entry, BYTE const alignment);
    };
    struct module_versionStruct module_version;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// moduleGroup
    /// Comments:      Module group can contain either 1 module or 2 modules
    ///                Dual camera, stereo camera use cases contain 2 modules in the group
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    ModuleGroup moduleGroup;

    bool Load(ParameterFileSymbolTableEntry* const entry, BYTE const alignment);
    void Unload(ParameterFileSymbolTable* const __table);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Release the ParameterModule object
    /// Requires that this object was created via a ParameterSetManager::GetModule call
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    void Release();

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Returns the ParameterModule::Modified value
    /// The Modified value is incremented when the module's data or pointer values change
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    UINT32 GetModified();
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// CameraModuleDataClass
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
class CameraModuleDataClass : public ParameterModule, public CameraModuleData
{
public:
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Version
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static constexpr UINT16 MAJOR = 1U;
    static constexpr UINT16 MINOR = 0U;
    static constexpr UINT32 PATCH = 0U;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Default Constructor
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    CameraModuleDataClass(
        const CHAR* const name);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Constructor
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    CameraModuleDataClass(
        const CHAR* const name,
        ModuleData* const moduleData);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Destructor
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    virtual ~CameraModuleDataClass();

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// GetName
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static const CHAR* GetName(
        const CHAR* const type);


    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Create module, and return a new object
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    virtual ParameterModule* Create(
        ModuleData* const moduleData,
        DefaultModule* const defModule) const;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load module data, return true if successful
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    virtual bool LoadModule(
        ParameterFileSymbolTable* const table);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Unload module data
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    virtual void UnloadModule();

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// /// Release the ParameterModule object
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    void Release();
}; // End class CameraModuleDataClass

CAMX_NAMESPACE_END
#endif // CAMXMODULECONFIG_H

