/**
*   @file    SilRegMacros.h
*   @version 1.0.0
*
*   @brief   AUTOSAR Base - IP module versions.
*   @details Gathers all macros for register access, soft and hard lock on PA 
*            hardware platform and also macros for handling redundant variables. 
*
*   @addtogroup BASE_COMPONENT
*   @{
*/
/*==================================================================================================
*   Project              : AUTOSAR 4.3 MCAL
*   Platform             : PA
*   Peripheral           : MPC5777C
*   Dependencies         : none
*
*   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.
==================================================================================================*/
/*==================================================================================================
==================================================================================================*/

/** 
* @page misra_violations MISRA-C:2012 violations
*
* @section SilRegMacros_h_REF_1
* Violates MISRA 2012 Advisory Rule 2.5, A project should not contain unused macro declaration.
* Macro are required to make code easier in maintainability. Some macro are required by ASR even they are not use in MCAL layer
*/

#ifndef SILREGMACROS_H
#define SILREGMACROS_H

#ifdef __cplusplus
extern "C"{
#endif

/*==================================================================================================
*                                         INCLUDE FILES
* 1) system and project includes
* 2) needed interfaces from external units
* 3) internal and external interfaces from this unit
==================================================================================================*/
#include "StdRegMacros.h"
#include "RegLockMacros.h"
#if 0
    /* not needed for this release */
    #include "RedundantMemMacros.h"
#endif
/*==================================================================================================
*                               SOURCE FILE VERSION INFORMATION
==================================================================================================*/
#define SILREGMACROS_VENDOR_ID                    43
/** @violates @ref SilRegMacros_h_REF_1 MISRA 2012 Advisory Rule 2.5, unused macro */
#define SILREGMACROS_MODULE_ID                    0
#define SILREGMACROS_AR_RELEASE_MAJOR_VERSION     4
#define SILREGMACROS_AR_RELEASE_MINOR_VERSION     3
#define SILREGMACROS_AR_RELEASE_REVISION_VERSION  1
#define SILREGMACROS_SW_MAJOR_VERSION             1
#define SILREGMACROS_SW_MINOR_VERSION             0
#define SILREGMACROS_SW_PATCH_VERSION             0

/*==================================================================================================
*                                      FILE VERSION CHECKS
==================================================================================================*/
/* Check if source file and StdRegMacros.h header file have same versions */
#if (SILREGMACROS_VENDOR_ID != STDREGMACROS_VENDOR_ID)
#error "SilRegMacros.h and StdRegMacros.h have different vendor IDs"
#endif
#if ((SILREGMACROS_AR_RELEASE_MAJOR_VERSION != STDREGMACROS_AR_RELEASE_MAJOR_VERSION) || \
     (SILREGMACROS_AR_RELEASE_MINOR_VERSION != STDREGMACROS_AR_RELEASE_MINOR_VERSION) || \
     (SILREGMACROS_AR_RELEASE_REVISION_VERSION != STDREGMACROS_AR_RELEASE_REVISION_VERSION))
#error "AutoSar Version Numbers of SilRegMacros.h and StdRegMacros.h are different"
#endif
#if ((SILREGMACROS_SW_MAJOR_VERSION != STDREGMACROS_SW_MAJOR_VERSION) || \
     (SILREGMACROS_SW_MINOR_VERSION != STDREGMACROS_SW_MINOR_VERSION) || \
     (SILREGMACROS_SW_PATCH_VERSION != STDREGMACROS_SW_PATCH_VERSION))
#error "Software Version Numbers of SilRegMacros.h and StdRegMacros.h are different"
#endif

/* Check if source file and RegLockMacros.h header file have same versions */
#if (SILREGMACROS_VENDOR_ID != REGLOCKMACROS_VENDOR_ID)
#error "SilRegMacros.h and RegLockMacros.h have different vendor IDs"
#endif
#if ((SILREGMACROS_AR_RELEASE_MAJOR_VERSION != REGLOCKMACROS_AR_RELEASE_MAJOR_VERSION) || \
     (SILREGMACROS_AR_RELEASE_MINOR_VERSION != REGLOCKMACROS_AR_RELEASE_MINOR_VERSION) || \
     (SILREGMACROS_AR_RELEASE_REVISION_VERSION != REGLOCKMACROS_AR_RELEASE_REVISION_VERSION))
#error "AutoSar Version Numbers of SilRegMacros.h and RegLockMacros.h are different"
#endif
#if ((SILREGMACROS_SW_MAJOR_VERSION != REGLOCKMACROS_SW_MAJOR_VERSION) || \
     (SILREGMACROS_SW_MINOR_VERSION != REGLOCKMACROS_SW_MINOR_VERSION) || \
     (SILREGMACROS_SW_PATCH_VERSION != REGLOCKMACROS_SW_PATCH_VERSION))
#error "Software Version Numbers of SilRegMacros.h and RegLockMacros.h are different"
#endif

#if 0
    /* not needed for this release */
    /* Check if source file and RedundantMemMacros.h header file have same versions */
    #if (SILREGMACROS_VENDOR_ID != REDUNDANTMEMMACROS_VENDOR_ID)
    #error "SilRegMacros.h and RedundantMemMacros.h have different vendor IDs"
    #endif
    #if ((SILREGMACROS_AR_RELEASE_MAJOR_VERSION != REDUNDANTMEMMACROS_AR_RELEASE_MAJOR_VERSION) || \
         (SILREGMACROS_AR_RELEASE_MINOR_VERSION != REDUNDANTMEMMACROS_AR_RELEASE_MINOR_VERSION) || \
         (SILREGMACROS_AR_RELEASE_REVISION_VERSION != REDUNDANTMEMMACROS_AR_RELEASE_REVISION_VERSION))
    #error "AutoSar Version Numbers of SilRegMacros.h and RedundantMemMacros.h are different"
    #endif
    #if ((SILREGMACROS_SW_MAJOR_VERSION != REDUNDANTMEMMACROS_SW_MAJOR_VERSION) || \
         (SILREGMACROS_SW_MINOR_VERSION != REDUNDANTMEMMACROS_SW_MINOR_VERSION) || \
         (SILREGMACROS_SW_PATCH_VERSION != REDUNDANTMEMMACROS_SW_PATCH_VERSION))
    #error "Software Version Numbers of SilRegMacros.h and RedundantMemMacros.h are different"
    #endif
#endif
    
/*==================================================================================================
*                                           CONSTANTS
==================================================================================================*/

/*==================================================================================================
*                                       DEFINES AND MACROS
==================================================================================================*/

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

/*==================================================================================================
*                                 STRUCTURES AND OTHER TYPEDEFS
==================================================================================================*/

/*==================================================================================================
*                                 GLOBAL VARIABLE DECLARATIONS
==================================================================================================*/

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


#ifdef __cplusplus
}
#endif

#endif /* #ifndef SILREGMACROS_H */

/** @} */
