using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Tango.Integration.Operation; using Tango.Telemetry.Telemetries; namespace Tango.Telemetry.Sources { public class TelemetryWireStreamingSource : ITelemetryStreamingSource { private IMachineOperator _machineOperator; public bool IsStarted { get; private set; } public string Name { get; } = "Wire Streaming"; public bool RequiresTelemetryDuplicationTracking { get; } public event EventHandler TelemetryAvailable; public TelemetryWireStreamingSource(IMachineOperator machineOperator) { _machineOperator = machineOperator; } public void Start() { if (!IsStarted) { IsStarted = true; _machineOperator.TelemetryWireAvailable += MachineOperator_TelemetryWireAvailable; } } public void Stop() { if (IsStarted) { IsStarted = false; _machineOperator.TelemetryWireAvailable -= MachineOperator_TelemetryWireAvailable; } } private void MachineOperator_TelemetryWireAvailable(object sender, PMR.Diagnostics.StartTelemetryWireResponse e) { if (IsStarted) { TelemetryAvailable?.Invoke(this, new TelemetryAvailableEventArgs() { DisableDeliveryRetries = true, TelemetryObject = new TelemetryWire() { ID = String.Empty, Time = DateTime.UtcNow, Name = e.Name, Value = e.Value } }); } } public void Dispose() { Stop(); } } }