From c0ce2f57a4f836ebeb9e7b8b4b5a4407fd78dc86 Mon Sep 17 00:00:00 2001 From: 黄学彪 <hxb@hdlchina.com.cn> Date: 星期三, 23 九月 2020 10:06:05 +0800 Subject: [PATCH] 上传 --- ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlFirmwareUpdateLogic.cs | 100 +++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 78 insertions(+), 22 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlFirmwareUpdateLogic.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlFirmwareUpdateLogic.cs index 2bdb33a..36407c7 100755 --- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlFirmwareUpdateLogic.cs +++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlFirmwareUpdateLogic.cs @@ -93,24 +93,24 @@ var result = GetFirmwareVersionAndSetToMemmory(FirmwareLevelType.Linux, Pra); return result; } - else if (levelType == FirmwareLevelType.Coordinator) + else if (levelType == FirmwareLevelType.A鍗忚皟鍣�) { //鍗忚皟鍣ㄦā鍧� Pra.FirmwareManaFirstType = 1; Pra.FirmwareManaSecondType = 1; Pra.HardwareVersion = HardwareVersion; Pra.DeviceType = imgType; - var result = GetFirmwareVersionAndSetToMemmory(FirmwareLevelType.Coordinator, Pra); + var result = GetFirmwareVersionAndSetToMemmory(FirmwareLevelType.A鍗忚皟鍣�, Pra); return result; } - else if (levelType == FirmwareLevelType.VirtualDevice) + else if (levelType == FirmwareLevelType.A铏氭嫙椹卞姩) { //铏氭嫙璁惧妯″潡 Pra.FirmwareManaFirstType = 1; Pra.FirmwareManaSecondType = 2; Pra.HardwareVersion = HardwareVersion; Pra.DeviceType = imgType; - var result = GetFirmwareVersionAndSetToMemmory(FirmwareLevelType.VirtualDevice, Pra); + var result = GetFirmwareVersionAndSetToMemmory(FirmwareLevelType.A铏氭嫙椹卞姩, Pra); return result; } else @@ -120,7 +120,7 @@ Pra.FirmwareManaSecondType = null; Pra.HardwareVersion = HardwareVersion; Pra.DeviceType = imgType; - var result = GetFirmwareVersionAndSetToMemmory(FirmwareLevelType.ZigbeeDevice, Pra); + var result = GetFirmwareVersionAndSetToMemmory(FirmwareLevelType.A璁惧, Pra); return result; } } @@ -332,14 +332,6 @@ //瀹冧笉鏄崌绾у浐浠�, .bin鏄壒娈婄殑 continue; } - int testVersion = Convert.ToInt32(verInfo.FirmwareVersion.ToString().PadLeft(6, '0').Substring(2, 2)); - if (testVersion % 2 != 0) - { - //涓棿閭d釜byte涓哄鏁版椂锛屼唬琛ㄦ槸娴嬭瘯鐗堟湰,鍦ㄦ樉绀烘渶鏂扮増鏈椂,涓嶉渶瑕佹樉绀猴紝浣嗘槸鍦ㄥ巻鍙茬増鏈偅閲屽彲浠ユ樉绀� - //涓棿閭d釜byte涓哄伓鏁版椂,浠h〃鏄寮忕増鏈� - continue; - } - if (verInfo.FirmwareVersion == nowVersion) { return verInfo; @@ -453,7 +445,11 @@ //鑾峰彇闇�瑕佷笅杞界殑鍥轰欢鏁版嵁 var listVersion = GetNeedToDownLoadVersionData(listTempDevice, listTempGateway); - if (listVersion.Count == 0) + //鑾峰彇闇�瑕佷笅杞界殑绌鸿皟妯″潡 + var listAcOta = new List<OTADevice>(); + var listAcUpdate = GetNeedDownLoadAirConditionerModule(listTempDevice, ref listAcOta); + + if (listVersion.Count == 0 && listAcUpdate.Count == 0) { return 0; } @@ -469,13 +465,15 @@ if (fileData != null) { //鏈湴瀛樻斁鐨勫浐浠跺師鏉ョ殑鍚嶅瓧(鍥犱负璁惧鍗囩骇鏃�,瀹冮渶瑕佽瘑鍒枃浠跺悕瀛楅噷闈㈠寘鍚殑鐗规畩瀛楃) - //key:纭欢鐗堟湰_闀滃儚ID_鍥轰欢鐗堟湰 value:鍥轰欢鍘熸潵鐨勫悕瀛� + //key:鍏ㄨ矾寰�,纭欢鐗堟湰_闀滃儚ID_鍥轰欢鐗堟湰 value:鍥轰欢鍘熸潵鐨勫悕瀛� dicFirmwareName = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string, string>>(fileData); } //鍥轰欢瀛樺偍璺緞 string firmwareDir = DirNameResourse.FirmwareUpdateDirectory; int nowCount = 0; + int macCount = listVersion.Count + listAcUpdate.Count; + foreach (var versionData in listVersion) { nowCount++; @@ -484,6 +482,8 @@ if (result == -1) { ProgressFormBar.Current.Close(); + //淇濆瓨鍒楄〃鍚嶅瓧 + HdlFileLogic.Current.SaveFileContent(DirNameResourse.FirmwareUpdateList, dicFirmwareName); return -1; } //鑾峰彇褰撳墠杩欎釜鐗堟湰鐨勫浐浠朵俊鎭� @@ -491,25 +491,48 @@ if (versionFirmware == null) { //浜戠娌℃湁杩欎釜鐗堟湰 杩涘害鍊� - ProgressFormBar.Current.SetValue(nowCount, listVersion.Count); + ProgressFormBar.Current.SetValue(nowCount, macCount); continue; } //鍘讳笅杞借繖涓浐浠� var pra = new { RequestVersion = Common.CommonPage.RequestVersion, DistributedMark = versionFirmware.DistributedMark }; - var byteData = UserCenterLogic.GetByteResponseDataByRequestHttps("FirmwareMana/DownloadPlatformUploadFirmware", false, pra, null, true); + var byteData = UserCenterLogic.GetByteResponseDataByRequestHttps("FirmwareMana/DownloadPlatformUploadFirmware", false, pra, new List<string> { "NotCheck" }, true); if (byteData == null) { ProgressFormBar.Current.Close(); + //淇濆瓨鍒楄〃鍚嶅瓧 + HdlFileLogic.Current.SaveFileContent(DirNameResourse.FirmwareUpdateList, dicFirmwareName); return -1; } //淇濆瓨鍥轰欢 var saveFile = System.IO.Path.Combine(firmwareDir, versionData.FileDiv + versionData.HwVersion + "_" + versionData.ImageType + "_" + versionData.FirmwareVersion + ".ota"); - HdlFileLogic.Current.SaveTextToFile(saveFile, Encoding.UTF8.GetString(byteData)); + HdlFileLogic.Current.SaveByteToFile(saveFile, byteData); dicFirmwareName[saveFile] = versionFirmware.Name; //杩涘害鍊� - ProgressFormBar.Current.SetValue(nowCount, listVersion.Count); + ProgressFormBar.Current.SetValue(nowCount, macCount); } + for (int i = 0; i < listAcUpdate.Count; i++) + { + //涓嬭浇绌鸿皟妯″潡 + var pra = new { RequestVersion = Common.CommonPage.RequestVersion, DistributedMark = listAcUpdate[i].DistributedMark }; + var deviceFirmwareByte = UserCenterLogic.GetByteResponseDataByRequestHttps("FirmwareMana/DownloadPlatformUploadFirmware", false, pra, new List<string> { "NotCheck" }, true); + if (deviceFirmwareByte == null) + { + ProgressFormBar.Current.Close(); + //淇濆瓨鍒楄〃鍚嶅瓧 + HdlFileLogic.Current.SaveFileContent(DirNameResourse.FirmwareUpdateList, dicFirmwareName); + return -1; + } + //淇濆瓨鍥轰欢 + string fileName = "AC_" + listAcOta[i].HwVersion + "_" + listAcOta[i].ImgTypeId + "_" + listAcUpdate[i].Name; + var saveFile = System.IO.Path.Combine(firmwareDir, fileName); + HdlFileLogic.Current.SaveByteToFile(saveFile, deviceFirmwareByte); + + //杩涘害鍊� + ProgressFormBar.Current.SetValue(nowCount, macCount); + } + //淇濆瓨鍒楄〃鍚嶅瓧 HdlFileLogic.Current.SaveFileContent(DirNameResourse.FirmwareUpdateList, dicFirmwareName); ProgressFormBar.Current.Close(); @@ -542,7 +565,7 @@ listVersion.Add(new TemplateDeviceVersion { FileDiv = "Device_", - levelType = FirmwareLevelType.ZigbeeDevice, + levelType = FirmwareLevelType.A璁惧, HwVersion = device.HwVersion.ToString(), ImageType = device.ImgTypeId.ToString(), FirmwareVersion = device.ImgVersion @@ -575,7 +598,7 @@ listVersion.Add(new TemplateDeviceVersion { FileDiv = "Coordinator_", - levelType = FirmwareLevelType.Coordinator, + levelType = FirmwareLevelType.A鍗忚皟鍣�, HwVersion = gateway.CoordinatorHardVersion.ToString(), ImageType = gateway.CoordinatorImageId.ToString(), FirmwareVersion = gateway.CoordinatorFirmwareVersion @@ -596,7 +619,7 @@ listVersion.Add(new TemplateDeviceVersion { FileDiv = "DriveCode_", - levelType = FirmwareLevelType.VirtualDevice, + levelType = FirmwareLevelType.A铏氭嫙椹卞姩, HwVersion = data.DriveHwVersion.ToString(), ImageType = data.DriveImageType.ToString(), FirmwareVersion = data.DriveFwVersion @@ -609,6 +632,39 @@ } /// <summary> + /// 鑾峰彇闇�瑕佷笅杞界殑绌鸿皟妯″潡 + /// </summary> + /// <param name="listDevice">璁惧鍒楄〃</param> + /// <param name="listTaget">涓庤繑鍥炲�煎搴旂殑涓滆タ</param> + private static List<FirmwareVersionInfo> GetNeedDownLoadAirConditionerModule(List<OTADevice> listDevice, ref List<OTADevice> listTaget) + { + var listUpdate = new List<FirmwareVersionInfo>(); + //鍥轰欢瀛樺偍璺緞 + string firmwareDir = DirNameResourse.FirmwareUpdateDirectory; + + foreach (var otaDevice in listDevice) + { + var myType = Common.LocalDevice.Current.GetMyDeviceEnumInfo(new List<CommonDevice> { otaDevice }); + if (myType.ConcreteType != Common.DeviceConcreteType.AirConditioner_ZbGateway) + { + //鍙鐞嗕腑澶┖璋� + continue; + } + var list = GetFirmwareVersionListInfo(FirmwareLevelType.A璁惧, otaDevice.HwVersion.ToString(), otaDevice.ImgTypeId.ToString()); + foreach (var data in list) + { + if (data.Name.EndsWith(".bin") == true && System.IO.File.Exists(firmwareDir) == false) + { + //鍙.bin鏂囦欢 + listUpdate.Add(data); + listTaget.Add(otaDevice); + } + } + } + return listUpdate; + } + + /// <summary> /// 妯℃澘璁惧鐨勭増鏈俊鎭� /// </summary> private class TemplateDeviceVersion -- Gitblit v1.8.0