AG903ライブラリリファレンス
内容インデックスホーム
前へ上へ次へ
Usbh_Api_SetDescriptor 関数

SET_DESCRIPTOR を発行

Syntax
C++
uhs_status_t Usbh_Api_SetDescriptor(struct usb_control_block* ucb, struct usbd_usb_deviceinfo* usbdev, const uhs_ubit8_t type, const uhs_ubit8_t index, const uhs_ubit16_t wIndex, void * buf, const uhs_ubit32_t size);
引数 
説明 
struct usb_control_block* ucb 
[in] USB コントロールブロック 
struct usbd_usb_deviceinfo* usbdev 
[in] USB デバイス構造体 
const uhs_ubit8_t type 
[in] セットするディスクリプタタイプ 
const uhs_ubit8_t index 
[in] セットするディスクリプタのインデックス 
const uhs_ubit16_t wIndex 
[in] 0 もしくは LANGID 
void * buf 
[in] ディスクリプタを取得するためのバッファへのポインタ 
const uhs_ubit32_t size 
[in] ディスクリプタサイズ 

SET_DESCRIPTOR の発行結果

返値の詳細 
説明 
正常終了 
状態異常 
パラメータ異常 
リソース不足 
USBリクエストの受付に失敗(キューフル等) 

SET_DESCRIPTOR の発行を行います。

buf は非キャッシュ領域を指定して下さい。 

CALLBACK関数内から本関数を呼び出すと、転送処理は行われますがタイムアウトによるエラーリターンします。 

SUSPEND/RESUME中に呼び出すとエラーリターンします。

1: uhs_status_t Usbh_Api_SetDescriptor( 2: struct usb_control_block* ucb, 3: struct usbd_usb_deviceinfo* usbdev, 4: const uhs_ubit8_t type, 5: const uhs_ubit8_t index, 6: const uhs_ubit16_t wIndex, 7: void *buf, 8: const uhs_ubit32_t size 9: ) 10: { 11: uhs_status_t retval = UDI_OK; 12: 13: 14: if( Usbh_susres_get_state() != USBH_SUSRES_STS_IDLE ){ 15: uhs_debug_print (DBG_ERR, ("ERROR : Don't Call Current State!!")); 16: CORE_REPORT_ERROR( USBC_ILLEGAL_ERROR ); 17: return UDI_STAT_INVALID_STATE; 18: } 19: 20: if (( ucb == NULL ) || ( usbdev == NULL ) || ( buf == NULL )) { 21: CORE_REPORT_ERROR( USBC_INVALID_PARAMETER ); 22: return UDI_STAT_DATA_ERROR; 23: } 24: 25: 26: Usbh_Api_FixupPipeInfo( 27: &ucb->pipe, 28: ucb->usbdev->usbdev_DevNum, 29: USB_DEFAULT_EP_NUM, 30: USB_PACKETID_OUT, 31: USB_TRANS_CONTROL, 32: ucb->usbdev->usbdev_EpMaxpktOut[USB_DEFAULT_EP_NUM] 33: ); 34: 35: retval = Usbh_Api_SyncControlMsg( 36: ucb, 37: USB_DEVICE_REQUEST_TYPE_HOST_TO_DEVICE | 38: USB_DEVICE_REQUEST_TYPE_STANDARD_TYPE | 39: USB_DEVICE_REQUEST_TYPE_DEVICE_RECIPIENT, 40: USB_DEVICE_REQUEST_SET_DESCRIPTOR, 41: index, 42: type, 43: wIndex & 0xffU, 44: wIndex >> 8, 45: buf, 46: size ); 47: 48: if( retval != UDI_OK) { 49: CORE_REPORT_WARNING(USBC_ILLEGAL_ERROR); 50: } 51: 52: return retval; 53: }
Copyright (c) 2017-2025 Axell Corporation. All rights reserved.