Changes in uspace/lib/usb/src/usb.c [9d58539:58563585] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/usb/src/usb.c
r9d58539 r58563585 34 34 */ 35 35 #include <usb/usb.h> 36 #include < errno.h>36 #include <usb/request.h> 37 37 38 #define ARR_SIZE(arr) (sizeof(arr)/sizeof(arr[0])) 38 #include <assert.h> 39 #include <byteorder.h> 40 #include <macros.h> 39 41 40 42 static const char *str_speed[] = { … … 71 73 const char *usb_str_transfer_type(usb_transfer_type_t t) 72 74 { 73 if (t >= ARR _SIZE(str_transfer_type)) {75 if (t >= ARRAY_SIZE(str_transfer_type)) { 74 76 return "invalid"; 75 77 } … … 84 86 const char *usb_str_transfer_type_short(usb_transfer_type_t t) 85 87 { 86 if (t >= ARR _SIZE(str_transfer_type_short)) {88 if (t >= ARRAY_SIZE(str_transfer_type_short)) { 87 89 return "invl"; 88 90 } … … 97 99 const char *usb_str_direction(usb_direction_t d) 98 100 { 99 if (d >= ARR _SIZE(str_direction)) {101 if (d >= ARRAY_SIZE(str_direction)) { 100 102 return "invalid"; 101 103 } … … 110 112 const char *usb_str_speed(usb_speed_t s) 111 113 { 112 if (s >= ARR _SIZE(str_speed)) {114 if (s >= ARRAY_SIZE(str_speed)) { 113 115 return "invalid"; 114 116 } … … 116 118 } 117 119 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 */ 129 int 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 118 158 /** 119 159 * @}
Note:
See TracChangeset
for help on using the changeset viewer.