PSMoveSteamVRBridge
watchdog.h
1 #pragma once
2 #include <chrono>
3 #include <atomic>
4 #include <thread>
5 #include <mutex>
6 
7 #include <openvr_driver.h>
8 #include "settings_util.h"
9 #include "PSMoveClient_CAPI.h"
10 
11 namespace steamvrbridge {
12 
13  /*
14  IClientTrackedDeviceProvider implementation as per:
15  https://github.com/ValveSoftware/openvr/wiki/IClientTrackedDeviceProvider_Overview
16  */
17  class CWatchdogDriver_PSMoveService : public vr::IVRWatchdogProvider
18  {
19  public:
22 
23  static CWatchdogDriver_PSMoveService * getInstance() {
24  if (m_instance == nullptr)
25  m_instance = new CWatchdogDriver_PSMoveService();
26 
27  return m_instance;
28  }
29 
30  // Inherited via IClientTrackedDeviceProvider
31  virtual vr::EVRInitError Init(vr::IVRDriverContext *pDriverContext);
32  virtual void Cleanup() override;
33 
34  protected:
35  void WorkerThreadFunction();
36  void WatchdogLogVarArgs(const char *pMsgFormat, va_list args);
37  void WatchdogLog(const char *pMsgFormat, ...);
38 
39  private:
40  class vr::IVRDriverLog * m_pLogger;
41  std::mutex m_loggerMutex;
42 
43  bool m_bWasConnected;
44  std::atomic_bool m_bExitSignaled;
45  std::thread *m_pWatchdogThread;
46 
47  ServerDriverConfig m_config;
48 
49  PSMControllerList controllerList;
50 
51  static CWatchdogDriver_PSMoveService * m_instance;
52  };
53 }
Provides printf-style line logging via the vr::IVRDriverLog interface provided by SteamVR during init...
Definition: config.cpp:18
Definition: settings_util.h:8