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