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