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

USB HOSTスタックに対してSUSPENDを要求する。

Syntax
C++
uhs_status_t Usbh_Api_ReqSuspend();

USB HOSTスタックに対してSUSPENDの要求結果

返値の詳細 
説明 
正常終了 
状態異常 
パラメータ異常 
リソース不足 
アボートエラー(ルートHUB挿抜含む。) 

USB HOSTスタックに対してSUSPEND状態に遷移することを指示します。 

以降、RESUME要求を発行するまでSUSPEND状態のままとなります。 

(この間、幾つかのAPIの発行が制限されます。)

アプリケーションにて、本API呼び出し前に各クラスドライバの通信を停止すること。 

Usbh_Api_ReqDisableAttDet を呼び出してから、本APIを呼び出すこと。 

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

1: uhs_status_t Usbh_Api_ReqSuspend( void ) 2: { 3: uhs_status_t retval = UDI_STAT_INVALID_STATE; 4: uhs_status_t result; 5: UHS_MSG_APIWRAP_ANS_SUSPEND_FMT *rcv_msg; 6: 7: struct usbd_usb_deviceinfo * pRootHub; 8: 9: pRootHub = Usbh_Api_EnumRootHub( NULL ); 10: 11: 12: if( pRootHub->usbdev_LowerHub[1] ){ 13: 14: 15: if( (Usbh_susres_get_state() == USBH_SUSRES_STS_IDLE) && (Usb_Hub_get_suspend_flg() == 1) ){ 16: 17: 18: kernel_wait(NULL,100); 19: 20: 21: if( Usbh_chk_apiwrap_alldev_request() == 0 ){ 22: 23: 24: retval = kernel_create_message( &g_suspend_reqans_mbox ); 25: if(retval != UDI_OK){ 26: CORE_REPORT_ERROR( USBC_RESOURCE_UNAVAIL ); 27: return UDI_STAT_RESOURCE_UNAVAIL; 28: } 29: 30: 31: 32: retval = Usbh_susres_SendMsg_req_susres( &g_suspend_reqans_mbox , USBH_APIWRAP_MSGID_REQ_SUSPEND ); 33: if(retval != UDI_OK){ 34: kernel_delete_message( &g_suspend_reqans_mbox , in_interrupt() ); 35: CORE_REPORT_ERROR( USBC_RESOURCE_UNAVAIL ); 36: return UDI_STAT_RESOURCE_UNAVAIL; 37: } 38: 39: 40: retval = kernel_receive_message( 41: &g_suspend_reqans_mbox , 42: (T_MSG **)&rcv_msg, 43: WAITFOREVER , 44: in_interrupt() 45: ); 46: if(retval != UDI_OK){ 47: kernel_delete_message( &g_suspend_reqans_mbox , in_interrupt() ); 48: CORE_REPORT_ERROR(USBC_ILLEGAL_ERROR); 49: return retval; 50: } 51: 52: #ifdef USBH_COMMON_DISP_MESSID 53: 54: Usbh_common_DisplayMessage( (void *)rcv_msg , "API_WR_SUSD" ); 55: #endif 56: 57: 58: retval = rcv_msg->result; 59: 60: 61: result = kernel_mem_free( &g_apiwrap_info.mpl_osc , (void*)rcv_msg , in_interrupt() ); 62: if( result != UDI_OK ) { 63: CORE_REPORT_ERROR( USBC_ILLEGAL_ERROR ); 64: } 65: 66: 67: result = kernel_delete_message( &g_suspend_reqans_mbox , in_interrupt() ); 68: if(result != UDI_OK){ 69: CORE_REPORT_ERROR( USBC_ILLEGAL_ERROR ); 70: } 71: } 72: else{ 73: CORE_REPORT_ERROR( USBC_ILLEGAL_ERROR ); 74: uhs_debug_print (DBG_ERR, ("Usbh_Api_ReqSuspend : error request found !!")); 75: } 76: } 77: else{ 78: CORE_REPORT_ERROR( USBC_ILLEGAL_ERROR ); 79: uhs_debug_print (DBG_ERR, ("Usbh_Api_ReqSuspend : error stage error !!")); 80: } 81: } 82: else{ 83: CORE_REPORT_ERROR( USBC_ILLEGAL_ERROR ); 84: uhs_debug_print (DBG_ERR, ("Usbh_Api_ReqSuspend : error root_hub empty error !!")); 85: } 86: 87: #ifdef USBH_DBG_ADD_MESSAGE 88: uhs_debug_print( DBG_ERR, ( "Return Usbh_Api_ReqSuspend (result=%d)",retval) ); 89: #endif 90: return retval; 91: }
Copyright (c) 2017-2025 Axell Corporation. All rights reserved.