Index: third_party/libusb/libusb/os/darwin_usb.h |
diff --git a/third_party/libusb/libusb/os/darwin_usb.h b/third_party/libusb/libusb/os/darwin_usb.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..59d0a694cedea8f1d3141261312734ca2d6d9872 |
--- /dev/null |
+++ b/third_party/libusb/libusb/os/darwin_usb.h |
@@ -0,0 +1,169 @@ |
+/* |
+ * darwin backend for libusb 1.0 |
+ * Copyright (C) 2008-2009 Nathan Hjelm <hjelmn@users.sourceforge.net> |
+ * |
+ * This library is free software; you can redistribute it and/or |
+ * modify it under the terms of the GNU Lesser General Public |
+ * License as published by the Free Software Foundation; either |
+ * version 2.1 of the License, or (at your option) any later version. |
+ * |
+ * This library is distributed in the hope that it will be useful, |
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of |
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
+ * Lesser General Public License for more details. |
+ * |
+ * You should have received a copy of the GNU Lesser General Public |
+ * License along with this library; if not, write to the Free Software |
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
+ */ |
+ |
+#if !defined(LIBUSB_DARWIN_H) |
+#define LIBUSB_DARWIN_H |
+ |
+#include "libusbi.h" |
+ |
+#include <IOKit/IOTypes.h> |
+#include <IOKit/IOCFBundle.h> |
+#include <IOKit/usb/IOUSBLib.h> |
+#include <IOKit/IOCFPlugIn.h> |
+ |
+/* IOUSBInterfaceInferface */ |
+#if defined (kIOUSBInterfaceInterfaceID300) |
+ |
+#define usb_interface_t IOUSBInterfaceInterface300 |
+#define InterfaceInterfaceID kIOUSBInterfaceInterfaceID300 |
+#define InterfaceVersion 300 |
+ |
+#elif defined (kIOUSBInterfaceInterfaceID245) |
+ |
+#define usb_interface_t IOUSBInterfaceInterface245 |
+#define InterfaceInterfaceID kIOUSBInterfaceInterfaceID245 |
+#define InterfaceVersion 245 |
+ |
+#elif defined (kIOUSBInterfaceInterfaceID220) |
+ |
+#define usb_interface_t IOUSBInterfaceInterface220 |
+#define InterfaceInterfaceID kIOUSBInterfaceInterfaceID220 |
+#define InterfaceVersion 220 |
+ |
+#elif defined (kIOUSBInterfaceInterfaceID197) |
+ |
+#define usb_interface_t IOUSBInterfaceInterface197 |
+#define InterfaceInterfaceID kIOUSBInterfaceInterfaceID197 |
+#define InterfaceVersion 197 |
+ |
+#elif defined (kIOUSBInterfaceInterfaceID190) |
+ |
+#define usb_interface_t IOUSBInterfaceInterface190 |
+#define InterfaceInterfaceID kIOUSBInterfaceInterfaceID190 |
+#define InterfaceVersion 190 |
+ |
+#elif defined (kIOUSBInterfaceInterfaceID182) |
+ |
+#define usb_interface_t IOUSBInterfaceInterface182 |
+#define InterfaceInterfaceID kIOUSBInterfaceInterfaceID182 |
+#define InterfaceVersion 182 |
+ |
+#else |
+ |
+#error "IOUSBFamily is too old. Please upgrade your OS" |
+ |
+#endif |
+ |
+/* IOUSBDeviceInterface */ |
+#if defined (kIOUSBDeviceInterfaceID320) |
+ |
+#define usb_device_t IOUSBDeviceInterface320 |
+#define DeviceInterfaceID kIOUSBDeviceInterfaceID320 |
+#define DeviceVersion 320 |
+ |
+#elif defined (kIOUSBDeviceInterfaceID300) |
+ |
+#define usb_device_t IOUSBDeviceInterface300 |
+#define DeviceInterfaceID kIOUSBDeviceInterfaceID300 |
+#define DeviceVersion 300 |
+ |
+#elif defined (kIOUSBDeviceInterfaceID245) |
+ |
+#define usb_device_t IOUSBDeviceInterface245 |
+#define DeviceInterfaceID kIOUSBDeviceInterfaceID245 |
+#define DeviceVersion 245 |
+ |
+#elif defined (kIOUSBDeviceInterfaceID197) |
+ |
+#define usb_device_t IOUSBDeviceInterface197 |
+#define DeviceInterfaceID kIOUSBDeviceInterfaceID197 |
+#define DeviceVersion 197 |
+ |
+#elif defined (kIOUSBDeviceInterfaceID187) |
+ |
+#define usb_device_t IOUSBDeviceInterface187 |
+#define DeviceInterfaceID kIOUSBDeviceInterfaceID187 |
+#define DeviceVersion 187 |
+ |
+#elif defined (kIOUSBDeviceInterfaceID182) |
+ |
+#define usb_device_t IOUSBDeviceInterface182 |
+#define DeviceInterfaceID kIOUSBDeviceInterfaceID182 |
+#define DeviceVersion 182 |
+ |
+#else |
+ |
+#error "IOUSBFamily is too old. Please upgrade your OS" |
+ |
+#endif |
+ |
+#if !defined(IO_OBJECT_NULL) |
+#define IO_OBJECT_NULL ((io_object_t) 0) |
+#endif |
+ |
+typedef IOCFPlugInInterface *io_cf_plugin_ref_t; |
+typedef IONotificationPortRef io_notification_port_t; |
+ |
+/* private structures */ |
+struct darwin_device_priv { |
+ IOUSBDeviceDescriptor dev_descriptor; |
+ UInt32 location; |
+ char sys_path[21]; |
+ usb_device_t **device; |
+ int open_count; |
+ UInt8 first_config, active_config; |
+}; |
+ |
+struct darwin_device_handle_priv { |
+ int is_open; |
+ CFRunLoopSourceRef cfSource; |
+ int fds[2]; |
+ |
+ struct darwin_interface { |
+ usb_interface_t **interface; |
+ uint8_t num_endpoints; |
+ CFRunLoopSourceRef cfSource; |
+ uint64_t frames[256]; |
+ uint8_t endpoint_addrs[USB_MAXENDPOINTS]; |
+ } interfaces[USB_MAXINTERFACES]; |
+}; |
+ |
+struct darwin_transfer_priv { |
+ /* Isoc */ |
+ IOUSBIsocFrame *isoc_framelist; |
+ size_t num_iso_packets; |
+ |
+ /* Control */ |
+#if !defined (LIBUSB_NO_TIMEOUT_DEVICE) |
+ IOUSBDevRequestTO req; |
+#else |
+ IOUSBDevRequest req; |
+#endif |
+ |
+ /* Bulk */ |
+}; |
+ |
+enum { |
+ MESSAGE_DEVICE_GONE, |
+ MESSAGE_ASYNC_IO_COMPLETE |
+}; |
+ |
+ |
+ |
+#endif |