VARJO TRACKING PLUGIN SDK DOCUMENTATION
Varjo_types.h
Go to the documentation of this file.
1 // Copyright 2019-2021 Varjo Technologies Oy. All rights reserved.
2 
3 #ifndef VARJO_TYPES_H
4 #define VARJO_TYPES_H
5 
6 #include <cstdint>
7 
8 #if defined __cplusplus
9 extern "C" {
10 #endif
11 
12 #if defined(_WIN32)
13 #define VARJO_FNTABLE_CALLTYPE __cdecl
14 #else
15 #define VARJO_FNTABLE_CALLTYPE
16 #endif
17 
21 typedef int32_t varjo_Bool;
22 static const varjo_Bool varjo_False = 0;
23 static const varjo_Bool varjo_True = 1;
24 
28 typedef int64_t varjo_Nanoseconds;
29 
33 typedef struct varjo_Vector3D {
34  double x;
35  double y;
36  double z;
38 
42 typedef struct varjo_Quaternion {
43  double w;
44  double x;
45  double y;
46  double z;
48 
49 
54 typedef struct varjo_Matrix3x3 {
55  double value[9];
57 
62 typedef struct varjo_Matrix4x4 {
63  double value[16];
65 
69 typedef uint64_t varjo_PoseFlags;
70 static const varjo_PoseFlags varjo_PoseFlags_Ok = 0x1;
79 
89 typedef struct varjo_DevicePose {
91  int64_t frameNo;
98  double confidence;
100 
101 
105 typedef uint64_t varjo_IMUCapability;
109 
115 typedef uint64_t varjo_IMUDataOffscale;
125 
131 typedef uint64_t varjo_IMUDataInvalid;
141 
142 
146 typedef int64_t varjo_IMUComponent;
150 
158 
162 typedef struct varjo_ImuSample {
170 
174 typedef uint64_t varjo_PluginType;
177 
181 typedef int64_t varjo_PluginStatus;
183 
187 typedef int64_t varjo_DeviceType;
189 
193 typedef struct varjo_PluginContext_t* varjo_PluginContext;
194 
198 typedef struct varjo_PluginUtilitySession_t* varjo_PluginUtilitySession;
199 
203 typedef struct varjo_ConfigurationKeyIterator_t* varjo_ConfigurationKeyIterator;
204 
208 typedef int64_t varjo_PluginSystemState;
212 
218 typedef struct varjo_PluginUtilityAPI {
225  typedef const char*(VARJO_FNTABLE_CALLTYPE* GetProductId_t)( //
227 
230 
240 
243 
252 
255 
270  varjo_PluginUtilitySession session, //
271  varjo_IMUComponent component, //
272  varjo_IMUComponentCalibrationInfo* calibrationInfo);
273 
276 
289  varjo_PluginUtilitySession session, //
290  varjo_ImuSample* samples, int32_t sampleCount);
291 
294 
302 
305 
315  varjo_PluginUtilitySession session, //
317 
320 
327  varjo_PluginUtilitySession session, //
328  const char* key, const char* value);
329 
332 
342  varjo_PluginUtilitySession session, //
343  const char* key, char* value, int32_t valueLength);
344 
347 
348 
357 
360 
367  varjo_PluginUtilitySession session, //
368  const char* message);
369 
372 
381  varjo_PluginUtilitySession session, //
382  varjo_PluginSystemState state, //
383  const char* message);
384 
387 
389 
390 #if defined __cplusplus
391 }
392 #endif
393 
394 #endif // VARJO_TYPES_H
varjo_PluginSystemState_Warning
static const varjo_PluginSystemState varjo_PluginSystemState_Warning
Plugin system is reporting a state requiring user attention e.g. battery low.
Definition: Varjo_types.h:210
varjo_IMUCapability
uint64_t varjo_IMUCapability
Definition: Varjo_types.h:105
varjo_DevicePose::acceleration
varjo_Vector3D acceleration
Device acceleration (m/s^2)
Definition: Varjo_types.h:96
varjo_DevicePose::poseFlags
varjo_PoseFlags poseFlags
Bit field value describing pose.
Definition: Varjo_types.h:97
varjo_PoseFlags_HasConfidence
static const varjo_PoseFlags varjo_PoseFlags_HasConfidence
Flag indicating that the pose has confidence information.
Definition: Varjo_types.h:78
varjo_IMUDataOffscale_AccelerationY
static const varjo_IMUDataOffscale varjo_IMUDataOffscale_AccelerationY
Flag indicating the Y-axis acceleration measurement is off-scale.
Definition: Varjo_types.h:117
varjo_PluginUtilityAPI::GetConfigurationString
GetConfigurationString_t GetConfigurationString
Definition: Varjo_types.h:346
varjo_Quaternion::w
double w
Quaternion component w.
Definition: Varjo_types.h:43
varjo_PluginUtilityAPI::GetProductId_t
const char *(VARJO_FNTABLE_CALLTYPE * GetProductId_t)(varjo_PluginUtilitySession session)
Definition: Varjo_types.h:225
varjo_Nanoseconds
int64_t varjo_Nanoseconds
Definition: Varjo_types.h:28
varjo_PluginUtilityAPI::GetIMUCapabilities
GetIMUCapabilities_t GetIMUCapabilities
Definition: Varjo_types.h:242
varjo_PoseFlags_HasVelocity
static const varjo_PoseFlags varjo_PoseFlags_HasVelocity
Flag indicating that the pose has velocity information.
Definition: Varjo_types.h:75
varjo_Vector3D::z
double z
Z coordinate.
Definition: Varjo_types.h:36
varjo_IMUDataOffscale_AttitudeZ
static const varjo_IMUDataOffscale varjo_IMUDataOffscale_AttitudeZ
Flag indicating the Z-axis attitudey measurement is off-scale.
Definition: Varjo_types.h:124
varjo_PluginUtilityAPI::GetCurrentSystemTime_t
varjo_Nanoseconds(VARJO_FNTABLE_CALLTYPE * GetCurrentSystemTime_t)(varjo_PluginUtilitySession session)
Definition: Varjo_types.h:355
varjo_IMUDataInvalid_AccelerationY
static const varjo_IMUDataInvalid varjo_IMUDataInvalid_AccelerationY
Flag indicating the Y-axis acceleration measurement is not valid.
Definition: Varjo_types.h:133
varjo_PluginUtilityAPI::EnumConfigurationKeys_t
const char *(VARJO_FNTABLE_CALLTYPE * EnumConfigurationKeys_t)(varjo_PluginUtilitySession session, varjo_ConfigurationKeyIterator *handle)
Definition: Varjo_types.h:314
varjo_PluginStatus
int64_t varjo_PluginStatus
Definition: Varjo_types.h:181
varjo_DevicePose::velocity
varjo_Vector3D velocity
Device linear velocity (m/s)
Definition: Varjo_types.h:94
varjo_PluginUtilityAPI::EnumConfigurationKeys
EnumConfigurationKeys_t EnumConfigurationKeys
Definition: Varjo_types.h:319
varjo_Quaternion::x
double x
Quaternion component x.
Definition: Varjo_types.h:44
varjo_Matrix3x3
Definition: Varjo_types.h:54
varjo_Quaternion
struct varjo_Quaternion varjo_Quaternion
varjo_IMUComponent_Gyro
static const varjo_IMUComponent varjo_IMUComponent_Gyro
Constant identifying IMU component gyro.
Definition: Varjo_types.h:148
varjo_PluginUtilityAPI::WriteLogMessage_t
void(VARJO_FNTABLE_CALLTYPE * WriteLogMessage_t)(varjo_PluginUtilitySession session, const char *message)
Definition: Varjo_types.h:366
varjo_PluginUtilityAPI::GetIMUCapabilities_t
varjo_IMUCapability(VARJO_FNTABLE_CALLTYPE * GetIMUCapabilities_t)(varjo_PluginUtilitySession session)
Definition: Varjo_types.h:238
varjo_IMUDataOffscale_AttitudeX
static const varjo_IMUDataOffscale varjo_IMUDataOffscale_AttitudeX
Flag indicating the X-axis attitude measurement is off-scale.
Definition: Varjo_types.h:122
varjo_PluginUtilityAPI::SyncConfiguration_t
varjo_Bool(VARJO_FNTABLE_CALLTYPE * SyncConfiguration_t)(varjo_PluginUtilitySession session)
Definition: Varjo_types.h:300
varjo_ImuSample::offscaleFlags
varjo_IMUDataOffscale offscaleFlags
Offscale flags.
Definition: Varjo_types.h:167
varjo_IMUComponent
int64_t varjo_IMUComponent
Definition: Varjo_types.h:146
varjo_DevicePose::timeStamp
varjo_Nanoseconds timeStamp
Pose timestamp (ns)
Definition: Varjo_types.h:90
varjo_IMUDataInvalid_AccelerationX
static const varjo_IMUDataInvalid varjo_IMUDataInvalid_AccelerationX
Flag indicating the X-axis acceleration measurement is not valid.
Definition: Varjo_types.h:132
varjo_IMUCapability_Acceleration
static const varjo_IMUCapability varjo_IMUCapability_Acceleration
IMU HW is capable of reporting accelerometer measurements.
Definition: Varjo_types.h:106
varjo_PluginUtilityAPI
Definition: Varjo_types.h:218
varjo_PluginUtilityAPI::GetIMUComponentCalibration
GetIMUComponentCalibration_t GetIMUComponentCalibration
Definition: Varjo_types.h:275
varjo_PluginType_HMD_Tracker
static const varjo_PluginType varjo_PluginType_HMD_Tracker
Flag indicating this plugin provides HMD tracking functionality.
Definition: Varjo_types.h:175
varjo_IMUDataOffscale_AngularVelocityY
static const varjo_IMUDataOffscale varjo_IMUDataOffscale_AngularVelocityY
Flag indicating the Y-axis angular velocity measurement is off-scale.
Definition: Varjo_types.h:120
varjo_Bool
int32_t varjo_Bool
Definition: Varjo_types.h:21
varjo_DevicePose::frameNo
int64_t frameNo
Frame number, increases monotonically.
Definition: Varjo_types.h:91
varjo_Matrix4x4
struct varjo_Matrix4x4 varjo_Matrix4x4
varjo_PluginUtilityAPI::GetIMUComponentCalibration_t
void(VARJO_FNTABLE_CALLTYPE * GetIMUComponentCalibration_t)(varjo_PluginUtilitySession session, varjo_IMUComponent component, varjo_IMUComponentCalibrationInfo *calibrationInfo)
Definition: Varjo_types.h:269
VARJO_FNTABLE_CALLTYPE
#define VARJO_FNTABLE_CALLTYPE
Definition: Varjo_types.h:15
varjo_Vector3D::y
double y
Y coordinate.
Definition: Varjo_types.h:35
varjo_PluginStatus_OK
static const varjo_PluginStatus varjo_PluginStatus_OK
Plugin status OK.
Definition: Varjo_types.h:182
varjo_ImuSample::angularVelocity
varjo_Vector3D angularVelocity
Device angular velocity (radians/s)
Definition: Varjo_types.h:165
varjo_IMUComponent_Magnetometer
static const varjo_IMUComponent varjo_IMUComponent_Magnetometer
Constant identifying IMU component magnetometer.
Definition: Varjo_types.h:149
varjo_Quaternion
Definition: Varjo_types.h:42
varjo_IMUDataInvalid_AngularVelocityX
static const varjo_IMUDataInvalid varjo_IMUDataInvalid_AngularVelocityX
Flag indicating the X-axis angular velocity measurement is not valid.
Definition: Varjo_types.h:135
varjo_Matrix3x3::value
double value[9]
Definition: Varjo_types.h:55
varjo_PluginUtilityAPI::GetIMUToHMDTransform_t
varjo_Matrix4x4(VARJO_FNTABLE_CALLTYPE * GetIMUToHMDTransform_t)(varjo_PluginUtilitySession session)
Definition: Varjo_types.h:250
varjo_Vector3D
Definition: Varjo_types.h:33
varjo_False
static const varjo_Bool varjo_False
Value representing False.
Definition: Varjo_types.h:22
varjo_PluginUtilityAPI::SetConfigurationString_t
void(VARJO_FNTABLE_CALLTYPE * SetConfigurationString_t)(varjo_PluginUtilitySession session, const char *key, const char *value)
Definition: Varjo_types.h:326
varjo_PluginUtilityAPI::SetConfigurationString
SetConfigurationString_t SetConfigurationString
Definition: Varjo_types.h:331
varjo_ImuSample
struct varjo_ImuSample varjo_ImuSample
varjo_IMUComponent_Accelerometer
static const varjo_IMUComponent varjo_IMUComponent_Accelerometer
Constant identifying IMU component accelerometer.
Definition: Varjo_types.h:147
varjo_IMUDataOffscale_AccelerationX
static const varjo_IMUDataOffscale varjo_IMUDataOffscale_AccelerationX
Flag indicating the X-axis acceleration measurement is off-scale.
Definition: Varjo_types.h:116
varjo_Vector3D
struct varjo_Vector3D varjo_Vector3D
varjo_ImuSample::validityFlags
varjo_IMUDataInvalid validityFlags
Validity flags.
Definition: Varjo_types.h:168
varjo_PluginUtilityAPI::SyncConfiguration
SyncConfiguration_t SyncConfiguration
Definition: Varjo_types.h:304
varjo_IMUComponentCalibrationInfo
Definition: Varjo_types.h:154
varjo_PluginUtilityAPI
struct varjo_PluginUtilityAPI varjo_PluginUtilityAPI
varjo_PluginSystemState_CriticalError
static const varjo_PluginSystemState varjo_PluginSystemState_CriticalError
Plugin system is reporting a critical error state, e.g. tracking failure.
Definition: Varjo_types.h:211
varjo_Matrix4x4::value
double value[16]
Definition: Varjo_types.h:63
varjo_PoseFlags
uint64_t varjo_PoseFlags
Definition: Varjo_types.h:69
varjo_PoseFlags_HasAngularVelocity
static const varjo_PoseFlags varjo_PoseFlags_HasAngularVelocity
Flag indicating that the pose has angular velocity information.
Definition: Varjo_types.h:76
varjo_DeviceType
int64_t varjo_DeviceType
Definition: Varjo_types.h:187
varjo_PluginUtilityAPI::GetConfigurationString_t
int32_t(VARJO_FNTABLE_CALLTYPE * GetConfigurationString_t)(varjo_PluginUtilitySession session, const char *key, char *value, int32_t valueLength)
Definition: Varjo_types.h:341
varjo_IMUDataOffscale_AngularVelocityX
static const varjo_IMUDataOffscale varjo_IMUDataOffscale_AngularVelocityX
Flag indicating the X-axis angular velocity measurement is off-scale.
Definition: Varjo_types.h:119
varjo_PluginUtilityAPI::WriteLogMessage
WriteLogMessage_t WriteLogMessage
Definition: Varjo_types.h:371
varjo_ImuSample::attitude
varjo_Vector3D attitude
Device attitude.
Definition: Varjo_types.h:166
varjo_PluginUtilityAPI::ReadIMUSamples_t
int32_t(VARJO_FNTABLE_CALLTYPE * ReadIMUSamples_t)(varjo_PluginUtilitySession session, varjo_ImuSample *samples, int32_t sampleCount)
Definition: Varjo_types.h:288
varjo_PluginUtilityAPI::SetPluginSystemState_t
void(VARJO_FNTABLE_CALLTYPE * SetPluginSystemState_t)(varjo_PluginUtilitySession session, varjo_PluginSystemState state, const char *message)
Definition: Varjo_types.h:380
varjo_PoseFlags_Ok
static const varjo_PoseFlags varjo_PoseFlags_Ok
Flag indicating that the tracking is OK.
Definition: Varjo_types.h:70
varjo_DevicePose::confidence
double confidence
Tracker confidence.
Definition: Varjo_types.h:98
varjo_DeviceType_HMD
static const varjo_PluginType varjo_DeviceType_HMD
Device type - Head Mounted Display.
Definition: Varjo_types.h:188
varjo_DevicePose
Definition: Varjo_types.h:89
varjo_Quaternion::y
double y
Quaternion component y.
Definition: Varjo_types.h:45
varjo_PluginUtilityAPI::GetCurrentSystemTime
GetCurrentSystemTime_t GetCurrentSystemTime
Definition: Varjo_types.h:359
varjo_PluginSystemState_OK
static const varjo_PluginSystemState varjo_PluginSystemState_OK
Plugin system is functioning correctly.
Definition: Varjo_types.h:209
varjo_IMUDataInvalid
uint64_t varjo_IMUDataInvalid
Definition: Varjo_types.h:131
varjo_PluginUtilityAPI::GetProductId
GetProductId_t GetProductId
Definition: Varjo_types.h:229
varjo_IMUComponentCalibrationInfo::scale
varjo_Matrix3x3 scale
Calibration scale.
Definition: Varjo_types.h:155
varjo_PluginType
uint64_t varjo_PluginType
Definition: Varjo_types.h:174
varjo_IMUDataInvalid_AttitudeX
static const varjo_IMUDataInvalid varjo_IMUDataInvalid_AttitudeX
Flag indicating the X-axis attitude measurement is not valid.
Definition: Varjo_types.h:138
varjo_PluginContext
struct varjo_PluginContext_t * varjo_PluginContext
Definition: Varjo_types.h:193
varjo_IMUDataOffscale_AttitudeY
static const varjo_IMUDataOffscale varjo_IMUDataOffscale_AttitudeY
Flag indicating the Y-axis attitude measurement is off-scale.
Definition: Varjo_types.h:123
varjo_PoseFlags_TrackingLost
static const varjo_PoseFlags varjo_PoseFlags_TrackingLost
Flag indicating that no tracking data is available.
Definition: Varjo_types.h:71
varjo_PoseFlags_HasAcceleration
static const varjo_PoseFlags varjo_PoseFlags_HasAcceleration
Flag indicating that the pose has acceleration information.
Definition: Varjo_types.h:77
varjo_PoseFlags_TrackingDisconnected
static const varjo_PoseFlags varjo_PoseFlags_TrackingDisconnected
Flag indicating that the tracker is disconnected.
Definition: Varjo_types.h:72
varjo_IMUCapability_Attitude
static const varjo_IMUCapability varjo_IMUCapability_Attitude
IMU HW is capable of reporting magnetometer measurements.
Definition: Varjo_types.h:108
varjo_DevicePose::angularVelocity
varjo_Vector3D angularVelocity
Device angular velocity (radians/s)
Definition: Varjo_types.h:95
varjo_DevicePose::position
varjo_Vector3D position
Device position (m)
Definition: Varjo_types.h:92
varjo_ImuSample
Definition: Varjo_types.h:162
varjo_PluginSystemState
int64_t varjo_PluginSystemState
Definition: Varjo_types.h:208
varjo_Vector3D::x
double x
X coordinate.
Definition: Varjo_types.h:34
varjo_PluginType_MotionPlatform
static const varjo_PluginType varjo_PluginType_MotionPlatform
Flag indicating this plugin provides motion platform functionality.
Definition: Varjo_types.h:176
varjo_IMUCapability_AngularVelocity
static const varjo_IMUCapability varjo_IMUCapability_AngularVelocity
IMU HW is capable of reporting gyro measurements.
Definition: Varjo_types.h:107
varjo_ImuSample::acceleration
varjo_Vector3D acceleration
Device acceleration (m/s^2)
Definition: Varjo_types.h:164
varjo_DevicePose
struct varjo_DevicePose varjo_DevicePose
varjo_IMUDataInvalid_AttitudeY
static const varjo_IMUDataInvalid varjo_IMUDataInvalid_AttitudeY
Flag indicating the Y-axis attitude measurement is not valid.
Definition: Varjo_types.h:139
varjo_ImuSample::timeStamp
varjo_Nanoseconds timeStamp
IMU sample timestamp (ns)
Definition: Varjo_types.h:163
varjo_PluginUtilityAPI::GetIMUToHMDTransform
GetIMUToHMDTransform_t GetIMUToHMDTransform
Definition: Varjo_types.h:254
varjo_IMUComponentCalibrationInfo::bias
varjo_Vector3D bias
Calibration bias.
Definition: Varjo_types.h:156
varjo_IMUDataOffscale_AccelerationZ
static const varjo_IMUDataOffscale varjo_IMUDataOffscale_AccelerationZ
Flag indicating the Z-axis acceleration measurement is off-scale.
Definition: Varjo_types.h:118
varjo_IMUDeviceCalibrationInfo
struct varjo_IMUComponentCalibrationInfo varjo_IMUDeviceCalibrationInfo
varjo_IMUDataInvalid_AccelerationZ
static const varjo_IMUDataInvalid varjo_IMUDataInvalid_AccelerationZ
Flag indicating the Z-axis acceleration measurement is not valid.
Definition: Varjo_types.h:134
varjo_Matrix4x4
Definition: Varjo_types.h:62
varjo_PluginUtilityAPI::ReadIMUSamples
ReadIMUSamples_t ReadIMUSamples
Definition: Varjo_types.h:293
varjo_Quaternion::z
double z
Quaternion component z.
Definition: Varjo_types.h:46
varjo_True
static const varjo_Bool varjo_True
Value representing True.
Definition: Varjo_types.h:23
varjo_IMUDataInvalid_AttitudeZ
static const varjo_IMUDataInvalid varjo_IMUDataInvalid_AttitudeZ
Flag indicating the Z-axis attitude measurement is not valid.
Definition: Varjo_types.h:140
varjo_IMUDataOffscale
uint64_t varjo_IMUDataOffscale
Definition: Varjo_types.h:115
varjo_PluginUtilitySession
struct varjo_PluginUtilitySession_t * varjo_PluginUtilitySession
varjo_PluginUtilitySession
Definition: Varjo_types.h:198
varjo_PluginUtilityAPI::SetPluginSystemState
SetPluginSystemState_t SetPluginSystemState
Definition: Varjo_types.h:386
varjo_IMUDataInvalid_AngularVelocityY
static const varjo_IMUDataInvalid varjo_IMUDataInvalid_AngularVelocityY
Flag indicating the Y-axis angular velocity measurement is not valid.
Definition: Varjo_types.h:136
varjo_PoseFlags_HasRotation
static const varjo_PoseFlags varjo_PoseFlags_HasRotation
Flag indicating that the pose has rotation information.
Definition: Varjo_types.h:74
varjo_ConfigurationKeyIterator
struct varjo_ConfigurationKeyIterator_t * varjo_ConfigurationKeyIterator
Definition: Varjo_types.h:203
varjo_DevicePose::rotation
varjo_Quaternion rotation
Device rotation.
Definition: Varjo_types.h:93
varjo_IMUDataInvalid_AngularVelocityZ
static const varjo_IMUDataInvalid varjo_IMUDataInvalid_AngularVelocityZ
Flag indicating the Z-axis angular velocity measurement is not valid.
Definition: Varjo_types.h:137
varjo_Matrix3x3
struct varjo_Matrix3x3 varjo_Matrix3x3
varjo_IMUDataOffscale_AngularVelocityZ
static const varjo_IMUDataOffscale varjo_IMUDataOffscale_AngularVelocityZ
Flag indicating the Z-axis angular velocity measurement is off-scale.
Definition: Varjo_types.h:121
varjo_PoseFlags_HasPosition
static const varjo_PoseFlags varjo_PoseFlags_HasPosition
Flag indicating that the pose has position information.
Definition: Varjo_types.h:73