hidapi
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
hidapi.h
Go to the documentation of this file.
1/*******************************************************
2 HIDAPI - Multi-Platform library for
3 communication with HID devices.
4
5 Alan Ott
6 Signal 11 Software
7
8 libusb/hidapi Team
9
10 Copyright 2023, All Rights Reserved.
11
12 At the discretion of the user of this library,
13 this software may be licensed under the terms of the
14 GNU General Public License v3, a BSD-Style license, or the
15 original HIDAPI license as outlined in the LICENSE.txt,
16 LICENSE-gpl3.txt, LICENSE-bsd.txt, and LICENSE-orig.txt
17 files located at the root of the source distribution.
18 These files may also be found in the public source
19 code repository located at:
20 https://github.com/libusb/hidapi .
21********************************************************/
22
27#ifndef HIDAPI_H__
28#define HIDAPI_H__
29
30#include <wchar.h>
31
32/* #480: this is to be refactored properly for v1.0 */
33#ifdef _WIN32
34 #ifndef HID_API_NO_EXPORT_DEFINE
35 #define HID_API_EXPORT __declspec(dllexport)
36 #endif
37#endif
38#ifndef HID_API_EXPORT
39 #define HID_API_EXPORT
40#endif
41/* To be removed in v1.0 */
42#define HID_API_CALL
44#define HID_API_EXPORT_CALL HID_API_EXPORT HID_API_CALL
50#define HID_API_VERSION_MAJOR 0
55#define HID_API_VERSION_MINOR 16
60#define HID_API_VERSION_PATCH 0
61
62/* Helper macros */
63#define HID_API_AS_STR_IMPL(x) #x
64#define HID_API_AS_STR(x) HID_API_AS_STR_IMPL(x)
65#define HID_API_TO_VERSION_STR(v1, v2, v3) HID_API_AS_STR(v1.v2.v3)
66
79#define HID_API_MAKE_VERSION(mj, mn, p) (((mj) << 24) | ((mn) << 8) | (p))
80
89#define HID_API_VERSION HID_API_MAKE_VERSION(HID_API_VERSION_MAJOR, HID_API_VERSION_MINOR, HID_API_VERSION_PATCH)
90
95#define HID_API_VERSION_STR HID_API_TO_VERSION_STR(HID_API_VERSION_MAJOR, HID_API_VERSION_MINOR, HID_API_VERSION_PATCH)
96
103#define HID_API_MAX_REPORT_DESCRIPTOR_SIZE 4096
104
105#ifdef __cplusplus
106extern "C" {
107#endif
110 int major;
111 int minor;
112 int patch;
113 };
114
115 struct hid_device_;
116 typedef struct hid_device_ hid_device;
122 typedef enum {
125
130
137
142
147
154 } hid_bus_type;
155
159 char *path;
161 unsigned short vendor_id;
163 unsigned short product_id;
168 unsigned short release_number;
175 unsigned short usage_page;
178 unsigned short usage;
186
189
194 };
195
196
213
226
253
263
284 HID_API_EXPORT hid_device * HID_API_CALL hid_open(unsigned short vendor_id, unsigned short product_id, const wchar_t *serial_number);
285
304
332 int HID_API_EXPORT HID_API_CALL hid_write(hid_device *dev, const unsigned char *data, size_t length);
333
357 int HID_API_EXPORT HID_API_CALL hid_read_timeout(hid_device *dev, unsigned char *data, size_t length, int milliseconds);
358
381 int HID_API_EXPORT HID_API_CALL hid_read(hid_device *dev, unsigned char *data, size_t length);
382
404
425
453 int HID_API_EXPORT HID_API_CALL hid_send_feature_report(hid_device *dev, const unsigned char *data, size_t length);
454
479 int HID_API_EXPORT HID_API_CALL hid_get_feature_report(hid_device *dev, unsigned char *data, size_t length);
480
513 int HID_API_EXPORT HID_API_CALL hid_send_output_report(hid_device* dev, const unsigned char* data, size_t length);
514
541 int HID_API_EXPORT HID_API_CALL hid_get_input_report(hid_device *dev, unsigned char *data, size_t length);
542
549
561 int HID_API_EXPORT_CALL hid_get_manufacturer_string(hid_device *dev, wchar_t *string, size_t maxlen);
562
574 int HID_API_EXPORT_CALL hid_get_product_string(hid_device *dev, wchar_t *string, size_t maxlen);
575
587 int HID_API_EXPORT_CALL hid_get_serial_number_string(hid_device *dev, wchar_t *string, size_t maxlen);
588
605
618 int HID_API_EXPORT_CALL hid_get_indexed_string(hid_device *dev, int string_index, wchar_t *string, size_t maxlen);
619
635 int HID_API_EXPORT_CALL hid_get_report_descriptor(hid_device *dev, unsigned char *buf, size_t buf_size);
636
663
674
675
686
687#ifdef __cplusplus
688}
689#endif
690
691#endif
int HID_API_EXPORT HID_API_CALL hid_set_nonblocking(hid_device *dev, int nonblock)
Set the device handle to be non-blocking.
int HID_API_EXPORT HID_API_CALL hid_init(void)
Initialize the HIDAPI library.
hid_bus_type
HID underlying bus types.
Definition hidapi.h:122
int HID_API_EXPORT_CALL hid_get_indexed_string(hid_device *dev, int string_index, wchar_t *string, size_t maxlen)
Get a string from a HID device, based on its string index.
int HID_API_EXPORT HID_API_CALL hid_read(hid_device *dev, unsigned char *data, size_t length)
Read an Input report from a HID device.
int HID_API_EXPORT HID_API_CALL hid_get_input_report(hid_device *dev, unsigned char *data, size_t length)
Get a input report from a HID device.
struct hid_device_info HID_API_EXPORT *HID_API_CALL hid_get_device_info(hid_device *dev)
Get The struct hid_device_info from a HID device.
int HID_API_EXPORT_CALL hid_get_serial_number_string(hid_device *dev, wchar_t *string, size_t maxlen)
Get The Serial Number String from a HID device.
HID_API_EXPORT const wchar_t *HID_API_CALL hid_read_error(hid_device *dev)
Get a string describing the last error which occurred during hid_read/hid_read_timeout.
int HID_API_EXPORT_CALL hid_get_product_string(hid_device *dev, wchar_t *string, size_t maxlen)
Get The Product String from a HID device.
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.
int HID_API_EXPORT HID_API_CALL hid_send_output_report(hid_device *dev, const unsigned char *data, size_t length)
Send a Output report to the device.
int HID_API_EXPORT_CALL hid_get_manufacturer_string(hid_device *dev, wchar_t *string, size_t maxlen)
Get The Manufacturer String from a HID device.
void HID_API_EXPORT HID_API_CALL hid_close(hid_device *dev)
Close a HID device.
HID_API_EXPORT hid_device *HID_API_CALL hid_open_path(const char *path)
Open a HID device by its path name.
int HID_API_EXPORT HID_API_CALL hid_get_feature_report(hid_device *dev, unsigned char *data, size_t length)
Get a feature report from a HID device.
int HID_API_EXPORT HID_API_CALL hid_read_timeout(hid_device *dev, unsigned char *data, size_t length, int milliseconds)
Read an Input report from a HID device with timeout.
int HID_API_EXPORT HID_API_CALL hid_write(hid_device *dev, const unsigned char *data, size_t length)
Write an Output report to a HID device.
int HID_API_EXPORT_CALL hid_get_report_descriptor(hid_device *dev, unsigned char *buf, size_t buf_size)
Get a report descriptor from a HID device.
struct hid_device_info HID_API_EXPORT *HID_API_CALL hid_enumerate(unsigned short vendor_id, unsigned short product_id)
Enumerate the HID Devices.
HID_API_EXPORT const wchar_t *HID_API_CALL hid_error(hid_device *dev)
Get a string describing the last error which occurred.
HID_API_EXPORT const char *HID_API_CALL hid_version_str(void)
Get a runtime version string of the library.
int HID_API_EXPORT HID_API_CALL hid_exit(void)
Finalize the HIDAPI library.
int HID_API_EXPORT HID_API_CALL hid_send_feature_report(hid_device *dev, const unsigned char *data, size_t length)
Send a Feature report to the device.
HID_API_EXPORT const struct hid_api_version *HID_API_CALL hid_version(void)
Get a runtime version of the library.
void HID_API_EXPORT HID_API_CALL hid_free_enumeration(struct hid_device_info *devs)
Free an enumeration Linked List.
@ HID_API_BUS_SPI
Definition hidapi.h:146
@ HID_API_BUS_VIRTUAL
Definition hidapi.h:153
@ HID_API_BUS_USB
Definition hidapi.h:129
@ HID_API_BUS_UNKNOWN
Definition hidapi.h:124
@ HID_API_BUS_BLUETOOTH
Definition hidapi.h:136
@ HID_API_BUS_I2C
Definition hidapi.h:141
#define HID_API_EXPORT_CALL
Definition hidapi.h:44
#define HID_API_EXPORT
Definition hidapi.h:39
struct hid_device_ hid_device
Definition hidapi.h:116
#define HID_API_CALL
Definition hidapi.h:42
Definition hidapi.h:109
int major
Definition hidapi.h:110
int minor
Definition hidapi.h:111
int patch
Definition hidapi.h:112
Definition hidapi.h:157
unsigned short product_id
Definition hidapi.h:163
struct hid_device_info * next
Definition hidapi.h:188
unsigned short usage
Definition hidapi.h:178
wchar_t * manufacturer_string
Definition hidapi.h:170
unsigned short vendor_id
Definition hidapi.h:161
char * path
Definition hidapi.h:159
unsigned short release_number
Definition hidapi.h:168
wchar_t * serial_number
Definition hidapi.h:165
int interface_number
Definition hidapi.h:185
unsigned short usage_page
Definition hidapi.h:175
wchar_t * product_string
Definition hidapi.h:172
hid_bus_type bus_type
Definition hidapi.h:193