本来はUSBマウスを使いたかったが、なぜか認識されなかったのでインタラプト転送があるBluetoothアダプタを選んだ。
既にBlueUSBで実現されているのでBluetoothのプロトコルは参考にしています。
USBホスト機能はNetServicesSourceに含まれていたUSBホストのプログラムを改良した。
バルク転送は実装されていたので、インタラプト転送のエンドポイントのヘッドポインタを
バルクヘッド(HcBulkHeadED)ではなくインタラプトヘッド(HccaInterruptTable)に繋げる。
インタラプト転送はperiodic転送に含まれているので、HcControlのperiodic転送(PLE)を有効にする。
USBホスト初期時に HcPeriodicStart に FI*90/100 を設定する。
プログラムはmbedサイトに置いておきます。
BlueD Bluetooth device discover
使用例:
#include "mbed.h" #include "BlueD.h" Serial pc(USBTX, USBRX); BlueD bd; int main() { pc.baud(460800); printf("Bluetooth device discover\n"); while(1) { setaddr = bd.discover_devices(); for (set ::iterator it = addr.begin() ; it != addr.end(); it++) { string addr(*it); string name = bd.lookup_name(addr); printf("%s [%s]\n", addr.c_str(), name.c_str()); } wait(30); } }
制限事項
アダプタのUSBハブ経由の接続には対応していない。
USBに接続されているのがBluetoothアダプタなのかは確認していない。
インターバルは32msecに固定。
---
0 件のコメント:
コメントを投稿