From 7a347e757764f69d2768bbfa1265fe771b73703b Mon Sep 17 00:00:00 2001 From: Roy Ben-Shabat Date: Thu, 1 Mar 2018 16:30:25 +0200 Subject: Changed Operators to Operation in Integration. Added UploadHardwareCOnfiguration method to IMachineOperator. --- .../Tango.Integration/Operators/MachineOperator.cs | 465 --------------------- 1 file changed, 465 deletions(-) delete mode 100644 Software/Visual_Studio/Tango.Integration/Operators/MachineOperator.cs (limited to 'Software/Visual_Studio/Tango.Integration/Operators/MachineOperator.cs') diff --git a/Software/Visual_Studio/Tango.Integration/Operators/MachineOperator.cs b/Software/Visual_Studio/Tango.Integration/Operators/MachineOperator.cs deleted file mode 100644 index 27dfdf428..000000000 --- a/Software/Visual_Studio/Tango.Integration/Operators/MachineOperator.cs +++ /dev/null @@ -1,465 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Tango.PMR; -using Tango.PMR.Diagnostics; -using Tango.Transport; -using Tango.Transport.Transporters; -using System.Reactive.Linq; -using System.Reactive.Concurrency; -using System.Reactive.Threading; -using Tango.PMR.Common; -using Tango.PMR.Printing; -using System.Reactive.Subjects; -using Tango.PMR.Debugging; -using Tango.Logging; -using Tango.Settings; -using System.IO; -using Tango.BL.Observables; - -namespace Tango.Integration.Operators -{ - /// - /// Represents the Tango machine operator default implementation. - /// - /// - /// - public class MachineOperator : BasicTransporter, IMachineOperator - { - private bool _diagnosticsSent; - private bool _debugSent; - private LogManager _embeddedLogger; - - public MachineOperator() : base() - { - EnableEmbeddedDebugging = true; - LogEmbeddedDebuggingToFile = true; - } - - #region Events - - /// - /// Occurs when there is new diagnostics data available. - /// - public event EventHandler DiagnosticsDataAvailable; - public event EventHandler DebugLogAvailable; - - #endregion - - #region Properties - - private bool _enableDiagnostics; - /// - /// Gets or sets a value indicating whether direct the embedded device to send diagnostics messages. - /// - public bool EnableDiagnostics - { - get { return _enableDiagnostics; } - set - { - if (_enableDiagnostics != value) - { - _enableDiagnostics = value; - RaisePropertyChangedAuto(); - OnEnableDiagnosticsChanged(value); - } - } - } - - private bool _enableEmbeddedDebugging; - /// - /// Gets or sets a value indicating whether to allow incoming debugging messages. - /// - /// - /// - public bool EnableEmbeddedDebugging - { - get - { - return _enableEmbeddedDebugging; - } - set - { - if (_enableEmbeddedDebugging != value) - { - _enableEmbeddedDebugging = value; - RaisePropertyChangedAuto(); - OnEnableEmbeddedDebuggingChanged(value); - } - } - } - - private bool _logEmbeddedDebuggingToFile; - /// - /// Gets or sets a value indicating whether to automatically save incoming log data from the embedded device. - /// - public bool LogEmbeddedDebuggingToFile - { - get { return _logEmbeddedDebuggingToFile; } - set - { - _logEmbeddedDebuggingToFile = value; RaisePropertyChangedAuto(); - - if (_logEmbeddedDebuggingToFile && _embeddedLogger == null) - { - _embeddedLogger = new LogManager(); - - String folder = SettingsManager.DefaultFolder + "\\embedded logs"; - Directory.CreateDirectory(folder); - FileLogger fileLogger = new FileLogger(Path.Combine(folder, String.Format("{1}-{0:yyyy-MM-dd_hh-mm-ss}.log", DateTime.Now, "embedded"))) { Enabled = true }; - _embeddedLogger.RegisterLogger(fileLogger); - } - } - } - - #endregion - - #region Virtual Methods - - /// - /// Called when the enable diagnostics property has been changed - /// - /// if set to true [value]. - protected virtual void OnEnableDiagnosticsChanged(bool value) - { - if (value && State == TransportComponentState.Connected && !_diagnosticsSent) - { - SendContinuousRequest(new TangoMessage(new PushDiagnosticsRequest() - { - PushMotors = true, - PushSensors = true, - - }, MessageType.PushDiagnosticsRequest)).ObserveOn(new NewThreadScheduler()).Subscribe( - (response) => - { - _diagnosticsSent = true; - OnDiagnosticsDataAvailable(response); - }, - (ex) => - { - _diagnosticsSent = false; - //Do I need separate event for each one ?? - }, - () => - { - _diagnosticsSent = false; - //What to do now ?? - }); - } - else - { - _diagnosticsSent = false; - } - } - - /// - /// Called when the enable embedded debugging has been changed - /// - /// if set to true [value]. - protected void OnEnableEmbeddedDebuggingChanged(bool value) - { - if (value && State == TransportComponentState.Connected && !_debugSent) - { - SendContinuousRequest(new DebugLogRequest()).ObserveOn(new NewThreadScheduler()) - .Subscribe - ( - (response) => - { - _debugSent = true; - OnDebugLogAvailable(response); - }, - (ex) => - { - _debugSent = false; - //Do I need separate event for each one ?? - }, - () => - { - _debugSent = false; - //What to do now ?? - }); - } - else - { - _debugSent = false; - } - } - - /// - /// Invokes the event. - /// - /// The sensors data. - protected virtual void OnDiagnosticsDataAvailable(PushDiagnosticsResponse data) - { - DiagnosticsDataAvailable?.Invoke(this, data); - } - - /// - /// Invokes the event. - /// - /// The sensors data. - protected virtual void OnDebugLogAvailable(DebugLogResponse data) - { - if (LogEmbeddedDebuggingToFile && _embeddedLogger != null) - { - _embeddedLogger.Log(new EmbeddedLogItem(data)); - } - - DebugLogAvailable?.Invoke(this, data); - } - - #endregion - - #region Protected Methods - - /// - /// Called when the component state has changed. - /// - /// The state. - protected override void OnStateChanged(TransportComponentState state) - { - base.OnStateChanged(state); - - if (state != TransportComponentState.Connected) - { - _diagnosticsSent = false; - _debugSent = false; - } - - OnEnableDiagnosticsChanged(EnableDiagnostics); - OnEnableEmbeddedDebuggingChanged(EnableEmbeddedDebugging); - } - - #endregion - - #region Public Methods - - /// - /// Prints the specified job using the specified job parameters. - /// - /// The job. - /// Process parameters table - /// - public JobHandler Print(Job job, ProcessParametersTable processParameters) - { - JobRequest request = new JobRequest(); - - JobTicket ticket = new JobTicket(); - ticket.EnableInterSegment = job.EnableInterSegment; - ticket.InterSegmentLength = job.InterSegmentLength; - ticket.Length = job.Length; - ticket.WindingMethod = (JobWindingMethod)job.WindingMethod.Code; - ticket.Spool = new JobSpool(); - - job.SpoolType.MapPrimitivesTo(ticket.Spool); - ticket.Spool.JobSpoolType = (JobSpoolType)job.SpoolType.Code; - - ProcessParameters process = new ProcessParameters(); - processParameters.MapPrimitivesTo(process); - ticket.ProcessParameters = process; - - foreach (var segment in job.Segments) - { - JobSegment jobSegment = new JobSegment(); - jobSegment.Length = segment.Length; - jobSegment.Name = segment.Name; - - foreach (var stop in segment.BrushStops) - { - JobBrushStop jobStop = new JobBrushStop(); - jobStop.Index = stop.Index; - jobStop.OffsetPercent = stop.OffsetPercent; - jobStop.OffsetMeters = stop.OffsetMeters; - - if (stop.LiquidVolumes == null) - { - stop.SetLiquidVolumes(job.Machine.Configuration, job.Rml, processParameters); - } - - foreach (var liquidVolume in stop.LiquidVolumes) - { - JobDispenser dispenser = new JobDispenser(); - dispenser.Index = liquidVolume.IdsPack.PackIndex; - dispenser.Volume = liquidVolume.Volume; - dispenser.DispenserLiquidType = (DispenserLiquidType)liquidVolume.IdsPack.LiquidType.Code; - dispenser.DispenserStepDivision = (DispenserStepDivision)liquidVolume.DispenserStepDivision; - - dispenser.NanoliterPerPulse = liquidVolume.IdsPack.DispenserType.NlPerPulse; - - dispenser.LiquidMaxNanoliterPerCentimeter = liquidVolume.LiquidMaxNanoliterPerCentimeter; - dispenser.NanoliterPerCentimeter = liquidVolume.NanoliterPerCentimeter; - dispenser.NanolitterPerSecond = liquidVolume.NanoliterPerSecond; - dispenser.PulsePerSecond = liquidVolume.PulsePerSecond; - - jobStop.Dispensers.Add(dispenser); - } - - jobSegment.BrushStops.Add(jobStop); - } - - ticket.Segments.Add(jobSegment); - } - - request.JobTicket = ticket; - - JobHandler handler = null; - - handler = new JobHandler(async () => - { - try - { - var result = await SendRequest(new AbortJobRequest()); - handler.RaiseCanceled(); - } - catch (Exception) - { - //TODO: What to do in case job failed to cancel ?? - } - }); - - SendContinuousRequest(request).Subscribe((response) => - { - handler.RaiseStatusReceived(response.Message.Status); - }, (ex) => - { - if (!handler.IsCanceled) - { - handler.RaiseFailed(ex); - } - }, () => - { - handler.RaiseCompleted(); - }); - - return handler; - } - - /// - /// Uploads the specified process parameters to the embedded device. - /// - /// The process parameters. - /// - public async Task UploadProcessParameters(ProcessParametersTable processParameters) - { - UploadProcessParametersRequest request = new UploadProcessParametersRequest(); - request.ProcessParameters = new ProcessParameters(); - processParameters.MapPrimitivesTo(request.ProcessParameters); - var result = await SendRequest(request); - return result; - } - - /// - /// Starts jogging the specified motor. - /// - /// The request. - /// - public async Task StartMotorJogging(MotorJoggingRequest request) - { - return await SendRequest(request); - } - - /// - /// Stops jogging the specified motor. - /// - /// The request. - /// - public async Task StopMotorJogging(MotorAbortJoggingRequest request) - { - return await SendRequest(request); - } - - /// - /// Starts homing the specified motor. - /// - /// The request. - /// - public IObservable StartMotorHoming(MotorHomingRequest request) - { - return SendContinuousRequest(request).Select(x => x.Message); - } - - /// - /// Stops homing the specified motor. - /// - /// The request. - /// - public async Task StopMotorHoming(MotorAbortHomingRequest request) - { - return await SendRequest(request); - } - - /// - /// Starts jogging the specified dispenser. - /// - /// The request. - /// - public async Task StartDispenserJogging(DispenserJoggingRequest request) - { - return await SendRequest(request); - } - - /// - /// Stops jogging the specified dispenser. - /// - /// The request. - /// - public async Task StopDispenserJogging(DispenserAbortJoggingRequest request) - { - return await SendRequest(request); - } - - /// - /// Starts homing the specified dispenser. - /// - /// The request. - /// - public IObservable StartDispenserHoming(DispenserHomingRequest request) - { - return SendContinuousRequest(request).Select(x => x.Message); - } - - /// - /// Stops homing the specified dispenser. - /// - /// The request. - /// - public async Task StopDispenserHoming(DispenserAbortHomingRequest request) - { - return await SendRequest(request); - } - - /// - /// Turn on/off the specified digital output pin. - /// - /// The request. - /// - public async Task SetDigitalOut(SetDigitalOutRequest request) - { - return await SendRequest(request); - } - - /// - /// Starts jogging the thread motion system. - /// - /// The request. - /// - public async Task StartThreadJogging(ThreadJoggingRequest request) - { - return await SendRequest(request); - } - - /// - /// Stops jogging the thread motion system. - /// - /// The request. - /// - public async Task StopThreadJogging(ThreadAbortJoggingRequest request) - { - return await SendRequest(request); - } - - #endregion - } -} -- cgit v1.3.1