Next: usb_driver 構造体
Up: Linux USB デバイスドライバのフレームワーク
Previous: USB Request Block(URB)
Linux USB コアドライバ は様々な USB デバイスドライバ が使用するUSB関連の
関数群を提供する. 以下, 本デバイスドライバで使用した関数について説明する.
- int usb_register(struct usb_driver *new_driver)
新しい USB デバイスドライバの登録を行なう. 処理が成功すれば 0 が
失敗の場合は負の値が返される. 引数 の usb_driver については
4.1.3で説明する.
*new_driver: usb_driver 構造体.
- void usb_deregister(struct usb_driver *driver)
すでに登録してある USB デバイスドライバの削除を行なう.
*new_driver: usb_driver 構造体.
- int usb_clear_halt(struct usb_device *dev, int pipe)
USB エンドポイントが STALL 状態になったとき, この関数で
その状態を解除する. STALL 状態とはエンドポイントがエラー等で
ホストと送受信できない状態を指す.
*dev: usb_device 構造体へのポインタ.
pipe: 転送に使用するパイプ.
- usb_sndctrlpipe(struct usb_device *dev, unsigned int endpoint)
引数 endpoint に対する downstream 制御転送用のパイプを作る.
これはマクロである.
*dev: usb_device 構造体へのポインタ.
endpoint: 制御転送を行なうエンドポイント.
- usb_rcvctrlpipe(struct usb_device *dev, unsigned int endpoint)
引数 endpointに対する upstream 制御転送用のパイプを作る.
これはマクロである.
*dev: usb_device 構造体へのポインタ.
endpoint: 制御転送を行なうエンドポイント.
- usb_sndbulkpipe(struct usb_device *dev, unsigned int endpoint)
引数 endpoint に対する downstream バルク転送用のパイプを作る.
これはマクロである.
*dev: usb_device 構造体へのポインタ.
endpoint: バルク転送を行なうエンドポイント.
- usb_rcvbulkpipe(struct usb_device *dev, unsigned int endpoint)
引数の endpoint に対する upstream バルク転送用のパイプを作る.
これはマクロである.
*dev: usb_device 構造体へのポインタ.
endpoint: バルク転送を行なうエンドポイント.
- int usb_control_msg(struct usb_device *dev, unsigned int pipe,
__u8 request, __u8 requesttype, __u16 value, __u16 index, void
*data, __u16 size, int timeout)
制御用 URB を作って送りその終了を待つ. 関数中で
FILL_CONTROL_URB() マクロを使って URB 構造体のメンバに
値を代入している. コールが成功したら 0 が返る. 失敗すると負の値が
返る.
*dev: メッセージを送る usb_device のポインタ.
pipe: メッセージを送るエンドポイントのパイプ.
request: リクエスト値.
requesttype: リクエストタイプ.
value: リクエストが決める値.
index: インデックス値.
*data: 転送するデータへのポインタ.
size: 転送するデータサイズ.
timeout: タイムアウトまでの時間(単位は jiffies).
- int usb_bulk_msg(struct usb_device *usb_dev, unsigned int pipe,
void *data, int len, int *actual_length, int timeout)
バルク転送用 URB を作って送りその終了を待つ. 関数中で
FILL_BULK_URB() マクロを使って URB 構造体のメンバに
値を代入している. コールが成功したら 0 が返る. 失敗すると負の値が
返る.
*dev: メッセージを送る usb_device のポインタ.
pipe: メッセージを送るエンドポイントのパイプ.
*data: 転送するデータへのポインタ.
len: 転送を行なうデータのバイト数.
*actual_length: 実際に転送が行なわれたバイト数へのポインタ.
timeout:タイムアウトまでの時間(単位は jiffies).
Kazuo Nakayoshi
Wed Jun 27 22:15:09 JST 2001