浏览代码

[Bug fix][Modularization][Module_OcppBackend / Module_OcppBackend20]

2021.08.04 / Folus Wen

Actions:
1. Create aligh clock timer for each gun.

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 3 年之前
父节点
当前提交
114d59b286
共有 2 个文件被更改,包括 19 次插入14 次删除
  1. 14 9
      EVSE/Modularization/ocpp20/MessageHandler.c
  2. 5 5
      EVSE/Modularization/ocppfiles/MessageHandler.c

+ 14 - 9
EVSE/Modularization/ocpp20/MessageHandler.c

@@ -3151,23 +3151,28 @@ long long DiffTimebWithNow(struct timeb ST)
 	return ((StopTime-StartTime)*1000) + (ET.millitm-ST.millitm);
 }
 
-int getTimePassSinceToday()
+int getTimePassSinceToday(uint8_t gun_index)
 {
 	int result = -1;
+	static time_t lastTime[4];
 	time_t t;
 	struct tm *tmStartToday;
 	struct timeb tbStartToday;
 
 	t=time(NULL);
-	tmStartToday=localtime(&t);
+	if(difftime(t, lastTime[gun_index])>0)
+	{
+		tmStartToday=localtime(&t);
 
-	tmStartToday->tm_hour = 0;
-	tmStartToday->tm_min = 0;
-	tmStartToday->tm_sec = 0;
+		tmStartToday->tm_hour = 0;
+		tmStartToday->tm_min = 0;
+		tmStartToday->tm_sec = 0;
 
-	tbStartToday.time = mktime(tmStartToday);
-	tbStartToday.millitm = 0;
-	result = DiffTimebWithNow(tbStartToday)/1000;
+		tbStartToday.time = mktime(tmStartToday);
+		tbStartToday.millitm = 0;
+		result = DiffTimebWithNow(tbStartToday)/1000;
+		lastTime[gun_index] = t;
+	}
 
 	return result;
 }
@@ -5880,7 +5885,7 @@ void CheckSystemValue(void)
 		}
 
 		// ClockAlign MeterValue
-		if(isWebsocketSendable && (server_sign == TRUE) && ((atoi((char*)ShmOCPP20Data->ControllerComponentVariable[AlignedDataCtrlr_Interval].variableAttribute[0].value) > 0)?((getTimePassSinceToday()%(atoi((char*)ShmOCPP20Data->ControllerComponentVariable[AlignedDataCtrlr_Interval].variableAttribute[0].value)))==0):FALSE))
+		if(isWebsocketSendable && (server_sign == TRUE) && ((atoi((char*)ShmOCPP20Data->ControllerComponentVariable[AlignedDataCtrlr_Interval].variableAttribute[0].value) > 0)?((getTimePassSinceToday(gun_index)%(atoi((char*)ShmOCPP20Data->ControllerComponentVariable[AlignedDataCtrlr_Interval].variableAttribute[0].value)))==0):FALSE))
 		{
 			//check Transaction active
 			if(gunType[gun_index] == GUN_TYPE_CHAdeMO)

+ 5 - 5
EVSE/Modularization/ocppfiles/MessageHandler.c

@@ -815,16 +815,16 @@ long long DiffTimebWithNow(struct timeb ST)
 	return ((StopTime-StartTime)*1000) + (ET.millitm-ST.millitm);
 }
 
-int getTimePassSinceToday()
+int getTimePassSinceToday(uint8_t gun_index)
 {
 	int result = -1;
-	static time_t lastTime;
+	static time_t lastTime[4];
 	time_t t;
 	struct tm *tmStartToday;
 	struct timeb tbStartToday;
 
 	t=time(NULL);
-	if(difftime(t, lastTime)>0)
+	if(difftime(t, lastTime[gun_index])>0)
 	{
 		tmStartToday=localtime(&t);
 
@@ -835,7 +835,7 @@ int getTimePassSinceToday()
 		tbStartToday.time = mktime(tmStartToday);
 		tbStartToday.millitm = 0;
 		result = DiffTimebWithNow(tbStartToday)/1000;
-		lastTime = t;
+		lastTime[gun_index] = t;
 	}
 
 	return result;
@@ -3280,7 +3280,7 @@ void CheckSystemValue(void)
 		}
 
 		// ClockAlign MeterValue
-		if(isWebsocketSendable && (server_sign == TRUE) && ((atoi((char*)ShmOCPP16Data->ConfigurationTable.CoreProfile[ClockAlignedDataInterval].ItemData) > 0)?((getTimePassSinceToday()%(atoi((char*)ShmOCPP16Data->ConfigurationTable.CoreProfile[ClockAlignedDataInterval].ItemData)))==0):FALSE))
+		if(isWebsocketSendable && (server_sign == TRUE) && ((atoi((char*)ShmOCPP16Data->ConfigurationTable.CoreProfile[ClockAlignedDataInterval].ItemData) > 0)?((getTimePassSinceToday(gun_index)%(atoi((char*)ShmOCPP16Data->ConfigurationTable.CoreProfile[ClockAlignedDataInterval].ItemData)))==0):FALSE))
 		{
 			if(gunType[gun_index] == GUN_TYPE_CHAdeMO)
 			{