VARJO TRACKING PLUGIN SDK DOCUMENTATION
Varjo_plugin.h File Reference

Go to the source code of this file.

Data Structures

struct  varjo_Matrix4x4
 
struct  varjo_IMUComponentCalibrationInfo
 
struct  varjo_ImuSample
 
struct  varjo_PluginUtilityAPI
 
struct  varjo_Quaternion
 
struct  varjo_DevicePose
 

Macros

#define VARJO_FNTABLE_CALLTYPE
 

Typedefs

typedef uint64_t varjo_PluginType
 
typedef int64_t varjo_PluginStatus
 
typedef struct varjo_ConfigurationKeyIterator_t * varjo_ConfigurationKeyIterator
 
typedef struct varjo_PluginUtilitySession_t * varjo_PluginUtilitySession
 varjo_PluginUtilitySession More...
 
typedef struct varjo_Matrix4x4 varjo_Matrix4x4
 
typedef uint64_t varjo_IMUCapability
 
typedef uint64_t varjo_IMUDataOffscale
 
typedef uint64_t varjo_IMUDataInvalid
 
typedef int64_t varjo_IMUComponent
 
typedef struct varjo_IMUComponentCalibrationInfo varjo_IMUDeviceCalibrationInfo
 
typedef struct varjo_ImuSample varjo_ImuSample
 
typedef int64_t varjo_PluginSystemState
 
typedef struct varjo_PluginUtilityAPI varjo_PluginUtilityAPI
 
typedef struct varjo_PluginContext_t * varjo_PluginContext
 
typedef uint64_t varjo_PoseFlags
 
typedef struct varjo_Quaternion varjo_Quaternion
 
typedef struct varjo_DevicePose varjo_DevicePose
 

Functions

varjo_PluginType varjo_GetPluginType ()
 
uint64_t varjo_GetPluginAPIVersion ()
 
const char * varjo_GetPluginName ()
 
const char * varjo_GetPluginStatusDescription (varjo_PluginStatus pluginStatus)
 
varjo_PluginStatus varjo_PluginInit (const varjo_PluginUtilityAPI *pluginUtilityAPI, varjo_PluginUtilitySession pluginUtilitySession, varjo_PluginContext *context)
 
varjo_PluginStatus varjo_PluginShutdown (varjo_PluginContext *context)
 
varjo_PluginStatus varjo_TrackerStart (varjo_PluginContext context)
 
varjo_PluginStatus varjo_TrackerStop (varjo_PluginContext context)
 
varjo_PluginStatus varjo_GetHMDPose (varjo_PluginContext context, varjo_Nanoseconds timeStamp, varjo_DevicePose *pose)
 Queries tracker for the HMD pose. More...
 

Variables

static const varjo_PluginType varjo_PluginType_HMD_Tracker = 0x01
 Flag indicating this plugin provides HMD tracking functionality. More...
 
static const varjo_PluginStatus varjo_PluginStatus_OK = 0
 Plugin status OK. More...
 
static const varjo_IMUCapability varjo_IMUCapability_Acceleration = 0x01
 IMU HW is capable of reporting accelerometer measurements. More...
 
static const varjo_IMUCapability varjo_IMUCapability_AngularVelocity = 0x02
 IMU HW is capable of reporting gyro measurements. More...
 
static const varjo_IMUCapability varjo_IMUCapability_Attitude = 0x04
 IMU HW is capable of reporting magnetometer measurements. More...
 
static const varjo_IMUDataOffscale varjo_IMUDataOffscale_AccelerationX = 0x001
 Flag indicating the X-axis acceleration measurement is off-scale. More...
 
static const varjo_IMUDataOffscale varjo_IMUDataOffscale_AccelerationY = 0x002
 Flag indicating the Y-axis acceleration measurement is off-scale. More...
 
static const varjo_IMUDataOffscale varjo_IMUDataOffscale_AccelerationZ = 0x004
 Flag indicating the Z-axis acceleration measurement is off-scale. More...
 
static const varjo_IMUDataOffscale varjo_IMUDataOffscale_AngularVelocityX = 0x008
 Flag indicating the X-axis angular velocity measurement is off-scale. More...
 
static const varjo_IMUDataOffscale varjo_IMUDataOffscale_AngularVelocityY = 0x010
 Flag indicating the Y-axis angular velocity measurement is off-scale. More...
 
static const varjo_IMUDataOffscale varjo_IMUDataOffscale_AngularVelocityZ = 0x020
 Flag indicating the Z-axis angular velocity measurement is off-scale. More...
 
static const varjo_IMUDataOffscale varjo_IMUDataOffscale_AttitudeX = 0x040
 Flag indicating the X-axis attitude measurement is off-scale. More...
 
static const varjo_IMUDataOffscale varjo_IMUDataOffscale_AttitudeY = 0x080
 Flag indicating the Y-axis attitude measurement is off-scale. More...
 
static const varjo_IMUDataOffscale varjo_IMUDataOffscale_AttitudeZ = 0x100
 Flag indicating the Z-axis attitudey measurement is off-scale. More...
 
static const varjo_IMUDataInvalid varjo_IMUDataInvalid_AccelerationX = 0x001
 Flag indicating the X-axis acceleration measurement is not valid. More...
 
static const varjo_IMUDataInvalid varjo_IMUDataInvalid_AccelerationY = 0x002
 Flag indicating the Y-axis acceleration measurement is not valid. More...
 
static const varjo_IMUDataInvalid varjo_IMUDataInvalid_AccelerationZ = 0x004
 Flag indicating the Z-axis acceleration measurement is not valid. More...
 
static const varjo_IMUDataInvalid varjo_IMUDataInvalid_AngularVelocityX = 0x008
 Flag indicating the X-axis angular velocity measurement is not valid. More...
 
static const varjo_IMUDataInvalid varjo_IMUDataInvalid_AngularVelocityY = 0x010
 Flag indicating the Y-axis angular velocity measurement is not valid. More...
 
static const varjo_IMUDataInvalid varjo_IMUDataInvalid_AngularVelocityZ = 0x020
 Flag indicating the Z-axis angular velocity measurement is not valid. More...
 
static const varjo_IMUDataInvalid varjo_IMUDataInvalid_AttitudeX = 0x040
 Flag indicating the X-axis attitude measurement is not valid. More...
 
static const varjo_IMUDataInvalid varjo_IMUDataInvalid_AttitudeY = 0x080
 Flag indicating the Y-axis attitude measurement is not valid. More...
 
static const varjo_IMUDataInvalid varjo_IMUDataInvalid_AttitudeZ = 0x100
 Flag indicating the Z-axis attitude measurement is not valid. More...
 
static const varjo_IMUComponent varjo_IMUComponent_Accelerometer = 1
 Constant identifying IMU component accelerometer. More...
 
static const varjo_IMUComponent varjo_IMUComponent_Gyro = 2
 Constant identifying IMU component gyro. More...
 
static const varjo_IMUComponent varjo_IMUComponent_Magnetometer = 3
 Constant identifying IMU component magnetometer. More...
 
static const varjo_PluginSystemState varjo_PluginSystemState_OK = 0
 Plugin system is functioning correctly. More...
 
static const varjo_PluginSystemState varjo_PluginSystemState_Warning = 1
 Plugin system is reporting a state requiring user attention e.g. battery low. More...
 
static const varjo_PluginSystemState varjo_PluginSystemState_CriticalError = 2
 Plugin system is reporting a critical error state, e.g. tracking failure. More...
 
static const varjo_PoseFlags varjo_PoseFlags_Ok = 0x1
 Flag indicating that the tracking is OK. More...
 
static const varjo_PoseFlags varjo_PoseFlags_TrackingLost = 0x2
 Flag indicating that no tracking data is available. More...
 
static const varjo_PoseFlags varjo_PoseFlags_TrackingDisconnected = 0x4
 Flag indicating that the tracker is disconnected. More...
 
static const varjo_PoseFlags varjo_PoseFlags_HasPosition = 0x08
 Flag indicating that the pose has position information. More...
 
static const varjo_PoseFlags varjo_PoseFlags_HasRotation = 0x10
 Flag indicating that the pose has rotation information. More...
 
static const varjo_PoseFlags varjo_PoseFlags_HasVelocity = 0x20
 Flag indicating that the pose has velocity information. More...
 
static const varjo_PoseFlags varjo_PoseFlags_HasAngularVelocity = 0x40
 Flag indicating that the pose has angular velocity information. More...
 
static const varjo_PoseFlags varjo_PoseFlags_HasAcceleration = 0x80
 Flag indicating that the pose has acceleration information. More...
 
static const varjo_PoseFlags varjo_PoseFlags_HasConfidence = 0x100
 Flag indicating that the pose has confidence information. More...
 

Macro Definition Documentation

◆ VARJO_FNTABLE_CALLTYPE

#define VARJO_FNTABLE_CALLTYPE

Typedef Documentation

◆ varjo_PluginType

typedef uint64_t varjo_PluginType

Bit-field type determining type of plugin API

◆ varjo_PluginStatus

typedef int64_t varjo_PluginStatus

Plugin status

◆ varjo_ConfigurationKeyIterator

typedef struct varjo_ConfigurationKeyIterator_t* varjo_ConfigurationKeyIterator

Settings key enumeration handle

◆ varjo_PluginUtilitySession

typedef struct varjo_PluginUtilitySession_t* varjo_PluginUtilitySession

varjo_PluginUtilitySession

◆ varjo_Matrix4x4

Double precision 4x4 matrix. The matrix usage convention is that values are stored in column-major order.

◆ varjo_IMUCapability

typedef uint64_t varjo_IMUCapability

Bit-field type determining capabilities of IMU hardware

◆ varjo_IMUDataOffscale

typedef uint64_t varjo_IMUDataOffscale

Bit-field type determining which values of IMU data are off-scale. These flags are set when a corresponding sensor reading exceeds a limit of it's measurement range

◆ varjo_IMUDataInvalid

typedef uint64_t varjo_IMUDataInvalid

Bit-field type determining which values of IMU data are not valid, e.g. in case the IMU HW can not provide corresponding measurement type, or does not have a measurement sample

◆ varjo_IMUComponent

typedef int64_t varjo_IMUComponent

Type identifying IMU component type

◆ varjo_IMUDeviceCalibrationInfo

Structure containing calibration parameters for an IMU device

◆ varjo_ImuSample

Structure describing a sample of IMU data

◆ varjo_PluginSystemState

typedef int64_t varjo_PluginSystemState

Plugin system state

◆ varjo_PluginUtilityAPI

◆ varjo_PluginContext

typedef struct varjo_PluginContext_t* varjo_PluginContext

Plugin session context

◆ varjo_PoseFlags

typedef uint64_t varjo_PoseFlags

Bit-field type determining tracking status

◆ varjo_Quaternion

Double precision quaternion.

◆ varjo_DevicePose

Structure describing tracked device pose.

Coordinate system is right-handed, positive X goes right, positive Y goes up and negative Z goes forward from HMD users perspective. Distance unit is meters.

Function Documentation

◆ varjo_GetPluginType()

varjo_PluginType varjo_GetPluginType ( )

Provides plugin types supported by the plugin library

Returns
a combination of varjo_PluginType flags

◆ varjo_GetPluginAPIVersion()

uint64_t varjo_GetPluginAPIVersion ( )

Provides the API version number supported by the plugin. Use VARJO_PLUGIN_API_VERSION macro to indicate supported API version number.

Returns
Varjo plugin API version number.

◆ varjo_GetPluginName()

const char* varjo_GetPluginName ( )

Provides plugin name

Returns
Null-terminated C-string containing plugin name

◆ varjo_GetPluginStatusDescription()

const char* varjo_GetPluginStatusDescription ( varjo_PluginStatus  pluginStatus)

Provides a string description of a given status code

Parameters
pluginStatus- plugin status code
Returns
Null-terminated C-string containing description of a given status code

◆ varjo_PluginInit()

varjo_PluginStatus varjo_PluginInit ( const varjo_PluginUtilityAPI pluginUtilityAPI,
varjo_PluginUtilitySession  pluginUtilitySession,
varjo_PluginContext context 
)

Initializes plugin

Parameters
pluginUtilityAPI- pointer to structure containing utility function pointers
pluginUtilitySession- handle to pass to varjo_PluginUtilityAPI functions
context- pointer to write plugin session context
Returns
varjo_PluginStatus_OK if plugin was initialized successfully, other value of type varjo_PluginStatus otherwise

◆ varjo_PluginShutdown()

varjo_PluginStatus varjo_PluginShutdown ( varjo_PluginContext context)

Deinitializes plugin

Parameters
context- plugin session context acquired from varjo_PluginInit
Returns
varjo_PluginStatus_OK if plugin was shut down successfully, other value of type varjo_PluginStatus otherwise

◆ varjo_TrackerStart()

varjo_PluginStatus varjo_TrackerStart ( varjo_PluginContext  context)

Starts the tracker processing

Parameters
context- plugin session context acquired from varjo_PluginInit
Returns
varjo_PluginStatus_OK if tracker started successfully, other value of type varjo_PluginStatus otherwise

◆ varjo_TrackerStop()

varjo_PluginStatus varjo_TrackerStop ( varjo_PluginContext  context)

Stops the tracker processing

Parameters
context- plugin session context acquired from varjo_PluginInit
Returns
varjo_PluginStatus_OK if tracker stopped successfully, other value of type varjo_PluginStatus otherwise

◆ varjo_GetHMDPose()

varjo_PluginStatus varjo_GetHMDPose ( varjo_PluginContext  context,
varjo_Nanoseconds  timeStamp,
varjo_DevicePose pose 
)

Queries tracker for the HMD pose.

HMD's tracking point is defined to be in the middle - between the centers of eye-piece lenses, and the on plane of the lens surface closest to the user eyes.

An important consideration for tracking systems requiring marker objects to be placed on the HMD is to minimize interference with critical HMD components (cameras, sensors, ventilation, etc.) shown in following images:

Parameters
context- plugin session context acquired from varjo_PluginInit
timeStamp- timestamp in nanoseconds for which tracking prediction is requested
pose- Pointer to a structure receiving tracking
Returns
varjo_PluginStatus_OK if HMD pose was queried successfully, other value of type varjo_PluginStatus otherwise

Variable Documentation

◆ varjo_PluginType_HMD_Tracker

const varjo_PluginType varjo_PluginType_HMD_Tracker = 0x01
static

Flag indicating this plugin provides HMD tracking functionality.

◆ varjo_PluginStatus_OK

const varjo_PluginStatus varjo_PluginStatus_OK = 0
static

Plugin status OK.

◆ varjo_IMUCapability_Acceleration

const varjo_IMUCapability varjo_IMUCapability_Acceleration = 0x01
static

IMU HW is capable of reporting accelerometer measurements.

◆ varjo_IMUCapability_AngularVelocity

const varjo_IMUCapability varjo_IMUCapability_AngularVelocity = 0x02
static

IMU HW is capable of reporting gyro measurements.

◆ varjo_IMUCapability_Attitude

const varjo_IMUCapability varjo_IMUCapability_Attitude = 0x04
static

IMU HW is capable of reporting magnetometer measurements.

◆ varjo_IMUDataOffscale_AccelerationX

const varjo_IMUDataOffscale varjo_IMUDataOffscale_AccelerationX = 0x001
static

Flag indicating the X-axis acceleration measurement is off-scale.

◆ varjo_IMUDataOffscale_AccelerationY

const varjo_IMUDataOffscale varjo_IMUDataOffscale_AccelerationY = 0x002
static

Flag indicating the Y-axis acceleration measurement is off-scale.

◆ varjo_IMUDataOffscale_AccelerationZ

const varjo_IMUDataOffscale varjo_IMUDataOffscale_AccelerationZ = 0x004
static

Flag indicating the Z-axis acceleration measurement is off-scale.

◆ varjo_IMUDataOffscale_AngularVelocityX

const varjo_IMUDataOffscale varjo_IMUDataOffscale_AngularVelocityX = 0x008
static

Flag indicating the X-axis angular velocity measurement is off-scale.

◆ varjo_IMUDataOffscale_AngularVelocityY

const varjo_IMUDataOffscale varjo_IMUDataOffscale_AngularVelocityY = 0x010
static

Flag indicating the Y-axis angular velocity measurement is off-scale.

◆ varjo_IMUDataOffscale_AngularVelocityZ

const varjo_IMUDataOffscale varjo_IMUDataOffscale_AngularVelocityZ = 0x020
static

Flag indicating the Z-axis angular velocity measurement is off-scale.

◆ varjo_IMUDataOffscale_AttitudeX

const varjo_IMUDataOffscale varjo_IMUDataOffscale_AttitudeX = 0x040
static

Flag indicating the X-axis attitude measurement is off-scale.

◆ varjo_IMUDataOffscale_AttitudeY

const varjo_IMUDataOffscale varjo_IMUDataOffscale_AttitudeY = 0x080
static

Flag indicating the Y-axis attitude measurement is off-scale.

◆ varjo_IMUDataOffscale_AttitudeZ

const varjo_IMUDataOffscale varjo_IMUDataOffscale_AttitudeZ = 0x100
static

Flag indicating the Z-axis attitudey measurement is off-scale.

◆ varjo_IMUDataInvalid_AccelerationX

const varjo_IMUDataInvalid varjo_IMUDataInvalid_AccelerationX = 0x001
static

Flag indicating the X-axis acceleration measurement is not valid.

◆ varjo_IMUDataInvalid_AccelerationY

const varjo_IMUDataInvalid varjo_IMUDataInvalid_AccelerationY = 0x002
static

Flag indicating the Y-axis acceleration measurement is not valid.

◆ varjo_IMUDataInvalid_AccelerationZ

const varjo_IMUDataInvalid varjo_IMUDataInvalid_AccelerationZ = 0x004
static

Flag indicating the Z-axis acceleration measurement is not valid.

◆ varjo_IMUDataInvalid_AngularVelocityX

const varjo_IMUDataInvalid varjo_IMUDataInvalid_AngularVelocityX = 0x008
static

Flag indicating the X-axis angular velocity measurement is not valid.

◆ varjo_IMUDataInvalid_AngularVelocityY

const varjo_IMUDataInvalid varjo_IMUDataInvalid_AngularVelocityY = 0x010
static

Flag indicating the Y-axis angular velocity measurement is not valid.

◆ varjo_IMUDataInvalid_AngularVelocityZ

const varjo_IMUDataInvalid varjo_IMUDataInvalid_AngularVelocityZ = 0x020
static

Flag indicating the Z-axis angular velocity measurement is not valid.

◆ varjo_IMUDataInvalid_AttitudeX

const varjo_IMUDataInvalid varjo_IMUDataInvalid_AttitudeX = 0x040
static

Flag indicating the X-axis attitude measurement is not valid.

◆ varjo_IMUDataInvalid_AttitudeY

const varjo_IMUDataInvalid varjo_IMUDataInvalid_AttitudeY = 0x080
static

Flag indicating the Y-axis attitude measurement is not valid.

◆ varjo_IMUDataInvalid_AttitudeZ

const varjo_IMUDataInvalid varjo_IMUDataInvalid_AttitudeZ = 0x100
static

Flag indicating the Z-axis attitude measurement is not valid.

◆ varjo_IMUComponent_Accelerometer

const varjo_IMUComponent varjo_IMUComponent_Accelerometer = 1
static

Constant identifying IMU component accelerometer.

◆ varjo_IMUComponent_Gyro

const varjo_IMUComponent varjo_IMUComponent_Gyro = 2
static

Constant identifying IMU component gyro.

◆ varjo_IMUComponent_Magnetometer

const varjo_IMUComponent varjo_IMUComponent_Magnetometer = 3
static

Constant identifying IMU component magnetometer.

◆ varjo_PluginSystemState_OK

const varjo_PluginSystemState varjo_PluginSystemState_OK = 0
static

Plugin system is functioning correctly.

◆ varjo_PluginSystemState_Warning

const varjo_PluginSystemState varjo_PluginSystemState_Warning = 1
static

Plugin system is reporting a state requiring user attention e.g. battery low.

◆ varjo_PluginSystemState_CriticalError

const varjo_PluginSystemState varjo_PluginSystemState_CriticalError = 2
static

Plugin system is reporting a critical error state, e.g. tracking failure.

◆ varjo_PoseFlags_Ok

const varjo_PoseFlags varjo_PoseFlags_Ok = 0x1
static

Flag indicating that the tracking is OK.

◆ varjo_PoseFlags_TrackingLost

const varjo_PoseFlags varjo_PoseFlags_TrackingLost = 0x2
static

Flag indicating that no tracking data is available.

◆ varjo_PoseFlags_TrackingDisconnected

const varjo_PoseFlags varjo_PoseFlags_TrackingDisconnected = 0x4
static

Flag indicating that the tracker is disconnected.

◆ varjo_PoseFlags_HasPosition

const varjo_PoseFlags varjo_PoseFlags_HasPosition = 0x08
static

Flag indicating that the pose has position information.

◆ varjo_PoseFlags_HasRotation

const varjo_PoseFlags varjo_PoseFlags_HasRotation = 0x10
static

Flag indicating that the pose has rotation information.

◆ varjo_PoseFlags_HasVelocity

const varjo_PoseFlags varjo_PoseFlags_HasVelocity = 0x20
static

Flag indicating that the pose has velocity information.

◆ varjo_PoseFlags_HasAngularVelocity

const varjo_PoseFlags varjo_PoseFlags_HasAngularVelocity = 0x40
static

Flag indicating that the pose has angular velocity information.

◆ varjo_PoseFlags_HasAcceleration

const varjo_PoseFlags varjo_PoseFlags_HasAcceleration = 0x80
static

Flag indicating that the pose has acceleration information.

◆ varjo_PoseFlags_HasConfidence

const varjo_PoseFlags varjo_PoseFlags_HasConfidence = 0x100
static

Flag indicating that the pose has confidence information.