| Index: umsboot/src/protocol/usb/usb.c |
| — | — | @@ -277,50 +277,50 @@ |
| 278 | 278 | default: break; |
| 279 | 279 | } |
| 280 | 280 | break; |
| 281 | | - default: break; |
| | 281 | + default: break; |
| 282 | 282 | } |
| 283 | 283 | break; |
| 284 | | - case USB_SETUP_BMREQUESTTYPE_RECIPIENT_ENDPOINT: |
| | 284 | + } |
| | 285 | + case USB_SETUP_BMREQUESTTYPE_RECIPIENT_ENDPOINT: |
| | 286 | + { |
| | 287 | + if (!data->state->current_configuration) break; |
| | 288 | + union usb_endpoint_number ep = { .byte = buffer->setup.wIndex }; |
| | 289 | + int intfid; |
| | 290 | + int epid; |
| | 291 | + const struct usb_endpoint* endpoint = usb_find_endpoint(data, ep, &intfid, &epid); |
| | 292 | + if (!endpoint) break; |
| | 293 | + if (endpoint->ctrl_request) size = endpoint->ctrl_request(data, intfid, epid, buffer, &addr); |
| | 294 | + if (size != -1) break; |
| | 295 | + switch (buffer->setup.bmRequestType.type) |
| 285 | 296 | { |
| 286 | | - if (!data->state->current_configuration) break; |
| 287 | | - union usb_endpoint_number ep = { .byte = buffer->setup.wIndex }; |
| 288 | | - int intfid; |
| 289 | | - int epid; |
| 290 | | - const struct usb_endpoint* endpoint = usb_find_endpoint(data, ep, &intfid, &epid); |
| 291 | | - if (!endpoint) break; |
| 292 | | - if (endpoint->ctrl_request) size = endpoint->ctrl_request(data, intfid, epid, buffer, &addr); |
| 293 | | - if (size != -1) break; |
| 294 | | - switch (buffer->setup.bmRequestType.type) |
| | 297 | + case USB_SETUP_BMREQUESTTYPE_TYPE_STANDARD: |
| | 298 | + switch (buffer->setup.bRequest.req) |
| 295 | 299 | { |
| 296 | | - case USB_SETUP_BMREQUESTTYPE_TYPE_STANDARD: |
| 297 | | - switch (buffer->setup.bRequest.req) |
| 298 | | - { |
| 299 | | - case USB_SETUP_BREQUEST_GET_STATUS: |
| 300 | | - if (buffer->setup.wLength != 2 || buffer->setup.wValue) break; |
| 301 | | - data->buffer->raw[0] = 0; |
| 302 | | - data->buffer->raw[1] = data->driver->get_stall(data, ep); |
| 303 | | - addr = data->buffer; |
| 304 | | - size = 2; |
| 305 | | - break; |
| 306 | | - case USB_SETUP_BREQUEST_CLEAR_FEATURE: |
| 307 | | - if (buffer->setup.wLength || buffer->setup.wValue) break; |
| 308 | | - usb_set_stall(data, ep, false); |
| 309 | | - size = 0; |
| 310 | | - break; |
| 311 | | - case USB_SETUP_BREQUEST_SET_FEATURE: |
| 312 | | - if (buffer->setup.wLength || buffer->setup.wValue) break; |
| 313 | | - usb_set_stall(data, ep, true); |
| 314 | | - size = 0; |
| 315 | | - break; |
| 316 | | - default: break; |
| 317 | | - } |
| | 300 | + case USB_SETUP_BREQUEST_GET_STATUS: |
| | 301 | + if (buffer->setup.wLength != 2 || buffer->setup.wValue) break; |
| | 302 | + data->buffer->raw[0] = 0; |
| | 303 | + data->buffer->raw[1] = data->driver->get_stall(data, ep); |
| | 304 | + addr = data->buffer; |
| | 305 | + size = 2; |
| 318 | 306 | break; |
| 319 | | - default: break; |
| | 307 | + case USB_SETUP_BREQUEST_CLEAR_FEATURE: |
| | 308 | + if (buffer->setup.wLength || buffer->setup.wValue) break; |
| | 309 | + usb_set_stall(data, ep, false); |
| | 310 | + size = 0; |
| | 311 | + break; |
| | 312 | + case USB_SETUP_BREQUEST_SET_FEATURE: |
| | 313 | + if (buffer->setup.wLength || buffer->setup.wValue) break; |
| | 314 | + usb_set_stall(data, ep, true); |
| | 315 | + size = 0; |
| | 316 | + break; |
| | 317 | + default: break; |
| 320 | 318 | } |
| 321 | 319 | break; |
| | 320 | + default: break; |
| 322 | 321 | } |
| 323 | | - default: break; |
| | 322 | + break; |
| 324 | 323 | } |
| | 324 | + default: break; |
| 325 | 325 | } |
| 326 | 326 | union usb_endpoint_number ep0in = { .number = 0, .direction = USB_ENDPOINT_DIRECTION_IN }; |
| 327 | 327 | union usb_endpoint_number ep0out = { .number = 0, .direction = USB_ENDPOINT_DIRECTION_OUT }; |