void _usbd_control_setup(u8 ea) { struct usb_setup_data *req = &control_state.req; (void)ea; control_state.complete = NULL; if (usbd_ep_read_packet(0, req, 8) != 8) { usbd_ep_stall_set(0, 1); return; } if (req->wLength == 0) { usb_control_setup_read(req); } else if (req->bmRequestType & 0x80) { usb_control_setup_read(req); } else { usb_control_setup_write(req); } }
void _usbd_control_setup(usbd_device *usbd_dev, uint8_t ea) { struct usb_setup_data *req = &usbd_dev->control_state.req; (void)ea; usbd_dev->control_state.complete = NULL; if (usbd_ep_read_packet(usbd_dev, 0, req, 8) != 8) { stall_transaction(usbd_dev); return; } if (req->wLength == 0) { usb_control_setup_read(usbd_dev, req); } else if (req->bmRequestType & 0x80) { usb_control_setup_read(usbd_dev, req); } else { usb_control_setup_write(usbd_dev, req); } }