start method

Starts a run; the stream reports each step until done, failed or cancel.

Implementation

@override
Stream<NmDomeCalibrationStep> start(NmDomeCalibrationPlan plan) {
  log.add('calibration.start ${plan.kind.name}');
  unawaited(_out?.close());
  _kind = plan.kind;
  final out = _out = StreamController<NmDomeCalibrationStep>();
  scheduleMicrotask(() {
    if (_kind == NmDomeCalibrationKind.audio) {
      _emit(const NmDomeCalibrationStep(kind: NmDomeCalibrationStepKind.audioPlay, progress: .3));
    } else {
      _emit(NmDomeCalibrationStep(kind: NmDomeCalibrationStepKind.displaySelect, displays: displays));
    }
  });
  return out.stream;
}