瀏覽代碼

[Improve][Modularization][Module_CCS]

2021.01.25 / Folus Wen

Actions:
1. SLAC packet save to log file by each session.
2. TCP port assign since 55000.
3. CP state check with constant.

Files:
1. As follow commit history

Image version: D0.00.XX.XXXX.XX
Image checksum: XXXXXXXX

Hardware PWB P/N : XXXXXXX
Hardware Version : XXXXXXX
FolusWen 3 年之前
父節點
當前提交
d8aaef9419

+ 42 - 43
EVSE/Projects/AW-CCS/Apps/CCS/Module_CCS.c

@@ -1113,9 +1113,9 @@ int Check_CP_State_Error(struct ChargingInfoData *ccs)
         #if (SLAC_FIRST_RESPONSE_METHOD == SET_5_PWM_ONCE_GET_PERMISSION_IN_AUTHORIZATIONRES)
         {
 #ifdef TEST_WITH_ETH0
-        	if((ShmCcsData->EnergyTransferMode == MODE_DC_EXTENDED) && ((ccs->CpState != 2) && (ccs->CpState != 3)))
+        	if((ShmCcsData->EnergyTransferMode == MODE_DC_EXTENDED) && ((ccs->CpState != CCS_CP_STATE_B1) && (ccs->CpState != CCS_CP_STATE_B2)))
 #else
-            if((ccs->CpState != 2) && (ccs->CpState != 3))
+            if((ccs->CpState != CCS_CP_STATE_B1) && (ccs->CpState != CCS_CP_STATE_B2))
 #endif
             {
                 if (ccs->CpState_err == FALSE)
@@ -1128,7 +1128,7 @@ int Check_CP_State_Error(struct ChargingInfoData *ccs)
         }
         #else
         {
-            if(ccs->CpState != 3)
+            if(ccs->CpState != CCS_CP_STATE_B2)
             {
                 if (ccs->CpState_err == FALSE)
                 {
@@ -1148,9 +1148,9 @@ int Check_CP_State_Error(struct ChargingInfoData *ccs)
            state <= ChargeParameterDiscoveryResponse)         //36
         {
 #ifdef TEST_WITH_ETH0
-        	if((ccs->CpState != 3) && ((ShmCcsData->EnergyTransferMode != MODE_DC_EXTENDED) && (ccs->CpState != 4)))
+        	if((ccs->CpState != CCS_CP_STATE_B2) && ((ShmCcsData->EnergyTransferMode != MODE_DC_EXTENDED) && (ccs->CpState != CCS_CP_STATE_C)))
 #else
-            if(ccs->CpState != 3)
+            if(ccs->CpState != CCS_CP_STATE_B2)
 #endif
             {
                 if (ccs->CpState_err == FALSE)
@@ -1167,7 +1167,7 @@ int Check_CP_State_Error(struct ChargingInfoData *ccs)
         if(state >= ChargingStatusRequest &&        //43
            state <= ChargingStatusResponse)         //44
         {
-            if((ccs->CpState != 3) && (ccs->CpState != 4) && (ccs->CpState != 5))
+            if((ccs->CpState != CCS_CP_STATE_B2) && (ccs->CpState != CCS_CP_STATE_C) && (ccs->CpState != CCS_CP_STATE_D))
             {
                 if (ccs->CpState_err == FALSE)
                 {
@@ -1199,7 +1199,7 @@ int Check_CP_State_Error(struct ChargingInfoData *ccs)
 
             if(ccs->CableCheckPreCountDownDone == TRUE)
             {
-                if(ccs->CpState != 4 && ccs->CpState != 5)
+                if(ccs->CpState != CCS_CP_STATE_C && ccs->CpState != CCS_CP_STATE_D)
                 {
                     if (ccs->CpState_err == FALSE)
                     {
@@ -1213,7 +1213,7 @@ int Check_CP_State_Error(struct ChargingInfoData *ccs)
             }
             else
             {
-                if(ccs->CpState != 3 && ccs->CpState != 4 && ccs->CpState != 5)
+                if((ccs->CpState != CCS_CP_STATE_B2) && (ccs->CpState != CCS_CP_STATE_C) && (ccs->CpState != CCS_CP_STATE_D))
                 {
                     if (ccs->CpState_err == FALSE)
                     {
@@ -1231,7 +1231,7 @@ int Check_CP_State_Error(struct ChargingInfoData *ccs)
         if(state >= PreChargeRequest &&      //39
         state <= CurrentDemandResponse)   //46
         {
-            if(ccs->CpState != 4 && ccs->CpState != 5)
+            if((ccs->CpState != CCS_CP_STATE_C) && (ccs->CpState != CCS_CP_STATE_D))
             {
                 if (ccs->CpState_err == FALSE)
                 {
@@ -1345,7 +1345,7 @@ void CP_Detection()
             if(TotalTmpVolt >= 13.5)
             {
                 //Pilot Error
-                if((ccs->CpState == 1) &&
+                if((ccs->CpState == CCS_CP_STATE_A) &&
                 (TotalTmpVolt < 13.75))
                 {
                     //V_cp = 13.5 ~ 13.75
@@ -1360,8 +1360,8 @@ void CP_Detection()
             else if((TotalTmpVolt >= 10.5) && (TotalTmpVolt < 13.5)) //V_cp = 10.5 ~ 13.5
             {
                 //State A (12V)
-                if((ccs->CpState >= 2) &&
-                (ccs->CpState <= 3) &&
+                if((ccs->CpState >= CCS_CP_STATE_B1) &&
+                (ccs->CpState <= CCS_CP_STATE_B2) &&
                 (TotalTmpVolt < 10.75))
                 {
                     if((ccs->CpDuty >= 5) &&
@@ -1374,7 +1374,7 @@ void CP_Detection()
                         Statetmp = 2;
                     }
                 }
-                else if((ccs->CpState == 8) &&
+                else if((ccs->CpState == CCS_CP_STATE_G) &&
                         (TotalTmpVolt >= 13.25))
                 {
                     Statetmp = 8;
@@ -1387,11 +1387,11 @@ void CP_Detection()
             else if((TotalTmpVolt >= 7.5) && (TotalTmpVolt < 10.5))
             {
                 //State B (9V)
-                if((ccs->CpState == 4) && (TotalTmpVolt < 7.75))
+                if((ccs->CpState == CCS_CP_STATE_C) && (TotalTmpVolt < 7.75))
                 {
                     Statetmp = 4;
                 }
-                else if((ccs->CpState == 1) && (TotalTmpVolt >= 10.25))
+                else if((ccs->CpState == CCS_CP_STATE_A) && (TotalTmpVolt >= 10.25))
                 {
                     Statetmp = 1;
                 }
@@ -1410,11 +1410,11 @@ void CP_Detection()
             else if((TotalTmpVolt >= 4.5) && (TotalTmpVolt < 7.5))
             {
                 //State C (6V)
-                if((ccs->CpState == 5) && (TotalTmpVolt < 4.75))
+                if((ccs->CpState == CCS_CP_STATE_D) && (TotalTmpVolt < 4.75))
                 {
                     Statetmp = 5;
                 }
-                else if((ccs->CpState >= 2) && (ccs->CpState <= 3) && (TotalTmpVolt >= 7.25))
+                else if((ccs->CpState >= CCS_CP_STATE_B1) && (ccs->CpState <= CCS_CP_STATE_B2) && (TotalTmpVolt >= 7.25))
                 {
                     if((ccs->CpDuty >= 5)&&(ccs->CpDuty < 100))
                     {
@@ -1433,11 +1433,11 @@ void CP_Detection()
             else if((TotalTmpVolt >= 1.5) && (TotalTmpVolt < 4.5))
             {
                 //State D (3V)
-                if((ccs->CpState == 6)&&(TotalTmpVolt < 1.75))
+                if((ccs->CpState == CCS_CP_STATE_E)&&(TotalTmpVolt < 1.75))
                 {
                     Statetmp = 6;
                 }
-                else if((ccs->CpState == 4)&&(TotalTmpVolt >= 4.25))
+                else if((ccs->CpState == CCS_CP_STATE_C)&&(TotalTmpVolt >= 4.25))
                 {
                     Statetmp = 4;
                 }
@@ -1449,12 +1449,12 @@ void CP_Detection()
             else if((TotalTmpVolt >= -1.5) && (TotalTmpVolt < 1.5)) //V_cp = -1.5V ~ 1.5V
             {
                 //State E (0V)
-                if((ccs->CpState == 8) &&
+                if((ccs->CpState == CCS_CP_STATE_G) &&
                 (TotalTmpVolt < -1.25))
                 {
                     Statetmp = 8;
                 }
-                else if((ccs->CpState == 5) &&
+                else if((ccs->CpState == CCS_CP_STATE_D) &&
                         (TotalTmpVolt >= 1.25))
                 {
                     Statetmp = 5;
@@ -1467,7 +1467,7 @@ void CP_Detection()
             else if((TotalTmpVolt >= -13.5) && (TotalTmpVolt < -10.5)) //V_cp = -10.5V ~ -13.5V
             {
                 //State F (-12V)
-                if((ccs->CpState == 8) &&
+                if((ccs->CpState == CCS_CP_STATE_G) &&
                 (TotalTmpVolt >= -10.75))
                 {
                     Statetmp = 8;
@@ -1491,9 +1491,9 @@ void CP_Detection()
 
         //Updating Plugin status
 	#if (PP_PROTECTION_MECHANISM == ENABLE)
-        if((ccs->CpState >= 2 ) && (ccs->CpState <= 5 ) && (ccs->PpVoltage >= 1.0)) //PP >= 1.0V
+        if((ccs->CpState >= CCS_CP_STATE_B1 ) && (ccs->CpState <= CCS_CP_STATE_D ) && (ccs->PpVoltage >= 1.0)) //PP >= 1.0V
 	#else
-        if((ccs->CpState >= 2 ) && (ccs->CpState <= 5 ))
+        if((ccs->CpState >= CCS_CP_STATE_B1 ) && (ccs->CpState <= CCS_CP_STATE_D ))
 	#endif
         {
             ccs->ConnectorPlugIn_new = TRUE;
@@ -1739,7 +1739,7 @@ void Error_Monitor()
         /*+++ 20200808, vern, sync with Tesla CHAdeMO adaptor, 2 for start communication(not yet auth),  1 for star charging (authorized)  ---*/
         if ((ShmInternalComm->ChargingPermission == FALSE) &&
             (ShmInternalComm->ChargingPermission_pre >= 1) &&
-            (ccs->CpState >= 3) && (ccs->CpState <=5))
+            (ccs->CpState >= CCS_CP_STATE_B2) && (ccs->CpState <= CCS_CP_STATE_D))
         {
             if (status >= CM_SLAC_PARM_REQ &&
                 status != CM_SET_KEY_REQ &&
@@ -6662,11 +6662,8 @@ int Proc_iso1_ChargeParameterDiscoveryRes(int AcceptFd)
 
     //[TC_SECC_VTB_ChargeParameterDiscovery_005]
     /*+++ 20200808, vern, should check the voltage and current to see if the range of battery parameter is accepted by charger ---*/
-#ifdef TEST_WITH_ETH0
+
     if((ShmCcsData->EnergyTransferMode == MODE_DC_EXTENDED) && ((sys->EvBatteryMaxCurrent < 0) || (sys->EvBatteryMaxVoltage<150)))
-#else
-    if ((sys->EvBatteryMaxCurrent < 0) ||(sys->EvBatteryMaxVoltage<150))
-#endif
     {
         DEBUG_ERROR("EvBatteryMaxCurrent is negative(%.02f) or EvBatteryMaxVoltage is under 150(%.02f)=> End_Process\n", sys->EvBatteryMaxCurrent, sys->EvBatteryMaxVoltage);
 
@@ -6706,25 +6703,21 @@ int Proc_iso1_ChargeParameterDiscoveryRes(int AcceptFd)
 			SAVE_PhysicalValueType_ISO15118_2014(&dc_para->EVSEMaximumVoltageLimit, (int) (500 * 10), V_ISO15118_2014);  //500V
 		}
 #endif
+
+		//for test with Tesla Model 3, 10A
+	    //SAVE_PhysicalValueType_ISO15118_2014(&dc_para->EVSEMaximumCurrentLimit, (int) (10 * 10), A_ISO15118_2014);   //10A, for testing with Tesla Model 3
     }
     else
     {
     	//AC
-		//SAVE_PhysicalValueType_ISO15118_2014(&ac_para->EVSENominalVoltage, (int) (sys->AC_EVSENominalVoltage * 10), V_ISO15118_2014);
-		//SAVE_PhysicalValueType_ISO15118_2014(&ac_para->EVSEMaxCurrent, (int) (sys->AvailableChargingCurrent * 10), A_ISO15118_2014);
-    	SAVE_PhysicalValueType_ISO15118_2014(&ac_para->EVSENominalVoltage, (int) 220, V_ISO15118_2014);
-    	SAVE_PhysicalValueType_ISO15118_2014(&ac_para->EVSEMaxCurrent, (int) 48, A_ISO15118_2014);
+    	SAVE_PhysicalValueType_ISO15118_2014(&ac_para->EVSENominalVoltage, (int) (220 * 10), V_ISO15118_2014);
+    	SAVE_PhysicalValueType_ISO15118_2014(&ac_para->EVSEMaxCurrent, (int) (sys->AvailableChargingCurrent * 10), A_ISO15118_2014);
     }
 
-    //for test with Tesla Model 3, 10A
-    //SAVE_PhysicalValueType_ISO15118_2014(&dc_para->EVSEMaximumCurrentLimit, (int) (10 * 10), A_ISO15118_2014);   //10A, for testing with Tesla Model 3
-
     //Check for EnergyTransferMode
-    if (req->RequestedEnergyTransferMode != ShmCcsData->EnergyTransferMode) //[CAUTION] Their table should be kept as the same.
+    if(req->RequestedEnergyTransferMode != ShmCcsData->EnergyTransferMode) //[CAUTION] Their table should be kept as the same.
     {
-        DEBUG_ERROR("Unmatched RequestedEnergyTransferMode(%d,%d)\n",
-								req->RequestedEnergyTransferMode,
-								ShmCcsData->EnergyTransferMode);
+        DEBUG_ERROR("Unmatched RequestedEnergyTransferMode(%d,%d)\n", req->RequestedEnergyTransferMode, ShmCcsData->EnergyTransferMode);
         res->ResponseCode = FAILED_WrongEnergyTransferMode_ISO15118_2014;
         res->EVSEProcessing = iso1EVSEProcessingType_Finished;
         dc_para->DC_EVSEStatus.DC_EVSEStatusCode = iso1DC_EVSEStatusCodeType_EVSE_Shutdown;
@@ -6764,7 +6757,7 @@ int Proc_iso1_ChargeParameterDiscoveryRes(int AcceptFd)
 
     //Detect for CP State should be 9V (State B)
     #if CP_PROTECTION_MECHANISM == ENABLE
-    if (sys->CpState != 3)  //State B1, B2
+    if ((sys->CpState != CCS_CP_STATE_B1) && (sys->CpState != CCS_CP_STATE_B2) && (sys->CpState != CCS_CP_STATE_C))  //State B1, B2
     {
         res->ResponseCode = FAILED_ISO15118_2014;
         dc_para->DC_EVSEStatus.DC_EVSEStatusCode = iso1DC_EVSEStatusCodeType_EVSE_EmergencyShutdown;
@@ -13934,7 +13927,7 @@ int SdpUdpConnected()
             return 0;
         }
 
-        DEBUG_INFO("[UDP] opened: %d\n", socketFd.Udp);
+        DEBUG_INFO("[UDP] opened(%d), port: %d\n", socketFd.Udp, SdpUdpServerPort);
         DEBUG_INFO("[UDP] Wait connect request from EVCC\n");
     }
 
@@ -14337,6 +14330,12 @@ int SyncAcShreaMemory()
 					// Charging parameter
 					ShmSysConfigAndInfo->SysInfo.CcsChargingData[gun_index].AvailableChargingCurrent = ShmInternalComm->AvailableChargingCurrent = ShmCharger->gun_info[gun_index].targetCurrent;
 
+					// RCD status sync
+					ShmInternalComm->AC_RcdStatus = 0;
+
+					// EVSENotification
+					ShmInternalComm->AC_EVSENotification = 0;//ShmCharger->gun_info[gun_index].acCcsInfo.EVSENotification;
+
 					//========================================
 					// CCS -> CSU check
 					//========================================
@@ -14348,7 +14347,7 @@ int SyncAcShreaMemory()
 
 						switch(ShmCharger->gun_info[gun_index].acCcsInfo.PresentMsgFlowStatus)
 						{
-							case PowerDeliveryRequestStart ... SessionStopResponse:
+							case PowerDeliveryRequestStart ... SessionStopRequest:
 								ShmCharger->gun_info[gun_index].acCcsInfo.EVChargeProgress = HLC_START_MODE;
 								break;
 							case CM_SLAC_PARM_REQ ... PreChargeResponse:

+ 1 - 1
EVSE/Projects/AW-CCS/Apps/CCS/Module_CCS.h

@@ -43,7 +43,7 @@
 #define	QcaInterface						"eth1"
 #define SupportBcbToggle
 #define	SdpUdpServerPort					15118
-#define	SdpTcpServerPort					50438		//49152-65535
+#define	SdpTcpServerPort					55000		//49152-65535
 #define	IPV6_LINK_LOCAL_PREFIX				0xFE80
 #define V2GTP_MSG_RX_BUFFER_SIZE            (64*1024)   //65,536 = 65.5KB
 #define V2GTP_MSG_TX_BUFFER_SIZE            (64*1024)   //65,536 = 65.5KB

+ 71 - 57
EVSE/Projects/AW-CCS/Apps/CCS/v2g/api/api.c

@@ -108,7 +108,7 @@ int StoreLogV2GMsg(const char *fmt, ...)
 	tm=localtime(&CurrentTime);
 	gettimeofday(&tv, NULL); // get microseconds, 10^-6
 
-	sprintf(Buf,"echo -n \"[%04d.%02d.%02d %02d:%02d:%02d.%03ld]%s\" >>  /Storage/SystemLog/[%04d.%02d]CCS_V2G",
+	sprintf(Buf,"echo -n \"[%04d.%02d.%02d %02d:%02d:%02d.%03ld]%s\" >>  /Storage/SystemLog/[%04d.%02d]CCS_V2gLog",
 				tm->tm_year+1900,tm->tm_mon+1,tm->tm_mday,tm->tm_hour,tm->tm_min,tm->tm_sec,(tv.tv_usec/1000),
 				buffer,
 				tm->tm_year+1900,tm->tm_mon+1);
@@ -1536,67 +1536,82 @@ void SHM_Save_iso1_ChargeParameterDiscoveryReq(struct CcsData *shm_ccs, struct i
 	shm_msg->RequestedEnergyTransferMode = (unsigned char) exi->RequestedEnergyTransferMode;
 
 	//===== [BODY (2/9)] DC_EVChargeParameter of EVChargeParameter =====
-    //DC_EVStatus
-    shm_msg->DC_EVChargeParameter.DC_EVStatus.EVReady = (BOOL) exi->DC_EVChargeParameter.DC_EVStatus.EVReady;
-	shm_msg->DC_EVChargeParameter.DC_EVStatus.EVErrorCode = (unsigned char) exi->DC_EVChargeParameter.DC_EVStatus.EVErrorCode;
-	shm_msg->DC_EVChargeParameter.DC_EVStatus.EVRESSSOC = (unsigned char) exi->DC_EVChargeParameter.DC_EVStatus.EVRESSSOC;
-	sys->EvBatterySoc = (int) shm_msg->DC_EVChargeParameter.DC_EVStatus.EVRESSSOC;
+	if(((iso1EnergyTransferModeType)shm_msg->RequestedEnergyTransferMode != iso1EnergyTransferModeType_AC_single_phase_core) &&
+	   ((iso1EnergyTransferModeType)shm_msg->RequestedEnergyTransferMode != iso1EnergyTransferModeType_AC_three_phase_core))
+	{
+	    //DC_EVStatus
+	    shm_msg->DC_EVChargeParameter.DC_EVStatus.EVReady = (BOOL) exi->DC_EVChargeParameter.DC_EVStatus.EVReady;
+		shm_msg->DC_EVChargeParameter.DC_EVStatus.EVErrorCode = (unsigned char) exi->DC_EVChargeParameter.DC_EVStatus.EVErrorCode;
+		shm_msg->DC_EVChargeParameter.DC_EVStatus.EVRESSSOC = (unsigned char) exi->DC_EVChargeParameter.DC_EVStatus.EVRESSSOC;
+		sys->EvBatterySoc = (int) shm_msg->DC_EVChargeParameter.DC_EVStatus.EVRESSSOC;
+
+	    //[BODY (3/9)] EVMaximumCurrentLimit
+	    shm_msg->DC_EVChargeParameter.EVMaximumCurrentLimit.Multiplier = (int) exi->DC_EVChargeParameter.EVMaximumCurrentLimit.Multiplier;
+		//shm_msg->DC_EVChargeParameter.EVMaximumCurrentLimit.Unit = (unsigned char) exi->DC_EVChargeParameter.EVMaximumCurrentLimit.Unit;
+		shm_msg->DC_EVChargeParameter.EVMaximumCurrentLimit.Unit = A_ISO15118_2014;
+		shm_msg->DC_EVChargeParameter.EVMaximumCurrentLimit.Value = (short) exi->DC_EVChargeParameter.EVMaximumCurrentLimit.Value;
+		sys->EvBatteryMaxCurrent = ISO151182014PhyValDecode(shm_msg->DC_EVChargeParameter.EVMaximumCurrentLimit);
+
+	    //[BODY (4/9)] EVMaximumPowerLimit
+		shm_msg->DC_EVChargeParameter.EVMaximumPowerLimit.Multiplier = (int) exi->DC_EVChargeParameter.EVMaximumPowerLimit.Multiplier;
+		//shm_msg->DC_EVChargeParameter.EVMaximumPowerLimit.Unit = (unsigned char) exi->DC_EVChargeParameter.EVMaximumPowerLimit.Unit;
+		shm_msg->DC_EVChargeParameter.EVMaximumPowerLimit.Unit = W_ISO15118_2014;
+		shm_msg->DC_EVChargeParameter.EVMaximumPowerLimit.Value = (short) exi->DC_EVChargeParameter.EVMaximumPowerLimit.Value;
+		sys->EvBatteryMaxPower = ISO151182014PhyValDecode(shm_msg->DC_EVChargeParameter.EVMaximumPowerLimit);
+
+	    //[BODY (5/9)] EVMaximumVoltageLimit
+		shm_msg->DC_EVChargeParameter.EVMaximumVoltageLimit.Multiplier = (int) exi->DC_EVChargeParameter.EVMaximumVoltageLimit.Multiplier;
+		//shm_msg->DC_EVChargeParameter.EVMaximumVoltageLimit.Unit = (unsigned char) exi->DC_EVChargeParameter.EVMaximumVoltageLimit.Unit;
+		shm_msg->DC_EVChargeParameter.EVMaximumVoltageLimit.Unit = V_ISO15118_2014;
+		shm_msg->DC_EVChargeParameter.EVMaximumVoltageLimit.Value = (short) exi->DC_EVChargeParameter.EVMaximumVoltageLimit.Value;
+		sys->EvBatteryMaxVoltage = ISO151182014PhyValDecode(shm_msg->DC_EVChargeParameter.EVMaximumVoltageLimit);
+
+	    //[BODY (6/9)] EVEnergyCapacity
+		shm_msg->DC_EVChargeParameter.EVEnergyCapacity.Multiplier = (int) exi->DC_EVChargeParameter.EVEnergyCapacity.Multiplier;
+		shm_msg->DC_EVChargeParameter.EVEnergyCapacity.Unit = Wh_ISO15118_2014;
+		shm_msg->DC_EVChargeParameter.EVEnergyCapacity.Value = (short) exi->DC_EVChargeParameter.EVEnergyCapacity.Value;
+		sys->EvBatteryCapacity = ISO151182014PhyValDecode(shm_msg->DC_EVChargeParameter.EVEnergyCapacity);
+
+	    //[BODY (7/9)] EVEnergyRequest
+		shm_msg->DC_EVChargeParameter.EVEnergyRequest.Multiplier = (int) exi->DC_EVChargeParameter.EVEnergyRequest.Multiplier;
+		shm_msg->DC_EVChargeParameter.EVEnergyRequest.Unit = Wh_ISO15118_2014;
+		shm_msg->DC_EVChargeParameter.EVEnergyRequest.Value = (short) exi->DC_EVChargeParameter.EVEnergyRequest.Value;
+
+		sys->EvBatteryEngergyRequest = ISO151182014PhyValDecode(shm_msg->DC_EVChargeParameter.EVEnergyRequest);
+
+	    //[BODY (8/9)] FullSOC
+		if (exi->DC_EVChargeParameter.FullSOC_isUsed != 0 && exi->DC_EVChargeParameter.FullSOC != 0)
+		{
+			shm_msg->DC_EVChargeParameter.FullSOC = (unsigned char) exi->DC_EVChargeParameter.FullSOC;
+		}
+		else
+		{
+			shm_msg->DC_EVChargeParameter.FullSOC = (unsigned char) exi->DC_EVChargeParameter.BulkSOC;
+		}
 
-    //[BODY (3/9)] EVMaximumCurrentLimit
-    shm_msg->DC_EVChargeParameter.EVMaximumCurrentLimit.Multiplier =
-			(int) exi->DC_EVChargeParameter.EVMaximumCurrentLimit.Multiplier;
-	//shm_msg->DC_EVChargeParameter.EVMaximumCurrentLimit.Unit = (unsigned char) exi->DC_EVChargeParameter.EVMaximumCurrentLimit.Unit;
-	shm_msg->DC_EVChargeParameter.EVMaximumCurrentLimit.Unit = A_ISO15118_2014;
-	shm_msg->DC_EVChargeParameter.EVMaximumCurrentLimit.Value =
-			(short) exi->DC_EVChargeParameter.EVMaximumCurrentLimit.Value;
-	sys->EvBatteryMaxCurrent = ISO151182014PhyValDecode(shm_msg->DC_EVChargeParameter.EVMaximumCurrentLimit);
+		//[BODY (9/9)] BulkSOC
+		shm_msg->DC_EVChargeParameter.BulkSOC = (unsigned char) exi->DC_EVChargeParameter.BulkSOC;
+	}
+	else
+	{
+		shm_msg->AC_EVChargeParameter.EAmount.Multiplier = (int)exi->AC_EVChargeParameter.EAmount.Multiplier;
+		shm_msg->AC_EVChargeParameter.EAmount.Unit = Wh_ISO15118_2014;
+		shm_msg->AC_EVChargeParameter.EAmount.Value = (short) exi->AC_EVChargeParameter.EAmount.Value;
 
-    //[BODY (4/9)] EVMaximumPowerLimit
-	shm_msg->DC_EVChargeParameter.EVMaximumPowerLimit.Multiplier =
-			(int) exi->DC_EVChargeParameter.EVMaximumPowerLimit.Multiplier;
-	//shm_msg->DC_EVChargeParameter.EVMaximumPowerLimit.Unit = (unsigned char) exi->DC_EVChargeParameter.EVMaximumPowerLimit.Unit;
-	shm_msg->DC_EVChargeParameter.EVMaximumPowerLimit.Unit = W_ISO15118_2014;
-	shm_msg->DC_EVChargeParameter.EVMaximumPowerLimit.Value =
-			(short) exi->DC_EVChargeParameter.EVMaximumPowerLimit.Value;
-	sys->EvBatteryMaxPower = ISO151182014PhyValDecode(shm_msg->DC_EVChargeParameter.EVMaximumPowerLimit);
+		shm_msg->AC_EVChargeParameter.EVMaxCurrent.Multiplier = (int)exi->AC_EVChargeParameter.EVMaxCurrent.Multiplier;
+		shm_msg->AC_EVChargeParameter.EVMaxCurrent.Unit = A_ISO15118_2014;
+		shm_msg->AC_EVChargeParameter.EVMaxCurrent.Value = (short) exi->AC_EVChargeParameter.EVMaxCurrent.Value;
 
-    //[BODY (5/9)] EVMaximumVoltageLimit
-	shm_msg->DC_EVChargeParameter.EVMaximumVoltageLimit.Multiplier =
-			(int) exi->DC_EVChargeParameter.EVMaximumVoltageLimit.Multiplier;
-	//shm_msg->DC_EVChargeParameter.EVMaximumVoltageLimit.Unit = (unsigned char) exi->DC_EVChargeParameter.EVMaximumVoltageLimit.Unit;
-	shm_msg->DC_EVChargeParameter.EVMaximumVoltageLimit.Unit = V_ISO15118_2014;
-	shm_msg->DC_EVChargeParameter.EVMaximumVoltageLimit.Value =
-			(short) exi->DC_EVChargeParameter.EVMaximumVoltageLimit.Value;
-	sys->EvBatteryMaxVoltage = ISO151182014PhyValDecode(shm_msg->DC_EVChargeParameter.EVMaximumVoltageLimit);
+		shm_msg->AC_EVChargeParameter.EVMinCurrent.Multiplier = (int)exi->AC_EVChargeParameter.EVMinCurrent.Multiplier;
+		shm_msg->AC_EVChargeParameter.EVMinCurrent.Unit = A_ISO15118_2014;
+		shm_msg->AC_EVChargeParameter.EVMinCurrent.Value = (short) exi->AC_EVChargeParameter.EVMinCurrent.Value;
 
-    //[BODY (6/9)] EVEnergyCapacity
-	shm_msg->DC_EVChargeParameter.EVEnergyCapacity.Multiplier =
-			(int) exi->DC_EVChargeParameter.EVEnergyCapacity.Multiplier;
-	shm_msg->DC_EVChargeParameter.EVEnergyCapacity.Unit = Wh_ISO15118_2014;
-	shm_msg->DC_EVChargeParameter.EVEnergyCapacity.Value =
-			(short) exi->DC_EVChargeParameter.EVEnergyCapacity.Value;
-	sys->EvBatteryCapacity = ISO151182014PhyValDecode(shm_msg->DC_EVChargeParameter.EVEnergyCapacity);
+		shm_msg->AC_EVChargeParameter.EVMaxVoltage.Multiplier = (int)exi->AC_EVChargeParameter.EVMaxVoltage.Multiplier;
+		shm_msg->AC_EVChargeParameter.EVMaxVoltage.Unit = V_ISO15118_2014;
+		shm_msg->AC_EVChargeParameter.EVMaxVoltage.Value = (short) exi->AC_EVChargeParameter.EVMaxVoltage.Value;
 
-    //[BODY (7/9)] EVEnergyRequest
-	shm_msg->DC_EVChargeParameter.EVEnergyRequest.Multiplier =
-			(int) exi->DC_EVChargeParameter.EVEnergyRequest.Multiplier;
-	shm_msg->DC_EVChargeParameter.EVEnergyRequest.Unit = Wh_ISO15118_2014;
-	shm_msg->DC_EVChargeParameter.EVEnergyRequest.Value =
-			(short) exi->DC_EVChargeParameter.EVEnergyRequest.Value;
-	sys->EvBatteryEngergyRequest = ISO151182014PhyValDecode(shm_msg->DC_EVChargeParameter.EVEnergyRequest);
-
-    //[BODY (8/9)] FullSOC
-	if (exi->DC_EVChargeParameter.FullSOC_isUsed != 0 && exi->DC_EVChargeParameter.FullSOC != 0)
-	{
-		shm_msg->DC_EVChargeParameter.FullSOC = (unsigned char) exi->DC_EVChargeParameter.FullSOC;
+		shm_msg->AC_EVChargeParameter.DepartureTime = (unsigned int)exi->AC_EVChargeParameter.DepartureTime;
 	}
-	else
-	{
-		shm_msg->DC_EVChargeParameter.FullSOC = (unsigned char) exi->DC_EVChargeParameter.BulkSOC;
-	}
-
-    //[BODY (9/9)] BulkSOC
-    shm_msg->DC_EVChargeParameter.BulkSOC = (unsigned char) exi->DC_EVChargeParameter.BulkSOC;
 }
 
 /*===========================================================================
@@ -2553,7 +2568,6 @@ void SHM_Read_iso1_ChargeParameterDiscoveryRes(struct iso1EXIDocument *exi_doc_I
 		//EVSEMinimumVoltageLimit
 		SHM_Read_iso1PhysicalValueType(&out_dc_para->EVSEMinimumVoltageLimit, &in_dc_para->EVSEMinimumVoltageLimit);
 
-
 		//EVSEMinimumCurrentLimit
 		SHM_Read_iso1PhysicalValueType(&out_dc_para->EVSEMinimumCurrentLimit, &in_dc_para->EVSEMinimumCurrentLimit);
 

+ 2 - 1
EVSE/Projects/AW-CCS/Apps/main.c

@@ -2999,6 +2999,7 @@ int upgrade_check()
 					{
 						switch(ShmCharger->fwUpgradeInfo.fwType)
 						{
+							case CSU_MLO:
 							case CSU_BOOTLOADER:
 							case CSU_KERNEL_CONFIGURATION:
 							case CSU_KERNEL_IMAGE:
@@ -6198,7 +6199,7 @@ int main(void)
 					   (ShmCharger->gun_info[gun_index].isCCSWaitChangeDuty == ON) &&
 					   (ShmCharger->gun_info[gun_index].acCcsInfo.CpSetPWMDuty == CCS_PWM_DUTY_100))
 					{
-						DEBUG_INFO("Set PWM duty 100% go to SYS_MODE_TERMINATING.\n");
+						DEBUG_INFO("Set PWM duty 100%% go to SYS_MODE_TERMINATING.\n");
 
 						ShmCharger->gun_info[gun_index].primaryMcuCp_Pwn_Duty.max_current = CCS_PWM_DUTY_100;
 						ShmCharger->gun_info[gun_index].mcuFlag.isSetCpPwmDuty = ON;