Add Flutter project skeleton (Android-only MVP)

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>
This commit is contained in:
Constantin Leue
2026-07-26 21:28:25 +02:00
co-authored by Claude Sonnet 5
parent 62d655fe8e
commit 346fcc2183
45 changed files with 2884 additions and 0 deletions
@@ -0,0 +1,39 @@
import '../../domain/waypoint/flat_waypoint_list.dart';
import '../flight_controller_link.dart';
/// iNAV-Anbindung via MSP (Architektur-Doku 3.1). Eigenstaendiger Adapter,
/// da kein fertiges Dart-Paket fuer MSP verfuegbar ist (Doku 4.19).
///
/// Protokoll-Implementierung (Framing, MSP_SET_WP, MSP_NAV_STATUS, ...) ist
/// noch offen - dies ist bewusst nur das Geruest fuer die Abstraktion.
class MspFlightControllerLink implements FlightControllerLink {
MspFlightControllerLink({required this.host, required this.port});
final String host;
final int port;
@override
FcCapabilities get capabilities => throw UnimplementedError();
@override
Future<void> connect() => throw UnimplementedError();
@override
Future<void> disconnect() => throw UnimplementedError();
@override
Future<void> uploadMission(FlatWaypointList mission) =>
throw UnimplementedError();
@override
Future<void> setFlightMode(FlightMode mode) => throw UnimplementedError();
@override
Future<void> arm() => throw UnimplementedError();
@override
Stream<TelemetryFrame> subscribeTelemetry() => throw UnimplementedError();
@override
Future<int?> readActiveWaypointIndex() => throw UnimplementedError();
}