Bläddra i källkod

2021-05-20 / Eason Yang
Action :
1.Improve : checkRfidAuthrize() function.
2.Added : Variable isAuthrizing & isGetAuthResult.
3.Improve : Authorizing display change logic.

File :
1. main.c
Action 1

2. main.h
Action 2

3. Module_LcmControl.c
Action 3

Version :D0.53.XX.XXXX.XX

8009 3 år sedan
förälder
incheckning
c43dc10a1f

+ 77 - 58
EVSE/Projects/AW-CCS/Apps/LCM/Module_LcmControl.c

@@ -72,16 +72,19 @@ void setBillingFromWebsite();
 //=======================================
 // Declare Timer
 //=======================================
-#define TMR_IDX_BATTERY					0
-#define TMR_IDX_CONNECTION				1
-#define TMR_IDX_PLUGIN					2
-#define TMR_IDX_ALARM					3
-#define TMR_IDX_PRICE					4
-#define TMR_IDX_EMULATOR				5
-#define TMR_IDX_6						6
-#define TMR_IDX_7						7
-#define TMR_IDX_8						8
-#define TMR_IDX_9 						9
+enum TMR_IDX
+{
+	TMR_IDX_BATTERY=0,
+	TMR_IDX_CONNECTION,
+	TMR_IDX_PLUGIN,
+	TMR_IDX_ALARM,
+	TMR_IDX_PRICE,
+	TMR_IDX_EMULATOR,
+	TMR_IDX_6,
+	TMR_IDX_7,
+	TMR_IDX_8,
+	TMR_IDX_SHOW_AUTH_RESULT
+};
 
 struct timeb					startTime[AC_QUANTITY][10];
 
@@ -90,6 +93,7 @@ struct timeb					startTime[AC_QUANTITY][10];
 #define TIME_ANIMATION_CONNECTION		1000
 #define TIME_ANIMATION_ALARM			5000
 #define TIME_REFRESH_TIME				2000
+#define TIME_AUTH_RESULT_TIME			5000
 
 //=======================================
 // Declare Variable
@@ -361,7 +365,7 @@ void page_preparing(uint8_t gun_index, uint8_t system_mode)
 
 void page_charging(uint8_t gun_index, uint8_t system_mode)
 {
-	if((getCurrentPage() != SYSTEM_SCREEN_CHARGING) && (ShmCharger->gun_info[gun_index].resultAuthorization == DEFAULT_RFID))
+	if((getCurrentPage() != SYSTEM_SCREEN_CHARGING) && (!ShmCharger->isAuthrizing && !ShmCharger->isGetAuthResult))
 	{
 		setCurrentPage(SYSTEM_SCREEN_CHARGING);
 		setDefaultValue(gun_index, system_mode);
@@ -372,7 +376,7 @@ void page_charging(uint8_t gun_index, uint8_t system_mode)
 	}
 	else
 	{
-		setAuthorizationPage(gun_index);
+		//setAuthorizationPage(gun_index);
 		setConnectionAnimation(gun_index, system_mode);
 		setBatteryAnimation(gun_index, system_mode);
 		setPresentChargedDuration(gun_index);
@@ -435,7 +439,7 @@ void page_complete(uint8_t gun_index, uint8_t system_mode)
 
 void page_terminating(uint8_t gun_index, uint8_t system_mode)
 {
-	if((getCurrentPage() != SYSTEM_SCREEN_TERMINATING) && (ShmCharger->gun_info[gun_index].resultAuthorization == DEFAULT_RFID))
+	if((getCurrentPage() != SYSTEM_SCREEN_TERMINATING) && (!ShmCharger->isAuthrizing && !ShmCharger->isGetAuthResult))
 	{
 		setCurrentPage(SYSTEM_SCREEN_TERMINATING);
 		setDefaultValue(gun_index, system_mode);
@@ -443,7 +447,7 @@ void page_terminating(uint8_t gun_index, uint8_t system_mode)
 	}
 	else
 	{
-		setAuthorizationPage(gun_index);
+		//setAuthorizationPage(gun_index);
 		setConnectionAnimation(gun_index, system_mode);
 		setBatteryAnimation(gun_index, system_mode);
 		setPresentChargedDuration(gun_index);
@@ -2074,53 +2078,68 @@ int main(void)
 			previousMode = ShmSysConfigAndInfo->SysInfo.AcChargingData[ShmCharger->gun_selectd].SystemStatus;
 		}
 
-		switch(ShmSysConfigAndInfo->SysInfo.AcChargingData[ShmCharger->gun_selectd].SystemStatus)
+		if(ShmCharger->isAuthrizing || ShmCharger->isGetAuthResult)
 		{
-			case SYS_MODE_BOOTING:
-				page_booting();
-				break;
-			case SYS_MODE_IDLE:
-				page_idle(ShmCharger->gun_selectd, ShmSysConfigAndInfo->SysInfo.AcChargingData[ShmCharger->gun_selectd].SystemStatus);
-				break;
-			case SYS_MODE_AUTHORIZING:
+			if(DiffTimebWithNow(startTime[ShmCharger->gun_selectd][TMR_IDX_SHOW_AUTH_RESULT]) >= TIME_AUTH_RESULT_TIME)
+				ShmCharger->isGetAuthResult = FALSE;
+
+			if(DiffTimebWithNow(startTime[ShmCharger->gun_selectd][TMR_IDX_SHOW_AUTH_RESULT]) < TIME_AUTH_RESULT_TIME)
 				page_authorizing(ShmCharger->gun_selectd);
-				break;
-			case SYS_MODE_PREPARING:
+			else if((ShmSysConfigAndInfo->SysInfo.AcChargingData[ShmCharger->gun_selectd].SystemStatus == SYS_MODE_IDLE) && (ShmCharger->gun_info[ShmCharger->gun_selectd].resultAuthorization == VALIDATED_RFID))
 				page_preparing(ShmCharger->gun_selectd, ShmSysConfigAndInfo->SysInfo.AcChargingData[ShmCharger->gun_selectd].SystemStatus);
-				break;
-			case SYS_MODE_CHARGING:
-				page_charging(ShmCharger->gun_selectd, ShmSysConfigAndInfo->SysInfo.AcChargingData[ShmCharger->gun_selectd].SystemStatus);
-				break;
-			case SYS_MODE_TERMINATING:
-				page_terminating(ShmCharger->gun_selectd, ShmSysConfigAndInfo->SysInfo.AcChargingData[ShmCharger->gun_selectd].SystemStatus);
-				break;
-			case SYS_MODE_COMPLETE:
-				page_complete(ShmCharger->gun_selectd, ShmSysConfigAndInfo->SysInfo.AcChargingData[ShmCharger->gun_selectd].SystemStatus);
-				break;
-			case SYS_MODE_ALARM:
-				page_alarm();
-				break;
-			case SYS_MODE_FAULT:
-				page_fault();
-				break;
-			case SYS_MODE_MAINTAIN:
-				page_maintain();
-				break;
-			case SYS_MODE_UPDATE:
-				page_update();
-				break;
-			case SYS_MODE_RESERVATION:
-				page_reservation();
-				break;
-			case SYS_MODE_BOOKING:
-				page_booking();
-				break;
-			case SYS_MODE_DEBUG:
-				page_debug();
-				break;
-			default:
-				page_unknown();
-				break;
+		}
+		else
+		{
+			ftime(&startTime[ShmCharger->gun_selectd][TMR_IDX_SHOW_AUTH_RESULT]);
+
+			switch(ShmSysConfigAndInfo->SysInfo.AcChargingData[ShmCharger->gun_selectd].SystemStatus)
+			{
+				case SYS_MODE_BOOTING:
+					page_booting();
+					break;
+				case SYS_MODE_IDLE:
+					page_idle(ShmCharger->gun_selectd, ShmSysConfigAndInfo->SysInfo.AcChargingData[ShmCharger->gun_selectd].SystemStatus);
+					break;
+				case SYS_MODE_AUTHORIZING:
+					//page_authorizing(ShmCharger->gun_selectd);
+					break;
+				case SYS_MODE_PREPARING:
+					page_preparing(ShmCharger->gun_selectd, ShmSysConfigAndInfo->SysInfo.AcChargingData[ShmCharger->gun_selectd].SystemStatus);
+					break;
+				case SYS_MODE_CHARGING:
+					page_charging(ShmCharger->gun_selectd, ShmSysConfigAndInfo->SysInfo.AcChargingData[ShmCharger->gun_selectd].SystemStatus);
+					break;
+				case SYS_MODE_TERMINATING:
+					page_terminating(ShmCharger->gun_selectd, ShmSysConfigAndInfo->SysInfo.AcChargingData[ShmCharger->gun_selectd].SystemStatus);
+					break;
+				case SYS_MODE_COMPLETE:
+					page_complete(ShmCharger->gun_selectd, ShmSysConfigAndInfo->SysInfo.AcChargingData[ShmCharger->gun_selectd].SystemStatus);
+					break;
+				case SYS_MODE_ALARM:
+					page_alarm();
+					break;
+				case SYS_MODE_FAULT:
+					page_fault();
+					break;
+				case SYS_MODE_MAINTAIN:
+					page_maintain();
+					break;
+				case SYS_MODE_UPDATE:
+					page_update();
+					break;
+				case SYS_MODE_RESERVATION:
+					page_reservation();
+					break;
+				case SYS_MODE_BOOKING:
+					page_booking();
+					break;
+				case SYS_MODE_DEBUG:
+					page_debug();
+					break;
+				default:
+					page_unknown();
+					break;
+			}
 		}
 
 		page_header(ShmCharger->gun_selectd, ShmSysConfigAndInfo->SysInfo.AcChargingData[ShmCharger->gun_selectd].SystemStatus);

+ 87 - 72
EVSE/Projects/AW-CCS/Apps/main.c

@@ -1479,6 +1479,7 @@ void InitGPIO()
 	system("echo 0 > /sys/class/gpio/gpio115/value");
 	sleep(3);
 	system("echo 1 > /sys/class/gpio/gpio115/value");
+	sleep(1);
 
 	/*RFID RST: GPIO1_30 => H:OFF; L:ON*/
 	system("echo 62 > /sys/class/gpio/export");
@@ -3766,21 +3767,66 @@ void checkRemoteUpgradeStatus()
 
 void checkRfidAuthrize()
 {
-	static uint8_t isAuthrizing = FALSE;
-	static uint8_t isShowResult = FALSE;
+	static uint8_t isCheckdResult = FALSE;
 
-	if(!isAuthrizing)
+	if(!ShmCharger->isAuthrizing)
 	{
 		// Read RFID
 		if(GetCardSerialNumber() != FAIL)
 		{
 			uint8_t isSnStart = FALSE;
 
+			if(ShmSysConfigAndInfo->SysConfig.RfidCardNumEndian)
+			{
+				// Big endian
+				switch(rfid.snType)
+				{
+					case RFID_SN_TYPE_6BYTE:
+						sprintf((char*)ShmSysConfigAndInfo->SysConfig.UserId, "%02X%02X%02X%02X%02X%02X", rfid.currentCard[0], rfid.currentCard[1], rfid.currentCard[2], rfid.currentCard[3], rfid.currentCard[4], rfid.currentCard[5]);
+						break;
+					case RFID_SN_TYPE_7BYTE:
+						sprintf((char*)ShmSysConfigAndInfo->SysConfig.UserId, "%02X%02X%02X%02X%02X%02X%02X", rfid.currentCard[0], rfid.currentCard[1], rfid.currentCard[2], rfid.currentCard[3], rfid.currentCard[4], rfid.currentCard[5], rfid.currentCard[6]);
+						break;
+					case RFID_SN_TYPE_10BYTE:
+						sprintf((char*)ShmSysConfigAndInfo->SysConfig.UserId, "%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X", rfid.currentCard[0], rfid.currentCard[1], rfid.currentCard[2], rfid.currentCard[3], rfid.currentCard[4], rfid.currentCard[5], rfid.currentCard[6], rfid.currentCard[7], rfid.currentCard[8], rfid.currentCard[9]);
+						break;
+					case RFID_SN_TYPE_4BYTE:
+					default:
+						sprintf((char*)ShmSysConfigAndInfo->SysConfig.UserId, "%02X%02X%02X%02X", rfid.currentCard[0], rfid.currentCard[1], rfid.currentCard[2], rfid.currentCard[3]);
+						break;
+				}
+			}
+			else
+			{
+				// Little endian
+				switch(rfid.snType)
+				{
+					case RFID_SN_TYPE_6BYTE:
+						sprintf((char*)ShmSysConfigAndInfo->SysConfig.UserId, "%02X%02X%02X%02X%02X%02X", rfid.currentCard[5], rfid.currentCard[4], rfid.currentCard[3], rfid.currentCard[2], rfid.currentCard[1], rfid.currentCard[0]);
+						break;
+					case RFID_SN_TYPE_7BYTE:
+						sprintf((char*)ShmSysConfigAndInfo->SysConfig.UserId, "%02X%02X%02X%02X%02X%02X%02X", rfid.currentCard[6], rfid.currentCard[5], rfid.currentCard[4], rfid.currentCard[3], rfid.currentCard[2], rfid.currentCard[1], rfid.currentCard[0]);
+						break;
+					case RFID_SN_TYPE_10BYTE:
+						sprintf((char*)ShmSysConfigAndInfo->SysConfig.UserId, "%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X", rfid.currentCard[9], rfid.currentCard[8], rfid.currentCard[7], rfid.currentCard[6], rfid.currentCard[5], rfid.currentCard[4], rfid.currentCard[3], rfid.currentCard[2], rfid.currentCard[1], rfid.currentCard[0]);
+						break;
+					case RFID_SN_TYPE_4BYTE:
+					default:
+						sprintf((char*)ShmSysConfigAndInfo->SysConfig.UserId, "%02X%02X%02X%02X", rfid.currentCard[3], rfid.currentCard[2], rfid.currentCard[1], rfid.currentCard[0]);
+						break;
+				}
+			}
+			DEBUG_INFO("Authorize request User Id : %s\n", ShmSysConfigAndInfo->SysConfig.UserId);
+
+			for(int gun_index = 0;gun_index<AC_QUANTITY;gun_index++)
+				ShmCharger->gun_info[gun_index].resultAuthorization = UNKNOW_RFID;
+
 			// Check SN already start
 			for(int gun_index = 0;gun_index<AC_QUANTITY;gun_index++)
 			{
 				if(isMatchStartUser(gun_index))
 				{
+
 					DEBUG_INFO("%s running on connector-%02d.\n", ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].StartUserId, gun_index);
 					isSnStart = TRUE;
 					ShmCharger->gun_info[gun_index].rfidReq = ON;
@@ -3796,54 +3842,13 @@ void checkRfidAuthrize()
 			// Request authorize if isSnStart is false
 			if(!isSnStart)
 			{
-				if(ShmSysConfigAndInfo->SysConfig.RfidCardNumEndian)
-				{
-					// Big endian
-					switch(rfid.snType)
-					{
-						case RFID_SN_TYPE_6BYTE:
-							sprintf((char*)ShmSysConfigAndInfo->SysConfig.UserId, "%02X%02X%02X%02X%02X%02X", rfid.currentCard[0], rfid.currentCard[1], rfid.currentCard[2], rfid.currentCard[3], rfid.currentCard[4], rfid.currentCard[5]);
-							break;
-						case RFID_SN_TYPE_7BYTE:
-							sprintf((char*)ShmSysConfigAndInfo->SysConfig.UserId, "%02X%02X%02X%02X%02X%02X%02X", rfid.currentCard[0], rfid.currentCard[1], rfid.currentCard[2], rfid.currentCard[3], rfid.currentCard[4], rfid.currentCard[5], rfid.currentCard[6]);
-							break;
-						case RFID_SN_TYPE_10BYTE:
-							sprintf((char*)ShmSysConfigAndInfo->SysConfig.UserId, "%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X", rfid.currentCard[0], rfid.currentCard[1], rfid.currentCard[2], rfid.currentCard[3], rfid.currentCard[4], rfid.currentCard[5], rfid.currentCard[6], rfid.currentCard[7], rfid.currentCard[8], rfid.currentCard[9]);
-							break;
-						case RFID_SN_TYPE_4BYTE:
-						default:
-							sprintf((char*)ShmSysConfigAndInfo->SysConfig.UserId, "%02X%02X%02X%02X", rfid.currentCard[0], rfid.currentCard[1], rfid.currentCard[2], rfid.currentCard[3]);
-							break;
-					}
-				}
-				else
-				{
-					// Little endian
-					switch(rfid.snType)
-					{
-						case RFID_SN_TYPE_6BYTE:
-							sprintf((char*)ShmSysConfigAndInfo->SysConfig.UserId, "%02X%02X%02X%02X%02X%02X", rfid.currentCard[5], rfid.currentCard[4], rfid.currentCard[3], rfid.currentCard[2], rfid.currentCard[1], rfid.currentCard[0]);
-							break;
-						case RFID_SN_TYPE_7BYTE:
-							sprintf((char*)ShmSysConfigAndInfo->SysConfig.UserId, "%02X%02X%02X%02X%02X%02X%02X", rfid.currentCard[6], rfid.currentCard[5], rfid.currentCard[4], rfid.currentCard[3], rfid.currentCard[2], rfid.currentCard[1], rfid.currentCard[0]);
-							break;
-						case RFID_SN_TYPE_10BYTE:
-							sprintf((char*)ShmSysConfigAndInfo->SysConfig.UserId, "%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X", rfid.currentCard[9], rfid.currentCard[8], rfid.currentCard[7], rfid.currentCard[6], rfid.currentCard[5], rfid.currentCard[4], rfid.currentCard[3], rfid.currentCard[2], rfid.currentCard[1], rfid.currentCard[0]);
-							break;
-						case RFID_SN_TYPE_4BYTE:
-						default:
-							sprintf((char*)ShmSysConfigAndInfo->SysConfig.UserId, "%02X%02X%02X%02X", rfid.currentCard[3], rfid.currentCard[2], rfid.currentCard[1], rfid.currentCard[0]);
-							break;
-					}
-				}
-				DEBUG_INFO("Authorize request User Id : %s\n", ShmSysConfigAndInfo->SysConfig.UserId);
-
 				ftime(&startTime[0][TMR_IDX_AUTH]);
 				ocpp_set_auth_conf(OFF);
 				ocpp_set_auth_req(ON, "ISO14443");
 				setLedMotion(0,LED_ACTION_AUTHED);
-				isAuthrizing = TRUE;
-				isShowResult = FALSE;
+				ShmCharger->isAuthrizing = TRUE;
+				ShmCharger->isGetAuthResult = FALSE;
+				isCheckdResult = FALSE;
 				sleep(1);
 			}
 		}
@@ -3864,7 +3869,7 @@ void checkRfidAuthrize()
 			setSpeaker(ON,SPEAKER_INTERVAL_3COUNT);
 			sleep(3);
 
-			isAuthrizing = FALSE;
+			ShmCharger->isAuthrizing = FALSE;
 		}
 		else
 		{
@@ -3877,12 +3882,21 @@ void checkRfidAuthrize()
 				   (!ocpp_get_connection_status() && (ShmSysConfigAndInfo->SysConfig.OfflinePolicy == OFF_POLICY_FREE)) ||
 				   (!ocpp_get_connection_status() && (isValidLocalWhiteCard() == PASS) && (ShmSysConfigAndInfo->SysConfig.OfflinePolicy == OFF_POLICY_LOCALLIST)))
 				{
-					if(!isShowResult)
+					if(!isCheckdResult)
 					{
 						DEBUG_INFO("Authorize pass.\n");
 						setSpeaker(ON, SPEAKER_SHORT);
 						ftime(&startTime[0][TMR_IDX_GUN_DETECT]);
-						isShowResult = TRUE;
+						ShmCharger->isGetAuthResult = TRUE;
+						isCheckdResult = TRUE;
+						
+						if(strcmp((char *)&ShmSysConfigAndInfo->SysConfig.OcppServerURL,"") == 0)
+						{
+							ocpp_set_auth_conf(ON);
+						}
+
+						for(int gun_index = 0;gun_index<AC_QUANTITY;gun_index++)
+							ShmCharger->gun_info[gun_index].resultAuthorization = VALIDATED_RFID;
 					}
 
 					if(DiffTimebWithNow(startTime[0][TMR_IDX_GUN_DETECT]) < (ocpp_get_connection_timeout()*1000))
@@ -3899,10 +3913,9 @@ void checkRfidAuthrize()
 							   )
 							{
 								DEBUG_INFO("Connector-%02d action detect.\n", gun_index);
+								ShmCharger->isAuthrizing = FALSE;
 
-								ShmCharger->gun_info[gun_index].resultAuthorization = VALIDATED_RFID;
 								ShmCharger->gun_info[gun_index].rfidReq = ON;
-								isAuthrizing = FALSE;
 
 								break;
 							}
@@ -3911,14 +3924,18 @@ void checkRfidAuthrize()
 					else
 					{
 						DEBUG_INFO("Connector action detect timeout.\n");
+						ShmCharger->isAuthrizing = FALSE;
+						ShmCharger->isGetAuthResult = TRUE;
+
 						for(int gun_index = 0;gun_index<AC_QUANTITY;gun_index++)
 							setLedMotion(gun_index,LED_ACTION_IDLE);
-						isAuthrizing = FALSE;
 					}
 				}
 				else
 				{
 					DEBUG_INFO("Authorize fail.\n");
+					ShmCharger->isAuthrizing = FALSE;
+					ShmCharger->isGetAuthResult = TRUE;
 
 					for(int gun_index = 0;gun_index<AC_QUANTITY;gun_index++)
 					{
@@ -3933,8 +3950,6 @@ void checkRfidAuthrize()
 					{
 						setLedMotion(gun_index,LED_ACTION_IDLE);
 					}
-
-					isAuthrizing = FALSE;
 				}
 			}
 		}
@@ -4708,7 +4723,7 @@ int main(void)
 					{
 						DEBUG_INFO("Enter Socket-E Mode charging.\n");
 						ShmCharger->gun_info[gun_index].chargingMode = CHARGING_MODE_SOCKETE;
-						if(ShmCharger->gun_info[gun_index].primaryMcuState.socket_e.isSocketEPinOn == CP_STATE_C)
+						if(ShmCharger->gun_info[gun_index].primaryMcuState.socket_e.isSocketEPinOn == ON)
 							setRelay(gun_index,ON);
 						ocpp_copy_userid_to_starttransaction(gun_index);
 						ocpp_set_starttransaction_req(gun_index, ON);
@@ -5062,7 +5077,10 @@ int main(void)
 					}
 
 					// End authorize pass
-					if(((ShmCharger->gun_info[gun_index].rfidReq == ON) && ocpp_get_auth_result(YES, gun_index)) ||
+					if(((ShmCharger->gun_info[gun_index].rfidReq == ON) &&isMatchStartUser(gun_index)) ||
+					   ((ShmCharger->gun_info[gun_index].rfidReq == ON) && ocpp_get_auth_result(YES, gun_index)) ||
+					   (!ocpp_get_connection_status() && (ShmSysConfigAndInfo->SysConfig.OfflinePolicy == OFF_POLICY_FREE) && (ShmCharger->gun_info[gun_index].rfidReq == ON)) ||
+					   (!ocpp_get_connection_status() && (isValidLocalWhiteCard() == PASS) && (ShmSysConfigAndInfo->SysConfig.OfflinePolicy == OFF_POLICY_LOCALLIST) && (ShmCharger->gun_info[gun_index].rfidReq == ON)) ||
 					   (ShmCharger->gun_info[gun_index].bleConfigData.isRequestStop == ON) ||
 					   ocpp_get_remotestop(gun_index) ||
 					   (ocpp_get_connection_status() && !ocpp_get_starttransaction_result(gun_index)) ||
@@ -5079,22 +5097,19 @@ int main(void)
 						setRelay(gun_index, OFF);
 						setLedMotion(gun_index, LED_ACTION_STOP);
 
-						if(!ShmCharger->gun_info[gun_index].primaryMcuState.relay_state)
+						if(ShmCharger->gun_info[gun_index].chargingMode == CHARGING_MODE_BS)
 						{
-							if(ShmCharger->gun_info[gun_index].chargingMode == CHARGING_MODE_BS)
-							{
-								checkStopReason(gun_index);
-								setChargerMode(gun_index, SYS_MODE_COMPLETE);
-							}
-							else if(ShmCharger->gun_info[gun_index].chargingMode == CHARGING_MODE_HLC)
-							{
-								//setChargerMode(gun_index, SYS_MODE_COMPLETE);
-								//Cancel CCS task negotiating
-								ShmCharger->gun_info[gun_index].acCcsInfo.ChargingPermission = OFF;
-								ShmCharger->gun_info[gun_index].acCcsInfo.EVSENotification = NOTIFICATION_STOP;
-								setRelay(gun_index,OFF);
-								ShmCharger->gun_info[gun_index].isCCSWaitChangeDuty = ON;
-							}
+							checkStopReason(gun_index);
+							setChargerMode(gun_index, SYS_MODE_COMPLETE);
+						}
+						else if(ShmCharger->gun_info[gun_index].chargingMode == CHARGING_MODE_HLC)
+						{
+							//setChargerMode(gun_index, SYS_MODE_COMPLETE);
+							//Cancel CCS task negotiating
+							ShmCharger->gun_info[gun_index].acCcsInfo.ChargingPermission = OFF;
+							ShmCharger->gun_info[gun_index].acCcsInfo.EVSENotification = NOTIFICATION_STOP;
+							setRelay(gun_index,OFF);
+							ShmCharger->gun_info[gun_index].isCCSWaitChangeDuty = ON;
 						}
 					}
 					else

+ 2 - 0
EVSE/Projects/AW-CCS/Apps/main.h

@@ -734,6 +734,8 @@ struct Charger
 	uint8_t		 			isUpdateSuccess:1;
 	uint8_t		 			isCcsEnable:1;
 	uint8_t					isLcdOn:1;
+	uint8_t					isAuthrizing:1;
+	uint8_t					isGetAuthResult:1;
 };
 
 #endif /* CONFIG_MAIN_H_ */

BIN
EVSE/Projects/AW-CCS/Images/FactoryDefaultConfig.bin


BIN
EVSE/Projects/AW-CCS/Images/ramdisk.gz


BIN
EVSE/rootfs/root/Module_Payment


BIN
EVSE/rootfs/root/OcppBackend20