/**
*   @file    Lin_ESCI_Irq.c
*   @implements Lin_Esci_Irq.c_Artifact
*   @version 1.0.0
*
*   @brief   AUTOSAR Lin - File used by LIN that contain the ISRs.
*   @details This file contains the ISR functions used to serve the LIN interrupts.
*
*   @addtogroup LIN
*   @{
*/
/*==================================================================================================
*   Project              : AUTOSAR 4.3 MCAL
*   Platform             : PA
*   Peripheral           : ESCI
*   Dependencies         : 
*
*   Autosar Version      : 4.3.1
*   Autosar Revision     : ASR_REL_4_3_REV_0001
*   Autosar Conf.Variant :
*   SW Version           : 1.0.0
*   Build Version        : 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.
==================================================================================================*/
/*==================================================================================================
==================================================================================================*/

#ifdef __cplusplus
extern "C"{
#endif

/**
* @page misra_violations MISRA-C:2012 violations
*
* @section [global]
* Violates MISRA 2012 Required Rule 5.1, External identifiers shall be distinct.
* The used compilers use more than 31 chars for identifiers.
*
* @section [global]
* Violates MISRA 2012 Required Rule 5.2, Identifiers declared in the same scope and name space shall be distinct.
* The used compilers use more than 31 chars for identifiers.
*
* @section [global]
* Violates MISRA 2012 Required Rule 5.4, Macro identifiers shall be distinct.
* The used compilers use more than 31 chars for identifiers.
*
* @section [global]
* Violates MISRA 2012 Required Rule 5.5, Identifiers shall be distinct from macro names.
* The used compilers use more than 31 chars for identifiers.
*
* @section Lin_ESCI_Irq_c_REF_1
* Violates MISRA 2012 Required Directive 4.10, Precautions shall be taken in order to prevent the contents of a header
* file being included more than once.
* This violation is not fixed since the inclusion of <MA>_MemMap.h is as per AUTOSAR requirement [SWS_MemMap_00003].
*
* @section Lin_ESCI_Irq_c_REF_2
* Violates MISRA 2012 Advisory Rule 20.1, #include directives should only be preceded by preprocessor directives or comments.
* <MA>_MemMap.h is included after each section define in order to set the current memory section as defined by AUTOSAR.
*
* @section Lin_ESCI_Irq_c_REF_3
* Violates MISRA 2012 Advisory Rule 8.7, Functions and objects should not be defined with external linkage
* if they are referenced in only one translation unit.
* These functions represent the IPV of the driver. External linkage is needed to "export" the IPV.
*
* @section Lin_ESCI_Irq_c_REF_4
* Violates MISRA 2012 Required Rule 14.4, The controlling expression of an if statement and the controlling expression of
* an iteration-statement shall have essentially Boolean type.
*/

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

/*==================================================================================================
*                              SOURCE FILE VERSION INFORMATION
==================================================================================================*/
#define Lin_ESCI_Irq_VENDOR_ID_C                    43
#define LIN_AR_RELEASE_MAJOR_VERSION_IRQ_C     4
#define LIN_AR_RELEASE_MINOR_VERSION_IRQ_C     3
#define LIN_AR_RELEASE_REVISION_VERSION_IRQ_C  1
#define LIN_SW_MAJOR_VERSION_IRQ_C             1
#define LIN_SW_MINOR_VERSION_IRQ_C             0
#define LIN_SW_PATCH_VERSION_IRQ_C             0

/*==================================================================================================
*                                      FILE VERSION CHECKS
==================================================================================================*/
/* Check if current file and Lin header file are of the same vendor */
#if (Lin_ESCI_Irq_VENDOR_ID_C != LIN_VENDOR_ID)
    #error "Lin_ESCI_Irq.c and Lin.h have different vendor ids"
#endif
/* Check if current file and Lin.h header file are of the same Autosar version */
#if (((LIN_AR_RELEASE_MAJOR_VERSION_IRQ_C   != LIN_AR_RELEASE_MAJOR_VERSION) || \
     (LIN_AR_RELEASE_MINOR_VERSION_IRQ_C    != LIN_AR_RELEASE_MINOR_VERSION)) || \
     (LIN_AR_RELEASE_REVISION_VERSION_IRQ_C != LIN_AR_RELEASE_REVISION_VERSION))
    #error "AutoSar Version Numbers of Lin_ESCI_Irq.c and Lin.h are different"
#endif
/* Check if current file and Lin.h header file are of the same Software version */
#if ((LIN_SW_MAJOR_VERSION_IRQ_C != LIN_SW_MAJOR_VERSION) || \
     (LIN_SW_MINOR_VERSION_IRQ_C != LIN_SW_MINOR_VERSION) || \
     (LIN_SW_PATCH_VERSION_IRQ_C != LIN_SW_PATCH_VERSION))
    #error "Software Version Numbers of Lin_ESCI_Irq.c and Lin.h are different"
#endif
/* Check if current file and Lin_ESCI header file are of the same vendor */
#if (Lin_ESCI_Irq_VENDOR_ID_C != LIN_VENDOR_ID_ESCI)
    #error "Lin_ESCI_Irq.c and Lin_ESCI.h have different vendor ids"
#endif
/* Check if current file and Lin_ESCI header file are of the same Autosar version */
#if ((LIN_AR_RELEASE_MAJOR_VERSION_IRQ_C    != LIN_AR_RELEASE_MAJOR_VERSION_ESCI) || \
     (LIN_AR_RELEASE_MINOR_VERSION_IRQ_C    != LIN_AR_RELEASE_MINOR_VERSION_ESCI) || \
     (LIN_AR_RELEASE_REVISION_VERSION_IRQ_C != LIN_AR_RELEASE_REVISION_VERSION_ESCI))
    #error "AutoSar Version Numbers of Lin_ESCI_Irq.c and Lin_ESCI.h are different"
#endif
/* Check if current file and Lin_ESCI header file are of the same Software version */
#if ((LIN_SW_MAJOR_VERSION_IRQ_C != LIN_SW_MAJOR_VERSION_ESCI) || \
     (LIN_SW_MINOR_VERSION_IRQ_C != LIN_SW_MINOR_VERSION_ESCI) || \
     (LIN_SW_PATCH_VERSION_IRQ_C != LIN_SW_PATCH_VERSION_ESCI))
    #error "Software Version Numbers of Lin_ESCI_Irq.c and Lin_ESCI.h are different"
#endif
/*==================================================================================================
*                          LOCAL TYPEDEFS (STRUCTURES, UNIONS, ENUMS)
==================================================================================================*/

/*==================================================================================================
*                                       LOCAL MACROS
==================================================================================================*/


/*==================================================================================================
*                                       LOCAL CONSTANTS
==================================================================================================*/


/*==================================================================================================
*                                       LOCAL VARIABLES
==================================================================================================*/


/*==================================================================================================
*                                       GLOBAL CONSTANTS
==================================================================================================*/


/*==================================================================================================
*                                       GLOBAL VARIABLES
==================================================================================================*/

/*==================================================================================================
*                                   LOCAL FUNCTION PROTOTYPES
==================================================================================================*/
/**
* @brief          LIN controller interrupts
* @details        LIN controller interrupts
*
*
*
*/
#define LIN_START_SEC_CODE
/**
* @violates @ref Lin_ESCI_Irq_c_REF_1 <MA>_MemMap.h is included after each section define in order to
                 set the current memory section as defined by AUTOSAR.
* @violates @ref Lin_ESCI_Irq_c_REF_2 This violation is not fixed since the inclusion of <MA>_MemMap.h
                 is as per AUTOSAR requirement [SWS_MemMap_00003].
*/
#include "Lin_MemMap.h"

#if defined(LinHWCh_0)
  ISR(Lin_eSCI_Isr_ESCI_0);
#endif /* defined(LinHWCh_0) */

#if defined(LinHWCh_1)
  ISR(Lin_eSCI_Isr_ESCI_1);
#endif /* defined(LinHWCh_1) */

#if defined(LinHWCh_2)
  ISR(Lin_eSCI_Isr_ESCI_2);
#endif /* defined(LinHWCh_2) */

#if defined(LinHWCh_3)
  ISR(Lin_eSCI_Isr_ESCI_3);
#endif /* defined(LinHWCh_3) */

#if defined(LinHWCh_4)
  ISR(Lin_eSCI_Isr_ESCI_4);
#endif /* defined(LinHWCh_4) */

#if defined(LinHWCh_5)
  ISR(Lin_eSCI_Isr_ESCI_5);
#endif /* defined(LinHWCh_5) */

#if defined(LinHWCh_6)
  ISR(Lin_eSCI_Isr_ESCI_6);
#endif /* defined(LinHWCh_6) */

#if defined(LinHWCh_7)
  ISR(Lin_eSCI_Isr_ESCI_7);
#endif /* defined(LinHWCh_7) */

#if defined(LinHWCh_8)
  ISR(Lin_eSCI_Isr_ESCI_8);
#endif /* defined(LinHWCh_8) */

#if defined(LinHWCh_9)
  ISR(Lin_eSCI_Isr_ESCI_9);
#endif /* defined(LinHWCh_9) */

#if defined(LinHWCh_10)
  ISR(Lin_eSCI_Isr_ESCI_10);
#endif /* defined(LinHWCh_10) */

#if defined(LinHWCh_11)
  ISR(Lin_eSCI_Isr_ESCI_11);
#endif /* defined(LinHWCh_11) */

#define LIN_STOP_SEC_CODE
/**
* @violates @ref Lin_ESCI_Irq_c_REF_1 <MA>_MemMap.h is included after each section define in order to
                 set the current memory section as defined by AUTOSAR.
* @violates @ref Lin_ESCI_Irq_c_REF_2 This violation is not fixed since the inclusion of <MA>_MemMap.h
                 is as per AUTOSAR requirement [SWS_MemMap_00003].
*/
#include "Lin_MemMap.h"
/*==================================================================================================
*                                       LOCAL FUNCTIONS
==================================================================================================*/

/*==================================================================================================
*                                       GLOBAL FUNCTIONS
==================================================================================================*/

#define LIN_START_SEC_CODE
/**
* @violates @ref Lin_ESCI_Irq_c_REF_1 <MA>_MemMap.h is included after each section define in order to
                 set the current memory section as defined by AUTOSAR.
* @violates @ref Lin_ESCI_Irq_c_REF_2 This violation is not fixed since the inclusion of <MA>_MemMap.h
                 is as per AUTOSAR requirement [SWS_MemMap_00003].
*/
#include "Lin_MemMap.h"

#if defined(LinHWCh_0)

    /**
    * @brief   Interrupt handler on ESCI_0.
    * @details This function implements the ISR occurring on ESCI_0.
    * @note    This interrupt handlers is only present if Hardware
    *          Channel 0 is used and DMA is not used.
    * @isr
    *
    *
    */
    /**
    * @violates @ref Lin_ESCI_Irq_c_REF_3 These functions represent the IPV of the driver. External linkage is needed to "export" the IPV.
    */
    ISR(Lin_eSCI_Isr_ESCI_0)
    {
        Lin_ESCI_InterruptHandler(LinHWCh_0);
        /**
        * @violates @ref Lin_ESCI_Irq_c_REF_4 SMCAL coding guideline , Rule 3.3:
        * Multi-statement macros shall be wrapped in a do-while loop, so the macro can appear safely inside if clauses
        * or other places that expect a single statement or a statement block.
        */
        EXIT_INTERRUPT();
    }

#endif /* defined(LinHWCh_0) */

#if defined(LinHWCh_1)

    /**
    * @brief   Interrupt handler on ESCI_1.
    * @details This function implements the ISR occurring on ESCI_1.
    * @note    This interrupt handlers is only present if Hardware
    *          Channel 1 is used and DMA is not used.
    * @isr
    *
    *
    */
    /**
    * @violates @ref Lin_ESCI_Irq_c_REF_3 These functions represent the IPV of the driver. External linkage is needed to "export" the IPV.
    */
    ISR(Lin_eSCI_Isr_ESCI_1)
    {
        Lin_ESCI_InterruptHandler(LinHWCh_1);
        /**
        * @violates @ref Lin_ESCI_Irq_c_REF_4 SMCAL coding guideline , Rule 3.3:
        * Multi-statement macros shall be wrapped in a do-while loop, so the macro can appear safely inside if clauses
        * or other places that expect a single statement or a statement block.
        */
        EXIT_INTERRUPT();
    }

#endif /* defined(LinHWCh_1) */

#if defined(LinHWCh_2)

    /**
    * @brief   Interrupt handler on ESCI_2.
    * @details This function implements the ISR occurring on ESCI_2.
    * @note    This interrupt handlers is only present if Hardware
    *          Channel 2 is used and DMA is not used.
    * @isr
    *
    *
    */
    /**
    * @violates @ref Lin_ESCI_Irq_c_REF_3 These functions represent the IPV of the driver. External linkage is needed to "export" the IPV.
    */
    ISR(Lin_eSCI_Isr_ESCI_2)
    {
        Lin_ESCI_InterruptHandler(LinHWCh_2);
        /**
        * @violates @ref Lin_ESCI_Irq_c_REF_4 SMCAL coding guideline , Rule 3.3:
        * Multi-statement macros shall be wrapped in a do-while loop, so the macro can appear safely inside if clauses
        * or other places that expect a single statement or a statement block.
        */
        EXIT_INTERRUPT();
    }

#endif /* defined(LinHWCh_2) */

#if defined(LinHWCh_3)

    /**
    * @brief   Interrupt handler on ESCI_3.
    * @details This function implements the ISR occurring on ESCI_3.
    * @note    This interrupt handlers is only present if Hardware
    *          Channel 3 is used and DMA is not used.
    * @isr
    *
    *
    */
    /**
    * @violates @ref Lin_ESCI_Irq_c_REF_3 These functions represent the IPV of the driver. External linkage is needed to "export" the IPV.
    */
    ISR(Lin_eSCI_Isr_ESCI_3)
    {
        Lin_ESCI_InterruptHandler(LinHWCh_3);
        /**
        * @violates @ref Lin_ESCI_Irq_c_REF_4 SMCAL coding guideline , Rule 3.3:
        * Multi-statement macros shall be wrapped in a do-while loop, so the macro can appear safely inside if clauses
        * or other places that expect a single statement or a statement block.
        */
        EXIT_INTERRUPT();
    }

#endif /* defined(LinHWCh_3) */

#if defined(LinHWCh_4)

    /**
    * @brief   Interrupt handler on ESCI_4.
    * @details This function implements the ISR occurring on ESCI_4.
    * @note    This interrupt handlers is only present if Hardware
    *          Channel 4 is used and DMA is not used.
    * @isr
    *
    *
    */
    /**
    * @violates @ref Lin_ESCI_Irq_c_REF_3 These functions represent the IPV of the driver. External linkage is needed to "export" the IPV.
    */
    ISR(Lin_eSCI_Isr_ESCI_4)
    {
        Lin_ESCI_InterruptHandler(LinHWCh_4);
        /**
        * @violates @ref Lin_ESCI_Irq_c_REF_4 SMCAL coding guideline , Rule 3.3:
        * Multi-statement macros shall be wrapped in a do-while loop, so the macro can appear safely inside if clauses
        * or other places that expect a single statement or a statement block.
        */
        EXIT_INTERRUPT();
    }

#endif /* defined(LinHWCh_4) */

#if defined(LinHWCh_5)

    /**
    * @brief   Interrupt handler on ESCI_5.
    * @details This function implements the ISR occurring on ESCI_5.
    * @note    This interrupt handlers is only present if Hardware
    *          Channel 5 is used and DMA is not used.
    * @isr
    *
    *
    */
    /**
    * @violates @ref Lin_ESCI_Irq_c_REF_3 These functions represent the IPV of the driver. External linkage is needed to "export" the IPV.
    */
    ISR(Lin_eSCI_Isr_ESCI_5)
    {
        Lin_ESCI_InterruptHandler(LinHWCh_5);
        /**
        * @violates @ref Lin_ESCI_Irq_c_REF_4 SMCAL coding guideline , Rule 3.3:
        * Multi-statement macros shall be wrapped in a do-while loop, so the macro can appear safely inside if clauses
        * or other places that expect a single statement or a statement block.
        */
        EXIT_INTERRUPT();
    }

#endif /* defined(LinHWCh_5) */

#if defined(LinHWCh_6)

    /**
    * @brief   Interrupt handler on ESCI_6.
    * @details This function implements the ISR occurring on ESCI_6.
    * @note    This interrupt handlers is only present if Hardware
    *          Channel 6 is used and DMA is not used.
    * @isr
    *
    *
    */
    /**
    * @violates @ref Lin_ESCI_Irq_c_REF_3 These functions represent the IPV of the driver. External linkage is needed to "export" the IPV.
    */
    ISR(Lin_eSCI_Isr_ESCI_6)
    {
        Lin_ESCI_InterruptHandler(LinHWCh_6);
        /**
        * @violates @ref Lin_ESCI_Irq_c_REF_4 SMCAL coding guideline , Rule 3.3:
        * Multi-statement macros shall be wrapped in a do-while loop, so the macro can appear safely inside if clauses
        * or other places that expect a single statement or a statement block.
        */
        EXIT_INTERRUPT();
    }

#endif /* defined(LinHWCh_6) */

#if defined(LinHWCh_7)

    /**
    * @brief   Interrupt handler on ESCI_7.
    * @details This function implements the ISR occurring on ESCI_7.
    * @note    This interrupt handlers is only present if Hardware
    *          Channel 7 is used and DMA is not used.
    * @isr
    *
    *
    */
    /**
    * @violates @ref Lin_ESCI_Irq_c_REF_3 These functions represent the IPV of the driver. External linkage is needed to "export" the IPV.
    */
    ISR(Lin_eSCI_Isr_ESCI_7)
    {
        Lin_ESCI_InterruptHandler(LinHWCh_7);
        /**
        * @violates @ref Lin_ESCI_Irq_c_REF_4 SMCAL coding guideline , Rule 3.3:
        * Multi-statement macros shall be wrapped in a do-while loop, so the macro can appear safely inside if clauses
        * or other places that expect a single statement or a statement block.
        */
        EXIT_INTERRUPT();
    }

#endif /* defined(LinHWCh_7) */

#if defined(LinHWCh_8)

    /**
    * @brief   Interrupt handler on ESCI_8.
    * @details This function implements the ISR occurring on ESCI_8.
    * @note    This interrupt handlers is only present if Hardware
    *          Channel 8 is used and DMA is not used.
    * @isr
    *
    *
    */
    /**
    * @violates @ref Lin_ESCI_Irq_c_REF_3 These functions represent the IPV of the driver. External linkage is needed to "export" the IPV.
    */
    ISR(Lin_eSCI_Isr_ESCI_8)
    {
        Lin_ESCI_InterruptHandler(LinHWCh_8);
        /**
        * @violates @ref Lin_ESCI_Irq_c_REF_4 SMCAL coding guideline , Rule 3.3:
        * Multi-statement macros shall be wrapped in a do-while loop, so the macro can appear safely inside if clauses
        * or other places that expect a single statement or a statement block.
        */
        EXIT_INTERRUPT();
    }

#endif /* defined(LinHWCh_8) */

#if defined(LinHWCh_9)

    /**
    * @brief   Interrupt handler on ESCI_9.
    * @details This function implements the ISR occurring on ESCI_9.
    * @note    This interrupt handlers is only present if Hardware
    *          Channel 9 is used and DMA is not used.
    * @isr
    *
    *
    */
    /**
    * @violates @ref Lin_ESCI_Irq_c_REF_3 These functions represent the IPV of the driver. External linkage is needed to "export" the IPV.
    */
    ISR(Lin_eSCI_Isr_ESCI_9)
    {
        Lin_ESCI_InterruptHandler(LinHWCh_9);
        /**
        * @violates @ref Lin_ESCI_Irq_c_REF_4 SMCAL coding guideline , Rule 3.3:
        * Multi-statement macros shall be wrapped in a do-while loop, so the macro can appear safely inside if clauses
        * or other places that expect a single statement or a statement block.
        */
        EXIT_INTERRUPT();
    }

#endif /* defined(LinHWCh_9) */

#if defined(LinHWCh_10)

    /**
    * @brief   Interrupt handler on ESCI_10.
    * @details This function implements the ISR occurring on ESCI_10.
    * @note    This interrupt handlers is only present if Hardware
    *          Channel 10 is used and DMA is not used.
    * @isr
    *
    *
    */
    /**
    * @violates @ref Lin_ESCI_Irq_c_REF_3 These functions represent the IPV of the driver. External linkage is needed to "export" the IPV.
    */
    ISR(Lin_eSCI_Isr_ESCI_10)
    {
        Lin_ESCI_InterruptHandler(LinHWCh_10);
        /**
        * @violates @ref Lin_ESCI_Irq_c_REF_4 SMCAL coding guideline , Rule 3.3:
        * Multi-statement macros shall be wrapped in a do-while loop, so the macro can appear safely inside if clauses
        * or other places that expect a single statement or a statement block.
        */
        EXIT_INTERRUPT();
    }

#endif /* defined(LinHWCh_10) */

#if defined(LinHWCh_11)

    /**
    * @brief   Interrupt handler on ESCI_11.
    * @details This function implements the ISR occurring on ESCI_11.
    * @note    This interrupt handlers is only present if Hardware
    *          Channel 11 is used and DMA is not used.
    * @isr
    *
    *
    */
    /**
    * @violates @ref Lin_ESCI_Irq_c_REF_3 These functions represent the IPV of the driver. External linkage is needed to "export" the IPV.
    */
    ISR(Lin_eSCI_Isr_ESCI_11)
    {
        Lin_ESCI_InterruptHandler(LinHWCh_11);
        /**
        * @violates @ref Lin_ESCI_Irq_c_REF_4 SMCAL coding guideline , Rule 3.3:
        * Multi-statement macros shall be wrapped in a do-while loop, so the macro can appear safely inside if clauses
        * or other places that expect a single statement or a statement block.
        */
        EXIT_INTERRUPT();
    }

#endif /* defined(LinHWCh_11) */

#define LIN_STOP_SEC_CODE
/**
* @violates @ref Lin_ESCI_Irq_c_REF_1 <MA>_MemMap.h is included after each section define in order to
                 set the current memory section as defined by AUTOSAR.
* @violates @ref Lin_ESCI_Irq_c_REF_2 This violation is not fixed since the inclusion of <MA>_MemMap.h
                 is as per AUTOSAR requirement [SWS_MemMap_00003].
*/
#include "Lin_MemMap.h"

#ifdef __cplusplus
}
#endif
/** @} */
