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
@@ -30,8 +30,9 @@ String buildDroneExportJson(DroneProfile profile) {
|
||||
'hdopRedMax': profile.hdopRedMax,
|
||||
'currentGreenMaxA': profile.currentGreenMaxA,
|
||||
'currentRedMaxA': profile.currentRedMaxA,
|
||||
'batteryVoltageGreenMinV': profile.batteryVoltageGreenMinV,
|
||||
'batteryVoltageRedMinV': profile.batteryVoltageRedMinV,
|
||||
'batteryCellCount': profile.batteryCellCount,
|
||||
'batteryVoltageGreenMinPerCellV': profile.batteryVoltageGreenMinPerCellV,
|
||||
'batteryVoltageRedMinPerCellV': profile.batteryVoltageRedMinPerCellV,
|
||||
'rxQualityGreenMin': profile.rxQualityGreenMin,
|
||||
'rxQualityRedMin': profile.rxQualityRedMin,
|
||||
'rxSnrGreenMinDb': profile.rxSnrGreenMinDb,
|
||||
@@ -109,6 +110,11 @@ ParsedDroneImport parseDroneImportJson(String jsonText) {
|
||||
return v is num ? v.toDouble() : fallback;
|
||||
}
|
||||
|
||||
int intOrDefault(String field, int fallback) {
|
||||
final v = droneData[field];
|
||||
return v is num ? v.round() : fallback;
|
||||
}
|
||||
|
||||
final profile = DroneProfile(
|
||||
name: name,
|
||||
minSpeed: (droneData['minSpeed'] as num).toDouble(),
|
||||
@@ -128,13 +134,22 @@ ParsedDroneImport parseDroneImportJson(String jsonText) {
|
||||
hdopRedMax: numOrDefault('hdopRedMax', DroneProfile.defaultHdopRedMax),
|
||||
currentGreenMaxA: numOrDefault('currentGreenMaxA', DroneProfile.defaultCurrentGreenMaxA),
|
||||
currentRedMaxA: numOrDefault('currentRedMaxA', DroneProfile.defaultCurrentRedMaxA),
|
||||
batteryVoltageGreenMinV: numOrDefault(
|
||||
'batteryVoltageGreenMinV',
|
||||
DroneProfile.defaultBatteryVoltageGreenMinV,
|
||||
// batteryCellCount/*PerCellV sind Schema-v9-Felder (Doku: "zellen anzahl
|
||||
// ... hinzufuegen") - Dateien, die vor deren Einfuehrung exportiert
|
||||
// wurden, haben stattdessen ggf. noch die alten absoluten
|
||||
// batteryVoltage*MinV-Felder (feste Pack-Spannung). Die werden hier
|
||||
// bewusst NICHT mehr gelesen (koennten ohne bekannte Zellenzahl der
|
||||
// Quelldrohne nicht sinnvoll in Pro-Zelle-Werte umgerechnet werden) -
|
||||
// stattdessen gelten wie bei allen anderen Schwellwerten die
|
||||
// DroneProfile.default*-Werte.
|
||||
batteryCellCount: intOrDefault('batteryCellCount', DroneProfile.defaultBatteryCellCount),
|
||||
batteryVoltageGreenMinPerCellV: numOrDefault(
|
||||
'batteryVoltageGreenMinPerCellV',
|
||||
DroneProfile.defaultBatteryVoltageGreenMinPerCellV,
|
||||
),
|
||||
batteryVoltageRedMinV: numOrDefault(
|
||||
'batteryVoltageRedMinV',
|
||||
DroneProfile.defaultBatteryVoltageRedMinV,
|
||||
batteryVoltageRedMinPerCellV: numOrDefault(
|
||||
'batteryVoltageRedMinPerCellV',
|
||||
DroneProfile.defaultBatteryVoltageRedMinPerCellV,
|
||||
),
|
||||
rxQualityGreenMin: numOrDefault('rxQualityGreenMin', DroneProfile.defaultRxQualityGreenMin),
|
||||
rxQualityRedMin: numOrDefault('rxQualityRedMin', DroneProfile.defaultRxQualityRedMin),
|
||||
|
||||
Reference in New Issue
Block a user