Fehler #134
geschlossenBLE-Ergometer: Advertisement-Scan vor dem Verbinden (wie beim Pulsmesser, #133)
0%
Beschreibung
Hinweis zum Test¶
Dieser Punkt kann nicht getestet werden: Es steht kein BLE-Ergometer/-Trainer zur Verfügung. Die Änderung wird ausschließlich auf Grund der Erfahrungen mit BLE-Pulsmessern (#133) umgesetzt und ist für Ergometer nicht auf echter Hardware verifiziert. Ob und bei welchen Trainern das Problem tatsächlich auftritt, ist unbekannt.
Hintergrund¶
In #133 wurde festgestellt: Windows liefert für ein BLE-Gerät mit Zufallsadresse nur dann eine Verbindung, wenn es das Gerät kürzlich in einem Advertisement gesehen hat. Sonst liefert BluetoothLEDevice.FromBluetoothAddressAsync(address) dauerhaft sofort null (beim Pulsmesser nach dem Neustart der Uhr beobachtet). Der Pulsmesser wurde in #133 mit einem kurzen Advertisement-Scan vor dem Verbinden korrigiert (BlePulsmesser.WaitForAdvertisementAsync).
Betroffene Stellen (nicht geändert)¶
Dasselbe Muster (Aufruf ohne Scan und ohne BluetoothAddressType) steht in:
BleFtmsErgometer.EstablishConnectionAsync(Verbindung beim Trainingsstart und automatischer Reconnect während des Trainings überErgometerReconnector)BleScanner.ConnectAsync(Geräteprüfung beim Auswählen, Geräte-Dialog)
Trainer mit öffentlicher Adresse oder Kopplung in Windows sind vermutlich nicht betroffen. Bei Zufallsadressen ist es möglich.
Vorschlag¶
WaitForAdvertisementAsyncausBlePulsmesserin eine gemeinsame Hilfsklasse inServices/Bleauslagern und inBlePulsmesser,BleFtmsErgometerundBleScanner.ConnectAsyncverwenden.- Log-Meldungen im gleichen Muster wie beim Pulsmesser:
BLE-Ergometer {Adresse}: <Aussage> (<Details>, <Dauer> ms). - Nebenwirkung: Sendet das Gerät nicht, wartet jeder Versuch bis zu 5 s auf ein Advertisement, bevor trotzdem verbunden wird (bei Wiederholung alle 1 s ca. 6 s pro Runde).
Verifikation¶
Nur über die vorhandenen Tests und den Pulsmesser-Pfad möglich. Für Ergometer: Rückmeldung von Nutzern mit BLE-Trainern abwarten.