簡體   English   中英

BlueZ5:入站配對完成時發生的事件

[英]BlueZ5: Event when inbound pairing is complete

我正在編寫一個C ++應用程序,該應用程序管理嵌入式設備的藍牙連接。 我在Linux下通過D-Bus與BlueZ5通訊。

作為實現入站配對的第一步,我做了以下工作:

  • 通過AgentManager1接口注冊“ NoInputNoOutput”代理
  • 通過Adapter1接口設置可配對的開啟和可配對的超時以及可發現的開啟和可發現的超時

現在,我需要一個事件來告訴我新設備已配對,因此我可以信任它並接受SPP連接。 但是我還沒有在規范中找到這樣的事件( https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/doc )。

有這樣的事件嗎? 似乎隨着bluetoothctl發出一條消息

[NEW]設備44:55:66:11:22:33 Foo酒吧

設備配對后...

有人可以告訴我我必須聽哪個事件嗎?

還是我必須投票? 我不認為bluetoothctl輪詢會很快做出反應。

這里

布爾值已連接[只讀]

指示當前是否連接了遠程設備。 PropertiesChanged信號指示對此狀態的更改。

添加新設備后,InterfaceAdded信號將在interface = org.freedesktop.DBus.ObjectManager上廣播。 請參閱以下使用dbus-monitor捕獲的信號。 檢查屬性已連接。

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 [
         ]
      )
   ]

如果已添加設備,則在interface = org.freedesktop.DBus.Properties上會收到PropertiesChanged信號。 見下面的截圖,它是一個斷開連接的日志,但是上面的一個可以幫助您在連接設備時接收信號。

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 [
   ]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM