commit 159e0f9fe7598d07371430e6a64168557b733360
parent 5c8ffeae818616e657296c05af15313f6e9cff45
Author: Brian Swetland <swetland@frotz.net>
Date: Mon, 27 Jul 2015 01:20:15 -0700
tools/usb add control api
Diffstat:
2 files changed, 14 insertions(+), 1 deletion(-)
diff --git a/tools/usb.c b/tools/usb.c
@@ -87,6 +87,16 @@ void usb_close(usb_handle *usb) {
free(usb);
}
+int usb_ctrl(usb_handle *usb, void *data,
+ uint8_t typ, uint8_t req, uint16_t val, uint16_t idx, uint16_t len) {
+ int r = libusb_control_transfer(usb->dev, typ, req, val, idx, data, len, 5000);
+ if (r < 0) {
+ return -1;
+ } else {
+ return r;
+ }
+}
+
int usb_read(usb_handle *usb, void *data, int len) {
int xfer = len;
int r = libusb_bulk_transfer(usb->dev, usb->ei, data, len, &xfer, 5000);
diff --git a/tools/usb.h b/tools/usb.h
@@ -18,6 +18,8 @@
#ifndef _USB_H_
#define _USB_H_
+#include <stdint.h>
+
typedef struct usb_handle usb_handle;
/* simple usb api for devices with bulk in+out interfaces */
@@ -26,5 +28,6 @@ usb_handle *usb_open(unsigned vid, unsigned pid, unsigned ifc);
void usb_close(usb_handle *usb);
int usb_read(usb_handle *usb, void *data, int len);
int usb_write(usb_handle *usb, const void *data, int len);
-
+int usb_ctrl(usb_handle *usb, void *data,
+ uint8_t typ, uint8_t req, uint16_t val, uint16_t idx, uint16_t len);
#endif