Kaynağa Gözat

2020-03-11 / Alston Lin

Actions
1. Add item for Plugit360 to start or stop charging.

Files
1. As follow commit history.
Alston 5 yıl önce
ebeveyn
işleme
afe0f9a3c8
2 değiştirilmiş dosya ile 3570 ekleme ve 11 silme
  1. 11 11
      EVSE/Projects/define.h
  2. 3559 0
      EVSE/Projects/define.h.bak

+ 11 - 11
EVSE/Projects/define.h

@@ -85,13 +85,13 @@ Storage							0x0A200000-0x7FFFFFFF		1886 MB
 	#define PSU_QUANTITY            2
 	#define ONE_CONNECTOR_USE       0
 #elif PlugIt360
-        #define MAX_PSU_QUANTITY        62
-        #define CHAdeMO_QUANTITY        0
-        #define CCS_QUANTITY            1
-        #define GB_QUANTITY             0
-        #define AC_QUANTITY             0
-        #define PSU_QUANTITY            2
-        #define ONE_CONNECTOR_USE       0
+    #define MAX_PSU_QUANTITY        62
+    #define CHAdeMO_QUANTITY        0
+    #define CCS_QUANTITY            1
+    #define GB_QUANTITY             0
+    #define AC_QUANTITY             0
+    #define PSU_QUANTITY            2
+    #define ONE_CONNECTOR_USE       0
 #else
 	#define MAX_PSU_QUANTITY        62
 	#define CHAdeMO_QUANTITY        1
@@ -102,7 +102,6 @@ Storage							0x0A200000-0x7FFFFFFF		1886 MB
 	#define ONE_CONNECTOR_USE       0
 #endif
 
-
 /*SystemLog message*/
 #define SystemLogMessage			//for debug info save to log file
 #define ConsloePrintLog				//for debug info print to console
@@ -322,7 +321,7 @@ struct SysConfigData
 	unsigned short			Ccs2PlugInTimes;			//0~65535
 	unsigned short			ChademoPlugInTimes;			//0~65535
 	unsigned char 			PsuAcInputType;				//0: 220, 1: 277
-	unsigned short 			RatingCurrent;				//0: Depend on Model name,	1 ~ rating value amp
+	unsigned short 		RatingCurrent;				//0: Depend on Model name,	1 ~ rating value amp
 	unsigned char			isAPP;						//for AuthorisationMode=0; 0:false, 1:true
 	unsigned char			isQRCode;					//for AuthorisationMode=0; 0:false, 1:true
 	unsigned char			isRFID;						//for AuthorisationMode=0; 0:false, 1:true
@@ -341,8 +340,8 @@ struct SysConfigData
 	unsigned char 			FtpServer[256];				//the ftp server for Phihong server to do data transimission
 	struct EthConfigData	Eth0Interface;
 	struct EthConfigData	Eth1Interface;
-	struct WifiConfigData 		AthInterface;
-	struct TeleConfigData		TelecomInterface;
+	struct WifiConfigData 	AthInterface;
+	struct TeleConfigData	TelecomInterface;
 	struct BtConfigData		Bluetooth;
 	/**************Backend***************/
 	unsigned int 			BackendConnTimeout;			//default : 300s
@@ -477,6 +476,7 @@ struct SysInfoData
 	unsigned char 		SystemPage;
 	unsigned char 		ConnectorPage;
 	unsigned char		IsAlternatvieConf;				// 0 : normal, 1 : alternative
+	unsigned char		StartToChargingFlag;			// 0 : Stop, 1 : Start
 };
 
 struct WARNING_CODE_INFO

+ 3559 - 0
EVSE/Projects/define.h.bak

@@ -0,0 +1,3559 @@
+#ifndef	DEFINE_H_
+#define	DEFINE_H_
+
+/**************************************************************************************/
+/*********************************NAND Flash mapping *****************************/
+/**************************************************************************************/
+/*
+  sector size	512 KiB
+  Page size       4096 b
+  OOB size        224 b
+  Erase size    	524288 b
+-------------------------------------------------------------------------------------------------------------------------------
+Segment 					Physical address 			Size
+-------------------------------------------------------------------------------------------------------------------------------
+MLO								0x00000000-0x0007FFFF		512 KB
+Primary u-boot 					0x00080000-0x0017FFFF		1 MB
+Environment 					0x00180000-0x001FFFFF		512 KB
+Secondary u-boot	 			0x00200000-0x002FFFFF		1 MB
+Primary dtb						0x00300000-0x0037FFFF		512 KB
+Secondary dtb					0x00380000-0x003FFFFF		512 KB
+Primary kernel					0x00400000-0x00DFFFFF		10 MB
+Secondary Kernel 				0x00E00000-0x017FFFFF		10 MB
+Primary root file system		0x03000000-0x05FFFFFF		48 MB
+Secondary root file system		0x06000000-0x08FFFFFF		48 MB
+Primary user configuration 		0x09000000-0x095FFFFF		6 MB
+Secondary user configuration	0x09600000-0x09BFFFFF		6 MB
+Factory default configuration	0x09C00000-0x0A1FFFFF		6 MB
+Storage							0x0A200000-0x7FFFFFFF		1886 MB
+*/
+
+/**************************************************************************************/
+/*********************************System Limitation**********************************/
+/**************************************************************************************/
+/*Rating outout power and current*/
+#define RATED_POWER			25		//kW
+#define RATED_CURRENT			350		//Amp, it depend on the capacity of charging connector
+
+/*relevant to Quantity */
+#ifdef AWRegular
+	#define MAX_PSU_QUANTITY	62
+	#define CHAdeMO_QUANTITY	1
+	#define CCS_QUANTITY		1
+	#define GB_QUANTITY		0
+	#define AC_QUANTITY		1	
+	#define PSU_QUANTITY		2
+	#define ONE_CONNECTOR_USE	0
+#elif BYTONGB
+	#define MAX_PSU_QUANTITY        62
+	#define CHAdeMO_QUANTITY        1
+	#define CCS_QUANTITY            1
+	#define GB_QUANTITY             0
+	#define AC_QUANTITY             1
+	#define PSU_QUANTITY            2
+	#define ONE_CONNECTOR_USE       0
+#elif DW30
+	#define MAX_PSU_QUANTITY        62
+	#define CHAdeMO_QUANTITY        1
+	#define CCS_QUANTITY            1
+	#define GB_QUANTITY             0
+	#define AC_QUANTITY             0
+	#define PSU_QUANTITY            2
+	#define ONE_CONNECTOR_USE       1
+#elif DM30
+	#define MAX_PSU_QUANTITY        62
+	#define CHAdeMO_QUANTITY        0
+	#define CCS_QUANTITY            1
+	#define GB_QUANTITY             0
+	#define AC_QUANTITY             0
+	#define PSU_QUANTITY            2
+	#define ONE_CONNECTOR_USE       0
+#elif DS60120
+	#define MAX_PSU_QUANTITY        62
+	#define CHAdeMO_QUANTITY        1
+	#define CCS_QUANTITY            1
+	#define GB_QUANTITY             0
+	#define AC_QUANTITY             0
+	#define PSU_QUANTITY            2
+	#define ONE_CONNECTOR_USE       0
+#elif DS60210
+	#define MAX_PSU_QUANTITY        62
+	#define CHAdeMO_QUANTITY        1
+	#define CCS_QUANTITY            1
+	#define GB_QUANTITY             0
+	#define AC_QUANTITY             0
+	#define PSU_QUANTITY            2
+	#define ONE_CONNECTOR_USE       0
+#elif PlugIt360
+        #define MAX_PSU_QUANTITY        62
+        #define CHAdeMO_QUANTITY        0
+        #define CCS_QUANTITY            1
+        #define GB_QUANTITY             0
+        #define AC_QUANTITY             0
+        #define PSU_QUANTITY            2
+        #define ONE_CONNECTOR_USE       0
+#else
+	#define MAX_PSU_QUANTITY        62
+	#define CHAdeMO_QUANTITY        1
+	#define CCS_QUANTITY            1
+	#define GB_QUANTITY             0
+	#define AC_QUANTITY             1
+	#define PSU_QUANTITY            2
+	#define ONE_CONNECTOR_USE       0
+#endif
+
+
+/*SystemLog message*/
+#define SystemLogMessage			//for debug info save to log file
+#define ConsloePrintLog				//for debug info print to console
+
+/**************************************************************************************/
+/*****************************share memory key information*****************************/
+/**************************************************************************************/
+#define ShmSysConfigAndInfoKey	1001
+#define ShmPsuKey				1002
+#define ShmCHAdeMOCommKey		1003
+#define ShmCcsCommKey			1004
+#define ShmStatusCodeKey		1005
+#define ShmPrimaryMcuKey		1006
+#define ShmFanBdKey				1007
+#define ShmRelayBdKey			1008
+#define ShmOcppModuleKey		1009
+
+/**************************************************************************************/
+/****************** Share memory configuration value constant define ******************/
+/**************************************************************************************/
+enum SYSTEM_STATUS
+{
+	SYS_MODE_BOOTING		= 0,
+	SYS_MODE_IDLE    	  	= 1,
+	SYS_MODE_AUTHORIZING		= 2,
+	SYS_MODE_MODE_REASSIGN_CHECK	= 3,
+	SYS_MODE_REASSIGN		= 4,
+	SYS_MODE_PREPARING		= 5,
+	SYS_MODE_PREPARE_FOR_EV		= 6,
+	SYS_MODE_PREPARE_FOR_EVSE	= 7,
+	SYS_MODE_CHARGING		= 8,
+	SYS_MODE_TERMINATING		= 9,
+	SYS_MODE_COMPLETE		= 10,
+	SYS_MODE_ALARM			= 11,
+	SYS_MODE_FAULT			= 12,
+	SYS_MODE_RESERVATION		= 13,
+	SYS_MODE_BOOKING		= 14,
+	SYS_MODE_MAINTAIN		= 15,
+	SYS_MODE_DEBUG			= 16,
+	SYS_MODE_CCS_PRECHARGE_STEP0	= 17,
+	SYS_MODE_CCS_PRECHARGE_STEP1	= 18,
+	SYS_MODE_UPDATE			= 19
+};
+
+enum AUTHORIZATION_MODE
+{
+	AUTH_MODE_BACKEND_OCPP		= 0,
+	AUTH_MODE_FREE			= 1
+};
+
+enum LCD_LANGUAGE
+{
+	LCD_LANG_ENGLISH		= 0,
+	LCD_LANG_CHT			= 1,
+	LCD_LANG_CHS			= 2,
+	LCD_LANG_JAPANESE		= 3,
+	LCD_LANG_FRENCH			= 4,
+	LCD_LANG_ITALIAN		= 5,
+	LCD_LANG_SPANISH		= 6,
+	LCD_LANG_GERMAN			= 7,
+	LCD_LANG_DUTCH			= 8,
+	LCD_LANG_NORWEGIAN		= 9,
+	LCD_LANG_FINNISH		= 10,
+	LCD_LANG_SWEDISH		= 11,
+	LCD_LANG_SLOVENIAN		= 12,
+	LCD_LANG_THAI			= 13,
+};
+
+
+enum RFID_ENDIAN
+{
+	RFID_ENDIAN_LITTLE		= 0,
+	RFID_ENDIAN_BIG			= 1
+};
+
+enum PHASE_LOSS_POLICY
+{
+	LOSS_POLICY_CHARGING		= 0,
+	LOSS_POLICY_STOP		= 1
+};
+
+enum CCS_AUTHPRIZATION_MODE
+{
+	CCS_AUTH_MODE_EIM		= 0,
+	CCS_AUTH_MODE_MIXED		= 1
+};
+
+enum OFF_LINE_POLICY
+{
+	OFF_POLICY_LOCALLIST		= 0,
+	OFF_POLICY_PH_RFID		= 1,
+	OFF_POLICY_FREE			= 2,
+	OFF_POLICY_NOCHARGE		= 3
+};
+
+/*Configuration enum*/
+enum CoreProfile {
+	 AllowOfflineTxForUnknownId=0,
+	 AuthorizationCacheEnabled,
+	 AuthorizeRemoteTxRequests,
+	 BlinkRepeat,
+	 ClockAlignedDataInterval,
+	 ConnectionTimeOut,
+	 GetConfigurationMaxKeys,
+	 HeartbeatInterval,
+	 LightIntensity,
+	 LocalAuthorizeOffline,
+	 LocalPreAuthorize,
+	 MaxEnergyOnInvalidId,
+	 MeterValuesAlignedData,
+	 MeterValuesAlignedDataMaxLength,
+	 MeterValuesSampledData,
+	 MeterValuesSampledDataMaxLength,
+	 MeterValueSampleInterval,
+	 MinimumStatusDuration,
+	 NumberOfConnectors,
+	 ResetRetries,
+	 ConnectorPhaseRotation,
+	 ConnectorPhaseRotationMaxLength,
+	 StopTransactionOnEVSideDisconnect,
+	 StopTransactionOnInvalidId,
+	 StopTxnAlignedData,
+	 StopTxnAlignedDataMaxLength,
+	 StopTxnSampledData,
+	 StopTxnSampledDataMaxLength,
+	 SupportedFeatureProfiles,
+	 SupportedFeatureProfilesMaxLength,
+	 TransactionMessageAttempts,
+	 TransactionMessageRetryInterval,
+	 UnlockConnectorOnEVSideDisconnect,
+	 WebSocketPingInterval,
+	 _CoreProfile_CNT
+};
+
+
+/**************************************************************************************/
+/****structure SysConfigData => shall store the data to NAND flash****************/
+/****structure SysInfoData => shall NOT store the data to NAND flash***************/
+/****according to System Configuration and Information Table.xlsx Rev.0.2 *******/
+/**************************************************************************************/
+struct NoneUse
+{
+	unsigned char		unknown;					// None use struct
+};
+
+struct EthConfigData
+{
+	unsigned char		EthDhcpClient;				//0: enable,1: disable
+	unsigned char		EthMacAddress[18];			//default: Null
+	unsigned char		EthIpAddress[16];			//Eth0 default:192.168.0.10	,Eth1 default:192.168.1.10
+	unsigned char		EthSubmaskAddress[16];		//Eth0 default:255.255.255.0	,Eth1 default:255.255.255.0
+	unsigned char		EthGatewayAddress[16];		//Eth0 default:192.168.0.254	,Eth1 default:192.168.1.254
+};
+
+struct WifiConfigData
+{
+	unsigned char		WifiMode;					//0: disable, 1: Infrastructure client, 2: Infrastructure server, 3: Ad-Hoc
+	unsigned char		WifiSsid[256];				//default: Null
+	unsigned char		WifiPassword[256];			//default: Null
+	int					WifiRssi;					//dbm
+	unsigned char		WifiDhcpServer;				//0: enable, 1: disable
+	unsigned char		WifiDhcpClient;				//0: enable, 1: disable
+	unsigned char		WifiMacAddress[18];			//default: Null
+	unsigned char		WifiIpAddress[16];			//default:192.168.2.10
+	unsigned char		WifiSubmaskAddress[16];		//default:255.255.255.0
+	unsigned char		WifiGatewayAddress[16];		//default:192.168.2.254
+	unsigned char		WifiNetworkConn;			//0: disconnected, 1: connected
+};
+
+struct TeleConfigData
+{
+	unsigned char		TelcomModelName[64];		//default: Null
+	unsigned char		TelcomSoftwareVer[64];		//default: Null
+	unsigned char		TelcomApn[256];				//default: Null
+	int					TelcomRssi;					//dbm
+	unsigned char		TelcomChapPapId[256];		//default: Null
+	unsigned char		TelcomChapPapPwd[256];		//default: Null
+	unsigned char		TelcomModemImei[16];		//default: Null
+	unsigned char		TelcomSimImsi[16];			//default: Null
+	unsigned char		TelcomSimIccid[22];			//default: Null
+	unsigned char		TelcomSimStatus;			//0: no SIM card is found, 1: valid SIM card, 2: invalid SIM card
+	unsigned char		TelcomModemMode;			//0: No services, 1: CDMA, 2: GSM/GPRS, 3: WCDMA, 4: GSM/WCDMA, 5: TD_SCDMA mode, 6: Unknow
+	unsigned char		TelcomIpAddress[16];		//default: Null
+	unsigned char		TelcomNetworkConn;			//0: disconnected, 1: connected
+};
+
+struct BtConfigData
+{
+	unsigned char		LoginCentralID[64];			//default: Null
+	unsigned char		isLogin;					//0: Central device non-login	1: Central device login
+	unsigned char		isRequestStart;				//0: no action	1: request start charging
+	unsigned char		isRequestStop;				//0: no action	1: request stop charging
+};
+
+struct BillingConfigData
+{
+	unsigned char		isBilling;					//0:not for business	1:for business
+	unsigned char		Currency;					//
+	unsigned short		Fee[24];					//fee for 24 hours
+};
+
+struct SysConfigData
+{
+	/**************System***************/
+	unsigned char 			CsuBootLoadFwRev[32];			//CSU board bootloader firmware version
+	unsigned char			ModelName[64];				//charger model name
+	unsigned char			SerialNumber[64];			//charger system serial number
+	unsigned char			SystemId[128];				//charger system ID
+	unsigned char			SystemDateTime[32];			//charger system date and time
+	unsigned char			AcPhaseCount;				//AC EVSE power phase quantity,  1: One phase	3: Three phase
+	unsigned char			AuthorisationMode;			//0: OCPP backend, 1: free mode
+	unsigned char	   		DefaultLanguage;			//
+	unsigned char   		RfidCardNumEndian;			//0: little endian,  1: big endian
+	unsigned short			AcPlugInTimes;				//0~65535
+	unsigned short			GbPlugInTimes;				//0~65535
+	unsigned short			Ccs1PlugInTime;				//0~65535
+	unsigned short			Ccs2PlugInTimes;			//0~65535
+	unsigned short			ChademoPlugInTimes;			//0~65535
+	unsigned char 			PsuAcInputType;				//0: 220, 1: 277
+	unsigned short 			RatingCurrent;				//0: Depend on Model name,	1 ~ rating value amp
+	unsigned char			isAPP;						//for AuthorisationMode=0; 0:false, 1:true
+	unsigned char			isQRCode;					//for AuthorisationMode=0; 0:false, 1:true
+	unsigned char			isRFID;						//for AuthorisationMode=0; 0:false, 1:true
+	unsigned char			QRCodeMadeMode;				//for isQRCode=1 ; 0: default	1:customized
+	unsigned char			QRCodeContent[128];			//for QRCodeMadeMode=1
+	/**************Charging***************/
+	unsigned short	   		MaxChargingEnergy;			//0: no limit,	1 ~ 65535	kWh
+	unsigned short	   		MaxChargingPower;			//0: rating value, 1 ~ RATING_POWER	kW"
+	unsigned short	   		MaxChargingCurrent;			//0: rating value, 1 ~ RATING_CURRENT	amp"
+	unsigned short	   		MaxChargingDuration;		//0: no limit,	1 ~ 65535	minutes
+	unsigned char   		PhaseLossPolicy;			//0: charging,  1: stop charging
+	unsigned char   		LocalWhiteCard[10][32];		//Max. card quantity is 10
+	unsigned char 			UserId[32];					//the user use this ID to trigger charging event, it can be RFID card number, OCPP IdTag, etc.
+	struct BillingConfigData BillingData;
+	/**************Network***************/
+	unsigned char 			FtpServer[256];				//the ftp server for Phihong server to do data transimission
+	struct EthConfigData	Eth0Interface;
+	struct EthConfigData	Eth1Interface;
+	struct WifiConfigData 		AthInterface;
+	struct TeleConfigData		TelecomInterface;
+	struct BtConfigData		Bluetooth;
+	/**************Backend***************/
+	unsigned int 			BackendConnTimeout;			//default : 300s
+	unsigned char   		OfflinePolicy;				//0: local list, 1: Phihong RFID tag, 2: free charging, 3: no charging
+	unsigned short	   		OfflineMaxChargeEnergy;		//0: same as MaxChargingEnergy, 1 ~ 65535 kWh
+	unsigned short	   		OfflineMaxChargeDuration;	//0: same as MaxChargeDuration, 1 ~ 65535 minutes
+	unsigned char 			OcppServerURL[512];			//http: non-secure OCPP 1.5-S, https: secure OCPP 1.5-S, ws: non-secure OCPP 1.6-J, wss: secure OCPP 1.6-J"
+	unsigned char 			ChargeBoxId[128];
+	unsigned char			chargePointVendor[20];			//the Vendor of the ChargePoint
+	unsigned int 			Checksum;					//4 bytes checksum
+};
+
+struct ChargingInfoData
+{
+	unsigned char 		Index;
+	unsigned char 		slotsIndex;
+	unsigned char 		Type;					// 0 : Chademo, 1 : CCS, 2: GB
+	unsigned char 		type_index;
+	unsigned char 		Evboard_id;				// for EV board
+	unsigned char 		StopChargeFlag;			// for EV board
+	unsigned char		SystemStatus;				//0: Booting, 1: idle, 2: authorizing, 3: preparing, 4: charging, 5: terminating, 6: alarm, 7: fault
+	unsigned char		PreviousSystemStatus;		// 0: Booting, 1: idle, 2: authorizing, 3: preparing, 4: charging, 5: terminating, 6: alarm, 7: fault	
+	int 			ReservationId;
+	unsigned char 		IsAvailable;
+	float MaximumChargingVoltage;	//0~6553.5 volt
+	float AvailableChargingCurrent;	//0~6553.5 amp
+	float AvailableChargingPower;	//0~6553.5 kW
+	float DeratingChargingCurrent;  //0~6553.5 amp
+	float DeratingChargingPower;	//0~6553.5 kW
+	float FuseChargingVoltage;		//0~6553.5 volt
+	float FireChargingVoltage;		//0~6553.5 volt
+	float PresentChargingVoltage;	//0~6553.5 volt
+	float PresentChargingCurrent;		//0~6553.5 amp
+	float PresentChargingPower;		//0~6553.5 kW
+	float PresentChargedEnergy;		//0~6553.5 kWh
+	int PresentChargedDuration;	// second
+	int RemainChargingDuration;	// second
+	float EvBatteryMaxVoltage;		// 0~6553.5 volt
+	float EvBatterytargetVoltage;		// 0~6553.5 volt
+	float EvBatterytargetCurrent; 	//102.3				0~200(A) (unit:1A)
+	int EvBatterySoc;				// 0~100%
+	unsigned char ConnectorPlugIn;			//0: unplug, 1: Plug-in
+	unsigned char GunLocked;				//0: unlocked 1: locked
+	float PilotVoltage;
+	unsigned char PilotState;//1:state A, 2:State B1, 3:State B2, 4:State C, 5:State D, 6:State E, 7:State F, 8: Pilot error
+	unsigned char PilotDuty;					// 0~100%
+	unsigned char			StartUserId[32];			// This ID is trigger start charging event user by RFID、back-end、BLE.
+	unsigned char			StartDateTime[32];			// Charging cycle start date time
+	unsigned char			StopDateTime[32];			// Charging cycle stop date time
+	unsigned char			StartMethod;
+	// Connector Temp
+	unsigned char 		ConnectorTemp;			//0x00: -60¢XC  ~  0xFE: 194
+	// Charging Status
+	unsigned char 		GroundFaultStatus;		// for GFD result => 0x00 : None, 0x01 : Can Start Charging, 0x02 : Stop Charging
+	unsigned char 		PrechargeStatus;		// for ccs precharge => 0x00 : None defined, 0x01 : Accepted
+	float 				OutputEnergy;			// output energy by per charging
+	unsigned char		RelayK1K2Status;		// 0x00 : open, 0x01 : close
+	unsigned char		RelayKPK2Status;		// 0x00 : open, 0x01 : close
+	unsigned char 	 	TimeoutFlag;			// 0 : none,
+	struct timeval		TimeoutTimer;
+	unsigned char 		MaxChargeEnable;
+	unsigned char		IsReadyToCharging;
+	unsigned char		CcsAuthentication;		// 0:EIM, 1:EIM & PnC mixed
+	unsigned char		AcCcsChargingMode;		// 0:BC (PWM) only, 1:BC & PLC mixed
+};
+
+struct SysInfoData
+{
+	/**************System***************/
+	unsigned char BootingStatus;			// 0 : booting, 1 : Initializing Complete.
+	unsigned char AuthorizeFlag;			// 0 : None, 1 : Authorizing
+	unsigned char FactoryConfiguration;	//0: normal, 1: trigger, charger will return the configuration to factory default if trigger
+	float InputVoltageR;			//0~655.35 volt
+	float InputVoltageS;				//0~655.35 volt
+	float InputVoltageT;				//0~655.35 volt
+	unsigned int SystemFanRotaSpeed;		//0 ~ 65535 RPM
+	unsigned int PsuFanRotaSpeed;			//0 ~ 65535 RPM
+	unsigned char AuxPower5V;				//0 ~ 255 volt
+	unsigned char AuxPower12V;				//0 ~ 255 volt
+	unsigned char AuxPower24V;				//0 ~ 255 volt
+	unsigned char AuxPower48V;				//0 ~ 255 volt
+	unsigned char CsuHwRev[32];			//CSU board hardware version
+	unsigned char CsuBootLoadFwRev[32];	//CSU board bootloader firmware version
+	unsigned char CsuKernelFwRev[32];//CSU board OS kernel firmware version
+	unsigned char CsuRootFsFwRev[32];//CSU board root file system firmware version
+	unsigned char CsuPrimFwRev[32];	//CSU board root file system firmware version
+	unsigned char LcmHwRev[32];	//LCM module hardware version
+	unsigned char LcmFwRev[32];	//LCM module firmware version
+	unsigned char PsuHwRev[32];		//PSU hardware version
+	unsigned char PsuPrimFwRev[32];		//PSU primary firmware version
+	unsigned char PsuSecFwRev[32];			//PSU secondary firmware version
+	unsigned char AuxPwrHwRev[32];		//Aux. power module hardware version
+	unsigned char AuxPwrFwRev[32];		//Aux. power module firmware version
+	unsigned char FanModuleHwRev[32];		//Fan  module hardware version
+	unsigned char FanModuleFwRev[32];		//Fan  module firmware version
+	unsigned char RelayModuleHwRev[32];	//Relay control  module hardware version
+	unsigned char RelayModuleFwRev[32];	//Relay control  module firmware version
+	unsigned char TelcomModemFwRev[32];	//the 3G/4G modem firmware version
+	int SystemAmbientTemp;		// -40 ~ 215 degree C
+	int SystemCriticalTemp;		// -40 ~ 215 degree C
+	int CcsConnectorTemp;		// -40 ~ 215 degree C
+	int PsuAmbientTemp;			// -40 ~ 215 degree C
+	/**************Charging***************/
+	struct ChargingInfoData 	ChademoChargingData[CHAdeMO_QUANTITY];
+	struct ChargingInfoData 	CcsChargingData[CCS_QUANTITY];
+	struct ChargingInfoData 	GbChargingData[GB_QUANTITY];
+	struct ChargingInfoData 	AcChargingData[AC_QUANTITY];
+	unsigned char CurGunSelected;
+	/**************Network***************/
+	unsigned char 		InternetConn;					//0: disconnected, 1: connected
+	/**************Backend***************/
+	unsigned char 		OcppConnStatus;					//0: disconnected, 1: connected
+	char 				OrderCharging;
+	/**************Alston***************/
+	unsigned char 		WaitForPlugit;					//0: none scan, 1: scanning
+	unsigned char 		PageIndex;						//0 : Initialize
+														//1 : idle
+														//4 : Authorizing
+														//5 : Authorizing complete
+														//6 : Authorizing fail
+														//7 : Wait for Plug
+														//8 : Pre-charge
+														//9 : Charging
+	unsigned char 		SelfTestSeq;					//
+	unsigned char 		ReAssignedFlag;					//
+	unsigned char 		MainChargingMode;				// 0 : Max, 1 : Average 
+	unsigned char 		BridgeRelayStatus;
+	unsigned char 		FirmwareUpdate;					// 0 : none, 1 : update.
+	unsigned char 		AcContactorStatus;				// 0: disconnected, 1: connected
+	unsigned char 	 	SystemTimeoutFlag;				// 0 : none, 1 : self test
+	struct timeval		SystemTimeoutTimer;
+	unsigned char 		SystemPage;
+	unsigned char 		ConnectorPage;
+	unsigned char		IsAlternatvieConf;				// 0 : normal, 1 : alternative
+};
+
+struct WARNING_CODE_INFO
+{
+	unsigned char WarningCount;
+	unsigned char PageIndex;
+	unsigned char WarningCode[10][7];
+	unsigned char Level;
+};
+
+struct SysConfigAndInfo
+{
+	struct SysConfigData				SysConfig;
+	struct SysInfoData					SysInfo;
+	struct WARNING_CODE_INFO			SysWarningInfo;
+};
+
+/**************************************************************************************/
+/**************************Alarm Share memory**************************************/
+/***************************************************************************************
+	Status Code	A				B					C											D	E	F
+				0: Issue		1: From EVSE 		1: Fault (unrecoverable)					001 ~ 999 serial number
+			    										e.g., hardware broken, system latch
+				1: Recovered	2: From EV			2: Alarm (recoverable)
+			   											e.g., OTP, OVP
+								3: From Backend		3: Information
+			  											e.g., swipe card to stop charging
+
+according to XXX.Revxx
+***************************************************************************************/
+/**************************************************************************************/
+char FaultStatusCode[32][6]=
+{
+	"011001",	//CHAdeMO output fuse blew
+	"011002",	//CCS output fuse blew
+	"011003",	//GB output fuse blew
+	"011004",	//RCD/CCID self-test fail
+	"011005",	//AC input contactor 1 welding
+	"011006",	//AC input contactor 1 driving fault
+	"011007",	//AC input contactor 2 welding
+	"011008",	//AC input contactor 2 driving fault
+	"011009",	//AC output relay welding
+	"011010",	//AC output relay  driving fault
+	"011011",	//CHAdeMO output relay welding
+	"011012",	//CHAdeMO output relay driving fault
+	"011013",	//CCS output relay welding
+	"011014",	//CCS output relay driving fault
+	"011015",	//GB output relay welding
+	"011016",	//GB output relay driving fault
+	"011017",	//AC connector temperature sensor broken
+	"011018",	//CHAdeMO connector temperature sensor broken
+	"011019",	//CCS connector temperature sensor broken
+	"011020",	//GB connector temperature sensor broken
+	"011021",	//WiFi module broken
+	"011022",	//3G/4G module broken
+	"011023",	//Aux. power module broken
+	"011024",	//Relay control module /smart box broken
+	"011025",	//CHAdeMO connector lock fail
+	"011026",	//GB connector lock fail
+	"011027",	//AC connector lock fail
+	"011028",	//CHAdeMO module broken
+	"011029",	//CCS module broken
+	"011030",	//GBT module broken
+	"011031",	//PSU module broken
+	"011032"	//Reserved
+};
+
+struct FaultCodeData
+{
+	unsigned char PreviousFaultVal[4];
+	union
+	{
+		unsigned char FaultVal[4];
+		struct
+		{
+			//FaultVal[0]
+		    	unsigned char ChademoOutputFuseBlew:1;				//bit 0
+			unsigned char CcsOutputFuseBlew:1;					//bit 1
+			unsigned char GbOutputFuseBlew:1;   					//bit 2
+			unsigned char RcdSelfTestFail:1;						//bit 3
+			unsigned char AcInputContactor1Welding:1;			//bit 4
+			unsigned char AcInputContactor1DrivingFault:1;			//bit 5
+			unsigned char AcInputContactor2Welding:1;			//bit 6
+			unsigned char AcInputContactor2DrivingFault:1;			//bit 7
+			//FaultVal[1]
+			unsigned char AcOutputRelayWelding:1;				//bit 0
+			unsigned char AcOutputRelayDrivingFault:1;				//bit 1
+			unsigned char ChademoOutputRelayWelding:1;			//bit 2
+			unsigned char ChademoOutputRelayDrivingFault	:1;		//bit 3
+			unsigned char CcsOutputRelayWelding:1;				//bit 4
+			unsigned char CcsOutputRelayDrivingFault:1;			//bit 5
+			unsigned char GbOutputRelayWelding:1;				//bit 6
+			unsigned char GbOutputRelayDrivingFault:1;				//bit 7
+			//FaultVal[2]
+			unsigned char AcConnectorTempSensorBroken:1;			//bit 0
+			unsigned char ChademoConnectorTempSensorBroken:1;	//bit 1
+			unsigned char CcsConnectorTempSensorBroken:1;		//bit 2
+			unsigned char GbConnectorTempSensorBroken:1;			//bit 3
+			unsigned char WiFiModuleBroken:1;					//bit 4
+			unsigned char Telecom4GModuleBroken:1;				//bit 5
+			unsigned char AuxPowerModuleBroken:1;				//bit 6
+			unsigned char RelayControlModuleBroken :1;			//bit 7
+	             	 //FaultVal[3]
+			unsigned char ChademoConnectorLockFail:1;			//bit 0
+			unsigned char GbConnectorLockFail:1;					//bit 1
+			unsigned char AcConnectorLockFail:1;					//bit 2
+			unsigned char ChademoModuleBroken:1;				//bit 3
+			unsigned char CcsModuleBroken:1;					//bit 4
+			unsigned char GbModuleBroken:1;						//bit 5
+			unsigned char PsuModuleBroken:1;						//bit 6
+			unsigned char :1;									//bit 7		reserved
+		}bits;
+	}FaultEvents;
+};
+
+char AlarmStatusCode[128][6]=
+{
+	"012200",	//System L1 input OVP
+	"012201",	//System L2 input OVP
+	"012202",	//System L3 input OVP
+	"012203",	//System L1 input UVP
+	"012204",	//System L2 input UVP
+	"012205",	//System L3 input UVP
+	"012206",	//PSU L1 input OVP
+	"012207",	//PSU L2 input OVP
+	"012208",	//PSU L3 input OVP
+	"012209",	//PSU L1 input UVP
+	"012210",	//PSU L2 input UVP
+	"012211",	//PSU L3 input UVP
+	"012212",	//System L1 input drop
+	"012213",	//System L2 input drop
+	"012214",	//System L3 input drop
+	"012215",	//System AC output OVP
+	"012216",	//System AC output OCP
+	"012217",	//System CHAdeMO output OVP
+	"012218",	//System CHAdeMO output OCP
+	"012219",	//System CCS output OVP
+	"012220",	//System CCS output OCP
+	"012221",	//System GB output OVP
+	"012222",	//System GB output OCP
+	"012223",	//System ambient/inlet OTP
+	"012224",	//System critical point OTP
+	"012225",	//PSU ambient/inlet OTP
+	"012226",	//PSU critical point OTP
+	"012227",	//Aux. power module OTP
+	"012228",	//Relay board/smart box OTP
+	"012229",	//CHAdeMO connector OTP
+	"012230",	//CCS connector OTP
+	"012231",	//GB connector OTP
+	"012232",	//AC connector OTP
+	"012233",	//RCD/CCID trip
+	"012234",	//CHAdeMO GFD trip
+	"012235",	//CCS GFD trip
+	"012236",	//GB GFD trip
+	"012237",	//SPD trip
+	"012238",	//Main power breaker trip
+	"012239",	//Aux. power breaker trip
+	"012240",	//PSU communication fail
+	"012241",	//WiFi module communication fail
+	"012242",	//3G/4G module communication fail
+	"012243",	//RFID module communication fail
+	"012244",	//Bluetooth module communication fail
+	"012245",	//LCM module communication fail
+	"012246",	//Aux. power module communication fail
+	"012247",	//Relay control boaed/smart box communication fail
+	"012248",	//CCS module communication fail
+	"012249",	//CHAdeMO module communication fail
+	"012250",	//GBT module communication fail
+	"012251",	//Emergency stop
+	"012252",	//Door open
+	"012253",	//System fan decay
+	"012254",	//Fail to create share memory
+	"012255",	//CSU initialization failed
+	"012256",	//AC Ground Fault
+	"012257",	//MCU self-test Fault
+	"012258",	//Relay self-test Fault
+	"012259",	//CHAdeMO groundfault detection timeout (GFD)
+	"012260",	//CCS groundfault detection timeout (GFD)
+	"012261",	//GB groundfault detection timeout (GFD)
+	"012262",	//Circuit Short
+	"012263",	// PSU Duplicate ID
+	"012264", 	// PSU Output Short Circuit
+	"012265", 	// PSU Discharge Abnormal
+	"012266", 	// PSU Dc Side ShutDown
+	"012267", 	// PSU Failure Alarm
+	"012268", 	// PSU Protection Alarm
+	"012269", 	// PSU FanFailure Alarm
+	"012270", 	// PSU Input UVP
+	"012271",	// PSU Input OVP
+	"012272", 	// PSU WalkIn State
+	"012273", 	// PSU Power Limited State
+	"012274", 	// PSU Id Repeat
+	"012275", 	// PSU Severe Uneven Current
+	"012276", 	// PSU Three Phase Input Inadequate
+	"012277", 	// PSU Three Phase Onput Imbalance
+	"012278", 	// PSU Ffc Side ShutDown
+	"012279", 	// NO PSU Resource
+	"012280", 	// Self test Failed due to communication of Relayboard failure
+	"012281", 	// Self test Failed due to communication of Fanboard failure
+	"012282", 	// Self test Failed due to communication of Primary failure
+	"012283", 	// Self test Failed due to communication of Chademoboard failure
+	"012284", 	// Self test Failed due to communication of CCSboard failure
+	"012285", 	// Self test Failed due to AC Contact failure
+	"012286", 	// Self test Failed due to communication of PSU failure
+	"012287", 	// Self test Failed due to Model name is none match
+	"012288",	// CCS output UVP
+	"012289",	// Chademo output UVP
+};
+struct AlarmCodeData
+{
+	unsigned char PreviousAlarmVal[12];
+	union
+	{
+		unsigned char AlarmVal[12];
+		struct
+		{
+			//AlarmVal[0]
+		    unsigned char SystemL1InputOVP:1;					//bit 0
+			unsigned char SystemL2InputOVP:1;					//bit 1
+			unsigned char SystemL3InputOVP:1;   					//bit 2
+			unsigned char SystemL1InputUVP:1;					//bit 3
+			unsigned char SystemL2InputUVP:1;					//bit 4
+			unsigned char SystemL3InputUVP:1;					//bit 5
+			unsigned char PsuL1InputOVP:1;						//bit 6
+			unsigned char PsuL2InputOVP:1;						//bit 7
+			//AlarmVal[1]
+			unsigned char PsuL3InputOVP:1;						//bit 0
+			unsigned char PsuL1InputUVP:1;						//bit 1
+			unsigned char PsuL2InputUVP:1;						//bit 2
+			unsigned char PsuL3InputUVP	:1;						//bit 3
+			unsigned char SystemL1InputDrop:1;					//bit 4
+			unsigned char SystemL2InputDrop:1;					//bit 5
+			unsigned char SystemL3InputDrop:1;					//bit 6
+			unsigned char SystemAcOutputOVP:1;					//bit 7
+			//AlarmVal[2]
+			unsigned char SystemAcOutputOCP:1;					//bit 0
+			unsigned char SystemChademoOutputOVP:1;			//bit 1
+			unsigned char SystemChademoOutputOCP:1;			//bit 2
+			unsigned char SystemCcsOutputOVP:1;					//bit 3
+			unsigned char SystemCcsOutputOCP:1;					//bit 4
+			unsigned char SystemGbOutputOVP:1;					//bit 5
+			unsigned char SystemGbOutputOCP:1;					//bit 6
+			unsigned char SystemAmbientOTP :1;					//bit 7
+	             	 //AlarmVal[3]
+			unsigned char SystemCriticalPointOTP:1;				//bit 0
+			unsigned char PsuAmbientOTP:1;						//bit 1
+			unsigned char PsuCriticalPointOTP:1;					//bit 2
+			unsigned char AuxPowerModuleOTP:1;					//bit 3
+			unsigned char RelayBoardOTP:1;						//bit 4
+			unsigned char ChademoConnectorOTP:1;				//bit 5
+			unsigned char CcsConnectorOTP:1;					//bit 6
+			unsigned char GbConnectorOTP:1;					//bit 7
+			 //AlarmVal[4]
+			unsigned char AcConnectorOTP:1;						//bit 0
+			unsigned char RcdTrip:1;								//bit 1
+			unsigned char ChademoGfdTrip:1;						//bit 2
+			unsigned char CcsGfdTrip:1;							//bit 3
+			unsigned char GbGfdTrip:1;							//bit 4
+			unsigned char SpdTrip:1;								//bit 5
+			unsigned char MainPowerBreakerTrip:1;					//bit 6
+			unsigned char AuxPowerBreakerTrip:1;					//bit 7
+			//AlarmVal[5]
+			unsigned char PsuCommunicationFail:1;				//bit 0
+			unsigned char WiFiModuleCommFail:1;					//bit 1
+			unsigned char Telecom4GModuleCommFail:1;			//bit 2
+			unsigned char RfidModuleCommFail:1;					//bit 3
+			unsigned char BluetoothModuleCommFail:1;				//bit 4
+			unsigned char LcmModuleCommFail:1;					//bit 5
+			unsigned char AuxPowerModuleCommFail:1;			//bit 6
+			unsigned char RelayBoardCommFail:1;					//bit 7
+			//AlarmVal[6]
+			unsigned char CcsModuleCommFail:1;					//bit 0
+			unsigned char ChademoModuleCommFail:1;			//bit 1
+			unsigned char GbModuleCommFail:1;					//bit 2
+			unsigned char EmergencyStopTrip:1;					//bit 3
+			unsigned char DoorOpen:1;							//bit 4
+			unsigned char SystemFanDecay:1;						//bit 5
+			unsigned char FailToCreateShareMemory:1;				//bit 6
+			unsigned char CsuInitFailed:1;							//bit 7
+			//AlarmVal[7]
+			unsigned char AcGroundfaultFail:1;					//bit 0
+			unsigned char McuSelftestFail:1;					//bit 1
+			unsigned char RelaySelftestFail:1;					//bit 2
+			unsigned char ChademoGroundfaultTimeout:1;			//bit 3
+			unsigned char CcsGroundfaultTimeout:1;				//bit 4
+			unsigned char GbGroundfaultTimeout:1;				//bit 5
+			unsigned char CircuitShort:1;						//bit 6
+			unsigned char PsuDuplicateID:1;									//bit 7
+			//AlarmVal[8]
+			unsigned char PsuOutputShortCircuit :1;			//bit 0
+			unsigned char PsuDischargeAbnormal :1;					//bit 1
+			unsigned char PsuDcSideShutDown :1;					//bit 2
+			unsigned char PsuFailureAlarm :1;			//bit 3
+			unsigned char PsuProtectionAlarm :1;				//bit 4
+			unsigned char PsuFanFailureAlarm :1;				//bit 5
+			unsigned char PsuInputUVP:1;						//bit 6
+			unsigned char PsuInputOVP:1;									//bit 7
+			//AlarmVal[9]
+			unsigned char PsuWalkInState :1;					//bit 0
+			unsigned char PsuPowerLimitedState :1;					//bit 1
+			unsigned char PsuIdRepeat :1;					//bit 2
+			unsigned char PsuSevereUnevenCurrent :1;			//bit 3
+			unsigned char PsuThreePhaseInputInadequate :1;				//bit 4
+			unsigned char PsuThreePhaseOnputImbalance :1;				//bit 5
+			unsigned char PsuFfcSideShutDown :1;						//bit 6
+			unsigned char PsuNoResource:1;
+			//AlarmVal[10]
+			unsigned char RelayboardStestFail :1;					//bit 0
+			unsigned char FanboardStestFail :1;					//bit 1
+			unsigned char PrimaryStestFail :1;					//bit 2
+			unsigned char ChademoboardStestFail :1;			//bit 3
+			unsigned char CCSboardStestFail :1;				//bit 4
+			unsigned char AcContactStestFail :1;				//bit 5
+			unsigned char PsuModuleStestFail :1;						//bit 6
+			unsigned char ModelNameNoneMatchStestFail:1;			//bit 7	
+			//AlarmVal[11]
+			unsigned char CcsOutputUVPFail :1;					//bit 0
+			unsigned char ChademoOutputUVPFail :1;					//bit 1
+			unsigned char :6;									//bit 2 ~ 7
+		}bits;
+	}AlarmEvents;
+};
+
+char InfoStatusCode[256][6]=
+{
+	//Information comes from EVSE
+	"013600",	//Normal stop charging by user
+	"013601",	//Charging Time's up
+	"013602",	//Replace system air filter
+	"013603",	//Reach to CHAdeMO max. plugging times.
+	"013604",	//Reach to CCS max. plugging times.
+	"013605",	//Reach to GB max. plugging times.
+	"013606",	//Reach to AC max. plugging times.
+	"013607",	//CSU fimrware update fail
+	"013608",	//CHAdeMO Module fimrware update fail
+	"013609",	//CCS Module fimrware update fail
+	"013610",	//GB Module fimrware update fail
+	"013611",	//Aux. power module fimrware update fail
+	"013612",	//Relay control module fimrware update fail
+	"013613",	//LCM module fimrware update fail
+	"013614",	//Bluetooth module fimrware update fail
+	"013615",	//WiFi module fimrware update fail
+	"013616",	//3G/4G module fimrware update fail
+	"013617",	//SMR fimrware update fail
+	"013618",	//RFID module fimrware update fail
+	"013619",	//configured by USB flash drive
+	"013620",	//configured by backend
+	"013621",	//configured by webpage
+	"013622",	//disconnected from Internet through Ethernet
+	"013623",	//disconnected from Internet through WiFi
+	"013624",	//disconnected from Internet through 3G/4G
+	"013625",	//disconnected from AP through WiFi
+	"013626",	//disconnected from APN through 3G/4G
+	"013627",	//Reserved
+	"013628",	//Reserved
+	"013629",	//Reserved
+	"013630",	//Reserved
+	"013631",	//Reserved
+	//Information comes from EV
+	"023700",	//CHAdeMO EV communication Fail
+	"023701",	//CCS EV communication Fail
+	"023702",	//GB EV communication Fail
+	"023703",	//AC: pilot fault
+	"023704",	//CHAdeMO:  battery malfunction
+	"023705",	//CHAdeMO:  no charging permission
+	"023706",	//CHAdeMO:  battery incompatibility
+	"023707",	//CHAdeMO:  battery OVP
+	"023708",	//CHAdeMO:  battery UVP
+	"023709",	//CHAdeMO:  battery OTP
+	"023710",	//CHAdeMO:  battery current difference
+	"023711",	//CHAdeMO:  battery voltage difference
+	"023712",	//CHAdeMO:  shift position
+	"023713",	//CHAdeMO:  battery other fault
+	"023714",	//CHAdeMO:  charging system error
+	"023715",	//CHAdeMO:  EV normal stop
+	"023716",	//CHAdeMO:  connector temperature sensor broken
+	"023717",	//CHAdeMO:  connector lock fail
+	"023718",	//CHAdeMO:	D1 ON No Receive
+	"023719",	//CHAdeMO:	BMS K to J Timeout
+	"023720",	//CHAdeMO:	BMS Charge Allow Timeout
+	"023721",	//CHAdeMO:	Wait GroundFault Timeout
+	"023722",	//CHAdeMO:	BMS EV Relay Timeout
+	"023723",	//CHAdeMO:	BMS Request Current Timeout
+	"023724",	//CHAdeMO:	BMS K to J OFF Timeout
+	"023725",	//CHAdeMO:	BMS EV Relay OFF Timeout
+	"023726",	//CHAdeMO:	ADC More Than 10V
+	"023727",	//CHAdeMO:	ADC More Than 20V
+	"023728",	//CHAdeMO:	BMS Charge Before Stop
+	"023729",	//CHAdeMO:	Charger Get Normal Stop
+	"023730",	//CHAdeMO:	Charger Get Emergency Stop
+	"023731",	//CHAdeMO:  Isolation Result Fail
+	"023732",	//CHAdeMO: 	Miss Link With MotherBoard
+	"023733",	//CHAdeMO:	Output Voltage More Than Limit
+	"023734",	//CHAdeMO:	Request Current More Than Limit
+	"023735",	//CHAdeMO: 	Re Cap BMS Eqr Current Exceed
+	"023736",	//CHAdeMO:	Charge Remain Count Down
+	"023737",	//CCS:CCS_EVCC_EVErrorCode_FAILED_RESSTemperatureInhibit
+	"023738",	//CCS:CCS_EVCC_EVErrorCode_FAILED_EVShiftPosition
+	"023739",	//CCS:CCS_EVCC_EVErrorCode_FAILED_ChargerConnectorLockFault
+	"023740",	//CCS:CCS_EVCC_EVErrorCode_FAILED_EVRESSMalfunction
+	"023741",	//CCS:CCS_EVCC_EVErrorCode_FAILED_ChargingCurrentdifferential
+	"023742",	//CCS:CCS_EVCC_EVErrorCode_FAILED_ChargingVoltageOutOfRange
+	"023743",	//CCS:CCS_EVCC_EVErrorCode_FAILED_ChargingSystemIncompatibility
+	"023744",	//CCS:CCS_EVCC_EVErrorCode_FAILED_EmergencyEvent
+	"023745",	//CCS:CCS_EVCC_EVErrorCode_FAILED_Breaker
+	"023746",	//CCS:CCS_EVCC_EVErrorCode_FAILED_NoData
+	"023747",	//CCS:CCS_EVCC_EVErrorCode_FAILED_reserved_by_DIN_A
+	"023748",	//CCS:CCS_EVCC_EVErrorCode_FAILED_reserved_by_DIN_B
+	"023749",	//CCS:CCS_EVCC_EVErrorCode_FAILED_reserved_by_DIN_C
+	"023750",	//CCS:CCS_EVCC_EVErrorCode_FAILED_reserved_by_ISO_1
+	"023751",	//CCS:CCS_EVCC_EVErrorCode_FAILED_reserved_by_ISO_2
+	"023752",	//CCS:CCS_EVCC_EVErrorCode_FAILED_reserved_by_ISO_3
+	"023753",	//CCS:CCS_EVCC_EVErrorCode_FAILED_reserved_by_OEM_1
+	"023754",	//CCS:CCS_EVCC_EVErrorCode_FAILED_reserved_by_OEM_2
+	"023755",	//CCS:CCS_EVCC_EVErrorCode_FAILED_reserved_by_OEM_3
+	"023756",	//CCS:CCS_EVCC_EVErrorCode_FAILED_reserved_by_OEM_4
+	"023757",	//CCS:CCS_EVCC_EVErrorCode_FAILED_reserved_by_OEM_5
+	"023758",	//CCS:CCS_SECC_ResponseCode_FAILED_SequenceError
+	"023759",	//CCS:CCS_SECC_ResponseCode_FAILED_SignatureError
+	"023760",	//CCS:CCS_SECC_ResponseCode_FAILED_UnknownSession
+	"023761",	//CCS:CCS_SECC_ResponseCode_FAILED_ServiceIDInvalid
+	"023762",	//CCS:CCS_SECC_ResponseCode_FAILED_Payment SelectionInvalid
+	"023763",	//CCS:CCS_SECC_ResponseCode_FAILED_IdentificationSelectionInvalid
+	"023764",	//CCS:CCS_SECC_ResponseCode_FAILED_ServiceSelectionInvalid
+	"023765",	//CCS:CCS_SECC_ResponseCode_FAILED_CertificateExpired
+	"023766",	//CCS:CCS_SECC_ResponseCode_FAILED_CertificateNotYetValid
+	"023767",	//CCS:CCS_SECC_ResponseCode_FAILED_CertificateRevoked
+	"023768",	//CCS:CCS_SECC_ResponseCode_FAILED_NoCertificateAvailable
+	"023769",	//CCS:CCS_SECC_ResponseCode_FAILED_CertChainError
+	"023770",	//CCS:CCS_SECC_ResponseCode_FAILED_CertValidationError
+	"023771",	//CCS:CCS_SECC_ResponseCode_FAILED_CertVerificationError
+	"023772",	//CCS:CCS_SECC_ResponseCode_FAILED_ContractCanceled
+	"023773",	//CCS:CCS_SECC_ResponseCode_FAILED_ChallengeInvalid
+	"023774",	//CCS:CCS_SECC_ResponseCode_FAILED_WrongEnergyTransferMode
+	"023775",	//CCS:CCS_SECC_ResponseCode_FAILED_WrongChargeParameter
+	"023776",	//CCS:CCS_SECC_ResponseCode_FAILED_ChargingProfileInvalid
+	"023777",	//CCS:CCS_SECC_ResponseCode_FAILED_TariffSelectionInvalid
+	"023778",	//CCS:CCS_SECC_ResponseCode_FAILED_EVSEPresentVoltageToLow
+	"023779",	//CCS:CCS_SECC_ResponseCode_FAILED_PowerDeliveryNotApplied
+	"023780",	//CCS:CCS_SECC_ResponseCode_FAILED_MeteringSignatureNotValid
+	"023781",	//CCS:CCS_SECC_ResponseCode_FAILED_NoChargeServiceSelected
+	"023782",	//CCS:CCS_SECC_ResponseCode_FAILED_ContactorError
+	"023783",	//CCS:CCS_SECC_ResponseCode_FAILED_CertificateNotAllowedAtThisEVSE
+	"023784",	//CCS:CCS_SECC_ResponseCode_FAILED_GAChargeStop
+	"023785",	//CCS:CCS_SECC_ResponseCode_FAILED_AlignmentError
+	"023786",	//CCS:CCS_SECC_ResponseCode_FAILED_ACDError
+	"023787",	//CCS:CCS_SECC_ResponseCode_FAILED_AssociationError
+	"023788",	//CCS:CCS_SECC_ResponseCode_FAILED_EVSEChargeAbort
+	"023789",	//CCS:CCS_SECC_ResponseCode_FAILED_NoSupportedApp-Protocol-Protocol
+	"023790",	//CCS:CCS_SECC_ResponseCode_FAILED_ContractNotAccepted
+	"023791",	//CCS:CCS_SECC_ResponseCode_FAILED_MOUnknown
+	"023792",	//CCS:CCS_SECC_ResponseCode_FAILED_OEM_Prov_CertificateRevoke
+	"023793",	//CCS:CCS_SECC_ResponseCode_FAILED_OEM_SubCA1_CertificateRevoked
+	"023794",	//CCS:CCS_SECC_ResponseCode_FAILED_OEM_SubCA2_CertificateRevoked
+	"023795",	//CCS:CCS_SECC_ResponseCode_FAILED_OEM_RootCA_CertificateRevoked
+	"023796",	//CCS:CCS_SECC_ResponseCode_FAILED_MO_Prov_CertificateRevoked
+	"023797",	//CCS:CCS_SECC_ResponseCode_FAILED_MO_SubCA1_CertificateRevoked
+	"023798",	//CCS:CCS_SECC_ResponseCode_FAILED_MO_SubCA2_CertificateRevoked
+	"023799",	//CCS:CCS_SECC_ResponseCode_FAILED_MO_RootCA_CertificateRevoked
+	"023800",	//CCS:CCS_SECC_ResponseCode_FAILED_CPS_Prov_CertificateRevoked
+	"023801",	//CCS:CCS_SECC_ResponseCode_FAILED_CPS_SubCA1_CertificateRevoked
+	"023802",	//CCS:CCS_SECC_ResponseCode_FAILED_CPS_SubCA2_CertificateRevoked
+	"023803",	//CCS:CCS_SECC_ResponseCode_FAILED_CPS_RootCA_CertificateRevoked
+	"023804",	//CCS:CCS_SECC_ResponseCode_FAILED_reserved_1
+	"023805",	//CCS:CCS_SECC_ResponseCode_FAILED_reserved_2
+	"023806",	//CCS:CCS_SECC_ResponseCode_FAILED_reserved_3
+	"023807",	//CCS:CCS_SECC_ResponseCode_FAILED_reserved_4
+	"023808",	//CCS:CCS_SECC_ResponseCode_FAILED_reserved_5
+	"023809",	//CCS:CCS_SECC_TIMEOUT_SLAC_TT_EVSE_SLAC_init
+	"023810",	//CCS:CCS_SECC_TIMEOUT_SLAC_TP_match_response
+	"023811",	//CCS:CCS_SECC_TIMEOUT_SLAC_TT_match_sequence
+	"023812",	//CCS:CCS_SECC_TIMEOUT_SLAC_TT_EVSE_match_MNBC
+	"023813",	//CCS:CCS_SECC_TIMEOUT_SLAC_TP_EVSE_avg_atten_calc
+	"023814",	//CCS:CCS_SECC_TIMEOUT_SLAC_TT_match_response
+	"023815",	//CCS:CCS_SECC_TIMEOUT_SLAC_TP_EVSE_match_session
+	"023816",	//CCS:CCS_SECC_TIMEOUT_SLAC_TT_EVSE_assoc_session
+	"023817",	//CCS:CCS_SECC_TIMEOUT_SLAC_TT_EVSE_vald_toggle
+	"023818",	//CCS:CCS_SECC_TIMEOUT_SLAC_reserved_1
+	"023819",	//CCS:CCS_SECC_TIMEOUT_SLAC_reserved_2
+	"023820",	//CCS:CCS_SECC_TIMEOUT_SLAC_reserved_3
+	"023821",	//CCS:CCS_SECC_TIMEOUT_SLAC_reserved_4
+	"023822",	//CCS:CCS_SECC_TIMEOUT_SLAC_reserved_5
+	"023823",	//CCS:CCS_SECC_TIMEOUT_SLACC_SDP_UDP_TT_match_join
+	"023824",	//CCS:CCS_SECC_TIMEOUT_SLACC_SDP_TCP_TT_match_join
+	"023825",	//CCS:CCS_SECC_TIMEOUT_SLACC_SDP_TP_amp_map_exchange
+	"023826",	//CCS:CCS_SECC_TIMEOUT_SLACC_SDP_TP_link_ready_notification
+	"023827",	//CCS:CCS_SECC_TIMEOUT_SLACC_SDP_reserved_1
+	"023828",	//CCS:CCS_SECC_TIMEOUT_SLACC_SDP_reserved_2
+	"023829",	//CCS:CCS_SECC_TIMEOUT_SLACC_SDP_reserved_3
+	"023830",	//CCS:CCS_SECC_TIMEOUT_SLACC_SDP_reserved_4
+	"023831",	//CCS:CCS_SECC_TIMEOUT_SLACC_SDP_reserved_5
+	"023832",	//CCS:CCS_SECC_TIMEOUT_V2G_Msg_Performance_Time_SupportedAppProtocolRes
+	"023833",	//CCS:CCS_SECC_TIMEOUT_V2G_Msg_Performance_Time_SessionSetupRes
+	"023834",	//CCS:CCS_SECC_TIMEOUT_V2G_Msg_Performance_Time_ServiceDiscoveryRes
+	"023835",	//CCS:CCS_SECC_TIMEOUT_V2G_Msg_Performance_Time_ServicePaymentSelectionRes
+	"023836",	//CCS:CCS_SECC_TIMEOUT_V2G_Msg_Performance_Time_ContractAuthenticationRes
+	"023837",	//CCS:CCS_SECC_TIMEOUT_V2G_Msg_Performance_Time_ChargeParameterDiscoveryRes
+	"023838",	//CCS:CCS_SECC_TIMEOUT_V2G_Msg_Performance_Time_PowerDeliveryRes
+	"023839",	//CCS:CCS_SECC_TIMEOUT_V2G_Msg_Performance_Time_CableCheckRes
+	"023840",	//CCS:CCS_SECC_TIMEOUT_V2G_Msg_Performance_Time_PreChargeRes
+	"023841",	//CCS:CCS_SECC_TIMEOUT_V2G_Msg_Performance_Time_CurrentDemandRes
+	"023842",	//CCS:CCS_SECC_TIMEOUT_V2G_Msg_Performance_Time_WeldingDetectionRes
+	"023843",	//CCS:CCS_SECC_TIMEOUT_V2G_Msg_Performance_Time_SessionStopRes
+	"023844",	//CCS:CCS_SECC_TIMEOUT_V2G_Sequence_Time
+	"023845",	//CCS:CCS_SECC_TIMEOUT_V2G_ReadyToCharge_Performance_Time
+	"023846",	//CCS:CCS_SECC_TIMEOUT_V2G_CommunicationSetup_Performance_Time
+	"023847",	//CCS:CCS_SECC_TIMEOUT_V2G_CableCheck_Performance_Time
+	"023848",	//CCS:CCS_SECC_TIMEOUT_V2G_CPState_Detection_Time
+	"023849",	//CCS:CCS_SECC_TIMEOUT_V2G_CPOscillator_Retain_Time
+	"023850",	//CCS:CCS_SECC_TIMEOUT_V2G_reserved_1
+	"023851",	//CCS:CCS_SECC_TIMEOUT_V2G_reserved_2
+	"023852",	//CCS:CCS_SECC_TIMEOUT_V2G_reserved_3
+	"023853",	//CCS:CCS_SECC_TIMEOUT_V2G_reserved_4
+	"023854",	//CCS:CCS_SECC_TIMEOUT_V2G_reserved_5
+	"023855",	//CCS:CCS_CAN_TIMEOUT_TP_GET_EV_TARGET_INFO
+	"023856",	//CCS:CCS_CAN_TIMEOUT_TT_GET_EV_TARGET_INFO
+	"023857",	//CCS:CCS_CAN_TIMEOUT_TP_GET_EV_BATTERY_INFO
+	"023858",	//CCS:CCS_CAN_TIMEOUT_TT_GET_EV_BATTERY_INFO
+	"023859",	//CCS:CCS_CAN_TIMEOUT_TP_EV_STOP_EVENT
+	"023860",	//CCS:CCS_CAN_TIMEOUT_TT_EV_STOP_EVENT
+	"023861",	//CCS:CCS_CAN_TIMEOUT_TP_EVSE_STOP_EVENT
+	"023862",	//CCS:CCS_CAN_TIMEOUT_TT_EVSE_STOP_EVENT
+	"023863",	//CCS:CCS_CAN_TIMEOUT_TP_GET_MISC_INFO
+	"023864",	//CCS:CCS_CAN_TIMEOUT_TT_GET_MISC_INFO
+	"023865",	//CCS:CCS_CAN_TIMEOUT_TP_DOWNLOAD_REQUEST
+	"023866",	//CCS:CCS_CAN_TIMEOUT_TT_DOWNLOAD_REQUEST
+	"023867",	//CCS:CCS_CAN_TIMEOUT_TP_START_BLOCK_TRANSFER
+	"023868",	//CCS:CCS_CAN_TIMEOUT_TT_START_BLOCK_TRANSFER
+	"023869",	//CCS:CCS_CAN_TIMEOUT_TP_DATA_TRANSFER
+	"023870",	//CCS:CCS_CAN_TIMEOUT_TT_DATA_TRANSFER
+	"023871",	//CCS:CCS_CAN_TIMEOUT_TP_DOWNLOAD_FINISH
+	"023872",	//CCS:CCS_CAN_TIMEOUT_TT_DOWNLOAD_FINISH
+	"023873",	//CCS:CCS_CAN_TIMEOUT_TP_ISOLATION_STATUS
+	"023874",	//CCS:CCS_CAN_TIMEOUT_TT_ISOLATION_STATUS
+	"023875",	//CCS:CCS_CAN_TIMEOUT_TP_CONNECTOR_INFO
+	"023876",	//CCS:CCS_CAN_TIMEOUT_TT_CONNECTOR_INFO
+	"023877",	//CCS:CCS_CAN_TIMEOUT_TT_RTC_INFO
+	"023878",	//CCS:CCS_CAN_TIMEOUT_TP_RTC_INFO
+	"023879",	//CCS:CCS_CAN_TIMEOUT_TP_EVSE_PRECHARGE_INFO
+	"023880",	//CCS:CCS_CAN_TIMEOUT_TT_EVSE_PRECHARGE_INFO
+	"023881",	//CCS:CCS_CAN_TIMEOUT_MSG_Sequence
+	"023882",	//CCS:CCS_CAN_MSG_Unrecognized_CMD_ID
+	"023883",	//CCS:CCS_SECC_DIN_Msg_Decode_Error
+	"023884",	//CCS:CCS_SECC_DIN_Msg_Encode_Error
+	"023885",	//CCS:CCS_SECC_ISO1_Msg_Decode_Error
+	"023886",	//CCS:CCS_SECC_ISO1_Msg_Encode_Error
+	"023887",	//CCS:CCS_SECC_ISO2_Msg_Decode_Error
+	"023888",	//CCS:CCS_SECC_ISO2_Msg_Encode_Error
+	 //Information comes from Backend
+	"033900",	//disconnected from backend through Ethernet
+	"033901",	//disconnected from backend through WiFi
+	"033902",	//disconnected from backend through 3G/4G
+	"033903",	//Remote start charging by backend
+	"033904",	//Remote stop charging by backend
+	"033905",	//Remote reset by backend
+	"033906",	//Reserved
+	"033907",	//Reserved
+};
+struct InfoCodeData
+{
+	unsigned char PreviousInfoVal[29];
+	union
+	{
+		unsigned char InfoVal[29];
+		struct
+		{
+			//InfoVal[0]
+		    	unsigned char NormalStopChargingByUser:1;				//bit 0
+			unsigned char ChargingTimesUp:1;						//bit 1
+			unsigned char ReplaceSystemAirFilter:1; 					//bit 2
+			unsigned char ReachChademoMaxPluggingTimes:1;		//bit 3
+			unsigned char ReachCcsMaxPluggingTimes:1;			//bit 4
+			unsigned char ReachGbMaxPluggingTimes:1;			//bit 5
+			unsigned char ReachAcMaxPluggingTimes:1;				//bit 6
+			unsigned char CsuFimrwareUpdateFail:1;				//bit 7
+			//InfoVal[1]
+			unsigned char ChademoModuleFimrwareUpdateFail:1;	//bit 0
+			unsigned char CcsModuleFimrwareUpdateFail:1;			//bit 1
+			unsigned char GbModuleFimrwareUpdateFail:1;			//bit 2
+			unsigned char AuxPowerModuleFimrwareUpdateFail:1;		//bit 3
+			unsigned char RelayBoardFimrwareUpdateFail:1;			//bit 4
+			unsigned char LcmModuleFimrwareUpdateFail:1;			//bit 5
+			unsigned char BluetoothModuleFimrwareUpdateFail:1;		//bit 6
+			unsigned char WiFiModuleFimrwareUpdateFail:1;			//bit 7
+			//InfoVal[2]
+			unsigned char Telocom4GModuleFimrwareUpdateFail:1;	//bit 0
+			unsigned char PsuFimrwareUpdateFail:1;				//bit 1
+			unsigned char RfidModuleFimrwareUpdateFail:1;			//bit 2
+			unsigned char ConfiguredByUsbFlashDrive:1;				//bit 3
+			unsigned char ConfiguredByBackend:1;					//bit 4
+			unsigned char ConfiguredByWebpage:1;				//bit 5
+			unsigned char InternetDisconnectViaEthernet:1;			//bit 6
+			unsigned char InternetDisconnectViaWiFi :1;				//bit 7
+	        //InfoVal[3]
+			unsigned char InternetDisconnectVia4Gi:1;				//bit 0
+			unsigned char ApDisconnectViaWiFi:1;					//bit 1
+			unsigned char ApnDisconnectVia4Gi:1;					//bit 2
+			unsigned char :5;									//bit 3~7 reserved
+			 //InfoVal[4]
+			unsigned char ChademoEvCommFail:1;				//bit 0
+			unsigned char CcsEvCommFail:1;						//bit 1
+			unsigned char GbEvCommFail:1;						//bit 2
+			unsigned char PilotFault:1;							//bit 3
+			unsigned char ChademoBatteryMalfun:1;				//bit 4
+			unsigned char ChademoNoPermission:1;				//bit 5
+			unsigned char ChademoBatteryIncompatibility:1;			//bit 6
+			unsigned char ChademoBatteryOVP:1;					//bit 7
+			//InfoVal[5]
+			unsigned char ChademoBatteryUVP:1;					//bit 0
+			unsigned char ChademoBatteryOTP:1;					//bit 1
+			unsigned char ChademoBatteryCurrentDiff:1;			//bit 2
+			unsigned char ChademoBatteryVoltageDiff:1;			//bit 3
+			unsigned char ChademoShiftPosition:1;					//bit 4
+			unsigned char ChademoBatteryOtherFault:1;			//bit 5
+			unsigned char ChademoChargingSystemError:1;			//bit 6
+			unsigned char ChademoEvNormalStop:1;				//bit 7
+			//InfoVal[6]
+			unsigned char ChademoTempSensorBroken:1;			//bit 0
+			unsigned char ChademoConnectorLockFail:1;			//bit 1
+			unsigned char ChademoD1OnNoReceive:1;				//bit 2
+			unsigned char ChademoBmsKtoJTimeout:1;				//bit 3
+			unsigned char ChademoBmsChargeAllowTimeout:1;		//bit 4
+			unsigned char ChademoWaitGfdTimeout:1;				//bit 5
+			unsigned char ChademoBmsEvRelayTimeout:1;			//bit 6
+			unsigned char ChademoBmsReqCurrentTimeout:1;		//bit 7
+			//InfoVal[7]
+			unsigned char ChademoBmsKtoJOffTimeout :1;			//bit 0
+			unsigned char ChademoBmsEvRelayOffTimeout :1;		//bit 1
+			unsigned char ChademoAdcMoreThan10V :1;				//bit 2
+			unsigned char ChademoAdcMoreThan20V :1;				//bit 3
+			unsigned char ChademoBmsChargeBeforeStop :1;		//bit 4
+			unsigned char ChademoChargerGetNormalStop :1;				//bit 5
+			unsigned char ChademoChargerGetEmergencyStop :1;			//bit 6
+			unsigned char ChademoIsolationResultFail :1;		//bit 7
+			//InfoVal[8]
+			unsigned char ChademoMissLinkWithMotherBoard :1;	//bit 0
+			unsigned char ChademoOutputVolMoreThanLimit :1;			//bit 1
+			unsigned char ChademoReqCurrentMoreThanLimit :1;				//bit 2
+			unsigned char ChademoReCapBmsEqrCurrentExceed :1;				//bit 3
+			unsigned char ChademoChargeRemainCountDown :1;		//bit 4
+			unsigned char CcsRESTemperatureInhibit:1;				//bit 5
+			unsigned char CcsEVShiftPosition:1;				//bit 6
+			unsigned char CcsChargerConnectorLockFault:1;				//bit 7
+			//InfoVal[9]
+			unsigned char CcsEVRESSMalfunction:1;					//bit 0
+			unsigned char CcsChargingCurrentdifferential:1;		//bit 1
+			unsigned char CcsChargingVoltageOutOfRange:1;		//bit 2
+			unsigned char CcsChargingSystemIncompatibility:1;		//bit 3
+			unsigned char CcsEmergencyEvent:1;				//bit 4
+			unsigned char CcsBreaker:1;					//bit 5
+			unsigned char CcsNoData:1;							//bit 6
+			unsigned char Ccsreserved_by_DIN_A:1;				//bit 7
+			//InfoVal[10]
+			unsigned char Ccsreserved_by_DIN_B:1;				//bit 0
+			unsigned char Ccsreserved_by_DIN_C:1;					//bit 1
+			unsigned char Ccsreserved_by_ISO_1:1;				//bit 2
+			unsigned char Ccsreserved_by_ISO_2:1;					//bit 3
+			unsigned char Ccsreserved_by_ISO_3:1;					//bit 4
+			unsigned char Ccsreserved_by_OEM_1:1;				//bit 5
+			unsigned char Ccsreserved_by_OEM_2:1;			//bit 6
+			unsigned char Ccsreserved_by_OEM_3:1;				//bit 7
+			//InfoVal[11]
+			unsigned char Ccsreserved_by_OEM_4:1;			//bit 0
+			unsigned char Ccsreserved_by_OEM_5:1;			//bit 1
+			unsigned char CcsSequenceError:1;			//bit 2
+			unsigned char CcsSignatureError:1;		//bit 3
+			unsigned char CcsUnknownSession:1;					//bit 4
+			unsigned char CcsServiceIDInvalid:1;					//bit 5
+			unsigned char CcsPaymentSelectionInvalid:1;					//bit 6
+			unsigned char CcsIdentificationSelectionInvalid:1;			//bit 7
+			//InfoVal[12]
+			unsigned char CcsServiceSelectionInvalid:1;			//bit 0
+			unsigned char CcsCertificateExpired:1;			//bit 1
+			unsigned char CcsCertificateNotYetValid:1;			//bit 2
+			unsigned char CcsCertificateRevoked:1;			//bit 3
+			unsigned char CcsNoCertificateAvailable:1;			//bit 4
+			unsigned char CcsCertChainError:1;			//bit 5
+			unsigned char CcsCertValidationError:1;			//bit 6
+			unsigned char CcsCertVerificationError:1;			//bit 7
+			//InfoVal[13]
+			unsigned char CcsContractCanceled:1;				//bit 0
+			unsigned char CcsChallengeInvalid:1;				//bit 1
+			unsigned char CcsWrongEnergyTransferMode:1;				//bit 2
+			unsigned char CcsWrongChargeParameter:1;				//bit 3
+			unsigned char CcsChargingProfileInvalid:1;				//bit 4
+			unsigned char CcsTariffSelectionInvalid:1;				//bit 5
+			unsigned char CcsEVSEPresentVoltageToLow:1;				//bit 6
+			unsigned char CcsPowerDeliveryNotApplied:1;			//bit 7
+			//InfoVal[14]
+			unsigned char CcsMeteringSignatureNotValid:1;			//bit 0
+			unsigned char CcsNoChargeServiceSelected:1;			//bit 1
+			unsigned char CcsContactorError:1;					//bit 2
+			unsigned char CcsCertificateNotAllowedAtThisEVSE:1;			//bit 3
+			unsigned char CcsGAChargeStop:1;				//bit 4
+			unsigned char CcsAlignmentError:1;					//bit 5
+			unsigned char CcsACDError:1;					//bit 6
+			unsigned char CcsAssociationError:1;			//bit 7
+			//InfoVal[15]
+			unsigned char CcsEVSEChargeAbort:1;				//bit 0
+			unsigned char CcsNoSupportedAppProtocol:1;					//bit 1
+			unsigned char CcsContractNotAccepted:1;				//bit 2
+			unsigned char CcsMOUnknown:1;					//bit 3
+			unsigned char CcsOEM_Prov_CertificateRevoke:1;				//bit 4
+			unsigned char CcsOEM_SubCA1_CertificateRevoked:1;		//bit 5
+			unsigned char CcsOEM_SubCA2_CertificateRevoked:1;		//bit 6
+			unsigned char CcsOEM_RootCA_CertificateRevoked:1;		//bit 7
+			//InfoVal[16]
+			unsigned char CcsMO_Prov_CertificateRevoked:1;			//bit 0
+			unsigned char CcsMO_SubCA1_CertificateRevoked:1;		//bit 1
+			unsigned char CcsMO_SubCA2_CertificateRevoked:1;		//bit 2
+			unsigned char CcsMO_RootCA_CertificateRevoked:1;		//bit 3
+			unsigned char CcsCPS_Prov_CertificateRevoked:1;		//bit 4
+			unsigned char CcsCPS_SubCA1_CertificateRevoked:1;		//bit 5
+			unsigned char CcsCPS_SubCA2_CertificateRevoked:1;		//bit 6
+			unsigned char CcsCPS_RootCA_CertificateRevoked:1;		//bit 7
+			//InfoVal[17]
+			unsigned char :5;					//bit 0~4 reserved
+			unsigned char CcsTT_EVSE_SLAC_init:1;				//bit 5
+			unsigned char CcsTP_match_response:1;			//bit 6
+			unsigned char CcsTT_match_sequence:1;			//bit 7
+			//InfoVal[18]
+			unsigned char CcsTT_EVSE_match_MNBC:1;				//bit 0
+			unsigned char CcsTP_EVSE_avg_atten_calc:1;				//bit 1
+			unsigned char CcsTT_match_response:1;			//bit 2
+			unsigned char CcsTP_EVSE_match_session:1;			//bit 3
+			unsigned char CcsTT_EVSE_assoc_session:1;			//bit 4
+			unsigned char CcsTT_EVSE_vald_toggle:1;			//bit 5
+			unsigned char :2;					//bit 6~7 reserved
+			//InfoVal[19]
+			unsigned char :3;					//bit 0~2 reserved
+			unsigned char CcsUDP_TT_match_join:1;			//bit 3
+			unsigned char CcsTCP_TT_match_join:1;				//bit 4
+			unsigned char CcsTP_amp_map_exchange:1;			//bit 5
+			unsigned char CcsTP_link_ready_notification:1;			//bit 6
+			unsigned char :1;				//bit 7 resetved
+			//InfoVal[20]
+			unsigned char :4;						//bit 0~3 reserved
+			unsigned char CcsSupportedAppProtocolRes:1;			//bit 4
+			unsigned char CcsSessionSetupRes:1;				//bit 5
+			unsigned char CcsServiceDiscoveryRes:1;				//bit 6
+			unsigned char CcsServicePaymentSelectionRes:1;		//bit 7
+			//InfoVal[21]
+			unsigned char CcsContractAuthenticationRes:1;			//bit 0
+			unsigned char CcsChargeParameterDiscoveryRes:1;			//bit 1
+			unsigned char CcsPowerDeliveryRes:1;			//bit 2
+			unsigned char CcsCableCheckRes:1;			//bit 3
+			unsigned char CcsPreChargeRes:1;					//bit 4
+			unsigned char CcsCurrentDemandRes:1;					//bit 5
+			unsigned char CcsWeldingDetectionRes:1;				//bit 6
+			unsigned char CcsSessionStopRes:1;					//bit 7
+			//InfoVal[22]
+			unsigned char CcsSequence_Time:1;						//bit 0
+			unsigned char CcsReadyToCharge_Performance_Time:1;				//bit 1
+			unsigned char CcsCommunicationSetup_Performance_Time:1;					//bit 2
+			unsigned char CcsCableCheck_Performance_Time:1;				//bit 3
+			unsigned char CcsCPState_Detection_Time:1;			//bit 4
+			unsigned char CcsCPOscillator_Retain_Time:1;					//bit 5
+			unsigned char :2;			//bit 6~7 reserved
+			//InfoVal[23]
+			unsigned char :3;					//bit 0~2 reserved
+			unsigned char CcsTP_GET_EV_TARGET_INFO:1;			//bit 3
+			unsigned char CcsTT_GET_EV_TARGET_INFO:1;		//bit 4
+			unsigned char CcsTP_GET_EV_BATTERY_INFO:1;		//bit 5
+			unsigned char CcsTT_GET_EV_BATTERY_INFO:1;		//bit 6
+			unsigned char CcsTP_EV_STOP_EVENT:1;				//bit 7
+			//InfoVal[24]
+			unsigned char CcsTT_EV_STOP_EVENT:1;			//bit 0
+			unsigned char CcsTP_EVSE_STOP_EVENT:1;			//bit 1
+			unsigned char CcsTT_EVSE_STOP_EVENT:1;			//bit 2
+			unsigned char CcsTP_GET_MISC_INFO:1;			//bit 3
+			unsigned char CcsTT_GET_MISC_INFO:1;			//bit 4
+			unsigned char CcsTP_DOWNLOAD_REQUEST:1;			//bit 5
+			unsigned char CcsTT_DOWNLOAD_REQUEST:1;			//bit 6
+			unsigned char CcsTP_START_BLOCK_TRANSFER:1;			//bit 7
+			//InfoVal[25]
+			unsigned char CcsTT_START_BLOCK_TRANSFER:1;		//bit 0
+			unsigned char CcsTP_DATA_TRANSFER:1;			//bit 1
+			unsigned char CcsTT_DATA_TRANSFER:1;			//bit 2
+			unsigned char CcsTP_DOWNLOAD_FINISH:1;			//bit 3
+			unsigned char CcsTT_DOWNLOAD_FINISH:1;			//bit 4
+			unsigned char CcsTP_ISOLATION_STATUS:1;			//bit 5
+			unsigned char CcsTT_ISOLATION_STATUS:1;			//bit 6
+			unsigned char CcsTP_CONNECTOR_INFO:1;			//bit 7
+			//InfoVal[26]
+			unsigned char CcsTT_CONNECTOR_INFO:1;			//bit 0
+			unsigned char CcsTT_RTC_INFO:1;				//bit 1
+			unsigned char CcsTP_RTC_INFO:1;			//bit 2
+			unsigned char CcsTP_EVSE_PRECHARGE_INFO:1;		//bit 3
+			unsigned char CcsTT_EVSE_PRECHARGE_INFO:1;			//bit 4
+			unsigned char CcsMSG_Sequence:1;			//bit 5
+			unsigned char CcsCAN_MSG_Unrecognized_CMD_ID:1;			//bit 6
+			unsigned char CcsDIN_Msg_Decode_Error:1;			//bit 7
+			//InfoVal[27]
+			unsigned char CcsDIN_Msg_Encode_Error:1;			//bit 0
+			unsigned char CcsISO1_Msg_Decode_Error:1;			//bit 1
+			unsigned char CcsISO1_Msg_Encode_Error:1;			//bit 2
+			unsigned char CcsISO2_Msg_Decode_Error:1;			//bit 3
+			unsigned char CcsISO2_Msg_Encode_Error:1;			//bit 4
+			unsigned char :3;									//bit 5~7 reserved
+			//InfoVal[28]
+			unsigned char BackendDisconnectedViaEthernet:1;		//bit 0
+			unsigned char BackendDisconnectViaWiFi:1;				//bit 1
+			unsigned char BackendDisconnectVia4G:1;				//bit 2
+			unsigned char BackendRemoteStart:1;					//bit 3
+			unsigned char BackendRemoteStop:1;					//bit 4
+			unsigned char BackendRemoteReset:1;					//bit 5
+			unsigned char :2;									//bit 6~7 reserved
+		}bits;
+	}InfoEvents;
+};
+
+struct StatusCodeData
+{
+	struct FaultCodeData	FaultCode;
+	struct AlarmCodeData	AlarmCode;
+	struct InfoCodeData		InfoCode;
+};
+/**************************************************************************************/
+/**************************PSU Share memory***************************************/
+/**************************************************************************************/
+
+/*Following are the information for each PSU module*/
+struct PsuModuleData
+{
+	unsigned char 		AssignID;
+	unsigned char 		PhysicalID;
+	unsigned char 		GroupID;
+	unsigned char 		Address;
+	unsigned char 		FireWireIndex;
+	unsigned char 		FwVersion[16];
+	unsigned char 		SerialNumber[32];
+	unsigned char 		StateMachine;			//0: Identification,  1:Operation,  2: Alarm,  3: Failure,  s4:Upgrade
+	unsigned char 		OutputPowerSwitch;	//0: D.D normal OFF,  1: D.D emergency OFF,  2: D.D ON
+	unsigned short 	FanSpeed_1;			//RPM
+	unsigned short 	FanSpeed_2;			//RPM
+	unsigned short 	FanSpeed_3;			//RPM
+	unsigned short 	FanSpeed_4;			//RPM
+	unsigned short 	InputVoltage_Type;	//0x00 = Line to Line Vol, 0x01 = Line to Neutral Vol
+	unsigned short 	InputVoltageL1;		//abcd=abc.d volt
+	unsigned short 	InputVoltageL2;		//abcd=abc.d volt
+	unsigned short 	InputVoltageL3;		//abcd=abc.d volt
+	unsigned short 	InputCurrentL1;		//abcd=abc.d amp
+	unsigned short 	InputCurrentL2;		//abcd=abc.d amp
+	unsigned short 	InputCurrentL3;		//abcd=abc.d amp
+	unsigned short 	PresentOutputVoltage;	//abcd=abc.d volt
+	unsigned short 	PresentOutputCurrent;	//abcd=abc.d amp
+	unsigned short 	AvailableCurrent;		//abcd=abc.d amp
+	unsigned int 		AvailablePower;		//Watt
+	char 				CriticalTemp1;			//0x00: -60¢XC  ~  0xFE: 194¢XC, resolution: 1¢XC, offset: -60¢XC, 0xFF: invalid
+	char 				CriticalTemp2;			//0x00: -60¢XC  ~  0xFE: 194¢XC, resolution: 1¢XC, offset: -60¢XC, 0xFF: invalid
+	char 				CriticalTemp3;			//0x00: -60¢XC  ~  0xFE: 194¢XC, resolution: 1¢XC, offset: -60¢XC, 0xFF: invalid
+	char 				ExletTemp;			//0x00: -60¢XC  ~  0xFE: 194¢XC, resolution: 1¢XC, offset: -60¢XC, 0xFF: invalid
+	char 				InletTemp_1;			//0x00: -60¢XC  ~  0xFE: 194¢XC, resolution: 1¢XC, offset: -60¢XC, 0xFF: invalid
+	char 				InletTemp_2;			//0x00: -60¢XC  ~  0xFE: 194¢XC, resolution: 1¢XC, offset: -60¢XC, 0xFF: invalid
+	char 				InletTemp;			//0x00: -60¢XC  ~  0xFE: 194¢XC, resolution: 1¢XC, offset: -60¢XC, 0xFF: invalid
+	char 				OutletTemp;			//0x00: -60¢XC  ~  0xFE: 194¢XC, resolution: 1¢XC, offset: -60¢XC, 0xFF: invalid
+	unsigned int 		AlarmCode;
+	unsigned int 		FaultCode;			//
+};
+
+/*Following are the information for each PSU Group*/
+struct PsuGroupData
+{
+	unsigned char 			GroupPresentPsuQuantity;
+	unsigned char 			GroupOutputPowerSwitch;		//0: D.D normal OFF,  1: D.D emergency OFF,  2: D.D ON
+	unsigned short 		GroupTargetOutputVoltage;		//abcd=abc.d volt
+	unsigned short 		GroupTargetOutputCurrent;		//abcd=abc.d amp
+	unsigned short 		GroupAvailableCurrent;			//abcd=abc.d amp
+	unsigned int 			GroupAvailablePower;			//Watt
+	unsigned short 		GroupPresentOutputVoltage; 	//abcd=abc.d volt
+	unsigned short 		GroupPresentOutputCurrent;		//abcd=abc.d Amps
+	struct PsuModuleData 	PsuModule[MAX_PSU_QUANTITY];
+};
+
+/*Following is the information for system all PSU*/
+struct PsuData
+{
+	unsigned char 			SystemPresentPsuQuantity;
+	unsigned short 		SystemAvailableCurrent;			//abcd=abc.d amp
+	unsigned int 			SystemAvailablePower;			//Watt
+	struct PsuGroupData 	PsuGroup[4];
+	unsigned char 			GroupCount;
+	unsigned char 			Work_Step;
+};
+
+/************************************************************************************/
+/**************************CHAdeMO protocol Share memory*********************/
+/**************************************************************************************/
+struct CHAdeMOEvData
+{
+	unsigned char  SupportDynamicControl;	//110.0
+										//					bit0=1:supported
+	unsigned char  SupportHighCurrent;		//110.0
+										//					bit1=1:supported
+	unsigned char  MiniChargeCurrent;		//100.0				0~200(A) (unit:1A)
+										//					0x00: request for current equivalent to 1.5kW
+										//					0x01: no request
+										//					0x02: request of 1A and following are the same rule
+	unsigned short MaxiBatteryVoltage;		//100.5,100.4 			0~600(V) (unit:1V)
+	unsigned short MaxiChargingTime;			//101.2,101.1			10(sec.)~255(min.)	(Unit:sec)
+										//					Set 0xFF to 101.1 (Unit: 10sec) in case 101.2 (Unit: 1min) is used
+	unsigned char  EstimatChargingTime;		//101.3				0~254(min.)	(Unit:sec)
+										//					Display Only
+	unsigned short TotalBatteryCapacity;		//101.6,101.5 			0.1~6553.5(kWh)	(unit:0.1 kWh)
+	unsigned char  ProtocolVersion;			//102.0				0~255
+										//					0x02: CHAdeMO specification ver.1.2
+	unsigned short TargetBatteryVoltage;		//102.2,102.1 			0~600(V) (unit:1V)
+	unsigned short ChargingCurrentRequest;	//102.3				0~200(A) (unit:1A)
+										//110.2,110.1 			0~1023(A) (unit:1A)
+	unsigned char  BatteryAlarm;				//102.4				>0:alarm
+										//					bit0=1:Battery overvoltage
+										//					bit1=1:Battery undervoltage
+										//					bit2=1:Battery current deviation error
+										//					bit3=1:High battery temperature
+										//					bit4=1:Battery voltage deviation error
+	unsigned char  EvDetection;				//102.5
+										//					bit0=0:Vehicle charging disabled,	(stop charging)
+										//					bit0=1:Vehicle charging enabled,
+										//					bit1=0:¡§Parking¡¨ position
+										//					bit1=1:other position				(stop charging)
+										//					bit2=0:Charging system normal
+										//					bit2=1:Charging system error		(stop charging)
+										//					bit3=0:EV contactor close or during welding detection
+										//					bit3=1:EV contactor open or termination of welding detection (stop charging)
+										//					bit4=0:No stop request before charging
+										//					bit4=1:Normal stop request before charging	(stop charging)
+	unsigned char  SOC;					//102.6				0~100(%) (unit:%)
+										//					Display Only
+	unsigned char  Communicating;			//					it is true if receive EV CAN message within every 1500ms
+	unsigned char  PresentMsgFlowStatus;	//
+};
+
+struct CHAdeMOEvseData
+{
+	unsigned char 	SelfTest_Comp;
+	unsigned char	version[16];									//Chademo firmware version
+	unsigned char  SupportDynamicControl;	//118.0
+										//					bit0=1:supported
+	unsigned char  SupportHighCurrent;		//118.0
+										//					bit1=1:supported
+	unsigned short  AvailableOutputVoltage;	//108.2,108.1 			0~600(V) (unit:1V)
+	unsigned short  AvailableOutputCurrent;	//108.3				0~255(A) (unit:1A)
+										//118.2,118.1 			0~1023(A) (unit:1A)
+	unsigned short  ThresholdVoltage;			//108.5,108.4 			0~600(V) (unit:1V)
+	unsigned char   ConnectorTemperatureP;	//108.6				-40~215(degC) (unit:degC) //value 0=-40	[NISSAN customized]
+	unsigned char   ConnectorTemperatureN;	//108.7				-40~215(degC) (unit:degC) //value 0=-40	[NISSAN customized]
+	unsigned char   ProtocolVersion;			//109.0				0~255
+										//					0x00: CHAdeMO specification 0.9 and earlier
+										//					0x01: CHAdeMO specification 0.9 and 0.9.1
+										//					0x02: CHAdeMO specification 1.0.0, 1.0.1, 1.1 and 1.2
+	unsigned short  PresentOutputVoltage;		//109.2,109.1	 		0~600(V) (unit:1V)
+	unsigned short   PresentOutputCurrent;		//109.3				0~255(A) (unit:1A)
+										//118.4,118.3			0~1023(A) (unit:1A)
+	unsigned char   EvseDetection;			//109.5
+										//					bit0=0:not charging state now
+										//					bit0=1:charging state now
+										//					bit1=0:EVSE normal
+										//					bit1=1:EVSE error
+										//					bit2=0:Not Energizing state
+										//					bit2=1:Energizing state
+										//					bit3=0:No Battery incompatibility
+										//					bit3=1:Battery incompatibility
+										//					bit4=0:No Charging system error
+										//					bit4=1:Charging system error
+										//					bit5=0:No Charging stop control
+										//					bit5=1:Charging stop control
+	unsigned short RemainChargingTime;		//109.7,109.6			10(sec.)~255(min.)	(Unit:sec)
+										//					Set 0xFF to 109.6 (Unit: 10sec) in case 109.7 (Unit: 1min) is used
+	unsigned char  HighPowerCondition;		//118.5
+										//					bit0=0:Present charging current H¡¦118.3,H¡¦118.4¡¨ is less than or equal to rated current of a charging cable
+										//					bit0=1:Present charging current H¡¦118.3,H¡¦118.4¡¨ is exceeds to rated current of a charging cable
+										//					bit1=1:charging cable Cooling function Operating Installed
+										//					bit2=1:charging cable Current limiting function
+										//					bit3=1:charging connector Cooling function Operating
+										//					bit4=1:charging connector Current limiting function Installed
+										//					bit5=1:charging connector Over-temperature protection Installed
+										//					bit6=1:Functional safety Applied
+	unsigned int 	MaxiGroupPower;			//					XXXXXXXX (Unit:Watt)depend on which group to be used
+	unsigned int 	MaxiGroupCurrent;			//					XXXXXXXX (unit:1A)depend on which group to be used
+	unsigned short  ApplyOutputVoltage;		// 					0~600(V) (unit:1V)
+	unsigned short  ElapseChargingTime;		//					(Unit:sec)
+	unsigned short  ElapseEnergy;				//					(Unit:10xkWh)
+	unsigned char	EvboardStatus;			// 	0 : init
+};
+
+struct CHAdeMOData
+{
+	struct CHAdeMOEvData 		ev[CHAdeMO_QUANTITY];
+	struct CHAdeMOEvseData 	evse[CHAdeMO_QUANTITY];
+};
+
+
+/************************************************************************************/
+/**************************CCS protocol Share memory***************************/
+/**************************DIN70121: 201412***************************************/
+/**************************ISO15118_2014: 2014************************************/
+/**************************ISO15118_2018: 2018************************************/
+/************************************************************************************/
+typedef enum boolean { FALSE, TRUE } BOOL;
+enum ResponseCodeType_DIN70121		{ OK_DIN70121 = 0, OK_NewSessionEstablished_DIN70121 = 1, OK_OldSessionJoined_DIN70121 = 2, OK_CertificateExpiresSoon_DIN70121 = 3,
+									   FAILED_DIN70121 = 4, FAILED_SequenceError_DIN70121 = 5, FAILED_ServiceIDInvalid_DIN70121 = 6, FAILED_UnknownSession_DIN70121 = 7,
+									   FAILED_ServiceSelectionInvalid_DIN70121 = 8, FAILED_PaymentSelectionInvalid_DIN70121 = 9, FAILED_CertificateExpired_DIN70121 = 10,
+									   FAILED_SignatureError_DIN70121 = 11, FAILED_NoCertificateAvailable_DIN70121 = 12, FAILED_CertChainError_DIN70121 = 13, FAILED_ChallengeInvalid_DIN70121 = 14,
+									   FAILED_ContractCanceled_DIN70121 = 15, FAILED_WrongChargeParameter_DIN70121 = 16, FAILED_PowerDeliveryNotApplied_DIN70121 = 17,
+									   FAILED_TariffSelectionInvalid_DIN70121 = 18, FAILED_ChargingProfileInvalid_DIN70121 = 19, FAILED_EVSEPresentVoltageToLow_DIN70121 = 20,
+									   FAILED_MeteringSignatureNotValid_DIN70121 = 21, FAILED_WrongEnergyTransferType_DIN70121 = 22};
+enum ResponseCodeType_ISO15118_2014	{ OK_ISO15118_2014 = 0, OK_NewSessionEstablished_ISO15118_2014 = 1, OK_OldSessionJoined_ISO15118_2014 = 2, OK_CertificateExpiresSoon_ISO15118_2014 = 3,
+									   FAILED_ISO15118_2014 = 4, FAILED_SequenceError_ISO15118_2014 = 5, FAILED_ServiceIDInvalid_ISO15118_2014 = 6, FAILED_UnknownSession_ISO15118_2014 = 7,
+									   FAILED_ServiceSelectionInvalid_ISO15118_2014 = 8, FAILED_PaymentSelectionInvalid_ISO15118_2014 = 9, FAILED_CertificateExpired_ISO15118_2014 = 10,
+									   FAILED_SignatureError_ISO15118_2014 = 11, FAILED_NoCertificateAvailable_ISO15118_2014 = 12, FAILED_CertChainError_ISO15118_2014 = 13, FAILED_ChallengeInvalid_ISO15118_2014 = 14,
+									   FAILED_ContractCanceled_ISO15118_2014 = 15, FAILED_WrongChargeParameter_ISO15118_2014 = 16, FAILED_PowerDeliveryNotApplied_ISO15118_2014 = 17,
+									   FAILED_TariffSelectionInvalid_ISO15118_2014 = 18, FAILED_ChargingProfileInvalid_ISO15118_2014 = 19, FAILED_MeteringSignatureNotValid_ISO15118_2014 = 20,
+									   FAILED_NoChargeServiceSelected_ISO15118_2014 = 21, FAILED_WrongEnergyTransferMode_ISO15118_2014 = 22, FAILED_ContactorError_ISO15118_2014 = 23,
+									   FAILED_CertificateNotAllowedAtThisEVSE_ISO15118_2014 = 24, FAILED_CertificateRevoked_ISO15118_2014 = 25  };
+enum ResponseCodeType_ISO15118_2018	{ OK_ISO15118_2018 = 0, OK_NewSessionEstablished_ISO15118_2018 = 1, OK_OldSessionJoined_ISO15118_2018 = 2, OK_CertificateExpiresSoon_ISO15118_2018 = 3,
+									   OK_IsolationValid_ISO15118_2018 = 4, OK_IsolationWarning_ISO15118_2018 = 5, WARNING_CertificateExpired_ISO15118_2018 = 6, WARNING_NoCertificateAvailable_ISO15118_2018 = 7,
+									   WARNING_CertValidationError_ISO15118_2018 = 8, WARNING_CertVerificationError_ISO15118_2018 = 9, WARNING_ContractCanceled_ISO15118_2018 = 10,
+									   FAILED_ISO15118_2018 = 11, FAILED_SequenceError_ISO15118_2018 = 12, FAILED_ServiceIDInvalid_ISO15118_2018 = 13, FAILED_UnknownSession_ISO15118_2018 = 14,
+									   FAILED_ServiceSelectionInvalid_ISO15118_2018 = 15, FAILED_SignatureError_ISO15118_2018 = 16, FAILED_IdentificationSelectionInvalid_ISO15118_2018 = 17,
+									   FAILED_ChallengeInvalid_ISO15118_2018 = 18, FAILED_WrongChargeParameter_ISO15118_2018 = 19, FAILED_IsolationFault_ISO15118_2018 = 20,
+									   FAILED_PowerDeliveryNotApplied_ISO15118_2018 = 21, FAILED_TariffSelectionInvalid_ISO15118_2018 = 22, FAILED_ChargingProfileInvalid_ISO15118_2018 = 23,
+									   FAILED_MeteringSignatureNotValid_ISO15118_2018 = 24, FAILED_NoChargeServiceSelected_ISO15118_2018 = 25, FAILED_WrongEnergyTransferMode_ISO15118_2018 = 26,
+									   FAILED_ContactorError_ISO15118_2018 = 27, FAILED_CertificateRevoked_ISO15118_2018 = 28, FAILED_CertificateNotYetValid_ISO15118_2018 = 29 };
+enum EVSENotificationType		 		{ None = 0, StopCharging = 1, ReNegotiation = 2};
+enum ServiceCategoryType 				{ EVCharging = 0, Internet = 1, ContractCertificate = 2, OtherCustom = 3};
+enum PaymentOptionType 		      		{ Contract = 0, ExternalPayment = 1};
+/*enum EVSESupportedEnergyTransferType 	{ AC_single_phase_core = 0, AC_three_phase_core = 1, DC_core = 2, DC_extended = 3,
+									  DC_combo_core = 4, DC_dual = 5, AC_core1p_DC_extended = 6, AC_single_DC_core = 7,
+									  AC_single_phase_three_phase_core_DC_extended = 8, AC_core3p_DC_extended = 9};*/
+enum EnergyTransferModeType			{ AC_single_phase_core = 0, AC_three_phase_core = 1, DC_core = 2, DC_extended = 3,
+									  DC_combo_core = 4, DC_unique = 5};
+//enum identificationOptionType 			{ Contract = 0, ExternalIdentification = 1};
+enum unitSymbolType_DIN70121			{ h_DIN70121 = 0, m_DIN70121 = 1, s_DIN70121 = 2, A_DIN70121 = 3, Ah_DIN70121 = 4, V_DIN70121 = 5, VA_DIN70121 = 6, W_DIN70121 = 7, Ws_DIN70121 = 8, Wh_DIN70121 = 9};
+enum unitSymbolType_ISO15118_2014		{ h_ISO15118_2014 = 0, m_ISO15118_2014 = 1, s_ISO15118_2014 = 2, A_ISO15118_2014 = 3, V_ISO15118_2014 = 4, W_ISO15118_2014 = 5, Wh_ISO15118_2014 = 6};
+enum ProcessingType					{ Finished = 0, Ongoing = 1, Ongoing_WaitingForCustomerInteraction = 2};
+enum EVSEProcessingType_DIN70121		{ Finished_DIN70121 = 0, Ongoing_DIN70121 = 1};
+enum EVSEProcessingType_ISO15118_2014	{ Finished_ISO15118_2014 = 0, Ongoing_ISO15118_2014 = 1, Ongoing_WaitingForCustomerInteraction_ISO15118_2014=2 };
+enum DC_EVErrorCodeType 		  		{ NO_ERROR = 0, FAILED_RESSTemperatureInhibit = 1, FAILED_EVShiftPosition = 2, FAILED_ChargerConnectorLockFault = 3,
+									  FAILED_EVRESSMalfunction = 4, FAILED_ChargingCurrentdifferential = 5, FAILED_ChargingVoltageOutOfRange = 6,
+									  Reserved_A = 7, Reserved_B = 8, Reserved_C = 9, FAILED_ChargingSystemIncompatibility = 10, NoData = 11};
+enum IsolationLevelType_DIN70121 		{ Invalid_DIN70121 = 0, Valid_DIN70121 = 1, Warning_DIN70121 = 2, Fault_DIN70121 = 3};
+enum IsolationLevelType_ISO15118_2014		{ Invalid_ISO15118_2014 = 0, Valid_ISO15118_2014 = 1, Warning_ISO15118_2014 = 2, Fault_ISO15118_2014 = 3, No_IMD_ISO15118_2014	 = 4};
+enum DC_EVSEStatusCodeType			{ EVSE_NotReady = 0, EVSE_Ready = 1, EVSE_Shutdown = 2, EVSE_UtilityInterruptEvent = 3,
+						 			  EVSE_IsolationMonitoringActive = 4, EVSE_EmergencyShutdown = 5, EVSE_Malfunction = 6,
+						 			  Reserved_8 = 7, Reserved_9 = 8};
+enum ScheduleOriginType				{ EV = 0, SA = 1};
+enum ChargeProgressType_ISO15118_2014	{start_ISO15118_2014 = 0, Stop_ISO15118_2014 = 1, Renegotiate_ISO15118_2014 = 2};
+enum ChargeProgressType_ISO15118_2018	{start_ISO15118_2018 = 0, Renegotiate_ISO15118_2018 = 1, Standby_ISO15118_2018 = 2, Stop_ISO15118_2018 = 3};
+enum evOperationType					{Charge = 0, Discharge = 1, Standby = 2};
+enum mechanicalChargingDeviceStatusType {Home = 0, Moving = 1, EndPosition = 2};
+enum EV_CP_StatusType					{A = 0, B = 1, C = 2, D = 3, E = 4, F = 5};
+enum EV_Error_Status_CodeType			{ No_EV_Error = 0, EV_FAILED_EmergencyEvent = 1, EV_FAILED_Breaker = 2, EV_FAILED_RESSTemperatureInhibit = 3,
+						 			  EV_FAILED_RESS = 4, EV_FAILED_ChargingCurrentDifferential = 5, EV_FAILED_ChargingVoltageOutOfRange = 6,
+						 			  Reserved_by_ISO_1 = 7,  Reserved_by_ISO_2 = 8, Reserved_by_ISO_3 = 9, OEM1 = 10,
+						 			  OEM2 = 11,  OEM3 = 12, OEM4 = 13};
+enum IsolationStatusType				{ Invalid = 0, Safe = 1, Warning = 2, Fault = 3};
+enum ChargingSessionType				{ Terminate = 0, Pause = 1};
+enum CostKindType						{ relativePricePercentage = 0, RenewableGenerationPercentage = 1, CarbonDioxideEmission = 2};
+
+
+
+struct PhysicalValueType_DIN70121 				//The final physical value is determined by: Value * 10 ^ Multiplier [Unit]
+{
+	int									Multiplier;			//range: -3..+3
+	enum unitSymbolType_DIN70121			Unit;
+	short 								Value;
+};
+struct PhysicalValueType_ISO15118_2014			//The final physical value is determined by: Value * 10 ^ Multiplier [Unit]
+{
+	int									Multiplier;			//range: -3..+3
+	enum unitSymbolType_ISO15118_2014		Unit;
+	short 								Value;
+};
+struct PhysicalValueType_ISO15118_2018			//The final physical value is determined by: Value * 10 ^ Exponent [Unit]
+{
+	int									Exponent;		//range: -3..+3
+	short 								Value;
+};
+struct AppProtocolType
+{
+	unsigned char	ProtocolNamespace[100];
+	unsigned int	VersionNumberMajor;
+	unsigned int	VersionNumberMinor;
+	unsigned char	SchemaID;
+	unsigned char	Priority;					//range 1..20
+};
+struct ACD_SSEnergyTransferModeType
+{
+	unsigned char	EVID[20];
+};
+struct EVSEStatusType
+{
+	unsigned short				NotificationMaxDelay;	//in seconds
+	enum EVSENotificationType	EVSENotification;
+};
+struct ServiceIDListType
+{
+	unsigned short	ServiceID[10];	//refer to chapter 8.6.2.1 Table 192
+};
+struct PaymentOptionListType
+{
+	enum PaymentOptionType	PaymentOption[2];
+};
+struct ServiceTagType
+{
+	unsigned short				ServiceID;
+	unsigned char				ServiceName[32];//Optional Element
+	enum ServiceCategoryType	ServiceCategory;
+	unsigned char				ServiceScope[32];//Optional Element
+};
+struct ServiceType_DIN70121
+{
+	struct ServiceTagType		ServiceTag;
+	BOOL					FreeService;
+};
+struct ServiceType_ISO15118_2014
+{
+	unsigned short				ServiceID;
+	unsigned char				ServiceName[32];	//Optional
+	enum ServiceCategoryType	ServiceCategory;
+	unsigned char				ServiceScope[64];	//Optional
+	BOOL					FreeService;
+};
+/*struct ServiceType_ISO15118_2018
+{
+	unsigned short				ServiceID;
+	BOOL					FreeService;
+}; */
+struct SupportedEnergyTransferModeType
+{
+	enum EnergyTransferModeType	EnergyTransferMode[6];
+};
+struct ServiceChargeType
+{
+	struct ServiceType_DIN70121				Services;
+	//enum EVSESupportedEnergyTransferType		EnergyTransferType;
+	enum EnergyTransferModeType			EnergyTransferType;
+};
+
+struct ChargeServiceType
+{
+	struct ServiceType_ISO15118_2014			Services;
+	struct SupportedEnergyTransferModeType	SupportedEnergyTransferMode;
+};
+struct ServiceListType
+{
+	struct ServiceType_ISO15118_2014			Service[8];
+};
+struct IdentificationOptionListType
+{
+	enum PaymentOptionType				IdentificationOption[2];
+};
+struct ParameterType
+{
+	unsigned char							Name[32];
+	struct PhysicalValueType_ISO15118_2014		PhysicalValue_ISO15118_2014;
+	struct PhysicalValueType_ISO15118_2018		PhysicalValue_ISO15118_2018;
+};
+struct ParameterSetType
+{
+	short 				ParameterSetID;
+	struct ParameterType	Parameter[16];
+};
+struct ServiceParameterListType
+{
+	struct ParameterSetType		ParameterSet[255];
+};
+struct WPT_SDlEnergyTransferModeType
+{
+	struct ServiceParameterListType	ServiceParameterList;
+};
+struct SelectedServiceType
+{
+	unsigned short			ServiceID;
+	short					ParameterSetID;
+};
+struct SelectedServiceListType
+{
+	struct SelectedServiceType	SelectedService[16];
+};
+
+struct CertificateChainType
+{
+	unsigned char 				Id[32];				//Optional
+	unsigned char 				Certificate[800];		//check size again
+	unsigned char				SubCertificates[4][800];	//Optional, 	check size again
+};
+struct PNC_AReqIdentificationModeType
+{
+	unsigned char 			GenChallenge[16];					//DIN70121=> None,	ISO15118_2014=>None,	ISO15118_2018=>Optional
+	unsigned char 			Id[32];							//DIN70121=> None,	ISO15118_2014=>None,	ISO15118_2018=>Optional
+};
+struct AC_EVChargeParameterType
+{
+	unsigned int 								DepartureTime;		//Optional
+	struct PhysicalValueType_ISO15118_2014			EAmount;
+	struct PhysicalValueType_ISO15118_2014			EVMaxVoltage;
+	struct PhysicalValueType_ISO15118_2014			EVMaxCurrent;
+	struct PhysicalValueType_ISO15118_2014			EVMinCurrent;
+};
+struct DC_EVStatusType_DIN70121
+{
+	BOOL						EVReady;
+	BOOL						EVCabinConditioning;
+	BOOL						EVRESSConiditioning;
+	enum DC_EVErrorCodeType		EVErrorCode;
+	unsigned char 					EVRESSSOC;		/*0-100 percentage*/
+};
+struct DC_EVChargeParameterType_DIN70121
+{
+	struct DC_EVStatusType_DIN70121			DC_EVStatus;
+	struct PhysicalValueType_DIN70121		EVMaximumCurrentLimit;
+	struct PhysicalValueType_DIN70121		EVMaximumPowerLimit;			//Optional
+	struct PhysicalValueType_DIN70121		EVMaximumVoltageLimit;
+	struct PhysicalValueType_DIN70121		EVEnergyCapacity;				//Optional
+	struct PhysicalValueType_DIN70121		EVEnergyRequest;				//Optional
+	unsigned char							FullSOC;/*0-100 percentage*/	//Optional
+	unsigned char							BulkSOC;/*0-100 percentage*/	//Optional
+};
+struct DC_EVStatusType_ISO15118_2014
+{
+	BOOL						EVReady;
+	enum DC_EVErrorCodeType		EVErrorCode;
+	unsigned char 					EVRESSSOC;		/*0-100 percentage*/
+};
+struct DC_EVChargeParameterType_ISO15118_2014
+{
+	unsigned int 								DepartureTime;				//Optional
+	struct DC_EVStatusType_ISO15118_2014			DC_EVStatus;
+	struct PhysicalValueType_ISO15118_2014 			EVMaximumCurrentLimit;
+	struct PhysicalValueType_ISO15118_2014			EVMaximumPowerLimit;			//Optional
+	struct PhysicalValueType_ISO15118_2014			EVMaximumVoltageLimit;
+	struct PhysicalValueType_ISO15118_2014			EVEnergyCapacity;				//Optional
+	struct PhysicalValueType_ISO15118_2014			EVEnergyRequest;				//Optional
+	unsigned char								FullSOC;/*0-100 percentage*/		//Optional
+	unsigned char								BulkSOC;/*0-100 percentage*/	//Optional
+};
+struct Dynamic_CPDReqControlModeType
+{
+	unsigned int 								DepartureTime;
+};
+struct RelativeTimeIntervalType
+{
+	unsigned int 	duration;			//Optional
+	unsigned int	start;
+};
+struct PMaxScheduleEntryType
+{
+	struct RelativeTimeIntervalType	RelativeTimeInterval;
+	unsigned short					PMax;
+};
+struct PMaxScheduleType
+{
+	unsigned short					PMaxScheduleID;			//no this itme in ISO15118_2014
+	struct PMaxScheduleEntryType		PMaxScheduleEntry[1024];
+};
+struct CostType
+{
+	unsigned int 					amount;
+	enum CostKindType				costKind;
+	int 							amountMultiplier;		//Optional , range: -3..+3
+};
+struct ConsumptionCostType
+{
+	struct CostType						Cost[3];
+	struct PhysicalValueType_ISO15118_2014		startValue;
+};
+struct SalesTariffEntryType
+{
+	struct RelativeTimeIntervalType	RelativeTimeInterval;
+	unsigned char 					EPriceLevel;			//Optional
+	struct ConsumptionCostType		ConsumptionCost[3];	//Optional
+};
+struct SalesTariffType
+{
+	unsigned char 					Id[32];					//Optional
+	short 						SalesTariffID;
+	unsigned char 					SalesTariffDescription[32];	//Optional
+	unsigned char 					NumEPriceLevels;			//Optional
+	struct SalesTariffEntryType			SalesTariffEntry[1024];
+};
+struct SAScheduleTupleType
+{
+	short 						SAScheduleTupleID;
+	struct PMaxScheduleType			PMaxSchedule;
+	struct SalesTariffType				SalesTariff;				//Optional
+};
+struct ScheduleListType
+{
+	enum ScheduleOriginType					ScheduleOrigin;
+	struct SAScheduleTupleType					ScheduleTuple[3];
+};
+struct Scheduled_CPDReqControlModeType
+{
+	enum ProcessingType						EVProcessing;
+	unsigned int 								DepartureTime;		//Optional
+	unsigned short 							MaxSupportingPoints;
+	struct ScheduleListType						ScheduleList;			//Optional
+};
+struct AC_CPDReqEnergyTransferModeType
+{
+	struct PhysicalValueType_ISO15118_2018			EVTargetEnergyRequest;			//Optional
+	struct PhysicalValueType_ISO15118_2018			EVMaximumEnergyRequest;		//Optional
+	struct PhysicalValueType_ISO15118_2018			EVMinimumEnergyRequest;		//Optional
+	struct PhysicalValueType_ISO15118_2018			EVMaximumChargePower;
+	struct PhysicalValueType_ISO15118_2018			EVMaximumChargeCurrent;
+	struct PhysicalValueType_ISO15118_2018			EVMinimumChargeCurrent;
+	struct PhysicalValueType_ISO15118_2018			EVMaximumVoltage;
+};
+struct DC_CPDReqEnergyTransferModeType
+{
+	struct PhysicalValueType_ISO15118_2018			EVMaximumChargePower;			//Optional
+	struct PhysicalValueType_ISO15118_2018			EVMinimumChargePower;			//Optional
+	struct PhysicalValueType_ISO15118_2018			EVMaximumChargeCurrent;
+	struct PhysicalValueType_ISO15118_2018			EVMinimumChargeCurrent;
+	struct PhysicalValueType_ISO15118_2018			EVMaximumVoltage;
+	struct PhysicalValueType_ISO15118_2018			EVTargetEnergyRequest;				//Optional
+	struct PhysicalValueType_ISO15118_2018			EVMaximumEnergyRequest;			//Optional
+	struct PhysicalValueType_ISO15118_2018			EVMinimumEnergyRequest;			//Optional
+	unsigned char								TargetSOC;						//Optional
+	unsigned char								BulkSOC;							//Optional
+};
+struct BPT_AC_CPDReqEnergyTransferModeType
+{
+	struct PhysicalValueType_ISO15118_2018			EVMaximumChargePower;
+	struct PhysicalValueType_ISO15118_2018			EVMaximumDischargePower;
+	struct PhysicalValueType_ISO15118_2018			EVMinimumDischargePower;
+	struct PhysicalValueType_ISO15118_2018			EVMaximumChargeCurrent;
+	struct PhysicalValueType_ISO15118_2018			EVMaximumDischargeCurrent;
+	struct PhysicalValueType_ISO15118_2018			EVMinimumChargeCurrent;
+	struct PhysicalValueType_ISO15118_2018			EVMinimumDischargeCurrent;
+	struct PhysicalValueType_ISO15118_2018			EVTargetEnergyRequest;				//Optional
+	struct PhysicalValueType_ISO15118_2018			EVMinimumEnergyRequest;			//Optional
+	struct PhysicalValueType_ISO15118_2018			EVMaximumEnergyRequest;			//Optional
+	struct PhysicalValueType_ISO15118_2018			EVMaximumVoltage;
+};
+struct BPT_DC_CPDReqEnergyTransferModeType
+{
+	struct PhysicalValueType_ISO15118_2018			EVMaximumChargePower;
+	struct PhysicalValueType_ISO15118_2018			EVMinimumChargePower;
+	struct PhysicalValueType_ISO15118_2018			EVMaximumDischargePower;
+	struct PhysicalValueType_ISO15118_2018			EVMinimumDischargePower;
+	struct PhysicalValueType_ISO15118_2018			EVMaximumChargeCurrent;
+	struct PhysicalValueType_ISO15118_2018			EVMinimumChargeCurrent;
+	struct PhysicalValueType_ISO15118_2018			EVMaximumDischargeCurrent;
+	struct PhysicalValueType_ISO15118_2018			EVMinimumDischargeCurrent;
+	struct PhysicalValueType_ISO15118_2018			EVMaximumVoltage;
+	struct PhysicalValueType_ISO15118_2018			EVMinimumVoltage;
+	struct PhysicalValueType_ISO15118_2018			EVTargetEnergyRequest;
+	struct PhysicalValueType_ISO15118_2018			EVMaximumEnergyRequest;
+	struct PhysicalValueType_ISO15118_2018			EVMinimumEnergyRequest;
+	unsigned char								TargetSOC;					//Optional
+	unsigned char								BulkSOC;						//Optional
+};
+struct WPT_CPDReqEnergyTransferModeType
+{
+	struct PhysicalValueType_ISO15118_2018			EVMaximumPower;				//Optional
+	struct PhysicalValueType_ISO15118_2018			EVMinimumPower;				//Optional
+	struct PhysicalValueType_ISO15118_2018			EVTargetEnergyRequest;			//Optional
+	struct PhysicalValueType_ISO15118_2018			EVMaximumEnergyRequest;		//Optional
+	struct PhysicalValueType_ISO15118_2018			EVMinimumEnergyRequest;		//Optional
+};
+struct ACD_CPDReqEnergyTransferModeType
+{
+	//cannot be found in standard
+};
+struct SAScheduleListType
+{
+	struct SAScheduleTupleType		SAScheduleTuple[3];
+};
+struct DC_EVSEStatusType_DIN70121
+{
+	enum IsolationLevelType_DIN70121			EVSEIsolationStatus;			//Optional
+	enum DC_EVSEStatusCodeType			EVSEStatusCode;
+	unsigned int							NotificationMaxDelay;
+	enum EVSENotificationType				EVSENotification;
+};
+struct DC_EVSEChargeParameterType_DIN70121
+{
+	struct DC_EVSEStatusType_DIN70121		DC_EVSEStatus;
+	struct PhysicalValueType_DIN70121			EVSEMaximumCurrentLimit;
+	struct PhysicalValueType_DIN70121			EVSEMaximumPowerLimit;			//Optional
+	struct PhysicalValueType_DIN70121			EVSEMaximumVoltageLimit;
+	struct PhysicalValueType_DIN70121			EVSEMinimumCurrentLimit;
+	struct PhysicalValueType_DIN70121			EVSEMinimumVoltageLimit;
+	struct PhysicalValueType_DIN70121			EVSECurrentRegulationTolerance;		//Optional
+	struct PhysicalValueType_DIN70121			EVSEPeakCurrentRipple;
+	struct PhysicalValueType_DIN70121			EVSEEnergyToBeDelivered;			//Optional
+};
+struct AC_EVSEStatusType
+{
+	BOOL							  		RCD;
+	unsigned short 							NotificationMaxDelay;
+	enum EVSENotificationType					EVSENotification;		//need to be confirmed
+};
+struct AC_EVSEChargeParameterType
+{
+	struct AC_EVSEStatusType					AC_EVSEStatus;
+	struct PhysicalValueType_ISO15118_2014			EVSENominalVoltage;
+	struct PhysicalValueType_ISO15118_2014			EVSEMaxCurrent;
+};
+struct DC_EVSEStatusType_ISO15118_2014
+{
+	unsigned short								NotificationMaxDelay;
+	enum EVSENotificationType					EVSENotification;
+	enum IsolationLevelType_ISO15118_2014			EVSEIsolationStatus;					//Optional
+	enum DC_EVSEStatusCodeType				DC_EVSEStatusCode;
+};
+struct DC_EVSEChargeParameterType_ISO15118_2014
+{
+	struct DC_EVSEStatusType_ISO15118_2014		DC_EVSEStatus;
+	struct PhysicalValueType_ISO15118_2014			EVSEMaximumCurrentLimit;
+	struct PhysicalValueType_ISO15118_2014			EVSEMaximumPowerLimit;
+	struct PhysicalValueType_ISO15118_2014			EVSEMaximumVoltageLimit;
+	struct PhysicalValueType_ISO15118_2014			EVSEMinimumCurrentLimit;
+	struct PhysicalValueType_ISO15118_2014			EVSEMinimumVoltageLimit;
+	struct PhysicalValueType_ISO15118_2014			EVSECurrentRegulationTolerance;		//Optional
+	struct PhysicalValueType_ISO15118_2014			EVSEPeakCurrentRipple;
+	struct PhysicalValueType_ISO15118_2014			EVSEEnergyToBeDelivered;			//Optional
+};
+struct Scheduled_CPDResControlModeType
+{
+	struct ScheduleListType						ScheduleList;
+};
+struct AC_CPDResEnergyTransferModeType
+{
+	struct PhysicalValueType_ISO15118_2018			EVSEMaximumChargeCurrent[3];
+	struct PhysicalValueType_ISO15118_2018			EVSENominalVoltage;
+	struct PhysicalValueType_ISO15118_2018			EVSENominalFrequency;
+};
+struct DC_CPDResEnergyTransferModeType
+{
+	struct PhysicalValueType_ISO15118_2018			EVSEMaximumChargePower;
+	struct PhysicalValueType_ISO15118_2018			EVSEMaximumChargeCurrent;
+	struct PhysicalValueType_ISO15118_2018			EVSEMinimumChargeCurrent;
+	struct PhysicalValueType_ISO15118_2018			EVSEMaximumVoltage;
+	struct PhysicalValueType_ISO15118_2018			EVSEMinimumVoltage;
+};
+struct BPT_AC_CPDResEnergyTransferModeType
+{
+	struct PhysicalValueType_ISO15118_2018			EVSEMaximumChargeCurrent[3];
+	struct PhysicalValueType_ISO15118_2018			EVSEMaximumDischargeCurrent[3];
+	struct PhysicalValueType_ISO15118_2018			EVSENominalVoltage;
+	struct PhysicalValueType_ISO15118_2018			EVSENominalFrequency;
+};
+struct BPT_DC_CPDResEnergyTransferModeType
+{
+	struct PhysicalValueType_ISO15118_2018			EVSEMaximumChargePower;
+	struct PhysicalValueType_ISO15118_2018			EVSEMaximumDischargePower;
+	struct PhysicalValueType_ISO15118_2018			EVSEMaximumChargeCurrent;
+	struct PhysicalValueType_ISO15118_2018			EVSEMaximumDischargeCurrent;
+	struct PhysicalValueType_ISO15118_2018			EVSEMinimumChargeCurrent;
+	struct PhysicalValueType_ISO15118_2018			EVSEMinimumDischargeCurrent;
+	struct PhysicalValueType_ISO15118_2018			EVSEMaximumVoltage;
+	struct PhysicalValueType_ISO15118_2018			EVSEMinimumVoltage;
+};
+struct WPT_CPDResEnergyTransferModeType
+{
+	struct PhysicalValueType_ISO15118_2018			EVSEMaximumPower;
+	struct PhysicalValueType_ISO15118_2018			EVSEMinimumPower;
+};
+struct ACD_CPDResEnergyTransferModeType
+{
+	//not found in ISO15118_2018
+};
+struct ProfileEntryType_DIN70121
+{
+	unsigned int 				ChargingProfileEntryStart;
+	short						ChargingProfileEntryMaxPower;
+};
+struct ChargingProfileType_DIN70121
+{
+	short 							SAScheduleTupleID;
+	struct ProfileEntryType_DIN70121		ProfileEntry[24];
+};
+struct DC_EVPowerDeliveryParameterType_DIN70121
+{
+	struct DC_EVStatusType_DIN70121			DC_EVStatus;
+	BOOL								BulkChargingComplete;		//Optional
+	BOOL								ChargingComplete;
+};
+struct ProfileEntryType_ISO15118_2014
+{
+	unsigned int 								ChargingProfileEntryStart;
+	struct PhysicalValueType_ISO15118_2018			ChargingProfileEntryMaxPower;
+	unsigned char 								ChargingProfileEntryMaxNumberOfPhasesInUse;	//Optional
+};
+struct ChargingProfileType_ISO15118_2014
+{
+	struct ProfileEntryType_ISO15118_2014			ProfileEntry[24];
+};
+struct DC_EVPowerDeliveryParameterType_ISO15118_2014
+{
+	struct DC_EVStatusType_ISO15118_2014 			DC_EVStatus;
+	BOOL									BulkChargingComplete;		//Optional
+	BOOL									ChargingComplete;
+};
+struct TimeInterval
+{
+	unsigned int 								start;
+	unsigned int 								duration;				//Optional
+};
+struct PowerScheduleEntryType
+{
+	struct TimeInterval							TimeInterval;
+	struct PhysicalValueType_ISO15118_2018			Power[3];
+};
+struct EVPowerProfileType
+{
+	struct PowerScheduleEntryType				EVPowerProfileEntry[2048];
+};
+struct Scheduled_PDReqControlModeType
+{
+	unsigned char 								ScheduleTupleID;
+	struct EVPowerProfileType					EVPowerProfile;
+};
+struct BPT_Scheduled_PDReqControlModeType
+{
+	unsigned char 								ScheduleTupleID;
+	struct EVPowerProfileType					EVPowerProfile;			//Optional
+	enum evOperationType						EVOperation;
+};
+struct ListOfRootCertificateIDsType
+{
+	unsigned char 								RootCertificateID[20][40];
+};
+struct ContractSignatureEncryptedPrivateKeyType
+{
+	unsigned char 								Id[32];
+};
+struct DiffieHellmanPublickeyType
+{
+	unsigned char 								Id[32];
+};
+struct ContractCertificateEncryptedPrivateKeyType
+{
+	unsigned char 								Id[32];
+};
+struct EVTechnicalStatusType
+{
+	BOOL									EV_Status_ReadyToCharge;
+	BOOL									EV_Status_ImmobilizationRequest;		//Optional
+	BOOL									EV_Status_Immobilized;
+	struct PhysicalValueType_ISO15118_2018			EV_Status_WLAN_Strength;
+	enum EV_CP_StatusType						EV_CP_Status;
+	unsigned char								EV_Status_RESSSOC;					//0~100%
+	enum EV_Error_Status_CodeType				EV_Error_Status_Code;
+	BOOL									EVSE_Timeout;
+};
+struct MeterInfoType_ISO15118_2014
+{
+	unsigned char								MeterID[32];
+	unsigned long 								MeterReading;						//Optional
+	unsigned char								SigMeterReading[64];				//Optional
+	short 									MeterStatus;						//Optional
+	short 									TMeter;							//Optional
+};
+struct Scheduled_MRReqControlModeType
+{
+	unsigned char 								ScheduleTupleID;
+};
+struct MeterInfoType_ISO15118_2018
+{
+	unsigned char								MeterID[32];
+	unsigned long 								MeterReadingWhCharged;			//Optional
+	unsigned long 								MeterReadingWhDischarged;			//Optional
+	unsigned long 								MeterReadingVARhLeading;			//Optional
+	unsigned long 								MeterReadingVARhLagging;			//Optional
+	unsigned char								SignatureMeterReading[64];			//Optional
+	short 									MeterStatus;						//Optional
+	short 									TimeStampMeter;					//Optional
+	BOOL									ReceiptRequired;					//Optional
+};
+struct PnC_CLReqIdentificationModeType
+{
+	BOOL									MeteringReceiptRequested;
+};
+struct Dynamic_CSReqControlModeType
+{
+	struct PhysicalValueType_ISO15118_2018			EVTargetEnergyRequest;
+	struct PhysicalValueType_ISO15118_2018			EVMaximumEnergyRequest;
+	struct PhysicalValueType_ISO15118_2018			EVMinimumEnergyRequest;
+	struct PhysicalValueType_ISO15118_2018			EVMaximumChargePower;
+	struct PhysicalValueType_ISO15118_2018			EVMaximumChargeCurrent;
+	struct PhysicalValueType_ISO15118_2018			EVMinimumChargeCurrent;
+};
+struct Scheduled_CSReqControlModeType
+{
+	struct PhysicalValueType_ISO15118_2018			EVTargetEnergyRequest;				//Optional
+	struct PhysicalValueType_ISO15118_2018			EVMaximumEnergyRequest;			//Optional
+	struct PhysicalValueType_ISO15118_2018			EVMinimumEnergyRequest;			//Optional
+	BOOL									Standby;
+	struct PhysicalValueType_ISO15118_2018			EVMaximumChargePower;			//Optional
+	struct PhysicalValueType_ISO15118_2018			EVMaximumChargeCurrent;			//Optional
+	struct PhysicalValueType_ISO15118_2018			EVMinimumChargeCurrent;			//Optional
+};
+struct DisplayParametersType
+{
+	unsigned short 							CurrentRange;
+	unsigned char	 							CurrentSOC;						//0~100%
+	unsigned char	 							MinimumSOC;						//0~100%
+	struct PhysicalValueType_ISO15118_2018			RemainingTimeToMaximumSOC;
+	struct PhysicalValueType_ISO15118_2018			RemainingTimeToTargetSOC;
+	struct PhysicalValueType_ISO15118_2018			RemainingTimeToBulkSOC;
+	struct PhysicalValueType_ISO15118_2018			RemainingTimeToMinimumSOC;
+	BOOL									ChargingComplete;
+	BOOL									BulkChargingComplete;
+	BOOL									InletHot;
+};
+struct PnC_CLResIdentificationModeType
+{
+	struct MeterInfoType_ISO15118_2018			MeterInfo;
+};
+struct Dynamic_CSResControlModeType
+{
+	struct PhysicalValueType_ISO15118_2018			EVSETargetActivePower;
+};
+struct Scheduled_CDResControlModeType
+{
+	struct PhysicalValueType_ISO15118_2018			EVSEMaximumChargePower;		//Optional
+	struct PhysicalValueType_ISO15118_2018			EVSEMaximumChargeCurrent;	//Optional
+	struct PhysicalValueType_ISO15118_2018			EVSEMaximumVoltage;			//Optional
+};
+struct LFA_EVFinePositioningSetupParametersType
+{
+	unsigned char 								NumberOfSensors;
+	//NOT complete yet,  to be continue.....
+};
+
+/****SupportedAppProtocolRequest****/
+struct SupportedAppProtocolRequest_DIN70121
+{
+	struct AppProtocolType	AppProtocol[20];
+};
+struct SupportedAppProtocolRequest_ISO15118_2014
+{
+	struct AppProtocolType	AppProtocol[20];
+};
+struct SupportedAppProtocolRequest_ISO15118_2018
+{
+	struct AppProtocolType	AppProtocol[20];
+};
+/****SupportedAppProtocolResponse****/
+struct SupportedAppProtocolResponse_DIN70121
+{
+	enum ResponseCodeType_DIN70121		ResponseCode;
+	unsigned char							SchemaID;				//Optional
+};
+struct SupportedAppProtocolResponse_ISO15118_2014
+{
+	enum ResponseCodeType_ISO15118_2014	ResponseCode;
+	unsigned char							SchemaID;				//Optional
+};
+struct SupportedAppProtocolResponse_ISO15118_2018
+{
+	enum ResponseCodeType_ISO15118_2018	ResponseCode;
+	unsigned char							SchemaID;					//Optional
+};
+/****SessionSetupRequest****/
+struct SessionSetupRequest_DIN70121
+{
+	unsigned char						EVCCID[8];						//the MAC address of the EVCC in Hex
+};
+struct SessionSetupRequest_ISO15118_2014
+{
+	unsigned char						EVCCID[8];						//the MAC address of the EVCC in Hex
+};
+struct SessionSetupRequest_ISO15118_2018
+{
+	unsigned char						EVCCID[8];						//the MAC address of the EVCC in Hex
+	struct ACD_SSEnergyTransferModeType	ACD_SSEnergyTransferMode;			//For ACD mandatory, optional for rest
+};
+/****SessionSetupResponse****/
+struct SessionSetupResponse_DIN70121
+{
+	enum ResponseCodeType_DIN70121		ResponseCode;
+	unsigned char							EVSEID[40];					//DIN70121=>Max length:32,	ISO15118=>min length:7, max length:37
+	unsigned int							EVSETimeStamp;				//EPOCH format, Optional
+};
+struct SessionSetupResponse_ISO15118_2014
+{
+	enum ResponseCodeType_ISO15118_2014	ResponseCode;
+	unsigned char							EVSEID[40];					//DIN70121=>Max length:32,	ISO15118=>min length:7, max length:37
+	unsigned int							EVSETimeStamp;				//EPOCH format, Optional
+};
+struct SessionSetupResponse_ISO15118_2018
+{
+	enum ResponseCodeType_ISO15118_2018	ResponseCode;
+	unsigned char							EVSEID[40];					//DIN70121=>Max length:32,	ISO15118=>min length:7, max length:37
+	struct EVSEStatusType					EVSEStatus;					//Optional
+};
+/****ServiceDiscoveryRequest****/
+struct ServiceDiscoveryRequest_DIN70121
+{
+	unsigned char				ServiceScope[32];		//Optional
+	enum ServiceCategoryType	ServiceCategory;		//Optional
+};
+struct ServiceDiscoveryRequest_ISO15118_2014
+{
+	unsigned char				ServiceScope[32];		//Optional
+	enum ServiceCategoryType	ServiceCategory;		//Optional
+};
+struct ServiceDiscoveryRequest_ISO15118_2018
+{
+	struct ServiceIDListType		SupportedServiceIDs;	//Optional
+};
+/****ServiceDiscoveryResponse****/
+struct ServiceDiscoveryResponse_DIN70121
+{
+	enum ResponseCodeType_DIN70121		ResponseCode;
+	struct PaymentOptionListType				PaymentOptions;
+	struct ServiceChargeType				ChargeService_DIN70121;
+};
+struct ServiceDiscoveryResponse_ISO15118_2014
+{
+	enum ResponseCodeType_ISO15118_2014	ResponseCode;
+	struct PaymentOptionListType				PaymentOptions;
+	struct ChargeServiceType				ChargeService;
+	struct ServiceListType					ServiceList;					//Optional
+};
+struct ServiceDiscoveryResponse_ISO15118_2018
+{
+	enum ResponseCodeType_ISO15118_2018	ResponseCode;
+	struct EVSEStatusType					EVSEStatus;					//Optional
+	struct IdentificationOptionListType			IdentificationOptionList;
+	struct ServiceListType					EnergyTransferServiceList;
+	struct ServiceListType					VASList;						//Optional
+};
+/****ServiceDetailRequest****/
+//Only in ISO15118_2014 and ISO15118_2018
+struct ServiceDetailRequest_ISO15118_2014
+{
+	unsigned short						ServiceID;
+};
+struct ServiceDetailRequest_ISO15118_2018
+{
+	unsigned short						ServiceID;
+	struct WPT_SDlEnergyTransferModeType	WPT_SDlEnergyTransferMode;
+};
+/****ServiceDetailResponse****/
+struct ServiceDetailResponse_ISO15118_2014
+{
+	enum ResponseCodeType_ISO15118_2014	ResponseCode;
+	unsigned short							ServiceID;
+	struct ServiceParameterListType 			ServiceParameterList;
+};
+struct ServiceDetailResponse_ISO15118_2018
+{
+	enum ResponseCodeType_ISO15118_2018	ResponseCode;
+	unsigned short							ServiceID;
+	struct ServiceParameterListType 			ServiceParameterList;
+	struct EVSEStatusType					EVSEStatus;					//Optional
+};
+/****ServiceAndPaymentSelectionRequest / ServiceSelectionRequest****/
+struct ServiceAndPaymentSelectionRequest_DIN70121
+{
+	enum PaymentOptionType		SelectedPaymentOption;
+	struct SelectedServiceListType		SelectedServiceList;
+};
+struct ServiceAndPaymentSelectionRequest_ISO15118_2014
+{
+	enum PaymentOptionType		SelectedPaymentOption;
+	struct SelectedServiceListType		SelectedServiceList;
+};
+struct ServiceSelectionRequest_ISO15118_2018
+{
+	enum PaymentOptionType			SelectedPaymentOption;
+	struct SelectedServiceType			SelectedEnergyTransferService;
+	struct SelectedServiceListType			SelectedVASList;
+	enum ProcessingType				EVProcessing;
+};
+/****ServiceAndPaymentSelectionResponse / ServiceSelectionResponse****/
+struct ServiceAndPaymentSelectionResponse_DIN70121
+{
+	enum ResponseCodeType_DIN70121		ResponseCode;
+};
+struct ServiceAndPaymentSelectionResponse_ISO15118_2014
+{
+	enum ResponseCodeType_ISO15118_2014	ResponseCode;
+};
+struct ServiceSelectionResponse_ISO15118_2018
+{
+	enum ResponseCodeType_ISO15118_2018	ResponseCode;
+	struct EVSEStatusType					EVSEStatus;					//Optional
+};
+/****PaymentDetailsRequest / IdentificationDetailsRequest****/
+struct PaymentDetailsRequest_ISO15118_2014
+{
+	unsigned char 					eMAID[16];
+	struct CertificateChainType		ContractSignatureCertChain;
+};
+struct IdentificationDetailsRequest_ISO15118_2018
+{
+	struct CertificateChainType		ContractSignatureCertChain;
+};
+/****PaymentDetailsResponse  / IdentificationDetailsResponse ****/
+struct PaymentDetailsResponse_ISO15118_2014
+{
+	enum ResponseCodeType_ISO15118_2014	ResponseCode;
+	unsigned char 							GenChallenge[16];
+	long 								EVSETimeStamp;
+};
+struct IdentificationDetailsResponse_ISO15118_2018
+{
+	enum ResponseCodeType_ISO15118_2018	ResponseCode;
+	struct EVSEStatusType					EVSEStatus;						//Optional
+	unsigned char 							GenChallenge[16];
+	enum ProcessingType					EVSEProcessing;
+};
+/****ContractAuthenticationRequest / AuthorizationRequest****/
+struct ContractAuthenticationRequest_DIN70121
+{
+	//None
+};
+struct AuthorizationRequest_ISO15118_2014
+{
+	unsigned char 			GenChallenge[16];					//Optional
+	unsigned char 			Id[32];							//Optional
+};
+struct AuthorizationRequest_ISO15118_2018
+{
+	struct PNC_AReqIdentificationModeType		PNC_AReqIdentificationMode;	//Optional
+};
+/****ContractAuthenticationResponse  / AuthorizationResponse****/
+struct ContractAuthenticationResponse_DIN70121
+{
+	enum ResponseCodeType_DIN70121		ResponseCode;
+	enum EVSEProcessingType_DIN70121		EVSEProcessing;
+};
+struct AuthorizationResponse_ISO15118_2014
+{
+	enum ResponseCodeType_ISO15118_2014	ResponseCode;
+	enum EVSEProcessingType_ISO15118_2014	EVSEProcessing;
+};
+struct AuthorizationResponse_ISO15118_2018
+{
+	enum ResponseCodeType_ISO15118_2018	ResponseCode;
+	enum ProcessingType					EVSEProcessing;
+	struct EVSEStatusType					EVSEStatus;						//Optional
+};
+/****ChargeParameterDiscoveryRequest****/
+struct ChargeParameterDiscoveryRequest_DIN70121
+{
+	enum EnergyTransferModeType					EVRequestedEnergyTransferType;
+	struct DC_EVChargeParameterType_DIN70121		DC_EVChargeParameter;
+};
+struct ChargeParameterDiscoveryRequest_ISO15118_2014
+{
+	unsigned short										MaxEntriesSAScheduleTuple;			//Optional
+	enum EnergyTransferModeType						RequestedEnergyTransferMode;
+	struct AC_EVChargeParameterType					AC_EVChargeParameter;
+	struct DC_EVChargeParameterType_ISO15118_2014		DC_EVChargeParameter;
+};
+struct ChargeParameterDiscoveryRequest_ISO15118_2018
+{
+	struct Dynamic_CPDReqControlModeType			Dynamic_CPDReqControlMode;
+	struct Scheduled_CPDReqControlModeType			Scheduled_CPDReqControlMode;
+	struct AC_CPDReqEnergyTransferModeType			AC_CPDReqEnergyTransferMode;
+	struct DC_CPDReqEnergyTransferModeType			DC_CPDReqEnergyTransferMode;
+	struct BPT_AC_CPDReqEnergyTransferModeType		BPT_AC_CPDReqEnergyTransferMode;
+	struct BPT_DC_CPDReqEnergyTransferModeType		BPT_DC_CPDReqEnergyTransferMode;
+	struct WPT_CPDReqEnergyTransferModeType			WPT_CPDReqEnergyTransferMode;
+	struct ACD_CPDReqEnergyTransferModeType			ACD_CPDReqEnergyTransferMode;
+};
+/****ChargeParameterDiscoveryResponse****/
+struct ChargeParameterDiscoveryResponse_DIN70121
+{
+	enum ResponseCodeType_DIN70121					ResponseCode;
+	enum EVSEProcessingType_DIN70121					EVSEProcessing;
+	struct SAScheduleListType 							SAScheduleList;
+	struct DC_EVSEChargeParameterType_DIN70121			DC_EVSEChargeParameter;
+};
+struct ChargeParameterDiscoveryResponse_ISO15118_2014
+{
+	enum EVSEProcessingType_ISO15118_2014				EVSEProcessing;
+	enum ResponseCodeType_ISO15118_2014				ResponseCode;
+	struct SAScheduleListType 							SAScheduleList;
+	struct AC_EVSEChargeParameterType					AC_EVSEChargeParameter;
+	struct DC_EVSEChargeParameterType_ISO15118_2014		DC_EVSEChargeParameter;
+};
+struct ChargeParameterDiscoveryResponse_ISO15118_2018
+{
+	enum ResponseCodeType_ISO15118_2018				ResponseCode;
+	struct EVSEStatusType								EVSEStatus;					//Optional
+	enum ProcessingType								EVSEProcessing;
+	struct Scheduled_CPDResControlModeType				Scheduled_CPDResControlMode;	//Optional
+	struct AC_CPDResEnergyTransferModeType				AC_CPDResEnergyTransferMode;
+	struct DC_CPDResEnergyTransferModeType				DC_CPDResEnergyTransferMode;
+	struct BPT_AC_CPDResEnergyTransferModeType			BPT_AC_CPDResEnergyTransferMode;
+	struct BPT_DC_CPDResEnergyTransferModeType			BPT_DC_CPDResEnergyTransferMode;
+	struct WPT_CPDResEnergyTransferModeType				WPT_CPDResEnergyTransferMode;
+	struct ACD_CPDResEnergyTransferModeType				ACD_CPDResEnergyTransferMode;
+};
+/****PowerDeliveryRequest****/
+struct PowerDeliveryRequest_DIN70121
+{
+	BOOL											ReadyToChargeState;
+	struct ChargingProfileType_DIN70121					ChargingProfile;
+	struct DC_EVPowerDeliveryParameterType_DIN70121		DC_EVPowerDeliveryParameter;
+};
+struct PowerDeliveryRequest_ISO15118_2014
+{
+	enum ChargeProgressType_ISO15118_2014				ChargeProgress;
+	short 											SAScheduleTupleID;
+	struct ChargingProfileType_ISO15118_2014 				ChargingProfile;
+	struct DC_EVPowerDeliveryParameterType_ISO15118_2014	DC_EVPowerDeliveryParameter;
+};
+struct PowerDeliveryRequest_ISO15118_2018
+{
+	enum ChargeProgressType_ISO15118_2018				ChargeProgress;
+	struct Scheduled_PDReqControlModeType				Scheduled_PDReqControlMode;
+	struct BPT_Scheduled_PDReqControlModeType			BPT_Scheduled_PDReqControlMode;
+};
+/****PowerDeliveryResponse****/
+struct PowerDeliveryResponse_DIN70121
+{
+	enum ResponseCodeType_DIN70121				ResponseCode;
+	struct DC_EVSEStatusType_DIN70121				DC_EVSEStatus;
+};
+struct PowerDeliveryResponse_ISO15118_2014
+{
+	enum ResponseCodeType_ISO15118_2014				ResponseCode;
+	struct AC_EVSEStatusType							AC_EVSEStatus;
+	struct DC_EVSEStatusType_ISO15118_2014				DC_EVSEStatus;
+};
+struct PowerDeliveryResponse_ISO15118_2018
+{
+	enum ResponseCodeType_ISO15118_2018				ResponseCode;
+	struct EVSEStatusType								EVSEStatus;			//Optional
+};
+/****CertificateUpdateRequest****/
+struct CertificateUpdateRequest_ISO15118_2014
+{
+	unsigned char 										Id[32];
+	struct CertificateChainType							ContractSignatureCertChain;
+	unsigned char 										eMAID[16];
+	struct ListOfRootCertificateIDsType						ListOfRootCertificateIDs;
+};
+/****CertificateUpdateResponse****/
+struct CertificateUpdateResponse_ISO15118_2014
+{
+	enum ResponseCodeType_ISO15118_2014				ResponseCode;
+	struct CertificateChainType							SAProvisioningCertificateChain;
+	struct CertificateChainType							ContractSignatureCertChain;
+	struct ContractSignatureEncryptedPrivateKeyType			ContractSignatureEncryptedPrivateKey;
+	struct DiffieHellmanPublickeyType						DHpublickey;
+	unsigned char 										eMAID[16];
+	short 											RetryCounter;							//Optional
+};
+/****CertificateInstallationRequest****/
+struct CertificateInstallationRequest_ISO15118_2014
+{
+	unsigned char 										Id[32];
+	unsigned char 										OEMProvisioningCert[800];
+	struct ListOfRootCertificateIDsType						ListOfRootCertificateIDs;
+};
+struct CertificateInstallationRequest_ISO15118_2018
+{
+	unsigned char 										Id[32];
+	struct CertificateChainType							OEMProvisioningCertChain;
+	struct ListOfRootCertificateIDsType						ListOfRootCertificateIDs;
+	unsigned short										MaxSupportedCerts;
+};
+/****CertificateInstallationResponse****/
+struct CertificateInstallationResponse_ISO15118_2014
+{
+	enum ResponseCodeType_ISO15118_2014				ResponseCode;
+	struct CertificateChainType							SAProvisioningCertificateChain;
+	struct CertificateChainType							ContractSignatureCertChain;
+	struct ContractSignatureEncryptedPrivateKeyType			ContractSignatureEncryptedPrivateKey;
+	struct DiffieHellmanPublickeyType						DHpublickey;
+	unsigned char 										eMAID[16];
+};
+struct CertificateInstallationResponse_ISO15118_2018
+{
+	enum ResponseCodeType_ISO15118_2018				ResponseCode;
+	struct EVSEStatusType								EVSEStatus;					//Optional
+	struct CertificateChainType							SAProvisioningCertificateChain;
+	struct CertificateChainType							ContractCertificateChain;
+	struct ContractCertificateEncryptedPrivateKeyType		ContractEncryptedPrivateKey;
+	struct DiffieHellmanPublickeyType						DHpublickey;
+	enum ProcessingType								EVSEProcessing;
+	unsigned short 									RemainingContractCertificateChains;
+};
+/****SystemStatusRequest****/
+struct SystemStatusRequest_ISO15118_2018
+{
+	enum mechanicalChargingDeviceStatusType			EVMechanicalChargingDeviceStatus;
+	struct EVTechnicalStatusType							EVTechnicalStatus;
+	unsigned char 										EV_OEMStatus[800];					//Optional
+};
+/****SystemStatusResponse****/
+struct SystemStatusResponse_ISO15118_2018
+{
+	enum ResponseCodeType_ISO15118_2018				ResponseCode;
+	enum mechanicalChargingDeviceStatusType			EVSEMechanicalChargingDeviceStatus;
+	BOOL											EVSE_ReadyToCharge;
+	enum IsolationStatusType							EVSE_IsolationStatus;
+	BOOL											EVSE_Disabled;
+	BOOL											EVSE_UtilityInterruptEvent;
+	BOOL											EVSE_EmergencyShutdown;
+	BOOL											EVSE_Malfunction;
+	BOOL											EV_InChargePosition;
+	BOOL											EV_AssociationStatus;
+};
+/****SessionStopRequest****/
+struct SessionStopRequest_DIN70121
+{
+	//No member in standard
+};
+struct SessionStopRequest_ISO15118_2014
+{
+	enum ChargingSessionType							ChargingSession;
+};
+struct SessionStopRequest_ISO15118_2018
+{
+	enum ChargingSessionType							ChargingSession;
+};
+/****SessionStopResponse****/
+struct SessionStopResponse_DIN70121
+{
+	enum ResponseCodeType_DIN70121					ResponseCode;
+};
+struct SessionStopResponse_ISO15118_2014
+{
+	enum ResponseCodeType_ISO15118_2014				ResponseCode;
+};
+struct SessionStopResponse_ISO15118_2018
+{
+	enum ResponseCodeType_ISO15118_2018				ResponseCode;
+	struct EVSEStatusType								EVSEStatus;					//Optional
+};
+/****MeteringReceiptRequest****/
+struct MeteringReceiptRequest_ISO15118_2014
+{
+	unsigned char 										Id[32];						//Optional
+	unsigned char 										SessionID[8];
+	short 											SAScheduleTupleID;				//Optional
+	struct MeterInfoType_ISO15118_2014					MeterInfo;
+};
+struct MeteringReceiptRequest_ISO15118_2018
+{
+	unsigned char 										Id[32];						//Optional
+	unsigned char 										SessionID[8];
+	struct Scheduled_MRReqControlModeType				Schedule_MRReqControlMode;
+	struct MeterInfoType_ISO15118_2018					MeterInfo;
+};
+/****MeteringReceiptResponse****/
+struct MeteringReceiptResponse_ISO15118_2014
+{
+	enum ResponseCodeType_ISO15118_2014				ResponseCode;
+	struct AC_EVSEStatusType							AC_EVSEStatus;
+	struct DC_EVSEStatusType_ISO15118_2014				DC_EVSEStatus;
+};
+struct MeteringReceiptResponse_ISO15118_2018
+{
+	enum ResponseCodeType_ISO15118_2018				ResponseCode;
+	struct EVSEStatusType								EVSEStatus;					//Optional
+};
+/****ChargingStatusRequest (AC Only)****/
+struct ChargingStatusRequest_ISO15118_2014
+{
+	//No member in standard
+};
+struct ChargingStatusRequest_ISO15118_2018
+{
+	struct PnC_CLReqIdentificationModeType				PnC_CLReqIdentificationMode;
+	struct Dynamic_CSReqControlModeType				Dynamic_CSReqControlMode;
+	struct Scheduled_CSReqControlModeType				Scheduled_CSReqControlMode;
+	struct DisplayParametersType							DisplayParameters;
+};
+/****ChargingStatusResponse (AC Only)****/
+struct ChargingStatusResponse_ISO15118_2014
+{
+	enum ResponseCodeType_ISO15118_2014				ResponseCode;
+	unsigned char										EVSEID[40];			//DIN70121=>Max length:32,	ISO15118=>min length:7, max length:37
+	short 											SAScheduleTupleID;
+	struct PhysicalValueType_ISO15118_2014					EVSEMaxCurrent;		//Optional
+	struct MeterInfoType_ISO15118_2014					MeterInfo;			//Optional
+	BOOL											ReceiptRequired;		//Optional
+	struct AC_EVSEStatusType							AC_EVSEStatus;
+};
+struct ChargingStatusResponse_ISO15118_2018
+{
+	enum ResponseCodeType_ISO15118_2018				ResponseCode;
+	struct EVSEStatusType								EVSEStatus;					//Optional
+	unsigned char										EVSEID[40];					//DIN70121=>Max length:32,	ISO15118=>min length:7, max length:37
+	struct PhysicalValueType_ISO15118_2018					EVSETargetFrequency;			//Optional
+	struct PnC_CLResIdentificationModeType				PnC_CLResIdentificationMode;
+	struct Dynamic_CSResControlModeType					Dynamic_CSResControlMode;
+	struct Scheduled_CSReqControlModeType				Scheduled_CSReqControlMode;
+};
+/****CableCheckRequest (DC Only)****/
+struct CableCheckRequest_DIN70121
+{
+	struct DC_EVStatusType_DIN70121						DC_EVStatus;
+};
+struct CableCheckRequest_ISO15118_2014
+{
+	struct DC_EVStatusType_ISO15118_2014 					DC_EVStatus;
+};
+struct CableCheckRequest_ISO15118_2018
+{
+	//No member in standard
+};
+/****CableCheckResponse (DC Only)****/
+struct CableCheckResponse_DIN70121
+{
+	enum ResponseCodeType_DIN70121					ResponseCode;
+	struct DC_EVSEStatusType_DIN70121					DC_EVSEStatus;
+	enum EVSEProcessingType_DIN70121					EVSEProcessing;
+};
+struct CableCheckResponse_ISO15118_2014
+{
+	enum ResponseCodeType_ISO15118_2014				ResponseCode;
+	struct DC_EVSEStatusType_ISO15118_2014				DC_EVSEStatus;
+	enum EVSEProcessingType_ISO15118_2014				EVSEProcessing;
+};
+struct CableCheckResponse_ISO15118_2018
+{
+	enum ResponseCodeType_ISO15118_2018				ResponseCode;
+	struct EVSEStatusType								EVSEStatus;					//Optional
+	enum ProcessingType								EVSEProcessing;
+};
+/****PreChargeRequest (DC Only)****/
+struct PreChargeRequest_DIN70121
+{
+	struct DC_EVStatusType_DIN70121						DC_EVStatus;
+	struct PhysicalValueType_DIN70121						EVTargetVoltage;
+	struct PhysicalValueType_DIN70121						EVTargetCurrent;
+};
+struct PreChargeRequest_ISO15118_2014
+{
+	struct DC_EVStatusType_ISO15118_2014 					DC_EVStatus;
+	struct PhysicalValueType_ISO15118_2014					EVTargetVoltage;
+	struct PhysicalValueType_ISO15118_2014					EVTargetCurrent;
+};
+struct PreChargeRequest_ISO15118_2018
+{
+	struct PhysicalValueType_ISO15118_2018					EVTargetVoltage;
+	struct PhysicalValueType_ISO15118_2018					EVTargetCurrent;
+};
+/****PreChargeResponse (DC Only)****/
+struct PreChargeResponse_DIN70121
+{
+	enum ResponseCodeType_DIN70121					ResponseCode;
+	struct DC_EVSEStatusType_DIN70121					DC_EVSEStatus;
+	struct PhysicalValueType_DIN70121						EVSEPresentVoltage;
+};
+struct PreChargeResponse_ISO15118_2014
+{
+	enum ResponseCodeType_ISO15118_2014				ResponseCode;
+	struct DC_EVSEStatusType_ISO15118_2014				DC_EVSEStatus;
+	struct PhysicalValueType_ISO15118_2014					EVSEPresentVoltage;
+};
+struct PreChargeResponse_ISO15118_2018
+{
+	enum ResponseCodeType_ISO15118_2018				ResponseCode;
+	struct EVSEStatusType								EVSEStatus;					//Optional
+	struct PhysicalValueType_ISO15118_2018					EVSEPresentVoltage;
+};
+/****CurrentDemandRequest (DC Only)****/
+struct CurrentDemandRequest_DIN70121
+{
+	struct DC_EVStatusType_DIN70121						DC_EVStatus;
+	struct PhysicalValueType_DIN70121						EVTargetCurrent;
+	struct PhysicalValueType_DIN70121						EVMaximumVoltageLimit;		//Optional
+	struct PhysicalValueType_DIN70121						EVMaximumCurrentLimit;		//Optional
+	struct PhysicalValueType_DIN70121						EVMaximumPowerLimit;			//Optional
+	BOOL											BulkChargingComplete;			//Optional
+	BOOL											ChargingComplete;
+	struct PhysicalValueType_DIN70121						RemainingTimeToFullSoC;		//Optional
+	struct PhysicalValueType_DIN70121						RemainingTimeToBulkSoC;		//Optional
+	struct PhysicalValueType_DIN70121						EVTargetVoltage;
+};
+struct CurrentDemandRequest_ISO15118_2014
+{
+	struct DC_EVStatusType_ISO15118_2014 					DC_EVStatus;
+	struct PhysicalValueType_ISO15118_2014					EVTargetCurrent;
+	struct PhysicalValueType_ISO15118_2014					EVMaximumVoltageLimit;		//Optional
+	struct PhysicalValueType_ISO15118_2014					EVMaximumCurrentLimit;		//Optional
+	struct PhysicalValueType_ISO15118_2014					EVMaximumPowerLimit;			//Optional
+	BOOL											BulkChargingComplete;			//Optional
+	BOOL											ChargingComplete;
+	struct PhysicalValueType_ISO15118_2014					RemainingTimeToFullSoC;		//Optional
+	struct PhysicalValueType_ISO15118_2014					RemainingTimeToBulkSoC;		//Optional
+	struct PhysicalValueType_ISO15118_2014					EVTargetVoltage;
+};
+struct CurrentDemandRequest_ISO15118_2018
+{
+	struct DisplayParametersType							DisplayParameters;				//Optional
+	struct PnC_CLReqIdentificationModeType				PnC_CLReqIdentificationMode;
+	struct Dynamic_CSReqControlModeType				Dynamic_CDReqControlMode;
+	struct Scheduled_CSReqControlModeType				Scheduled_CDReqControlMode;
+};
+/****CurrentDemandResponse (DC Only)****/
+struct CurrentDemandResponse_DIN70121
+{
+	enum ResponseCodeType_DIN70121					ResponseCode;
+	struct DC_EVSEStatusType_DIN70121					DC_EVSEStatus;
+	struct PhysicalValueType_DIN70121						EVSEPresentVoltage;
+	struct PhysicalValueType_DIN70121						EVSEPresentCurrent;
+	BOOL											EVSECurrentLimitAchieved;
+	BOOL											EVSEVoltageLimitAchieved;
+	BOOL											EVSEPowerLimitAchieved;
+	struct PhysicalValueType_DIN70121						EVSEMaximumVoltageLimit;		//Optional
+	struct PhysicalValueType_DIN70121						EVSEMaximumCurrentLimit;		//Optional
+	struct PhysicalValueType_DIN70121						EVSEMaximumPowerLimit;		//Optional
+};
+struct CurrentDemandResponse_ISO15118_2014
+{
+	enum ResponseCodeType_ISO15118_2014				ResponseCode;
+	struct DC_EVSEStatusType_ISO15118_2014				DC_EVSEStatus;
+	struct PhysicalValueType_ISO15118_2014					EVSEPresentVoltage;
+	struct PhysicalValueType_ISO15118_2014					EVSEPresentCurrent;
+	BOOL											EVSECurrentLimitAchieved;
+	BOOL											EVSEVoltageLimitAchieved;
+	BOOL											EVSEPowerLimitAchieved;
+	struct PhysicalValueType_ISO15118_2014					EVSEMaximumVoltageLimit;		//Optional
+	struct PhysicalValueType_ISO15118_2014					EVSEMaximumCurrentLimit;		//Optional
+	struct PhysicalValueType_ISO15118_2014					EVSEMaximumPowerLimit;		//Optional
+	unsigned char										EVSEID[40];			//DIN70121=>Max length:32,	ISO15118=>min length:7, max length:37
+	short 											SAScheduleTupleID;
+	struct MeterInfoType_ISO15118_2014					MeterInfo;			//Optional
+	BOOL											ReceiptRequired;		//Optional
+};
+struct CurrentDemandResponse_ISO15118_2018
+{
+	enum ResponseCodeType_ISO15118_2018				ResponseCode;
+	struct EVSEStatusType								EVSEStatus;						//Optional
+	struct PhysicalValueType_ISO15118_2018					EVSEPresentVoltage;
+	struct PhysicalValueType_ISO15118_2018					EVSEPresentCurrent;
+	BOOL											EVSECurrentLimitAchieved;
+	BOOL											EVSEVoltageLimitAchieved;
+	BOOL											EVSEPowerLimitAchieved;
+	struct PhysicalValueType_ISO15118_2018					EVSEMaximumChargeVoltage;		//Optional
+	struct PhysicalValueType_ISO15118_2018					EVSEMaximumChargeCurrent;		//Optional
+	struct PhysicalValueType_ISO15118_2018					EVSEMaximumChargePower;			//Optional
+	unsigned char										EVSEID[40];						//DIN70121=>Max length:32,	ISO15118=>min length:7, max length:37
+	struct PnC_CLResIdentificationModeType				PnC_CLResIdentificationMode;
+	struct Scheduled_CDResControlModeType				Scheduled_CDResControlMode;
+};
+/****WeldingDetectionRequest (DC Only)*****/
+struct WeldingDetectionRequest_DIN70121
+{
+	struct DC_EVStatusType_DIN70121						DC_EVStatus;
+};
+struct WeldingDetectionRequest_ISO15118_2014
+{
+	struct DC_EVStatusType_ISO15118_2014 					DC_EVStatus;
+};
+struct WeldingDetectionRequest_ISO15118_2018
+{
+	//No member in Standard
+};
+/****WeldingDetectionResponse (DC Only)****/
+struct WeldingDetectionResponse_DIN70121
+{
+	enum ResponseCodeType_DIN70121					ResponseCode;
+	struct DC_EVSEStatusType_DIN70121					DC_EVSEStatus;
+	struct PhysicalValueType_DIN70121						EVSEPresentVoltage;
+};
+struct WeldingDetectionResponse_ISO15118_2014
+{
+	enum ResponseCodeType_ISO15118_2014				ResponseCode;
+	struct DC_EVSEStatusType_ISO15118_2014				DC_EVSEStatus;
+	struct PhysicalValueType_ISO15118_2014					EVSEPresentVoltage;
+};
+struct WeldingDetectionResponse_ISO15118_2018
+{
+	enum ResponseCodeType_ISO15118_2018				ResponseCode;
+	struct EVSEStatusType								EVSEStatus;						//Optional
+	struct PhysicalValueType_ISO15118_2018					EVSEPresentVoltage;
+};
+/****FinePositioningSetupRequest (WPT Only)****/
+struct FinePositioningSetupRequest_ISO15118_2018
+{
+	struct LFA_EVFinePositioningSetupParametersType			LFA_EVFinePositioningSetupParameters;	//Optional
+};
+/****FinePositioningSetupResponse (WPT Only)****/
+struct FinePositioningSetupResponse_ISO15118_2018
+{
+	//NOT complete yet,  to be continue.....
+};
+
+
+struct V2GMessageType_DIN70121
+{
+	unsigned char 	SelfTest_Comp;
+	unsigned char	version[16];
+	unsigned char											PresentMsgFlowStatus;
+														/* 0: Idle(wait B2 state), 1: CM_SLAC_PARM.REQ, 2: CM_SLAC_PARM.CNF, 3: CM_START_ATTEN_CHAR.IND
+														    4: CM_MNBC_SOUND.IND, 5: CM_ATTEN_CHAR.IND, 6: CM_ATTEN_CHAR.RSP, 7: CM_VALIDATE.REQ
+														    8: CM_VALIDATE.CNF, 9: CM_SLAC_MATCH.REQ, 10: CM_SLAC_MATCH.CNF, 11: CM_AMP_MAP.REQ
+														    12: CM_AMP_MAP.CNF, 13: SLACC/SDP/TCP connection,
+														    16: SupportedAppProtocolRequest, 17: SupportedAppProtocolResponse, 18: SessionSetupRequest
+														    19: SessionSetupResponse, 20: ServiceDiscoveryRequest, 21: ServiceDiscoveryResponse
+														    22: ServiceDetailRequest, 23: ServiceDetailResponse
+														    24: ServiceAndPaymentSelectionRequest/ServiceSelectionRequest, 25: ServiceAndPaymentSelectionResponse/ServiceSelectionResponse
+														    26: PaymentDetailsRequest/IdentificationDetailsRequest;, 27: PaymentDetailsResponse/IdentificationDetailsResponse,
+														     28: AuthorizationRequest, 29: AuthorizationResponse,
+														    30: CertificateUpdateRequest, 31: CertificateUpdateResponse, 32:CertificateInstallationRequest, 33: CertificateInstallationResponse
+														    34: ChargeParameterDiscoveryRequest, 35: ChargeParameterDiscoveryResponse
+														    36: CableCheckRequest, 37: CableCheckResponse, 38: PreChargeRequest, 39: PreChargeResponse
+														    40: PowerDeliveryRequest start, 41: PowerDeliveryResponse start, 42: ChargingStatusRequest, 43: ChargingStatusResponse
+														    44: CurrentDemandRequest, 45: CurrentDemandResponse, 46: MeteringReceiptRequest, 47: MeteringReceiptResponse
+														    48: PowerDeliveryRequest end, 49: PowerDeliveryRequest end, 50: WeldingDetectionRequest, 51: WeldingDetectionResponse,
+														    52: SessionStopRequest, 53: SessionStopResponse
+														   253: Performance Timeout, 254: Sequence Timeout, 255: Fault
+														*/
+	struct SupportedAppProtocolRequest_DIN70121 			SupportedAppProtocolRequest;
+	struct SupportedAppProtocolResponse_DIN70121 			SupportedAppProtocolResponse;
+	struct SessionSetupRequest_DIN70121  					SessionSetupRequest;
+	struct SessionSetupResponse_DIN70121   				SessionSetupResponse;
+	struct ServiceDiscoveryRequest_DIN70121    				ServiceDiscoveryRequest;
+	struct ServiceDiscoveryResponse_DIN70121    				ServiceDiscoveryResponse;
+	struct ServiceAndPaymentSelectionRequest_DIN70121		ServiceAndPaymentSelectionRequest;
+	struct ServiceAndPaymentSelectionResponse_DIN70121		ServiceAndPaymentSelectionResponse;
+	struct ContractAuthenticationRequest_DIN70121			ContractAuthenticationRequest;
+	struct ContractAuthenticationResponse_DIN70121	 		ContractAuthenticationResponse;
+	struct ChargeParameterDiscoveryRequest_DIN70121		ChargeParameterDiscoveryRequest;
+	struct ChargeParameterDiscoveryResponse_DIN70121		ChargeParameterDiscoveryResponse;
+	struct CableCheckRequest_DIN70121					CableCheckRequest;
+	struct CableCheckResponse_DIN70121					CableCheckResponse;
+	struct PreChargeRequest_DIN70121					PreChargeRequest;
+	struct PreChargeResponse_DIN70121 					PreChargeResponse;
+	struct PowerDeliveryRequest_DIN70121					PowerDeliveryRequest;
+	struct PowerDeliveryResponse_DIN70121	   				PowerDeliveryResponse;
+	struct CurrentDemandRequest_DIN70121 				CurrentDemandRequest;
+	struct CurrentDemandResponse_DIN70121				CurrentDemandResponse;
+	struct WeldingDetectionRequest_DIN70121 				WeldingDetectionRequest;
+	struct WeldingDetectionResponse_DIN70121  			WeldingDetectionResponse;
+	struct SessionStopRequest_DIN70121					SessionStopRequest;
+	struct SessionStopResponse_DIN70121	    				SessionStopResponse;
+};
+
+struct V2GMessageType_ISO15118_2014
+{
+	unsigned char											PresentMsgFlowStatus;
+														/* 0: Idle(wait B2 state), 1: CM_SLAC_PARM.REQ, 2: CM_SLAC_PARM.CNF, 3: CM_START_ATTEN_CHAR.IND
+														    4: CM_MNBC_SOUND.IND, 5: CM_ATTEN_CHAR.IND, 6: CM_ATTEN_CHAR.RSP, 7: CM_VALIDATE.REQ
+														    8: CM_VALIDATE.CNF, 9: CM_SLAC_MATCH.REQ, 10: CM_SLAC_MATCH.CNF, 11: CM_AMP_MAP.REQ
+														    12: CM_AMP_MAP.CNF, 13: SLACC/SDP/TCP connection,
+														    16: SupportedAppProtocolRequest, 17: SupportedAppProtocolResponse, 18: SessionSetupRequest
+														    19: SessionSetupResponse, 20: ServiceDiscoveryRequest, 21: ServiceDiscoveryResponse
+														    22: ServiceDetailRequest, 23: ServiceDetailResponse
+														    24: ServiceAndPaymentSelectionRequest/ServiceSelectionRequest, 25: ServiceAndPaymentSelectionResponse/ServiceSelectionResponse
+														    26: PaymentDetailsRequest/IdentificationDetailsRequest;, 27: PaymentDetailsResponse/IdentificationDetailsResponse,
+														     28: AuthorizationRequest, 29: AuthorizationResponse,
+														    30: CertificateUpdateRequest, 31: CertificateUpdateResponse, 32:CertificateInstallationRequest, 33: CertificateInstallationResponse
+														    34: ChargeParameterDiscoveryRequest, 35: ChargeParameterDiscoveryResponse
+														    36: CableCheckRequest, 37: CableCheckResponse, 38: PreChargeRequest, 39: PreChargeResponse
+														    40: PowerDeliveryRequest start, 41: PowerDeliveryResponse start, 42: ChargingStatusRequest, 43: ChargingStatusResponse
+														    44: CurrentDemandRequest, 45: CurrentDemandResponse, 46: MeteringReceiptRequest, 47: MeteringReceiptResponse
+														    48: PowerDeliveryRequest end, 49: PowerDeliveryRequest end, 50: WeldingDetectionRequest, 51: WeldingDetectionResponse,
+														    52: SessionStopRequest, 53: SessionStopResponse
+														   253: Performance Timeout, 254: Sequence Timeout, 255: Fault
+														*/
+	struct SupportedAppProtocolRequest_ISO15118_2014 			SupportedAppProtocolRequest;
+	struct SupportedAppProtocolResponse_ISO15118_2014 			SupportedAppProtocolResponse;
+	struct SessionSetupRequest_ISO15118_2014  					SessionSetupRequest;
+	struct SessionSetupResponse_ISO15118_2014   				SessionSetupResponse;
+	struct ServiceDiscoveryRequest_ISO15118_2014    				ServiceDiscoveryRequest;
+	struct ServiceDiscoveryResponse_ISO15118_2014    				ServiceDiscoveryResponse;
+	struct ServiceDetailRequest_ISO15118_2014 					ServiceDetailRequest;
+	struct ServiceDetailResponse_ISO15118_2014					ServiceDetailResponse;
+	struct ServiceAndPaymentSelectionRequest_ISO15118_2014 		ServiceAndPaymentSelectionRequest;
+	struct ServiceAndPaymentSelectionResponse_ISO15118_2014  	ServiceAndPaymentSelectionResponse;
+	struct PaymentDetailsRequest_ISO15118_2014 				PaymentDetailsRequest;
+	struct PaymentDetailsResponse_ISO15118_2014 				PaymentDetailsResponse;
+	struct AuthorizationRequest_ISO15118_2014					AuthorizationRequest;
+	struct AuthorizationResponse_ISO15118_2014					AuthorizationResponse;
+	struct CertificateUpdateRequest_ISO15118_2014				CertificateUpdateRequest;
+	struct CertificateUpdateResponse_ISO15118_2014				CertificateUpdateResponse;
+	struct CertificateInstallationRequest_ISO15118_2014			CertificateInstallationRequest;
+	struct CertificateInstallationResponse_ISO15118_2014			CertificateInstallationResponse;
+	struct ChargeParameterDiscoveryRequest_ISO15118_2014 		ChargeParameterDiscoveryRequest;
+	struct ChargeParameterDiscoveryResponse_ISO15118_2014  		ChargeParameterDiscoveryResponse;
+	struct CableCheckRequest_ISO15118_2014 					CableCheckRequest;
+	struct CableCheckResponse_ISO15118_2014  					CableCheckResponse;
+	struct PreChargeRequest_ISO15118_2014 					PreChargeRequest;
+	struct PreChargeResponse_ISO15118_2014					PreChargeResponse;
+	struct PowerDeliveryRequest_ISO15118_2014					PowerDeliveryRequest;
+	struct PowerDeliveryResponse_ISO15118_2014					PowerDeliveryResponse;
+	struct ChargingStatusRequest_ISO15118_2014	  				ChargingStatusRequest;
+	struct ChargingStatusResponse_ISO15118_2014				ChargingStatusResponse;
+	struct CurrentDemandRequest_ISO15118_2014	 			CurrentDemandRequest;
+	struct CurrentDemandResponse_ISO15118_2014				CurrentDemandResponse;
+	struct MeteringReceiptRequest_ISO15118_2014				MeteringReceiptRequest;
+	struct MeteringReceiptResponse_ISO15118_2014				MeteringReceiptResponse;
+	struct WeldingDetectionRequest_ISO15118_2014 				WeldingDetectionRequest;
+	struct WeldingDetectionResponse_ISO15118_2014  			WeldingDetectionResponse;
+	struct SessionStopRequest_ISO15118_2014 					SessionStopRequest;
+	struct SessionStopResponse_ISO15118_2014					SessionStopResponse;
+};
+struct V2GMessageType_ISO15118_2018
+{
+	unsigned char										PresentMsgFlowStatus;
+													/* 0: Idle(wait B2 state), 1: CM_SLAC_PARM.REQ, 2: CM_SLAC_PARM.CNF, 3: CM_START_ATTEN_CHAR.IND
+													    4: CM_MNBC_SOUND.IND, 5: CM_ATTEN_CHAR.IND, 6: CM_ATTEN_CHAR.RSP, 7: CM_VALIDATE.REQ
+													    8: CM_VALIDATE.CNF, 9: CM_SLAC_MATCH.REQ, 10: CM_SLAC_MATCH.CNF, 11: CM_AMP_MAP.REQ
+													    12: CM_AMP_MAP.CNF, 13: SLACC/SDP/TCP connection,
+													    16: SupportedAppProtocolRequest, 17: SupportedAppProtocolResponse, 18: SessionSetupRequest
+													    19: SessionSetupResponse, 20: ServiceDiscoveryRequest, 21: ServiceDiscoveryResponse
+													    22: ServiceDetailRequest, 23: ServiceDetailResponse
+													    24: ServiceAndPaymentSelectionRequest/ServiceSelectionRequest, 25: ServiceAndPaymentSelectionResponse/ServiceSelectionResponse
+													    26: PaymentDetailsRequest/IdentificationDetailsRequest;, 27: PaymentDetailsResponse/IdentificationDetailsResponse,
+													     28: AuthorizationRequest, 29: AuthorizationResponse,
+													    30: CertificateUpdateRequest, 31: CertificateUpdateResponse, 32:CertificateInstallationRequest, 33: CertificateInstallationResponse
+													    34: ChargeParameterDiscoveryRequest, 35: ChargeParameterDiscoveryResponse
+													    36: CableCheckRequest, 37: CableCheckResponse, 38: PreChargeRequest, 39: PreChargeResponse
+													    40: PowerDeliveryRequest start, 41: PowerDeliveryResponse start, 42: ChargingStatusRequest, 43: ChargingStatusResponse
+													    44: CurrentDemandRequest, 45: CurrentDemandResponse, 46: MeteringReceiptRequest, 47: MeteringReceiptResponse
+													    48: PowerDeliveryRequest end, 49: PowerDeliveryRequest end, 50: WeldingDetectionRequest, 51: WeldingDetectionResponse,
+													    52: SessionStopRequest, 53: SessionStopResponse
+													   253: Performance Timeout, 254: Sequence Timeout, 255: Fault
+													*/
+	struct SupportedAppProtocolRequest_ISO15118_2018			SupportedAppProtocolRequest;
+	struct SupportedAppProtocolResponse_ISO15118_2018 			SupportedAppProtocolResponse;
+	struct SessionSetupRequest_ISO15118_2018					SessionSetupRequest;
+	struct SessionSetupResponse_ISO15118_2018  					SessionSetupResponse;
+	struct ServiceDiscoveryRequest_ISO15118_2018    				ServiceDiscoveryRequest;
+	struct ServiceDiscoveryResponse_ISO15118_2018    				ServiceDiscoveryResponse;
+	struct ServiceDetailRequest_ISO15118_2018 					ServiceDetailRequest;
+	struct ServiceDetailResponse_ISO15118_2018					ServiceDetailResponse;
+	struct ServiceSelectionRequest_ISO15118_2018				ServiceSelectionRequest;
+	struct ServiceSelectionResponse_ISO15118_2018				ServiceSelectionResponse;
+	struct IdentificationDetailsRequest_ISO15118_2018  			IdentificationDetailsRequest;
+	struct IdentificationDetailsResponse_ISO15118_2018  			IdentificationDetailsResponse;
+	struct AuthorizationRequest_ISO15118_2018  					AuthorizationRequest;
+	struct AuthorizationResponse_ISO15118_2018					AuthorizationResponse;
+	struct CertificateInstallationRequest_ISO15118_2018			CertificateInstallationRequest;
+	struct CertificateInstallationResponse_ISO15118_2018			CertificateInstallationResponse;
+	struct ChargeParameterDiscoveryRequest_ISO15118_2018 		ChargeParameterDiscoveryRequest;
+	struct ChargeParameterDiscoveryResponse_ISO15118_2018  		ChargeParameterDiscoveryResponse;
+	struct CableCheckRequest_ISO15118_2018 					CableCheckRequest;
+	struct CableCheckResponse_ISO15118_2018 					CableCheckResponse;
+	struct PreChargeRequest_ISO15118_2018 					PreChargeRequest;
+	struct PreChargeResponse_ISO15118_2018					PreChargeResponse;
+	struct PowerDeliveryRequest_ISO15118_2018					PowerDeliveryRequest;
+	struct PowerDeliveryResponse_ISO15118_2018					PowerDeliveryResponse;
+	struct ChargingStatusRequest_ISO15118_2018	  				ChargingStatusRequest;
+	struct ChargingStatusResponse_ISO15118_2018				ChargingStatusResponse;
+	struct CurrentDemandRequest_ISO15118_2018	 			CurrentDemandRequest;
+	struct CurrentDemandResponse_ISO15118_2018				CurrentDemandResponse;
+	struct MeteringReceiptRequest_ISO15118_2018				MeteringReceiptRequest;
+	struct MeteringReceiptResponse_ISO15118_2018				MeteringReceiptResponse;
+	struct WeldingDetectionRequest_ISO15118_2018 				WeldingDetectionRequest;
+	struct WeldingDetectionResponse_ISO15118_2018  			WeldingDetectionResponse;
+	struct SessionStopRequest_ISO15118_2018 					SessionStopRequest;
+	struct SessionStopResponse_ISO15118_2018					SessionStopResponse;
+};
+
+struct CcsData
+{
+	unsigned char 							CommProtocol;	// 1: V2GMessage_DIN70121, 2:V2GMessage_ISO15118_2014, 3:V2GMessage_ISO15118_2018
+	struct V2GMessageType_DIN70121			V2GMessage_DIN70121[CCS_QUANTITY];
+	struct V2GMessageType_ISO15118_2014  		V2GMessage_ISO15118_2014[CCS_QUANTITY];
+	struct V2GMessageType_ISO15118_2018  		V2GMessage_ISO15118_2018[CCS_QUANTITY];
+};
+/**************************************************************************************/
+/***************STM32F407 Communication Share memory**************************/
+/**************************************************************************************/
+struct PrimaryMcuData
+{
+	unsigned char 	SelfTest_Comp;
+	unsigned char	version[16];									//STM32F407 firmware version
+	unsigned int 	InputVoltage;									//value comes from external meter
+	unsigned int 	InputCurrent;									//value comes from external meter
+	union
+	{
+		unsigned char OutputDrvValue[1];
+		struct
+		{
+			//OutputDrvValue[0]
+		    unsigned char AcContactorDrv:1;						//bit 0,	H: ON, 		L:OFF
+			unsigned char Button1LedDrv:1;						//bit 1,	H: ON, 		L:OFF
+			unsigned char Button2LedDrv:1; 						//bit 2,	H: ON, 		L:OFF
+			unsigned char SystemLed1Drv:1;						//bit 3,	H: ON, 		L:OFF
+			unsigned char SystemLed2Drv:1;						//bit 4,	H: ON, 		L:OFF
+			unsigned char SystemLed3Drv:1;						//bit 5,	H: ON, 		L:OFF
+			unsigned char SystemLed4Drv:1;						//bit 6,	H: ON, 		L:OFF
+			unsigned char:1;									//bit 7 reserved
+		}bits;
+	}OutputDrv;
+	union
+	{
+		unsigned char InputDetValue[2];
+		struct
+		{
+			//InputDetValue[0]
+		    unsigned char AcContactorDetec:1;					//bit 0,	H: ON, 		L:OFF
+			unsigned char AcMainBreakerDetec:1;					//bit 1,	H: ON, 		L:OFF
+			unsigned char SpdDetec:1; 							//bit 2,	H: ON, 		L:OFF
+			unsigned char DoorOpen:1;							//bit 3,	H: Open,		L:Close
+			unsigned char Gfd1:1;								//bit 4,	H: Trigger,		L:Normal
+			unsigned char Gfd2:1;								//bit 5,	H: Trigger,		L:Normal
+			unsigned char Button1:1;								//bit 6 ,	H: Push, 		L:Release
+			unsigned char Button2:1;								//bit 7,	H: Push, 		L:Release
+			//InputDetValue[1]
+			unsigned char EmergencyButton:1;						//bit 0,	H: Push, 		L:Release
+			unsigned char :7;									//bit 1~7,	Reserved
+		}bits;
+	}InputDet;
+};
+/**************************************************************************************/
+/*************Fan power module Communication Share memory******************/
+/**************************************************************************************/
+struct FanModuleData
+{
+	unsigned char  SelfTest_Comp;
+	unsigned char	version[16];			//fan power module firmware version
+	unsigned short	PresentFan1Speed;		//RPM
+	unsigned short	PresentFan2Speed;		//RPM
+	unsigned short	PresentFan3Speed;		//RPM
+	unsigned short	PresentFan4Speed;		//RPM
+	unsigned short	SetFan1Speed;			//RPM
+	unsigned short	SetFan2Speed;			//RPM
+	unsigned short	SetFan3Speed;			//RPM
+	unsigned short	SetFan4Speed;			//RPM
+	unsigned short	TestFanSpeed;			//RPM
+	unsigned char	DiffOfAirPressure;		//pa
+	unsigned char	UpdateFW;			//1:do update
+};
+
+/**************************************************************************************/
+/***********Relay control module Communication Share memory******************/
+/**************************************************************************************/
+struct RelayModuleData
+{
+	unsigned char 	SelfTest_Comp;
+	unsigned char	version[16];				//fan power module firmware version
+	unsigned short	InputL1Volt;				//XXXXX.x volt
+	unsigned short	InputL2Volt;				//XXXXX.x volt
+	unsigned short	InputL3Volt;				//XXXXX.x volt
+	unsigned short	Gun1FuseOutputVolt;		//XXXXX.x volt
+	unsigned short	Gun2FuseOutputVolt;		//XXXXX.x volt
+	unsigned short	Gun1RelayOutputVolt;		//XXXXX.x volt
+	unsigned short	Gun2RelayOutputVolt;		//XXXXX.x volt
+	unsigned short	Gun1OutputCurrent;		//XXXXX.x amp
+	unsigned short	Gun2OutputCurrent;		//XXXXX.x amp
+	unsigned char	UpdateFW;				//1:do update
+};
+
+/**************************************************************************************/
+/************************OCPP Share memory***************************************/
+/**************************************************************************************/
+struct StructIdTagInfo
+{
+	unsigned char 	ExpiryDate[28];
+	unsigned char 	ParentIdTag[20];
+	unsigned char 	Status[16];		//Accepted, Blocked, Expired, Invalid, ConcurrentTx
+};
+struct StructLocalAuthorizationList
+{
+	unsigned char 			IdTag[20];
+	struct StructIdTagInfo	IdTagInfo;
+};
+struct StructSampledValue
+{
+	unsigned char 			Value[128];
+	unsigned char 			Context[30];//Interruption.Begin, Interruption.End, Sample.Clock, Sample.Periodic, Transaction.Begin, Transaction.End, Trigger, Other
+	unsigned char 			Format[16];//Raw,SignedData
+	unsigned char 			Measurand[40];/*	"Energy.Active.Export.Register",
+										"Energy.Active.Import.Register",
+										"Energy.Reactive.Export.Register",
+										"Energy.Reactive.Import.Register",
+										"Energy.Active.Export.Interval",
+										"Energy.Active.Import.Interval",
+										"Energy.Reactive.Export.Interval",
+										"Energy.Reactive.Import.Interval",
+										"Power.Active.Export",
+										"Power.Active.Import",
+										"Power.Offered",
+										"Power.Reactive.Export",
+										"Power.Reactive.Import",
+										"Power.Factor",
+										"Current.Import",
+										"Current.Export",
+										"Current.Offered",
+										"Voltage",
+										"Frequency",
+										"Temperature",
+										"SoC",
+										"RPM"
+										*/
+
+	unsigned char 			Phase[10];	/*		"L1",
+										"L2",
+										"L3",
+										"N",
+										"L1-N",
+										"L2-N",
+										"L3-N",
+										"L1-L2",
+										"L2-L3",
+										"L3-L1"
+								*/
+
+	unsigned char 			Location[10];		//Cable,EV,Inlet,Outlet,Body
+	unsigned char 			Unit[20];	/*		"Wh",
+										"kWh",
+										"varh",
+										"kvarh",
+										"W",
+										"kW",
+										"VA",
+										"kVA",
+										"var",
+										"kvar",
+										"A",
+										"V",
+										"K",
+										"Celcius",
+										"Fahrenheit",
+										"Percent"
+								*/
+};
+struct StructMeterValue
+{
+	unsigned char 				TimeStamp[28];
+	struct StructSampledValue	SampledValue[10];
+};
+struct StructConfigurationKeyItems
+{
+	unsigned char 	Item[50];
+};
+struct StructConfigurationKey
+{
+	unsigned char 	Key[50];
+	unsigned char 	ReadOnly[8];	//boolean
+	unsigned char 	Value[500];
+};
+struct StructChargingSchedulePeriod
+{
+	int		StartPeriod;
+	float 	Limit;//0.1;
+	int		NumberPhases;
+};
+struct StructChargingSchedule
+{
+	int											Duration;
+	unsigned char 								StartSchedule[28];
+	unsigned char 								ChargingRateUnit[4];		//A, W
+	struct StructChargingSchedulePeriod			ChargingSchedulePeriod[10];
+	float 										MinChargingRate;			//0.1;
+};
+struct StructChargingProfile
+{
+	int								ChargingProfileId;
+	int								TransactionId;
+	int								StackLevel;
+	unsigned char 					ChargingProfilePurpose[24];	//ChargePointMaxProfile, TxDefaultProfile, TxProfile
+	unsigned char 					ChargingProfileKind[12];		//Absolute, Recurring, Relative
+	unsigned char 					RecurrencyKind[8];			//Daily, Weekly
+	unsigned char 					ValidFrom[28];
+	unsigned char 					ValidTo[28];
+	struct StructChargingSchedule	ChargingSchedule;
+};
+
+struct StructBootNotification
+{
+	unsigned char CpVendor[20];				//chargePointVendor				//mandatory
+	unsigned char CpModel[20];				//chargePointModel				//mandatory
+	unsigned char CpSN[25];					//chargePointSerialNumber
+	unsigned char CbSN[25];					//chargeBoxSerialNumber
+	unsigned char CpFwVersion[50];			//firmwareVersion
+	unsigned char CpIccid[22];				//iccid
+	unsigned char CpImsi[20];				//imsi
+	unsigned char CpMeterType[25];			//meterType
+	unsigned char CpMeterSerialNumber[25];	//meterSerialNumber
+	unsigned char ResponseStatus[16];			//Accepted, Pending, Rejected
+	unsigned char ResponseCurrentTime[28];	//currentTime					//mandatory
+	int 			ResponseHeartbeatInterval;	//interval						//mandatory
+
+};
+struct StructHeartbeat
+{
+	unsigned char 				ResponseCurrentTime[28];
+};
+struct StructAuthorize
+{
+	unsigned char 				IdTag[20];
+	struct StructIdTagInfo		ResponseIdTagInfo;
+};
+struct StructStartTransaction
+{
+	int 						ConnectorId;
+	unsigned char 				IdTag[20];
+	int 						MeterStart;
+	int 						ReservationId;
+	unsigned char 				Timestamp[28];
+	struct StructIdTagInfo		ResponseIdTagInfo;
+	int 						ResponseTransactionId;
+};
+struct StructStopTransaction
+{
+	unsigned char 				IdTag[20];
+	int 						MeterStop;
+	unsigned char 				Timestamp[28];
+	int 						TransactionId;
+	unsigned char 				StopReason[20];				/*	"EmergencyStop",
+															"EVDisconnected",
+															"HardReset",
+															"Local",
+															"Other",
+															"PowerLoss",
+															"Reboot",
+															"Remote",
+															"SoftReset",
+															"UnlockCommand",
+															"DeAuthorized"
+														*/
+	struct StructMeterValue		TransactionData[1];
+	struct StructIdTagInfo		ResponseIdTagInfo;
+};
+
+struct StructStatusNotification
+{
+	int 			ConnectorId;
+	unsigned char 	ErrorCode[25];				/*	"ConnectorLockFailure",
+								                "EVCommunicationError",
+								                "GroundFailure",
+								                "HighTemperature",
+								                "InternalError",
+								                "LocalListConflict",
+								                "NoError",
+								                "OtherError",
+								                "OverCurrentFailure",
+								                "PowerMeterFailure",
+								                "PowerSwitchFailure",
+								                "ReaderFailure",
+								                "ResetFailure",
+								                "UnderVoltage",
+								                "OverVoltage",
+								                "WeakSignal"
+								            */
+
+	unsigned char 	Info[50];
+	unsigned char 	Status[20];					/*	"Available",
+								                "Preparing",
+								                "Charging",
+								                "SuspendedEVSE",
+								                "SuspendedEV",
+								                "Finishing",
+								                "Reserved",
+								                "Unavailable",
+								                "Faulted"
+								            */
+
+	unsigned char 	Timestamp[28];
+	unsigned char 	VendorId[256];
+	unsigned char 	VendorErrorCode[50];
+};
+
+
+struct StructCancelReservation
+{
+	int 				ReservationId;
+	unsigned char 		ResponseStatus[16];		//Accepted, Rejected
+	unsigned char 		guid[37];
+};
+struct StructChangeAvailability
+{
+	int 				ConnectorId;
+	unsigned char 		Type[16];					//Inoperative, Operative
+	unsigned char 		ResponseStatus[16];		//Accepted, Rejected, Scheduled
+	unsigned char 		guid[37];
+};
+struct StructChangeConfiguration
+{
+	unsigned char Key[50];
+	unsigned char Value[500];
+	unsigned char ResponseStatus[16];		//Accepted, Rejected, RebootRequired, NotSupported
+};
+struct StructClearCache
+{
+	unsigned char ResponseStatus[16];		//Accepted, Rejected
+};
+struct StructClearChargingProfile
+{
+	int			 			Id;
+	int						ConnectorId;
+	unsigned char 			ChargingProfilePurpose[24];	//ChargePointMaxProfile, TxDefaultProfile, TxProfile
+	int			 			StackLevel;
+	unsigned char 			ResponseStatus[16];			//Accepted, Unknown
+};
+struct StructDataTransfer
+{
+	unsigned char VendorId[256];
+	unsigned char MessageId[52];
+	unsigned char Data[512];
+	unsigned char ResponseStatus[18];	//Accepted, Rejected,UnknownMessageId,UnknownVendorId
+	unsigned char ResponseData[256];
+};
+struct StructDiagnosticsStatusNotification
+{
+	unsigned char Status[16];		//Idle,Uploaded,UploadFailed,Uploading
+};
+struct StructFirmwareStatusNotification
+{
+	unsigned char Status[20];			//Downloaded,DownloadFailed,Downloading,Idle,InstallationFailed,Installing,Installed
+};
+struct StructGetCompositeSchedule
+{
+	int 							ConnectorId;
+	int 							Duration;
+	unsigned char					ChargingRateUnit[4];		//A,W
+	unsigned char 					ResponseStatus[12];			//Accepted,Rejected
+	int 							ResponseConnectorId;
+	unsigned char					ResponseScheduleStart[28];
+	struct StructChargingSchedule	ResponseChargingSchedule;
+};
+struct StructGetConfiguration
+{
+	struct StructConfigurationKeyItems 			*Key;
+	struct StructConfigurationKey			 	*ResponseConfigurationKey;
+	struct StructConfigurationKeyItems 			*ResponseUnknownKey;
+
+};
+struct StructGetDiagnostics
+{
+	unsigned char 			Location[256];
+	int 					Retries;
+	int						RetryInterval;
+	unsigned char 			StartTime[28];
+	unsigned char 			StopTime[28];
+	unsigned char 			ResponseFileName[256];
+};
+struct StructGetLocalListVersion
+{
+	int ResponseListVersion;
+};
+struct StructMeterValues
+{
+	int					 			ConnectorId;
+	int 							TransactionId;
+	struct StructMeterValue			MeterValue[0];
+};
+struct StructRemoteStartTransaction
+{
+	int								ConnectorId;
+	unsigned char 					IdTag[20];
+	struct StructChargingProfile	ChargingProfile;
+	unsigned char 					ResponseStatus[10];	//Accepted,	Rejected
+	unsigned char 					guid[37];
+};
+struct StructRemoteStopTransaction
+{
+	int 				TransactionId;
+	unsigned char 		ResponseStatus[10];	//Accepted,	Rejected
+};
+struct StructReserveNow
+{
+	int			 		ConnectorId;
+	unsigned char 		ExpiryDate[28];
+	unsigned char 		IdTag[20];
+	unsigned char 		ParentIdTag[20];
+	int					ReservationId;
+	unsigned char 		ResponseStatus[12];		//Accepted, Faulted, Occupied, Rejected, Unavailable
+	unsigned char 		guid[37];   			//OCPP Server request message uuid
+};
+struct StructReset
+{
+	unsigned char		Type[8];			//Hard,	Soft
+	unsigned char 		ResponseStatus[10];	//Accepted,	Rejected
+	unsigned char 		guid[37];   		//OCPP Server request message uuid
+};
+struct StructSendLocalList
+{
+	int										ListVersion;
+	unsigned char 							UpdateType[16];	//Differential,	Full
+	struct StructLocalAuthorizationList		*LocalAuthorizationList;
+	unsigned char 							ResponseStatus[16];	//Accepted,	Failed, NotSupported, VersionMismatch
+};
+struct StructSetChargingProfile
+{
+	int 								ConnectorId;
+	struct StructChargingProfile		ChargingProfile;
+	unsigned char				 		ResponseStatus[16];	//Accepted,	Rejected, NotSupported
+};
+struct StructTriggerMessage
+{
+	unsigned char 		RequestedMessage[32];	/*
+											"BootNotification",
+											"DiagnosticsStatusNotification",
+											"FirmwareStatusNotification",
+											"Heartbeat",
+											"MeterValues",
+											"StatusNotification"
+										*/
+	int					ConnectorId;
+	unsigned char 		ResponseStatus[16];	//Accepted,	Rejected, NotImplemented
+};
+struct StructUnlockConnector
+{
+	int					ConnectorId;
+	unsigned char 		ResponseStatus[16];	//Unlocked,	UnlockFailed, NotSupported
+	unsigned char 		guid[37];   		//OCPP Server request message uuid
+};
+struct StructUpdateFirmware
+{
+	unsigned char 		Location[256];
+	int					Retries;
+	unsigned char 		RetrieveDate[28];
+	int 				RetryInterval;
+};
+
+struct OCPP16ConfigurationItem
+{
+	unsigned char 		ItemName[64];
+	unsigned char 		ItemAccessibility;//0:RO, 1:RW
+	unsigned char 		ItemData[128];
+};
+
+struct OCPP16ConfigurationTable
+{
+	//please refer to OCPP 1.6 chapter 9
+	struct OCPP16ConfigurationItem 			CoreProfile[34];
+	struct OCPP16ConfigurationItem 			LocalAuthListManagementProfile[3];
+	struct OCPP16ConfigurationItem 			ReservationProfile[1];
+	struct OCPP16ConfigurationItem 			SmartChargingProfile[5];
+};
+
+struct OCPP16Data
+{
+		unsigned char 							OcppServerURL[512];		//http: non-secure OCPP 1.5-S, https: secure OCPP 1.5-S, ws: non-secure OCPP 1.6-J, wss: secure OCPP 1.6-J"
+		unsigned char 							ChargeBoxId[128];
+		unsigned char 							OcppConnStatus;			//0: disconnected, 1: connected
+		unsigned int 							Timeout_Secs;
+		unsigned short 							Ping_Pong_Interval;
+		union
+		{
+			//Operations Initiated by Charge Point
+			unsigned char CpMsgValue[CHAdeMO_QUANTITY + CCS_QUANTITY + GB_QUANTITY + AC_QUANTITY];
+			struct
+			{
+				//CpMsgValue[0]
+				unsigned char DataTransferReq:1;	//bit 0,
+				unsigned char DataTransferConf:1;	//bit 1,
+				unsigned char StartTransactionReq:1; //bit 2,
+				unsigned char StartTransactionConf:1;	//bit 3,
+				unsigned char StopTransactionReq:1;	//bit 4,
+				unsigned char StopTransactionConf:1;	//bit 5,
+				unsigned char :2;	//bit 6,7 , reserved
+			} bits[CHAdeMO_QUANTITY + CCS_QUANTITY + GB_QUANTITY + AC_QUANTITY];
+		}CpMsg;
+
+		union
+		{
+			//Operations Initiated by Sequence Point
+			unsigned char SpMsgValue[1];
+			struct
+			{
+				//SpMsgValue[0]
+				unsigned char BootNotificationReq :1;	//bit 0,
+				unsigned char BootNotificationConf :1;	//bit 1,
+				unsigned char AuthorizeReq :1; //bit 2,
+				unsigned char AuthorizeConf :1;	//bit 3,
+				unsigned char DiagnosticsStatusNotificationReq :1;	//bit 4,
+				unsigned char DiagnosticsStatusNotificationConf :1;	//bit 5,
+				unsigned char FirmwareStatusNotificationReq :1; //bit 6,
+				unsigned char FirmwareStatusNotificationConf :1; //bit 7,
+			} bits;
+		} SpMsg;
+
+		union
+		{
+			//Operations Initiated by Central System
+			unsigned char CsMsgValue[3 * (CHAdeMO_QUANTITY + CCS_QUANTITY + GB_QUANTITY + AC_QUANTITY)];
+			struct
+			{
+				//CsMsgValue[0]
+				unsigned char CancelReservationReq :1;	//bit 0,
+				unsigned char CancelReservationConf :1;	//bit 1,
+				unsigned char ChangeAvailabilityReq :1; //bit 2,
+				unsigned char ChangeAvailabilityConf :1;	//bit 3,
+				unsigned char ReserveNowReq :1;	//bit 4,
+				unsigned char ReserveNowConf :1;	//bit 5,
+				unsigned char SetChargingProfileReq :1;	//bit 6,
+				unsigned char SetChargingProfileConf :1;	//bit 7,
+				//CsMsgValue[1]
+				unsigned char TriggerMessageReq :1;	//bit 0,
+				unsigned char TriggerMessageConf :1;	//bit 1,
+				unsigned char UnlockConnectorReq :1; //bit 2,
+				unsigned char UnlockConnectorConf :1;	//bit 3,
+				unsigned char RemoteStartTransactionReq :1;	//bit 4,
+				unsigned char RemoteStartTransactionConf :1; //bit 5,
+				unsigned char RemoteStopTransactionReq :1;	//bit 6,
+				unsigned char RemoteStopTransactionConf :1;	//bit 7,
+				//CsMsgValue[2]
+				unsigned char ClearChargingProfileReq :1;	//bit 0,
+				unsigned char ClearChargingProfileConf :1;	//bit 1,
+				unsigned char DataTransferReq :1; //bit 2,
+				unsigned char DataTransferConf :1;	//bit 3,
+				unsigned char GetCompositeScheduleReq :1;	//bit 4,
+				unsigned char GetCompositeScheduleConf :1;	//bit 5,
+				unsigned char :2;	//bit 6,7
+			} bits[CHAdeMO_QUANTITY + CCS_QUANTITY + GB_QUANTITY + AC_QUANTITY];
+		}CsMsg;
+
+		union
+		{
+			//Operations Initiated by Main System
+			unsigned char MsMsgValue[2];
+			struct
+			{
+				//CsMsgValue[0]
+				unsigned char ChangeConfigurationReq :1;	//bit 0,
+				unsigned char ChangeConfigurationConf :1;	//bit 1,
+				unsigned char ClearCacheReq :1;	//bit 2,
+				unsigned char ClearCacheConf :1;	//bit 3,
+				unsigned char GetConfigurationReq :1;	//bit 4,
+				unsigned char GetConfigurationConf :1;	//bit 5,
+				unsigned char UpdateFirmwareReq :1;	//bit 6,
+				unsigned char UpdateFirmwareConf :1;	//bit 7,
+				//CsMsgValue[1]
+				unsigned char GetDiagnosticsReq :1;	//bit 0,
+				unsigned char GetDiagnosticsConf :1;	//bit 1,
+				unsigned char GetLocalListVersionReq :1; //bit 2,
+				unsigned char GetLocalListVersionConf :1;	//bit 3,
+				unsigned char ResetReq :1; //bit 4,
+				unsigned char ResetConf :1;	//bit 5,
+				unsigned char SendLocalListReq :1;	//bit 6,
+				unsigned char SendLocalListConf :1;	//bit 7,
+			} bits;
+		} MsMsg;
+
+		union
+		{
+			//Operations triggered by CSU
+			unsigned char CSUMsgValue[CHAdeMO_QUANTITY + CCS_QUANTITY + GB_QUANTITY + AC_QUANTITY];
+			struct
+			{
+				//CSUMsgValue[0]
+				unsigned char ChargingProfileReq:1;	//bit 0,
+				unsigned char ChargingProfileConf:1;	//bit 0,
+				unsigned char :6;	//bit 1,2,3,4,5,6,7 , reserved
+			} bits[CHAdeMO_QUANTITY + CCS_QUANTITY + GB_QUANTITY + AC_QUANTITY];
+		}CSUMsg;
+
+		struct StructBootNotification 				BootNotification;
+		struct StructHeartbeat					Heartbeat;
+		struct StructAuthorize		 			Authorize;
+		struct StructStartTransaction				StartTransaction[CHAdeMO_QUANTITY+ CCS_QUANTITY + GB_QUANTITY + AC_QUANTITY];
+		struct StructStopTransaction				StopTransaction[CHAdeMO_QUANTITY+ CCS_QUANTITY + GB_QUANTITY + AC_QUANTITY];
+		struct StructStatusNotification				StatusNotification[CHAdeMO_QUANTITY+ CCS_QUANTITY + GB_QUANTITY + AC_QUANTITY];
+		struct StructCancelReservation			CancelReservation[CHAdeMO_QUANTITY+ CCS_QUANTITY + GB_QUANTITY + AC_QUANTITY];
+		struct StructChangeAvailability			ChangeAvailability[CHAdeMO_QUANTITY+ CCS_QUANTITY + GB_QUANTITY + AC_QUANTITY];
+		struct StructChangeConfiguration			ChangeConfiguration;
+		struct StructClearCache					ClearCache;
+		struct StructClearChargingProfile			ClearChargingProfile[CHAdeMO_QUANTITY+ CCS_QUANTITY + GB_QUANTITY + AC_QUANTITY];
+		struct StructDataTransfer					DataTransfer[CHAdeMO_QUANTITY+ CCS_QUANTITY + GB_QUANTITY + AC_QUANTITY];
+		struct StructDiagnosticsStatusNotification	DiagnosticsStatusNotification;
+		struct StructFirmwareStatusNotification		FirmwareStatusNotification;
+		struct StructGetCompositeSchedule		GetCompositeSchedule[CHAdeMO_QUANTITY+ CCS_QUANTITY + GB_QUANTITY + AC_QUANTITY];
+		struct StructGetConfiguration				GetConfiguration;
+		struct StructGetDiagnostics				GetDiagnostics;
+		struct StructGetLocalListVersion			GetLocalListVersion;
+		struct StructMeterValues					MeterValues[CHAdeMO_QUANTITY+ CCS_QUANTITY + GB_QUANTITY + AC_QUANTITY];
+		struct StructRemoteStartTransaction		RemoteStartTransaction[CHAdeMO_QUANTITY+ CCS_QUANTITY + GB_QUANTITY + AC_QUANTITY];
+		struct StructRemoteStopTransaction		RemoteStopTransaction[CHAdeMO_QUANTITY+ CCS_QUANTITY + GB_QUANTITY + AC_QUANTITY];
+		struct StructReserveNow					ReserveNow[CHAdeMO_QUANTITY+ CCS_QUANTITY + GB_QUANTITY + AC_QUANTITY];
+		struct StructReset						Reset;
+		struct StructSendLocalList				SendLocalList;
+		struct StructSetChargingProfile			SetChargingProfile[CHAdeMO_QUANTITY+ CCS_QUANTITY + GB_QUANTITY + AC_QUANTITY];
+		struct StructTriggerMessage				TriggerMessage[CHAdeMO_QUANTITY+ CCS_QUANTITY + GB_QUANTITY + AC_QUANTITY];
+		struct StructUnlockConnector			UnlockConnector[CHAdeMO_QUANTITY+ CCS_QUANTITY + GB_QUANTITY + AC_QUANTITY];
+		struct StructUpdateFirmware				UpdateFirmware;
+		struct OCPP16ConfigurationTable			ConfigurationTable;
+		struct StructChargingProfile		    SmartChargingProfile[CHAdeMO_QUANTITY+ CCS_QUANTITY + GB_QUANTITY + AC_QUANTITY];		
+};
+
+#endif // DEFINE_H_
+
+
+
+
+
+