summaryrefslogtreecommitdiffstats
path: root/flasher/usbcalls.h
diff options
context:
space:
mode:
Diffstat (limited to 'flasher/usbcalls.h')
-rw-r--r--flasher/usbcalls.h81
1 files changed, 81 insertions, 0 deletions
diff --git a/flasher/usbcalls.h b/flasher/usbcalls.h
new file mode 100644
index 0000000..43bd1cc
--- /dev/null
+++ b/flasher/usbcalls.h
@@ -0,0 +1,81 @@
+/* Name: usbcalls.h
+ * Project: usbcalls library
+ * Author: Christian Starkjohann
+ * Creation Date: 2006-02-02
+ * Tabsize: 4
+ * Copyright: (c) 2006 by OBJECTIVE DEVELOPMENT Software GmbH
+ * License: Proprietary, free under certain conditions. See Documentation.
+ * This Revision: $Id$
+ */
+
+#ifndef __usbcalls_h_INCLUDED__
+#define __usbcalls_h_INCLUDED__
+
+/*
+General Description:
+This module implements an abstraction layer for access to USB/HID communication
+functions. An implementation based on libusb (portable to Linux, FreeBSD and
+Mac OS X) and a native implementation for Windows are provided.
+*/
+
+/* ------------------------------------------------------------------------ */
+
+#define USB_HID_REPORT_TYPE_INPUT 1
+#define USB_HID_REPORT_TYPE_OUTPUT 2
+#define USB_HID_REPORT_TYPE_FEATURE 3
+/* Numeric constants for 'reportType' parameters */
+
+#define USB_ERROR_NONE 0
+#define USB_ERROR_ACCESS 1
+#define USB_ERROR_NOTFOUND 2
+#define USB_ERROR_BUSY 16
+#define USB_ERROR_IO 5
+/* These are the error codes which can be returned by functions of this
+ * module.
+ */
+
+/* ------------------------------------------------------------------------ */
+
+typedef struct usbDevice usbDevice_t;
+/* This type represents a USB device internally. Only opaque pointers to this
+ * type are available outside the module implementation.
+ */
+
+/* ------------------------------------------------------------------------ */
+
+int usbOpenDevice(usbDevice_t **device, int vendor, char *vendorName, int product, char *productName, int usesReportIDs);
+/* This function opens a USB device. 'vendor' and 'product' are the numeric
+ * Vendor-ID and Product-ID of the device we want to open. If 'vendorName' and
+ * 'productName' are both not NULL, only devices with matching manufacturer-
+ * and product name strings are accepted. If the device uses report IDs,
+ * 'usesReportIDs' must be set to a non-zero value.
+ * Returns: If a matching device has been found, USB_ERROR_NONE is returned and
+ * '*device' is set to an opaque pointer representing the device. The device
+ * must be closed with usbCloseDevice(). If the device has not been found or
+ * opening failed, an error code is returned.
+ */
+void usbCloseDevice(usbDevice_t *device);
+/* Every device opened with usbOpenDevice() must be closed with this function.
+ */
+int usbSetReport(usbDevice_t *device, int reportType, char *buffer, int len);
+/* This function sends a report to the device. 'reportType' specifies the type
+ * of report (see USB_HID_REPORT_TYPE* constants). The report ID must be in the
+ * first byte of buffer and the length 'len' of the report is specified
+ * including this report ID. If no report IDs are used, buffer[0] must be set
+ * to 0 (dummy report ID).
+ * Returns: 0 on success, an error code otherwise.
+ */
+int usbGetReport(usbDevice_t *device, int reportType, int reportID, char *buffer, int *len);
+/* This function obtains a report from the device. 'reportType' specifies the
+ * type of report (see USB_HID_REPORT_TYPE* constants). The requested report ID
+ * is passed in 'reportID'. The caller must pass a buffer of the size of the
+ * expected report in 'buffer' and initialize the variable in '*len' to the
+ * total size of this buffer. Upon successful return, the report (prefixed with
+ * a report ID) is in 'buffer' and the actual length of the report is returned
+ * in '*len'.
+ * Returns: 0 on success, an error code otherwise.
+ */
+
+/* ------------------------------------------------------------------------ */
+
+#endif /* __usbcalls_h_INCLUDED__ */