Browse Source

[Improve][Modularization][Module_OcppBackend]

2020.08.31 / Folus Wen

Actions:
1. EVSE/Modularization/ocppfiles/Module_OcppBackend.h add YES/NO constant.
2. EVSE/Modularization/ocppfiles/MessageHandler.c determine authorization result with expire date when authorize by local list.

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 4 years ago
parent
commit
e1e66fc85b

+ 33 - 2
EVSE/Modularization/ocppfiles/MessageHandler.c

@@ -519,6 +519,32 @@ int getStartStop(uint8_t *start, uint8_t *stop)
 	return result;
 }
 
+int isOvertNow(uint8_t *start)
+{
+	int result = YES;
+	struct tm tmStart;
+	struct timeb tbStart;
+
+	if((sscanf((char*)start, "%4d-%2d-%2dT%2d:%2d:%2d", &tmStart.tm_year, &tmStart.tm_mon, &tmStart.tm_mday, &tmStart.tm_hour, &tmStart.tm_min, &tmStart.tm_sec) == 6))
+	{
+		//DEBUG_INFO("Start: %d-%d-%d %d:%d:%d\n", tmStart.tm_year, tmStart.tm_mon, tmStart.tm_mday, tmStart.tm_hour, tmStart.tm_min, tmStart.tm_sec);
+
+		tmStart.tm_year -= 1900;
+		tmStart.tm_mon -= 1;
+		tbStart.time = mktime(&tmStart);
+		tbStart.millitm = 0;
+
+		if(DiffTimebWithNowSec(tbStart) <= 0)
+			result = NO;
+	}
+	else
+	{
+		DEBUG_WARN("Start date parsing error.\r\n");
+	}
+
+	return result;
+}
+
 int getStartSinceRecurring(uint8_t *start, uint8_t *stop, uint8_t isDaily)
 {
 	int result = -1;
@@ -2830,10 +2856,15 @@ int sendAuthorizeRequest(int gun_index)
 		}
 		else
 		{
-			DEBUG_INFO("offline Local Authorization Pass !!!!\n");
+			DEBUG_INFO("offline Local Authorization get result !!!!\n");
 			strcpy((char *)ShmOCPP16Data->Authorize.ResponseIdTagInfo.ExpiryDate, idTagQuery.expiryDate);
 			strcpy((char *)ShmOCPP16Data->Authorize.ResponseIdTagInfo.ParentIdTag, (const char *)ShmSysConfigAndInfo->SysConfig.UserId);
-			strcpy((char *)ShmOCPP16Data->Authorize.ResponseIdTagInfo.Status, idTagQuery.idTagstatus);
+
+			if(isOvertNow((uint8_t*)&idTagQuery.expiryDate[0]))
+				sprintf((char *)ShmOCPP16Data->Authorize.ResponseIdTagInfo.Status, "Expired");
+			else
+				strcpy((char *)ShmOCPP16Data->Authorize.ResponseIdTagInfo.Status, idTagQuery.idTagstatus);
+
 			DEBUG_INFO("ShmOCPP16Data->Authorize.ResponseIdTagInfo.Status: %s \n", ShmOCPP16Data->Authorize.ResponseIdTagInfo.Status);
 			result = PASS;
 			ShmOCPP16Data->SpMsg.bits.AuthorizeReq = 0;

+ 2 - 0
EVSE/Modularization/ocppfiles/Module_OcppBackend.h

@@ -50,6 +50,8 @@
 #define is_error(ptr) 				((unsigned long)ptr > (unsigned long)-4000L)
 #define PASS						1
 #define FAIL						-1
+#define YES							1
+#define NO							0
 
 #ifndef SPEC_LATEST_SUPPORTED
 	#define SPEC_LATEST_SUPPORTED 	13