File plugin.hpp
File List > lighthouse > plugin.hpp
Go to the documentation of this file
#pragma once
// ILLIXR includes
#include "illixr/data_format/poses/head_pose.hpp"
#include "illixr/switchboard.hpp"
#include "illixr/threadloop.hpp"
#include "survive.h"
namespace ILLIXR {
class lighthouse : public threadloop {
public:
[[maybe_unused]] lighthouse(const std::string& name_, phonebook* pb_);
void stop() override;
// destructor
~lighthouse() override = default;
protected:
static void process_slow_pose(SurviveObject* so, survive_long_timecode timecode, const SurvivePose* pose);
void _p_thread_setup() override;
void _p_one_iteration() override;
skip_option _p_should_skip() override {
return skip_option::run;
}
private:
const std::shared_ptr<switchboard> switchboard_;
const std::shared_ptr<spdlog::logger> log_;
const std::shared_ptr<const relative_clock> clock_;
switchboard::writer<data_format::pose::head_pose_type> slow_pose_;
switchboard::writer<data_format::pose::fast_head_pose_type> fast_pose_;
SurviveContext* s_context_;
std::chrono::time_point<std::chrono::high_resolution_clock> last_time_;
int slow_pose_count_ = 0;
int fast_pose_count_ = 0;
};
} // namespace ILLIXR