public virtual async Task <DeviceIOResult> StopAsync() { Debug.WriteLine($"Stop {DeviceType} {DeviceId} when CurrentStatus {CurrentStatus}"); if (CurrentStatus == DeviceStatusEnum.Idle || CurrentStatus == DeviceStatusEnum.Pausing) { return(new DeviceIOResult(true)); } var directive = new TryPauseDirective(DeviceId, DeviceType); OnPreCommunicationEvent(directive); CurrentStatus = DeviceStatusEnum.PrePause; SendDirective(directive); var p = await stopEvent.WaitAsync(); stopEvent.Reset(); return(p); }
private byte[] GenerateDirectiveBuffer(TryPauseDirective directive) { return(GetCommonBufferData(directive)); }
public virtual void Stop() { var directive = new TryPauseDirective(DeviceId, DeviceType); DirectiveWorker.Instance.PrepareDirective(directive); }