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