#include "project.h" #include "../common/vendor_req.h" static void poke(libusb_device_handle *devh) { uint32_t timeout=4000; int len; len= libusb_control_transfer( devh, /* bmRequestType */ LIBUSB_ENDPOINT_OUT | LIBUSB_REQUEST_TYPE_VENDOR | LIBUSB_RECIPIENT_DEVICE, /* bRequest */ VENDOR_REQ_SEND_KEY, /* wValue */ 0x23, /* wIndex */ 0, /* Data */ NULL, /* wLength */ 0, timeout ); //if (len>=0) //hexdump(">",buf,len); } static void poke_device(libusb_device *dev, struct libusb_device_descriptor *desc) { int ret; libusb_device_handle *devh; ret=libusb_open(dev, &devh); if (ret) { warn("unable to open device: %i",ret); return; } printf("poke\n"); poke(devh); libusb_close(devh); } void probe_devices(libusb_context *ctx) { libusb_device **list; ssize_t num_devs; ssize_t i; num_devs = libusb_get_device_list(ctx, &list); for (i = 0; i < num_devs; ++i) { struct libusb_device_descriptor desc; struct libusb_device *dev = list[i]; if (libusb_get_device_descriptor(dev, &desc)) continue; if (desc.idVendor!=0x1d6b) continue; if (desc.idProduct!=0x1932) continue; poke_device(dev,&desc); } libusb_free_device_list(list, 0); } int main(int argc,char *argv) { int ret; libusb_context *ctx; ret = libusb_init(&ctx); if (ret) errx(EX_IOERR, "unable to initialize libusb: %i", ret); //libusb_set_debug(ctx, 255); probe_devices(ctx); return 0; }