System messages fuer GPS-Fix und Drone connected/disconnected, Batterie-Schwellwerte auf Pro-Zelle umgestellt
- detectSystemMessages() erkennt jetzt auch den Uebergang zu einem GPS-Fix (flankengetriggert wie Battery/Failsafe), Meldung "GPS fix acquired (N satellites)". - Die automatisch erkannten Verbindungsmeldungen heissen jetzt "Drone connected"/"Drone disconnected" statt "Connected"/"Connection lost" - praeziser an die tatsaechliche Bedeutung angelehnt (Eintreffen/Ausbleiben echter Telemetrie-Frames, nicht nur des rohen Socket-Zustands). - DroneProfile: feste Pack-Alarmspannung (batteryVoltageGreenMinV/RedMinV) ersetzt durch batteryCellCount + Pro-Zelle-Schwellwerte (batteryVoltageGreenMinPerCellV/RedMinPerCellV, LiPo-Standardwerte 3.4/3.2 V als Default). Die alten Feldnamen bleiben als berechnete Getter (Zellenzahl * Pro-Zelle-Wert) erhalten, damit telemetry_field_status.dart unveraendert bleibt. T1-Ranger-Standardprofil auf 4S gesetzt. - DB-Schema v8 -> v9 (additiv, alte Pack-Spannungs-Spalten bleiben als tote Spalten stehen), Repository und Share-Codec-Im-/Export entsprechend angepasst; alte Exportdateien ohne die neuen Felder fallen auf die DroneProfile-Defaults zurueck statt eine unbekannte Zellenzahl zu raten. - DroneProfileEditor: "Battery voltage alarm"-Gruppe um ein Zellenzahl-Feld erweitert und auf V/Zelle umbenannt. - Tests ergaenzt/angepasst: GPS-Fix-Erkennung (Unit + Provider-Integration), neuer v8->v9-Migrationstest analog zum bestehenden v7->v8-Test, Connected/Disconnected-Umbenennung in Provider- und Widget-Tests, Cell-Count-Roundtrip in Repository- und Share-Codec-Tests. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
b68c16d8e6
commit
e902197462
@@ -14,9 +14,9 @@ import 'telemetry_provider.dart';
|
||||
/// telemetryProvider beobachten, risse schon ein simpler Missionswechsel im
|
||||
/// Plan-Modus ungewollt den kompletten Telemetrie-/Transport-Stack (inkl.
|
||||
/// echtem MSP/UDP-Transport) mit hoch. Die automatische Erkennung
|
||||
/// (Connected/Lost/Verbindungstyp-Wechsel) sitzt deshalb separat in
|
||||
/// [systemMessageAutoLogProvider], die ausschliesslich der Fly-Modus
|
||||
/// beobachtet.
|
||||
/// (Drone connected/disconnected/GPS-Fix/Batterie/Failsafe/Verbindungstyp-
|
||||
/// Wechsel) sitzt deshalb separat in [systemMessageAutoLogProvider], die
|
||||
/// ausschliesslich der Fly-Modus beobachtet.
|
||||
class SystemMessageLogNotifier extends Notifier<List<SystemMessage>> {
|
||||
@override
|
||||
List<SystemMessage> build() => [];
|
||||
@@ -39,9 +39,10 @@ final systemMessageLogProvider =
|
||||
NotifierProvider<SystemMessageLogNotifier, List<SystemMessage>>(
|
||||
SystemMessageLogNotifier.new);
|
||||
|
||||
/// Automatische Erkennung von Connected/Connection-lost/Batterie-/Failsafe-/
|
||||
/// Verbindungstyp-Aenderungen (Doku: "wenn die Verbindung hergestellt
|
||||
/// wird/verloren geht, der verbindungstyp geaendert wird") - getrennt von
|
||||
/// Automatische Erkennung von Drone-connected/-disconnected/GPS-Fix/
|
||||
/// Batterie-/Failsafe-/Verbindungstyp-Aenderungen (Doku: "wenn die
|
||||
/// Verbindung hergestellt wird/verloren geht, der verbindungstyp geaendert
|
||||
/// wird, gps fix aquired") - getrennt von
|
||||
/// [systemMessageLogProvider] selbst (siehe dessen Doku), damit Plan-Modus-
|
||||
/// Code, der nur log() fuer eine manuelle Meldung braucht, nicht versehentlich
|
||||
/// telemetryProvider mit hochzieht. autoDispose: nur beobachtet, waehrend
|
||||
@@ -56,12 +57,17 @@ final systemMessageAutoLogProvider = Provider.autoDispose<void>((ref) {
|
||||
next.when(
|
||||
data: (frame) {
|
||||
final log = ref.read(systemMessageLogProvider.notifier);
|
||||
// Flankengetriggert wie "Connection lost" unten, nur umgekehrt -
|
||||
// Flankengetriggert wie "Drone disconnected" unten, nur umgekehrt -
|
||||
// anders als dort ist hier kein Sonderfall fuer die allererste
|
||||
// Verbindung noetig: der Uebergang "noch keine Daten" -> "erste
|
||||
// Daten" ist immer ein echtes "Connected", auch beim allerersten Mal.
|
||||
// Daten" ist immer ein echtes "Drone connected", auch beim
|
||||
// allerersten Mal. Bewusst an das Eintreffen eines echten
|
||||
// Telemetrie-Frames gebunden statt an den rohen Socket-/Link-
|
||||
// Zustand (Doku: "drone connected/disconnected (receiving valid
|
||||
// telemetry)") - ein offener Socket ohne auswertbare MSP-Antworten
|
||||
// zaehlt also nicht als "connected".
|
||||
if (!hadData) {
|
||||
log.log('Connected');
|
||||
log.log('Drone connected');
|
||||
}
|
||||
final events = detectSystemMessages(
|
||||
previous: previousFrame,
|
||||
@@ -77,10 +83,10 @@ final systemMessageAutoLogProvider = Provider.autoDispose<void>((ref) {
|
||||
error: (error, stackTrace) {
|
||||
// Nur melden, wenn zuvor bereits Frames flossen - sonst wuerde
|
||||
// schon das (normale) Ausbleiben der allerersten Verbindung als
|
||||
// "Connection lost" auftauchen.
|
||||
// "Drone disconnected" auftauchen.
|
||||
if (hadData) {
|
||||
ref.read(systemMessageLogProvider.notifier)
|
||||
.log('Connection lost', severity: SystemMessageSeverity.critical);
|
||||
.log('Drone disconnected', severity: SystemMessageSeverity.critical);
|
||||
}
|
||||
previousFrame = null;
|
||||
hadData = false;
|
||||
|
||||
Reference in New Issue
Block a user