aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/ViewModels/MachineTechViewVM.cs
diff options
context:
space:
mode:
authorAvi Levkovich <avi@twine-s.com>2018-05-07 12:22:00 +0300
committerAvi Levkovich <avi@twine-s.com>2018-05-07 12:22:00 +0300
commit76ef6d6073bf0396e7a1f4c075bae0e5f3d32f5f (patch)
tree6d325d0f342f416d67a16980f4fa7db24bf4331a /Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/ViewModels/MachineTechViewVM.cs
parentfc9cc2e7b2bc3b6cc5f9c94f911e9c661a99f01a (diff)
parent9e934f90fb35690c6eec473569b9a8310ca6f334 (diff)
downloadTango-76ef6d6073bf0396e7a1f4c075bae0e5f3d32f5f.tar.gz
Tango-76ef6d6073bf0396e7a1f4c075bae0e5f3d32f5f.zip
MessageType
Diffstat (limited to 'Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/ViewModels/MachineTechViewVM.cs')
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/ViewModels/MachineTechViewVM.cs226
1 files changed, 222 insertions, 4 deletions
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/ViewModels/MachineTechViewVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/ViewModels/MachineTechViewVM.cs
index 4cc1852a6..9c587b7c8 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/ViewModels/MachineTechViewVM.cs
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/ViewModels/MachineTechViewVM.cs
@@ -30,6 +30,7 @@ using Tango.BL.Enumerations;
using Tango.BL;
using Tango.MachineStudio.Common.EventLogging;
using Tango.MachineStudio.Common;
+using Tango.Core.Commands;
namespace Tango.MachineStudio.Technician.ViewModels
{
@@ -122,11 +123,11 @@ namespace Tango.MachineStudio.Technician.ViewModels
set { _hideMenu = value; RaisePropertyChangedAuto(); }
}
- private PushDiagnosticsResponse _currentDiagnosticsResponse;
+ private StartDiagnosticsResponse _currentDiagnosticsResponse;
/// <summary>
/// Gets or sets the current diagnostics response.
/// </summary>
- public PushDiagnosticsResponse CurrentDiagnosticsResponse
+ public StartDiagnosticsResponse CurrentDiagnosticsResponse
{
get { return _currentDiagnosticsResponse; }
set { _currentDiagnosticsResponse = value; RaisePropertyChanged(nameof(CurrentDiagnosticsResponse)); }
@@ -164,6 +165,21 @@ namespace Tango.MachineStudio.Technician.ViewModels
/// </summary>
public RelayCommand OpenProjectCommand { get; set; }
+ /// <summary>
+ /// Gets or sets the synchronize hardware configuration command.
+ /// </summary>
+ public RelayCommand SyncHardwareConfigurationCommand { get; set; }
+
+ /// <summary>
+ /// Gets or sets the upload hardware configuration command.
+ /// </summary>
+ public RelayCommand UploadHardwareConfigurationCommand { get; set; }
+
+ /// <summary>
+ /// Gets or sets the reset hardware configuration command.
+ /// </summary>
+ public RelayCommand ResetHardwareConfigurationCommand { get; set; }
+
#endregion
#region Constructors
@@ -200,6 +216,10 @@ namespace Tango.MachineStudio.Technician.ViewModels
}
_diagnosticsFrameProvider.FrameReceived += DiagnosticsFrameProvider_FrameReceived;
+
+ UploadHardwareConfigurationCommand = new RelayCommand(UploadHardwareConfiguration);
+ SyncHardwareConfigurationCommand = new RelayCommand(SyncHardwareConfiguration);
+ ResetHardwareConfigurationCommand = new RelayCommand(ResetHardwareConfiguration);
}
#endregion
@@ -221,7 +241,7 @@ namespace Tango.MachineStudio.Technician.ViewModels
/// </summary>
/// <param name="sender">The sender.</param>
/// <param name="response">The response.</param>
- private void DiagnosticsFrameProvider_FrameReceived(object sender, PushDiagnosticsResponse response)
+ private void DiagnosticsFrameProvider_FrameReceived(object sender, StartDiagnosticsResponse response)
{
PopulateDiagnosticsData(response);
}
@@ -234,7 +254,7 @@ namespace Tango.MachineStudio.Technician.ViewModels
/// Populates the diagnostics data to the proper elements.
/// </summary>
/// <param name="data">The data.</param>
- private void PopulateDiagnosticsData(PushDiagnosticsResponse data)
+ private void PopulateDiagnosticsData(StartDiagnosticsResponse data)
{
if (DateTime.Now > _lastDiagnosticsResponseUpdate.AddMilliseconds(MIN_DIAGNOSTICS_UPDATE_MILI))
{
@@ -489,6 +509,18 @@ namespace Tango.MachineStudio.Technician.ViewModels
var editor = CreateElement<ControllerElementEditor, ControllerItem, TechController>(bounds, Adapter.TechControllers.FirstOrDefault());
InitControllerItem(editor.ControllerItem);
}
+ else if (item is PidItem)
+ {
+ CreateElement<PidElementEditor, PidItem, HardwarePidControlType>(bounds, Adapter.HardwarePidControlTypes.FirstOrDefault());
+ }
+ else if (item is WinderItem)
+ {
+ CreateElement<WinderElementEditor, WinderItem, HardwareWinderType>(bounds, Adapter.HardwareWinderTypes.FirstOrDefault());
+ }
+ else if (item is DancerItem)
+ {
+ CreateElement<DancerElementEditor, DancerItem, HardwareDancerType>(bounds, Adapter.HardwareDancerTypes.FirstOrDefault());
+ }
}
/// <summary>
@@ -588,6 +620,21 @@ namespace Tango.MachineStudio.Technician.ViewModels
var editor = CreateElement<ControllerElementEditor>(item);
InitControllerItem(editor.ControllerItem);
}
+ else if (item is PidItem)
+ {
+ (item as PidItem).HardwarePidType = Adapter.HardwarePidControlTypes.FirstOrDefault(x => x.Guid == item.ItemGuid);
+ CreateElement<PidElementEditor>(item);
+ }
+ else if (item is WinderItem)
+ {
+ (item as WinderItem).HardwareWinderType = Adapter.HardwareWinderTypes.FirstOrDefault(x => x.Guid == item.ItemGuid);
+ CreateElement<WinderElementEditor>(item);
+ }
+ else if (item is DancerItem)
+ {
+ (item as DancerItem).HardwareDancerType = Adapter.HardwareDancerTypes.FirstOrDefault(x => x.Guid == item.ItemGuid);
+ CreateElement<DancerElementEditor>(item);
+ }
}
/// <summary>
@@ -1229,5 +1276,176 @@ namespace Tango.MachineStudio.Technician.ViewModels
}
#endregion
+
+ #region Hardware Configuration
+
+ private void SyncHardwareConfiguration()
+ {
+ var elements = Elements.ToList();
+
+ if (MachineOperator != null && MachineOperator.CurrentHardwareConfiguration != null)
+ {
+ var config = MachineOperator.CurrentHardwareConfiguration;
+
+ foreach (var motorConfig in config.Motors)
+ {
+ var itemConfig = MotorItem.MotorConfigurations.SingleOrDefault(x => x.HardwareMotorType.Code == motorConfig.HardwareMotorType.ToInt32());
+
+ if (itemConfig != null)
+ {
+ motorConfig.MapPrimitivesTo(itemConfig);
+ }
+ }
+
+ foreach (var pidConfig in config.PidControls)
+ {
+ var itemConfig = PidItem.PidConfigurations.SingleOrDefault(x => x.HardwarePidControlType.Code == pidConfig.HardwarePidControlType.ToInt32());
+
+ if (itemConfig != null)
+ {
+ pidConfig.MapPrimitivesTo(itemConfig);
+ }
+ }
+
+ foreach (var winderConfig in config.Winders)
+ {
+ var itemConfig = WinderItem.WinderConfigurations.SingleOrDefault(x => x.HardwareWinderType.Code == winderConfig.HardwareWinderType.ToInt32());
+
+ if (itemConfig != null)
+ {
+ winderConfig.MapPrimitivesTo(itemConfig);
+ }
+ }
+
+ foreach (var dancerConfig in config.Dancers)
+ {
+ var itemConfig = DancerItem.DancerConfigurations.SingleOrDefault(x => x.HardwareDancerType.Code == dancerConfig.HardwareDancerType.ToInt32());
+
+ if (itemConfig != null)
+ {
+ dancerConfig.MapPrimitivesTo(itemConfig);
+ }
+ }
+
+ _notification.ShowInfo("Visual elements synced to the last uploaded hardware configuration.");
+ }
+ else
+ {
+ ResetHardwareConfiguration();
+ }
+ }
+
+ private async void UploadHardwareConfiguration()
+ {
+ if (MachineOperator != null)
+ {
+ var hw = ApplicationManager.ConnectedMachine.Machine.Configuration.HardwareVersion.Clone();
+
+ foreach (var motorConfig in hw.HardwareMotors)
+ {
+ var itemConfig = MotorItem.MotorConfigurations.SingleOrDefault(x => x.HardwareMotorType.Code == motorConfig.HardwareMotorType.Code);
+
+ if (itemConfig != null)
+ {
+ itemConfig.MapPrimitivesTo(motorConfig);
+ }
+ }
+
+ foreach (var pidConfig in hw.HardwarePidControls)
+ {
+ var itemConfig = PidItem.PidConfigurations.SingleOrDefault(x => x.HardwarePidControlType.Code == pidConfig.HardwarePidControlType.Code);
+
+ if (itemConfig != null)
+ {
+ itemConfig.MapPrimitivesTo(pidConfig);
+ }
+ }
+
+ foreach (var winderConfig in hw.HardwareWinders)
+ {
+ var itemConfig = WinderItem.WinderConfigurations.SingleOrDefault(x => x.HardwareWinderType.Code == winderConfig.HardwareWinderType.Code);
+
+ if (itemConfig != null)
+ {
+ itemConfig.MapPrimitivesTo(winderConfig);
+ }
+ }
+
+ foreach (var DancerConfig in hw.HardwareDancers)
+ {
+ var itemConfig = DancerItem.DancerConfigurations.SingleOrDefault(x => x.HardwareDancerType.Code == DancerConfig.HardwareDancerType.Code);
+
+ if (itemConfig != null)
+ {
+ itemConfig.MapPrimitivesTo(DancerConfig);
+ }
+ }
+
+ using (_notification.PushTaskItem("Uploading hardware configuration..."))
+ {
+ try
+ {
+ await MachineOperator.UploadHardwareConfiguration(hw, ApplicationManager.ConnectedMachine.Machine.Configuration);
+ }
+ catch (Exception ex)
+ {
+ LogManager.Log(ex, "Error uploading hardware configuration.");
+ _notification.ShowError("An error occurred while trying to upload the hardware configuration." + Environment.NewLine + ex.Message);
+ }
+ }
+ }
+ }
+
+ private void ResetHardwareConfiguration()
+ {
+ if (MachineOperator != null)
+ {
+ var hw = ApplicationManager.ConnectedMachine.Machine.Configuration.HardwareVersion;
+
+ foreach (var motorConfig in hw.HardwareMotors)
+ {
+ var itemConfig = MotorItem.MotorConfigurations.SingleOrDefault(x => x.HardwareMotorType.Code == motorConfig.HardwareMotorType.Code);
+
+ if (itemConfig != null)
+ {
+ motorConfig.MapPrimitivesTo(itemConfig);
+ }
+ }
+
+ foreach (var pidConfig in hw.HardwarePidControls)
+ {
+ var itemConfig = PidItem.PidConfigurations.SingleOrDefault(x => x.HardwarePidControlType.Code == pidConfig.HardwarePidControlType.Code);
+
+ if (itemConfig != null)
+ {
+ pidConfig.MapPrimitivesTo(itemConfig);
+ }
+ }
+
+ foreach (var winderConfig in hw.HardwareWinders)
+ {
+ var itemConfig = WinderItem.WinderConfigurations.SingleOrDefault(x => x.HardwareWinderType.Code == winderConfig.HardwareWinderType.Code);
+
+ if (itemConfig != null)
+ {
+ winderConfig.MapPrimitivesTo(itemConfig);
+ }
+ }
+
+ foreach (var dancerConfig in hw.HardwareDancers)
+ {
+ var itemConfig = DancerItem.DancerConfigurations.SingleOrDefault(x => x.HardwareDancerType.Code == dancerConfig.HardwareDancerType.Code);
+
+ if (itemConfig != null)
+ {
+ dancerConfig.MapPrimitivesTo(itemConfig);
+ }
+ }
+
+ _notification.ShowInfo("Visual elements synced to hardware version " + hw.Name + ", " + hw.Version + ".");
+ }
+ }
+
+ #endregion
}
}