summaryrefslogtreecommitdiffhomepage
path: root/tracker-freepie-udp
diff options
context:
space:
mode:
Diffstat (limited to 'tracker-freepie-udp')
-rw-r--r--tracker-freepie-udp/freepie-udp-controls.ui2
-rw-r--r--tracker-freepie-udp/ftnoir_tracker_freepie-udp.cpp69
-rw-r--r--tracker-freepie-udp/ftnoir_tracker_freepie-udp.h8
-rw-r--r--tracker-freepie-udp/lang/de_DE.ts86
-rw-r--r--tracker-freepie-udp/lang/nl_NL.ts35
-rw-r--r--tracker-freepie-udp/lang/ru_RU.ts35
-rw-r--r--tracker-freepie-udp/lang/stub.ts35
-rw-r--r--tracker-freepie-udp/lang/zh_CN.ts86
8 files changed, 215 insertions, 141 deletions
diff --git a/tracker-freepie-udp/freepie-udp-controls.ui b/tracker-freepie-udp/freepie-udp-controls.ui
index c59b9781..e818acb4 100644
--- a/tracker-freepie-udp/freepie-udp-controls.ui
+++ b/tracker-freepie-udp/freepie-udp-controls.ui
@@ -18,7 +18,7 @@
</property>
<property name="windowIcon">
<iconset>
- <normaloff>../gui/images/facetracknoir.png</normaloff>../gui/images/facetracknoir.png</iconset>
+ <normaloff>../gui/images/opentrack.png</normaloff>../gui/images/opentrack.png</iconset>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
diff --git a/tracker-freepie-udp/ftnoir_tracker_freepie-udp.cpp b/tracker-freepie-udp/ftnoir_tracker_freepie-udp.cpp
index 4c5d14ef..3950af0c 100644
--- a/tracker-freepie-udp/ftnoir_tracker_freepie-udp.cpp
+++ b/tracker-freepie-udp/ftnoir_tracker_freepie-udp.cpp
@@ -1,31 +1,21 @@
#include "ftnoir_tracker_freepie-udp.h"
#include "api/plugin-api.hpp"
+#include "compat/math.hpp"
#include <cinttypes>
#include <algorithm>
#include <cmath>
-
-tracker_freepie::tracker_freepie() : pose { 0,0,0, 0,0,0 }, should_quit(false)
+tracker_freepie::tracker_freepie() : pose { 0,0,0, 0,0,0 }
{
}
tracker_freepie::~tracker_freepie()
{
- should_quit = true;
+ requestInterruption();
wait();
}
-template<typename t>
-static const t bound(t datum, t least, t max)
-{
- if (datum < least)
- return least;
- if (datum > max)
- return max;
- return datum;
-}
-
void tracker_freepie::run() {
#pragma pack(push, 1)
struct {
@@ -34,7 +24,11 @@ void tracker_freepie::run() {
float fl[12];
} data;
#pragma pack(pop)
- enum F {
+
+ static_assert(sizeof(data) == 50);
+
+ enum F
+ {
flag_Raw = 1 << 0,
flag_Orient = 1 << 1,
Mask = flag_Raw | flag_Orient
@@ -42,19 +36,22 @@ void tracker_freepie::run() {
sock.bind(QHostAddress::Any, (unsigned short) s.port, QUdpSocket::ShareAddress | QUdpSocket::ReuseAddressHint);
- while (!should_quit) {
- int order[] = {
- bound<int>(s.idx_x, 0, 2),
- bound<int>(s.idx_y, 0, 2),
- bound<int>(s.idx_z, 0, 2)
+ while (!isInterruptionRequested())
+ {
+ int order[] =
+ {
+ std::clamp(*s.idx_x, 0, 2),
+ std::clamp(*s.idx_y, 0, 2),
+ std::clamp(*s.idx_z, 0, 2)
};
+
double orient[3] = {0, 0, 0};
bool filled = false;
while (sock.hasPendingDatagrams())
{
using t = decltype(data);
- t tmp {0,0, {0,0,0, 0,0,0, 0,0,0, 0,0,0}};
+ t tmp {};
(void) sock.readDatagram(reinterpret_cast<char*>(&tmp), sizeof(data));
int flags = tmp.flags & F::Mask;
@@ -66,12 +63,13 @@ void tracker_freepie::run() {
continue;
case flag_Raw | flag_Orient:
for (int i = 0; i < 3; i++)
- orient[i] = tmp.fl[i+9];
+ orient[i] = (double)tmp.fl[i+9];
break;
case flag_Orient:
for (int i = 0; i < 3; i++)
- orient[i] = tmp.fl[i];
+ orient[i] = (double)tmp.fl[i];
break;
+ default: goto fail;
}
filled = true;
@@ -80,33 +78,42 @@ void tracker_freepie::run() {
if (filled)
{
- static const int add_cbx[] = {
+ constexpr int add_cbx[] =
+ {
0,
90,
-90,
180,
-180,
};
- int indices[] = { s.add_yaw, s.add_pitch, s.add_roll };
+
+ int add_indices[] = { s.add_yaw, s.add_pitch, s.add_roll };
+
QMutexLocker foo(&mtx);
- static constexpr double r2d = 180 / M_PI;
+
+ constexpr double r2d = 180 / M_PI;
+
for (int i = 0; i < 3; i++)
{
- int val = 0;
- int idx = indices[order[i]];
- if (idx >= 0 && idx < (int)(sizeof(add_cbx) / sizeof(*add_cbx)))
- val = add_cbx[idx];
- pose[Yaw + i] = r2d * orient[order[i]] + val;
+ const int axis = order[i];
+ const int add_idx = add_indices[i];
+ int add = 0;
+ if (add_idx >= 0 && add_idx < (int)std::size(add_cbx))
+ add = add_cbx[add_idx];
+ pose[Yaw + i] = r2d * orient[axis] + add;
}
}
+fail:
usleep(4000);
}
}
-void tracker_freepie::start_tracker(QFrame*)
+module_status tracker_freepie::start_tracker(QFrame*)
{
start();
sock.moveToThread(this);
+
+ return status_ok();
}
void tracker_freepie::data(double *data)
diff --git a/tracker-freepie-udp/ftnoir_tracker_freepie-udp.h b/tracker-freepie-udp/ftnoir_tracker_freepie-udp.h
index 5a98e194..522f3b80 100644
--- a/tracker-freepie-udp/ftnoir_tracker_freepie-udp.h
+++ b/tracker-freepie-udp/ftnoir_tracker_freepie-udp.h
@@ -33,7 +33,7 @@ class tracker_freepie : public ITracker, private QThread
public:
tracker_freepie();
~tracker_freepie() override;
- void start_tracker(QFrame *) override;
+ module_status start_tracker(QFrame *) override;
void data(double *data) override;
protected:
void run() override;
@@ -42,7 +42,6 @@ private:
QUdpSocket sock;
settings s;
QMutex mtx;
- volatile bool should_quit;
};
class dialog_freepie : public ITrackerDialog
@@ -62,8 +61,9 @@ private slots:
class meta_freepie : public Metadata
{
-public:
- QString name() { return QString(QCoreApplication::translate("meta_freepie", "FreePIE UDP receiver")); }
+ Q_OBJECT
+
+ QString name() { return tr("FreePIE UDP receiver"); }
QIcon icon() { return QIcon(":/glovepie.png"); }
};
diff --git a/tracker-freepie-udp/lang/de_DE.ts b/tracker-freepie-udp/lang/de_DE.ts
new file mode 100644
index 00000000..27f3bc39
--- /dev/null
+++ b/tracker-freepie-udp/lang/de_DE.ts
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="de_DE">
+<context>
+ <name>UI_freepie_udp_dialog</name>
+ <message>
+ <source>Tracker settings</source>
+ <translation>Tracker-Einstellungen</translation>
+ </message>
+ <message>
+ <source>UDP port</source>
+ <translation>UDP-Port</translation>
+ </message>
+ <message>
+ <source>Axis order</source>
+ <translation>Achsen-Reihenfolge</translation>
+ </message>
+ <message>
+ <source>output yaw</source>
+ <translation>Gieren-Ausgabe</translation>
+ </message>
+ <message>
+ <source>input yaw</source>
+ <translation>Gieren-Eingabe</translation>
+ </message>
+ <message>
+ <source>input pitch</source>
+ <translation>Nicken-Eingabe</translation>
+ </message>
+ <message>
+ <source>input roll</source>
+ <translation>Rollen-Eingabe</translation>
+ </message>
+ <message>
+ <source>output pitch</source>
+ <translation>Nicken-Ausgabe</translation>
+ </message>
+ <message>
+ <source>output roll</source>
+ <translation>Rollen-Ausgabe</translation>
+ </message>
+ <message>
+ <source>Add to axis</source>
+ <translation>Zur Achse hinzufügen</translation>
+ </message>
+ <message>
+ <source>yaw</source>
+ <translation>Gieren</translation>
+ </message>
+ <message>
+ <source>0</source>
+ <translation>0</translation>
+ </message>
+ <message>
+ <source>+90</source>
+ <translation>+90</translation>
+ </message>
+ <message>
+ <source>-90</source>
+ <translation>-90</translation>
+ </message>
+ <message>
+ <source>+180</source>
+ <translation>+180</translation>
+ </message>
+ <message>
+ <source>-180</source>
+ <translation>-180</translation>
+ </message>
+ <message>
+ <source>pitch</source>
+ <translation>Nicken</translation>
+ </message>
+ <message>
+ <source>roll</source>
+ <translation>Rollen</translation>
+ </message>
+</context>
+<context>
+ <name>meta_freepie</name>
+ <message>
+ <source>FreePIE UDP receiver</source>
+ <translation>FreePIE-UDP-Empfänger</translation>
+ </message>
+</context>
+</TS>
diff --git a/tracker-freepie-udp/lang/nl_NL.ts b/tracker-freepie-udp/lang/nl_NL.ts
index c46ad00e..bf739c4d 100644
--- a/tracker-freepie-udp/lang/nl_NL.ts
+++ b/tracker-freepie-udp/lang/nl_NL.ts
@@ -4,108 +4,74 @@
<context>
<name>UI_freepie_udp_dialog</name>
<message>
- <location filename="../freepie-udp-controls.ui" line="+17"/>
<source>Tracker settings</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+31"/>
<source>UDP port</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+20"/>
<source>Axis order</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+6"/>
<source>output yaw</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+8"/>
- <location line="+19"/>
- <location line="+26"/>
<source>input yaw</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-40"/>
- <location line="+19"/>
- <location line="+26"/>
<source>input pitch</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-40"/>
- <location line="+19"/>
- <location line="+26"/>
<source>input roll</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-18"/>
<source>output pitch</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+26"/>
<source>output roll</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+10"/>
<source>Add to axis</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+6"/>
<source>yaw</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+8"/>
- <location line="+43"/>
- <location line="+29"/>
<source>0</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-67"/>
- <location line="+43"/>
- <location line="+29"/>
<source>+90</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-67"/>
- <location line="+43"/>
- <location line="+29"/>
<source>-90</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-67"/>
- <location line="+43"/>
- <location line="+29"/>
<source>+180</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-67"/>
- <location line="+43"/>
- <location line="+29"/>
<source>-180</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-64"/>
<source>pitch</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+7"/>
<source>roll</source>
<translation type="unfinished"></translation>
</message>
@@ -113,7 +79,6 @@
<context>
<name>meta_freepie</name>
<message>
- <location filename="../ftnoir_tracker_freepie-udp.h" line="+66"/>
<source>FreePIE UDP receiver</source>
<translation type="unfinished"></translation>
</message>
diff --git a/tracker-freepie-udp/lang/ru_RU.ts b/tracker-freepie-udp/lang/ru_RU.ts
index 45160d13..1a088f44 100644
--- a/tracker-freepie-udp/lang/ru_RU.ts
+++ b/tracker-freepie-udp/lang/ru_RU.ts
@@ -4,108 +4,74 @@
<context>
<name>UI_freepie_udp_dialog</name>
<message>
- <location filename="../freepie-udp-controls.ui" line="+17"/>
<source>Tracker settings</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+31"/>
<source>UDP port</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+20"/>
<source>Axis order</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+6"/>
<source>output yaw</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+8"/>
- <location line="+19"/>
- <location line="+26"/>
<source>input yaw</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-40"/>
- <location line="+19"/>
- <location line="+26"/>
<source>input pitch</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-40"/>
- <location line="+19"/>
- <location line="+26"/>
<source>input roll</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-18"/>
<source>output pitch</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+26"/>
<source>output roll</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+10"/>
<source>Add to axis</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+6"/>
<source>yaw</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+8"/>
- <location line="+43"/>
- <location line="+29"/>
<source>0</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-67"/>
- <location line="+43"/>
- <location line="+29"/>
<source>+90</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-67"/>
- <location line="+43"/>
- <location line="+29"/>
<source>-90</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-67"/>
- <location line="+43"/>
- <location line="+29"/>
<source>+180</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-67"/>
- <location line="+43"/>
- <location line="+29"/>
<source>-180</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-64"/>
<source>pitch</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+7"/>
<source>roll</source>
<translation type="unfinished"></translation>
</message>
@@ -113,7 +79,6 @@
<context>
<name>meta_freepie</name>
<message>
- <location filename="../ftnoir_tracker_freepie-udp.h" line="+66"/>
<source>FreePIE UDP receiver</source>
<translation type="unfinished"></translation>
</message>
diff --git a/tracker-freepie-udp/lang/stub.ts b/tracker-freepie-udp/lang/stub.ts
index e12452c5..1072784a 100644
--- a/tracker-freepie-udp/lang/stub.ts
+++ b/tracker-freepie-udp/lang/stub.ts
@@ -4,108 +4,74 @@
<context>
<name>UI_freepie_udp_dialog</name>
<message>
- <location filename="../freepie-udp-controls.ui" line="+17"/>
<source>Tracker settings</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+31"/>
<source>UDP port</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+20"/>
<source>Axis order</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+6"/>
<source>output yaw</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+8"/>
- <location line="+19"/>
- <location line="+26"/>
<source>input yaw</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-40"/>
- <location line="+19"/>
- <location line="+26"/>
<source>input pitch</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-40"/>
- <location line="+19"/>
- <location line="+26"/>
<source>input roll</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-18"/>
<source>output pitch</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+26"/>
<source>output roll</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+10"/>
<source>Add to axis</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+6"/>
<source>yaw</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+8"/>
- <location line="+43"/>
- <location line="+29"/>
<source>0</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-67"/>
- <location line="+43"/>
- <location line="+29"/>
<source>+90</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-67"/>
- <location line="+43"/>
- <location line="+29"/>
<source>-90</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-67"/>
- <location line="+43"/>
- <location line="+29"/>
<source>+180</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-67"/>
- <location line="+43"/>
- <location line="+29"/>
<source>-180</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-64"/>
<source>pitch</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+7"/>
<source>roll</source>
<translation type="unfinished"></translation>
</message>
@@ -113,7 +79,6 @@
<context>
<name>meta_freepie</name>
<message>
- <location filename="../ftnoir_tracker_freepie-udp.h" line="+66"/>
<source>FreePIE UDP receiver</source>
<translation type="unfinished"></translation>
</message>
diff --git a/tracker-freepie-udp/lang/zh_CN.ts b/tracker-freepie-udp/lang/zh_CN.ts
new file mode 100644
index 00000000..b886451c
--- /dev/null
+++ b/tracker-freepie-udp/lang/zh_CN.ts
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="zh_CN">
+<context>
+ <name>UI_freepie_udp_dialog</name>
+ <message>
+ <source>Tracker settings</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>UDP port</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Axis order</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>output yaw</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>input yaw</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>input pitch</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>input roll</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>output pitch</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>output roll</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Add to axis</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>yaw</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>0</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>+90</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>-90</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>+180</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>-180</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>pitch</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>roll</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>meta_freepie</name>
+ <message>
+ <source>FreePIE UDP receiver</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>