diff options
Diffstat (limited to 'Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs')
| -rw-r--r-- | Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs | 83 |
1 files changed, 82 insertions, 1 deletions
diff --git a/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs b/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs index 3a02006fd..20968385d 100644 --- a/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs +++ b/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs @@ -39,6 +39,11 @@ namespace Tango.Integration.Operation public static String EmbeddedLogsFolder { get; private set; } public static String EmbeddedLogsTag { get; private set; } + #region Constructors + + /// <summary> + /// Initializes the <see cref="MachineOperator"/> class. + /// </summary> static MachineOperator() { if (EmbeddedLogManager == null) @@ -53,6 +58,9 @@ namespace Tango.Integration.Operation } } + /// <summary> + /// Initializes a new instance of the <see cref="MachineOperator"/> class. + /// </summary> public MachineOperator() : base() { DeviceInformation = new DeviceInformation(); @@ -70,6 +78,8 @@ namespace Tango.Integration.Operation Adapter = adapter; } + #endregion + #region Events /// <summary> @@ -138,7 +148,56 @@ namespace Tango.Integration.Operation public MachineStatuses Status { get { return _status; } - private set { _status = value; RaisePropertyChangedAuto(); OnMachineStatusChanged(value); } + private set + { + _status = value; + RaisePropertyChangedAuto(); + OnMachineStatusChanged(value); + RaisePropertyChanged(nameof(IsPrinting)); + RaisePropertyChanged(nameof(CanPrint)); + } + } + + /// <summary> + /// Gets a value indicating whether this instance is printing. + /// </summary> + public bool IsPrinting + { + get + { + return Status == MachineStatuses.Printing; + } + } + + /// <summary> + /// Gets a value indicating whether this instance can print. + /// </summary> + public bool CanPrint + { + get + { + return Status == MachineStatuses.ReadyToDye; + } + } + + private Job _runningJob; + /// <summary> + /// Gets the running job. + /// </summary> + public Job RunningJob + { + get { return _runningJob; } + set { _runningJob = value; RaisePropertyChangedAuto(); } + } + + private RunningJobStatus _runningJobStatus; + /// <summary> + /// Gets the running job status. + /// </summary> + public RunningJobStatus RunningJobStatus + { + get { return _runningJobStatus; } + set { _runningJobStatus = value; RaisePropertyChangedAuto(); } } /// <summary> @@ -477,6 +536,8 @@ namespace Tango.Integration.Operation { var response = await SendRequest<DisconnectRequest, DisconnectResponse>(request); LogResponseReceived(response.Message); + + Status = MachineStatuses.Standby; } catch (Exception ex) { @@ -487,6 +548,10 @@ namespace Tango.Integration.Operation await base.Disconnect(); } + /// <summary> + /// Connects the transport component. + /// </summary> + /// <returns></returns> public async override Task Connect() { await base.Connect(); @@ -501,6 +566,8 @@ namespace Tango.Integration.Operation var response = await SendRequest<ConnectRequest, ConnectResponse>(request); LogResponseReceived(response.Message); + Status = MachineStatuses.ReadyToDye; + DeviceInformation = response.Message.DeviceInformation; OnEnableDiagnosticsChanged(EnableDiagnostics); @@ -595,6 +662,14 @@ namespace Tango.Integration.Operation /// <returns></returns> public JobHandler Print(Job job, ProcessParametersTable processParameters) { + if (Status != MachineStatuses.ReadyToDye) + { + throw new InvalidOperationException("Could not print while status = " + Status); + } + + RunningJob = null; + RunningJobStatus = null; + var originalJob = job; CurrentProcessParameters = processParameters; @@ -687,6 +762,11 @@ namespace Tango.Integration.Operation } }, originalJob, processParameters); + handler.StatusChanged += (x, s) => + { + RunningJobStatus = s; + }; + LogRequestSent(request); bool responseLogged = false; @@ -697,6 +777,7 @@ namespace Tango.Integration.Operation if (!responseLogged) { Status = MachineStatuses.Printing; + RunningJob = originalJob; PrintingStarted?.Invoke(this, handler); responseLogged = true; LogResponseReceived(response.Message); |
