PSMoveSteamVRBridge
trackable_device.h
1 #pragma once
2 #include "PSMoveClient_CAPI.h"
3 #include <openvr_driver.h>
4 #include <configuru.hpp>
5 
6 namespace steamvrbridge {
7 
8  /* A device tracked by OpenVR through its ITrackedDeviceServerDriver interface definition. It implements
9  the required features of an ITrackedDeviceServerDriver and also defines a standard interface for how this
10  class should be used.*/
11  class TrackableDevice : public vr::ITrackedDeviceServerDriver {
12  public:
13 
15  virtual ~TrackableDevice();
16 
17  // Shared Implementation of vr::ITrackedDeviceServerDriver
18  virtual vr::EVRInitError Activate(vr::TrackedDeviceIndex_t unObjectId) override;
19  virtual void Deactivate() override;
20  virtual void EnterStandby() override;
21  virtual void *GetComponent(const char *pchComponentNameAndVersion) override;
22  virtual void DebugRequest(const char * pchRequest, char * pchResponseBuffer, uint32_t unResponseBufferSize) override;
23  virtual vr::DriverPose_t GetPose() override;
24 
25  // TrackedDevice Interface
26  virtual vr::ETrackedDeviceClass GetTrackedDeviceClass() const;
27  virtual vr::ETrackedControllerRole GetTrackedDeviceRole() const;
28  virtual bool IsActivated() const;
29  virtual void Update();
30  virtual void RefreshWorldFromDriverPose();
31  PSMPosef GetWorldFromDriverPose();
32  virtual const char *GetSteamVRIdentifier() const;
33  virtual const vr::TrackedDeviceIndex_t getTrackedDeviceIndex();
34  inline vr::PropertyContainerHandle_t getPropertyContainerHandle() const { return m_ulPropertyContainer; }
35 
36  protected:
37  // OpenVR Properties
38  vr::PropertyContainerHandle_t m_ulPropertyContainer;
39 
40  // Tracked device identification
41  std::string m_strSteamVRSerialNo;
42 
43  // Tracked device role
44  vr::ETrackedControllerRole m_TrackedControllerRole;
45 
46  // Assigned by vrserver upon Activate(). The same ID visible to clients
47  vr::TrackedDeviceIndex_t m_unSteamVRTrackedDeviceId;
48 
49  // Cached for answering version queries from vrserver
50  vr::DriverPose_t m_Pose;
51  unsigned short m_firmware_revision;
52  unsigned short m_hardware_revision;
53  };
54 }
Provides printf-style line logging via the vr::IVRDriverLog interface provided by SteamVR during init...
Definition: config.cpp:18
Definition: trackable_device.h:11