Changes in uspace/lib/usb/src/usb.c [9d58539:534dee89] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/usb/src/usb.c
r9d58539 r534dee89 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 * @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 118 156 /** 119 157 * @}
Note:
See TracChangeset
for help on using the changeset viewer.