autoconnect on fly mode (does not work yet)

This commit is contained in:
Constantin Leue
2026-08-02 08:25:23 +02:00
parent 5e9ef43f2f
commit 607dbb6584
13 changed files with 430 additions and 29 deletions
+49 -1
View File
@@ -19,7 +19,9 @@ class FakeMlrsNetworkController implements MlrsNetworkController {
final _packetsController = StreamController<MlrsSocketPacket>.broadcast();
final List<String> requestedSsidPrefixes = [];
final List<String?> requestedPreferredSsids = [];
final List<({Uint8List data, String host, int port})> sentPackets = [];
final List<String> rememberedSsids = [];
int releaseCount = 0;
int openSocketCount = 0;
int closeSocketCount = 0;
@@ -38,8 +40,9 @@ class FakeMlrsNetworkController implements MlrsNetworkController {
void emitPacket(MlrsSocketPacket packet) => _packetsController.add(packet);
@override
Future<void> requestNetwork(String ssidPrefix) async {
Future<void> requestNetwork(String ssidPrefix, {String? preferredSsid}) async {
requestedSsidPrefixes.add(ssidPrefix);
requestedPreferredSsids.add(preferredSsid);
}
@override
@@ -88,12 +91,15 @@ void main() {
String? host,
int port = 0,
String ssidPrefix = 'mLRS-',
String? rememberedSsid,
MlrsNetworkEvent event = const MlrsNetworkAvailable(),
}) async {
final transport = UdpTransport(
getHost: () async => host,
getPort: () async => port,
getSsidPrefix: () async => ssidPrefix,
getRememberedSsid: () async => rememberedSsid,
rememberSsid: (ssid) async => fake.rememberedSsids.add(ssid),
networkController: fake,
);
final connectFuture = transport.connect();
@@ -133,6 +139,8 @@ void main() {
getHost: () async => null,
getPort: () async => 0,
getSsidPrefix: () async => 'mLRS-',
getRememberedSsid: () async => null,
rememberSsid: (_) async {},
networkController: fake,
);
@@ -286,4 +294,44 @@ void main() {
transport.dispose();
});
test('passes the remembered SSID to requestNetwork for a silent reconnect',
() async {
final fake = FakeMlrsNetworkController();
final transport = await connectWithFake(
fake,
rememberedSsid: 'mLRS-1234',
);
expect(fake.requestedPreferredSsids, ['mLRS-1234']);
transport.dispose();
});
test('remembers the connected SSID reported by the platform', () async {
final fake = FakeMlrsNetworkController();
final transport = await connectWithFake(
fake,
event: const MlrsNetworkAvailable(ssid: 'mLRS-5678'),
);
expect(transport.connectedSsid, 'mLRS-5678');
expect(fake.rememberedSsids, ['mLRS-5678']);
transport.dispose();
});
test('connectedSsid is cleared on disconnect and network loss', () async {
final fake = FakeMlrsNetworkController();
final transport = await connectWithFake(
fake,
event: const MlrsNetworkAvailable(ssid: 'mLRS-5678'),
);
expect(transport.connectedSsid, 'mLRS-5678');
await transport.disconnect();
expect(transport.connectedSsid, isNull);
transport.dispose();
});
}