浏览代码

[Added][AW-Regular][main.c]
2022-08-22 / EASON YANG
Action:
1.Added : Support OCPP 1.6 signature update firmare function.

File:
1. main.c
Action 1

FIRMWARE VERSION: V0.71.XX.XXXX.PX

8009 2 年之前
父节点
当前提交
cb9553eb2d
共有 1 个文件被更改,包括 41 次插入5 次删除
  1. 41 5
      EVSE/Projects/AW-Regular/Apps/main.c

+ 41 - 5
EVSE/Projects/AW-Regular/Apps/main.c

@@ -529,7 +529,7 @@ uint8_t ocpp_get_update_firmware_req()
 
 	if(ShmSysConfigAndInfo->SysInfo.OcppRunningVer == OCPP_RUNNING_VERSION_16)
 	{
-		result = ShmOCPP16Data->MsMsg.bits.UpdateFirmwareReq;
+		result = ShmOCPP16Data->MsMsg.bits.UpdateFirmwareReq || ShmOCPP16Data->MsMsg.bits.SignedUpdateFirmwareReq;
 	}
 	else if(ShmSysConfigAndInfo->SysInfo.OcppRunningVer == OCPP_RUNNING_VERSION_20)
 	{
@@ -4167,7 +4167,7 @@ void checkRemoteUpgradeStatus()
 			ShmOCPP16Data->MsMsg.bits.UpdateFirmwareReq = OFF;
 			ShmCharger->isUpdateSuccess = NO;
 		}
-		else if(strcmp((char*)ShmOCPP16Data->FirmwareStatusNotification.Status, "Downloaded")==0)
+		else if((strcmp((char*)ShmOCPP16Data->FirmwareStatusNotification.Status, "Downloaded")==0))
 		{
 			DEBUG_INFO("Firmware remote upgrading...\n");
 			sprintf((char*)ShmOCPP16Data->FirmwareStatusNotification.Status, "Installing");
@@ -4194,6 +4194,32 @@ void checkRemoteUpgradeStatus()
 				DEBUG_INFO("Remote update unsuccess...\n");
 			}
 		}
+		else if((strcmp((char*)ShmOCPP16Data->SignedFirmwareStatusNotification.status, "SignatureVerified")==0))
+		{
+			DEBUG_INFO("Signature firmware remote upgrading...\n");
+			ShmOCPP16Data->SignedFirmwareStatusNotification.requestId = ShmOCPP16Data->SignedUpdateFirmware.requestId;
+			sprintf((char*)ShmOCPP16Data->SignedFirmwareStatusNotification.status, "Installing");
+			sleep(1);
+			ShmOCPP16Data->SpMsg.bits.SignedFirmwareStatusNotificationReq = ON;
+			ShmOCPP16Data->MsMsg.bits.SignedUpdateFirmwareReq = OFF;
+
+			if(upgrade_check() == PASS)
+			{
+				if(ShmStatusCodeData->InfoCode.InfoEvents.bits.CsuFimrwareUpdateFail == ON)
+					ShmStatusCodeData->InfoCode.InfoEvents.bits.CsuFimrwareUpdateFail = OFF;
+
+				ShmCharger->isUpdateSuccess = YES;
+				DEBUG_INFO("Remote update success.\n");
+			}
+			else
+			{
+				if(ShmStatusCodeData->InfoCode.InfoEvents.bits.CsuFimrwareUpdateFail == OFF)
+					ShmStatusCodeData->InfoCode.InfoEvents.bits.CsuFimrwareUpdateFail = ON;
+
+				ShmCharger->isUpdateSuccess = NO;
+				DEBUG_INFO("Remote update fail.\n");
+			}
+		}
 		else
 		{}
 	}
@@ -4205,7 +4231,7 @@ void checkRemoteUpgradeStatus()
 			ShmOCPP20Data->MsMsg.bits.UpdateFirmwareReq = OFF;
 			ShmCharger->isUpdateSuccess = NO;
 		}
-		else if(strcmp((char*)ShmOCPP20Data->FirmwareStatusNotification.status, "Downloaded")==0)
+		else if((strcmp((char*)ShmOCPP20Data->FirmwareStatusNotification.status, "Downloaded")==0))
 		{
 			DEBUG_INFO("Firmware remote upgrading...\n");
 			sprintf((char*)ShmOCPP16Data->FirmwareStatusNotification.Status, "Installing");
@@ -5495,11 +5521,21 @@ int main(void)
 						{
 							if(ShmCharger->isUpdateSuccess == YES)
 							{
-								sprintf((char*)ShmOCPP16Data->FirmwareStatusNotification.Status, "Installed");
-								ShmOCPP16Data->SpMsg.bits.FirmwareStatusNotificationReq = ON;
+								if((strcmp((char*)ShmOCPP16Data->FirmwareStatusNotification.Status, "Installing")==0))
+								{
+									sprintf((char*)ShmOCPP16Data->FirmwareStatusNotification.Status, "Installed");
+									ShmOCPP16Data->SpMsg.bits.FirmwareStatusNotificationReq = ON;
+								}
+								else if((strcmp((char*)ShmOCPP16Data->SignedFirmwareStatusNotification.status, "Installing")==0))
+								{
+									ShmOCPP16Data->SignedFirmwareStatusNotification.requestId = ShmOCPP16Data->SignedUpdateFirmware.requestId;
+									sprintf((char*)ShmOCPP16Data->SignedFirmwareStatusNotification.status, "Installed");
+									ShmOCPP16Data->SpMsg.bits.SignedFirmwareStatusNotificationReq = ON;
+								}
 
 								sprintf((char*)ShmOCPP20Data->FirmwareStatusNotification.status, "Installed");
 								ShmOCPP20Data->SpMsg.bits.FirmwareStatusNotificationReq = ON;
+
 								DEBUG_WARN("Firmware upgrade success.\n");
 
 								sleep(5);