1: uhs_status_t Usbh_Api_ReqResume(
void )
2: {
3: uhs_status_t retval =
UDI_STAT_INVALID_STATE;
4: uhs_status_t result;
5: UHS_MSG_APIWRAP_ANS_RESUME_FMT *rcv_msg;
6:
7:
8:
if( Usbh_susres_get_state() == USBH_SUSRES_STS_SUSPENDING ){
9:
10:
11: retval = kernel_create_message( &g_response_reqans_mbox );
12:
if(retval !=
UDI_OK){
13: CORE_REPORT_ERROR(
USBC_RESOURCE_UNAVAIL );
14:
return UDI_STAT_RESOURCE_UNAVAIL;
15: }
16:
17:
18:
19: retval = Usbh_susres_SendMsg_req_susres( &g_response_reqans_mbox , USBH_APIWRAP_MSGID_REQ_RESUME );
20:
if(retval !=
UDI_OK){
21: kernel_delete_message( &g_suspend_reqans_mbox , in_interrupt() );
22: CORE_REPORT_ERROR(
USBC_RESOURCE_UNAVAIL );
23:
return UDI_STAT_RESOURCE_UNAVAIL;
24: }
25:
26:
27: retval = kernel_receive_message(
28: &g_response_reqans_mbox ,
29: (T_MSG **)&rcv_msg,
30: WAITFOREVER ,
31: in_interrupt()
32: );
33:
if(retval !=
UDI_OK){
34: kernel_delete_message( &g_suspend_reqans_mbox , in_interrupt() );
35: CORE_REPORT_ERROR(
USBC_ILLEGAL_ERROR);
36:
return retval;
37: }
38:
39:
#ifdef USBH_COMMON_DISP_MESSID
40:
41: Usbh_common_DisplayMessage( (
void *)rcv_msg , "API_WR_RES" );
42:
#endif
43:
44: 45: retval = rcv_msg->result;
46:
47:
48: result = kernel_mem_free( &g_apiwrap_info.mpl_osc , (
void*)rcv_msg , in_interrupt() );
49:
if( result !=
UDI_OK ) {
50: CORE_REPORT_ERROR(
USBC_ILLEGAL_ERROR );
51: }
52:
53:
54: result = kernel_delete_message( &g_response_reqans_mbox , in_interrupt() );
55:
if(result !=
UDI_OK){
56: CORE_REPORT_ERROR(
USBC_ILLEGAL_ERROR );
57: }
58: }
59:
else{
60: CORE_REPORT_ERROR(
USBC_ILLEGAL_ERROR );
61: uhs_debug_print (DBG_ERR, ("Usbh_Api_ReqResume : error stage error !!"));
62: }
63:
64:
#ifdef USBH_DBG_ADD_MESSAGE
65: uhs_debug_print( DBG_ERR, ( "Return Usbh_Api_ReqResume (result=%d)",retval) );
66:
#endif
67:
return retval;
68: }