82 void AddPeriodic(std::function<
void()> callback, units::second_t period,
83 units::second_t offset = 0_s);
88 std::function<void()> func;
89 std::chrono::microseconds period;
90 std::chrono::microseconds expirationTime;
100 Callback(std::function<
void()> func, std::chrono::microseconds startTime,
101 std::chrono::microseconds period, std::chrono::microseconds offset)
102 : func{
std::move(func)},
105 startTime + offset + period +
110 bool operator>(
const Callback& rhs)
const {
111 return expirationTime > rhs.expirationTime;
116 std::chrono::microseconds m_startTime;
117 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:32
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
void EndCompetition() override
Ends the main loop in StartCompetition().
TimedRobot & operator=(TimedRobot &&)=default
static constexpr auto kDefaultPeriod
Default loop period.
Definition TimedRobot.h:35
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