FancySafeBot 0.0.1
A safe robotics library
Loading...
Searching...
No Matches
fsb_timing.h
1#ifndef FSB_TIMING_H
2#define FSB_TIMING_H
3
4#include <cstdint>
5#include <ctime>
6
7#include "fsb_types.h"
8
9namespace fsb
10{
11
21constexpr long MINIMUM_STEP_SIZE_NS = 10000;
22
26enum class TimingError : uint8_t
27{
31 SUCCESS = 0,
39 SLEEP_FAILED = 2,
48};
49
54{
55public:
56 PeriodicTimer() = default;
57
64 TimingError initialize(const timespec& step_size);
65
74
86 TimingError step(real_t& nominal_time, real_t& remainder);
87
88private:
89
91 timespec m_step_req = {};
93 timespec m_init = {};
95 timespec m_step_size = {};
96};
97
98
103} // namespace fsb
104
105#endif
Compute forward kinematics.
Definition fsb_timing.h:54
TimingError step(real_t &nominal_time, real_t &remainder)
Wait for next step.
Definition fsb_timing.cpp:144
TimingError initialize(const timespec &step_size)
Initialize periodic timer.
Definition fsb_timing.cpp:96
TimingError start()
Start timer.
Definition fsb_timing.cpp:130
constexpr long MINIMUM_STEP_SIZE_NS
Definition fsb_timing.h:21
TimingError
Timing error codes.
Definition fsb_timing.h:27
@ STEP_SIZE_LESS_THAN_MINIMUM
Step size must be specified greater than minimum.
@ MONOTONIC_CLOCK_FAILED
Failed to get monotonic clock time.
@ STEP_SIZE_BELOW_CLOCK_RESOLUTION
Step size must be specified above clock resolution.