/*=========================================================================== Combined Charging System (CCS): SECC define.h initiated by Vern, Joseph (since 2019/07/19) =============================================================================*/ #ifndef DEFINE_H_ #define DEFINE_H_ #include "version.h" #include #include #include #include //#include "CsuCommAC.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 0x01800000-0x029FFFFF 24 MB Secondary root file system 0x03000000-0x047FFFFF 24 MB Primary user configuration 0x04800000-0x004DFFFF 6 MB Secondary user configuration 0x04E00000-0x0053FFFF 6 MB Factory default configuration 0x05400000-0x0059FFFF 6 MB Storage 0x05A00000-0x7FFFFFFF 1958 MB */ #define ENABLE 1 #define DISABLE 0 #define PASS 1 #define FAIL 0 #define DIN70122_ISO15118_VERIFICATION /**************************************************************************************/ /*********************************System Limitation**********************************/ /**************************************************************************************/ #ifdef AWCCS #undef CONNECTOR_TEMP_DETECTION #define CCS_ENERGY_TRANSFER_MODE MODE_AC_SINGLE_PHASE_CORE #else #define CCS_ENERGY_TRANSFER_MODE MODE_DC_EXTENDED #endif //#define SUPPORT_ISO15118_PnC //#define SUPPORT_ISO15118_VAS //#define SUPPORT_TLS_CONNECTION #define SUPPORT_DIN70122_ISO15118_4 0 #define MIN_SUPPORTED_CURRENT 3 #define CONNECTOR_TEMP_DETECTION //REMA #ifdef SUPPORT_ISO15118_VAS #define SUPPORT_TLS_CONNECTION #endif #ifdef SUPPORT_ISO15118_PnC #define SUPPORT_TLS_CONNECTION #endif #define SIZE_OF_LOG_BUFFER 256 //Bytes #define PARAMETER_NORMAL_MODE ENABLE //DISABLE: using sudo parameters //ENABLE: using CAN commands //For Test or Burn-in Purpose #define MANUAL_SET_EV_TARGET_FUNCTION DISABLE #define SUDO_EV_TARGET_VOLTAGE 500 //unit: 1V #define SUDO_EV_TARGET_CURRENT 60 //unit: 1A //Configuration for CCS EVSE Process #define CABLECHECK_TARGET_VOLTAGE 500 //unit 1V, default: 500V #define CABLECHECK_TARGET_CURRENT 2 //unit: 1A, default: 2A #define PRECHARGE_TARGET_CURRENT 2 //unit: 1A, default: 2A //EVSE ID #define CCS_AC_EVSEID "PHIHONG_CCS_AC_001" //max: DIN = 32, ISO1/ISO2 = 37 bytes #define CCS_DC_EVSEID "PHIHONG_CCS_DC_001" //max: DIN = 32, ISO1/ISO2 = 37 bytes #define CCS_AC_METER_ID "ABCDE-0123456789-0123456789" //max = 32 bytes #define CCS_AC_SIG_METER_READING "SIG_METER_READING_ABCDE-0123456789" //max = 64 bytes /*CCS Protocol ID*/ #define V2GT_MSG_PROTOCOL_DIN70121 0 #define V2GT_MSG_PROTOCOL_ISO15118_2014 1 //i.e. ISO15118-2 (ISO 1) #define V2GT_MSG_PROTOCOL_ISO15118_2018 2 //i.e. ISO15118-20 (ISO 2) #define V2GT_MSG_PROTOCOL_HIGHEST_PRIORITY 255 //for auto detect highest priority protocol #define V2GT_MSG_PROTOCOL_PREFERENCE V2GT_MSG_PROTOCOL_HIGHEST_PRIORITY// V2GT_MSG_PROTOCOL_HIGHEST_PRIORITY // V2GT_MSG_PROTOCOL_ISO15118_2014//V2GT_MSG_PROTOCOL_HIGHEST_PRIORITY //#define CCS_ENERGY_TRANSFER_MODE MODE_DC_EXTENDED //DC: MODE_DC_EXTENDED (default) //AC: MODE_AC_SINGLE_PHASE_CORE, MODE_AC_THREE_PHASE_CORE #define SET_NO_PWM_IF_NOT_GET_PERMISSION 0 #define SET_5_PWM_ONCE_RX_CM_SLAC_PARM_REQ 1 #define SET_5_PWM_ONCE_GET_PERMISSION_IN_AUTHORIZATIONRES 2 #define FIRMWARE_VERSION_COMPILE_SETTING_RELEASE_MODE ENABLE //default: ENABLE: release; DISABLE: debug #define NEW_SLAC_ARCHITECTURE_SWITCH ENABLE //defualt: ENABLE #define CAN_RAMDOM_MATCHING_ID_MECHANISM ENABLE //defualt: ENABLE #define CAN_RX_TIMEOUT_MECHANISM DISABLE //defualt: ENABLE #define SLAC_FIRST_RESPONSE_METHOD SET_5_PWM_ONCE_RX_CM_SLAC_PARM_REQ #define TCPDUMP_PACKETS_SNIFFER_SWITCH DISABLE //default: DISABLE #define CANDUMP_PACKETS_SNIFFER_SWITCH DISABLE //default: DISABLE #define DYNAMIC_ETH0_IP_MECHANISM ENABLE //default: DISABLE #define CP_PROTECTION_MECHANISM ENABLE //default: ENABLE #define PP_PROTECTION_MECHANISM DISABLE //default: DISABLE #define SUDO_PSD_PARAMETER_MECHANISM ENABLE //default: ENABLE #define TESLA_SLOW_INCREASE_CURRENT_FUNCTION DISABLE #define V2G_SECC_TIMEOUT_PROTECTION ENABLE #define PATCH_FOR_BMW_I3_BUG_EVSEMAXIMUMVOLTAGELIMIT_599V ENABLE //default: ENABLE; CE/UL: DISABLE //CSU CAN Message EV Stop Type #define EV_NORMAL_STOP 1 #define EV_EMERGENCY_STOP 2 //CSU CAN Message GFD Isolation Status Type #define GFD_Invalid 0 //ongoing #define GFD_Valid 1 #define GFD_Warning 2 #define GFD_Fault 3 #define GFD_No_IMD 4 //for ISO 15118 //Default Ethernet Port Base for eth0 #define ETH0_PORT_BASE 20 //Energy Transfer Mode #define MODE_AC_SINGLE_PHASE_CORE 0 #define MODE_AC_THREE_PHASE_CORE 1 #define MODE_DC_CORE 2 #define MODE_DC_EXTENDED 3 #define MODE_DC_COMBO_CORE 4 #define MODE_DC_UNIQUE 5 /* 0xAaBbCcDd Aa: main version Bb: minor version Cc: 0x01: UL 0x02: CE 0x03: JP 0x04: GB Dd: 0x01: CCS protocol 0x02: CHAdeMO protocol 0x03: GB Protocol */ /*Download Image Type*/ #define IMAGE_TYPE_KERNEL_CONFIGURATION_DTB 1 #define IMAGE_TYPE_BOOTLOADER_UBOOT 2 #define IMAGE_TYPE_OS_KERNEL_ZIMAGE 3 #define IMAGE_TYPE_ROOT_FILESYSTEM_RAMDISK 4 #define IMAGE_TYPE_ROOT_APP_ZIP 5 #define IMAGE_TYPE_BOOTLOADER_MLO_SPL 6 #define IMAGE_TYPE_USER_CONFIGURATION 7 //--- [CAUTION] To increase type ID, please modify this condition. //(Check_DwnldImgParameter()) /*relevant to Quantity */ #define CHAdeMO_QUANTITY 1 #define CCS_QUANTITY 1 #define GB_QUANTITY 1 /*SystemLog message*/ #define SystemLogMessage //for engineer to do analysis #define CSUCOMMDC_TASK_FLAG (ShmInternalComm->InternalCommUnion.bits) //#define CSUCOMMAC_SHM (ShmInternalCommAC->gun_info[0].acCcsInfo) #define EVCOMM_SYS_INFO (ShmSysConfigAndInfo->SysInfo.CcsChargingData[0]) #define SLAC_INFO (ShmSysConfigAndInfo->SysInfo.CcsChargingData[0].evcc_slac_data) #define CCS_HANDSHAKE_PROTOCOLS (ccs_handshake.supportedAppProtocolReq.AppProtocol) #define GPIO_SYS_DIR "/sys/class/gpio" #define GPIO_2_23_AM_IO_1 87 // Debug Message #define DEBUG_CCS_EVEM_MESSAGE_SHOW ENABLE #if DEBUG_CCS_EVEM_MESSAGE_SHOW == ENABLE #define DEBUG_MAIN_PRINTF printf #define DEBUG_EVCOMM_PRINTF printf #else #define DEBUG_MAIN_PRINTF(...) #define DEBUG_EVCOMM_PRINTF(...) #endif //Precharge Relay Status #define EVSE_STATUS_NOT_READY_FOR_PRECHARGE 0 //un-initialized #define EVSE_STATUS_READY_FOR_PRECHARGE 2 //DC+ Relay: OFF, Precharge Relay: ON #define EVSE_STATUS_READY_FOR_ENERGY_TRANSFER 3 //DC+ Relay: ON, Precharge Relay: OFF /**************************************************************************************/ /**************************share memory key information***************************/ /**************************************************************************************/ #define ShmSysConfigAndInfoKey 3001 //0xBB9 #define ShmCcsCommKey 3004 //0xBBC #define ShmStatusCodeKey 3005 //0xBBD #define ShmInternalCommKey 3009 //0xBC1 #define ShmInternalCommACKey 3007 //0x7D1 /**************************************************************************************/ /****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 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 }; struct TeleConfigData { 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 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 }; struct SysConfigData { /**************System***************/ 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 AuthorisationMode; //0: Phihong RFID tag, 1: OCPP backend, 2: Phihong backend, 3: 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 /**************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. /**************Network***************/ unsigned char FtpServer[32]; //the ftp server for Phihong server to do data transimission struct EthConfigData Eth0Interface; struct EthConfigData Eth1Interface; struct WifiConfigData AthInterface; struct TeleConfigData TelecomInterface; /**************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 int Checksum; //4 bytes checksum }; #define SLAC_EVSE_MAC_LENGTH 6 #define SLAC_EVMAC_LENGTH 6 #define SLAC_RUNID_LENGTH 8 #define SLAC_AAG_LENGTH 64 //ISO 15118 defines it as 0x3A, i.e. 58 struct EVCC_SLAC_DATA_ARRAY_TYPE { unsigned char EvMac[SLAC_EVMAC_LENGTH]; unsigned char RunID[SLAC_RUNID_LENGTH]; unsigned short AAG[SLAC_AAG_LENGTH]; unsigned char StartAttenCharCnt; unsigned char StartAttenCharErr; unsigned char MnbcSoundNum; unsigned char MnbcSoundCnt; unsigned char AttenProfileCnt; unsigned char AagGroupsNum; unsigned char AttenCharRspCnt; unsigned char ValidateReqCnt; unsigned char MatchReqNum; float AAG_quality_ori; float AAG_quality_refined; }; #define EVCC_SLAC_DATA_ARRAY_TYPE_ARRAY_SIZE 20 struct EVCC_SLAC_DATA_TYPE { unsigned char arrayLen; struct EVCC_SLAC_DATA_ARRAY_TYPE array[EVCC_SLAC_DATA_ARRAY_TYPE_ARRAY_SIZE]; }; struct ChargingInfoData { float MaximumChargingVoltage; //0~6553.5 volt, unit = 1V float AvailableChargingCurrent; //0~6553.5 amp, unit =1A float AvailableChargingPower; //0~6553.5 kW, unit = 1KW float PresentChargingVoltage; //0~6553.5 volt, unit = 1V float PresentChargingCurrent; //0~6553.5 amp, unit = 1A float PresentChargingPower; //0~6553.5 kW, unit = 1KW float PresentChargedEnergy; //0~6553.5 kWh, unit = 1KWH int PresentChargedDuration; // second, unit = 1s int RemainChargingDuration; // second, unit = 1s float EvBatteryMaxVoltage; // 0~6553.5 volt, unit = 1V float EvBatteryMaxCurrent; //1V float EvBatteryMaxPower; //1KW float EvBatterytargetVoltage; // 0~6553.5 volt, unit = 1V float EvBatterytargetCurrent; //1A int EvBatterySoc; // 0~100%, unit = 1% float EvBatteryCapacity; //1KWH float EvBatteryEngergyRequest; //1KWH unsigned char ConnectorPlugIn; //0: unplug, 1: Plug-in unsigned char ConnectorLocked; //0: unlocked, 1:locked. float CpVoltage; // unsigned char CpState; //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 CpDuty; //0~100% float PpVoltage; unsigned char EVSEPrechargeStatus; //00:not ready, 01:ready for precharge, 02: ready for engergy trnasfer (> 2A) unsigned char IsolationStatus; //0:ongoing, 1:valid, 2:warning/fault unsigned char DC_EVSEStatus; unsigned char SwitchCpStateE_status; unsigned char QCA7K_SetKeyDone; unsigned char CpState_err; unsigned char CpState_err_logged; unsigned char CableCheckPreCountDownDone; unsigned char End_Process_inused; struct timeb V2G_SECC_CableCheck_Timer_Start; struct timeb V2G_SECC_CableCheck_Timer_End; struct timeb V2G_SECC_Precharge_Timer_Start; struct timeb V2G_SECC_Precharge_Timer_End; struct timeb V2G_SECC_CurrentDemand_Timer_Start; struct timeb V2G_SECC_CurrentDemand_Timer_End; struct timeb V2G_SECC_ChargingStatus_Timer_Start; struct timeb V2G_SECC_ChargingStatus_Timer_End; struct timeb V2G_SECC_WeldingDetection_Timer_Start; struct timeb V2G_SECC_WeldingDetection_Timer_End; struct timeb V2G_SECC_Sequence_Timer_Start; struct timeb V2G_SECC_Sequence_Timer_End; struct timeb V2G_SECC_Msg_Timer_Start; struct timeb V2G_SECC_Msg_Timer_End; unsigned short SDP_TCP_Server_Port_active; unsigned char SessionID[8]; unsigned char V2G_Rx_Msg; unsigned char SequenceError; unsigned char SupportedAppProtocol_result; //appHandresponseCodeType: 0,1,2 char CM_ATTEN_CHAR_IND_retry; struct EVCC_SLAC_DATA_TYPE evcc_slac_data; unsigned char State_Change_Ignored_Notice; unsigned char EVCCID[8]; unsigned char EVCCID_length; float AC_EVSENominalVoltage; //unit: 1V //previous state float MaximumChargingVoltage_pre; //0~6553.5 volt, unit = 1V float AvailableChargingCurrent_pre; //0~6553.5 amp, unit =1A float AvailableChargingPower_pre; //0~6553.5 kW, unit = 1KW float PresentChargingVoltage_pre; //0~6553.5 volt, unit = 1V float PresentChargingCurrent_pre; //0~6553.5 amp, unit = 1A float PresentChargingPower_pre; //0~6553.5 kW, unit = 1KW float PresentChargedEnergy_pre; //0~6553.5 kWh, unit = 1KWH int PresentChargedDuration_pre; // second, unit = 1s int RemainChargingDuration_pre; // second, unit = 1s float EvBatteryMaxVoltage_pre; // 0~6553.5 volt, unit = 1V float EvBatteryMaxCurrent_pre; //1A float EvBatteryMaxPower_pre; //1KW float EvBatterytargetVoltage_pre; // 0~6553.5 volt, unit = 1V float EvBatterytargetCurrent_pre; //1A int EvBatterySoc_pre; // 0~100%, unit = 1% float EvBatteryCapacity_pre; //1KWH float EvBatteryEngergyRequest_pre; //1KWH unsigned char ConnectorPlugIn_pre; //0: unplug, 1: Plug-in unsigned char ConnectorPlugIn_new; //0: unplug, 1: Plug-in unsigned char ConnectorLocked_pre; //0: unlocked, 1:locked. float CpVoltage_pre; // unsigned char CpState_pre; //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 CpDuty_pre; //0~100% float PpVoltage_pre; unsigned char EVSEPrechargeStatus_pre; // unsigned char IsolationStatus_pre; //0:ongoing, 1:valid, 2:warning/fault unsigned char DC_EVSEStatus_pre; unsigned char SwitchCpStateE_status_pre; unsigned char V2G_Rx_Msg_pre; float AC_EVSENominalVoltage_pre; //unit: 1V }; struct SysInfoData { /**************System***************/ unsigned char SystemStatus; //0: Booting, 1: idle, 2: authorizing, 3: preparing, 4: charging, 5: terminating, 6: alarm, 7: fault 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]; /**************Network***************/ unsigned char InternetConn; //0: disconnected, 1: connected /**************Backend***************/ unsigned char OcppConnStatus; //0: disconnected, 1: connected }; struct SysConfigAndInfo { struct SysConfigData SysConfig; struct SysInfoData SysInfo; }; 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; }; struct AlarmCodeData { unsigned char PreviousAlarmVal[8]; union { unsigned char AlarmVal[8]; 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 : 8; //reserved } bits; } AlarmEvents; }; struct InfoCodeData { unsigned char PreviousInfoVal[8]; union { unsigned char InfoVal[8]; 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 ChademoSeccCommFail : 1; //bit 0 unsigned char CcsSeccCommFail : 1; //bit 1 unsigned char GbSeccCommFail : 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 : 8; //bit 0~7 reserved //InfoVal[7] 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 { unsigned char PresentStatusCode[10][6]; struct FaultCodeData FaultCode; struct AlarmCodeData AlarmCode; struct InfoCodeData InfoCode; }; /************************************************************************************/ /**************************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}; enum MsgFlowStatus { IDLE = 0, CM_SLAC_PARM_REQ = 1, CM_SLAC_PARM_CONF = 2, CM_START_ATTEN_CHAR_IND = 3, CM_MNBC_SOUND_IND = 4, CM_ATTEN_CHAR_IND = 5, CM_ATTEN_CHAR_RSP = 6, CM_VALIDATE_REQ = 7, CM_VALIDATE_CNF = 8, CM_SLAC_MATCH_REQ = 9, CM_SLAC_MATCH_CNF = 10, CM_AMP_MAP_REQ = 11, CM_AMP_MAP_CNF = 12, CM_SET_KEY_REQ = 13, CM_SET_KEY_CNF = 14, SLACC_SDP_UDP_Connection = 15, SLACC_SDP_TCP_Connection = 16, SupportedAppProtocolRequest = 17, SupportedAppProtocolResponse = 18, SessionSetupRequest = 19, SessionSetupResponse = 20, ServiceDiscoveryRequest = 21, ServiceDiscoveryResponse = 22, ServiceDetailRequest = 23, ServiceDetailResponse = 24, ServiceAndPaymentSelectionRequest = 25, ServiceAndPaymentSelectionResponse = 26, PaymentDetailsRequest = 27, PaymentDetailsResponse = 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, PowerDeliveryRequestStart = 41, PowerDeliveryResponsetStart = 42, ChargingStatusRequest = 43, ChargingStatusResponse = 44, CurrentDemandRequest = 45, CurrentDemandResponse = 46, MeteringReceiptRequest = 47, MeteringReceiptResponse = 48, PowerDeliveryRequestStop = 49, PowerDeliveryResponseStop = 50, WeldingDetectionRequest = 51, WeldingDetectionResponse = 52, SessionStopRequest = 53, SessionStopResponse = 54, Performance_Timeout = 253, Sequence_Timeout = 254, Other_Fault = 255 }; 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 ProtocolNamespaceLen; 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]; unsigned int SelectedServiceLen; }; 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_ISO15118_2014 { BOOL RCD; unsigned short NotificationMaxDelay; enum EVSENotificationType EVSENotification; //need to be confirmed }; struct AC_EVSEChargeParameterType_ISO15118_2014 { struct AC_EVSEStatusType_ISO15118_2014 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 long 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 long 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 long 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 unsigned int ServiceScopeLen; enum ServiceCategoryType ServiceCategory; //Optional }; struct ServiceDiscoveryRequest_ISO15118_2014 { unsigned char ServiceScope[32]; //Optional unsigned int ServiceScopeLen; 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_ISO15118_2014 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_ISO15118_2014 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_ISO15118_2014 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_ISO15118_2014 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 { unsigned int cnt; //self added enum ResponseCodeType_DIN70121 ResponseCode; struct DC_EVSEStatusType_DIN70121 DC_EVSEStatus; enum EVSEProcessingType_DIN70121 EVSEProcessing; }; struct CableCheckResponse_ISO15118_2014 { unsigned int cnt; //self added enum ResponseCodeType_ISO15118_2014 ResponseCode; struct DC_EVSEStatusType_ISO15118_2014 DC_EVSEStatus; enum EVSEProcessingType_ISO15118_2014 EVSEProcessing; }; struct CableCheckResponse_ISO15118_2018 { unsigned int cnt; //self added enum ResponseCodeType_ISO15118_2018 ResponseCode; struct EVSEStatusType EVSEStatus; //Optional enum ProcessingType EVSEProcessing; }; /****PreChargeRequest (DC Only)****/ struct PreChargeRequest_DIN70121 { unsigned int cnt; //self added struct DC_EVStatusType_DIN70121 DC_EVStatus; struct PhysicalValueType_DIN70121 EVTargetVoltage; struct PhysicalValueType_DIN70121 EVTargetCurrent; }; struct PreChargeRequest_ISO15118_2014 { unsigned int cnt; //self added struct DC_EVStatusType_ISO15118_2014 DC_EVStatus; struct PhysicalValueType_ISO15118_2014 EVTargetVoltage; struct PhysicalValueType_ISO15118_2014 EVTargetCurrent; }; struct PreChargeRequest_ISO15118_2018 { unsigned int cnt; //self added 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 { enum MsgFlowStatus PresentMsgFlowStatus; enum MsgFlowStatus PresentMsgFlowStatus_pre; /* 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 { enum MsgFlowStatus PresentMsgFlowStatus; enum MsgFlowStatus PresentMsgFlowStatus_pre; /* 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 { enum MsgFlowStatus PresentMsgFlowStatus; enum MsgFlowStatus PresentMsgFlowStatus_pre; /* 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; //0: V2GT_MSG_PROTOCOL_DIN70121 //1: V2GT_MSG_PROTOCOL_ISO15118_2014 //2: V2GT_MSG_PROTOCOL_ISO15118_2018 unsigned char EnergyTransferMode; struct V2GMessageType_DIN70121 V2GMessage_DIN70121; struct V2GMessageType_ISO15118_2014 V2GMessage_ISO15118_2014; struct V2GMessageType_ISO15118_2018 V2GMessage_ISO15118_2018; }; struct InternalComm { unsigned char ChargingPermission; unsigned char SlaveAddress; unsigned char IsolationStatus; //0:ongoing, 1:valid, 2:warning/fault unsigned char CCSConnectorType; //0:CCS1, 1:CCS2 unsigned char MaximumAllowedChargingTime; //0x00: unlimited //(0x01: 1 minutes ~ 0xFF: 255 minutes, resolution: 1 minute) unsigned int RTC; //4 bytes unsigned char EVSEPrechargeStatus; int MaximumChargingVoltage; //0~6553.5 volt, resolution: 0.1V int AvailableChargingCurrent; //0~6553.5 amp, resolution: 0.1V int AvailableChargingPower; //0~6553.5 kW, resolution: 0.1KW int PresentChargingVoltage; //0~6553.5 volt, resolution: 0.1V int PresentChargingCurrent; //0~6553.5 amp, resolution: 0.1A int PresentChargingPower; //0~6553.5 KW, resolution: 0.1KW struct timeb CAN_Rx_Timer_Start; struct timeb CAN_Rx_Timer_End; int FD_CAN_Socket; struct timeb Start_Time; struct timeb End_Time; unsigned char ChargingPermission_new; BOOL AC_RcdStatus; //0:no error, 1:error unsigned char AC_EVSEID[40]; unsigned char AC_MeterID[32]; unsigned char AC_EVSEModelName[32]; unsigned char AC_BatteryChargeType; unsigned char AC_CpPresentPWMDuty; unsigned char AC_CpPresentState; unsigned short AC_ChargingRemainTime; unsigned int AC_CSUAlarmStatusCode; unsigned int AC_CcsHeartBeat; float AC_GridVoltage[3]; float AC_MeterReadingValue; float AC_CpPositiveVoltage; float AC_CpNegativeVoltage; float AC_EVSEMaxCurrent; float AC_EVSEMinCurrent; float AC_EVSEPresentCurrent[3]; BOOL AC_OutputRelayStatus; float AC_AvailableChargingPower; //1KW unsigned char AC_EVSENotification; //0:none, 1:StopCharging, 2:RenNgotiation unsigned char ChargingPermission_pre; unsigned char SlaveAddress_pre; unsigned char IsolationStatus_pre; //0:ongoing, 1:valid, 2:warning/fault unsigned char CCSConnectorType_pre; //0:CCS1, 1:CCS2 unsigned char MaximumAllowedChargingTime_pre; //0x00: unlimited //(0x01: 1 minutes ~ 0xFF: 255 minutes, resolution: 1 minute) unsigned int RTC_pre; //4 bytes unsigned char EVSEPrechargeStatus_pre; int MaximumChargingVoltage_pre; //0~6553.5 volt, resolution: 0.1V int AvailableChargingCurrent_pre; //0~6553.5 amp, resolution: 0.1V int AvailableChargingPower_pre; //0~6553.5 kW, resolution: 0.1KW int PresentChargingVoltage_pre; //0~6553.5 volt, resolution: 0.1V int PresentChargingCurrent_pre; //0~6553.5 amp, resolution: 0.1A int PresentChargingPower_pre; //0~6553.5 KW, resolution: 0.1KW BOOL AC_RcdStatus_pre; //0:no error, 1:error unsigned char AC_EVSEID_pre[40]; unsigned char AC_MeterID_pre[32]; unsigned char AC_EVSEModelName_pre[32]; unsigned char AC_BatteryChargeType_pre; unsigned char AC_CpPresentPWMDuty_pre; unsigned char AC_CpPresentState_pre; unsigned short AC_ChargingRemainTime_pre; unsigned int AC_CSUAlarmStatusCode_pre; unsigned int AC_CcsHeartBeat_pre; float AC_GridVoltage_pre[3]; float AC_MeterReadingValue_pre; float AC_CpPositiveVoltage_pre; float AC_CpNegativeVoltage_pre; float AC_EVSEMaxCurrent_pre; float AC_EVSEMinCurrent_pre; float AC_EVSEPresentCurrent_pre[3]; BOOL AC_OutputRelayStatus_pre; float AC_AvailableChargingPower_pre; //1KW unsigned char AC_EVSENotification_pre; //0:none, 1:StopCharging, 2:RenNgotiation struct DownloadImageInfoStructure { FILE *file; unsigned char active; unsigned char type; char filename[128]; unsigned long image_rx_cnt; unsigned long image_size; unsigned long total_can_packets; unsigned long image_size_received; //unit: byte unsigned char block_quantity; unsigned char block_sequence_number; unsigned char block_size_KByte; //unit: KBytes unsigned char block_checksum; unsigned char final_canmsg_size; //unit: byte unsigned char downlaod_percentage; unsigned char downlaod_percentage_pre; } DownloadImageInfo; struct EVSEStopChargingReqType { unsigned char type; unsigned char alarmcode[6]; } EVSEStopChargingReq; union { unsigned char InternalCommVal; struct { //FaultVal[0] unsigned int matched: 1; //CAN_CMD_ADDRESS_REQUEST 0x00000100 unsigned int Got_AssignedAddress: 1; //CAN_CMD_ADDRESS_ASSIGN 0x00000200 unsigned int Send_EVBoardStatus: 1; //CAN_CMD_EV_BOARD_STATUS 0x00000300 unsigned int Got_FWVersionReq: 1; //CAN_CMD_GET_FW_VERSION 0x00000400 unsigned int Got_HWVersionReq: 1; //CAN_CMD_GET_HW_VERSION 0x00000500 unsigned int Got_ChargingPermission: 1; //CAN_CMD_CHARGING_PERMISSION 0x00000600 unsigned int Got_EVSEOutputStatus: 1; //CAN_CMD_EVSE_OUTPUT_STATUS_ANNOUNCEMENT 0x00000700 unsigned int Got_EnergyCapacity: 1; //CAN_CMD_EVSE_CAPACITY_ANNOUNCEMENT 0x00000800 unsigned int Got_EVTargetReq: 1; //CAN_CMD_GET_EV_TARGET_INFO 0x00000900 unsigned int Got_EVBatteryInfoReq: 1; //CAN_CMD_GET_EV_BATTERY_INFO 0x00000A00 unsigned int Send_EVStopReq: 1; //#define CAN_CMD_EV_STOP_EVENT 0x00000B00 unsigned int Got_EVSEStopReq: 1; //#define CAN_CMD_EVSE_STOP_EVENT 0x00000C00 unsigned int Got_MiscellaneousInfoReq: 1; //#define CAN_CMD_GET_MISC_INFO 0x00000D00 unsigned int Got_DownloadImageReq: 1; //#define CAN_CMD_DOWNLOAD_REQUEST 0x00000E00 unsigned int Got_BlockTransferStartReq: 1; //#define CAN_CMD_START_BLOCK_TRANSFER 0x00000F00 unsigned int Got_DataTransferReq: 1; //CAN_CMD_DATA_TRANSFER 0x00001000 unsigned int Got_DownloadFinishReq: 1; //CAN_CMD_DOWNLOAD_FINISH 0x00001100 unsigned int Got_IsolationStatus: 1; //CAN_CMD_ISOLATION_STATUS 0x00001200 unsigned int Got_CCSConnectorReq: 1; //CAN_CMD_CCS_CONNECTOR_INFO 0x00001300 unsigned int Got_RTC: 1; //CAN_CMD_RTC_INFO 0x00001400 unsigned int Got_EVSE_Precharge_Info: 1; //CAN_CMD_EVSE_PRECHARGE_INFO 0x00001500 unsigned int Got_EVCCID_Req: 1; //CAN_CMD_EVCCID_REQUEST 0x00001600 unsigned int EV_Stop_Type_Emergency: 1; unsigned int FW_Update_Done: 1; unsigned int FW_Update_Task_inused: 1; unsigned int FW_Update_result: 1; unsigned int FW_Update_Reboot_inused: 1; unsigned int CAN_Rx_Timeout: 1; unsigned int Reboot_Process_inused: 1; unsigned int reserved: 3; } bits; } InternalCommUnion; }; #endif // DEFINE_H_