Hermes SDK Documentation
Classes | Enumerations | Functions | Variables
Hermes::Protocol Namespace Reference

Classes

struct  AdvertisingHapticsModules
 
struct  AssignRoleToTrackerArgs
 
struct  AssignTrackerToUserArgs
 
struct  CalibrationProfile
 
struct  ChangeUserForRoleArgs
 
struct  Color
 
struct  CompleteMessage
 
struct  CoordinateSystem
 
struct  CoordinateSystemDirection
 
struct  CoordinateSystemVUH
 
struct  DeleteHapticsSequenceCommandArgs
 
struct  Devices
 
struct  Diagnostics
 
struct  ExtraTrackerOffset
 
struct  Filter
 
struct  FilterInventory
 
struct  Finger
 
struct  Glove
 
struct  GloveInfo
 
struct  GloveRaw
 
struct  HapticsModuleAdvertisement
 
struct  HiveNode
 
struct  Mat44
 
struct  Measurement
 
struct  MeshConfig
 
struct  MeshNodeConfig
 
struct  Orientation
 
struct  Parameter
 
struct  ParameterSet
 
struct  Phalange
 
struct  Pipeline
 
struct  PipelineCommitArgs
 
struct  PlayHapticsSequenceCommandArgs
 
struct  ProfilerData
 
struct  Profiling
 
struct  ProfilingData
 
struct  Quat
 
struct  RawFinger
 
struct  SequenceData
 
struct  SequenceStateValue
 
struct  ServiceRoute
 
struct  Session
 
struct  SessionArguments
 
struct  SessionSet
 
struct  StartSequenceArg
 
struct  StepData
 
struct  StoreHapticsSequenceCommandArgs
 
struct  Tracker
 
struct  TrackerData
 
struct  TrackerDirection
 
struct  TrackerList
 
struct  TrackerOffset
 
struct  TrackerServiceSettings
 
struct  TrackerSystem
 
struct  TrackerSystemCollection
 
struct  TrackerSystemSetting
 
struct  TrackerSystemSettingBool
 
struct  TrackerSystemSettingFile
 
struct  TrackerSystemSettingInt
 
struct  TrackingSystemInfo
 
struct  TrackingSystemMessage
 
struct  Translation
 
struct  UpgradeNotification
 
struct  User
 
struct  UserCollection
 
struct  UserHandArgs
 
struct  UserProfile
 
struct  UserProfileArgs
 
struct  Vec3
 
struct  Version
 
struct  Void
 
struct  WrappedDevices
 
struct  WrappedTrackerData
 
struct  WristTransform
 

Enumerations

enum  UpdateMode { CheckOnly, StartUpdater }
 
enum  DefaultPorts { Nothing, HivePort }
 
enum  SequenceType { None, HandsOnly, BodyAdvanced, BodyAdvancedOnly }
 
enum  HandProfilePreset {
  NoHandData, PrimeTwoVive, PrimeTwoManus, StrapVive,
  StrapManus
}
 
enum  StepType {
  Invalid, ArcHandX, ArcHandZ, ArcLeftFootY,
  ArcRightFootY, ArcElbows, ArcLeftHandX, ArcLeftHandZ,
  ArcRightHandX, ArcRightHandZ, ArcPrayZ, PoseT,
  PoseAlignHand, PoseHipPoint, PoseHeadPoint, PoseNeckPoint,
  PoseLeftFootPoint, PoseRightFootPoint, PoseLeftElbow, PoseRightElbow,
  PoseLeftShoulder, PoseRightShoulder, PoseElbows, PoseShoulders,
  PoseHeadTop, PoseKnees
}
 
enum  SequenceState { Idle, InStep, Finished, NotStarted }
 
enum  CompleteType {
  Complete, Error, Replaced, NoPlayer,
  NoTrackers, NotValid, NoSkeleton, NoSequence,
  NoProfile, Busy
}
 
enum  FingerType { UnknownFinger, Regular, Thumb }
 
enum  HandType { UnknownChirality, Left, Right }
 
enum  GloveVersion { UnknownVersion, PrimeOne, PrimeTwo }
 
enum  ProfileType { Hands, FullBody }
 
enum  BodyMeasurements {
  PlayerHeight, SpineLength, NeckLength, UpperArmLength,
  LowerArmLength, ArmLength, ArmSpan, UpperLegLength,
  LowerLegLength, LegLength, HandLength, FootLength,
  HipWidth, ShoulderWidth, ShoulderHeight, HeadLength,
  Thickness, ArmRatio, LegRatio
}
 
enum  OffsetsToTracker {
  HeadTrackerToHead, HeadTrackerToTopOfHead, LeftHandTrackerToWrist, RightHandTrackerToWrist,
  LeftFootTrackerToAnkle, RightFootTrackerToAnkle, HipTrackerToHip, HipTrackerToLeftLeg,
  HipTrackerToRightLeg, LeftUpperArmTrackerToElbow, RightUpperArmTrackerToElbow, LeftUpperArmTrackerToShoulder,
  RightUpperArmTrackerToShoulder
}
 
enum  ExtraOffsetToTracker { ExtraOffsetToTracker_Unknown, ExtraOffsetToTracker_HeadForward, ExtraOffsetToTracker_HipForward, ExtraOffsetToTracker_HipHeight }
 
enum  MeasurementUnit { Meters, Percentage }
 
enum  MeasurementCategory {
  Misc, Generic, Arms, Legs,
  Body
}
 
enum  coor_axis_t {
  CoorAxisZneg, CoorAxisYneg, CoorAxisXneg, CoorAxisXpos,
  CoorAxisYpos, CoorAxisZpos
}
 
enum  TrackerType {
  Unknown, Head, Waist, LeftHand,
  RightHand, LeftFoot, RightFoot, LeftUpperArm,
  RightUpperArm, LeftUpperLeg, RightUpperLeg, Controller,
  Camera
}
 
enum  TrackingQuality { Untrackable, BadTracking, Trackable }
 

Functions

rpc UpdateForest (Hardware::DeviceForest) returns(Void)
 
rpc UpdateProfile (Profiles::Profile) returns(Void)
 
rpc CanAcceptPipelineData (Void) returns(google
 
rpc UpdateHermes (HermesUpdateArgs) returns(HermesUpdateResponse)
 
rpc GetDebugMode (Void) returns(RuntimeDebugBehaviourArgs)
 
rpc SetDebugMode (RuntimeDebugBehaviourArgs) returns(Void)
 
rpc Login (SessionArguments) returns(Session)
 
rpc Logout (google::protobuf::StringValue) returns(Void)
 
rpc Heartbeat (Session) returns(Session)
 
rpc GetFilterInventory (Void) returns(FilterInventory)
 
rpc GetActivePipeline (google::protobuf::StringValue) returns(Pipeline)
 
rpc CommitPipeline (PipelineCommitArgs) returns(Void)
 
rpc GetServiceRoute (google::protobuf::StringValue) returns(ServiceRoute)
 
rpc Rumble (RumbleArgs) returns(Void)
 
*rpc SetDonglePolygon (DonglePolygonArgs) returns(SetPolygonDongleResponse)
 
rpc AddSkeleton (Polygon::Skeleton) returns(CompleteMessage)
 
rpc RemoveSkeleton (Polygon::RemoveSkeletonArgs) returns(CompleteMessage)
 
rpc SetSkeletonSettings (Polygon::Retargeting::SettingsArgs) returns(CompleteMessage)
 
rpc SetSkeletonTarget (Polygon::SetTargetArgs) returns(Void)
 
rpc GetCompatibleVersion (Void) returns(Polygon
 
rpc AddTargetSkeleton (Polygon::TargetSkeleton) returns(CompleteMessage)
 
rpc RemoveTargetSkeleton (google::protobuf::StringValue) returns(CompleteMessage)
 
rpc UpdateTargetSkeleton (Polygon::TargetSkeleton) returns(Void)
 
rpc UpdateTrackers (TrackerData) returns(Void)
 
rpc GetConnectedTrackerList (google::protobuf::Int32Value) returns(TrackerList)
 
rpc IsUserUsingHMD (google::protobuf::Int32Value) returns(google
 
rpc AutoGroupTrackers (Void) returns(Void)
 
rpc AutoAssignTrackers (google::protobuf::Int32Value) returns(Void)
 
rpc ResetTrackerAssignment (google::protobuf::Int32Value) returns(Void)
 
rpc AssignTrackerToUser (AssignTrackerToUserArgs) returns(Void)
 
rpc AssignRoleToTracker (AssignRoleToTrackerArgs) returns(Void)
 
rpc ChangeUserForRole (ChangeUserForRoleArgs) returns(Void)
 
rpc SetTrackingSystem (google::protobuf::StringValue) returns(Void)
 
rpc GetTrackingSystems (Void) returns(TrackingSystemMessage)
 
rpc KeepLastPosition (google::protobuf::BoolValue) returns(Void)
 
rpc UseTimeout (google::protobuf::BoolValue) returns(Void)
 
rpc SetTimeout (google::protobuf::FloatValue) returns(Void)
 
rpc GetTrackerServiceSettings (Void) returns(TrackerServiceSettings)
 
rpc GetTrackerSystemsSettings (Void) returns(TrackerSystemCollection)
 
rpc SetTrackerSystemsSettings (TrackerSystemCollection) returns(Void)
 
rpc CalibrateHapticsModule (HapticCommandArgs) returns(Void)
 
rpc GetHapticsDataSocket (Void) returns(ServiceRoute)
 
rpc StartHapticsPairing (google::protobuf::UInt32Value) returns(Void)
 
rpc StopHapticsPairing (google::protobuf::UInt32Value) returns(Void)
 
rpc GetAdvertisingHapticsModules (google::protobuf::UInt32Value) returns(AdvertisingHapticsModules)
 
rpc PairHapticsModule (PairingArgs) returns(Void)
 
rpc TurnHapticsModuleOff (HapticCommandArgs) returns(Void)
 
rpc SetHapticsSequence (StoreHapticsSequenceCommandArgs) returns(Void)
 
rpc PlayHapticsSequence (PlayHapticsSequenceCommandArgs) returns(Void)
 
rpc DeleteHapticsSequence (DeleteHapticsSequenceCommandArgs) returns(Void)
 
rpc StartSequence (StartSequenceArg) returns(SequenceData)
 
rpc StopSequence (google::protobuf::Int32Value) returns(CompleteMessage)
 
rpc StartNextStep (google::protobuf::Int32Value) returns(CompleteMessage)
 
rpc UndoStep (google::protobuf::Int32Value) returns(CompleteMessage)
 
rpc GetSequenceState (google::protobuf::Int32Value) returns(SequenceStateValue)
 
rpc GetStepData (google::protobuf::Int32Value) returns(StepData)
 
rpc GetCalibrationProfile (google::protobuf::Int32Value) returns(CalibrationProfile)
 
rpc ApplyProfile (google::protobuf::Int32Value) returns(CompleteMessage)
 
rpc AddUser (Void) returns(User)
 
rpc RemoveUser (google::protobuf::Int32Value) returns(CompleteMessage)
 
rpc AssignHandToUser (UserHandArgs) returns(CompleteMessage)
 
rpc AssignProfileToUser (UserProfileArgs) returns(CompleteMessage)
 
rpc GetAllUsers (Void) returns(UserCollection)
 
rpc MoveUserUp (google::protobuf::Int32Value) returns(Void)
 
rpc MoveUserDown (google::protobuf::Int32Value) returns(Void)
 
rpc ConvertUserIDToUserIndex (google::protobuf::Int32Value) returns(google
 
rpc GetBandScan (BandScanArgs) returns(BandScanInfo)
 
rpc SetChannel (ChannelSelectionArgs) returns(google
 
rpc SetPersistentDongleChannels (google::protobuf::BoolValue) returns(Void)
 
rpc AreDongleChannelsPersistent (Void) returns(google
 
rpc LoadPlaybackParameters (Playback::PlaybackParameters) returns(google
 
rpc UnloadPlayback (Void) returns(google
 
rpc FeedPlaybackFrame (Playback::PlaybackFrame) returns(google
 
rpc SetSettingIgnoreThumbIMU (google::protobuf::BoolValue) returns(Void)
 
rpc GetSettingIgnoreThumbIMU (Void) returns(google
 
rpc SetSettingIgnoreNonThumbFingerIMU (google::protobuf::BoolValue) returns(Void)
 
rpc GetSettingIgnoreNonThumbFingerIMU (Void) returns(google
 

Variables

import google protobuf timestamp proto
 
service Hermes
 
service HapticsService
 
service DeviceForest
 
service Apollo
 

Detailed Description

option optimize_for = LITE_RUNTIME;

Enumeration Type Documentation

◆ coor_axis_t

Specifies how the 3d mesh model is setup at the client side (Unity/Unreal/etc) for the BasisConversionFilter. ExternalMeshNodeConfig defines the coordinate frame in a node/bone of the mesh. We assume that hand mesh bones are oriented in such a way that one axis points towards the tips of the fingers, one axis points out of the hand perpendicular to the palmar plane or the plane in which the finger nails would lie (in case of the thumb), and one axis perpendicular to the other two, usually designating the axis of rotation of the finger joints. For the world frame, forward = from viewer, right = right of viewer Some engines flip a coordinate frame axis to convert a right-handed coordinate frame to a left-handed coordinate frame This negation axis should also be specified for your application The bone that you try to describe has its x-Axis pointing towards the finger tip, its y-Axis pointing towards the palm and rotates around the z-Axis, which points left. In this case, upDirection = CoorAxisY_NEG (the negation of the y-Axis points to the back of the hand), forwardDirection = CoorAxisX_POS, and rightDirection = CoorAxisZ_NEG (the negation of the z-Axis points right according to the above definition)

Attention
the upAxis for the thumb refers to the direction outward from the back of the thumb, and its rightAxis refers to the direction pointing right when looking at the back of the thumb (i.e. the side on which the nail is) For an illustration check out the online documentation for the Apollo Network SDK
Enumerator
CoorAxisZneg 

proto forces enums to begin at 0 https://developers.google.com/protocol-buffers/docs/proto3#enum

◆ DefaultPorts

Enumerator
Nothing 

option allow_alias = true;

◆ FingerType

Enums.

◆ StepType

Enumerator
ArcHandX 

Arcs

PoseT 

Poses

◆ UpdateMode

Shared mode for firmware & application updates.

Function Documentation

◆ AddSkeleton()

rpc Hermes::Protocol::AddSkeleton ( Polygon::Skeleton  )

SetLicense (LicenseArgs ) returns SetLicenseDongleResponse rpc Pair( PairingArgs ) returns ( Void ) {}; rpc Unpair( PairingArgs ) returns ( Void ) {}; rpc Bootloader( BootloaderArgs ) returns ( Void ) {}; rpc CalibrationSetMin( CalibrationArgs ) returns ( google::protobuf::BoolValue ) {}; rpc CalibrationSetMax( CalibrationArgs ) returns ( google::protobuf::BoolValue ) {}; rpc CalibrationStore( CalibrationArgs ) returns ( google::protobuf::BoolValue ) {}; rpc CalibrationBegin ( CalibrationArgs ) returns ( google::protobuf::BoolValue ) {}; rpc CalibrationEnd ( CalibrationArgs ) returns ( google::protobuf::BoolValue ) {}; rpc CalibrationDataGet ( CalibrationArgs ) returns ( Embedded::CalibrationData ) {}; rpc CalibrationDataSet ( CalibrationArgs ) returns ( google::protobuf::BoolValue ) {}; rpc UpdateDongleFirmware( DongleUpdateArgs ) returns ( DongleUpdateResponse ) {}; /** Polygon

◆ AddUser()

rpc Hermes::Protocol::AddUser ( Void  )

Users

◆ CalibrateHapticsModule()

rpc Hermes::Protocol::CalibrateHapticsModule ( HapticCommandArgs  )

Haptics

◆ CommitPipeline()

rpc Hermes::Protocol::CommitPipeline ( PipelineCommitArgs  )

Commit a new pipeline, setting it as the currently active pipeline

◆ GetActivePipeline()

rpc Hermes::Protocol::GetActivePipeline ( google::protobuf::StringValue  )

Get the currently active filter pipeline

◆ GetBandScan()

rpc Hermes::Protocol::GetBandScan ( BandScanArgs  )

channels

◆ GetFilterInventory()

rpc Hermes::Protocol::GetFilterInventory ( Void  )

/ Pipeline related client api. Get Inventory of currently available filters

◆ GetServiceRoute()

rpc Hermes::Protocol::GetServiceRoute ( google::protobuf::StringValue  )

Route api for services.

◆ GetTrackerSystemsSettings()

rpc Hermes::Protocol::GetTrackerSystemsSettings ( Void  )

TrackerSystem Settings

◆ Heartbeat()

rpc Hermes::Protocol::Heartbeat ( Session  )

Send a heartbeat to Hermes. If a session misses too many of these in a row, Hermes will assume that the session is dead.

◆ LoadPlaybackParameters()

rpc Hermes::Protocol::LoadPlaybackParameters ( Playback::PlaybackParameters  )

Recording Playback

◆ Login()

rpc Hermes::Protocol::Login ( SessionArguments  )

/ Client Session API Log in to a Hermes session

◆ Logout()

rpc Hermes::Protocol::Logout ( google::protobuf::StringValue  )

Log out of a Hermes session

◆ Rumble()

rpc Hermes::Protocol::Rumble ( RumbleArgs  )

These are all the ones that reach the devices.

◆ SetSettingIgnoreThumbIMU()

rpc Hermes::Protocol::SetSettingIgnoreThumbIMU ( google::protobuf::BoolValue  )

Settings

◆ StartSequence()

rpc Hermes::Protocol::StartSequence ( StartSequenceArg  )

Calibration

◆ UpdateForest()

rpc Hermes::Protocol::UpdateForest ( Hardware::DeviceForest  )

Called by services to update Hermes with new device landscape (connected devices) data.

◆ UpdateHermes()

rpc Hermes::Protocol::UpdateHermes ( HermesUpdateArgs  )

Check for, or perform, a maintenance update on Hermes.

◆ UpdateProfile()

rpc Hermes::Protocol::UpdateProfile ( Profiles::Profile  )

Called by services to update Hermes with new profile data.

◆ UpdateTrackers()

rpc Hermes::Protocol::UpdateTrackers ( TrackerData  )

Trackers

Variable Documentation

◆ Apollo

service Hermes::Protocol::Apollo
Initial value:
{
rpc Rumble(RumbleArgs) returns (Void) {}

These are things that are called FROM the coordinator above (it feels icky, I know), into the Apollo service, which will then call Apollo 2019 proper. Client.Rumble() -> CoordintorApi -> ApolloApi -> Apollo2019 -> USB.

◆ DeviceForest

service Hermes::Protocol::DeviceForest
Initial value:
{
}

These are things that are called FROM the coordinator above (it feels icky, I know), into the DeviceForest service, which will then propagate it to the usb device. Client.Rumble() -> CoordintorApi -> DeviceForestApi -> DeviceForest -> USB. todo we gotta remove this (and so much more) since we don't internally use the rpc calls anymore

◆ HapticsService

service Hermes::Protocol::HapticsService
Initial value:
{
rpc CalibrateHapticsModule( HapticCommandArgs ) returns ( Void ) {}

◆ Hermes

service Hermes::Protocol::Hermes
Initial value:
{
rpc UpdatePipelines( Devices ) returns ( Void ) {}

Hermes service api.

◆ proto

import protodefinitions Manus Gloves Hermes::Protocol::proto

import "protodefinitions/Common.proto";

Hermes::Protocol::Rumble
rpc Rumble(RumbleArgs) returns(Void)
Definition: Hermes.proto:77
Hermes::Protocol::CalibrateHapticsModule
rpc CalibrateHapticsModule(HapticCommandArgs) returns(Void)
Definition: Hermes.proto:124