/*----------------------------------------------------------------------------*/ | |
/* Copyright (c) FIRST 2008. All Rights Reserved. */ | |
/* Open Source Software - may be modified and shared by FRC teams. The code */ | |
/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib. */ | |
/*----------------------------------------------------------------------------*/ | |
#ifndef WATCHDOG_H | |
#define WATCHDOG_H | |
#include "ChipObject.h" | |
#include "SensorBase.h" | |
#include "Base.h" | |
/** | |
* Watchdog timer class. | |
* The watchdog timer is designed to keep the robots safe. The idea is that the robot program must | |
* constantly "feed" the watchdog otherwise it will shut down all the motor outputs. That way if a | |
* program breaks, rather than having the robot continue to operate at the last known speed, the | |
* motors will be shut down. | |
* | |
* This is serious business. Don't just disable the watchdog. You can't afford it! | |
* | |
* http://thedailywtf.com/Articles/_0x2f__0x2f_TODO_0x3a__Uncomment_Later.aspx | |
*/ | |
class Watchdog : public SensorBase | |
{ | |
public: | |
static const double kDefaultWatchdogExpiration = 0.5; | |
Watchdog(); | |
virtual ~Watchdog(); | |
bool Feed(); | |
void Kill(); | |
double GetTimer(); | |
double GetExpiration(); | |
void SetExpiration(double expiration); | |
bool GetEnabled(); | |
void SetEnabled(bool enabled); | |
bool IsAlive(); | |
bool IsSystemActive(); | |
private: | |
tWatchdog *m_fpgaWatchDog; | |
DISALLOW_COPY_AND_ASSIGN(Watchdog); | |
}; | |
#endif |