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.cs131
1 files changed, 123 insertions, 8 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 8a8b87c97..9a8c79cd9 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.UI/ViewModels/MachineUpdateViewVM.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/ViewModels/MachineUpdateViewVM.cs
@@ -8,6 +8,7 @@ using System.Text;
using System.Threading;
using System.Threading.Tasks;
using Tango.BL;
+using Tango.Core;
using Tango.Core.Commands;
using Tango.Core.ExtensionMethods;
using Tango.Core.Helpers;
@@ -24,6 +25,7 @@ using Tango.PPC.Shared.RemoteUpgrade;
using Tango.PPC.UI.Dialogs;
using Tango.PPC.UI.Notifications.NotificationItems;
using Tango.PPC.UI.ViewsContracts;
+using Tango.Transport;
namespace Tango.PPC.UI.ViewModels
{
@@ -549,10 +551,10 @@ namespace Tango.PPC.UI.ViewModels
#region External Bridge Handler
- [ExternalBridgeRequestHandlerMethod(typeof(StartRemoteApplicationRemoteUpgradeRequest), RequestHandlerLoggingMode.LogRequestName)]
- public async Task OnStartRemoteApplicationRemoteUpgradeRequest(StartRemoteApplicationRemoteUpgradeRequest request, String token, ExternalBridgeReceiver receiver)
+ [ExternalBridgeRequestHandlerMethod(typeof(StartRemoteApplicationUpgradeRequest), RequestHandlerLoggingMode.LogRequestName)]
+ public async Task OnStartRemoteApplicationUpgradeRequest(StartRemoteApplicationUpgradeRequest request, String token, ExternalBridgeReceiver receiver)
{
- await receiver.SendGenericResponse(new StartRemoteApplicationRemoteUpgradeResponse(), token);
+ await receiver.SendGenericResponse(new StartRemoteApplicationUpgradeResponse(), token);
bool stopReporting = false;
@@ -566,13 +568,13 @@ namespace Tango.PPC.UI.ViewModels
{
try
{
- await receiver.SendGenericResponse(new StartRemoteApplicationRemoteUpgradeResponse()
+ await receiver.SendGenericResponse(new StartRemoteApplicationUpgradeResponse()
{
Message = MachineUpdateManager.Status.Message,
IsIndeterminate = MachineUpdateManager.Status.IsIntermediate,
Maximum = MachineUpdateManager.Status.Total,
Progress = MachineUpdateManager.Status.Progress
- }, token);
+ }, token, new TransportResponseConfig() { Priority = QueuePriority.Low });
}
catch (Exception ex)
{
@@ -613,16 +615,26 @@ namespace Tango.PPC.UI.ViewModels
});
}
- await receiver.SendGenericResponse(new StartRemoteApplicationRemoteUpgradeResponse()
+ await receiver.SendGenericResponse(new StartRemoteApplicationUpgradeResponse()
{
IsIndeterminate = false,
Maximum = 100,
Progress = 100,
Message = "Completed"
- }, token, new Transport.TransportResponseConfig()
+ }, token, new TransportResponseConfig()
{
Completed = true
});
+
+ try
+ {
+ File.Delete(request.RemoteTupFilePath);
+ }
+ catch { }
+
+ await Task.Delay(2000);
+
+ CompleteUpdate();
}
catch (Exception ex)
{
@@ -638,9 +650,112 @@ namespace Tango.PPC.UI.ViewModels
}
}
- public void OnReceiverDisconnected(ExternalBridgeReceiver receiver)
+ [ExternalBridgeRequestHandlerMethod(typeof(StartRemoteFirmwareUpgradeRequest), RequestHandlerLoggingMode.LogRequestName)]
+ public async Task OnStartRemoteFirmwareUpgradeRequest(StartRemoteFirmwareUpgradeRequest request, String token, ExternalBridgeReceiver receiver)
{
+ await receiver.SendGenericResponse(new StartRemoteFirmwareUpgradeResponse(), token);
+
+ bool stopReporting = false;
+
+ try
+ {
+ ThreadFactory.StartNew(async () =>
+ {
+ while (!stopReporting)
+ {
+ if (MachineUpdateManager.Status != null)
+ {
+ try
+ {
+ await receiver.SendGenericResponse(new StartRemoteFirmwareUpgradeResponse()
+ {
+ Message = MachineUpdateManager.Status.Message,
+ IsIndeterminate = MachineUpdateManager.Status.IsIntermediate,
+ Maximum = MachineUpdateManager.Status.Total,
+ Progress = MachineUpdateManager.Status.Progress
+ }, token, new TransportResponseConfig() { Priority = QueuePriority.Low });
+ }
+ catch (Exception ex)
+ {
+ LogManager.Log(ex, "Error sending remote upgrade progress.");
+ }
+ }
+
+ Thread.Sleep(500);
+ }
+ });
+
+ InvokeUI(() =>
+ {
+ NavigationManager.NavigateTo(Common.Navigation.NavigationView.MachineUpdateView);
+ NavigateTo(MachineUpdateView.UpdateProgressView);
+ });
+
+ LogManager.Log("Starting firmware upgrade from package...");
+
+ try
+ {
+ await MachineUpdateManager.UpdateFromTFP(request.RemoteTfpFilePath);
+ LogManager.Log("Firmware upgrade from package completed.");
+ _update_result = new MachineUpdateResult()
+ {
+ RequiresBinariesUpdate = false,
+ };
+
+ InvokeUI(() =>
+ {
+ NavigateTo(MachineUpdateView.UpdateCompletedView);
+ });
+ }
+ catch (Exception ex)
+ {
+ LogManager.Log(ex, "Firmware upgrade from package failed.");
+ FailedError = ex.FlattenMessage();
+ InvokeUI(() =>
+ {
+ NavigateTo(MachineUpdateView.UpdateFailedFromPackageView);
+ });
+ }
+
+ await receiver.SendGenericResponse(new StartRemoteFirmwareUpgradeResponse()
+ {
+ IsIndeterminate = false,
+ Maximum = 100,
+ Progress = 100,
+ Message = "Completed"
+ }, token, new TransportResponseConfig()
+ {
+ Completed = true
+ });
+
+ try
+ {
+ File.Delete(request.RemoteTfpFilePath);
+ }
+ catch { }
+
+ await Task.Delay(2000);
+
+ CompleteUpdate();
+ }
+ catch (Exception ex)
+ {
+ await receiver.SendErrorResponse(ex, token);
+ }
+ finally
+ {
+ try
+ {
+ File.Delete(request.RemoteTfpFilePath);
+ }
+ catch { }
+ }
+ }
+
+ public void OnReceiverDisconnected(ExternalBridgeReceiver receiver)
+ {
+ //Do Nothing.
}
#endregion