35 lines
797 B
C++
35 lines
797 B
C++
#ifndef COMPLIB_SERVER_ENCODERS_HPP
|
|
#define COMPLIB_SERVER_ENCODERS_HPP
|
|
|
|
#include <array>
|
|
#include <cstdint>
|
|
#include "include/Cache.hpp"
|
|
#include "include/Robot.hpp"
|
|
|
|
class Encoders {
|
|
public:
|
|
static Encoders &getInstance() {
|
|
static Encoders instance;
|
|
return instance;
|
|
}
|
|
|
|
Encoders(Encoders const &) = delete;
|
|
|
|
void operator=(Encoders const &) = delete;
|
|
|
|
std::array<int32_t, ROBOT_MOTOR_COUNT> get_positions();
|
|
|
|
std::array<double, ROBOT_MOTOR_COUNT> get_velocities_rpm();
|
|
|
|
private:
|
|
Encoders() = default;
|
|
|
|
Cache position_cache{ROBOT_ENCODER_RATE_HZ};
|
|
Cache velocity_cache{ROBOT_ENCODER_RATE_HZ};
|
|
|
|
std::array<int32_t, ROBOT_MOTOR_COUNT> cached_positions = {0};
|
|
std::array<double, ROBOT_MOTOR_COUNT> cached_velocities_rpm = {0};
|
|
};
|
|
|
|
|
|
#endif //COMPLIB_SERVER_ENCODERS_HPP
|