• 検索結果がありません。

ux_host_stack_initialize

ホスト操作用に

USBX

を初期化 プロトタイプ

UINT ux_host_stack_initialize(UINT (*system_change_function) (ULONG, UX_HOST_CLASS *))

説明

USB

ホストスタックを初期化するファンクションです。与えられたメモリ領域が

USBX

内部で の使用用にセットアップされます。UX_SUCCESSが返されたら、USBXはホストコントローラ とクラスの登録が可能になります。

入力パラメータ

system_change_function

アプリケーションにデバイスの変更を通知するため のオプションのコールバックルーチンへのポインタ 返却値

UX_SUCCESS (0x00)

初期化成功。

Example

UINT status;

/* Initialize USBX for host operation, without notification. */

status = ux_host_stack_initialize(UX_NULL);

/* If status equals UX_SUCCESS, USBX has been successfully initialized for host operation.*/

ux_host_stack_endpoint_transfer_abort

エンドポイントへの転送要求にアタッチされているすべてのトランザクションをアボート プロトタイプ

UINT ux_host_stack_endpoint_transfer_abort(UX_ENDPOINT *endpoint)

説明

エンドポイントにアタッチされている特定の転送要求に関し、すべてのトランザクションを(アク ティブか保留中かにかかわりなく)取り消すファンクションです。転送要求にコールバックファ ンクションがアタッチされているときは、

UX_TRANSACTION_ABORTED

ステータスでコー ルバックファンクションがコールされます。

入力パラメータ

endpoint

エンドポイントへのポインタ

返却値

UX_SUCCESS (0x00)

エラーなし。

UX_ENDPOINT_HANDLE_UNKNOWN (0x53)

エンドポイントハンドルが無効で

す。

UX_HOST_CLASS_PRINTER *printer;

UINT status;

/* Get the instance for this class.*/

printer =

(UX_HOST_CLASS_PRINTER *) command -> ux_host_class_command_instance;

/* The printer is being shut down.*/

printer -> printer_state = UX_HOST_CLASS_INSTANCE_SHUTDOWN;

/* We need to abort transactions on the bulk out pipe.*/

status = ux_host_stack_endpoint_transfer_abort

(printer -> printer_bulk_out_endpoint);

/* If status equals UX_SUCCESS, the operation was successful */

ux_host_stack_class_get

クラスコンテナへのポインタを取得 プロトタイプ

UINT ux_host_stack_class_get(UCHAR *class_name, UX_HOST_CLASS **class)

説明

クラスコンテナへのポインタを返すファンクションです。クラスまたはアプリケーションでデバイ スをオープンしようとするときに、クラスでは、インスタンスを検索するために

USB

スタックか らクラスのコンテナを取得する必要があります。

パラメータ

class_name Pointer to the class name.

class

クラスの名前に関し、クラスコンテナを記述したファ

ンクションコールにより更新されたポインタ 返却値

UX_SUCCESS (0x00)

エラーなし。返却時に、クラスフィールドが

クラスコンテナへのポインタとともにファイ ル化されます。

UX_HOST_CLASS_UNKNOWN (0x59)

スタックにとって不明のクラスです。

UX_HOST_CLASS *printer_container;

UINT status;

/* Get the container for this class. */

status = ux_host_stack_class_get("ux_host_class_printer",

&printer_container);

/* If status equals UX_SUCCESS, the operation was successful */

ux_host_stack_class_register

USB

スタックに

USB

クラスを登録 プロトタイプ

UINT ux_host_stack_class_register(CHAR_PTR class_name,

UINT (*class_entry_address)

(struct UX_HOST_CLASS_COMMAND_STRUCT *))

説明

USB

スタックに

USB

クラスを登録するファンクションです。以下のようなコマンドを送信するた めには、クラスは

USB

スタックへのエントリポイントを指定する必要があります。

UX_HOST_CLASS_COMMAND_QUERY UX_HOST_CLASS_COMMAND_ACTIVATE UX_HOST_CLASS_COMMAND_DESTROY

パラメータ

class_name

クラス名へのポインタについては、USBXの

USB

ラスの下にあるファイル

ux_system_initialize.c

に有 効なエントリが見つかります。

class_entry_address

クラスのエントリファンクションのアドレス

返却値

UX_SUCCESS (0x00)

クラスが正常にインストールされま

した。

UX_MEMORY_INSUFFICIENT (0x12)

このクラスを保存するためのメモリ

が不足しています。

UX_HOST_CLASS_ALREADY_INSTALLED (0x58)

ホストクラスは既にインストールさ

れています。

UINT status;

/* Register all the classes for this implementation.*/

status = ux_host_stack_class_register("ux_host_class_hub", ux_host_class_hub_entry);

/* If status equals UX_SUCCESS, class was successfully installed.*/

ux_host_stack_class_instance_create

クラスコンテナに新しいクラスインスタンスを作成 プロトタイプ

UINT ux_host_stack_class_instance_create(UX_HOST_CLASS *class, VOID *class_instance)

説明

クラスコンテナに新しいクラスインスタンスを作成するファンクションです。クラスの複雑さを軽 減するために、クラスのインスタンスはクラスコードには含まていません。代わりに、メインス タックにあるクラスコンテナに各クラスがアタッチされています。

パラメータ

class

クラスコンテナへのポインタ

class_instance

作成するクラスインスタンスへのポインタ

返却値

UX_SUCCESS (0x00)

クラスインスタンスがクラスコンテナにアタッチされま した。

Example

UINT status;

UX_HOST_CLASS_PRINTER *printer;

/* Obtain memory for this class instance.*/

printer = ux_memory_allocate(UX_NO_ALIGN,

sizeof(UX_HOST_CLASS_PRINTER));

if (printer == UX_NULL)

return(UX_MEMORY_INSUFFICIENT);

/* Store the class container into this instance.*/ printer -> printer_class

= command -> ux_host_class;

/* Create this class instance. */

status = ux_host_stack_class_instance_create(printer -> printer_class, (VOID *)printer);

/* If status equals UX_SUCCESS, the class instance was successfully created and attached to the class container.*/

ux_host_stack_class_instance_destroy

クラスコンテナのクラスインスタンスを破棄 プロトタイプ

UINT ux_host_stack_class_instance_destroy(UX_HOST_CLASS *class, VOID *class_instance);

説明

クラスコンテナのクラスインスタンスを破棄するファンクションです。

パラメータ

class

クラスコンテナへのポインタ

class_instance

破棄するインスタンスへのポインタ

返却値

UX_SUCCESS (0x00)

クラスインスタンスが破棄されま

した。.

UX_HOST_CLASS_INSTANCE_UNKNOWN (0x5b)

クラスインスタンスがクラスコンテ

ナにアタッチされていません。

UINT status;

UX_HOST_CLASS_PRINTER *printer;

/* Get the instance for this class. */

printer =

(UX_HOST_CLASS_PRINTER *) command -> ux_host_class_command_instance;

/* The printer is being shut down. */

printer -> printer_state = UX_HOST_CLASS_INSTANCE_SHUTDOWN;

/* Destroy the instance.*/

status = ux_host_stack_class_instance_destroy(printer -> printer_class, (VOID *) printer);

/* If status equals UX_SUCCESS, the class instance was successfully destroyed.*/

ux_host_stack_class_instance_get

特定のクラスへのクラスインスタンスポインタを取得 プロトタイプ

UINT ux_host_stack_class_instance_get(UX_HOST_CLASS *class, UINT class_index, VOID **class_instance)

説明

特定のクラスへのクラスインスタンスポインタを返すファンクションです。クラスの複雑さを軽 減するために、クラスのインスタンスはクラスコードには含まていません。代わりに、クラスコ ンテナに各クラスがアタッチされています。このファンクションは、クラスコンテナ内でクラスイ ンスタンスを検索するために使用されます。

パラメータ

class

クラスコンテナへのポインタ

class_index

コンテナにアタッチされているクラスのリスト内で、

ファンクションコールが使用するインデックス

class_instance

ファンクションコールにより返されるインスタンスへの ポインタ

返却値

UX_SUCCESS (0x00)

クラスインスタンスが見つかりま

した。

UX_HOST_CLASS_INSTANCE_UNKNOWN (0x5b)

これ以上のクラスインスタンスは

クラスコンテナにアタッチされて いません。

UINT status;

UX_HOST_CLASS_PRINTER *printer;

/* Obtain memory for this class instance.*/

printer = ux_memory_allocate(UX_NO_ALIGN,

sizeof(UX_HOST_CLASS_PRINTER));

if (printer == UX_NULL)

return(UX_MEMORY_INSUFFICIENT);

/* Search for instance index 2.*/

status = ux_host_stack_class_instance_get(class, 2, (VOID *) printer);

/* If status equals UX_SUCCESS, the class instance was found.*/

ux_host_stack_device_configuration_get

コンフィギュレーションコンテナへのポインタを取得 プロトタイプ

UINT ux_host_device_stack_configuration_get(UX_DEVICE *device,

UINT configuration_index,

UX_CONFIGURATION **configuration)

説明

デバイスハンドルとコンフィギュレーションインデックスに基づいて、コンフィギュレーションコン テナを返すファンクションです。

パラメータ

device

要求されたコンフィギュレーションを所有するデバイ

スコンテナへのポインタ

configuration_index

検索対象のコンフィギュレーションのインデックス

configuration

返却対象のコンフィギュレーションコンテナへのポイ

ンタのアドレス 返却値

UX_SUCCESS (0x00)

コンフィギュレーションが見つか

りました。

UX_DEVICE_HANDLE_UNKNOWN (0x50)

デバイスコンテナが存在しません。

UX_CONFIGURATION_HANDLE_UNKNOWN (0x51)

インデックスのコンフィギュレー

ションハンドルが存在しません。

UINT status;

UX_HOST_CLASS_PRINTER *printer;

/* If the device has been configured already, we don't need to do it again.*/

if (printer -> printer_device -> ux_device_state ==

UX_DEVICE_CONFIGURED) return(UX_SUCCESS);

/* A printer normally has one configuration, retrieve 1st configuration only.*/

status = ux_host_stack_device_configuration_get(printer ->

printer_device, 0, configuration);

/* If status equals UX_SUCCESS, the configuration was found.*/

ux_host_stack_device_configuration_select

デバイスに特定のコンフィギュレーションを選択 プロトタイプ

UINT ux_host_stack_device_configuration_select

(UX_CONFIGURATION *configuration)

説明

デバイスに特定のコンフィギュレーションを選択するファンクションです。このコンフィギュレー ションをデバイスに設定すると、デフォルトでは、各デバイスインタフェースとそれに関連する 代替設定

0

がデバイス上でアクティブになります。特定のインタフェースの設定をデバイスク ラ ス や イ ン タ フ ェ ー ス ク ラ ス で 変 更 し よ う と す る 場 合 は 、

ux_host_stack_interface_setting_select

サービスコールを発行する必要があります。

パラメータ

configuration

このサービスに対して有効にすべきコンフィギュレー

ションコンテナへのポインタ 返却値

UX_SUCCESS (0x00)

コンフィギュレーションの選択に成功しました。

UX_CONFIGURATION_HANDLE_UNKNOWN

(0x51)

コンフィギュレーションハンドルが存在しません。

UX_OVER_CURRENT_CONDITION

(0x43)

このコンフィギュレーションに対してバス上に過電流

状態が存在します。

UINT status;

UX_HOST_CLASS_PRINTER *printer;

/* If the device has been configured already, we don't need to do it again.*/

if (printer -> printer_device -> ux_device_state ==

UX_DEVICE_CONFIGURED) return(UX_SUCCESS);

/* A printer normally has one configuration - retrieve 1st configuration only.*/

status = ux_host_stack_device_configuration_get(printer ->

printer_device, 0,configuration);

/* If status equals UX_SUCCESS, the configuration selection was successful.*/

/* If valid configuration, ask USBX to set this configuration.*/

status = ux_host_stack_device_configuration_select(configuration);

/* If status equals UX_SUCCESS, the operation was successful.*/

ux_host_stack_device_get

デバイスコンテナへのポインタを取得 プロトタイプ

UINT ux_host_stack_device_get(ULONG device_index, UX_DEVICE **device)

説明

デバイスコンテナを、デバイスのインデックスに基づいて返すファンクションです。デバイスイ ンデックスは

0

で始まります。複数のコントローラを備えることも可能で、しかもバイトインデッ クスでは不十分なため、インデックスが

ULONG

型であることに注意してください。また、デバ イスインデックスは、バス固有のデバイスアドレスとは異なります。

パラメータ

device_index

デバイスのインデックス

device

返却対象のデバイスコンテナへのポインタのアドレス

返却値

UX_SUCCESS (0x00)

デバイスコンテナが存在し、返されました。

UX_DEVICE_HANDLE_UNKNOWN (0x50)

デバイスが不明です。

UINT status;

/* Locate the first device in USBX.*/

status = ux_host_stack_device_get(0, device);

/* If status equals UX_SUCCESS, the operation was successful.*/

関連したドキュメント