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

指定されたパイプにつながれた全ての転送を中断

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

指定されたパイプにつながれた全ての転送の中断結果

返値の詳細 
説明 
正常終了 
状態異常 
パラメータ異常 

指定したパイプに対して発行したすべての転送を中断します。 

転送を中断した各リクエストのコールバックが呼び出されます。 

ただし、標準リクエスト等コールバックのないAPIはエラー終了します。 

本関数によって中断を行った場合、コールバック側の中断時の転送済みサイズ等の各種情報は保障しません。 

また、本関数による転送中断後に処理を再開する場合は、CLEAR_FEATURE等でパイプをリセットしてから行うことを推奨します。

中断時からの継続したデータ転送は禁止です。 

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

1: uhs_status_t Usbh_Api_CancelPipe(struct usb_control_block* ucb) 2: { 3: uhs_status_t retval = UDI_OK; 4: usb_wrap_msgsubtype msgsubtype = USBWRAP_SUBMSG_NONE; 5: 6: 7: if( Usbh_susres_get_state() != USBH_SUSRES_STS_IDLE ){ 8: uhs_debug_print (DBG_ERR, ("ERROR : Don't Call Current State!!")); 9: CORE_REPORT_ERROR( USBC_ILLEGAL_ERROR ); 10: return UDI_STAT_INVALID_STATE; 11: } 12: 13: if ( ucb == NULL ) { 14: CORE_REPORT_ERROR( USBC_INVALID_PARAMETER ); 15: return UDI_STAT_DATA_ERROR; 16: } 17: 18: switch ( Usbc_Api_GetPipeEpType( ucb->pipe ) ) { 19: case USB_TRANS_CONTROL: 20: msgsubtype = USBWRAP_SUBMSG_CTLREQ_CANCEL; 21: break; 22: case USB_TRANS_BULK: 23: msgsubtype = USBWRAP_SUBMSG_BLKREQ_CANCEL; 24: break; 25: case USB_TRANS_INTERRUPT: 26: msgsubtype = USBWRAP_SUBMSG_INTREQ_CANCEL; 27: break; 28: case USB_TRANS_ISOCHRONOUS: 29: msgsubtype = USBWRAP_SUBMSG_ISOREQ_CANCEL; 30: break; 31: default: 32: CORE_REPORT_ERROR( USBC_INVALID_PIPE ); 33: return UDI_STAT_DATA_ERROR; 34: } 35: 36: 37: retval = Usbh_SendRequest( 38: (void*)ucb, 39: ucb->usbdev->usbdev_DevNum, 40: USBWRAP_MSG_REQUEST_CANCEL, 41: msgsubtype ); 42: 43: if( retval != UDI_OK) { 44: 45: 46: 47: } 48: 49: return retval; 50: }
Copyright (c) 2017-2025 Axell Corporation. All rights reserved.