|
@@ -174,7 +174,7 @@ static struct OCPPAuthLocalElemet
|
|
|
// OCPP HeartBeat Response Not Receive Counts
|
|
|
//============================================
|
|
|
static int HeartBeatWithNOResponse = 0;
|
|
|
-static int HeartBeatCount = 0;
|
|
|
+static int HeartBeatCountPerHour = 0;
|
|
|
|
|
|
|
|
|
extern struct lws *wsi_client;
|
|
@@ -185,6 +185,7 @@ extern int SendBufLen;
|
|
|
|
|
|
extern char *random_uuid( char buf[37] );
|
|
|
extern void split(char **arr, char *str, const char *del);
|
|
|
+extern void ChageWebSocketPingInterval(int WebSocketPingInterval);
|
|
|
extern pthread_mutex_t mutex1;
|
|
|
extern struct Charger_Info Charger;
|
|
|
extern sqlite3 *db;
|
|
@@ -1245,15 +1246,11 @@ void CheckSystemValue(void)
|
|
|
//===============================
|
|
|
if((server_sign == TRUE) && (ShmOCPP16Data->SpMsg.bits.AuthorizeReq == 1)&&(authorizeRetryTimes < 3)/*authenrequest == FALSE*/)
|
|
|
{
|
|
|
- //if(strcmp((const char *)ShmOCPP16Data->ConfigurationTable.CoreProfile[AuthorizeRemoteTxRequests].ItemData, "TRUE") == 0)// [If AuthorizeRemoteTxRequests = true
|
|
|
- //{
|
|
|
sendAuthorizeRequest(0);
|
|
|
-
|
|
|
authorizeRetryTimes = authorizeRetryTimes + 1;
|
|
|
// authenrequest = TRUE
|
|
|
if(authorizeRetryTimes < 3)
|
|
|
ShmOCPP16Data->SpMsg.bits.AuthorizeReq = 0;
|
|
|
- //}
|
|
|
|
|
|
}
|
|
|
else if((server_sign == TRUE) && (ShmOCPP16Data->SpMsg.bits.AuthorizeReq == 1)&&(authorizeRetryTimes >= 3))
|
|
@@ -1587,6 +1584,7 @@ int sendAuthorizeRequest(int gun_index)
|
|
|
char tempdata[65]={0};
|
|
|
|
|
|
DEBUG_INFO("sendAuthorizeRequest \n");
|
|
|
+ memset(&(ShmOCPP16Data->Authorize.ResponseIdTagInfo),0,sizeof(struct StructIdTagInfo));
|
|
|
|
|
|
//Local Authorize
|
|
|
if(((strcmp((const char *)ShmOCPP16Data->ConfigurationTable.CoreProfile[LocalAuthorizeOffline].ItemData, "TRUE") == 0)&&(strcmp((const char *)ShmOCPP16Data->ConfigurationTable.LocalAuthListManagementProfile[LocalAuthListEnabled].ItemData, "TRUE") == 0)&&(ShmOCPP16Data->OcppConnStatus == 0))||((strcmp((const char *)ShmOCPP16Data->ConfigurationTable.CoreProfile[LocalPreAuthorize].ItemData, "TRUE") == 0)&&(strcmp((const char *)ShmOCPP16Data->ConfigurationTable.LocalAuthListManagementProfile[LocalAuthListEnabled].ItemData, "TRUE") == 0)))
|
|
@@ -1594,6 +1592,16 @@ int sendAuthorizeRequest(int gun_index)
|
|
|
OCPP_getIdTag((char *)ShmSysConfigAndInfo->SysConfig.UserId);
|
|
|
if((strcmp(idTagQuery.idTagstr,"") == 0) || (strcmp(idTagQuery.idTagstatus,"Accepted") != 0) )
|
|
|
{
|
|
|
+ if(strcmp(idTagQuery.idTagstr,"") == 0)
|
|
|
+ {
|
|
|
+ DEBUG_INFO("offline Local Authorization Fail !!!!, Card %s is blank!!!!\n", idTagQuery.idTagstr);
|
|
|
+ }
|
|
|
+
|
|
|
+ if(strcmp(idTagQuery.idTagstatus,"Accepted") != 0)
|
|
|
+ {
|
|
|
+ DEBUG_INFO("offline Local Authorization Fail !!!!, Card %s is not Accepted!!!!\n", idTagQuery.idTagstr);
|
|
|
+ }
|
|
|
+
|
|
|
DEBUG_INFO("offline Local Authorization Fail !!!!\n");
|
|
|
strcpy((char *)ShmOCPP16Data->Authorize.ResponseIdTagInfo.ExpiryDate, "");
|
|
|
strcpy((char *)ShmOCPP16Data->Authorize.ResponseIdTagInfo.ParentIdTag, (const char *)ShmSysConfigAndInfo->SysConfig.UserId);
|
|
@@ -1731,8 +1739,6 @@ int sendBootNotificationRequest(void)
|
|
|
memset(queuedata, 0, sizeof(queuedata));
|
|
|
strcpy(queuedata,message);
|
|
|
|
|
|
- HeartBeatCount = 0;
|
|
|
-
|
|
|
return result;
|
|
|
}
|
|
|
|
|
@@ -4125,6 +4131,10 @@ int handleChangeConfigurationRequest(char *uuid, char *payload)
|
|
|
//confirmation.setStatus(ConfigurationStatus.Rejected);
|
|
|
sendChangeConfigurationConfirmation(uuid, comfirmstr);
|
|
|
ShmOCPP16Data->MsMsg.bits.ChangeConfigurationConf = 1;
|
|
|
+ if((strcmp(keystr,"WebSocketPingInterval")==0)&&(strcmp(comfirmstr,"Accepted")==0))
|
|
|
+ {
|
|
|
+ ChageWebSocketPingInterval(atoi(valuestr));
|
|
|
+ }
|
|
|
|
|
|
|
|
|
return result;
|
|
@@ -10214,14 +10224,6 @@ void handleHeartbeatResponse(char *payload, int gun_index)
|
|
|
int c = 0;
|
|
|
char *loc;
|
|
|
//[3,"9c2e3c41-ab34-409e-8902-f5f48b6de641",{"currentTime":"2018-09-06T02:22:57.171Z"}]
|
|
|
-
|
|
|
- if((HeartBeatCount%360) == 0)
|
|
|
- {
|
|
|
- DEBUG_INFO("handleHeartbeatResponse ...\n");
|
|
|
- DEBUG_INFO("After 1 hour, It will print out Heartbeat.\n");
|
|
|
-
|
|
|
- }
|
|
|
- HeartBeatCount = HeartBeatCount + 1;
|
|
|
c = 0;
|
|
|
loc = strstr(payload, "currentTime");
|
|
|
memset(sstr ,0, sizeof(sstr) );
|
|
@@ -10257,6 +10259,41 @@ void handleHeartbeatResponse(char *payload, int gun_index)
|
|
|
|
|
|
HeartBeatWithNOResponse = 0;
|
|
|
|
|
|
+ //--------Print Out HeartBeat log
|
|
|
+ {
|
|
|
+ double diff_t;
|
|
|
+ struct tm tp,tp1;
|
|
|
+
|
|
|
+
|
|
|
+ // BootNotification Receive Time
|
|
|
+
|
|
|
+ strptime((const char *)ShmOCPP16Data->BootNotification.ResponseCurrentTime, "%Y-%m-%dT%H:%M:%S", &tp);
|
|
|
+ tp.tm_isdst = -1;
|
|
|
+ time_t BootNotificationReceiveTime = mktime(&tp);
|
|
|
+
|
|
|
+
|
|
|
+ //HeartBeat Receive Time
|
|
|
+ strptime((const char *)ShmOCPP16Data->Heartbeat.ResponseCurrentTime, "%Y-%m-%dT%H:%M:%S", &tp1);
|
|
|
+ tp1.tm_isdst = -1;
|
|
|
+ time_t HeartBeatReceiveTime = mktime(&tp1);
|
|
|
+
|
|
|
+
|
|
|
+ diff_t = difftime(HeartBeatReceiveTime, BootNotificationReceiveTime);
|
|
|
+
|
|
|
+ printf("handleHeartbeatResponse differnt time=%f..\n",diff_t);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ if(((int)diff_t / 3600) > HeartBeatCountPerHour)
|
|
|
+ {
|
|
|
+ HeartBeatCountPerHour = (int)diff_t / 3600;
|
|
|
+ DEBUG_INFO("handleHeartbeatResponse ...\n");
|
|
|
+ DEBUG_INFO("After 1 hour, It will print out Heartbeat.\n");
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
}
|
|
|
|
|
|
void handleMeterValuesResponse(char *payload, int gun_index)
|
|
@@ -10555,9 +10592,9 @@ int initialConfigurationTable(void)
|
|
|
//AuthorizeRemoteTxRequests
|
|
|
ShmOCPP16Data->ConfigurationTable.CoreProfile[AuthorizeRemoteTxRequests].ItemAccessibility = 0;
|
|
|
strcpy((char *)ShmOCPP16Data->ConfigurationTable.CoreProfile[AuthorizeRemoteTxRequests].ItemName, "AuthorizeRemoteTxRequests");
|
|
|
- strcpy((char *)ShmOCPP16Data->ConfigurationTable.CoreProfile[AuthorizeRemoteTxRequests].ItemData, "TRUE" );
|
|
|
+ strcpy((char *)ShmOCPP16Data->ConfigurationTable.CoreProfile[AuthorizeRemoteTxRequests].ItemData, "FALSE" );
|
|
|
|
|
|
- fprintf(outfile,"{\"key\":\"%s\",\"readonly\": %s,\"value\":\"%s\"}\n","AuthorizeRemoteTxRequests", "true", "TRUE");
|
|
|
+ fprintf(outfile,"{\"key\":\"%s\",\"readonly\": %s,\"value\":\"%s\"}\n","AuthorizeRemoteTxRequests", "true", "FALSE");
|
|
|
|
|
|
//BlinkRepeat
|
|
|
ShmOCPP16Data->ConfigurationTable.CoreProfile[BlinkRepeat].ItemAccessibility = 1;
|
|
@@ -14006,7 +14043,7 @@ void OCPP_getIdTag(char *idTag)
|
|
|
memset(idTagAuthorization, 0, sizeof(idTagAuthorization));
|
|
|
memset(&idTagQuery, 0, sizeof(idTagQuery));
|
|
|
|
|
|
-
|
|
|
+ DEBUG_INFO("look up card: %s in ocpp_auth_local table", idTag);
|
|
|
sprintf(sql,"select * from ocpp_auth_local where idtag='%s'", idTag);
|
|
|
|
|
|
/* Execute SQL statement */
|
|
@@ -16033,6 +16070,11 @@ void FillStartTransaction(int ConnectorId, unsigned char IdTag[], int MeterStart
|
|
|
|
|
|
}
|
|
|
|
|
|
+int GetWebSocketPingInterval(void)
|
|
|
+{
|
|
|
+ return atoi((const char *)ShmOCPP16Data->ConfigurationTable.CoreProfile[WebSocketPingInterval].ItemData);
|
|
|
+}
|
|
|
+
|
|
|
void LWS_Send(char * str)
|
|
|
{
|
|
|
//=====================================================
|