- C/C++ でイベントを検出しようとしています。
- Bluetooth ライブラリとして Linux で Bluez を使用しています。
- 私たちの目的は、そのイベントがトリガーされたときに外部スクリプトを実行することです。
- 具体的には、Motorola H730 ヘッドセットにボタンが付いており、そのボタンが押されたことを検出しようとしています。
- Bluetooth デバイス (hcitool) をペアリングし、それに接続できます (bluez-test-audio) が、そのアプローチを C/C++ に移行することに興味があります。
デバイスが接続され、ボタンが押されたときの hcidump の出力は次のとおりです。
HCI スニファー - Bluetooth パケット アナライザー バージョン 2.2
デバイス: hci0 snap_len: 1028 フィルター: 0xffffffffHCI イベント: モード変更 (0x14) plen 6
ステータス 0x00 ハンドル 21 モード 0x00 間隔 0
モード: アクティブ
ACL データ: ハンドル 21 フラグ 0x02 dlen 17
L2CAP(d): cid 0x0041 len 13 [psm 0]
< ACL データ: ハンドル 21 フラグ0x00 dlen 14
L2CAP(d): cid 0x0047 len 10 [psm 0]
< ACL データ: ハンドル 21 フラグ 0x00 dlen 22
L2CAP(d): cid 0x0047 len 18 [psm 0]
< ACL データ: ハンドル 21 フラグ 0x00 dlen 22
L2CAP (d): cid 0x0047 len 18 [psm 0]
HCI イベント: 完了したパケット数 (0x13) plen 5
ハンドル 21 パケット 1
ACL データ: ハンドル 21 フラグ 0x02 dlen 18
L2CAP(d): cid 0x0041 len 14 [psm 0]
< ACL データ: ハンドル 21 フラグ 0x00 dlen 14
L2CAP(d): cid 0x0047 len 10 [psm 0]
HCI イベント: 完了したパケット数 (0x13) plen 5
処理 21 パケット 1
HCI イベント: 完了したパケット数 (0x13) plen 5
処理 21 パケット 1
HCI イベント: 数完了したパケット (0x13) plen 5
ハンドル 21 パケット 1
HCI イベント: モード変更 (0x14) plen 6
ステータス 0x00 ハンドル 21 モード 0x02 間隔 2048
モード: スニフ- Bluetooth のドキュメントを探しましたが、あまりうまくいきませんでした。
Bluez を使用して C/C++ で Bluetooth イベントを検出するにはどうすればよいですか?
4619 次
2 に答える
1
昨年も似たようなことをしました。私が決めたアプローチは、libdbus-c++を使用して c++ プロキシ オブジェクト/クラスを生成し、dbus 経由で bluez と通信することでした。
- ヘッドセットに実装されている Bluetooth インターフェイスを特定します。d-feetを使用して、デバイスが接続されているときにデバイスを調べました。ここでヘッドセットからステータスを手動で制御および読み取ることができます。これはデバッグに役立ちました。
- 必要なインターフェイスの dbus xml 記述を生成、検索、または作成します。bluez api ドキュメントから xmlに API 仕様を翻訳することでこれを手動で行いましたが、dbus イントロスペクションによっても作成できると思います。
- dbusxx-xml2cppを使用 してプロキシ オブジェクトを生成する
- ボタンが押されたときに呼び出されるコールバックを決定する
- 必要に応じてプロキシ オブジェクトをコードに統合する
コードを libdbus-c++ にリンクし、ターゲットにもインストールする必要があります。
生成されたプロキシ オブジェクトを使用して、ヘッドセットのすべての機能にアクセスできます。これは、ボタンを押すだけでなく、さまざまな用途に役立つ可能性があります。
于 2015-07-08T18:37:20.177 に答える
0
収集された hcidump は、デバイス ホストとコントローラ間のログです。イベントはコントローラーがデバイス ホストに送信したもので、コマンドはデバイス ホストに送信された要求/応答です。
Bluez プログラミング ガイド : http://people.csail.mit.edu/albert/bluez-intro/
于 2013-01-24T10:25:26.173 に答える