This repository has been archived on 2025-06-01. You can view files and clone it, but you cannot make any changes to it's state, such as pushing and creating new issues, pull requests or comments.
compLIB/server_v2/include/OdometryController.hpp
2022-05-28 01:09:34 +02:00

51 lines
961 B
C++

#ifndef COMPLIB_SERVER_ODOMETRYCONTROLLER_HPP
#define COMPLIB_SERVER_ODOMETRYCONTROLLER_HPP
#include <thread>
#include <mutex>
#include <chrono>
#include "include/Odometry.hpp"
class OdometryController {
public:
static OdometryController &getInstance() {
static OdometryController instance;
return instance;
}
OdometryController(OdometryController const &) = delete;
void operator=(OdometryController const &) = delete;
void enable();
void disable();
void reset();
Odometry get();
[[nodiscard]] bool is_enabled() const;
private:
typedef std::chrono::steady_clock clock;
OdometryController();
std::thread odometry_thread;
std::recursive_mutex odometry_mutex;
[[noreturn]] void odometry_loop();
Odometry current_odometry{};
bool enabled = false;
double last_position_left{0};
double last_position_right{0};
std::chrono::time_point<clock> last_run;
};
#endif //COMPLIB_SERVER_ODOMETRYCONTROLLER_HPP