VARJO TRACKING PLUGIN SDK DOCUMENTATION
Varjo_plugin.h
Go to the documentation of this file.
1 // Copyright 2019 Varjo Technologies Oy. All rights reserved.
2 
3 #ifndef VARJO_PLUGIN_H
4 #define VARJO_PLUGIN_H
5 
6 #include "Varjo_export.h"
7 #include "Varjo_types.h"
8 #include "Varjo_version.h"
9 
10 #if defined __cplusplus
11 extern "C" {
12 #endif // __cplusplus
13 
14 #if defined(_WIN32)
15 #define VARJO_FNTABLE_CALLTYPE __cdecl
16 #else
17 #define VARJO_FNTABLE_CALLTYPE
18 #endif
19 
20 // ----------------------------------------------------------------------------
21 // API types
22 
26 typedef uint64_t varjo_PluginType;
28 // static const varjo_PluginType varjo_PluginType_InputDevice = 0x02;
29 
30 // ----------------------------------------------------------------------------
31 // Plugin API
32 
39 
46 VARJO_API uint64_t varjo_GetPluginAPIVersion();
47 
53 VARJO_API const char* varjo_GetPluginName();
54 
58 typedef int64_t varjo_PluginStatus;
60 
67 VARJO_API const char* varjo_GetPluginStatusDescription(varjo_PluginStatus pluginStatus);
68 
72 typedef struct varjo_ConfigurationKeyIterator_t* varjo_ConfigurationKeyIterator;
73 
77 typedef struct varjo_PluginUtilitySession_t* varjo_PluginUtilitySession;
78 
83 typedef struct varjo_Matrix4x4 {
84  double value[16];
86 
90 typedef uint64_t varjo_IMUCapability;
94 
100 typedef uint64_t varjo_IMUDataOffscale;
110 
116 typedef uint64_t varjo_IMUDataInvalid;
126 
127 
131 typedef int64_t varjo_IMUComponent;
135 
143 
147 typedef struct varjo_ImuSample {
155 
159 typedef int64_t varjo_PluginSystemState;
163 
169 typedef struct varjo_PluginUtilityAPI {
176  typedef const char*(VARJO_FNTABLE_CALLTYPE* GetProductId_t)( //
178 
181 
191 
194 
203 
206 
221  varjo_PluginUtilitySession session, //
222  varjo_IMUComponent component, //
223  varjo_IMUComponentCalibrationInfo* calibrationInfo);
224 
227 
240  varjo_PluginUtilitySession session, //
241  varjo_ImuSample* samples, int32_t sampleCount);
242 
245 
253 
256 
266  varjo_PluginUtilitySession session, //
268 
271 
278  varjo_PluginUtilitySession session, //
279  const char* key, const char* value);
280 
283 
293  varjo_PluginUtilitySession session, //
294  const char* key, char* value, int32_t valueLength);
295 
298 
299 
308 
311 
318  varjo_PluginUtilitySession session, //
319  const char* message);
320 
323 
332  varjo_PluginUtilitySession session, //
333  varjo_PluginSystemState state, //
334  const char* message);
335 
338 
340 
344 typedef struct varjo_PluginContext_t* varjo_PluginContext;
345 
356  const varjo_PluginUtilityAPI* pluginUtilityAPI, //
357  varjo_PluginUtilitySession pluginUtilitySession, //
358  varjo_PluginContext* context);
359 
368 
369 // ----------------------------------------------------------------------------
370 // Tracker Plugin API types
371 
375 typedef uint64_t varjo_PoseFlags;
385 
389 typedef struct varjo_Quaternion {
390  double w;
391  double x;
392  double y;
393  double z;
395 
405 typedef struct varjo_DevicePose {
407  int64_t frameNo;
414  double confidence;
416 
417 // ----------------------------------------------------------------------------
418 // Tracker Plugin API
419 
427 
435 
465  varjo_PluginContext context, //
466  varjo_Nanoseconds timeStamp, //
467  varjo_DevicePose* pose);
468 
469 #if defined __cplusplus
470 } // extern "C"
471 #endif // __cplusplus
472 
473 #endif // VARJO_PLUGIN_H
varjo_GetPluginName
const char * varjo_GetPluginName()
varjo_DevicePose::acceleration
varjo_Vector3D acceleration
Device acceleration (m/s^2)
Definition: Varjo_plugin.h:412
varjo_DevicePose::poseFlags
varjo_PoseFlags poseFlags
Bit field value describing pose.
Definition: Varjo_plugin.h:413
varjo_PluginStatus_OK
static const varjo_PluginStatus varjo_PluginStatus_OK
Plugin status OK.
Definition: Varjo_plugin.h:59
varjo_PluginSystemState_OK
static const varjo_PluginSystemState varjo_PluginSystemState_OK
Plugin system is functioning correctly.
Definition: Varjo_plugin.h:160
varjo_IMUDataOffscale_AccelerationY
static const varjo_IMUDataOffscale varjo_IMUDataOffscale_AccelerationY
Flag indicating the Y-axis acceleration measurement is off-scale.
Definition: Varjo_plugin.h:102
varjo_PluginUtilityAPI::GetConfigurationString
GetConfigurationString_t GetConfigurationString
Definition: Varjo_plugin.h:297
varjo_IMUDataOffscale_AngularVelocityZ
static const varjo_IMUDataOffscale varjo_IMUDataOffscale_AngularVelocityZ
Flag indicating the Z-axis angular velocity measurement is off-scale.
Definition: Varjo_plugin.h:106
varjo_Quaternion::w
double w
Quaternion component w.
Definition: Varjo_plugin.h:390
Varjo_version.h
varjo_PluginUtilityAPI::GetProductId_t
const char *(VARJO_FNTABLE_CALLTYPE * GetProductId_t)(varjo_PluginUtilitySession session)
Definition: Varjo_plugin.h:176
varjo_Nanoseconds
int64_t varjo_Nanoseconds
Definition: Varjo_types.h:22
varjo_PoseFlags_HasConfidence
static const varjo_PoseFlags varjo_PoseFlags_HasConfidence
Flag indicating that the pose has confidence information.
Definition: Varjo_plugin.h:384
varjo_PluginUtilityAPI::GetIMUCapabilities
GetIMUCapabilities_t GetIMUCapabilities
Definition: Varjo_plugin.h:193
varjo_IMUDataInvalid_AngularVelocityX
static const varjo_IMUDataInvalid varjo_IMUDataInvalid_AngularVelocityX
Flag indicating the X-axis angular velocity measurement is not valid.
Definition: Varjo_plugin.h:120
varjo_PluginUtilityAPI::GetCurrentSystemTime_t
varjo_Nanoseconds(VARJO_FNTABLE_CALLTYPE * GetCurrentSystemTime_t)(varjo_PluginUtilitySession session)
Definition: Varjo_plugin.h:306
varjo_IMUComponent_Magnetometer
static const varjo_IMUComponent varjo_IMUComponent_Magnetometer
Constant identifying IMU component magnetometer.
Definition: Varjo_plugin.h:134
varjo_PluginUtilityAPI::EnumConfigurationKeys_t
const char *(VARJO_FNTABLE_CALLTYPE * EnumConfigurationKeys_t)(varjo_PluginUtilitySession session, varjo_ConfigurationKeyIterator *handle)
Definition: Varjo_plugin.h:265
varjo_IMUDataInvalid_AccelerationY
static const varjo_IMUDataInvalid varjo_IMUDataInvalid_AccelerationY
Flag indicating the Y-axis acceleration measurement is not valid.
Definition: Varjo_plugin.h:118
varjo_DevicePose::velocity
varjo_Vector3D velocity
Device linear velocity (m/s)
Definition: Varjo_plugin.h:410
varjo_IMUDataOffscale_AttitudeZ
static const varjo_IMUDataOffscale varjo_IMUDataOffscale_AttitudeZ
Flag indicating the Z-axis attitudey measurement is off-scale.
Definition: Varjo_plugin.h:109
varjo_IMUDataInvalid_AttitudeX
static const varjo_IMUDataInvalid varjo_IMUDataInvalid_AttitudeX
Flag indicating the X-axis attitude measurement is not valid.
Definition: Varjo_plugin.h:123
varjo_PluginUtilityAPI::EnumConfigurationKeys
EnumConfigurationKeys_t EnumConfigurationKeys
Definition: Varjo_plugin.h:270
varjo_Quaternion::x
double x
Quaternion component x.
Definition: Varjo_plugin.h:391
Varjo_export.h
varjo_GetPluginStatusDescription
const char * varjo_GetPluginStatusDescription(varjo_PluginStatus pluginStatus)
varjo_Matrix3x3
Definition: Varjo_types.h:37
varjo_PoseFlags_HasPosition
static const varjo_PoseFlags varjo_PoseFlags_HasPosition
Flag indicating that the pose has position information.
Definition: Varjo_plugin.h:379
varjo_TrackerStop
varjo_PluginStatus varjo_TrackerStop(varjo_PluginContext context)
varjo_PluginType_HMD_Tracker
static const varjo_PluginType varjo_PluginType_HMD_Tracker
Flag indicating this plugin provides HMD tracking functionality.
Definition: Varjo_plugin.h:27
varjo_PluginUtilityAPI::WriteLogMessage_t
void(VARJO_FNTABLE_CALLTYPE * WriteLogMessage_t)(varjo_PluginUtilitySession session, const char *message)
Definition: Varjo_plugin.h:317
varjo_PluginUtilityAPI::GetIMUCapabilities_t
varjo_IMUCapability(VARJO_FNTABLE_CALLTYPE * GetIMUCapabilities_t)(varjo_PluginUtilitySession session)
Definition: Varjo_plugin.h:189
varjo_IMUDataOffscale_AttitudeX
static const varjo_IMUDataOffscale varjo_IMUDataOffscale_AttitudeX
Flag indicating the X-axis attitude measurement is off-scale.
Definition: Varjo_plugin.h:107
varjo_PluginShutdown
varjo_PluginStatus varjo_PluginShutdown(varjo_PluginContext *context)
varjo_PluginType
uint64_t varjo_PluginType
Definition: Varjo_plugin.h:26
varjo_PluginUtilityAPI::SyncConfiguration_t
varjo_Bool(VARJO_FNTABLE_CALLTYPE * SyncConfiguration_t)(varjo_PluginUtilitySession session)
Definition: Varjo_plugin.h:251
varjo_IMUDataOffscale_AccelerationX
static const varjo_IMUDataOffscale varjo_IMUDataOffscale_AccelerationX
Flag indicating the X-axis acceleration measurement is off-scale.
Definition: Varjo_plugin.h:101
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_plugin.h:161
varjo_GetPluginAPIVersion
uint64_t varjo_GetPluginAPIVersion()
varjo_ImuSample::offscaleFlags
varjo_IMUDataOffscale offscaleFlags
Offscale flags.
Definition: Varjo_plugin.h:152
varjo_DevicePose::timeStamp
varjo_Nanoseconds timeStamp
Pose timestamp (ns)
Definition: Varjo_plugin.h:406
varjo_PluginSystemState
int64_t varjo_PluginSystemState
Definition: Varjo_plugin.h:159
varjo_PluginSystemState_CriticalError
static const varjo_PluginSystemState varjo_PluginSystemState_CriticalError
Plugin system is reporting a critical error state, e.g. tracking failure.
Definition: Varjo_plugin.h:162
varjo_PluginUtilityAPI
Definition: Varjo_plugin.h:169
varjo_PluginUtilityAPI::GetIMUComponentCalibration
GetIMUComponentCalibration_t GetIMUComponentCalibration
Definition: Varjo_plugin.h:226
varjo_IMUComponent_Accelerometer
static const varjo_IMUComponent varjo_IMUComponent_Accelerometer
Constant identifying IMU component accelerometer.
Definition: Varjo_plugin.h:132
varjo_Bool
int32_t varjo_Bool
Definition: Varjo_types.h:15
varjo_DevicePose::frameNo
int64_t frameNo
Frame number, increases monotonically.
Definition: Varjo_plugin.h:407
varjo_PluginUtilityAPI::GetIMUComponentCalibration_t
void(VARJO_FNTABLE_CALLTYPE * GetIMUComponentCalibration_t)(varjo_PluginUtilitySession session, varjo_IMUComponent component, varjo_IMUComponentCalibrationInfo *calibrationInfo)
Definition: Varjo_plugin.h:220
varjo_ImuSample::angularVelocity
varjo_Vector3D angularVelocity
Device angular velocity (radians/s)
Definition: Varjo_plugin.h:150
VARJO_FNTABLE_CALLTYPE
#define VARJO_FNTABLE_CALLTYPE
Definition: Varjo_plugin.h:17
varjo_ImuSample
struct varjo_ImuSample varjo_ImuSample
varjo_IMUDataOffscale_AngularVelocityX
static const varjo_IMUDataOffscale varjo_IMUDataOffscale_AngularVelocityX
Flag indicating the X-axis angular velocity measurement is off-scale.
Definition: Varjo_plugin.h:104
varjo_Quaternion
Definition: Varjo_plugin.h:389
varjo_IMUDataOffscale_AccelerationZ
static const varjo_IMUDataOffscale varjo_IMUDataOffscale_AccelerationZ
Flag indicating the Z-axis acceleration measurement is off-scale.
Definition: Varjo_plugin.h:103
varjo_IMUDataOffscale_AttitudeY
static const varjo_IMUDataOffscale varjo_IMUDataOffscale_AttitudeY
Flag indicating the Y-axis attitude measurement is off-scale.
Definition: Varjo_plugin.h:108
varjo_PluginUtilityAPI::GetIMUToHMDTransform_t
varjo_Matrix4x4(VARJO_FNTABLE_CALLTYPE * GetIMUToHMDTransform_t)(varjo_PluginUtilitySession session)
Definition: Varjo_plugin.h:201
varjo_DevicePose
struct varjo_DevicePose varjo_DevicePose
varjo_Vector3D
Definition: Varjo_types.h:27
varjo_PluginUtilityAPI::SetConfigurationString_t
void(VARJO_FNTABLE_CALLTYPE * SetConfigurationString_t)(varjo_PluginUtilitySession session, const char *key, const char *value)
Definition: Varjo_plugin.h:277
varjo_PluginUtilityAPI::SetConfigurationString
SetConfigurationString_t SetConfigurationString
Definition: Varjo_plugin.h:282
varjo_ConfigurationKeyIterator
struct varjo_ConfigurationKeyIterator_t * varjo_ConfigurationKeyIterator
Definition: Varjo_plugin.h:72
varjo_IMUDataInvalid
uint64_t varjo_IMUDataInvalid
Definition: Varjo_plugin.h:116
varjo_IMUCapability_Acceleration
static const varjo_IMUCapability varjo_IMUCapability_Acceleration
IMU HW is capable of reporting accelerometer measurements.
Definition: Varjo_plugin.h:91
varjo_ImuSample::validityFlags
varjo_IMUDataInvalid validityFlags
Validity flags.
Definition: Varjo_plugin.h:153
varjo_PluginUtilityAPI::SyncConfiguration
SyncConfiguration_t SyncConfiguration
Definition: Varjo_plugin.h:255
varjo_IMUComponentCalibrationInfo
Definition: Varjo_plugin.h:139
varjo_PluginInit
varjo_PluginStatus varjo_PluginInit(const varjo_PluginUtilityAPI *pluginUtilityAPI, varjo_PluginUtilitySession pluginUtilitySession, varjo_PluginContext *context)
varjo_IMUCapability
uint64_t varjo_IMUCapability
Definition: Varjo_plugin.h:90
varjo_GetPluginType
varjo_PluginType varjo_GetPluginType()
varjo_Matrix4x4::value
double value[16]
Definition: Varjo_plugin.h:84
varjo_PoseFlags_HasRotation
static const varjo_PoseFlags varjo_PoseFlags_HasRotation
Flag indicating that the pose has rotation information.
Definition: Varjo_plugin.h:380
varjo_Matrix4x4
struct varjo_Matrix4x4 varjo_Matrix4x4
varjo_PluginUtilityAPI::GetConfigurationString_t
int32_t(VARJO_FNTABLE_CALLTYPE * GetConfigurationString_t)(varjo_PluginUtilitySession session, const char *key, char *value, int32_t valueLength)
Definition: Varjo_plugin.h:292
varjo_IMUDeviceCalibrationInfo
struct varjo_IMUComponentCalibrationInfo varjo_IMUDeviceCalibrationInfo
varjo_PoseFlags_TrackingLost
static const varjo_PoseFlags varjo_PoseFlags_TrackingLost
Flag indicating that no tracking data is available.
Definition: Varjo_plugin.h:377
varjo_PluginUtilityAPI::WriteLogMessage
WriteLogMessage_t WriteLogMessage
Definition: Varjo_plugin.h:322
varjo_PoseFlags_HasAcceleration
static const varjo_PoseFlags varjo_PoseFlags_HasAcceleration
Flag indicating that the pose has acceleration information.
Definition: Varjo_plugin.h:383
varjo_ImuSample::attitude
varjo_Vector3D attitude
Device attitude.
Definition: Varjo_plugin.h:151
varjo_PluginUtilityAPI::ReadIMUSamples_t
int32_t(VARJO_FNTABLE_CALLTYPE * ReadIMUSamples_t)(varjo_PluginUtilitySession session, varjo_ImuSample *samples, int32_t sampleCount)
Definition: Varjo_plugin.h:239
varjo_PluginUtilityAPI::SetPluginSystemState_t
void(VARJO_FNTABLE_CALLTYPE * SetPluginSystemState_t)(varjo_PluginUtilitySession session, varjo_PluginSystemState state, const char *message)
Definition: Varjo_plugin.h:331
varjo_DevicePose::confidence
double confidence
Tracker confidence.
Definition: Varjo_plugin.h:414
varjo_DevicePose
Definition: Varjo_plugin.h:405
varjo_PluginStatus
int64_t varjo_PluginStatus
Definition: Varjo_plugin.h:58
varjo_Quaternion::y
double y
Quaternion component y.
Definition: Varjo_plugin.h:392
varjo_PluginUtilityAPI::GetCurrentSystemTime
GetCurrentSystemTime_t GetCurrentSystemTime
Definition: Varjo_plugin.h:310
Varjo_types.h
varjo_PluginUtilityAPI::GetProductId
GetProductId_t GetProductId
Definition: Varjo_plugin.h:180
varjo_TrackerStart
varjo_PluginStatus varjo_TrackerStart(varjo_PluginContext context)
varjo_IMUComponentCalibrationInfo::scale
varjo_Matrix3x3 scale
Calibration scale.
Definition: Varjo_plugin.h:140
varjo_IMUCapability_Attitude
static const varjo_IMUCapability varjo_IMUCapability_Attitude
IMU HW is capable of reporting magnetometer measurements.
Definition: Varjo_plugin.h:93
varjo_IMUDataInvalid_AngularVelocityY
static const varjo_IMUDataInvalid varjo_IMUDataInvalid_AngularVelocityY
Flag indicating the Y-axis angular velocity measurement is not valid.
Definition: Varjo_plugin.h:121
varjo_PluginUtilitySession
struct varjo_PluginUtilitySession_t * varjo_PluginUtilitySession
varjo_PluginUtilitySession
Definition: Varjo_plugin.h:77
varjo_IMUDataInvalid_AngularVelocityZ
static const varjo_IMUDataInvalid varjo_IMUDataInvalid_AngularVelocityZ
Flag indicating the Z-axis angular velocity measurement is not valid.
Definition: Varjo_plugin.h:122
varjo_Quaternion
struct varjo_Quaternion varjo_Quaternion
varjo_IMUComponent
int64_t varjo_IMUComponent
Definition: Varjo_plugin.h:131
varjo_PoseFlags_TrackingDisconnected
static const varjo_PoseFlags varjo_PoseFlags_TrackingDisconnected
Flag indicating that the tracker is disconnected.
Definition: Varjo_plugin.h:378
varjo_IMUDataInvalid_AttitudeZ
static const varjo_IMUDataInvalid varjo_IMUDataInvalid_AttitudeZ
Flag indicating the Z-axis attitude measurement is not valid.
Definition: Varjo_plugin.h:125
varjo_IMUDataOffscale
uint64_t varjo_IMUDataOffscale
Definition: Varjo_plugin.h:100
varjo_PluginContext
struct varjo_PluginContext_t * varjo_PluginContext
Definition: Varjo_plugin.h:344
varjo_PoseFlags
uint64_t varjo_PoseFlags
Definition: Varjo_plugin.h:375
varjo_DevicePose::angularVelocity
varjo_Vector3D angularVelocity
Device angular velocity (radians/s)
Definition: Varjo_plugin.h:411
varjo_DevicePose::position
varjo_Vector3D position
Device position (m)
Definition: Varjo_plugin.h:408
varjo_ImuSample
Definition: Varjo_plugin.h:147
varjo_IMUCapability_AngularVelocity
static const varjo_IMUCapability varjo_IMUCapability_AngularVelocity
IMU HW is capable of reporting gyro measurements.
Definition: Varjo_plugin.h:92
varjo_PoseFlags_HasVelocity
static const varjo_PoseFlags varjo_PoseFlags_HasVelocity
Flag indicating that the pose has velocity information.
Definition: Varjo_plugin.h:381
varjo_IMUComponent_Gyro
static const varjo_IMUComponent varjo_IMUComponent_Gyro
Constant identifying IMU component gyro.
Definition: Varjo_plugin.h:133
varjo_IMUDataInvalid_AccelerationX
static const varjo_IMUDataInvalid varjo_IMUDataInvalid_AccelerationX
Flag indicating the X-axis acceleration measurement is not valid.
Definition: Varjo_plugin.h:117
varjo_ImuSample::acceleration
varjo_Vector3D acceleration
Device acceleration (m/s^2)
Definition: Varjo_plugin.h:149
varjo_PoseFlags_Ok
static const varjo_PoseFlags varjo_PoseFlags_Ok
Flag indicating that the tracking is OK.
Definition: Varjo_plugin.h:376
varjo_PluginUtilityAPI
struct varjo_PluginUtilityAPI varjo_PluginUtilityAPI
varjo_PoseFlags_HasAngularVelocity
static const varjo_PoseFlags varjo_PoseFlags_HasAngularVelocity
Flag indicating that the pose has angular velocity information.
Definition: Varjo_plugin.h:382
varjo_ImuSample::timeStamp
varjo_Nanoseconds timeStamp
IMU sample timestamp (ns)
Definition: Varjo_plugin.h:148
varjo_PluginUtilityAPI::GetIMUToHMDTransform
GetIMUToHMDTransform_t GetIMUToHMDTransform
Definition: Varjo_plugin.h:205
varjo_IMUComponentCalibrationInfo::bias
varjo_Vector3D bias
Calibration bias.
Definition: Varjo_plugin.h:141
varjo_Matrix4x4
Definition: Varjo_plugin.h:83
varjo_IMUDataOffscale_AngularVelocityY
static const varjo_IMUDataOffscale varjo_IMUDataOffscale_AngularVelocityY
Flag indicating the Y-axis angular velocity measurement is off-scale.
Definition: Varjo_plugin.h:105
varjo_IMUDataInvalid_AccelerationZ
static const varjo_IMUDataInvalid varjo_IMUDataInvalid_AccelerationZ
Flag indicating the Z-axis acceleration measurement is not valid.
Definition: Varjo_plugin.h:119
varjo_PluginUtilityAPI::ReadIMUSamples
ReadIMUSamples_t ReadIMUSamples
Definition: Varjo_plugin.h:244
varjo_Quaternion::z
double z
Quaternion component z.
Definition: Varjo_plugin.h:393
varjo_GetHMDPose
varjo_PluginStatus varjo_GetHMDPose(varjo_PluginContext context, varjo_Nanoseconds timeStamp, varjo_DevicePose *pose)
Queries tracker for the HMD pose.
varjo_PluginUtilityAPI::SetPluginSystemState
SetPluginSystemState_t SetPluginSystemState
Definition: Varjo_plugin.h:337
varjo_DevicePose::rotation
varjo_Quaternion rotation
Device rotation.
Definition: Varjo_plugin.h:409
varjo_IMUDataInvalid_AttitudeY
static const varjo_IMUDataInvalid varjo_IMUDataInvalid_AttitudeY
Flag indicating the Y-axis attitude measurement is not valid.
Definition: Varjo_plugin.h:124