

#ifndef __CAN_H__
#define __CAN_H__
#include "stdint.h"
#include "define.h"
#include "main.h"
#include "Global_Variable.h"


#ifdef __CAN_C__
	#define EXT_CAN_C
#else
	#define EXT_CAN_C    extern
#endif



typedef enum{
	ECU3_CH0_TX_VCU_RC_Signals1_10ms = 0,
    ECU3_CH0_TX_VCU_RC_Signals2_10ms,
	ECU3_CH0_TX_CAR_STAT_10ms,
	ECU3_CH0_TX_VCU_RC_Fault_Flag_10ms,
	ECU3_CH0_TX_RWA_VCU_RC_Signal1_10ms,
	ECU3_CH0_TX_RWA_VCU_RC_Signal2_10ms,
    ECU3_CH0_TX_RWS_VCU_RC_Signal1_10ms,
    ECU3_CH0_TX_RWS_VCU_RC_Signal2_10ms,
	ECU3_CH0_TX_SW_VER_10ms,
	ECU3_CH0_TX_TARGET_VALUE_10ms,
    ECU3_CH0_TX_VCU_BCM_Signal_1_10ms,
	ECU3_CH0_TX_VCU_BCM_Signal_2_10ms,
	ECU3_CH0_TX_VCU_EPAM_10ms,
    ECU3_CH0_TX_VCU_MCU_Signals1_10ms,
    NUMBER_OF_ECU3_CH0_TX_MESSAGE,
}ECU3_CH0_TX;

typedef enum{
	ECU3_CH0_RX_RC_VCU_Signal1_10ms = 0,
	ECU3_CH0_RX_RC_VCU_Signal2_10ms,
	ECU3_CH0_RC_VCU_Fault_Flag_10ms,
	ECU3_CH0_RC_BCM_Signal_1_10ms,
	ECU3_CH0_RX_IMU_TX1_10ms,
	ECU3_CH0_RX_IMU_TX2_10ms,
	ECU3_CH0_RX_IMU_TX3_10ms,
	ECU3_CH0_RX_EPAM_VCU_10ms,
	ECU3_CH0_RX_MCU_VCU_Signals1_10ms,
	ECU3_CH0_RX_MCU_VCU_Signals2_10ms,
	ECU3_CH0_RX_BCM_VCU_Signal1_10ms,
	ECU3_CH0_RX_BCM_VCU_Signal2_10ms,
	ECU3_CH0_RX_BCM_VCU_Signal5_10ms,
	ECU3_CH0_RX_BCM_VCU_Signal3_10ms,
	ECU3_CH0_RX_BCM_VCU_Signal4_10ms,
	Debugging_10ms,
    NUMBER_OF_ECU3_CH0_RX_MESSAGE,
}ECU3_CH0_RX;

typedef enum{
	ECU3_CH1_TX_RWA_VCU_ACU_Signal1_10ms = 0,
	ECU3_CH1_TX_RWA_VCU_ACU_Signal2_10ms,
	ECU3_CH1_TX_RWS_VCU_ACU_Signal1_10ms,
	ECU3_CH1_TX_RWS_VCU_ACU_Signal2_10ms,
	ECU3_CH1_TX_VCU_ACU_Signal1_10ms,
	ECU3_CH1_TX_VCU_ACU_Signal2_10ms,
	ECU3_CH1_TX_VCU_ACU_Signal3_10ms,
	ECU3_CH1_TX_ACU_CAR_STAT_10ms,
	ECU3_CH1_TX_VCU_ACU_Fault_Flag_10ms,
	ECU3_CH1_TX_IMU_TX1_10ms,
	ECU3_CH1_TX_IMU_TX2_10ms,
	ECU3_CH1_TX_IMU_TX3_10ms,
	ECU3_CH1_TX_VCU_VESS_VCU_245h_10ms,
	ECU3_CH1_TX_VCU_VESS_ICM_303h_10ms,
	ECU3_CH1_TX_VCU_VESS_CGW_372h_10ms,
	ECU3_CH1_TX_VCU_VESS_VCU_3ACh_10ms,
	ECU3_CH1_TX_BCM_VCU_ACU_Signal1_10ms,
	ECU3_CH1_TX_BCM_VCU_ACU_Signal2_10ms,
	ECU3_CH1_TX_BCM_VCU_ACU_Signal5_10ms,
	ECU3_CH1_TX_VCU_VESS_CGW_588h_VC_10ms,
	ECU3_CH1_TX_BCM_VCU_ACU_Signal3_10ms,
	ECU3_CH1_TX_BCM_VCU_ACU_Signal4_10ms,
    NUMBER_OF_ECU3_CH1_TX_MESSAGE,
}ECU3_CH1_TX;

typedef enum{
    ECU3_CH1_RX_ACU_VCU_Signal1_10ms = 0,
    ECU3_CH1_RX_ACU_VCU_Signal2_10ms,
    ECU3_CH1_RX_ACU_VCU_Signal3_10ms,
	ECU3_CH0_RX_ACU_BCM_Signal_1_10ms,
    NUMBER_OF_ECU3_CH1_RX_MESSAGE,

}ECU3_CH1_RX;

typedef enum{
	ECU3_CH2_TX_BSC_IDB_StartupCommand_5ms = 0,
	ECU3_CH2_TX_BSC_RWA_RackCommand_5ms,
	ECU3_CH2_TX_BSC_IDB_BrakeCommand_5ms,
	ECU3_CH2_TX_BSC_RegenCommand_5ms,
	ECU3_CH2_TX_BSC_IMU_10ms,
	ECU3_CH2_TX_IDB_WheelSpeedStatus_5ms,
	ECU3_CH2_TX_BSC_RWA_StartupCommand_5ms,
	ECU3_CH2_TX_BSC_RWA_Sister_5ms,
	ECU3_CH2_TX_BSC_VehicleEnvironment_1000ms,
	ECU3_CH2_TX_BSC_IDB_UdsRequest_10ms,
    NUMBER_OF_ECU3_CH2_TX_MESSAGE,
}ECU3_CH2_TX;

typedef enum{
	ECU3_CH2_RX_RWA_Status1_5ms = 0,
	ECU3_CH2_RX_RWA_Status2_5ms,
	ECU3_CH2_RX_IDB_RegenTcsRequest_5ms,
	ECU3_CH2_RX_IDB_WheelStatus_5ms,
	ECU3_CH2_RX_IDB_Status_5ms,
	ECU3_CH2_RX_IDB_TireSlipStatus_10ms,
	ECU3_CH2_RX_IDB_BrakeStatus1_10ms,
	ECU3_CH2_RX_IDB_PressureStatus_10ms,
	ECU3_CH2_RX_RWA_Status3_100ms,
	ECU3_CH2_RX_IDB_BrakeStatus2_1000ms,
	ECU3_CH2_RX_IDB_UdsResponse_10ms,
    NUMBER_OF_ECU3_CH2_RX_MESSAGE,
}ECU3_CH2_RX;

typedef enum{
	ECU3_CH3_TX_BSC_RCU_StartupCommand_5ms = 0,
	ECU3_CH3_TX_BSC_RWA_RackCommand_5ms,
	ECU3_CH3_TX_BSC_RCU_BrakeCommand_5ms,
	ECU3_CH3_TX_BSC_IMU_10ms,
	ECU3_CH3_TX_RCU_WheelSpeedStatus_5ms,
	ECU3_CH3_TX_BSC_RWA_StartupCommand_5ms,
	ECU3_CH3_TX_BSC_RWA_Sister_5ms,
	ECU3_CH3_TX_BSC_VehicleEnvironment_1000ms,
	ECU3_CH3_TX_BSC_RCU_UdsRequest_10ms,
    NUMBER_OF_ECU3_CH3_TX_MESSAGE,
}ECU3_CH3_TX;

typedef enum{
	ECU3_CH3_RX_RWA_Status1_5ms = 0,
	ECU3_CH3_RX_RWA_Status2_5ms,
	ECU3_CH3_RX_RCU_WheelStatus_5ms,
	ECU3_CH3_RX_RCU_Status_5ms,
	ECU3_CH3_RX_RCU_TireSlipStatus_10ms,
	ECU3_CH3_RX_RCU_BrakeStatus1_10ms,
	ECU3_CH3_RX_RCU_PressureStatus_10ms,
	ECU3_CH3_RX_RWA_Status3_100ms,
	ECU3_CH3_RX_RCU_BrakeStatus2_1000ms,
	ECU3_CH3_RX_RCU_UdsResponse_10ms,
    NUMBER_OF_ECU3_CH3_RX_MESSAGE,
}ECU3_CH3_RX;

typedef enum{
    ECU3_CH4_TX_VCU_RWS_Rack_Cmd_5ms = 0,
    ECU3_CH4_TX_VCU_RWS_StartupCommand_5ms,
	ECU3_CH4_TX_VCU_RWS_Sister_5ms,
    NUMBER_OF_ECU3_CH4_TX_MESSAGE,
}ECU3_CH4_TX;

typedef enum{
	ECU3_CH4_RX_RWS_VCU_stat_Signal_5ms = 0,
	ECU3_CH4_RX_RWS_VCU_Rack_AngleFbk_5ms,
    NUMBER_OF_ECU3_CH4_RX_MESSAGE,
}ECU3_CH4_RX;

typedef enum{
    ECU3_CH5_TX_VCU_RWS_Rack_Cmd_5ms = 0,
    ECU3_CH5_TX_VCU_RWS_StartupCommand_5ms,
	ECU3_CH5_TX_VCU_RWS_Sister_5ms,
    NUMBER_OF_ECU3_CH5_TX_MESSAGE,
}ECU3_CH5_TX;

typedef enum{
	ECU3_CH5_RX_RWS_VCU_stat_Signal_5ms = 0,
	ECU3_CH5_RX_RWS_VCU_Rack_AngleFbk_5ms,
    NUMBER_OF_ECU3_CH5_RX_MESSAGE,
}ECU3_CH5_RX;

/*
=======DATA TYPE======

DATA_0 -> buf[0] ~ buf[3]
DATA_1 -> buf[4] ~ buf[7]
...
DATA_7 -> buf[28] ~ buf[31]

canX = buf[X] (ex; CAN_ch[].rx.buf[X], CAN_ch[].tx.buf[X])

 can0  can1  can2  can3  can4  can5  can6  can7
 0x00  0x00  0x00  0x00  0x00  0x00  0x00  0x00
|       DATA_0          |        DATA_1         |

 can15 can14 can13 can12 can11 can10 can9  can8
  0x00 0x00  0x00  0x00  0x00  0x00  0x00  0x00
|        DATA_2         |        DATA_3        |


         can3 can2 can1 can0
DATA_0 = 0x00 0x00 0x00 0x00

*/
#define DATA_0  0
#define DATA_1  1
#define DATA_2  2
#define DATA_3  3
#define DATA_4  4
#define DATA_5  5
#define DATA_6  6
#define DATA_7  7



#define uint8  uint8_t
#define uint16 uint16_t
#define uint32 uint32_t
#define uint64 uint64_t
#define sint16 int16_t
#define sint32 int32_t
#define sint64 int64_t

typedef struct
{
    uint32  messageId : 29;                             /* Define the standard or extended message ID                */
    uint8_t extendedFrame : 1;                          /* Define frame mode to be used                              */
    uint16_t messageLen : 6;          /* Define length of the transmitted data (number of bytes)   */
    uint8_t fastBitRate : 1;                            /* Define usage of bit rate switching                        */
} canMessageObjectConfigType;



typedef enum{
    DataLengthCode_1 = 1,
    DataLengthCode_2,
    DataLengthCode_3,
    DataLengthCode_4,
    DataLengthCode_5,
    DataLengthCode_6,
    DataLengthCode_7,
    DataLengthCode_8,
    DataLengthCode_9,
    DataLengthCode_10,
    DataLengthCode_11,
    DataLengthCode_12,
    DataLengthCode_13,
    DataLengthCode_14,
    DataLengthCode_15,
    DataLengthCode_16,
    DataLengthCode_17,
    DataLengthCode_18,
    DataLengthCode_19,
    DataLengthCode_20,
    DataLengthCode_24 = 24,
    DataLengthCode_32 = 32,
    DataLengthCode_64 = 64,
}DataLengthCode;

typedef enum{
    shift0 = 0,
    shift1 = 1,
    shift2 = 2,
    shift3 = 3,
    shift4 = 4,
    shift5 = 5,
    shift6 = 6,
    shift7 = 7,
    shift8 = 8,
    shift9 = 9,
    shift10 = 10,
    shift11 = 11,
    shift12 = 12,
    shift13 = 13,
    shift14 = 14,
    shift15 = 15,
    shift16 = 16,
    shift17 = 17,
    shift18 = 18,
    shift19 = 19,
    shift20 = 20,
    shift21 = 21,
    shift22 = 22,
    shift23 = 23,
    shift24 = 24,
    shift25 = 25,
    shift26 = 26,
    shift27 = 27,
    shift28 = 28,
    shift29 = 29,
    shift30 = 30,
    shift31 = 31,
    shift32 = 32,
    shift40 = 40,
    shift48 = 48,
    shift56 = 56,
}SHIFT_MSG;

typedef enum{
    _1bit = 0x1,
    _2bit = 0x3,
    _3bit = 0x7,
    _4bit = 0xF,
    _5bit = 0x1F,
    _6bit = 0x3F,
    _7bit = 0x7F,
    _8bit = 0xFF,
    _9bit = 0x1FF,
    _10bit = 0x3FF,
    _11bit = 0x7FF,
    _12bit = 0xFFF,
    _13bit = 0x1FFF,
    _14bit = 0x3FFF,
    _15bit = 0x7FFF,
    _16bit = 0xFFFF,
    _20bit = 0xFFFFF,
    _32bit = 0xFFFFFFFF,
    // _48bit = 0xFFFFFFFFFFFF,
    // _64bit = 0xFFFFFFFFFFFFFFFF,
}CAN_BIT;




typedef struct
{

    /*======================================== RX ========================================*/
    struct
    {
    	/*-------------------- CH0 --------------------*/
    	struct
		{
			uint32 CAR_MCU_MtrTemp 	    	: 8;
			uint32 CAR_MCU_InvTemp 	    	: 8;
			uint32 CAR_EPAM_Temperature   	: 8;
			uint32 CAR_Battery_Voltage 		: 8;
			uint32 CAR_LDC_ACTL_VOLT 		: 8;
			uint32 CAR_ChargingStatus 		: 3;
			uint32 CAR_BMS_HVOn_STA 		: 1;
//            uint8  CAR_ARC 					: 8;
		}CH0_CAR_STAT_CH0_0x012;

    	struct
		{
			uint32  RC_BrakeTorqueCommand	: 16;
			uint32  RC_RWA_RackAngleCommand	: 16;
			uint32  RC_Drive_ACC_Cmd		: 16;
			uint32 RC_Vx_Command  			: 8;
			uint32 RC_VCU_counter1 	 		: 4;
			uint32 RC_VCU_CRC1				: 4;

		}CH0_RC_VCU_Signal1_0x040;

		struct
		{
			uint8 ACU_Fault_Flag 			: 1;
			uint8 MCU_Actuator_Fault_Flag	: 1;
			uint8 RWA_Actuator_Fault_Flag	: 1;

		}CH0_RX_RC_VCU_Fault_Flag_0x042;

		struct
		{
			uint32 RC_Drive_Mode 		: 2;
			uint32 RC_GearSelStat 		: 4;
			uint32 RC_ParkBrake_Cmd 	: 2;
			uint32 RC_Emergency_Stop 	: 1;
			uint32 RC_VCU_long_Ctl_mode	: 2;
			uint32 RC_VX_Limit 			: 8;
			uint32 RC_VCU_ARC 			: 8;
//            uint32 RC_VCU_CRC2 			: 4;
		}CH0_RC_VCU_Signal2_0x041;

		struct
		{
			uint32 RC_RWA1_CMD 	 			: 1;
			uint32 RC_RWA2_CMD 	 			: 1;
			uint32 RC_RWA1_WakeupCommand	: 1;
			uint32 RC_RWA2_WakeupCommand 	: 1;
			uint32 RC_RWA1_2_FAULT 	 		: 1;
		}CH0_RX_RC_RWA_Fault_mode_0x043;

		struct
		{
			uint32 RC_RWS1_CMD 	 			: 1;
			uint32 RC_RWS2_CMD 	 			: 1;
			uint32 RC_RWS1_WakeupCommand 	: 1;
			uint32 RC_RWS2_WakeupCommand 	: 1;
			uint32 RC_RWS1_2_FAULT 	 		: 1;
		}CH0_RX_RC_RWS_Fault_mode_0x044;

		struct
		{
			uint32 RC_IDB_Fault	 			: 1;
			uint32 RC_RCU_Fault 			: 1;
			uint32 RC_IDB_WakeupCommand 	: 1;
			uint32 RC_RCU_WakeupCommand 	: 1;
		}CH0_RX_RC_IDB_RCU_Fault_mode_0x045;

		struct
		{
			uint32 Lamp_BRAKE_CMD 		: 2;
			uint32 Lamp_Hazard_CMD		: 2;
			uint32 Lamp_HBEAM_CMD 		: 2;
			uint32 Lamp_Head_CMD 		: 2;
			uint32 Lamp_LTRN_CMD 		: 2;
			uint32 Lamp_Reverse_CMD 	: 2;
			uint32 Lamp_RTRN_CMD 		: 2;
			uint32 Lamp_Position_CMD 	: 2;
			uint32 Lamp_DRL_CMD 		: 2;
			uint32 Wiper_CMD 		 	: 2;
		}CH0_RC_VCU_BCM_Signal_1_CH0_0x155;//240227 �߰�

		struct
		{
			uint32 IMU_YawRtVal 		: 16;
			uint32 IMU_CLU_STAT 		: 4;
			uint32 IMU_YAW_RATE_STAT 	: 4;
			sint32 IMU_TEMP_RATE 		: 8;
			uint32 IMU_AY_Val 			: 16;
			uint32 IMU_MSG_TX1_CNT 		: 4;
			uint32 IMU_AY_STAT 			: 4;
			uint32 IMU_TX1_CRC 			: 8;
		}CH0_IMU_TX1_CH0_0x174;

		struct
		{
			uint32 IMU_RollRtVal 		: 16;
			uint32 IMU_CLU_STAT5 		: 4;
			uint32 IMU_ROLL_RATE_STAT 	: 4;
			uint32 IMU_CLU_DIAG 		: 8;
			uint32 IMU_AX_Val 			: 16;
			uint32 IMU_MSG_TX2_CNT 		: 4;
			uint32 IMU_AX_STAT 			: 4;
			uint32 IMU_TX2_CRC 			: 8;
		}CH0_IMU_TX2_CH0_0x178;

		struct
		{
			uint32 IMU_PitchRtVal 		: 16;
			uint32 IMU_HW_Index 		: 4;
			uint32 IMU_PITCH_RATE_STAT 	: 4;
			uint32 IMU_AZ_Val 			: 16;
			uint32 IMU_MSG_TX3_CNT 		: 4;
			uint32 IMU_AZ_STAT 			: 4;
			uint32 IMU_TX3_CRC 			: 8;
		}CH0_IMU_TX3_CH0_0x17C;

		struct
		{
			uint32 EPAM_driveSensor 	 		: 1;
			uint32 EPAM_parkSensor 	 			: 1;
			uint32 EPAM_parkLock 	 			: 3;
			uint32 EPAM_ParkRequestStatus 	 	: 2;
			uint32 EPAM_Voltage 	 			: 8;
			uint32 EPAM_Current  				: 8;
			uint32 EPAM_Temperature 	 		: 8;
			uint32 EPAM_HallPosition 			: 8;
			uint32 ErrEPAM_MotStallMiddle       : 1;
			uint32 ErrEPAM_MotStallUnPark 		: 1;
			uint32 ErrEPAM_MotStallPark 		: 1;
			uint32 ErrEPAM_MotOpen 		        : 1;
			uint32 ErrEPAM_MotFail 		 		: 1;
			uint32 EPAM_State 		 			: 1;
			uint32 ErrEPAM_CommErr 		 		: 1;
			uint32 ErrEPAM_HallSenErr 		 	: 1;
			uint32 ErrEPAM_OT_ECU 		 		: 1;
			uint32 ErrEPAM_CANErr 		 		: 1;
			uint32 ErrEPAM_HallPaternError 		: 1;
			uint32 ErrEPAM_HallTimeOut 		 	: 1;
			uint32 ErrEPAM_DCBusUnderVoltage	: 1;
			uint32 ErrEPAM_DCBusOverVoltage 	: 1;
			uint32 ErrEPAM_DCBusOverCurrent 	: 1;
		}CH0_RX_EPAM_VCU_0x221;

    	struct
		{
			uint32 MCU_Ready 		: 1;
			uint32 MCU_Controlable 	: 1;
			uint32 MCU_Flt 			: 1;
			uint32 MCU_Interlock 	: 1;
			uint32  MCU_CurGearSta 	: 3;
			uint32 MCU_GearStaInv 	: 1;
			uint32 MCU_Derating 	: 4;
			uint32 MCU_SvrFlt 		: 1;
			sint32  MCU_MtrTemp 	: 8;
			uint32  MCU_InvTemp		: 8;
			uint32  MCU_EstSpd		: 16;
			uint32  MCU_EstTrq		: 16;
		}CH0_MCU_VCU_Signals1_0x300;

		struct
		{
			uint32 FaultMessage1	: 32;
			uint32 FaultMessage2	: 32;
		}CH0_MCU_VCU_Signals2_0x301;

    	struct
        {
            uint32 Lamp_RTRN  		: 2;
            uint32 Lamp_Reverse  	: 2;
            uint32 Lamp_LTRN  		: 2;
            uint32 Lamp_Head  		: 2;
            uint32 Lamp_HBEAM  		: 2;
            uint32 Lamp_Hazard  	: 2;
            uint32 Lamp_BRAKE  		: 2;
            uint32 Status_Wiper  	: 2;
            uint32 BCM_CE1_STA  	: 2;
            uint32 BCM_CE2_STA 		: 2;
            uint32 BCM_CE3_STA 		: 2;
            uint32 BCM_CE4_STA 		: 2;
            uint32 BCM_CE5_STA		: 2;
            uint32 BCM_MAINSW_STA 	: 2;
            uint32 Battery_Voltage	: 8;
            uint32 Lamp_DRL			: 2;
            uint32 Lamp_Position 	: 2;
            uint32 BCM_VCU_counter1	: 4;
            uint32 BCM_VCU_CRC1 	: 4;
            uint32 BCM_Sys_Status   : 4;
            uint32 LDC_STA          : 2;
        }CH0_BCM_VCU_Signal1_0x570;

        struct 
        {
            uint32 ChargingStatus	: 3;
            uint32 BCM_ChgeCon_DTD	: 1;
            uint32 BMS_HVOn_STA		: 1;
            uint32 IntLckSta_OBC	: 1;
            uint32 IntLckSta_BMS	: 1;
            uint32 BMS_SOC			: 8;
            uint32 BMS_SOH			: 8;
            uint32 CommSta_OBC		: 2;
            uint32 CommSta_VCU		: 2;
            uint32 CommSta_BMS		: 2;
            uint32 CommSta_LDC		: 2;
            uint32 CommSta_TMS		: 2;
            uint32 BMS_SOH_INV		: 1;
            uint32 BMS_SOC_INV		: 1;
            uint32 Bms_Soc_Wrng		: 1;
            uint32 Bms_SoH_Wrng		: 1;
            uint32 BCM_VCU_counter2	: 4;
            uint32 BCM_VCU_CRC2		: 4;
        }CH0_BCM_VCU_Signal2_0x580;
        
        struct 
        {
            uint32 OBC_FltSta       : 2;
            uint32 BMS_FltSta       : 2;
            uint32 LDC_FltSta       : 2;
            uint32 BCM_FltSta       : 2;
            uint32 BMS_TEMP_FAULT   : 2;
            uint32 LDC_TEMP_FAULT   : 2;
            uint32 OBC_TEMP_FAULT   : 2;
            uint32 TMS_FltSta       : 2;
            sint32  OBC_TEMP        : 8;
            sint32  LDC_TEMP        : 8;
            uint32 OBC_ACTL_CUR     : 8;
            uint32 OBC_TRGT_CUR     : 8;
            uint32 User_SoC         : 8;
            uint32 BCM_VCU_counter5 : 4;
            uint32 BCM_VCU_CRC5     : 4;
        }CH0_BCM_VCU_Signal5_0x585;

        struct 
        {
        	uint32 Bms_PackVolt 	: 16;
        	sint32 Bms_PackCur		: 16;
            sint32 Bms_PackPwr		: 16;
            uint32 BCM_VCU_counter3 : 4;
            uint32 BCM_VCU_CRC3 	: 4;
        }CH0_BCM_VCU_Signal3_0x590;

        struct 
        {
            uint32 LDC_ACTL_CUR 	: 8;
            uint32 LDC_INP_VOLT 	: 10;
            uint32 LDC_ACTL_VOLT 	: 8;
        }CH0_BCM_VCU_Signal4_0x595;

        struct
		{
        	float Logic_BrakeTorqueCommand;
		}CH0_Receive_Debugging_0x777;


		/*-------------------- CH1 --------------------*/
        struct 
        {   
            uint32 ACU_Vx_Command			: 8;
            uint32 ACU_Drive_ACC_Cmd		: 16;
            uint32 ACU_BrakeTorqueCommand	: 16;
            uint32 ACU_VCU_counter1	 		: 4;
            uint32 ACU_VCU_CRC1		 		: 4;
        }CH1_ACU_VCU_Signal1_0x091;

        struct 
        {
        	uint32 ACU_RWA_cmd_deg	: 16;
        	uint32 ACU_RWS_cmd_deg	: 16;
            uint32 ACU_VCU_counter2 : 4;
            uint32 ACU_VCU_CRC2 	: 4;
        }CH1_ACU_VCU_Signal2_0x092;

        struct 
        {
            uint32 ACU_Drive_mode 	 	: 2;
            uint32 ACU_long_Ctl_mode 	: 2;
            uint32 ACU_EPAM_req 	 	: 2;
            uint32 ACU_VCU_GearPos  	: 2;
            uint32 ACU_Emergency_Stop 	: 1;
            uint32 ACU_VCU_counter3 	: 4;
            uint32 ACU_VCU_CRC3 		: 4;
        }CH1_ACU_VCU_Signal3_0x093;

        struct
        {
            uint32 Lamp_BRAKE_CMD 		: 2;
            uint32 Lamp_Hazard_CMD 		: 2;
            uint32 Lamp_HBEAM_CMD 		: 2;
            uint32 Lamp_Head_CMD 		: 2;
            uint32 Lamp_LTRN_CMD 		: 2;
            uint32 Lamp_Reverse_CMD 	: 2;
            uint32 Lamp_RTRN_CMD 		: 2;
            uint32 Lamp_Position_CMD	: 2;
            uint32 Lamp_DRL_CMD 		: 2;
            uint32 Wiper_CMD 		 	: 2;
            uint32 LDC_ACT_CMD 		 	: 2;
            uint32 HV_ON_CMD 		 	: 2;
            uint32 CE_ON_CMD 		 	: 2;
            uint32 LDC_TRGT_CUR 		: 8;
            uint32 Vcu_OperMode 		: 3;
            uint32 Vcu_SysMode 		 	: 3;
            uint32 ACU_VCU_counter 	 	: 4;
            uint32 ACU_VCU_CRC 		 	: 4;
        }CH1_ACU_BCM_Signal_1_0x151;//240227 �߰�


        /*-------------------- CH2 --------------------*/
        struct 
		{
			uint32 Arc						: 8;
			uint32 Crc						: 8;
			uint32 EcuPowerMode				: 2;
			uint32 EcuRole					: 2;
			uint32 EcuStatus				: 4;
			uint32 MaxMotorOutput			: 5;
			uint32 MaxMotorOutputValid		: 1;
			uint32 RackAngleSpeedFbk		: 16;
			uint32 RackAngleSpeedFbkValid	: 1;
			uint32 SysInfo					: 4;
			uint32 WarningLamp				: 2;
		}CH2_RWA_Status1_0x072;

		struct
		{
			uint32 Arc					: 8;
			uint32 Crc					: 8;
			uint32 RackAngleFbk			: 16;
			uint32 RackAngleFbkValid	: 1;
			uint32 RackForceFbk 		: 16;
			uint32 RackForceFbkValid	: 1;
		}CH2_RWA_Status2_0x073;

		struct
		{
			uint32 Arc 					: 8;
			uint32 Crc 					: 8;
			uint32 RbcTargetRegenTorque	: 14;
			uint32 TcsTorqueCmd 		: 14;
		}CH2_IDB_RegenTcsRequest_0x082;

		struct
		{
			uint32 Arc 							: 8;
			uint32 Crc 							: 8;
			uint32 FrontLeftWheelDirection 		: 2;
			uint32 FrontLeftWheelPulse 			: 8;
			uint32 FrontLeftWheelPulseValidity 	: 1;
			uint32 FrontLeftWssFault 			: 1;
			uint32 FrontRightWheelDirection 	: 2;
			uint32 FrontRightWheelPulse 		: 8;
			uint32 FrontRightWheelPulseValidity	: 1;
			uint32 FrontRightWssFault 			: 1;
			uint32 RearLeftWheelDirection 		: 2;
			uint32 RearLeftWheelPulse 			: 8;
			uint32 RearLeftWheelPulseValidity 	: 1;
			uint32 RearLeftWssFault 			: 1;
			uint32 RearRightWheelDirection 		: 2;
			uint32 RearRightWheelPulse 			: 8;
			uint32 RearRightWheelPulseValidity 	: 1;
			uint32 RearRightWssFault 			: 1;
		}CH2_IDB_WheelStatus_0x08C;

		struct
		{
			uint32 AbsFault 						: 1;
			uint32 AbsState 						: 1;
			uint32 Arc 							  	: 8;
			uint32 BbsFault 						: 1;
			uint32 BbsState 						: 1;
			uint32 CanCommunicationFault 		  	: 1;
			uint32 Crc 							  	: 8;
			uint32 EbdFault 						: 1;
			uint32 EbdState 						: 1;
			uint32 EpbFault 						: 1;
			uint32 EpbState 						: 3;
			uint32 EpbTransition					: 2;
			uint32 EscFault 						: 1;
			uint32 EscState 						: 1;
			uint32 EscYawRateThreshold 			  	: 10;
			uint32 InternalCanCommunicationFault	: 1;
			uint32 RbcFault 						: 1;
			uint32 RbcState 						: 1;
			uint32 RopFault 						: 1;
			uint32 RopState 						: 1;
			uint32 SplitMuDetection 				: 2;
			uint32 SsmFault 						: 1;
			uint32 SsmState 						: 2;
			uint32 TcsFault 						: 1;
			uint32 TcsState 						: 1;
		}CH2_IDB_Status_0x092;

		struct
		{
			uint32 Arc 						 : 8;
			uint32 Crc 						 : 8;
			uint32 FrontLeftTireSlipRatio 	 : 10;
			uint32 FrontLeftWheelSlipStatus  : 2;
			uint32 FrontRightTireSlipRatio 	 : 10;
			uint32 FrontRightWheelSlipStatus : 2;
			uint32 RearLeftTireSlipRatio 	 : 10;
			uint32 RearLeftWheelSlipStatus 	 : 2;
			uint32 RearRightTireSlipRatio 	 : 10;
			uint32 RearRightWheelSlipStatus  : 2;
		}CH2_IDB_TireSlipStatus_0x096;

        struct
        {
            uint32 Arc 							: 8;
            uint32 Crc 							: 8;
            uint32 EcuRole 						: 2;
            uint32 EcuStatus 					: 4;
            uint32 EstimatedVehicleSpeed 		: 10;
            uint32 IsControllingEcu 			: 1;
            uint32 MasterCylinderPressure 		: 10;
            uint32 RoadFrictionCoefficient 		: 16;
            uint32 RoadFrictionCoefficientValid : 2;
            uint32 VehicleSpeedValidity 		: 1;
        }CH2_IDB_BrakeStatus1_0x09A;

        struct 
		{
			uint32 Arc 								: 8;
			uint32 Crc 								: 8;
			uint32 FrontLeftEstimatedPressure 		: 10;
			uint32 FrontLeftEstimatedPressureValid	: 1;
			uint32 FrontRightEstimatedPressure 		: 10;
			uint32 FrontRightEstimatedPressureValid	: 1;
			uint32 RearLeftEstimatedPressure 		: 10;
			uint32 RearLeftEstimatedPressureValid 	: 1;
			uint32 RearRightEstimatedPressure 		: 10;
			uint32 RearRightEstimatedPressureValid  : 1;
		}CH2_IDB_PressureStatus_0x0A0;

		struct
		{
			uint32 Arc 				 	: 8;
			uint32 Crc 				 	: 8;
			uint32 PolFault 			: 1;
			uint32 PolLimiterFlag 	 	: 1;
			uint32 PolStatus 		 	: 1;
			uint32 PolValue 			: 6;
			uint32 SysBatteryVoltage	: 12;
			uint32 SysIqCurrent 		: 11;
		}CH2_RWA_Status3_0x0AA;

        struct
        {
            uint32 Arc  					: 8;
            uint32 BrakeFluidState  		: 2;
            uint32 Crc  					: 8;
            uint32 MotorTemperatureWarning	: 1;
            uint32 RearLeftBrakePadState  	: 1;
            uint32 RearRightBrakePadState   : 1;
            uint32 Reserved3  				: 4;
            uint32 Reserved4  				: 4;
            uint32 Reserved5  				: 4;
            uint32 Reserved6 				: 4;
        }CH2_IDB_BrakeStatus2_0x0C8;

        struct 
        {
            uint64 UdsResponse 		: 64;
            uint32 UdsResponse_MSB	: 32;
            uint32 UdsResponse_LSB 	: 32;
        }CH2_IDB_UdsResponse_0x798;


        /*-------------------- CH3 --------------------*/
        struct 
		{
        	uint32 Arc						: 8;
			uint32 Crc						: 8;
			uint32 EcuPowerMode				: 2;
			uint32 EcuRole					: 2;
			uint32 EcuStatus				: 4;
			uint32 MaxMotorOutput			: 5;
			uint32 MaxMotorOutputValid		: 1;
			uint32 RackAngleSpeedFbk		: 16;
			uint32 RackAngleSpeedFbkValid	: 1;
			uint32 SysInfo					: 4;
			uint32 WarningLamp				: 2;
		}CH3_RWA_Status1_0x072;

		struct
		{
			uint32 Arc					: 8;
			uint32 Crc					: 8;
			uint32 RackAngleFbk			: 16;
			uint32 RackAngleFbkValid	: 1;
			uint32 RackForceFbk 		: 16;
			uint32 RackForceFbkValid	: 1;
		}CH3_RWA_Status2_0x073;

		struct
		{
			uint32 Arc 							: 8;
			uint32 Crc 							: 8;
			uint32 FrontLeftWheelDirection 		: 2;
			uint32 FrontLeftWheelPulse 			: 8;
			uint32 FrontLeftWheelPulseValidity 	: 1;
			uint32 FrontLeftWssFault 			: 1;
			uint32 FrontRightWheelDirection 	: 2;
			uint32 FrontRightWheelPulse 		: 8;
			uint32 FrontRightWheelPulseValidity	: 1;
			uint32 FrontRightWssFault 			: 1;
			uint32 RearLeftWheelDirection 		: 2;
			uint32 RearLeftWheelPulse 			: 8;
			uint32 RearLeftWheelPulseValidity 	: 1;
			uint32 RearLeftWssFault 			: 1;
			uint32 RearRightWheelDirection 		: 2;
			uint32 RearRightWheelPulse 			: 8;
			uint32 RearRightWheelPulseValidity 	: 1;
			uint32 RearRightWssFault 			: 1;
		}CH3_RCU_WheelStatus_0x08D;

		struct
		{
			uint32 AbsFault   				       	: 1;
			uint32 AbsState   				       	: 1;
			uint32 Arc   					       	: 8;
			uint32 BbsFault   				       	: 1;
			uint32 BbsState   				       	: 1;
			uint32 CanCommunicationFault   	       	: 1;
			uint32 Crc   					       	: 8;
			uint32 EpbFault   				       	: 1;
			uint32 EpbState   				       	: 3;
			uint32 EpbTransition  			       	: 2;
			uint32 EscFault  				       	: 1;
			uint32 EscState  				       	: 1;
			uint32 EscYawRateThreshold				: 10;
			uint32 InternalCanCommunicationFault	: 1;
			uint32 SplitMuDetSsmFaultection  	   	: 2;
			uint32 SsmFault  					   	: 1;
			uint32 SsmState  					   	: 2;
		}CH3_RCU_Status_0x093;

		struct
		{
			uint32 Arc  						: 8;
			uint32 Crc  						: 8;
			uint32 FrontLeftTireSlipRatio  	 	: 10;
			uint32 FrontLeftWheelSlipStatus  	: 2;
			uint32 FrontRightTireSlipRatio		: 10;
			uint32 FrontRightWheelSlipStatus	: 2;
			uint32 RearLeftTireSlipRatio		: 10;
			uint32 RearLeftWheelSlipStatus		: 2;
			uint32 RearRightTireSlipRatio		: 10;
			uint32 RearRightWheelSlipStatus		: 2;
		}CH3_RCU_TireSlipStatus_0x097;

        struct
        {
            uint32 Arc 							: 8;
            uint32 Crc 							: 8;
            uint32 EcuRole 						: 2;
            uint32 EcuStatus 					: 4;
            uint32 EstimatedVehicleSpeed		: 10;
            uint32 IsControllingEcu 			: 1;
            uint32 MasterCylinderPressure 		: 10;
            uint32 RoadFrictionCoefficient 		: 8;
            uint32 RoadFrictionCoefficientValid : 2;
            uint32 VehicleSpeedValidity 		: 1;
        }CH3_RCU_BrakeStatus1_0x09B;

        struct 
		{
			uint32 Arc 								: 8;
			uint32 Crc 								: 8;
			uint32 FrontLeftEstimatedPressure 		: 10;
			uint32 FrontLeftEstimatedPressureValid  : 1;
			uint32 FrontRightEstimatedPressure 		: 10;
			uint32 FrontRightEstimatedPressureValid : 1;
		}CH3_RCU_PressureStatus_0x0A1;

		struct
		{
			uint32 Arc 				 	: 8;
			uint32 Crc 				 	: 8;
			uint32 PolFault 			: 1;
			uint32 PolLimiterFlag 	 	: 1;
			uint32 PolStatus 		 	: 1;
			uint32 PolValue 			: 6;
			uint32 SysBatteryVoltage	: 12;
			uint32 SysIqCurrent 		: 11;
		}CH3_RWA_Status3_0x0AA;

        struct
        {
            uint32 Arc  					: 8;
            uint32 BrakeFluidState  		: 2;
            uint32 Crc  					: 8;
            uint32 FrontLeftBrakePadState  	: 1;
            uint32 FrontRightBrakePadState  : 1;
            uint32 MotorTemperatureWarning	: 1;
            uint32 Reserved3 				: 4;
            uint32 Reserved4 				: 4;
            uint32 Reserved5 				: 4;
            uint32 Reserved6 				: 4;
        }CH3_RCU_BrakeStatus2_0x0C9;

        struct 
        {
            uint64 UdsResponse 		: 64;
            uint32 UdsResponse_MSB 	: 32;
            uint32 UdsResponse_LSB 	: 32;
        }CH3_RCU_UdsResponse_0x799;


        /*-------------------- CH4 --------------------*/
		struct
		{
			uint32 RWS_EcuStatus1 			: 4;
			uint32 RWS_RackAngleSpeedFbk1 	: 16;
		}CH4_RWS_VCU_stat_Signal_0x072;

        struct 
        {
            uint32 RWS_RackAngleFbk1		: 16;
        }CH4_RWS_VCU_Rack_AngleFbk_0x073;


        /*-------------------- CH5 --------------------*/
        struct 
		{
			uint32 RWS_EcuStatus2 			: 4;
			uint32  RWS_RackAngleSpeedFbk2	: 16;
		}CH5_RWS_VCU_stat_Signal_0x072;

        struct
        {
			uint32 RWS_RackAngleFbk2		: 16;
        }CH5_RWS_VCU_Rack_AngleFbk_0x073;
    }RX;

    /*============================ TX ============================*/
    struct
    {
    	/*-------------------- CH0 --------------------*/
    	struct
		{
			uint32 VCU_MCU_EstTrq 		: 16;
			uint32 VCU_RWA_Rack_Fbk 	: 16;
			uint32 VCU_Brk_Pressure_Fbk : 16;
			uint32 VCU_Vx_Fbk 			: 8;
			uint32 VCU_Vx_Limit 		: 8;
			uint32 VCU_RC_counter1 		: 4;
			uint32 VCU_RC_CRC1 			: 4;
		}CH0_VCU_RC_Signals1_0x010;

		struct
		{
			uint32 VCU_RC_BMS_SOC 		: 8;
			uint32 VCU_RC_long_Ctl_mode : 2;
			uint32 VCU_RC_Emergency_Stop: 1;
			uint32 VCU_GearSelStat 		: 2;
			uint32 VCU_Drive_Mode 		: 2;
			uint32 VCU_ParkBrake_Fbk 	: 2;
			uint32 VCU_Acc_Fbk	 	 	: 16;
			uint32 VCU_Acc_Limit 	 	: 16;
			uint32  CAR_ChargingStatus	: 3;
			uint8   CAR_BMS_HVOn_STA 	: 1;
		}CH0_VCU_RC_Signals1_0x011;

		struct
		{
			uint32  CAR_Bms_PackVolt 	: 16;
			uint32  CAR_Bms_PackCur 	: 16; // ��ȣó��
			uint32  CAR_Battery_Voltage : 16;
			uint32  CAR_LDC_ACTL_CUR 	: 8;
			uint32  CAR_LDC_ACTL_VOLT 	: 8;
//            uint32  CAR_ChargingStatus	: 3;
//            uint8   CAR_BMS_HVOn_STA 	: 1;
		}CH0_CAR_STAT_CH0_0x012;

		struct
		{
			uint32 VCU_IDB_BrakeTorqueCommand	: 16;
			uint32 VCU_RWA1_RackAngleCommand	: 16;
			uint32 VCU_RWS1_RackAngleCommand	: 16;
			uint32 VCU_MCU_TorqCommand			: 16;
		}CH0_Debug_VCU_Signal_1_CH0_0x017;

		struct
		{
			uint32 VCU_RCU_BrakeTorqueCommand	: 16;
			uint32 VCU_RWA2_RackAngleCommand	: 16;
			uint32 VCU_RWS2_RackAngleCommand	: 16;
		}CH0_Debug_VCU_Signal_2_CH0_0x018;

        struct
        {
            uint32 RWA_RackAngleFbk1 		 : 16;
            uint32 RWA_RackAngleSpeedFbk1 	 : 16;
            uint32 CAR_ARC 	 : 8;
            uint32 RWA_VCU_RC_counter1 	 	 : 4;
            uint32 RWA_VCU_RC_CRC1 		 	 : 4;
        }CH0_RWA_RackAngleFbk1_0x050;

        struct
        {
            uint32 RWA_RackAngleFbk2 		: 16;
            uint32 RWA_RackAngleSpeedFbk2 	: 16;
            uint32 RWA_VCU_RC_counter2 		: 4;
            uint32 RWA_VCU_RC_CRC2 			: 4;
        }CH0_RWA_VCU_RC_Signal2_0x051;
        struct
        {
            uint32 RWS_RackAngleFbk1 		 : 16;
            uint32 RWS_RackAngleSpeedFbk1 	 : 16;
            uint32 RWS_VCU_RC_counter1 	 : 4;
            uint32 RWS_VCU_RC_CRC1 		 : 4;
        }CH0_RWS_VCU_RC_Signal1_0x060;
        struct
        {
            uint32 RWS_RackAngleFbk2 		: 16;
            uint32 RWS_RackAngleSpeedFbk2 	: 16;
            uint32 RWS_VCU_RC_counter2 		: 4;
            uint32 RWS_VCU_RC_CRC2 			: 4;
        }CH0_RWA_VCU_RC_Signal2_0x061;

        struct
        {
            uint32 Lamp_BRAKE_CMD 	: 2;
            uint32 Lamp_Hazard_CMD 	: 2;
            uint32 Lamp_HBEAM_CMD 	: 2;
            uint32 Lamp_Head_CMD 	: 2;
            uint32 Lamp_LTRN_CMD 	: 2;
            uint32 Lamp_Reverse_CMD 	: 2;
            uint32 Lamp_RTRN_CMD 	: 2;
            uint32 Lamp_Position_CMD : 2;
            uint32 Lamp_DRL_CMD 		: 2;
            uint32 Wiper_CMD 		 : 2;
            uint32 LDC_ACT_CMD 		 : 2;
            uint32 HV_ON_CMD 		 : 2;
            uint32 CE_ON_CMD 		 : 2;
            uint32 LDC_TRGT_CUR 		 : 8;
            uint32 Vcu_OperMode 		 : 3;
            uint32 Vcu_SysMode 		 : 3;
            uint32 VCU_BCM_counter 	 : 4;
            uint32 VCU_BCM_CRC 		 : 4;
        }CH0_VCU_BCM_Signal_1_0x151;

        struct
        {
            uint32 Lamp_HMI1_CMD 	: 2;
            uint32 Lamp_HMI2_CMD 	: 2;
            uint32 Lamp_HMI3_CMD 	: 2;
            uint32 Lamp_HMI4_CMD 	: 2;
            uint32 Lamp_HMI5_CMD 	: 2;

        }CH0_VCU_BCM_Signal_2_0x180;

        struct
        {
            uint32 VCU_TorqueContol 	: 1;
            uint32 VCU_Ready 			: 1;
            uint32 VCU_ControlMode 		: 1;
            uint32 VCU_PwrEnable 		: 1;
            uint32 VCU_GearCmd 			: 4;
            uint32 VCU_MtrDir 			: 2;
            uint32 VCU_BmsFlt 			: 3;
            uint32 VCU_BmsHvSt 			: 2;
            uint32 VCU_PosTrqLimit 		: 16;
            uint32 VCU_NegTrqLimit 		: 16;
            uint32 VCU_TrqCmd 			: 16;
        }CH0_VCU_MCU_Signals1_0x250;

        struct
        {
            uint32 Park_Request_to_EPC 	: 2;
            uint32 EPAM_ErrClear_State  : 1;

        }CH0_VCU_EPAM_0x220;

        struct
        {
            uint32 YEAR 	: 8;
            uint32 Month  	: 8;
            uint32 Day 		: 8;
            uint32 Ver  	: 8;
            uint32 CAR_NUM  : 32;

        }CH0_SW_VER_0x100;

        struct
        {
            uint8 ACU_Fault_Flag			: 1;
            uint8 MCU_Actuator_Fault_Flag	: 1;
            uint8 IDB_ECU_Fault_Flag		: 1;
            uint8 RCU_ECU_Fault_Flag		: 1;
            uint8 RWA1_ECU_Fault_Flag		: 1;
            uint8 RWA2_ECU_Fault_Flag		: 1;
            uint8 RWA_Actuator_Fault_Flag	: 1;
            uint8 ACU_ECU_Fault_Flag		: 1;

        }CH0_VCU_RC_Fault_Flag_0x013;

        struct
		{
        	uint32 MCU_Target_Command	 			     : 16;
        	uint32 RWA_Target_Command	 			     : 16;
        	uint32 IDB_Target_Command	 			     : 16;
		}CH0_TARGET_VALUE_0x140;

        struct
        {
            uint32 VCU_MCU_CMD 	 			             : 1;

        }CH0_TX_VCU_MCU_Fault_mode_0x013;

        struct
        {
            uint32 VCU_RWA1_CMD 	 			         : 1;
            uint32 VCU_RWA2_CMD 	 			         : 1;
            uint32 VCU_RWA1_WakeupCommand 	 			 : 1;
            uint32 VCU_RWA2_WakeupCommand 	 			 : 1;
            uint32 VCU_RWA1_2_FAULT 	 			     : 1;

        }CH0_TX_VCU_RWA_Fault_mode_0x014;

        struct
        {
            uint32 VCU_RWS1_CMD 	 			         : 1;
            uint32 VCU_RWS2_CMD 	 			         : 1;
            uint32 VCU_RWS1_WakeupCommand 	 			 : 1;
            uint32 VCU_RWS2_WakeupCommand 	 			 : 1;
            uint32 VCU_RWS1_2_FAULT 	 			     : 1;

        }CH0_TX_VCU_RWS_Fault_mode_0x015;

        struct
        {
            uint32 VCU_IDB_Fault	 			         : 1;
            uint32 VCU_RCU_Fault 			             : 1;
            uint32 VCU_IDB_WakeupCommand 	 			 : 1;
            uint32 VCU_RCU_WakeupCommand 	 			 : 1;

        }CH0_TX_VCU_IDB_RCU_Fault_mode_0x016;


        struct
        {
            uint32 Lamp_RTRN 		 : 2;
            uint32 Lamp_Reverse 	 : 2;
            uint32 Lamp_LTRN 		 : 2;
            uint32 Lamp_Head 		 : 2;
            uint32 Lamp_HBEAM 		 : 2;
            uint32 Lamp_Hazard 		 : 2;
            uint32 Lamp_BRAKE 		 : 2;
            uint32 Status_Wiper 	 : 2;
            uint32 BCM_CE1_STA 		 : 2;
            uint32 BCM_CE2_STA 		 : 2;
            uint32 BCM_CE3_STA 		 : 2;
            uint32 BCM_CE4_STA 		 : 2;
            uint32 BCM_CE5_STA 		 : 2;
            uint32 BCM_MAINSW_STA    : 2;
            uint32 Battery_Voltage   : 8;
            uint32 Lamp_DRL 		 : 2;
            uint32 Lamp_Position 	 : 2;
            uint32 BCM_VCU_counter1  : 4;
			uint32 BCM_VCU_CRC1      : 4;

        }CH1_BCM_VCU_ACU_Signal1_0x570;

        struct
        {
            uint32 ChargingStatus 	 : 3;
            uint32 BCM_ChgeCon_DTD 	 : 1;
            uint32 BMS_HVOn_STA 	 : 1;
            uint32 IntLckSta_OBC 	 : 1;
            uint32 IntLckSta_BMS 	 : 1;
            uint32 BMS_SOC 			 : 8;
            uint32 BMS_SOH 			 : 8;
            uint32 CommSta_OBC 		 : 2;
            uint32 CommSta_VCU 		 : 2;
            uint32 CommSta_BMS 		 : 2;
            uint32 CommSta_LDC 		 : 2;
            uint32 CommSta_TMS 		 : 2;
            uint32 BMS_SOH_INV 		 : 1;
            uint32 BMS_SOC_INV 		 : 1;
            uint32 Bms_Soc_Wrng 	 : 1;
            uint32 Bms_SoH_Wrng 	 : 1;
            uint32 BCM_VCU_counter2  : 4;
            uint32 BCM_VCU_CRC2 	 : 4;
        }CH1_BCM_VCU_ACU_Signal2_0x580;

        struct
        {
            uint32 Bms_PackVolt 	 : 16;
            uint32 Bms_PackCur 		 : 16;
            uint32 Bms_PackPwr 		 : 16;
            uint32 BCM_VCU_counter3  : 4;
            uint32 BCM_VCU_CRC3 	 : 4;
        }CH1_BCM_VCU_ACU_Signal3_0x590;

        struct
        {
            uint32 LDC_ACTL_CUR 	 : 8;
			uint32 LDC_INP_VOLT      : 10;
			uint32 LDC_ACTL_VOLT      : 8;
            uint32 BCM_VCU_counter4  : 4;
            uint32 BCM_VCU_CRC4 	 : 4;

        }CH1_BCM_VCU_ACU_Signal4_0x595;

        struct
        {
            uint32 OBC_FltSta 		 : 2;
            uint32 BMS_FltSta 		 : 2;
            uint32 LDC_FltSta 		 : 2;
            uint32 BCM_FltSta 		 : 2;
            uint32 BMS_TEMP_FAULT 	 : 2;
            uint32 LDC_TEMP_FAULT 	 : 2;
            uint32 OBC_TEMP_FAULT 	 : 2;
            uint32 BCM_VCU_counter5  : 4;
            uint32 BCM_VCU_CRC5 	 : 4;

        }CH1_BCM_VCU_ACU_Signal5_0x585;


        struct
        {
            uint32 RWA_RackAngleFbk 		 : 16;
            uint32 RWA_RackAngleSpeedFbk 	 : 16;
            uint32 RWA_VCU_ACU_counter1 	 : 4;
            uint32 RWA_VCU_ACU_CRC1 		 : 4;
        }CH1_RWA_VCU_ACU_Signal1_0x050;

        struct
        {
            uint32 RWA_RackAngleFbk 		 : 16;
            uint32 RWA_RackAngleSpeedFbk 	 : 16;
            uint32 RWA_VCU_ACU_counter2 	 : 4;
            uint32 RWA_VCU_ACU_CRC2 		 : 4;
        }CH1_RWA_VCU_ACU_Signal2_0x051;

        struct
        {
            uint32 RWS_RackAngleFbk 		 : 16;
            uint32 RWS_RackAngleSpeedFbk 	 : 16;
            uint32 RWS_VCU_ACU_counter1 	 : 4;
            uint32 RWS_VCU_ACU_CRC1 		 : 4;
        }CH1_RWS_VCU_ACU_Signal1_0x060;

        struct
        {
            uint32 RWS_RackAngleFbk 		 : 16;
            uint32 RWS_RackAngleSpeedFbk 	 : 16;
            uint32 RWS_VCU_ACU_counter2 	 : 4;
            uint32 RWS_VCU_ACU_CRC2 		 : 4;
        }CH1_RWS_VCU_ACU_Signal2_0x061;

        struct
        {
            uint32 VCU_ACU_MCU_EstTrq  		 : 16;
            uint32 VCU_ACU_RWA_Rack_Fbk		 : 16;
            uint32 VCU_ACU_Brk_Pressure_Fbk  : 16;

            uint32 VCU_ACU_long_Ctl_mode 	 : 1;
            uint32 VCU_ACU_GearPos 			 : 2;
            uint32 VCU_ACU_ParkBrake_Fbk 	 : 2;
            uint32 VCU_ACU_Emergency_Stop	 : 1 ;
            uint32 VCU_ACU_ARC1 	 		 : 4;
            uint32 VCU_ACU_CRC1 	 		 : 4;

        }CH1_VCU_ACU_Signal1_0x013;

        struct
        {
            uint32 RWA_Flt          : 4;
            uint32 RWS_Flt          : 4;
            uint32 IDB_Flt          : 4;
            uint32 MCU_Flt          : 1;
            uint32 Drive_Mode       : 2;
            uint32 VCU_IGN_SIG      : 2;
            uint32 VCU_ACU_RC_BMS_SOC 		 : 8;
            uint32 VCU_ACU_MCU_EstSpd 		 : 16;
            uint32 VCU_ACU_counter2 : 4;
            uint32 VCU_ACU_CRC2     : 4;
        }CH1_VCU_ACU_Signal2_0x014;

        struct
        {
            uint32 VCU_Vx_Fbk            : 8;
            uint32 VCU_Vx_Limit          : 8;
            uint32 VCU_Acc_Fbk           : 16;
            uint32 VCU_Acc_Limit         : 16;
            uint32 VCU_ACU_counter3 : 4;
            uint32 VCU_ACU_CRC3     : 4;
        }CH1_VCU_ACU_Signal3_0x015;


        // ---------- IMU
        struct
        {
        	uint32  IMU_YawRtVal 		;
            uint32 IMU_CLU_STAT 		: 4;
            uint32 IMU_YAW_RATE_STAT 	: 4;
            sint32 IMU_TEMP_RATE 		: 8;
            uint32  IMU_AY_Val 			;
            uint32 IMU_MSG_TX1_CNT 		: 4;
            uint32 IMU_AY_STAT 			: 4;
            uint32 IMU_TX1_CRC 			: 8;
        }CH1_IMU_TX1_CH1_0x174;

        struct
        {
        	uint32  IMU_RollRtVal 		;
            uint32 IMU_CLU_STAT5 		: 4;
            uint32 IMU_ROLL_RATE_STAT 	: 4;
            uint32 IMU_CLU_DIAG 		: 8;
            uint32  IMU_AX_Val 			;
            uint32 IMU_MSG_TX2_CNT 		: 4;
            uint32 IMU_AX_STAT 			: 4;
            uint32 IMU_TX2_CRC 			: 8;
        }CH1_IMU_TX2_CH1_0x178;

        struct
        {
        	uint32  IMU_PitchRtVal 		;
            uint32 IMU_HW_Index 		: 4;
            uint32 IMU_PITCH_RATE_STAT 	: 4;
            uint32  IMU_AZ_Val 			;
            uint32 IMU_MSG_TX3_CNT 		: 4;
            uint32 IMU_AZ_STAT 			: 4;
            uint32 IMU_TX3_CRC 			: 8;
        }CH1_IMU_TX3_CH1_0x17C;

        // ACU ���� �޼���

        struct
        {
        	uint32  ACU_CAR_MCU_MtrTemp 	    : 8;
            uint32  ACU_CAR_MCU_InvTemp 	    : 8;
            uint32  ACU_CAR_EPAM_Temperature   	: 8;
            uint32  ACU_CAR_Battery_Voltage 	: 8;
            uint32  ACU_CAR_Bms_SoH_Wrng 		: 1;
            uint32  ACU_CAR_ChargingStatus 		: 3;
            uint32  ACU_CAR_BMS_HVOn_STA 		: 1;
            uint32  ACU_CAR_ARC 				: 4;
            uint32  ACU_CAR_CRC 				: 4;
        }CH1_ACU_CAR_STAT_CH1_0x016;

        struct
		{
        	uint8	ACU_Fault_Flag			: 1;
			uint8	MCU_Actuator_Fault_Flag	: 1;
			uint8	IDB_ECU_Fault_Flag		: 1;
			uint8	RCU_ECU_Fault_Flag		: 1;
			uint8	RWA1_ECU_Fault_Flag		: 1;
			uint8	RWA2_ECU_Fault_Flag		: 1;
			uint8	RWA_Actuator_Fault_Flag	: 1;
			uint8	ACU_ECU_Fault_Flag		: 1;
		}CH1_VCU_ACU_Fault_Flag_0x017;

        struct
		{
			uint32 VCU_Ready		: 2;
			uint32 DrivingPosition	: 3;
		}CH1_VCU_245h_0x245;

		struct
		{
			uint32 Speed_Combi : 10;
		}CH1_ICM_303h_0x303;

		struct
		{
			uint32	WelcomeSoundCmd	: 2;
			uint32	GoodbyeSoundCmd	: 2;
		}CH1_CGW_372h_0x372;

		struct
		{
			uint32 Charging_Sts_IND : 3;
		}CH1_VCU_3ACh_0x3AC;

		struct
		{
			uint32	VC_DOM : 4;
		}CH1_CGW_588h_VC_0x588;


		/*-------------------- CH2 --------------------*/

        struct
        {
            uint32 Arc 						: 8;
            uint32 BrakeHoldRequest 		: 1;
            uint32 BrakeTorqueCommand 		: 16;
            uint32 Crc 						: 8;
            uint32 DriveTorqueCommand 		: 14;
            uint32 DriveTorqueCommandValid 	: 1;
            uint32 EscActivation 			: 1;
            uint32 GearPosition 			: 2;
            uint32 ParkBrakeRequest 		: 2;
            uint32 PowertrainMode 			 : 1;
            uint32 RbcActivation 			 : 1;
            uint32 Reserved1 				 : 1;
            uint32 Reserved2 				 : 2;
            uint32 RopActivation 			 : 1;
            uint32 TcsActivation 			 : 1;
        }CH2_BSC_IDB_BrakeCommand_0x064;

        struct
        {
            uint32 Arc 							: 8;
            uint32 Crc 							: 8;
            uint32 LateralAcceleration 			: 10;
            uint32 LateralAccelerationValid 		: 1;
            uint32 LongitudinalAcceleration 		: 10;
            uint32 LongitudinalAccelerationValid : 1;
            uint32 VehicleSpeed 					: 12;
            uint32 VehicleSpeedValid 			: 1;
            uint32 VehicleYawRate 				: 12;
            uint32 VehicleYawRateValid 			 : 1;
        }CH2_BSC_IMU_0x070;

        struct
        {
            uint32 Arc 			 : 8;
            uint32 Crc 			 : 8;
            uint32 WakeUpCommand : 1;
        }CH2_BSC_IDB_StartupCommand_0x032;

        struct
        {
            uint64 UdsRequest : 64;
            uint64 UdsRequest_MSB : 32;
            uint64 UdsRequest_LSB : 32;

        }CH2_BSC_IDB_UdsRequest_0x796;

        struct
        {
            uint32 ActualMotorTorque 			 : 14;
            uint32 ActualMotorTorqueValid 		 : 1;
            uint32 Arc 							 : 8;
            uint32 Crc 							 : 8;
            uint32 MaxAvailableRegenTorque 		 : 14;
            uint32 MaxAvailableRegenTorqueValid 	 : 1;
            uint32 TractionMotorFault 			 : 1;
        }CH2_BSC_RegenCommand_0x06A;

        struct
        {
            uint32 Arc 					 : 8;
            uint32 Crc 					 : 8;
            uint32 RackAngleCmd 		 : 16;
            uint32 RackAngleCmdValid  : 1;
        }CH2_BSC_RWA_RackCommand_0x040;

        struct
        {
            uint32 Arc 			: 8;
            uint32 Crc 			: 8;
            uint32 EcuPowerMode : 2;
            uint32 EcuRole 		: 2;
            uint32 EcuStatus 	: 4;
        }CH2_BSC_RWA_Sister_0x350;

        struct
        {
            uint32 Arc 				: 8;
            uint32 Crc 				: 8;
            uint32 ModeCommand 		: 1;
            uint32 WakeUpCommand 	: 1;
        }CH2_BSC_RWA_StartupCommand_0x310;

        struct
        {
            uint32 Arc 							: 8;
            uint32 Crc 							: 8;
            uint32 EnvironmentTemperature 		: 8;
            uint32 EnvironmentTemperatureValid  : 1;
            uint32 TimestampDay 				: 5;
            uint32 TimestampHour 				: 5;
            uint32 TimestampMinute 				: 6;
            uint32 TimestampMonth 				: 4;
            uint32 TimestampSecond 				: 6;
            uint32 TimestampYear 				: 6;
        }CH2_BSC_VehicleEnvironment_0x384;

        struct
        {
            uint32 Arc 						 : 8;
            uint32 Crc 						 : 8;
            uint32 FrontLeftWheelSpeed 		 : 10;
            uint32 FrontLeftWheelSpeedValid  : 1;
            uint32 FrontRightWheelSpeed 		 : 10;
            uint32 FrontRightWheelSpeedValid : 1;
            uint32 RearLeftWheelSpeed 		 : 10;
            uint32 RearLeftWheelSpeedValid 	 : 1;
            uint32 RearRightWheelSpeed 		 : 10;
            uint32 RearRightWheelSpeedValid  : 1;
        }CH2_IDB_WheelSpeedStatus_0x088;


        /*-------------------- CH3 --------------------*/
        struct
        {            
            uint32 Arc 							 : 8;
            uint32 Crc 							 : 8;
            uint32 LateralAcceleration 			 : 10;
            uint32 LateralAccelerationValid 		 : 1;
            uint32 LongitudinalAcceleration 		 : 10;
            uint32 LongitudinalAccelerationValid  : 1;
            uint32 VehicleSpeed 					 : 12;
            uint32 VehicleSpeedValid 			 : 1;
            uint32 VehicleYawRate 				 : 12;
            uint32 VehicleYawRateValid 			 : 1;
        }CH3_BSC_IMU_0x071;

        struct
        {
            uint32 Arc 					 : 8;
            uint32 BrakeHoldRequest 	 : 1;
            uint32 BrakeTorqueCommand 	 : 16;
            uint32 Crc 					 : 8;
            uint32 EscActivation 		 : 1;
            uint32 GearPosition 		 : 2;
            uint32 ParkBrakeRequest 	 : 2;
            uint32 PowertrainMode 		 : 1;
            uint32 Reserved1 			 : 1;
            uint32 Reserved2 			 : 2;
        }CH3_BSC_RCU_BrakeCommand_0x065;

        struct
        {
            uint32 Arc 				 : 8;
            uint32 Crc 				 : 8;
            uint32 RackAngleCmd 	 : 16;
            uint32 RackAngleCmdValid : 1;
        }CH3_BSC_RWA_RackCommand_0x040;

        struct
        {
            uint32 Arc 			: 8;
            uint32 Crc 			: 8;
            uint32 EcuPowerMode : 2;
            uint32 EcuRole 		: 2;
            uint32 EcuStatus 	: 4;
        }CH3_BSC_RWA_Sister_0x350;

        struct
        {
            uint32 Arc 			 : 8;
            uint32 Crc 			 : 8;
            uint32 ModeCommand 	 : 1;
            uint32 WakeUpCommand : 1;
        }CH3_BSC_RWA_StartupCommand_0x310;

        struct
        {
            uint32 Arc 			 : 8;
            uint32 Crc 			 : 8;
            uint32 WakeUpCommand : 1;
        }CH3_BSC_RCU_StartupCommand_0x033;

        struct
        {
            uint64 UdsRequest : 64;
            uint64 UdsRequest_MSB : 32;
            uint64 UdsRequest_LSB : 32;
        }CH3_BSC_RCU_UdsRequest_0x797;


        struct
        {
            uint32 Arc 							 : 8;
            uint32 Crc 							 : 8;
            uint32 EnvironmentTemperature 		 : 8;
            uint32 EnvironmentTemperatureValid 	 : 1;
            uint32 TimestampDay 					 : 5;
            uint32 TimestampHour 				 : 5;
            uint32 TimestampMinute 				 : 6;
            uint32 TimestampMonth 				 : 4;
            uint32 TimestampSecond 				 : 6;
            uint32 TimestampYear 				 : 6;
        }CH3_BSC_VehicleEnvironment_0x385;

        struct
        {
            uint32 Arc  						 : 8;
            uint32 Crc  						 : 8;
            uint32 FrontLeftWheelSpeed  		 : 10;
            uint32 FrontLeftWheelSpeedValid  : 1;
            uint32 FrontRightWheelSpeed  	 : 10;
            uint32 FrontRightWheelSpeedValid : 1;
            uint32 RearLeftWheelSpeed  		 : 10;
            uint32 RearLeftWheelSpeedValid   : 1;
            uint32 RearRightWheelSpeed  		 : 10;
            uint32 RearRightWheelSpeedValid  : 1;
        }CH3_RCU_WheelSpeedStatus_0x089;


        /*-------------------- CH4 --------------------*/
        struct
        {
            uint32 Arc 				  : 8;
            uint32 Crc 				  : 8;
            uint32 RackAngleCmd1	  : 16;
            uint32 RackAngleCmdValid1 : 1;
        }CH4_VCU_RWS_Rack_Cmd_0x040;


        struct
        {
            uint32 Arc 			: 8;
            uint32 Crc 			: 8;
            uint32 EcuPowerMode1 : 2;
            uint32 EcuRole1 		: 2;
            uint32 EcuStatus1 	: 4;
        }CH4_VCU_RWS_Sister_0x350;

        struct
        {
            uint32 Arc 				: 8;
            uint32 Crc 				: 8;
            uint32 RWS_ModeCommand1   : 1;
            uint32 RWS_WakeUpCommand1 : 1;
        }CH4_VCU_RWS_StartupCommand_0x310;


        /*-------------------- CH5 --------------------*/
        struct
        {
            uint32 Arc 				 : 8;
            uint32 Crc 				 : 8;
            uint32 RackAngleCmd2     : 16;
            uint32 RackAngleCmdValid2  : 1;
        }CH5_VCU_RWS_Rack_Cmd_0x040;


        struct
        {
            uint32 Arc 				: 8;
            uint32 Crc 				: 8;
            uint32 RWS_ModeCommand2 	: 1;
            uint32 RWS_WakeUpCommand2 	: 1;
        }CH5_VCU_RWS_StartupCommand_0x310;

        struct
        {
            uint32 Arc 			: 8;
            uint32 Crc 			: 8;
            uint32 EcuPowerMode2 : 2;
            uint32 EcuRole2 		: 2;
            uint32 EcuStatus2 	: 4;
        }CH5_VCU_RWS_Sister_0x350;



    }TX;

}ECU3_CAN;

/*==================== global variables ====================*/
typedef struct
{
	uint32 CLU_AlvCnt1Val;
	uint32 CLU_Crc1Val;

}Variable;


typedef struct	_user_can { 
	uint8_t buf[MAX_CAN_BUFFER];
	uint8_t len;
	uint8_t xreq; 
	uint32_t id;


} user_can_;


typedef struct _Dev_can {
	user_can_	rx;
	user_can_	tx;
	user_can_   tx_ring[MAX_TX_RING];
	uint16_t p_wr;
	uint16_t p_rd;
	uint8_t tx_mb_idx;

}Dev_can_;


#ifdef __CAN_C__
	#define EXT_CAN_C
#else
	#define EXT_CAN_C    extern
#endif


EXT_CAN_C Variable Var;

EXT_CAN_C const canMessageObjectConfigType g_messageObjectConf_ECU3_0ch_TX[NUMBER_OF_ECU3_CH0_TX_MESSAGE];
EXT_CAN_C const canMessageObjectConfigType g_messageObjectConf_ECU3_0ch_RX[NUMBER_OF_ECU3_CH0_RX_MESSAGE];
EXT_CAN_C const canMessageObjectConfigType g_messageObjectConf_ECU3_1ch_TX[NUMBER_OF_ECU3_CH1_TX_MESSAGE];
EXT_CAN_C const canMessageObjectConfigType g_messageObjectConf_ECU3_1ch_RX[NUMBER_OF_ECU3_CH1_RX_MESSAGE];
EXT_CAN_C const canMessageObjectConfigType g_messageObjectConf_ECU3_2ch_TX[NUMBER_OF_ECU3_CH2_TX_MESSAGE];
EXT_CAN_C const canMessageObjectConfigType g_messageObjectConf_ECU3_2ch_RX[NUMBER_OF_ECU3_CH2_RX_MESSAGE];
EXT_CAN_C const canMessageObjectConfigType g_messageObjectConf_ECU3_3ch_TX[NUMBER_OF_ECU3_CH3_TX_MESSAGE];
EXT_CAN_C const canMessageObjectConfigType g_messageObjectConf_ECU3_3ch_RX[NUMBER_OF_ECU3_CH3_RX_MESSAGE];
EXT_CAN_C const canMessageObjectConfigType g_messageObjectConf_ECU3_4ch_TX[NUMBER_OF_ECU3_CH4_TX_MESSAGE];
EXT_CAN_C const canMessageObjectConfigType g_messageObjectConf_ECU3_4ch_RX[NUMBER_OF_ECU3_CH4_RX_MESSAGE];
EXT_CAN_C const canMessageObjectConfigType g_messageObjectConf_ECU3_5ch_TX[NUMBER_OF_ECU3_CH5_TX_MESSAGE];
EXT_CAN_C const canMessageObjectConfigType g_messageObjectConf_ECU3_5ch_RX[NUMBER_OF_ECU3_CH5_RX_MESSAGE];

EXT_CAN_C ECU3_CAN ECU3;
EXT_CAN_C ECU3_CAN GV;
EXT_CAN_C Dev_can_ CAN_ch[6];

EXT_CAN_C uint32_t can_data_set_rx(uint8_t ch, uint8_t data_type);
EXT_CAN_C void can_data_set_tx(uint8_t ch, uint8_t data_type, uint32_t data);
EXT_CAN_C void can_send_config(uint8_t ch, canMessageObjectConfigType config);

EXT_CAN_C void CAN_Task_5ms(void);
EXT_CAN_C void CAN_Task_10ms(void);
EXT_CAN_C void CAN_Task_20ms(void);
EXT_CAN_C void CAN_Task_100ms(void);
EXT_CAN_C void CAN_Task_200ms(void);
EXT_CAN_C void CAN_Task_1000ms(void);


EXT_CAN_C void ECU3_InputData_Set_for_Logic_5ms(void);
EXT_CAN_C void ECU3_InputData_Set_for_Logic_10ms(void);
EXT_CAN_C void ECU3_InputData_Set_for_Logic_20ms(void);
EXT_CAN_C void ECU3_InputData_Set_for_Logic_100ms(void);
EXT_CAN_C void ECU3_InputData_Set_for_Logic_200ms(void);
EXT_CAN_C void ECU3_InputData_Set_for_Logic_1000ms(void);

EXT_CAN_C void ECU3_CAN_Data_Set_5ms(void);
EXT_CAN_C void ECU3_CAN_Data_Set_10ms(void);
EXT_CAN_C void ECU3_CAN_Data_Set_20ms(void);
EXT_CAN_C void ECU3_CAN_Data_Set_100ms(void);
EXT_CAN_C void ECU3_CAN_Data_Set_200ms(void);
EXT_CAN_C void ECU3_CAN_Data_Set_1000ms(void);

EXT_CAN_C void ECU3_CAN_Bypass_5ms(void);
EXT_CAN_C void ECU3_CAN_Bypass_10ms(void);
EXT_CAN_C void ECU3_CAN_Bypass_20ms(void);
EXT_CAN_C void ECU3_CAN_Bypass_100ms(void);
EXT_CAN_C void ECU3_CAN_Bypass_200ms(void);
EXT_CAN_C void ECU3_CAN_Bypass_1000ms(void);

EXT_CAN_C void ECU3_CAN_Transmit_5ms(void);
EXT_CAN_C void ECU3_CAN_Transmit_10ms(void);
EXT_CAN_C void ECU3_CAN_Transmit_20ms(void);
EXT_CAN_C void ECU3_CAN_Transmit_100ms(void);
EXT_CAN_C void ECU3_CAN_Transmit_200ms(void);
EXT_CAN_C void ECU3_CAN_Transmit_1000ms(void);



//------------------------------ CH0 RX ------------------------------//
EXT_CAN_C void Receive_RC_VCU_Signal1_CH0_0x040(void);
EXT_CAN_C void Receive_RC_VCU_Signal2_CH0_0x041(void);
EXT_CAN_C void Receive_RC_VCU_Fault_Flag_CH0_0x042(void);
EXT_CAN_C void Receive_RC_VCU_BCM_Signal_1_CH0_0x155(void);
EXT_CAN_C void Receive_IMU_TX1_CH0_0x174(void);
EXT_CAN_C void Receive_IMU_TX1_CH0_0x178(void);
EXT_CAN_C void Receive_IMU_TX1_CH0_0x17C(void);
EXT_CAN_C void Receive_EPAM_VCU_CH0_0x221(void);
EXT_CAN_C void Receive_MCU_VCU_Signals1_CH0_0x300(void);
EXT_CAN_C void Receive_MCU_VCU_Signals2_CH0_0x301(void);
EXT_CAN_C void Receive_BCM_VCU_Signal1_CH0_0x570(void);
EXT_CAN_C void Receive_BCM_VCU_Signal2_CH0_0x580(void);
EXT_CAN_C void Receive_BCM_VCU_Signal5_CH0_0x585(void);
EXT_CAN_C void Receive_BCM_VCU_Signal3_CH0_0x590(void);
EXT_CAN_C void Receive_BCM_VCU_Signal4_CH0_0x595(void);
EXT_CAN_C void Receive_Debugging_CH0_0x777(void);

EXT_CAN_C void Input_Data_Set_IMU_VCU_Signal_CH0_0x020(void);
EXT_CAN_C void Input_Data_Set_RC_VCU_Signal1_CH0_0x040(void);
EXT_CAN_C void Input_Data_Set_RC_VCU_Signal2_CH0_0x041(void);
EXT_CAN_C void Input_RC_VCU_Fault_Flag_CH0_0x042(void);
EXT_CAN_C void Input_RX_RC_RWA_Fault_mode_CH0_0x043(void);
EXT_CAN_C void Input_RX_RC_RWS_Fault_mode_CH0_0x044(void);
EXT_CAN_C void Input_RX_RC_IDB_RCU_Fault_mode_CH0_0x045(void);
EXT_CAN_C void Input_Data_Set_RC_VCU_BCM_Signal_1_CH0_0x155(void);
EXT_CAN_C void Input_Data_Set_IMU_TX1_CH0_0x174(void);
EXT_CAN_C void Input_Data_Set_IMU_TX1_CH0_0x178(void);
EXT_CAN_C void Input_Data_Set_IMU_TX1_CH0_0x17C(void);
EXT_CAN_C void Input_Data_Set_EPAM_VCU_CH0_0x221(void);
EXT_CAN_C void Input_Data_Set_MCU_VCU_Signals1_CH0_0x300(void);
EXT_CAN_C void Input_Data_Set_MCU_VCU_Signals2_CH0_0x301(void);
EXT_CAN_C void Input_Data_Set_BCM_VCU_Signal1_CH0_0x570(void);
EXT_CAN_C void Input_Data_Set_BCM_VCU_Signal2_CH0_0x580(void);
EXT_CAN_C void Input_Data_Set_BCM_VCU_Signal5_CH0_0x585(void);
EXT_CAN_C void Input_Data_Set_BCM_VCU_Signal3_CH0_0x590(void);
EXT_CAN_C void Input_Data_Set_BCM_VCU_Signal4_CH0_0x595(void);



//------------------------------ CH1 RX ------------------------------//
EXT_CAN_C void Receive_ACU_VCU_Signal1_CH1_0x091(void);
EXT_CAN_C void Receive_ACU_VCU_Signal2_CH1_0x092(void);
EXT_CAN_C void Receive_ACU_VCU_Signal3_CH1_0x093(void);
EXT_CAN_C void Receive_ACU_BCM_Signal_1_CH1_0x151(void);

EXT_CAN_C void Input_Data_Set_ACU_VCU_Signal1_CH1_0x091(void);
EXT_CAN_C void Input_Data_Set_ACU_VCU_Signal2_CH1_0x092(void);
EXT_CAN_C void Input_Data_Set_ACU_VCU_Signal3_CH1_0x093(void);
EXT_CAN_C void Input_Data_Set_ACU_BCM_Signal_1_CH1_0x151(void);



//------------------------------ CH2 RX ------------------------------//
EXT_CAN_C void Receive_RWA_Status1_CH2_0x072(void);
EXT_CAN_C void Receive_RWA_Status2_CH2_0x073(void);
EXT_CAN_C void Receive_IDB_RegenTcsRequest_CH2_0x082(void);
EXT_CAN_C void Receive_IDB_WheelStatus_CH2_0x08C(void);
EXT_CAN_C void Receive_IDB_Status_CH2_0x092(void);
EXT_CAN_C void Receive_IDB_TireSlipStatus_CH2_0x096(void);
EXT_CAN_C void Receive_IDB_BrakeStatus1_CH2_0x09A(void);
EXT_CAN_C void Receive_IDB_PressureStatus_CH2_0x0A0(void);
EXT_CAN_C void Receive_RWA_Status3_CH2_0x0AA(void);
EXT_CAN_C void Receive_IDB_BrakeStatus2_CH2_0x0C8(void);
EXT_CAN_C void Receive_IDB_UdsResponse_CH2_0x798(void);

EXT_CAN_C void Input_Data_Set_RWA_Status1_CH2_0x072(void);
EXT_CAN_C void Input_Data_Set_RWA_Status2_CH2_0x073(void);
EXT_CAN_C void Input_Data_Set_IDB_RegenTcsRequest_CH2_0x082(void);
EXT_CAN_C void Input_Data_Set_IDB_WheelStatus_CH2_0x08C(void);
EXT_CAN_C void Input_Data_Set_IDB_Status_CH2_0x092(void);
EXT_CAN_C void Input_Data_Set_IDB_TireSlipStatus_CH2_0x096(void);
EXT_CAN_C void Input_Data_Set_IDB_BrakeStatus1_CH2_0x09A(void);
EXT_CAN_C void Input_Data_Set_IDB_PressureStatus_CH2_0x0A0(void);
EXT_CAN_C void Input_Data_Set_RWA_Status3_CH2_0x0AA(void);
EXT_CAN_C void Input_Data_Set_IDB_BrakeStatus2_CH2_0x0C8(void);
EXT_CAN_C void Input_Data_Set_IDB_UdsResponse_CH2_0x798(void);



//------------------------------ CH3 RX ------------------------------//
EXT_CAN_C void Receive_RWA_Status1_CH3_0x072(void);
EXT_CAN_C void Receive_RWA_Status2_CH3_0x073(void);
EXT_CAN_C void Receive_RCU_WheelStatus_CH3_0x08D(void);
EXT_CAN_C void Receive_RCU_Status_CH3_0x093(void);
EXT_CAN_C void Receive_RCU_TireSlipStatus_CH3_0x097(void);
EXT_CAN_C void Receive_RCU_BrakeStatus1_CH3_0x09B(void);
EXT_CAN_C void Receive_RCU_PressureStatus_CH3_0x0A1(void);
EXT_CAN_C void Receive_RWA_Status3_CH3_0x0AA(void);
EXT_CAN_C void Receive_RCU_BrakeStatus2_CH3_0x0C9(void);
EXT_CAN_C void Receive_RCU_UdsResponse_CH3_0x799(void);

EXT_CAN_C void Input_Data_Set_RWA_Status1_CH3_0x072(void);
EXT_CAN_C void Input_Data_Set_RWA_Status2_CH3_0x073(void);
EXT_CAN_C void Input_Data_Set_RCU_WheelStatus_CH3_0x08D(void);
EXT_CAN_C void Input_Data_Set_RCU_Status_CH3_0x093(void);
EXT_CAN_C void Input_Data_Set_RCU_TireSlipStatus_CH3_0x097(void);
EXT_CAN_C void Input_Data_Set_RCU_BrakeStatus1_CH3_0x09B(void);
EXT_CAN_C void Input_Data_Set_RCU_PressureStatus_CH3_0x0A1(void);
EXT_CAN_C void Input_Data_Set_RWA_Status3_CH3_0x0AA(void);
EXT_CAN_C void Input_Data_Set_RCU_BrakeStatus2_CH3_0x0C9(void);
EXT_CAN_C void Input_Data_Set_RCU_UdsResponse_CH3_0x799(void);



//------------------------------ CH4 RX ------------------------------//
EXT_CAN_C void Receive_RWS_VCU_stat_Signal_CH4_0x072(void);
EXT_CAN_C void Receive_RWS_VCU_Rack_AngleFbk_CH4_0x073(void);

EXT_CAN_C void Input_Data_Set_RWS_VCU_stat_Signal_CH4_0x072(void);
EXT_CAN_C void Input_Data_Set_RWS_VCU_Rack_AngleFbk_CH4_0x073(void);



//------------------------------ CH5 RX ------------------------------//
EXT_CAN_C void Receive_RWS_VCU_stat_Signal_CH5_0x072(void);
EXT_CAN_C void Receive_RWS_VCU_Rack_AngleFbk_CH5_0x073(void);

EXT_CAN_C void Input_Data_Set_RWS_VCU_stat_Signal_CH5_0x072(void);
EXT_CAN_C void Input_Data_Set_RWS_VCU_Rack_AngleFbk_CH5_0x073(void);



//------------------------------ CH0 TX ------------------------------//
EXT_CAN_C void Output_Data_Set_VCU_RC_Signals1_CH0_0x010(void);
EXT_CAN_C void Output_Data_Set_VCU_RC_Signals2_CH0_0x011(void);
EXT_CAN_C void Output_Data_Set_CAR_STAT_CH0_0x012(void);
EXT_CAN_C void Output_Data_Set_VCU_RC_Fault_Flag_CH0_0x013(void);
EXT_CAN_C void Output_Data_Set_Debug_VCU_Signal_1_CH0_0x017(void);
EXT_CAN_C void Output_Data_Set_Debug_VCU_Signal_2_CH0_0x018(void);
EXT_CAN_C void Output_Data_Set_RWA_VCU_RC_Signal1_CH0_0x050(void);
EXT_CAN_C void Output_Data_Set_RWA_VCU_RC_Signal2_CH0_0x051(void);
EXT_CAN_C void Output_Data_Set_RWS_VCU_RC_Signal1_CH0_0x060(void);
EXT_CAN_C void Output_Data_Set_RWS_VCU_RC_Signal2_CH0_0x061(void);
EXT_CAN_C void Output_Data_Set_SW_VER_CH0_0x100(void);
EXT_CAN_C void Output_Data_Set_VCU_BCM_Signal_1_CH0_0x151(void);
EXT_CAN_C void Output_Data_Set_VCU_BCM_Signal_2_CH0_0x180(void);
EXT_CAN_C void Output_Data_Set_VCU_EPAM_CH0_0x220(void);
EXT_CAN_C void Output_Data_Set_VCU_MCU_Signals1_CH0_0x250(void);
EXT_CAN_C void Output_Data_Set_TARGET_VALUE_CH0_0x140(void);

EXT_CAN_C void Bypass_Data_Set_RWA_VCU_RC_Signal1_0x050(void);
EXT_CAN_C void Bypass_Data_Set_RWA_VCU_RC_Signal2_0x051(void);
EXT_CAN_C void Bypass_Data_Set_RWS_VCU_RC_Signal1_0x060(void);
EXT_CAN_C void Bypass_Data_Set_RWS_VCU_RC_Signal2_0x061(void);
EXT_CAN_C void Bypass_Data_Set_ACU_BCM_Signal_1_CH1_to_CH0_0x151(void);

EXT_CAN_C void Transmit_VCU_RC_Signals1_CH0_0x010(void);
EXT_CAN_C void Transmit_VCU_RC_Signals2_CH0_0x011(void);
EXT_CAN_C void Transmit_CAR_STAT_CH0_0x012(void);
EXT_CAN_C void Transmit_VCU_RC_Fault_Flag_CH0_0x013(void);
EXT_CAN_C void Transmit_RWA_VCU_RC_Signal1_CH0_0x050(void);
EXT_CAN_C void Transmit_RWA_VCU_RC_Signal2_CH0_0x051(void);
EXT_CAN_C void Transmit_RWS_VCU_RC_Signal1_CH0_0x060(void);
EXT_CAN_C void Transmit_RWS_VCU_RC_Signal2_CH0_0x061(void);
EXT_CAN_C void Transmit_SW_VER_CH0_0x100(void);
EXT_CAN_C void Transmit_VCU_BCM_Signal_1_CH0_0x151(void);
EXT_CAN_C void Transmit_VCU_BCM_Signal_2_CH0_0x180(void);
EXT_CAN_C void Transmit_VCU_EPAM_CH0_0x220(void);
EXT_CAN_C void Transmit_VCU_MCU_Signals1_CH0_0x250(void);



//------------------------------ CH1 TX ------------------------------//
EXT_CAN_C void Output_Data_Set_VCU_ACU_Signal1_CH1_0x013(void);
EXT_CAN_C void Output_Data_Set_VCU_ACU_Signal2_CH1_0x014(void);
EXT_CAN_C void Output_Data_Set_VCU_ACU_Signal3_CH1_0x015(void);
EXT_CAN_C void Output_Data_Set_CH1_ACU_CAR_STAT_CH1_0x016(void);
EXT_CAN_C void Output_Data_Set_TX_VCU_ACU_Fault_Flag_0x017(void);
EXT_CAN_C void Output_Data_Set_RWA_VCU_ACU_Signal1_CH1_0x050(void);
EXT_CAN_C void Output_Data_Set_RWA_VCU_ACU_Signal2_CH1_0x051(void);
EXT_CAN_C void Output_Data_Set_RWS_VCU_ACU_Signal1_CH1_0x060(void);
EXT_CAN_C void Output_Data_Set_RWS_VCU_ACU_Signal2_CH1_0x061(void);
EXT_CAN_C void Output_Data_Set_CH1_IMU_TX1_CH1_0x174(void);
EXT_CAN_C void Output_Data_Set_CH1_IMU_TX2_CH1_0x178(void);
EXT_CAN_C void Output_Data_Set_CH1_IMU_TX3_CH1_0x17C(void);
EXT_CAN_C void Output_Data_Set_VCU_245h_CH1_0x245(void);
EXT_CAN_C void Output_Data_Set_ICM_303h_CH1_0x303(void);
EXT_CAN_C void Output_Data_Set_CGW_372h_CH1_0x372(void);
EXT_CAN_C void Output_Data_Set_VCU_3ACh_CH1_0x3AC(void);
EXT_CAN_C void Output_Data_Set_BCM_VCU_ACU_Signal1_CH1_0x570(void);
EXT_CAN_C void Output_Data_Set_BCM_VCU_ACU_Signal2_CH1_0x580(void);
EXT_CAN_C void Output_Data_Set_BCM_VCU_ACU_Signal5_CH1_0x585(void);
EXT_CAN_C void Output_Data_Set_CGW_588h_CH1_0x588(void);
EXT_CAN_C void Output_Data_Set_BCM_VCU_ACU_Signal3_CH1_0x590(void);
EXT_CAN_C void Output_Data_Set_BCM_VCU_ACU_Signal4_CH1_0x595(void);

EXT_CAN_C void Bypass_Data_Set_RWA_VCU_ACU_Signal1_CH3_to_CH1_0x050(void);
EXT_CAN_C void Bypass_Data_Set_RWA_VCU_ACU_Signal2_CH2_to_CH1_0x051(void);
EXT_CAN_C void Bypass_Data_Set_RWS_VCU_ACU_Signal1_CH4_to_CH1_0x060(void);
EXT_CAN_C void Bypass_Data_Set_RWS_VCU_ACU_Signal2_CH5_to_CH1_0x061(void);
EXT_CAN_C void Bypass_Data_Set_BCM_VCU_Signal1_0x570_CH0_to_CH1(void);
EXT_CAN_C void Bypass_Data_Set_BCM_VCU_Signal2_0x580_CH0_to_CH1(void);
EXT_CAN_C void Bypass_Data_Set_BCM_VCU_Signal3_0x590_CH0_to_CH1(void);
EXT_CAN_C void Bypass_Data_Set_BCM_VCU_Signal4_0x595_CH0_to_CH1(void);
EXT_CAN_C void Bypass_Data_Set_BCM_VCU_Signal5_0x585_CH0_to_CH1(void);

EXT_CAN_C void Transmit_VCU_ACU_Signal1_CH1_0x013(void);
EXT_CAN_C void Transmit_VCU_ACU_Signal2_CH1_0x014(void);
EXT_CAN_C void Transmit_VCU_ACU_Signal3_CH1_0x015(void);
EXT_CAN_C void Transmit_CH1_ACU_CAR_STAT_CH1_0x016(void);
EXT_CAN_C void Transmit_VCU_ACU_Fault_Flag_CH1_0x017(void);
EXT_CAN_C void Transmit_RWA_VCU_ACU_Signal1_CH1_0x050(void);
EXT_CAN_C void Transmit_RWA_VCU_ACU_Signal2_CH1_0x051(void);
EXT_CAN_C void Transmit_RWS_VCU_ACU_Signal1_CH1_0x060(void);
EXT_CAN_C void Transmit_RWS_VCU_ACU_Signal2_CH1_0x061(void);
EXT_CAN_C void Transmit_TARGET_VALUE_CH0_0x140(void);
EXT_CAN_C void Transmit_CH1_IMU_TX1_CH1_0x174(void);
EXT_CAN_C void Transmit_CH1_IMU_TX2_CH1_0x178(void);
EXT_CAN_C void Transmit_CH1_IMU_TX3_CH1_0x17C(void);
EXT_CAN_C void Transmit_VCU_245h_CH1_0x245(void);
EXT_CAN_C void Transmit_ICM_303h_CH1_0x303(void);
EXT_CAN_C void Transmit_CGW_372h_CH1_0x372(void);
EXT_CAN_C void Transmit_VCU_3ACh_CH1_0x3AC(void);
EXT_CAN_C void Transmit_BCM_VCU_ACU_Signal1_CH1_0x570(void);
EXT_CAN_C void Transmit_BCM_VCU_ACU_Signal2_CH1_0x580(void);
EXT_CAN_C void Transmit_CGW_588h_CH1_0x588(void);
EXT_CAN_C void Transmit_BCM_VCU_ACU_Signal3_CH1_0x590(void);
EXT_CAN_C void Transmit_BCM_VCU_ACU_Signal4_CH1_0x595(void);
EXT_CAN_C void Transmit_BCM_VCU_ACU_Signal5_CH1_0x585(void);



//------------------------------ CH2 TX ------------------------------//
EXT_CAN_C void Output_Data_Set_BSC_IDB_StartupCommand_CH2_0x032(void);
EXT_CAN_C void Output_Data_Set_BSC_RWA_RackCommand_CH2_0x040(void);
EXT_CAN_C void Output_Data_Set_BSC_IDB_BrakeCommand_CH2_0x064(void);
EXT_CAN_C void Output_Data_Set_BSC_RegenCommand_CH2_0x06A(void);
EXT_CAN_C void Output_Data_Set_BSC_IMU_CH2_0x070(void);
EXT_CAN_C void Output_Data_Set_IDB_WheelSpeedStatus_CH2_0x088(void);
EXT_CAN_C void Output_Data_Set_BSC_RWA_StartupCommand_CH2_0x310(void);
EXT_CAN_C void Output_Data_Set_BSC_RWA_Sister_CH2_0x350(void);
EXT_CAN_C void Output_Data_Set_BSC_VehicleEnvironment_CH2_0x384(void);
EXT_CAN_C void Output_Data_Set_BSC_IDB_UdsRequest_CH2_0x796(void);

EXT_CAN_C void Bypass_Data_Set_BSC_RWA_RackCommand_CH2_0x040(void);

EXT_CAN_C void Transmit_BSC_IDB_StartupCommand_CH2_0x032(void);
EXT_CAN_C void Transmit_BSC_RWA_RackCommand_CH2_0x040(void);
EXT_CAN_C void Transmit_BSC_IDB_BrakeCommand_CH2_0x064(void);
EXT_CAN_C void Transmit_BSC_RegenCommand_CH2_0x06A(void);
EXT_CAN_C void Transmit_BSC_IMU_CH2_0x070(void);
EXT_CAN_C void Transmit_IDB_WheelSpeedStatus_CH2_0x088(void);
EXT_CAN_C void Transmit_BSC_RWA_StartupCommand_CH2_0x310(void);
EXT_CAN_C void Transmit_BSC_RWA_Sister_CH2_0x350(void);
EXT_CAN_C void Transmit_BSC_VehicleEnvironment_CH2_0x384(void);
EXT_CAN_C void Transmit_BSC_IDB_UdsRequest_CH2_0x796(void);



//------------------------------ CH3 TX ------------------------------//
EXT_CAN_C void Output_Data_Set_BSC_RCU_StartupCommand_CH3_0x033(void);
EXT_CAN_C void Output_Data_Set_BSC_RWA_RackCommand_CH3_0x040(void);
EXT_CAN_C void Output_Data_Set_BSC_RCU_BrakeCommand_CH3_0x065(void);
EXT_CAN_C void Output_Data_Set_BSC_IMU_CH3_0x071(void);
EXT_CAN_C void Output_Data_Set_RCU_WheelSpeedStatus_CH3_0x089(void);
EXT_CAN_C void Output_Data_Set_BSC_RWA_StartupCommand_CH3_0x310(void);
EXT_CAN_C void Output_Data_Set_BSC_RWA_Sister_CH3_0x350(void);
EXT_CAN_C void Output_Data_Set_BSC_VehicleEnvironment_CH3_0x385(void);
EXT_CAN_C void Output_Data_Set_BSC_RCU_UdsRequest_CH3_0x797(void);

EXT_CAN_C void Bypass_Data_Set_BSC_RWA_RackCommand_CH3_0x040(void);

EXT_CAN_C void Transmit_BSC_RCU_StartupCommand_CH3_0x033(void);
EXT_CAN_C void Transmit_BSC_RWA_RackCommand_CH3_0x040(void);
EXT_CAN_C void Transmit_BSC_RCU_BrakeCommand_CH3_0x065(void);
EXT_CAN_C void Transmit_BSC_IMU_CH3_0x071(void);
EXT_CAN_C void Transmit_RCU_WheelSpeedStatus_CH3_0x089(void);
EXT_CAN_C void Transmit_BSC_RWA_StartupCommand_CH3_0x310(void);
EXT_CAN_C void Transmit_BSC_RWA_Sister_CH3_0x350(void);
EXT_CAN_C void Transmit_BSC_VehicleEnvironment_CH3_0x385(void);
EXT_CAN_C void Transmit_BSC_RCU_UdsRequest_CH3_0x797(void);



//------------------------------ CH4 TX ------------------------------//
EXT_CAN_C void Output_Data_Set_VCU_RWS_Rack_Cmd_CH4_0x040(void);
EXT_CAN_C void Output_Data_Set_VCU_RWS_StartupCommand_CH4_0x310(void);
EXT_CAN_C void Output_Data_Set_VCU_RWS_Sister_CH4_0x350(void);

EXT_CAN_C void Bypass_Data_Set_VCU_RWS_Rack_Cmd_CH4_0x040(void);

EXT_CAN_C void Transmit_VCU_RWS_Rack_Cmd_CH4_0x040(void);
EXT_CAN_C void Transmit_VCU_RWS_StartupCommand_CH4_0x310(void);
EXT_CAN_C void Transmit_VCU_RWS_Sister_CH4_0x350(void);



//------------------------------ CH5 TX ------------------------------//
EXT_CAN_C void Output_Data_Set_VCU_RWS_Rack_Cmd_CH5_0x040(void);
EXT_CAN_C void Output_Data_Set_VCU_RWS_StartupCommand_CH5_0x310(void);
EXT_CAN_C void Output_Data_Set_VCU_RWS_Sister_CH5_0x350(void);

EXT_CAN_C void Bypass_Data_Set_VCU_RWS_Rack_Cmd_CH5_0x040(void);

EXT_CAN_C void Transmit_VCU_RWS_Rack_Cmd_CH5_0x040(void);
EXT_CAN_C void Transmit_VCU_RWS_StartupCommand_CH5_0x310(void);
EXT_CAN_C void Transmit_VCU_RWS_Sister_CH5_0x350(void);



#endif
