Ignore:
File:
1 edited

Legend:

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

    r534dee89 r9d58539  
    3434 */
    3535#include <usb/usb.h>
    36 #include <usb/request.h>
     36#include <errno.h>
    3737
    38 #include <assert.h>
    39 #include <byteorder.h>
    40 #include <macros.h>
     38#define ARR_SIZE(arr) (sizeof(arr)/sizeof(arr[0]))
    4139
    4240static const char *str_speed[] = {
     
    7371const char *usb_str_transfer_type(usb_transfer_type_t t)
    7472{
    75         if (t >= ARRAY_SIZE(str_transfer_type)) {
     73        if (t >= ARR_SIZE(str_transfer_type)) {
    7674                return "invalid";
    7775        }
     
    8684const char *usb_str_transfer_type_short(usb_transfer_type_t t)
    8785{
    88         if (t >= ARRAY_SIZE(str_transfer_type_short)) {
     86        if (t >= ARR_SIZE(str_transfer_type_short)) {
    8987                return "invl";
    9088        }
     
    9997const char *usb_str_direction(usb_direction_t d)
    10098{
    101         if (d >= ARRAY_SIZE(str_direction)) {
     99        if (d >= ARR_SIZE(str_direction)) {
    102100                return "invalid";
    103101        }
     
    112110const char *usb_str_speed(usb_speed_t s)
    113111{
    114         if (s >= ARRAY_SIZE(str_speed)) {
     112        if (s >= ARR_SIZE(str_speed)) {
    115113                return "invalid";
    116114        }
     
    118116}
    119117
    120 /** Check setup packet data for signs of toggle reset.
    121  *
    122  * @param[in] requst Setup requst data.
    123  * @retval -1 No endpoints need reset.
    124  * @retval 0 All endpoints need reset.
    125  * @retval >0 Specified endpoint needs reset.
    126  */
    127 int usb_request_needs_toggle_reset(
    128     const usb_device_request_setup_packet_t *request)
    129 {
    130         assert(request);
    131         switch (request->request)
    132         {
    133         /* Clear Feature ENPOINT_STALL */
    134         case USB_DEVREQ_CLEAR_FEATURE: /*resets only cleared ep */
    135                 /* 0x2 ( HOST to device | STANDART | TO ENPOINT) */
    136                 if ((request->request_type == 0x2) &&
    137                     (request->value == USB_FEATURE_SELECTOR_ENDPOINT_HALT))
    138                         return uint16_usb2host(request->index);
    139                 break;
    140         case USB_DEVREQ_SET_CONFIGURATION:
    141         case USB_DEVREQ_SET_INTERFACE:
    142                 /* Recipient must be device, this resets all endpoints,
    143                  * In fact there should be no endpoints but EP 0 registered
    144                  * as different interfaces use different endpoints,
    145                  * unless you're changing configuration or alternative
    146                  * interface of an already setup device. */
    147                 if (!(request->request_type & SETUP_REQUEST_TYPE_DEVICE_TO_HOST))
    148                         return 0;
    149                 break;
    150         default:
    151                 break;
    152         }
    153         return -1;
    154 }
    155 
    156118/**
    157119 * @}
Note: See TracChangeset for help on using the changeset viewer.