aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/MachineStudio
diff options
context:
space:
mode:
authorRoy Ben-Shabat <Roy@Twine-s.com>2018-12-02 16:37:25 +0200
committerRoy Ben-Shabat <Roy@Twine-s.com>2018-12-02 16:37:25 +0200
commita2d959a7777bf2387d0f50dbc1ecf69f53e2253d (patch)
tree8c6367189294d96ae074f386cdb4139dfeacb84a /Software/Visual_Studio/MachineStudio
parentae614a63f593122cd28c644625db179f298dd640 (diff)
downloadTango-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')
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Storage/ViewModels/MainViewVM.cs38
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Storage/Views/MainView.xaml4
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/FirmwareUpgrade/IFirmwareUpgrader.cs1
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/FirmwareUpgrade/DefaultFirmwareUpgrader.cs5
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Tango.MachineStudio.UI.csproj2
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/FirmwareUpgradeViewVM.cs87
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/FirmwareUpgradeView.xaml15
7 files changed, 122 insertions, 30 deletions
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Storage/ViewModels/MainViewVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Storage/ViewModels/MainViewVM.cs
index a9cfed937..4db48c636 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Storage/ViewModels/MainViewVM.cs
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Storage/ViewModels/MainViewVM.cs
@@ -75,6 +75,10 @@ namespace Tango.MachineStudio.Storage.ViewModels
public RelayCommand UploadVersionCommand { get; set; }
+ public RelayCommand ValidateVersionCommand { get; set; }
+
+ public RelayCommand ActivateVersionCommand { get; set; }
+
public MainViewVM(IStudioApplicationManager applicationManager, INotificationProvider notificationProvider, IFirmwareUpgrader firmwareUpgrader)
{
_applicationManager = applicationManager;
@@ -96,6 +100,8 @@ namespace Tango.MachineStudio.Storage.ViewModels
DeleteFolderCommand = new RelayCommand(DeleteFolder, () => StorageManager != null && SelectedStorageItem != null && SelectedStorageItem is StorageFolder);
UploadFileCommand = new RelayCommand(UploadFile, () => StorageManager != null && StorageManager.CurrentFolder != null);
UploadVersionCommand = new RelayCommand(UploadVersion, () => StorageManager != null && StorageManager.CurrentFolder != null);
+ ValidateVersionCommand = new RelayCommand(ValidateVersion, () => StorageManager != null && StorageManager.CurrentFolder != null);
+ ActivateVersionCommand = new RelayCommand(ActivateVersion, () => StorageManager != null && StorageManager.CurrentFolder != null);
}
private void UploadFile()
@@ -362,5 +368,37 @@ namespace Tango.MachineStudio.Storage.ViewModels
{
_firmwareUpgrader.InvokeUpgradeUI();
}
+
+ private async void ValidateVersion()
+ {
+ using (_notification.PushTaskItem("Validating firmware version..."))
+ {
+ try
+ {
+ await _applicationManager.ConnectedMachine.ValidateFirmwareVersion(StorageManager.CurrentPath);
+ _notification.ShowInfo($"Version validated successfully!");
+ }
+ catch (Exception ex)
+ {
+ _notification.ShowError($"Error validating firmware version.\n{ex.FlattenMessage()}");
+ }
+ }
+ }
+
+ private async void ActivateVersion()
+ {
+ using (_notification.PushTaskItem("Activating firmware version..."))
+ {
+ try
+ {
+ await _applicationManager.ConnectedMachine.ActivateFirmwareVersion(StorageManager.CurrentPath);
+ _notification.ShowInfo($"Version activated successfully!");
+ }
+ catch (Exception ex)
+ {
+ _notification.ShowError($"Error activating firmware version.\n{ex.FlattenMessage()}");
+ }
+ }
+ }
}
}
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Storage/Views/MainView.xaml b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Storage/Views/MainView.xaml
index 1f435b696..e59837d49 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Storage/Views/MainView.xaml
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Storage/Views/MainView.xaml
@@ -68,13 +68,13 @@
<TextBlock VerticalAlignment="Center" Margin="20 0 0 0" FontSize="18">UPGRADE VERSION</TextBlock>
</DockPanel>
</Button>
- <Button Margin="0 5 0 0" Style="{StaticResource MaterialDesignFlatButton}" Padding="20 10" Height="Auto" Foreground="#363636" HorizontalContentAlignment="Left">
+ <Button Command="{Binding ValidateVersionCommand}" Margin="0 5 0 0" Style="{StaticResource MaterialDesignFlatButton}" Padding="20 10" Height="Auto" Foreground="#363636" HorizontalContentAlignment="Left">
<DockPanel>
<materialDesign:PackIcon Kind="CheckAll" Foreground="#682EBE" Width="32" Height="32" />
<TextBlock VerticalAlignment="Center" Margin="20 0 0 0" FontSize="18">VALIDATE VERSION</TextBlock>
</DockPanel>
</Button>
- <Button Margin="0 5 0 0" Style="{StaticResource MaterialDesignFlatButton}" Padding="20 10" Height="Auto" Foreground="#363636" HorizontalContentAlignment="Left">
+ <Button Command="{Binding ActivateVersionCommand}" Margin="0 5 0 0" Style="{StaticResource MaterialDesignFlatButton}" Padding="20 10" Height="Auto" Foreground="#363636" HorizontalContentAlignment="Left">
<DockPanel>
<materialDesign:PackIcon Kind="Flash" Foreground="#532990" Width="32" Height="32" />
<TextBlock VerticalAlignment="Center" Margin="20 0 0 0" FontSize="18">ACTIVATE VERSION</TextBlock>
diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/FirmwareUpgrade/IFirmwareUpgrader.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/FirmwareUpgrade/IFirmwareUpgrader.cs
index 4826a0e74..12821e2dc 100644
--- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/FirmwareUpgrade/IFirmwareUpgrader.cs
+++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/FirmwareUpgrade/IFirmwareUpgrader.cs
@@ -5,6 +5,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Tango.Integration.Operation;
+using Tango.Integration.Upgrade;
namespace Tango.MachineStudio.Common.FirmwareUpgrade
{
diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/FirmwareUpgrade/DefaultFirmwareUpgrader.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/FirmwareUpgrade/DefaultFirmwareUpgrader.cs
index 5568c82ac..4cceec50c 100644
--- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/FirmwareUpgrade/DefaultFirmwareUpgrader.cs
+++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/FirmwareUpgrade/DefaultFirmwareUpgrader.cs
@@ -5,6 +5,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Tango.Integration.Operation;
+using Tango.Integration.Upgrade;
using Tango.MachineStudio.Common.FirmwareUpgrade;
using Tango.MachineStudio.Common.Notifications;
using Tango.MachineStudio.Common.StudioApplication;
@@ -45,9 +46,9 @@ namespace Tango.MachineStudio.UI.FirmwareUpgrade
/// </summary>
public void InvokeUpgradeUI()
{
- FirmwareUpgradeViewVM vm = new FirmwareUpgradeViewVM(_applicationManager.ConnectedMachine);
+ FirmwareUpgradeViewVM vm = new FirmwareUpgradeViewVM(_applicationManager.ConnectedMachine, _notification);
- _notification.ShowModalDialog<FirmwareUpgradeViewVM, FirmwareUpgradeView>(vm, (x) =>
+ _notification.ShowModalDialog<FirmwareUpgradeViewVM, FirmwareUpgradeView>(vm, (x) =>
{
}, () => { });
diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Tango.MachineStudio.UI.csproj b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Tango.MachineStudio.UI.csproj
index a9a0e1bb9..b3926190f 100644
--- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Tango.MachineStudio.UI.csproj
+++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Tango.MachineStudio.UI.csproj
@@ -609,7 +609,7 @@ copy /Y "$(SolutionDir)Referenced Assemblies\Microsoft.WITDataStore32.dll" "$(Ta
</Target>
<ProjectExtensions>
<VisualStudio>
- <UserProperties BuildVersion_StartDate="2000/1/1" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" BuildVersion_BuildVersioningStyle="None.None.Increment.DeltaBaseYearDayOfYear" BuildVersion_UpdateFileVersion="True" BuildVersion_DetectChanges="True" BuildVersion_UseGlobalSettings="False" />
+ <UserProperties BuildVersion_UseGlobalSettings="False" BuildVersion_DetectChanges="True" BuildVersion_UpdateFileVersion="True" BuildVersion_BuildVersioningStyle="None.None.Increment.DeltaBaseYearDayOfYear" BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_StartDate="2000/1/1" />
</VisualStudio>
</ProjectExtensions>
</Project> \ No newline at end of file
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;
}
}
}
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 b69ad6a5b..84f4b2d92 100644
--- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/FirmwareUpgradeView.xaml
+++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/FirmwareUpgradeView.xaml
@@ -43,9 +43,9 @@
</Grid.RowDefinitions>
<StackPanel VerticalAlignment="Center" HorizontalAlignment="Center">
<TextBlock TextAlignment="Center">
- <Run>The upgrade wizard will help you upgrade the connected machine firmware version.</Run>
+ <Run>This upgrade wizard will help you upgrade the connected machine firmware version.</Run>
<LineBreak/>
- <Run>Press 'SELECT' to browse for a .tfp file (Tango Firmware Package).</Run>
+ <Run>Press 'SELECT' to browse for an .tfp file (Tango Firmware Package).</Run>
</TextBlock>
<DockPanel Margin="0 30 0 0" Width="600" HorizontalAlignment="Left">
<Button DockPanel.Dock="Right" Margin="10 0 0 0" Command="{Binding SelectCommand}">SELECT</Button>
@@ -67,7 +67,7 @@
<Grid>
<StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
<TextBlock HorizontalAlignment="Center" FontSize="18" FontWeight="SemiBold">Upgrading Machine Firmware</TextBlock>
- <TextBlock Margin="0 40 0 0" HorizontalAlignment="Center" Foreground="Gray" Text="{Binding Handler.Status,Converter={StaticResource EnumToDescriptionConverter},Mode=OneWay}"></TextBlock>
+ <TextBlock Margin="0 40 0 0" HorizontalAlignment="Center" Foreground="Gray" Text="{Binding Handler.Message,Converter={StaticResource EnumToDescriptionConverter},Mode=OneWay}"></TextBlock>
<ProgressBar Height="15" Width="600" Margin="0 5 0 0" Maximum="{Binding Handler.Total,Mode=OneWay}" Value="{Binding Handler.Current,Mode=OneWay}" ></ProgressBar>
<Button Width="150" Background="#FF5151" BorderBrush="#FF5151" Margin="0 40 0 0" Height="35" Command="{Binding AbortCommand}">ABORT</Button>
</StackPanel>
@@ -80,6 +80,15 @@
<Button Width="150" Margin="0 10 0 0" Height="35" Command="{Binding CloseCommand}">CLOSE</Button>
</StackPanel>
</Grid>
+
+ <Grid>
+ <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
+ <TextBlock HorizontalAlignment="Center" FontSize="18" FontWeight="SemiBold">Firmware Upgrade Failed</TextBlock>
+ <materialDesign:PackIcon HorizontalAlignment="Center" Width="100" Margin="0 10 0 0" Height="100" Kind="AlertOutline" Foreground="#FF5151" />
+ <TextBlock HorizontalAlignment="Center" TextAlignment="Center" TextWrapping="Wrap" Text="{Binding UpgradeError}" Foreground="#FF5151" FontWeight="SemiBold"></TextBlock>
+ <Button Width="150" Margin="0 15 0 0" Height="35" Command="{Binding CloseCommand}">CLOSE</Button>
+ </StackPanel>
+ </Grid>
</controls:NavigationControl>
</Grid>