Bluez: "Connect()" メソッドの戻り値と "Connected" 信号の違い

Bluez: "Connect()" メソッドの戻り値と "Connected" 信号の違い

Bluez APIドキュメントによると(デバイスインターフェース)このメソッドの戻り値は、Connect()1つ以上のプロファイルへの成功した接続を表します。

間違った接続()

(ジャンプ)

この方法は、1 つ以上のプロファイルが正常にリンクされた場合の成功を示します。

次のように説明される属性もありますConnected

ブール接続[読み取り専用]

リモートデバイスが現在接続されているかどうかを示します。 PropertiesChanged信号はこの状態の変化を示します。

実際には、Connect()メソッドの戻りとプロパティが設定されたことをプロパティに通知する信号到着の間に数秒の間隔があるようです。PropertiesChangedConnectedtrue

bluetoothctlを実行するとき:

[bluetooth]# connect XX:XX:XX:XX:XX:XX
Attempting to connect to XX:XX:XX:XX:XX:XX
[CHG] Device XX:XX:XX:XX:XX:XX Connected: yes
Connection successful

次のメッセージが D-Bus にキャプチャされます。

メソッド呼び出し時間=1646854334.904791 送信者=:1.521 -> 宛先=org.bluez Sequence=50 パス=/org/bluez/hci0/dev_XX_XX_XX_XX_XX_XX;Interface=org.bluez.Device1;Member=Connect
信号時間=1646854336.902736送信者=:1.128 ->宛先=(空の宛先)シーケンス=10521パス=/org/bluez/hci0/dev_XX_XX_XX_XX_XX_XX;Interface=org.freedesktop.DBus.PropertiesMem
   文字列 "org.bluez.Device1"
   一括[
      辞書項目(
         文字列「接続済み」
         変形ブール真
      )
   ]
   一括[
   ]

メソッド戻り時間=1646854339.349113送信者=:1.128 ->宛先=:1.521順序=10522応答順序=50

これは私たちに次のことを伝えます。

  • 属性がsignal()によって報告された内容に変更されると、[CHG] Device XX:XX:XX:XX:XX:XX Connected: yes画面に表示されます。Connectedtruetime=1646854336.902736
  • Connection successfulこのメッセージは、メソッドが()を返したときに表示されます。Connect()time=1646854339.349113
  • これらのイベントは2.4秒間隔で発生します。

問題は、これら2つのイベントの違いは何ですか?実際にBluetoothデバイスが接続されていることを示すイベントは何ですか?

(デバイスの接続を切断すると、Disconnect()メソッドリターンと信号到着の間に数秒の間隔があります0.003)。


環境:Linuxカーネル:5.4-179、Bluez:5.62-r3、Systemd 249.9:。

答え1

信号の到着はConnected下位層リンクの設定を表します(前方十字靭帯)。

メソッドの戻りは、Connect()少なくとも1つの項目があることを示します。輪郭接続に成功しました(上位リンク)。

関連情報