/**
	******************************************************************************
	* @file
	* @author
	* @version
	* @date
	* @brief  AUTOSAR 4.0
	* @function List:
	******************************************************************************
	* @attention
	*
	*
	* <h2><center>&copy; COPYRIGHT 2021 </center></h2>
	******************************************************************************
	* @History:
	* @Author:
	* @Data:
	* @Version:
*/



/*******************************************************************************
*   Includes 
*******************************************************************************/

#include "CanIf.h"
#include "Com_Cbk.h"
#include "CanTp_Cbk.h"
#include "CanNm_Cbk.h" 
/*******************************************************************************
*   Macro
*******************************************************************************/
#define CANIF_CFG_TOTAL_TXPDUID                      (5u)

#define CANIF_CFG_TOTAL_RXPDUID                      (18u)

#if (STD_ON == CANIF_RX_PDU_RANGE_CANID)
	#define CANIF_CFG_RANGE_CANID_RXPDUID        (1u)
#endif
//如果多路can，可以考虙增加數量；但是没有在drive層找到相對應的宏；
#define CANIF_CFG_TOTAL_HRH                          (1u)		

/*******************************************************************************
*   Global Data Define, No need to be configed
*******************************************************************************/
#define CANIF_START_SEC_VAR_UNSPECIFIED
#include "MemMap.h"

#if (STD_ON == CANIF_PUBLIC_TX_BUFFERING)
	VAR(boolean, CANIF_PRIVATE_DATA) 
							  CanIfTxBufferPDUFillflag[CANIF_CFG_TOTAL_TXPDUID];	//每一發送的PDU 有滿的標志

	VAR(uint8, CANIF_PRIVATE_DATA) CanIfTxBufferSdu[CANIF_CFG_TOTAL_TXPDUID][8];

	VAR(Can_PduType, CANIF_PRIVATE_DATA) 
									  CanIfTxBufferPdu[CANIF_CFG_TOTAL_TXPDUID];
#endif

#if (STD_ON == CANIF_PUBLIC_SETDYNAMICTXID_API)
	VAR(Can_IdType, CANIF_PRIVATE_DATA) 
							 CanIfTxPduCanIdForDynamic[CANIF_CFG_TOTAL_TXPDUID]; 	//動態分配CANID  ，即重置CAN ID值
#endif 

#if(STD_ON == CANIF_PUBLIC_READTXPDU_NOTIFY_STATUS_API)
	VAR(CanIf_NotifStatusType, CANIF_PRIVATE_DATA)
									CanIfTxNotifStatus[CANIF_CFG_TOTAL_TXPDUID];      //發送的指示 狀態
#endif

#if(STD_ON == CANIF_PUBLIC_READRXPDU_NOTIFY_STATUS_API)
	VAR(CanIf_NotifStatusType, CANIF_PRIVATE_DATA)
									CanIfRxNotifStatus[CANIF_CFG_TOTAL_RXPDUID];   	//接收的指示狀態
#endif

#if (STD_ON == CANIF_PUBLIC_READRXPDU_DATA_API)
	VAR(uint8, CANIF_PRIVATE_DATA) 
							   CanIfRxBufferSduData[CANIF_CFG_TOTAL_RXPDUID][8]; 
	VAR(PduLengthType, CANIF_PRIVATE_DATA) 
							   CanIfRxBufferSduLength[CANIF_CFG_TOTAL_RXPDUID] ;        
#endif

#define CANIF_STOP_SEC_VAR_UNSPECIFIED
#include "MemMap.h"

#define CANIF_START_SEC_CONFIG_DATA_UNSPECIFIED
#include "MemMap.h"
CONST(PduIdType, CANIF_CONFIG_CONST) CanIfInitNumberOfCanRxPduIds 
													  = CANIF_CFG_TOTAL_RXPDUID;		//發的PDU 最大組數
CONST(PduIdType, CANIF_CONFIG_CONST) CanIfInitNumberOfCanTxPduIds 
													  = CANIF_CFG_TOTAL_TXPDUID;   //收的PDU 最大組數
CONST(Can_HwHandleType, CANIF_CONFIG_CONST) CanIfInitNumberofHrh 
														  = CANIF_CFG_TOTAL_HRH;  

/*******************************************************************************
*   Config Parameters   
*******************************************************************************/
#if (STD_ON == CANIF_RX_PDU_RANGE_CANID)
CONST(CanIf_RxPduCanIdRangeType, CANIF_CONFIG_CONST)
					 CanIfRxPduCanIdRangeConfig[CANIF_CFG_RANGE_CANID_RXPDUID]=
{
	{
		0x500,   /* CanIfRxPduCanIdRangeLowerCanId*/
		0x57F,   /* CanIfRxPduCanIdRangeLowerCanId*/
		CanNm_RxIndication  /* CanNm_RxIndication*/
	}
};
#endif

CONST(CanIf_RxPduConfigType, CANIF_CONFIG_CONST)
									 CanIfRxPduConfig[CANIF_CFG_TOTAL_RXPDUID] =
{

	/* 0*/   /* CanIfRxPduId*/ 
	{
		#if (STD_ON == CANIF_UPPER_LAYER_HANDLE)
		0,             /* CanIfRxPduUpperLayerHandle */
		#endif
		0x316,         /* Mpc CanId*/
		STANDARD_CAN,  /* CanIdType */
		0,             /*CanIfRxPduHrhIdRef*/  //就是 CanHardwareObjectConfig的[0] 只收
		8u,//COM_RXIPDUEMS_ENGINERPM_BUFFER_SIZE,             /* CanIfRxPduDlc */  //CAN_FRAME_COM_DLC
		Com_RxIndication,      /* CanIfRxPduUserRxIndicationName */
		#if(STD_ON == CANIF_PUBLIC_READRXPDU_NOTIFY_STATUS_API)
		FALSE,         /* CanIfRxPduReadNotifyStatus */
		#endif
		#if(STD_ON == CANIF_PUBLIC_READRXPDU_DATA_API)
		FALSE,         /* CanIfRxPduReadData */
		#endif
		#if(STD_ON == CANIF_RX_PDU_RANGE_CANID)
		NULL_PTR,      /* CanIfRxPduRangePtr */
		#endif
		#if(CANIF_FILTER_TYPE_INDEX == CANIF_PRIVATE_SOFTWARE_FILTER_TYPE)
		1,      /*CanIfRxPduNextHrh*/
		#endif

	},

	/* 1*/   /* CanIfRxPduId*/ 
	{
		#if (STD_ON == CANIF_UPPER_LAYER_HANDLE)
		1,             /* CanIfRxPduUpperLayerHandle */
		#endif
		0x055,         /* Meter CanId*/
		STANDARD_CAN,  /* CanIdType */
		0,             /*CanIfRxPduHrhIdRef*/
		8u,             /* CanIfRxPduDlc */  //CAN_FRAME_COM_DLC
		Com_RxIndication,      /* CanIfRxPduUserRxIndicationName */
		#if(STD_ON == CANIF_PUBLIC_READRXPDU_NOTIFY_STATUS_API)
		FALSE,         /* CanIfRxPduReadNotifyStatus */
		#endif
		#if(STD_ON == CANIF_PUBLIC_READRXPDU_DATA_API)
		FALSE,         /* CanIfRxPduReadData */
		#endif
		#if(STD_ON == CANIF_RX_PDU_RANGE_CANID)
		NULL_PTR,      /* CanIfRxPduRangePtr */
		#endif
		#if(CANIF_FILTER_TYPE_INDEX == CANIF_PRIVATE_SOFTWARE_FILTER_TYPE)
		2,      /*CanIfRxPduNextHrh*/
		#endif

	},

	/* 2*/   /* CanIfRxPduId*/ 
	{
		#if (STD_ON == CANIF_UPPER_LAYER_HANDLE)
		2,             /* CanIfRxPduUpperLayerHandle */
		#endif
		0x12d,         /* BCM1 CanId*/
		STANDARD_CAN,  /* CanIdType */
		0,             /*CanIfRxPduHrhIdRef*/
		8u,             /* CanIfRxPduDlc */ // CAN_FRAME_COM_DLC
		Com_RxIndication,      /* CanIfRxPduUserRxIndicationName */
		#if(STD_ON == CANIF_PUBLIC_READRXPDU_NOTIFY_STATUS_API)
		FALSE,         /* CanIfRxPduReadNotifyStatus */
		#endif
		#if(STD_ON == CANIF_PUBLIC_READRXPDU_DATA_API)
		FALSE,         /* CanIfRxPduReadData */
		#endif
		#if(STD_ON == CANIF_RX_PDU_RANGE_CANID)
		NULL_PTR,      /* CanIfRxPduRangePtr */
		#endif
		#if(CANIF_FILTER_TYPE_INDEX == CANIF_PRIVATE_SOFTWARE_FILTER_TYPE)
		3,      /*CanIfRxPduNextHrh*/
		#endif

	},

	/* 3*/   /* CanIfRxPduId*/ 
	{
		#if (STD_ON == CANIF_UPPER_LAYER_HANDLE)
		3,             /* CanIfRxPduUpperLayerHandle */
		#endif
		0x633u,         //  把50D 临时改成一个非表中的项 CAN_RX_ID_BCM2 /* CanId*/
		STANDARD_CAN,  /* CanIdType */
		0,             /*CanIfRxPduHrhIdRef*/
		8u,             /* CanIfRxPduDlc */
		Com_RxIndication,      /* CanIfRxPduUserRxIndicationName */
		#if(STD_ON == CANIF_PUBLIC_READRXPDU_NOTIFY_STATUS_API)
		FALSE,         /* CanIfRxPduReadNotifyStatus */
		#endif
		#if(STD_ON == CANIF_PUBLIC_READRXPDU_DATA_API)
		FALSE,         /* CanIfRxPduReadData */
		#endif
		#if(STD_ON == CANIF_RX_PDU_RANGE_CANID)
		NULL_PTR,      /* CanIfRxPduRangePtr */
		#endif
		#if(CANIF_FILTER_TYPE_INDEX == CANIF_PRIVATE_SOFTWARE_FILTER_TYPE)
		4,      /*CanIfRxPduNextHrh*/
		#endif

	},

	/* 4*/   /* CanIfRxPduId*/ 
	{
		#if (STD_ON == CANIF_UPPER_LAYER_HANDLE)
		4,             /* CanIfRxPduUpperLayerHandle */
		#endif
		0x49a,         /* 4G_MOD CanId*/
		STANDARD_CAN,  /* CanIdType */
		0,             /*CanIfRxPduHrhIdRef*/
		8u,             /* CanIfRxPduDlc */
		Com_RxIndication,      /* CanIfRxPduUserRxIndicationName */
		#if(STD_ON == CANIF_PUBLIC_READRXPDU_NOTIFY_STATUS_API)
		FALSE,         /* CanIfRxPduReadNotifyStatus */
		#endif
		#if(STD_ON == CANIF_PUBLIC_READRXPDU_DATA_API)
		FALSE,         /* CanIfRxPduReadData */
		#endif
		#if(STD_ON == CANIF_RX_PDU_RANGE_CANID)
		NULL_PTR,      /* CanIfRxPduRangePtr */
		#endif
		#if(CANIF_FILTER_TYPE_INDEX == CANIF_PRIVATE_SOFTWARE_FILTER_TYPE)
		5,      /*CanIfRxPduNextHrh*/
		#endif

	},

	/* 5*/   /* CanIfRxPduId*/ 
	{
		#if (STD_ON == CANIF_UPPER_LAYER_HANDLE)
		5,             /* CanIfRxPduUpperLayerHandle */
		#endif
		0x385,         /* Multi_media CanId*/
		STANDARD_CAN,  /* CanIdType */
		0,             /*CanIfRxPduHrhIdRef*/
		8u,             /* CanIfRxPduDlc */
		Com_RxIndication,      /* CanIfRxPduUserRxIndicationName */
		#if(STD_ON == CANIF_PUBLIC_READRXPDU_NOTIFY_STATUS_API)
		FALSE,         /* CanIfRxPduReadNotifyStatus */
		#endif
		#if(STD_ON == CANIF_PUBLIC_READRXPDU_DATA_API)
		FALSE,         /* CanIfRxPduReadData */
		#endif
		#if(STD_ON == CANIF_RX_PDU_RANGE_CANID)
		NULL_PTR,      /* CanIfRxPduRangePtr */
		#endif
		#if(CANIF_FILTER_TYPE_INDEX == CANIF_PRIVATE_SOFTWARE_FILTER_TYPE)
		6,      /*CanIfRxPduNextHrh*/
		#endif

	},

	/* 6*/   /* CanIfRxPduId*/
	{
		#if (STD_ON == CANIF_UPPER_LAYER_HANDLE)
		6,             /* CanIfRxPduUpperLayerHandle */
		#endif
		0x0a2,  //0X26D       /* CanId*/
		STANDARD_CAN,  /* CanIdType */
		0,             /*CanIfRxPduHrhIdRef*/
		8,             /* CanIfRxPduDlc */
		Com_RxIndication,      /* CanIfRxPduUserRxIndicationName */
		#if(STD_ON == CANIF_PUBLIC_READRXPDU_NOTIFY_STATUS_API)
		FALSE,         /* CanIfRxPduReadNotifyStatus */
		#endif
		#if(STD_ON == CANIF_PUBLIC_READRXPDU_DATA_API)
		FALSE,         /* CanIfRxPduReadData */
		#endif
		#if(STD_ON == CANIF_RX_PDU_RANGE_CANID)
		NULL_PTR,      /* CanIfRxPduRangePtr */
		#endif
		#if(CANIF_FILTER_TYPE_INDEX == CANIF_PRIVATE_SOFTWARE_FILTER_TYPE)
		7,      /*CanIfRxPduNextHrh*/
		#endif

	},

	/* 7*/   /* CanIfRxPduId*/
	{
		#if (STD_ON == CANIF_UPPER_LAYER_HANDLE)
		7,             /* CanIfRxPduUpperLayerHandle */
		#endif
		0x394,         /* BCM_EVP2 CanId*/
		STANDARD_CAN,  /* CanIdType */
		0,             /*CanIfRxPduHrhIdRef*/
		8,             /* CanIfRxPduDlc */
		Com_RxIndication,      /* CanIfRxPduUserRxIndicationName */
		#if(STD_ON == CANIF_PUBLIC_READRXPDU_NOTIFY_STATUS_API)
		FALSE,         /* CanIfRxPduReadNotifyStatus */
		#endif
		#if(STD_ON == CANIF_PUBLIC_READRXPDU_DATA_API)
		FALSE,         /* CanIfRxPduReadData */
		#endif
		#if(STD_ON == CANIF_RX_PDU_RANGE_CANID)
		NULL_PTR,      /* CanIfRxPduRangePtr */
		#endif
		#if(CANIF_FILTER_TYPE_INDEX == CANIF_PRIVATE_SOFTWARE_FILTER_TYPE)
		8,      /*CanIfRxPduNextHrh*/
		#endif

	},

	/* 8*/   /* CanIfRxPduId*/
	{
		#if (STD_ON == CANIF_UPPER_LAYER_HANDLE)
		8,             /* CanIfRxPduUpperLayerHandle */
		#endif
		0x2db,       /*AIR_CD_CTRL CanId*/
		STANDARD_CAN,  /* CanIdType */
		0,             /*CanIfRxPduHrhIdRef*/
		8,             /* CanIfRxPduDlc */
		Com_RxIndication,      /* CanIfRxPduUserRxIndicationName */
		#if(STD_ON == CANIF_PUBLIC_READRXPDU_NOTIFY_STATUS_API)
		FALSE,         /* CanIfRxPduReadNotifyStatus */
		#endif
		#if(STD_ON == CANIF_PUBLIC_READRXPDU_DATA_API)
		FALSE,         /* CanIfRxPduReadData */
		#endif
		#if(STD_ON == CANIF_RX_PDU_RANGE_CANID)
		NULL_PTR,      /* CanIfRxPduRangePtr */
		#endif
		#if(CANIF_FILTER_TYPE_INDEX == CANIF_PRIVATE_SOFTWARE_FILTER_TYPE)
		9,      /*CanIfRxPduNextHrh*/
		#endif

	},

	/* 9*/   /* CanIfRxPduId*/
	{
		#if (STD_ON == CANIF_UPPER_LAYER_HANDLE)
		9,             /* CanIfRxPduUpperLayerHandle */
		#endif
		0x40d,        /* VCU CanId*/
		STANDARD_CAN,  /* CanIdType */
		0,             /*CanIfRxPduHrhIdRef*/
		8,             /* CanIfRxPduDlc */
		Com_RxIndication,      /* CanIfRxPduUserRxIndicationName */
		#if(STD_ON == CANIF_PUBLIC_READRXPDU_NOTIFY_STATUS_API)
		FALSE,         /* CanIfRxPduReadNotifyStatus */
		#endif
		#if(STD_ON == CANIF_PUBLIC_READRXPDU_DATA_API)
		FALSE,         /* CanIfRxPduReadData */
		#endif
		#if(STD_ON == CANIF_RX_PDU_RANGE_CANID)
		NULL_PTR,      /* CanIfRxPduRangePtr */
		#endif
		#if(CANIF_FILTER_TYPE_INDEX == CANIF_PRIVATE_SOFTWARE_FILTER_TYPE)
		10,      /*CanIfRxPduNextHrh*/
		#endif

	},

	/* 10*/   /* CanIfRxPduId*/
	{
		#if (STD_ON == CANIF_UPPER_LAYER_HANDLE)
		10,             /* CanIfRxPduUpperLayerHandle */
		#endif
		0x407,         /* BCM_L CanId*/
		STANDARD_CAN,  /* CanIdType */
		0,             /*CanIfRxPduHrhIdRef*/
		8,             /* CanIfRxPduDlc */
		Com_RxIndication,      /* CanIfRxPduUserRxIndicationName */
		#if(STD_ON == CANIF_PUBLIC_READRXPDU_NOTIFY_STATUS_API)
		FALSE,         /* CanIfRxPduReadNotifyStatus */
		#endif
		#if(STD_ON == CANIF_PUBLIC_READRXPDU_DATA_API)
		FALSE,         /* CanIfRxPduReadData */
		#endif
		#if(STD_ON == CANIF_RX_PDU_RANGE_CANID)
		NULL_PTR,      /* CanIfRxPduRangePtr */
		#endif
		#if(CANIF_FILTER_TYPE_INDEX == CANIF_PRIVATE_SOFTWARE_FILTER_TYPE)
		11,      /*CanIfRxPduNextHrh*/
		#endif

	},

	/* 11*/   /* CanIfRxPduId*/
	{
		#if (STD_ON == CANIF_UPPER_LAYER_HANDLE)
		11,             /* CanIfRxPduUpperLayerHandle */
		#endif
		0x4bf,         /*METER_1_DIR CanId*/
		STANDARD_CAN,  /* CanIdType */
		0,             /*CanIfRxPduHrhIdRef*/
		8,             /* CanIfRxPduDlc */
		Com_RxIndication,      /* CanIfRxPduUserRxIndicationName */
		#if(STD_ON == CANIF_PUBLIC_READRXPDU_NOTIFY_STATUS_API)
		FALSE,         /* CanIfRxPduReadNotifyStatus */
		#endif
		#if(STD_ON == CANIF_PUBLIC_READRXPDU_DATA_API)
		FALSE,         /* CanIfRxPduReadData */
		#endif
		#if(STD_ON == CANIF_RX_PDU_RANGE_CANID)
		NULL_PTR,      /* CanIfRxPduRangePtr */
		#endif
		#if(CANIF_FILTER_TYPE_INDEX == CANIF_PRIVATE_SOFTWARE_FILTER_TYPE)
		12,      /*CanIfRxPduNextHrh*/
		#endif

	},

	/* 12*/   /* CanIfRxPduId*/
	{
		#if (STD_ON == CANIF_UPPER_LAYER_HANDLE)
		12,             /* CanIfRxPduUpperLayerHandle */
		#endif
		0x4e6,         /*BCM_R CanId*/
		STANDARD_CAN,  /* CanIdType */
		0,             /*CanIfRxPduHrhIdRef*/
		8,             /* CanIfRxPduDlc */
		Com_RxIndication,      /* CanIfRxPduUserRxIndicationName */
		#if(STD_ON == CANIF_PUBLIC_READRXPDU_NOTIFY_STATUS_API)
		FALSE,         /* CanIfRxPduReadNotifyStatus */
		#endif
		#if(STD_ON == CANIF_PUBLIC_READRXPDU_DATA_API)
		FALSE,         /* CanIfRxPduReadData */
		#endif
		#if(STD_ON == CANIF_RX_PDU_RANGE_CANID)
		NULL_PTR,      /* CanIfRxPduRangePtr */
		#endif
		#if(CANIF_FILTER_TYPE_INDEX == CANIF_PRIVATE_SOFTWARE_FILTER_TYPE)
		13,      /*CanIfRxPduNextHrh*/
		#endif

	},

	/* 13*/   /* CanIfRxPduId*/
	{
		#if (STD_ON == CANIF_UPPER_LAYER_HANDLE)
		13,             /* CanIfRxPduUpperLayerHandle */
		#endif
		0x4c1,         /* HEAT CanId*/
		STANDARD_CAN,  /* CanIdType */
		0,             /*CanIfRxPduHrhIdRef*/
		8,             /* CanIfRxPduDlc */
		Com_RxIndication,      /* CanIfRxPduUserRxIndicationName */
		#if(STD_ON == CANIF_PUBLIC_READRXPDU_NOTIFY_STATUS_API)
		FALSE,         /* CanIfRxPduReadNotifyStatus */
		#endif
		#if(STD_ON == CANIF_PUBLIC_READRXPDU_DATA_API)
		FALSE,         /* CanIfRxPduReadData */
		#endif
		#if(STD_ON == CANIF_RX_PDU_RANGE_CANID)
		NULL_PTR,      /* CanIfRxPduRangePtr */
		#endif
		#if(CANIF_FILTER_TYPE_INDEX == CANIF_PRIVATE_SOFTWARE_FILTER_TYPE)
		14,      /*CanIfRxPduNextHrh*/
		#endif

	},

	/* 14*/   /* CanIfRxPduId*/
	{
		#if (STD_ON == CANIF_UPPER_LAYER_HANDLE)
		14,             /* CanIfRxPduUpperLayerHandle */
		#endif
		0x29c,        /* ADAS CanId*/
		STANDARD_CAN,  /* CanIdType */
		0,             /*CanIfRxPduHrhIdRef*/
		8,             /* CanIfRxPduDlc */
		Com_RxIndication,      /* CanIfRxPduUserRxIndicationName */
		#if(STD_ON == CANIF_PUBLIC_READRXPDU_NOTIFY_STATUS_API)
		FALSE,         /* CanIfRxPduReadNotifyStatus */
		#endif
		#if(STD_ON == CANIF_PUBLIC_READRXPDU_DATA_API)
		FALSE,         /* CanIfRxPduReadData */
		#endif
		#if(STD_ON == CANIF_RX_PDU_RANGE_CANID)
		NULL_PTR,      /* CanIfRxPduRangePtr */
		#endif
		#if(CANIF_FILTER_TYPE_INDEX == CANIF_PRIVATE_SOFTWARE_FILTER_TYPE)
		15,      /*CanIfRxPduNextHrh*/
		#endif

	},

	 /* 15*/   /* CanIfRxPduId*/ 
    {
        #if (STD_ON == CANIF_UPPER_LAYER_HANDLE)
        0,             /* CanIfRxPduUpperLayerHandle */
        #endif
        0x50D,         /* CanId*/
        STANDARD_CAN,  /* CanIdType */
        0,             /*CanIfRxPduHrhIdRef*/
        8,             /* CanIfRxPduDlc */
        NULL_PTR,      /* CanIfRxPduUserRxIndicationName */
        #if(STD_ON == CANIF_PUBLIC_READRXPDU_NOTIFY_STATUS_API)
        FALSE,         /* CanIfRxPduReadNotifyStatus */
        #endif
        #if(STD_ON == CANIF_PUBLIC_READRXPDU_DATA_API)
        FALSE,         /* CanIfRxPduReadData */
        #endif
        #if(STD_ON == CANIF_RX_PDU_RANGE_CANID)
        (&(CanIfRxPduCanIdRangeConfig [0])),      /* CanIfRxPduRangePtr */
        #endif
        #if(CANIF_FILTER_TYPE_INDEX == CANIF_PRIVATE_SOFTWARE_FILTER_TYPE)
        16,      /*CanIfRxPduNextHrh*/
        #endif

    },

	/* 16*/   /* CanIfRxPduId*/
	{
		#if (STD_ON == CANIF_UPPER_LAYER_HANDLE)
		0,             /* CanIfRxPduUpperLayerHandle */
		#endif
		0x711,   //0X18DADFF1      /* CanId*/
		STANDARD_CAN,  /* CanIdType */
		0,             /*CanIfRxPduHrhIdRef*/
		8,             /* CanIfRxPduDlc */
		CanTp_RxIndication,      /* CanIfRxPduUserRxIndicationName */
		#if(STD_ON == CANIF_PUBLIC_READRXPDU_NOTIFY_STATUS_API)
		FALSE,         /* CanIfRxPduReadNotifyStatus */
		#endif
		#if(STD_ON == CANIF_PUBLIC_READRXPDU_DATA_API)
		FALSE,         /* CanIfRxPduReadData */
		#endif
		#if(STD_ON == CANIF_RX_PDU_RANGE_CANID)
		NULL_PTR,      /* CanIfRxPduRangePtr */
		#endif
		#if(CANIF_FILTER_TYPE_INDEX == CANIF_PRIVATE_SOFTWARE_FILTER_TYPE)
		17,      /*CanIfRxPduNextHrh*/
		#endif

	},

	/* 17*/   /* CanIfRxPduId*/
	{
		#if (STD_ON == CANIF_UPPER_LAYER_HANDLE)
		1,             /* CanIfRxPduUpperLayerHandle */
		#endif
		0x7df,  //0X18DB33F1       /* CanId*/
		STANDARD_CAN,  /* CanIdType */
		0,             /*CanIfRxPduHrhIdRef*/
		8,             /* CanIfRxPduDlc */
		CanTp_RxIndication,      /* CanIfRxPduUserRxIndicationName */
		#if(STD_ON == CANIF_PUBLIC_READRXPDU_NOTIFY_STATUS_API)
		FALSE,         /* CanIfRxPduReadNotifyStatus */
		#endif
		#if(STD_ON == CANIF_PUBLIC_READRXPDU_DATA_API)
		FALSE,         /* CanIfRxPduReadData */
		#endif
		#if(STD_ON == CANIF_RX_PDU_RANGE_CANID)
		NULL_PTR,      /* CanIfRxPduRangePtr */
		#endif
		#if(CANIF_FILTER_TYPE_INDEX == CANIF_PRIVATE_SOFTWARE_FILTER_TYPE)
		CANIF_LAST_HRH_RXPDUID,      /*CanIfRxPduNextHrh*/
		#endif

	}
};

#if(CANIF_FILTER_TYPE_INDEX == CANIF_PRIVATE_SOFTWARE_FILTER_TYPE)	//默認是 這配置宏
CONST(Can_HwHandleType, CANIF_CONFIG_CONST)
									 CanIfHrhFirstRxPduID[CANIF_CFG_TOTAL_HRH] =
{
	/* HRH-0 */
	0,
};
#endif

#if(STD_ON == CANIF_HRH_RANGE_FILTER)  //默認宏 關閉 
CONST(CanIf_HrhRangeCfgType, CANIF_CONFIG_CONST)
										 CanIfHrhRangeCfg[CANIF_CFG_TOTAL_HRH] =
{
	 /*HRH-0*/
	 {
		 0x85,  			/*CanIfHrhRangeRxPduLowerCanId*/
		 0x7df,  			/*CanIfHrhRangeRxPduUpperCanId */
		 STANDARD_CAN   			/* CanIfHrhRangeRxPduRangeCanIdType */
	 },
};
#endif

CONST(CanIf_TxPduConfigType, CANIF_CONFIG_CONST)
									 CanIfTxPduConfig[CANIF_CFG_TOTAL_TXPDUID] =
{
	/*0*/       /* CanIfTxPduId*/
	{
		#if (STD_ON == CANIF_UPPER_LAYER_HANDLE)
		0, 							/* CanIfTxPduUpperLayerHandle*/
		#endif
		0x4a8, //						/* CanId*/
		STANDARD_CAN,				/* CanIdType */
		1,							/* CanIfTxPduHthIdRef 指的就是 CanHardwareObjectConfig的 buf id */
		8u,							/* CanIfTxPduDLC */ //CAN_FRAME_COM_DLC
		Com_TxConfirmation,      /* CanIfRxPduUserRxIndicationName */
		#if (STD_ON == CANIF_PUBLIC_SETDYNAMICTXID_API)
		STATIC_TXPDU,           /* CanIfTxPduType */
		#endif
		#if(STD_ON == CANIF_PUBLIC_READTXPDU_NOTIFY_STATUS_API)
		FALSE,    			/* CanIfTxPduReadNotifyStatus */
		#endif
	},
	/*1*/       /* CanIfTxPduId*/
	{
		#if (STD_ON == CANIF_UPPER_LAYER_HANDLE)
		1, 							/* CanIfTxPduUpperLayerHandle*/
		#endif
		0x3b0, 	//					/* CanId*/
		STANDARD_CAN,				/* CanIdType */
		1,							/* CanIfTxPduHthIdRef 指的就是 CanHardwareObjectConfig 的 buf id */
		8u,							/* CanIfTxPduDLC */  //COM_TX_MSG_2_MAX_LEN 如果這裡超過，最大長度，會只發當前長度
		Com_TxConfirmation,      /* CanIfRxPduUserRxIndicationName */
		#if (STD_ON == CANIF_PUBLIC_SETDYNAMICTXID_API)
		STATIC_TXPDU,           /* CanIfTxPduType */
		#endif
		#if(STD_ON == CANIF_PUBLIC_READTXPDU_NOTIFY_STATUS_API)
		FALSE,    			/* CanIfTxPduReadNotifyStatus */
		#endif

	},
	/*2*/       /* CanIfTxPduId*/
	{
		#if (STD_ON == CANIF_UPPER_LAYER_HANDLE)
		2, 							/* CanIfTxPduUpperLayerHandle*/
		#endif
		0x429, 	//157					/* CanId*/
		STANDARD_CAN,				/* CanIdType */
		1,							/* CanIfTxPduHthIdRef 指的就是 CanHardwareObjectConfig的 buf id */
		8,							/* CanIfTxPduDLC */
		Com_TxConfirmation,      /* CanIfRxPduUserRxIndicationName */
		#if (STD_ON == CANIF_PUBLIC_SETDYNAMICTXID_API)
		STATIC_TXPDU,           /* CanIfTxPduType */
		#endif
		#if(STD_ON == CANIF_PUBLIC_READTXPDU_NOTIFY_STATUS_API)
		FALSE,    			/* CanIfTxPduReadNotifyStatus */
		#endif

	},
	/*3*/       /* CanIfTxPduId*/
    {
        #if (STD_ON == CANIF_UPPER_LAYER_HANDLE)
        0, 							/* CanIfTxPduUpperLayerHandle*/
        #endif
        0x532, 						/* CanId*/
        STANDARD_CAN,				/* CanIdType */
        1,							/* CanIfTxPduHthIdRef */
        8,							/* CanIfTxPduDLC */
        CanNm_TxConfirmation,      /* CanIfRxPduUserRxIndicationName */
        #if (STD_ON == CANIF_PUBLIC_SETDYNAMICTXID_API)
        STATIC_TXPDU,           /* CanIfTxPduType */
        #endif
        #if(STD_ON == CANIF_PUBLIC_READTXPDU_NOTIFY_STATUS_API)
        FALSE,    			/* CanIfTxPduReadNotifyStatus */
        #endif
    },
    	/*4*/       /* CanIfTxPduId*/ //注意这个buf Index 就是 ADPT_UDS_TX_HANDLE ，并且要修改 CanTp_TxNsduCfg 中的第二个参数
	{
		#if (STD_ON == CANIF_UPPER_LAYER_HANDLE)
		0, 							/* CanIfTxPduUpperLayerHandle*/
		#endif
		0x719, 						/* CanId*/
		STANDARD_CAN,				/* CanIdType */
		1,							/* CanIfTxPduHthIdRef 指的就是 CanHardwareObjectConfig的 buf id */
		8,							/* CanIfTxPduDLC */
		CanTp_TxConfirmation,      /* CanIfRxPduUserRxIndicationName */
		#if (STD_ON == CANIF_PUBLIC_SETDYNAMICTXID_API)
		STATIC_TXPDU,           /* CanIfTxPduType */
		#endif
		#if(STD_ON == CANIF_PUBLIC_READTXPDU_NOTIFY_STATUS_API)
		FALSE,    			/* CanIfTxPduReadNotifyStatus */
		#endif
	},
};

#define CANIF_STOP_SEC_CONFIG_DATA_UNSPECIFIED
#include "MemMap.h"