Piszę bibliotekę w C/C++ dla urządzenia o niskiej energii Bluetooth. Do tej pory korzystałem z interfejsu D-Bus odsłoniętego przez Bluez i udało mi się odkryć, połączyć się i komunikować z urządzeniem.Urządzenia do automatycznego ponownego łączenia urządzeń Bluez
Jednak, gdy urządzenie zostanie odłączone z powodu awarii łącza lub poza zasięgiem, ponowne połączenie z nim nie jest banalne. Idealnie chciałbym móc tworzyć oczekujące połączenia ze wszystkimi odłączonymi urządzeniami, ale Bluez nie wydaje się tego wspierać. Wygląda na to, że Bluez obsługuje tylko jedno jednoczesne połączenie, które upływa po 15-20 sekundach.
Rozwiązaniem byłoby zatem słuchanie pakietów reklamowych i łączenie się w przypadku wykrycia znanego urządzenia. Dobrzy ludzie z #bluez powiedzieli mi, że to już zostało zaimplementowane, a sposobem na to jest zarejestrowanie obiektu, który implementuje GattProfile1 za pomocą metody GattManager1 RegisterProfile. Próba tego nie dała żadnego rezultatu, urządzenie pozostaje rozłączone po awarii łącza. Jest również bardzo słabo udokumentowana, więc jest duża szansa, że coś przeoczyłem.
Moje pytania są następujące: Czy to właściwe rozwiązanie? Czy zapewni bezproblemowe i szybkie ponowne podłączanie? Jeśli tak, to co może być nie tak?