EN JA
LIBUSB20(3)
LIBUSB20(3) FreeBSD Library Functions Manual LIBUSB20(3)

名称

libusb20USB アクセスライブラリ

ライブラリ

USB アクセスライブラリ (libusb -lusb)

書式

#include < libusb20.h>

int
libusb20_tr_close( struct libusb20_transfer *xfer);

int
libusb20_tr_open( struct libusb20_transfer *xfer, uint32_t max_buf_size, uint32_t max_frame_count, uint8_t ep_no);

libusb20_tr_open_stream( struct libusb20_transfer *xfer, uint32_t max_buf_size, uint32_t max_frame_count, uint8_t ep_no, uint16_t stream_id);

struct libusb20_transfer*
libusb20_tr_get_pointer( struct libusb20_device *pdev, uint16_t tr_index);

uint16_t
libusb20_tr_get_time_complete( struct libusb20_transfer *xfer);

uint32_t
libusb20_tr_get_actual_frames( struct libusb20_transfer *xfer);

uint32_t
libusb20_tr_get_actual_length( struct libusb20_transfer *xfer);

uint32_t
libusb20_tr_get_max_frames( struct libusb20_transfer *xfer);

uint32_t
libusb20_tr_get_max_packet_length( struct libusb20_transfer *xfer);

uint32_t
libusb20_tr_get_max_total_length( struct libusb20_transfer *xfer);

uint8_t
libusb20_tr_get_status( struct libusb20_transfer *xfer);

uint8_t
libusb20_tr_pending( struct libusb20_transfer *xfer);

void
libusb20_tr_callback_wrapper( struct libusb20_transfer *xfer);

void
libusb20_tr_clear_stall_sync( struct libusb20_transfer *xfer);

void
libusb20_tr_drain( struct libusb20_transfer *xfer);

void
libusb20_tr_set_buffer( struct libusb20_transfer *xfer, void *buffer, uint16_t fr_index);

void
libusb20_tr_set_callback( struct libusb20_transfer *xfer, libusb20_tr_callback_t *cb);

void
libusb20_tr_set_flags( struct libusb20_transfer *xfer, uint8_t flags);

uint32_t
libusb20_tr_get_length( struct libusb20_transfer *xfer, uint16_t fr_index);

void
libusb20_tr_set_length( struct libusb20_transfer *xfer, uint32_t length, uint16_t fr_index);

void
libusb20_tr_set_priv_sc0( struct libusb20_transfer *xfer, void *sc0);

void
libusb20_tr_set_priv_sc1( struct libusb20_transfer *xfer, void *sc1);

void
libusb20_tr_set_timeout( struct libusb20_transfer *xfer, uint32_t timeout);

void
libusb20_tr_set_total_frames( struct libusb20_transfer *xfer, uint32_t nframes);

void
libusb20_tr_setup_bulk( struct libusb20_transfer *xfer, void *pbuf, uint32_t length, uint32_t timeout);

void
libusb20_tr_setup_control( struct libusb20_transfer *xfer, void *psetup, void *pbuf, uint32_t timeout);

void
libusb20_tr_setup_intr( struct libusb20_transfer *xfer, void *pbuf, uint32_t length, uint32_t timeout);

void
libusb20_tr_setup_isoc( struct libusb20_transfer *xfer, void *pbuf, uint32_t length, uint61_t fr_index);

uint8_t
libusb20_tr_bulk_intr_sync( struct libusb20_transfer *xfer, void *pbuf, uint32_t length, uint32_t *pactlen, uint32_t timeout);

void
libusb20_tr_start( struct libusb20_transfer *xfer);

void
libusb20_tr_stop( struct libusb20_transfer *xfer);

void
libusb20_tr_submit( struct libusb20_transfer *xfer);

void *
libusb20_tr_get_priv_sc0( struct libusb20_transfer *xfer);

void *
libusb20_tr_get_priv_sc1( struct libusb20_transfer *xfer);

const char *
libusb20_dev_get_backend_name( struct libusb20_device *);

int
libusb20_dev_get_port_path( struct libusb20_device *pdev, uint8_t *buf, uint8_t bufsize);

int
libusb20_dev_get_info( struct libusb20_device *pdev, struct usb_device_info *pinfo);

int
libusb20_dev_get_iface_desc( struct libusb20_device *pdev, uint8_t iface_index, char *buf, uint8_t len);

const char *
libusb20_dev_get_desc( struct libusb20_device *pdev);

int
libusb20_dev_close( struct libusb20_device *pdev);

int
libusb20_dev_detach_kernel_driver( struct libusb20_device *pdev, uint8_t iface_index);

int
libusb20_dev_set_config_index( struct libusb20_device *pdev, uint8_t configIndex);

int
libusb20_dev_get_debug( struct libusb20_device *pdev);

int
libusb20_dev_get_fd( struct libusb20_device *pdev);

int
libusb20_dev_kernel_driver_active( struct libusb20_device *pdev, uint8_t iface_index);

int
libusb20_dev_open( struct libusb20_device *pdev, uint16_t transfer_max);

int
libusb20_dev_process( struct libusb20_device *pdev);

int
libusb20_dev_request_sync( struct libusb20_device *pdev, struct LIBUSB20_CONTROL_SETUP_DECODED *setup, void *data, uint16_t *pactlen, uint32_t timeout, uint8_t flags);

int
libusb20_dev_req_string_sync( struct libusb20_device *pdev, uint8_t index, uint16_t langid, void *ptr, uint16_t len);

int
libusb20_dev_req_string_simple_sync( struct libusb20_device *pdev, uint8_t index, void *ptr, uint16_t len);

int
libusb20_dev_reset( struct libusb20_device *pdev);

int
libusb20_dev_check_connected( struct libusb20_device *pdev);

int
libusb20_dev_set_power_mode( struct libusb20_device *pdev, uint8_t power_mode);

uint8_t
libusb20_dev_get_power_mode( struct libusb20_device *pdev);

uint16_t
libusb20_dev_get_power_usage( struct libusb20_device *pdev);

int
libusb20_dev_set_alt_index( struct libusb20_device *pdev, uint8_t iface_index, uint8_t alt_index);

struct LIBUSB20_DEVICE_DESC_DECODED *
libusb20_dev_get_device_desc( struct libusb20_device *pdev);

struct libusb20_config *
libusb20_dev_alloc_config( struct libusb20_device *pdev, uint8_t config_index);

struct libusb20_device *
libusb20_dev_alloc( void);

uint8_t
libusb20_dev_get_address( struct libusb20_device *pdev);

uint8_t
libusb20_dev_get_parent_address( struct libusb20_device *pdev);

uint8_t
libusb20_dev_get_parent_port( struct libusb20_device *pdev);

uint8_t
libusb20_dev_get_bus_number( struct libusb20_device *pdev);

uint8_t
libusb20_dev_get_mode( struct libusb20_device *pdev);

uint8_t
libusb20_dev_get_speed( struct libusb20_device *pdev);

uint8_t
libusb20_dev_get_config_index( struct libusb20_device *pdev);

void
libusb20_dev_free( struct libusb20_device *pdev);

void
libusb20_dev_set_debug( struct libusb20_device *pdev, int debug);

void
libusb20_dev_wait_process( struct libusb20_device *pdev, int timeout);

int
libusb20_be_get_template( struct libusb20_backend *pbe, int *ptemp);

int
libusb20_be_set_template( struct libusb20_backend *pbe, int temp);

int
libusb20_be_get_dev_quirk( struct libusb20_backend *pber, uint16_t index, struct libusb20_quirk *pq);

int
libusb20_be_get_quirk_name( struct libusb20_backend *pbe, uint16_t index, struct libusb20_quirk *pq);

int
libusb20_be_add_dev_quirk( struct libusb20_backend *pbe, struct libusb20_quirk *pq);

int
libusb20_be_remove_dev_quirk( struct libusb20_backend *pbe, struct libusb20_quirk *pq);

struct libusb20_backend *
libusb20_be_alloc_default( void);

struct libusb20_backend *
libusb20_be_alloc_freebsd( void);

struct libusb20_backend *
libusb20_be_alloc_linux( void);

struct libusb20_device *
libusb20_be_device_foreach( struct libusb20_backend *pbe, struct libusb20_device *pdev);

void
libusb20_be_dequeue_device( struct libusb20_backend *pbe, struct libusb20_device *pdev);

void
libusb20_be_enqueue_device( struct libusb20_backend *pbe, struct libusb20_device *pdev);

void
libusb20_be_free( struct libusb20_backend *pbe);

uint8_t
libusb20_me_get_1( const struct libusb20_me_struct *me, uint16_t off);

uint16_t
libusb20_me_get_2( const struct libusb20_me_struct *me, uint16_t off);

uint16_t
libusb20_me_encode( void *pdata, uint16_t len, const void *pdecoded);

uint16_t
libusb20_me_decode( const void *pdata, uint16_t len, void *pdecoded);

const uint8_t *
libusb20_desc_foreach( const struct libusb20_me_struct *me, const uint8_t *pdesc);

const char *
libusb20_strerror( int code);

const char *
libusb20_error_name( int code);

解説

libusb20 ライブラリは、USB ファイルシステムインタフェースを通して USB を容易にアクセスして制御することができる関数を実装しています。 libusb20 インタフェースは、 FreeBSD usb スタックに特有であり、他のオペレーティングシステムで利用可能ではありません、移植性のあるアプリケーションは、 libusb(3) を使用することを考慮すべきです。

USB 転送操作

libusb20_tr_close() は、 xfer に関連しているすべてのカーネルリソースを解放します。この関数は、成功すれば、0 を返します。 0 以外の返り値は、 LIBUSB20_ERROR 値を示しています。

libusb20_tr_open() は、USB pxfer に関連している max_buf_sizemax_frame_count に従ってカーネルバッファリソースを割り付け、指定された ep_no への転送をバインド (bind) します。 max_buf_size は、データトランスポート層がサポートしなければならない最小のバッファサイズです。 max_buf_size が 0 であるなら、 libusb20 ライブラリは、バッファサイズを計算するために wMaxPacketSize を使用します。これをアイソクロナス転送のために役に立てることができます。実際のバッファサイズは、 max_buf_size より大きく指定でき、 libusb20_tr_get_max_total_length() によって返されます。 max_frame_count が LIBUSB20_MAX_FRAME_PRE_SCALE で論理 OR されるなら、引数の残りの部分は、この関数が返るとき、ミリ秒から丸められたフレームの実数に変換されます。このフラグは、ISOCHRONOUS 転送だけに有効であり、他の転送タイプに対しては、効果がありません。フレームのセットアップの実数は、 libusb20_tr_get_max_frames() を呼び出すことによって見つけられます。この関数は、成功すれば、0 を返します。 0 以外の返り値は、 LIBUSB20_ERROR 値を示しています。

libusb20_tr_open_stream() は、そのような機能がある BULK エンドポイントのためのストリーム ID を指定できることを除いて、 libusb20_tr_open() と同じです libusb20_tr_open() は、ストリーム ID 0 をオープンするために使用することができます。

libusb20_tr_get_pointer() は、 pdevtr_index 引数に従って、割り付けられた USB 転送へのポインタを返します。この関数は、失敗したなら NULL を返します。

libusb20_tr_get_time_complete() は、ミリ秒単位で USB 転送の完成時間を返します。この関数は、エコー消去 (echo cancelling) を行うとき、アイソクロナス (isochronous) USB 転送に最も役に立ちます。

libusb20_tr_get_actual_frames() は、USB 転送が完了した後に USB フレームの実際の数を返します。 0 の値は、データが転送されなかったことを意味します。

libusb20_tr_get_actual_length() は、与えられた USB 転送に対してすべての転送される USB フレームの実際の長さの合計を返します。

libusb20_tr_get_max_frames() は、USB 転送が与えられた USB 転送のための設定されるとき、割り付けられた USB フレームの最大数を返します。

libusb20_tr_get_max_packet_length() は、与えられた USB 転送に関連している最大のパケット長をバイト単位で返します。短い USB パケットが、プロキシバッファを回避できるように、バッファサイズを切り上げるためにパケット長を使用することができます。

libusb20_tr_get_max_total_length() は、USB 転送に関連しているすべての USB フレームのデータの長さの合計の最大値を返します。制御転送の場合に、返された値は、フレーム 0 の一部である、8 バイトの SETUP パケットの長さを含んでいません。この関数の戻り値は、常に USB 転送がバインドされている終点の最大のパケットサイズ wMaxPacketSize に整列されます。

libusb20_tr_get_status() は、USB 転送の状態を返します。状態値は、1 組の LIBUSB20_TRANSFER_XXX enums (共用体) で定義されています。

libusb20_tr_pending() は、与えられた USB 転送が完了を保留中 (pending) とするなら、 0 以外を返します。そうでなければ、この関数は、0 を返します。

libusb20_tr_callback_wrapper() これは、非同期 USB コールバックをラップ (wrap) するために使用される内部関数です。

libusb20_tr_clear_stall_sync() これは、与えられた USB 転送でストール (stall) を同期してクリアするために使用される内部関数です。ストール (stall) のクリアに関する詳しい情報については、USB 仕様を参照してください。この関数が呼び出されたとき、与えられた USB 転送が保留中であるなら、 USB 転送は、この関数が呼び出された後にエラーで完了します。

libusb20_tr_drain() は、与えられた USB 転送を停止し、USB 転送がハードウェアで停止されるまで、返りません。

libusb20_tr_set_buffer() は、与えられた USB 転送と fr_index のための buffer ポインタを設定するために使用されます。通常、フレームインデックスは、0 です。

libusb20_tr_set_callback() は、非同期 USB 転送のための USB コールバックを設定するために使用されます。コールバックタイプは、libusb20_tr_callback_t によって定義されています。

libusb20_tr_set_flags() は、与えられた USB 転送のための様々な USB フラグを設定するために使用されます。

LIBUSB20_TRANSFER_SINGLE_SHORT_NOT_OK
エラーとして短いフレームを報告します。
LIBUSB20_TRANSFER_MULTI_SHORT_NOT_OK
複数の短いフレームは、許可されていません。
LIBUSB20_TRANSFER_FORCE_SHORT
すべての転送されたフレームは、短い終了 (terminated) です。
LIBUSB20_TRANSFER_DO_CLEAR_STALL
転送を始める前に、クリアストール (clear-stall) を行います。

libusb20_tr_get_length() は、インデックスによって与えられた USB フレームの長さを返します。 USB 転送が完了した後に、USB フレームの長さは、実際の転送された長さに更新します。

libusb20_tr_set_length() は、インデックスによって与えられた USB フレームの長さを設定します。

libusb20_tr_set_priv_sc0() は、プライベートなドライバポインタ番号 0 を設定します。

libusb20_tr_set_priv_sc1() は、プライベートなドライバポインタ番号 1 を設定します。

libusb20_tr_set_timeout() は、与えられた USB 転送のためのタイムアウトを設定します。 0 のタイムアウト値は、タイムアウトしないことを意味します。タイムアウトは、ミリ秒単位で与えられます。

libusb20_tr_set_total_frames() は、USB 転送を発行するとき、実行するべきであるフレームの合計数を設定します。 USB フレームの合計数は、与えられた USB 転送に関連している USB フレームの最大数未満でなければなりません。

libusb20_tr_setup_bulk() は、単一フレーム USB BULK (バルク) 転送を設定するためのヘルパ関数です。

libusb20_tr_setup_control() は、制御転送の長さに依存する単一、または、二重のフレーム USB CONTROL 転送を設定するためのヘルパ関数です。

libusb20_tr_setup_intr() は、単一フレーム USB INTERRUPT 転送を設定するためのヘルパ関数です。

libusb20_tr_setup_isoc() は、マルチフレーム USB ISOCHRONOUS 転送を設定するためのヘルパ関数です。

libusb20_tr_bulk_intr_sync() は、 length 引数によって与えられる長さ、 pbuf 引数によって与えられるバッファポインタ、 xfer 引数によって与えられる USB 転送がある同期 BULK または INTERRUPT 転送を実行します。 pactlen 引数が NULL でないなら、実際の転送の長さは、与えられポインタの宛先に格納されます。 timeout 引数が 0 でないなら、転送は、ミリ秒単位で与えられた値の後にタイムアウトします。この関数は、ok でない短いパケットのように転送フラグを変更しません。この関数は、成功すれば、0 を返し、そうでなければ、LIBUSB20_TRANSFER_XXX 値が返されます。

libusb20_tr_start() は、まだ開始されていないなら、USB 転送を開始させます。この関数は、ハードウェアのキューに入れられた転送を行いません。この関数は、ブロック化されていません。

libusb20_tr_stop() は、まだ停止されていないなら、USB 転送を停止します。この関数は、ブロック化されていません、すなわち、この関数から返った後に実際の停止が起こるということです。

libusb20_tr_submit() は、ハードウェアのキューに入れられた USB 転送を行います。

libusb20_tr_get_priv_sc0() は、USB 転送に関連している、プライベートドライバポインタ番号 0 を返します。

libusb20_tr_get_priv_sc1() は、USB 転送に関連している、プライベートドライバポインタ番号 1 を返します。

USB デバイス操作

libusb20_dev_get_backend_name() は、使用されたバックエンドを説明する 0 で終了する文字列を返します。

libusb20_dev_get_port_path() は、与えられた USB デバイスのためのデータストリームが続く USB ポート番号のリストを検索します。最初のポート番号は、Root HUB ポート番号です。次に、子どものポート番号が続きます。 Root HUB デバイス自体には、0 のポートパスの長さがあります。有効なポート番号は、1 から開始し、255 までの範囲です。一般的に、電気的なプロトコル制限のために、16 レベル以上になるべきではありません。この関数は、成功すれば、実際のポートレベルの数を返し、そうでなければ、常に負である、LIBUSB20_ERROR の値が返されます。ポートレベルの実際の数が指定された最大より大きいなら、LIBUSB20_ERROR の値が返されます。

libusb20_dev_get_info() は、BSD 特有の usb_device_info 構造体を pinfo によって与えられたメモリ位置に取り出します。 pdev によって与えられた USB デバイスは、この関数を実行する前に、オープンされていなければなりません。この関数は、成功すれば 0 を返し、そうでなければ、LIBUSB20_ERROR 値が返されます。

libusb20_dev_get_iface_desc() は、与えれた USB iface_index のためのカーネルインタフェースの説明を検索して取り出します。 USB インタフェースの説明の形式は、次の通りです: "drivername<unit>: <description>"説明の文字列は、常に 0 で終了されます。ドライバが与えれたインタフェースにアタッチされない場合に、0 の長さの文字列が書き込まれます。 pdev によって与えられた USB デバイスは、この関数を実行する前に、オープンされていなければなりません。この関数は、成功すれば 0 を返し、そうでなければ、LIBUSB20_ERROR 値が返されます。

libusb20_dev_get_desc() は、与えられた USB デバイスを説明する 0 で終了する文字列を返します。文字列の形式は、次の通りです: "drivername<unit>: <description>"

libusb20_dev_close() は、与えられた USB デバイスをクローズします。この関数は、成功すれば 0 を返し、そうでなければ、LIBUSB20_ERROR 値が返されます。

libusb20_dev_detach_kernel_driver() は、 iface_index によって与えられた USB インタフェースのためのカーネルドライバをデタッチしようと試みます。この関数は、成功すれば 0 を返し、そうでなければ、LIBUSB20_ERROR 値が返されます。

libusb20_dev_set_config_index() は、USB デバイスの設定インデックスを設定しようと試みます。最初の設定インデックスは、0 です。設定されていないインデックスは、255 です。この関数は、成功すれば 0 を返し、そうでなければ、 LIBUSB20_ERROR 値が返されます。

libusb20_dev_get_debug() は、USB デバイスのデバッグレベルを返します。

libusb20_dev_get_fd() は、与えられた USB デバイスのファイル記述子を返します。ファイル記述子が存在していないとき、負の数が、返されます。ポーリングのためにファイル記述子を使用することができます。

libusb20_dev_kernel_driver_active() は、カーネルドライバが与えられた USB インタフェースでアクティブであるなら、0 を返します。そうでなければ、LIBUSB20_ERROR 値が返されます。

libusb20_dev_open() は、USB 転送を設定することが可能となるように、USB デバイスをオープンします。制御転送だけが許可されていることを意味するように USB 転送の数を 0 にすることができます。この関数は、成功すれば 0 を返し、そうでなければ、LIBUSB20_ERROR 値が返されます。 LIBUSB20_ERROR_BUSY の返り値は、デバイスが既にオープンされていることを意味します。

libusb20_dev_process() は、ユーザランド USB 転送でカーネル USB 転送を同期するために呼び出されます。この関数は、成功すれば 0 を返し、そうでなければ、通常、与えられた USB デバイスがデタッチされていることを示す LIBUSB20_ERROR 値を返します。

libusb20_dev_request_sync() は、与えられた USB デバイスで同期制御要求を実行します。この呼び出しが成功する前に、USB デバイスは、オープンされていなければなりません。 setup は、デコードされる、ホストエンディアン SETUP パケットへのポインタです。 data は、制御トランザクションに関連しているデータ転送バッファへのポインタです。この引数は、NULL であるかもしれません。 pactlen は、制御トランザクションが完了した後に実際の転送の長さを保持する変数へのポインタです。 timeout は、ミリ秒単位で与えられるトランザクションタイムアウトです。 0 のタイムアウトは、タイムアウトをしないことを意味します。 flags は、トランザクションフラグ、例えば、LIBUSB20_TRANSFER_SINGLE_SHORT_NOT_OK を指定するために使用されます。この関数は、成功すれば 0 を返し、そうでなければ、 LIBUSB20_ERROR 値が返されます。

libusb20_dev_req_string_sync() は、最大の長さによって制限された与えられたバッファの中へ言語 ID と文字列インデックスによる USB 文字列を同期的に要求します。この関数は、成功すれば 0 を返し、そうでなければ、LIBUSB20_ERROR 値が返されます。

libusb20_dev_req_string_simple_sync() は、デフォルトの言語 ID を使用して USB 文字列を同期的に要求し、終わりの 0 を含んで最大の長さによって制限された与えられたバッファの中へ文字列を格納する前に、文字列を ASCII に変換します。この関数は、成功すれば 0 を返し、そうでなければ、LIBUSB20_ERROR 値が返されます。

libusb20_dev_reset() は、与えられた USB デバイスに BUS リセットに試みて、最後に設定された USB 設定を復旧します。この関数は、成功すれば 0 を返し、そうでなければ、LIBUSB20_ERROR 値が返されます。

libusb20_dev_check_connected() は、オープンされた USB デバイスがまだ接続されているかどうかチェックします。この関数は、デバイスがまだ接続されているなら、0 を返し、そうでなければ、LIBUSB20_ERROR 値が返されます。

libusb20_dev_set_power_mode() は、USB デバイスのパワー (電源) モードを設定します。有効なパワーモードは、次の通りです:

LIBUSB20_POWER_OFF
LIBUSB20_POWER_ON
LIBUSB20_POWER_SAVE
LIBUSB20_POWER_SUSPEND
LIBUSB20_POWER_RESUME

この関数は、成功すれば 0 を返し、そうでなければ、LIBUSB20_ERROR 値が返されます。

libusb20_dev_get_power_mode() は、与えられた USB デバイスのための現在選択されたパワーモードを返します。

libusb20_dev_get_power_usage() は、与えられた USB デバイスのミリアンペア単位で報告された電力消費量を返します。 0 の電力消費量は、デバイスが、自己電力供給されたことを意味します。

libusb20_dev_set_alt_index() は、与えられた USB インタフェースインデックスのための与えられた代替インデックスを設定しようと試みます。この関数は、成功すれば 0 を返し、そうでなければ、 LIBUSB20_ERROR 値が返されます。

libusb20_dev_get_device_desc() は、デコードされる、デバイス記述子のホストエンディアンバージョンへのポインタを返します。この関数を呼び出すとき、USB デバイスをオープンする必要はありません。

libusb20_dev_alloc_config() は、与えられた USB デバイスと設定インデックスのための USB 設定記述子を読み込んで、デコードします。この関数は、最終的に free() に渡されなければならないデコードされた設定へのポインタを返します。失敗の場合に、NULL が返されます。

libusb20_dev_alloc() は、新しい USB デバイスを割り付ける内部の関数です。

libusb20_dev_get_address() は、内部的で、必ずしも必要ない、与えられた USB デバイスのハードウェアアドレスを返します。有効なアドレスは、1 から始まります。

libusb20_dev_get_parent_address() は、与えられた親の USB HUB デバイスの必ずしも実際のハードウェアアドレスでない内部のハードウェアアドレスを返します。この値は、通常、1 に等しいデバイスアドレスがあるルート HUB に対して 0 です。有効なアドレスは、1 から始まります。

libusb20_dev_get_parent_port() は、親の USB HUB デバイスでポート番号を返します。この値は、通常、1 に等しいデバイスアドレスがあるルート HUB に対して 0 です。有効なポート番号は、1 から始まります。

libusb20_dev_get_bus_number() は、与えられた USB デバイスが属する内部のバス番号を返します。有効なバス番号は、1 から始まります。

libusb20_dev_get_mode() は、USB エンティティ (実体) の現在の操作モードを返します。有効な返り値は、次の通りです:

LIBUSB20_MODE_HOST
LIBUSB20_MODE_DEVICE

libusb20_dev_get_speed() は、与えられた USB デバイスの現在の速度を返します。

LIBUSB20_SPEED_UNKNOWN
LIBUSB20_SPEED_LOW
LIBUSB20_SPEED_FULL
LIBUSB20_SPEED_HIGH
LIBUSB20_SPEED_VARIABLE
LIBUSB20_SPEED_SUPER

libusb20_dev_get_config_index() は、与えられた USB デバイスのための現在選択している設定インデックスを返します。

libusb20_dev_free() は、与えられた USB デバイスとすべての関連する USB 転送を解放します。

libusb20_dev_set_debug() は、与えられた USB デバイスのためのデバッグレベルを設定します。

libusb20_dev_wait_process() は、保留中である USB 転送が与えられた USB デバイスで完了するまで、ウェートし (待ち) ます。 poll(2) 関数に渡されるタイムアウト値を指定することができます。

USB バックエンド操作

libusb20_be_get_template() は、現在選択されているグローバル USB デバイス側のモードテンプレートを整数ポインタ ptemp に返します。この関数は、成功すれば 0 を返し、そうでなければ、LIBUSB20_ERROR 値が返されます。

libusb20_be_set_template() は、グローバル USB デバイス側モードテンプレートを temp に設定します。新しいテンプレートは、次の USB 列挙 (enumeration) の後までアクティブにされません。テンプレート番号は、Mass Storage Device, USB Ethernet Device のように、 USB デバイスがどのように現れるかを決定します。 usb2_template(4) モジュールも参照してください。この関数は、成功すれば 0 を返し、そうでなければ、LIBUSB20_ERROR 値が返されます。

libusb20_be_get_dev_quirk() は、 index に従ってデバイスクワーク (quirk) を pq によって指された libusb20_quirk 構造体に返します。この関数は、成功すれば 0 を返し、そうでなければ、 LIBUSB20_ERROR 値が返されます。与えられたクワーク (quirk) が存在していないなら、LIBUSB20_ERROR_NOT_FOUND が返されます。

libusb20_be_get_quirk_name() は、 index に従ってクワーク (quirk) 名を pq によって指された libusb20_quirk 構造体に返します。この関数は、成功すれば 0 を返し、そうでなければ、LIBUSB20_ERROR 値が返されます。与えられたクワーク (quirk) が存在していないなら、 LIBUSB20_ERROR_NOT_FOUND が返されます。

libusb20_be_add_dev_quirk() は、 pq 引数によって指された libusb20_quirk 構造体をデバイスクワーク (quirk) リストに追加します。この関数は、成功すれば 0 を返し、そうでなければ、LIBUSB20_ERROR 値が返されます。与えられたクワーク (quirk) に追加することができないなら、 LIBUSB20_ERROR_NO_MEM が返されます。

libusb20_be_remove_dev_quirk() は、 pq 引数によって指された libusb20_quirk 構造体にマッチしているクワーク (quirk) をデバイスクワーク (quirk) リストから削除します。この関数は、成功すれば 0 を返し、そうでなければ、 LIBUSB20_ERROR 値が返されます。与えられたクワーク (quirk) が存在していないなら、LIBUSB20_ERROR_NOT_FOUND が返されます。

libusb20_be_alloc_default() libusb20_be_alloc_freebsd() libusb20_be_alloc_linux() これらの関数は、特定の USB バックエンドか、またはオペレーティングシステムのデフォルト USB バックエンドを割り付けるために使用されます。バックエンドを割り付けることは、現在存在する USB デバイスをスキャンする方法です。

libusb20_be_device_foreach() は、USB バックエンドに存在する USB デバイスを繰り返すために使用されます。 pdev の始めの値は、NULL です。この関数は、次のリスト中の USB デバイスを返します。 NULL が返されるなら、USB デバイスリストの終りに到達しました、

libusb20_be_dequeue_device() は、バックエンド USB デバイスリストから与えられた USB デバイスポインタをキューから取り除きます。キューから取り除かれた USB デバイスは、バックエンドが解放されるとき、解放さません。

libusb20_be_enqueue_device() は、与えられた USB デバイスポインタをバックエンド USB デバイスリストのキューに入れます。キューから取り除かれた USB デバイスは、バックエンドが解放されるとき、解放さません。

libusb20_be_free() は、デバイスリスト中の与えられたバックエンドとすべての USB デバイスを解放します。

USB 記述子解析

libusb20_me_get_1( pie, offset) この関数は、メッセージエンティティ (実体) の与えられたバイトオフセットの 1 バイトを返します。この関数は、無効のオフセットに対して安全です。

libusb20_me_get_2( pie, offset) この関数は、メッセージエンティティ (実体) の与えられたバイトオフセットのリトルエンディアンの 16 ビットの値を返します。この関数は、無効のオフセットに対して安全です。

libusb20_me_encode( pbuf, len, pdecoded) この関数は、いわゆる *DECODED 構造をバイナリ形式にエンコードします。与えられたバッファに適合する合計のエンコード長が返されます。バッファポインタが NULL であるなら、データは、バッファ位置に書き込まれません。

libusb20_me_decode( pbuf, len, pdecoded) この関数は、バイナリの構造をいわゆる *DECODED 構造にデコードします。合計のデコードされた長さが、返されます。バッファポインタは、NULL であってはいけません。

USB デバッグ

const char * libusb20_strerror( int code) code 引数によって与えられるエラーの ASCII 表現を取得します。この関数は、NULL を返しません。

const char * libusb20_error_name( int code) code 引数によって与えられるエラー列挙型の ASCII 表現を取得します。この関数は、NULL を返しません。

関連ファイル

/dev/usb

歴史

libusb20 API のいくつかの部分は、sourceforge の libusb プロジェクトに由来しています。
May 3, 2013 FreeBSD