/*==================================================================================================
*   Project              : RTD AUTOSAR 4.4
*   Platform             : CORTEXM
*   Peripheral           : FLEXCAN
*   Dependencies         : 
*
*   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.
==================================================================================================*/
/***********************************************************************************************************************
 * This file was generated by the S32 Config Tools. Any manual edits made to this file
 * will be overwritten if the respective S32 Config Tools is used to update this file.
 **********************************************************************************************************************/
/*
 * FlexCAN_Ip_Cfg.h
 *
 *  Created on: Apr 29, 2020
 *      Author: nxf31634
 */

#ifndef FLEXCAN_FLEXCAN_IP_CFG_H_
#define FLEXCAN_FLEXCAN_IP_CFG_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 "FlexCAN_Ip_Sa_BOARD_InitPeripherals_PBcfg.h"
#include "OsIf.h"
#include "Reg_eSys.h"
/*==================================================================================================
*                              SOURCE FILE VERSION INFORMATION
==================================================================================================*/
#define FLEXCAN_IP_CFG_VENDOR_ID_H                      43
#define FLEXCAN_IP_CFG_AR_RELEASE_MAJOR_VERSION_H       4
#define FLEXCAN_IP_CFG_AR_RELEASE_MINOR_VERSION_H       4
#define FLEXCAN_IP_CFG_AR_RELEASE_REVISION_VERSION_H    0
#define FLEXCAN_IP_CFG_SW_MAJOR_VERSION_H               0
#define FLEXCAN_IP_CFG_SW_MINOR_VERSION_H               9
#define FLEXCAN_IP_CFG_SW_PATCH_VERSION_H               0
/*==================================================================================================
*                                     FILE VERSION CHECKS
==================================================================================================*/

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

/*==================================================================================================
*                                      DEFINES AND MACROS
==================================================================================================*/
#define FLEXCAN_STATE_EXT FLEXCAN_IP_STATE_PB_CFG
#define FLEXCAN_CONFIG_EXT FLEXCAN_IP_PB_CFG

/*! @brief Enables / Disables user mode support */
#define FLEXCAN_ENABLE_USER_MODE_SUPPORT    (STD_OFF)


#if ((STD_ON == FLEXCAN_ENABLE_USER_MODE_SUPPORT) && defined(MCAL_FLEXCAN_REG_PROT_AVAILABLE))
    #if (STD_ON == MCAL_FLEXCAN_REG_PROT_AVAILABLE)
        #define FLEXCAN_SET_USER_ACCESS_ALLOWED_AVAILABLE      (STD_ON)
    #else
        #define FLEXCAN_SET_USER_ACCESS_ALLOWED_AVAILABLE      (STD_OFF)
    #endif
#else
    #define FLEXCAN_SET_USER_ACCESS_ALLOWED_AVAILABLE      (STD_OFF)
#endif

#if (FLEXCAN_SET_USER_ACCESS_ALLOWED_AVAILABLE == STD_ON)
    /*! @brief Use to check if the instances support UAA bit or not */
    #define FLEXCAN_CTRL_REG_PROT_SUPPORT_U8    ((uint8)0U)
#endif

/* Time out value in uS */
#define CAN_TIMEOUT_DURATION    (100U)

/* This this will set the timer source for osif that will be used for timeout */
#define CAN_SERVICE_TIMEOUT_TYPE    (OSIF_COUNTER_DUMMY)

/* @brief Maximum number of Message Buffers supported for payload size 8 for any of the CAN instances */
#define FEATURE_CAN_MAX_MB_NUM    (96U)

/* @brief Maximum number of Message Buffers supported for payload size 8 for CAN0 */
#define FEATURE_CAN0_MAX_MB_NUM    (96U)

/* @brief Maximum number of Message Buffers supported for payload size 8 for CAN1 */
#define FEATURE_CAN1_MAX_MB_NUM    (64U)

/* @brief Maximum number of Message Buffers supported for payload size 8 for CAN2 */
#define FEATURE_CAN2_MAX_MB_NUM    (64U)

/* @brief Maximum number of Message Buffers supported for payload size 8 for CAN3 */
#define FEATURE_CAN3_MAX_MB_NUM    (32U)

/* @brief Maximum number of Message Buffers supported for payload size 8 for CAN4 */
#define FEATURE_CAN4_MAX_MB_NUM    (32U)

/* @brief Maximum number of Message Buffers supported for payload size 8 for CAN5 */
#define FEATURE_CAN5_MAX_MB_NUM    (32U)

/* @brief Array of maximum number of Message Buffers supported for payload size 8 for all the CAN instances */
#define FEATURE_CAN_MAX_MB_NUM_ARRAY { \
                        FEATURE_CAN0_MAX_MB_NUM, \
                        FEATURE_CAN1_MAX_MB_NUM, \
                        FEATURE_CAN2_MAX_MB_NUM, \
                        FEATURE_CAN3_MAX_MB_NUM, \
                        FEATURE_CAN4_MAX_MB_NUM, \
                        FEATURE_CAN5_MAX_MB_NUM \
}
/* @brief Has DMA enable (bit field MCR[DMA]). */
#define FEATURE_CAN_HAS_DMA_ENABLE    (STD_OFF)
/* @brief Has Supervisor Mode MCR[SUPV] */
#define FEATURE_CAN_HAS_SUPV    (STD_ON)
/* @brief Has Flexible Data Rate */
#define FEATURE_CAN_HAS_FD    (STD_ON)
/* @bried FlexCAN has Detection And Correction of Memory Errors */
#define FEATURE_CAN_HAS_MEM_ERR_DET    (STD_ON)
/* @brief Has FlexCAN Enhanced Rx FIFO mode */
#define FEATURE_CAN_HAS_ENHANCED_RX_FIFO    (STD_ON)
/* @brief Has FlexCAN expandable memory */
#define FEATURE_CAN_HAS_EXPANDABLE_MEMORY    (STD_OFF)
/* @brief Has FlexCAN High Resolution Timer for Time stamp CAN Message */
#define FEATURE_CAN_HAS_HR_TIMER    (STD_OFF)
/* @brief Has FlexCAN Enhanced Rx FIFO has interrupts available */
#define FEATURE_CAN_HAS_ENHANCED_RX_FIFO_INTERRUPT    (STD_OFF)
#define FEATURE_CAN_HAS_PE_CLKSRC_SELECT    (STD_OFF)
#define FEATURE_CAN_HAS_WAKE_UP_IRQ    (STD_OFF)
/* @brief Has FD Iso Option Mode  */
#define FEATURE_CAN_SWITCHINGISOMODE   (STD_ON)
/* @brief Has Protocol exception Mode */
#define FEATURE_CAN_PROTOCOLEXCEPTION  (STD_ON)
/* @brief Has Edge filter Feature */
#define FEATURE_CAN_EDGEFILTER         (STD_ON)
/* Defines if interface will enable any of interrupts */
#define CAN_MB_INTERRUPT_SUPPORT    (STD_ON)
/* Defines the No Of Message Buffers Partions Suppport MBDSR regions */
#define FEATURE_CAN_MBDSR_COUNT    (3U)
/* Enable Development Error Detection */
/* Trebuie adagudat un field in configuratorul de FlexCAN */
#define FLEXCAN_DEV_ERROR_DETECT    (STD_ON)

#ifdef __cplusplus
}
#endif /* __cplusplus */

#endif /* FLEXCAN_FLEXCAN_IP_CFG_H_ */

