////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 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  dsx_1_0_1.h
/// @brief Auto-generated Chromatix parameter file
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#ifndef DSX_1_0_1_H
#define DSX_1_0_1_H

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

#define DSX_1_0_1_NAMESPACE_BEGIN namespace dsx_1_0_1 {
#define DSX_1_0_1_NAMESPACE_END }

DSX_1_0_1_NAMESPACE_BEGIN

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// chromatix_dsx10_reserveType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct chromatix_dsx10_reserveType
{

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// param_calc_mode
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   Determines how kernel weights and padding weights are calculated:. 0 = run-time calculation by SW using
    ///                ds4 coefficients from DS4 block + ica coefficients from ICA0 block + VSR scale ratio. 1 = use
    ///                precalculated values from *_kernel_weights_* and *_padding_weights_* parameters, directly based on VSR
    ///                scale ratio.
    /// Type:          uint
    /// Default Value: 0
    /// Range:         [0, 1]
    /// Notes:         Hide in GUI ! Constant: no dynamic configuration even when control variable change.
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    UINT32 param_calc_mode;

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

    bool GetValue(
        const CHAR* __path,
        CHAR*       __value,
        UINT32      __size);

    bool SetValue(
        const CHAR* __path,
        const CHAR* __value);

    bool GetInfo(
        const CHAR*                 __path,
        PList<ParameterParserInfo>& __info);
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// dsx10_rgn_dataType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct dsx10_rgn_dataType
{

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// luma_kernel_weights_unpacked_horiz_tab
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   Horizontal kernel samples for Luma (provided for phases is greater than or equal to 0 starting with
    ///                phase=0; negative phases are reflected symmetrically). The kernel is sampled at 1/32-pixel steps for
    ///                scale ratios is less than or equal to 1/1.5 and at 1/64-pixel steps for scale ratios is greater than
    ///                1/1.5. Constraints: weights for all pixels for a given phase should sum to one.
    /// Type:          int
    /// Range:         [-1024, 1024]
    /// Length:        192
    /// Notes:         Nearest neighbor interpolation: discrete values allowed.
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct luma_kernel_weights_unpacked_horiz_tabStruct
    {
        float  luma_kernel_weights_unpacked_horiz[192];

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

        bool GetValue(
            const CHAR* __path,
            CHAR*       __value,
            UINT32      __size);

        bool SetValue(
            const CHAR* __path,
            const CHAR* __value);

        bool GetInfo(
            const CHAR*                 __path,
            PList<ParameterParserInfo>& __info);
    };
    struct luma_kernel_weights_unpacked_horiz_tabStruct luma_kernel_weights_unpacked_horiz_tab;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// luma_kernel_weights_unpacked_vert_tab
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   Vertical kernel samples for Luma (provided for phases is greater than or equal to 0 starting with
    ///                phase=0; negative phases are reflected symmetrically). The kernel is sampled either at 1/32-pixel steps
    ///                (for scale ratios is less than or equal to 1/1.5) or at 1/64-pixel steps (for scale ratios is greater
    ///                than 1/1.5). Constraints: weights for all pixels for a given phase should sum to one.
    /// Type:          int
    /// Range:         [-1024, 1024]
    /// Length:        192
    /// Notes:         Nearest neighbor interpolation: discrete values allowed.
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct luma_kernel_weights_unpacked_vert_tabStruct
    {
        float  luma_kernel_weights_unpacked_vert[192];

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

        bool GetValue(
            const CHAR* __path,
            CHAR*       __value,
            UINT32      __size);

        bool SetValue(
            const CHAR* __path,
            const CHAR* __value);

        bool GetInfo(
            const CHAR*                 __path,
            PList<ParameterParserInfo>& __info);
    };
    struct luma_kernel_weights_unpacked_vert_tabStruct luma_kernel_weights_unpacked_vert_tab;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// chroma_kernel_weights_unpacked_horiz_tab
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   Horizontal kernel samples for Chroma (provided for phases is greater than or equal to 0 starting with
    ///                phase=0; negative phases are reflected symmetrically). The kernel is sampled either at 1/32-pixel steps
    ///                (for scale ratios is less than or equal to 1/1.5) or at 1/64-pixel steps (for scale ratios is greater
    ///                than 1/1.5). Constraints: weights for all pixels for a given phase should sum to one.
    /// Type:          int
    /// Range:         [-1024, 1024]
    /// Length:        96
    /// Notes:         Nearest neighbor interpolation: discrete values allowed.
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct chroma_kernel_weights_unpacked_horiz_tabStruct
    {
        float  chroma_kernel_weights_unpacked_horiz[96];

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

        bool GetValue(
            const CHAR* __path,
            CHAR*       __value,
            UINT32      __size);

        bool SetValue(
            const CHAR* __path,
            const CHAR* __value);

        bool GetInfo(
            const CHAR*                 __path,
            PList<ParameterParserInfo>& __info);
    };
    struct chroma_kernel_weights_unpacked_horiz_tabStruct chroma_kernel_weights_unpacked_horiz_tab;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// chroma_kernel_weights_unpacked_vert_tab
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   Vertical kernel samples for Chroma (provided for phases is greater than or equal to 0 starting with
    ///                phase=0; negative phases are reflected symmetrically). The kernel is sampled either at 1/32-pixel steps
    ///                (for scale ratios is less than or equal to 1/1.5) or at 1/64-pixel steps (for scale ratios is greater
    ///                than 1/1.5). Constraints: weights for all pixels for a given phase should sum to one.
    /// Type:          int
    /// Range:         [-1024, 1024]
    /// Length:        96
    /// Notes:         Nearest neighbor interpolation: discrete values allowed.
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct chroma_kernel_weights_unpacked_vert_tabStruct
    {
        float  chroma_kernel_weights_unpacked_vert[96];

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

        bool GetValue(
            const CHAR* __path,
            CHAR*       __value,
            UINT32      __size);

        bool SetValue(
            const CHAR* __path,
            const CHAR* __value);

        bool GetInfo(
            const CHAR*                 __path,
            PList<ParameterParserInfo>& __info);
    };
    struct chroma_kernel_weights_unpacked_vert_tabStruct chroma_kernel_weights_unpacked_vert_tab;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// luma_padding_weights_en
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   enable external configuration of padding weights for Luma (controlled by luma_padding_weights_*
    ///                parameters).
    /// Type:          uint
    /// Default Value: 0
    /// Range:         [0, 1]
    /// Notes:         Nearest neighbor interpolation: discrete values allowed.
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    float  luma_padding_weights_en;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// chroma_padding_weights_en
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   enable external configuration of padding weights for Chroma (controlled by chroma_padding_weights_*
    ///                parameters).
    /// Type:          uint
    /// Default Value: 0
    /// Range:         [0, 1]
    /// Notes:         Nearest neighbor interpolation: discrete values allowed.
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    float  chroma_padding_weights_en;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// luma_padding_weights_top_tab
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   Weights used for first 6 input pixels in a column (for each pixel 4 weights, one per accumulator, are
    ///                provided) - for Luma. Constraints: at every output location affected by input pixels with
    ///                externally-configured padding weights, the weights should approximately sum to one.
    /// Type:          int
    /// Range:         [-4096, 4095]
    /// Length:        24
    /// Notes:         Nearest neighbor interpolation: discrete values allowed.
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct luma_padding_weights_top_tabStruct
    {
        float  luma_padding_weights_top[24];

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

        bool GetValue(
            const CHAR* __path,
            CHAR*       __value,
            UINT32      __size);

        bool SetValue(
            const CHAR* __path,
            const CHAR* __value);

        bool GetInfo(
            const CHAR*                 __path,
            PList<ParameterParserInfo>& __info);
    };
    struct luma_padding_weights_top_tabStruct luma_padding_weights_top_tab;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// luma_padding_weights_bot_tab
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   Weights used for last 6 input pixels in a column (for each pixel 4 weights, one per accumulator, are
    ///                provided) - for Luma. Constraints: at every output location affected by input pixels with
    ///                externally-configured padding weights, the weights should approximately sum to one.
    /// Type:          int
    /// Range:         [-4096, 4095]
    /// Length:        24
    /// Notes:         Nearest neighbor interpolation: discrete values allowed.
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct luma_padding_weights_bot_tabStruct
    {
        float  luma_padding_weights_bot[24];

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

        bool GetValue(
            const CHAR* __path,
            CHAR*       __value,
            UINT32      __size);

        bool SetValue(
            const CHAR* __path,
            const CHAR* __value);

        bool GetInfo(
            const CHAR*                 __path,
            PList<ParameterParserInfo>& __info);
    };
    struct luma_padding_weights_bot_tabStruct luma_padding_weights_bot_tab;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// luma_padding_weights_left_tab
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   Weights used for first 6 input pixels in a row (for each pixel 4 weights, one per accumulator, are
    ///                provided) - for Luma. Constraints: at every output location affected by input pixels with
    ///                externally-configured padding weights, the weights should approximately sum to one.
    /// Type:          int
    /// Range:         [-4096, 4095]
    /// Length:        24
    /// Notes:         Nearest neighbor interpolation: discrete values allowed.
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct luma_padding_weights_left_tabStruct
    {
        float  luma_padding_weights_left[24];

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

        bool GetValue(
            const CHAR* __path,
            CHAR*       __value,
            UINT32      __size);

        bool SetValue(
            const CHAR* __path,
            const CHAR* __value);

        bool GetInfo(
            const CHAR*                 __path,
            PList<ParameterParserInfo>& __info);
    };
    struct luma_padding_weights_left_tabStruct luma_padding_weights_left_tab;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// luma_padding_weights_right_tab
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   Weights used for last 6 input pixels in a row (for each pixel 4 weights, one per accumulator, are
    ///                provided) - for Luma. Constraints: at every output location affected by input pixels with
    ///                externally-configured padding weights, the weights should approximately sum to one.
    /// Type:          int
    /// Range:         [-4096, 4095]
    /// Length:        24
    /// Notes:         Nearest neighbor interpolation: discrete values allowed.
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct luma_padding_weights_right_tabStruct
    {
        float  luma_padding_weights_right[24];

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

        bool GetValue(
            const CHAR* __path,
            CHAR*       __value,
            UINT32      __size);

        bool SetValue(
            const CHAR* __path,
            const CHAR* __value);

        bool GetInfo(
            const CHAR*                 __path,
            PList<ParameterParserInfo>& __info);
    };
    struct luma_padding_weights_right_tabStruct luma_padding_weights_right_tab;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// chroma_padding_weights_top_tab
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   Weights used for first 4 input pixels in a column (for each pixel 2 weights, one per accumulator, are
    ///                provided) - for Chroma. Constraints: at every output location affected by input pixels with
    ///                externally-configured padding weights, the weights should approximately sum to one.
    /// Type:          int
    /// Range:         [-4096, 4095]
    /// Length:        8
    /// Notes:         Nearest neighbor interpolation: discrete values allowed.
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct chroma_padding_weights_top_tabStruct
    {
        float  chroma_padding_weights_top[8];

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

        bool GetValue(
            const CHAR* __path,
            CHAR*       __value,
            UINT32      __size);

        bool SetValue(
            const CHAR* __path,
            const CHAR* __value);

        bool GetInfo(
            const CHAR*                 __path,
            PList<ParameterParserInfo>& __info);
    };
    struct chroma_padding_weights_top_tabStruct chroma_padding_weights_top_tab;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// chroma_padding_weights_bot_tab
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   Weights used for last 4 input pixels in a column (for each pixel 2 weights, one per accumulator, are
    ///                provided) - for Chroma. Constraints: at every output location affected by input pixels with
    ///                externally-configured padding weights, the weights should approximately sum to one.
    /// Type:          int
    /// Range:         [-4096, 4095]
    /// Length:        8
    /// Notes:         Nearest neighbor interpolation: discrete values allowed.
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct chroma_padding_weights_bot_tabStruct
    {
        float  chroma_padding_weights_bot[8];

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

        bool GetValue(
            const CHAR* __path,
            CHAR*       __value,
            UINT32      __size);

        bool SetValue(
            const CHAR* __path,
            const CHAR* __value);

        bool GetInfo(
            const CHAR*                 __path,
            PList<ParameterParserInfo>& __info);
    };
    struct chroma_padding_weights_bot_tabStruct chroma_padding_weights_bot_tab;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// chroma_padding_weights_left_tab
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   Weights used for first 4 input pixels in a row (for each pixel 2 weights, one per accumulator, are
    ///                provided) - for Chroma. Constraints: at every output location affected by input pixels with
    ///                externally-configured padding weights, the weights should approximately sum to one.
    /// Type:          int
    /// Range:         [-4096, 4095]
    /// Length:        8
    /// Notes:         Nearest neighbor interpolation: discrete values allowed.
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct chroma_padding_weights_left_tabStruct
    {
        float  chroma_padding_weights_left[8];

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

        bool GetValue(
            const CHAR* __path,
            CHAR*       __value,
            UINT32      __size);

        bool SetValue(
            const CHAR* __path,
            const CHAR* __value);

        bool GetInfo(
            const CHAR*                 __path,
            PList<ParameterParserInfo>& __info);
    };
    struct chroma_padding_weights_left_tabStruct chroma_padding_weights_left_tab;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// chroma_padding_weights_right_tab
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   Weights used for last 4 input pixels in a row (for each pixel 2 weights, one per accumulator, are
    ///                provided) - for Chroma. Constraints: at every output location affected by input pixels with
    ///                externally-configured padding weights, the weights should approximately sum to one.
    /// Type:          int
    /// Range:         [-4096, 4095]
    /// Length:        8
    /// Notes:         Nearest neighbor interpolation: discrete values allowed.
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct chroma_padding_weights_right_tabStruct
    {
        float  chroma_padding_weights_right[8];

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

        bool GetValue(
            const CHAR* __path,
            CHAR*       __value,
            UINT32      __size);

        bool SetValue(
            const CHAR* __path,
            const CHAR* __value);

        bool GetInfo(
            const CHAR*                 __path,
            PList<ParameterParserInfo>& __info);
    };
    struct chroma_padding_weights_right_tabStruct chroma_padding_weights_right_tab;

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

    bool GetValue(
        const CHAR* __path,
        CHAR*       __value,
        UINT32      __size);

    bool SetValue(
        const CHAR* __path,
        const CHAR* __value);

    bool GetInfo(
        const CHAR*                 __path,
        PList<ParameterParserInfo>& __info);
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// triggerType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct triggerType
{
    UINT32                           controlIndex;
    ispglobalelements::trigger_types type;

    float               start;
    float               end;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// trigger - Array
    /// Min Length:    0
    /// Max Length:    Unbounded
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    UINT32              triggerCount;
    UINT32              triggerID;
    triggerType*        trigger;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// region - Optional
    /// Min Length:    0
    /// Max Length:    1
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    UINT32              regionCount;
    UINT32              regionID;
    dsx10_rgn_dataType* region;

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

    bool GetValue(
        const CHAR* __path,
        CHAR*       __value,
        UINT32      __size);

    bool SetValue(
        const CHAR* __path,
        const CHAR* __value);

    bool GetInfo(
        const CHAR*                 __path,
        PList<ParameterParserInfo>& __info);
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// chromatix_dsx10_coreType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct chromatix_dsx10_coreType
{

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// mod_dsx10_trigger_data - Array
    /// Min Length:    1
    /// Max Length:    Unbounded
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    UINT32       mod_dsx10_trigger_dataCount;
    UINT32       mod_dsx10_trigger_dataID;
    triggerType* mod_dsx10_trigger_data;

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

    bool GetValue(
        const CHAR* __path,
        CHAR*       __value,
        UINT32      __size);

    bool SetValue(
        const CHAR* __path,
        const CHAR* __value);

    bool GetInfo(
        const CHAR*                 __path,
        PList<ParameterParserInfo>& __info);
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// chromatix_dsx10Type
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct chromatix_dsx10Type
{
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// 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);

        bool GetValue(
            const CHAR* __path,
            CHAR*       __value,
            UINT32      __size);

        bool SetValue(
            const CHAR* __path,
            const CHAR* __value);

        bool GetInfo(
            const CHAR*                 __path,
            PList<ParameterParserInfo>& __info);
    };
    struct module_versionStruct module_version;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// parameter_version
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct parameter_versionStruct
    {
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// Binary file symbol table entry ID
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        UINT32 SymbolTableID;
        CHAR*  revision;

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

        bool GetValue(
            const CHAR* __path,
            CHAR*       __value,
            UINT32      __size);

        bool SetValue(
            const CHAR* __path,
            const CHAR* __value);

        bool GetInfo(
            const CHAR*                 __path,
            PList<ParameterParserInfo>& __info);
    };
    struct parameter_versionStruct parameter_version;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// control_variables
    ///
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct control_variablesStruct
    {
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// Binary file symbol table entry ID
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        UINT32 SymbolTableID;

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// control_var_type - Array
        /// Default Value: trigger_type_sr_scale_ratio
        /// Min Length:    1
        /// Max Length:    Unbounded
        /// Comments:      Interpolation lookup trigger types. Value: 0 - 99
        ///                Triggers with no interpolation. Value: 75 - 99
        ///                it should always be first trigger
        ///                Discrete lookup trigger types. Value: 100 - 199
        ///                Nearest neighbor lookup trigger types. Value: 200 - 299
        ///                Custom lookup trigger types Values: 1000 - 1100
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        UINT32         control_var_typeCount;
        UINT32         control_var_typeID;
        ispglobalelements::trigger_types* control_var_type;

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

        bool GetValue(
            const CHAR* __path,
            CHAR*       __value,
            UINT32      __size);

        bool SetValue(
            const CHAR* __path,
            const CHAR* __value);

        bool GetInfo(
            const CHAR*                 __path,
            PList<ParameterParserInfo>& __info);
    };
    struct control_variablesStruct control_variables;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// private_information
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct private_informationStruct
    {
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// Binary file symbol table entry ID
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        UINT32 SymbolTableID;

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// led_sensitivity_trigger
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ispglobalelements::trigger_pt_type led_sensitivity_trigger;

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

        bool GetValue(
            const CHAR* __path,
            CHAR*       __value,
            UINT32      __size);

        bool SetValue(
            const CHAR* __path,
            const CHAR* __value);

        bool GetInfo(
            const CHAR*                 __path,
            PList<ParameterParserInfo>& __info);
    };
    struct private_informationStruct private_information;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// chromatix_dsx10_reserve
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    chromatix_dsx10_reserveType chromatix_dsx10_reserve;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// chromatix_dsx10_core
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    chromatix_dsx10_coreType    chromatix_dsx10_core;

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

    bool GetValue(
        const CHAR* __path,
        CHAR*       __value,
        UINT32      __size);

    bool SetValue(
        const CHAR* __path,
        const CHAR* __value);

    bool GetInfo(
        const CHAR*                 __path,
        PList<ParameterParserInfo>& __info);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// 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();
};

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

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

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

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Destructor
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    virtual ~chromatix_dsx10TypeClass();

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


    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Update the trigger type values
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static void UpdateTriggerType(
        control_variablesStruct* const control,
        triggerType* trigger,
        UINT32 const depth);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// 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();

    virtual bool GetValue(
        const CHAR* const __path,
        CHAR* const       __value,
        UINT32 const      __size)
    {
        return chromatix_dsx10Type::GetValue(__path, __value, __size);
    }

    virtual bool SetValue(
        const CHAR* const __path,
        const CHAR* const __value)
    {
        if (chromatix_dsx10Type::SetValue(__path, __value))
        {
            // Change SymbolTableID so the code can detect that the module was modified.
            // Increment by 0x01000000, so the original value is preserved for diagnostics (mask with 0x00FFFFFF)
            if (SymbolTableID >= 0xff000000)
            {
                SymbolTableID = SymbolTableID & 0x00ffffff;
            }
            SymbolTableID += 0x01000000;

            // Increment Modified counter (replaces SymbolTableID to detect modified data)
            Modified++;
            return true;
        }
        else
        {
            return false;
        }
    }

    virtual bool GetInfo(
        const CHAR* const           __path,
        PList<ParameterParserInfo>& __info)
    {
        return chromatix_dsx10Type::GetInfo(__path, __info);
    }

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

DSX_1_0_1_NAMESPACE_END
#endif // DSX_1_0_1_H

