hidapi.h File Reference
`#include <wchar.h>`
Include dependency graph for hidapi.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

## Data Structures

struct | hid_device_info

## Macros

#define | HID_API_EXPORT
#define | HID_API_CALL
#define | HID_API_EXPORT_CALL HID_API_EXPORT HID_API_CALL

## Typedefs

typedef struct hid_device_ | hid_device

## Functions

int HID_API_EXPORT HID_API_CALL | hid_init (void)
| Initialize the HIDAPI library. More...
int HID_API_EXPORT HID_API_CALL | hid_exit (void)
| Finalize the HIDAPI library. More...
struct hid_device_info HID_API_EXPORT *HID_API_CALL | hid_enumerate (unsigned short vendor_id, unsigned short product_id)
| Enumerate the HID Devices. More...
void HID_API_EXPORT HID_API_CALL | hid_free_enumeration (struct hid_device_info *devs)
| Free an enumeration Linked List. More...
HID_API_EXPORT hid_device *HID_API_CALL | hid_open (unsigned short vendor_id, unsigned short product_id, const wchar_t *serial_number)
| Open a HID device using a Vendor ID (VID), Product ID (PID) and optionally a serial number. More...
HID_API_EXPORT hid_device *HID_API_CALL | hid_open_path (const char *path, int bExclusive)
| Open a HID device by its path name. More...
int HID_API_EXPORT HID_API_CALL | hid_write (hid_device *device, const unsigned char *data, size_t length)
| Write an Output report to a HID device. More...
int HID_API_EXPORT HID_API_CALL | hid_read_timeout (hid_device *device, unsigned char *data, size_t length, int milliseconds)
| Read an Input report from a HID device with timeout. More...
int HID_API_EXPORT HID_API_CALL | hid_read (hid_device *device, unsigned char *data, size_t length)
| Read an Input report from a HID device. More...
int HID_API_EXPORT HID_API_CALL | hid_set_nonblocking (hid_device *device, int nonblock)
| Set the device handle to be non-blocking. More...
int HID_API_EXPORT HID_API_CALL | hid_send_feature_report (hid_device *device, const unsigned char *data, size_t length)
| Send a Feature report to the device. More...
int HID_API_EXPORT HID_API_CALL | hid_get_feature_report (hid_device *device, unsigned char *data, size_t length)
| Get a feature report from a HID device. More...
void HID_API_EXPORT HID_API_CALL | hid_close (hid_device *device)
| Close a HID device. More...
int HID_API_EXPORT_CALL | hid_get_manufacturer_string (hid_device *device, wchar_t *string, size_t maxlen)
| Get The Manufacturer String from a HID device. More...
int HID_API_EXPORT_CALL | hid_get_product_string (hid_device *device, wchar_t *string, size_t maxlen)
| Get The Product String from a HID device. More...
int HID_API_EXPORT_CALL | hid_get_serial_number_string (hid_device *device, wchar_t *string, size_t maxlen)
| Get The Serial Number String from a HID device. More...
int HID_API_EXPORT_CALL | hid_get_indexed_string (hid_device *device, int string_index, wchar_t *string, size_t maxlen)
| Get a string from a HID device, based on its string index. More...
const HID_API_EXPORT wchar_t *HID_API_CALL | hid_error (hid_device *device)
| Get a string describing the last error which occurred. More...

## Macro Definition Documentation

## HID_API_CALL

#define HID_API_CALL

API call macro

Definition at line 37 of file hidapi.h.

## HID_API_EXPORT

#define HID_API_EXPORT

API export macro

Definition at line 36 of file hidapi.h.

## HID_API_EXPORT_CALL

#define HID_API_EXPORT_CALL HID_API_EXPORT HID_API_CALL

API export and call macro

Definition at line 40 of file hidapi.h.

## Typedef Documentation

## hid_device

typedef struct hid_device_ hid_device

opaque hidapi structure

Definition at line 50 of file hidapi.h.

## Function Documentation

## hid_close()

void HID_API_EXPORT HID_API_CALL hid_close | ( | hid_device * | device | ) |

Close a HID device.

    @ingroup API
    @param device A device handle returned from hid_open().

Referenced by main().

## hid_enumerate()

struct hid_device_info HID_API_EXPORT* HID_API_CALL hid_enumerate | ( | unsigned short | vendor_id,
|  | unsigned short | product_id
| ) |  |

Enumerate the HID Devices.

    This function returns a linked list of all the HID devices
    attached to the system which match vendor_id and product_id.
    If @p vendor_id is set to 0 then any vendor matches.
    If @p product_id is set to 0 then any product matches.
    If @p vendor_id and @p product_id are both set to 0, then
    all HID devices will be returned.

    @ingroup API
    @param vendor_id The Vendor ID (VID) of the types of device
        to open.
    @param product_id The Product ID (PID) of the types of
        device to open.

Returns
  This function returns a pointer to a linked list of type struct hid_device, containing information about the HID devices attached to the system, or NULL in the case of failure. Free this linked list by calling hid_free_enumeration().

Referenced by main().

## hid_error()

const HID_API_EXPORT wchar_t* HID_API_CALL hid_error | ( | hid_device * | device | ) |

Get a string describing the last error which occurred.

    @ingroup API
    @param device A device handle returned from hid_open().

    @returns
        This function returns a string containing the last error
        which occurred or NULL if none has occurred.

Referenced by main().

## hid_exit()

int HID_API_EXPORT HID_API_CALL hid_exit | ( | void |  | ) |

Finalize the HIDAPI library.

    This function frees all of the static data associated with
    HIDAPI. It should be called at the end of execution to avoid
    memory leaks.

    @ingroup API

Returns
  This function returns 0 on success and -1 on error.

Referenced by main().

## hid_free_enumeration()

void HID_API_EXPORT HID_API_CALL hid_free_enumeration | ( | struct hid_device_info * | devs | ) |

Free an enumeration Linked List.

This function frees a linked list created by hid_enumerate().

    @ingroup API

Parameters

  devs | Pointer to a list of struct_device returned from hid_enumerate().

Referenced by main().

## hid_get_feature_report()

int HID_API_EXPORT HID_API_CALL hid_get_feature_report | ( | hid_device * | device,
|  | unsigned char * | data,
|  | size_t | length
| ) |  |

Get a feature report from a HID device.

    Set the first byte of @p data[] to the Report ID of the
    report to be read.  Make sure to allow space for this
    extra byte in @p data[]. Upon return, the first byte will
    still contain the Report ID, and the report data will
    start in data[1].

    @ingroup API
    @param device A device handle returned from hid_open().
    @param data A buffer to put the read data into, including
        the Report ID. Set the first byte of @p data[] to the
        Report ID of the report to be read, or set it to zero
        if your device does not use numbered reports.
    @param length The number of bytes to read, including an
        extra byte for the report ID. The buffer can be longer
        than the actual report.

    @returns
        This function returns the number of bytes read plus
        one for the report ID (which is still in the first
        byte), or -1 on error.

Referenced by main().

## hid_get_indexed_string()

int HID_API_EXPORT_CALL hid_get_indexed_string | ( | hid_device * | device,
|  | int | string_index,
|  | wchar_t * | string,
|  | size_t | maxlen
| ) |  |

Get a string from a HID device, based on its string index.

    @ingroup API
    @param device A device handle returned from hid_open().
    @param string_index The index of the string to get.
    @param string A wide string buffer to put the data into.
    @param maxlen The length of the buffer in multiples of wchar_t.

    @returns
        This function returns 0 on success and -1 on error.

Referenced by main().

## hid_get_manufacturer_string()

int HID_API_EXPORT_CALL hid_get_manufacturer_string | ( | hid_device * | device,
|  | wchar_t * | string,
|  | size_t | maxlen
| ) |  |

Get The Manufacturer String from a HID device.

    @ingroup API
    @param device A device handle returned from hid_open().
    @param string A wide string buffer to put the data into.
    @param maxlen The length of the buffer in multiples of wchar_t.

    @returns
        This function returns 0 on success and -1 on error.

Referenced by main().

## hid_get_product_string()

int HID_API_EXPORT_CALL hid_get_product_string | ( | hid_device * | device,
|  | wchar_t * | string,
|  | size_t | maxlen
| ) |  |

Get The Product String from a HID device.

    @ingroup API
    @param device A device handle returned from hid_open().
    @param string A wide string buffer to put the data into.
    @param maxlen The length of the buffer in multiples of wchar_t.

    @returns
        This function returns 0 on success and -1 on error.

Referenced by main().

## hid_get_serial_number_string()

int HID_API_EXPORT_CALL hid_get_serial_number_string | ( | hid_device * | device,
|  | wchar_t * | string,
|  | size_t | maxlen
| ) |  |

Get The Serial Number String from a HID device.

    @ingroup API
    @param device A device handle returned from hid_open().
    @param string A wide string buffer to put the data into.
    @param maxlen The length of the buffer in multiples of wchar_t.

    @returns
        This function returns 0 on success and -1 on error.

Referenced by main().

## hid_init()

int HID_API_EXPORT HID_API_CALL hid_init | ( | void |  | ) |

Initialize the HIDAPI library.

    This function initializes the HIDAPI library. Calling it is not
    strictly necessary, as it will be called automatically by
    hid_enumerate() and any of the hid_open_*() functions if it is
    needed.  This function should be called at the beginning of
    execution however, if there is a chance of HIDAPI handles
    being opened by different threads simultaneously.

    @ingroup API

    @returns
        This function returns 0 on success and -1 on error.

Referenced by main().

## hid_open_path()

HID_API_EXPORT hid_device* HID_API_CALL hid_open_path | ( | const char * | path,
|  | int | bExclusive
| ) |  |

Open a HID device by its path name.

    The path name be determined by calling hid_enumerate(), or a
    platform-specific path name can be used (eg: /dev/hidraw0 on
    Linux).

    @ingroup API

Parameters

  path

  The path name of the device to open

      @returns
          This function returns a pointer to a #hid_device object on
          success or NULL on failure.

## hid_read_timeout()

int HID_API_EXPORT HID_API_CALL hid_read_timeout | ( | hid_device * | device,
|  | unsigned char * | data,
|  | size_t | length,
|  | int | milliseconds
| ) |  |

Read an Input report from a HID device with timeout.

    Input reports are returned
    to the host through the INTERRUPT IN endpoint. The first byte will
    contain the Report number if the device uses numbered reports.

    @ingroup API
    @param device A device handle returned from hid_open().
    @param data A buffer to put the read data into.
    @param length The number of bytes to read. For devices with
        multiple reports, make sure to read an extra byte for
        the report number.
    @param milliseconds timeout in milliseconds or -1 for blocking wait.

    @returns
        This function returns the actual number of bytes read and
        -1 on error. If no packet was available to be read within
        the timeout period, this function returns 0.

## hid_send_feature_report()

int HID_API_EXPORT HID_API_CALL hid_send_feature_report | ( | hid_device * | device,
|  | const unsigned char * | data,
|  | size_t | length
| ) |  |

Send a Feature report to the device.

    Feature reports are sent over the Control endpoint as a
    Set_Report transfer.  The first byte of @p data[] must
    contain the Report ID. For devices which only support a
    single report, this must be set to 0x0. The remaining bytes
    contain the report data. Since the Report ID is mandatory,
    calls to hid_send_feature_report() will always contain one
    more byte than the report contains. For example, if a hid
    report is 16 bytes long, 17 bytes must be passed to
    hid_send_feature_report(): the Report ID (or 0x0, for
    devices which do not use numbered reports), followed by the
    report data (16 bytes). In this example, the length passed
    in would be 17.

    @ingroup API
    @param device A device handle returned from hid_open().
    @param data The data to send, including the report number as
        the first byte.
    @param length The length in bytes of the data to send, including
        the report number.

    @returns
        This function returns the actual number of bytes written and
        -1 on error.

Referenced by main().

## hid_set_nonblocking()

int HID_API_EXPORT HID_API_CALL hid_set_nonblocking | ( | hid_device * | device,
|  | int | nonblock
| ) |  |

Set the device handle to be non-blocking.

    In non-blocking mode calls to hid_read() will return
    immediately with a value of 0 if there is no data to be
    read. In blocking mode, hid_read() will wait (block) until
    there is data to read before returning.

    Nonblocking can be turned on and off at any time.

    @ingroup API
    @param device A device handle returned from hid_open().
    @param nonblock enable or not the nonblocking reads
     - 1 to enable nonblocking
     - 0 to disable nonblocking.

    @returns
        This function returns 0 on success and -1 on error.

Referenced by main().

## hid_write()

int HID_API_EXPORT HID_API_CALL hid_write | ( | hid_device * | device,
|  | const unsigned char * | data,
|  | size_t | length
| ) |  |

Write an Output report to a HID device.

    The first byte of @p data[] must contain the Report ID. For
    devices which only support a single report, this must be set
    to 0x0. The remaining bytes contain the report data. Since
    the Report ID is mandatory, calls to hid_write() will always
    contain one more byte than the report contains. For example,
    if a hid report is 16 bytes long, 17 bytes must be passed to
    hid_write(), the Report ID (or 0x0, for devices with a
    single report), followed by the report data (16 bytes). In
    this example, the length passed in would be 17.

    hid_write() will send the data on the first OUT endpoint, if
    one exists. If it does not, it will send the data through
    the Control Endpoint (Endpoint 0).

    @ingroup API
    @param device A device handle returned from hid_open().
    @param data The data to send, including the report number as
        the first byte.
    @param length The length in bytes of the data to send.

    @returns
        This function returns the actual number of bytes written and
        -1 on error.

Referenced by main().