annotate SDL3/SDL_hidapi.h @ 1:20d02a178406 default tip

*: check in everything else yay
author Paper <paper@tflc.us>
date Mon, 05 Jan 2026 02:15:46 -0500
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1 /*
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
2 Simple DirectMedia Layer
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
3 Copyright (C) 1997-2025 Sam Lantinga <slouken@libsdl.org>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
4
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
5 This software is provided 'as-is', without any express or implied
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
6 warranty. In no event will the authors be held liable for any damages
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
7 arising from the use of this software.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
8
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
9 Permission is granted to anyone to use this software for any purpose,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
10 including commercial applications, and to alter it and redistribute it
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
11 freely, subject to the following restrictions:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
12
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
13 1. The origin of this software must not be misrepresented; you must not
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
14 claim that you wrote the original software. If you use this software
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
15 in a product, an acknowledgment in the product documentation would be
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
16 appreciated but is not required.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
17 2. Altered source versions must be plainly marked as such, and must not be
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
18 misrepresented as being the original software.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
19 3. This notice may not be removed or altered from any source distribution.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
20 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
21
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
22 /* WIKI CATEGORY: HIDAPI */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
23
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
24 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
25 * # CategoryHIDAPI
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
26 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
27 * Header file for SDL HIDAPI functions.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
28 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
29 * This is an adaptation of the original HIDAPI interface by Alan Ott, and
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
30 * includes source code licensed under the following license:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
31 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
32 * ```
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
33 * HIDAPI - Multi-Platform library for
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
34 * communication with HID devices.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
35 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
36 * Copyright 2009, Alan Ott, Signal 11 Software.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
37 * All Rights Reserved.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
38 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
39 * This software may be used by anyone for any reason so
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
40 * long as the copyright notice in the source files
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
41 * remains intact.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
42 * ```
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
43 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
44 * (Note that this license is the same as item three of SDL's zlib license, so
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
45 * it adds no new requirements on the user.)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
46 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
47 * If you would like a version of SDL without this code, you can build SDL
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
48 * with SDL_HIDAPI_DISABLED defined to 1. You might want to do this for
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
49 * example on iOS or tvOS to avoid a dependency on the CoreBluetooth
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
50 * framework.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
51 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
52
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
53 #ifndef SDL_hidapi_h_
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
54 #define SDL_hidapi_h_
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
55
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
56 #include <SDL3/SDL_stdinc.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
57 #include <SDL3/SDL_error.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
58 #include <SDL3/SDL_properties.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
59
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
60 #include <SDL3/SDL_begin_code.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
61 /* Set up for C function definitions, even when using C++ */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
62 #ifdef __cplusplus
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
63 extern "C" {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
64 #endif
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
65
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
66 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
67 * An opaque handle representing an open HID device.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
68 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
69 * \since This struct is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
70 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
71 typedef struct SDL_hid_device SDL_hid_device;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
72
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
73 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
74 * HID underlying bus types.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
75 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
76 * \since This enum is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
77 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
78 typedef enum SDL_hid_bus_type {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
79 /** Unknown bus type */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
80 SDL_HID_API_BUS_UNKNOWN = 0x00,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
81
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
82 /** USB bus
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
83 Specifications:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
84 https://usb.org/hid */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
85 SDL_HID_API_BUS_USB = 0x01,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
86
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
87 /** Bluetooth or Bluetooth LE bus
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
88 Specifications:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
89 https://www.bluetooth.com/specifications/specs/human-interface-device-profile-1-1-1/
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
90 https://www.bluetooth.com/specifications/specs/hid-service-1-0/
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
91 https://www.bluetooth.com/specifications/specs/hid-over-gatt-profile-1-0/ */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
92 SDL_HID_API_BUS_BLUETOOTH = 0x02,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
93
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
94 /** I2C bus
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
95 Specifications:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
96 https://docs.microsoft.com/previous-versions/windows/hardware/design/dn642101(v=vs.85) */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
97 SDL_HID_API_BUS_I2C = 0x03,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
98
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
99 /** SPI bus
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
100 Specifications:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
101 https://www.microsoft.com/download/details.aspx?id=103325 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
102 SDL_HID_API_BUS_SPI = 0x04
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
103
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
104 } SDL_hid_bus_type;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
105
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
106 /** hidapi info structure */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
107
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
108 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
109 * Information about a connected HID device
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
110 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
111 * \since This struct is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
112 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
113 typedef struct SDL_hid_device_info
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
114 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
115 /** Platform-specific device path */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
116 char *path;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
117 /** Device Vendor ID */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
118 unsigned short vendor_id;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
119 /** Device Product ID */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
120 unsigned short product_id;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
121 /** Serial Number */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
122 wchar_t *serial_number;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
123 /** Device Release Number in binary-coded decimal,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
124 also known as Device Version Number */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
125 unsigned short release_number;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
126 /** Manufacturer String */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
127 wchar_t *manufacturer_string;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
128 /** Product string */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
129 wchar_t *product_string;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
130 /** Usage Page for this Device/Interface
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
131 (Windows/Mac/hidraw only) */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
132 unsigned short usage_page;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
133 /** Usage for this Device/Interface
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
134 (Windows/Mac/hidraw only) */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
135 unsigned short usage;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
136 /** The USB interface which this logical device
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
137 represents.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
138
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
139 Valid only if the device is a USB HID device.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
140 Set to -1 in all other cases.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
141 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
142 int interface_number;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
143
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
144 /** Additional information about the USB interface.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
145 Valid on libusb and Android implementations. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
146 int interface_class;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
147 int interface_subclass;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
148 int interface_protocol;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
149
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
150 /** Underlying bus type */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
151 SDL_hid_bus_type bus_type;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
152
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
153 /** Pointer to the next device */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
154 struct SDL_hid_device_info *next;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
155
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
156 } SDL_hid_device_info;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
157
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
158
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
159 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
160 * Initialize the HIDAPI library.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
161 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
162 * This function initializes the HIDAPI library. Calling it is not strictly
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
163 * necessary, as it will be called automatically by SDL_hid_enumerate() and
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
164 * any of the SDL_hid_open_*() functions if it is needed. This function should
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
165 * be called at the beginning of execution however, if there is a chance of
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
166 * HIDAPI handles being opened by different threads simultaneously.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
167 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
168 * Each call to this function should have a matching call to SDL_hid_exit()
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
169 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
170 * \returns 0 on success or a negative error code on failure; call
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
171 * SDL_GetError() for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
172 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
173 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
174 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
175 * \sa SDL_hid_exit
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
176 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
177 extern SDL_DECLSPEC int SDLCALL SDL_hid_init(void);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
178
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
179 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
180 * Finalize the HIDAPI library.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
181 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
182 * This function frees all of the static data associated with HIDAPI. It
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
183 * should be called at the end of execution to avoid memory leaks.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
184 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
185 * \returns 0 on success or a negative error code on failure; call
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
186 * SDL_GetError() for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
187 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
188 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
189 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
190 * \sa SDL_hid_init
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
191 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
192 extern SDL_DECLSPEC int SDLCALL SDL_hid_exit(void);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
193
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
194 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
195 * Check to see if devices may have been added or removed.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
196 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
197 * Enumerating the HID devices is an expensive operation, so you can call this
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
198 * to see if there have been any system device changes since the last call to
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
199 * this function. A change in the counter returned doesn't necessarily mean
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
200 * that anything has changed, but you can call SDL_hid_enumerate() to get an
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
201 * updated device list.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
202 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
203 * Calling this function for the first time may cause a thread or other system
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
204 * resource to be allocated to track device change notifications.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
205 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
206 * \returns a change counter that is incremented with each potential device
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
207 * change, or 0 if device change detection isn't available.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
208 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
209 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
210 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
211 * \sa SDL_hid_enumerate
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
212 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
213 extern SDL_DECLSPEC Uint32 SDLCALL SDL_hid_device_change_count(void);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
214
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
215 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
216 * Enumerate the HID Devices.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
217 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
218 * This function returns a linked list of all the HID devices attached to the
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
219 * system which match vendor_id and product_id. If `vendor_id` is set to 0
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
220 * then any vendor matches. If `product_id` is set to 0 then any product
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
221 * matches. If `vendor_id` and `product_id` are both set to 0, then all HID
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
222 * devices will be returned.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
223 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
224 * By default SDL will only enumerate controllers, to reduce risk of hanging
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
225 * or crashing on bad drivers, but SDL_HINT_HIDAPI_ENUMERATE_ONLY_CONTROLLERS
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
226 * can be set to "0" to enumerate all HID devices.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
227 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
228 * \param vendor_id the Vendor ID (VID) of the types of device to open, or 0
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
229 * to match any vendor.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
230 * \param product_id the Product ID (PID) of the types of device to open, or 0
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
231 * to match any product.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
232 * \returns a pointer to a linked list of type SDL_hid_device_info, containing
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
233 * information about the HID devices attached to the system, or NULL
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
234 * in the case of failure. Free this linked list by calling
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
235 * SDL_hid_free_enumeration().
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
236 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
237 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
238 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
239 * \sa SDL_hid_device_change_count
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
240 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
241 extern SDL_DECLSPEC SDL_hid_device_info * SDLCALL SDL_hid_enumerate(unsigned short vendor_id, unsigned short product_id);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
242
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
243 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
244 * Free an enumeration linked list.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
245 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
246 * This function frees a linked list created by SDL_hid_enumerate().
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
247 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
248 * \param devs pointer to a list of struct_device returned from
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
249 * SDL_hid_enumerate().
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
250 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
251 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
252 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
253 extern SDL_DECLSPEC void SDLCALL SDL_hid_free_enumeration(SDL_hid_device_info *devs);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
254
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
255 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
256 * Open a HID device using a Vendor ID (VID), Product ID (PID) and optionally
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
257 * a serial number.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
258 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
259 * If `serial_number` is NULL, the first device with the specified VID and PID
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
260 * is opened.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
261 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
262 * \param vendor_id the Vendor ID (VID) of the device to open.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
263 * \param product_id the Product ID (PID) of the device to open.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
264 * \param serial_number the Serial Number of the device to open (Optionally
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
265 * NULL).
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
266 * \returns a pointer to a SDL_hid_device object on success or NULL on
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
267 * failure; call SDL_GetError() for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
268 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
269 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
270 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
271 extern SDL_DECLSPEC SDL_hid_device * SDLCALL SDL_hid_open(unsigned short vendor_id, unsigned short product_id, const wchar_t *serial_number);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
272
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
273 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
274 * Open a HID device by its path name.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
275 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
276 * The path name be determined by calling SDL_hid_enumerate(), or a
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
277 * platform-specific path name can be used (eg: /dev/hidraw0 on Linux).
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
278 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
279 * \param path the path name of the device to open.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
280 * \returns a pointer to a SDL_hid_device object on success or NULL on
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
281 * failure; call SDL_GetError() for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
282 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
283 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
284 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
285 extern SDL_DECLSPEC SDL_hid_device * SDLCALL SDL_hid_open_path(const char *path);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
286
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
287 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
288 * Get the properties associated with an SDL_hid_device.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
289 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
290 * The following read-only properties are provided by SDL:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
291 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
292 * - `SDL_PROP_HIDAPI_LIBUSB_DEVICE_HANDLE_POINTER`: the libusb_device_handle
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
293 * associated with the device, if it was opened using libusb.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
294 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
295 * \param dev a device handle returned from SDL_hid_open().
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
296 * \returns a valid property ID on success or 0 on failure; call
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
297 * SDL_GetError() for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
298 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
299 * \since This function is available since SDL 3.4.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
300 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
301 extern SDL_DECLSPEC SDL_PropertiesID SDLCALL SDL_hid_get_properties(SDL_hid_device *dev);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
302
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
303 #define SDL_PROP_HIDAPI_LIBUSB_DEVICE_HANDLE_POINTER "SDL.hidapi.libusb.device.handle"
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
304
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
305 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
306 * Write an Output report to a HID device.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
307 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
308 * The first byte of `data` must contain the Report ID. For devices which only
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
309 * support a single report, this must be set to 0x0. The remaining bytes
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
310 * contain the report data. Since the Report ID is mandatory, calls to
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
311 * SDL_hid_write() will always contain one more byte than the report contains.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
312 * For example, if a hid report is 16 bytes long, 17 bytes must be passed to
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
313 * SDL_hid_write(), the Report ID (or 0x0, for devices with a single report),
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
314 * followed by the report data (16 bytes). In this example, the length passed
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
315 * in would be 17.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
316 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
317 * SDL_hid_write() will send the data on the first OUT endpoint, if one
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
318 * exists. If it does not, it will send the data through the Control Endpoint
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
319 * (Endpoint 0).
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
320 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
321 * \param dev a device handle returned from SDL_hid_open().
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
322 * \param data the data to send, including the report number as the first
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
323 * byte.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
324 * \param length the length in bytes of the data to send.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
325 * \returns the actual number of bytes written and -1 on on failure; call
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
326 * SDL_GetError() for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
327 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
328 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
329 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
330 extern SDL_DECLSPEC int SDLCALL SDL_hid_write(SDL_hid_device *dev, const unsigned char *data, size_t length);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
331
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
332 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
333 * Read an Input report from a HID device with timeout.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
334 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
335 * Input reports are returned to the host through the INTERRUPT IN endpoint.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
336 * The first byte will contain the Report number if the device uses numbered
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
337 * reports.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
338 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
339 * \param dev a device handle returned from SDL_hid_open().
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
340 * \param data a buffer to put the read data into.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
341 * \param length the number of bytes to read. For devices with multiple
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
342 * reports, make sure to read an extra byte for the report
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
343 * number.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
344 * \param milliseconds timeout in milliseconds or -1 for blocking wait.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
345 * \returns the actual number of bytes read and -1 on on failure; call
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
346 * SDL_GetError() for more information. If no packet was available to
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
347 * be read within the timeout period, this function returns 0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
348 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
349 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
350 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
351 extern SDL_DECLSPEC int SDLCALL SDL_hid_read_timeout(SDL_hid_device *dev, unsigned char *data, size_t length, int milliseconds);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
352
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
353 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
354 * Read an Input report from a HID device.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
355 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
356 * Input reports are returned to the host through the INTERRUPT IN endpoint.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
357 * The first byte will contain the Report number if the device uses numbered
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
358 * reports.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
359 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
360 * \param dev a device handle returned from SDL_hid_open().
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
361 * \param data a buffer to put the read data into.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
362 * \param length the number of bytes to read. For devices with multiple
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
363 * reports, make sure to read an extra byte for the report
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
364 * number.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
365 * \returns the actual number of bytes read and -1 on failure; call
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
366 * SDL_GetError() for more information. If no packet was available to
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
367 * be read and the handle is in non-blocking mode, this function
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
368 * returns 0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
369 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
370 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
371 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
372 extern SDL_DECLSPEC int SDLCALL SDL_hid_read(SDL_hid_device *dev, unsigned char *data, size_t length);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
373
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
374 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
375 * Set the device handle to be non-blocking.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
376 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
377 * In non-blocking mode calls to SDL_hid_read() will return immediately with a
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
378 * value of 0 if there is no data to be read. In blocking mode, SDL_hid_read()
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
379 * will wait (block) until there is data to read before returning.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
380 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
381 * Nonblocking can be turned on and off at any time.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
382 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
383 * \param dev a device handle returned from SDL_hid_open().
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
384 * \param nonblock enable or not the nonblocking reads - 1 to enable
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
385 * nonblocking - 0 to disable nonblocking.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
386 * \returns 0 on success or a negative error code on failure; call
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
387 * SDL_GetError() for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
388 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
389 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
390 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
391 extern SDL_DECLSPEC int SDLCALL SDL_hid_set_nonblocking(SDL_hid_device *dev, int nonblock);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
392
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
393 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
394 * Send a Feature report to the device.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
395 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
396 * Feature reports are sent over the Control endpoint as a Set_Report
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
397 * transfer. The first byte of `data` must contain the Report ID. For devices
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
398 * which only support a single report, this must be set to 0x0. The remaining
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
399 * bytes contain the report data. Since the Report ID is mandatory, calls to
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
400 * SDL_hid_send_feature_report() will always contain one more byte than the
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
401 * report contains. For example, if a hid report is 16 bytes long, 17 bytes
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
402 * must be passed to SDL_hid_send_feature_report(): the Report ID (or 0x0, for
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
403 * devices which do not use numbered reports), followed by the report data (16
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
404 * bytes). In this example, the length passed in would be 17.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
405 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
406 * \param dev a device handle returned from SDL_hid_open().
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
407 * \param data the data to send, including the report number as the first
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
408 * byte.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
409 * \param length the length in bytes of the data to send, including the report
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
410 * number.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
411 * \returns the actual number of bytes written and -1 on failure; call
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
412 * SDL_GetError() for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
413 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
414 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
415 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
416 extern SDL_DECLSPEC int SDLCALL SDL_hid_send_feature_report(SDL_hid_device *dev, const unsigned char *data, size_t length);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
417
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
418 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
419 * Get a feature report from a HID device.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
420 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
421 * Set the first byte of `data` to the Report ID of the report to be read.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
422 * Make sure to allow space for this extra byte in `data`. Upon return, the
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
423 * first byte will still contain the Report ID, and the report data will start
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
424 * in data[1].
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
425 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
426 * \param dev a device handle returned from SDL_hid_open().
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
427 * \param data a buffer to put the read data into, including the Report ID.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
428 * Set the first byte of `data` to the Report ID of the report to
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
429 * be read, or set it to zero if your device does not use numbered
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
430 * reports.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
431 * \param length the number of bytes to read, including an extra byte for the
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
432 * report ID. The buffer can be longer than the actual report.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
433 * \returns the number of bytes read plus one for the report ID (which is
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
434 * still in the first byte), or -1 on on failure; call SDL_GetError()
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
435 * for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
436 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
437 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
438 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
439 extern SDL_DECLSPEC int SDLCALL SDL_hid_get_feature_report(SDL_hid_device *dev, unsigned char *data, size_t length);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
440
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
441 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
442 * Get an input report from a HID device.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
443 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
444 * Set the first byte of `data` to the Report ID of the report to be read.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
445 * Make sure to allow space for this extra byte in `data`. Upon return, the
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
446 * first byte will still contain the Report ID, and the report data will start
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
447 * in data[1].
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
448 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
449 * \param dev a device handle returned from SDL_hid_open().
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
450 * \param data a buffer to put the read data into, including the Report ID.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
451 * Set the first byte of `data` to the Report ID of the report to
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
452 * be read, or set it to zero if your device does not use numbered
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
453 * reports.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
454 * \param length the number of bytes to read, including an extra byte for the
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
455 * report ID. The buffer can be longer than the actual report.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
456 * \returns the number of bytes read plus one for the report ID (which is
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
457 * still in the first byte), or -1 on on failure; call SDL_GetError()
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
458 * for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
459 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
460 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
461 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
462 extern SDL_DECLSPEC int SDLCALL SDL_hid_get_input_report(SDL_hid_device *dev, unsigned char *data, size_t length);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
463
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
464 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
465 * Close a HID device.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
466 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
467 * \param dev a device handle returned from SDL_hid_open().
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
468 * \returns 0 on success or a negative error code on failure; call
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
469 * SDL_GetError() for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
470 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
471 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
472 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
473 extern SDL_DECLSPEC int SDLCALL SDL_hid_close(SDL_hid_device *dev);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
474
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
475 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
476 * Get The Manufacturer String from a HID device.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
477 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
478 * \param dev a device handle returned from SDL_hid_open().
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
479 * \param string a wide string buffer to put the data into.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
480 * \param maxlen the length of the buffer in multiples of wchar_t.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
481 * \returns 0 on success or a negative error code on failure; call
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
482 * SDL_GetError() for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
483 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
484 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
485 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
486 extern SDL_DECLSPEC int SDLCALL SDL_hid_get_manufacturer_string(SDL_hid_device *dev, wchar_t *string, size_t maxlen);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
487
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
488 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
489 * Get The Product String from a HID device.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
490 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
491 * \param dev a device handle returned from SDL_hid_open().
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
492 * \param string a wide string buffer to put the data into.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
493 * \param maxlen the length of the buffer in multiples of wchar_t.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
494 * \returns 0 on success or a negative error code on failure; call
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
495 * SDL_GetError() for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
496 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
497 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
498 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
499 extern SDL_DECLSPEC int SDLCALL SDL_hid_get_product_string(SDL_hid_device *dev, wchar_t *string, size_t maxlen);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
500
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
501 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
502 * Get The Serial Number String from a HID device.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
503 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
504 * \param dev a device handle returned from SDL_hid_open().
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
505 * \param string a wide string buffer to put the data into.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
506 * \param maxlen the length of the buffer in multiples of wchar_t.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
507 * \returns 0 on success or a negative error code on failure; call
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
508 * SDL_GetError() for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
509 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
510 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
511 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
512 extern SDL_DECLSPEC int SDLCALL SDL_hid_get_serial_number_string(SDL_hid_device *dev, wchar_t *string, size_t maxlen);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
513
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
514 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
515 * Get a string from a HID device, based on its string index.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
516 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
517 * \param dev a device handle returned from SDL_hid_open().
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
518 * \param string_index the index of the string to get.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
519 * \param string a wide string buffer to put the data into.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
520 * \param maxlen the length of the buffer in multiples of wchar_t.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
521 * \returns 0 on success or a negative error code on failure; call
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
522 * SDL_GetError() for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
523 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
524 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
525 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
526 extern SDL_DECLSPEC int SDLCALL SDL_hid_get_indexed_string(SDL_hid_device *dev, int string_index, wchar_t *string, size_t maxlen);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
527
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
528 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
529 * Get the device info from a HID device.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
530 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
531 * \param dev a device handle returned from SDL_hid_open().
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
532 * \returns a pointer to the SDL_hid_device_info for this hid_device or NULL
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
533 * on failure; call SDL_GetError() for more information. This struct
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
534 * is valid until the device is closed with SDL_hid_close().
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
535 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
536 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
537 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
538 extern SDL_DECLSPEC SDL_hid_device_info * SDLCALL SDL_hid_get_device_info(SDL_hid_device *dev);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
539
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
540 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
541 * Get a report descriptor from a HID device.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
542 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
543 * User has to provide a preallocated buffer where descriptor will be copied
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
544 * to. The recommended size for a preallocated buffer is 4096 bytes.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
545 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
546 * \param dev a device handle returned from SDL_hid_open().
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
547 * \param buf the buffer to copy descriptor into.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
548 * \param buf_size the size of the buffer in bytes.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
549 * \returns the number of bytes actually copied or -1 on failure; call
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
550 * SDL_GetError() for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
551 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
552 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
553 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
554 extern SDL_DECLSPEC int SDLCALL SDL_hid_get_report_descriptor(SDL_hid_device *dev, unsigned char *buf, size_t buf_size);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
555
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
556 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
557 * Start or stop a BLE scan on iOS and tvOS to pair Steam Controllers.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
558 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
559 * \param active true to start the scan, false to stop the scan.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
560 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
561 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
562 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
563 extern SDL_DECLSPEC void SDLCALL SDL_hid_ble_scan(bool active);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
564
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
565 /* Ends C function definitions when using C++ */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
566 #ifdef __cplusplus
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
567 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
568 #endif
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
569 #include <SDL3/SDL_close_code.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
570
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
571 #endif /* SDL_hidapi_h_ */