From a9b1c4cb5c4d945565e72e80ac0f938a49da3e5f Mon Sep 17 00:00:00 2001 From: Roy Ben Shabat Date: Sat, 22 Aug 2020 05:15:57 +0300 Subject: Implemented pre-connection protocol configuration. Improved error handling across transport layer. Improved unexpected app crash for PPC. Improved transporter request received handlers tunneling. --- .../Tango.MachineStudio.UI/Views/ConnectedMachineView.xaml | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views') diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/ConnectedMachineView.xaml b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/ConnectedMachineView.xaml index 295d6b2dc..600104095 100644 --- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/ConnectedMachineView.xaml +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/ConnectedMachineView.xaml @@ -19,6 +19,8 @@ + + @@ -95,6 +97,10 @@ + + + + @@ -138,6 +144,10 @@ + + + + -- cgit v1.3.1 From 7428db6eb757e7a77a60d34c1eb67d1b1a936651 Mon Sep 17 00:00:00 2001 From: Roy Ben Shabat Date: Wed, 2 Sep 2020 12:49:20 +0300 Subject: Improved firmware upgrade progress handling. --- .../Views/FirmwareUpgradeView.xaml | 2 +- .../MachineUpdate/MachineUpdateManager.cs | 6 ++-- .../Tango.Integration/Operation/MachineOperator.cs | 34 +++++++++++++--------- .../Upgrade/FirmwareUpgradeHandler.cs | 31 +++++++++++++------- .../Upgrade/FirmwareUpgradeProgressEventArgs.cs | 5 ++-- 5 files changed, 48 insertions(+), 30 deletions(-) (limited to 'Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views') diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/FirmwareUpgradeView.xaml b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/FirmwareUpgradeView.xaml index 233f8e4cb..5cf23e79e 100644 --- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/FirmwareUpgradeView.xaml +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/FirmwareUpgradeView.xaml @@ -87,7 +87,7 @@ Upgrading Machine Firmware - + diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/MachineUpdate/MachineUpdateManager.cs b/Software/Visual_Studio/PPC/Tango.PPC.Common/MachineUpdate/MachineUpdateManager.cs index bbc8d93f6..4f8be0a6e 100644 --- a/Software/Visual_Studio/PPC/Tango.PPC.Common/MachineUpdate/MachineUpdateManager.cs +++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/MachineUpdate/MachineUpdateManager.cs @@ -874,7 +874,7 @@ namespace Tango.PPC.Common.MachineUpdate }; handler.Progress += (_, e) => { - UpdateProgress("Updating Firmware", e.Message, false, e.Current, e.Total); + UpdateProgress("Updating Firmware", e.Message, e.IsIndeterminate, e.Current, e.Total); }; } else @@ -1457,7 +1457,7 @@ namespace Tango.PPC.Common.MachineUpdate }; handler.Progress += (_, e) => { - UpdateProgress("Updating Firmware", e.Message, false, e.Current, e.Total); + UpdateProgress("Updating Firmware", e.Message, e.IsIndeterminate, e.Current, e.Total); }; } else @@ -1550,7 +1550,7 @@ namespace Tango.PPC.Common.MachineUpdate }; handler.Progress += (_, e) => { - UpdateProgress("Updating Firmware", e.Message, false, e.Current, e.Total); + UpdateProgress("Updating Firmware", e.Message, e.IsIndeterminate, e.Current, e.Total); }; } catch (Exception ex) diff --git a/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs b/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs index 57ba6e727..6887d9859 100644 --- a/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs +++ b/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs @@ -3407,6 +3407,17 @@ namespace Tango.Integration.Operation LogManager.Log("Reading zip stream..."); zip = ZipFile.Read(tfpStream); + double packageUploadTotal = 0; + + try + { + packageUploadTotal = zip.Entries.Sum(x => x.UncompressedSize); + } + catch (Exception ex) + { + LogManager.Log(ex, "Error calculating total package upload bytes."); + } + LogManager.Log("Creating storage manager..."); var storage = CreateStorageManager(); LogManager.Log("Getting storage drive information..."); @@ -3480,8 +3491,7 @@ namespace Tango.Integration.Operation FirmwareUpgradeManager upgradeManager = new FirmwareUpgradeManager(); upgradeManager.UpgradeProgress += (sender, e) => { - upgradeHandler.Total = (long)e.Total; - upgradeHandler.RaiseProgress((long)e.Progress, FirmwareUpgradeStatus.Upgrading, e.State.ToDescription()); + upgradeHandler.RaiseProgress(FirmwareUpgradeStatus.Upgrading, e.State.ToDescription(), false, e.Total, e.Progress); }; LogManager.Log("Disconnecting adapter..."); @@ -3516,21 +3526,21 @@ namespace Tango.Integration.Operation } LogManager.Log("Waiting for the device..."); - upgradeHandler.RaiseProgress(100, FirmwareUpgradeStatus.Upgrading, "Waiting for the device..."); + upgradeHandler.RaiseProgress(FirmwareUpgradeStatus.Upgrading, "Waiting for the device..."); Thread.Sleep(5000); LogManager.Log("Reconnecting adapter..."); - upgradeHandler.RaiseProgress(100, FirmwareUpgradeStatus.Upgrading, "Connecting..."); + upgradeHandler.RaiseProgress(FirmwareUpgradeStatus.Upgrading, "Connecting..."); Adapter.Connect().Wait(); - + Connect().Wait(); LogManager.Log("Connected..."); - upgradeHandler.RaiseProgress(100, FirmwareUpgradeStatus.Upgrading, "Connected."); + upgradeHandler.RaiseProgress(FirmwareUpgradeStatus.Upgrading, "Connected."); Thread.Sleep(2000); LogManager.Log("Waiting..."); - upgradeHandler.RaiseProgress(100, FirmwareUpgradeStatus.Upgrading, "Waiting..."); + upgradeHandler.RaiseProgress(FirmwareUpgradeStatus.Upgrading, "Waiting..."); Thread.Sleep(2000); Status = MachineStatuses.Upgrading; @@ -3547,7 +3557,6 @@ namespace Tango.Integration.Operation if (package_info.ContainsNoneMcu()) { LogManager.Log("TFP package is enabled. Starting upload..."); - upgradeHandler.Total = zip.Entries.Sum(x => x.UncompressedSize); uploadNext(); } else @@ -3596,7 +3605,7 @@ namespace Tango.Integration.Operation return; } - upgradeHandler.RaiseProgress(upgradeHandler.Current + e.Delta, FirmwareUpgradeStatus.Uploading, $"Uploading '{entry.FileName}'..."); + upgradeHandler.RaiseProgress(FirmwareUpgradeStatus.Uploading, $"Uploading '{entry.FileName}'...", false, packageUploadTotal, upgradeHandler.Current + e.Delta); }; } catch (Exception ex) @@ -3617,7 +3626,7 @@ namespace Tango.Integration.Operation { LogManager.Log("Validating version..."); streams.ForEach(x => x.Dispose()); - upgradeHandler.RaiseProgress(upgradeHandler.Total, FirmwareUpgradeStatus.Validating, "Validating version..."); + upgradeHandler.RaiseProgress(FirmwareUpgradeStatus.Validating, "Validating version..."); var validateRequest = new ValidateVersionRequest(); validateRequest.Path = package_folder; var validateResponse = SendRequest(validateRequest, new TransportRequestConfig() { Timeout = TimeSpan.FromSeconds(10), ShouldLog = true }).Result; @@ -3639,7 +3648,7 @@ namespace Tango.Integration.Operation LogManager.Log("Activating version..."); - upgradeHandler.RaiseProgress(upgradeHandler.Total, FirmwareUpgradeStatus.Activating, "Activating version..."); + upgradeHandler.RaiseProgress(FirmwareUpgradeStatus.Activating, "Activating version..."); var activateRequest = new ActivateVersionRequest(); activateRequest.Path = package_folder; @@ -3649,8 +3658,7 @@ namespace Tango.Integration.Operation { if (!completed && response.Message.Progress > 0) { - upgradeHandler.Total = (long)response.Message.Total; - upgradeHandler.RaiseProgress((long)response.Message.Progress, FirmwareUpgradeStatus.Activating, "Activating version..."); + upgradeHandler.RaiseProgress(FirmwareUpgradeStatus.Activating, "Activating version...", false, response.Message.Total, response.Message.Progress); } }, (ex) => { diff --git a/Software/Visual_Studio/Tango.Integration/Upgrade/FirmwareUpgradeHandler.cs b/Software/Visual_Studio/Tango.Integration/Upgrade/FirmwareUpgradeHandler.cs index 774824b49..dd42693c4 100644 --- a/Software/Visual_Studio/Tango.Integration/Upgrade/FirmwareUpgradeHandler.cs +++ b/Software/Visual_Studio/Tango.Integration/Upgrade/FirmwareUpgradeHandler.cs @@ -19,6 +19,8 @@ namespace Tango.Integration.Upgrade internal FirmwareUpgradeHandler() { + IsIndeterminate = true; + Total = 100; Message = "Initializing..."; } @@ -41,8 +43,8 @@ namespace Tango.Integration.Upgrade private set { _status = value; RaisePropertyChangedAuto(); } } - private long _current; - public long Current + private double _current; + public double Current { get { return _current; } internal set @@ -51,13 +53,20 @@ namespace Tango.Integration.Upgrade } } - private long _total; - public long Total + private double _total; + public double Total { get { return _total; } internal set { _total = value; RaisePropertyChangedAuto(); } } + private bool _isIndeterminate; + public bool IsIndeterminate + { + get { return _isIndeterminate; } + set { _isIndeterminate = value; RaisePropertyChangedAuto(); } + } + public Task Cancel() { return Task.Factory.StartNew(() => @@ -71,28 +80,27 @@ namespace Tango.Integration.Upgrade internal void RaiseCompleted() { - Status = FirmwareUpgradeStatus.Completed; - Message = "Completed."; + RaiseProgress(FirmwareUpgradeStatus.Completed, "Firmware upgrade completed.", false, 100, 100); Completed?.Invoke(this, new EventArgs()); } internal void RaiseCanceled() { - Status = FirmwareUpgradeStatus.Canceled; - Message = "Canceled."; + RaiseProgress(FirmwareUpgradeStatus.Canceled, "Firmware upgrade canceled by user.", false, 100, 0); Canceled?.Invoke(this, new EventArgs()); } internal void RaiseFailed(Exception ex) { - Status = FirmwareUpgradeStatus.Failed; - Message = "Failed."; + RaiseProgress(FirmwareUpgradeStatus.Failed, "Firmware upgrade failed.", false, 100, 0); Failed?.Invoke(this, ex); } - internal void RaiseProgress(long current, FirmwareUpgradeStatus status, String message) + internal void RaiseProgress(FirmwareUpgradeStatus status, String message, bool isIndeterminate = true, double total = 100, double current = 0) { + Total = total; Current = current; + IsIndeterminate = isIndeterminate; Status = status; Message = message; @@ -102,6 +110,7 @@ namespace Tango.Integration.Upgrade Status = Status, Total = Total, Message = Message, + IsIndeterminate = IsIndeterminate }); } } diff --git a/Software/Visual_Studio/Tango.Integration/Upgrade/FirmwareUpgradeProgressEventArgs.cs b/Software/Visual_Studio/Tango.Integration/Upgrade/FirmwareUpgradeProgressEventArgs.cs index fa4f4cc96..8315f4026 100644 --- a/Software/Visual_Studio/Tango.Integration/Upgrade/FirmwareUpgradeProgressEventArgs.cs +++ b/Software/Visual_Studio/Tango.Integration/Upgrade/FirmwareUpgradeProgressEventArgs.cs @@ -8,8 +8,9 @@ namespace Tango.Integration.Upgrade { public class FirmwareUpgradeProgressEventArgs : EventArgs { - public long Current { get; set; } - public long Total { get; set; } + public double Current { get; set; } + public double Total { get; set; } + public bool IsIndeterminate { get; set; } public FirmwareUpgradeStatus Status { get; set; } public String Message { get; set; } } -- cgit v1.3.1