diff options
| author | Roy Ben Shabat <Roy.mail.net@gmail.com> | 2019-12-24 11:37:59 +0200 |
|---|---|---|
| committer | Roy Ben Shabat <Roy.mail.net@gmail.com> | 2019-12-24 11:37:59 +0200 |
| commit | 6230a690fcfae2c51aadf4ce57d555e502fcce93 (patch) | |
| tree | 6702b4f6929885335564b17b120727367846e30c /Software/Visual_Studio/PPC/Tango.PPC.UI/ViewModels | |
| parent | b6d9b453d2f14f1bbcc3b907d6cc30b513370e5a (diff) | |
| download | Tango-6230a690fcfae2c51aadf4ce57d555e502fcce93.tar.gz Tango-6230a690fcfae2c51aadf4ce57d555e502fcce93.zip | |
Implemented offline firmware upgrade support on PPC.
Diffstat (limited to 'Software/Visual_Studio/PPC/Tango.PPC.UI/ViewModels')
| -rw-r--r-- | Software/Visual_Studio/PPC/Tango.PPC.UI/ViewModels/MachineUpdateViewVM.cs | 67 |
1 files changed, 66 insertions, 1 deletions
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/ViewModels/MachineUpdateViewVM.cs b/Software/Visual_Studio/PPC/Tango.PPC.UI/ViewModels/MachineUpdateViewVM.cs index 0af977614..3942a1b84 100644 --- a/Software/Visual_Studio/PPC/Tango.PPC.UI/ViewModels/MachineUpdateViewVM.cs +++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/ViewModels/MachineUpdateViewVM.cs @@ -8,8 +8,10 @@ using System.Text; using System.Threading.Tasks; using Tango.BL; using Tango.Core.Commands; +using Tango.Core.ExtensionMethods; using Tango.Core.Helpers; using Tango.Explorer; +using Tango.PMR.FirmwareUpgrade; using Tango.PPC.Common; using Tango.PPC.Common.MachineUpdate; using Tango.PPC.Common.Publish; @@ -313,6 +315,7 @@ namespace Tango.PPC.UI.ViewModels base.OnApplicationReady(); StorageProvider.RegisterFileHandler(ExplorerFileDefinition.Update.Extension, HandleSoftwareUpdatePackageLoaded); + StorageProvider.RegisterFileHandler(ExplorerFileDefinition.Firmware.Extension, HandleFirmwareUpgradeLoaded); if (ApplicationManager.IsAfterUpdate) { @@ -401,6 +404,8 @@ namespace Tango.PPC.UI.ViewModels { PublishInfo packageFile = null; + LogManager.Log("TUP file loaded from storage..."); + try { packageFile = await MachineUpdateManager.GetUpdatePackageFileInfo(fileItem.Path); @@ -413,7 +418,11 @@ namespace Tango.PPC.UI.ViewModels } UpdateFromFileViewVM vm = new UpdateFromFileViewVM(); - vm.Version = packageFile.ApplicationVersion; + vm.PublishInfo = packageFile; + + LogManager.Log($"TUP publish info:\n{packageFile.ToJson()}"); + + LogManager.Log("Displaying TUP update dialog..."); await NotificationProvider.ShowDialog(vm); @@ -439,6 +448,62 @@ namespace Tango.PPC.UI.ViewModels } } + private async void HandleFirmwareUpgradeLoaded(ExplorerFileItem fileItem) + { + LogManager.Log("TFP file loaded from storage..."); + + VersionPackageDescriptor packageInfo; + FirmwareUpgradeFromFileViewVM vm = new FirmwareUpgradeFromFileViewVM(); + + try + { + using (FileStream st = File.OpenRead(fileItem.Path)) + { + packageInfo = await MachineProvider.MachineOperator.GetFirmwarePackageInfo(st); + } + + vm.Version = packageInfo.FileDescriptors.SingleOrDefault(x => x.Destination == VersionFileDestination.Mcu).Version; + } + catch (Exception ex) + { + LogManager.Log(ex, $"Error loading package info from {fileItem.Path}."); + await NotificationProvider.ShowError("An error occurred while trying to load the selected firmware upgrade package. Please make sure the package is valid."); + return; + } + + + LogManager.Log($"TFP publish info:\n{packageInfo.ToJsonString()}"); + + LogManager.Log("Displaying TFP update dialog..."); + + await NotificationProvider.ShowDialog(vm); + + if (vm.DialogResult) + { + await NavigationManager.NavigateTo(Common.Navigation.NavigationView.MachineUpdateView); + await NavigateTo(MachineUpdateView.UpdateProgressView); + + LogManager.Log("Starting firmware upgrade from package..."); + + try + { + await MachineUpdateManager.UpdateFromTFP(fileItem.Path); + LogManager.Log("Firmware upgrade from package completed."); + _update_result = new MachineUpdateResult() + { + RequiresBinariesUpdate = false, + }; + await NavigateTo(MachineUpdateView.UpdateCompletedView); + } + catch (Exception ex) + { + LogManager.Log(ex, "Firmware upgrade from package failed."); + FailedError = ex.FlattenMessage(); + await NavigateTo(MachineUpdateView.UpdateFailedFromPackageView); + } + } + } + #endregion #region Auto Check For Update |
