aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/PPC
diff options
context:
space:
mode:
authorRoy Ben Shabat <Roy.mail.net@gmail.com>2019-12-17 00:02:49 +0200
committerRoy Ben Shabat <Roy.mail.net@gmail.com>2019-12-17 00:02:49 +0200
commitbdf56799cd6c4c42ec7a8dc36f56ddd17a5feeab (patch)
tree00ff21d8d2ee3d81b76fa12bc92460117cc693be /Software/Visual_Studio/PPC
parente8ee7dfb8e166e34c7950e90d5fe9bcf31dc351b (diff)
downloadTango-bdf56799cd6c4c42ec7a8dc36f56ddd17a5feeab.tar.gz
Tango-bdf56799cd6c4c42ec7a8dc36f56ddd17a5feeab.zip
Added SOURCE to JOB.
Added IS_SYNCHRONIZED to TANGO_UPDATE. Added OfflineUpdates to Synchronization. Added TangoUpdates on PPC side.
Diffstat (limited to 'Software/Visual_Studio/PPC')
-rw-r--r--Software/Visual_Studio/PPC/Modules/Tango.PPC.Jobs/ViewModels/JobsViewVM.cs2
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Common/MachineSetup/MachineSetupManager.cs27
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Common/MachineUpdate/MachineUpdateManager.cs181
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Common/Publish/PublishInfo.cs16
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Common/Synchronization/DefaultMachineDataSynchronizer.cs33
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Common/Web/CheckForUpdateResponse.cs1
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Common/Web/DownloadUpdateResponse.cs2
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Common/Web/MachineSetupResponse.cs2
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Common/Web/UploadMachineDataRequest.cs2
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Common/Web/UploadMachineDataResponse.cs2
10 files changed, 247 insertions, 21 deletions
diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Jobs/ViewModels/JobsViewVM.cs b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Jobs/ViewModels/JobsViewVM.cs
index 785472d0d..1eb7e1f04 100644
--- a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Jobs/ViewModels/JobsViewVM.cs
+++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Jobs/ViewModels/JobsViewVM.cs
@@ -500,6 +500,8 @@ namespace Tango.PPC.Jobs.ViewModels
settings.Save();
Job job = new Job();
+ job.LastUpdated = DateTime.UtcNow;
+ job.JobSource = JobSource.Local;
job.Name = "untitled";
job.NumberOfHeads = 1;
job.NumberOfUnits = 1;
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/MachineSetup/MachineSetupManager.cs b/Software/Visual_Studio/PPC/Tango.PPC.Common/MachineSetup/MachineSetupManager.cs
index dfa9b833b..582eec83b 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.Common/MachineSetup/MachineSetupManager.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/MachineSetup/MachineSetupManager.cs
@@ -11,6 +11,8 @@ using System.Net.Http.Headers;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
+using Tango.BL;
+using Tango.BL.Entities;
using Tango.Core;
using Tango.Core.DB;
using Tango.Core.ExtensionMethods;
@@ -29,6 +31,7 @@ using Tango.Settings;
using Tango.SharedUI.Helpers;
using Tango.SQLExaminer;
using Tango.Transport.Web;
+using System.Data.Entity;
namespace Tango.PPC.Common.MachineSetup
{
@@ -45,6 +48,7 @@ namespace Tango.PPC.Common.MachineSetup
private PPCWebClient _client;
private List<LogItemBase> _logs;
private bool _isUpdating;
+ private DateTime _setupStartDate;
#region Events
@@ -164,6 +168,28 @@ namespace Tango.PPC.Common.MachineSetup
}
}
+ if (response != null)
+ {
+ try
+ {
+ using (ObservablesContext db = ObservablesContext.CreateDefault())
+ {
+ TangoUpdate update = new TangoUpdate();
+ update.ApplicationVersion = response.Version;
+ update.FirmwareVersion = response.FirmwareVersion;
+ update.MachineGuid = (await db.Machines.FirstAsync()).Guid;
+ update.UpdateStatus = BL.Enumerations.TangoUpdateStatuses.SetupCompleted;
+ update.StartDate = _setupStartDate;
+ update.EndDate = DateTime.UtcNow;
+ await db.SaveChangesAsync();
+ }
+ }
+ catch (Exception ex)
+ {
+ LogManager.Log(ex, "Error saving tango setup information to database.");
+ }
+ }
+
_isUpdating = false;
}
@@ -191,6 +217,7 @@ namespace Tango.PPC.Common.MachineSetup
TaskCompletionSource<MachineSetupResult> result = new TaskCompletionSource<MachineSetupResult>();
MachineSetupResponse setup_response = null;
+ _setupStartDate = DateTime.UtcNow;
try
{
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 088e80f61..666b6813c 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.Common/MachineUpdate/MachineUpdateManager.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/MachineUpdate/MachineUpdateManager.cs
@@ -10,6 +10,7 @@ using System.Text;
using System.Threading;
using System.Threading.Tasks;
using Tango.BL;
+using Tango.BL.Entities;
using Tango.Core;
using Tango.Core.DB;
using Tango.Core.ExtensionMethods;
@@ -29,6 +30,7 @@ using Tango.Settings;
using Tango.SharedUI.Helpers;
using Tango.SQLExaminer;
using Tango.Transport.Web;
+using System.Data.Entity;
namespace Tango.PPC.Common.MachineUpdate
{
@@ -42,6 +44,7 @@ namespace Tango.PPC.Common.MachineUpdate
private System.Timers.Timer _checkForUpdateTimer;
private bool _isUpdating;
private PPCSettings _settings;
+ private DateTime _updateStartDate;
#region Events
@@ -140,7 +143,7 @@ namespace Tango.PPC.Common.MachineUpdate
});
}
- private async void OnFailed(Exception ex, TaskCompletionSource<MachineUpdateResult> completionSource, DownloadUpdateResponse response, bool performDatabaseRollback, String dbBackupFile, String backupsFolder, String tempDbName, Tango.Core.DataSource localDataSource, String tempUpdatePackageFolder = null)
+ private async void OnFailed(Exception ex, TaskCompletionSource<MachineUpdateResult> completionSource, DownloadUpdateResponse response, bool performDatabaseRollback, String dbBackupFile, String backupsFolder, String tempDbName, Tango.Core.DataSource localDataSource, String tempUpdatePackageFolder = null, PublishInfo tupPublishInfo = null)
{
LogManager.Log(ex, "An error occurred in machine update.");
@@ -217,6 +220,8 @@ namespace Tango.PPC.Common.MachineUpdate
completionSource.SetException(ex);
+ String logs = GetLogsStringAndClear();
+
if (response != null)
{
try
@@ -226,19 +231,65 @@ namespace Tango.PPC.Common.MachineUpdate
Token = response.NotifyCompletedToken,
Status = BL.Enumerations.TangoUpdateStatuses.UpdateFailed,
FailedReason = ex.FlattenMessage(),
- FailedLog = GetLogsStringAndClear(),
+ FailedLog = logs,
});
}
catch (Exception xx)
{
LogManager.Log(xx, "Error notifying update failed.");
}
+
+ try
+ {
+ using (ObservablesContext db = ObservablesContext.CreateDefault())
+ {
+ TangoUpdate update = new TangoUpdate();
+ update.ApplicationVersion = response.Version;
+ update.FirmwareVersion = response.FirmwareVersion;
+ update.MachineGuid = _machineProvider.Machine.Guid;
+ update.UpdateStatus = BL.Enumerations.TangoUpdateStatuses.UpdateFailed;
+ update.StartDate = _updateStartDate;
+ update.EndDate = DateTime.UtcNow;
+ update.FailedReason = ex.FlattenMessage();
+ update.FailedLog = logs;
+ await db.SaveChangesAsync();
+ }
+ }
+ catch (Exception xxx)
+ {
+ LogManager.Log(xxx, "Error saving tango update information to database.");
+ }
+ }
+
+
+ if (tupPublishInfo != null)
+ {
+ try
+ {
+ using (ObservablesContext db = ObservablesContext.CreateDefault())
+ {
+ TangoUpdate update = new TangoUpdate();
+ update.ApplicationVersion = tupPublishInfo.ApplicationVersion;
+ update.FirmwareVersion = tupPublishInfo.GetFirmwareVersion();
+ update.MachineGuid = _machineProvider.Machine.Guid;
+ update.UpdateStatus = BL.Enumerations.TangoUpdateStatuses.OfflineUpdateFailed;
+ update.StartDate = _updateStartDate;
+ update.EndDate = DateTime.UtcNow;
+ update.FailedReason = ex.FlattenMessage();
+ update.FailedLog = logs;
+ await db.SaveChangesAsync();
+ }
+ }
+ catch (Exception xxx)
+ {
+ LogManager.Log(xxx, "Error saving tango offline update information to database.");
+ }
}
_isUpdating = false;
}
- private async void OnCompleted(MachineUpdateResult result, TaskCompletionSource<MachineUpdateResult> completionSource, DownloadUpdateResponse response, String tempDbName, String backupsFolder, Core.DataSource localDataSource)
+ private async void OnCompleted(MachineUpdateResult result, TaskCompletionSource<MachineUpdateResult> completionSource, DownloadUpdateResponse response, String tempDbName, String backupsFolder, Core.DataSource localDataSource, PublishInfo tupPublishInfo = null)
{
await Task.Factory.StartNew(() =>
{
@@ -299,26 +350,47 @@ namespace Tango.PPC.Common.MachineUpdate
{
LogManager.Log(ex, "Error notifying update completed.");
}
+
+ try
+ {
+ using (ObservablesContext db = ObservablesContext.CreateDefault())
+ {
+ TangoUpdate update = new TangoUpdate();
+ update.ApplicationVersion = response.Version;
+ update.FirmwareVersion = response.FirmwareVersion;
+ update.MachineGuid = (await db.Machines.FirstAsync()).Guid;
+ update.UpdateStatus = BL.Enumerations.TangoUpdateStatuses.UpdateCompleted;
+ update.StartDate = _updateStartDate;
+ update.EndDate = DateTime.UtcNow;
+ await db.SaveChangesAsync();
+ }
+ }
+ catch (Exception ex)
+ {
+ LogManager.Log(ex, "Error saving tango update information to database.");
+ }
}
- _isUpdating = false;
- }
- private void OnCompleted(UpdateDBResponse response)
- {
- if (response != null)
+ if (tupPublishInfo != null)
{
try
{
- var r = _client.NotifyUpdateCompleted(new MachineUpdateCompletedRequest()
+ using (ObservablesContext db = ObservablesContext.CreateDefault())
{
- Token = response.NotifyCompletedToken,
- Status = BL.Enumerations.TangoUpdateStatuses.DatabaseCompleted,
- }).Result;
+ TangoUpdate update = new TangoUpdate();
+ update.ApplicationVersion = tupPublishInfo.ApplicationVersion;
+ update.FirmwareVersion = tupPublishInfo.GetFirmwareVersion();
+ update.MachineGuid = _machineProvider.Machine.Guid;
+ update.UpdateStatus = BL.Enumerations.TangoUpdateStatuses.OfflineUpdateCompleted;
+ update.StartDate = _updateStartDate;
+ update.EndDate = DateTime.UtcNow;
+ await db.SaveChangesAsync();
+ }
}
- catch (Exception ex)
+ catch (Exception xxx)
{
- LogManager.Log(ex, "Error notifying database completed.");
+ LogManager.Log(xxx, "Error saving tango offline update information to database.");
}
}
@@ -357,6 +429,8 @@ namespace Tango.PPC.Common.MachineUpdate
}
}
+ String logs = GetLogsStringAndClear();
+
if (response != null)
{
try
@@ -366,13 +440,74 @@ namespace Tango.PPC.Common.MachineUpdate
Token = response.NotifyCompletedToken,
Status = BL.Enumerations.TangoUpdateStatuses.DatabaseFailed,
FailedReason = ex.FlattenMessage(),
- FailedLog = GetLogsStringAndClear(),
+ FailedLog = logs,
}).Result;
}
catch (Exception xx)
{
LogManager.Log(xx, "Error notifying database failed.");
}
+
+ try
+ {
+ using (ObservablesContext db = ObservablesContext.CreateDefault())
+ {
+ TangoUpdate update = new TangoUpdate();
+ update.ApplicationVersion = _app_manager.Version.ToString();
+ update.FirmwareVersion = _app_manager.FirmwareVersion.ToString();
+ update.MachineGuid = _machineProvider.Machine.Guid;
+ update.UpdateStatus = BL.Enumerations.TangoUpdateStatuses.DatabaseFailed;
+ update.StartDate = _updateStartDate;
+ update.EndDate = DateTime.UtcNow;
+ update.FailedReason = ex.FlattenMessage();
+ update.FailedLog = logs;
+ db.SaveChanges();
+ }
+ }
+ catch (Exception exx)
+ {
+ LogManager.Log(exx, "Error saving database update information to database.");
+ }
+ }
+
+ _isUpdating = false;
+ }
+
+ private void OnCompleted(UpdateDBResponse response)
+ {
+ if (response != null)
+ {
+ try
+ {
+ var r = _client.NotifyUpdateCompleted(new MachineUpdateCompletedRequest()
+ {
+ Token = response.NotifyCompletedToken,
+ Status = BL.Enumerations.TangoUpdateStatuses.DatabaseCompleted,
+ }).Result;
+ }
+ catch (Exception ex)
+ {
+ LogManager.Log(ex, "Error notifying database completed.");
+ }
+
+ try
+ {
+ using (ObservablesContext db = ObservablesContext.CreateDefault())
+ {
+ TangoUpdate update = new TangoUpdate();
+ update.ApplicationVersion = _app_manager.Version.ToString();
+ update.FirmwareVersion = _app_manager.FirmwareVersion.ToString();
+ update.MachineGuid = _machineProvider.Machine.Guid;
+ update.UpdateStatus = BL.Enumerations.TangoUpdateStatuses.DatabaseCompleted;
+ update.StartDate = _updateStartDate;
+ update.EndDate = DateTime.UtcNow;
+ db.SaveChanges();
+ }
+ }
+ catch (Exception ex)
+ {
+ LogManager.Log(ex, "Error saving database update information to database.");
+ }
}
_isUpdating = false;
@@ -404,6 +539,7 @@ namespace Tango.PPC.Common.MachineUpdate
/// <exception cref="System.InvalidProgramException">Database tango does not exists.</exception>
public async Task<MachineUpdateResult> Update(bool setupFirmware, bool setupFPGA)
{
+ _updateStartDate = DateTime.UtcNow;
_logs.Clear();
TaskCompletionSource<MachineUpdateResult> result = new TaskCompletionSource<MachineUpdateResult>();
@@ -739,6 +875,7 @@ namespace Tango.PPC.Common.MachineUpdate
/// <returns></returns>
public Task UpdateDB(DbCompareResult dbCompareResult, String serialNumber)
{
+ _updateStartDate = DateTime.UtcNow;
_logs.Clear();
return Task.Factory.StartNew(() =>
@@ -975,6 +1112,7 @@ namespace Tango.PPC.Common.MachineUpdate
/// <returns></returns>
public async Task<MachineUpdateResult> UpdateFromTUP(string fileName, bool setupFirmware, bool setupFPGA)
{
+ _updateStartDate = DateTime.UtcNow;
_logs.Clear();
TaskCompletionSource<MachineUpdateResult> result = new TaskCompletionSource<MachineUpdateResult>();
@@ -986,6 +1124,7 @@ namespace Tango.PPC.Common.MachineUpdate
String tempDbFileName = tempDbName + ".bak";
String backupsFolder = "C:\\Backups";
bool replaceBinaries = false;
+ PublishInfo publishInfo = null;
String serialNumber = _machineProvider.Machine.SerialNumber;
@@ -1035,7 +1174,7 @@ namespace Tango.PPC.Common.MachineUpdate
//Extracting publish info
UpdateProgress("Exploring package", "Verifying...");
- PublishInfo publishInfo = PublishInfo.FromJson(File.ReadAllText(Path.Combine(_newPackageTempFolder, "version.json")));
+ publishInfo = PublishInfo.FromJson(File.ReadAllText(Path.Combine(_newPackageTempFolder, "version.json")));
if (!publishInfo.IsMachineTupPackage)
{
@@ -1214,7 +1353,7 @@ namespace Tango.PPC.Common.MachineUpdate
handler.Failed += (_, ex) =>
{
stream.Dispose();
- OnFailed(ex, result, null, performDatabaseRollback, dbBackupFile, backupsFolder, tempDbName, localDataSource, _newPackageTempFolder);
+ OnFailed(ex, result, null, performDatabaseRollback, dbBackupFile, backupsFolder, tempDbName, localDataSource, _newPackageTempFolder, publishInfo);
};
handler.Completed += (_, __) =>
{
@@ -1224,12 +1363,12 @@ namespace Tango.PPC.Common.MachineUpdate
{
UpdatePackagePath = _newPackageTempFolder,
RequiresBinariesUpdate = replaceBinaries,
- }, result, null, tempDbName, backupsFolder, localDataSource);
+ }, result, null, tempDbName, backupsFolder, localDataSource, publishInfo);
};
handler.Canceled += (_, __) =>
{
stream.Dispose();
- OnFailed(new Exception("The operation has been canceled."), result, null, performDatabaseRollback, dbBackupFile, backupsFolder, tempDbName, localDataSource, _newPackageTempFolder);
+ OnFailed(new Exception("The operation has been canceled."), result, null, performDatabaseRollback, dbBackupFile, backupsFolder, tempDbName, localDataSource, _newPackageTempFolder, publishInfo);
};
handler.Progress += (_, e) =>
{
@@ -1242,12 +1381,12 @@ namespace Tango.PPC.Common.MachineUpdate
{
UpdatePackagePath = _newPackageTempFolder,
RequiresBinariesUpdate = replaceBinaries,
- }, result, null, tempDbName, backupsFolder, localDataSource);
+ }, result, null, tempDbName, backupsFolder, localDataSource, publishInfo);
}
}
catch (Exception ex)
{
- OnFailed(ex, result, null, performDatabaseRollback, dbBackupFile, backupsFolder, tempDbName, localDataSource, _newPackageTempFolder);
+ OnFailed(ex, result, null, performDatabaseRollback, dbBackupFile, backupsFolder, tempDbName, localDataSource, _newPackageTempFolder, publishInfo);
}
return await result.Task;
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/Publish/PublishInfo.cs b/Software/Visual_Studio/PPC/Tango.PPC.Common/Publish/PublishInfo.cs
index df5690a05..1bbdb80d0 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.Common/Publish/PublishInfo.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/Publish/PublishInfo.cs
@@ -32,5 +32,21 @@ namespace Tango.PPC.Common.Publish
{
return JsonConvert.DeserializeObject<PublishInfo>(json);
}
+
+ public String GetFirmwareVersion()
+ {
+ Version version = new Version("1.0.0.0");
+
+ var s = Firmware.FileDescriptors.FirstOrDefault(x => x.Destination == VersionFileDestination.Mcu);
+ if (s != null)
+ {
+ if (Version.TryParse(s.Version,out version))
+ {
+ return version.ToString();
+ }
+ }
+
+ return version.ToString();
+ }
}
}
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/Synchronization/DefaultMachineDataSynchronizer.cs b/Software/Visual_Studio/PPC/Tango.PPC.Common/Synchronization/DefaultMachineDataSynchronizer.cs
index 8260eb4b3..22c3dbe20 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.Common/Synchronization/DefaultMachineDataSynchronizer.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/Synchronization/DefaultMachineDataSynchronizer.cs
@@ -40,6 +40,7 @@ namespace Tango.PPC.Common.Synchronization
public int MaxJobs { get; set; }
public int MaxJobRuns { get; set; }
public int MaxMachinesEvents { get; set; }
+ public int MaxOfflineUpdates { get; set; }
private SynchronizationStatus _currentStatus;
public SynchronizationStatus CurrentStatus
@@ -80,6 +81,7 @@ namespace Tango.PPC.Common.Synchronization
MaxJobs = 10;
MaxJobRuns = 100;
MaxMachinesEvents = 100;
+ MaxOfflineUpdates = 50;
var settings = SettingsManager.Default.GetOrCreate<PPCSettings>();
Interval = settings.SynchronizationInterval;
@@ -190,6 +192,21 @@ namespace Tango.PPC.Common.Synchronization
request.MachineEvents.Add(dto);
}
}
+
+ if (syncDiagnostics)
+ {
+ LogManager.Log("Checking Offline Updates...");
+
+ var tangoUpdates = await db.TangoUpdates.Where(x => !x.IsSynchronized && (x.Status == (int)TangoUpdateStatuses.OfflineUpdateCompleted || x.Status == (int)TangoUpdateStatuses.OfflineUpdateFailed)).Take(MaxOfflineUpdates).OrderByDescending(x => x.LastUpdated).ToListAsync();
+ List<TangoUpdateDTO> dtos = new List<TangoUpdateDTO>();
+
+ foreach (var tangoUpdate in tangoUpdates)
+ {
+ tangoUpdate.IsSynchronized = true;
+ var dto = TangoUpdateDTO.FromObservable(tangoUpdate);
+ request.OfflineUpdates.Add(dto);
+ }
+ }
}
return request;
@@ -247,6 +264,22 @@ namespace Tango.PPC.Common.Synchronization
}
}
+ //Finalize tango updates
+ foreach (var tangoUpdate in request.OfflineUpdates)
+ {
+ var failedTangoUpdate = response.FailedOfflineUpdates.SingleOrDefault(x => x.Guid == tangoUpdate.Guid);
+
+ if (failedTangoUpdate == null)
+ {
+ var dbTangoUpdate = await db.TangoUpdates.SingleOrDefaultAsync(x => x.Guid == tangoUpdate.Guid);
+ dbTangoUpdate.IsSynchronized = true;
+ }
+ else
+ {
+ LogManager.Log($"Synchronization Error - TangoUpdate '{tangoUpdate.ID}' cannot be stored on the server due to the following reason:\n{failedTangoUpdate.Reason}", LogCategory.Error);
+ }
+ }
+
await db.SaveChangesAsync();
}
}
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/Web/CheckForUpdateResponse.cs b/Software/Visual_Studio/PPC/Tango.PPC.Common/Web/CheckForUpdateResponse.cs
index 63d870834..a857a20a1 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.Common/Web/CheckForUpdateResponse.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/Web/CheckForUpdateResponse.cs
@@ -12,6 +12,7 @@ namespace Tango.PPC.Common.Web
public bool IsUpdateAvailable { get; set; }
public bool IsDatabaseUpdateAvailable { get; set; }
public String Version { get; set; }
+ public String FirmwareVersion { get; set; }
public bool SetupFirmware { get; set; }
public bool SetupFPGA { get; set; }
public UpdateDBResponse UpdateDBResponse { get; set; }
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/Web/DownloadUpdateResponse.cs b/Software/Visual_Studio/PPC/Tango.PPC.Common/Web/DownloadUpdateResponse.cs
index b092aedbe..2fc7e4810 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.Common/Web/DownloadUpdateResponse.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/Web/DownloadUpdateResponse.cs
@@ -14,6 +14,8 @@ namespace Tango.PPC.Common.Web
public String Version { get; set; }
+ public String FirmwareVersion { get; set; }
+
public String BlobAddress { get; set; }
public String CdnAddress { get; set; }
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/Web/MachineSetupResponse.cs b/Software/Visual_Studio/PPC/Tango.PPC.Common/Web/MachineSetupResponse.cs
index 714a413ab..a642eddf2 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.Common/Web/MachineSetupResponse.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/Web/MachineSetupResponse.cs
@@ -14,6 +14,8 @@ namespace Tango.PPC.Common.Web
public String Version { get; set; }
+ public String FirmwareVersion { get; set; }
+
public String BlobAddress { get; set; }
public String CdnAddress { get; set; }
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/Web/UploadMachineDataRequest.cs b/Software/Visual_Studio/PPC/Tango.PPC.Common/Web/UploadMachineDataRequest.cs
index dc0b05988..d7475819c 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.Common/Web/UploadMachineDataRequest.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/Web/UploadMachineDataRequest.cs
@@ -14,6 +14,7 @@ namespace Tango.PPC.Common.Web
public List<JobDTO> Jobs { get; set; }
public List<JobRunDTO> JobRuns { get; set; }
public List<MachinesEventDTO> MachineEvents { get; set; }
+ public List<TangoUpdateDTO> OfflineUpdates { get; set; }
public String ApplicationVersion { get; set; }
public String FirmwareVersion { get; set; }
@@ -22,6 +23,7 @@ namespace Tango.PPC.Common.Web
Jobs = new List<JobDTO>();
JobRuns = new List<JobRunDTO>();
MachineEvents = new List<MachinesEventDTO>();
+ OfflineUpdates = new List<TangoUpdateDTO>();
}
}
}
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/Web/UploadMachineDataResponse.cs b/Software/Visual_Studio/PPC/Tango.PPC.Common/Web/UploadMachineDataResponse.cs
index e4dda4013..0119c07b6 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.Common/Web/UploadMachineDataResponse.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/Web/UploadMachineDataResponse.cs
@@ -14,6 +14,7 @@ namespace Tango.PPC.Common.Web
public List<SynchronizationFailedEntity> FailedJobs { get; set; }
public List<SynchronizationFailedEntity> FailedJobRuns { get; set; }
public List<SynchronizationFailedEntity> FailedMachineEvents { get; set; }
+ public List<SynchronizationFailedEntity> FailedOfflineUpdates { get; set; }
public String NotifyCompletedToken { get; set; }
public UploadMachineDataResponse()
@@ -21,6 +22,7 @@ namespace Tango.PPC.Common.Web
FailedJobs = new List<SynchronizationFailedEntity>();
FailedJobRuns = new List<SynchronizationFailedEntity>();
FailedMachineEvents = new List<SynchronizationFailedEntity>();
+ FailedOfflineUpdates = new List<SynchronizationFailedEntity>();
}
}
}