diff options
| author | Roy Ben-Shabat <Roy@Twine-s.com> | 2018-12-02 16:37:25 +0200 |
|---|---|---|
| committer | Roy Ben-Shabat <Roy@Twine-s.com> | 2018-12-02 16:37:25 +0200 |
| commit | a2d959a7777bf2387d0f50dbc1ecf69f53e2253d (patch) | |
| tree | 8c6367189294d96ae074f386cdb4139dfeacb84a /Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/FirmwareUpgradeViewVM.cs | |
| parent | ae614a63f593122cd28c644625db179f298dd640 (diff) | |
| download | Tango-a2d959a7777bf2387d0f50dbc1ecf69f53e2253d.tar.gz Tango-a2d959a7777bf2387d0f50dbc1ecf69f53e2253d.zip | |
Implemented machine studio storage module. firmware upgrade version/validate/activate.
Implemented firmware package generator utility.
Diffstat (limited to 'Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/FirmwareUpgradeViewVM.cs')
| -rw-r--r-- | Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/FirmwareUpgradeViewVM.cs | 87 |
1 files changed, 65 insertions, 22 deletions
diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/FirmwareUpgradeViewVM.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/FirmwareUpgradeViewVM.cs index ce8b09aa4..09b63cfc9 100644 --- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/FirmwareUpgradeViewVM.cs +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/FirmwareUpgradeViewVM.cs @@ -7,6 +7,8 @@ using System.Text; using System.Threading.Tasks; using Tango.Core.Commands; using Tango.Integration.Operation; +using Tango.Integration.Upgrade; +using Tango.MachineStudio.Common.Notifications; using Tango.SharedUI; namespace Tango.MachineStudio.UI.ViewModels @@ -14,6 +16,7 @@ namespace Tango.MachineStudio.UI.ViewModels public class FirmwareUpgradeViewVM : DialogViewVM { private IMachineOperator _operator; + private INotificationProvider _notification; private FileStream _stream; private FirmwareUpgradeHandler _handler; @@ -37,27 +40,50 @@ namespace Tango.MachineStudio.UI.ViewModels set { _currentPage = value; RaisePropertyChangedAuto(); } } + private String upgradeError; + public String UpgradeError + { + get { return upgradeError; } + set { upgradeError = value; RaisePropertyChangedAuto(); } + } + + public RelayCommand SelectCommand { get; set; } public RelayCommand UpgradeCommand { get; set; } public RelayCommand AbortCommand { get; set; } - public FirmwareUpgradeViewVM(IMachineOperator machineOperator) : base() + public FirmwareUpgradeViewVM(IMachineOperator machineOperator, INotificationProvider notificationProvider) : base() { + _notification = notificationProvider; _operator = machineOperator; SelectCommand = new RelayCommand(BrowseForFile); UpgradeCommand = new RelayCommand(StartUpgrade, () => SelectedFile != null); AbortCommand = new RelayCommand(AbortUpgrade, () => Handler != null && Handler.Status != FirmwareUpgradeStatus.Validating && Handler.Status != FirmwareUpgradeStatus.Activating); } - private void BrowseForFile() + private async void BrowseForFile() { OpenFileDialog dlg = new OpenFileDialog(); dlg.Title = "Select tango firmware package file"; dlg.Filter = "Tango Firmware Package|*.tfp"; if (dlg.ShowDialog().Value) { + try + { + using (FileStream fs = new FileStream(dlg.FileName, FileMode.Open)) + { + var info = await _operator.GetFirmwarePackageInfo(fs); + } + } + catch (Exception ex) + { + LogManager.Log(ex); + _notification.ShowError("The selected package seems to be invalid."); + return; + } + SelectedFile = dlg.FileName; InvalidateRelayCommands(); } @@ -65,36 +91,53 @@ namespace Tango.MachineStudio.UI.ViewModels private async void StartUpgrade() { + CanClose = false; CurrentPage = 1; - _stream = new FileStream(SelectedFile, FileMode.Open); - Handler = await _operator.UpgradeFirmware(_stream); - Handler.Progress += (_, e) => + try { - InvokeUI(() => + _stream = new FileStream(SelectedFile, FileMode.Open); + Handler = await _operator.UpgradeFirmware(_stream); + Handler.Progress += (_, e) => { - AbortCommand.RaiseCanExecuteChanged(); - }); - }; - Handler.Completed += (_, __) => - { - _stream.Dispose(); - CurrentPage = 2; - }; - Handler.Canceled += (_, __) => - { - _stream.Dispose(); - }; - Handler.Failed += (_, __) => + InvokeUI(() => + { + AbortCommand.RaiseCanExecuteChanged(); + }); + }; + Handler.Completed += (_, __) => + { + CanClose = true; + _stream.Dispose(); + CurrentPage = 2; + }; + Handler.Canceled += (_, __) => + { + CanClose = true; + _stream.Dispose(); + CurrentPage = 0; + }; + Handler.Failed += (_, ex) => + { + UpgradeError = ex.FlattenMessage(); + CanClose = true; + _stream.Dispose(); + CurrentPage = 3; + }; + } + catch (Exception ex) { - _stream.Dispose(); - }; - + CanClose = true; + UpgradeError = ex.FlattenMessage(); + CurrentPage = 3; + } } private async void AbortUpgrade() { + CanClose = true; await Handler.Cancel(); + CurrentPage = 0; } } } |
