14 #include <hal/cpp/fpga_clock.h>
15 #include <wpi/SafeThread.h>
16 #include <wpi/StringMap.h>
17 #include <wpi/StringRef.h>
39 Watchdog(
double timeout, std::function<
void()> callback);
41 template <
typename Callable,
typename Arg,
typename... Args>
42 Watchdog(
double timeout, Callable&& f, Arg&& arg, Args&&... args)
44 std::bind(std::forward<Callable>(f), std::forward<Arg>(arg),
45 std::forward<Args>(args)...)) {}
50 Watchdog& operator=(Watchdog&&) =
default;
119 static constexpr std::chrono::milliseconds kMinPrintPeriod{1000};
121 hal::fpga_clock::time_point m_startTime;
122 std::chrono::microseconds m_timeout;
123 hal::fpga_clock::time_point m_expirationTime;
124 std::function<void()> m_callback;
125 hal::fpga_clock::time_point m_lastTimeoutPrintTime = hal::fpga_clock::epoch();
126 hal::fpga_clock::time_point m_lastEpochsPrintTime = hal::fpga_clock::epoch();
129 bool m_isExpired =
false;
131 bool m_suppressTimeoutMessage =
false;
136 bool operator>(
const Watchdog& rhs);
WPILib FRC namespace.
Definition: SPIAccelerometerSim.h:18
void SuppressTimeoutMessage(bool suppress)
Enable or disable suppression of the generic timeout message.
void Enable()
Enables the watchdog timer.
double GetTimeout() const
Returns the watchdog's timeout in seconds.
bool IsExpired() const
Returns true if the watchdog timer has expired.
void Reset()
Resets the watchdog timer.
double GetTime() const
Returns the time in seconds since the watchdog was last fed.
void PrintEpochs()
Prints list of epochs added so far and their times.
void SetTimeout(double timeout)
Sets the watchdog's timeout.
void Disable()
Disables the watchdog timer.
A class that's a wrapper around a watchdog timer.
Definition: Watchdog.h:30
StringRef - Represent a constant reference to a string, i.e.
Definition: StringRef.h:49
Watchdog(double timeout, std::function< void()> callback)
Watchdog constructor.
void AddEpoch(wpi::StringRef epochName)
Adds time since last epoch to the list printed by PrintEpochs().