3 #define MILVUS_EXCEPT(except, msg, ...) \ 6 snprintf(buf, 1000, msg " (in milvus::UsbComm::%s)" , ##__VA_ARGS__, __FUNCTION__); \ 26 rc = libusb_init(NULL);
28 fprintf(stderr,
"Error initializing libusb: %s\n", libusb_error_name(rc));
32 libusb_set_debug(NULL, 3);
34 devh = libusb_open_device_with_vid_pid(NULL, vendor_id, product_id);
36 fprintf(stderr,
"Error finding USB device\n");
40 for (
int if_num = 0; if_num < 2; if_num++) {
41 if (libusb_kernel_driver_active(
devh, if_num)) {
42 libusb_detach_kernel_driver(
devh, if_num);
44 rc = libusb_claim_interface(
devh, if_num);
46 fprintf(stderr,
"Error claiming interface: %s\n",
47 libusb_error_name(rc));
55 fprintf(stderr,
"Error during control transfer: %s\n",
56 libusb_error_name(rc));
62 unsigned char encoding[] = { 0x80, 0x25, 0x00, 0x00, 0x00, 0x00, 0x08 };
63 rc = libusb_control_transfer(
devh, 0x21, 0x20, 0, 0, encoding,
66 fprintf(stderr,
"Error during control transfer: %s\n",
67 libusb_error_name(rc));
75 libusb_release_interface(
devh, 0);
88 int rc = libusb_bulk_transfer(
devh,
ep_in_addr_, buf, size, &actual_length,
90 if (rc == LIBUSB_ERROR_TIMEOUT) {
92 clock_gettime(CLOCK_MONOTONIC, &tv1);
93 printf(
"%ld.%06ld - timeout (%d)\n", tv1.tv_sec, tv1.tv_nsec, actual_length);
96 fprintf(stderr,
"Error while waiting for char\n");
100 return actual_length;
110 &actual_length, 0) < 0) {
111 fprintf(stderr,
"Error while sending char\n");
113 clock_gettime(CLOCK_MONOTONIC, &tv1);
114 printf(
"%ld.%06ld - write sent \n", tv1.tv_sec, tv1.tv_nsec);
121 for (i = 0; i < length; i++)
123 printf(
"%02x ",buf[i] );
int write_bytes(unsigned char *, int)
int open_device(uint16_t vendor_id, uint16_t product_id, int ep_in_addr, int ep_out_addr)
void print_array(uint8_t *buf, int length)
Device handle.
struct libusb_device_handle * devh
int read_bytes(unsigned char *, int)