x52pro-linux  0.2.1
Saitek X52/X52Pro drivers for Linux/Unix
libx52io.h
Go to the documentation of this file.
1 /*
2  * Saitek X52 IO driver
3  *
4  * Copyright (C) 2012-2020 Nirenjan Krishnan (nirenjan@nirenjan.org)
5  *
6  * SPDX-License-Identifier: GPL-2.0-only WITH Classpath-exception-2.0
7  */
8 
20 #ifndef LIBX52IO_H
21 #define LIBX52IO_H
22 
23 #include <stdint.h>
24 #include <stdbool.h>
25 
26 #ifdef __cplusplus
27 extern "C" {
28 #endif
29 
42 struct libx52io_context;
43 
52 
58 typedef enum {
61 
64 
67 
70 
73 
76 
80 
84 typedef enum {
87 
90 
93 
96 
99 
102 
105 
108 
111 
114 
117 
118  LIBX52IO_AXIS_MAX
119 } libx52io_axis;
120 
124 typedef enum {
127 
130 
133 
136 
139 
142 
145 
148 
151 
154 
157 
160 
163 
166 
169 
172 
175 
178 
181 
184 
187 
190 
193 
196 
199 
202 
205 
208 
211 
214 
217 
220 
223 
226 
229 
232 
235 
238 
241 
242  LIBX52IO_BUTTON_MAX
244 
252  int32_t axis[LIBX52IO_AXIS_MAX];
253 
255  bool button[LIBX52IO_BUTTON_MAX];
256 
258  uint8_t mode;
259 
261  uint8_t hat;
262 };
263 
269 typedef struct libx52io_report libx52io_report;
270 
297 
309 
326 
340 
360 int libx52io_read_timeout(libx52io_context *ctx, libx52io_report *report, int timeout);
361 
379 
397 int libx52io_get_axis_range(libx52io_context *ctx, libx52io_axis axis, int32_t *min, int32_t *max);
398 
406 const char * libx52io_strerror(libx52io_error_code code);
407 
417 
427 
436 
445 
454 
467 
480 
493 
496 #ifdef __cplusplus
497 }
498 #endif
499 
500 #endif // !defined LIBX52IO_H
LIBX52IO_ERROR_NO_DEVICE
@ LIBX52IO_ERROR_NO_DEVICE
Definition: libx52io.h:66
LIBX52IO_BTN_T1_DN
@ LIBX52IO_BTN_T1_DN
Definition: libx52io.h:156
libx52io_axis_to_str
const char * libx52io_axis_to_str(libx52io_axis axis)
Get the string representation of an axis.
LIBX52IO_BTN_POV_2_S
@ LIBX52IO_BTN_POV_2_S
Definition: libx52io.h:189
libx52io_init
int libx52io_init(libx52io_context **ctx)
Initialize the IO library.
LIBX52IO_AXIS_Y
@ LIBX52IO_AXIS_Y
Definition: libx52io.h:89
LIBX52IO_AXIS_THUMBX
@ LIBX52IO_AXIS_THUMBX
Definition: libx52io.h:107
libx52io_axis
libx52io_axis
X52 Axis definitions.
Definition: libx52io.h:84
LIBX52IO_BTN_MODE_1
@ LIBX52IO_BTN_MODE_1
Definition: libx52io.h:234
LIBX52IO_BTN_E
@ LIBX52IO_BTN_E
Definition: libx52io.h:150
LIBX52IO_AXIS_RZ
@ LIBX52IO_AXIS_RZ
Definition: libx52io.h:92
LIBX52IO_BTN_MODE_2
@ LIBX52IO_BTN_MODE_2
Definition: libx52io.h:237
LIBX52IO_BTN_B
@ LIBX52IO_BTN_B
Definition: libx52io.h:141
LIBX52IO_AXIS_HATY
@ LIBX52IO_AXIS_HATY
Definition: libx52io.h:116
libx52io_get_manufacturer_string
const char * libx52io_get_manufacturer_string(libx52io_context *ctx)
Get the manufacturer string of the connected X52 device.
LIBX52IO_BTN_RESET
@ LIBX52IO_BTN_RESET
Definition: libx52io.h:216
LIBX52IO_BTN_A
@ LIBX52IO_BTN_A
Definition: libx52io.h:138
LIBX52IO_ERROR_IO
@ LIBX52IO_ERROR_IO
Definition: libx52io.h:75
LIBX52IO_AXIS_SLIDER
@ LIBX52IO_AXIS_SLIDER
Definition: libx52io.h:104
LIBX52IO_BTN_MOUSE_PRIMARY
@ LIBX52IO_BTN_MOUSE_PRIMARY
Definition: libx52io.h:198
LIBX52IO_BTN_POV_2_E
@ LIBX52IO_BTN_POV_2_E
Definition: libx52io.h:186
libx52io_get_serial_number_string
const char * libx52io_get_serial_number_string(libx52io_context *ctx)
Get the serial number of the connected X52 device.
LIBX52IO_ERROR_INVALID
@ LIBX52IO_ERROR_INVALID
Definition: libx52io.h:69
libx52io_get_vendor_id
uint16_t libx52io_get_vendor_id(libx52io_context *ctx)
Get the vendor ID of the connected X52 device.
LIBX52IO_BTN_FIRE
@ LIBX52IO_BTN_FIRE
Definition: libx52io.h:132
libx52io_strerror
const char * libx52io_strerror(libx52io_error_code code)
Get the string representation of an error code.
libx52io_button
libx52io_button
X52 Button definitions.
Definition: libx52io.h:124
libx52io_read
int libx52io_read(libx52io_context *ctx, libx52io_report *report)
Read and parse a HID report.
LIBX52IO_BTN_MOUSE_SCROLL_UP
@ LIBX52IO_BTN_MOUSE_SCROLL_UP
Definition: libx52io.h:204
LIBX52IO_AXIS_HATX
@ LIBX52IO_AXIS_HATX
Definition: libx52io.h:113
LIBX52IO_BTN_PINKY
@ LIBX52IO_BTN_PINKY
Definition: libx52io.h:135
LIBX52IO_BTN_POV_1_W
@ LIBX52IO_BTN_POV_1_W
Definition: libx52io.h:180
LIBX52IO_BTN_T1_UP
@ LIBX52IO_BTN_T1_UP
Definition: libx52io.h:153
LIBX52IO_BTN_DN
@ LIBX52IO_BTN_DN
Definition: libx52io.h:228
libx52io_read_timeout
int libx52io_read_timeout(libx52io_context *ctx, libx52io_report *report, int timeout)
Read and parse a HID report.
LIBX52IO_BTN_TRIGGER_2
@ LIBX52IO_BTN_TRIGGER_2
Definition: libx52io.h:129
libx52io_button_to_str
const char * libx52io_button_to_str(libx52io_button button)
Get the string representation of a button.
LIBX52IO_ERROR_CONN
@ LIBX52IO_ERROR_CONN
Definition: libx52io.h:72
LIBX52IO_BTN_TRIGGER
@ LIBX52IO_BTN_TRIGGER
Definition: libx52io.h:126
LIBX52IO_BTN_UP
@ LIBX52IO_BTN_UP
Definition: libx52io.h:225
LIBX52IO_BTN_MOUSE_SECONDARY
@ LIBX52IO_BTN_MOUSE_SECONDARY
Definition: libx52io.h:201
libx52io_get_product_string
const char * libx52io_get_product_string(libx52io_context *ctx)
Get the product string of the connected X52 device.
libx52io_report
X52 HID Report.
Definition: libx52io.h:250
LIBX52IO_BTN_CLUTCH
@ LIBX52IO_BTN_CLUTCH
Definition: libx52io.h:195
libx52io_context
struct libx52io_context libx52io_context
Device context structure used by libx52io.
Definition: libx52io.h:51
LIBX52IO_BTN_MODE_3
@ LIBX52IO_BTN_MODE_3
Definition: libx52io.h:240
LIBX52IO_SUCCESS
@ LIBX52IO_SUCCESS
Definition: libx52io.h:60
LIBX52IO_ERROR_TIMEOUT
@ LIBX52IO_ERROR_TIMEOUT
Definition: libx52io.h:78
libx52io_open
int libx52io_open(libx52io_context *ctx)
Open a connection to a supported joystick.
libx52io_report::hat
uint8_t hat
Definition: libx52io.h:261
LIBX52IO_BTN_POV_2_N
@ LIBX52IO_BTN_POV_2_N
Definition: libx52io.h:183
LIBX52IO_ERROR_INIT_FAILURE
@ LIBX52IO_ERROR_INIT_FAILURE
Definition: libx52io.h:63
libx52io_exit
void libx52io_exit(libx52io_context *ctx)
Exit the library and free up any resources used.
LIBX52IO_BTN_START_STOP
@ LIBX52IO_BTN_START_STOP
Definition: libx52io.h:213
LIBX52IO_BTN_PG_UP
@ LIBX52IO_BTN_PG_UP
Definition: libx52io.h:219
LIBX52IO_BTN_MOUSE_SCROLL_DN
@ LIBX52IO_BTN_MOUSE_SCROLL_DN
Definition: libx52io.h:207
libx52io_error_code
libx52io_error_code
libx52 IO error codes
Definition: libx52io.h:58
LIBX52IO_BTN_FUNCTION
@ LIBX52IO_BTN_FUNCTION
Definition: libx52io.h:210
libx52io_report::axis
int32_t axis[LIBX52IO_AXIS_MAX]
Definition: libx52io.h:252
libx52io_get_axis_range
int libx52io_get_axis_range(libx52io_context *ctx, libx52io_axis axis, int32_t *min, int32_t *max)
Retrieve the range of an axis.
LIBX52IO_AXIS_Z
@ LIBX52IO_AXIS_Z
Definition: libx52io.h:95
LIBX52IO_BTN_T3_UP
@ LIBX52IO_BTN_T3_UP
Definition: libx52io.h:165
LIBX52IO_BTN_PG_DN
@ LIBX52IO_BTN_PG_DN
Definition: libx52io.h:222
libx52io_report::mode
uint8_t mode
Definition: libx52io.h:258
LIBX52IO_AXIS_X
@ LIBX52IO_AXIS_X
Definition: libx52io.h:86
libx52io_close
int libx52io_close(libx52io_context *ctx)
Close an existing connection to a supported joystick.
LIBX52IO_BTN_POV_1_S
@ LIBX52IO_BTN_POV_1_S
Definition: libx52io.h:177
LIBX52IO_AXIS_THUMBY
@ LIBX52IO_AXIS_THUMBY
Definition: libx52io.h:110
LIBX52IO_AXIS_RY
@ LIBX52IO_AXIS_RY
Definition: libx52io.h:101
libx52io_report::button
bool button[LIBX52IO_BUTTON_MAX]
Definition: libx52io.h:255
LIBX52IO_BTN_POV_2_W
@ LIBX52IO_BTN_POV_2_W
Definition: libx52io.h:192
LIBX52IO_BTN_T2_DN
@ LIBX52IO_BTN_T2_DN
Definition: libx52io.h:162
LIBX52IO_BTN_D
@ LIBX52IO_BTN_D
Definition: libx52io.h:147
LIBX52IO_AXIS_RX
@ LIBX52IO_AXIS_RX
Definition: libx52io.h:98
LIBX52IO_BTN_T3_DN
@ LIBX52IO_BTN_T3_DN
Definition: libx52io.h:168
LIBX52IO_BTN_C
@ LIBX52IO_BTN_C
Definition: libx52io.h:144
LIBX52IO_BTN_T2_UP
@ LIBX52IO_BTN_T2_UP
Definition: libx52io.h:159
LIBX52IO_BTN_POV_1_N
@ LIBX52IO_BTN_POV_1_N
Definition: libx52io.h:171
LIBX52IO_BTN_POV_1_E
@ LIBX52IO_BTN_POV_1_E
Definition: libx52io.h:174
LIBX52IO_BTN_SELECT
@ LIBX52IO_BTN_SELECT
Definition: libx52io.h:231
libx52io_get_product_id
uint16_t libx52io_get_product_id(libx52io_context *ctx)
Get the product ID of the connected X52 device.
libx52io_get_device_version
uint16_t libx52io_get_device_version(libx52io_context *ctx)
Get the device version of the connected X52 device.