Bluetoothプロトコルの解説とライブラリ開発
ユーザ名
パスワード
パスワードをお忘れの方
|
新規登録
|
ごあんない
ホーム
:
検索
:
記事一覧
:
RSSフィード
:
リンク
:
ダウンロード
記事カテゴリメニュー
Bluetooth機器
一般
開発
関連ニュース
技術解説
書籍
Bluetooth関連書籍
AdSense
2010年09月 9日(木曜日) 09:03 JST
そろそろ再開
2007年03月14日(水曜日) 00:40 JST
投稿者:
Lily
またちょっとずつ進めていきます。
今月中にHCIの解説をアップするのが目標です。
USBドライバも少しずつ開発していきます。
とりあえず、USBドライバの方は、
1. インタラプトIN転送の受信(つまりHCIイベント受信)が出来るようにする
2. コントロール転送でHCIコマンドを送信できるようにする
ことが当面の目標です。
>> 続く
一気に解説すると大変なので、今日はインタラプトIN転送に利用する関数を説明します。
インタラプトIN転送の受信には、usb_fill_int_urbという関数を利用します。
この関数の引数は8個もあって、順番に、
1. 初期化するURBへのポインタ
2. usb_device構造体へのポインタ
3. パイプ番号
4. バッファへのポインタ
5. バッファのサイズ
6. 完了時に呼び出すコールバック関数
7. URBコンテキストに設定するvoid*型の値(コールバック関数内で利用できる)
8. インターバル
となっています。
URBはUSB Request Blockの略で、USB通信に必要な情報を集めた構造体です。
パイプ番号は
int pipe = usb_rsvintpipe(dev->udev, dev->itr_in_endpointAddr);
というようにエンドポイントアドレスが分かれば取得できますので、あとはバッファサイズとインターバル値をデバイスディスクリプタから取得する必要があります。
前回TODOというコメントを入れていたインタラプトIN転送に必要な情報取得部分は、
/* エンドポイントアドレスと最大パケットサイズ、インターバルを取得*/
dev->itr_in_interval = ep_desc->bInterval;
dev->itr_in_size = le16_to_cpu(ep_desc->wMaxPacketSize);
dev->itr_in_endpointAddr = ep_desc->bEndpointAddress;
こんな感じになるでしょう。
あとはURBの用意とバッファの用意、コールバック関数を用意すればOKです。
URBコンテキストにはbt_usb(独自構造体)オブジェクトへのポインタを渡せば良いでしょう。
関連情報
同じ投稿者からの投稿: Lily
同じ話題: 開発
記事のオプション
印刷用ページ
トラックバック
このエントリのトラックバックURL: http://bluetooth.k5-n.com/trackback.php?id=20070313233502513
そろそろ再開
| 0 件のコメント |
アカウントの作成
古い順に
新しい順に
表示しない
ツリー
入れ子
一覧
コメントは投稿者の責任においてなされるものであり、サイト管理者は責任を負いません。
Copyright © 2010 Bluetooth詳説
本ページのすべての商標と著作権はそれぞれの所有者に帰属します。
Powered By
Geeklog
&
Geeklog Japanese
ページ作成時間: 0.25 秒