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 | 1304 +++++++++++++++++++++++++++++++++++++++++++----------------
1 files changed, 949 insertions(+), 355 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 75f38c3..30dd911
--- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlFirmwareUpdateLogic.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlFirmwareUpdateLogic.cs
@@ -1,363 +1,957 @@
-锘縰sing System;
-using System.Collections.Generic;
-using System.Text;
-using System.Threading.Tasks;
-
-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>
- /// 娣诲姞鍗囩骇鍥轰欢淇℃伅
- /// </summary>
- /// <param name="levelType">鍥轰欢闃剁骇鍒嗙被</param>
- /// <param name="HardwareVersion">纭欢鐗堟湰</param>
- /// <param name="imgType">闀滃儚绫诲瀷</param>
- /// <returns></returns>
- public async static Task<bool> AddFirmwareVersionInfo(FirmwareLevelType levelType, string HardwareVersion, string imgType)
- {
- //妫�娴嬫湰鍦版槸鍚﹀凡缁忔湁杩欎釜缂撳瓨浜�
- if (IsEsixtFirmwareVersionInfo(levelType, HardwareVersion, imgType) == true)
- {
- return true;
- }
- 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 = await GetFirmwareVersionAndSetToMemmory(FirmwareLevelType.Linux, Pra);
- return result;
- }
- else if (levelType == FirmwareLevelType.Coordinator)
- {
- //鍗忚皟鍣ㄦā鍧�
- Pra.FirmwareManaFirstType = 1;
- Pra.FirmwareManaSecondType = 1;
- Pra.HardwareVersion = HardwareVersion;
- Pra.DeviceType = imgType;
- var result = await GetFirmwareVersionAndSetToMemmory(FirmwareLevelType.Coordinator, Pra);
- return result;
- }
- else if (levelType == FirmwareLevelType.VirtualDevice)
- {
- //铏氭嫙璁惧妯″潡
- Pra.FirmwareManaFirstType = 1;
- Pra.FirmwareManaSecondType = 2;
- Pra.HardwareVersion = HardwareVersion;
- Pra.DeviceType = imgType;
- var result = await GetFirmwareVersionAndSetToMemmory(FirmwareLevelType.VirtualDevice, Pra);
- return result;
- }
- else
- {
- //涓�鑸澶�
- Pra.FirmwareManaFirstType = 2;
- Pra.FirmwareManaSecondType = null;
- Pra.HardwareVersion = HardwareVersion;
- Pra.DeviceType = imgType;
- var result = await GetFirmwareVersionAndSetToMemmory(FirmwareLevelType.ZigbeeDevice, Pra);
- return result;
- }
- }
-
- /// <summary>
- /// 鑾峰彇浜戠鐨勫浐浠讹紝鐒跺悗瀛樺叆缂撳瓨涓�
- /// </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 async static Task<bool> GetFirmwareVersionAndSetToMemmory(FirmwareLevelType levelType, GetFirmwareVersionPra pra)
- {
- var listNotShow = new List<string>() { "NotSetAgain" };
- string resultValue = await UserCenterLogic.GetResponseDataByRequestHttps("FirmwareMana/DetectionPlatformUploadFirmware", false, pra, listNotShow);
- if (string.IsNullOrEmpty(resultValue) == true)
- {
- return false;
- }
- var verResult = Newtonsoft.Json.JsonConvert.DeserializeObject<FirmwareVersionResult>(resultValue);
- if (verResult.PageData.Count == 0)
- {
- return true;
- }
-
- //纭欢鐗堟湰
- Dictionary<string, FirmwareHardInfo> dicHardData = new Dictionary<string, FirmwareHardInfo>();
- FirmwareUpdateResourse.dicFirmwareInfo[levelType] = dicHardData;
-
- foreach (var data in verResult.PageData)
- {
- //纭欢鍒嗙被
- 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 true;
- }
-
+ 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;
- }
- 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>
- /// 鍥轰欢缂撳瓨瀛樺湪妫�娴�
- /// </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;
- }
-
- #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);
- }
-
- /// <summary>
- /// 灏嗗崄鍏繘鍒惰浆涓哄崄杩涘埗
- /// </summary>
- /// <param name="text"></param>
- /// <returns></returns>
- private static int ConvertHexToInt(string text)
- {
- if (text.StartsWith("0x"))
- {
- text = text.Substring(2);
- }
- try
- {
- return Convert.ToInt32(text, 16);
- }
- catch { return -1; }
- }
- #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