From 69a8c9eba04eb1d955c5c0ebb1df0cd4ea217930 Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Sat, 6 Jun 2015 14:03:36 +0200 Subject: udp tracker: allow for adding +-90/+-180 to each axis Follows similar code in freepie-udp tracker. Helps with centering on inertial devices. --- ftnoir_tracker_udp/ftnoir_ftnclientcontrols.ui | 178 ++++++++++++++++++++--- ftnoir_tracker_udp/ftnoir_tracker_udp.cpp | 24 ++- ftnoir_tracker_udp/ftnoir_tracker_udp.h | 6 +- ftnoir_tracker_udp/ftnoir_tracker_udp_dialog.cpp | 3 + 4 files changed, 189 insertions(+), 22 deletions(-) diff --git a/ftnoir_tracker_udp/ftnoir_ftnclientcontrols.ui b/ftnoir_tracker_udp/ftnoir_ftnclientcontrols.ui index 4a5624cf..cb9362ca 100644 --- a/ftnoir_tracker_udp/ftnoir_ftnclientcontrols.ui +++ b/ftnoir_tracker_udp/ftnoir_ftnclientcontrols.ui @@ -9,8 +9,8 @@ 0 0 - 216 - 71 + 195 + 224 @@ -26,25 +26,170 @@ false - - - - - Port + + + + + + 0 + 0 + + + + + + + + + Port + + + + + + + 0 + + + 65535 + + + + - - - - 0 - - - 65535 + + + + Add to axis + + + + + yaw + + + + + + + + 0 + + + + + +90 + + + + + -90 + + + + + +180 + + + + + -180 + + + + + + + + pitch + + + + + + + roll + + + + + + + + 0 + + + + + +90 + + + + + -90 + + + + + +180 + + + + + -180 + + + + + + + + + 0 + + + + + +90 + + + + + -90 + + + + + +180 + + + + + -180 + + + + + - + + + + Qt::Vertical + + + + 20 + 40 + + + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok @@ -53,9 +198,6 @@ - - spinPortNumber - diff --git a/ftnoir_tracker_udp/ftnoir_tracker_udp.cpp b/ftnoir_tracker_udp/ftnoir_tracker_udp.cpp index c900fb67..ab8c8c86 100644 --- a/ftnoir_tracker_udp/ftnoir_tracker_udp.cpp +++ b/ftnoir_tracker_udp/ftnoir_tracker_udp.cpp @@ -16,9 +16,11 @@ void FTNoIR_Tracker::run() { for (;;) { if (should_quit) break; - QMutexLocker foo(&mutex); - while (sock.hasPendingDatagrams()) { - sock.readDatagram((char * ) last_recv_pose, sizeof(double[6])); + { + QMutexLocker foo(&mutex); + while (sock.hasPendingDatagrams()) { + sock.readDatagram((char * ) last_recv_pose, sizeof(double[6])); + } } msleep(1); } @@ -34,6 +36,22 @@ void FTNoIR_Tracker::data(double *data) QMutexLocker foo(&mutex); for (int i = 0; i < 6; i++) data[i] = last_recv_pose[i]; + + int values[] = { + 0, + 90, + -90, + 180, + -180, + }; + int indices[] = { + s.add_yaw, + s.add_pitch, + s.add_roll, + }; + + for (int i = 0; i < 3; i++) + data[Yaw + i] += values[indices[i]]; } extern "C" OPENTRACK_EXPORT ITracker* GetConstructor() diff --git a/ftnoir_tracker_udp/ftnoir_tracker_udp.h b/ftnoir_tracker_udp/ftnoir_tracker_udp.h index 51b5d9ab..160e4352 100644 --- a/ftnoir_tracker_udp/ftnoir_tracker_udp.h +++ b/ftnoir_tracker_udp/ftnoir_tracker_udp.h @@ -9,9 +9,13 @@ using namespace options; struct settings : opts { value port; + value add_yaw, add_pitch, add_roll; settings() : opts("udp-tracker"), - port(b, "port", 4242) + port(b, "port", 4242), + add_yaw(b, "add-yaw", 0), + add_pitch(b, "add-pitch", 0), + add_roll(b, "add-roll", 0) {} }; diff --git a/ftnoir_tracker_udp/ftnoir_tracker_udp_dialog.cpp b/ftnoir_tracker_udp/ftnoir_tracker_udp_dialog.cpp index eb5abcd8..bab88db0 100644 --- a/ftnoir_tracker_udp/ftnoir_tracker_udp_dialog.cpp +++ b/ftnoir_tracker_udp/ftnoir_tracker_udp_dialog.cpp @@ -9,6 +9,9 @@ TrackerControls::TrackerControls() connect(ui.buttonBox, SIGNAL(rejected()), this, SLOT(doCancel())); tie_setting(s.port, ui.spinPortNumber); + tie_setting(s.add_yaw, ui.add_yaw); + tie_setting(s.add_pitch, ui.add_pitch); + tie_setting(s.add_roll, ui.add_roll); } void TrackerControls::doOK() { -- cgit v1.2.3