http://mbed.org/users/va009039/code/BTstack/
以前のUSBライブラリを削除して、
追加、変更したのは次のファイルだけです。
USBHostBTstack.h
USBHostBTstack.cpp
hci_transport_usb.cpp
Bluetoothマウスの動作確認はしました。しかし、パソコンとのSPPシリアルポート通信はパソコンに
よっては接続に失敗する時がある。L2CAP、SDPは動いていてSPPのサービス情報を読み取れる。
BTstackとパソコンのBluetoothドライバとの相性のようにも思えるがよくわからない。
BluetoothのUSBはコントロール転送とインタラプト転送とバルク転送を使っています。
インタラプト転送はマウスのクラスドライバ、バルク転送はMSDフラッシュディスクのクラスドライバを
参考にしました。パケット送信はブロックモードで動かしました。
パケット受信はブロックされずに、USBHostのスレッドusb_process()からコールバックされています。
スタックは4Kバイトくらい。BTstackと非同期で動くのが安全なのかわからないので、
BTstackと同じスレッド、つまりmain()のスレッドからコールバックされるように変更する予定です。
(2013/3/22)
予めPINコードで認証した時は接続に失敗するが、接続時に認証する時は接続できる。
HCI_EVENT_LINK_KEY_REQUESTが送られてきた時に間違った link keyを送っているので接続出来ないようです。
L2CAP_EVENT_CHANNEL_OPENED for PSM_RFCOMM rfcomm_max_frame_size_for_l2cap_mtu: 48 -> 43 Received SABM #0 Sending UA #0 Multiplexer up and running HCI_EVENT_LINK_KEY_REQUEST responding to link key request Received DISC #0, (ougoing = 0) Sending UA #0 Closing down multiplexer TODO: no connections established - delete link key prophylactically
(2013/3/22追加)
---
0 件のコメント:
コメントを投稿