UI improvements for telemetry debugging
This commit is contained in:
@@ -71,6 +71,9 @@ class MlrsNetworkPlugin(
|
||||
private var networkCallback: ConnectivityManager.NetworkCallback? = null
|
||||
private var currentNetwork: Network? = null
|
||||
|
||||
/** Zuletzt an Dart gemeldete SSID der aktuellen Anfrage (siehe onCapabilitiesChanged unten) - vermeidet doppelte "ssid"-Ereignisse. */
|
||||
private var reportedSsid: String? = null
|
||||
|
||||
private var socket: DatagramSocket? = null
|
||||
@Volatile
|
||||
private var receiveLoopRunning = false
|
||||
@@ -160,16 +163,35 @@ class MlrsNetworkPlugin(
|
||||
.setNetworkSpecifier(specifier)
|
||||
.build()
|
||||
|
||||
reportedSsid = null
|
||||
val callback = object : ConnectivityManager.NetworkCallback() {
|
||||
override fun onAvailable(network: Network) {
|
||||
currentNetwork = network
|
||||
val gateway = gatewayAddressOf(connectivityManager.getLinkProperties(network))
|
||||
val ssid = ssidOf(connectivityManager.getNetworkCapabilities(network))
|
||||
if (ssid != null) reportedSsid = ssid
|
||||
eventSink?.success(
|
||||
mapOf("type" to "available", "gatewayAddress" to gateway, "ssid" to ssid),
|
||||
)
|
||||
}
|
||||
|
||||
// WifiInfo/SSID ist bei onAvailable() oft noch nicht befuellt -
|
||||
// Android liefert `NetworkCapabilities.getTransportInfo()` fuer
|
||||
// WifiNetworkSpecifier-Netze haeufig erst mit einem spaeteren
|
||||
// onCapabilitiesChanged()-Aufruf (bekannter Android-Stolperstein).
|
||||
// Deshalb hier zusaetzlich pruefen und die SSID nachreichen,
|
||||
// sobald sie bekannt wird.
|
||||
override fun onCapabilitiesChanged(
|
||||
network: Network,
|
||||
networkCapabilities: NetworkCapabilities,
|
||||
) {
|
||||
if (network != currentNetwork) return
|
||||
val ssid = ssidOf(networkCapabilities) ?: return
|
||||
if (ssid == reportedSsid) return
|
||||
reportedSsid = ssid
|
||||
eventSink?.success(mapOf("type" to "ssid", "ssid" to ssid))
|
||||
}
|
||||
|
||||
override fun onUnavailable() {
|
||||
currentNetwork = null
|
||||
eventSink?.success(mapOf("type" to "unavailable"))
|
||||
@@ -177,6 +199,7 @@ class MlrsNetworkPlugin(
|
||||
|
||||
override fun onLost(network: Network) {
|
||||
currentNetwork = null
|
||||
reportedSsid = null
|
||||
eventSink?.success(mapOf("type" to "lost"))
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user