Five-layer architecture per DMC_Architektur_und_Design.md: FlightControllerLink abstraction (Mock + MSP stub), protocol-neutral mission domain layer, App-Mode state machine with Ready-to-Fly gate, Drift persistence schema, and placeholder UI screens wired via go_router. App icon generated from design/Y2_pink_dark.svg. Verified with flutter analyze and flutter test. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
27 lines
1.1 KiB
Dart
27 lines
1.1 KiB
Dart
import '../app_mode/app_mode_cubit.dart';
|
|
import '../domain/waypoint/flat_waypoint_list.dart';
|
|
import '../transport/flight_controller_link.dart';
|
|
|
|
/// Orchestriert Connect -> Verify -> Upload -> Ready-to-Fly und erzwingt das
|
|
/// Ready-to-Fly-Gate (Architektur-Doku 3.3 / 4.5).
|
|
class MissionSyncService {
|
|
MissionSyncService(this._link, this._appMode);
|
|
|
|
final FlightControllerLink _link;
|
|
final AppModeCubit _appMode;
|
|
|
|
Future<void> syncAndUpload(FlatWaypointList mission) async {
|
|
await _link.connect();
|
|
// uploadMission() der jeweiligen FlightControllerLink-Implementierung
|
|
// verweigert den Upload selbst, falls die Drohne armed ist (Doku 4.5) -
|
|
// dieser Service verlaesst sich bewusst nicht zusaetzlich auf einen
|
|
// eigenen Telemetrie-Vorab-Check, um keine zwei Wahrheitsquellen zu haben.
|
|
await _link.uploadMission(mission);
|
|
_appMode.missionUploadConfirmed();
|
|
|
|
// TODO: echte Verifikation gegen FC-Rueckmeldung, sobald ein
|
|
// Protokoll-Adapter (MSP/MAVLink) eine Upload-Bestaetigung liefert.
|
|
_appMode.missionVerifiedConfirmed();
|
|
}
|
|
}
|