|
@@ -67,7 +67,6 @@ static char CurrentChargingProfileScheduleStr[30] = {0};
|
|
|
// OCPP status/previous related variables
|
|
|
//========================================
|
|
|
static int GunStatusInterval = 10;
|
|
|
-static uint8_t statusModeChage[CONNECTOR_QUANTITY] = {FALSE};
|
|
|
static uint8_t ChademoPreviousSystemStatus[(CHAdeMO_QUANTITY>0?CHAdeMO_QUANTITY:1)];
|
|
|
static uint8_t CcsPreviousSystemStatus[(CCS_QUANTITY>0?CCS_QUANTITY:1)];
|
|
|
static uint8_t GbPreviousSystemStatus[(GB_QUANTITY>0?GB_QUANTITY:1)];
|
|
@@ -129,10 +128,11 @@ typedef union
|
|
|
struct
|
|
|
{
|
|
|
//CsMsgValue[0]
|
|
|
- unsigned char StatusNotificationReq:1; //bit 0,
|
|
|
- unsigned char StatusNotificationConf:1; //bit 1,
|
|
|
- unsigned char TriggerMeterValue:1; //bit 2,
|
|
|
- unsigned char :5; //bit 5~7
|
|
|
+ unsigned char StatusNotificationReq:1; //bit 0,
|
|
|
+ unsigned char StatusNotificationConf:1; //bit 1,
|
|
|
+ unsigned char TriggerMeterValue:1; //bit 2,
|
|
|
+ unsigned char TriggerStatusNotificationReq:1; //bit 3,
|
|
|
+ unsigned char :4; //bit 4~7
|
|
|
}bits[CONNECTOR_QUANTITY];
|
|
|
}CpinitiateMsg;
|
|
|
|
|
@@ -3007,7 +3007,6 @@ void CheckSystemValue(void)
|
|
|
ChademoPreviousSystemStatus[index] = ShmSysConfigAndInfo->SysInfo.ChademoChargingData[index].SystemStatus;
|
|
|
ChademoPreviousConnectorPlugIn[index] = ShmSysConfigAndInfo->SysInfo.ChademoChargingData[index].ConnectorPlugIn;
|
|
|
cpinitateMsg.bits[gun_index].StatusNotificationReq = 1;
|
|
|
- statusModeChage[gun_index] = TRUE;
|
|
|
}
|
|
|
|
|
|
if((ShmSysConfigAndInfo->SysInfo.ChademoChargingData[index].Index == tempIndex) && ((ShmSysConfigAndInfo->SysInfo.ChademoChargingData[index].SystemStatus == SYS_MODE_COMPLETE) || (ShmSysConfigAndInfo->SysInfo.ChademoChargingData[index].SystemStatus <= SYS_MODE_PREPARING))) // complete
|
|
@@ -3065,7 +3064,6 @@ void CheckSystemValue(void)
|
|
|
CcsPreviousSystemStatus[index] = ShmSysConfigAndInfo->SysInfo.CcsChargingData[index].SystemStatus;
|
|
|
CcsPreviousConnectorPlugIn[index] = ShmSysConfigAndInfo->SysInfo.CcsChargingData[index].ConnectorPlugIn;
|
|
|
cpinitateMsg.bits[gun_index].StatusNotificationReq = 1;
|
|
|
- statusModeChage[gun_index] = TRUE;
|
|
|
}
|
|
|
|
|
|
if((ShmSysConfigAndInfo->SysInfo.CcsChargingData[index].Index == tempIndex) && ((ShmSysConfigAndInfo->SysInfo.CcsChargingData[index].SystemStatus == SYS_MODE_COMPLETE) || (ShmSysConfigAndInfo->SysInfo.CcsChargingData[index].SystemStatus <= SYS_MODE_PREPARING))) // complete
|
|
@@ -3122,7 +3120,6 @@ void CheckSystemValue(void)
|
|
|
GbPreviousSystemStatus[index] = ShmSysConfigAndInfo->SysInfo.GbChargingData[index].SystemStatus;
|
|
|
GbPreviousConnectorPlugIn[index] = ShmSysConfigAndInfo->SysInfo.GbChargingData[index].ConnectorPlugIn;
|
|
|
cpinitateMsg.bits[gun_index].StatusNotificationReq = 1;
|
|
|
- statusModeChage[gun_index] = TRUE;
|
|
|
}
|
|
|
|
|
|
if((ShmSysConfigAndInfo->SysInfo.GbChargingData[index].Index == tempIndex) && ((ShmSysConfigAndInfo->SysInfo.GbChargingData[index].SystemStatus == SYS_MODE_COMPLETE) || (ShmSysConfigAndInfo->SysInfo.GbChargingData[index].SystemStatus <= SYS_MODE_PREPARING))) // complete
|
|
@@ -3171,7 +3168,6 @@ void CheckSystemValue(void)
|
|
|
DoPreviousSystemStatus[index] = ShmSysConfigAndInfo->SysInfo.ConnectorInfo[index].GeneralChargingData.SystemStatus;
|
|
|
DoPreviousConnectorPlugIn[index] = ShmSysConfigAndInfo->SysInfo.ConnectorInfo[index].GeneralChargingData.ConnectorPlugIn;
|
|
|
cpinitateMsg.bits[gun_index].StatusNotificationReq = 1;
|
|
|
- statusModeChage[gun_index] = TRUE;
|
|
|
}
|
|
|
|
|
|
if((ShmSysConfigAndInfo->SysInfo.ConnectorInfo[index].GeneralChargingData.Index == tempIndex) && ((ShmSysConfigAndInfo->SysInfo.ConnectorInfo[index].GeneralChargingData.SystemStatus == SYS_MODE_COMPLETE) || (ShmSysConfigAndInfo->SysInfo.ConnectorInfo[index].GeneralChargingData.SystemStatus <= SYS_MODE_PREPARING))) // complete
|
|
@@ -3227,7 +3223,6 @@ void CheckSystemValue(void)
|
|
|
AcPreviousSystemStatus[index] = ShmSysConfigAndInfo->SysInfo.AcChargingData[index].SystemStatus;
|
|
|
AcPreviousConnectorPlugIn[index] = ShmSysConfigAndInfo->SysInfo.AcChargingData[index].PilotState;
|
|
|
cpinitateMsg.bits[gun_index].StatusNotificationReq = 1;
|
|
|
- statusModeChage[gun_index] = TRUE;
|
|
|
}
|
|
|
|
|
|
if((ShmSysConfigAndInfo->SysInfo.AcChargingData[index].Index == tempIndex) && ((ShmSysConfigAndInfo->SysInfo.AcChargingData[index].SystemStatus == SYS_MODE_COMPLETE) || (ShmSysConfigAndInfo->SysInfo.AcChargingData[index].SystemStatus <= SYS_MODE_PREPARING))) // complete
|
|
@@ -3253,11 +3248,9 @@ void CheckSystemValue(void)
|
|
|
}// END
|
|
|
}
|
|
|
|
|
|
- if(isWebsocketSendable && (server_sign == TRUE) &&
|
|
|
+ if(isWebsocketSendable && (server_sign == TRUE) && ((time((time_t*)NULL)-clientTime.StatusNotification[gun_index]) > 5) &&
|
|
|
(
|
|
|
- (statusModeChage[gun_index] == TRUE) ||
|
|
|
- //((time((time_t*)NULL)-clientTime.StatusNotification[gun_index]) > (server_cycle_Status + (GunStatusInterval*gun_index))) ||
|
|
|
- ((cpinitateMsg.bits[gun_index].StatusNotificationReq == 1) && ((time((time_t*)NULL)-clientTime.StatusNotification[gun_index]) > 5))
|
|
|
+ (cpinitateMsg.bits[gun_index].StatusNotificationReq == 1) || (cpinitateMsg.bits[gun_index].TriggerStatusNotificationReq == 1)
|
|
|
)
|
|
|
)
|
|
|
{
|
|
@@ -3266,7 +3259,6 @@ void CheckSystemValue(void)
|
|
|
|
|
|
sendStatusNotificationRequest(gun_index);
|
|
|
clientTime.StatusNotification[gun_index] = time((time_t*)NULL);
|
|
|
- statusModeChage[gun_index] = FALSE;
|
|
|
}
|
|
|
|
|
|
//==============================================
|
|
@@ -4447,11 +4439,11 @@ S_FAULT =12
|
|
|
|
|
|
//it's option
|
|
|
if(((strstr((char *)ShmOCPP16Data->StatusNotification[gun_index].Status, ChargePointStatusStr[currentStatus]) != NULL) || (((currentStatus == SuspendedEV) || (currentStatus == SuspendedEVSE)) && ShmOCPP16Data->CsMsg.bits[gun_index].RemoteStopTransactionReq)) &&
|
|
|
- !ShmOCPP16Data->CsMsg.bits[gun_index].TriggerMessageReq)
|
|
|
+ !cpinitateMsg.bits[gun_index].TriggerStatusNotificationReq)
|
|
|
{
|
|
|
isStateChanged = FALSE;
|
|
|
}
|
|
|
- ShmOCPP16Data->CsMsg.bits[gun_index].TriggerMessageReq = 0;
|
|
|
+ cpinitateMsg.bits[gun_index].TriggerStatusNotificationReq = 0;
|
|
|
|
|
|
strcpy((char *)ShmOCPP16Data->StatusNotification[gun_index].Timestamp, buf);
|
|
|
strcpy((char *)ShmOCPP16Data->StatusNotification[gun_index].VendorId, (char*)ShmSysConfigAndInfo->SysConfig.chargePointVendor);
|
|
@@ -4485,6 +4477,7 @@ S_FAULT =12
|
|
|
else
|
|
|
{
|
|
|
cpinitateMsg.bits[gun_index].StatusNotificationReq = 0;
|
|
|
+ cpinitateMsg.bits[gun_index].TriggerStatusNotificationReq = 0;
|
|
|
result = PASS;
|
|
|
}
|
|
|
|
|
@@ -11747,10 +11740,11 @@ int handleTriggerMessageRequest(char *uuid, char *payload)
|
|
|
{
|
|
|
if(connectorIdIsNULL == FALSE)
|
|
|
{
|
|
|
- if((connectorIdInt > 0) && ((connectorIdInt -1) < gunTotalNumber))
|
|
|
+ if((connectorIdInt > 0) && ((connectorIdInt-1) < gunTotalNumber))
|
|
|
{
|
|
|
ShmOCPP16Data->CsMsg.bits[connectorIdInt-1].TriggerMessageReq = 1;
|
|
|
- cpinitateMsg.bits[connectorIdInt -1].StatusNotificationReq = 1;
|
|
|
+ cpinitateMsg.bits[connectorIdInt-1].TriggerStatusNotificationReq = 1;
|
|
|
+ //clientTime.StatusNotification[connectorIdInt-1] = time((time_t*)NULL);
|
|
|
}
|
|
|
}
|
|
|
else
|
|
@@ -11758,7 +11752,8 @@ int handleTriggerMessageRequest(char *uuid, char *payload)
|
|
|
for(int idx=0;idx< gunTotalNumber;idx++)
|
|
|
{
|
|
|
ShmOCPP16Data->CsMsg.bits[idx].TriggerMessageReq = 1;
|
|
|
- cpinitateMsg.bits[idx].StatusNotificationReq = 1;
|
|
|
+ cpinitateMsg.bits[idx].TriggerStatusNotificationReq = 1;
|
|
|
+ //clientTime.StatusNotification[idx] = time((time_t*)NULL);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -12731,6 +12726,7 @@ void handleStatusNotificationResponse(char *payload, int gun_index)
|
|
|
mtrace();
|
|
|
DEBUG_INFO("handleStatusNotificationResponse...\n");
|
|
|
|
|
|
+ cpinitateMsg.bits[gun_index].TriggerStatusNotificationReq = 0;
|
|
|
cpinitateMsg.bits[gun_index].StatusNotificationReq = 0;
|
|
|
cpinitateMsg.bits[gun_index].StatusNotificationConf = 1;
|
|
|
|
|
@@ -17950,7 +17946,6 @@ void InitialSystemValue(void)
|
|
|
DiagnosticsStatusNotificationStatus = DIAGNOSTIC_STATUS_IDLE; // Idle
|
|
|
|
|
|
memset(CurrentChargingProfileScheduleStr, 0, ARRAY_SIZE(CurrentChargingProfileScheduleStr));
|
|
|
- memset(statusModeChage, 0, ARRAY_SIZE(statusModeChage));
|
|
|
memset(ChademoPreviousSystemStatus, 0, ARRAY_SIZE(ChademoPreviousSystemStatus));
|
|
|
memset(CcsPreviousSystemStatus, 0, ARRAY_SIZE(CcsPreviousSystemStatus));
|
|
|
memset(GbPreviousSystemStatus, 0, ARRAY_SIZE(GbPreviousSystemStatus));
|
|
@@ -18083,10 +18078,10 @@ void InitialSystemValue(void)
|
|
|
|
|
|
for(int gun_index=0; gun_index < gunTotalNumber; gun_index++ )
|
|
|
{
|
|
|
+ cpinitateMsg.bits[gun_index].TriggerStatusNotificationReq = 0;
|
|
|
cpinitateMsg.bits[gun_index].StatusNotificationReq = 0;
|
|
|
cpinitateMsg.bits[gun_index].StatusNotificationConf = 0;
|
|
|
//clientTime.MeterValues[gun_index] = time((time_t*)NULL);
|
|
|
- clientTime.StatusNotification[gun_index] = time((time_t*)NULL);
|
|
|
memset(&ShmOCPP16Data->StatusNotification[gun_index], 0x00, sizeof(struct StructStatusNotification));
|
|
|
}
|
|
|
|