private async Task <AcquisitionActionResult> InternalStopRecord(StopRecordParameter parameters, AcquisitionActionResult result) { // delayed stop if (this.DeviceDistanceFromStopTriggerPoint > 0 && this.IsDependencyOperational <IDistanceAgent>()) { var distanceData = await AgentBroker.Instance.TryExecuteOnFirst <IDistanceAgent, DistanceData>(a => a.CurrentData).GetValueOrDefault().ConfigureAwait(false); await AgentBroker.Instance.ObserveAny <IDistanceAgent, DistanceData>("DataSource").Where(data => data.AbsoluteDistance >= distanceData.AbsoluteDistance + this.DeviceDistanceFromStopTriggerPoint).Take(1).ToTask().ConfigureAwait(false); } result = await StopRecordCore(parameters, result).ConfigureAwait(false); return(result); }
protected virtual Task <AcquisitionActionResult> StopRecordCore(StopRecordParameter parameters, AcquisitionActionResult result) { return(Task.FromResult(result)); }
public Task <AcquisitionActionResult> StopRecord(StopRecordParameter parameters) { return(MakeStateTransition(AcquisitionStep.StopRecord, this.Provider.StopRecord, parameters, InternalStopRecord)); }