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