host address retrieving through assigned subnet information and broadcast message to learn host address

This commit is contained in:
Constantin Leue
2026-08-03 23:10:11 +02:00
parent 4671b34f5b
commit 4e94102861
4 changed files with 87 additions and 16 deletions
@@ -10,14 +10,21 @@ sealed class MlrsNetworkEvent {
/// Android hat eine zuvor bewilligte exakte SSID still erneut verbunden).
/// [gatewayAddress] ist die Gateway-Adresse des Netzes, falls ermittelbar -
/// dient als Vorbelegung der Zieladresse, bevor eine Gegenstelle aus dem
/// Verkehr gelernt wurde (Doku Abschnitt 3). [ssid] ist die tatsaechliche
/// SSID des verbundenen Netzes, falls ermittelbar - wird gemerkt, damit
/// kuenftige Verbindungen exakt (statt per Praefix) angefragt werden koennen
/// (siehe [MlrsNetworkController.requestNetwork]).
/// Verkehr gelernt wurde (Doku Abschnitt 3). [broadcastAddress] ist die aus
/// der zugewiesenen IPv4-Adresse + Praefixlaenge berechnete Subnetz-
/// Broadcast-Adresse (z.B. 192.168.4.255) - robusterer Bootstrap-Fallback
/// als eine geratene feste Standard-IP, falls die mLRS-Bruecke kein
/// initiales Paket sendet, aus dem die App ihre Adresse lernen koennte: eine
/// an die Broadcast-Adresse gesendete Anfrage erreicht die Bruecke
/// unabhaengig von ihrer konkreten IP. [ssid] ist die tatsaechliche SSID des
/// verbundenen Netzes, falls ermittelbar - wird gemerkt, damit kuenftige
/// Verbindungen exakt (statt per Praefix) angefragt werden koennen (siehe
/// [MlrsNetworkController.requestNetwork]).
class MlrsNetworkAvailable extends MlrsNetworkEvent {
const MlrsNetworkAvailable({this.gatewayAddress, this.ssid});
const MlrsNetworkAvailable({this.gatewayAddress, this.broadcastAddress, this.ssid});
final String? gatewayAddress;
final String? broadcastAddress;
final String? ssid;
}
@@ -160,6 +167,7 @@ class MethodChannelMlrsNetworkController implements MlrsNetworkController {
return switch (map['type']) {
'available' => MlrsNetworkAvailable(
gatewayAddress: map['gatewayAddress'] as String?,
broadcastAddress: map['broadcastAddress'] as String?,
ssid: map['ssid'] as String?,
),
'ssid' => MlrsNetworkSsidUpdated(map['ssid']! as String),