+++ /dev/null
-#ifndef __USB_H__\r
-#define __USB_H__\r
-\r
-#include <stdlib.h>\r
-\r
-/* \r
- * 'interface' is defined somewhere in the Windows header files. This macro \r
- * is deleted here to avoid conflicts and compile errors.\r
- */\r
-\r
-#ifdef interface\r
-#undef interface\r
-#endif\r
-\r
-/*\r
- * PATH_MAX from limits.h can't be used on Windows if the dll and\r
- * import libraries are build/used by different compilers \r
- */\r
-\r
-#define LIBUSB_PATH_MAX 512\r
-\r
-\r
-/*\r
- * USB spec information\r
- *\r
- * This is all stuff grabbed from various USB specs and is pretty much\r
- * not subject to change\r
- */\r
-\r
-/*\r
- * Device and/or Interface Class codes\r
- */\r
-#define USB_CLASS_PER_INTERFACE 0 /* for DeviceClass */\r
-#define USB_CLASS_AUDIO 1\r
-#define USB_CLASS_COMM 2\r
-#define USB_CLASS_HID 3\r
-#define USB_CLASS_PRINTER 7\r
-#define USB_CLASS_MASS_STORAGE 8\r
-#define USB_CLASS_HUB 9\r
-#define USB_CLASS_DATA 10\r
-#define USB_CLASS_VENDOR_SPEC 0xff\r
-\r
-/*\r
- * Descriptor types\r
- */\r
-#define USB_DT_DEVICE 0x01\r
-#define USB_DT_CONFIG 0x02\r
-#define USB_DT_STRING 0x03\r
-#define USB_DT_INTERFACE 0x04\r
-#define USB_DT_ENDPOINT 0x05\r
-\r
-#define USB_DT_HID 0x21\r
-#define USB_DT_REPORT 0x22\r
-#define USB_DT_PHYSICAL 0x23\r
-#define USB_DT_HUB 0x29\r
-\r
-/*\r
- * Descriptor sizes per descriptor type\r
- */\r
-#define USB_DT_DEVICE_SIZE 18\r
-#define USB_DT_CONFIG_SIZE 9\r
-#define USB_DT_INTERFACE_SIZE 9\r
-#define USB_DT_ENDPOINT_SIZE 7\r
-#define USB_DT_ENDPOINT_AUDIO_SIZE 9 /* Audio extension */\r
-#define USB_DT_HUB_NONVAR_SIZE 7\r
-\r
-\r
-/* ensure byte-packed structures */\r
-#include <pshpack1.h> \r
-\r
-\r
-/* All standard descriptors have these 2 fields in common */\r
-struct usb_descriptor_header {\r
- unsigned char bLength;\r
- unsigned char bDescriptorType;\r
-};\r
-\r
-/* String descriptor */\r
-struct usb_string_descriptor {\r
- unsigned char bLength;\r
- unsigned char bDescriptorType;\r
- unsigned short wData[1];\r
-};\r
-\r
-/* HID descriptor */\r
-struct usb_hid_descriptor {\r
- unsigned char bLength;\r
- unsigned char bDescriptorType;\r
- unsigned short bcdHID;\r
- unsigned char bCountryCode;\r
- unsigned char bNumDescriptors;\r
-};\r
-\r
-/* Endpoint descriptor */\r
-#define USB_MAXENDPOINTS 32\r
-struct usb_endpoint_descriptor {\r
- unsigned char bLength;\r
- unsigned char bDescriptorType;\r
- unsigned char bEndpointAddress;\r
- unsigned char bmAttributes;\r
- unsigned short wMaxPacketSize;\r
- unsigned char bInterval;\r
- unsigned char bRefresh;\r
- unsigned char bSynchAddress;\r
-\r
- unsigned char *extra; /* Extra descriptors */\r
- int extralen;\r
-};\r
-\r
-#define USB_ENDPOINT_ADDRESS_MASK 0x0f /* in bEndpointAddress */\r
-#define USB_ENDPOINT_DIR_MASK 0x80\r
-\r
-#define USB_ENDPOINT_TYPE_MASK 0x03 /* in bmAttributes */\r
-#define USB_ENDPOINT_TYPE_CONTROL 0\r
-#define USB_ENDPOINT_TYPE_ISOCHRONOUS 1\r
-#define USB_ENDPOINT_TYPE_BULK 2\r
-#define USB_ENDPOINT_TYPE_INTERRUPT 3\r
-\r
-/* Interface descriptor */\r
-#define USB_MAXINTERFACES 32\r
-struct usb_interface_descriptor {\r
- unsigned char bLength;\r
- unsigned char bDescriptorType;\r
- unsigned char bInterfaceNumber;\r
- unsigned char bAlternateSetting;\r
- unsigned char bNumEndpoints;\r
- unsigned char bInterfaceClass;\r
- unsigned char bInterfaceSubClass;\r
- unsigned char bInterfaceProtocol;\r
- unsigned char iInterface;\r
-\r
- struct usb_endpoint_descriptor *endpoint;\r
-\r
- unsigned char *extra; /* Extra descriptors */\r
- int extralen;\r
-};\r
-\r
-#define USB_MAXALTSETTING 128 /* Hard limit */\r
-\r
-struct usb_interface {\r
- struct usb_interface_descriptor *altsetting;\r
-\r
- int num_altsetting;\r
-};\r
-\r
-/* Configuration descriptor information.. */\r
-#define USB_MAXCONFIG 8\r
-struct usb_config_descriptor {\r
- unsigned char bLength;\r
- unsigned char bDescriptorType;\r
- unsigned short wTotalLength;\r
- unsigned char bNumInterfaces;\r
- unsigned char bConfigurationValue;\r
- unsigned char iConfiguration;\r
- unsigned char bmAttributes;\r
- unsigned char MaxPower;\r
-\r
- struct usb_interface *interface;\r
-\r
- unsigned char *extra; /* Extra descriptors */\r
- int extralen;\r
-};\r
-\r
-/* Device descriptor */\r
-struct usb_device_descriptor {\r
- unsigned char bLength;\r
- unsigned char bDescriptorType;\r
- unsigned short bcdUSB;\r
- unsigned char bDeviceClass;\r
- unsigned char bDeviceSubClass;\r
- unsigned char bDeviceProtocol;\r
- unsigned char bMaxPacketSize0;\r
- unsigned short idVendor;\r
- unsigned short idProduct;\r
- unsigned short bcdDevice;\r
- unsigned char iManufacturer;\r
- unsigned char iProduct;\r
- unsigned char iSerialNumber;\r
- unsigned char bNumConfigurations;\r
-};\r
-\r
-struct usb_ctrl_setup {\r
- unsigned char bRequestType;\r
- unsigned char bRequest;\r
- unsigned short wValue;\r
- unsigned short wIndex;\r
- unsigned short wLength;\r
-};\r
-\r
-/*\r
- * Standard requests\r
- */\r
-#define USB_REQ_GET_STATUS 0x00\r
-#define USB_REQ_CLEAR_FEATURE 0x01\r
-/* 0x02 is reserved */\r
-#define USB_REQ_SET_FEATURE 0x03\r
-/* 0x04 is reserved */\r
-#define USB_REQ_SET_ADDRESS 0x05\r
-#define USB_REQ_GET_DESCRIPTOR 0x06\r
-#define USB_REQ_SET_DESCRIPTOR 0x07\r
-#define USB_REQ_GET_CONFIGURATION 0x08\r
-#define USB_REQ_SET_CONFIGURATION 0x09\r
-#define USB_REQ_GET_INTERFACE 0x0A\r
-#define USB_REQ_SET_INTERFACE 0x0B\r
-#define USB_REQ_SYNCH_FRAME 0x0C\r
-\r
-#define USB_TYPE_STANDARD (0x00 << 5)\r
-#define USB_TYPE_CLASS (0x01 << 5)\r
-#define USB_TYPE_VENDOR (0x02 << 5)\r
-#define USB_TYPE_RESERVED (0x03 << 5)\r
-\r
-#define USB_RECIP_DEVICE 0x00\r
-#define USB_RECIP_INTERFACE 0x01\r
-#define USB_RECIP_ENDPOINT 0x02\r
-#define USB_RECIP_OTHER 0x03\r
-\r
-/*\r
- * Various libusb API related stuff\r
- */\r
-\r
-#define USB_ENDPOINT_IN 0x80\r
-#define USB_ENDPOINT_OUT 0x00\r
-\r
-/* Error codes */\r
-#define USB_ERROR_BEGIN 500000\r
-\r
-/*\r
- * This is supposed to look weird. This file is generated from autoconf\r
- * and I didn't want to make this too complicated.\r
- */\r
-#define USB_LE16_TO_CPU(x)\r
-\r
-/* Data types */\r
-/* struct usb_device; */\r
-/* struct usb_bus; */\r
-\r
-struct usb_device {\r
- struct usb_device *next, *prev;\r
-\r
- char filename[LIBUSB_PATH_MAX];\r
-\r
- struct usb_bus *bus;\r
-\r
- struct usb_device_descriptor descriptor;\r
- struct usb_config_descriptor *config;\r
-\r
- void *dev; /* Darwin support */\r
-\r
- unsigned char devnum;\r
-\r
- unsigned char num_children;\r
- struct usb_device **children;\r
-};\r
-\r
-struct usb_bus {\r
- struct usb_bus *next, *prev;\r
-\r
- char dirname[LIBUSB_PATH_MAX];\r
-\r
- struct usb_device *devices;\r
- unsigned long location;\r
-\r
- struct usb_device *root_dev;\r
-};\r
-\r
-/* Version information, Windows specific */\r
-struct usb_version {\r
- struct {\r
- int major;\r
- int minor;\r
- int micro;\r
- int nano;\r
- } dll;\r
- struct {\r
- int major;\r
- int minor;\r
- int micro;\r
- int nano;\r
- } driver;\r
-};\r
-\r
-\r
-struct usb_dev_handle;\r
-typedef struct usb_dev_handle usb_dev_handle;\r
-\r
-/* Variables */\r
-extern struct usb_bus *usb_busses;\r
-\r
-\r
-#include <poppack.h>\r
-\r
-\r
-#ifdef __cplusplus\r
-extern "C" {\r
-#endif\r
-\r
- /* Function prototypes */\r
-\r
- /* usb.c */\r
- usb_dev_handle *usb_open(struct usb_device *dev);\r
- int usb_close(usb_dev_handle *dev);\r
- int usb_get_string(usb_dev_handle *dev, int index, int langid, char *buf,\r
- size_t buflen);\r
- int usb_get_string_simple(usb_dev_handle *dev, int index, char *buf,\r
- size_t buflen);\r
-\r
- /* descriptors.c */\r
- int usb_get_descriptor_by_endpoint(usb_dev_handle *udev, int ep,\r
- unsigned char type, unsigned char index,\r
- void *buf, int size);\r
- int usb_get_descriptor(usb_dev_handle *udev, unsigned char type,\r
- unsigned char index, void *buf, int size);\r
-\r
- /* <arch>.c */\r
- int usb_bulk_write(usb_dev_handle *dev, int ep, char *bytes, int size,\r
- int timeout);\r
- int usb_bulk_read(usb_dev_handle *dev, int ep, char *bytes, int size,\r
- int timeout);\r
- int usb_interrupt_write(usb_dev_handle *dev, int ep, char *bytes, int size,\r
- int timeout);\r
- int usb_interrupt_read(usb_dev_handle *dev, int ep, char *bytes, int size,\r
- int timeout);\r
- int usb_control_msg(usb_dev_handle *dev, int requesttype, int request,\r
- int value, int index, char *bytes, int size, \r
- int timeout);\r
- int usb_set_configuration(usb_dev_handle *dev, int configuration);\r
- int usb_claim_interface(usb_dev_handle *dev, int interface);\r
- int usb_release_interface(usb_dev_handle *dev, int interface);\r
- int usb_set_altinterface(usb_dev_handle *dev, int alternate);\r
- int usb_resetep(usb_dev_handle *dev, unsigned int ep);\r
- int usb_clear_halt(usb_dev_handle *dev, unsigned int ep);\r
- int usb_reset(usb_dev_handle *dev);\r
-\r
- char *usb_strerror(void);\r
-\r
- void usb_init(void);\r
- void usb_set_debug(int level);\r
- int usb_find_busses(void);\r
- int usb_find_devices(void);\r
- struct usb_device *usb_device(usb_dev_handle *dev);\r
- struct usb_bus *usb_get_busses(void);\r
-\r
-\r
- /* Windows specific functions */\r
-\r
- #define LIBUSB_HAS_INSTALL_SERVICE_NP 1\r
- int usb_install_service_np(void);\r
-\r
- #define LIBUSB_HAS_UNINSTALL_SERVICE_NP 1\r
- int usb_uninstall_service_np(void);\r
-\r
- #define LIBUSB_HAS_INSTALL_DRIVER_NP 1\r
- int usb_install_driver_np(const char *inf_file);\r
- \r
- const struct usb_version *usb_get_version(void);\r
-\r
- int usb_isochronous_setup_async(usb_dev_handle *dev, void **context,\r
- unsigned char ep, int pktsize);\r
- int usb_bulk_setup_async(usb_dev_handle *dev, void **context,\r
- unsigned char ep);\r
- int usb_interrupt_setup_async(usb_dev_handle *dev, void **context,\r
- unsigned char ep);\r
-\r
- int usb_submit_async(void *context, char *bytes, int size);\r
- int usb_reap_async(void *context, int timeout);\r
- int usb_free_async(void **context);\r
-\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-#endif /* __USB_H__ */\r
-\r