25 #ifndef INCLUDED_ThreadsafeBodyReporting_h_GUID_EB81AB60_6C5C_4A92_CD3D_ADFA62489F70 26 #define INCLUDED_ThreadsafeBodyReporting_h_GUID_EB81AB60_6C5C_4A92_CD3D_ADFA62489F70 32 #include <boost/optional.hpp> 33 #include <folly/ProducerConsumerQueue.h> 43 enum class ReportStatus { Valid, MutexLocked, NoReportAvailable };
47 makeReportWithStatus(ReportStatus status = ReportStatus::Valid) {
55 explicit operator bool()
const {
return status == ReportStatus::Valid; }
68 static std::unique_ptr<BodyReporting> make();
70 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
80 bool getReport(
double additionalPrediction,
BodyReport &report);
104 bool m_hasProcessModel =
false;
109 template <std::
size_t ArraySize>
struct QueueValue {
111 std::array<double, ArraySize> stateData;
115 using QueueValueType = QueueValue<13>;
118 folly::ProducerConsumerQueue<QueueValueType> m_queue;
127 using BodyReportingPtr = std::unique_ptr<BodyReporting>;
129 using BodyReportingVector = std::vector<BodyReportingPtr>;
133 #endif // INCLUDED_ThreadsafeBodyReporting_h_GUID_EB81AB60_6C5C_4A92_CD3D_ADFA62489F70
The main namespace for all C++ elements of the framework, internal and external.
Definition: namespace_osvr.dox:3
Definition: ThreadsafeBodyReporting.h:44
Header providing a C++ wrapper around TimeValueC.h.
A per-body class intended to marshall data coming from the tracking/processing thread back to the mai...
Definition: ThreadsafeBodyReporting.h:65
A structure defining a 3D (6DOF) rigid body pose: translation and rotation.
Definition: Pose3C.h:54
Definition: PoseState.h:164
Struct for combined velocity state.
Definition: ClientReportTypesC.h:87
Standardized, portable parallel to struct timeval for representing both absolute times and time inter...
Definition: TimeValueC.h:81
The matrix class, also used for vectors and row-vectors.
Definition: Matrix.h:127
A basically-constant-velocity model, with the addition of some damping of the velocities inspired by ...
Definition: PoseSeparatelyDampedConstantVelocity.h:43