aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/PPC/Tango.PPC.UI/ViewModels/MachineUpdateViewVM.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Software/Visual_Studio/PPC/Tango.PPC.UI/ViewModels/MachineUpdateViewVM.cs')
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/ViewModels/MachineUpdateViewVM.cs67
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