|
@@ -513,62 +513,28 @@ int getStartStop(uint8_t *start, uint8_t *stop)
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
-int getStartSinceToday(uint8_t *stop)
|
|
|
+int getStartSinceRecurring(uint8_t *start, uint8_t *stop, uint8_t isDaily)
|
|
|
{
|
|
|
int result = -1;
|
|
|
- time_t t;
|
|
|
- struct tm *tmStartToday;
|
|
|
- struct timeb tbStartToday;
|
|
|
- struct tm tmStop;
|
|
|
- struct timeb tbStop;
|
|
|
-
|
|
|
- if((sscanf((char*)stop, "%4d-%2d-%2dT%2d:%2d:%2d", &tmStop.tm_year, &tmStop.tm_mon, &tmStop.tm_mday, &tmStop.tm_hour, &tmStop.tm_min, &tmStop.tm_sec) == 6))
|
|
|
- {
|
|
|
- t=time(NULL);
|
|
|
- tmStartToday=localtime(&t);
|
|
|
- tmStartToday->tm_hour = 0;
|
|
|
- tmStartToday->tm_min = 0;
|
|
|
- tmStartToday->tm_sec = 0;
|
|
|
- tbStartToday.time = mktime(tmStartToday);
|
|
|
-
|
|
|
- tmStop.tm_year -= 1900;
|
|
|
- tmStop.tm_mon -= 1;
|
|
|
- tbStop.time = mktime(&tmStop);
|
|
|
- tbStop.millitm = 0;
|
|
|
-
|
|
|
- result = DiffTimebSec(tbStartToday, tbStop);
|
|
|
- }
|
|
|
-
|
|
|
- return result;
|
|
|
-}
|
|
|
-
|
|
|
-int getStartSinceWeek(uint8_t *stop)
|
|
|
-{
|
|
|
- int result = -1;
|
|
|
- time_t t;
|
|
|
- struct tm *tmStartWeek;
|
|
|
- struct timeb tbStartWeek;
|
|
|
+ struct tm tmStart;
|
|
|
+ struct timeb tbStart;
|
|
|
struct tm tmStop;
|
|
|
struct timeb tbStop;
|
|
|
|
|
|
- if((sscanf((char*)stop, "%4d-%2d-%2dT%2d:%2d:%2d", &tmStop.tm_year, &tmStop.tm_mon, &tmStop.tm_mday, &tmStop.tm_hour, &tmStop.tm_min, &tmStop.tm_sec) == 6))
|
|
|
+ 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) &&
|
|
|
+ (sscanf((char*)stop, "%4d-%2d-%2dT%2d:%2d:%2d", &tmStop.tm_year, &tmStop.tm_mon, &tmStop.tm_mday, &tmStop.tm_hour, &tmStop.tm_min, &tmStop.tm_sec) == 6))
|
|
|
{
|
|
|
- t=time(NULL);
|
|
|
- tmStartWeek=localtime(&t);
|
|
|
- t-=86400*tmStartWeek->tm_wday;
|
|
|
- tmStartWeek=localtime(&t);
|
|
|
-
|
|
|
- tmStartWeek->tm_hour = 0;
|
|
|
- tmStartWeek->tm_min = 0;
|
|
|
- tmStartWeek->tm_sec = 0;
|
|
|
- tbStartWeek.time = mktime(tmStartWeek);
|
|
|
+ tmStart.tm_year -= 1900;
|
|
|
+ tmStart.tm_mon -= 1;
|
|
|
+ tbStart.time = mktime(&tmStart);
|
|
|
+ tbStart.millitm = 0;
|
|
|
|
|
|
tmStop.tm_year -= 1900;
|
|
|
tmStop.tm_mon -= 1;
|
|
|
tbStop.time = mktime(&tmStop);
|
|
|
tbStop.millitm = 0;
|
|
|
|
|
|
- result = DiffTimebSec(tbStartWeek, tbStop);
|
|
|
+ result = DiffTimebSec(tbStart, tbStop)%(isDaily?86400:604800);
|
|
|
}
|
|
|
|
|
|
return result;
|
|
@@ -741,7 +707,7 @@ void checkCompositeSchedule(uint8_t connectorId, uint32_t durationReq, struct St
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- sprintf((char*)txProfile.ChargingSchedule.StartSchedule, " ");
|
|
|
+ sprintf((char*)txProfile.ChargingSchedule.StartSchedule, "%s", ((strstr((char*)ShmOCPP16Data->StatusNotification[(connectorId==0?0:connectorId-1)].Status, "Charging")==NULL) ? compositeProfile->ChargingSchedule.StartSchedule : ShmOCPP16Data->StartTransaction[(connectorId==0?0:connectorId-1)].Timestamp));
|
|
|
}
|
|
|
|
|
|
if(json_object_object_get(json_object_object_get(json_object_object_get(obj, "csChargingProfiles"), "chargingSchedule"), "minChargingRate") != NULL)
|
|
@@ -829,7 +795,7 @@ void checkCompositeSchedule(uint8_t connectorId, uint32_t durationReq, struct St
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- sprintf((char*)txProfile.ChargingSchedule.StartSchedule, " ");
|
|
|
+ sprintf((char*)txProfile.ChargingSchedule.StartSchedule, "%s", ((strstr((char*)ShmOCPP16Data->StatusNotification[(connectorId==0?0:connectorId-1)].Status, "Charging")==NULL) ? compositeProfile->ChargingSchedule.StartSchedule : ShmOCPP16Data->StartTransaction[(connectorId==0?0:connectorId-1)].Timestamp));
|
|
|
}
|
|
|
|
|
|
if(json_object_object_get(json_object_object_get(json_object_object_get(obj, "csChargingProfiles"), "chargingSchedule"), "minChargingRate") != NULL)
|
|
@@ -1001,7 +967,7 @@ void checkCompositeSchedule(uint8_t connectorId, uint32_t durationReq, struct St
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- sprintf((char*)defaultTxProfile.ChargingSchedule.StartSchedule, " ");
|
|
|
+ sprintf((char*)defaultTxProfile.ChargingSchedule.StartSchedule, "%s", ((strstr((char*)ShmOCPP16Data->StatusNotification[(connectorId==0?0:connectorId-1)].Status, "Charging")==NULL) ? compositeProfile->ChargingSchedule.StartSchedule : ShmOCPP16Data->StartTransaction[(connectorId==0?0:connectorId-1)].Timestamp));
|
|
|
}
|
|
|
|
|
|
if(json_object_object_get(json_object_object_get(json_object_object_get(obj, "csChargingProfiles"), "chargingSchedule"), "minChargingRate") != NULL)
|
|
@@ -1089,7 +1055,7 @@ void checkCompositeSchedule(uint8_t connectorId, uint32_t durationReq, struct St
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- sprintf((char*)defaultTxProfile.ChargingSchedule.StartSchedule, " ");
|
|
|
+ sprintf((char*)defaultTxProfile.ChargingSchedule.StartSchedule, "%s", ((strstr((char*)ShmOCPP16Data->StatusNotification[(connectorId==0?0:connectorId-1)].Status, "Charging")==NULL) ? compositeProfile->ChargingSchedule.StartSchedule : ShmOCPP16Data->StartTransaction[(connectorId==0?0:connectorId-1)].Timestamp));
|
|
|
}
|
|
|
|
|
|
if(json_object_object_get(json_object_object_get(json_object_object_get(obj, "csChargingProfiles"), "chargingSchedule"), "minChargingRate") != NULL)
|
|
@@ -1260,7 +1226,7 @@ void checkCompositeSchedule(uint8_t connectorId, uint32_t durationReq, struct St
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- sprintf((char*)maxProfile.ChargingSchedule.StartSchedule, " ");
|
|
|
+ sprintf((char*)maxProfile.ChargingSchedule.StartSchedule, "%s", ((strstr((char*)ShmOCPP16Data->StatusNotification[(connectorId==0?0:connectorId-1)].Status, "Charging")==NULL) ? compositeProfile->ChargingSchedule.StartSchedule : ShmOCPP16Data->StartTransaction[(connectorId==0?0:connectorId-1)].Timestamp));
|
|
|
}
|
|
|
|
|
|
if(json_object_object_get(json_object_object_get(json_object_object_get(obj, "csChargingProfiles"), "chargingSchedule"), "minChargingRate") != NULL)
|
|
@@ -1348,7 +1314,7 @@ void checkCompositeSchedule(uint8_t connectorId, uint32_t durationReq, struct St
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- sprintf((char*)maxProfile.ChargingSchedule.StartSchedule, " ");
|
|
|
+ sprintf((char*)maxProfile.ChargingSchedule.StartSchedule, "%s", ((strstr((char*)ShmOCPP16Data->StatusNotification[(connectorId==0?0:connectorId-1)].Status, "Charging")==NULL) ? compositeProfile->ChargingSchedule.StartSchedule : ShmOCPP16Data->StartTransaction[(connectorId==0?0:connectorId-1)].Timestamp));
|
|
|
}
|
|
|
|
|
|
if(json_object_object_get(json_object_object_get(json_object_object_get(obj, "csChargingProfiles"), "chargingSchedule"), "minChargingRate") != NULL)
|
|
@@ -1469,18 +1435,18 @@ void checkCompositeSchedule(uint8_t connectorId, uint32_t durationReq, struct St
|
|
|
{
|
|
|
if(txProfile.ChargingSchedule.Duration != -1)
|
|
|
{
|
|
|
- txProfile.ChargingSchedule.Duration = ((txProfile.ChargingSchedule.Duration-getStartSinceWeek(compositeProfile->ChargingSchedule.StartSchedule))<0?
|
|
|
+ txProfile.ChargingSchedule.Duration = ((txProfile.ChargingSchedule.Duration-getStartSinceRecurring(txProfile.ChargingSchedule.StartSchedule, compositeProfile->ChargingSchedule.StartSchedule, FALSE))<0?
|
|
|
0:
|
|
|
- (txProfile.ChargingSchedule.Duration-getStartSinceWeek(compositeProfile->ChargingSchedule.StartSchedule)));
|
|
|
+ (txProfile.ChargingSchedule.Duration-getStartSinceRecurring(txProfile.ChargingSchedule.StartSchedule, compositeProfile->ChargingSchedule.StartSchedule, FALSE)));
|
|
|
}
|
|
|
|
|
|
for(int idxPeriod=0;idxPeriod<ARRAY_SIZE(txProfile.ChargingSchedule.ChargingSchedulePeriod);idxPeriod++)
|
|
|
{
|
|
|
if(txProfile.ChargingSchedule.ChargingSchedulePeriod[idxPeriod].StartPeriod != -1)
|
|
|
{
|
|
|
- txProfile.ChargingSchedule.ChargingSchedulePeriod[idxPeriod].StartPeriod = ((txProfile.ChargingSchedule.ChargingSchedulePeriod[idxPeriod].StartPeriod-getStartSinceWeek(compositeProfile->ChargingSchedule.StartSchedule))<0?
|
|
|
+ txProfile.ChargingSchedule.ChargingSchedulePeriod[idxPeriod].StartPeriod = ((txProfile.ChargingSchedule.ChargingSchedulePeriod[idxPeriod].StartPeriod-getStartSinceRecurring(txProfile.ChargingSchedule.StartSchedule, compositeProfile->ChargingSchedule.StartSchedule, FALSE))<0?
|
|
|
0:
|
|
|
- (txProfile.ChargingSchedule.ChargingSchedulePeriod[idxPeriod].StartPeriod-getStartSinceWeek(compositeProfile->ChargingSchedule.StartSchedule)));
|
|
|
+ (txProfile.ChargingSchedule.ChargingSchedulePeriod[idxPeriod].StartPeriod-getStartSinceRecurring(txProfile.ChargingSchedule.StartSchedule, compositeProfile->ChargingSchedule.StartSchedule, FALSE)));
|
|
|
|
|
|
if(idxPeriod > 0)
|
|
|
{
|
|
@@ -1496,18 +1462,18 @@ void checkCompositeSchedule(uint8_t connectorId, uint32_t durationReq, struct St
|
|
|
{
|
|
|
if(txProfile.ChargingSchedule.Duration != -1)
|
|
|
{
|
|
|
- txProfile.ChargingSchedule.Duration = ((txProfile.ChargingSchedule.Duration-getStartSinceToday(compositeProfile->ChargingSchedule.StartSchedule))<0?
|
|
|
+ txProfile.ChargingSchedule.Duration = ((txProfile.ChargingSchedule.Duration-getStartSinceRecurring(txProfile.ChargingSchedule.StartSchedule, compositeProfile->ChargingSchedule.StartSchedule, TRUE))<0?
|
|
|
0:
|
|
|
- (txProfile.ChargingSchedule.Duration-getStartSinceToday(compositeProfile->ChargingSchedule.StartSchedule)));
|
|
|
+ (txProfile.ChargingSchedule.Duration-getStartSinceRecurring(txProfile.ChargingSchedule.StartSchedule, compositeProfile->ChargingSchedule.StartSchedule, TRUE)));
|
|
|
}
|
|
|
|
|
|
for(int idxPeriod=0;idxPeriod<ARRAY_SIZE(txProfile.ChargingSchedule.ChargingSchedulePeriod);idxPeriod++)
|
|
|
{
|
|
|
if(txProfile.ChargingSchedule.ChargingSchedulePeriod[idxPeriod].StartPeriod != -1)
|
|
|
{
|
|
|
- txProfile.ChargingSchedule.ChargingSchedulePeriod[idxPeriod].StartPeriod = ((txProfile.ChargingSchedule.ChargingSchedulePeriod[idxPeriod].StartPeriod-getStartSinceToday(compositeProfile->ChargingSchedule.StartSchedule))<0?
|
|
|
+ txProfile.ChargingSchedule.ChargingSchedulePeriod[idxPeriod].StartPeriod = ((txProfile.ChargingSchedule.ChargingSchedulePeriod[idxPeriod].StartPeriod-getStartSinceRecurring(txProfile.ChargingSchedule.StartSchedule, compositeProfile->ChargingSchedule.StartSchedule, TRUE))<0?
|
|
|
0:
|
|
|
- (txProfile.ChargingSchedule.ChargingSchedulePeriod[idxPeriod].StartPeriod-getStartSinceToday(compositeProfile->ChargingSchedule.StartSchedule)));
|
|
|
+ (txProfile.ChargingSchedule.ChargingSchedulePeriod[idxPeriod].StartPeriod-getStartSinceRecurring(txProfile.ChargingSchedule.StartSchedule, compositeProfile->ChargingSchedule.StartSchedule, TRUE)));
|
|
|
|
|
|
if(idxPeriod > 0)
|
|
|
{
|
|
@@ -1520,7 +1486,7 @@ void checkCompositeSchedule(uint8_t connectorId, uint32_t durationReq, struct St
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- /*
|
|
|
+/*
|
|
|
DEBUG_INFO("txProfile after align.\n");
|
|
|
DEBUG_INFO("Profile ID: %d\n", txProfile.ChargingProfileId);
|
|
|
DEBUG_INFO("Profile stackLevel: %d\n", txProfile.StackLevel);
|
|
@@ -1618,18 +1584,18 @@ void checkCompositeSchedule(uint8_t connectorId, uint32_t durationReq, struct St
|
|
|
{
|
|
|
if(defaultTxProfile.ChargingSchedule.Duration != -1)
|
|
|
{
|
|
|
- defaultTxProfile.ChargingSchedule.Duration = ((defaultTxProfile.ChargingSchedule.Duration-getStartSinceWeek(compositeProfile->ChargingSchedule.StartSchedule))<0?
|
|
|
+ defaultTxProfile.ChargingSchedule.Duration = ((defaultTxProfile.ChargingSchedule.Duration-getStartSinceRecurring(defaultTxProfile.ChargingSchedule.StartSchedule, compositeProfile->ChargingSchedule.StartSchedule, FALSE))<0?
|
|
|
0:
|
|
|
- (defaultTxProfile.ChargingSchedule.Duration-getStartSinceWeek(compositeProfile->ChargingSchedule.StartSchedule)));
|
|
|
+ (defaultTxProfile.ChargingSchedule.Duration-getStartSinceRecurring(defaultTxProfile.ChargingSchedule.StartSchedule, compositeProfile->ChargingSchedule.StartSchedule, FALSE)));
|
|
|
}
|
|
|
|
|
|
for(int idxPeriod=0;idxPeriod<ARRAY_SIZE(defaultTxProfile.ChargingSchedule.ChargingSchedulePeriod);idxPeriod++)
|
|
|
{
|
|
|
if(defaultTxProfile.ChargingSchedule.ChargingSchedulePeriod[idxPeriod].StartPeriod != -1)
|
|
|
{
|
|
|
- defaultTxProfile.ChargingSchedule.ChargingSchedulePeriod[idxPeriod].StartPeriod = ((defaultTxProfile.ChargingSchedule.ChargingSchedulePeriod[idxPeriod].StartPeriod-getStartSinceWeek(compositeProfile->ChargingSchedule.StartSchedule))<0?
|
|
|
+ defaultTxProfile.ChargingSchedule.ChargingSchedulePeriod[idxPeriod].StartPeriod = ((defaultTxProfile.ChargingSchedule.ChargingSchedulePeriod[idxPeriod].StartPeriod-getStartSinceRecurring(defaultTxProfile.ChargingSchedule.StartSchedule, compositeProfile->ChargingSchedule.StartSchedule, FALSE))<0?
|
|
|
0:
|
|
|
- (defaultTxProfile.ChargingSchedule.ChargingSchedulePeriod[idxPeriod].StartPeriod-getStartSinceWeek(compositeProfile->ChargingSchedule.StartSchedule)));
|
|
|
+ (defaultTxProfile.ChargingSchedule.ChargingSchedulePeriod[idxPeriod].StartPeriod-getStartSinceRecurring(defaultTxProfile.ChargingSchedule.StartSchedule, compositeProfile->ChargingSchedule.StartSchedule, FALSE)));
|
|
|
|
|
|
if(defaultTxProfile.ChargingSchedule.ChargingSchedulePeriod[idxPeriod].StartPeriod < txProfile.ChargingSchedule.Duration)
|
|
|
{
|
|
@@ -1650,18 +1616,18 @@ void checkCompositeSchedule(uint8_t connectorId, uint32_t durationReq, struct St
|
|
|
{
|
|
|
if(defaultTxProfile.ChargingSchedule.Duration != -1)
|
|
|
{
|
|
|
- defaultTxProfile.ChargingSchedule.Duration = ((defaultTxProfile.ChargingSchedule.Duration-getStartSinceToday(compositeProfile->ChargingSchedule.StartSchedule))<0?
|
|
|
+ defaultTxProfile.ChargingSchedule.Duration = ((defaultTxProfile.ChargingSchedule.Duration-getStartSinceRecurring(defaultTxProfile.ChargingSchedule.StartSchedule, compositeProfile->ChargingSchedule.StartSchedule, TRUE))<0?
|
|
|
0:
|
|
|
- (defaultTxProfile.ChargingSchedule.Duration-getStartSinceToday(compositeProfile->ChargingSchedule.StartSchedule)));
|
|
|
+ (defaultTxProfile.ChargingSchedule.Duration-getStartSinceRecurring(defaultTxProfile.ChargingSchedule.StartSchedule, compositeProfile->ChargingSchedule.StartSchedule, TRUE)));
|
|
|
}
|
|
|
|
|
|
for(int idxPeriod=0;idxPeriod<ARRAY_SIZE(defaultTxProfile.ChargingSchedule.ChargingSchedulePeriod);idxPeriod++)
|
|
|
{
|
|
|
if(defaultTxProfile.ChargingSchedule.ChargingSchedulePeriod[idxPeriod].StartPeriod != -1)
|
|
|
{
|
|
|
- defaultTxProfile.ChargingSchedule.ChargingSchedulePeriod[idxPeriod].StartPeriod = ((defaultTxProfile.ChargingSchedule.ChargingSchedulePeriod[idxPeriod].StartPeriod-getStartSinceToday(compositeProfile->ChargingSchedule.StartSchedule))<0?
|
|
|
+ defaultTxProfile.ChargingSchedule.ChargingSchedulePeriod[idxPeriod].StartPeriod = ((defaultTxProfile.ChargingSchedule.ChargingSchedulePeriod[idxPeriod].StartPeriod-getStartSinceRecurring(defaultTxProfile.ChargingSchedule.StartSchedule, compositeProfile->ChargingSchedule.StartSchedule, TRUE))<0?
|
|
|
0:
|
|
|
- (defaultTxProfile.ChargingSchedule.ChargingSchedulePeriod[idxPeriod].StartPeriod-getStartSinceToday(compositeProfile->ChargingSchedule.StartSchedule)));
|
|
|
+ (defaultTxProfile.ChargingSchedule.ChargingSchedulePeriod[idxPeriod].StartPeriod-getStartSinceRecurring(defaultTxProfile.ChargingSchedule.StartSchedule, compositeProfile->ChargingSchedule.StartSchedule, TRUE)));
|
|
|
|
|
|
if(defaultTxProfile.ChargingSchedule.ChargingSchedulePeriod[idxPeriod].StartPeriod < txProfile.ChargingSchedule.Duration)
|
|
|
{
|
|
@@ -1768,18 +1734,18 @@ void checkCompositeSchedule(uint8_t connectorId, uint32_t durationReq, struct St
|
|
|
{
|
|
|
if(maxProfile.ChargingSchedule.Duration != -1)
|
|
|
{
|
|
|
- maxProfile.ChargingSchedule.Duration = ((maxProfile.ChargingSchedule.Duration-getStartSinceWeek(compositeProfile->ChargingSchedule.StartSchedule))<0?
|
|
|
+ maxProfile.ChargingSchedule.Duration = ((maxProfile.ChargingSchedule.Duration-getStartSinceRecurring(maxProfile.ChargingSchedule.StartSchedule, compositeProfile->ChargingSchedule.StartSchedule, FALSE))<0?
|
|
|
0:
|
|
|
- (maxProfile.ChargingSchedule.Duration-getStartSinceWeek(compositeProfile->ChargingSchedule.StartSchedule)));
|
|
|
+ (maxProfile.ChargingSchedule.Duration-getStartSinceRecurring(maxProfile.ChargingSchedule.StartSchedule, compositeProfile->ChargingSchedule.StartSchedule, FALSE)));
|
|
|
}
|
|
|
|
|
|
for(int idxPeriod=0;idxPeriod<ARRAY_SIZE(maxProfile.ChargingSchedule.ChargingSchedulePeriod);idxPeriod++)
|
|
|
{
|
|
|
if(maxProfile.ChargingSchedule.ChargingSchedulePeriod[idxPeriod].StartPeriod != -1)
|
|
|
{
|
|
|
- maxProfile.ChargingSchedule.ChargingSchedulePeriod[idxPeriod].StartPeriod = ((maxProfile.ChargingSchedule.ChargingSchedulePeriod[idxPeriod].StartPeriod-getStartSinceWeek(compositeProfile->ChargingSchedule.StartSchedule))<0?
|
|
|
+ maxProfile.ChargingSchedule.ChargingSchedulePeriod[idxPeriod].StartPeriod = ((maxProfile.ChargingSchedule.ChargingSchedulePeriod[idxPeriod].StartPeriod-getStartSinceRecurring(maxProfile.ChargingSchedule.StartSchedule, compositeProfile->ChargingSchedule.StartSchedule, FALSE))<0?
|
|
|
0:
|
|
|
- (maxProfile.ChargingSchedule.ChargingSchedulePeriod[idxPeriod].StartPeriod-getStartSinceWeek(compositeProfile->ChargingSchedule.StartSchedule)));
|
|
|
+ (maxProfile.ChargingSchedule.ChargingSchedulePeriod[idxPeriod].StartPeriod-getStartSinceRecurring(maxProfile.ChargingSchedule.StartSchedule, compositeProfile->ChargingSchedule.StartSchedule, FALSE)));
|
|
|
|
|
|
if(idxPeriod > 0)
|
|
|
{
|
|
@@ -1795,18 +1761,18 @@ void checkCompositeSchedule(uint8_t connectorId, uint32_t durationReq, struct St
|
|
|
{
|
|
|
if(maxProfile.ChargingSchedule.Duration != -1)
|
|
|
{
|
|
|
- maxProfile.ChargingSchedule.Duration = ((maxProfile.ChargingSchedule.Duration-getStartSinceToday(compositeProfile->ChargingSchedule.StartSchedule))<0?
|
|
|
+ maxProfile.ChargingSchedule.Duration = ((maxProfile.ChargingSchedule.Duration-getStartSinceRecurring(maxProfile.ChargingSchedule.StartSchedule, compositeProfile->ChargingSchedule.StartSchedule, TRUE))<0?
|
|
|
0:
|
|
|
- (maxProfile.ChargingSchedule.Duration-getStartSinceToday(compositeProfile->ChargingSchedule.StartSchedule)));
|
|
|
+ (maxProfile.ChargingSchedule.Duration-getStartSinceRecurring(maxProfile.ChargingSchedule.StartSchedule, compositeProfile->ChargingSchedule.StartSchedule, TRUE)));
|
|
|
}
|
|
|
|
|
|
for(int idxPeriod=0;idxPeriod<ARRAY_SIZE(maxProfile.ChargingSchedule.ChargingSchedulePeriod);idxPeriod++)
|
|
|
{
|
|
|
if(maxProfile.ChargingSchedule.ChargingSchedulePeriod[idxPeriod].StartPeriod != -1)
|
|
|
{
|
|
|
- maxProfile.ChargingSchedule.ChargingSchedulePeriod[idxPeriod].StartPeriod = ((maxProfile.ChargingSchedule.ChargingSchedulePeriod[idxPeriod].StartPeriod-getStartSinceToday(compositeProfile->ChargingSchedule.StartSchedule))<0?
|
|
|
+ maxProfile.ChargingSchedule.ChargingSchedulePeriod[idxPeriod].StartPeriod = ((maxProfile.ChargingSchedule.ChargingSchedulePeriod[idxPeriod].StartPeriod-getStartSinceRecurring(maxProfile.ChargingSchedule.StartSchedule, compositeProfile->ChargingSchedule.StartSchedule, TRUE))<0?
|
|
|
0:
|
|
|
- (maxProfile.ChargingSchedule.ChargingSchedulePeriod[idxPeriod].StartPeriod-getStartSinceToday(compositeProfile->ChargingSchedule.StartSchedule)));
|
|
|
+ (maxProfile.ChargingSchedule.ChargingSchedulePeriod[idxPeriod].StartPeriod-getStartSinceRecurring(maxProfile.ChargingSchedule.StartSchedule, compositeProfile->ChargingSchedule.StartSchedule, TRUE)));
|
|
|
|
|
|
if(idxPeriod > 0)
|
|
|
{
|