autoconnect on fly mode (does not work yet)
This commit is contained in:
@@ -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();
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user