x52pro-linux  0.2.1
Saitek X52/X52Pro drivers for Linux/Unix
libx52.h
Go to the documentation of this file.
1 /*
2  * Saitek X52 Pro MFD & LED driver
3  *
4  * Copyright (C) 2012-2017 Nirenjan Krishnan (nirenjan@nirenjan.org)
5  *
6  * SPDX-License-Identifier: GPL-2.0-only WITH Classpath-exception-2.0
7  */
8 
20 #ifndef LIBX52_H
21 #define LIBX52_H
22 
23 #include <time.h>
24 #include <stdint.h>
25 
26 #ifdef __cplusplus
27 extern "C" {
28 #endif
29 
34 struct libx52_device;
35 
46 
51 typedef enum {
54 
57 
61 
66 typedef enum {
69 
73 
78 typedef enum {
81 
84 
88 
93 typedef enum {
96 
98  LIBX52_LED_A = 0x02,
99 
101  LIBX52_LED_B = 0x04,
102 
104  LIBX52_LED_D = 0x06,
105 
107  LIBX52_LED_E = 0x08,
108 
111 
114 
117 
120 
123 
126 } libx52_led_id;
127 
135 typedef enum {
138 
144 
147 
150 
154 
162 typedef enum {
165 
168 
171 
174 
177 
180 
183 
186 
189 
192 
195 
198 
201 
204 
207 
210 
213 
215 
225 typedef enum {
228 
230 
279 int libx52_init(libx52_device ** dev);
280 
291 void libx52_exit(libx52_device *dev);
292 
305 int libx52_connect(libx52_device *dev);
306 
319 
358 int libx52_set_text(libx52_device *x52, uint8_t line, const char *text, uint8_t length);
359 
384  libx52_led_id led,
385  libx52_led_state state);
386 
431 int libx52_set_clock(libx52_device *x52, time_t time, int local);
432 
464  libx52_clock_id clock,
465  int offset);
466 
488  libx52_clock_id clock,
489  libx52_clock_format format);
490 
506 int libx52_set_time(libx52_device *x52, uint8_t hour, uint8_t minute);
507 
523 int libx52_set_date(libx52_device *x52, uint8_t dd, uint8_t mm, uint8_t yy);
524 
538 
562 int libx52_set_brightness(libx52_device *x52, uint8_t mfd, uint16_t brightness);
563 
577 int libx52_set_shift(libx52_device *x52, uint8_t state);
578 
591 int libx52_set_blink(libx52_device *x52, uint8_t state);
592 
614 int libx52_update(libx52_device *x52);
615 
631 int libx52_vendor_command(libx52_device *x52, uint16_t index, uint16_t value);
632 
647 
656 const char * libx52_strerror(libx52_error_code error);
657 
660 #ifdef __cplusplus
661 }
662 #endif
663 
664 #endif /* !defined LIBX52_H */
libx52_set_text
int libx52_set_text(libx52_device *x52, uint8_t line, const char *text, uint8_t length)
Set the text on an MFD line.
libx52_strerror
const char * libx52_strerror(libx52_error_code error)
Return a string representation of the error code.
libx52_exit
void libx52_exit(libx52_device *dev)
Exit the library and free up any resources used.
libx52_feature
libx52_feature
Feature support for libx52.
Definition: libx52.h:225
LIBX52_ERROR_INIT_FAILURE
@ LIBX52_ERROR_INIT_FAILURE
Definition: libx52.h:167
LIBX52_ERROR_NOT_FOUND
@ LIBX52_ERROR_NOT_FOUND
Definition: libx52.h:197
libx52_date_format
libx52_date_format
Supported date formats.
Definition: libx52.h:78
LIBX52_LED_E
@ LIBX52_LED_E
Definition: libx52.h:107
LIBX52_DATE_FORMAT_DDMMYY
@ LIBX52_DATE_FORMAT_DDMMYY
Definition: libx52.h:80
LIBX52_CLOCK_1
@ LIBX52_CLOCK_1
Definition: libx52.h:53
LIBX52_ERROR_BUSY
@ LIBX52_ERROR_BUSY
Definition: libx52.h:200
LIBX52_LED_A
@ LIBX52_LED_A
Definition: libx52.h:98
LIBX52_ERROR_OUT_OF_MEMORY
@ LIBX52_ERROR_OUT_OF_MEMORY
Definition: libx52.h:170
libx52_set_clock_timezone
int libx52_set_clock_timezone(libx52_device *x52, libx52_clock_id clock, int offset)
Set the timezone for the secondary and tertiary clocks.
LIBX52_DATE_FORMAT_MMDDYY
@ LIBX52_DATE_FORMAT_MMDDYY
Definition: libx52.h:83
libx52_vendor_command
int libx52_vendor_command(libx52_device *x52, uint16_t index, uint16_t value)
Write a raw vendor control packet.
libx52_set_date
int libx52_set_date(libx52_device *x52, uint8_t dd, uint8_t mm, uint8_t yy)
Set the date.
LIBX52_LED_B
@ LIBX52_LED_B
Definition: libx52.h:101
LIBX52_LED_T2
@ LIBX52_LED_T2
Definition: libx52.h:113
libx52_led_id
libx52_led_id
Supported LED identifiers.
Definition: libx52.h:93
libx52_set_clock_format
int libx52_set_clock_format(libx52_device *x52, libx52_clock_id clock, libx52_clock_format format)
Set whether the clock is displayed in 12 hour or 24 hour format.
LIBX52_LED_STATE_ON
@ LIBX52_LED_STATE_ON
Definition: libx52.h:143
LIBX52_ERROR_OVERFLOW
@ LIBX52_ERROR_OVERFLOW
Definition: libx52.h:206
LIBX52_LED_STATE_GREEN
@ LIBX52_LED_STATE_GREEN
Definition: libx52.h:152
LIBX52_LED_D
@ LIBX52_LED_D
Definition: libx52.h:104
libx52_update
int libx52_update(libx52_device *x52)
Update the X52.
LIBX52_ERROR_OUT_OF_RANGE
@ LIBX52_ERROR_OUT_OF_RANGE
Definition: libx52.h:182
libx52_set_time
int libx52_set_time(libx52_device *x52, uint8_t hour, uint8_t minute)
Set the hour and minute on clock 1.
libx52_set_shift
int libx52_set_shift(libx52_device *x52, uint8_t state)
Set the state of the shift indicator.
libx52_led_state
libx52_led_state
Supported LED states.
Definition: libx52.h:135
LIBX52_LED_T3
@ LIBX52_LED_T3
Definition: libx52.h:116
libx52_device
struct libx52_device libx52_device
Device context structure used by libx52.
Definition: libx52.h:45
libx52_error_code
libx52_error_code
LibX52 Error codes.
Definition: libx52.h:162
LIBX52_LED_THROTTLE
@ LIBX52_LED_THROTTLE
Definition: libx52.h:125
LIBX52_CLOCK_2
@ LIBX52_CLOCK_2
Definition: libx52.h:56
libx52_set_date_format
int libx52_set_date_format(libx52_device *x52, libx52_date_format format)
Set the date format for the MFD date display.
LIBX52_CLOCK_3
@ LIBX52_CLOCK_3
Definition: libx52.h:59
libx52_connect
int libx52_connect(libx52_device *dev)
Connect to the X52 device.
LIBX52_LED_T1
@ LIBX52_LED_T1
Definition: libx52.h:110
LIBX52_SUCCESS
@ LIBX52_SUCCESS
Definition: libx52.h:164
libx52_check_feature
int libx52_check_feature(libx52_device *x52, libx52_feature feature)
Check if the device supports the given feature.
LIBX52_ERROR_PIPE
@ LIBX52_ERROR_PIPE
Definition: libx52.h:209
LIBX52_CLOCK_FORMAT_24HR
@ LIBX52_CLOCK_FORMAT_24HR
Definition: libx52.h:71
libx52_set_clock
int libx52_set_clock(libx52_device *x52, time_t time, int local)
Set the clock.
LIBX52_LED_STATE_OFF
@ LIBX52_LED_STATE_OFF
Definition: libx52.h:137
LIBX52_LED_FIRE
@ LIBX52_LED_FIRE
Definition: libx52.h:95
LIBX52_ERROR_PERM
@ LIBX52_ERROR_PERM
Definition: libx52.h:191
libx52_set_blink
int libx52_set_blink(libx52_device *x52, uint8_t state)
Set the blinking state.
LIBX52_CLOCK_FORMAT_12HR
@ LIBX52_CLOCK_FORMAT_12HR
Definition: libx52.h:68
LIBX52_ERROR_TIMEOUT
@ LIBX52_ERROR_TIMEOUT
Definition: libx52.h:203
LIBX52_DATE_FORMAT_YYMMDD
@ LIBX52_DATE_FORMAT_YYMMDD
Definition: libx52.h:86
LIBX52_ERROR_INTERRUPTED
@ LIBX52_ERROR_INTERRUPTED
Definition: libx52.h:212
LIBX52_ERROR_INVALID_PARAM
@ LIBX52_ERROR_INVALID_PARAM
Definition: libx52.h:173
libx52_init
int libx52_init(libx52_device **dev)
Initialize the X52 library.
LIBX52_LED_CLUTCH
@ LIBX52_LED_CLUTCH
Definition: libx52.h:122
LIBX52_LED_STATE_RED
@ LIBX52_LED_STATE_RED
Definition: libx52.h:146
LIBX52_LED_STATE_AMBER
@ LIBX52_LED_STATE_AMBER
Definition: libx52.h:149
LIBX52_LED_POV
@ LIBX52_LED_POV
Definition: libx52.h:119
LIBX52_ERROR_NOT_SUPPORTED
@ LIBX52_ERROR_NOT_SUPPORTED
Definition: libx52.h:176
LIBX52_ERROR_TRY_AGAIN
@ LIBX52_ERROR_TRY_AGAIN
Definition: libx52.h:179
LIBX52_FEATURE_LED
@ LIBX52_FEATURE_LED
Definition: libx52.h:227
LIBX52_ERROR_IO
@ LIBX52_ERROR_IO
Definition: libx52.h:188
libx52_set_brightness
int libx52_set_brightness(libx52_device *x52, uint8_t mfd, uint16_t brightness)
Set the MFD or LED brightness.
LIBX52_ERROR_USB_FAILURE
@ LIBX52_ERROR_USB_FAILURE
Definition: libx52.h:185
libx52_clock_id
libx52_clock_id
List of supported clocks on the MFD.
Definition: libx52.h:51
libx52_clock_format
libx52_clock_format
Supported clock formats.
Definition: libx52.h:66
libx52_set_led_state
int libx52_set_led_state(libx52_device *x52, libx52_led_id led, libx52_led_state state)
Set the LED state.
LIBX52_ERROR_NO_DEVICE
@ LIBX52_ERROR_NO_DEVICE
Definition: libx52.h:194
libx52_disconnect
int libx52_disconnect(libx52_device *dev)
Disconnect from the X52 device.