/**
* @brief USBH_HandleControl
* Handles the USB control transfer state machine
* @param pdev: Selected device
* @retval Status
*/
USBH_Status USBH_HandleControl(USB_OTG_CORE_HANDLE *pdev, USBH_HOST *
phost)
{
switch (phost->Control.state)case CTRL_DATA_IN_WAIT:
URB_Status = HCD_GetURB_State( pdev, phost->
Control.hc_num_in );
/* check is DATA packet transfered successfully */
if (URB_Status ==
URB_DONE)
{
phost->Control.state =
CTRL_STATUS_OUT;
}
/* manage error cases*/
else // add -- only when if (URB_Status != URB_DONE) if (URB_Status == URB_STALL)
{
/* In stall case, return to previous machine state*/
phost->gState = phost->
gStateBkp;
phost->Control.state = CTRL_STALLED; // add // SETUP DATA ACK : IN : STALL }
}
转载于:https://www.cnblogs.com/shangdawei/archive/2012/09/02/2667236.html