diff options
Diffstat (limited to 'tracker-freepie-udp')
| -rw-r--r-- | tracker-freepie-udp/freepie-udp-controls.ui | 2 | ||||
| -rw-r--r-- | tracker-freepie-udp/ftnoir_tracker_freepie-udp.cpp | 69 | ||||
| -rw-r--r-- | tracker-freepie-udp/ftnoir_tracker_freepie-udp.h | 8 | ||||
| -rw-r--r-- | tracker-freepie-udp/lang/de_DE.ts | 86 | ||||
| -rw-r--r-- | tracker-freepie-udp/lang/nl_NL.ts | 35 | ||||
| -rw-r--r-- | tracker-freepie-udp/lang/ru_RU.ts | 35 | ||||
| -rw-r--r-- | tracker-freepie-udp/lang/stub.ts | 35 | ||||
| -rw-r--r-- | tracker-freepie-udp/lang/zh_CN.ts | 86 |
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> |
