Skip to content

Commit

Permalink
Fixed homing-job cancellation behabiour: a cancelled homing-job resul…
Browse files Browse the repository at this point in the history
…ts an a device status "Ready" instead of "Disconnected". Fixes #3
  • Loading branch information
mic-joebstl committed Jan 21, 2024
1 parent 4320b08 commit 65f5872
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 3 deletions.
11 changes: 9 additions & 2 deletions src/Core/Devices/Device.cs
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,11 @@ protected IDeviceStatusIntermediateTransition StatusIntermediateTransition(Devic
return new DeviceStatusTransition(this, sourceStatus, intermediateStatus, sourceStatus);
}

protected IDeviceStatusTransition StatusFailableTransition(DeviceStatus sourceStatus, DeviceStatus openStatus, DeviceStatus failedStatus)
{
return new DeviceStatusTransition(this, sourceStatus, openStatus, sourceStatus, failedStatus);
}

protected IDeviceStatusTransition StatusTransition(DeviceStatus sourceStatus, DeviceStatus openStatus, DeviceStatus targetStatus)
{
return new DeviceStatusTransition(this, sourceStatus, openStatus, targetStatus);
Expand All @@ -107,22 +112,24 @@ private class DeviceStatusTransition : IDeviceStatusTransition
private DeviceStatus _sourceStatus;
private DeviceStatus _openStatus;
private DeviceStatus _targetStatus;
private DeviceStatus? _failedStatus;
private bool _commited;
private bool _disposed;

public DeviceStatusTransition(Device owner, DeviceStatus sourceStatus, DeviceStatus openStatus, DeviceStatus targetStatus)
public DeviceStatusTransition(Device owner, DeviceStatus sourceStatus, DeviceStatus openStatus, DeviceStatus targetStatus, DeviceStatus? failedstatus = null)
{
_owner = owner;
_sourceStatus = sourceStatus;
_openStatus = openStatus;
_targetStatus = targetStatus;
_failedStatus = failedstatus;
}

public void Dispose()
{
if (!_commited && !_disposed)
{
_owner.Status = _sourceStatus;
_owner.Status = _failedStatus ?? _sourceStatus;
_disposed = true;
}
}
Expand Down
3 changes: 2 additions & 1 deletion src/Core/Devices/Serial/SerialDevice.cs
Original file line number Diff line number Diff line change
Expand Up @@ -115,14 +115,15 @@ public override async Task DisconnectAsync(CancellationToken cancellationToken)

public override async Task HomingAsync(CancellationToken cancellationToken)
{
using (var tx = StatusIntermediateTransition(DeviceStatus.Ready, DeviceStatus.Executing))
using (var tx = StatusFailableTransition(DeviceStatus.Ready, DeviceStatus.Executing, DeviceStatus.Disconnected))
{
tx.Open();

try
{
await WriteCommand(new SimpleEngraverCommand(EngraverCommandType.HomeCenter), cancellationToken);
Position = new Point((int)(_configuration.WidthDots / 2), (int)(_configuration.HeightDots / 2));
tx.Commit();
}
catch
{
Expand Down

0 comments on commit 65f5872

Please sign in to comment.