Group Enum

group Enum

Enumerations used by the LeapC functions and data structures.

Enums

enum eLeapRS

Defines the codes returned by all LeapC functions.

Since

3.0.0

Values:

enumerator eLeapRS_Success

The operation completed successfully.

enumerator eLeapRS_UnknownError

An undetermined error has occurred.

This is usually the result of an abnormal operating condition in LeapC, the Ultraleap Tracking Service, or the host computer itself.

Since

3.0.0

enumerator eLeapRS_InvalidArgument

An invalid argument was specified.

Since

3.0.0

enumerator eLeapRS_InsufficientResources

Insufficient resources existed to complete the request.

Since

3.0.0

enumerator eLeapRS_InsufficientBuffer

The specified buffer was not large enough to complete the request.

Since

3.0.0

enumerator eLeapRS_Timeout

The requested operation has timed out.

Since

3.0.0

enumerator eLeapRS_NotConnected

The operation is invalid because there is no current connection.

Since

3.0.0

enumerator eLeapRS_HandshakeIncomplete

The operation is invalid because the connection is not complete.

Since

3.0.0

enumerator eLeapRS_BufferSizeOverflow

The specified buffer size is too large.

Since

3.0.0

enumerator eLeapRS_ProtocolError

A communications protocol error occurred.

Since

3.0.0

enumerator eLeapRS_InvalidClientID

The server incorrectly specified zero as a client ID.

Since

3.0.0

enumerator eLeapRS_UnexpectedClosed

The connection to the service was unexpectedly closed while reading or writing a message.

The server may have terminated.

Since

3.0.0

enumerator eLeapRS_UnknownImageFrameRequest

The specified request token does not appear to be valid.

Provided that the token value which identifies the request itself was, at one point, valid, this error condition occurs when the request to which the token refers has already been satisfied or is currently being satisfied.

Since

3.0.0

enumerator eLeapRS_UnknownTrackingFrameID

The specified frame ID is not valid or is no longer valid.

Provided that frame ID was, at one point, valid, this error condition occurs when the identifier refers to a frame that occurred further in the past than is currently recorded in the rolling frame window.

Since

3.0.0

enumerator eLeapRS_RoutineIsNotSeer

The specified timestamp references a future point in time.

The related routine can only operate on time points having occurred in the past, and the provided timestamp occurs in the future.

Since

3.1.2

enumerator eLeapRS_TimestampTooEarly

The specified timestamp references a point too far in the past.

The related routine can only operate on time points occurring within its immediate record of the past.

Since

3.1.2

enumerator eLeapRS_ConcurrentPoll

LeapPollConnection is called concurrently.

Since

3.1.2

enumerator eLeapRS_NotAvailable

A connection to the Ultraleap Tracking Service could not be established.

Since

3.0.0

enumerator eLeapRS_NotStreaming

The requested operation can only be performed while the device is sending data.

Since

3.0.0

enumerator eLeapRS_CannotOpenDevice

The specified device could not be opened.

It is possible that the device identifier is invalid, or that the device has been disconnected since being enumerated.

Since

3.0.0

enumerator eLeapRS_Unsupported

The request is not supported by this version of the service.

Since

5.4.0

enum eLeapTrackingMode

Enumerates values for the tracking mode.

Values:

enumerator eLeapTrackingMode_Desktop

The tracking mode optimised for desktop devices.

Since

5.0.0

enumerator eLeapTrackingMode_HMD

The tracking mode optimised for head-mounted devices.

Since

5.0.0

enumerator eLeapTrackingMode_ScreenTop

The tracking mode optimised for screen top-mounted devices.

Since

5.0.0

enumerator eLeapTrackingMode_Unknown

Tracking mode is not known (allows triggering of a new LEAP_TRACKING_MODE_EVENT)

Since

5.0.0

enum eLeapConnectionConfig

Defines the type of connection that the client wants to open.

Since

3.0.0

Values:

enumerator eLeapConnectionConfig_MultiDeviceAware

The client is aware of how to handle multiple devices through the API.

Since

4.1.0

enum eLeapAllocatorType

Defines the various types of data that may be allocated using the allocator.

Since

4.0.0

Values:

enumerator eLeapAllocatorType_Int8

Signed 8-bit integer (char)

Since

4.0.0

enumerator eLeapAllocatorType_Uint8

Unsigned 8-bit integer (byte)

Since

4.0.0

enumerator eLeapAllocatorType_Int16

Signed 16-bit integer.

Since

4.0.0

enumerator eLeapAllocatorType_UInt16

Unsigned 16-bit integer.

Since

4.0.0

enumerator eLeapAllocatorType_Int32

Signed 32-bit integer.

Since

4.0.0

enumerator eLeapAllocatorType_UInt32

Unsigned 32-bit integer.

Since

4.0.0

enumerator eLeapAllocatorType_Float

Single-precision 32-bit floating-point.

Since

4.0.0

enumerator eLeapAllocatorType_Int64

Signed 64-bit integer.

Since

4.0.0

enumerator eLeapAllocatorType_UInt64

Unsigned 64-bit integer.

Since

4.0.0

enumerator eLeapAllocatorType_Double

Double-precision 64-bit floating-point.

Since

4.0.0

enum eLeapPolicyFlag

Enumerates flags for the service policies.

Values:

enumerator eLeapPolicyFlag_BackgroundFrames

The policy allowing an application to receive frames in the background.

Since

3.0.0

enumerator eLeapPolicyFlag_Images

The policy specifying whether to automatically stream images from the device.

Since

4.0.0

enumerator eLeapPolicyFlag_OptimizeHMD

The policy specifying whether to optimize tracking for head-mounted device.

Since

3.0.0

enumerator eLeapPolicyFlag_AllowPauseResume

The policy allowing an application to pause or resume service tracking.

Since

3.0.0

enumerator eLeapPolicyFlag_MapPoints

The policy allowing an application to receive per-frame map points.

Since

4.0.0

enumerator eLeapPolicyFlag_OptimizeScreenTop

The policy specifying whether to optimize tracking for screen-top device.

Since

5.0.0

enum eLeapValueType

Identifies the operative data type of a LEAP_VARIANT struct instance.

Since

3.0.0

Values:

enumerator eLeapValueType_Unknown

The type is unknown (which is an abnormal condition).

Since

3.0.0

enumerator eLeapValueType_Boolean

A boolean value.

Since

3.0.0

enumerator eLeapValueType_Int32

An integer value.

Since

3.0.0

enumerator eLeapValueType_Float

A floating point value.

Since

3.0.0

enumerator eLeapValueType_String

A string value.

Since

3.0.0

enumerator FORCE_DWORD
enum eLeapDeviceCaps

Flags enumerating Leap device capabilities.

Since

3.0.0

Values:

enumerator eLeapDeviceCaps_Color

The device can send color images.

Since

3.0.0

enum eLeapDevicePID

Device hardware types.

Since

3.0.0

Values:

enumerator eLeapDevicePID_Unknown

An unknown device that is compatible with the tracking software.

Since

3.1.3

enumerator eLeapDevicePID_Peripheral

The Leap Motion Controller (the first consumer peripheral).

Since

3.0.0

enumerator eLeapDevicePID_Dragonfly

Internal research product codename “Dragonfly”.

Since

3.0.0

enumerator eLeapDevicePID_Nightcrawler

Internal research product codename “Nightcrawler”.

Since

3.0.0

enumerator eLeapDevicePID_Rigel

Research product codename “Rigel”.

Since

4.0.0

enumerator eLeapDevicePID_SIR170

The Ultraleap Stereo IR 170 (SIR170) hand tracking module.

Since

5.3.0

enumerator eLeapDevicePID_3Di

The Ultraleap 3Di hand tracking camera.

Since

5.3.0

enumerator eLeapDevicePID_LMC2

The Ultraleap Leap Motion Controller 2 hand tracking camera.

Since

5.11.0

enumerator eLeapDevicePID_Invalid

An invalid device type.

Not currently in use.

Since

3.1.3

enum eLeapDeviceStatus

Enumerates the device status codes.

Since

3.0.0

Values:

enumerator eLeapDeviceStatus_Streaming

The device is sending out frames.

Since

3.0.0

enumerator eLeapDeviceStatus_Paused

Device streaming has been paused.

Since

3.0.0

enumerator eLeapDeviceStatus_Robust

There are known sources of infrared interference.

Device has transitioned to robust mode in order to compensate.

Since

3.1.3

enumerator eLeapDeviceStatus_Smudged

The device’s window is smudged, tracking may be degraded.

Since

3.1.3

enumerator eLeapDeviceStatus_LowResource

The device has entered low-resource mode.

Since

4.0.0

enumerator eLeapDeviceStatus_UnknownFailure

The device has failed, but the failure reason is not known.

Since

3.0.0

enumerator eLeapDeviceStatus_BadCalibration

The device has a bad calibration record and cannot send frames.

Since

3.0.0

enumerator eLeapDeviceStatus_BadFirmware

The device reports corrupt firmware or cannot install a required firmware update.

Since

3.0.0

enumerator eLeapDeviceStatus_BadTransport

The device USB connection is faulty.

Since

3.0.0

enumerator eLeapDeviceStatus_BadControl

The device USB control interfaces failed to initialize.

Since

3.0.0

enum eLeapImageType

Functional image types (not data formats).

Values:

enumerator eLeapImageType_UNKNOWN

An invalid or unknown type.

Since

3.0.0

enumerator eLeapImageType_Default

Default, processed IR images.

Since

3.0.0

enumerator eLeapImageType_Raw

Raw images from the device.

Since

3.0.0

enum eLeapImageFormat

Image formats.

Since

3.0.0

Values:

enumerator eLeapImageFormat_UNKNOWN

An invalid or unknown format.

Since

3.0.0

enumerator eLeapImageFormat_IR

An infrared image.

Since

3.0.0

enumerator eLeapImageFormat_RGBIr_Bayer

A Bayer RGBIr image with uncorrected RGB channels.

Since

3.0.0

enum eLeapPerspectiveType

Camera perspective types.

Since

3.0.0

Values:

enumerator eLeapPerspectiveType_invalid

An unknown or invalid type.

Since

3.0.0

enumerator eLeapPerspectiveType_stereo_left

A canonically left image.

Since

3.0.0

enumerator eLeapPerspectiveType_stereo_right

A canonically right image.

Since

3.0.0

enumerator eLeapPerspectiveType_mono

Reserved for future use.

Since

3.0.0

enum eLeapCameraCalibrationType

Camera calibration types.

Since

3.0.0

Values:

enumerator eLeapCameraCalibrationType_infrared

Infrared calibration (default).

Since

4.1.0

enumerator eLeapCameraCalibrationType_visual

Visual calibration.

Since

4.1.0

enum eLeapHandType

The Hand chirality types.

Used in the LEAP_HAND struct.

Since

3.0.0

Values:

enumerator eLeapHandType_Left

A left hand.

Since

3.0.0

enumerator eLeapHandType_Right

A right hand.

Since

3.0.0

enum eLeapLogSeverity

System message severity types.

Since

3.0.0

Values:

enumerator eLeapLogSeverity_Unknown

The message severity is not known or was not specified.

Since

3.0.0

enumerator eLeapLogSeverity_Critical

A message about a fault that could render the software or device non-functional.

Since

3.0.0

enumerator eLeapLogSeverity_Warning

A message warning about a condition that could degrade device capabilities.

Since

3.0.0

enumerator eLeapLogSeverity_Information

A system status message.

Since

3.0.0

enum eLeapEventType

The types of event messages resulting from calling LeapPollConnection().

Since

3.0.0

Values:

enumerator eLeapEventType_None

No event has occurred within the timeout period specified when calling LeapPollConnection().

Since

3.0.0

enumerator eLeapEventType_Connection

A connection to the Ultraleap Tracking Service has been established.

This event is stored in union member connection_event (LEAP_CONNECTION_EVENT).

Since

3.0.0

enumerator eLeapEventType_ConnectionLost

The connection to the Ultraleap Tracking Service has been lost.

This event is stored in union member connection_lost_event (LEAP_CONNECTION_LOST_EVENT).

Since

3.0.0

enumerator eLeapEventType_Device

A device has been detected or plugged-in.

A device event is dispatched after a connection is established for any devices already plugged in. (The system currently only supports one streaming device at a time.) This event is stored in union member device_event (LEAP_DEVICE_EVENT).

Since

3.0.0

enumerator eLeapEventType_DeviceFailure

A device has failed.

Device failure could be caused by hardware failure, USB controller issues, or other system instability. Note that unplugging a device generates an eLeapEventType_DeviceLost event message, not a failure message. This event is no longer generated, enum present for historic API compatibility.

Since

3.0.0

enumerator eLeapEventType_Policy

A policy change has occurred.

This can be due to setting a policy with LeapSetPolicyFlags() or due to changing or policy-related config settings, including images_mode. (A user can also change these policies using the Ultraleap Tracking Control Panel.) This event is stored in union member policy_event (LEAP_POLICY_EVENT).

Since

3.0.0

enumerator eLeapEventType_Tracking

A tracking frame.

The message contains the tracking data for the frame. This event is stored in union member tracking_mode_event (LEAP_TRACKING_MODE_EVENT).

Since

3.0.0

enumerator eLeapEventType_ImageRequestError

The request for an image has failed.

The message contains information about the failure. The client application will not receive the requested image set. This event is no longer generated, enum present for historic API compatibility.

Since

3.0.0

enumerator eLeapEventType_ImageComplete

The request for an image is complete.

The image data has been completely written to the application-provided buffer. This event is no longer generated, enum present for historic API compatibility.

Since

3.0.0

enumerator eLeapEventType_LogEvent

A system message.

Since

3.0.0 This event is stored in union member log_event (LEAP_LOG_EVENT).

enumerator eLeapEventType_DeviceLost

The device connection has been lost.

This event is generally asserted when the device has been detached from the system, when the connection to the service has been lost, or if the device is closed while streaming. Generally, any event where the system can conclude no further frames will be received will result in this message. The DeviceEvent field will be filled with the id of the formerly attached device. This event is stored in union member device_event (LEAP_DEVICE_EVENT).

Since

3.0.0

enumerator eLeapEventType_ConfigResponse

The asynchronous response to a call to LeapRequestConfigValue().

Contains the value of requested configuration item. This event is stored in union member config_response_event (LEAP_CONFIG_RESPONSE_EVENT).

Since

3.0.0

enumerator eLeapEventType_ConfigChange

The asynchronous response to a call to LeapSaveConfigValue().

Reports whether the change succeeded or failed. This event is stored in union member config_change_event (LEAP_CONFIG_CHANGE_EVENT).

Since

3.0.0

enumerator eLeapEventType_DeviceStatusChange

Notification that a status change has been detected on an attached device This event is stored in union member device_status_change_event (LEAP_DEVICE_STATUS_CHANGE_EVENT).

Since

3.1.3

enumerator eLeapEventType_DroppedFrame
enumerator eLeapEventType_Image

Notification that an unrequested stereo image pair is available This event is stored in union member image_event (LEAP_IMAGE_EVENT).

Since

4.0.0

enumerator eLeapEventType_PointMappingChange

Notification that point mapping has changed This event is no longer generated, enum present for historic API compatibility.

Since

4.0.0

enumerator eLeapEventType_TrackingMode

A tracking mode change has occurred.

This can be due to changing the hmd or screentop policy with LeapSetPolicyFlags(). or setting the tracking mode using LeapSetTrackingMode(). This event is stored in union member tracking_mode_event (LEAP_TRACKING_MODE_EVENT).

Since

5.0.0

enumerator eLeapEventType_LogEvents

An array of system messages.

Since

4.0.0 This event is stored in union member log_events (LEAP_LOG_EVENTS).

enumerator eLeapEventType_HeadPose

A head pose.

The message contains the timestamped head position and orientation. This event is no longer generated, enum present for historic API compatibility.

Since

4.1.0

enumerator eLeapEventType_Eyes

Tracked eye positions.

Since

4.1.0 This event is no longer generated, enum present for historic API compatibility.

enumerator eLeapEventType_IMU

An IMU reading.

Since

4.1.0 This event is stored in union member imu_event (LEAP_IMU_EVENT).

enumerator eLeapEventType_NewDeviceTransform

Notification that the service received a new device transformation matrix Use LeapGetDeviceTransform to update your cached information.

Since

5.13.0

enumerator eLeapEventType_Fiducial

Support for Fiducial Marker Tracking.

This experimental feature enables the detection of fiducial markers (AprilTags) and provides the pose data for markers alongside hands. There are no limits on the number of markers which can be tracked, however, the more tags being tracked the system performance will be reduced.

Guidelines for usage:

  1. Enable fiducial marker tracking by adding a “fiducial_tracker” section to the “hand_tracker_config.json” file:

    "fiducial_tracker": {
      "family": "TagStandard41h12", // AprilTag family to track.
      "size": 0.05, // Width of the tag in meters, e.g. 50mm
      "frequency": 1 // Frequency of tracking (1 = every frame)
    }
    

  2. To maximise the tag tracking range, enable the “full_res_fiducials” setting outside the “fiducial_tracker” block:

    ”full_res_fiducials”: true

    With a marker width of 50mm (0.05m), we expect markers to perform well at a distance of up to 500mm using the Leap2 camera and ‘full_res_fiducials’.

  3. When a fiducial marker is detected, a notification event is triggered. The pose data for the detected marker is stored in the “fiducial_pose_event” union member.

Note:

  • Fiducial marker tracking can only be enabled through the configuration file.

  • The “family” parameter specifies the AprilTag family to track (e.g., TagStandard41h12).

  • The “size” parameter defines the width of the tag in meters.

  • The “frequency” parameter determines how often the tracking should occur (1 = every frame).

Use Cases:

  • Object placement and interaction in AR/VR environments

  • Spatial mapping and navigation in training simulations

  • Interactive training scenarios and feedback

Generating Markers:

AprilTags can be generated using various online tools or libraries. One popular option is the AprilTag generation tool (https://github.com/AprilRobotics/apriltag-generation) which provides a web interface for creating and customising AprilTag markers.

The TagStandard41h12 and TagStandard36h11 libraries have been tested extensively, however, it may work with others. Downloaded or printed markers can then be placed in the physical environment for tracking.

Optimising Marker Performance:

  1. Maximise the visible contrast of markers ideally printing onto non-reflective, rigid, surfaces.

  2. Position markers within the optimal tracking range specified by the marker size. Larger markers will achieve longer range.

  3. Experiment with different marker sizes, tracking frequency, and families to find the best balance between range and accuracy.

Since

6.0.0

enum eLeapRecordingFlags

Defines the recording mode provided to the LeapRecordingOpen() function.

Also used in members of LEAP_RECORDING_PARAMETERS and LEAP_RECORDING_STATUS.

Since

3.2.0

Values:

enumerator eLeapRecordingFlags_Error
enumerator eLeapRecordingFlags_Reading
enumerator eLeapRecordingFlags_Writing
enumerator eLeapRecordingFlags_Flushing
enumerator eLeapRecordingFlags_Compressed
enum eLeapVersionPart

Defines the parameters used to access version information.

Since

5.2.x

Values:

enumerator eLeapVersionPart_ClientLibrary

The parameter for requesting the version of the client.

Since

5.2.x

enumerator eLeapVersionPart_ClientProtocol

The parameter for requesting the protocol version of the client.

Since

5.2.x

enumerator eLeapVersionPart_ServerLibrary

The parameter for requesting the version of the server.

Since

5.2.x

enumerator eLeapVersionPart_ServerProtocol

The parameter for requesting the protocol version of the server.

Since

5.2.x