From 0c68e544b113f0493b9b80511c26c1e4584bd1e7 Mon Sep 17 00:00:00 2001 From: Nathanael Sensfelder Date: Fri, 3 Jan 2020 19:59:43 +0100 Subject: ... --- src/config/parameters/compatibility.c | 50 ++++++++++++++++++++++++++++ src/config/parameters/parameters_accessors.c | 10 ++++++ 2 files changed, 60 insertions(+) create mode 100644 src/config/parameters/compatibility.c (limited to 'src/config') diff --git a/src/config/parameters/compatibility.c b/src/config/parameters/compatibility.c new file mode 100644 index 0000000..cc65c7f --- /dev/null +++ b/src/config/parameters/compatibility.c @@ -0,0 +1,50 @@ +/**** LIBEVDEV ****************************************************************/ +#include + +/**** RELABSD *****************************************************************/ +#include + +#include + +#include + +/******************************************************************************/ +/**** LOCAL FUNCTIONS *********************************************************/ +/******************************************************************************/ + +/******************************************************************************/ +/**** EXPORTED FUNCTIONS ******************************************************/ +/******************************************************************************/ +int relabsd_parameters_are_compatible_with +( + const struct libevdev * const restrict libevdev, + const struct relabsd_parameters parameters [const restrict static 1] +) +{ + int i, device_is_valid; + unsigned int rel_code; + + device_is_valid = 1; + + for (i = 0; i < RELABSD_AXIS_VALID_AXES_COUNT; ++i) + { + if (relabsd_axis_is_enabled(parameters->axes + i)) + { + rel_code = relabsd_axis_name_to_evdev_rel((enum relabsd_axis_name) i); + + if (!libevdev_has_event_code(libevdev, EV_REL, rel_code)) + { + RELABSD_ERROR + ( + "Input device has no relative %s axis, yet the configuration " + "file asks to convert it.", + relabsd_axis_name_to_string((enum relabsd_axis_name) i) + ); + + device_is_valid = 0; + } + } + } + + return device_is_valid; +} diff --git a/src/config/parameters/parameters_accessors.c b/src/config/parameters/parameters_accessors.c index e1fd805..bd6624c 100644 --- a/src/config/parameters/parameters_accessors.c +++ b/src/config/parameters/parameters_accessors.c @@ -62,3 +62,13 @@ enum relabsd_parameters_run_mode relabsd_parameters_get_execution_mode { return parameters->mode; } + +struct relabsd_axis * relabsd_parameters_get_axis +( + const enum relabsd_axis_name i, + const struct relabsd_parameters parameters [const restrict static 1] +) +{ + return (parameters->axes + i); +} + -- cgit v1.2.3-70-g09d2