Я работаю с примером сервера gatt, поставляемого с BlueZ, и добавил обработчик сигнала для обнаружения соединений и разъединений, например:
bus.add_signal_receiver(PropertiesChangedHandler,
dbus_interface = "org.freedesktop.DBus.Properties",
signal_name = "PropertiesChanged",
arg0 = "org.bluez.Device1",
path_keyword = "path")
Мой обработчик сигнала просто выводит некоторую информацию:
def PropertiesChangedHandler(interface, changed, invalidated, path):
if 'Connected' in changed:
print("---- Connected Property Changed ----")
print('Interface: ', interface)
print('Changed: ', changed['Connected'])
print('Path: ', path)
if 'ServicesResolved' in changed:
print("---- ServicesResolved Property Changed ----")
print('Interface: ', interface)
print('Changed: ', changed['ServicesResolved'])
print('Path: ', path)
Однако при запуске сервера я могу только обнаружить отключения. Я никогда не получаю никаких сигналов для соединений. Я добавил «ServicesResolved» к обрабатываемым сигналам, и он, казалось, работал как ожидалось. Мои журналы выглядят примерно так при подключении и отключении:
---- УслугиРазрешенная недвижимость изменена ----
Интерфейс: org.bluez.Device1
Изменено: 1
Путь: / org / bluez / hci0 / dev_42_36_D9_11_CA_4B
---- Связанная недвижимость изменена ----
Интерфейс: org.bluez.Device1
Изменено: 0
Путь: / org / bluez / hci0 / dev_42_36_D9_11_CA_4B
---- УслугиРазрешенная недвижимость изменена ----
Интерфейс: org.bluez.Device1
Изменено: 0
Путь: / org / bluez / hci0 / dev_42_36_D9_11_CA_4B
Какие причины могут быть для этого странного поведения? Я использую BlueZ 5.46, если это имеет значение.