2015-08-29 15 views
5

Bluetooth düşük enerji aygıtı için C/C++ uygulamasında bir kitaplık yazıyorum. Şimdiye kadar Bluez'in maruz kaldığı D-Bus arayüzünü kullanıyorum ve cihazla bağlantı kurup bağlantı kurabiliyorum. AncakBluez otomatik yeniden bağlanma aygıtları

, cihaz ya bağlı bir bağlantı hatası ya da bunun yeniden bağlanmadan, kapsam dışı olmak bağlantısını keser önemsiz değil. İdeal olarak, bağlantısız tüm cihazlara bekleyen bağlantılar oluşturabilmek istiyorum, ancak Bluez bunu desteklemiyor gibi görünüyor. Görünüşe göre Bluez sadece 15-20 saniye sonra zaman aşımına uğrayan bir eşzamanlı çağrıyı destekliyor.

solüsyonu, bu şekilde reklam paketleri dinlemek ve bilinen bir cihaz algılandığında bağlamak olacaktır. #bluez'deki iyi insanlar bunun zaten uygulandığını ve bunu yapmanın yolunun GattManager1 RegisterProfile yöntemiyle GattProfile1'i uygulayan bir nesne kaydettirmek olduğunu söyledi. Bunu denemek hiçbir sonuç vermedi, bir bağlantı hatasından sonra cihaz bağlantısız kalır. Aynı zamanda çok zayıf bir şekilde belgelendi, bu yüzden bir şeyleri kaçırdığım için iyi bir şans var.

Sorularım: Bu doğru çözüm mü? Sorunsuz ve hızlı bir yeniden bağlanma sağlar mı? Eğer öyleyse, yanlış olan ne olabilir?

cevap

2

Tek bir Bluetooth aygıtına yeniden bağlanmak isterseniz, bağlantı durumunu org.freedesktop.DBus.Properties.PropertiesChanged alarak ve gerektiğinde yeniden bağlanmak için org.bluez.Device1.Connect numaralı telefonu arayarak izleyebilirsiniz. Bu zaman aşımına uğradığı için, Connect()'u, yalnızca org.bluez.Device1.Connected özelliği true olduğunda çıkacağınız bir döngüye yerleştirebilirsiniz.

asıl yazar GattProfile1 uygulayarak birden fazla cihaz için henüz bunu başardı mı?

İlgili konular