summaryrefslogtreecommitdiffhomepage
path: root/ftnoir_protocol_libevdev/ftnoir_protocol_libevdev.cpp
diff options
context:
space:
mode:
authorStanislaw Halik <sthalik@misaki.pl>2015-10-30 07:37:41 +0100
committerStanislaw Halik <sthalik@misaki.pl>2015-10-30 08:39:32 +0100
commitaa066bdd4622d4f6824fee864f6be6806813f04d (patch)
tree3df328b8b364cba2373a85827191b259bd78d546 /ftnoir_protocol_libevdev/ftnoir_protocol_libevdev.cpp
parentd6a54431d178632a2bf466c9904f74abd143afe6 (diff)
move to subdirectory-based build system
Closes #224
Diffstat (limited to 'ftnoir_protocol_libevdev/ftnoir_protocol_libevdev.cpp')
-rw-r--r--ftnoir_protocol_libevdev/ftnoir_protocol_libevdev.cpp97
1 files changed, 0 insertions, 97 deletions
diff --git a/ftnoir_protocol_libevdev/ftnoir_protocol_libevdev.cpp b/ftnoir_protocol_libevdev/ftnoir_protocol_libevdev.cpp
deleted file mode 100644
index 96805b39..00000000
--- a/ftnoir_protocol_libevdev/ftnoir_protocol_libevdev.cpp
+++ /dev/null
@@ -1,97 +0,0 @@
-#include "ftnoir_protocol_libevdev.h"
-#include "opentrack/plugin-api.hpp"
-#include <cstdio>
-#include <algorithm>
-
-#include <sys/types.h>
-#include <sys/stat.h>
-
-#define CHECK_LIBEVDEV(expr) if ((error = (expr)) != 0) goto error;
-
-static const int max_input = 65535;
-static const int mid_input = 32767;
-static const int min_input = 0;
-
-FTNoIR_Protocol::FTNoIR_Protocol() : dev(NULL), uidev(NULL)
-{
- int error = 0;
-
- dev = libevdev_new();
-
- if (!dev)
- goto error;
-
- CHECK_LIBEVDEV(libevdev_enable_property(dev, INPUT_PROP_BUTTONPAD));
-
- libevdev_set_name(dev, "opentrack headpose");
-
- struct input_absinfo absinfo;
-
- absinfo.minimum = min_input;
- absinfo.maximum = max_input;
- absinfo.resolution = 1;
- absinfo.value = mid_input;
- absinfo.flat = 1;
- absinfo.fuzz = 0;
-
- CHECK_LIBEVDEV(libevdev_enable_event_type(dev, EV_ABS));
- CHECK_LIBEVDEV(libevdev_enable_event_code(dev, EV_ABS, ABS_X, &absinfo));
- CHECK_LIBEVDEV(libevdev_enable_event_code(dev, EV_ABS, ABS_Y, &absinfo));
- CHECK_LIBEVDEV(libevdev_enable_event_code(dev, EV_ABS, ABS_Z, &absinfo));
- CHECK_LIBEVDEV(libevdev_enable_event_code(dev, EV_ABS, ABS_RX, &absinfo));
- CHECK_LIBEVDEV(libevdev_enable_event_code(dev, EV_ABS, ABS_RY, &absinfo));
- CHECK_LIBEVDEV(libevdev_enable_event_code(dev, EV_ABS, ABS_RZ, &absinfo));
-
- /* do not remove next 3 lines or udev scripts won't assign 0664 permissions -sh */
- CHECK_LIBEVDEV(libevdev_enable_event_type(dev, EV_KEY));
- CHECK_LIBEVDEV(libevdev_enable_event_code(dev, EV_KEY, BTN_JOYSTICK, NULL));
- CHECK_LIBEVDEV(libevdev_enable_event_code(dev, EV_KEY, BTN_TRIGGER, NULL));
-
- CHECK_LIBEVDEV(libevdev_uinput_create_from_device(dev, LIBEVDEV_UINPUT_OPEN_MANAGED, &uidev));
-
- return;
-error:
- if (uidev)
- libevdev_uinput_destroy(uidev);
- if (dev)
- libevdev_free(dev);
- if (error)
- fprintf(stderr, "libevdev error: %d\n", error);
- uidev = NULL;
- dev = NULL;
-}
-
-FTNoIR_Protocol::~FTNoIR_Protocol()
-{
- if (uidev)
- libevdev_uinput_destroy(uidev);
- if (dev)
- libevdev_free(dev);
-}
-
-void FTNoIR_Protocol::pose(const double* headpose) {
- static const int axes[] = {
- /* translation goes first */
- ABS_X, ABS_Y, ABS_Z, ABS_RX, ABS_RY, ABS_RZ
- };
-
- static const int max_value[] = {
- 100,
- 100,
- 100,
- 180,
- 90,
- 180
- };
-
- for (int i = 0; i < 6; i++)
- {
- int value = headpose[i] * mid_input / max_value[i] + mid_input;
- int normalized = std::max(std::min(max_input, value), min_input);
- (void) libevdev_uinput_write_event(uidev, EV_ABS, axes[i], normalized);
- }
-
- (void) libevdev_uinput_write_event(uidev, EV_SYN, SYN_REPORT, 0);
-}
-
-OPENTRACK_DECLARE_PROTOCOL(FTNoIR_Protocol, LibevdevControls, FTNoIR_ProtocolDll)