sot-talos-balance  1.6.0
RTPacket.h
Go to the documentation of this file.
1 #ifndef RTPACKET_H
2 #define RTPACKET_H
3 
4 #include <stdio.h>
5 #include <stdint.h>
6 
7 #ifdef EXPORT_DLL
8  #define DLL_EXPORT __declspec(dllexport)
9 #else
10  #define DLL_EXPORT
11 #endif
12 
13 
14 #define MAJOR_VERSION 1
15 #define MINOR_VERSION 19
16 
17 #define MAX_CAMERA_COUNT 256
18 #define MAX_ANALOG_DEVICE_COUNT 64
19 #define MAX_FORCE_PLATE_COUNT 64
20 #define MAX_GAZE_VECTOR_COUNT 64
21 #define MAX_TIMECODE_COUNT 3
22 #define MAX_SKELETON_COUNT 10
23 
24 
26 {
27 public:
29  {
30  PacketError = 0,
31  PacketCommand = 1,
32  PacketXML = 2,
33  PacketData = 3,
34  PacketNoMoreData = 4,
35  PacketC3DFile = 5,
36  PacketEvent = 6,
37  PacketDiscover = 7,
38  PacketQTMFile = 8,
39  PacketNone = 9
40  };
41 
43  {
44  Component3d = 1,
45  Component3dNoLabels = 2,
46  ComponentAnalog = 3,
47  ComponentForce = 4,
48  Component6d = 5,
49  Component6dEuler = 6,
50  Component2d = 7,
51  Component2dLin = 8,
52  Component3dRes = 9,
53  Component3dNoLabelsRes = 10,
54  Component6dRes = 11,
55  Component6dEulerRes = 12,
56  ComponentAnalogSingle = 13,
57  ComponentImage = 14,
58  ComponentForceSingle = 15,
59  ComponentGazeVector = 16,
60  ComponentTimecode = 17,
61  ComponentSkeleton = 18,
62  ComponentNone = 19
63  };
64 
66  {
67  FormatRawGrayscale = 0,
68  FormatRawBGR = 1,
69  FormatJPG = 2,
70  FormatPNG = 3
71  };
72 
73  enum EEvent
74  {
75  EventConnected = 1,
76  EventConnectionClosed = 2,
77  EventCaptureStarted = 3,
78  EventCaptureStopped = 4,
79  EventCaptureFetchingFinished = 5, // Not used in version 1.10 and later
80  EventCalibrationStarted = 6,
81  EventCalibrationStopped = 7,
82  EventRTfromFileStarted = 8,
83  EventRTfromFileStopped = 9,
84  EventWaitingForTrigger = 10,
85  EventCameraSettingsChanged = 11,
86  EventQTMShuttingDown = 12,
87  EventCaptureSaved = 13,
88  EventReprocessingStarted = 14,
89  EventReprocessingStopped = 15,
90  EventTrigger = 16,
91  EventNone = 17 // Must be the last. Not actually an event. Just used to cont number of events.
92  };
93 
95  {
96  TimecodeSMPTE = 0,
97  TimecodeIRIG = 1,
98  TimecodeCamerTime = 2
99  };
100 
101  struct SForce
102  {
103  float fForceX;
104  float fForceY;
105  float fForceZ;
106  float fMomentX;
107  float fMomentY;
108  float fMomentZ;
112  };
113 
114  struct SGazeVector
115  {
116  float fX;
117  float fY;
118  float fZ;
119  float fPosX;
120  float fPosY;
121  float fPosZ;
122  };
123 
125  {
126  unsigned int id;
127  float positionX;
128  float positionY;
129  float positionZ;
130  float rotationX;
131  float rotationY;
132  float rotationZ;
133  float rotationW;
134  };
135 
136 public:
137  CRTPacket(int nMajorVersion = MAJOR_VERSION, int nMinorVersion = MINOR_VERSION, bool bBigEndian = false);
138  void GetVersion(unsigned int &nMajorVersion, unsigned int &nMinorVersion);
139  void SetVersion(unsigned int nMajorVersion, unsigned int nMinorVersion);
140  bool GetEndianness();
141  void SetEndianness(bool bBigEndian);
142  void ClearData();
143  void SetData(char* ptr);
144  void GetData(char* &ptr, unsigned int &nSize);
145 
146  unsigned int GetSize();
147  EPacketType GetType();
148  unsigned long long GetTimeStamp();
149  unsigned int GetFrameNumber();
150  static unsigned int GetSize(char* pData, bool bBigEndian = false);
151  static EPacketType GetType(char* pData, bool bBigEndian = false);
152  static unsigned long long GetTimeStamp(char* pData, bool bBigEndian = false);
153  static unsigned int GetFrameNumber(char* pData, bool bBigEndian = false);
154 
155  unsigned int GetComponentCount();
156  unsigned int GetComponentSize(EComponentType eComponent);
157 
158  char* GetErrorString();
159  char* GetCommandString();
160  static char* GetCommandString(char* pData, bool bBigEndian = false);
161  char* GetXMLString();
162  bool GetEvent(EEvent &eEvent);
163  static bool GetEvent(EEvent &eEvent, char* pData, bool bBigEndian = false);
164  short GetDiscoverResponseBasePort();
165  static short GetDiscoverResponseBasePort(char* pData, bool bBigEndian = false);
166 
167  unsigned short GetDropRate();
168  unsigned short GetOutOfSyncRate();
169 
170  unsigned int Get2DCameraCount();
171  unsigned int Get2DMarkerCount(unsigned int nCameraIndex);
172  unsigned char Get2DStatusFlags(unsigned int nCameraIndex);
173  bool Get2DMarker(unsigned int nCameraIndex, unsigned int nMarkerIndex, unsigned int &nX,
174  unsigned int &nY, unsigned short &nXDiameter, unsigned short & nYDiameter);
175 
176  unsigned int Get2DLinCameraCount();
177  unsigned int Get2DLinMarkerCount(unsigned int nCameraIndex);
178  unsigned char Get2DLinStatusFlags(unsigned int nCameraIndex);
179  bool Get2DLinMarker(unsigned int nCameraIndex, unsigned int nMarkerIndex, unsigned int &nX,
180  unsigned int &nY, unsigned short &nXDiameter, unsigned short & nYDiameter);
181 
182  unsigned int Get3DMarkerCount();
183  bool Get3DMarker(unsigned int nMarkerIndex, float &fX, float &fY, float &fZ);
184 
185  unsigned int Get3DResidualMarkerCount();
186  bool Get3DResidualMarker(unsigned int nMarkerIndex, float &fX, float &fY, float &fZ,
187  float &fResidual);
188 
189  unsigned int Get3DNoLabelsMarkerCount();
190  bool Get3DNoLabelsMarker(unsigned int nMarkerIndex, float &fX, float &fY, float &fZ,
191  unsigned int &nId);
192 
193  unsigned int Get3DNoLabelsResidualMarkerCount();
194  bool Get3DNoLabelsResidualMarker(unsigned int nMarkerIndex, float &fX, float &fY, float &fZ,
195  unsigned int &nId, float &fResidual);
196 
197 
198  unsigned int Get6DOFBodyCount();
199  bool Get6DOFBody(unsigned int nBodyIndex, float &fX, float &fY, float &fZ, float afRotMatrix[9]);
200 
201  unsigned int Get6DOFResidualBodyCount();
202  bool Get6DOFResidualBody(unsigned int nBodyIndex, float &fX, float &fY, float &fZ,
203  float afRotMatrix[9], float &fResidual);
204 
205  unsigned int Get6DOFEulerBodyCount();
206  bool Get6DOFEulerBody(unsigned int nBodyIndex, float &fX, float &fY, float &fZ,
207  float &fAng1, float &fAng2, float &fAng3);
208 
209  unsigned int Get6DOFEulerResidualBodyCount();
210  bool Get6DOFEulerResidualBody(unsigned int nBodyIndex, float &fX, float &fY, float &fZ,
211  float &fAng1, float &fAng2, float &fAng3, float &fResidual);
212 
213  unsigned int GetGazeVectorCount();
214  unsigned int GetGazeVectorSampleCount(unsigned int nVectorIndex);
215  unsigned int GetGazeVectorSampleNumber(unsigned int nVectorIndex); // Returns 0 if no sample was found.
216  bool GetGazeVector(unsigned int nVectorIndex, unsigned int nSampleIndex, SGazeVector &nGazeVector);
217  bool GetGazeVector(unsigned int nVectorIndex, SGazeVector* pGazeVectorBuf, unsigned int nBufSize);
218 
219  unsigned int GetTimecodeCount();
220  bool GetTimecodeType(unsigned int nTimecodeIndex, CRTPacket::ETimecodeType &timecodeType);
221  bool GetTimecodeSMPTE(unsigned int nTimecodeIndex, int &hours, int &minutes, int &seconds, int &frame);
222  bool GetTimecodeIRIG(unsigned int nTimecodeIndex, int &year, int &day, int &hours, int &minutes, int &seconds, int &tenths);
223  bool GetTimecodeCameraTime(unsigned int nTimecodeIndex, unsigned long long &cameraTime);
224 
225  unsigned int GetImageCameraCount();
226  unsigned int GetImageCameraId(unsigned int nCameraIndex);
227  bool GetImageFormat(unsigned int nCameraIndex, EImageFormat &eImageFormat);
228  bool GetImageSize(unsigned int nCameraIndex, unsigned int &nWidth, unsigned int &nHeight);
229  bool GetImageCrop(unsigned int nCameraIndex, float &fCropLeft, float &fCropTop,
230  float &fCropRight, float &fCropBottom);
231  unsigned int GetImageSize(unsigned int nCameraIndex);
232  unsigned int GetImage(unsigned int nCameraIndex, char* pDataBuf, unsigned int nBufSize);
233 
234  unsigned int GetAnalogDeviceCount();
235  unsigned int GetAnalogDeviceId(unsigned int nDeviceIndex);
236  unsigned int GetAnalogChannelCount(unsigned int nDeviceIndex);
237  unsigned int GetAnalogSampleCount(unsigned int nDeviceIndex);
238  unsigned int GetAnalogSampleNumber(unsigned int nDeviceIndex); // Returns 0 if no sample was found.
239  unsigned int GetAnalogData(unsigned int nDeviceIndex, float* pDataBuf, unsigned int nBufSize);
240  unsigned int GetAnalogData(unsigned int nDeviceIndex, unsigned int nChannelIndex, float* pDataBuf, unsigned int nBufSize);
241  bool GetAnalogData(unsigned int nDeviceIndex, unsigned int nChannelIndex,
242  unsigned int nSampleIndex, float &fAnalogValue);
243 
244  unsigned int GetAnalogSingleDeviceCount();
245  unsigned int GetAnalogSingleDeviceId(unsigned int nDeviceIndex);
246  unsigned int GetAnalogSingleChannelCount(unsigned int nDeviceIndex);
247  unsigned int GetAnalogSingleData(unsigned int nDeviceIndex, float* pDataBuf, unsigned int nBufSize);
248  bool GetAnalogSingleData(unsigned int nDeviceIndex, unsigned int nChannelIndex, float &fValue);
249 
250  unsigned int GetForcePlateCount();
251  unsigned int GetForcePlateId(unsigned int nPlateIndex);
252  unsigned int GetForceCount(unsigned int nPlateIndex);
253  unsigned int GetForceNumber(unsigned int nPlateIndex);// Returns 0 if no force was found.
254  unsigned int GetForceData(unsigned int nPlateIndex, SForce* pForceBuf, unsigned int nBufSize);
255  bool GetForceData(unsigned int nPlateIndex, unsigned int nForceIndex, SForce &sForce);
256 
257  unsigned int GetForceSinglePlateCount();
258  unsigned int GetForceSinglePlateId(unsigned int nPlateIndex);
259  bool GetForceSingleData(unsigned int nPlateIndex, SForce &pForce);
260 
261  unsigned int GetSkeletonCount();
262  unsigned int GetSkeletonSegmentCount(unsigned int nSkeletonIndex);
263  bool GetSkeletonSegments(unsigned int nSkeletonIndex, SSkeletonSegment* segmentBuf, unsigned int nBufSize);
264  bool GetSkeletonSegment(unsigned int nSkeletonIndex, unsigned segmentIndex, SSkeletonSegment &segment);
265 
266 private:
267  float SetByteOrder(float* pfData);
268  double SetByteOrder(double* pfData);
269  short SetByteOrder(short* pnData);
270  unsigned short SetByteOrder(unsigned short* pnData);
271  long SetByteOrder(long* pnData);
272  int SetByteOrder(int* pnData);
273  unsigned int SetByteOrder(unsigned int* pnData);
274  long long SetByteOrder(long long* pnData);
275  unsigned long long SetByteOrder(unsigned long long* pnData);
276 
277 private:
278  char* mpData;
279  char* mpComponentData[ComponentNone];
280  char* mp2DData[MAX_CAMERA_COUNT];
281  char* mp2DLinData[MAX_CAMERA_COUNT];
282  char* mpImageData[MAX_CAMERA_COUNT];
283  char* mpAnalogData[MAX_ANALOG_DEVICE_COUNT];
284  char* mpAnalogSingleData[MAX_ANALOG_DEVICE_COUNT];
285  char* mpForceData[MAX_FORCE_PLATE_COUNT];
286  char* mpForceSingleData[MAX_FORCE_PLATE_COUNT];
287  char* mpGazeVectorData[MAX_GAZE_VECTOR_COUNT];
288  char* mpTimecodeData[MAX_TIMECODE_COUNT];
289  char* mpSkeletonData[MAX_SKELETON_COUNT];
290  unsigned int mnComponentCount;
291  EComponentType meComponentType;
292  unsigned int mn2DCameraCount;
293  unsigned int mn2DLinCameraCount;
294  unsigned int mnImageCameraCount;
295  unsigned int mnAnalogDeviceCount;
296  unsigned int mnAnalogSingleDeviceCount;
297  unsigned int mnForcePlateCount;
298  unsigned int mnForceSinglePlateCount;
299  unsigned int mnGazeVectorCount;
300  unsigned int mnTimecodeCount;
301  unsigned int mSkeletonCount;
302  int mnMajorVersion;
303  int mnMinorVersion;
304  bool mbBigEndian;
305 }; // RTPacket
306 
307 
308 #endif // RTPACKET_H
float fApplicationPointX
Definition: RTPacket.h:109
float fApplicationPointY
Definition: RTPacket.h:110
#define MAX_SKELETON_COUNT
Definition: RTPacket.h:22
#define MAJOR_VERSION
Definition: RTPacket.h:14
#define MAX_ANALOG_DEVICE_COUNT
Definition: RTPacket.h:18
#define MAX_FORCE_PLATE_COUNT
Definition: RTPacket.h:19
EComponentType
Definition: RTPacket.h:42
#define DLL_EXPORT
Definition: RTPacket.h:10
float fApplicationPointZ
Definition: RTPacket.h:111
#define MAX_TIMECODE_COUNT
Definition: RTPacket.h:21
EImageFormat
Definition: RTPacket.h:65
ETimecodeType
Definition: RTPacket.h:94
#define MAX_GAZE_VECTOR_COUNT
Definition: RTPacket.h:20
#define MAX_CAMERA_COUNT
Definition: RTPacket.h:17
#define MINOR_VERSION
Definition: RTPacket.h:15