summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/config')
-rw-r--r--src/config/parameters/compatibility.c50
-rw-r--r--src/config/parameters/parameters_accessors.c10
2 files changed, 60 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;
+}
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);
+}
+