vrpn 07.35
Virtual Reality Peripheral Network
Loading...
Searching...
No Matches
vrpn_Tracker_ThalmicLabsMyo.h
Go to the documentation of this file.
1// vrpn_Tracker_ThalmicLabsMyo.h
2//
3// Thalmic Labs Myo's (https://www.thalmic.com/en/myo/) VRPN server
4//
5// (10/12/2014) developed by Florian Nouviale
6
7#ifndef __TRACKER_THALMICLABSMYO_H
8#define __TRACKER_THALMICLABSMYO_H
9
10#include "vrpn_Configure.h" // for VRPN_API
11
12#ifdef VRPN_INCLUDE_THALMICLABSMYO
13
14#include "vrpn_Tracker.h" // for vrpn_Analog
15#include "vrpn_Analog.h" // for vrpn_Analog
16#include "vrpn_Button.h" // for vrpn_Button_Filterl
17
18#include <myo/myo.hpp>
19
20// --------------------------------------------------------------------------
21// VRPN class:
22
23class VRPN_API vrpn_Tracker_ThalmicLabsMyo : public vrpn_Tracker, public vrpn_Analog, public vrpn_Button_Filter, public myo::DeviceListener
24{
25
26public:
27
28 enum ARMSIDE
29 {
30 ANY = 0,
31 LEFT = 1,
32 RIGHT = 2
33 };
34
35 vrpn_Tracker_ThalmicLabsMyo(const char *name,
37 bool useLock,
38 ARMSIDE armSide);
39
40 ~vrpn_Tracker_ThalmicLabsMyo();
41
42 virtual void mainloop();
43
44
45 virtual void onPair(myo::Myo* myo, uint64_t timestamp, myo::FirmwareVersion firmwareVersion);
46
47 virtual void onPose(myo::Myo* myo, uint64_t timestamp, myo::Pose pose);
48
49 virtual void onConnect(myo::Myo* myo, uint64_t timestamp, myo::FirmwareVersion firmwareVersion);
50
51 virtual void onDisconnect(myo::Myo* myo, uint64_t timestamp);
52
53 virtual void onArmSync(myo::Myo* myo, uint64_t timestamp, myo::Arm arm, myo::XDirection xDirection);
54
55 virtual void onArmUnsync(myo::Myo* myo, uint64_t timestamp);
56
57 virtual void onUnlock(myo::Myo* myo, uint64_t timestamp);
58
59 virtual void onLock(myo::Myo* myo, uint64_t timestamp);
60
62 virtual void onOrientationData(myo::Myo* myo, uint64_t timestamp, const myo::Quaternion<float>& rotation);
63
65 virtual void onAccelerometerData(myo::Myo* myo, uint64_t timestamp, const myo::Vector3<float>& accel);
66
68 virtual void onGyroscopeData(myo::Myo* myo, uint64_t timestamp, const myo::Vector3<float>& gyro);
69
70private:
71
72 struct timeval _timestamp;
73
74 void _report_lock();
75
76 enum {
77 ANALOG_ROTATION_X = 0,
78 ANALOG_ROTATION_Y = 1,
79 ANALOG_ROTATION_Z = 2,
80 ANALOG_ACCEL_X = 3,
81 ANALOG_ACCEL_Y = 4,
82 ANALOG_ACCEL_Z = 5,
83 ANALOG_GYRO_X = 6,
84 ANALOG_GYRO_Y = 7,
85 ANALOG_GYRO_Z = 8
86 };
87
88 myo::Hub* hub;
89
90 myo::Myo* _myo;
91
92 ARMSIDE _armSide;
93
94 bool _locked;
95
96 bool _analogChanged;
97};
98
99#endif //VRPN_INCLUDE_THALMICLABSMYO
100#endif //__TRACKER_THALMICLABSMYO_H
virtual void mainloop()=0
Called once through each main loop iteration to handle updates. Remote object mainloop() should call ...
All button servers should derive from this class, which provides the ability to turn any of the butto...
Definition: vrpn_Button.h:66
Generic connection class not specific to the transport mechanism.
#define VRPN_API