Update to the 2019 wpilib
Lots of gratuitious incompatibilities to deal with. Started sanifying a
few classes rather than figuring out how to update them too. Has not yet
been tested on a robot, but everything still builds so it should be
fine.
Also ported over our FPGA timestamp fixes, which were previously only in
allwpilib_2018.
Also upgraded to the new roborio compiler, which has to happen at the
same time due to incompatible pre-compiled libraries.
Change-Id: Ib9b6ad8fc0112d90a9855afe1b706588ef4ebde9
diff --git a/frc971/wpilib/ahal/InterruptableSensorBase.h b/frc971/wpilib/ahal/InterruptableSensorBase.h
index e19e09b..59ddc9e 100644
--- a/frc971/wpilib/ahal/InterruptableSensorBase.h
+++ b/frc971/wpilib/ahal/InterruptableSensorBase.h
@@ -9,9 +9,10 @@
#include <memory>
-#include "HAL/Interrupts.h"
#include "frc971/wpilib/ahal/AnalogTriggerType.h"
#include "frc971/wpilib/ahal/SensorBase.h"
+#include "hal/Interrupts.h"
+#include "hal/cpp/fpga_clock.h"
namespace frc {
@@ -26,24 +27,36 @@
InterruptableSensorBase();
virtual ~InterruptableSensorBase() = default;
+
virtual HAL_Handle GetPortHandleForRouting() const = 0;
virtual AnalogTriggerType GetAnalogTriggerTypeForRouting() const = 0;
- virtual void RequestInterrupts(
- HAL_InterruptHandlerFunction handler,
- void *param); ///< Asynchronous handler version.
- virtual void RequestInterrupts(); ///< Synchronous Wait version.
- virtual void
- CancelInterrupts(); ///< Free up the underlying chipobject functions.
- virtual WaitResult WaitForInterrupt(
- double timeout,
- bool ignorePrevious = true); ///< Synchronous version.
- virtual void
- EnableInterrupts(); ///< Enable interrupts - after finishing setup.
- virtual void DisableInterrupts(); ///< Disable, but don't deallocate.
- virtual double ReadRisingTimestamp(); ///< Return the timestamp for the
- /// rising interrupt that occurred.
- virtual double ReadFallingTimestamp(); ///< Return the timestamp for the
- /// falling interrupt that occurred.
+
+ // Requests interrupts in synchronous mode. This means you should call
+ // WaitForInterrupt to receive interrupts.
+ virtual void RequestInterrupts();
+
+ // Prevents any more interrupts from occuring.
+ virtual void CancelInterrupts();
+
+ // Waits for an interrupt or timeout to occur.
+ //
+ // Must be synchronized with all other operations on the input.
+ //
+ // timeout is in seconds.
+ virtual WaitResult WaitForInterrupt(double timeout,
+ bool ignorePrevious = true);
+
+ // Enables interrupts to occur based on the current configuration.
+ virtual void EnableInterrupts();
+
+ // Returns the timestamp for the most recent rising interrupt.
+ virtual hal::fpga_clock::time_point ReadRisingTimestamp();
+ // Returns the timestamp for the most recent falling interrupt.
+ virtual hal::fpga_clock::time_point ReadFallingTimestamp();
+
+ // Configures which edges to interrupt on.
+ //
+ // The default is on rising edges only.
virtual void SetUpSourceEdge(bool risingEdge, bool fallingEdge);
protected: