このセクションでは、USB デバイスドライバで役立つその他の関数について説明します。
インデックスを指定して文字列記述子を取得するには、usb_get_string_descr(9F) 関数を呼び出します。一部の構成、インタフェース、またはデバイス記述子には、文字列の ID が関連付けられています。そのような記述子には、ゼロ以外の値を含む文字列インデックスフィールドが含まれています。文字列インデックスフィールドの値を usb_get_string_descr(9F) に渡すと、対応する文字列を取得できます。
各パイプは、クライアントドライバ専用に確保された領域のポインタを 1 つずつ備えています。値をインストールするには、usb_pipe_set_private(9F) 関数を使用します。値を取得するには、usb_pipe_get_private(9F) 関数を使用します。この機能がコールバックで役に立つのは、パイプが独自のクライアント定義状態を特定処理の対象としてコールバックに渡す必要がある場合です。
usb_clr_feature(9F) 関数を使用すると、次のタスクを実行できます。
あるエンドポイントの停止状態をクリアするために、USB CLEAR_FEATURE 要求を発行します。
デバイス上のリモートウェイクアップ状態をクリアします。
デバイスレベル、インタフェースレベル、またはエンドポイントレベルのデバイス固有状態をクリアします。
USB GET_STATUS 要求を発行してデバイス、インタフェース、またはエンドポイントのステータスを取得するには、usb_get_status(9F) 関数を使用します。
デバイスのステータス。自己電源とリモートウェイクアップが有効。
インタフェースのステータス。USB 2.0 仕様に従ってゼロを返す。
エンドポイントのステータス。エンドポイントが停止。このステータスは機能ストールを示します。停止をクリアしないと、デバイスをふたたび動作させることができません。
プロトコルストールは、サポートされない制御パイプ要求が行われたことを示します。プロトコルストールは、次回の制御転送の開始時に自動的にクリアされます。
デバイスの USB バスアドレスをデバッグ目的で取得するには、usb_get_addr(9F) 関数を使用します。このアドレスは特定の USB ポートに対応します。