aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/PPC/Tango.PPC.Common/MachineUpdate
diff options
context:
space:
mode:
Diffstat (limited to 'Software/Visual_Studio/PPC/Tango.PPC.Common/MachineUpdate')
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Common/MachineUpdate/IMachineUpdateManager.cs13
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Common/MachineUpdate/MachineUpdateManager.cs126
2 files changed, 61 insertions, 78 deletions
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/MachineUpdate/IMachineUpdateManager.cs b/Software/Visual_Studio/PPC/Tango.PPC.Common/MachineUpdate/IMachineUpdateManager.cs
index 3e3fbcc27..77646da40 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.Common/MachineUpdate/IMachineUpdateManager.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/MachineUpdate/IMachineUpdateManager.cs
@@ -38,9 +38,8 @@ namespace Tango.PPC.Common.MachineUpdate
event EventHandler<MachineUpdateProgress> Progress;
/// <summary>
- /// Performs a machine update using the specified serial number and machine service address.
+ /// Performs a machine update.
/// </summary>
- /// <param name="serialNumber">The serial number.</param>
/// <param name="setupFirmware">if set to <c>true</c> updates the embedded device firmware.</param>
/// <param name="setupFPGA">if set to <c>true</c> updates the embedded device FPGA version and other parameters.</param>
/// <returns></returns>
@@ -61,24 +60,22 @@ namespace Tango.PPC.Common.MachineUpdate
Task UpdateFromTFP(String fileName);
/// <summary>
- /// Checks if any update are available for the specified machine serial number.
+ /// Checks if any update are available.
/// </summary>
- /// <param name="serialNumber">The serial number.</param>
/// <returns></returns>
- Task<CheckForUpdateResponse> CheckForUpdate(String serialNumber);
+ Task<CheckForUpdateResponse> CheckForUpdate();
/// <summary>
/// Checks whether it is necessary to updates all the "overwrite-able" database tables.
/// </summary>
- /// <param name="serialNumber">The serial number.</param>
/// <returns></returns>
- Task<DbCompareResult> UpdateDBCheck(String serialNumber);
+ Task<DbCompareResult> UpdateDBCheck();
/// <summary>
/// Updates all the "overwrite-able" database tables.
/// </summary>
/// <returns></returns>
- Task UpdateDB(DbCompareResult dbCompareResult, String serialNumber);
+ Task UpdateDB(DbCompareResult dbCompareResult);
/// <summary>
/// Gets the update package file information.
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 2dfea3ff3..85fe6b0ad 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.Common/MachineUpdate/MachineUpdateManager.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/MachineUpdate/MachineUpdateManager.cs
@@ -106,6 +106,7 @@ namespace Tango.PPC.Common.MachineUpdate
_client = ppcWebClient;
_machineProvider = machineProvider;
_app_manager = applicationManager;
+ _app_manager.ApplicationReady += _app_manager_ApplicationReady;
_packageRunner = packageRunner;
_packageRunner.PackageProgress += _packageRunner_PackageProgress;
@@ -116,7 +117,7 @@ namespace Tango.PPC.Common.MachineUpdate
_checkForUpdateTimer = new System.Timers.Timer(_settings.AutoUpdateCheckInterval.TotalMilliseconds);
_checkForUpdateTimer.Elapsed += _checkForUpdateTimer_Elapsed;
- _checkForUpdateTimer.Start();
+ _checkForUpdateTimer.Stop();
externalBridge.RegisterRequestHandler(this);
}
@@ -125,6 +126,11 @@ namespace Tango.PPC.Common.MachineUpdate
#region Event Handlers
+ private void _app_manager_ApplicationReady(object sender, EventArgs e)
+ {
+ _checkForUpdateTimer.Start();
+ }
+
private void _packageRunner_PackageProgress(object sender, PackageProgressEventArgs e)
{
UpdateProgress(e.PackageName, e.Message, e.IsIntermediate, e.Progress, e.Total);
@@ -142,12 +148,12 @@ namespace Tango.PPC.Common.MachineUpdate
#region Private Methods
- private Task Login(String serialNumber)
+ private Task Login(String machineGuid)
{
return _client.Login(new LoginRequest()
{
Mode = LoginMode.Machine,
- SerialNumber = serialNumber,
+ MachineGuid = machineGuid,
});
}
@@ -603,9 +609,8 @@ namespace Tango.PPC.Common.MachineUpdate
#region Public Methods
/// <summary>
- /// Performs a machine update using the specified serial number and machine service address.
+ /// Performs a machine update.
/// </summary>
- /// <param name="serialNumber">The serial number.</param>
/// <param name="setupFirmware">if set to <c>true</c> updates the embedded device firmware.</param>
/// <param name="setupFPGA">if set to <c>true</c> updates the embedded device FPGA version and other parameters.</param>
/// <returns></returns>
@@ -632,7 +637,7 @@ namespace Tango.PPC.Common.MachineUpdate
var _newPackageTempFolder = TemporaryManager.CreateFolder();
_newPackageTempFolder.Persist = true;
- String serialNumber = _machineProvider.Machine.SerialNumber;
+ String machineGuid = _machineProvider.Machine.Guid;
try
{
@@ -640,7 +645,7 @@ namespace Tango.PPC.Common.MachineUpdate
var machineServiceAddress = _settings.GetMachineServiceAddress();
- LogManager.Log($"Starting machine update for serial number {serialNumber}...");
+ LogManager.Log($"Starting machine update...");
//Connecting to machine...
LogManager.Log("Verifying machine connection and state...");
@@ -659,10 +664,11 @@ namespace Tango.PPC.Common.MachineUpdate
{
throw LogManager.Log(new InvalidOperationException("Could not perform an update while the machine is not connected."));
}
- if (!op.CanPrint)
- {
- throw LogManager.Log(new InvalidOperationException($"Could not perform an update while the machine is in {op.Status} status."));
- }
+ }
+
+ if (!op.CanPrint)
+ {
+ throw LogManager.Log(new InvalidOperationException($"Could not perform an update while the machine is in {op.Status} status."));
}
//Connect to machine service and get matching packages for this machine.
@@ -670,10 +676,9 @@ namespace Tango.PPC.Common.MachineUpdate
LogManager.Log($"Connecting to machine service on {machineServiceAddress}...");
- await Login(serialNumber);
+ await Login(machineGuid);
DownloadUpdateRequest request = new DownloadUpdateRequest();
- request.SerialNumber = serialNumber;
update_response = await _client.MachineUpdate(request);
@@ -797,7 +802,7 @@ namespace Tango.PPC.Common.MachineUpdate
Path.Combine(_newPackageTempFolder, "Update Scripts"),
update_response.DataSource,
localDataSource,
- serialNumber);
+ machineGuid);
runner.Log += (x, msg) =>
{
@@ -836,23 +841,16 @@ namespace Tango.PPC.Common.MachineUpdate
var tfpPath = Path.Combine(_newPackageTempFolder, "firmware_package.tfp");
var stream = new FileStream(tfpPath, FileMode.Open);
- if (!_machineProvider.Machine.IsDemo)
+ if (setupFPGA)
{
- if (setupFPGA)
- {
- op.FirmwareUpgradeMode = FirmwareUpgradeModes.DFU | FirmwareUpgradeModes.TFP_PACKAGE;
- }
- else
- {
- op.FirmwareUpgradeMode = FirmwareUpgradeModes.DFU;
- }
+ op.FirmwareUpgradeMode = FirmwareUpgradeModes.DFU | FirmwareUpgradeModes.TFP_PACKAGE;
}
else
{
- op.FirmwareUpgradeMode = FirmwareUpgradeModes.TFP_PACKAGE;
+ op.FirmwareUpgradeMode = FirmwareUpgradeModes.DFU;
}
- var handler = await op.UpgradeFirmware(stream);
+ var handler = await op.UpgradeFirmware(stream, _machineProvider.Machine.IsDemo);
handler.Failed += (_, ex) =>
{
stream.Dispose();
@@ -874,7 +872,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
@@ -894,12 +892,11 @@ namespace Tango.PPC.Common.MachineUpdate
}
/// <summary>
- /// Checks if any update are available for the specified machine serial number.
+ /// Checks if any update are available for the specified machine.
/// </summary>
- /// <param name="serialNumber">The serial number.</param>
/// <param name="machineServiceAddress">The machine service address.</param>
/// <returns></returns>
- public Task<CheckForUpdateResponse> CheckForUpdate(string serialNumber)
+ public Task<CheckForUpdateResponse> CheckForUpdate()
{
return Task.Factory.StartNew<CheckForUpdateResponse>(() =>
{
@@ -909,12 +906,13 @@ namespace Tango.PPC.Common.MachineUpdate
LogManager.Log($"Connecting to machine service on {machineServiceAddress}...");
- Login(serialNumber).GetAwaiter().GetResult();
+ String machineGuid = _machineProvider.Machine.Guid;
+
+ Login(machineGuid).GetAwaiter().GetResult();
LogManager.Log($"Checking if updates available...");
CheckForUpdateRequest request = new CheckForUpdateRequest();
- request.SerialNumber = serialNumber;
request.Version = _app_manager.Version.ToString();
request.FirmwareVersion = _app_manager.FirmwareVersion?.ToString();
@@ -950,10 +948,9 @@ namespace Tango.PPC.Common.MachineUpdate
/// <summary>
/// Updates all the "overwrite-able" database tables.
/// </summary>
- /// <param name="serialNumber">The serial number.</param>
/// <param name="machineServiceAddress">The machine service address.</param>
/// <returns></returns>
- public Task UpdateDB(DbCompareResult dbCompareResult, String serialNumber)
+ public Task UpdateDB(DbCompareResult dbCompareResult)
{
_updateStartDate = DateTime.UtcNow;
_logs.Clear();
@@ -970,6 +967,11 @@ namespace Tango.PPC.Common.MachineUpdate
{
LogManager.Log("Starting database update...");
+ if (_machineProvider.MachineOperator.IsPrinting)
+ {
+ throw LogManager.Log(new InvalidOperationException($"Could not perform a database update while the machine is dyeing."));
+ }
+
UpdateProgress("Updating Database", "Initializing...");
LogManager.Log("Looking for update scripts configuration on application path...");
@@ -1029,7 +1031,7 @@ namespace Tango.PPC.Common.MachineUpdate
if (item.RequiresSerialNumber)
{
- builder.SetMachineSerialNumber(serialNumber);
+ builder.SetMachineSerialNumber(_machineProvider.Machine.Guid);
}
builder.Synchronize();
@@ -1076,16 +1078,15 @@ namespace Tango.PPC.Common.MachineUpdate
/// <summary>
/// Checks whether it is necessary to updates all the "overwrite-able" database tables.
/// </summary>
- /// <param name="serialNumber">The serial number.</param>
/// <param name="machineServiceAddress">The machine service address.</param>
/// <returns></returns>
- public Task<DbCompareResult> UpdateDBCheck(string serialNumber)
+ public Task<DbCompareResult> UpdateDBCheck()
{
return Task.Factory.StartNew<DbCompareResult>(() =>
{
var machineServiceAddress = _settings.GetMachineServiceAddress();
- LogManager.Log($"Checking if database update is required for serial number {serialNumber}...");
+ LogManager.Log($"Checking if database update is required...");
LogManager.Log("Looking for update scripts configuration on application path...");
@@ -1098,10 +1099,9 @@ namespace Tango.PPC.Common.MachineUpdate
LogManager.Log($"Connecting to machine service on {machineServiceAddress}...");
- Login(serialNumber).Wait();
+ Login(_machineProvider.Machine.Guid).Wait();
UpdateDBRequest request = new UpdateDBRequest();
- request.SerialNumber = serialNumber;
request.ApplicationVersion = _app_manager.Version.ToString();
request.FirmwareVersion = _app_manager.FirmwareVersion.ToString();
@@ -1132,7 +1132,7 @@ namespace Tango.PPC.Common.MachineUpdate
if (item.RequiresSerialNumber)
{
- builder.SetMachineSerialNumber(serialNumber);
+ builder.SetMachineSerialNumber(_machineProvider.Machine.Guid);
}
var config = builder.Build();
@@ -1222,7 +1222,7 @@ namespace Tango.PPC.Common.MachineUpdate
{
_isUpdating = true;
- LogManager.Log($"Starting machine update for serial number {serialNumber}...");
+ LogManager.Log($"Starting machine update (TUP) for serial number {serialNumber}...");
//Connecting to machine...
LogManager.Log("Verifying machine connection and state...");
@@ -1241,10 +1241,11 @@ namespace Tango.PPC.Common.MachineUpdate
{
throw LogManager.Log(new InvalidOperationException("Could not perform an update while the machine is not connected."));
}
- if (!op.CanPrint)
- {
- throw LogManager.Log(new InvalidOperationException($"Could not perform an update while the machine is in {op.Status} status."));
- }
+ }
+
+ if (!op.CanPrint)
+ {
+ throw LogManager.Log(new InvalidOperationException($"Could not perform an update while the machine is in {op.Status} status."));
}
UpdateProgress("Exploring package", "Extracting...");
@@ -1362,7 +1363,7 @@ namespace Tango.PPC.Common.MachineUpdate
Path.Combine(_newPackageTempFolder, "Update Scripts"),
tempDbDataSource,
localDataSource,
- serialNumber);
+ _machineProvider.Machine.Guid);
runner.Log += (x, msg) =>
{
@@ -1419,23 +1420,16 @@ namespace Tango.PPC.Common.MachineUpdate
var tfpPath = Path.Combine(_newPackageTempFolder, "firmware_package.tfp");
var stream = new FileStream(tfpPath, FileMode.Open);
- if (!_machineProvider.Machine.IsDemo)
+ if (setupFPGA)
{
- if (setupFPGA)
- {
- op.FirmwareUpgradeMode = FirmwareUpgradeModes.DFU | FirmwareUpgradeModes.TFP_PACKAGE;
- }
- else
- {
- op.FirmwareUpgradeMode = FirmwareUpgradeModes.DFU;
- }
+ op.FirmwareUpgradeMode = FirmwareUpgradeModes.DFU | FirmwareUpgradeModes.TFP_PACKAGE;
}
else
{
- op.FirmwareUpgradeMode = FirmwareUpgradeModes.TFP_PACKAGE;
+ op.FirmwareUpgradeMode = FirmwareUpgradeModes.DFU;
}
- var handler = await op.UpgradeFirmware(stream);
+ var handler = await op.UpgradeFirmware(stream, _machineProvider.Machine.IsDemo);
handler.Failed += (_, ex) =>
{
stream.Dispose();
@@ -1458,7 +1452,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
@@ -1530,16 +1524,9 @@ namespace Tango.PPC.Common.MachineUpdate
LogManager.Log("-------------------------------------------------------------------------");
LogManager.Log("Updating Firmware...");
- if (!_machineProvider.Machine.IsDemo)
- {
- op.FirmwareUpgradeMode = FirmwareUpgradeModes.DFU | FirmwareUpgradeModes.TFP_PACKAGE;
- }
- else
- {
- op.FirmwareUpgradeMode = FirmwareUpgradeModes.TFP_PACKAGE;
- }
+ op.FirmwareUpgradeMode = FirmwareUpgradeModes.DFU | FirmwareUpgradeModes.TFP_PACKAGE;
- var handler = await op.UpgradeFirmware(stream);
+ var handler = await op.UpgradeFirmware(stream, _machineProvider.Machine.IsDemo);
handler.Failed += (_, ex) =>
{
stream.Dispose();
@@ -1558,7 +1545,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)
@@ -1669,10 +1656,9 @@ namespace Tango.PPC.Common.MachineUpdate
try
{
- var response = await CheckForUpdate(_machineProvider.Machine.SerialNumber);
+ var response = await CheckForUpdate();
if (response.IsUpdateAvailable || response.IsDatabaseUpdateAvailable)
{
- _checkForUpdateTimer.Interval = TimeSpan.FromMinutes(60).TotalMilliseconds;
LogManager.Log($"New {(response.IsDatabaseUpdateAvailable ? "database updates" : "application version")} detected ({response.Version}). Raising event...");
UpdateAvailable?.Invoke(this, response);
}