|
@@ -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)
|