From dc0309e64f02227d8e1468b7326c07955f804612 Mon Sep 17 00:00:00 2001 From: chenqiyang <1406175257@qq.com> Date: 星期三, 22 六月 2022 11:22:18 +0800 Subject: [PATCH] 修改引用路径 --- ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlFirmwareUpdateLogic.cs | 1593 +++++++++++++++++++++++++++++++++++----------------------- 1 files changed, 949 insertions(+), 644 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlFirmwareUpdateLogic.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlFirmwareUpdateLogic.cs old mode 100755 new mode 100644 index 45aed43..30dd911 --- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlFirmwareUpdateLogic.cs +++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlFirmwareUpdateLogic.cs @@ -1,652 +1,957 @@ -锘縰sing System; -using System.Collections.Generic; -using System.Text; -using ZigBee.Device; - -namespace Shared.Phone.UserCenter -{ - /// <summary> - /// 鍥轰欢鍗囩骇鐨勯�昏緫绫� - /// </summary> - public class HdlFirmwareUpdateLogic - { - #region 鈻� 鎵ц鍥轰欢鏇存柊_______________________ - - /// <summary> - /// 鎵ц涓嬩竴涓浐浠剁殑鏇存柊 - /// </summary> - public static void DoUpdateNextFirmware() - { - //涓嬩竴涓鎵ц鏇存柊鐨勭綉鍏� - HdlDeviceUpdateCommonLogic gwControl = null; - //涓嬩竴涓鎵ц鏇存柊鐨勮澶� - HdlDeviceUpdateCommonLogic deviceControl = null; - foreach (var contr in FirmwareUpdateResourse.dicUpdateList.Values) - { - //濡傛灉鍒殑杩樺湪鍗囩骇涓�,鍒欎笉鍐嶅鐞� - if (contr.IsFinishUpdate == false) - { - return; - } - //濡傛灉杩欎釜鍦ㄧ瓑寰呭垪琛ㄧ殑璇� - if (contr.UpdateStatu == UpdateStatuMode.Wait && gwControl == null) - { - if (contr.ClassDiv == 1 && gwControl == null) - { - //涓嬩竴涓崌绾х殑灏辨槸瀹冧簡 - gwControl = contr; - } - else if (contr.ClassDiv == 2 && deviceControl == null) - { - //涓嬩竴涓崌绾х殑灏辨槸瀹冧簡 - deviceControl = contr; - } - } - } - - HdlThreadLogic.Current.RunThread(() => - { - if (gwControl != null) - { - //寮�濮嬫墽琛屾洿鏂版搷浣� - gwControl.DoStartUpdate(); - return; - } - - if (deviceControl != null) - { - //寮�濮嬫墽琛屾洿鏂版搷浣� - deviceControl.DoStartUpdate(); - } - }); - } - - #endregion - - #region 鈻� 娣诲姞鍗囩骇鍥轰欢淇℃伅___________________ - - /// <summary> - /// 娣诲姞鍗囩骇鍥轰欢淇℃伅 1:姝e父 -1:娌$綉,鑾峰彇涓嶅埌涓滆タ - /// </summary> - /// <param name="levelType">鍥轰欢闃剁骇鍒嗙被</param> - /// <param name="HardwareVersion">纭欢鐗堟湰</param> - /// <param name="imgType">闀滃儚绫诲瀷</param> - /// <returns></returns> - public static int AddFirmwareVersionInfo(FirmwareLevelType levelType, string HardwareVersion, string imgType) - { - //妫�娴嬫湰鍦版槸鍚﹀凡缁忔湁杩欎釜缂撳瓨浜� - if (IsEsixtFirmwareVersionInfo(levelType, HardwareVersion, imgType) == true) - { - return 1; - } - var Pra = new GetFirmwareVersionPra(); - Pra.PageSetting.Page = 1; - Pra.PageSetting.PageSize = 9999; - - if (levelType == FirmwareLevelType.Linux) - { - //鑾峰彇缃戝叧Linux妯″潡鍗囩骇淇℃伅 - Pra.FirmwareManaFirstType = 1; - Pra.FirmwareManaSecondType = 0; - Pra.HardwareVersion = HardwareVersion; - Pra.DeviceType = imgType; - var result = GetFirmwareVersionAndSetToMemmory(FirmwareLevelType.Linux, Pra); - return result; - } - else if (levelType == FirmwareLevelType.A鍗忚皟鍣�) - { - //鍗忚皟鍣ㄦā鍧� - Pra.FirmwareManaFirstType = 1; - Pra.FirmwareManaSecondType = 1; - Pra.HardwareVersion = HardwareVersion; - Pra.DeviceType = imgType; - var result = GetFirmwareVersionAndSetToMemmory(FirmwareLevelType.A鍗忚皟鍣�, Pra); - return result; - } - else if (levelType == FirmwareLevelType.A铏氭嫙椹卞姩) - { - //铏氭嫙璁惧妯″潡 - Pra.FirmwareManaFirstType = 1; - Pra.FirmwareManaSecondType = 2; - Pra.HardwareVersion = HardwareVersion; - Pra.DeviceType = imgType; - var result = GetFirmwareVersionAndSetToMemmory(FirmwareLevelType.A铏氭嫙椹卞姩, Pra); - return result; - } - else - { - //涓�鑸澶� - Pra.FirmwareManaFirstType = 2; - Pra.FirmwareManaSecondType = null; - Pra.HardwareVersion = HardwareVersion; - Pra.DeviceType = imgType; - var result = GetFirmwareVersionAndSetToMemmory(FirmwareLevelType.A璁惧, Pra); - return result; - } - } - - /// <summary> - /// 鑾峰彇浜戠鐨勫浐浠讹紝鐒跺悗瀛樺叆缂撳瓨涓� 1:姝e父 -1:娌$綉,鑾峰彇涓嶅埌涓滆タ - /// </summary> - /// <param name="levelType"></param> - /// <param name="pra"></param> +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using ZigBee.Device; + +namespace Shared.Phone.UserCenter +{ + /// <summary> + /// 鍥轰欢鍗囩骇鐨勯�昏緫绫� + /// </summary> + public class HdlFirmwareUpdateLogic + { + #region 鈻� 鎵ц鍥轰欢鏇存柊_______________________ + + /// <summary> + /// 鎵ц涓嬩竴涓浐浠剁殑鏇存柊 + /// </summary> + public static void DoUpdateNextFirmware() + { + //涓嬩竴涓鎵ц鏇存柊鐨勭綉鍏� + HdlDeviceUpdateCommonLogic gwControl = null; + //涓嬩竴涓鎵ц鏇存柊鐨勮澶� + HdlDeviceUpdateCommonLogic deviceControl = null; + foreach (var contr in FirmwareUpdateResourse.dicUpdateList.Values) + { + //濡傛灉鍒殑杩樺湪鍗囩骇涓�,鍒欎笉鍐嶅鐞� + if (contr.IsFinishUpdate == false) + { + return; + } + //濡傛灉杩欎釜鍦ㄧ瓑寰呭垪琛ㄧ殑璇� + if (contr.UpdateStatu == UpdateStatuMode.Wait && gwControl == null) + { + if (contr.ClassDiv == 1 && gwControl == null) + { + //涓嬩竴涓崌绾х殑灏辨槸瀹冧簡 + gwControl = contr; + } + else if (contr.ClassDiv == 2 && deviceControl == null) + { + //涓嬩竴涓崌绾х殑灏辨槸瀹冧簡 + deviceControl = contr; + } + } + } + + HdlThreadLogic.Current.RunThread(() => + { + if (gwControl != null) + { + //寮�濮嬫墽琛屾洿鏂版搷浣� + gwControl.DoStartUpdate(); + return; + } + + if (deviceControl != null) + { + //寮�濮嬫墽琛屾洿鏂版搷浣� + deviceControl.DoStartUpdate(); + } + }); + } + + #endregion + + #region 鈻� 娣诲姞鍗囩骇鍥轰欢淇℃伅___________________ + + /// <summary> + /// 娣诲姞鍗囩骇鍥轰欢淇℃伅 1:姝e父 -1:娌$綉,鑾峰彇涓嶅埌涓滆タ + /// </summary> + /// <param name="levelType">鍥轰欢闃剁骇鍒嗙被</param> + /// <param name="HardwareVersion">纭欢鐗堟湰</param> + /// <param name="imgType">闀滃儚绫诲瀷</param> /// <returns></returns> - private static int GetFirmwareVersionAndSetToMemmory(FirmwareLevelType levelType, GetFirmwareVersionPra pra) - { - var listCheck = new List<string> { "NotCheck" }; - string resultValue = UserCenterLogic.GetResponseDataByRequestHttps("FirmwareMana/DetectionPlatformUploadFirmware", false, pra, listCheck, false); - if (string.IsNullOrEmpty(resultValue) == true) - { - return -1; - } - var verResult = Newtonsoft.Json.JsonConvert.DeserializeObject<FirmwareVersionResult>(resultValue); - if (verResult.PageData.Count == 0) - { - return 1; - } - - //纭欢鐗堟湰 - Dictionary<string, FirmwareHardInfo> dicHardData = null; - if (FirmwareUpdateResourse.dicFirmwareInfo.ContainsKey(levelType) == false) - { - FirmwareUpdateResourse.dicFirmwareInfo[levelType] = new Dictionary<string, FirmwareHardInfo>(); - } - dicHardData = FirmwareUpdateResourse.dicFirmwareInfo[levelType]; - - foreach (var data in verResult.PageData) - { - //鍥轰欢鐗堟湰鏄剧ず锛� - //10101 3涓猙yte 鏄剧ず涓猴細ver.1.01.01 - if (data.FirmwareVersion.Length != 6 && data.FirmwareVersion.Length != 5) - { - //闈炴瑙勭殑鍥轰欢鐗堟湰,涓嶅啀鑰冭檻鑼冨洿鍐� - continue; - } - //纭欢鍒嗙被 - FirmwareHardInfo hardInfo = null; - string hardCode = data.HardwareVersion; - if (dicHardData.ContainsKey(hardCode) == false) - { - //娣诲姞 - hardInfo = new FirmwareHardInfo(); - dicHardData[hardCode] = hardInfo; - } - hardInfo = dicHardData[hardCode]; - - //闀滃儚鍒嗙被 - string imgType = data.DeviceType; - Dictionary<string, FirmwareImgTypeInfo> dicimgType = hardInfo.dicImgType; - FirmwareImgTypeInfo imgTypeInfo = null; - if (dicimgType.ContainsKey(imgType) == false) - { - //娣诲姞 - imgTypeInfo = new FirmwareImgTypeInfo(); - dicimgType[imgType] = imgTypeInfo; - } - imgTypeInfo = dicimgType[imgType]; - - try - { - //鍥轰欢鐗堟湰 - var info = new FirmwareVersionInfo(); - info.DistributedMark = data.DistributedMark; - info.FirmwareVersion = Convert.ToInt32(data.FirmwareVersion); - info.ShowName = data.Name; - info.Name = data.Name; - info.HardwareVersion = hardCode; - info.ImagType = imgType; - info.CreatedOnUtc = data.CreatedOnUtc; - imgTypeInfo.listVeison.Add(info); - //鍥轰欢鐨勪俊鎭鐞� - DoAdjustFirmwareInformation(info, data.Remarks); - } - catch { continue; } - } - - return 1; - } - + public static int AddFirmwareVersionInfo(FirmwareLevelType levelType, string HardwareVersion, string imgType) + { + //妫�娴嬫湰鍦版槸鍚﹀凡缁忔湁杩欎釜缂撳瓨浜� + if (IsEsixtFirmwareVersionInfo(levelType, HardwareVersion, imgType) == true) + { + return 1; + } + var Pra = new GetFirmwareVersionPra(); + Pra.PageSetting.Page = 1; + Pra.PageSetting.PageSize = 9999; + + if (levelType == FirmwareLevelType.Linux) + { + //鑾峰彇缃戝叧Linux妯″潡鍗囩骇淇℃伅 + Pra.FirmwareManaFirstType = 1; + Pra.FirmwareManaSecondType = 0; + Pra.HardwareVersion = HardwareVersion; + Pra.DeviceType = imgType; + var result = GetFirmwareVersionAndSetToMemmory(FirmwareLevelType.Linux, Pra); + return result; + } + else if (levelType == FirmwareLevelType.A鍗忚皟鍣�) + { + //鍗忚皟鍣ㄦā鍧� + Pra.FirmwareManaFirstType = 1; + Pra.FirmwareManaSecondType = 1; + Pra.HardwareVersion = HardwareVersion; + Pra.DeviceType = imgType; + var result = GetFirmwareVersionAndSetToMemmory(FirmwareLevelType.A鍗忚皟鍣�, Pra); + return result; + } + else if (levelType == FirmwareLevelType.A铏氭嫙椹卞姩) + { + //铏氭嫙璁惧妯″潡 + Pra.FirmwareManaFirstType = 1; + Pra.FirmwareManaSecondType = 2; + Pra.HardwareVersion = HardwareVersion; + Pra.DeviceType = imgType; + var result = GetFirmwareVersionAndSetToMemmory(FirmwareLevelType.A铏氭嫙椹卞姩, Pra); + return result; + } + else + { + //涓�鑸澶� + Pra.FirmwareManaFirstType = 2; + Pra.FirmwareManaSecondType = null; + Pra.HardwareVersion = HardwareVersion; + Pra.DeviceType = imgType; + var result = GetFirmwareVersionAndSetToMemmory(FirmwareLevelType.A璁惧, Pra); + return result; + } + } + + /// <summary> + /// 鑾峰彇浜戠鐨勫浐浠讹紝鐒跺悗瀛樺叆缂撳瓨涓� 1:姝e父 -1:娌$綉,鑾峰彇涓嶅埌涓滆タ + /// </summary> + /// <param name="levelType"></param> + /// <param name="pra"></param> + /// <returns></returns> + private static int GetFirmwareVersionAndSetToMemmory(FirmwareLevelType levelType, GetFirmwareVersionPra pra) + { + var listCheck = new List<string> { "NotCheck" }; + string resultValue = UserCenterLogic.GetResponseDataByRequestHttps("FirmwareMana/DetectionPlatformUploadFirmware", false, pra, listCheck, false); + if (string.IsNullOrEmpty(resultValue) == true) + { + return -1; + } + var verResult = Newtonsoft.Json.JsonConvert.DeserializeObject<FirmwareVersionResult>(resultValue); + if (verResult.PageData.Count == 0) + { + return 1; + } + + //纭欢鐗堟湰 + Dictionary<string, FirmwareHardInfo> dicHardData = null; + if (FirmwareUpdateResourse.dicFirmwareInfo.ContainsKey(levelType) == false) + { + FirmwareUpdateResourse.dicFirmwareInfo[levelType] = new Dictionary<string, FirmwareHardInfo>(); + } + dicHardData = FirmwareUpdateResourse.dicFirmwareInfo[levelType]; + + foreach (var data in verResult.PageData) + { + //鍥轰欢鐗堟湰鏄剧ず锛� + //10101 3涓猙yte 鏄剧ず涓猴細ver.1.01.01 + if (data.FirmwareVersion.Length != 6 && data.FirmwareVersion.Length != 5) + { + //闈炴瑙勭殑鍥轰欢鐗堟湰,涓嶅啀鑰冭檻鑼冨洿鍐� + continue; + } + //纭欢鍒嗙被 + FirmwareHardInfo hardInfo = null; + string hardCode = data.HardwareVersion; + if (dicHardData.ContainsKey(hardCode) == false) + { + //娣诲姞 + hardInfo = new FirmwareHardInfo(); + dicHardData[hardCode] = hardInfo; + } + hardInfo = dicHardData[hardCode]; + + //闀滃儚鍒嗙被 + string imgType = data.DeviceType; + Dictionary<string, FirmwareImgTypeInfo> dicimgType = hardInfo.dicImgType; + FirmwareImgTypeInfo imgTypeInfo = null; + if (dicimgType.ContainsKey(imgType) == false) + { + //娣诲姞 + imgTypeInfo = new FirmwareImgTypeInfo(); + dicimgType[imgType] = imgTypeInfo; + } + imgTypeInfo = dicimgType[imgType]; + + try + { + //鍥轰欢鐗堟湰 + var info = new FirmwareVersionInfo(); + info.DistributedMark = data.DistributedMark; + info.FirmwareVersion = Convert.ToInt32(data.FirmwareVersion); + info.ShowName = data.Name; + info.Name = data.Name; + info.HardwareVersion = hardCode; + info.ImagType = imgType; + info.CreatedOnUtc = data.CreatedOnUtc; + imgTypeInfo.listVeison.Add(info); + //鍥轰欢鐨勪俊鎭鐞� + DoAdjustFirmwareInformation(info, data.Remarks); + } + catch { continue; } + } + + return 1; + } + #endregion #region 鈻� 鑾峰彇鏈�鏂板浐浠剁増鏈俊鎭痏______________ - /// <summary> - /// 鑾峰彇鍥轰欢鐨勬渶鏂扮増鏈俊鎭�(濡傛灉杩斿洖Null,鍒欒〃绀烘病鏈夋渶鏂扮増鏈�,鎴栬�呭綋鍓嶅凡缁忔槸鏈�鏂扮増鏈�) - /// </summary> - /// <param name="levelType">鍥轰欢闃剁骇鍒嗙被</param> - /// <param name="HardwareVersion">纭欢鐗堟湰</param> - /// <param name="imgType">闀滃儚绫诲瀷</param> - /// <param name="nowVersion">鐜板湪鐨勭増鏈�</param> + /// <summary> + /// 鑾峰彇鍥轰欢鐨勬渶鏂扮増鏈俊鎭�(濡傛灉杩斿洖Null,鍒欒〃绀烘病鏈夋渶鏂扮増鏈�,鎴栬�呭綋鍓嶅凡缁忔槸鏈�鏂扮増鏈�) + /// </summary> + /// <param name="levelType">鍥轰欢闃剁骇鍒嗙被</param> + /// <param name="HardwareVersion">纭欢鐗堟湰</param> + /// <param name="imgType">闀滃儚绫诲瀷</param> + /// <param name="nowVersion">鐜板湪鐨勭増鏈�</param> /// <returns></returns> - public static FirmwareVersionInfo GetFirmwareMostVersionInfo(FirmwareLevelType levelType, string HardwareVersion, string imgType, int nowVersion) - { - //闀滃儚绫诲瀷 - var listdata = GetFirmwareVersionListInfo(levelType, HardwareVersion, imgType); - FirmwareVersionInfo newFirInfo = null; - foreach (var verInfo in listdata) - { - if (verInfo.Name.EndsWith(".bin") == true) - { - //瀹冧笉鏄崌绾у浐浠�, .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) - { - nowVersion = verInfo.FirmwareVersion; - newFirInfo = verInfo; - } - } - return newFirInfo; - } - - /// <summary> - /// 鑾峰彇鍥轰欢鍒楄〃鐨勫浐浠剁増鏈俊鎭� - /// </summary> - /// <param name="levelType">鍥轰欢闃剁骇鍒嗙被</param> - /// <param name="HardwareVersion">纭欢鐗堟湰</param> - /// <param name="imgType">闀滃儚绫诲瀷</param> + public static FirmwareVersionInfo GetFirmwareMostVersionInfo(FirmwareLevelType levelType, string HardwareVersion, string imgType, int nowVersion) + { + //闀滃儚绫诲瀷 + var listdata = GetFirmwareVersionListInfo(levelType, HardwareVersion, imgType); + FirmwareVersionInfo newFirInfo = null; + foreach (var verInfo in listdata) + { + if (verInfo.Name.EndsWith(".bin") == true) + { + //瀹冧笉鏄崌绾у浐浠�, .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) + { + nowVersion = verInfo.FirmwareVersion; + newFirInfo = verInfo; + } + } + return newFirInfo; + } + + /// <summary> + /// 鑾峰彇鍥轰欢鍒楄〃鐨勫浐浠剁増鏈俊鎭� + /// </summary> + /// <param name="levelType">鍥轰欢闃剁骇鍒嗙被</param> + /// <param name="HardwareVersion">纭欢鐗堟湰</param> + /// <param name="imgType">闀滃儚绫诲瀷</param> /// <returns></returns> - public static List<FirmwareVersionInfo> GetFirmwareVersionListInfo(FirmwareLevelType levelType, string HardwareVersion, string imgType) - { - if (FirmwareUpdateResourse.dicFirmwareInfo == null || FirmwareUpdateResourse.dicFirmwareInfo.ContainsKey(levelType) == false) - { - return new List<FirmwareVersionInfo>(); - } - //纭欢鐗堟湰鍙风骇鍒� - var dicHard = FirmwareUpdateResourse.dicFirmwareInfo[levelType]; - - //纭欢鐗堟湰 - if (dicHard.ContainsKey(HardwareVersion) == false) - { - return new List<FirmwareVersionInfo>(); - } - //闀滃儚绫诲瀷 - var dicImgInfo = GetImageVersionListInfo(levelType, HardwareVersion); - if (dicImgInfo.ContainsKey(imgType) == false) - { - return new List<FirmwareVersionInfo>(); - } - - var listData = new List<FirmwareVersionInfo>(); - var imgInfo = dicImgInfo[imgType]; - foreach (var verInfo in imgInfo.listVeison) - { - listData.Add(verInfo); - } - - return listData; - } - - /// <summary> - /// 鑾峰彇鍥轰欢鍒楄〃鐨勯暅鍍忕増鏈俊鎭� - /// </summary> - /// <param name="levelType">鍥轰欢闃剁骇鍒嗙被</param> - /// <param name="HardwareVersion">纭欢鐗堟湰</param> + public static List<FirmwareVersionInfo> GetFirmwareVersionListInfo(FirmwareLevelType levelType, string HardwareVersion, string imgType) + { + if (FirmwareUpdateResourse.dicFirmwareInfo == null || FirmwareUpdateResourse.dicFirmwareInfo.ContainsKey(levelType) == false) + { + return new List<FirmwareVersionInfo>(); + } + //纭欢鐗堟湰鍙风骇鍒� + var dicHard = FirmwareUpdateResourse.dicFirmwareInfo[levelType]; + + //纭欢鐗堟湰 + if (dicHard.ContainsKey(HardwareVersion) == false) + { + return new List<FirmwareVersionInfo>(); + } + //闀滃儚绫诲瀷 + var dicImgInfo = GetImageVersionListInfo(levelType, HardwareVersion); + if (dicImgInfo.ContainsKey(imgType) == false) + { + return new List<FirmwareVersionInfo>(); + } + + var listData = new List<FirmwareVersionInfo>(); + var imgInfo = dicImgInfo[imgType]; + foreach (var verInfo in imgInfo.listVeison) + { + listData.Add(verInfo); + } + + return listData; + } + + /// <summary> + /// 鑾峰彇鍥轰欢鍒楄〃鐨勯暅鍍忕増鏈俊鎭� + /// </summary> + /// <param name="levelType">鍥轰欢闃剁骇鍒嗙被</param> + /// <param name="HardwareVersion">纭欢鐗堟湰</param> /// <returns></returns> - public static Dictionary<string, FirmwareImgTypeInfo> GetImageVersionListInfo(FirmwareLevelType levelType, string HardwareVersion) - { - if (FirmwareUpdateResourse.dicFirmwareInfo == null || FirmwareUpdateResourse.dicFirmwareInfo.ContainsKey(levelType) == false) - { - return new Dictionary<string, FirmwareImgTypeInfo>(); - } - //纭欢鐗堟湰鍙风骇鍒� - var dicHard = FirmwareUpdateResourse.dicFirmwareInfo[levelType]; - - //纭欢鐗堟湰 - if (dicHard.ContainsKey(HardwareVersion) == false) - { - return new Dictionary<string, FirmwareImgTypeInfo>(); - } - //闀滃儚绫诲瀷 - return dicHard[HardwareVersion].dicImgType; - } - - #endregion - - #region 鈻� 鑾峰彇鎸囧畾鍥轰欢鐗堟湰淇℃伅_______________ - - /// <summary> - /// 鑾峰彇鎸囧畾鍥轰欢鐨勭増鏈俊鎭�(濡傛灉杩斿洖Null,鍒欒〃绀烘病鏈夎繖涓浐浠�) - /// </summary> - /// <param name="levelType">鍥轰欢闃剁骇鍒嗙被</param> - /// <param name="HardwareVersion">纭欢鐗堟湰</param> - /// <param name="imgType">闀滃儚绫诲瀷</param> - /// <param name="nowVersion">鐜板湪鐨勭増鏈�</param> - /// <returns></returns> - public static FirmwareVersionInfo GetFirmwareVersionInfo(FirmwareLevelType levelType, string HardwareVersion, string imgType, int nowVersion) - { - //闀滃儚绫诲瀷 - var listdata = GetFirmwareVersionListInfo(levelType, HardwareVersion, imgType); - foreach (var verInfo in listdata) - { - if (verInfo.Name.EndsWith(".bin") == true) - { - //瀹冧笉鏄崌绾у浐浠�, .bin鏄壒娈婄殑 - continue; - } - if (verInfo.FirmwareVersion == nowVersion) - { - return verInfo; - } - } - return null; ; - } - - #endregion - - #region 鈻� 鍥轰欢瀛樺湪妫�娴媉______________________ - - /// <summary> - /// 鍥轰欢缂撳瓨瀛樺湪妫�娴� - /// </summary> - /// <param name="levelType">鍥轰欢闃剁骇鍒嗙被</param> - /// <param name="HardwareVersion">纭欢鐗堟湰</param> - /// <param name="imgType">闀滃儚绫诲瀷</param> - /// <returns></returns> - private static bool IsEsixtFirmwareVersionInfo(FirmwareLevelType levelType, string HardwareVersion, string imgType) - { - //绗竴澶х被 - if (FirmwareUpdateResourse.dicFirmwareInfo == null || FirmwareUpdateResourse.dicFirmwareInfo.ContainsKey(levelType) == false) - { - return false; - } - //纭欢 - if (FirmwareUpdateResourse.dicFirmwareInfo[levelType].ContainsKey(HardwareVersion) == false) - { - return false; - } - //闀滃儚 - if (FirmwareUpdateResourse.dicFirmwareInfo[levelType][HardwareVersion].dicImgType.ContainsKey(imgType) == false) - { - return false; - } - return true; - } - - /// <summary> - /// 妫�娴嬭Ota璁惧鐨勫崌绾у浐浠舵槸鍚﹀瓨鍦� - /// </summary> - /// <param name="device">璁惧瀵硅薄</param> - /// <returns></returns> - public static bool IsEsixtDeviceFirmwareFile(OTADevice device) - { - var fileFullName = GetDeviceFirmwareFile(device); - return System.IO.File.Exists(fileFullName); - } - - /// <summary> - /// 鑾峰彇ota鎸囧畾鐨勫崌绾у浐浠跺悕瀛�(鍏ㄨ矾寰�) - /// </summary> - /// <param name="device">璁惧瀵硅薄</param> - /// <returns></returns> - public static string GetDeviceFirmwareFile(OTADevice device) - { - //纭欢鐗堟湰_闀滃儚ID_鍥轰欢鐗堟湰 - string fileName = device.HwVersion + "_" + device.ImgTypeId + "_" + device.ImgVersion; - return System.IO.Path.Combine(DirNameResourse.FirmwareUpdateDirectory, "Device_" + fileName + ".ota"); - } - - /// <summary> - /// 鑾峰彇缃戝叧Linux鐨勫崌绾у浐浠跺悕瀛�(鍏ㄨ矾寰�) - /// </summary> - /// <param name="zbGateway">缃戝叧瀵硅薄</param> - /// <returns></returns> - public static string GetGatewayLinuxFirmwareFile(ZbGateway zbGateway) - { - string fileName = zbGateway.LinuxHardVersion + "_" + zbGateway.LinuxImageType + "_" + zbGateway.LinuxFirmwareVersion; - return System.IO.Path.Combine(DirNameResourse.FirmwareUpdateDirectory, "Linux_" + fileName + ".ota"); - } - - /// <summary> - /// 鑾峰彇缃戝叧鍗忚皟鍣ㄧ殑鍗囩骇鍥轰欢鍚嶅瓧(鍏ㄨ矾寰�) - /// </summary> - /// <param name="zbGateway">缃戝叧瀵硅薄</param> - /// <returns></returns> - public static string GetGatewayCoordinatorFirmwareFile(ZbGateway zbGateway) - { - string fileName = zbGateway.CoordinatorHardVersion + "_" + zbGateway.CoordinatorImageId + "_" + zbGateway.CoordinatorFirmwareVersion; - return System.IO.Path.Combine(DirNameResourse.FirmwareUpdateDirectory, "Coordinator_" + fileName + ".ota"); - } - - /// <summary> - /// 鑾峰彇缃戝叧铏氭嫙椹卞姩鐨勫崌绾у浐浠跺悕瀛�(鍏ㄨ矾寰�) - /// </summary> - /// <param name="codeObj">铏氭嫙椹卞姩鏁版嵁</param> - /// <returns></returns> - public static string GetGatewayDriveCodeFirmwareFile(ZbGatewayData.DriveCodeObj codeObj) - { - string fileName = codeObj.DriveHwVersion + "_" + codeObj.DriveImageType + "_" + codeObj.DriveFwVersion; - return System.IO.Path.Combine(DirNameResourse.FirmwareUpdateDirectory, "DriveCode_" + fileName + ".ota"); - } - - #endregion - - #region 鈻� 涓嬭浇妯℃澘鍥轰欢_______________________ - - /// <summary> - /// 涓嬭浇妯℃澘涓綉鍏冲拰璁惧鐨勫浐浠� - /// </summary> - /// <param name="fullFileName"></param> - /// <param name="i_Msg"></param> - public static int DownLoadTemplateDeviceFirmware(string fullFileName, string i_Msg) - { - //浠庢ā鏉垮綋涓幏鍙栬澶囧拰缃戝叧瀵硅薄 - var listTempDevice = new List<OTADevice>(); - var listTempGateway = new List<ZbGateway>(); - TemplateData.TemplateCommonLogic.Current.GetDeviceObjectFromTemplate(fullFileName, ref listTempDevice, ref listTempGateway); - - //鑾峰彇闇�瑕佷笅杞界殑鍥轰欢鏁版嵁 - var listVersion = GetNeedToDownLoadVersionData(listTempDevice, listTempGateway); - if (listVersion.Count == 0) - { - return 0; - } - //鎵撳紑杩涘害鏉� - ProgressFormBar.Current.Start(); - ProgressFormBar.Current.SetMsg(i_Msg); - ProgressFormBar.Current.SetValue(0, 1); - - System.Threading.Thread.Sleep(1000); - - var dicFirmwareName = new Dictionary<string, string>(); - var fileData = HdlFileLogic.Current.ReadFileTextContent(DirNameResourse.FirmwareUpdateList); - if (fileData != null) - { - //鏈湴瀛樻斁鐨勫浐浠跺師鏉ョ殑鍚嶅瓧(鍥犱负璁惧鍗囩骇鏃�,瀹冮渶瑕佽瘑鍒枃浠跺悕瀛楅噷闈㈠寘鍚殑鐗规畩瀛楃) - //key:鍏ㄨ矾寰�,纭欢鐗堟湰_闀滃儚ID_鍥轰欢鐗堟湰 value:鍥轰欢鍘熸潵鐨勫悕瀛� - dicFirmwareName = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string, string>>(fileData); - } - - //鍥轰欢瀛樺偍璺緞 - string firmwareDir = DirNameResourse.FirmwareUpdateDirectory; - int nowCount = 0; - foreach (var versionData in listVersion) - { - nowCount++; - //鑾峰彇鍗囩骇鍥轰欢淇℃伅 - var result = AddFirmwareVersionInfo(versionData.levelType, versionData.HwVersion, versionData.ImageType); - if (result == -1) - { - ProgressFormBar.Current.Close(); - return -1; - } - //鑾峰彇褰撳墠杩欎釜鐗堟湰鐨勫浐浠朵俊鎭� - var versionFirmware = GetFirmwareVersionInfo(versionData.levelType, versionData.HwVersion, versionData.ImageType, versionData.FirmwareVersion); - if (versionFirmware == null) - { - //浜戠娌℃湁杩欎釜鐗堟湰 杩涘害鍊� - ProgressFormBar.Current.SetValue(nowCount, listVersion.Count); - continue; - } - //鍘讳笅杞借繖涓浐浠� - var pra = new { RequestVersion = Common.CommonPage.RequestVersion, DistributedMark = versionFirmware.DistributedMark }; - var byteData = UserCenterLogic.GetByteResponseDataByRequestHttps("FirmwareMana/DownloadPlatformUploadFirmware", false, pra, null, true); - if (byteData == null) - { - ProgressFormBar.Current.Close(); - return -1; - } - //淇濆瓨鍥轰欢 - var saveFile = System.IO.Path.Combine(firmwareDir, versionData.FileDiv + versionData.HwVersion + "_" + versionData.ImageType + "_" + versionData.FirmwareVersion + ".ota"); - HdlFileLogic.Current.SaveByteToFile(saveFile, byteData); - dicFirmwareName[saveFile] = versionFirmware.Name; - - //杩涘害鍊� - ProgressFormBar.Current.SetValue(nowCount, listVersion.Count); - } - //淇濆瓨鍒楄〃鍚嶅瓧 - HdlFileLogic.Current.SaveFileContent(DirNameResourse.FirmwareUpdateList, dicFirmwareName); - ProgressFormBar.Current.Close(); - - return 1; - } - - /// <summary> - /// 鑾峰彇闇�瑕佷笅杞界殑鍥轰欢鏁版嵁 - /// </summary> - /// <param name="listDevice">璁惧鍒楄〃</param> - /// <param name="listGateway">缃戝叧鍒楄〃</param> - /// <returns></returns> - private static List<TemplateDeviceVersion> GetNeedToDownLoadVersionData(List<OTADevice> listDevice, List<ZbGateway> listGateway) - { - //瀛樺偍璺緞 - string firmwareDir = DirNameResourse.FirmwareUpdateDirectory; - HdlFileLogic.Current.CreateDirectory(firmwareDir); - - var listVersion = new List<TemplateDeviceVersion>(); - var listCheck = new HashSet<string>(); - foreach (var device in listDevice) - { - //璁惧鐨勫崌绾у浐浠跺悕瀛� - var fileFullName = GetDeviceFirmwareFile(device); - if (System.IO.File.Exists(fileFullName) == false && listCheck.Contains(fileFullName) == false) - { - listCheck.Add(fileFullName); - //璁惧 - listVersion.Add(new TemplateDeviceVersion - { - FileDiv = "Device_", - levelType = FirmwareLevelType.A璁惧, - HwVersion = device.HwVersion.ToString(), - ImageType = device.ImgTypeId.ToString(), - FirmwareVersion = device.ImgVersion - }); - } - } - foreach (var gateway in listGateway) - { - //Linux鐨勫崌绾у浐浠跺悕瀛� - var fileFullName = GetGatewayLinuxFirmwareFile(gateway); - if (System.IO.File.Exists(fileFullName) == false && listCheck.Contains(fileFullName) == false) - { - listCheck.Add(fileFullName); - //Linux - listVersion.Add(new TemplateDeviceVersion - { - FileDiv = "Linux_", - levelType = FirmwareLevelType.Linux, - HwVersion = gateway.LinuxHardVersion.ToString(), - ImageType = gateway.LinuxImageType.ToString(), - FirmwareVersion = gateway.LinuxFirmwareVersion - }); - } - //鍗忚皟鍣ㄧ殑鍗囩骇鍥轰欢鍚嶅瓧 - fileFullName = GetGatewayCoordinatorFirmwareFile(gateway); - if (System.IO.File.Exists(fileFullName) == false && listCheck.Contains(fileFullName) == false) - { - listCheck.Add(fileFullName); - //鍗忚皟鍣� - listVersion.Add(new TemplateDeviceVersion - { - FileDiv = "Coordinator_", - levelType = FirmwareLevelType.A鍗忚皟鍣�, - HwVersion = gateway.CoordinatorHardVersion.ToString(), - ImageType = gateway.CoordinatorImageId.ToString(), - FirmwareVersion = gateway.CoordinatorFirmwareVersion - }); - } - //杩欎釜缃戝叧闇�瑕佹湁铏氭嫙椹卞姩杩欎釜涓滆タ鎵嶈 - if (gateway.LinuxImageType != 6) - { - //铏氭嫙椹卞姩鍙� - foreach (var data in gateway.DriveCodeList) - { - //铏氭嫙椹卞姩鍙风殑鍗囩骇鍥轰欢鍚嶅瓧 - fileFullName = GetGatewayDriveCodeFirmwareFile(data); - if (System.IO.File.Exists(fileFullName) == false && listCheck.Contains(fileFullName) == false) - { - listCheck.Add(fileFullName); - //铏氭嫙椹卞姩鍙� - listVersion.Add(new TemplateDeviceVersion - { - FileDiv = "DriveCode_", - levelType = FirmwareLevelType.A铏氭嫙椹卞姩, - HwVersion = data.DriveHwVersion.ToString(), - ImageType = data.DriveImageType.ToString(), - FirmwareVersion = data.DriveFwVersion - }); - } - } - } - } - return listVersion; - } - - /// <summary> - /// 妯℃澘璁惧鐨勭増鏈俊鎭� - /// </summary> - private class TemplateDeviceVersion - { - /// <summary> - /// 鏂囦欢鍖哄垎 - /// </summary> - public string FileDiv = string.Empty; - /// <summary> - /// 鍥轰欢闃剁骇鍖哄垎 - /// </summary> - public FirmwareLevelType levelType; - /// <summary> - /// 纭欢鐗堟湰 - /// </summary> - public string HwVersion = string.Empty; - /// <summary> - /// 闀滃儚ID - /// </summary> - public string ImageType = string.Empty; - /// <summary> - /// 鍥轰欢鐗堟湰 - /// </summary> - public int FirmwareVersion = 0; - } - - #endregion - - #region 鈻� 涓�鑸柟娉昣__________________________ - - /// <summary> - /// 鍥轰欢鐨勪俊鎭鐞� - /// </summary> - /// <param name="Info"></param> - /// <param name="remark"></param> - private static void DoAdjustFirmwareInformation(FirmwareVersionInfo Info, string remark) - { - if (string.IsNullOrEmpty(remark) == true) - { - return; - } - //鏇存柊鍐呭 - string[] Arry = remark.Split(new string[] { "\r\n", "\r", "\n" }, StringSplitOptions.None); - Info.UpdateContent.AddRange(Arry); - } - - #endregion - } -} + public static Dictionary<string, FirmwareImgTypeInfo> GetImageVersionListInfo(FirmwareLevelType levelType, string HardwareVersion) + { + if (FirmwareUpdateResourse.dicFirmwareInfo == null || FirmwareUpdateResourse.dicFirmwareInfo.ContainsKey(levelType) == false) + { + return new Dictionary<string, FirmwareImgTypeInfo>(); + } + //纭欢鐗堟湰鍙风骇鍒� + var dicHard = FirmwareUpdateResourse.dicFirmwareInfo[levelType]; + + //纭欢鐗堟湰 + if (dicHard.ContainsKey(HardwareVersion) == false) + { + return new Dictionary<string, FirmwareImgTypeInfo>(); + } + //闀滃儚绫诲瀷 + return dicHard[HardwareVersion].dicImgType; + } + + #endregion + + #region 鈻� 鑾峰彇鎸囧畾鍥轰欢鐗堟湰淇℃伅_______________ + + /// <summary> + /// 鑾峰彇鎸囧畾鍥轰欢鐨勭増鏈俊鎭�(濡傛灉杩斿洖Null,鍒欒〃绀烘病鏈夎繖涓浐浠�) + /// </summary> + /// <param name="levelType">鍥轰欢闃剁骇鍒嗙被</param> + /// <param name="HardwareVersion">纭欢鐗堟湰</param> + /// <param name="imgType">闀滃儚绫诲瀷</param> + /// <param name="nowVersion">鐜板湪鐨勭増鏈�</param> + /// <returns></returns> + public static FirmwareVersionInfo GetFirmwareVersionInfo(FirmwareLevelType levelType, string HardwareVersion, string imgType, int nowVersion) + { + //闀滃儚绫诲瀷 + var listdata = GetFirmwareVersionListInfo(levelType, HardwareVersion, imgType); + foreach (var verInfo in listdata) + { + if (verInfo.Name.EndsWith(".bin") == true) + { + //瀹冧笉鏄崌绾у浐浠�, .bin鏄壒娈婄殑 + continue; + } + if (verInfo.FirmwareVersion == nowVersion) + { + return verInfo; + } + } + return null; ; + } + + #endregion + + #region 鈻� 鍥轰欢瀛樺湪妫�娴媉______________________ + + /// <summary> + /// 鍥轰欢缂撳瓨瀛樺湪妫�娴� + /// </summary> + /// <param name="levelType">鍥轰欢闃剁骇鍒嗙被</param> + /// <param name="HardwareVersion">纭欢鐗堟湰</param> + /// <param name="imgType">闀滃儚绫诲瀷</param> + /// <returns></returns> + private static bool IsEsixtFirmwareVersionInfo(FirmwareLevelType levelType, string HardwareVersion, string imgType) + { + //绗竴澶х被 + if (FirmwareUpdateResourse.dicFirmwareInfo == null || FirmwareUpdateResourse.dicFirmwareInfo.ContainsKey(levelType) == false) + { + return false; + } + //纭欢 + if (FirmwareUpdateResourse.dicFirmwareInfo[levelType].ContainsKey(HardwareVersion) == false) + { + return false; + } + //闀滃儚 + if (FirmwareUpdateResourse.dicFirmwareInfo[levelType][HardwareVersion].dicImgType.ContainsKey(imgType) == false) + { + return false; + } + return true; + } + + /// <summary> + /// 妫�娴嬭Ota璁惧鐨勫崌绾у浐浠舵槸鍚﹀瓨鍦� + /// </summary> + /// <param name="device">璁惧瀵硅薄</param> + /// <returns></returns> + public static bool IsEsixtDeviceFirmwareFile(OTADevice device) + { + var fileFullName = GetDeviceFirmwareFile(device); + return System.IO.File.Exists(fileFullName); + } + + /// <summary> + /// 鑾峰彇ota鎸囧畾鐨勫崌绾у浐浠跺悕瀛�(鍏ㄨ矾寰�) + /// </summary> + /// <param name="device">璁惧瀵硅薄</param> + /// <returns></returns> + public static string GetDeviceFirmwareFile(OTADevice device) + { + //纭欢鐗堟湰_闀滃儚ID_鍥轰欢鐗堟湰 + string fileName = device.HwVersion + "_" + device.ImgTypeId + "_" + device.ImgVersion; + return System.IO.Path.Combine(DirNameResourse.FirmwareUpdateDirectory, "Device_" + fileName + ".ota"); + } + + /// <summary> + /// 鑾峰彇缃戝叧Linux鐨勫崌绾у浐浠跺悕瀛�(鍏ㄨ矾寰�) + /// </summary> + /// <param name="zbGateway">缃戝叧瀵硅薄</param> + /// <returns></returns> + public static string GetGatewayLinuxFirmwareFile(ZbGateway zbGateway) + { + string fileName = zbGateway.LinuxHardVersion + "_" + zbGateway.LinuxImageType + "_" + zbGateway.LinuxFirmwareVersion; + return System.IO.Path.Combine(DirNameResourse.FirmwareUpdateDirectory, "Linux_" + fileName + ".ota"); + } + + /// <summary> + /// 鑾峰彇缃戝叧鍗忚皟鍣ㄧ殑鍗囩骇鍥轰欢鍚嶅瓧(鍏ㄨ矾寰�) + /// </summary> + /// <param name="zbGateway">缃戝叧瀵硅薄</param> + /// <returns></returns> + public static string GetGatewayCoordinatorFirmwareFile(ZbGateway zbGateway) + { + string fileName = zbGateway.CoordinatorHardVersion + "_" + zbGateway.CoordinatorImageId + "_" + zbGateway.CoordinatorFirmwareVersion; + return System.IO.Path.Combine(DirNameResourse.FirmwareUpdateDirectory, "Coordinator_" + fileName + ".ota"); + } + + /// <summary> + /// 鑾峰彇缃戝叧铏氭嫙椹卞姩鐨勫崌绾у浐浠跺悕瀛�(鍏ㄨ矾寰�) + /// </summary> + /// <param name="codeObj">铏氭嫙椹卞姩鏁版嵁</param> + /// <returns></returns> + public static string GetGatewayDriveCodeFirmwareFile(ZbGatewayData.DriveCodeObj codeObj) + { + string fileName = codeObj.DriveHwVersion + "_" + codeObj.DriveImageType + "_" + codeObj.DriveFwVersion; + return System.IO.Path.Combine(DirNameResourse.FirmwareUpdateDirectory, "DriveCode_" + fileName + ".ota"); + } + + #endregion + + #region 鈻� 涓嬭浇妯℃澘鍥轰欢_______________________ + + /// <summary> + /// 涓嬭浇妯℃澘涓綉鍏冲拰璁惧鐨勫浐浠� + /// </summary> + /// <param name="fullFileName"></param> + /// <param name="i_Msg"></param> + public static int DownLoadTemplateDeviceFirmware(string fullFileName, string i_Msg) + { + //浠庢ā鏉垮綋涓幏鍙栬澶囧拰缃戝叧瀵硅薄 + var listTempDevice = new List<OTADevice>(); + var listTempGateway = new List<ZbGateway>(); + TemplateData.TemplateCommonLogic.Current.GetDeviceObjectFromTemplate(fullFileName, ref listTempDevice, ref listTempGateway); + + //鑾峰彇闇�瑕佷笅杞界殑鍥轰欢鏁版嵁 + var listVersion = GetNeedToDownLoadVersionData(listTempDevice, listTempGateway); + //鑾峰彇闇�瑕佷笅杞界殑绌鸿皟妯″潡 + var listAcOta = new List<OTADevice>(); + var listAcUpdate = GetNeedDownLoadAirConditionerModule(listTempDevice, ref listAcOta); + + if (listVersion.Count == 0 && listAcUpdate.Count == 0) + { + return 0; + } + //鎵撳紑杩涘害鏉� + ProgressFormBar.Current.Start(); + ProgressFormBar.Current.SetMsg(i_Msg); + ProgressFormBar.Current.SetValue(0, 1); + + System.Threading.Thread.Sleep(1000); + + var dicFirmwareName = new Dictionary<string, string>(); + var fileData = HdlFileLogic.Current.ReadFileTextContent(DirNameResourse.FirmwareUpdateList); + if (fileData != null) + { + //鏈湴瀛樻斁鐨勫浐浠跺師鏉ョ殑鍚嶅瓧(鍥犱负璁惧鍗囩骇鏃�,瀹冮渶瑕佽瘑鍒枃浠跺悕瀛楅噷闈㈠寘鍚殑鐗规畩瀛楃) + //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++; + //鑾峰彇鍗囩骇鍥轰欢淇℃伅 + var result = AddFirmwareVersionInfo(versionData.levelType, versionData.HwVersion, versionData.ImageType); + if (result == -1) + { + ProgressFormBar.Current.Close(); + //淇濆瓨鍒楄〃鍚嶅瓧 + HdlFileLogic.Current.SaveFileContent(DirNameResourse.FirmwareUpdateList, dicFirmwareName); + return -1; + } + //鑾峰彇褰撳墠杩欎釜鐗堟湰鐨勫浐浠朵俊鎭� + var versionFirmware = GetFirmwareVersionInfo(versionData.levelType, versionData.HwVersion, versionData.ImageType, versionData.FirmwareVersion); + if (versionFirmware == null) + { + //浜戠娌℃湁杩欎釜鐗堟湰 杩涘害鍊� + ProgressFormBar.Current.SetValue(nowCount, macCount); + continue; + } + //鍘讳笅杞借繖涓浐浠� + var pra = new { RequestVersion = Common.CommonPage.RequestVersion, DistributedMark = versionFirmware.DistributedMark }; + 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.SaveByteToFile(saveFile, byteData); + dicFirmwareName[saveFile] = versionFirmware.Name; + + //杩涘害鍊� + 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(); + + return 1; + } + + /// <summary> + /// 鑾峰彇闇�瑕佷笅杞界殑鍥轰欢鏁版嵁 + /// </summary> + /// <param name="listDevice">璁惧鍒楄〃</param> + /// <param name="listGateway">缃戝叧鍒楄〃</param> + /// <returns></returns> + private static List<TemplateDeviceVersion> GetNeedToDownLoadVersionData(List<OTADevice> listDevice, List<ZbGateway> listGateway) + { + //瀛樺偍璺緞 + string firmwareDir = DirNameResourse.FirmwareUpdateDirectory; + HdlFileLogic.Current.CreateDirectory(firmwareDir); + + var listVersion = new List<TemplateDeviceVersion>(); + var listCheck = new HashSet<string>(); + foreach (var device in listDevice) + { + //璁惧鐨勫崌绾у浐浠跺悕瀛� + var fileFullName = GetDeviceFirmwareFile(device); + if (System.IO.File.Exists(fileFullName) == false && listCheck.Contains(fileFullName) == false) + { + listCheck.Add(fileFullName); + //璁惧 + listVersion.Add(new TemplateDeviceVersion + { + FileDiv = "Device_", + levelType = FirmwareLevelType.A璁惧, + HwVersion = device.HwVersion.ToString(), + ImageType = device.ImgTypeId.ToString(), + FirmwareVersion = device.ImgVersion + }); + } + } + foreach (var gateway in listGateway) + { + //Linux鐨勫崌绾у浐浠跺悕瀛� + var fileFullName = GetGatewayLinuxFirmwareFile(gateway); + if (System.IO.File.Exists(fileFullName) == false && listCheck.Contains(fileFullName) == false) + { + listCheck.Add(fileFullName); + //Linux + listVersion.Add(new TemplateDeviceVersion + { + FileDiv = "Linux_", + levelType = FirmwareLevelType.Linux, + HwVersion = gateway.LinuxHardVersion.ToString(), + ImageType = gateway.LinuxImageType.ToString(), + FirmwareVersion = gateway.LinuxFirmwareVersion + }); + } + //鍗忚皟鍣ㄧ殑鍗囩骇鍥轰欢鍚嶅瓧 + fileFullName = GetGatewayCoordinatorFirmwareFile(gateway); + if (System.IO.File.Exists(fileFullName) == false && listCheck.Contains(fileFullName) == false) + { + listCheck.Add(fileFullName); + //鍗忚皟鍣� + listVersion.Add(new TemplateDeviceVersion + { + FileDiv = "Coordinator_", + levelType = FirmwareLevelType.A鍗忚皟鍣�, + HwVersion = gateway.CoordinatorHardVersion.ToString(), + ImageType = gateway.CoordinatorImageId.ToString(), + FirmwareVersion = gateway.CoordinatorFirmwareVersion + }); + } + //杩欎釜缃戝叧闇�瑕佹湁铏氭嫙椹卞姩杩欎釜涓滆タ鎵嶈 + if (HdlGatewayLogic.Current.CheckGatewayHadDriveCode(gateway) == true) + { + //铏氭嫙椹卞姩鍙� + foreach (var data in gateway.DriveCodeList) + { + //铏氭嫙椹卞姩鍙风殑鍗囩骇鍥轰欢鍚嶅瓧 + fileFullName = GetGatewayDriveCodeFirmwareFile(data); + if (System.IO.File.Exists(fileFullName) == false && listCheck.Contains(fileFullName) == false) + { + listCheck.Add(fileFullName); + //铏氭嫙椹卞姩鍙� + listVersion.Add(new TemplateDeviceVersion + { + FileDiv = "DriveCode_", + levelType = FirmwareLevelType.A铏氭嫙椹卞姩, + HwVersion = data.DriveHwVersion.ToString(), + ImageType = data.DriveImageType.ToString(), + FirmwareVersion = data.DriveFwVersion + }); + } + } + } + } + return listVersion; + } + + /// <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 + { + /// <summary> + /// 鏂囦欢鍖哄垎 + /// </summary> + public string FileDiv = string.Empty; + /// <summary> + /// 鍥轰欢闃剁骇鍖哄垎 + /// </summary> + public FirmwareLevelType levelType; + /// <summary> + /// 纭欢鐗堟湰 + /// </summary> + public string HwVersion = string.Empty; + /// <summary> + /// 闀滃儚ID + /// </summary> + public string ImageType = string.Empty; + /// <summary> + /// 鍥轰欢鐗堟湰 + /// </summary> + public int FirmwareVersion = 0; + } + + #endregion + + #region 鈻� 璇诲彇App鏈�浣庣増鏈琠___________________ + + /// <summary> + /// 璇诲彇App鏈�浣庣増鏈� + /// </summary> + public static void ReadAppLestVersion() + { + if (FirmwareUpdateResourse.AppNeedUpdateUrl != null) + { + //宸茬粡璇诲彇杩囦簡,鍒欎笉鍐嶈鍙� + return; + } + var pra = new Dictionary<string, string>(); + pra["version"] = Common.CommonPage.CodeIDString; + pra["appName"] = "EvoyoHome"; + var bodyData = GetSignRequestJson(Newtonsoft.Json.JsonConvert.SerializeObject(pra)); + //var url = "https://china-gateway.hdlcontrol.com/smart-footstone/app/appVersion/check"; + var url = "https://test-gz.hdlcontrol.com/smart-footstone/app/appVersion/check"; + var byteData = Common.CommonPage.Instance.DoRequestZigbeeHttpsInterface(url, Encoding.UTF8.GetBytes(bodyData), null); + if (byteData == null) + { + return; + } + try + { + var jobject = Newtonsoft.Json.Linq.JObject.Parse(Encoding.UTF8.GetString(byteData)); + if (jobject["code"].ToString() != "0") + { + return; + } + var strData = jobject["data"].ToString(); + FirmwareUpdateResourse.AppNeedUpdateUrl = string.Empty; + if (string.IsNullOrEmpty(strData) == true) { return; } + + var jobData = Newtonsoft.Json.Linq.JObject.Parse(strData); + //濡傛灉鏄己鍒跺崌绾х殑璇� + if (jobData["isEnforce"].ToString().ToLower() == "true") + { +#if iOS + FirmwareUpdateResourse.AppNeedUpdateUrl = jobData["iosUrl"].ToString(); +#endif +#if Android + FirmwareUpdateResourse.AppNeedUpdateUrl = jobData["androidUrl"].ToString(); +#endif + } + } + catch { } + } + + #endregion + + #region 鈻� 璇诲彇缃戝叧鏈�浣庣増鏈琠__________________ + + /// <summary> + /// 璇诲彇缃戝叧鏈�浣庣増鏈� + /// </summary> + public static void ReadGatewayLestVersion() + { + //姣忔鍒囨崲浣忓畢,閮戒細鍘昏鍙栦竴娆� + FirmwareUpdateResourse.ListGatewayNeedUpdate = new List<string>(); + + var listGateway = HdlGatewayLogic.Current.GetAllLocalGateway(); + foreach (var gw in listGateway) + { + var pra = new Dictionary<string, string>(); + pra["hardwareId"] = gw.LinuxHardVersion.ToString(); + pra["imagesId"] = gw.LinuxImageType.ToString(); + pra["version"] = gw.LinuxFirmwareVersion.ToString(); + var bodyData = GetSignRequestJson(Newtonsoft.Json.JsonConvert.SerializeObject(pra)); + //var url = "https://china-gateway.hdlcontrol.com/smart-footstone/app/appVersion/check"; + var url = "https://test-gz.hdlcontrol.com/smart-footstone/app/gateway-hardware/check"; + var byteData = Common.CommonPage.Instance.DoRequestZigbeeHttpsInterface(url, Encoding.UTF8.GetBytes(bodyData), null); + if (byteData == null) + { + return; + } + try + { + var jobject = Newtonsoft.Json.Linq.JObject.Parse(Encoding.UTF8.GetString(byteData)); + if (jobject["code"].ToString() != "0") + { + continue; + } + var strData = jobject["data"].ToString(); + if (string.IsNullOrEmpty(strData) == true) { return; } + + var jobData = Newtonsoft.Json.Linq.JObject.Parse(strData); + //濡傛灉鏄己鍒跺崌绾х殑璇� + if (jobData["isEnforce"].ToString().ToLower() == "true") + { + FirmwareUpdateResourse.ListGatewayNeedUpdate.Add(gw.GwId); + } + } + catch { } + } + } + + #endregion + + #region 鈻� 妫�娴嬭兘澶熸樉绀哄叕鍛奯__________________ + + /// <summary> + /// 妫�娴嬭兘澶熸樉绀哄叕鍛� + /// </summary> + public static bool CheckCanShowNotice() + { + //涓嶇鎴愪笉鎴愬姛,璇昏繃涓�娆′箣鍚庡氨涓嶅啀璇诲彇 + if (FirmwareUpdateResourse.ReadedNotice == true) + { + return false; + } + FirmwareUpdateResourse.ReadedNotice = true; +#if Android + var url = "https://developer.hdlcontrol.com/AnnouncementAndriod.html"; +#endif +#if iOS + var url = "https://developer.hdlcontrol.com/AnnouncementIos.html"; +#endif + + var byteData = Common.CommonPage.Instance.DoRequestZigbeeHttpsInterface(url, null, null, "GET"); + if (byteData == null) + { + //濡傛灉鏄�404,鍒欒繑鍥瀎alse + return false; + } + //鍔犺浇绯荤粺鍏憡 + var fileData = HdlFileLogic.Current.ReadFileTextContent(DirNameResourse.AppNoticeFile); + if (fileData == null) { fileData = string.Empty; } + + //鍔犱笂褰撳ぉ鏃ユ湡 + var strNotice = DateTime.Now.ToString("yyyyMMdd") + "\r\n" + Encoding.UTF8.GetString(byteData); + if (fileData == strNotice) + { + //鍏憡鍐呭涓�鑷�,鍒欎笉鎻愮ず + return false; + } + //濡傛灉鍏憡涓嶄竴鑷�,鎴栬�呭凡缁忚繃浜嗕竴澶�,鍒欐樉绀� + HdlFileLogic.Current.SaveTextToFile(DirNameResourse.AppNoticeFile, strNotice); + + return true; + } + + #endregion + + #region 鈻� 鏂颁簯绔闂瘑鍖檁____________________ + + /// <summary> + /// appKey(璁块棶浜戠鍥哄畾鐨勪笢瑗�) + /// </summary> + private const string APP_KEY = "HDL-HOME-APP-TEST"; + /// <summary> + /// 鎴戜篃涓嶇煡閬撹繖鏄粈涔堥涓滆タ + /// </summary> + private const string SECRET_KEY = "WeJ8TY88vbakCcnvH8G1tDUqzLWY8yss"; + /// <summary> + /// 鑾峰彇褰撳墠鏃堕棿鎴冲��(璁块棶浜戠浣跨敤) + /// </summary> + /// <returns></returns> + private static string GetTimestamp() + { + System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1)); // 褰撳湴鏃跺尯 + return ((long)(DateTime.Now - startTime).TotalSeconds).ToString(); // 鐩稿樊绉掓暟 + } + + /// <summary> + /// MD5鍔犲瘑 + /// </summary> + /// <param name="signstr"></param> + /// <returns></returns> + private static string SignMD5Encrypt(string s) + { + byte[] sign = System.Security.Cryptography.MD5.Create().ComputeHash(Encoding.UTF8.GetBytes(s)); + string signstr = string.Empty; + foreach (byte item in sign) + { + signstr += item.ToString("X2"); + } + return signstr.ToLower(); + } + + /// <summary> + /// 鍩虹鏈嶅姟鐨勬帴鍙i兘瑕佹牎楠宻ign,璁$畻sign绛惧悕 + /// </summary> + /// <param name="i_BodyData">body鐨勬暟鎹�</param> + /// <returns></returns> + private static string GetSignRequestJson(string i_BodyData) + { + try + { + //1. 灏唌odel瀹炰綋杞负Dictionary<string, object> + var paramDictionary = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string, object>>(i_BodyData); + //2. 璁$畻sign + if (paramDictionary != null) + { + paramDictionary.Add("appKey", APP_KEY); + paramDictionary.Add("timestamp", GetTimestamp()); + //2.1 瀛楀吀鍗囧簭 + paramDictionary = paramDictionary.OrderBy(o => o.Key).ToDictionary(o => o.Key, p => p.Value); + //2.2 鎷兼帴鎸塙RL閿�煎 + string str = string.Empty; + foreach (KeyValuePair<string, object> item in paramDictionary) + { + if (item.Value == null) + { + //涓嶆牎楠� + continue; + } + string myValue = item.Value.ToString(); + if (myValue == string.Empty) + { + //绌哄瓧绗︿篃涓嶆牎楠� + continue; + } + if (item.Value is bool) + { + //浜戠閭e府娌欓洉璇碽ool绫诲瀷蹇呴』鐢ㄥ皬鍐� + myValue = myValue.ToLower(); + } + str += item.Key + "=" + myValue + "&"; + } + //2.3 鎷兼帴SECRET_KEY + str = str.Substring(0, str.Length - 1) + SECRET_KEY; + //2.4 MD5杞崲+杞皬鍐� + var signstr = SignMD5Encrypt(str); + paramDictionary.Add("sign", signstr); + return Newtonsoft.Json.JsonConvert.SerializeObject(paramDictionary); + } + else + { + return ""; + } + } + catch + { + return ""; + } + } + + #endregion + + #region 鈻� 涓�鑸柟娉昣__________________________ + + /// <summary> + /// 鍥轰欢鐨勪俊鎭鐞� + /// </summary> + /// <param name="Info"></param> + /// <param name="remark"></param> + private static void DoAdjustFirmwareInformation(FirmwareVersionInfo Info, string remark) + { + if (string.IsNullOrEmpty(remark) == true) + { + return; + } + //鏇存柊鍐呭 + string[] Arry = remark.Split(new string[] { "\r\n", "\r", "\n" }, StringSplitOptions.None); + Info.UpdateContent.AddRange(Arry); + } + +#endregion + } +} -- Gitblit v1.8.0