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

インタラプト転送発行要求API

Syntax
C++
uhs_status_t Usbh_Api_IntMsg(struct usb_control_block* ucb);
引数 
説明 
struct usb_control_block* ucb 
[in] USBコントロールブロック 

インタラプト転送発行要求結果

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

インタラプト転送を発行します。(非同期実行) 

インタラプト転送により、デバイスよりデータを受信した時点でコールバック関数をコールします。 

ucb は適切に設定され、Usbh_Api_OpenPipe が正常終了している必要があります。 

戻り値はUSB Hostが転送要求を受け付けた結果であり、USBバス上の転送結果ではありません。 

USBバス上の転送結果はコールバック関数の引数ucbに格納します。

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

1: uhs_status_t Usbh_Api_IntMsg(struct usb_control_block* ucb) 2: { 3: uhs_status_t retval = UDI_OK; 4: 5: 6: if( Usbh_susres_get_state() != USBH_SUSRES_STS_IDLE ){ 7: uhs_debug_print (DBG_ERR, ("ERROR : Don't Call Current State!!")); 8: CORE_REPORT_ERROR( USBC_ILLEGAL_ERROR ); 9: return UDI_STAT_INVALID_STATE; 10: } 11: 12: if (( ucb == NULL ) || ( ucb->complete_func == NULL ) || ( ucb->data_len > USB_REQ_MAX_LENGTH )) { 13: CORE_REPORT_ERROR( USBC_INVALID_PARAMETER ); 14: return UDI_STAT_DATA_ERROR; 15: } 16: 17: if ( Usbc_Api_GetPipeEpType( ucb->pipe ) != USB_TRANS_INTERRUPT ) { 18: CORE_REPORT_ERROR( USBC_INVALID_PIPE ); 19: return UDI_STAT_DATA_ERROR; 20: } 21: 22: 23: retval = Usbh_SendRequest( 24: (void*)ucb, 25: ucb->usbdev->usbdev_DevNum, 26: USBWRAP_MSG_REQUEST_ISSUE, 27: USBWRAP_SUBMSG_INTREQ ); 28: if( retval != UDI_OK) { 29: CORE_REPORT_ERROR(USBC_ILLEGAL_ERROR); 30: } 31: 32: return retval; 33: }
Copyright (c) 2017-2025 Axell Corporation. All rights reserved.