From 9ef48d7b2da7c408b53f73be0f6eef3cbac1c84a Mon Sep 17 00:00:00 2001
From: 黄学彪 <hxb@hdlchina.com.cn>
Date: 星期四, 19 十一月 2020 10:23:45 +0800
Subject: [PATCH] Evoyo.Home1.1.0120111601_Release
---
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