gobot.io/x/gobot/v2@v2.1.0/platforms/digispark/opendevice.h (about)

     1  /* Name: opendevice.h
     2   * Project: V-USB host-side library
     3   * Author: Christian Starkjohann
     4   * Creation Date: 2008-04-10
     5   * Tabsize: 4
     6   * Copyright: (c) 2008 by OBJECTIVE DEVELOPMENT Software GmbH
     7   * License: GNU GPL v2 (see License.txt), GNU GPL v3 or proprietary (CommercialLicense.txt)
     8   * This Revision: $Id: opendevice.h 755 2009-08-03 17:01:21Z cs $
     9   */
    10  
    11  /*
    12  General Description:
    13  This module offers additional functionality for host side drivers based on
    14  libusb or libusb-win32. It includes a function to find and open a device
    15  based on numeric IDs and textual description. It also includes a function to
    16  obtain textual descriptions from a device.
    17  
    18  To use this functionality, simply copy opendevice.c and opendevice.h into your
    19  project and add them to your Makefile. You may modify and redistribute these
    20  files according to the GNU General Public License (GPL) version 2 or 3.
    21  */
    22  
    23  #ifndef __OPENDEVICE_H_INCLUDED__
    24  #define __OPENDEVICE_H_INCLUDED__
    25  
    26  #ifdef _WIN32
    27     #include <lusb0_usb.h>   // this is libusb, see http://libusb.sourceforge.net/ 
    28  #else
    29     #include <usb.h>     // this is libusb, see http://libusb.sourceforge.net/ 
    30  #endif
    31  #include <stdio.h>
    32  
    33  int usbGetStringAscii(usb_dev_handle *dev, int index, char *buf, int buflen);
    34  /* This function gets a string descriptor from the device. 'index' is the
    35   * string descriptor index. The string is returned in ISO Latin 1 encoding in
    36   * 'buf' and it is terminated with a 0-character. The buffer size must be
    37   * passed in 'buflen' to prevent buffer overflows. A libusb device handle
    38   * must be given in 'dev'.
    39   * Returns: The length of the string (excluding the terminating 0) or
    40   * a negative number in case of an error. If there was an error, use
    41   * usb_strerror() to obtain the error message.
    42   */
    43  
    44  int usbOpenDevice(usb_dev_handle **device, int vendorID, char *vendorNamePattern, int productID, char *productNamePattern, char *serialNamePattern, FILE *printMatchingDevicesFp, FILE *warningsFp);
    45  /* This function iterates over all devices on all USB busses and searches for
    46   * a device. Matching is done first by means of Vendor- and Product-ID (passed
    47   * in 'vendorID' and 'productID'. An ID of 0 matches any numeric ID (wildcard).
    48   * When a device matches by its IDs, matching by names is performed. Name
    49   * matching can be done on textual vendor name ('vendorNamePattern'), product
    50   * name ('productNamePattern') and serial number ('serialNamePattern'). A
    51   * device matches only if all non-null pattern match. If you don't care about
    52   * a string, pass NULL for the pattern. Patterns are Unix shell style pattern:
    53   * '*' stands for 0 or more characters, '?' for one single character, a list
    54   * of characters in square brackets for a single character from the list
    55   * (dashes are allowed to specify a range) and if the lis of characters begins
    56   * with a caret ('^'), it matches one character which is NOT in the list.
    57   * Other parameters to the function: If 'warningsFp' is not NULL, warning
    58   * messages are printed to this file descriptor with fprintf(). If
    59   * 'printMatchingDevicesFp' is not NULL, no device is opened but matching
    60   * devices are printed to the given file descriptor with fprintf().
    61   * If a device is opened, the resulting USB handle is stored in '*device'. A
    62   * pointer to a "usb_dev_handle *" type variable must be passed here.
    63   * Returns: 0 on success, an error code (see defines below) on failure.
    64   */
    65  
    66  /* usbOpenDevice() error codes: */
    67  #define USBOPEN_SUCCESS         0   /* no error */
    68  #define USBOPEN_ERR_ACCESS      1   /* not enough permissions to open device */
    69  #define USBOPEN_ERR_IO          2   /* I/O error */
    70  #define USBOPEN_ERR_NOTFOUND    3   /* device not found */
    71  
    72  
    73  /* Obdev's free USB IDs, see USB-IDs-for-free.txt for details */
    74  
    75  #define USB_VID_OBDEV_SHARED        5824    /* obdev's shared vendor ID */
    76  #define USB_PID_OBDEV_SHARED_CUSTOM 1500    /* shared PID for custom class devices */
    77  #define USB_PID_OBDEV_SHARED_HID    1503    /* shared PID for HIDs except mice & keyboards */
    78  #define USB_PID_OBDEV_SHARED_CDCACM 1505    /* shared PID for CDC Modem devices */
    79  #define USB_PID_OBDEV_SHARED_MIDI   1508    /* shared PID for MIDI class devices */
    80  
    81  #endif /* __OPENDEVICE_H_INCLUDED__ */