/*==================================================================================================
*   Project              : RTD AUTOSAR 4.4
*   Platform             : CORTEXM
*   Peripheral           : ADC_SAR
*   Dependencies         : none
*
*   Autosar Version      : 4.4.0
*   Autosar Revision     : ASR_REL_4_4_REV_0000
*   Autosar Conf.Variant :
*   SW Version           : 0.9.0
*   Build Version        : S32K3_RTD_0_9_0__ASR_REL_4_4_REV_0000_20210326
*
*   (c) Copyright 2020 - 2021 NXP Semiconductors
*   All Rights Reserved.
*
*   NXP Confidential. This software is owned or controlled by NXP and may only be
*   used strictly in accordance with the applicable license terms. By expressly
*   accepting such terms or by downloading, installing, activating and/or otherwise
*   using the software, you are agreeing that you have read, and that you agree to
*   comply with and are bound by, such license terms. If you do not agree to be
*   bound by the applicable license terms, then you may not retain, install,
*   activate or otherwise use the software.
==================================================================================================*/

#ifndef ADC_SAR_IP_TYPES_H
#define ADC_SAR_IP_TYPES_H

/**
*   @file
*
*   @addtogroup adc_sar_ip Adc Sar IPL
*   @{
*/

#include "StandardTypes.h"
#include "Adc_Sar_Ip_CfgDefines.h"
#include "Adc_Sar_Ip_DeviceRegisters.h"

/*==================================================================================================
*                                SOURCE FILE VERSION INFORMATION
==================================================================================================*/
#define ADC_SAR_IP_VENDOR_ID_TYPES_H                      43
#define ADC_SAR_IP_AR_RELEASE_MAJOR_VERSION_TYPES_H       4
#define ADC_SAR_IP_AR_RELEASE_MINOR_VERSION_TYPES_H       4
#define ADC_SAR_IP_AR_RELEASE_REVISION_VERSION_TYPES_H    0
#define ADC_SAR_IP_SW_MAJOR_VERSION_TYPES_H               0
#define ADC_SAR_IP_SW_MINOR_VERSION_TYPES_H               9
#define ADC_SAR_IP_SW_PATCH_VERSION_TYPES_H               0
/*==================================================================================================
*                                      FILE VERSION CHECKS
==================================================================================================*/
/* Check if Adc_Sar_Ip_Types.h file and Adc_Sar_Ip_DeviceRegisters.h file are of the same vendor */
#if (ADC_SAR_IP_VENDOR_ID_TYPES_H != ADC_SAR_IP_VENDOR_ID_DEVICEREGISTERS_H)
    #error "Adc_Sar_Ip_Types.h and Adc_Sar_Ip_DeviceRegisters.h have different vendor ids"
#endif

/* Check if Adc_Sar_Ip_Types.h file and Adc_Sar_Ip_DeviceRegisters.h file are of the same Autosar version */
#if ((ADC_SAR_IP_AR_RELEASE_MAJOR_VERSION_TYPES_H != ADC_SAR_IP_AR_RELEASE_MAJOR_VERSION_DEVICEREGISTERS_H) || \
     (ADC_SAR_IP_AR_RELEASE_MINOR_VERSION_TYPES_H != ADC_SAR_IP_AR_RELEASE_MINOR_VERSION_DEVICEREGISTERS_H) || \
     (ADC_SAR_IP_AR_RELEASE_REVISION_VERSION_TYPES_H != ADC_SAR_IP_AR_RELEASE_REVISION_VERSION_DEVICEREGISTERS_H) \
    )
    #error "AutoSar Version Numbers of Adc_Sar_Ip_Types.h and Adc_Sar_Ip_DeviceRegisters.h are different"
#endif

/* Check if Adc_Sar_Ip_Types.h file and Adc_Sar_Ip_DeviceRegisters.h file are of the same Software version */
#if ((ADC_SAR_IP_SW_MAJOR_VERSION_TYPES_H != ADC_SAR_IP_SW_MAJOR_VERSION_DEVICEREGISTERS_H) || \
     (ADC_SAR_IP_SW_MINOR_VERSION_TYPES_H != ADC_SAR_IP_SW_MINOR_VERSION_DEVICEREGISTERS_H) || \
     (ADC_SAR_IP_SW_PATCH_VERSION_TYPES_H != ADC_SAR_IP_SW_PATCH_VERSION_DEVICEREGISTERS_H) \
    )
  #error "Software Version Numbers of Adc_Sar_Ip_Types.h and Adc_Sar_Ip_DeviceRegisters.h are different"
#endif

/* Check if Adc_Sar_Ip_Types.h file and Adc_Sar_Ip_CfgDefines.h file are of the same vendor */
#if (ADC_SAR_IP_VENDOR_ID_TYPES_H != ADC_SAR_IP_VENDOR_ID_CFGDEFINES_H)
    #error "Adc_Sar_Ip_Types.h and Adc_Sar_Ip_CfgDefines.h have different vendor ids"
#endif

/* Check if Adc_Sar_Ip_Types.h file and Adc_Sar_Ip_CfgDefines.h file are of the same Autosar version */
#if ((ADC_SAR_IP_AR_RELEASE_MAJOR_VERSION_TYPES_H != ADC_SAR_IP_AR_RELEASE_MAJOR_VERSION_CFGDEFINES_H) || \
     (ADC_SAR_IP_AR_RELEASE_MINOR_VERSION_TYPES_H != ADC_SAR_IP_AR_RELEASE_MINOR_VERSION_CFGDEFINES_H) || \
     (ADC_SAR_IP_AR_RELEASE_REVISION_VERSION_TYPES_H != ADC_SAR_IP_AR_RELEASE_REVISION_VERSION_CFGDEFINES_H) \
    )
    #error "AutoSar Version Numbers of Adc_Sar_Ip_Types.h and Adc_Sar_Ip_CfgDefines.h are different"
#endif

/* Check if Adc_Sar_Ip_Types.h file and Adc_Sar_Ip_CfgDefines.h file are of the same Software version */
#if ((ADC_SAR_IP_SW_MAJOR_VERSION_TYPES_H != ADC_SAR_IP_SW_MAJOR_VERSION_CFGDEFINES_H) || \
     (ADC_SAR_IP_SW_MINOR_VERSION_TYPES_H != ADC_SAR_IP_SW_MINOR_VERSION_CFGDEFINES_H) || \
     (ADC_SAR_IP_SW_PATCH_VERSION_TYPES_H != ADC_SAR_IP_SW_PATCH_VERSION_CFGDEFINES_H) \
    )
  #error "Software Version Numbers of Adc_Sar_Ip_Types.h and Adc_Sar_Ip_CfgDefines.h are different"
#endif

#ifndef DISABLE_MCAL_INTERMODULE_ASR_CHECK
/* Check if Adc_Sar_Ip_Types.h file and StandardTypes.h file are of the same Autosar version */
#if ((ADC_SAR_IP_AR_RELEASE_MAJOR_VERSION_TYPES_H != STD_AR_RELEASE_MAJOR_VERSION) || \
     (ADC_SAR_IP_AR_RELEASE_MINOR_VERSION_TYPES_H != STD_AR_RELEASE_MINOR_VERSION)    \
    )
    #error "AutoSar Version Numbers of Adc_Sar_Ip_Types.h and StandardTypes.h are different"
#endif
#endif /* DISABLE_MCAL_INTERMODULE_ASR_CHECK */
/*==================================================================================================
*                              STRUCTURES AND OTHER TYPEDEFS
==================================================================================================*/

/*!
 * @brief ADC_SAR status return type
 *
 * This enum is used as return type
 *
 * Implements : Adc_Sar_Ip_StatusType_Class
 */
typedef enum
{
    ADC_SAR_IP_STATUS_SUCCESS = 0x00U,  /*!< Function completed successfully */
    ADC_SAR_IP_STATUS_ERROR = 0x01U,    /*!< Function didn't complete successfully */
    ADC_SAR_IP_STATUS_TIMEOUT = 0x02U   /*!< Function timed out */
} Adc_Sar_Ip_StatusType;

/*!
 * @brief Conversion mode selection (One-shot or Scan)
 *
 * This enum is used to configure the conversion mode
 *
 * Implements : Adc_Sar_Ip_ConvModeType_Class
 */
typedef enum
{
    ADC_SAR_IP_CONV_MODE_ONESHOT = 0x00U,  /*!< One-shot conversion mode */
    ADC_SAR_IP_CONV_MODE_SCAN = 0x01U      /*!< Scan conversion mode */
} Adc_Sar_Ip_ConvModeType;

/*!
 * @brief Converter input clock
 *
 * This enum is used to configure the converter input clock
 *
 * Implements : Adc_Sar_Ip_ClockSelType_Class
 */
typedef enum
{
    ADC_SAR_IP_CLK_FULL_BUS = 0x00U,       /*!< Adc module clock   */
    ADC_SAR_IP_CLK_HALF_BUS = 0x01U,       /*!< Adc module clock/2 */
#if FEATURE_ADC_HAS_CLKSEL_EXTENDED
    ADC_SAR_IP_CLK_QUARTER_BUS = 0x02U,    /*!< Adc module clock/4 */
#endif /* FEATURE_ADC_HAS_CLKSEL_EXTENDED */
} Adc_Sar_Ip_ClockSelType;

#if FEATURE_ADC_HAS_CTU
/*!
 * @brief CTU Mode selection
 *
 * This enum is used to configure the mode in which CTU is used
 *
 * Implements : Adc_Sar_Ip_CtuModeType_Class
 */
typedef enum
{
    ADC_SAR_IP_CTU_MODE_DISABLED = 0x00U,  /*!< CTU Mode disabled */
    ADC_SAR_IP_CTU_MODE_CONTROL = 0x01U,    /*!< CTU is in Control Mode */
    ADC_SAR_IP_CTU_MODE_TRIGGER = 0x02U    /*!< CTU is in Trigger Mode */
} Adc_Sar_Ip_CtuModeType;
#endif /* FEATURE_ADC_HAS_CTU */

#if (FEATURE_ADC_HAS_INJ_EXT_TRIGGER || FEATURE_ADC_HAS_EXT_TRIGGER)
/*!
 * @brief External Trigger selection
 *
 * This enum is used to configure the external trigger
 *
 * Implements : Adc_Sar_Ip_ExtTriggerEdgeType_Class
 */
typedef enum
{
    ADC_SAR_IP_EXT_TRIG_EDGE_DISABLED = 0x00U, /*!< Injected trigger disabled */
    ADC_SAR_IP_EXT_TRIG_EDGE_FALLING = 0x01U,  /*!< Injected trigger on Falling Edge */
    ADC_SAR_IP_EXT_TRIG_EDGE_RISING = 0x02U,   /*!< Injected trigger on Rising Edge */
} Adc_Sar_Ip_ExtTriggerEdgeType;

/*!
 * @brief External Trigger Source Enable
 *
 * This enum is used to enable the external trigger source to start the conversion.
 *
 * Implements : Adc_Sar_Ip_ExtTriggerSourceType_Class
 */
typedef enum {
#if (FEATURE_ADC_HAS_EXT_TRIGGER)
    ADC_SAR_IP_NORMAL_EXT_TRIG     = 0x00U,       /*!< Enables normal trigger input */
    ADC_SAR_IP_AUX_NORMAL_EXT_TRIG = 0x01U,       /*!< Enables auxiliary normal trigger input */
    ADC_SAR_IP_ALL_NORMAL_EXT_TRIG = 0x02U,       /*!< Enables normal and auxiliary trigger inputs */
#endif /* (FEATURE_ADC_HAS_EXT_TRIGGER) */
#if (FEATURE_ADC_HAS_INJ_EXT_TRIGGER)
    ADC_SAR_IP_INJECTED_EXT_TRIG   = 0x03U,       /*!< Enables injection trigger input */
#endif /* (FEATURE_ADC_HAS_INJ_EXT_TRIGGER) */
} Adc_Sar_Ip_ExtTriggerSourceType;
#endif /* (FEATURE_ADC_HAS_INJ_EXT_TRIGGER || FEATURE_ADC_HAS_EXT_TRIGGER) */

/*!
 * @brief Conversion chain selection
 *
 * This enum is used to configure type of the conversion
 *
 * Implements : Adc_Sar_Ip_ConvChainType_Class
 */
typedef enum
{
    ADC_SAR_IP_CONV_CHAIN_NORMAL = 0x00U,      /*!< Selects the "Normal" Conversion Chain */
    ADC_SAR_IP_CONV_CHAIN_INJECTED = 0x01U,    /*!< Selects the "Injected" Conversion Chain */
    ADC_SAR_IP_CONV_CHAIN_CTU = 0x02U          /*!< Selects the "CTU" Conversion Chain */
} Adc_Sar_Ip_ConvChainType;

/*!
 * @brief Data alignment selection
 *
 * This enum is used to configure data alignment
 *
 * Implements : Adc_Sar_Ip_DataAlignedType_Class
 */
typedef enum
{
    ADC_SAR_IP_DATA_ALIGNED_RIGHT = 0x00U,     /*!< Measured data is right-aligned */
    ADC_SAR_IP_DATA_ALIGNED_LEFT = 0x01U       /*!< Measured data is left-aligned */
} Adc_Sar_Ip_DataAlignedType;

/*!
 * @brief Clear DMA source
 *
 * This enum is used to configure source used to clear a DMA request
 *
 * Implements : Adc_Sar_Ip_ClearSourceType_Class
 */
typedef enum {
    ADC_SAR_IP_DMA_REQ_CLEAR_ON_ACK = 0x00U,    /*!< Clear DMA Request on Ack from DMA Controller */
    ADC_SAR_IP_DMA_REQ_CLEAR_ON_READ = 0x01U,   /*!< Clear DMA Request on read of Data Registers */
} Adc_Sar_Ip_ClearSourceType;

/*!
 * @brief Presampling Voltage selection
 *
 * This enum is used to configure the presampling voltage
 *
 * Implements : Adc_Sar_Ip_PresamplingSourceType_Class
 */
typedef enum {
#if (ADC_PSCR_PREVAL0_WIDTH > 1u)
    ADC_SAR_IP_PRESAMPLE_DVDD = ADC_PRESAMPLE_DVDD,   /*!< Presampling from DVDD */
    ADC_SAR_IP_PRESAMPLE_AVDD = ADC_PRESAMPLE_AVDD,    /*!< Presampling from AVDD */
#endif /* (ADC_PSCR_PREVAL0_WIDTH > 1u) */
    ADC_SAR_IP_PRESAMPLE_VREFL = ADC_PRESAMPLE_VREFL, /*!< Presampling from VREFL */
    ADC_SAR_IP_PRESAMPLE_VREFH = ADC_PRESAMPLE_VREFH  /*!< Presampling from VREFH */
} Adc_Sar_Ip_PresamplingSourceType;

/*!
 * @brief Channel group selection
 *
 * This enum is used to select the group of ADC channels
 *
 * Implements : Adc_Sar_Ip_ChanGroupType_Class
 */
typedef enum {
    ADC_SAR_IP_CHAN_GROUP_0 = 0x00U,           /*!< Channels Group (0-31) */
    ADC_SAR_IP_CHAN_GROUP_1 = 0x01U,           /*!< Channels Group (32-63) */
#if (ADC_SAR_NUM_GROUP_CHAN > 2u)
    ADC_SAR_IP_CHAN_GROUP_2 = 0x02U,           /*!< Channels Group (64-95) */
#endif /* (ADC_SAR_NUM_GROUP_CHAN > 2u) */
} Adc_Sar_Ip_ChanGroupType;

#if FEATURE_ADC_HAS_AVERAGING
/*!
 * @brief Averaging selection
 *
 * This enum is used to select the number of conversions to average
 * in order to get the conversion data.
 *
 * Implements : Adc_Sar_Ip_AvgSelectType_Class
 */
typedef enum {
    ADC_SAR_IP_AVG_4_CONV = 0x00U,        /*!< 4 conversions per conversion data */
    ADC_SAR_IP_AVG_8_CONV = 0x01U,        /*!< 8 conversions per conversion data */
    ADC_SAR_IP_AVG_16_CONV = 0x02U,       /*!< 16 conversions per conversion data */
    ADC_SAR_IP_AVG_32_CONV = 0x03U,       /*!< 32 conversions per conversion data */
} Adc_Sar_Ip_AvgSelectType;
#endif /* FEATURE_ADC_HAS_AVERAGING */

#if (ADC_SAR_IP_SET_RESOLUTION == STD_ON)
/**
* @brief          Adc group conversion resolution.
* @details        Used for value received by Tressos interface configuration.
*
*/
typedef enum
{
    RESOLUTION_14   = 0U, /**< @brief 14-bit per conversion data */
    RESOLUTION_12   = 1U, /**< @brief 12-bit per conversion data */
    RESOLUTION_10   = 2U, /**< @brief 10-bit per conversion data */
    RESOLUTION_8    = 3U, /**< @brief 8-bit per conversion data */
} Adc_Sar_Ip_Resolution;
#endif /* (ADC_SAR_IP_SET_RESOLUTION == STD_ON) */

/*!
 * @brief Defines the channel notification header
 *
 * This header is used in individual channel notification callbacks
 *
 * Implements : Adc_Sar_Ip_ChanNotificationType_Class
 */
typedef void Adc_Sar_Ip_ChanNotificationType(uint16 u16ChanIdx);

/*!
 * @brief Defines the channel configuration
 *
 * This structure is used to configure channels
 *
 * Implements : Adc_Sar_Ip_ChanConfigType_Class
 */
typedef struct
{
	uint8 u8ChannelIndex;
    boolean bPresamplingEnable;
	uint8 u8WdgThreshRegIndex;
    boolean bEndOfConvNotification;
    boolean bWdgNotification;
} Adc_Sar_Ip_ChanConfigType;

/*!
 * @brief Defines the ADC clock configuration
 *
 * This structure is used to the ADC_SAR clock
 *
 * Implements : Adc_Sar_Ip_ClockConfigType_Class
 */
typedef struct
{
	Adc_Sar_Ip_ClockSelType eClkSelect;         /*!< Selected clock */
    uint8 aSampleTime[ADC_SAR_NUM_GROUP_CHAN];  /*!< Sample time for each channel group */
	uint8 u8PowerDownDelay;                     /*!< Delay before entering Power Down */
#if FEATURE_ADC_HAS_AVERAGING
    boolean bAvgEn;
    Adc_Sar_Ip_AvgSelectType eAvgSel;
#endif /* FEATURE_ADC_HAS_AVERAGING */
} Adc_Sar_Ip_ClockConfigType;

/*!
 * @brief Defines the upper and lower thresholds for analog watchdog.
 *
 * This structure is used to configure the analog watchdog threshold registers.
 *
 * Implements : Adc_Sar_Ip_WdgThresholdType_Class
 */
typedef struct
{
    uint8 u8WdgIndex;               /*!< Watchdog threshold  register index */
	uint16 u16LowThreshold;         /*!< Lower threshold */
	uint16 u16HighThreshold;        /*!< Upper threshold */
	boolean bLowThresholdIntEn;     /*!< Enable interrupt when lower threshold exceeded */
	boolean bHighThresholdIntEn;    /*!< Enable interrupt when upper threshold exceeded */
} Adc_Sar_Ip_WdgThresholdType;

/*!
 * @brief Defines the data regarding a conversion, beyond the conversion data.
 *
 * This structure is used to return information about conversions beyond just conversion data
 *
 * Implements : Adc_Sar_Ip_ChanResultType_Class
 */
typedef struct {
    uint8 u8ChnIdx;       /*!< ADC Channel Index */
    boolean bValid;       /*!< Data Valid Flag */
    boolean bOverWritten; /*!< Data Overwritten Flag */
    uint16 u16ConvData;   /*!< Conversion Data */
} Adc_Sar_Ip_ChanResultType;

/*!
 * @brief Defines configuration of channels in a chain
 *
 * This structure is used to configure channels in chain.
 *
 * Implements : Adc_Sar_Ip_ChansIdxMaskType_Class
 */
typedef struct
{
	uint32 aChanMask[ADC_SAR_NUM_GROUP_CHAN];  /*!< Bit-mask used to configure channels in chain */
} Adc_Sar_Ip_ChansIdxMaskType;

/*!
 * @brief Defines the module configuration
 *
 * This structure is used to configure the ADC_SAR module
 *
 * Implements : Adc_Sar_Ip_ConfigType_Class
 */
typedef struct
{
    Adc_Sar_Ip_ConvModeType eConvMode;  /*!< Conversion Mode (One-shot or Scan) */
#if (ADC_SAR_IP_SET_RESOLUTION == STD_ON)
    Adc_Sar_Ip_Resolution eAdcResolution; /*!< Adc resolution */
#endif /* (ADC_SAR_IP_SET_RESOLUTION == STD_ON) */
    Adc_Sar_Ip_ClockSelType eClkSelect; /*!< Clock input */
    Adc_Sar_Ip_ClockSelType eCalibrationClkSelect; /*!< Clock input for calibration */
#if FEATURE_ADC_HAS_CTU
    Adc_Sar_Ip_CtuModeType eCtuMode;     /*!< CTU mode */
#endif /* FEATURE_ADC_HAS_CTU */
#if FEATURE_ADC_HAS_INJ_EXT_TRIGGER
    Adc_Sar_Ip_ExtTriggerEdgeType eInjectedEdge;   /*!< Injected Trigger selection */
#endif /* FEATURE_ADC_HAS_INJ_EXT_TRIGGER */
#if FEATURE_ADC_HAS_EXT_TRIGGER
    Adc_Sar_Ip_ExtTriggerEdgeType eExtTrigger;     /*!< External Trigger selection */
    boolean bNormalExtTrgEn;                       /*!< Enables normal trigger source */
    boolean bNormalAuxExtTrgEn;                    /*!< Enables auxiliary normal trigger source */
#endif /* FEATURE_ADC_HAS_EXT_TRIGGER */
    uint8 aSampleTime[ADC_SAR_NUM_GROUP_CHAN]; /*!< Sample time for each channel group */
    boolean bBypassSampling;  /* PSCR[PRECONV] */
    Adc_Sar_Ip_PresamplingSourceType aPresamplingSource[ADC_SAR_NUM_GROUP_CHAN]; /*!< Presampling sources for each channel group */
    boolean bAutoClockOff; /*!< Enable Auto Clock Off */
    boolean bOverwriteEnable; /*!< Overwrite new conversion data over old data */
    Adc_Sar_Ip_DataAlignedType eDataAlign; /*!< Data alignment in conversion result register */
#if FEATURE_ADC_SAR_DECODE_DELAY
    uint16 u16DecodeDelay; /*!< Delay for decoding Input MUX channels */
#endif /* FEATURE_ADC_SAR_DECODE_DELAY */
    uint8 u8PowerDownDelay; /*!< Delay before entering Power Down */
#if FEATURE_ADC_HAS_AVERAGING
    boolean bAvgEn;
    Adc_Sar_Ip_AvgSelectType eAvgSel;
#endif /* FEATURE_ADC_HAS_AVERAGING */
    uint8 u8UsrOffset;
    uint16 u16UsrGain;
    Adc_Sar_Ip_ClearSourceType eDmaClearSource;

	uint32 pChanMaskNormal[ADC_SAR_NUM_GROUP_CHAN];     /*!< Bit-mask used to configure Normal Chain */
	uint32 pChanMaskInjected[ADC_SAR_NUM_GROUP_CHAN];   /*!< Bit-mask used to configure Injected Chain */

    uint8 u8NumChannels;
    const Adc_Sar_Ip_ChanConfigType * pChannelConfigs;

	uint8 u8NumWdgThresholds;
	const Adc_Sar_Ip_WdgThresholdType * pWdgThresholds;

    void (*pfEndOfNormalChainNotification)(void);
    void (*pfEndOfInjectedChainNotification)(void);
#if FEATURE_ADC_HAS_CTU
    void (*pfEndOfCtuConversionNotification)(void);
#endif /* FEATURE_ADC_HAS_CTU */

    /* Individual channel notifications */
	Adc_Sar_Ip_ChanNotificationType * pfEndOfConvNotification;
	Adc_Sar_Ip_ChanNotificationType * pfWdgOutOfRangeNotification;
} Adc_Sar_Ip_ConfigType;

/*!
 * @brief Structure used to store runtime info
 *
 * This structure is used to store ADC SAR runtime info
 *
 * Implements : Adc_Sar_Ip_StateStructType_Class
 */
typedef struct
{
    boolean bInit;                                  /*!< Check if the driver was initialized. */
    Adc_Sar_Ip_DataAlignedType eDataAlign;          /*!< Data alignment in conversion result register */
    Adc_Sar_Ip_ClockSelType eCalibrationClkSelect;  /*!< Clock input for calibration */

    /* General notifications */
    void (*pfEndOfNormalChainNotification)(void);
    void (*pfEndOfInjectedChainNotification)(void);
#if FEATURE_ADC_HAS_CTU
    void (*pfEndOfCtuConversionNotification)(void);
#endif /* FEATURE_ADC_HAS_CTU */

    /* Individual channel notifications */
	Adc_Sar_Ip_ChanNotificationType * pfEndOfConvNotification;
	Adc_Sar_Ip_ChanNotificationType * pfWdgOutOfRangeNotification;
} Adc_Sar_Ip_StateStructType;

/** @} */

#endif /* ADC_SAR_IP_TYPES_H */
