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
@@ -23,8 +23,9 @@ class DroneProfile {
|
||||
this.hdopRedMax = defaultHdopRedMax,
|
||||
this.currentGreenMaxA = defaultCurrentGreenMaxA,
|
||||
this.currentRedMaxA = defaultCurrentRedMaxA,
|
||||
this.batteryVoltageGreenMinV = defaultBatteryVoltageGreenMinV,
|
||||
this.batteryVoltageRedMinV = defaultBatteryVoltageRedMinV,
|
||||
this.batteryCellCount = defaultBatteryCellCount,
|
||||
this.batteryVoltageGreenMinPerCellV = defaultBatteryVoltageGreenMinPerCellV,
|
||||
this.batteryVoltageRedMinPerCellV = defaultBatteryVoltageRedMinPerCellV,
|
||||
this.rxQualityGreenMin = defaultRxQualityGreenMin,
|
||||
this.rxQualityRedMin = defaultRxQualityRedMin,
|
||||
this.rxSnrGreenMinDb = defaultRxSnrGreenMinDb,
|
||||
@@ -62,8 +63,23 @@ class DroneProfile {
|
||||
final double hdopRedMax;
|
||||
final double currentGreenMaxA;
|
||||
final double currentRedMaxA;
|
||||
final double batteryVoltageGreenMinV;
|
||||
final double batteryVoltageRedMinV;
|
||||
|
||||
/// Zellenzahl des LiPo-Akkus (z.B. 4 fuer "4S") - bestimmt zusammen mit
|
||||
/// den beiden *PerCellV-Schwellwerten die tatsaechliche Alarmspannung des
|
||||
/// Packs (siehe [batteryVoltageGreenMinV]/[batteryVoltageRedMinV]). Vorher
|
||||
/// war die Alarmspannung als feste Pack-Gesamtspannung hinterlegt - bei
|
||||
/// einem Wechsel der Zellenzahl (z.B. 4S statt 6S) waeren die alten
|
||||
/// Schwellwerte dann fuer den neuen Pack sinnlos gewesen, ohne dass beim
|
||||
/// Bearbeiten des Profils ein Hinweis darauf bestanden haette.
|
||||
final int batteryCellCount;
|
||||
|
||||
/// Alarm-Schwellwerte PRO ZELLE (LiPo-Standardwerte als Default: 3.4V
|
||||
/// gruen/"noch sicher", 3.2V rot/"jetzt landen") - siehe
|
||||
/// [batteryVoltageGreenMinV]/[batteryVoltageRedMinV] fuer die daraus
|
||||
/// abgeleitete tatsaechliche Pack-Alarmspannung.
|
||||
final double batteryVoltageGreenMinPerCellV;
|
||||
final double batteryVoltageRedMinPerCellV;
|
||||
|
||||
final double rxQualityGreenMin;
|
||||
final double rxQualityRedMin;
|
||||
final double rxSnrGreenMinDb;
|
||||
@@ -75,13 +91,22 @@ class DroneProfile {
|
||||
static const defaultHdopRedMax = 5.0;
|
||||
static const defaultCurrentGreenMaxA = 20.0;
|
||||
static const defaultCurrentRedMaxA = 30.0;
|
||||
static const defaultBatteryVoltageGreenMinV = 20.4;
|
||||
static const defaultBatteryVoltageRedMinV = 19.2;
|
||||
static const defaultBatteryCellCount = 4;
|
||||
static const defaultBatteryVoltageGreenMinPerCellV = 3.4;
|
||||
static const defaultBatteryVoltageRedMinPerCellV = 3.2;
|
||||
static const defaultRxQualityGreenMin = 70.0;
|
||||
static const defaultRxQualityRedMin = 50.0;
|
||||
static const defaultRxSnrGreenMinDb = 0.0;
|
||||
static const defaultRxSnrRedMinDb = -10.0;
|
||||
|
||||
/// Tatsaechliche Pack-Alarmspannung, aus Zellenzahl x Pro-Zelle-Schwelle
|
||||
/// berechnet - [telemetry_field_status.dart] vergleicht damit die vom FC
|
||||
/// gemeldete Gesamtspannung, kennt selbst aber keine Zellenzahl.
|
||||
double get batteryVoltageGreenMinV =>
|
||||
batteryCellCount * batteryVoltageGreenMinPerCellV;
|
||||
double get batteryVoltageRedMinV =>
|
||||
batteryCellCount * batteryVoltageRedMinPerCellV;
|
||||
|
||||
/// T1 Ranger (Heewing) - Standardprofil (Doku 3.5), analog DEFAULT_DRONE
|
||||
/// im HTML-Demonstrator.
|
||||
static const _t1RangerName = 'T1 Ranger';
|
||||
@@ -99,6 +124,7 @@ class DroneProfile {
|
||||
maxRangeM: 15000,
|
||||
maxEnduranceMin: 45,
|
||||
maxAltitudeM: 2000,
|
||||
batteryCellCount: 4,
|
||||
);
|
||||
|
||||
/// Einzeilige Zusammenfassung fuer die Profilliste (Doku 3.5), analog
|
||||
@@ -130,8 +156,9 @@ class DroneProfile {
|
||||
double? hdopRedMax,
|
||||
double? currentGreenMaxA,
|
||||
double? currentRedMaxA,
|
||||
double? batteryVoltageGreenMinV,
|
||||
double? batteryVoltageRedMinV,
|
||||
int? batteryCellCount,
|
||||
double? batteryVoltageGreenMinPerCellV,
|
||||
double? batteryVoltageRedMinPerCellV,
|
||||
double? rxQualityGreenMin,
|
||||
double? rxQualityRedMin,
|
||||
double? rxSnrGreenMinDb,
|
||||
@@ -157,8 +184,11 @@ class DroneProfile {
|
||||
hdopRedMax: hdopRedMax ?? this.hdopRedMax,
|
||||
currentGreenMaxA: currentGreenMaxA ?? this.currentGreenMaxA,
|
||||
currentRedMaxA: currentRedMaxA ?? this.currentRedMaxA,
|
||||
batteryVoltageGreenMinV: batteryVoltageGreenMinV ?? this.batteryVoltageGreenMinV,
|
||||
batteryVoltageRedMinV: batteryVoltageRedMinV ?? this.batteryVoltageRedMinV,
|
||||
batteryCellCount: batteryCellCount ?? this.batteryCellCount,
|
||||
batteryVoltageGreenMinPerCellV:
|
||||
batteryVoltageGreenMinPerCellV ?? this.batteryVoltageGreenMinPerCellV,
|
||||
batteryVoltageRedMinPerCellV:
|
||||
batteryVoltageRedMinPerCellV ?? this.batteryVoltageRedMinPerCellV,
|
||||
rxQualityGreenMin: rxQualityGreenMin ?? this.rxQualityGreenMin,
|
||||
rxQualityRedMin: rxQualityRedMin ?? this.rxQualityRedMin,
|
||||
rxSnrGreenMinDb: rxSnrGreenMinDb ?? this.rxSnrGreenMinDb,
|
||||
|
||||
Reference in New Issue
Block a user