Эх сурвалжийг харах

[Improve][Modularization][Web/Module_Upgrade]

2020.12.04 / Folus Wen

Actions:
1. EVSE/Modularization/Module_Upgrade.c Upgrade_UART() finish command add retry.
2. EVSE/rootfs/var/www/upgrade_iso_action.php support multi files upload.

Files:
1. As follow commit history

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

Hardware PWB P/N : XXXXXXX
Hardware Version : XXXXXXX
FolusWen 4 жил өмнө
parent
commit
abb867d6f9

+ 25 - 9
EVSE/Modularization/Module_Upgrade.c

@@ -160,7 +160,7 @@ int Upgrade_Flash(unsigned int Type,char *SourcePath,char *ModelName)
     fd = open(SourcePath, O_RDONLY);
     if(fd < 0)
     {
-        DEBUG_ERROR("UpdateRootfs NG - can not open rootfs\n");
+        DEBUG_ERROR("UpdateRootfs NG - can not open image file %s\n", SourcePath);
         return result;
     }
 
@@ -671,7 +671,7 @@ int Upgrade_UART(int uartfdOrd,unsigned int Type,unsigned char TargetAddr,char *
     fd = open(SourcePath, O_RDONLY);
     if(fd < 0)
     {
-        DEBUG_ERROR("UpdateRootfs NG - can not open rootfs\n");
+        DEBUG_ERROR("UpdateRootfs NG - can not open image file %s\n", SourcePath);
         return result;
     }
 
@@ -735,13 +735,29 @@ int Upgrade_UART(int uartfdOrd,unsigned int Type,unsigned char TargetAddr,char *
                         if(CNT_Fail>=10)
                         {
                             uart_update_abord(uartfd, TargetAddr);
-                            DEBUG_ERROR("UART upgrade retry > limits, aboard upgrade.\n");
-                            printf("UART upgrade retry > limits, aboard upgrade.\n");
+                            DEBUG_ERROR("UART upgrade transfer retry > limits, aboard upgrade.\n");
                         }
-                        else if(uart_update_finish(uartfd, TargetAddr)==PASS)
+                        else
                         {
-                            result = PASS;
-                            printf("UART upgrade success.\n");
+                        	do
+                        	{
+                        		if(uart_update_finish(uartfd, TargetAddr)==PASS)
+                        			break;
+                        		else
+                        			DEBUG_WARN("Upgrade finish fail, retry %d \n", ++CNT_Fail);
+                        	}while(CNT_Fail<10);
+
+                        	if(CNT_Fail>=10)
+                        	{
+                        		uart_update_abord(uartfd, TargetAddr);
+                        		DEBUG_ERROR("UART upgrade finish retry > limits, aboard upgrade.\n");
+                        	}
+                        	else
+                        	{
+                        		result = PASS;
+                        		printf("UART upgrade success.\n");
+                        	}
+
                         }
                     }
                     else
@@ -930,7 +946,7 @@ int Upgrade_CAN(int canfd,unsigned int Type,unsigned char TargetAddr,char *Sourc
     fd = open(SourcePath, O_RDONLY);
     if(fd < 0)
     {
-        DEBUG_ERROR("UpdateRootfs NG - can not open rootfs\n");
+        DEBUG_ERROR("UpdateRootfs NG - can not open image file %s\n", SourcePath);
         return result;
     }
 
@@ -1034,7 +1050,7 @@ int Check_CCS_image_header(unsigned int Type,char *SourcePath,char *ModelName)
     fd = open(SourcePath, O_RDONLY);
     if(fd < 0)
     {
-        DEBUG_ERROR("Update CCS NG - can not open upgrade image\n");
+        DEBUG_ERROR("Update CCS NG - can not open upgrade image %s\n", SourcePath);
         return FAIL;
     }
 

+ 8 - 4
EVSE/Projects/AW-CCS/Apps/main.c

@@ -246,7 +246,7 @@ unsigned int isKernelSupportNAT()
 		if(fgets(buf, sizeof(buf), fp) != NULL)
 		{
 			sscanf(buf, "#%d", &version);
-			DEBUG_INFO("Kernel version: %d\n", result);
+			DEBUG_INFO("Kernel version: %d\n", version);
 
 			if(version >= 30)
 				result = YES;
@@ -1562,8 +1562,11 @@ int upgrade_check()
 		/* print all the files and directories within directory */
 		while ((file = readdir (dir)) != NULL)
 		{
-			if(strlen(file->d_name)>2)
+			if((strlen(file->d_name)>2))
 			{
+				// Wait for MCU upgrade finish.
+				while(ShmCharger->gun_info[0].mcuFlag.isMcuUpgradeReq || (AC_QUANTITY>1?ShmCharger->gun_info[1].mcuFlag.isMcuUpgradeReq:FALSE))sleep(1);
+
 				memset(&ShmCharger->fwUpgradeInfo, 0xFF, sizeof(Fw_Upgrade_Info));
 				DEBUG_INFO("New firmware file: %s\n", file->d_name);
 				sprintf(ShmCharger->fwUpgradeInfo.location, "/mnt/%s", file->d_name);
@@ -2885,8 +2888,9 @@ int main(void)
 						{
 							case START_METHOD_RFID:
 								if((ShmOCPP16Data->SpMsg.bits.AuthorizeConf) ||
-								   (!ShmOCPP16Data->OcppConnStatus && ((ShmSysConfigAndInfo->SysConfig.OfflinePolicy == OFF_POLICY_FREE) || ShmSysConfigAndInfo->SysConfig.OfflinePolicy == OFF_POLICY_NOCHARGE)) ||
-								   (!ShmOCPP16Data->OcppConnStatus && (ShmSysConfigAndInfo->SysConfig.OfflinePolicy == OFF_POLICY_LOCALLIST) && (strcmp((char *)&ShmSysConfigAndInfo->SysConfig.OcppServerURL,"") == 0)) )
+								   (!ShmOCPP16Data->OcppConnStatus && ((ShmSysConfigAndInfo->SysConfig.OfflinePolicy == OFF_POLICY_FREE) || (ShmSysConfigAndInfo->SysConfig.OfflinePolicy == OFF_POLICY_NOCHARGE))) ||
+								   (!ShmOCPP16Data->OcppConnStatus && (ShmSysConfigAndInfo->SysConfig.OfflinePolicy == OFF_POLICY_LOCALLIST) && (strcmp((char *)&ShmSysConfigAndInfo->SysConfig.OcppServerURL,"") == 0))
+								  )
 								{
 									if((strcmp((char*)ShmOCPP16Data->Authorize.ResponseIdTagInfo.Status, "Accepted")==0) ||
 									   (!ShmOCPP16Data->OcppConnStatus && (ShmSysConfigAndInfo->SysConfig.OfflinePolicy == OFF_POLICY_FREE)) ||

+ 31 - 25
EVSE/rootfs/var/www/upgrade_iso_action.php

@@ -20,37 +20,43 @@
 		$message = $lang->showWord("message_upgrade");
 
 		chdir('/root');
-//		echo '<font color=#ff0000>Work directory: '.getcwd().'<br>';
-//		echo 'System date/time: '.nl2br(shell_exec('date +%Y-%m-%d_%H:%M:%S')).'</font>';
-		// ini_set('max_execution_time','120');
-		// ini_set('max_input_time','120');
-		// ini_set('post_max_size','2048M');
-		// ini_set('upload_max_filesize','2048M');
-		if($_POST['fw_tag']=='iso')
-		{
-			if ($_FILES["file"]["error"] > 0)
-			{
-				echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
+//		if($_POST['fw_tag']=='iso')
+//		{
+			exec("rm /mnt/*.zip");
+			$fileCount = count($_FILES['files']['name']);
+
+			for ($i = 0; $i < $fileCount; $i++) {
+				if ($_FILES["files"]["error"][$i] > 0)
+				{
+					echo "Return Code: " . $_FILES["files"]["error"][$i] . "<br />";
+				}
+				else
+				{
+					// echo "Upload: " . $_FILES["file"]["name"] . "<br />";
+					// echo "Type: " . $_FILES["file"]["type"] . "<br />";
+					// echo "Size: " . ($_FILES["file"]["size"]) . " <br />";
+					// echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";
+					// echo "<font color=#000fff>Upgrade is completed</font><br />";
+				}
+				//ob_start();
+				sleep(1);
+				move_uploaded_file($_FILES["files"]["tmp_name"][$i],"/mnt/".$_FILES["files"]["name"][$i]);
 			}
-			else
-			{
-				// echo "Upload: " . $_FILES["file"]["name"] . "<br />";
-				// echo "Type: " . $_FILES["file"]["type"] . "<br />";
-				// echo "Size: " . ($_FILES["file"]["size"]) . " <br />";
-				// echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";
-				// echo "<font color=#000fff>Upgrade is completed</font><br />";
+			$fCount = count($_FILES['file']['name']);
+			if($fCount>0){
+				if ($_FILES["file"]["error"] > 0)
+				{
+					echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
+				}
+				sleep(1);
+				move_uploaded_file($_FILES["file"]["tmp_name"],"/mnt/".$_FILES["file"]["name"]);
 			}
-			//ob_start();
-			exec("rm /mnt/*.zip");
-			sleep(1);
-			move_uploaded_file($_FILES["file"]["tmp_name"],"/mnt/".$_FILES["file"]["name"]);
 			chdir("/root");
-			$str_json=json_encode($json);
-			exec("'./WebService' 'upgrade' '".$_FILES["file"]["name"]."'",$output,$return_var);
+			exec("'./WebService' 'upgrade' '".$_FILES["files"]["name"][0]."'",$output,$return_var);
 //			echo 'Result:'.json_decode(trim($output[0]))->{'Result'}.'    Message:'.json_decode(trim($output[0]))->{'Message'};
 			echo '<font color=#ff0000>'.json_decode(trim($output[0]))->{'Message'}.'</font>';
 			//printf($output);
-		}
+//		}
 		shell_exec('sync;sync;sync');
 	}