14#include <units/frequency.h>
15#include <units/math.h>
16#include <units/time.h>
90 void AddPeriodic(std::function<
void()> callback, units::second_t period,
91 units::second_t offset = 0_s);
96 std::function<void()> func;
97 std::chrono::microseconds period;
98 std::chrono::microseconds expirationTime;
108 Callback(std::function<
void()> func, std::chrono::microseconds startTime,
109 std::chrono::microseconds period, std::chrono::microseconds offset)
110 : func{
std::move(func)},
113 startTime + offset + period +
118 bool operator>(
const Callback& rhs)
const {
119 return expirationTime > rhs.expirationTime;
124 std::chrono::microseconds m_startTime;
125 uint64_t m_loopStartTimeUs = 0;
IterativeRobotBase implements a specific type of robot program framework, extending the RobotBase cla...
Definition IterativeRobotBase.h:57
Definition RobotController.h:33
TimedRobot implements the IterativeRobotBase robot program framework.
Definition TimedRobot.h:33
void AddPeriodic(std::function< void()> callback, units::second_t period, units::second_t offset=0_s)
Add a callback to run at a specific period with a starting time offset.
uint64_t GetLoopStartTime()
Return the system clock time in micrseconds for the start of the current periodic loop.
TimedRobot(units::second_t period=kDefaultPeriod)
Constructor for TimedRobot.
TimedRobot(TimedRobot &&)=default
TimedRobot(units::hertz_t frequency)
Constructor for TimedRobot.
void EndCompetition() override
Ends the main loop in StartCompetition().
TimedRobot & operator=(TimedRobot &&)=default
static constexpr auto kDefaultPeriod
Default loop period.
Definition TimedRobot.h:36
void StartCompetition() override
Provide an alternate "main loop" via StartCompetition().
A move-only C++ wrapper around a HAL handle.
Definition Types.h:96
This class is the same as std::priority_queue with two changes:
Definition priority_queue.h:27
Implement std::hash so that hash_code can be used in STL containers.
Definition PointerIntPair.h:280