import 'dart:async'; import 'package:motorcycle_dash/models/telemetry_sample.dart'; import 'package:motorcycle_dash/services/validation/telemetry_validator.dart'; class ReplayScenario { final String name; final List samples; const ReplayScenario({required this.name, required this.samples}); } class TelemetryReplayEngine { final TelemetryValidator validator; final _sampleController = StreamController.broadcast(); Stream get stream => _sampleController.stream; TelemetryReplayEngine({TelemetryValidator? validator}) : validator = validator ?? TelemetryValidator(); Future> play(ReplayScenario scenario) async { validator.reset(); final validated = []; for (final sample in scenario.samples) { final quality = validator.validate(sample); final validatedSample = sample.copyWith(quality: quality); validated.add(validatedSample); _sampleController.add(validatedSample); } return validated; } void dispose() { _sampleController.close(); } }