Go to the documentation of this file.
17 #include "grpc++/grpc++.h"
18 #include "protodefinitions/Devices.pb.h"
19 #include "protodefinitions/Hermes.pb.h"
20 #include "protodefinitions/Pipeline.pb.h"
21 #include "protodefinitions/Landscape.pb.h"
22 #include "protodefinitions/Session.pb.h"
23 #include "protodefinitions/ParameterSet.pb.h"
24 #include "protodefinitions/Hermes.grpc.pb.h"
42 std::atomic<bool> m_isRunning;
45 std::wstring CareTaker::GetVersionDir();
47 void DeviceDataSubscriberThreadFunction();
48 void DeviceLandscapeSubscriberThreadFunction();
49 void PolygonDataSubscriberThreadFunction();
50 void TrackingDataSubscriberThreadFunction();
51 void HeartbeatThreadFunction();
52 void RestartThreadFunction();
58 bool initHapticsSocket();
60 static std::vector<uint8_t> Decompress(
const std::vector<uint8_t> &in );
61 static size_t LzfDecompress(
const std::vector<uint8_t> &in, std::vector<uint8_t> &out );
63 std::shared_ptr<grpc::Channel> m_Channel;
64 std::unique_ptr<Hermes::Protocol::Hermes::Stub> m_Stub;
66 const std::string m_clientName;
67 const std::string m_clientDescription;
73 std::unique_ptr<std::thread> m_deviceDataThread;
74 std::unique_ptr<std::thread> m_deviceLandscapeThread;
75 std::unique_ptr<std::thread> m_polygonDataThread;
76 std::unique_ptr<std::thread> m_trackingDataThread;
77 std::unique_ptr<std::thread> m_heartbeatThread;
79 std::unique_ptr<std::thread> m_RestartThread;
93 const std::string &clientInfo,
107 bool Rumble( uint32_t deviceId,
float unitStrength, uint16_t durationInMilliseconds );
108 bool SendHapticData( uint32_t _dongleId, Hermes::Protocol::HandType _handType,
const std::array<float, 5>& _powers );
124 bool RemoveTargetSkeleton( std::string &_Name );
std::function< void(const Hermes::Protocol::TrackerData &_data)> trackingDataCallback
Typedef to support callback for tracking data.
Definition: HermesCallbackTypes.hpp:124
Definition: Skeleton.proto:113
Definition: CareTaker.hpp:40
bool SendHapticData(uint32_t _dongleId, Hermes::Protocol::HandType _handType, const std::array< float, 5 > &_powers)
Definition: CareTaker.cpp:449
Definition: Pipeline.proto:17
void Stop()
Definition: CareTaker.cpp:344
std::function< void(void)> connectedToCoreCallback
Typedef to support callback on connect to manus core.
Definition: HermesCallbackTypes.hpp:130
Definition: User.proto:13
Definition: Session.proto:50
bool Rumble(uint32_t deviceId, float unitStrength, uint16_t durationInMilliseconds)
Definition: CareTaker.cpp:381
Definition: Skeleton.proto:99
All the tracker data that can be sent or received.
Definition: CoreSdkWrapperTypes.h:588
bool GetFilterInventory(Hermes::Protocol::FilterInventory &inventory) const
Definition: CareTaker.cpp:495
std::function< void(void)> disconnectedFromCoreCallback
Typedef to support callback on disconnect from manus core.
Definition: HermesCallbackTypes.hpp:132
Definition: Polygon.proto:16
bool IsRunning()
Definition: CareTaker.cpp:1023
std::function< void(const Hermes::Protocol::Devices &_devices)> deviceDataCallback
Typedef to support callback for device data.
Definition: HermesCallbackTypes.hpp:118
std::function< void(const ErrorMessage &msg)> errorMessageCallback
Typedef to support callback for error messages.
Definition: HermesCallbackTypes.hpp:128
bool SetPipeline(Hermes::Protocol::Pipeline *pipeline)
Definition: CareTaker.cpp:534
Definition: Polygon.proto:22
Definition: Version.proto:4
Hermes::Protocol::Pipeline * GetActivePipeline()
Definition: CareTaker.cpp:514
Definition: Session.proto:11
Definition: Pipeline.proto:23
std::function< void(const Hermes::Protocol::Polygon::Data &_data)> polygonDataCallback
Typedef to support callback for Polygon data.
Definition: HermesCallbackTypes.hpp:122
std::function< void(const Hermes::Protocol::Hardware::DeviceLandscape &_landscape)> deviceLandscapeCallback
Typedef to support callback for landscape (connected devices) data.
Definition: HermesCallbackTypes.hpp:120
void Connect(const Hermes::Protocol::ServiceRoute &_coordinatorRoute)
Definition: CareTaker.cpp:292
std::function< void(Hermes::Protocol::Pipeline &_pipeline)> filterSetupCallback
Typedef to support callback for filter pipeline data.
Definition: HermesCallbackTypes.hpp:126
Definition: Skeleton.proto:82
Definition: RetargetParameters.proto:47
Definition: Tracker.proto:27
CareTaker(const std::string &clientName, const std::string &clientInfo, filterSetupCallback &_onFilterSetup, deviceDataCallback &_onDeviceData, deviceLandscapeCallback &_onDeviceLandscape, polygonDataCallback &_onPolygonData, trackingDataCallback &_onTrackingData, errorMessageCallback &onError, connectedToCoreCallback &_onConnectedToCore, disconnectedFromCoreCallback &_onDisconnectedFromCore)
Definition: CareTaker.cpp:70