/*----------------------------------------------------------------------------*/ | |
/* 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 INTERRUPTABLE_SENSORBASE_H_ | |
#define INTERRUPTABLE_SENSORBASE_H_ | |
#include "ChipObject.h" | |
#include "SensorBase.h" | |
class InterruptableSensorBase : public SensorBase | |
{ | |
public: | |
InterruptableSensorBase(); | |
virtual ~InterruptableSensorBase(); | |
virtual void RequestInterrupts(tInterruptHandler handler, void *param) = 0; ///< Asynchronus handler version. | |
virtual void RequestInterrupts() = 0; ///< Synchronus Wait version. | |
virtual void CancelInterrupts(); ///< Free up the underlying chipobject functions. | |
virtual void WaitForInterrupt(float timeout); ///< Synchronus version. | |
virtual void EnableInterrupts(); ///< Enable interrupts - after finishing setup. | |
virtual void DisableInterrupts(); ///< Disable, but don't deallocate. | |
virtual double ReadInterruptTimestamp(); ///< Return the timestamp for the interrupt that occurred. | |
protected: | |
tInterrupt *m_interrupt; | |
tInterruptManager *m_manager; | |
UINT32 m_interruptIndex; | |
void AllocateInterrupts(bool watcher); | |
}; | |
#endif | |