aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common
diff options
context:
space:
mode:
authorRoy Ben-Shabat <Roy@Twine-s.com>2018-03-22 17:38:12 +0200
committerRoy Ben-Shabat <Roy@Twine-s.com>2018-03-22 17:38:12 +0200
commit86197cd0ec87a6cc186e90f75d848adc6dfa2285 (patch)
tree0e62585bae9e84a554bee2b6922fb059d72b9810 /Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common
parent3de0d44f88b713e7b018f470c7bd318a775345b7 (diff)
downloadTango-86197cd0ec87a6cc186e90f75d848adc6dfa2285.tar.gz
Tango-86197cd0ec87a6cc186e90f75d848adc6dfa2285.zip
Simulate Hardware Events using DiagnosticsFrameProvider.
Diffstat (limited to 'Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common')
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Diagnostics/DefaultDiagnosticsFrameProvider.cs66
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Diagnostics/IDiagnosticsFrameProvider.cs11
2 files changed, 73 insertions, 4 deletions
diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Diagnostics/DefaultDiagnosticsFrameProvider.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Diagnostics/DefaultDiagnosticsFrameProvider.cs
index 07700bdd0..8f1076bb8 100644
--- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Diagnostics/DefaultDiagnosticsFrameProvider.cs
+++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Diagnostics/DefaultDiagnosticsFrameProvider.cs
@@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
+using Tango.Core;
using Tango.Integration.Operation;
using Tango.Integration.Services;
using Tango.MachineStudio.Common.StudioApplication;
@@ -14,17 +15,66 @@ namespace Tango.MachineStudio.Common.Diagnostics
/// Represents the default diagnostics frame provider.
/// </summary>
/// <seealso cref="Tango.MachineStudio.Common.Diagnostics.IDiagnosticsFrameProvider" />
- public class DefaultDiagnosticsFrameProvider : IDiagnosticsFrameProvider
+ public class DefaultDiagnosticsFrameProvider : ExtendedObject, IDiagnosticsFrameProvider
{
+ private IStudioApplicationManager _application;
+
+ /// <summary>
+ /// Occurs when the machine events state provider has changed.
+ /// </summary>
+ public event EventHandler<IMachineEventsStateProvider> MachineEventsStateProviderChanged;
+
+ private bool _disable;
/// <summary>
/// Disables the frame delivery from the current connected machine and enables the manual push frame method.
/// </summary>
- public bool Disable { get; set; }
+ public bool Disable
+ {
+ get { return _disable; }
+ set
+ {
+ _disable = value;
+
+ if (!_disable)
+ {
+ if (_application.ConnectedMachine != null)
+ {
+ MachineEventsStateProvider = _application.ConnectedMachine.MachineEventsStateProvider;
+ }
+ else
+ {
+ MachineEventsStateProvider = new DefaultMachineEventsStateProvider();
+ }
+ }
+ else
+ {
+ if (_application.ConnectedMachine != null)
+ {
+ MachineEventsStateProvider = new DefaultMachineEventsStateProvider();
+ }
+ }
+ }
+ }
/// <summary>
/// Occurs when a new data frame is available.
/// </summary>
- public event EventHandler<PushDiagnosticsResponse> FrameReceived;
+ public event EventHandler<PushDiagnosticsResponse> FrameReceived;
+
+ private IMachineEventsStateProvider _machineEventsStateProvider;
+ /// <summary>
+ /// Gets or sets the machine events state provider used to get notifications about current machine events and errors.
+ /// </summary>
+ public IMachineEventsStateProvider MachineEventsStateProvider
+ {
+ get { return _machineEventsStateProvider; }
+ set
+ {
+ _machineEventsStateProvider = value;
+ RaisePropertyChangedAuto();
+ MachineEventsStateProviderChanged?.Invoke(this, _machineEventsStateProvider);
+ }
+ }
/// <summary>
/// Initializes a new instance of the <see cref="DefaultDiagnosticsFrameProvider"/> class.
@@ -32,6 +82,8 @@ namespace Tango.MachineStudio.Common.Diagnostics
/// <param name="applicationManager">The application manager.</param>
public DefaultDiagnosticsFrameProvider(IStudioApplicationManager applicationManager)
{
+ _application = applicationManager;
+ MachineEventsStateProvider = new DefaultMachineEventsStateProvider();
applicationManager.ConnectedMachineChanged += ApplicationManager_ConnectedMachineChanged;
}
@@ -44,7 +96,12 @@ namespace Tango.MachineStudio.Common.Diagnostics
{
if (machine != null)
{
- (machine as MachineOperator).DiagnosticsDataAvailable += DefaultDiagnosticsFrameProvider_DiagnosticsDataAvailable;
+ machine.DiagnosticsDataAvailable += DefaultDiagnosticsFrameProvider_DiagnosticsDataAvailable;
+
+ if (!Disable)
+ {
+ MachineEventsStateProvider = machine.MachineEventsStateProvider;
+ }
}
}
@@ -70,6 +127,7 @@ namespace Tango.MachineStudio.Common.Diagnostics
if (Disable)
{
OnFrameReceived(frame);
+ MachineEventsStateProvider.ApplyEvents(frame.Events);
}
}
diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Diagnostics/IDiagnosticsFrameProvider.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Diagnostics/IDiagnosticsFrameProvider.cs
index 0d63b59b6..ab4780a1f 100644
--- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Diagnostics/IDiagnosticsFrameProvider.cs
+++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Diagnostics/IDiagnosticsFrameProvider.cs
@@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
+using Tango.Integration.Operation;
using Tango.PMR.Diagnostics;
namespace Tango.MachineStudio.Common.Diagnostics
@@ -18,6 +19,16 @@ namespace Tango.MachineStudio.Common.Diagnostics
event EventHandler<PushDiagnosticsResponse> FrameReceived;
/// <summary>
+ /// Occurs when the machine events state provider has changed.
+ /// </summary>
+ event EventHandler<IMachineEventsStateProvider> MachineEventsStateProviderChanged;
+
+ /// <summary>
+ /// Gets or sets the machine events state provider used to get notifications about current machine events and errors.
+ /// </summary>
+ IMachineEventsStateProvider MachineEventsStateProvider { get; }
+
+ /// <summary>
/// Disables the frame delivery from the current connected machine and enables the manual push frame method.
/// </summary>
bool Disable { get; set; }