bluetooth connectivity layer added

This commit is contained in:
Constantin Leue
2026-07-30 19:46:52 +02:00
parent 310d92f187
commit 5994aee7ad
19 changed files with 1665 additions and 15 deletions
@@ -12,13 +12,21 @@ class AppSettingsRepository {
static const _rowId = 0;
Future<({int? activeDroneProfileId, int? currentMissionId})> load() async {
Future<
({
int? activeDroneProfileId,
int? currentMissionId,
String? connectionDeviceAddress,
bool connectionAutoConnect,
})> load() async {
final row = await (_db.select(_db.appSettingsTable)
..where((s) => s.id.equals(_rowId)))
.getSingleOrNull();
return (
activeDroneProfileId: row?.activeDroneProfileId,
currentMissionId: row?.currentMissionId,
connectionDeviceAddress: row?.connectionDeviceAddress,
connectionAutoConnect: row?.connectionAutoConnect ?? true,
);
}
@@ -36,6 +44,26 @@ class AppSettingsRepository {
));
}
/// Gemerkte Bluetooth-MAC-Adresse (Doku Kommunikationsschicht 3.2a), oder
/// null um die Erinnerung zu loeschen (z.B. nach "Geraet entkoppeln").
Future<String?> loadConnectionDeviceAddress() async =>
(await load()).connectionDeviceAddress;
Future<void> setConnectionDeviceAddress(String? address) async {
await _upsert(AppSettingsTableCompanion(
id: const Value(_rowId),
connectionDeviceAddress: Value(address),
));
}
/// "Beim Wechsel in Fly automatisch verbinden" (Doku 7), Standard an.
Future<void> setConnectionAutoConnect(bool value) async {
await _upsert(AppSettingsTableCompanion(
id: const Value(_rowId),
connectionAutoConnect: Value(value),
));
}
Future<void> _upsert(AppSettingsTableCompanion companion) async {
await _db.into(_db.appSettingsTable).insertOnConflictUpdate(companion);
}