RXduino  1.20a
RXduinoマニュアル 最終更新日 平成26年6月29日
構成 | 型定義 | 列挙型 | 関数 | 変数
tkusbhost.h

RXマイコンの内蔵USBを利用して、USBホスト機能を実現する [詳細]

ソースコードを見る。

構成

struct  DeviceDesc_t
 デバイスディスクリプタ構造体 [詳細]
 
struct  ConfigDesc_t
 コンフィグディスクリプタ構造体 [詳細]
 
struct  EndpointDesc_t
 エンドポイントディスクリプタ構造体 [詳細]
 
struct  InterfaceDesc_t
 インタフェースディスクリプタ構造体 [詳細]
 
struct  USBHostInfo_t
 USBホストの情報が格納された構造体 [詳細]
 

型定義

typedef struct DeviceDesc_t DeviceDesc_t
 デバイスディスクリプタ構造体
 
typedef struct ConfigDesc_t ConfigDesc_t
 コンフィグディスクリプタ構造体
 
typedef struct EndpointDesc_t EndpointDesc_t
 エンドポイントディスクリプタ構造体
 
typedef struct InterfaceDesc_t InterfaceDesc_t
 インタフェースディスクリプタ構造体
 
typedef struct USBHostInfo_t USBHostInfo_t
 USBホストの情報が格納された構造体
 
typedef enum TKUSBH_RESULT TKUSBH_RESULT
 USBホスト関数が返すエラーコード
 

列挙型

enum  TKUSBH_RESULT {
  TKUSBH_OK = 0, TKUSBH_NOSUPPORT, TKUSBH_DISCONNECT, TKUSBH_NOINIT,
  TKUSBH_TIMEOUT, TKUSBH_STALL, TKUSBH_ERROR
}
 USBホスト関数が返すエラーコード [詳細]
 
enum  INTTRANS_TYPE { INTERRUPT_IN, INTERRUPT_OUT }
 インタラプト転送のタイプ [詳細]
 

関数

TKUSBH_RESULT tkusbh_init (void)
 USBホストモジュールを初期化する。 [詳細]
 
TKUSBH_RESULT tkusbh_is_connected ()
 ターゲットが接続されているかどうかを調べる [詳細]
 
TKUSBH_RESULT tkusbh_connect (int timeout_ms)
 ターゲットに接続する [詳細]
 
TKUSBH_RESULT tkusbh_halfway_connect (int timeout_ms)
 ターゲットに接続する。ただしenumerationはSET_ADDRESSまでしか実行しない。 [詳細]
 
TKUSBH_RESULT tkusbh_disconnect (int timeout_ms)
 ターゲットを切断する。切断されるまで待つ。 [詳細]
 
int tkusbh_get_descriptor (unsigned char type, unsigned char index, void *buf, int size)
 接続されているターゲットのディスクリプタを取得する [詳細]
 
int tkusbh_get_string (unsigned short index, unsigned short langid, char *buf, int buflen)
 接続されているターゲットのストリングディスクリプタを取得する [詳細]
 
int tkusbh_control_msg (unsigned short req, unsigned short val, unsigned short index, unsigned short len, unsigned char *buf, int timeout)
 コントロールトランザクションを発行する [詳細]
 
TKUSBH_RESULT tkusbh_set_configuration (int configuration)
 SET CONFIGURATIONを実行する [詳細]
 
int tkusbh_bulk_write (int ep, unsigned char *bytes, int size, int timeout)
 バルクOUT転送を実行する [詳細]
 
int tkusbh_bulk_read (int ep, unsigned char *bytes, int size, int timeout)
 バルクIN転送を実行する [詳細]
 
void tkusbh_start_interrupt_trans (int ep, int time, INTTRANS_TYPE type, void *callback)
 インタラプト転送を行う [詳細]
 
int tkusbh_interrupt_write (int ep, unsigned char *buf, int size)
 インタラプトOUT転送で送信されるデータを登録する [詳細]
 
int tkusbh_interrupt_read (int ep, unsigned char *buf, int size)
 インタラプトIN転送で受信したデータを取得する [詳細]
 

変数

int gUsbHostGpioPulldown
 GR-SAKURAのUSBホスト初期化時に、IO2(USB0_DRPD)とIO5(USB0_DPRPD)をどう扱うかを決める [詳細]
 

説明

RXマイコンの内蔵USBを利用して、USBホスト機能を実現する

tkusbhost.h で定義されています。

列挙型

USBホスト関数が返すエラーコード

列挙型の値
TKUSBH_OK 

エラーなし

TKUSBH_NOSUPPORT 

USBホストはサポートされていない

TKUSBH_DISCONNECT 

ターゲットが接続されていない

TKUSBH_NOINIT 

初期化されていない

TKUSBH_TIMEOUT 

タイムアウト(NAK)

TKUSBH_STALL 

STALLが返された

TKUSBH_ERROR 

その他のエラー

tkusbhost.h110 行で定義されています。

インタラプト転送のタイプ

列挙型の値
INTERRUPT_IN 

インタラプトIN転送

INTERRUPT_OUT 

インタラプトOUT転送

tkusbhost.h257 行で定義されています。

関数

TKUSBH_RESULT tkusbh_init ( void  )

USBホストモジュールを初期化する。

覚え書き
GR-SAKURAのUSBホストモード使用時にIO2とIO5をどうするかは、 変数 gUsbHostGpioPulldown によって設定する。
戻り値
成功すると TKUSBH_OK を返す。
USBホストをサポートしていないボードでは TKUSB_NOSUPPORT を返す
警告
USB仮想COMポートをUSBホストを同じポートで開くことはできない
TKUSBH_RESULT tkusbh_is_connected ( )

ターゲットが接続されているかどうかを調べる

戻り値
接続されていれば TKUSBH_OK を返す。
接続されていなければ TKUSBH_DISCONNECT を返す。
TKUSBH_RESULT tkusbh_connect ( int  timeout_ms)

ターゲットに接続する

引数
timeout_ms接続をタイムアウトまでの時間。ms単位で指定する。
-1を指定すると無限に待つ。
戻り値
成功したら TKUSBH_OK を返す。
タイムアウトしたら TKUSBH_TIMEOUT を返す。
何らかの接続エラーが発生して失敗したら TKUSBH_ERROR を返す。
USBホストをサポートしていないボードではTKUSB_NOSUPPORTを返す
覚え書き
タイムアウトは実装されていないかもしれない。
TKUSBH_RESULT tkusbh_halfway_connect ( int  timeout_ms)

ターゲットに接続する。ただしenumerationはSET_ADDRESSまでしか実行しない。

引数
timeout_ms接続をタイムアウトまでの時間。ms単位で指定する。
-1を指定すると無限に待つ。
戻り値
成功したら TKUSBH_OK を返す。
タイムアウトしたら TKUSBH_TIMEOUT を返す。
何らかの接続エラーが発生して失敗したら TKUSBH_ERROR を返す。
USBホストをサポートしていないボードではTKUSB_NOSUPPORTを返す
覚え書き
タイムアウトは実装されていないかもしれない。
TKUSBH_RESULT tkusbh_disconnect ( int  timeout_ms)

ターゲットを切断する。切断されるまで待つ。

引数
timeout_msタイムアウトはms単位で指定する。-1を指定すると無限に待つ。
戻り値
成功したら TKUSBH_DISCONNECT を返す。
タイムアウトしたら TKUSBH_TIMEOUT を返す。
USBホストをサポートしていないボードではTKUSB_NOSUPPORTを返す
int tkusbh_get_descriptor ( unsigned char  type,
unsigned char  index,
void *  buf,
int  size 
)

接続されているターゲットのディスクリプタを取得する

引数
typeディスクリプタのタイプ (USB規格で定義されている値)
index取得したいディスクリプタのインデックス値
buf取得したディスクリプタが格納されるバッファへのポインタ
sizeバッファのサイズ
戻り値
成功したら取得したディスクリプタの長さを返す
失敗(STALL)したら-1を返す
覚え書き
指定したsizeよりも実際のディスクリプタのほうが長ければ切り捨てられる
int tkusbh_get_string ( unsigned short  index,
unsigned short  langid,
char *  buf,
int  buflen 
)

接続されているターゲットのストリングディスクリプタを取得する

引数
index取得したいストリングディスクリプタのインデックス
langid言語ID。 USBHostInfo.landId を指定すること。
buf取得したディスクリプタが格納されるバッファへのポインタ
buflenバッファのサイズ
戻り値
成功したら取得したディスクリプタの長さを返す。
失敗(STALL)したら-1を返す
覚え書き
指定したbuflenよりも実際のディスクリプタのほうが長ければ切り捨てられる
int tkusbh_control_msg ( unsigned short  req,
unsigned short  val,
unsigned short  index,
unsigned short  len,
unsigned char *  buf,
int  timeout 
)

コントロールトランザクションを発行する

引数
req送信するreqフィールド
val送信するvalフィールド
index送信するindexフィールド
len送信するlenフィールド
buf送受信するデータが格納されたバッファ
timeoutタイムアウトするまでの時間。ms単位で指定する。
-1を指定すると無限に待つ。
戻り値
成功したら送受信したデータの長さを返す。
失敗(STALL)したら-1を返す
TKUSBH_RESULT tkusbh_set_configuration ( int  configuration)

SET CONFIGURATIONを実行する

引数
configurationコンフィギュレーション番号
戻り値
成功したら、TKUSBH_OKを返す。
失敗(STALL)したらTKUSBH_ERRを返す。
USBホストをサポートしていないボードではTKUSB_NOSUPPORTを返す
int tkusbh_bulk_write ( int  ep,
unsigned char *  bytes,
int  size,
int  timeout 
)

バルクOUT転送を実行する

引数
epエンドポイント番号
bytes送信するデータが格納されたバッファ
size送信するデータの長さ
timeoutタイムアウトするまでの時間。ms単位で指定する。
-1を指定すると無限に待つ。
戻り値
成功したら送信したデータの長さを返す。
失敗(STALL)したら-1を返す
警告
現在のバージョンではにより、使用できるエンドポイントは1種類
int tkusbh_bulk_read ( int  ep,
unsigned char *  bytes,
int  size,
int  timeout 
)

バルクIN転送を実行する

引数
epエンドポイント番号
bytes受信したデータが格納されるバッファ
size受信したいデータの最大長さ
timeoutタイムアウトするまでの時間。ms単位で指定する。
-1を指定すると無限に待つ。
戻り値
成功したら受信したデータの長さを返す。
失敗(STALL)したら-1を返す
警告
現在のバージョンではにより、使用できるエンドポイントは1種類
void tkusbh_start_interrupt_trans ( int  ep,
int  time,
INTTRANS_TYPE  type,
void *  callback 
)

インタラプト転送を行う

この関数を呼ぶと、インタラプト転送がシステムに登録され、自動的にINまたはOUTパケットが送出される。
ただし、受信バッファに空きがない場合や、送信バッファにデータがない場合には発行されないので、
tkusbh_interrupt_write()tkusbh_interrupt_read() を使って適宜データを補充したり読み出さなければ
連続してインタラプト転送が行われない。

引数
epエンドポイント番号
time転送間隔 (単位 ms)
typeインタラプト転送の種類
callbackインタラプト転送が発行されたときに呼び出されるユーザ関数(この機能は未実装)
int tkusbh_interrupt_write ( int  ep,
unsigned char *  buf,
int  size 
)

インタラプトOUT転送で送信されるデータを登録する

引数
epエンドポイント番号
buf送信するデータが格納されたバッファ
size送信するデータの長さ
戻り値
成功したらデータの長さを返す。
警告
現在のバージョンでは使用できるエンドポイントは1種類
int tkusbh_interrupt_read ( int  ep,
unsigned char *  buf,
int  size 
)

インタラプトIN転送で受信したデータを取得する

引数
epエンドポイント番号
buf受信したデータが格納されるバッファ
size受信したいデータの最大長さ
戻り値
成功したら受信したデータの長さを返す。
失敗(STALL)したら-1を返す
警告
現在のバージョンでは使用できるエンドポイントは1種類

変数

int gUsbHostGpioPulldown

GR-SAKURAのUSBホスト初期化時に、IO2(USB0_DRPD)とIO5(USB0_DPRPD)をどう扱うかを決める

    - 0: GPIOのままであり、プログラムで自由に使用できる。(デフォルト)
         この場合、基板裏面のJ13,J15をジャンパすること。
    - 1: 周辺機器モードにし、CPU内部でプルダウンする(USBホストの規格としては正しい動作)
         この場合、基板裏面のJ12,J14をジャンパすること。
覚え書き
この関数はH24/8/2に、V1.01への更新で追加された
警告
この変数は、 tkusbh_init() を呼び出す前に設定すること