|
@@ -3430,6 +3430,14 @@ void CheckSystemValue(void)
|
|
|
sendFirmwareStatusNotificationRequest((char *)ShmOCPP16Data->FirmwareStatusNotification.Status);
|
|
|
}
|
|
|
|
|
|
+ //==========================================
|
|
|
+ // csu trigger DiagnosticsStatusNotificationReq
|
|
|
+ //==========================================
|
|
|
+ if(isWebsocketSendable && (server_sign == TRUE) && (ShmOCPP16Data->SpMsg.bits.DiagnosticsStatusNotificationReq == 1))
|
|
|
+ {
|
|
|
+ sendDiagnosticsStatusNotificationRequest((char *)ShmOCPP16Data->DiagnosticsStatusNotification.Status);
|
|
|
+ }
|
|
|
+
|
|
|
//==========================================
|
|
|
// csu trigger CancelReservationConf
|
|
|
//==========================================
|
|
@@ -3463,6 +3471,11 @@ void CheckSystemValue(void)
|
|
|
sendReserveNowTransactionConfirmation((char *)ShmOCPP16Data->ReserveNow[gun_index].guid, (char *)ShmOCPP16Data->ReserveNow[gun_index].ResponseStatus);
|
|
|
ShmOCPP16Data->CsMsg.bits[gun_index].ReserveNowConf = 0;
|
|
|
}
|
|
|
+
|
|
|
+ if(isWebsocketSendable && (server_sign == TRUE) && (ShmOCPP16Data->SpMsg.bits.SignCertificateReq == 1) && (access("/Storage/OCPP/cert.csr",F_OK) != -1))
|
|
|
+ {
|
|
|
+ sendSignCertificateRequest();
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -3651,7 +3664,7 @@ int sendDiagnosticsStatusNotificationRequest(char *status)
|
|
|
|
|
|
//[ 2, "9f7bced1-b8b1-40ec-b3bb-2e15630e3cdc", "DiagnosticsStatusNotification", { "status": "Idle" } ]
|
|
|
|
|
|
- DEBUG_INFO("sendDiagnosticsStatusNotificationRequest \n");
|
|
|
+ DEBUG_INFO("sendDiagnosticsStatusNotificationRequest...\n");
|
|
|
sprintf((char *)ShmOCPP16Data->DiagnosticsStatusNotification.Status,"%s",(const char *)status);
|
|
|
random_uuid(guid);
|
|
|
|
|
@@ -6240,7 +6253,7 @@ int sendLogStatusNotificationRequest(char *status)
|
|
|
random_uuid(guid);
|
|
|
sprintf(message,"[%d,\"%s\",\"LogStatusNotification\",%s]",MESSAGE_TYPE_CALL, guid, json_object_to_json_string_ext(LogStatusNotification, JSON_C_TO_STRING_PLAIN));
|
|
|
json_object_put(LogStatusNotification);
|
|
|
- LWS_SendNow(message);
|
|
|
+ LWS_Send(message);
|
|
|
|
|
|
sprintf(tempdata, "LogStatusNotification,%d", 0);
|
|
|
|
|
@@ -6255,7 +6268,7 @@ int sendLogStatusNotificationRequest(char *status)
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
-int sendSecurityEventNotificationRequest(int gun_index)
|
|
|
+int sendSecurityEventNotificationRequest()
|
|
|
{
|
|
|
mtrace();
|
|
|
int result = PASS;
|
|
@@ -6286,7 +6299,7 @@ int sendSecurityEventNotificationRequest(int gun_index)
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
-int sendSignCertificateRequest(int gun_index)
|
|
|
+int sendSignCertificateRequest()
|
|
|
{
|
|
|
mtrace();
|
|
|
int result = PASS;
|
|
@@ -6296,6 +6309,20 @@ int sendSignCertificateRequest(int gun_index)
|
|
|
json_object *SignCertificate = json_object_new_object();
|
|
|
DEBUG_INFO("sendSignCertificateRequest...\n");
|
|
|
|
|
|
+ // Read csr file content
|
|
|
+ memset(ShmOCPP16Data->SignCertificate.csr, 0x00, ARRAY_SIZE(ShmOCPP16Data->SignCertificate.csr));
|
|
|
+ FILE *fp=fopen("/Storage/OCPP/cert.csr","r");
|
|
|
+ char *line = NULL;
|
|
|
+ size_t len = 0;
|
|
|
+ while(getline(&line, &len, fp) != -1)
|
|
|
+ {
|
|
|
+ if((strstr(line, "BEGIN CERTIFICATE REQUEST") == NULL) && (strstr(line, "END CERTIFICATE REQUEST") == NULL))
|
|
|
+ {
|
|
|
+ memcpy(&ShmOCPP16Data->SignCertificate.csr[strlen((char*)ShmOCPP16Data->SignCertificate.csr)], line, (strlen(line)-1));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ fclose(fp);
|
|
|
+
|
|
|
json_object_object_add(SignCertificate, "csr", json_object_new_string((char*)ShmOCPP16Data->SignCertificate.csr));
|
|
|
|
|
|
random_uuid(guid);
|
|
@@ -6333,7 +6360,7 @@ int sendSignedFirmwareStatusNotificationRequest(char *status)
|
|
|
random_uuid(guid);
|
|
|
sprintf(message,"[%d,\"%s\",\"FirmwareStatusNotification\",%s]",MESSAGE_TYPE_CALL, guid, json_object_to_json_string_ext(FirmwareStatusNotification, JSON_C_TO_STRING_PLAIN));
|
|
|
json_object_put(FirmwareStatusNotification);
|
|
|
- LWS_SendNow(message);
|
|
|
+ LWS_Send(message);
|
|
|
|
|
|
sprintf(tempdata, "FirmwareStatusNotification,%d", 0);
|
|
|
|
|
@@ -8898,7 +8925,8 @@ void* GetDiagnosticsProcess(void* data)
|
|
|
if(strcmp(locationstr,"")==0)
|
|
|
{
|
|
|
DEBUG_INFO("location is <Empty>!\n");
|
|
|
- sendDiagnosticsStatusNotificationRequest(DiagnosticsStatusStr[DiagnosticsStatus_UploadFailed]);
|
|
|
+ sprintf((char*)ShmOCPP16Data->DiagnosticsStatusNotification.Status, "%s", DiagnosticsStatusStr[DiagnosticsStatus_UploadFailed]);
|
|
|
+ ShmOCPP16Data->SpMsg.bits.DiagnosticsStatusNotificationReq = 1;
|
|
|
goto end;
|
|
|
}
|
|
|
|
|
@@ -8921,7 +8949,8 @@ void* GetDiagnosticsProcess(void* data)
|
|
|
else
|
|
|
{
|
|
|
DEBUG_INFO("fnamePlusPath not exist!\n");
|
|
|
- sendDiagnosticsStatusNotificationRequest(DiagnosticsStatusStr[DiagnosticsStatus_UploadFailed]);
|
|
|
+ sprintf((char*)ShmOCPP16Data->DiagnosticsStatusNotification.Status, "%s", DiagnosticsStatusStr[DiagnosticsStatus_UploadFailed]);
|
|
|
+ ShmOCPP16Data->SpMsg.bits.DiagnosticsStatusNotificationReq = 1;
|
|
|
goto end;
|
|
|
}
|
|
|
|
|
@@ -8943,7 +8972,8 @@ void* GetDiagnosticsProcess(void* data)
|
|
|
if((strcmp(protocol,"ftp")!=0)&&(strcmp(protocol,"http")!=0))
|
|
|
{
|
|
|
DEBUG_INFO("protocol is not ftp/http ! \n");
|
|
|
- sendDiagnosticsStatusNotificationRequest(DiagnosticsStatusStr[DiagnosticsStatus_UploadFailed]);
|
|
|
+ sprintf((char*)ShmOCPP16Data->DiagnosticsStatusNotification.Status, "%s", DiagnosticsStatusStr[DiagnosticsStatus_UploadFailed]);
|
|
|
+ ShmOCPP16Data->SpMsg.bits.DiagnosticsStatusNotificationReq = 1;
|
|
|
goto end;
|
|
|
}
|
|
|
|
|
@@ -8954,21 +8984,24 @@ void* GetDiagnosticsProcess(void* data)
|
|
|
|
|
|
do
|
|
|
{
|
|
|
- sendDiagnosticsStatusNotificationRequest(DiagnosticsStatusStr[DiagnosticsStatus_Uploading]);
|
|
|
+ sprintf((char*)ShmOCPP16Data->DiagnosticsStatusNotification.Status, "%s", DiagnosticsStatusStr[DiagnosticsStatus_Uploading]);
|
|
|
+ ShmOCPP16Data->SpMsg.bits.DiagnosticsStatusNotificationReq = 1;
|
|
|
sleep(3);
|
|
|
|
|
|
isSuccess = httpUploadFile(host, ftppath, fnamePlusPath, locationstr);
|
|
|
if(!isSuccess)
|
|
|
{
|
|
|
DEBUG_INFO("Diagnostics fail.\n");
|
|
|
- sendDiagnosticsStatusNotificationRequest(DiagnosticsStatusStr[DiagnosticsStatus_UploadFailed]);
|
|
|
+ sprintf((char*)ShmOCPP16Data->DiagnosticsStatusNotification.Status, "%s", DiagnosticsStatusStr[DiagnosticsStatus_UploadFailed]);
|
|
|
+ ShmOCPP16Data->SpMsg.bits.DiagnosticsStatusNotificationReq = 1;
|
|
|
sleep(retryIntervalInt);
|
|
|
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
DEBUG_INFO("sendDiagnosticsStatusNotificationRequest Uploaded\n");
|
|
|
- sendDiagnosticsStatusNotificationRequest(DiagnosticsStatusStr[DiagnosticsStatus_Uploaded]);
|
|
|
+ sprintf((char*)ShmOCPP16Data->DiagnosticsStatusNotification.Status, "%s", DiagnosticsStatusStr[DiagnosticsStatus_Uploaded]);
|
|
|
+ ShmOCPP16Data->SpMsg.bits.DiagnosticsStatusNotificationReq = 1;
|
|
|
}
|
|
|
retriesInt--;
|
|
|
}while((isSuccess == 0)&&(retriesInt >= 0));
|
|
@@ -9005,20 +9038,23 @@ void* GetDiagnosticsProcess(void* data)
|
|
|
|
|
|
do
|
|
|
{
|
|
|
- sendDiagnosticsStatusNotificationRequest(DiagnosticsStatusStr[DiagnosticsStatus_Uploading]);
|
|
|
+ sprintf((char*)ShmOCPP16Data->DiagnosticsStatusNotification.Status, "%s", DiagnosticsStatusStr[DiagnosticsStatus_Uploading]);
|
|
|
+ ShmOCPP16Data->SpMsg.bits.DiagnosticsStatusNotificationReq = 1;
|
|
|
sleep(3);
|
|
|
|
|
|
isSuccess = ftpFile(host1, user, password, port, ftppath, fnamePlusPath, fnamePWithNoPath);
|
|
|
if(!isSuccess)
|
|
|
{
|
|
|
DEBUG_INFO("Diagnostics fail.\n");
|
|
|
- sendDiagnosticsStatusNotificationRequest(DiagnosticsStatusStr[DiagnosticsStatus_UploadFailed]);
|
|
|
+ sprintf((char*)ShmOCPP16Data->DiagnosticsStatusNotification.Status, "%s", DiagnosticsStatusStr[DiagnosticsStatus_UploadFailed]);
|
|
|
+ ShmOCPP16Data->SpMsg.bits.DiagnosticsStatusNotificationReq = 1;
|
|
|
sleep(retryIntervalInt);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
DEBUG_INFO("sendDiagnosticsStatusNotificationRequest Uploaded\n");
|
|
|
- sendDiagnosticsStatusNotificationRequest(DiagnosticsStatusStr[DiagnosticsStatus_Uploaded]);
|
|
|
+ sprintf((char*)ShmOCPP16Data->DiagnosticsStatusNotification.Status, "%s", DiagnosticsStatusStr[DiagnosticsStatus_Uploaded]);
|
|
|
+ ShmOCPP16Data->SpMsg.bits.DiagnosticsStatusNotificationReq = 1;
|
|
|
}
|
|
|
retriesInt--;
|
|
|
}while((!isSuccess)&&(retriesInt >= 0));
|
|
@@ -11470,19 +11506,20 @@ int handleTriggerMessageRequest(char *uuid, char *payload)
|
|
|
//==========================
|
|
|
if( strcmp(requestedMessagestr, MessageTriggerStr[FirmwareStatusNotification]) == 0)
|
|
|
{
|
|
|
- if((FirmwareStatusNotificationStatus != FIRMWARE_STATUS_DOWNLOADING) &&
|
|
|
- (FirmwareStatusNotificationStatus != FIRMWARE_STATUS_DOWNLOADED) &&
|
|
|
- (FirmwareStatusNotificationStatus != FIRMWARE_STATUS_IDLE) &&
|
|
|
- (FirmwareStatusNotificationStatus != FIRMWARE_STATUS_INSTALLING) )
|
|
|
+ if((strlen((char*)ShmOCPP16Data->FirmwareStatusNotification.Status) == 0) ||
|
|
|
+ ((FirmwareStatusNotificationStatus != FIRMWARE_STATUS_DOWNLOADING) && (FirmwareStatusNotificationStatus != FIRMWARE_STATUS_DOWNLOADED) && (FirmwareStatusNotificationStatus != FIRMWARE_STATUS_IDLE) && (FirmwareStatusNotificationStatus != FIRMWARE_STATUS_INSTALLING)))
|
|
|
{
|
|
|
FirmwareStatusNotificationStatus = FIRMWARE_STATUS_IDLE;
|
|
|
+ sprintf((char*)ShmOCPP16Data->FirmwareStatusNotification.Status, "%s", FirmwareStatusStr[FirmwareStatus_Idle]);
|
|
|
}
|
|
|
|
|
|
- sendFirmwareStatusNotificationRequest(FirmwareStatusStr[FirmwareStatusNotificationStatus]);
|
|
|
+ ShmOCPP16Data->SpMsg.bits.FirmwareStatusNotificationReq = 1;
|
|
|
}
|
|
|
else if(strcmp(requestedMessagestr, MessageTriggerStr[DiagnosticsStatusNotification]) == 0 )
|
|
|
{
|
|
|
- sendDiagnosticsStatusNotificationRequest(DiagnosticsStatusStr[DiagnosticsStatusNotificationStatus]);
|
|
|
+ if(strlen((char*)ShmOCPP16Data->DiagnosticsStatusNotification.Status) == 0)
|
|
|
+ sprintf((char*)ShmOCPP16Data->DiagnosticsStatusNotification.Status, "%s", DiagnosticsStatusStr[DiagnosticsStatus_Idle]);
|
|
|
+ ShmOCPP16Data->SpMsg.bits.DiagnosticsStatusNotificationReq = 1;
|
|
|
}
|
|
|
else if(strcmp(requestedMessagestr, MessageTriggerStr[BootNotification]) == 0 )
|
|
|
{
|
|
@@ -11775,18 +11812,21 @@ void *UpdateFirmwareProcess(void *data)
|
|
|
|
|
|
do
|
|
|
{
|
|
|
- sendFirmwareStatusNotificationRequest(FirmwareStatusStr[FirmwareStatus_Downloading]);
|
|
|
+ sprintf((char*)ShmOCPP16Data->FirmwareStatusNotification.Status, "%s",FirmwareStatusStr[FirmwareStatus_Downloading]);
|
|
|
+ ShmOCPP16Data->SpMsg.bits.FirmwareStatusNotificationReq = 1;
|
|
|
sleep(3);
|
|
|
|
|
|
isSuccess = httpDownLoadFile(host, ftppath, filenametemp, locationstr);
|
|
|
if(!isSuccess)
|
|
|
{
|
|
|
- sendFirmwareStatusNotificationRequest(FirmwareStatusStr[FirmwareStatus_DownloadFailed]);
|
|
|
+ sprintf((char*)ShmOCPP16Data->FirmwareStatusNotification.Status, "%s",FirmwareStatusStr[FirmwareStatus_DownloadFailed]);
|
|
|
+ ShmOCPP16Data->SpMsg.bits.FirmwareStatusNotificationReq = 1;
|
|
|
sleep(retryIntervalInt);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- sendFirmwareStatusNotificationRequest(FirmwareStatusStr[FirmwareStatus_Downloaded]);
|
|
|
+ sprintf((char*)ShmOCPP16Data->FirmwareStatusNotification.Status, "%s",FirmwareStatusStr[FirmwareStatus_Downloaded]);
|
|
|
+ ShmOCPP16Data->SpMsg.bits.FirmwareStatusNotificationReq = 1;
|
|
|
}
|
|
|
}while((isSuccess == 0)&&(retriesInt > 0 && retriesInt --));
|
|
|
}
|
|
@@ -11850,7 +11890,8 @@ void *UpdateFirmwareProcess(void *data)
|
|
|
|
|
|
do
|
|
|
{
|
|
|
- sendFirmwareStatusNotificationRequest(FirmwareStatusStr[FirmwareStatus_Downloading]);
|
|
|
+ sprintf((char*)ShmOCPP16Data->FirmwareStatusNotification.Status, "%s",FirmwareStatusStr[FirmwareStatus_Downloading]);
|
|
|
+ ShmOCPP16Data->SpMsg.bits.FirmwareStatusNotificationReq = 1;
|
|
|
sleep(3);
|
|
|
|
|
|
isSuccess = ftpDownLoadFile(host1, user, password, port, ftppath, filenametemp, locationstr);
|
|
@@ -11858,18 +11899,21 @@ void *UpdateFirmwareProcess(void *data)
|
|
|
{
|
|
|
//BulldogUtil.sleepMs(interval*1000);
|
|
|
DEBUG_INFO("Update firmware request and download file fail.\n");
|
|
|
- sendFirmwareStatusNotificationRequest(FirmwareStatusStr[FirmwareStatus_DownloadFailed]);
|
|
|
+ sprintf((char*)ShmOCPP16Data->FirmwareStatusNotification.Status, "%s",FirmwareStatusStr[FirmwareStatus_DownloadFailed]);
|
|
|
+ ShmOCPP16Data->SpMsg.bits.FirmwareStatusNotificationReq = 1;
|
|
|
sleep(retryIntervalInt);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- sendFirmwareStatusNotificationRequest(FirmwareStatusStr[FirmwareStatus_Downloaded]);
|
|
|
+ sprintf((char*)ShmOCPP16Data->FirmwareStatusNotification.Status, "%s",FirmwareStatusStr[FirmwareStatus_Downloaded]);
|
|
|
+ ShmOCPP16Data->SpMsg.bits.FirmwareStatusNotificationReq = 1;
|
|
|
}
|
|
|
}while((!isSuccess)&&(retriesInt > 0 && retriesInt --));
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- sendFirmwareStatusNotificationRequest(FirmwareStatusStr[FirmwareStatus_DownloadFailed]);
|
|
|
+ sprintf((char*)ShmOCPP16Data->FirmwareStatusNotification.Status, "%s",FirmwareStatusStr[FirmwareStatus_DownloadFailed]);
|
|
|
+ ShmOCPP16Data->SpMsg.bits.FirmwareStatusNotificationReq = 1;
|
|
|
}
|
|
|
|
|
|
ShmOCPP16Data->MsMsg.bits.UpdateFirmwareReq = 1;
|
|
@@ -11887,19 +11931,20 @@ int handleCertificateSignedRequest(char *uuid, char *payload)
|
|
|
CertificateSigned = json_tokener_parse(payload);
|
|
|
if(!is_error(CertificateSigned))
|
|
|
{
|
|
|
- sprintf((char*)ShmOCPP16Data->CertificateSigned.certificateChain, "%s", json_object_get_string(json_object_object_get(CertificateSigned, "certificateChain")));
|
|
|
-
|
|
|
- /*
|
|
|
- * TODO: CertificateSigned process
|
|
|
- */
|
|
|
- ShmOCPP16Data->MsMsg.bits.CertificateSignedReq = 1;
|
|
|
- DEBUG_INFO("certificateChain: %s\n", ShmOCPP16Data->CertificateSigned.certificateChain);
|
|
|
-
|
|
|
- sprintf((char*)ShmOCPP16Data->CertificateSigned.Response_status, "Rejected");
|
|
|
- sendCertificateSignedConfirmation(uuid);
|
|
|
+ sprintf((char*)ShmOCPP16Data->CertificateSigned.certificateChain, "%s", json_object_get_string(json_object_array_get_idx(json_object_object_get(CertificateSigned, "certificateChain"), 0)));
|
|
|
}
|
|
|
json_object_put(CertificateSigned);
|
|
|
|
|
|
+ FILE *fp = fopen("/Storage/OCPP/cert.crt", "w");
|
|
|
+ fprintf(fp, "%s", ShmOCPP16Data->CertificateSigned.certificateChain);
|
|
|
+ fclose(fp);
|
|
|
+ system("/bin/fsync -d /dev/mtdblock13;/bin/sync &");
|
|
|
+
|
|
|
+ ShmOCPP16Data->MsMsg.bits.CertificateSignedReq = 1;
|
|
|
+
|
|
|
+ sprintf((char*)ShmOCPP16Data->CertificateSigned.Response_status, "Accepted");
|
|
|
+ sendCertificateSignedConfirmation(uuid);
|
|
|
+
|
|
|
return result;
|
|
|
}
|
|
|
|
|
@@ -11917,21 +11962,21 @@ int handleDeleteCertificateRequest(char *uuid, char *payload)
|
|
|
sprintf((char*)ShmOCPP16Data->DeleteCertificate.certificateHashData.issuerNameHash, "%s", json_object_get_string(json_object_object_get(json_object_object_get(DeleteCertificate, "certificateHashData"), "issuerNameHash")));
|
|
|
sprintf((char*)ShmOCPP16Data->DeleteCertificate.certificateHashData.issuerKeyHash, "%s", json_object_get_string(json_object_object_get(json_object_object_get(DeleteCertificate, "certificateHashData"), "issuerKeyHash")));
|
|
|
sprintf((char*)ShmOCPP16Data->DeleteCertificate.certificateHashData.serialNumber, "%s", json_object_get_string(json_object_object_get(json_object_object_get(DeleteCertificate, "certificateHashData"), "serialNumber")));
|
|
|
-
|
|
|
- /*
|
|
|
- * TODO: Delete certificateSigned process
|
|
|
- */
|
|
|
- ShmOCPP16Data->MsMsg.bits.DeleteCertificateReq = 1;
|
|
|
- DEBUG_INFO("hashAlgorithm: %s\n", ShmOCPP16Data->DeleteCertificate.certificateHashData.hashAlgorithm);
|
|
|
- DEBUG_INFO("issuerNameHash: %s\n", ShmOCPP16Data->DeleteCertificate.certificateHashData.issuerNameHash);
|
|
|
- DEBUG_INFO("issuerKeyHash: %s\n", ShmOCPP16Data->DeleteCertificate.certificateHashData.issuerKeyHash);
|
|
|
- DEBUG_INFO("serialNumber: %s\n", ShmOCPP16Data->DeleteCertificate.certificateHashData.serialNumber);
|
|
|
-
|
|
|
- sprintf((char*)ShmOCPP16Data->DeleteCertificate.Response_status, "NotFound");
|
|
|
- sendDeleteCertificateConfirmation(uuid);
|
|
|
}
|
|
|
json_object_put(DeleteCertificate);
|
|
|
|
|
|
+ /*
|
|
|
+ * TODO: Delete certificateSigned process
|
|
|
+ */
|
|
|
+ ShmOCPP16Data->MsMsg.bits.DeleteCertificateReq = 1;
|
|
|
+ DEBUG_INFO("hashAlgorithm: %s\n", ShmOCPP16Data->DeleteCertificate.certificateHashData.hashAlgorithm);
|
|
|
+ DEBUG_INFO("issuerNameHash: %s\n", ShmOCPP16Data->DeleteCertificate.certificateHashData.issuerNameHash);
|
|
|
+ DEBUG_INFO("issuerKeyHash: %s\n", ShmOCPP16Data->DeleteCertificate.certificateHashData.issuerKeyHash);
|
|
|
+ DEBUG_INFO("serialNumber: %s\n", ShmOCPP16Data->DeleteCertificate.certificateHashData.serialNumber);
|
|
|
+
|
|
|
+ sprintf((char*)ShmOCPP16Data->DeleteCertificate.Response_status, "NotFound");
|
|
|
+ sendDeleteCertificateConfirmation(uuid);
|
|
|
+
|
|
|
return result;
|
|
|
}
|
|
|
|
|
@@ -11955,19 +12000,100 @@ int handleExtendedTriggerMessageRequest(char *uuid, char *payload)
|
|
|
{
|
|
|
ShmOCPP16Data->ExtendedTriggerMessage.connectorId = -1;
|
|
|
}
|
|
|
+ }
|
|
|
+ json_object_put(ExtendedTriggerMessage);
|
|
|
|
|
|
- /*
|
|
|
- * TODO: Trigger message process
|
|
|
- */
|
|
|
- ShmOCPP16Data->MsMsg.bits.ExtendedTriggerMessageReq = 1;
|
|
|
|
|
|
- DEBUG_INFO("requestedMessage: %s\n", ShmOCPP16Data->ExtendedTriggerMessage.requestedMessage);
|
|
|
- DEBUG_INFO("connectorIdInt: %d\n", ShmOCPP16Data->ExtendedTriggerMessage.connectorId);
|
|
|
+ DEBUG_INFO("requestedMessage: %s\n", ShmOCPP16Data->ExtendedTriggerMessage.requestedMessage);
|
|
|
+ DEBUG_INFO("connectorIdInt: %d\n", ShmOCPP16Data->ExtendedTriggerMessage.connectorId);
|
|
|
|
|
|
- sprintf((char*)ShmOCPP16Data->ExtendedTriggerMessage.Response_status, "NotImplemented");
|
|
|
- sendExtendedTriggerMessageConfirmation(uuid);
|
|
|
+ if((ShmOCPP16Data->ExtendedTriggerMessage.connectorId == 0) || (ShmOCPP16Data->ExtendedTriggerMessage.connectorId > gunTotalNumber))
|
|
|
+ {
|
|
|
+ sprintf((char*)ShmOCPP16Data->ExtendedTriggerMessage.Response_status, TriggerMessageStatusStr[TriggerMessageStatus_Rejected]);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ if((strcmp((char*)ShmOCPP16Data->ExtendedTriggerMessage.requestedMessage, MessageTriggerStr[BootNotification]) != 0 ) &&
|
|
|
+ (strcmp((char*)ShmOCPP16Data->ExtendedTriggerMessage.requestedMessage, "LogStatusNotification") != 0) &&
|
|
|
+ (strcmp((char*)ShmOCPP16Data->ExtendedTriggerMessage.requestedMessage, MessageTriggerStr[FirmwareStatusNotification]) != 0) &&
|
|
|
+ (strcmp((char*)ShmOCPP16Data->ExtendedTriggerMessage.requestedMessage, MessageTriggerStr[Heartbeat]) != 0) &&
|
|
|
+ (strcmp((char*)ShmOCPP16Data->ExtendedTriggerMessage.requestedMessage, MessageTriggerStr[MeterValues]) != 0) &&
|
|
|
+ (strcmp((char*)ShmOCPP16Data->ExtendedTriggerMessage.requestedMessage, "SignChargePointCertificate") != 0 ) &&
|
|
|
+ (strcmp((char*)ShmOCPP16Data->ExtendedTriggerMessage.requestedMessage, MessageTriggerStr[StatusNotification]) != 0 ))
|
|
|
+ {
|
|
|
+ sprintf((char*)ShmOCPP16Data->ExtendedTriggerMessage.Response_status, "%s",TriggerMessageStatusStr[TriggerMessageStatus_NotImplemented] );
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ sprintf((char*)ShmOCPP16Data->ExtendedTriggerMessage.Response_status, "%s",TriggerMessageStatusStr[TriggerMessageStatus_Accepted] );
|
|
|
+ }
|
|
|
+ }
|
|
|
+ sendExtendedTriggerMessageConfirmation(uuid);
|
|
|
+
|
|
|
+ //==========================
|
|
|
+ // Trigger message
|
|
|
+ //==========================
|
|
|
+ if(strcmp((char*)ShmOCPP16Data->ExtendedTriggerMessage.requestedMessage, MessageTriggerStr[BootNotification]) == 0 )
|
|
|
+ {
|
|
|
+ //sendBootNotificationRequest();
|
|
|
+ server_sign = FALSE;
|
|
|
+ }
|
|
|
+ else if( strcmp((char*)ShmOCPP16Data->ExtendedTriggerMessage.requestedMessage, "LogStatusNotification") == 0)
|
|
|
+ {
|
|
|
+ ShmOCPP16Data->SpMsg.bits.LogStatusNotificationReq = 1;
|
|
|
+ }
|
|
|
+ else if( strcmp((char*)ShmOCPP16Data->ExtendedTriggerMessage.requestedMessage, MessageTriggerStr[FirmwareStatusNotification]) == 0)
|
|
|
+ {
|
|
|
+ if((strlen((char*)ShmOCPP16Data->FirmwareStatusNotification.Status) == 0) ||
|
|
|
+ ((FirmwareStatusNotificationStatus != FIRMWARE_STATUS_DOWNLOADING) && (FirmwareStatusNotificationStatus != FIRMWARE_STATUS_DOWNLOADED) && (FirmwareStatusNotificationStatus != FIRMWARE_STATUS_IDLE) && (FirmwareStatusNotificationStatus != FIRMWARE_STATUS_INSTALLING)))
|
|
|
+
|
|
|
+ {
|
|
|
+ FirmwareStatusNotificationStatus = FIRMWARE_STATUS_IDLE;
|
|
|
+ sprintf((char*)ShmOCPP16Data->FirmwareStatusNotification.Status, "%s", FirmwareStatusStr[FirmwareStatus_Idle]);
|
|
|
+ }
|
|
|
+
|
|
|
+ ShmOCPP16Data->SpMsg.bits.FirmwareStatusNotificationReq = 1;
|
|
|
+ }
|
|
|
+ else if(strcmp((char*)ShmOCPP16Data->ExtendedTriggerMessage.requestedMessage, MessageTriggerStr[Heartbeat]) == 0 )
|
|
|
+ {
|
|
|
+ clientTime.Heartbeat = time((time_t*)NULL) - (ShmOCPP16Data->BootNotification.ResponseHeartbeatInterval);
|
|
|
+ }
|
|
|
+ else if (strcmp((char*)ShmOCPP16Data->ExtendedTriggerMessage.requestedMessage, MessageTriggerStr[MeterValues]) == 0 )
|
|
|
+ {
|
|
|
+ if((ShmOCPP16Data->ExtendedTriggerMessage.connectorId > 0) && (ShmOCPP16Data->ExtendedTriggerMessage.connectorId <= gunTotalNumber))
|
|
|
+ {
|
|
|
+ cpinitateMsg.bits[ShmOCPP16Data->ExtendedTriggerMessage.connectorId-1].TriggerMeterValue = 1;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ for(int idx=0;idx< gunTotalNumber;idx++)
|
|
|
+ {
|
|
|
+ //sendMeterValuesRequest(idx, ReadingContext_Trigger);
|
|
|
+ cpinitateMsg.bits[idx].TriggerMeterValue = 1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if(strcmp((char*)ShmOCPP16Data->ExtendedTriggerMessage.requestedMessage, "SignChargePointCertificate") == 0 )
|
|
|
+ {
|
|
|
+ ShmOCPP16Data->SpMsg.bits.SignCertificateReq = 1;
|
|
|
+
|
|
|
+ if(access("/Storage/OCPP/cert.csr",F_OK) == -1)
|
|
|
+ {
|
|
|
+ system("openssl req -newkey rsa:2048 -out /Storage/OCPP/cert.csr -nodes -keyout /Storage/OCPP/cert.key -subj \"/C=TW/ST=Taiwan/L=Taoyuan/O=Phihong Technology/OU=IT/CN=phihong.com\" &");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if(strcmp((char*)ShmOCPP16Data->ExtendedTriggerMessage.requestedMessage, MessageTriggerStr[StatusNotification]) == 0 )
|
|
|
+ {
|
|
|
+ if((ShmOCPP16Data->ExtendedTriggerMessage.connectorId > 0) && (ShmOCPP16Data->ExtendedTriggerMessage.connectorId <= gunTotalNumber))
|
|
|
+ {
|
|
|
+ cpinitateMsg.bits[ShmOCPP16Data->ExtendedTriggerMessage.connectorId -1].StatusNotificationReq = 1;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ for(int idx=0;idx< gunTotalNumber;idx++)
|
|
|
+ cpinitateMsg.bits[idx].StatusNotificationReq = 1;
|
|
|
+ }
|
|
|
}
|
|
|
- json_object_put(ExtendedTriggerMessage);
|
|
|
|
|
|
return result;
|
|
|
}
|
|
@@ -11983,19 +12109,19 @@ int handleGetInstalledCertificateIdsRequest(char *uuid, char *payload)
|
|
|
if(!is_error(GetInstalledCertificateIds))
|
|
|
{
|
|
|
sprintf((char*)ShmOCPP16Data->GetInstalledCertificateIds.certificateType, "%s", json_object_get_string(json_object_object_get(GetInstalledCertificateIds, "certificateType")));
|
|
|
-
|
|
|
- /*
|
|
|
- * TODO: Return installed certificate process
|
|
|
- */
|
|
|
- ShmOCPP16Data->MsMsg.bits.GetInstalledCertificateIdsReq = 1;
|
|
|
- DEBUG_INFO("requestedMessage: %s\n", (char*)ShmOCPP16Data->GetInstalledCertificateIds.certificateType);
|
|
|
-
|
|
|
- memset(ShmOCPP16Data->GetInstalledCertificateIds.Response_certificateHashData, 0x00, ARRAY_SIZE(ShmOCPP16Data->GetInstalledCertificateIds.Response_certificateHashData)*sizeof(struct CertificateHashDataType));
|
|
|
- sprintf((char*)ShmOCPP16Data->GetInstalledCertificateIds.Response_status, "NotFound");
|
|
|
- sendGetInstalledCertificateIdsConfirmation(uuid);
|
|
|
}
|
|
|
json_object_put(GetInstalledCertificateIds);
|
|
|
|
|
|
+ /*
|
|
|
+ * TODO: Return installed certificate process
|
|
|
+ */
|
|
|
+ ShmOCPP16Data->MsMsg.bits.GetInstalledCertificateIdsReq = 1;
|
|
|
+ DEBUG_INFO("requestedMessage: %s\n", (char*)ShmOCPP16Data->GetInstalledCertificateIds.certificateType);
|
|
|
+
|
|
|
+ memset(ShmOCPP16Data->GetInstalledCertificateIds.Response_certificateHashData, 0x00, ARRAY_SIZE(ShmOCPP16Data->GetInstalledCertificateIds.Response_certificateHashData)*sizeof(struct CertificateHashDataType));
|
|
|
+ sprintf((char*)ShmOCPP16Data->GetInstalledCertificateIds.Response_status, "NotFound");
|
|
|
+ sendGetInstalledCertificateIdsConfirmation(uuid);
|
|
|
+
|
|
|
return result;
|
|
|
}
|
|
|
|
|
@@ -12033,23 +12159,23 @@ int handleGetLogRequest(char *uuid, char *payload)
|
|
|
{
|
|
|
sprintf((char*)ShmOCPP16Data->GetLog.log.latestTimestamp, "%s", json_object_get_string(json_object_object_get(json_object_object_get(GetLog, "log"), "latestTimestamp")));
|
|
|
}
|
|
|
-
|
|
|
- /*
|
|
|
- * TODO: Upload log process
|
|
|
- */
|
|
|
- ShmOCPP16Data->MsMsg.bits.GetLogReq = 1;
|
|
|
- DEBUG_INFO("logType: %s\n", ShmOCPP16Data->GetLog.logType);
|
|
|
- DEBUG_INFO("requestId: %d\n", ShmOCPP16Data->GetLog.requestId);
|
|
|
- DEBUG_INFO("retries: %d\n", ShmOCPP16Data->GetLog.retries);
|
|
|
- DEBUG_INFO("retryInterval: %d\n", ShmOCPP16Data->GetLog.retryInterval);
|
|
|
- DEBUG_INFO("remoteLocation: %s\n", ShmOCPP16Data->GetLog.log.remoteLocation);
|
|
|
- DEBUG_INFO("oldestTimestamp: %s\n", ShmOCPP16Data->GetLog.log.oldestTimestamp);
|
|
|
- DEBUG_INFO("latestTimestamp: %s\n", ShmOCPP16Data->GetLog.log.latestTimestamp);
|
|
|
- sprintf((char*)ShmOCPP16Data->GetLog.Response_status, "Rejected");
|
|
|
- sendGetLogConfirmation(uuid);
|
|
|
}
|
|
|
json_object_put(GetLog);
|
|
|
|
|
|
+ /*
|
|
|
+ * TODO: Upload log process
|
|
|
+ */
|
|
|
+ ShmOCPP16Data->MsMsg.bits.GetLogReq = 1;
|
|
|
+ DEBUG_INFO("logType: %s\n", ShmOCPP16Data->GetLog.logType);
|
|
|
+ DEBUG_INFO("requestId: %d\n", ShmOCPP16Data->GetLog.requestId);
|
|
|
+ DEBUG_INFO("retries: %d\n", ShmOCPP16Data->GetLog.retries);
|
|
|
+ DEBUG_INFO("retryInterval: %d\n", ShmOCPP16Data->GetLog.retryInterval);
|
|
|
+ DEBUG_INFO("remoteLocation: %s\n", ShmOCPP16Data->GetLog.log.remoteLocation);
|
|
|
+ DEBUG_INFO("oldestTimestamp: %s\n", ShmOCPP16Data->GetLog.log.oldestTimestamp);
|
|
|
+ DEBUG_INFO("latestTimestamp: %s\n", ShmOCPP16Data->GetLog.log.latestTimestamp);
|
|
|
+ sprintf((char*)ShmOCPP16Data->GetLog.Response_status, "Rejected");
|
|
|
+ sendGetLogConfirmation(uuid);
|
|
|
+
|
|
|
return result;
|
|
|
}
|
|
|
|
|
@@ -12113,25 +12239,25 @@ int handleSignedUpdateFirmwareRequest(char *uuid, char *payload)
|
|
|
|
|
|
sprintf((char*)ShmOCPP16Data->SignedUpdateFirmware.firmware.signingCertificate, "%s", json_object_get_string(json_object_object_get(json_object_object_get(SignedUpdateFirmware, "firmware"), "signingCertificate")));
|
|
|
sprintf((char*)ShmOCPP16Data->SignedUpdateFirmware.firmware.signature, "%s", json_object_get_string(json_object_object_get(json_object_object_get(SignedUpdateFirmware, "firmware"), "signature")));
|
|
|
-
|
|
|
- /*
|
|
|
- * TODO: Upgrade firmware process
|
|
|
- */
|
|
|
- ShmOCPP16Data->MsMsg.bits.SignedUpdateFirmwareReq = 1;
|
|
|
- DEBUG_INFO("retries: %d\n", ShmOCPP16Data->SignedUpdateFirmware.retries);
|
|
|
- DEBUG_INFO("retryInterval: %d\n", ShmOCPP16Data->SignedUpdateFirmware.retryInterval);
|
|
|
- DEBUG_INFO("requestId: %d\n", ShmOCPP16Data->SignedUpdateFirmware.requestId);
|
|
|
- DEBUG_INFO("location: %s\n", ShmOCPP16Data->SignedUpdateFirmware.firmware.location);
|
|
|
- DEBUG_INFO("retrieveDateTime: %s\n", ShmOCPP16Data->SignedUpdateFirmware.firmware.retrieveDateTime);
|
|
|
- DEBUG_INFO("installDateTime: %s\n", ShmOCPP16Data->SignedUpdateFirmware.firmware.installDateTime);
|
|
|
- DEBUG_INFO("signingCertificate: %s\n", ShmOCPP16Data->SignedUpdateFirmware.firmware.signingCertificate);
|
|
|
- DEBUG_INFO("signature: %s\n", ShmOCPP16Data->SignedUpdateFirmware.firmware.signature);
|
|
|
-
|
|
|
- sprintf((char*)ShmOCPP16Data->SignedUpdateFirmware.Response_status, "Rejected");
|
|
|
- sendInstallCertificateConfirmation(uuid);
|
|
|
}
|
|
|
json_object_put(SignedUpdateFirmware);
|
|
|
|
|
|
+ /*
|
|
|
+ * TODO: Upgrade firmware process
|
|
|
+ */
|
|
|
+ ShmOCPP16Data->MsMsg.bits.SignedUpdateFirmwareReq = 1;
|
|
|
+ DEBUG_INFO("retries: %d\n", ShmOCPP16Data->SignedUpdateFirmware.retries);
|
|
|
+ DEBUG_INFO("retryInterval: %d\n", ShmOCPP16Data->SignedUpdateFirmware.retryInterval);
|
|
|
+ DEBUG_INFO("requestId: %d\n", ShmOCPP16Data->SignedUpdateFirmware.requestId);
|
|
|
+ DEBUG_INFO("location: %s\n", ShmOCPP16Data->SignedUpdateFirmware.firmware.location);
|
|
|
+ DEBUG_INFO("retrieveDateTime: %s\n", ShmOCPP16Data->SignedUpdateFirmware.firmware.retrieveDateTime);
|
|
|
+ DEBUG_INFO("installDateTime: %s\n", ShmOCPP16Data->SignedUpdateFirmware.firmware.installDateTime);
|
|
|
+ DEBUG_INFO("signingCertificate: %s\n", ShmOCPP16Data->SignedUpdateFirmware.firmware.signingCertificate);
|
|
|
+ DEBUG_INFO("signature: %s\n", ShmOCPP16Data->SignedUpdateFirmware.firmware.signature);
|
|
|
+
|
|
|
+ sprintf((char*)ShmOCPP16Data->SignedUpdateFirmware.Response_status, "Rejected");
|
|
|
+ sendInstallCertificateConfirmation(uuid);
|
|
|
+
|
|
|
return result;
|
|
|
}
|
|
|
|