16#include "wpi/units/frequency.hpp"
17#include "wpi/units/time.hpp"
88 void AddPeriodic(std::function<
void()> callback, wpi::units::second_t period,
89 wpi::units::second_t offset = 0_s);
94 std::function<void()> func;
95 std::chrono::microseconds period;
96 std::chrono::microseconds expirationTime;
106 Callback(std::function<
void()> func, std::chrono::microseconds startTime,
107 std::chrono::microseconds period, std::chrono::microseconds offset)
108 : func{
std::move(func)},
111 startTime + offset + period +
116 bool operator>(
const Callback& rhs)
const {
117 return expirationTime > rhs.expirationTime;
121 wpi::hal::Handle<HAL_NotifierHandle, HAL_DestroyNotifier> m_notifier;
122 std::chrono::microseconds m_startTime;
123 uint64_t m_loopStartTimeUs = 0;
125 wpi::util::priority_queue<Callback, std::vector<Callback>,
126 std::greater<Callback>>
IterativeRobotBase(wpi::units::second_t period)
Constructor for IterativeRobotBase.
Definition RobotController.hpp:25
TimedRobot(wpi::units::hertz_t frequency)
Constructor for TimedRobot.
TimedRobot(TimedRobot &&)=default
uint64_t GetLoopStartTime()
Return the system clock time in microseconds for the start of the current periodic loop.
static constexpr auto kDefaultPeriod
Default loop period.
Definition TimedRobot.hpp:34
void StartCompetition() override
Provide an alternate "main loop" via StartCompetition().
TimedRobot & operator=(TimedRobot &&)=default
void EndCompetition() override
Ends the main loop in StartCompetition().
TimedRobot(wpi::units::second_t period=kDefaultPeriod)
Constructor for TimedRobot.
void AddPeriodic(std::function< void()> callback, wpi::units::second_t period, wpi::units::second_t offset=0_s)
Add a callback to run at a specific period with a starting time offset.
Definition StringMap.hpp:773
Definition CvSource.hpp:15