aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI
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/Tango.MachineStudio.UI
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/Tango.MachineStudio.UI')
-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
4 files changed, 81 insertions, 28 deletions
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>