Browse Source

[Add][AX80][main]

2022.08.18 / Folus Wen

Actions:
1. Support OCPP 1.6 signature update firmware function.

Files:
1. As follow commit history

Image version: D0.00.XX.XXXX.XX
Image checksum: XXXXXXXX

Hardware PWB P/N : XXXXXXX
Hardware Version : XXXXXXX
Folus Wen 2 years ago
parent
commit
1ce6036676
1 changed files with 71 additions and 21 deletions
  1. 71 21
      EVSE/Projects/AX80/Apps/main.c

+ 71 - 21
EVSE/Projects/AX80/Apps/main.c

@@ -746,7 +746,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)
 	{
@@ -881,10 +881,27 @@ uint8_t ocpp_get_remotestop(uint8_t gun_index)
 	return result;
 }
 
+void ocpp_set_auth_conf(uint8_t status)
+{
+	if(ShmSysConfigAndInfo->SysInfo.OcppRunningVer == OCPP_RUNNING_VERSION_16)
+	{
+		if(ShmOCPP16Data->SpMsg.bits.AuthorizeConf != status)
+			ShmOCPP16Data->SpMsg.bits.AuthorizeConf = status;
+	}
+	else if(ShmSysConfigAndInfo->SysInfo.OcppRunningVer == OCPP_RUNNING_VERSION_20)
+	{
+		if(ShmOCPP20Data->SpMsg.bits.AuthorizeConf != status)
+			ShmOCPP20Data->SpMsg.bits.AuthorizeConf = status;
+	}
+}
+
 void ocpp_set_auth_req(uint8_t status, ...)
 {
 	va_list args;
 
+	if(status == ON)
+		ocpp_set_auth_conf(OFF);
+
 	if(ShmSysConfigAndInfo->SysInfo.OcppRunningVer == OCPP_RUNNING_VERSION_16)
 	{
 		if(ShmOCPP16Data->SpMsg.bits.AuthorizeReq != status)
@@ -928,20 +945,6 @@ uint8_t ocpp_get_auth_req()
 	return result;
 }
 
-void ocpp_set_auth_conf(uint8_t status)
-{
-	if(ShmSysConfigAndInfo->SysInfo.OcppRunningVer == OCPP_RUNNING_VERSION_16)
-	{
-		if(ShmOCPP16Data->SpMsg.bits.AuthorizeConf != status)
-			ShmOCPP16Data->SpMsg.bits.AuthorizeConf = status;
-	}
-	else if(ShmSysConfigAndInfo->SysInfo.OcppRunningVer == OCPP_RUNNING_VERSION_20)
-	{
-		if(ShmOCPP20Data->SpMsg.bits.AuthorizeConf != status)
-			ShmOCPP20Data->SpMsg.bits.AuthorizeConf = status;
-	}
-}
-
 uint8_t ocpp_get_auth_conf()
 {
 	uint8_t result = OFF;
@@ -986,6 +989,19 @@ uint8_t ocpp_get_auth_result(uint8_t isValidParent, ...)
 						result = PASS;
 				}
 				break;
+			case SYS_MODE_CHARGING:
+			case SYS_MODE_TERMINATING:
+				if(ShmSysConfigAndInfo->SysInfo.OcppRunningVer == OCPP_RUNNING_VERSION_16)
+				{
+					if((strcmp((char*)ShmOCPP16Data->Authorize.ResponseIdTagInfo.Status, "Accepted")==0) && (strcmp((char*)ShmOCPP16Data->Authorize.ResponseIdTagInfo.ParentIdTag, (char*)ShmOCPP16Data->StartTransaction[gun_index].ResponseIdTagInfo.ParentIdTag)==0))
+						result = PASS;
+				}
+				else if(ShmSysConfigAndInfo->SysInfo.OcppRunningVer == OCPP_RUNNING_VERSION_20)
+				{
+					if((strcmp((char*)ShmOCPP20Data->Authorize.Response_idTokenInfo.status, "Accepted")==0) && (strcmp((char*)ShmOCPP20Data->Authorize.Response_idTokenInfo.groupIdToken.idToken, (char*)ShmOCPP20Data->TransactionEvent[gun_index].Response_idTokenInfo.groupIdToken.idToken)==0))
+						result = PASS;
+				}
+				break;
 			default:
 				if(ShmSysConfigAndInfo->SysInfo.OcppRunningVer == OCPP_RUNNING_VERSION_16)
 				{
@@ -4836,7 +4852,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");
@@ -4861,6 +4877,32 @@ void checkRemoteUpgradeStatus()
 				DEBUG_INFO("Remote update fail.\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
 		{}
 	}
@@ -4872,7 +4914,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");
@@ -4996,7 +5038,6 @@ void checkRfidAuthrize()
 					memcpy(lastIdtag, ShmSysConfigAndInfo->SysConfig.UserId, ARRAY_SIZE(ShmSysConfigAndInfo->SysConfig.UserId));
 					memcpy(ShmSysConfigAndInfo->SysConfig.UserId, bufferRFID, ARRAY_SIZE(ShmSysConfigAndInfo->SysConfig.UserId));
 					refreshStartTimer(&startTime[0][TMR_IDX_AUTH]);
-					ocpp_set_auth_conf(OFF);
 					ocpp_set_auth_req(ON, "ISO14443");
 					setLedMotion(0,LED_ACTION_AUTHED);
 					ShmCharger->isAuthrizing = TRUE;
@@ -6155,7 +6196,6 @@ int main(void)
 							refreshStartTimer(&startTime[gun_index][TMR_IDX_REFRESH_CHARGING_INFO]);
 							refreshStartTimer(&startTime[gun_index][TMR_IDX_PROFILE_PREPARE]);
 							refreshStartTimer(&startTime[gun_index][TMR_IDX_PWN_CHANGE]);
-							ocpp_set_auth_req(OFF);
 							ocpp_set_profile_req(gun_index, ON);
 							ShmCharger->gun_info[gun_index].isChargerStopByCondition = NO;
 							ShmCharger->gun_info[gun_index].resultAuthorization = DEFAULT_RFID;
@@ -6583,11 +6623,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);