BlueZ5: событие, когда входящее соединение завершено - PullRequest
0 голосов
/ 17 мая 2019

Я пишу C ++ - приложение, которое управляет соединениями Bluetooth для встроенного устройства. Я общаюсь с BlueZ5 через D-Bus под Linux.

В качестве первых шагов при реализации входящего соединения я сделал следующее:

  • Регистрация агента «NoInputNoOutput» через интерфейс AgentManager1
  • установить включение и отключение тайм-аута, а также обнаружение и обнаружение тайм-аута через интерфейс Adapter1

Теперь мне нужно событие, которое сообщит мне, что новое устройство было сопряжено, поэтому я могу доверять ему и принимать соединения SPP. Но я не смог найти такого события в спецификации (https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/doc).

Есть ли такое событие? Похоже, что bluetoothctl испускает сообщение типа

[NEW] Устройство 44: 55: 66: 11: 22: 33 Foo Bar

как только устройство подключится ...

Может кто-нибудь сказать мне, какое событие я должен слушать?

Или я должен опросить? Я не думаю, что bluetoothctl опрашивает, поскольку он реагирует очень быстро.

1 Ответ

2 голосов
/ 18 мая 2019

С здесь

логический Подключено [только для чтения]

Указывает, подключено ли удаленное устройство в данный момент.Сигнал PropertiesChanged указывает на изменения в этом состоянии.

Когда добавляется новое устройство, сигнал InterfaceAdded транслируется на interface = org.freedesktop.DBus.ObjectManager.Смотрите ниже сигнал, полученный с помощью dbus-монитора.Проверьте свойство Connected.

signal time=1558128293.155096 sender=:1.2 -> destination=(null destination) serial=65 path=/; interface=org.freedesktop.DBus.ObjectManager; member=InterfacesAdded
   object path "/org/bluez/hci0/dev_F0_D7_AA_AA_0C_41"
   array [
      dict entry(
         string "org.freedesktop.DBus.Introspectable"
         array [
         ]
      )
      dict entry(
         string "org.bluez.Device1"
         array [
            dict entry(
               string "Address"
               variant                   string "F0:D7:AA:AA:0C:41"
            )
            dict entry(
               string "Name"
               variant                   string "Moto"
            )
            dict entry(
               string "Alias"
               variant                   string "Moto"
            )
            dict entry(
               string "Class"
               variant                   uint32 5898764
            )
            dict entry(
               string "Icon"
               variant                   string "phone"
            )
            dict entry(
               string "Paired"
               variant                   boolean false
            )
            dict entry(
               string "Trusted"
               variant                   boolean false
            )
            dict entry(
               string "Blocked"
               variant                   boolean false
            )
            dict entry(
               string "LegacyPairing"
               variant                   boolean false
            )
            dict entry(
               string "Connected"
               variant                   boolean true
            )
            dict entry(
               string "UUIDs"
               variant                   array [
                  ]
            )
            dict entry(
               string "Adapter"
               variant                   object path "/org/bluez/hci0"
            )
         ]
      )
      dict entry(
         string "org.freedesktop.DBus.Properties"
         array [
         ]
      )
   ]

Если устройство уже добавлено, вы получите сигнал PropertiesChanged на interface = org.freedesktop.DBus.Properties.См. Ниже захват, отключение при входе в систему, но приведенный выше может помочь вам получить сигнал при подключении устройства.

signal time=1558128303.204016 sender=:1.2 -> destination=(null destination) serial=71 path=/org/bluez/hci0/dev_F0_D7_AA_AA_0C_41; interface=org.freedesktop.DBus.Properties; member=PropertiesChanged
   string "org.bluez.Device1"
   array [
      dict entry(
         string "Connected"
         variant             boolean false
      )
   ]
   array [
   ]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...