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

#ifndef _COM_CFG_H_
#define _COM_CFG_H_

/*******************************************************************************
*   Includes
*******************************************************************************/
#include "Com_Types.h"
/*adding underlying layer's head files here if necessary*/
#include "CanIf.h"
/*******************************************************************************
*   Macro define
*******************************************************************************/
#define COM_ENABLE_RETRANSMIT	//重發機制
//#define COM_ENABLE_ACTIVEPORPERTY  --D50開啟了該宏
#define COM_ENABLE_TX_CONFIRMATIONFUN	//發送成功後的回調函數
#define COM_ENABLE_TX_CONFIRMATIONFLAG	//發送成功後以標志的形式通知應用程序
#define COM_ENABLE_TX_TO_INDFUN 	//發送超時的回調
#define COM_ENABLE_TX_TO_INDFLAG    //發送超時後，以標志形式 通知應用程序
#define COM_ENABLE_RX_INDICATIONFUN  //接收數據後，如果需要使用回調函數通知應用程序
#define COM_ENABLE_RX_INDICATIONFLAG  //接收數據後，如果需要使用標志的形式通知應用程序；
#define COM_ENABLE_RX_TIMEOUTINDICATIONFUN  //接數超時，回調
#define COM_ENABLE_RX_TIMEOUTINDICATIONFLAG  //接收超時，以標志形式
#define COM_ENABLE_RX_TIMEOUTVAULE     //理解為 超時時 記變量
#define COM_TXMAIN_FUNCTION_PERIOD                      5u  //該值表示，can的周期性任務是5ms， 如果改了，也要相應的更改
#define COM_RXMAIN_FUNCTION_PERIOD                      5u  //該值表示，can的周期性任務是5ms， 如果改了，也要相應的更改
#define COM_SIGNALROUTINEMAIN_FUNCTION_PERIOD           5u  //該值表示，can的周期性任務是5ms， 如果改了，也要相應的更改
/******************************************************************************/
/* Handles of send messages                                                   */
/******************************************************************************/
#define COM_TXIPDUSTEERING_RIGHT_SWITCH_4A8              0u
#define COM_TXIPDUSTEERING_LEFT_SWITCH_3B0               1u	
#define COM_TXIPDUSTEERING_CUSTOMIZATION_SWITCH_429      2u	


/******************************************************************************/
/* number of Tx object                                                        */
/******************************************************************************/
#define COM_TXIPDUNUM	 3u 

/******************************************************************************/
/* Handles of send signals      以下是信號的排序                                     */
/******************************************************************************/
#define  COM_TX_SIGSWS_R_SID              0u 	//ID
#define  COM_TX_SIGSWS_R_MULTIMEDIA       1u  //多媒体相关按键
#define  COM_TX_SIGSWS_R_METER_MENU       2u  //仪表菜单
#define  COM_TX_SIGSWS_R_VOICD_EXPAND     3u  //新增的扩展--
#define  COM_TX_SIGSWS_R_VOICD_EXPAND_2   4u  //新增的扩展2--
#define  COM_TX_SIGSWS_R_LEFT_MENU        5u  //左菜单
#define  COM_TX_SIGSWS_R_PADDLE_SHIFT     6u  	//换挡拨片
#define  COM_TX_SIGSWS_R_CRUISE           7u  //定速巡航
#define  COM_TX_SIGSWS_R_AUTO_SHOW_IN     8u  //展车模式
#define  COM_TX_SIGSWS_R_AUTO_SHOW_OUT    9u  //展车模式
#define  COM_TX_SIGSWS_R_MILEAGE_CLEAR    10u  //里程清0
#define  COM_TX_SIGSWS_R_MEDIA_RESET      11u  //多媒体重启
#define  COM_TX_SIGSWS_R_OTHER_RECOVER    12u  //多媒体重启
#define  COM_TX_SIGSWS_R_CHECKSUM         13u   //校验码

#define  COM_TX_SIGSWS_L_DIS_SET           14u  //距离设置
#define  COM_TX_SIGSWS_L_SPD_SET           15u //速度设置
#define  COM_TX_SIGSWS_L_CANCEL_DIPILOT    16u   //取消开关的信号
#define  COM_TX_SIGSWS_L_CRUISE_SPD_LIMIT  17u  //巡航或限速
#define  COM_TX_SIGSWS_L_RESET             18u   //复位信号
#define  COM_TX_SIGSWS_L_CRUISE_FAULT      19u  //巡航开关故障状态标志
#define  COM_TX_SIGSWS_L_SET               20u  //
#define  COM_TX_SIGSWS_L_DSP_SUB           21u //时距-
#define  COM_TX_SIGSWS_L_DSP_PLUS          22u  //时距+
#define  COM_TX_SIGSWS_L_LANE_LINE_ASSIST  23u  //车道线辅助(车道偏离)
#define  COM_TX_SIGSWS_L_CRUISE_SET        24u  //
#define  COM_TX_SIGSWS_L_ACC               25u  //
#define  COM_TX_SIGSWS_L_LEFT_PICK         26u //左拨片
#define  COM_TX_SIGSWS_L_RIGHT_PICK        27u //右拨片
#define  COM_TX_SIGSWS_L_ROLLING_COUNT     28u  //
#define  COM_TX_SIGSWS_L_CHECKSUM          29u  //

#define  COM_TX_SIGSWS_C_VIBRATION_CFG     30u
#define  COM_TX_SIGSWS_C_VIBRATION_STATE   21u
#define  COM_TX_SIGSWS_C_HEAT_CFG          32u
#define  COM_TX_SIGSWS_C_SWH_STATE         33u
#define  COM_TX_SIGSWS_C_SWS_CFG           34u
#define  COM_TX_SIGSWS_C_AUTO_HEAT         35u
#define  COM_TX_SIGSWS_C_HEAT_GEAR         36u
#define  COM_TX_SIGSWS_C_HEAT_GEAR_CFG     37u
/******************************************************************************/
/* number of Tx object Signal                                                 */
/******************************************************************************/
#define COM_TXSIGNUM	 38 




/******************************************************************************/
/* Send Signal structures                                                     */
/******************************************************************************/
typedef struct   
{
	COM_UINT8 SWS_R_SID : 8;  

	COM_UINT8 SWS_R_Multimedia : 8;  

	COM_UINT8 SWS_R_Meter_menu : 3;  
	COM_UINT8 Unused0 : 1;  
	COM_UINT8 SWS_R_voicd_expand : 2;  
	COM_UINT8 SWS_R_voicd_expand_2 : 2;  

	COM_UINT8 Unused1 : 4;  
	COM_UINT8 SWS_R_LEFT_Menu : 2;  
	COM_UINT8 Unused2 : 2;  

	COM_UINT8 SWS_R_paddle_shift : 2;  
	COM_UINT8 Unused3 : 2;  
	COM_UINT8 SWS_R_cruise : 4;  

	COM_UINT8 Unused4 : 2;  
	COM_UINT8 SWS_R_auto_show_in : 1;  
	COM_UINT8 SWS_R_auto_show_out : 1;  
	COM_UINT8 Unused5 : 1;  
	COM_UINT8 SWS_R_mileage_clear : 1;  
	COM_UINT8 Unused6 : 2;  
	
	COM_UINT8 SWS_R_Media_Reset : 1;  
	COM_UINT8 SWS_R_Other_Recover : 3;  
	COM_UINT8 Unused7 : 4;    
	COM_UINT8 SWS_R_checksum : 8;  

}IpduSteering_RIGHT_switch_4A8_Type;

typedef struct   
{
	COM_UINT8 SWS_L_Dis_set : 3;
	COM_UINT8 SWS_L_Spd_set : 3;
	COM_UINT8 SWS_L_Cancel_dipilot : 2;	

	COM_UINT8 SWS_L_Cruise_spd_limit : 2;
	COM_UINT8 SWS_L_reset : 2;
	COM_UINT8 SWS_L_Cruise_fault : 2;
	COM_UINT8 SWS_L_set : 1;
	COM_UINT8 SWS_L_Dsp_sub : 1;   //8

	COM_UINT8 SWS_L_Dsp_plus : 1;
	COM_UINT8 SWS_L_Lane_line_assist : 1;
	COM_UINT8 SWS_L_cruise_set : 1;
	COM_UINT8 SWS_L_acc : 1;
	COM_UINT8 Unused0 : 4;  //8

	COM_UINT8 Unused1 : 8;  //8

	COM_UINT8 Unused2 : 3 ; //8
	COM_UINT8 SWS_L_Left_pick : 2; 
	COM_UINT8 SWS_L_Right_pick : 2; 
	COM_UINT8 Unused3 : 1 ; 

	COM_UINT8 Unused4 : 8 ; //8

	COM_UINT8 Unused5 : 4;
	COM_UINT8 SWS_L_rolling_count : 4; //8

	COM_UINT8 SWS_L_checksum : 8; //8

}IpduSteering_LEFT_switch_3B0_Type;


typedef struct  //Steering_customization_switch
{


	COM_UINT8 SWS_C_vibration_cfg : 2;
	COM_UINT8 SWS_C_vibration_state : 2 ;
	COM_UINT8 SWS_C_Heat_cfg : 2;
	COM_UINT8 SWS_C_swh_state : 2;  //8

	COM_UINT8 SWS_C_sws_cfg : 6;
	COM_UINT8 SWS_C_auto_heat : 2;  //8

	COM_UINT8 Unused0 : 1;  //1
	COM_UINT8 SWS_C_heat_gear : 4;  //4
	COM_UINT8 Unused1 : 3;  //3

	COM_UINT8 Unused2 : 8;  //8
	COM_UINT8 Unused3 : 8;  //8
	COM_UINT8 Unused4 : 8;  //8
	COM_UINT8 SWS_C_heat_gear_cfg : 3;  //8
	COM_UINT8 Unused5 : 5;  //8
	COM_UINT8 Unused6 : 8;  //8


}IpduSteering_customization_switch_429_Type;
//#pragma pack()

/********************************************************************************/
/* Send Message unions */
/********************************************************************************/
typedef union {
	IpduSteering_RIGHT_switch_4A8_Type IpduSteering_RIGHT_switch_4A8;
	COM_UINT8 _c[8];
}IpduSteering_RIGHT_switch_4A8_bufType;

typedef union {
IpduSteering_LEFT_switch_3B0_Type IpduSteering_LEFT_switch_3B0;
  COM_UINT8 _c[8];
}IpduSteering_LEFT_switch_3B0_bufType;

typedef union {
IpduSteering_customization_switch_429_Type IpduSteering_customization_switch_429;
  COM_UINT8 _c[8];
}IpduSteering_customization_switch_429_bufType;


/******************************************************************************/
/* Databuffer for sended objects                                              */
/******************************************************************************/
extern IpduSteering_RIGHT_switch_4A8_bufType         TxIpduSteering_RIGHT_switch_4A8; //在數組 COM_TxDataInitInfo 裡面
extern IpduSteering_LEFT_switch_3B0_bufType         TxIpduSteering_LEFT_switch_3B0; //在數組 COM_TxDataInitInfo 裡面
extern IpduSteering_customization_switch_429_bufType         TxIpduSteering_customization_switch_429; //在數組 COM_TxDataInitInfo 裡面


/******************************************************************************/
/* Databuffer for Sended Message default Value                                */
/******************************************************************************/
extern COM_CONST IpduSteering_RIGHT_switch_4A8_bufType         TxIpduSteering_RIGHT_switch_4A8DefualtValue;   //在數組 COM_TxIpduDefaultValue 裡面
extern COM_CONST IpduSteering_LEFT_switch_3B0_bufType         TxIpduSteering_LEFT_switch_3B0DefualtValue;   //在數組 COM_TxIpduDefaultValue 裡面
extern COM_CONST IpduSteering_customization_switch_429_bufType         TxIpduSteering_customization_switch_429DefualtValue;   //在數組 COM_TxIpduDefaultValue 裡面


#if (COM_TXIPDUNUM>=1)
/******************************************************************************/
/*used for application:message tx timeout indication flag                     */
/******************************************************************************/
#ifdef COM_ENABLE_TX_TO_INDFLAG
extern COM_UINT8 Com_TxIpduTimeOutFlag[COM_TXIPDUNUM];	//超时标志
#define COM_TXIPDUDMS_MODE_TO_FLAG       Com_TxIpduTimeOutFlag[0]	//为何没见调用
#endif
/******************************************************************************/
/* used for application:message tx timeout indication Function                */
/******************************************************************************/
#ifdef COM_ENABLE_TX_TO_INDFUN
extern void AppIpduSteering_RIGHT_switch_4A8_TxTOIndication(void);
extern void AppIpduSteering_LEFT_switch_3B0_TxTOIndication(void);  //超时回调函数
extern void AppIpduSteering_customization_switch_429_TxTOIndication(void);
#endif

/******************************************************************************/
/* tx confirmation flag definition                                            */
/******************************************************************************/
#ifdef COM_ENABLE_TX_CONFIRMATIONFLAG
extern COM_UINT8 Com_TxIdpuConfFlag[COM_TXIPDUNUM];
#define COM_TXIPDUDMS_MODE_CONF_FLAG    Com_TxIdpuConfFlag[0]  //为何没见调用
#endif

/******************************************************************************/
/*                   tx confirmation function definition                      */
/******************************************************************************/
#ifdef COM_ENABLE_TX_CONFIRMATIONFUN
extern void AppIpduSteering_RIGHT_switch_4A8_Conf(void);
extern void AppIpduSteering_LEFT_switch_3B0_Conf(void);	//放在 COM_IpduTxConfirmFunPtr 數組下;真正的確認發送
extern void AppIpduSteering_customization_switch_429_Conf(void);
#endif


#endif /*#if (COM_TXIPDUNUM>=1)*/


/******************************************************************************/
/* number of Rx object Ipdu                                                   */
/******************************************************************************/
#define COM_RXIPDUNUM 15u  		//除诊断外 要接收6个不同的canid的msg
/******************************************************************************/
/* Handles of receive messages          接收msg的排序                                      */
/******************************************************************************/
#define  COM_RXIPDUMPC_316                    0u	//
#define  COM_RXIPDUMETER_055                  1u	//
#define  COM_RXIPDUBCM_1_12D                  2u	//
#define  COM_RXIPDUBCM_2_50D                  3u  //
#define  COM_RXIPDUMOD_4G_49A                 4u  //
#define  COM_RXIPDUMULTIMEDIA_385             5u  //
#define  COM_RXIPDUCLOUD_SERVICES_0A2         6u  //
#define  COM_RXIPDUBCM_EVP2_394               7u  //
#define  COM_RXIPDUAIR_CONDITION_CTRL_2DB     8u  //
#define  COM_RXIPDUVCU_40D                    9u  //
#define  COM_RXIPDUBCM_L_407                  10u //
#define  COM_RXIPDUMETER_1_DIR_4BF            11u//
#define  COM_RXIPDUBCM_R_4E6                  12u  //
#define  COM_RXIPDUHEAT_4C1                   13u
#define  COM_RXIPDUADS_29C                    14u
/******************************************************************************/
/*the buffer size of Message received                                         */
/******************************************************************************/
#define COM_RXIPDUMPC_316_BUFFER_SIZE                	8u
#define COM_RXIPDUMETER_055_BUFFER_SIZE                	8u
#define COM_RXIPDUBCM_1_12D_BUFFER_SIZE                	8u
#define COM_RXIPDUBCM_2_50D_BUFFER_SIZE                	8u
#define COM_RXIPDUMOD_4G_49A_BUFFER_SIZE                8u
#define COM_RXIPDUMULTIMEDIA_385_BUFFER_SIZE            8u
#define COM_RXIPDUCLOUD_SERVICES_0A2_BUFFER_SIZE        8u
#define COM_RXIPDUBCM_EVP2_394_BUFFER_SIZE              8u
#define COM_RXIPDUAIR_CONDITION_CTRL_2DB_BUFFER_SIZE    8u
#define COM_RXIPDUVCU_40D_BUFFER_SIZE                	8u
#define COM_RXIPDUBCM_L_407_BUFFER_SIZE                 8u
#define COM_RXIPDUMETER_1_DIR_4BF_BUFFER_SIZE           8u
#define COM_RXIPDUBCM_R_4E6_BUFFER_SIZE                	8u
#define COM_RXIPDUHEAT_4C1_BUFFER_SIZE                	8u
#define COM_RXIPDUADS_29C_BUFFER_SIZE                	8u
/******************************************************************************/
/* Handles of receive signals                                                 */
/******************************************************************************/
#define  COM_RXSIGMPC_L_LT_STATUS               0u
#define  COM_RXSIGMPC_R_LT_STATUS               1u
#define  COM_RXSIGMPC_LD_ALARM_MODE_STA         2u


#define  COM_RXSIGMETER_BACKGROUNDLIGHTLVLCMD   3u


#define  COM_RXSIGBCM1_POWER_GEAR               4u
#define  COM_RXSIGBCM1_VEHICLE_STATE            5u
#define  COM_RXSIGBCM1_VEHICLE_STATE1           6u


#define  COM_RXSIGBCM2_NM_SLEEP_STATE           7u


#define  COM_RXSIGMOD_4G_ECL_POWER_REQ          8u
#define  COM_RXSIGMOD_4G_OTA_LIGHT_REQ          9u
#define  COM_RXSIGMOD_4G_ENTER_OTA_MODE_REQ     10u
#define  COM_RXSIGMOD_4G_OTA_UPDATE_REQ         11u
#define  COM_RXSIGMOD_4G_CHECKSUM               12u


#define  COM_RXSIGMULTIMEDIA_SW_HEAT            13u  //




#define  COM_RXSIGCLOUD_SERVICE_REMOTE_CMD      14u  //
#define  COM_RXSIGCLOUD_SERVICE_SW_HEAT         15u  //15


#define  COM_RXSIGBCM_EVP2_VEHICLE_STATE        16u


#define  COM_RXSIGAIR_CD_CTRL_TEMP_SHOW         17u

#define  COM_RXSIGVCU_ECM_VEHICLE_CODE_S        18u


#define  COM_RXSIGBCM_L_NM_TYPE                 19u


#define  COM_RXSIGMETER1_BACKGROUNDLIGHTLVLCMD  20u

#define  COM_RXSIGMETER1_The_Limit_Acc  21u

#define  COM_RXSIGBCM_R_AIR_TEMP_SHOW           22u


#define  COM_RXSIGHEAT_SUBID                    23u
#define  COM_RXSIGHEAT_AUTO_HEAT                24u
#define  COM_RXSIGHEAT_HEAT_GEAR                25u


#define  COM_RXSIGADS_ACC_MODE_DISPLAYL         26u
#define  COM_RXSIGADS_DNP_STATS                 27u         
#define  COM_RXSIGADS_DNP_TAKE_OVER_REQ_S       28u


/******************************************************************************/
/* number of Rx object Signal                                                 */
/******************************************************************************/
#define COM_RXSIGNUM	29u	


/******************************************************************************/
/* Receive Signal structures                                                  */
/******************************************************************************/
typedef struct {  

	COM_UINT8 Unused0 : 4;
	COM_UINT8 MPC_L_lt_status : 2;
	COM_UINT8 Unused1 : 2; //8

	COM_UINT8 Unused2:8;  //8

	COM_UINT8 Unused3:8;  //8
	COM_UINT8 Unused4:8;  //8

	COM_UINT8 Unused5 : 2;
	COM_UINT8 MPC_R_lt_status : 2;
	COM_UINT8 Unused6 : 4;  //8

	COM_UINT8 Unused7 : 8; //8

	COM_UINT8 MPC_Ld_alarm_mode_sta : 2;
	COM_UINT8 Unused8 : 6;  //8

	COM_UINT8 Unused9:8;  //8


}IpduMPC_316_Type;  //MPC

typedef struct
{
	COM_UINT8 Unused0 : 8;
	COM_UINT8 Unused1 : 8;

	COM_UINT8 Unused2 : 8;
	COM_UINT8 Unused3 : 8;

	COM_UINT8 Unused4 : 8;
	COM_UINT8 Unused5 : 3;
	COM_UINT8 METER_BackgroundLightLvlCmd : 5;

	COM_UINT8 Unused6 : 8;
	COM_UINT8 Unused7 : 8;
}IpduMETER_055_Type;  //meter


typedef struct {

	COM_UINT8 Unused0 : 8;  //8
	COM_UINT8 Unused1 : 8;  //8
	COM_UINT8 Unused2 : 8;  //8

	COM_UINT8 BCM1_vehicle_state : 4;
	COM_UINT8 Unused3 : 4;  //8

	COM_UINT8 Unused4 : 2;
	COM_UINT8 BCM1_power_gear : 3;
	COM_UINT8 BCM1_vehicle_state1 : 3;  //8
	COM_UINT8 Unused5 : 8; //8

	COM_UINT8 Unused6 : 8;
	COM_UINT8 Unused7 : 8;


}IpduBCM_1_12D_Type;  //bcm1


typedef struct {


	COM_UINT8 Unused0 : 8;
	COM_UINT8 Unused1 : 8;
	COM_UINT8 Unused2 : 8;
	COM_UINT8 Unused3 : 8;

	COM_UINT8 Unused4 : 4;
	COM_UINT8 BCM2_nm_sleep_state : 4;
	COM_UINT8 Unused5 : 8; //8

	COM_UINT8 Unused6 : 8;
	COM_UINT8 Unused7 : 8;


}IpduBCM_2_50D_Type;   // bcm2



typedef struct {
	COM_UINT8 MOD_4G_Ecl_power_req : 1;
	COM_UINT8 MOD_4G_ota_light_req : 1;
	COM_UINT8 Unused0 : 2;
	COM_UINT8 MOD_4G_enter_ota_mode_req : 1;
	COM_UINT8 MOD_4G_ota_update_req : 3;  //8
	COM_UINT8 Unused1 : 8;  //8

	COM_UINT8 Unused2 : 8;
	COM_UINT8 Unused3 : 8;

	COM_UINT8 Unused4 : 8;
	COM_UINT8 Unused5 : 8;

	COM_UINT8 Unused6 : 8;
	COM_UINT8 MOD_4G_checksum : 8;
}IpduMOD_4G_49A_Type;  //	4g mod


typedef struct {
	COM_UINT8 Unused0 : 8;
	COM_UINT8 Unused1 : 8;  //8

	COM_UINT8 Unused2 : 8;
	COM_UINT8 Unused3 : 8;

	COM_UINT8 Unused4 : 8;

	COM_UINT8 Unused5 : 5;
	COM_UINT8 MULTIMEDIA_Sw_heat : 2;
	COM_UINT8 Unused6 : 1;

	COM_UINT8 Unused7 : 8;
	COM_UINT8 Unused8 : 8;

}IpduMultimedia_385_Type;  //multi


typedef struct {
	COM_UINT8 Cloud_Service_remote_cmd : 8;
	COM_UINT8 Unused0 : 8;
	

	COM_UINT8 Unused1 : 8;
	COM_UINT8 Unused2 : 8;

	COM_UINT8 Unused3 : 8;
	COM_UINT8 Unused4 : 6;
	COM_UINT8 Cloud_Service_Sw_heat : 2;

	COM_UINT8 Unused5 : 8;
	COM_UINT8 Unused6 : 8;
}IpduCloud_services_0A2_Type;  //cloud service


typedef struct {

	COM_UINT8 Unused0 : 8;
	COM_UINT8 Unused1 : 8;
	COM_UINT8 Unused2 : 8;
	COM_UINT8 Unused3 : 8;

	COM_UINT8 Unused4 : 4;
	COM_UINT8 BCM_EVP2_vehicle_state : 4;
	COM_UINT8 Unused5 : 8;

	COM_UINT8 Unused6 : 8;
	COM_UINT8 Unused7 : 8;


}IpduBCM_EvP2_394_Type;   //bcm evp2

typedef struct {


	COM_UINT8 Unused0 : 8;
	COM_UINT8 Unused1 : 8;
	COM_UINT8 Unused2 : 8;

	COM_UINT8 Unused3 : 3;
	COM_UINT8 AIR_CD_ctrl_temp_show : 3;
	COM_UINT8 Unused4 : 2;

	COM_UINT8 Unused5 : 8;
	COM_UINT8 Unused6 : 8;

	COM_UINT8 Unused7 : 8;
	COM_UINT8 Unused8 : 8;


}IpduAir_condition_ctrl_2DB_Type;   //air condition ctrl


typedef struct {


	COM_UINT8 Unused0 : 8;
	COM_UINT8 VCU_ECM_Vehicle_code_s : 8;
	COM_UINT8 Unused1 : 8;
	COM_UINT8 Unused2 : 8;
	
	COM_UINT8 Unused3 : 8;
	COM_UINT8 Unused4 : 8;

	COM_UINT8 Unused5 : 8;
	COM_UINT8 Unused6 : 8;


}IpduVCU_40D_Type;   //CAN_RX_ID_VCU


typedef struct {
	
	COM_UINT8 Unused0 : 8;
	COM_UINT8 Unused1 : 8;
	COM_UINT8 Unused2 : 8;
	COM_UINT8 Unused3 : 8;
	
	COM_UINT8 Unused4 : 8;
	
	COM_UINT8 BCM_L_nm_type : 1;
	COM_UINT8 Unused5 : 7;

	COM_UINT8 Unused6 : 8;
	COM_UINT8 Unused7 : 8;

}IpduBCM_L_407_Type;   //CAN_RX_ID_BCM_L


typedef struct
{
	COM_UINT8 Unused0:8;
	COM_UINT8 Unused1:8;

	COM_UINT8 Unused2 :8;
	COM_UINT8 Unused3 :8;

	COM_UINT8 Unused4:8;
	COM_UINT8 Unused5 : 8;

	COM_UINT8 METER1_BackgroundLightLvlCmd : 5;
	COM_UINT8 Unused6:3;
	COM_UINT8 Unused7:2;
	COM_UINT8 The_Limit_Acc:2;
	COM_UINT8 Unused8:4;

}IpduMETER_1_dir_4BF_Type;  //meter_1_dir


typedef struct {

	COM_UINT8 Unused0 : 8;
	COM_UINT8 Unused1 : 8;
	COM_UINT8 Unused2 : 8;

	COM_UINT8 Unused3 : 3;
	COM_UINT8 BCM_R_air_temp_show : 3;
	COM_UINT8 Unused4 : 2;

	COM_UINT8 Unused5 : 8;
	COM_UINT8 Unused6 : 8;

	COM_UINT8 Unused7 : 8;
	COM_UINT8 Unused8 : 8;

}IpduBCM_R_4E6_Type;   //bcm r 

typedef struct {


	COM_UINT8 HEAT_subid : 8;

	COM_UINT8 HEAT_auto_heat : 2;
	COM_UINT8 HEAT_heat_gear : 4;
	COM_UINT8 Unused0 : 2;

	COM_UINT8 Unused1 : 8;
	COM_UINT8 Unused2 : 8;

	COM_UINT8 Unused3 : 8;
	COM_UINT8 Unused4 : 8;

	COM_UINT8 Unused5 : 8;
	COM_UINT8 Unused6 : 8;


}IpduHEAT_4C1_Type;   //heat

typedef struct {
	COM_UINT8 Unused0 : 4;
	COM_UINT8 ADS_ACC_Mode_Displayl : 4;

	COM_UINT8 Unused1 : 8;
	COM_UINT8 Unused2 : 8;
	COM_UINT8 ADS_DNP_Stats : 4;

	COM_UINT8 Unused3 : 4;
	COM_UINT8 Unused4 : 8;

	COM_UINT8 ADS_DNP_Take_Over_Req_S : 3;
	COM_UINT8 Unused5 : 5;

	COM_UINT8 Unused6 : 8;
	COM_UINT8 Unused7 : 8;

}IpduADS_29C_Type;   //heat

/********************************************************************************/
/* Receive Message unions */
/********************************************************************************/
typedef union {
IpduMPC_316_Type IpduMPC_316;
	COM_UINT8 _c[8];
}IpduMPC_316_bufType;
typedef union {
IpduMETER_055_Type IpduMETER_055;
	COM_UINT8 _c[8];
}IpduMETER_055_bufType;
typedef union {
IpduBCM_1_12D_Type IpduBCM_1_12D;
	COM_UINT8 _c[8];
}IpduBCM_1_12D_bufType;
typedef union {
IpduBCM_2_50D_Type IpduBCM_2_50D;
	COM_UINT8 _c[8];
}IpduBCM_2_50D_bufType;
typedef union {
IpduMOD_4G_49A_Type IpduMOD_4G_49A;
	COM_UINT8 _c[8];
}IpduMOD_4G_49A_bufType;
typedef union {
IpduMultimedia_385_Type IpduMultimedia_385;
	COM_UINT8 _c[8];
}IpduMultimedia_385_bufType;
typedef union {
IpduCloud_services_0A2_Type IpduCloud_services_0A2;
	COM_UINT8 _c[8];
}IpduCloud_services_0A2_bufType;
typedef union {
IpduBCM_EvP2_394_Type IpduBCM_EvP2_394;
	COM_UINT8 _c[8];
}IpduBCM_EvP2_394_bufType;
typedef union {
IpduAir_condition_ctrl_2DB_Type IpduAir_condition_ctrl_2DB;
	COM_UINT8 _c[8];
}IpduAir_condition_ctrl_2DB_bufType;
typedef union {
IpduVCU_40D_Type IpduVCU_40D;
	COM_UINT8 _c[8];
}IpduVCU_40D_bufType;
typedef union {
IpduBCM_L_407_Type IpduBCM_L_407;
	COM_UINT8 _c[8];
}IpduBCM_L_407_bufType;
typedef union {
IpduMETER_1_dir_4BF_Type IpduMETER_1_dir_4BF;
	COM_UINT8 _c[8];
}IpduMETER_1_dir_4BF_bufType;
typedef union {
IpduBCM_R_4E6_Type IpduBCM_R_4E6;
	COM_UINT8 _c[8];
}IpduBCM_R_4E6_bufType;
typedef union {
IpduHEAT_4C1_Type IpduHEAT_4C1;
	COM_UINT8 _c[8];
}IpduHEAT_4C1_bufType;
typedef union {
IpduADS_29C_Type IpduADS_29C;
	COM_UINT8 _c[8];
}IpduADS_29C_bufType;
/******************************************************************************/
/* Databuffer for receive objects                                             */
/******************************************************************************/
extern IpduMPC_316_bufType         RxIpduMPC_316;
extern IpduMETER_055_bufType         RxIpduMETER_055;   //在數組 COM_RxDataInitInfo 裡面
extern IpduBCM_1_12D_bufType         RxIpduBCM_1_12D;
extern IpduBCM_2_50D_bufType         RxIpduBCM_2_50D;
extern IpduMOD_4G_49A_bufType         RxIpduMOD_4G_49A;
extern IpduMultimedia_385_bufType         RxIpduMultimedia_385;
extern IpduCloud_services_0A2_bufType         RxIpdCloud_services_0A2;
extern IpduBCM_EvP2_394_bufType         RxIpduBCM_EvP2_394;
extern IpduAir_condition_ctrl_2DB_bufType         RxIpduAir_condition_ctrl_2DB;
extern IpduVCU_40D_bufType         RxIpduVCU_40D;
extern IpduBCM_L_407_bufType         RxIpduBCM_L_407;
extern IpduMETER_1_dir_4BF_bufType         RxIpduMETER_1_dir_4BF;
extern IpduBCM_R_4E6_bufType         RxIpduBCM_R_4E6;
extern IpduHEAT_4C1_bufType         RxIpduHEAT_4C1;
extern IpduADS_29C_bufType         RxIpduADS_29C;
/******************************************************************************/
/* DefualtValue Databuffer for receive objects                                */
/******************************************************************************/
extern COM_CONST IpduMPC_316_bufType         RxIpduMPC_316DefualtValue;
extern COM_CONST IpduMETER_055_bufType         RxIpduMETER_055DefualtValue;   //在數組 COM_RxIpduDefaultValue 裡面
extern COM_CONST IpduBCM_1_12D_bufType         RxIpduBCM_1_12DDefualtValue;
extern COM_CONST IpduBCM_2_50D_bufType         RxIpduBCM_2_50DDefualtValue;
extern COM_CONST IpduMOD_4G_49A_bufType         RxIpduMOD_4G_49ADefualtValue;
extern COM_CONST IpduMultimedia_385_bufType         RxIpduMultimedia_385DefualtValue;
extern COM_CONST IpduCloud_services_0A2_bufType         RxIpdCloud_services_0A2DefualtValue;
extern COM_CONST IpduBCM_EvP2_394_bufType         RxIpduBCM_EvP2_394DefualtValue;
extern COM_CONST IpduAir_condition_ctrl_2DB_bufType         RxIpduAir_condition_ctrl_2DBDefualtValue;
extern COM_CONST IpduVCU_40D_bufType         RxIpduVCU_40DDefualtValue;
extern COM_CONST IpduBCM_L_407_bufType         RxIpduBCM_L_407DefualtValue;
extern COM_CONST IpduMETER_1_dir_4BF_bufType         RxIpduMETER_1_dir_4BFDefualtValue;
extern COM_CONST IpduBCM_R_4E6_bufType         RxIpduBCM_R_4E6DefualtValue;
extern COM_CONST IpduHEAT_4C1_bufType         RxIpduHEAT_4C1DefualtValue;
extern COM_CONST IpduADS_29C_bufType         RxIpduADS_29CDefualtValue;
/******************************************************************************/
/* Rx Timeout Value Databuffer for receive objects                            */
/******************************************************************************/
#ifdef COM_ENABLE_RX_TIMEOUTVAULE
extern COM_CONST  IpduMPC_316_bufType                  RxIpduMPC_316TimeoutValue;
extern COM_CONST  IpduMETER_055_bufType                  RxIpduMETER_055TimeoutValue;   //在數組 COM_IpduRxTimeoutValue 裡面
extern COM_CONST  IpduBCM_1_12D_bufType                  RxIpduBCM_1_12DTimeoutValue;
extern COM_CONST  IpduBCM_2_50D_bufType                  RxIpduBCM_2_50DTimeoutValue;
extern COM_CONST  IpduMOD_4G_49A_bufType                  RxIpduMOD_4G_49ATimeoutValue;
extern COM_CONST  IpduMultimedia_385_bufType                  RxIpduMultimedia_385TimeoutValue;
extern COM_CONST  IpduCloud_services_0A2_bufType                  RxIpdCloud_services_0A2TimeoutValue;
extern COM_CONST  IpduBCM_EvP2_394_bufType                  RxIpduBCM_EvP2_394TimeoutValue;
extern COM_CONST  IpduAir_condition_ctrl_2DB_bufType                  RxIpduAir_condition_ctrl_2DBTimeoutValue;
extern COM_CONST  IpduVCU_40D_bufType                  RxIpduVCU_40DTimeoutValue;
extern COM_CONST  IpduBCM_L_407_bufType                  RxIpduBCM_L_407TimeoutValue;
extern COM_CONST  IpduMETER_1_dir_4BF_bufType                  RxIpduMETER_1_dir_4BFTimeoutValue;
extern COM_CONST  IpduBCM_R_4E6_bufType                  RxIpduBCM_R_4E6TimeoutValue;
extern COM_CONST  IpduHEAT_4C1_bufType                  RxIpduHEAT_4C1TimeoutValue;
extern COM_CONST  IpduADS_29C_bufType                  RxIpduADS_29CTimeoutValue;
#endif

#if (COM_RXIPDUNUM>=1)
/******************************************************************************/
/*used for application:signal indication flag                                 */
/******************************************************************************/
#ifdef COM_ENABLE_RX_INDICATIONFLAG
extern COM_UINT8 Com_RxIpduIndicationFlag[COM_RXIPDUNUM]; //有收到RX一幀的標志
#define COM_RX_MSG_0_INDICATIONFLAG                      Com_RxIpduIndicationFlag[0]
#define COM_RX_MSG_1_INDICATIONFLAG                      Com_RxIpduIndicationFlag[1]
#define COM_RX_MSG_2_INDICATIONFLAG                      Com_RxIpduIndicationFlag[2]
#define COM_RX_MSG_3_INDICATIONFLAG                      Com_RxIpduIndicationFlag[3]
#define COM_RX_MSG_4_INDICATIONFLAG                      Com_RxIpduIndicationFlag[4]
#define COM_RX_MSG_5_INDICATIONFLAG                      Com_RxIpduIndicationFlag[5]
#define COM_RX_MSG_6_INDICATIONFLAG                      Com_RxIpduIndicationFlag[6]
#define COM_RX_MSG_7_INDICATIONFLAG                      Com_RxIpduIndicationFlag[7]
#define COM_RX_MSG_8_INDICATIONFLAG                      Com_RxIpduIndicationFlag[8]
#define COM_RX_MSG_9_INDICATIONFLAG                     Com_RxIpduIndicationFlag[9]
#define COM_RX_MSG_10_INDICATIONFLAG                     Com_RxIpduIndicationFlag[10]
#define COM_RX_MSG_11_INDICATIONFLAG                     Com_RxIpduIndicationFlag[11]
#define COM_RX_MSG_12_INDICATIONFLAG                     Com_RxIpduIndicationFlag[12]
#define COM_RX_MSG_13_INDICATIONFLAG                     Com_RxIpduIndicationFlag[13]
#define COM_RX_MSG_14_INDICATIONFLAG                     Com_RxIpduIndicationFlag[14]
#endif

/******************************************************************************/
/*Rx indication function definition                                           */
/******************************************************************************/
#ifdef COM_ENABLE_RX_INDICATIONFUN
extern void AppIpduMPC_316_Ind(void);
extern void AppIpduMETER_055_Ind(void);
extern void AppIpduBCM_1_12D_Ind(void);
extern void AppIpduBCM_2_50D_Ind(void);
extern void AppIpduMOD_4G_49A_Ind(void);
extern void AppIpduMultimedia_385_Ind(void);
extern void AppIpduCloud_services_0A2_Ind(void);
extern void AppIpduBCM_EvP2_394_Ind(void);
extern void AppIpduAir_condition_ctrl_2DB_Ind(void);
extern void AppIpduVCU_40D_Ind(void);
extern void AppIpduBCM_L_407_Ind(void);
extern void AppIpduMETER_1_dir_4BF_Ind(void);
extern void AppIpduBCM_R_4E6_Ind(void);
extern void AppIpduHEAT_4C1_Ind(void);
extern void AppIpduAds_29C_Ind(void);
#endif

/******************************************************************************/
/*rx Ipdu timeout indication flag definition                                  */
/******************************************************************************/
#ifdef COM_ENABLE_RX_TIMEOUTINDICATIONFLAG
extern COM_UINT8 Com_RxIpduTimeOutFlag[COM_RXIPDUNUM];    //數到幀 超時標志
#define COM_RXIPDUMPC_316_TIMEOUTFLAG      Com_RxIpduTimeOutFlag[0]
#define COM_RXIPDUMETER_055_TIMEOUTFLAG      Com_RxIpduTimeOutFlag[1]
#define COM_RXIPDUBCM_1_12D_TIMEOUTFLAG      Com_RxIpduTimeOutFlag[2]
#define COM_RXIPDUBCM_2_50D_TIMEOUTFLAG      Com_RxIpduTimeOutFlag[3]
#define COM_RXIPDUMOD_4G_49A_TIMEOUTFLAG      Com_RxIpduTimeOutFlag[4]
#define COM_RXIPDUMULTIMEDIA_385_TIMEOUTFLAG      Com_RxIpduTimeOutFlag[5]
#define COM_RXIPDCLOUD_SERVICES_0A2_TIMEOUTFLAG      Com_RxIpduTimeOutFlag[6]
#define COM_RXIPDUBCM_EVP2_394_TIMEOUTFLAG      Com_RxIpduTimeOutFlag[7]
#define COM_RXIPDUAIR_CONDITION_CTRL_2DB_TIMEOUTFLAG      Com_RxIpduTimeOutFlag[8]
#define COM_RXIPDUVCU_40D_TIMEOUTFLAG      Com_RxIpduTimeOutFlag[9]
#define COM_RXIPDUBCM_L_407_TIMEOUTFLAG      Com_RxIpduTimeOutFlag[10]
#define COM_RXIPDUMETER_1_DIR_4BF_TIMEOUTFLAG      Com_RxIpduTimeOutFlag[11]
#define COM_RXIPDUBCM_R_4E6_TIMEOUTFLAG      Com_RxIpduTimeOutFlag[12]
#define COM_RXIPDUHEAT_4C1_TIMEOUTFLAG      Com_RxIpduTimeOutFlag[13]
#define COM_RXIPDUADS_29C_TIMEOUTFLAG      Com_RxIpduTimeOutFlag[14]
#endif

/******************************************************************************/
/*rx Ipdu timeout indication function definition                              */
/******************************************************************************/
#ifdef COM_ENABLE_RX_TIMEOUTINDICATIONFUN
extern void AppIpduMPC_316_TimeOutInd(void);
extern void AppIpduMETER_055_TimeOutInd(void);
extern void AppIpduBCM_1_12D_TimeOutInd(void);
extern void AppIpduBCM_2_50D_TimeOutInd(void);
extern void AppIpduMOD_4G_49A_TimeOutInd(void);
extern void AppIpduMultimedia_385_TimeOutInd(void);
extern void AppIpduCloud_services_0A2_TimeOutInd(void);
extern void AppIpduBCM_EvP2_394_TimeOutInd(void);
extern void AppIpduAir_condition_ctrl_2DB_TimeOutInd(void);
extern void AppIpduVCU_40D_TimeOutInd(void);
extern void AppIpduBCM_L_407_TimeOutInd(void);
extern void AppIpduMETER_1_dir_4BF_TimeOutInd(void);
extern void AppIpduBCM_R_4E6_TimeOutInd(void);
extern void AppIpduHEAT_4C1_TimeOutInd(void);
extern void AppIpduADS_29C_TimeOutInd(void);
#endif


#endif /*#if (COM_RXIPDUNUM>=1)*/



#if((COM_TXIPDUNUM>=1) || (COM_RXIPDUNUM>=1))
#define COM_IPDUGROUPNUM    2u    //為什麼配了兩組，
#define COM_IPDUGROUP1   0x00000001  //必須是mask值
#define COM_IPDUGROUP2   0x00000002  //必須是mask值
#endif

/*******************************************************************************
*   data declaration
*******************************************************************************/
#if(COM_TXIPDUNUM>=1)
extern PduInfoType COM_TxDataPtr[COM_TXIPDUNUM];  //CanIf_Transmit  時 真正傳入的內容和長度；
extern COM_CONST PduInfoType COM_TxDataInitInfo[COM_TXIPDUNUM];   //初始值
extern COM_CONST COM_UINT8 COM_TxIpduSigNum[COM_TXIPDUNUM];       //每發送幀的 信號數量
extern COM_CONST COM_TxSigStruct COM_TxSigTable[COM_TXSIGNUM];    //發送每一信號的配置
extern COM_CONST COM_UINT8* COM_TxIpduDefaultValue[COM_TXIPDUNUM];  //指向 初始化值的指針
#ifdef COM_ENABLE_TX_CONFIRMATIONFUN
extern COM_CONST COM_TxConfirmationFun COM_IpduTxConfirmFunPtr[COM_TXIPDUNUM];  //成功發送幀的 確認回調
extern void Com_TxIpduCallout(PduIdType PduId);
#endif

#ifdef COM_ENABLE_TX_TO_INDFUN
extern COM_CONST COM_TxTimeOutFun COM_IpduTxTimeOutFunPtr[COM_TXIPDUNUM]; //幀超時的回調數
#endif

#ifdef COM_ENABLE_LPDUTX_ERRORINDICATIONFUN  //報文發送失敗，以回調函數通知
extern COM_CONST COM_ErrorIndicationFun COM_IpduTxErrorIndicationFunPtr[COM_TXIPDUNUM]; //幀錯誤的回調
#endif

extern COM_CONST COM_UINT8 COM_IpduTxTypeTable[COM_TXIPDUNUM];    //幀的性質，周期性，且有時間監控
extern COM_CONST COM_UINT16 COM_IdpuTxFastCycleTable[COM_TXIPDUNUM];  //快速時間回復
#ifdef COM_ENABLE_ACTIVEPORPERTY
extern FUNC(void, COM_PUBLIC_CODE) Com_ActiveSig
(
	Com_SignalIdType SignalId
);
extern FUNC(void, COM_PUBLIC_CODE) Com_DisactiveSig
(
	Com_SignalIdType SignalId
);
#endif
extern COM_CONST COM_UINT16 COM_IdpuTxCycCntTable[COM_TXIPDUNUM]; //發送周期，100ms
extern COM_CONST COM_UINT16 COM_TxIpduOffsetInTxSigTable[COM_TXIPDUNUM];  //什麼意思 好像沒有用到  要開啟 宏 COM_ENABLE_ACTIVEPORPERTY
extern COM_CONST COM_UINT16 COM_IpduTxDelayCntTable[COM_TXIPDUNUM]; //發送 的延時 ？？？
extern COM_CONST COM_UINT16 COM_IpduRepetitionTxCycCntTable[COM_TXIPDUNUM]; //重發時間 ？？？
extern COM_UINT8 COM_IpduRepetitionTxNumTable[COM_TXIPDUNUM];  //重復次數？？？
extern COM_CONST COM_UINT16 COM_IpduTxTimeOutCntTable[COM_TXIPDUNUM];  //超時 為什麼是0呢， 難道一幀都不行-----？？？
extern COM_CONST COM_UINT16 COM_IpduTxOffsetTimerTable[COM_TXIPDUNUM];  //偏移時間 ？？？
#endif /*#if(COM_TXIPDUNUM>=1)*/

#if(COM_RXIPDUNUM>=1)
extern COM_CONST PduInfoType COM_RxDataInitInfo[COM_RXIPDUNUM];
extern COM_CONST COM_UINT8 COM_RxIpduSigNum[COM_RXIPDUNUM];
extern COM_CONST COM_UINT16 COM_RxIpduOffsetInRxSigTable[COM_RXIPDUNUM];
extern COM_CONST COM_RxSigStruct COM_RxSigTable[COM_RXSIGNUM];
extern COM_CONST COM_IpduRxTimeOut_Struct COM_IpduRxTOTimerTable[COM_RXIPDUNUM];
extern COM_CONST COM_UINT8* COM_RxIpduDefaultValue[COM_RXIPDUNUM];

#ifdef COM_ENABLE_RX_INDICATIONFUN
extern COM_CONST COM_RxIndicationFun COM_IpduRxIndicationFunPtr[COM_RXIPDUNUM];
#endif

#ifdef COM_ENABLE_RX_TIMEOUTINDICATIONFUN
extern COM_CONST COM_TimeoutIndicationFun COM_IpduRxTimeoutFunPtr[COM_RXIPDUNUM];
#endif

#ifdef COM_ENABLE_LPDURX_ERRORINDICATIONFUN
extern COM_CONST COM_ErrorIndicationFun COM_IpduRxErrorIndicationFunPtr[COM_RXIPDUNUM];
#endif

#ifdef COM_ENABLE_LPDURXSTART_INDICATIONFUN   //TP開始接收大報文時，如果需要使用回調函數通知應用程序
extern COM_CONST COM_LpduRxStartIndicationFun COM_IpduRxStartIndicationFunPtr[COM_RXIPDUNUM];
#endif

#ifdef COM_ENABLE_RX_TIMEOUTVAULE
extern COM_CONST COM_UINT8* COM_IpduRxTimeoutValue[COM_RXIPDUNUM];
#endif

extern COM_CONST ComTpBufferSize COM_TpRxIpduBufferSize[COM_RXIPDUNUM];

extern void Com_RxIpduCallout(PduIdType PduId);
#endif /*#if(COM_RXIPDUNUM>=1)*/


#if(COM_TXIPDUNUM>=1)
extern COM_CONST COM_SendSignalFun COM_SendSignalFunPrt[COM_TXSIGNUM];	//发送信号 对 位写操作
#endif
#if(COM_RXIPDUNUM>=1)
extern COM_CONST COM_ReceivedSignalFun COM_ReceivedSignalFunPrt[COM_RXSIGNUM];	//接收信号 读取相应的位
#endif




#ifdef COM_ENABLE_ROUTESIGNAL
#if((COM_TXIPDUNUM>=1) && (COM_RXIPDUNUM>=1) && (COM_GWIPDUNUM>=1) && (COM_GWSIGNUM>=1))
extern COM_CONST COM_SignalGatewayIpduInfoType COM_SignalGatewayIpduInfo[COM_GWIPDUNUM];
extern COM_CONST COM_SignalGatewayInfoType COM_SignalGatewayInfo[COM_GWSIGNUM];
#endif /*#if((COM_TXIPDUNUM>=1) && (COM_RXIPDUNUM>=1))*/
#endif /*#ifdef COM_ENABLE_ROUTESIGNAL*/


#if(COM_IPDUGROUPNUM>=1)
extern COM_CONST COM_GroupIpduInfoType COM_GroupIpduInfo[];
extern COM_CONST COM_IpduGroupInfoType COM_IpduGroupInfo[COM_IPDUGROUPNUM];	//有用到，还没有深入理解
extern void COM_UserIPDUControl(Com_IpduGroupVector IpduGroupVector);
#endif
#if(COM_TXIPDUNUM>=1)
extern COM_CONST COM_UINT16 COM_UnderlyHandle[COM_TXIPDUNUM];
//COM用來發送多包數據時，需要調用的底層接口
#define Com_TransmitLPDU(ComTxPduId,PduInfoPtr)     CanIf_Transmit(COM_UnderlyHandle[ComTxPduId],PduInfoPtr)
//com用來發送單包數據時，需要調用的底層接口
#define Com_Transmit(ComTxPduId,PduInfoPtr)	        CanIf_Transmit(COM_UnderlyHandle[ComTxPduId],PduInfoPtr)
#endif






#endif



