using System;
|
using System.Collections.Generic;
|
using System.Text;
|
using ZigBee.Device;
|
|
namespace Shared.Phone.UserCenter
|
{
|
/// <summary>
|
/// 设备升级控件
|
/// </summary>
|
public class DeviceFirmwareUpdateControl : RowLayout
|
{
|
#region ■ 变量声明___________________________
|
/// <summary>
|
/// 当前执行状态
|
/// </summary>
|
public UpdateStatuMode UpdateStatu = UpdateStatuMode.None;
|
/// <summary>
|
/// 设备新版本的固件信息
|
/// </summary>
|
public FirmwareVersionInfo deviceFirmware = null;
|
/// <summary>
|
/// 升级按钮(由外部进行赋值)
|
/// </summary>
|
public BottomClickButton btnUpdateButton = null;
|
/// <summary>
|
/// 升级是否完成
|
/// </summary>
|
public bool IsFinishUpdate = true;
|
|
/// <summary>
|
/// 前一次的最终状态
|
/// </summary>
|
private UpdateStatuMode oldUpdateStatu = UpdateStatuMode.None;
|
/// <summary>
|
/// 进度控件
|
/// </summary>
|
private FrameLayout frameBar = null;
|
/// <summary>
|
/// 百分比进度
|
/// </summary>
|
private RowBottomBlackView btnProgress = null;
|
/// <summary>
|
/// 网关
|
/// </summary>
|
private ZbGateway zbGateway = null;
|
/// <summary>
|
/// 升级的设备
|
/// </summary>
|
private List<CommonDevice> listUpdateDevice = null;
|
|
#endregion
|
|
#region ■ 初始化_____________________________
|
|
/// <summary>
|
/// 网关升级控件
|
/// </summary>
|
/// <param name="listView">列表控件</param>
|
/// <param name="i_listdevice">设备</param>
|
/// <param name="i_deviceFirmware">设备新版本的固件信息</param>
|
public DeviceFirmwareUpdateControl(VerticalScrolViewLayout listView, List<CommonDevice> i_listdevice, FirmwareVersionInfo i_deviceFirmware = null)
|
{
|
this.listUpdateDevice = i_listdevice;
|
//设备的版本
|
this.deviceFirmware = i_deviceFirmware;
|
if (this.deviceFirmware == null)
|
{
|
//拥有200端口这个东西的时候,才会处理
|
var oTADevice = Common.LocalDevice.Current.GetOTADevice(listUpdateDevice[0].DeviceAddr);
|
if (oTADevice == null || oTADevice.ImgVersion == -1)
|
{
|
return;
|
}
|
this.deviceFirmware = FirmwareUpdateLogic.GetFirmwareMostVersionInfo(FirmwareLevelType.ZigbeeDevice,
|
oTADevice.HwVersion.ToString(),
|
oTADevice.ImgTypeId.ToString(),
|
oTADevice.ImgVersion);
|
}
|
|
this.Height = ControlCommonResourse.ListViewRowHeight;
|
if (listView != null)
|
{
|
listView.AddChidren(this);
|
|
var btnTemp = new ButtonCommon();
|
Common.LocalDevice.Current.SetDeviceBeloneIconToControl(btnTemp, i_listdevice);
|
//初始化控件
|
this.InitChidrenControl(btnTemp.UnSelectedImagePath);
|
}
|
}
|
|
/// <summary>
|
/// 初始化控件
|
/// </summary>
|
/// <param name="unSelPath">图标</param>
|
public void InitChidrenControl(string unSelPath)
|
{
|
this.RemoveAll();
|
|
//进度
|
this.frameBar = new FrameLayout();
|
this.frameBar.Width = 0;
|
this.frameBar.BackgroundColor = UserCenterColor.Current.Green;
|
this.AddChidren(frameBar);
|
|
//桌布
|
var frameLayout = new StatuFrameLayout(ControlCommonResourse.ListViewRowHeight, false);
|
frameLayout.Height = ControlCommonResourse.ListViewRowHeight;
|
frameLayout.BackgroundColor = UserCenterColor.Current.Transparent;
|
this.AddChidren(frameLayout);
|
|
//图标
|
var btnIcon = new RowLeftIconView();
|
btnIcon.UnSelectedImagePath = unSelPath;
|
frameLayout.AddChidren(btnIcon, ChidrenBindMode.BindEventOnly);
|
|
//指定的设备
|
var btnDevice = new RowTopBlackView();
|
btnDevice.BackgroundColor = UserCenterColor.Current.Transparent;
|
btnDevice.Text = Common.LocalDevice.Current.GetDeviceMacName(this.listUpdateDevice[0]);
|
frameLayout.AddChidren(btnDevice, ChidrenBindMode.BindEventOnly);
|
|
//固件信息
|
this.btnProgress = new RowBottomBlackView();
|
btnProgress.BackgroundColor = UserCenterColor.Current.Transparent;
|
btnProgress.Text = Common.LocalDevice.Current.AppendVersion(deviceFirmware.FirmwareVersion);
|
frameLayout.AddChidren(btnProgress, ChidrenBindMode.BindEventOnly);
|
}
|
|
#endregion
|
|
#region ■ 开始更新___________________________
|
|
/// <summary>
|
/// 进入执行更新操作准备阶段
|
/// </summary>
|
public void StartUpdateReady()
|
{
|
if (btnUpdateButton.isCanClickUp == false)
|
{
|
return;
|
}
|
if (this.UpdateStatu == UpdateStatuMode.DeviceUpdateReady || this.UpdateStatu == UpdateStatuMode.DeviceUpdating)
|
{
|
//终止升级
|
this.StopUpdate();
|
return;
|
}
|
|
if (this.UpdateStatu == UpdateStatuMode.Wait)
|
{
|
//如果是等待模式,再次点击时,移除列表
|
string mainkeys = this.listUpdateDevice[0].DeviceAddr;
|
if (FirmwareUpdateResourse.dicDeviceUpdateList.ContainsKey(mainkeys) == true)
|
{
|
FirmwareUpdateResourse.dicDeviceUpdateList.Remove(mainkeys);
|
}
|
//升级
|
btnUpdateButton.TextID = R.MyInternationalizationString.uLevelUp;
|
btnUpdateButton.SetNotClickStatu();
|
this.UpdateStatu = UpdateStatuMode.None;
|
return;
|
}
|
//如果它有状态,则表示之前它被什么错误中断了
|
if (this.UpdateStatu != UpdateStatuMode.None)
|
{
|
//保存起来,后面有用处
|
this.oldUpdateStatu = this.UpdateStatu;
|
}
|
|
//进入等待模式
|
this.UpdateStatu = UpdateStatuMode.Wait;
|
this.btnUpdateButton.TextID = R.MyInternationalizationString.uWaitting;
|
this.btnUpdateButton.SetClickStatu();
|
string mainkeys2 = this.listUpdateDevice[0].DeviceAddr;
|
FirmwareUpdateResourse.dicDeviceUpdateList[mainkeys2] = this;
|
|
//执行下一个可更新的固件的更新操作
|
FirmwareUpdateLogic.DoUpdateNextFirmware();
|
}
|
|
/// <summary>
|
/// 开始执行更新操作
|
/// </summary>
|
public void DoStartUpdate()
|
{
|
this.btnUpdateButton.isCanClickUp = false;
|
//状态变更
|
this.IsFinishUpdate = false;
|
this.UpdateStatu = UpdateStatuMode.Action;
|
//根据状态执行操作
|
this.DoAdjustByStatuMode();
|
}
|
|
/// <summary>
|
/// 根据状态执行操作
|
/// </summary>
|
private void DoAdjustByStatuMode()
|
{
|
//首发时,从开始执行
|
if (this.oldUpdateStatu == UpdateStatuMode.None)
|
{
|
//下载设备文件
|
this.DownLoadDeviceFile();
|
}
|
//设备下载失败
|
else if (this.oldUpdateStatu == UpdateStatuMode.DeviceDownLoadFail)
|
{
|
//下载设备文件
|
this.DownLoadDeviceFile();
|
}
|
//设备升级失败
|
else if (this.oldUpdateStatu == UpdateStatuMode.DeviceUpdateFail)
|
{
|
//执行设置设备升级程序的文件
|
this.DoSetUpdateDeviceFile();
|
}
|
else
|
{
|
//重新再来
|
this.DownLoadDeviceFile();
|
}
|
}
|
|
#endregion
|
|
#region ■ 设备下载___________________________
|
|
/// <summary>
|
/// 下载设备文件
|
/// </summary>
|
private async void DownLoadDeviceFile()
|
{
|
this.UpdateStatu = UpdateStatuMode.DeviceDownLoad;
|
Application.RunOnMainThread(() =>
|
{
|
this.btnUpdateButton.TextID = R.MyInternationalizationString.uDownLoading;
|
});
|
|
//设备固件下载中
|
string msg = Language.StringByID(R.MyInternationalizationString.uDeviceFirmwareDownLoading);
|
this.SetProgressValue(0, msg);
|
|
this.zbGateway = this.listUpdateDevice[0].Gateway;
|
if (zbGateway == null)
|
{
|
//获取网关信息失败
|
this.ShowErrorMsg(Language.StringByID(R.MyInternationalizationString.uGetGatewayInfoFail));
|
|
//显示重新下载模式
|
this.ShowReDownLoadMode();
|
|
this.UpdateStatu = UpdateStatuMode.DeviceDownLoadFail;
|
|
return;
|
}
|
|
//下载设备文件的进度
|
zbGateway.ReportAction += this.DownLoadDeviceFileProgress;
|
await System.Threading.Tasks.Task.Delay(1000);
|
|
//下载设备文件
|
var result = await this.listUpdateDevice[0].DownloadFileAsync(zbGateway, this.deviceFirmware.DistributedMark, this.deviceFirmware.Name);
|
if (string.IsNullOrEmpty(result.errorMessageBase) == false)
|
{
|
//设备固件资源下载失败
|
this.ShowErrorMsg(Language.StringByID(R.MyInternationalizationString.uDeviceFirmwareDownLoadFail));
|
|
//显示重新下载模式
|
this.ShowReDownLoadMode();
|
|
zbGateway.ReportAction -= this.DownLoadDeviceFileProgress;
|
|
this.UpdateStatu = UpdateStatuMode.DeviceDownLoadFail;
|
|
return;
|
}
|
}
|
|
/// <summary>
|
/// 下载设备文件的进度
|
/// </summary>
|
/// <param name="CommadDiv"></param>
|
/// <param name="objValue"></param>
|
private void DownLoadDeviceFileProgress(string CommadDiv, object objValue)
|
{
|
if (CommadDiv != "DownloadFileProgress" || objValue == null)
|
{
|
return;
|
}
|
var tempZb = (ZbGateway)objValue;
|
if (tempZb.CurrentGateWayId != Common.LocalGateway.Current.GetGatewayId(this.zbGateway))
|
{
|
//不是自己的网关推送,则不处理
|
return;
|
}
|
var responData = tempZb.downloadFileProgressResponData;
|
|
if (responData.Status == 2)
|
{
|
//设备固件资源下载失败
|
this.ShowErrorMsg(Language.StringByID(R.MyInternationalizationString.uDeviceFirmwareDownLoadFail));
|
//显示重新下载模式
|
this.ShowReDownLoadMode();
|
|
zbGateway.ReportAction -= this.DownLoadDeviceFileProgress;
|
|
this.UpdateStatu = UpdateStatuMode.DeviceDownLoadFail;
|
return;
|
}
|
else if (responData.Status == 0)
|
{
|
zbGateway.ReportAction -= this.DownLoadDeviceFileProgress;
|
|
//显示执行更新模式
|
this.DoSetUpdateDeviceFile();
|
return;
|
}
|
|
//设置进度
|
string msg = Language.StringByID(R.MyInternationalizationString.uDeviceFirmwareDownLoading);
|
this.SetProgressValue(responData.DownloadPercent, msg);
|
}
|
|
#endregion
|
|
#region ■ 设备升级___________________________
|
|
/// <summary>
|
/// 设置设备升级程序的文件
|
/// </summary>
|
private async void DoSetUpdateDeviceFile()
|
{
|
this.UpdateStatu = UpdateStatuMode.DeviceUpdateReady;
|
Application.RunOnMainThread(() =>
|
{
|
this.btnUpdateButton.TextID = R.MyInternationalizationString.uLevelUping;
|
});
|
|
await System.Threading.Tasks.Task.Delay(1000);
|
|
//设备升级中
|
string msg = Language.StringByID(R.MyInternationalizationString.uDeviceUpdating);
|
this.SetProgressValue(0, msg);
|
|
|
//首先指定设备升级的固件
|
var result = await this.listUpdateDevice[0].UpgradeDeviceAsync(this.zbGateway, this.deviceFirmware.Name);
|
if (result.otaSetImageData != null && result.otaSetImageData.Result == 1)
|
{
|
//升级文件丢失!请重新下载!
|
this.ShowErrorMsg(Language.StringByID(R.MyInternationalizationString.uLostUpdateFileAndReDownLoad));
|
|
//显示重新下载模式
|
this.ShowReDownLoadMode();
|
|
this.UpdateStatu = UpdateStatuMode.DeviceDownLoadFail;
|
|
return;
|
}
|
else if (result.otaSetImageData != null && result.otaSetImageData.Result == 2)
|
{
|
this.zbGateway.ReportAction -= this.UpdateDeviceProgress;
|
|
//判断当前设备是不是在升级中
|
string nowMainkeys = this.listUpdateDevice[0].DeviceAddr;
|
foreach (var devi in result.otaSetImageData.DeviceList)
|
{
|
string mainkeys = devi.MacAddr;
|
if (mainkeys == nowMainkeys)
|
{
|
//它自己就在升级中 ,直接同步
|
this.SynchronizeDeviceProgress();
|
return;
|
}
|
}
|
|
//当前有节点设备正在升级中,请稍后再试
|
this.ShowErrorMsg(Language.StringByID(R.MyInternationalizationString.uHadDeviceUpdatingAndDoAgain));
|
//显示重新安装
|
this.ShowReSetupMsg();
|
|
return;
|
}
|
else if (string.IsNullOrEmpty(result.errorMessageBase) == false)
|
{
|
//设备升级失败
|
this.ShowErrorMsg(Language.StringByID(R.MyInternationalizationString.uDeviceUpdatingFail));
|
|
//显示重新安装
|
this.ShowReSetupMsg();
|
|
this.UpdateStatu = UpdateStatuMode.DeviceUpdateFail;
|
|
return;
|
}
|
//执行设备升级程序
|
this.DoUpdateDevice();
|
}
|
|
/// <summary>
|
/// 执行设备升级程序
|
/// </summary>
|
private async void DoUpdateDevice()
|
{
|
//执行升级
|
var updateData = new CommonDevice.StartUpdateData();
|
var deviceInfo = new CommonDevice.OTADeviceList();
|
deviceInfo.MacAddr = this.listUpdateDevice[0].DeviceAddr;
|
//控制面板的时候,固定200端口
|
updateData.DeviceList.Add(deviceInfo);
|
|
this.zbGateway.ReportAction += this.UpdateDeviceProgress;
|
|
//执行升级
|
var upResult = await this.listUpdateDevice[0].StartDeviceUpdateAsync(this.zbGateway, updateData);
|
|
//别的错误
|
if (upResult.startUpdateDeviceData == null || upResult.startUpdateDeviceData.Result == 1)
|
{
|
//设备升级失败
|
this.ShowErrorMsg(Language.StringByID(R.MyInternationalizationString.uDeviceUpdatingFail));
|
|
//显示重新安装
|
this.ShowReSetupMsg();
|
|
this.zbGateway.ReportAction -= this.UpdateDeviceProgress;
|
|
this.UpdateStatu = UpdateStatuMode.DeviceUpdateFail;
|
|
//终止升级
|
var myResult = await this.listUpdateDevice[0].KillUpdateAsync(this.zbGateway, 200);
|
return;
|
}
|
|
//可以取消
|
Application.RunOnMainThread(() =>
|
{
|
this.btnUpdateButton.isCanClickUp = true;
|
this.btnUpdateButton.SetNotClickStatu();
|
});
|
}
|
|
/// <summary>
|
/// 升级设备的进度
|
/// </summary>
|
/// <param name="CommadDiv"></param>
|
/// <param name="objValue"></param>
|
private void UpdateDeviceProgress(string CommadDiv, object objValue)
|
{
|
if (CommadDiv != "DeviceUpgradePercent" || objValue == null)
|
{
|
return;
|
}
|
var tempZb = (ZbGateway)objValue;
|
if (tempZb.CurrentGateWayId != Common.LocalGateway.Current.GetGatewayId(this.zbGateway))
|
{
|
//不是自己的网关推送,则不处理
|
return;
|
}
|
//设置进度
|
var responData = tempZb.oTAScheduleResponData;
|
|
//检测状态码
|
if (this.CheckStatusCode(responData) == false)
|
{
|
this.zbGateway.ReportAction -= this.UpdateDeviceProgress;
|
|
new System.Threading.Thread(async () =>
|
{
|
//终止升级
|
var myResult = await this.listUpdateDevice[0].KillUpdateAsync(this.zbGateway, 200);
|
})
|
{ IsBackground = true }.Start();
|
|
this.UpdateStatu = UpdateStatuMode.DeviceUpdateFail;
|
return;
|
}
|
|
if (responData.Status == 2)
|
{
|
this.zbGateway.ReportAction -= this.UpdateDeviceProgress;
|
|
//显示升级完成的信息
|
this.ShowFinishMsg();
|
return;
|
}
|
if (responData.Status == 0)
|
{
|
//没什么意义
|
return;
|
}
|
|
//设备升级中
|
this.UpdateStatu = UpdateStatuMode.DeviceUpdating;
|
|
//设备升级中
|
string msg = Language.StringByID(R.MyInternationalizationString.uDeviceUpdating);
|
this.SetProgressValue(responData.Percent, msg);
|
}
|
|
/// <summary>
|
/// 检测状态码
|
/// </summary>
|
/// <param name="statusData"></param>
|
/// <returns></returns>
|
private bool CheckStatusCode(ZbGatewayData.OTAScheduleResponData statusData)
|
{
|
if (statusData == null)
|
{
|
return true;
|
}
|
if (statusData.Status == 3)
|
{
|
//响应超时,升级失败
|
this.ShowErrorMsg(Language.StringByID(R.MyInternationalizationString.uResponseTimeoutsAndUpdateFail));
|
//显示重新安装
|
this.ShowReSetupMsg();
|
|
return false;
|
}
|
else if (statusData.Status == 150)
|
{
|
//无效的升级固件
|
this.ShowErrorMsg(Language.StringByID(R.MyInternationalizationString.uErrorUpdateFirmwareFile));
|
//显示重新安装
|
this.ShowReSetupMsg();
|
|
return false;
|
}
|
else if (statusData.Status == 153)
|
{
|
//升级固件不足
|
this.ShowErrorMsg(Language.StringByID(R.MyInternationalizationString.uUpdateFirmwareFileNotEnough));
|
//显示重新安装
|
this.ShowReSetupMsg();
|
return false;
|
}
|
else if (statusData.Status == 149)
|
{
|
//升级操作被终止
|
this.ShowErrorMsg(Language.StringByID(R.MyInternationalizationString.uUpdatedWasStoped));
|
//显示重新安装
|
this.ShowReSetupMsg();
|
return false;
|
}
|
|
return true;
|
}
|
|
#endregion
|
|
#region ■ 设置进度___________________________
|
|
/// <summary>
|
/// 设定进度值
|
/// </summary>
|
/// <param name="value">进度值</param>
|
/// <param name="appendText">追加信息</param>
|
private void SetProgressValue(decimal value, string appendText = "")
|
{
|
if (value > 100)
|
{
|
//有时候会瞎发什么鬼过来
|
return;
|
}
|
decimal result = value / 100;
|
|
Application.RunOnMainThread(() =>
|
{
|
//百分比数,取整数部分
|
int percent = (int)(result * 100);
|
int width = (int)(result * this.Width);
|
|
this.frameBar.Width = width;
|
if (appendText != string.Empty)
|
{
|
this.btnProgress.Text = percent + "% " + appendText;
|
}
|
else
|
{
|
this.btnProgress.Text = percent + "%";
|
}
|
});
|
}
|
|
/// <summary>
|
/// 设定进度值
|
/// </summary>
|
/// <param name="value">进度值</param>
|
private void SetProgressValue(string value)
|
{
|
Application.RunOnMainThread(() =>
|
{
|
this.btnProgress.Text = value;
|
});
|
}
|
|
/// <summary>
|
/// 设置错误信息
|
/// </summary>
|
/// <param name="value"></param>
|
private void ShowErrorMsg(string value)
|
{
|
Application.RunOnMainThread(() =>
|
{
|
this.btnProgress.Text = value;
|
});
|
}
|
|
#endregion
|
|
#region ■ 同步进度___________________________
|
|
/// <summary>
|
/// 同步进度
|
/// </summary>
|
public void SynchronizeDeviceProgress()
|
{
|
this.UpdateStatu = UpdateStatuMode.DeviceUpdating;
|
this.IsFinishUpdate = false;
|
|
this.btnUpdateButton.TextID = R.MyInternationalizationString.uLevelUping;
|
this.btnUpdateButton.isCanClickUp = true;
|
this.btnUpdateButton.SetNotClickStatu();
|
|
//设备升级中
|
string msg = Language.StringByID(R.MyInternationalizationString.uDeviceUpdating);
|
this.SetProgressValue(0, msg);
|
|
string mainKeys = this.listUpdateDevice[0].DeviceAddr;
|
FirmwareUpdateResourse.dicDeviceUpdateList[mainKeys] = this;
|
|
this.zbGateway = this.listUpdateDevice[0].Gateway;
|
//同步进度
|
this.zbGateway.ReportAction += UpdateDeviceProgress;
|
}
|
|
#endregion
|
|
#region ■ 终止升级___________________________
|
|
/// <summary>
|
/// 终止升级
|
/// </summary>
|
private void StopUpdate()
|
{
|
//确认是否要停止升级?
|
string msg = Language.StringByID(R.MyInternationalizationString.uConfirmWantToStopUpdate);
|
var contr = new ConfirmMsgControl(msg);
|
contr.Show();
|
contr.ResultEventHandler += (sender, result) =>
|
{
|
if (result == false || this.UpdateStatu == UpdateStatuMode.UpdateSuccess)
|
{
|
return;
|
}
|
new System.Threading.Thread(async () =>
|
{
|
this.zbGateway.ReportAction -= this.UpdateDeviceProgress;
|
|
//终止升级
|
var myResult = await this.listUpdateDevice[0].KillUpdateAsync(this.zbGateway, 200);
|
Application.RunOnMainThread(() =>
|
{
|
//升级
|
this.btnUpdateButton.TextID = R.MyInternationalizationString.uLevelUp;
|
|
//固件信息
|
string ver = Language.StringByID(R.MyInternationalizationString.uVersionAbbreviation);
|
btnProgress.Text = Common.LocalDevice.Current.AppendVersion(this.deviceFirmware.FirmwareVersion);
|
|
//清空进度条
|
this.frameBar.Width = 0;
|
//状态变更
|
this.IsFinishUpdate = true;
|
this.oldUpdateStatu = UpdateStatuMode.None;
|
this.UpdateStatu = UpdateStatuMode.None;
|
|
//执行下一个可更新的固件的更新操作
|
FirmwareUpdateLogic.DoUpdateNextFirmware();
|
});
|
})
|
{ IsBackground = true }.Start();
|
};
|
}
|
|
#endregion
|
|
#region ■ 升级完成提示_______________________
|
|
/// <summary>
|
/// 显示升级完成的信息
|
/// </summary>
|
private void ShowFinishMsg()
|
{
|
new System.Threading.Thread(() =>
|
{
|
System.Threading.Thread.Sleep(3000);
|
|
//重新刷新缓存
|
var otaDevice = Common.LocalDevice.Current.GetOTADevice(listUpdateDevice[0].DeviceAddr);
|
Common.LocalDevice.Current.SetAllImageInfoToOtaDevice(otaDevice, this.OtaImageInfoActionBack);
|
|
System.Threading.Thread.Sleep(1500);
|
int count = 12;
|
while (this.IsFinishUpdate == false && count > 0)
|
{
|
DeviceAttributeLogic.Current.SetFirmwareVersionComand(otaDevice);
|
//等待一下设备信息的反馈
|
System.Threading.Thread.Sleep(2000);
|
count--;
|
}
|
|
Application.RunOnMainThread(() =>
|
{
|
if (UserCenterResourse.DicActionForm.ContainsKey("DeviceFirmwareInfoForm") == true)
|
{
|
//刷新设备信息界面
|
((Device.DeviceFirmwareInfoForm)UserCenterResourse.DicActionForm["DeviceFirmwareInfoForm"]).ShowForm(listUpdateDevice);
|
}
|
|
//状态变更
|
this.IsFinishUpdate = true;
|
this.UpdateStatu = UpdateStatuMode.UpdateSuccess;
|
|
FirmwareUpdateLogic.DoUpdateNextFirmware();
|
|
//完成
|
this.btnUpdateButton.TextID = R.MyInternationalizationString.uFinish;
|
this.btnUpdateButton.isCanClickUp = true;
|
this.btnUpdateButton.SetNotClickStatu();
|
|
//设备升级成功!
|
this.SetProgressValue(100, Language.StringByID(R.MyInternationalizationString.uDeviceUpdateSuccess));
|
});
|
})
|
{ IsBackground = true }.Start();
|
}
|
|
/// <summary>
|
/// 获取到了OTA镜像信息回调(100%特定回调)
|
/// </summary>
|
/// <param name="device"></param>
|
/// <param name="reportData"></param>
|
private void OtaImageInfoActionBack(CommonDevice device, CommonDevice.DeviceStatusReportData reportData)
|
{
|
this.IsFinishUpdate = true;
|
}
|
|
#endregion
|
|
#region ■ 处理结果提示_______________________
|
|
/// <summary>
|
/// 显示重新安装的信息
|
/// </summary>
|
private void ShowReSetupMsg()
|
{
|
//状态变更
|
this.IsFinishUpdate = true;
|
|
Application.RunOnMainThread(() =>
|
{
|
//重新升级
|
this.btnUpdateButton.TextID = R.MyInternationalizationString.uReLevelUp;
|
this.btnUpdateButton.isCanClickUp = true;
|
this.btnUpdateButton.SetNotClickStatu();
|
//清空进度条
|
this.frameBar.Width = 0;
|
//执行下一个升级
|
FirmwareUpdateLogic.DoUpdateNextFirmware();
|
});
|
}
|
|
/// <summary>
|
/// 显示重新下载模式
|
/// </summary>
|
private void ShowReDownLoadMode()
|
{
|
//状态变更
|
this.IsFinishUpdate = true;
|
|
Application.RunOnMainThread(() =>
|
{
|
this.btnUpdateButton.TextID = R.MyInternationalizationString.uReDownLoad;
|
this.btnUpdateButton.isCanClickUp = true;
|
this.btnUpdateButton.SetNotClickStatu();
|
//清空进度条
|
this.frameBar.Width = 0;
|
//执行下一个升级
|
FirmwareUpdateLogic.DoUpdateNextFirmware();
|
});
|
}
|
|
#endregion
|
}
|
}
|