/**
*     @version 1.0.0
*
*     @brief   AUTOSAR Mcl - MCL driver header file.
*     @details MCL driver header file, containing the Autosar API specification and other variables
*              and functions that are exported by the MCL driver.
*
*     @addtogroup MCL_MODULE
*     @{
*/
/*==================================================================================================
*     Project             : AUTOSAR 4.3 MCAL
*     Platform            : PA
*     Peripheral          : eDMA
*     Dependencies        : none
*
*     Autosar Version     :  4.3.1
*     Autosar Revision    : ASR_REL_4_3_REV_0001
*     Autosar ConfVariant :
*     SWVersion           : 1.0.0
*     BuildVersion        : MPC5777C_MCAL_1_0_0_RTM_ASR_REL_4_3_REV_0001_20190315
*
*     (c) Copyright 2006-2016 Freescale Semiconductor, Inc. 
*       Copyright 2017-2019 NXP
*     All Rights Reserved.
==================================================================================================*/
/*==================================================================================================
==================================================================================================*/

#ifndef MCL_TYPES_H
#define MCL_TYPES_H

#ifdef __cplusplus
extern "C"
{
#endif
/**
* @page misra_violations MISRA-C:2012 violations
*
* @section Mcl_Types_h_REF_1
* Violates MISRA 2012 Advisory Rule 2.5, A project should not contain unused macro declarations.
* Macros that are used only when user config them.
*/

/*==================================================================================================
*                                          INCLUDE FILES
*  1) system and project includes
*  2) needed interfaces from external units
*  3) internal and external interfaces from this unit
==================================================================================================*/
#include "CDD_Mcl_Cfg.h"
#include "Mcl_IPW_Types.h"

/*==================================================================================================
*                                SOURCE FILE VERSION INFORMATION
==================================================================================================*/
#define MCL_TYPES_VENDOR_ID                       43
#define MCL_TYPES_AR_RELEASE_MAJOR_VERSION        4
#define MCL_TYPES_AR_RELEASE_MINOR_VERSION        3
#define MCL_TYPES_AR_RELEASE_REVISION_VERSION     1
#define MCL_TYPES_SW_MAJOR_VERSION                1
#define MCL_TYPES_SW_MINOR_VERSION                0
#define MCL_TYPES_SW_PATCH_VERSION                0

/*==================================================================================================
*                                       FILE VERSION CHECKS
==================================================================================================*/
 /* Check if header file and MCL configuration header file are of the same vendor */
#if (MCL_TYPES_VENDOR_ID != MCL_VENDOR_ID_CFG)
    #error "Mcl_Types.h and CDD_Mcl_Cfg.h have different vendor IDs"
#endif
    /* Check if header file and MCL configuration header file are of the same Autosar version */
#if ((MCL_TYPES_AR_RELEASE_MAJOR_VERSION != MCL_AR_RELEASE_MAJOR_VERSION_CFG) || \
     (MCL_TYPES_AR_RELEASE_MINOR_VERSION != MCL_AR_RELEASE_MINOR_VERSION_CFG) || \
     (MCL_TYPES_AR_RELEASE_REVISION_VERSION != MCL_AR_RELEASE_REVISION_VERSION_CFG))
#error "AutoSar Version Numbers of Mcl_Types.h and CDD_Mcl_Cfg.h are different"
#endif
/* Check if header file and MCL configuration header file are of the same software version */
#if ((MCL_TYPES_SW_MAJOR_VERSION != MCL_SW_MAJOR_VERSION_CFG) || \
     (MCL_TYPES_SW_MINOR_VERSION != MCL_SW_MINOR_VERSION_CFG) || \
     (MCL_TYPES_SW_PATCH_VERSION != MCL_SW_PATCH_VERSION_CFG))
#error "Software Version Numbers of Mcl_Types.h and CDD_Mcl_Cfg.hare different"
#endif

/* Check if header file and MCL IPW types header file are of the same vendor */
#if (MCL_TYPES_VENDOR_ID != MCL_IPW_TYPES_VENDOR_ID)
    #error "Mcl_Types.h and Mcl_IPW_Types.h have different vendor IDs"
#endif
    /* Check if header file and MCL configuration header file are of the same Autosar version */
#if ((MCL_TYPES_AR_RELEASE_MAJOR_VERSION != MCL_IPW_TYPES_AR_RELEASE_MAJOR_VERSION) || \
     (MCL_TYPES_AR_RELEASE_MINOR_VERSION != MCL_IPW_TYPES_AR_RELEASE_MINOR_VERSION) || \
     (MCL_TYPES_AR_RELEASE_REVISION_VERSION != MCL_IPW_TYPES_AR_RELEASE_REVISION_VERSION))
#error "AutoSar Version Numbers of Mcl_Types.h and Mcl_IPW_Types.h are different"
#endif
/* Check if header file and MCL configuration header file are of the same software version */
#if ((MCL_TYPES_SW_MAJOR_VERSION != MCL_IPW_TYPES_SW_MAJOR_VERSION) || \
     (MCL_TYPES_SW_MINOR_VERSION != MCL_IPW_TYPES_SW_MINOR_VERSION) || \
     (MCL_TYPES_SW_PATCH_VERSION != MCL_IPW_TYPES_SW_PATCH_VERSION))
#error "Software Version Numbers of Mcl_Types.h and Mcl_IPW_Types.h are different"
#endif
/*==================================================================================================
*                                            CONSTANTS
==================================================================================================*/


/*==================================================================================================
*                                        DEFINES AND MACROS
==================================================================================================*/
#if (MCL_ENABLE_DMA == STD_ON)

/* DMA logical channels */

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_0       (0U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_1       (1U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_2       (2U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_3       (3U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_4       (4U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_5       (5U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_6       (6U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_7       (7U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_8       (8U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_9       (9U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_10      (10U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_11      (11U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_12      (12U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_13      (13U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_14      (14U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_15      (15U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_16      (16U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_17      (17U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_18      (18U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_19      (19U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_20      (20U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_21      (21U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_22      (22U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_23      (23U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_24      (24U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_25      (25U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_26      (26U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_27      (27U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_28      (28U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_29      (29U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_30      (30U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_31      (31U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_32      (32U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_33      (33U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_34      (34U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_35      (35U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_36      (36U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_37      (37U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_38      (38U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_39      (39U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_40      (40U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_41      (41U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_42      (42U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_43      (43U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_44      (44U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_45      (45U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_46      (46U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_47      (47U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_48      (48U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_49      (49U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_50      (50U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_51      (51U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_52      (52U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_53      (53U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_54      (54U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_55      (55U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_56      (56U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_57      (57U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_58      (58U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_59      (59U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_60      (60U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_61      (61U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_62      (62U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_63      (63U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_64      (64U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_65      (65U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_66      (66U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_67      (67U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_68      (68U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_69      (69U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_70      (70U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_71      (71U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_72      (72U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_73      (73U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_74      (74U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_75      (75U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_76      (76U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_77      (77U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_78      (78U)

/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_79      (79U)
/**
* @{
* @brief: reserved for future feature
*/
#define MCL_DMA_LOGICAL_CHANNEL_80      (80U)
#define MCL_DMA_LOGICAL_CHANNEL_81      (81U)
#define MCL_DMA_LOGICAL_CHANNEL_82      (82U)
#define MCL_DMA_LOGICAL_CHANNEL_83      (83U)
#define MCL_DMA_LOGICAL_CHANNEL_84      (84U)
#define MCL_DMA_LOGICAL_CHANNEL_85      (85U)
#define MCL_DMA_LOGICAL_CHANNEL_86      (86U)
#define MCL_DMA_LOGICAL_CHANNEL_87      (87U)
#define MCL_DMA_LOGICAL_CHANNEL_88      (88U)
#define MCL_DMA_LOGICAL_CHANNEL_89      (89U)
#define MCL_DMA_LOGICAL_CHANNEL_90      (90U)
#define MCL_DMA_LOGICAL_CHANNEL_91      (91U)
#define MCL_DMA_LOGICAL_CHANNEL_92      (92U)
#define MCL_DMA_LOGICAL_CHANNEL_93      (93U)
#define MCL_DMA_LOGICAL_CHANNEL_94      (94U)
#define MCL_DMA_LOGICAL_CHANNEL_95      (95U)
#define MCL_DMA_LOGICAL_CHANNEL_96      (96U)
#define MCL_DMA_LOGICAL_CHANNEL_97      (97U)
#define MCL_DMA_LOGICAL_CHANNEL_98      (98U)
#define MCL_DMA_LOGICAL_CHANNEL_99      (99U)
#define MCL_DMA_LOGICAL_CHANNEL_100     (100U)
#define MCL_DMA_LOGICAL_CHANNEL_101     (101U)
#define MCL_DMA_LOGICAL_CHANNEL_102     (102U)
#define MCL_DMA_LOGICAL_CHANNEL_103     (103U)
#define MCL_DMA_LOGICAL_CHANNEL_104     (104U)
#define MCL_DMA_LOGICAL_CHANNEL_105     (105U)
#define MCL_DMA_LOGICAL_CHANNEL_106     (106U)
#define MCL_DMA_LOGICAL_CHANNEL_107     (107U)
#define MCL_DMA_LOGICAL_CHANNEL_108     (108U)
#define MCL_DMA_LOGICAL_CHANNEL_109     (109U)
#define MCL_DMA_LOGICAL_CHANNEL_110     (110U)
#define MCL_DMA_LOGICAL_CHANNEL_111     (111U)
#define MCL_DMA_LOGICAL_CHANNEL_112     (112U)
#define MCL_DMA_LOGICAL_CHANNEL_113     (113U)
#define MCL_DMA_LOGICAL_CHANNEL_114     (114U)
#define MCL_DMA_LOGICAL_CHANNEL_115     (115U)
#define MCL_DMA_LOGICAL_CHANNEL_116     (116U)
#define MCL_DMA_LOGICAL_CHANNEL_117     (117U)
#define MCL_DMA_LOGICAL_CHANNEL_118     (118U)
#define MCL_DMA_LOGICAL_CHANNEL_119     (119U)
#define MCL_DMA_LOGICAL_CHANNEL_120     (120U)
#define MCL_DMA_LOGICAL_CHANNEL_121     (121U)
#define MCL_DMA_LOGICAL_CHANNEL_122     (122U)
#define MCL_DMA_LOGICAL_CHANNEL_123     (123U)
#define MCL_DMA_LOGICAL_CHANNEL_124     (124U)
#define MCL_DMA_LOGICAL_CHANNEL_125     (125U)
#define MCL_DMA_LOGICAL_CHANNEL_126     (126U)
/* @violates @ref Mcl_Types_h_REF_1 MISRA 2012 Advisory 2.5*/
#define MCL_DMA_LOGICAL_CHANNEL_127     (127U)
#endif 



/*==================================================================================================
*                                              ENUMS
==================================================================================================*/

/*==================================================================================================
*                                  STRUCTURES AND OTHER TYPEDEFS
==================================================================================================*/
#if (MCL_ENABLE_DMA == STD_ON)
/**
 * @brief          The notification functions shall have no parameters and no return value.
 * */
typedef void       (*Mcl_NotifyType)(void);
#if (MCL_DMA_ERROR_INTERRUPTS_USED == STD_ON)
/**
 * @brief          The error notification function.
 * */
typedef void       (*Mcl_ErrNotifyType)(VAR(Mcl_DmaChannelErrorStatusType, AUTOMATIC) u8ErrorCode);
#endif
/**
 * @brief          This gives the numeric ID of a Logic channel
 * */
typedef uint8      Mcl_ChannelType;
#endif /*(MCL_ENABLE_DMA == STD_ON)*/
#ifdef MCL_SEMA4_FEATURE_API
#if (STD_ON == MCL_SEMA4_FEATURE_API)
typedef uint8      Mcl_ChannelSema4Type;
#endif
#endif /*MCL_SEMA4_FEATURE_API*/
/*==================================================================================================
*                                  GLOBAL VARIABLE DECLARATIONS
==================================================================================================*/


/*==================================================================================================
*                                      FUNCTION PROTOTYPES
==================================================================================================*/

#ifdef __cplusplus
}
#endif

#endif  /* MCL_TYPES_H */
/** @} */

