Prechádzať zdrojové kódy

[Improve][AX80][main]

2022.07.11 / Folus Wen

Actions:
1. RFID toggle logic implement.

Files:
1. As follow commit history

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

Hardware PWB P/N : XXXXXXX
Hardware Version : XXXXXXX
FolusWen 2 rokov pred
rodič
commit
6e880208d8
1 zmenil súbory, kde vykonal 77 pridanie a 67 odobranie
  1. 77 67
      EVSE/Projects/AX80/Apps/main.c

+ 77 - 67
EVSE/Projects/AX80/Apps/main.c

@@ -4914,92 +4914,102 @@ void checkHandshakeTime()
 void checkRfidAuthrize()
 {
 	static uint8_t isCheckdResult = FALSE;
+	static uint8_t isReadable = TRUE;
 
 	if(!ShmCharger->isAuthrizing)
 	{
 		// Read RFID
 		if(GetCardSerialNumber() != FAIL)
 		{
-			uint8_t isSnStart = FALSE;
-			uint8_t bufferRFID[ARRAY_SIZE(ShmSysConfigAndInfo->SysConfig.UserId)];
-
-			if(ShmSysConfigAndInfo->SysConfig.RfidCardNumEndian)
+			if(isReadable == TRUE)
 			{
-				// Big endian
-				switch(rfid.snType)
+				uint8_t isSnStart = FALSE;
+				uint8_t bufferRFID[ARRAY_SIZE(ShmSysConfigAndInfo->SysConfig.UserId)];
+
+				if(ShmSysConfigAndInfo->SysConfig.RfidCardNumEndian)
 				{
-					case RFID_SN_TYPE_6BYTE:
-						sprintf((char*)bufferRFID, "%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*)bufferRFID, "%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*)bufferRFID, "%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*)bufferRFID, "%02X%02X%02X%02X", rfid.currentCard[0], rfid.currentCard[1], rfid.currentCard[2], rfid.currentCard[3]);
-						break;
+					// Big endian
+					switch(rfid.snType)
+					{
+						case RFID_SN_TYPE_6BYTE:
+							sprintf((char*)bufferRFID, "%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*)bufferRFID, "%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*)bufferRFID, "%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*)bufferRFID, "%02X%02X%02X%02X", rfid.currentCard[0], rfid.currentCard[1], rfid.currentCard[2], rfid.currentCard[3]);
+							break;
+					}
 				}
-			}
-			else
-			{
-				// Little endian
-				switch(rfid.snType)
+				else
 				{
-					case RFID_SN_TYPE_6BYTE:
-						sprintf((char*)bufferRFID, "%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*)bufferRFID, "%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*)bufferRFID, "%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*)bufferRFID, "%02X%02X%02X%02X", rfid.currentCard[3], rfid.currentCard[2], rfid.currentCard[1], rfid.currentCard[0]);
-						break;
+					// Little endian
+					switch(rfid.snType)
+					{
+						case RFID_SN_TYPE_6BYTE:
+							sprintf((char*)bufferRFID, "%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*)bufferRFID, "%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*)bufferRFID, "%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*)bufferRFID, "%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", bufferRFID);
-			//DEBUG_INFO("Authorize request User Id : %s\n", ShmSysConfigAndInfo->SysConfig.UserId);
+				DEBUG_INFO("Authorize request User Id : %s\n", bufferRFID);
+				//DEBUG_INFO("Authorize request User Id : %s\n", ShmSysConfigAndInfo->SysConfig.UserId);
 
-			for(int gun_index = 0;gun_index<modelnameInfo.GetGunCount;gun_index++)
-				ShmCharger->gun_info[gun_index].resultAuthorization = UNKNOW_RFID;
+				for(int gun_index = 0;gun_index<modelnameInfo.GetGunCount;gun_index++)
+					ShmCharger->gun_info[gun_index].resultAuthorization = UNKNOW_RFID;
 
-			// Check SN already start
-			for(int gun_index = 0;gun_index<modelnameInfo.GetGunCount;gun_index++)
-			{
-				if(isMatchStartUser(gun_index) || (isMatchPresentUser(gun_index) && (ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].SystemStatus == SYS_MODE_PREPARING)))
+				// Check SN already start
+				for(int gun_index = 0;gun_index<modelnameInfo.GetGunCount;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);
+					if(isMatchStartUser(gun_index) || (isMatchPresentUser(gun_index) && (ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].SystemStatus == SYS_MODE_PREPARING)))
+					{
+						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;
+						break;
+					}
 				}
-			}
 
-			// Request authorize if isSnStart is false
-			if(!isSnStart)
-			{
-				memcpy(ShmSysConfigAndInfo->SysConfig.UserId, bufferRFID, ARRAY_SIZE(ShmSysConfigAndInfo->SysConfig.UserId));
-				refreshStartTimer(&startTime[0][TMR_IDX_AUTH]);
-				ocpp_set_auth_conf(OFF);
-				ocpp_set_auth_req(ON, "ISO14443");
-				setLedMotion(0,LED_ACTION_AUTHED);
-				ShmCharger->isAuthrizing = TRUE;
-				ShmCharger->isGetAuthResult = FALSE;
-				isCheckdResult = FALSE;
-				//sleep(1);
+				// Request authorize if isSnStart is false
+				if(!isSnStart)
+				{
+					memcpy(ShmSysConfigAndInfo->SysConfig.UserId, bufferRFID, ARRAY_SIZE(ShmSysConfigAndInfo->SysConfig.UserId));
+					refreshStartTimer(&startTime[0][TMR_IDX_AUTH]);
+					ocpp_set_auth_conf(OFF);
+					ocpp_set_auth_req(ON, "ISO14443");
+					setLedMotion(0,LED_ACTION_AUTHED);
+					ShmCharger->isAuthrizing = TRUE;
+					ShmCharger->isGetAuthResult = FALSE;
+					isCheckdResult = FALSE;
+					//sleep(1);
+				}
+
+				isReadable = FALSE;
 			}
 		}
+		else
+		{
+			isReadable = TRUE;
+		}
 	}
 	else
 	{