Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/usb/src/usb.c

    r820d9bc r05b59393  
    4444        [USB_SPEED_FULL] = "full",
    4545        [USB_SPEED_HIGH] = "high",
    46         [USB_SPEED_SUPER] = "super",
    4746};
    4847
     
    119118}
    120119
     120/** Check setup packet data for signs of toggle reset.
     121 *
     122 * @param[in] requst Setup requst data.
     123 *
     124 * @retval -1 No endpoints need reset.
     125 * @retval 0 All endpoints need reset.
     126 * @retval >0 Specified endpoint needs reset.
     127 *
     128 */
     129int usb_request_needs_toggle_reset(
     130    const usb_device_request_setup_packet_t *request)
     131{
     132        assert(request);
     133        switch (request->request)
     134        {
     135        /* Clear Feature ENPOINT_STALL */
     136        case USB_DEVREQ_CLEAR_FEATURE: /*resets only cleared ep */
     137                /* 0x2 ( HOST to device | STANDART | TO ENPOINT) */
     138                if ((request->request_type == 0x2) &&
     139                    (request->value == USB_FEATURE_ENDPOINT_HALT))
     140                        return uint16_usb2host(request->index);
     141                break;
     142        case USB_DEVREQ_SET_CONFIGURATION:
     143        case USB_DEVREQ_SET_INTERFACE:
     144                /* Recipient must be device, this resets all endpoints,
     145                 * In fact there should be no endpoints but EP 0 registered
     146                 * as different interfaces use different endpoints,
     147                 * unless you're changing configuration or alternative
     148                 * interface of an already setup device. */
     149                if (!(request->request_type & SETUP_REQUEST_TYPE_DEVICE_TO_HOST))
     150                        return 0;
     151                break;
     152        default:
     153                break;
     154        }
     155        return -1;
     156}
     157
    121158/**
    122159 * @}
Note: See TracChangeset for help on using the changeset viewer.