Warning thresholds added in drone profile. traffic light indication in drone satus menue added. layout and content optimized
This commit is contained in:
@@ -50,6 +50,32 @@ class DroneProfiles extends Table {
|
||||
RealColumn get maxRangeM => real()();
|
||||
RealColumn get maxEnduranceMin => real()();
|
||||
RealColumn get maxAltitudeM => real()();
|
||||
|
||||
/// Ampel-Schwellwerte fuer die Telemetriefelder im Drohnen-Status-Menue
|
||||
/// (siehe domain.DroneProfile-Doku und domain/telemetry/
|
||||
/// telemetry_field_status.dart) - Defaults identisch zu den
|
||||
/// DroneProfile.default*-Konstanten.
|
||||
RealColumn get gpsSatGreenMin =>
|
||||
real().withDefault(const Constant(8.0))();
|
||||
RealColumn get gpsSatRedMin => real().withDefault(const Constant(6.0))();
|
||||
RealColumn get hdopGreenMax => real().withDefault(const Constant(2.0))();
|
||||
RealColumn get hdopRedMax => real().withDefault(const Constant(5.0))();
|
||||
RealColumn get currentGreenMaxA =>
|
||||
real().withDefault(const Constant(20.0))();
|
||||
RealColumn get currentRedMaxA =>
|
||||
real().withDefault(const Constant(30.0))();
|
||||
RealColumn get batteryVoltageGreenMinV =>
|
||||
real().withDefault(const Constant(20.4))();
|
||||
RealColumn get batteryVoltageRedMinV =>
|
||||
real().withDefault(const Constant(19.2))();
|
||||
RealColumn get rxQualityGreenMin =>
|
||||
real().withDefault(const Constant(70.0))();
|
||||
RealColumn get rxQualityRedMin =>
|
||||
real().withDefault(const Constant(50.0))();
|
||||
RealColumn get rxSnrGreenMinDb =>
|
||||
real().withDefault(const Constant(0.0))();
|
||||
RealColumn get rxSnrRedMinDb =>
|
||||
real().withDefault(const Constant(-10.0))();
|
||||
}
|
||||
|
||||
/// Einzeilige Einstellungstabelle (id fest 0) fuer app-weite Auswahl, die
|
||||
@@ -110,7 +136,7 @@ class AppDatabase extends _$AppDatabase {
|
||||
AppDatabase.forTesting(super.executor);
|
||||
|
||||
@override
|
||||
int get schemaVersion => 7;
|
||||
int get schemaVersion => 8;
|
||||
|
||||
@override
|
||||
MigrationStrategy get migration => MigrationStrategy(
|
||||
@@ -157,6 +183,26 @@ class AppDatabase extends _$AppDatabase {
|
||||
if (from < 7) {
|
||||
await m.addColumn(missions, missions.terrainProfileJson);
|
||||
}
|
||||
if (from < 8) {
|
||||
await m.addColumn(droneProfiles, droneProfiles.gpsSatGreenMin);
|
||||
await m.addColumn(droneProfiles, droneProfiles.gpsSatRedMin);
|
||||
await m.addColumn(droneProfiles, droneProfiles.hdopGreenMax);
|
||||
await m.addColumn(droneProfiles, droneProfiles.hdopRedMax);
|
||||
await m.addColumn(droneProfiles, droneProfiles.currentGreenMaxA);
|
||||
await m.addColumn(droneProfiles, droneProfiles.currentRedMaxA);
|
||||
await m.addColumn(
|
||||
droneProfiles,
|
||||
droneProfiles.batteryVoltageGreenMinV,
|
||||
);
|
||||
await m.addColumn(
|
||||
droneProfiles,
|
||||
droneProfiles.batteryVoltageRedMinV,
|
||||
);
|
||||
await m.addColumn(droneProfiles, droneProfiles.rxQualityGreenMin);
|
||||
await m.addColumn(droneProfiles, droneProfiles.rxQualityRedMin);
|
||||
await m.addColumn(droneProfiles, droneProfiles.rxSnrGreenMinDb);
|
||||
await m.addColumn(droneProfiles, droneProfiles.rxSnrRedMinDb);
|
||||
}
|
||||
},
|
||||
);
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -60,6 +60,18 @@ class DroneProfileRepository {
|
||||
maxRangeM: row.maxRangeM,
|
||||
maxEnduranceMin: row.maxEnduranceMin,
|
||||
maxAltitudeM: row.maxAltitudeM,
|
||||
gpsSatGreenMin: row.gpsSatGreenMin,
|
||||
gpsSatRedMin: row.gpsSatRedMin,
|
||||
hdopGreenMax: row.hdopGreenMax,
|
||||
hdopRedMax: row.hdopRedMax,
|
||||
currentGreenMaxA: row.currentGreenMaxA,
|
||||
currentRedMaxA: row.currentRedMaxA,
|
||||
batteryVoltageGreenMinV: row.batteryVoltageGreenMinV,
|
||||
batteryVoltageRedMinV: row.batteryVoltageRedMinV,
|
||||
rxQualityGreenMin: row.rxQualityGreenMin,
|
||||
rxQualityRedMin: row.rxQualityRedMin,
|
||||
rxSnrGreenMinDb: row.rxSnrGreenMinDb,
|
||||
rxSnrRedMinDb: row.rxSnrRedMinDb,
|
||||
);
|
||||
|
||||
DroneProfilesCompanion _toCompanion(domain.DroneProfile profile) =>
|
||||
@@ -76,5 +88,17 @@ class DroneProfileRepository {
|
||||
maxRangeM: Value(profile.maxRangeM),
|
||||
maxEnduranceMin: Value(profile.maxEnduranceMin),
|
||||
maxAltitudeM: Value(profile.maxAltitudeM),
|
||||
gpsSatGreenMin: Value(profile.gpsSatGreenMin),
|
||||
gpsSatRedMin: Value(profile.gpsSatRedMin),
|
||||
hdopGreenMax: Value(profile.hdopGreenMax),
|
||||
hdopRedMax: Value(profile.hdopRedMax),
|
||||
currentGreenMaxA: Value(profile.currentGreenMaxA),
|
||||
currentRedMaxA: Value(profile.currentRedMaxA),
|
||||
batteryVoltageGreenMinV: Value(profile.batteryVoltageGreenMinV),
|
||||
batteryVoltageRedMinV: Value(profile.batteryVoltageRedMinV),
|
||||
rxQualityGreenMin: Value(profile.rxQualityGreenMin),
|
||||
rxQualityRedMin: Value(profile.rxQualityRedMin),
|
||||
rxSnrGreenMinDb: Value(profile.rxSnrGreenMinDb),
|
||||
rxSnrRedMinDb: Value(profile.rxSnrRedMinDb),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -24,6 +24,18 @@ String buildDroneExportJson(DroneProfile profile) {
|
||||
'maxRangeM': profile.maxRangeM,
|
||||
'maxEnduranceMin': profile.maxEnduranceMin,
|
||||
'maxAltitudeM': profile.maxAltitudeM,
|
||||
'gpsSatGreenMin': profile.gpsSatGreenMin,
|
||||
'gpsSatRedMin': profile.gpsSatRedMin,
|
||||
'hdopGreenMax': profile.hdopGreenMax,
|
||||
'hdopRedMax': profile.hdopRedMax,
|
||||
'currentGreenMaxA': profile.currentGreenMaxA,
|
||||
'currentRedMaxA': profile.currentRedMaxA,
|
||||
'batteryVoltageGreenMinV': profile.batteryVoltageGreenMinV,
|
||||
'batteryVoltageRedMinV': profile.batteryVoltageRedMinV,
|
||||
'rxQualityGreenMin': profile.rxQualityGreenMin,
|
||||
'rxQualityRedMin': profile.rxQualityRedMin,
|
||||
'rxSnrGreenMinDb': profile.rxSnrGreenMinDb,
|
||||
'rxSnrRedMinDb': profile.rxSnrRedMinDb,
|
||||
},
|
||||
};
|
||||
return const JsonEncoder.withIndent(' ').convert(map);
|
||||
@@ -88,6 +100,15 @@ ParsedDroneImport parseDroneImportJson(String jsonText) {
|
||||
}
|
||||
}
|
||||
|
||||
// Ampel-Schwellwerte (siehe DroneProfile-Doku) sind bewusst NICHT Teil von
|
||||
// _requiredNumericFields - aeltere, vor deren Einfuehrung exportierte
|
||||
// Profildateien haben diese Felder noch nicht und sollen trotzdem
|
||||
// importierbar bleiben (dann gelten die DroneProfile.default*-Werte).
|
||||
double numOrDefault(String field, double fallback) {
|
||||
final v = droneData[field];
|
||||
return v is num ? v.toDouble() : fallback;
|
||||
}
|
||||
|
||||
final profile = DroneProfile(
|
||||
name: name,
|
||||
minSpeed: (droneData['minSpeed'] as num).toDouble(),
|
||||
@@ -101,6 +122,24 @@ ParsedDroneImport parseDroneImportJson(String jsonText) {
|
||||
maxRangeM: (droneData['maxRangeM'] as num).toDouble(),
|
||||
maxEnduranceMin: (droneData['maxEnduranceMin'] as num).toDouble(),
|
||||
maxAltitudeM: (droneData['maxAltitudeM'] as num).toDouble(),
|
||||
gpsSatGreenMin: numOrDefault('gpsSatGreenMin', DroneProfile.defaultGpsSatGreenMin),
|
||||
gpsSatRedMin: numOrDefault('gpsSatRedMin', DroneProfile.defaultGpsSatRedMin),
|
||||
hdopGreenMax: numOrDefault('hdopGreenMax', DroneProfile.defaultHdopGreenMax),
|
||||
hdopRedMax: numOrDefault('hdopRedMax', DroneProfile.defaultHdopRedMax),
|
||||
currentGreenMaxA: numOrDefault('currentGreenMaxA', DroneProfile.defaultCurrentGreenMaxA),
|
||||
currentRedMaxA: numOrDefault('currentRedMaxA', DroneProfile.defaultCurrentRedMaxA),
|
||||
batteryVoltageGreenMinV: numOrDefault(
|
||||
'batteryVoltageGreenMinV',
|
||||
DroneProfile.defaultBatteryVoltageGreenMinV,
|
||||
),
|
||||
batteryVoltageRedMinV: numOrDefault(
|
||||
'batteryVoltageRedMinV',
|
||||
DroneProfile.defaultBatteryVoltageRedMinV,
|
||||
),
|
||||
rxQualityGreenMin: numOrDefault('rxQualityGreenMin', DroneProfile.defaultRxQualityGreenMin),
|
||||
rxQualityRedMin: numOrDefault('rxQualityRedMin', DroneProfile.defaultRxQualityRedMin),
|
||||
rxSnrGreenMinDb: numOrDefault('rxSnrGreenMinDb', DroneProfile.defaultRxSnrGreenMinDb),
|
||||
rxSnrRedMinDb: numOrDefault('rxSnrRedMinDb', DroneProfile.defaultRxSnrRedMinDb),
|
||||
);
|
||||
|
||||
final appVersion = decoded['appVersion'] as String?;
|
||||
|
||||
Reference in New Issue
Block a user