summaryrefslogtreecommitdiffhomepage
path: root/ftnoir_tracker_freepie-udp/ftnoir_tracker_freepie-udp.h
diff options
context:
space:
mode:
authorStanislaw Halik <sthalik@misaki.pl>2014-09-20 06:37:04 +0200
committerStanislaw Halik <sthalik@misaki.pl>2014-09-20 15:30:17 +0200
commit5d8cdde055947ef9c8e157047f090b19e368140c (patch)
treebe69d679a83675bea713945f3a0fc37d102cf748 /ftnoir_tracker_freepie-udp/ftnoir_tracker_freepie-udp.h
parent181aac6db63f0fd3aac31c599569acad06a60530 (diff)
Support FreePIE IMU UDP protocol
Issue: #48 Note, pushed to stable since won't cause regressions, as it's purely freestanding code.
Diffstat (limited to 'ftnoir_tracker_freepie-udp/ftnoir_tracker_freepie-udp.h')
-rw-r--r--ftnoir_tracker_freepie-udp/ftnoir_tracker_freepie-udp.h69
1 files changed, 69 insertions, 0 deletions
diff --git a/ftnoir_tracker_freepie-udp/ftnoir_tracker_freepie-udp.h b/ftnoir_tracker_freepie-udp/ftnoir_tracker_freepie-udp.h
new file mode 100644
index 00000000..b6fd544e
--- /dev/null
+++ b/ftnoir_tracker_freepie-udp/ftnoir_tracker_freepie-udp.h
@@ -0,0 +1,69 @@
+/* Copyright (c) 2014 Stanislaw Halik <sthalik@misaki.pl>
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ */
+
+#include "ftnoir_tracker_base/ftnoir_tracker_base.h"
+#include "ui_freepie-udp-controls.h"
+#include <QUdpSocket>
+#include <QThread>
+#include "facetracknoir/plugin-support.h"
+#include "facetracknoir/options.h"
+using namespace options;
+
+struct settings {
+ pbundle b;
+ value<int> port;
+ value<bool> enable_roll, enable_pitch, enable_yaw;
+ settings() :
+ b(bundle("freepie-udp-tracker")),
+ port(b, "port", 4237),
+ enable_roll(b, "enable-roll", true),
+ enable_pitch(b, "enable-pitch", true),
+ enable_yaw(b, "enable-yaw", true)
+ {}
+};
+
+class TrackerImpl : public ITracker, protected QThread
+{
+public:
+ TrackerImpl();
+ virtual ~TrackerImpl() override;
+ void StartTracker(QFrame *);
+ void GetHeadPoseData(double *data);
+protected:
+ void run();
+private:
+ double pose[6];
+ QUdpSocket sock;
+ settings s;
+ QMutex mtx;
+ volatile bool should_quit;
+};
+
+class TrackerDialog : public QWidget, public ITrackerDialog
+{
+ Q_OBJECT
+public:
+ TrackerDialog();
+ void registerTracker(ITracker *) {}
+ void unRegisterTracker() {}
+private:
+ Ui::UI_freepie_udp_dialog ui;
+ settings s;
+private slots:
+ void doOK();
+ void doCancel();
+};
+
+class TrackerMeta : public Metadata
+{
+public:
+ void getFullName(QString *strToBeFilled);
+ void getShortName(QString *strToBeFilled);
+ void getDescription(QString *strToBeFilled);
+ void getIcon(QIcon *icon);
+};
+