void ueagle_request(struct ueagle_softc *sc, uint16_t val, uint16_t index, void *data, int len) { usb_device_request_t req; usbd_status error; req.bmRequestType = UT_WRITE_VENDOR_DEVICE; req.bRequest = UEAGLE_REQUEST; USETW(req.wValue, val); USETW(req.wIndex, index); USETW(req.wLength, len); error = usbd_do_request_async(sc->sc_udev, &req, data); if (error != USBD_NORMAL_COMPLETION && error != USBD_IN_PROGRESS) printf("%s: could not send request\n", sc->sc_dev.dv_xname); }
usbd_status usbd_set_report_async(usbd_interface_handle iface, int type, int id, void *data, int len) { usb_interface_descriptor_t *ifd = usbd_get_interface_descriptor(iface); usbd_device_handle dev; usb_device_request_t req; DPRINTFN(4, ("usbd_set_report_async: len=%d\n", len)); if (ifd == NULL) return (USBD_IOERROR); usbd_interface2device_handle(iface, &dev); req.bmRequestType = UT_WRITE_CLASS_INTERFACE; req.bRequest = UR_SET_REPORT; USETW2(req.wValue, type, id); USETW(req.wIndex, ifd->bInterfaceNumber); USETW(req.wLength, len); return (usbd_do_request_async(dev, &req, data)); }