فهرست منبع

[Improve][AW-CCS][main]

2021.05.18 / Folus Wen

Actions:
1. Authorization logic improve for multi connector.

Files:
1. As follow commit history

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

Hardware PWB P/N : XXXXXXX
Hardware Version : XXXXXXX
FolusWen 3 سال پیش
والد
کامیت
ad0e1ec94e
2فایلهای تغییر یافته به همراه261 افزوده شده و 531 حذف شده
  1. 260 530
      EVSE/Projects/AW-CCS/Apps/main.c
  2. 1 1
      EVSE/Projects/AW-CCS/Apps/main.h

+ 260 - 530
EVSE/Projects/AW-CCS/Apps/main.c

@@ -568,58 +568,80 @@ uint8_t ocpp_get_auth_conf()
 	return result;
 }
 
-uint8_t ocpp_get_auth_result(uint8_t gun_index)
+uint8_t ocpp_get_auth_result(uint8_t isValidParent, ...)
 {
 	uint8_t result = OFF;
+	va_list args;
+	uint8_t gun_index;
 
-	switch(ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].SystemStatus)
+	if(isValidParent)
 	{
-		case SYS_MODE_AUTHORIZING:
-			if(ShmSysConfigAndInfo->SysInfo.OcppRunningVer == OCPP_RUNNING_VERSION_16)
-			{
-				if((strcmp((char*)ShmOCPP16Data->Authorize.ResponseIdTagInfo.Status, "Accepted")==0))
-					result = PASS;
-			}
-			else if(ShmSysConfigAndInfo->SysInfo.OcppRunningVer == OCPP_RUNNING_VERSION_20)
-			{
-				if((strcmp((char*)ShmOCPP20Data->Authorize.Response_idTokenInfo.status, "Accepted")==0))
-					result = PASS;
-			}
+		va_start(args, isValidParent);
+		gun_index = va_arg(args, int);
+		va_end(args);
 
-			break;
-		case SYS_MODE_CHARGING:
-		case SYS_MODE_TERMINATING:
-			if(ShmSysConfigAndInfo->SysInfo.OcppRunningVer == OCPP_RUNNING_VERSION_16)
-			{
-				DEBUG_INFO("==========================================\n");
-				DEBUG_INFO("=== OCPP GETTING AUTHORIZE RESULT 1.6 ====\n");
-				DEBUG_INFO("==========================================\n");
-				DEBUG_INFO("Authorize.ResponseIdTagInfo.ParentIdTag : %s \n", ShmOCPP16Data->Authorize.ResponseIdTagInfo.ParentIdTag);
-				DEBUG_INFO("StartTransaction[%d].ResponseIdTagInfo.ParentIdTag : %s \n", gun_index ,ShmOCPP16Data->StartTransaction[gun_index].ResponseIdTagInfo.ParentIdTag);
-
-				if((strcmp((char*)ShmOCPP16Data->Authorize.ResponseIdTagInfo.Status, "Accepted")==0) &&
-				   (strcmp((char*)ShmOCPP16Data->Authorize.ResponseIdTagInfo.ParentIdTag, (char*)ShmOCPP16Data->StartTransaction[gun_index].ResponseIdTagInfo.ParentIdTag)==0))
-					result = PASS;
-			}
-			else if(ShmSysConfigAndInfo->SysInfo.OcppRunningVer == OCPP_RUNNING_VERSION_20)
-			{
-				DEBUG_INFO("==========================================\n");
-				DEBUG_INFO("=== OCPP GETTING AUTHORIZE RESULT 2.0 ====\n");
-				DEBUG_INFO("==========================================\n");
-				DEBUG_INFO("Authorize.Response_idTokenInfo.groupIdToken.idToken : %s \n", ShmOCPP20Data->Authorize.Response_idTokenInfo.groupIdToken.idToken);
-				DEBUG_INFO("TransactionEvent[%d].Response_idTokenInfo.groupIdToken.idToken : %s \n", gun_index, ShmOCPP20Data->TransactionEvent[gun_index].Response_idTokenInfo.groupIdToken.idToken);
-
-				if((strcmp((char*)ShmOCPP20Data->Authorize.Response_idTokenInfo.status, "Accepted")==0) &&
-				   (strcmp((char*)ShmOCPP20Data->Authorize.Response_idTokenInfo.groupIdToken.idToken, (char*)ShmOCPP20Data->TransactionEvent[gun_index].Response_idTokenInfo.groupIdToken.idToken)==0))
-					result = PASS;
-			}
+		switch(ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].SystemStatus)
+		{
+			case SYS_MODE_AUTHORIZING:
+				if(ShmSysConfigAndInfo->SysInfo.OcppRunningVer == OCPP_RUNNING_VERSION_16)
+				{
+					if((strcmp((char*)ShmOCPP16Data->Authorize.ResponseIdTagInfo.Status, "Accepted")==0))
+						result = PASS;
+				}
+				else if(ShmSysConfigAndInfo->SysInfo.OcppRunningVer == OCPP_RUNNING_VERSION_20)
+				{
+					if((strcmp((char*)ShmOCPP20Data->Authorize.Response_idTokenInfo.status, "Accepted")==0))
+						result = PASS;
+				}
 
-			break;
-		default:
-			break;
+				break;
+			case SYS_MODE_CHARGING:
+			case SYS_MODE_TERMINATING:
+				if(ShmSysConfigAndInfo->SysInfo.OcppRunningVer == OCPP_RUNNING_VERSION_16)
+				{
+					DEBUG_INFO("==========================================\n");
+					DEBUG_INFO("=== OCPP GETTING AUTHORIZE RESULT 1.6 ====\n");
+					DEBUG_INFO("==========================================\n");
+					DEBUG_INFO("Authorize.ResponseIdTagInfo.ParentIdTag : %s \n", ShmOCPP16Data->Authorize.ResponseIdTagInfo.ParentIdTag);
+					DEBUG_INFO("StartTransaction[%d].ResponseIdTagInfo.ParentIdTag : %s \n", gun_index ,ShmOCPP16Data->StartTransaction[gun_index].ResponseIdTagInfo.ParentIdTag);
+
+					if((strcmp((char*)ShmOCPP16Data->Authorize.ResponseIdTagInfo.Status, "Accepted")==0) &&
+					   (strcmp((char*)ShmOCPP16Data->Authorize.ResponseIdTagInfo.ParentIdTag, (char*)ShmOCPP16Data->StartTransaction[gun_index].ResponseIdTagInfo.ParentIdTag)==0))
+						result = PASS;
+				}
+				else if(ShmSysConfigAndInfo->SysInfo.OcppRunningVer == OCPP_RUNNING_VERSION_20)
+				{
+					DEBUG_INFO("==========================================\n");
+					DEBUG_INFO("=== OCPP GETTING AUTHORIZE RESULT 2.0 ====\n");
+					DEBUG_INFO("==========================================\n");
+					DEBUG_INFO("Authorize.Response_idTokenInfo.groupIdToken.idToken : %s \n", ShmOCPP20Data->Authorize.Response_idTokenInfo.groupIdToken.idToken);
+					DEBUG_INFO("TransactionEvent[%d].Response_idTokenInfo.groupIdToken.idToken : %s \n", gun_index, ShmOCPP20Data->TransactionEvent[gun_index].Response_idTokenInfo.groupIdToken.idToken);
+
+					if((strcmp((char*)ShmOCPP20Data->Authorize.Response_idTokenInfo.status, "Accepted")==0) &&
+					   (strcmp((char*)ShmOCPP20Data->Authorize.Response_idTokenInfo.groupIdToken.idToken, (char*)ShmOCPP20Data->TransactionEvent[gun_index].Response_idTokenInfo.groupIdToken.idToken)==0))
+						result = PASS;
+				}
+
+				break;
+			default:
+				break;
+		}
+	}
+	else
+	{
+		if(ShmSysConfigAndInfo->SysInfo.OcppRunningVer == OCPP_RUNNING_VERSION_16)
+		{
+			if((strcmp((char*)ShmOCPP16Data->Authorize.ResponseIdTagInfo.Status, "Accepted")==0))
+				result = PASS;
+		}
+		else if(ShmSysConfigAndInfo->SysInfo.OcppRunningVer == OCPP_RUNNING_VERSION_20)
+		{
+			if((strcmp((char*)ShmOCPP20Data->Authorize.Response_idTokenInfo.status, "Accepted")==0))
+				result = PASS;
+		}
 	}
 
-	DEBUG_INFO("Authorize result : %s \n", ((result == PASS)?"Pass":"Fail"));
+	//DEBUG_INFO("Authorize result : %s \n", ((result == PASS)?"Pass":"Fail"));
 
 	return result;
 }
@@ -2305,7 +2327,7 @@ void get_firmware_version(unsigned char gun_index)
 	strcpy((char*)ShmSysConfigAndInfo->SysInfo.CsuPrimFwRev, ShmCharger->gun_info[gun_index].ver.Version_FW);
 
 	// Get CSU root file system version
-	sprintf((char*)ShmSysConfigAndInfo->SysInfo.CsuRootFsFwRev, "D0.52.00.0000.00");
+	sprintf((char*)ShmSysConfigAndInfo->SysInfo.CsuRootFsFwRev, "D0.53.00.0000.00");
 
 	// Get AC connector type from model name
 	for(uint8_t idx=0;idx<3;idx++)
@@ -3740,6 +3762,183 @@ void checkRemoteUpgradeStatus()
 	}
 }
 
+void checkRfidAuthrize()
+{
+	static uint8_t isAuthrizing = FALSE;
+	static uint8_t isShowResult = FALSE;
+
+	if(!isAuthrizing)
+	{
+		// Read RFID
+		if(GetCardSerialNumber() != FAIL)
+		{
+			uint8_t isSnStart = FALSE;
+
+			// 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;
+					ocpp_set_auth_conf(ON);
+					setLedMotion(gun_index,LED_ACTION_RFID_PASS);
+					setSpeaker(ON, SPEAKER_SHORT);
+					sleep(3);
+
+					break;
+				}
+			}
+
+			// 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;
+				sleep(1);
+			}
+		}
+	}
+	else
+	{
+		// Wait authorize result
+		if(!ocpp_get_auth_conf() && (DiffTimebWithNow(startTime[0][TMR_IDX_AUTH]) > TIMEOUT_SPEC_AUTH))
+		{
+			// Authorization timeout process.
+			DEBUG_WARN("Authorize timeout !!!\n");
+			for(int gun_index = 0;gun_index<AC_QUANTITY;gun_index++)
+			{
+				ShmCharger->gun_info[gun_index].resultAuthorization = UNVALIDATED_RFID;
+				setLedMotion(gun_index,LED_ACTION_RFID_FAIL);
+			}
+
+			setSpeaker(ON,SPEAKER_INTERVAL_3COUNT);
+			sleep(3);
+
+			isAuthrizing = FALSE;
+		}
+		else
+		{
+			if(ocpp_get_auth_conf() ||
+			   (!ocpp_get_connection_status() && ((ShmSysConfigAndInfo->SysConfig.OfflinePolicy == OFF_POLICY_FREE) || (ShmSysConfigAndInfo->SysConfig.OfflinePolicy == OFF_POLICY_NOCHARGE))) ||
+			   (!ocpp_get_connection_status() && (ShmSysConfigAndInfo->SysConfig.OfflinePolicy == OFF_POLICY_LOCALLIST) && (strcmp((char *)&ShmSysConfigAndInfo->SysConfig.OcppServerURL,"") == 0))
+			  )
+			{
+				if(ocpp_get_auth_result(NO) ||
+				   (!ocpp_get_connection_status() && (ShmSysConfigAndInfo->SysConfig.OfflinePolicy == OFF_POLICY_FREE)) ||
+				   (!ocpp_get_connection_status() && (isValidLocalWhiteCard() == PASS) && (ShmSysConfigAndInfo->SysConfig.OfflinePolicy == OFF_POLICY_LOCALLIST)))
+				{
+					if(!isShowResult)
+					{
+						DEBUG_INFO("Authorize pass.\n");
+						setSpeaker(ON, SPEAKER_SHORT);
+						ftime(&startTime[0][TMR_IDX_GUN_DETECT]);
+						isShowResult = TRUE;
+					}
+
+					if(DiffTimebWithNow(startTime[0][TMR_IDX_GUN_DETECT]) < (ocpp_get_connection_timeout()*1000))
+					{
+						for(int gun_index = 0;gun_index<AC_QUANTITY;gun_index++)
+						{
+							if(DiffTimebWithNow(startTime[0][TMR_IDX_GUN_DETECT]) < 3000)
+								setLedMotion(gun_index,LED_ACTION_RFID_PASS);
+							else
+								setLedMotion(gun_index,LED_ACTION_AUTHED);
+
+							if((((ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].SystemStatus == SYS_MODE_IDLE) || (ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].SystemStatus == SYS_MODE_RESERVATION)) && ((ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].PilotState == CP_STATE_B) || (ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].PilotState == CP_STATE_C))) ||
+							   (((ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].SystemStatus == SYS_MODE_CHARGING) || (ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].SystemStatus == SYS_MODE_TERMINATING)) && (ShmCharger->gun_selectd == gun_index))
+							   )
+							{
+								DEBUG_INFO("Connector-%02d action detect.\n", gun_index);
+
+								ShmCharger->gun_info[gun_index].resultAuthorization = VALIDATED_RFID;
+								ShmCharger->gun_info[gun_index].rfidReq = ON;
+								isAuthrizing = FALSE;
+
+								break;
+							}
+						}
+					}
+					else
+					{
+						DEBUG_INFO("Connector action detect timeout.\n");
+						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");
+
+					for(int gun_index = 0;gun_index<AC_QUANTITY;gun_index++)
+					{
+						ShmCharger->gun_info[gun_index].resultAuthorization = UNVALIDATED_RFID;
+						setLedMotion(gun_index,LED_ACTION_RFID_FAIL);
+					}
+
+					setSpeaker(ON,SPEAKER_INTERVAL_3COUNT);
+					sleep(3);
+
+					for(int gun_index = 0;gun_index<AC_QUANTITY;gun_index++)
+					{
+						setLedMotion(gun_index,LED_ACTION_IDLE);
+					}
+
+					isAuthrizing = FALSE;
+				}
+			}
+		}
+	}
+}
+
 //======================================================
 // Main process
 //======================================================
@@ -3845,15 +4044,9 @@ int main(void)
 		checkReset();
 
 		//==============================================
-		// Check RFID
+		// Check RFID authorization
 		//==============================================
-		if(!ShmCharger->gun_info[ShmCharger->gun_selectd].rfidReq)
-		{
-			if(GetCardSerialNumber()!= FAIL)
-			{
-				ShmCharger->gun_info[ShmCharger->gun_selectd].rfidReq = ON;
-			}
-		}
+		checkRfidAuthrize();
 
 		//==============================================
 		// Connector loop
@@ -4143,7 +4336,6 @@ int main(void)
 						ShmCharger->gun_info[gun_index].bleConfigData.isRequestStop = OFF;
 						ocpp_set_remotestart(gun_index, OFF);
 						ocpp_set_remotestop(gun_index, OFF);
-						ocpp_set_auth_conf(OFF);
 
 						ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode = 0x00;
 						ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].PresentChargedDuration = 0;
@@ -4154,6 +4346,7 @@ int main(void)
 						
 						// Response StopTransactionConf
 						ocpp_set_stoptransaction_conf(gun_index, OFF);
+						memset(ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].StartUserId, 0x00, ARRAY_SIZE(ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].StartUserId));
 
 						ShmCharger->gun_info[gun_index].ccsHandshakeState = HANDSHAKE_IDLE;
 						ShmCharger->gun_info[gun_index].chargingMode = CHARGING_MODE_BS;
@@ -4171,72 +4364,30 @@ int main(void)
 					   (ocpp_get_remotestart(gun_index) == ON) ||
 					   (ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].schedule.isTriggerStart == ON))
 					{
-						// Clean User id & Card Number
-						memset(ShmSysConfigAndInfo->SysConfig.UserId, 0x00, ARRAY_SIZE(ShmSysConfigAndInfo->SysConfig.UserId));
-
 						if((ShmCharger->gun_info[gun_index].rfidReq == ON))
 						{
 							ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].StartMethod = START_METHOD_RFID;
 							DEBUG_INFO("Start Method : RFID...\n");
-							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("Start request User Id : %s\n", ShmSysConfigAndInfo->SysConfig.UserId);
 						}
 						else if(ocpp_get_remotestart(gun_index))
 						{
 							ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].StartMethod = START_METHOD_BACKEND;
 							ocpp_copy_userid_from_remotestart(gun_index);
+							setSpeaker(ON, SPEAKER_SHORT);
 							DEBUG_INFO("Start Method : BACKEND...\n");
 						}
 						else if(ShmCharger->gun_info[gun_index].bleConfigData.isRequestStart == ON)
 						{
 							ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].StartMethod = START_METHOD_BLE;
 							memcpy(ShmSysConfigAndInfo->SysConfig.UserId, ShmCharger->gun_info[gun_index].bleLoginCentralId.id, ARRAY_SIZE(ShmCharger->gun_info[gun_index].bleLoginCentralId.id));
+							setSpeaker(ON, SPEAKER_SHORT);
 							DEBUG_INFO("Start Method : BLE...\n");
 						}
 						else
 						{
 							ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].StartMethod = START_METHOD_FREE;
 							memcpy(ShmSysConfigAndInfo->SysConfig.UserId, ShmSysConfigAndInfo->SysConfig.SerialNumber, ARRAY_SIZE(ShmSysConfigAndInfo->SysConfig.SerialNumber));
+							setSpeaker(ON, SPEAKER_SHORT);
 							DEBUG_INFO("Start Method : FREE...\n");
 						}
 
@@ -4256,101 +4407,10 @@ int main(void)
 					if(isModeChange(gun_index))
 					{
 						ftime(&startTime[gun_index][TMR_IDX_AUTH]);
-						if(ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].StartMethod == START_METHOD_RFID)
-						{
-							switch(ShmSysConfigAndInfo->SysConfig.AuthorisationMode)
-							{
-								case AUTH_MODE_ENABLE:
-									if(ocpp_get_connection_status())
-									{
-										// On line
-										ocpp_set_auth_req(ON, "ISO14443");
-										setLedMotion(gun_index,LED_ACTION_AUTHED);
-									}
-									else
-									{
-										// Off line
-										switch(ShmSysConfigAndInfo->SysConfig.OfflinePolicy)
-										{
-											case OFF_POLICY_LOCALLIST:
-												ocpp_set_auth_req(ON, "ISO14443");
-												break;
-											case OFF_POLICY_PH_RFID:
-												break;
-											case OFF_POLICY_FREE:
-												break;
-											case OFF_POLICY_NOCHARGE:
-											default:
-												break;
-										}
-									}
-									break;
-								case AUTH_MODE_DISABLE:
-								default:
-									break;
-							}
-						}
 						ShmCharger->gun_info[gun_index].mcuFlag.isSetCpPwmDuty = YES;
 						if(ShmCharger->isCcsEnable)system("/root/Module_CCS &");
 					}
-					
-					if(DiffTimebWithNow(startTime[gun_index][TMR_IDX_AUTH]) > TIMEOUT_SPEC_AUTH)
-					{
-						// Authorization timeout process.
-						ShmCharger->gun_info[gun_index].rfidReq = OFF;
-						setChargerMode(gun_index, SYS_MODE_IDLE);
-						DEBUG_WARN("Authorize timeout !!!\n");
-					}
-					else
-					{
-						switch(ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].StartMethod)
-						{
-							case START_METHOD_RFID:
-
-								ShmCharger->gun_info[gun_index].resultAuthorization = UNKNOW_RFID;
-								sleep(1);
-
-								if((ocpp_get_auth_conf()) ||
-								   (!ocpp_get_connection_status() && ((ShmSysConfigAndInfo->SysConfig.OfflinePolicy == OFF_POLICY_FREE) || (ShmSysConfigAndInfo->SysConfig.OfflinePolicy == OFF_POLICY_NOCHARGE))) ||
-								   (!ocpp_get_connection_status() && (ShmSysConfigAndInfo->SysConfig.OfflinePolicy == OFF_POLICY_LOCALLIST) && (strcmp((char *)&ShmSysConfigAndInfo->SysConfig.OcppServerURL,"") == 0))
-								  )
-								{
-									if(ocpp_get_auth_result(gun_index) ||
-									   (!ocpp_get_connection_status() && (ShmSysConfigAndInfo->SysConfig.OfflinePolicy == OFF_POLICY_FREE)) ||
-									   (!ocpp_get_connection_status() && (isValidLocalWhiteCard() == PASS) && (ShmSysConfigAndInfo->SysConfig.OfflinePolicy == OFF_POLICY_LOCALLIST)))
-									{
-										memcpy((char*)ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].StartUserId, ShmSysConfigAndInfo->SysConfig.UserId, ARRAY_SIZE(ShmSysConfigAndInfo->SysConfig.UserId));
-
-										ShmCharger->gun_info[gun_index].resultAuthorization = VALIDATED_RFID;
-										DEBUG_INFO("Authorize pass.\n");
-										setSpeaker(ON,SPEAKER_SHORT);
-										setLedMotion(gun_index,LED_ACTION_RFID_PASS);
-										sleep(3);
-										setChargerMode(gun_index, SYS_MODE_PREPARING);
-									}
-									else
-									{
-										ShmCharger->gun_info[gun_index].resultAuthorization = UNVALIDATED_RFID;
-										DEBUG_INFO("Authorize fail.\n");
-										setSpeaker(ON,SPEAKER_INTERVAL_3COUNT);
-										setLedMotion(gun_index,LED_ACTION_RFID_FAIL);
-										sleep(3);
-										setChargerMode(gun_index, SYS_MODE_IDLE);
-									}
-
-									ShmCharger->gun_info[gun_index].rfidReq = OFF;
-									ocpp_set_auth_conf(OFF);
-								}
-								break;
-							case START_METHOD_BACKEND:
-							case START_METHOD_BLE:
-							case START_METHOD_FREE:
-							default:
-								setSpeaker(ON,SPEAKER_SHORT);
-								setChargerMode(gun_index, SYS_MODE_PREPARING);
-								break;
-						}
-					}
+					setChargerMode(gun_index, SYS_MODE_PREPARING);
 
 					break;
 				case SYS_MODE_PREPARING:
@@ -4716,7 +4776,6 @@ int main(void)
 						ftime(&startTime[gun_index][TMR_IDX_LOGPPRINTOUT]);
 						ftime(&startTime[gun_index][TMR_IDX_PROFILE_PREPARE]);
 						ftime(&startTime[gun_index][TMR_IDX_PWN_CHANGE]);
-						startTime[gun_index][TMR_IDX_AUTH].time -= TIMEOUT_SPEC_AUTH;
 						ocpp_set_auth_req(OFF);
 						ocpp_reset_smartcharging_profileId(gun_index);
 						ocpp_set_profile_req(gun_index, ON);
@@ -4755,147 +4814,8 @@ int main(void)
 					   ((ShmCharger->gun_info[gun_index].chargingMode == CHARGING_MODE_HLC) && ShmCharger->gun_info[gun_index].acCcsInfo.EVChargeProgress == HLC_RENEGOTIATE_MODE) ||
 					   ((ShmCharger->gun_info[gun_index].chargingMode == CHARGING_MODE_HLC) && ShmCharger->gun_info[gun_index].acCcsInfo.EVChargeProgress == HLC_STANDBY_MODE))
 					{
-						if(ShmCharger->gun_info[gun_index].rfidReq)
-						{
-							// If RFID SN different with start user, it need to authorize ID
-							if((ShmCharger->gun_info[gun_index].rfidReq == ON) && !isMatchStartUser(gun_index))
-							{
-								if((DiffTimebWithNow(startTime[gun_index][TMR_IDX_AUTH]) > TIMEOUT_SPEC_AUTH) && !ocpp_get_auth_req())
-								{
-									// Request authorization
-									ftime(&startTime[gun_index][TMR_IDX_AUTH]);
-									memset(ShmSysConfigAndInfo->SysConfig.UserId, 0x00, ARRAY_SIZE(ShmSysConfigAndInfo->SysConfig.UserId));
-									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("End request User Id: %s\n", ShmSysConfigAndInfo->SysConfig.UserId);
-									DEBUG_INFO("Start method: %d...\n ", ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].StartMethod);
-
-									if((ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].StartMethod == START_METHOD_RFID) ||
-									   //(ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].StartMethod == START_METHOD_BACKEND) ||
-									   (ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].StartMethod == START_METHOD_BLE))
-									{
-										switch(ShmSysConfigAndInfo->SysConfig.AuthorisationMode)
-										{
-											case AUTH_MODE_ENABLE:
-												if(ocpp_get_connection_status())
-												{
-													// On line
-													ocpp_set_auth_req(ON, "ISO14443");
-												}
-												else
-												{
-													// Off line
-													switch(ShmSysConfigAndInfo->SysConfig.OfflinePolicy)
-													{
-														case OFF_POLICY_LOCALLIST:
-															ocpp_set_auth_req(ON, "ISO14443");
-															break;
-														case OFF_POLICY_PH_RFID:
-															break;
-														case OFF_POLICY_FREE:
-															break;
-														case OFF_POLICY_NOCHARGE:
-														default:
-															break;
-													}
-												}
-												break;
-											case AUTH_MODE_DISABLE:
-											default:
-												break;
-										}
-									}
-									else if(ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].StartMethod == START_METHOD_BACKEND)
-									{
-										DEBUG_INFO("Should be remote stop charger... \n");
-										ShmCharger->gun_info[gun_index].rfidReq = OFF;
-									}
-								}
-								else
-								{
-									ShmCharger->gun_info[gun_index].resultAuthorization = UNKNOW_RFID;
-									sleep(1);
-
-									if(ocpp_get_auth_conf() ||
-									  (ShmSysConfigAndInfo->SysConfig.AuthorisationMode == AUTH_MODE_DISABLE) ||
-									  (!ocpp_get_connection_status() && (ShmSysConfigAndInfo->SysConfig.OfflinePolicy == OFF_POLICY_LOCALLIST) && (strcmp((char *)&ShmSysConfigAndInfo->SysConfig.OcppServerURL,"") == 0)) ||
-									  (!ocpp_get_connection_status() && (ShmSysConfigAndInfo->SysConfig.OfflinePolicy == OFF_POLICY_FREE)))
-									{
-										if(ocpp_get_auth_result(gun_index) ||
-										   (ShmSysConfigAndInfo->SysConfig.AuthorisationMode == AUTH_MODE_DISABLE) ||
-										   (!ocpp_get_connection_status() && (isValidLocalWhiteCard() == PASS) && (ShmSysConfigAndInfo->SysConfig.OfflinePolicy == OFF_POLICY_LOCALLIST)) ||
-										   (!ocpp_get_connection_status() && (ShmSysConfigAndInfo->SysConfig.OfflinePolicy == OFF_POLICY_FREE)))
-										{
-											ShmCharger->gun_info[gun_index].isAuthPassEnd = ON;
-										}
-										else
-										{
-											ShmCharger->gun_info[gun_index].resultAuthorization = UNVALIDATED_RFID;
-											ShmCharger->gun_info[gun_index].rfidReq = OFF;
-											ocpp_set_auth_req(OFF);
-											DEBUG_INFO("Authorize fail.\n");
-											setSpeaker(ON,SPEAKER_INTERVAL_3COUNT);
-											setLedMotion(gun_index,LED_ACTION_RFID_FAIL);
-											sleep(3);
-											ShmCharger->gun_info[gun_index].resultAuthorization = DEFAULT_RFID;
-										}
-
-										startTime[gun_index][TMR_IDX_AUTH].time -= TIMEOUT_SPEC_AUTH;
-										ocpp_set_auth_conf(OFF);
-									}
-								}
-							}
-
-							// If Authorize is accpted or Rfid card match with start User, The system should terminating to the end
-							if(ShmCharger->gun_info[gun_index].isAuthPassEnd || isMatchStartUser(gun_index))
-							{
-								setChargerMode(gun_index, SYS_MODE_TERMINATING);
-								setRelay(gun_index, OFF);
-							}
-						}
-						else
-						{
-							setChargerMode(gun_index, SYS_MODE_TERMINATING);
-							setRelay(gun_index, OFF);
-						}
+						setChargerMode(gun_index, SYS_MODE_TERMINATING);
+						setRelay(gun_index, OFF);
 					}
 					else
 					{
@@ -5140,8 +5060,7 @@ int main(void)
 					}
 
 					// End authorize pass
-					if(((ShmCharger->gun_info[gun_index].rfidReq == ON) && isMatchStartUser(gun_index)) ||
-					   (ShmCharger->gun_info[gun_index].isAuthPassEnd) ||
+					if(((ShmCharger->gun_info[gun_index].rfidReq == ON) && ocpp_get_auth_result(YES, gun_index)) ||
 					   (ShmCharger->gun_info[gun_index].bleConfigData.isRequestStop == ON) ||
 					   ocpp_get_remotestop(gun_index) ||
 					   (ocpp_get_connection_status() && !ocpp_get_starttransaction_result(gun_index)) ||
@@ -5152,21 +5071,6 @@ int main(void)
 					   (ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].schedule.isTriggerStop == ON) ||
 					   ((ShmCharger->gun_info[gun_index].chargingMode == CHARGING_MODE_HLC) && (ShmCharger->gun_info[gun_index].acCcsInfo.EVChargeProgress == HLC_STOP_MODE)))
 					{
-						if(ShmCharger->gun_info[gun_index].legacyRequest.isLegacyRequest == ON)
-						{
-							if(((ShmCharger->gun_info[gun_index].rfidReq == ON) && isMatchStartUser(gun_index)) ||
-							   (ShmCharger->gun_info[gun_index].isAuthPassEnd))
-							{
-								ShmCharger->gun_info[gun_index].resultAuthorization = VALIDATED_RFID;
-								DEBUG_INFO("Authorize pass.\n");
-								setSpeaker(ON,SPEAKER_SHORT);
-								setLedMotion(gun_index,LED_ACTION_RFID_PASS);
-								sleep(3);
-							}
-						}
-						else
-						{}
-
 						if(ShmCharger->gun_info[gun_index].chargingMode == CHARGING_MODE_BS)
 							setRequest(gun_index, OFF);
 
@@ -5199,139 +5103,8 @@ int main(void)
 							setLedMotion(gun_index, LED_ACTION_STOP);
 						}
 
-						if(ShmCharger->gun_info[gun_index].rfidReq)
-						{
-							DEBUG_INFO("Certified in terminating mode... \n");
-
-							// If RFID SN different with start user, it need to authorize ID
-							if((ShmCharger->gun_info[gun_index].rfidReq == ON) && !isMatchStartUser(gun_index))
-							{
-								if((DiffTimebWithNow(startTime[gun_index][TMR_IDX_AUTH]) > TIMEOUT_SPEC_AUTH) && !ocpp_get_auth_req())
-								{
-									// Request authorization
-									ftime(&startTime[gun_index][TMR_IDX_AUTH]);
-									memset(ShmSysConfigAndInfo->SysConfig.UserId, 0x00, ARRAY_SIZE(ShmSysConfigAndInfo->SysConfig.UserId));
-									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("End request User Id : %s... \n", ShmSysConfigAndInfo->SysConfig.UserId);
-									DEBUG_INFO("Start method : %d... \n ", ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].StartMethod);
-
-									if((ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].StartMethod == START_METHOD_RFID) ||
-									   //(ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].StartMethod == START_METHOD_BACKEND) ||
-									   (ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].StartMethod == START_METHOD_BLE))
-									{
-										switch(ShmSysConfigAndInfo->SysConfig.AuthorisationMode)
-										{
-											case AUTH_MODE_ENABLE:
-												if(ocpp_get_connection_status())
-												{
-													// On line
-													ocpp_set_auth_req(ON, "ISO14443");
-												}
-												else
-												{
-													// Off line
-													switch(ShmSysConfigAndInfo->SysConfig.OfflinePolicy)
-													{
-														case OFF_POLICY_LOCALLIST:
-															ocpp_set_auth_req(ON, "ISO14443");
-															break;
-														case OFF_POLICY_PH_RFID:
-															break;
-														case OFF_POLICY_FREE:
-															break;
-														case OFF_POLICY_NOCHARGE:
-														default:
-															break;
-													}
-												}
-												break;
-											case AUTH_MODE_DISABLE:
-											default:
-												break;
-										}
-									}
-									else if(ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].StartMethod == START_METHOD_BACKEND)
-									{
-										DEBUG_INFO("Should be remote stop charger... \n");
-										ShmCharger->gun_info[gun_index].rfidReq = OFF;
-									}
-								}
-								else
-								{
-									ShmCharger->gun_info[gun_index].resultAuthorization = UNKNOW_RFID;
-									sleep(1);
-
-									if(ocpp_get_auth_conf() ||
-									  (ShmSysConfigAndInfo->SysConfig.AuthorisationMode == AUTH_MODE_DISABLE) ||
-									  (!ocpp_get_connection_status() && (ShmSysConfigAndInfo->SysConfig.OfflinePolicy == OFF_POLICY_LOCALLIST)) ||
-									  (!ocpp_get_connection_status() && (ShmSysConfigAndInfo->SysConfig.OfflinePolicy == OFF_POLICY_FREE)))
-									{
-										if(ocpp_get_auth_result(gun_index) ||
-										   (ShmSysConfigAndInfo->SysConfig.AuthorisationMode == AUTH_MODE_DISABLE) ||
-										   (!ocpp_get_connection_status() && (isValidLocalWhiteCard() == PASS) && (ShmSysConfigAndInfo->SysConfig.OfflinePolicy == OFF_POLICY_LOCALLIST) && (strcmp((char *)&ShmSysConfigAndInfo->SysConfig.OcppServerURL,"") == 0)) ||
-										   (!ocpp_get_connection_status() && (ShmSysConfigAndInfo->SysConfig.OfflinePolicy == OFF_POLICY_FREE)))
-										{
-											ShmCharger->gun_info[gun_index].isAuthPassEnd = ON;
-											ShmCharger->gun_info[gun_index].resultAuthorization = VALIDATED_RFID;
-										}
-										else
-										{
-											ShmCharger->gun_info[gun_index].resultAuthorization = UNVALIDATED_RFID;
-											ShmCharger->gun_info[gun_index].rfidReq = OFF;
-											ocpp_set_auth_req(OFF);
-											DEBUG_INFO("Authorize fail... \n");
-											setSpeaker(ON,SPEAKER_INTERVAL_3COUNT);
-											setLedMotion(gun_index,LED_ACTION_RFID_FAIL);
-											sleep(3);
-											ShmCharger->gun_info[gun_index].resultAuthorization = DEFAULT_RFID;
-										}
-
-										startTime[gun_index][TMR_IDX_AUTH].time -= TIMEOUT_SPEC_AUTH;
-										ocpp_set_auth_conf(OFF);
-									}
-								}
-							}
-						}
+						if(!ocpp_get_auth_result(YES, gun_index))
+							ShmCharger->gun_info[gun_index].rfidReq = OFF;
 
 						if((((ShmCharger->gun_info[gun_index].chargingMode != CHARGING_MODE_SOCKETE) && (ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].PilotState == CP_STATE_C)) || ((ShmCharger->gun_info[gun_index].chargingMode == CHARGING_MODE_SOCKETE) && ShmCharger->gun_info[gun_index].primaryMcuState.socket_e.isSocketEPinOn)) &&
 						   (ShmCharger->gun_info[gun_index].rfidReq != ON) &&
@@ -5379,7 +5152,6 @@ int main(void)
 					   ((ShmCharger->gun_info[gun_index].chargingMode == CHARGING_MODE_SOCKETE) && (!ShmCharger->gun_info[gun_index].primaryMcuState.socket_e.isSocketEPinOn)))
 					{
 						ShmCharger->gun_info[gun_index].rfidReq = OFF;
-						ShmCharger->gun_info[gun_index].isAuthPassEnd = OFF;
 						ShmCharger->gun_info[gun_index].bleConfigData.isRequestStop = OFF;
 						ocpp_set_remotestop(gun_index, OFF);
 						ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].schedule.isTriggerStop = OFF;
@@ -5508,9 +5280,8 @@ int main(void)
 					break;
 				case SYS_MODE_RESERVATION:
 					if(isModeChange(gun_index))
-					{
-						setLedMotion(gun_index,LED_ACTION_MAINTAIN);
-					}
+					{}
+					setLedMotion(gun_index,LED_ACTION_MAINTAIN);
 
 					if(isReservationExpired(gun_index))
 					{
@@ -5531,48 +5302,6 @@ int main(void)
 						{
 							if((ShmCharger->gun_info[gun_index].rfidReq == ON))
 							{
-								memset(ShmSysConfigAndInfo->SysConfig.UserId, 0x00, ARRAY_SIZE(ShmSysConfigAndInfo->SysConfig.UserId));
-								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;
-									}
-								}
-
 								if(ocpp_compare_reserve_id_with_user(gun_index))
 								{
 									DEBUG_INFO("Start Method in reservation : RFID...\n");
@@ -5580,9 +5309,10 @@ int main(void)
 									ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].StartMethod = START_METHOD_RFID;
 									setChargerMode(gun_index, SYS_MODE_AUTHORIZING);
 								}
+								else
+									DEBUG_INFO("It's not reserve user id.\n");
 
 								ShmCharger->gun_info[gun_index].rfidReq = OFF;
-
 							}
 							else if(ocpp_get_remotestart(gun_index))
 							{

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

@@ -229,7 +229,7 @@ enum TIMER_IDX
 	TMR_IDX_17,
 	TMR_IDX_18,
 	TMR_IDX_19,
-	TMR_IDX_20,
+	TMR_IDX_GUN_DETECT,
 	TMR_IDX_CNT
 };