Ejemplo n.º 1
0
        public async Task <CalibrationExecutionReport> FinishAsync()
        {
            if (_states.CanFire(CalibratorAction.Finish))
            {
                CalibrationExecutionReport report = null;
                if (_pointsLeft <= 0)
                {
                    var result = await _tracker.ComputeCalibrationAsync();

                    var data = _tracker.GetCalibration();
                    var plan = new CalibrationPlan(_calibratedPoints);
                    report = new CalibrationExecutionReport(plan, result, data);

                    _calibrations.Add(result);
                    CalibrationFinished?.Invoke(this, result);
                }

                await _states.FireAsync(CalibratorAction.Finish);

                return(report);
            }
            else
            {
                throw new InvalidOperationException($"Cannot finish calibration in the current state of Calibrator: {State.ToString()}");
            }
        }