summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathanael Sensfelder <SpamShield0@MultiAgentSystems.org>2020-01-03 19:59:43 +0100
committerNathanael Sensfelder <SpamShield0@MultiAgentSystems.org>2020-01-03 19:59:43 +0100
commit0c68e544b113f0493b9b80511c26c1e4584bd1e7 (patch)
tree37bd18d5abf5d8b347fed778c5479ef1c142a8a6 /src/config/parameters/compatibility.c
parenta4841776b6e1751232d46482731836a7c17b896f (diff)
...
Diffstat (limited to 'src/config/parameters/compatibility.c')
-rw-r--r--src/config/parameters/compatibility.c50
1 files changed, 50 insertions, 0 deletions
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 <libevdev/libevdev.h>
+
+/**** RELABSD *****************************************************************/
+#include <relabsd/debug.h>
+
+#include <relabsd/config/parameters.h>
+
+#include <relabsd/device/axis.h>
+
+/******************************************************************************/
+/**** 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;
+}