Ich schreibe eine Bibliothek in C/C++ für ein Bluetooth Low Energy-Gerät. Bisher habe ich die D-Bus-Schnittstelle von Bluez verwendet und war in der Lage zu erkennen, zu verbinden und mit dem Gerät zu kommunizieren.Bluez automatisch wiederverbinden Geräte
Wenn das Gerät jedoch aufgrund eines Verbindungsfehlers getrennt wird oder sich außerhalb des zulässigen Bereichs befindet, ist die erneute Verbindung nicht trivial. Idealerweise möchte ich ausstehende Verbindungen zu allen nicht verbundenen Geräten erstellen können, aber Bluez scheint das nicht zu unterstützen. Es scheint, dass Bluez nur einen simultanen Verbindungsanruf unterstützt, der nach 15-20 Sekunden ausläuft.
Eine Lösung wäre also, auf Werbepakete zu warten und eine Verbindung herzustellen, wenn ein bekanntes Gerät erkannt wird. Die guten Leute von #bluez haben mir gesagt, dass dies bereits implementiert wurde, und die Vorgehensweise besteht darin, ein Objekt zu registrieren, das GattProfile1 mit der RegisterProfile-Methode GattManager1 implementiert. Wenn Sie dies versuchen, ergab das kein Ergebnis, das Gerät bleibt nach einem Verbindungsfehler getrennt. Es ist auch sehr schlecht dokumentiert, also besteht eine gute Chance, dass ich etwas verpasst habe.
Meine Fragen sind: Ist das die richtige Lösung? Wird es eine nahtlose und schnelle Wiederverbindung ermöglichen? Wenn es ist, was kann falsch sein?