Bläddra i källkod

增加升级状态判断

yidongFan 1 månad sedan
förälder
incheckning
a81aacd8aa

+ 54 - 44
DriverInterface/communication.c

@@ -374,63 +374,73 @@ int set_IP_action(uint8_t cmd, uint8_t *parg)
 int updateStart_action(uint8_t cmd, uint8_t *parg)
 {	
 	static int restult = 0;
-	if(restult==0){		
+	updateInf.updateState = FLASH_UPDATE_ST_NUILL;
+	if(restult==0){		;
 		restult = app_image_copy(FLASH_APP1_ADDR,FLASH_APP2_ADDR,FLASH_PAGE_SIZE,FLASH_APP2_SIZE);
 	}
+	if(restult){		
+		updateInf.updateState = FLASH_UPDATE_ST_BACKUP;
+	}
 	return restult;
 }
 
 int updateInfo_action(uint8_t cmd, uint8_t *parg)
 {
 	updateHeader *upHead = (updateHeader *)parg;
-	updateInf.allchecksum = upHead->allchecksum;
-	updateInf.appLen = upHead->appLen;
-	updateInf.allpackage = upHead->allpackage;
-	updateInf.packageSize = upHead->packageSize;
-	if(FLASH_PAGE_SIZE%upHead->packageSize){
-		/*包大小演出*/
-		return 0;
+	if(updateInf.updateState == FLASH_UPDATE_ST_BACKUP){
+		updateInf.allchecksum = upHead->allchecksum;
+		updateInf.appLen = upHead->appLen;
+		updateInf.allpackage = upHead->allpackage;
+		updateInf.packageSize = upHead->packageSize;
+		if(FLASH_PAGE_SIZE%upHead->packageSize){
+			/*包大小演出*/
+			return 0;
+		}
+		updateInf.packageInPage = FLASH_PAGE_SIZE/upHead->packageSize;
+		updateInf.writeAddr = FLASH_APP1_ADDR;
+		updateInf.lenInPage = 0;
+		updateInf.updateState = FLASH_UPDATE_ST_REC;
+		updateInf.nextpackageOrder = 0;	
+		light_set(MODE_BREATH, 1000, COLOR_YELLOW, 0);
+		light_set(MODE_BREATH, 1000, COLOR_YELLOW, 1); 
+		Flash_ErasePage(FLASH_APP1_ADDR + FLASH_APP_VERSION_PAGE);
+		return 1;
 	}
-	updateInf.packageInPage = FLASH_PAGE_SIZE/upHead->packageSize;
-	updateInf.writeAddr = FLASH_APP1_ADDR;
-	updateInf.lenInPage = 0;
-	updateInf.updateState = FLASH_UPDATE_ST_REC;
-	updateInf.nextpackageOrder = 0;	
-	light_set(MODE_BREATH, 1000, COLOR_YELLOW, 0);
-	light_set(MODE_BREATH, 1000, COLOR_YELLOW, 1); 
-	return 1;
+	return 0;
+
 }
 int updateDate_action(uint8_t cmd, uint8_t *parg)
 {
-    Refresh_IWDG();
-	updateData *upHead = (updateData *)parg;
-	unsigned int posInPage;
-	if(upHead->packageOrder !=updateInf.nextpackageOrder){
-		/*序号不对,返回错误*/
-		return 0;
-	}
-    if(updateInf.updateState != FLASH_UPDATE_ST_REC){
-			/*状态不对,返回错误*/
-		return 0;
-	}
-	posInPage = upHead->packageOrder%(updateInf.packageInPage);
-	memcpy(&updateInf.data[posInPage*updateInf.packageSize], (uint8_t*)upHead->data, upHead->packageSize);
-	updateInf.nextpackageOrder++;
-	updateInf.lenInPage += upHead->packageSize;
-	if((updateInf.nextpackageOrder%updateInf.packageInPage==0) || (updateInf.nextpackageOrder==updateInf.allpackage)){
-		/*当前页收完,或包收完*/
-		iap_write_apppage(updateInf.writeAddr,updateInf.data,updateInf.lenInPage);
-		updateInf.writeAddr = updateInf.writeAddr+updateInf.lenInPage;
-		updateInf.lenInPage = 0;
-	}
-	
-	if(updateInf.nextpackageOrder==updateInf.allpackage){
-		/*稍后添加check sum */
-		Flash_ErasePage(FLASH_APP1_ADDR + FLASH_APP_VERSION_PAGE);		
-		updateInf.updateState = FLASH_UPDATE_ST_PROG;
+	if(updateInf.updateState == FLASH_UPDATE_ST_REC){
+		Refresh_IWDG();
+		updateData *upHead = (updateData *)parg;
+		unsigned int posInPage;
+		if(upHead->packageOrder !=updateInf.nextpackageOrder){
+			/*序号不对,返回错误*/
+			return 0;
+		}
+		if(updateInf.updateState != FLASH_UPDATE_ST_REC){
+				/*状态不对,返回错误*/
+			return 0;
+		}
+		posInPage = upHead->packageOrder%(updateInf.packageInPage);
+		memcpy(&updateInf.data[posInPage*updateInf.packageSize], (uint8_t*)upHead->data, upHead->packageSize);
+		updateInf.nextpackageOrder++;
+		updateInf.lenInPage += upHead->packageSize;
+		if((updateInf.nextpackageOrder%updateInf.packageInPage==0) || (updateInf.nextpackageOrder==updateInf.allpackage)){
+			/*当前页收完,或包收完*/
+			iap_write_apppage(updateInf.writeAddr,updateInf.data,updateInf.lenInPage);
+			updateInf.writeAddr = updateInf.writeAddr+updateInf.lenInPage;
+			updateInf.lenInPage = 0;
+		}	
+		if(updateInf.nextpackageOrder==updateInf.allpackage){
+			/*稍后添加check sum */;		
+			updateInf.updateState = FLASH_UPDATE_ST_PROG;
+		}
+		updateInf.updateWaitTime = 0;
+		return 1;
 	}
-	updateInf.updateWaitTime = 0;
-	return 1;
+	return 0;
 }
 
 int updatestart_respone(CmdMessage *pMsg, unsigned char result)

+ 1 - 0
DriverInterface/communication.h

@@ -125,6 +125,7 @@ typedef struct _miniConfigPram {
 enum FLASH_UPDATE_ST
 {
 	FLASH_UPDATE_ST_NUILL,
+	FLASH_UPDATE_ST_BACKUP,
 	FLASH_UPDATE_ST_REC,
 	FLASH_UPDATE_ST_PROG,
 };

+ 4 - 4
MDK-ARM/mini7_V2.uvguix.Administrator

@@ -1825,7 +1825,7 @@
         <Name>Build</Name>
         <Buttons>
           <Len>976</Len>
-          <Data>00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000002001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000010000000000000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA0000000000000000000000000000000000000000000000000100000001000000960000000300205000000000086D696E69375F563296000000000000000100086D696E69375F5632000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000</Data>
+          <Data>00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000002001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000010000000000000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA0000000000000000000000000000000000000000000000000100000001000000960000000300205000000000086D696E69375F563296000000000000000100086D696E69375F5632000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000</Data>
         </Buttons>
         <OriginalItems>
           <Len>583</Len>
@@ -3681,9 +3681,9 @@
       </Doc>
       <Doc>
         <Name>..\DriverInterface\communication.c</Name>
-        <ColumnNumber>42</ColumnNumber>
-        <TopLine>433</TopLine>
-        <CurrentLine>400</CurrentLine>
+        <ColumnNumber>0</ColumnNumber>
+        <TopLine>400</TopLine>
+        <CurrentLine>401</CurrentLine>
         <Folding>1</Folding>
         <ContractedFolders></ContractedFolders>
         <PaneID>0</PaneID>