本来は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) {
set addr = 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 件のコメント:
コメントを投稿