/*
 * InterfaceHeader.h
 *
 *  Created on: Mar 29, 2025
 *      Author: tummalanr
 */

#ifndef USER_ADDONS_INTERFACEHEADER_H_
#define USER_ADDONS_INTERFACEHEADER_H_

/*!
 *  \brief Elementary Data Type Reporting
 *  \ingroup EI_API_CIP_ENUMERATIONS
 */
typedef enum EI_API_CIP_EEdt
{
    EI_API_CIP_eEDT_NO =                                      0,             /*!< No elementary data type. */
    EI_API_CIP_eEDT_BOOL =                                    1,             /*!< Logical Boolean with values TRUE and FALSE. */
    EI_API_CIP_eEDT_SINT =                                    2,             /*!< Signed 8-bit integer value. */
    EI_API_CIP_eEDT_INT =                                     3,             /*!< Signed 16-bit integer value. */
    EI_API_CIP_eEDT_DINT =                                    4,             /*!< Signed 32-bit integer value. */
    EI_API_CIP_eEDT_LINT =                                    5,             /*!< Signed 64-bit integer value. */
    EI_API_CIP_eEDT_USINT =                                   6,             /*!< Unsigned 8-bit integer value. */
    EI_API_CIP_eEDT_UINT =                                    7,             /*!< Unsigned 16-bit integer value. */
    EI_API_CIP_eEDT_UDINT =                                   8,             /*!< Unsigned 32-bit integer value. */
    EI_API_CIP_eEDT_ULINT =                                   9,             /*!< Unsigned 64-bit integer value. */
    EI_API_CIP_eEDT_REAL =                                   10,             /*!< 32-bit floating point value. */
    EI_API_CIP_eEDT_LREAL =                                  11,             /*!< 64-bit floating point value. */
    EI_API_CIP_eEDT_STIME =                                  12,             /*!< System time information. */
    EI_API_CIP_eEDT_DATE =                                   13,             /*!< Date information. */
    EI_API_CIP_eEDT_TIMEOFDAY =                              14,             /*!< Time of day. */
    EI_API_CIP_eEDT_DATEANDTIME =                            15,             /*!< Date and time of day. */
    EI_API_CIP_eEDT_STRING =                                 16,             /*!< Character string (2 byte character count, 1 byte per character). */
    EI_API_CIP_eEDT_BYTE =                                   17,             /*!< bit string 8-bits. */
    EI_API_CIP_eEDT_WORD =                                   18,             /*!< bit string 16-bits. */
    EI_API_CIP_eEDT_DWORD =                                  19,             /*!< bit string 32-bits. */
    EI_API_CIP_eEDT_LWORD =                                  20,             /*!< bit string 64-bits. */
    EI_API_CIP_eEDT_STRING2 =                                21,             /*!< Character string (2 byte character count, 2 bytes per character). */
    EI_API_CIP_eEDT_FTIME =                                  22,             /*!< Duration (high resolution). */
    EI_API_CIP_eEDT_LTIME =                                  23,             /*!< Duration (long). */
    EI_API_CIP_eEDT_ITIME =                                  24,             /*!< Duration (short). */
    EI_API_CIP_eEDT_STRINGN =                                25,             /*!< Character string (2 byte character size (N), 2 byte character count, N bytes per character). */
    EI_API_CIP_eEDT_SHORTSTRING =                            26,             /*!< Character sting (1 byte character count, 1 byte per character). */
    EI_API_CIP_eEDT_TIME =                                   27,             /*!< Duration (milliseconds). */
    EI_API_CIP_eEDT_EPATH =                                  28,             /*!< CIP path segments. */
    EI_API_CIP_eEDT_ENGUNIT =                                29,             /*!< Engineering Units. */
    EI_API_CIP_eEDT_STRINGI =                                30,             /*!< International Character String. */
/// @cond INTERNAL
    EI_API_CIP_eEDT_FORCE32BIT =                             0xffffffff      /*!< Force enum to 32 bit. */
/// @endcond
} EI_API_CIP_EEdt_t;


/*!
 *  \brief These are the available attribute access rules.
 *  \ingroup EI_API_CIP_ENUMERATIONS
 */
typedef enum EI_API_CIP_EAr
{
    EI_API_CIP_eAR_SET           = 0x01,             //!< Attribute is settable
    EI_API_CIP_eAR_GET           = 0x02,             //!< Attribute is gettable
    EI_API_CIP_eAR_GET_AND_SET   = 0x03,             //!< Attribute is get- and settable
/// @cond INTERNAL
    EI_API_CIP_eAR_FORCE32BIT    = 0xffffffff        //!< Force enum to 32 bit
/// @endcond
} EI_API_CIP_EAr_t;




typedef enum OSAL_TASK_Priority
{
    OSAL_TASK_Prio_0 = 0, /* Lowest Priority = idle */
    OSAL_TASK_Prio_1,
    OSAL_TASK_Prio_2,
    OSAL_TASK_Prio_3,
    OSAL_TASK_Prio_4,
    OSAL_TASK_Prio_5,
    OSAL_TASK_Prio_6,
    OSAL_TASK_Prio_7,
    OSAL_TASK_Prio_8,
    OSAL_TASK_Prio_9,
    OSAL_TASK_Prio_10,
    OSAL_TASK_Prio_11,
    OSAL_TASK_Prio_12,
    OSAL_TASK_Prio_13,
    OSAL_TASK_Prio_14,
    OSAL_TASK_Prio_15,
    OSAL_TASK_Prio_16,
    OSAL_TASK_Prio_17,
    OSAL_TASK_Prio_18,
    OSAL_TASK_Prio_19,
    OSAL_TASK_Prio_20,
    OSAL_TASK_Prio_21,
    OSAL_TASK_Prio_22,
    OSAL_TASK_Prio_23,
    OSAL_TASK_Prio_24,
    OSAL_TASK_Prio_25,
    OSAL_TASK_Prio_26,
    OSAL_TASK_Prio_27,
    OSAL_TASK_Prio_28,
    OSAL_TASK_Prio_29,
    OSAL_TASK_Prio_30,
    OSAL_TASK_Prio_31, /* Highest (RT) priority */

    /// @cond INTERNAL
    OSAL_TASK_Prio_Force32Bit = (0x7fffffffu) /* 32Bit */
    /// @endcond
} OSAL_TASK_Priority_t;



/*!
 *  \brief These are possible error code for callback functions.
 *  \ingroup EI_API_CIP_ENUMERATIONS
 */
typedef enum EI_API_CIP_CB_ERR_CODE
{
    EI_API_eERR_CB_NO_ERROR        = 0x00,
    EI_API_eERR_CB_VAL_TOO_HIGH    = 0x01,
    EI_API_eERR_CB_VAL_TOO_LOW     = 0x02,
    EI_API_eERR_CB_INVALID_VALUE   = 0x03,
    EI_API_eERR_CB_NOT_ENOUGH_DATA = 0x04,
    EI_API_eERR_CB_TOO_MUCH_DATA   = 0x05,
/// @cond INTERNAL
    EI_API_eERR_CB_FORCE32BIT      = 0xffffffff        //!< Force enum to 32 bit
/// @endcond
} EI_API_CIP_CB_ERR_CODE_t;

#endif /* USER_ADDONS_INTERFACEHEADER_H_ */
