瀏覽代碼

2020-01-22 / Folus Wen

Actions:
1. Local list validation logic implement.

Files:
1. As follow commit history.
FolusWen 5 年之前
父節點
當前提交
aa2e461686
共有 1 個文件被更改,包括 26 次插入4 次删除
  1. 26 4
      EVSE/Projects/AW-Regular/Apps/main.c

+ 26 - 4
EVSE/Projects/AW-Regular/Apps/main.c

@@ -1318,9 +1318,9 @@ int InitRfidPort()
 	return uartO2;
 }
 
-//==========================================
+//===============================================
 // Check internet access status
-//==========================================
+//===============================================
 int isReachableInternet()
 {
 	int result = FAIL;
@@ -1385,6 +1385,23 @@ int isReservationExpired(unsigned char gun_index)
 	return result;
 }
 
+//===============================================
+// Valid from local white list
+//===============================================
+int isValidLocalWhiteCard()
+{
+	uint8_t result = FAIL;
+	for(uint8_t idx=0;idx<ARRAY_SIZE(ShmSysConfigAndInfo->SysConfig.LocalWhiteCard);idx++)
+	{
+		if(strcmp((char*)ShmSysConfigAndInfo->SysConfig.UserId, (char*)ShmSysConfigAndInfo->SysConfig.LocalWhiteCard[idx]) == 0)
+		{
+			result = PASS;
+		}
+	}
+
+	return result;
+}
+
 //===============================================
 // Main process
 //===============================================
@@ -1745,6 +1762,7 @@ int main(void)
 						 // Authorization timeout process.
 						ShmCharger->rfidReq = OFF;
 						setChargerMode(gun_index, SYS_MODE_IDLE);
+						DEBUG_WARN("Authorize timeout!\r\n");
 					}
 					else
 					{
@@ -1753,17 +1771,21 @@ int main(void)
 							case START_METHOD_RFID:
 								if(ShmOCPP16Data->SpMsg.bits.AuthorizeConf ||
 								  (ShmSysConfigAndInfo->SysConfig.AuthorisationMode == AUTH_MODE_FREE) ||
-								  !ShmOCPP16Data->OcppConnStatus)
+								  !ShmOCPP16Data->OcppConnStatus ||
+								  ((isValidLocalWhiteCard() == PASS) && (ShmSysConfigAndInfo->SysConfig.OfflinePolicy == OFF_POLICY_LOCALLIST)))
 								{
 									if((strcmp((char*)ShmOCPP16Data->Authorize.ResponseIdTagInfo.Status, "Accepted")==0) ||
 									   (ShmSysConfigAndInfo->SysConfig.AuthorisationMode == AUTH_MODE_FREE) ||
-									   (!ShmOCPP16Data->OcppConnStatus&&(ShmSysConfigAndInfo->SysConfig.OfflinePolicy == OFF_POLICY_FREE)))
+									   (!ShmOCPP16Data->OcppConnStatus&&(ShmSysConfigAndInfo->SysConfig.OfflinePolicy == OFF_POLICY_FREE)) ||
+									   ((isValidLocalWhiteCard() == PASS) && (ShmSysConfigAndInfo->SysConfig.OfflinePolicy == OFF_POLICY_LOCALLIST)))
 									{
+										DEBUG_INFO("Authorize pass.\r\n");
 										setSpeaker(ON,SPEAKER_SHORT);
 										setChargerMode(gun_index, SYS_MODE_PREPARING);
 									}
 									else
 									{
+										DEBUG_INFO("Authorize fail.\r\n");
 										setSpeaker(ON,SPEAKER_INTERVAL_3COUNT);
 										setChargerMode(gun_index, SYS_MODE_IDLE);
 									}