lss
2020-06-12 9c16d3614d9b88c637f967518a329f239fcd3aaf
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlFirmwareUpdateLogic.cs
@@ -18,38 +18,33 @@
        public static void DoUpdateNextFirmware()
        {
            //下一个要执行更新的网关
            HdlGatewayUpdateLogic gwControl = null;
            foreach (var contr in FirmwareUpdateResourse.dicGatewayUpdateList.Values)
            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)
                {
                    //下一个升级的就是它了
                    gwControl = contr;
                    if (contr.ClassDiv == 1 && gwControl == null)
                    {
                        //下一个升级的就是它了
                        gwControl = contr;
                    }
                    else if (contr.ClassDiv == 2 && deviceControl == null)
                    {
                        //下一个升级的就是它了
                        deviceControl = contr;
                    }
                }
            }
            HdlDeviceUpdateLogic deviceControl = null;
            foreach (var contr in FirmwareUpdateResourse.dicDeviceUpdateList.Values)
            {
                //如果别的还在升级中,则不再处理
                if (contr.IsFinishUpdate == false)
                {
                    return;
                }
                //如果这个设备是在等待列表的话
                if (contr.UpdateStatu == UpdateStatuMode.Wait && deviceControl == null)
                {
                    //下一个升级的就是它了
                    deviceControl = contr;
                }
            }
            HdlThreadLogic.Current.RunMain(() =>
            HdlThreadLogic.Current.RunThread(() =>
            {
                if (gwControl != null)
                {
@@ -138,8 +133,9 @@
        /// <returns></returns>
        private async static Task<bool> GetFirmwareVersionAndSetToMemmory(FirmwareLevelType levelType, GetFirmwareVersionPra pra)
        {
            string resultValue = await UserCenterLogic.GetResponseDataByRequestHttps("FirmwareMana/DetectionPlatformUploadFirmware", false, pra);
            if (resultValue == null)
            var listNotShow = new List<string>() { "NotSetAgain" };
            string resultValue = await UserCenterLogic.GetResponseDataByRequestHttps("FirmwareMana/DetectionPlatformUploadFirmware", false, pra, listNotShow);
            if (string.IsNullOrEmpty(resultValue) == true)
            {
                return false;
            }
@@ -155,6 +151,13 @@
            foreach (var data in verResult.PageData)
            {
                //固件版本显示:
                //10101 3个byte 显示为:ver.1.01.01
                if (data.FirmwareVersion.Length != 6 && data.FirmwareVersion.Length != 5)
                {
                    //非正规的固件版本,不再考虑范围内
                    continue;
                }
                //硬件分类
                FirmwareHardInfo hardInfo = null;
                string hardCode = data.HardwareVersion;
@@ -188,6 +191,7 @@
                    info.Name = data.Name;
                    info.HardwareVersion = hardCode;
                    info.ImagType = imgType;
                    info.CreatedOnUtc = data.CreatedOnUtc;
                    imgTypeInfo.listVeison.Add(info);
                    //固件的信息处理
                    DoAdjustFirmwareInformation(info, data.Remarks);
@@ -217,6 +221,19 @@
            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)
                {
                    //中间那个byte为奇数时,代表是测试版本,在显示最新版本时,不需要显示,但是在历史版本那里可以显示
                    //中间那个byte为偶数时,代表是正式版本
                    continue;
                }
                if (verInfo.FirmwareVersion > nowVersion)
                {
                    nowVersion = verInfo.FirmwareVersion;
@@ -339,23 +356,6 @@
            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
    }
}