aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs')
-rw-r--r--Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs83
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);