35 #include "sigrok-internal.h"
38 #define CTRL_IN (LIBUSB_REQUEST_TYPE_VENDOR | LIBUSB_ENDPOINT_IN | \
39 LIBUSB_RECIPIENT_INTERFACE)
40 #define CTRL_OUT (LIBUSB_REQUEST_TYPE_VENDOR | LIBUSB_ENDPOINT_OUT | \
41 LIBUSB_RECIPIENT_INTERFACE)
42 #define EP1_BULK_IN (LIBUSB_ENDPOINT_IN | 1)
53 static int gl_write_address(libusb_device_handle *devh,
unsigned int address)
55 unsigned char packet[8] = { address & 0xFF };
61 sr_err(
"zp: %s: libusb_control_transfer returned %d.",
66 static int gl_write_data(libusb_device_handle *devh,
unsigned int val)
68 unsigned char packet[8] = { val & 0xFF };
74 sr_err(
"zp: %s: libusb_control_transfer returned %d.",
79 static int gl_read_data(libusb_device_handle *devh)
81 unsigned char packet[8] = { 0 };
87 sr_err(
"zp: %s: libusb_control_transfer returned %d, "
88 "val=%hhx.", __func__, ret, packet[0]);
89 return (ret == 1) ? packet[0] : ret;
95 unsigned char packet[8] =
96 { 0, 0, 0, 0, size & 0xff, (size & 0xff00) >> 8,
97 (size & 0xff0000) >> 16, (size & 0xff000000) >> 24 };
98 int ret, transferred = 0;
103 sr_err(
"zp: %s: libusb_control_transfer returned %d.",
106 ret = libusb_bulk_transfer(devh,
EP1_BULK_IN, buffer, size,
109 sr_err(
"zp: Bulk read error %d.", ret);
118 ret = gl_write_address(devh, reg);
121 ret = gl_write_data(devh, val);
129 ret = gl_write_address(devh, reg);
132 ret = gl_read_data(devh);