Created WPILibRobotBase
To not depend on WPILib interfaces and make version changes easier
Change-Id: I90abb34c50798dd166bf7eadf359de5f635f6d82
diff --git a/frc971/wpilib/BUILD b/frc971/wpilib/BUILD
index c07b7f8..caada86 100644
--- a/frc971/wpilib/BUILD
+++ b/frc971/wpilib/BUILD
@@ -172,3 +172,13 @@
'//aos/common/logging:queue_logging',
],
)
+
+cc_library(
+ name = 'wpilib_robot_base',
+ hdrs = [
+ 'wpilib_robot_base.h',
+ ],
+ deps = [
+ '//aos/externals:wpilib',
+ ],
+)
diff --git a/frc971/wpilib/wpilib_robot_base.h b/frc971/wpilib/wpilib_robot_base.h
new file mode 100644
index 0000000..231a21a
--- /dev/null
+++ b/frc971/wpilib/wpilib_robot_base.h
@@ -0,0 +1,30 @@
+#ifndef FRC971_WPILIB_NEWROBOTBASE_H_
+#define FRC971_WPILIB_NEWROBOTBASE_H_
+
+#include "RobotBase.h"
+
+namespace frc971 {
+namespace wpilib {
+
+class WPILibRobotBase {
+public:
+ virtual void Run() = 0;
+};
+
+#define AOS_ROBOT_CLASS(_ClassName_) \
+ START_ROBOT_CLASS(::frc971::wpilib::WPILibAdapterRobot<_ClassName_>)
+
+template <typename T>
+class WPILibAdapterRobot : public RobotBase {
+ public:
+ void StartCompetition() override { robot_.Run(); }
+
+ private:
+ T robot_;
+};
+
+}
+}
+
+#endif // FRC971_WPILIB_NEWROBOTBASE_H_
+
diff --git a/y2014/wpilib/BUILD b/y2014/wpilib/BUILD
index c9aca05..7f9e819 100644
--- a/y2014/wpilib/BUILD
+++ b/y2014/wpilib/BUILD
@@ -28,6 +28,7 @@
'//frc971/wpilib:gyro_sender',
'//frc971/wpilib:dma_edge_counting',
'//frc971/wpilib:interrupt_edge_counting',
+ '//frc971/wpilib:wpilib_robot_base',
'//frc971/wpilib:encoder_and_potentiometer',
'//frc971/control_loops:queues',
'//frc971/wpilib:logging_queue',
diff --git a/y2014/wpilib/wpilib_interface.cc b/y2014/wpilib/wpilib_interface.cc
index 0278ebc..ebf2a8b 100644
--- a/y2014/wpilib/wpilib_interface.cc
+++ b/y2014/wpilib/wpilib_interface.cc
@@ -13,7 +13,7 @@
#include "AnalogInput.h"
#include "Compressor.h"
#include "Relay.h"
-#include "RobotBase.h"
+#include "frc971/wpilib/wpilib_robot_base.h"
#include "dma.h"
#ifndef WPILIB2015
#include "DigitalGlitchFilter.h"
@@ -677,14 +677,14 @@
::std::unique_ptr<Talon> intake2_talon_;
};
-class WPILibRobot : public RobotBase {
+class WPILibRobot : public ::frc971::wpilib::WPILibRobotBase {
public:
::std::unique_ptr<Encoder> make_encoder(int index) {
return make_unique<Encoder>(10 + index * 2, 11 + index * 2, false,
Encoder::k4X);
}
- virtual void StartCompetition() {
+ void Run() override {
::aos::InitNRT();
::aos::SetCurrentThreadName("StartCompetition");
@@ -789,4 +789,4 @@
} // namespace y2014
-START_ROBOT_CLASS(::y2014::wpilib::WPILibRobot);
+AOS_ROBOT_CLASS(::y2014::wpilib::WPILibRobot);
diff --git a/y2014_bot3/wpilib/BUILD b/y2014_bot3/wpilib/BUILD
index 5c3f0d1..63deb98 100644
--- a/y2014_bot3/wpilib/BUILD
+++ b/y2014_bot3/wpilib/BUILD
@@ -24,6 +24,7 @@
'//frc971/wpilib:gyro_sender',
'//frc971/control_loops:queues',
'//frc971/wpilib:logging_queue',
+ '//frc971/wpilib:wpilib_robot_base',
'//frc971/wpilib:wpilib_interface',
'//y2014_bot3/autonomous:auto_queue',
'//y2014_bot3/control_loops/drivetrain:drivetrain_lib',
diff --git a/y2014_bot3/wpilib/wpilib_interface.cc b/y2014_bot3/wpilib/wpilib_interface.cc
index 4fde0f5..36dd926 100644
--- a/y2014_bot3/wpilib/wpilib_interface.cc
+++ b/y2014_bot3/wpilib/wpilib_interface.cc
@@ -13,7 +13,7 @@
#include "AnalogInput.h"
#include "Compressor.h"
#include "Relay.h"
-#include "RobotBase.h"
+#include "frc971/wpilib/wpilib_robot_base.h"
#include "dma.h"
#include "DigitalInput.h"
#include "PowerDistributionPanel.h"
@@ -330,13 +330,13 @@
return std::unique_ptr<T>(new T(std::forward<U>(u)...));
}
-class WPILibRobot : public RobotBase {
+class WPILibRobot : public ::frc971::wpilib::WPILibRobotBase {
public:
::std::unique_ptr<Encoder> make_encoder(int index) {
return make_unique<Encoder>(10 + index * 2, 11 + index * 2, false,
Encoder::k4X);
}
- virtual void StartCompetition() {
+ void Run() override {
::aos::InitNRT();
::aos::SetCurrentThreadName("StartCompetition");
@@ -414,4 +414,4 @@
} // namespace wpilib
} // namespace frc971
-START_ROBOT_CLASS(::frc971::wpilib::WPILibRobot);
+AOS_ROBOT_CLASS(::frc971::wpilib::WPILibRobot);
diff --git a/y2015/wpilib/BUILD b/y2015/wpilib/BUILD
index c5c4202..2bd4448 100644
--- a/y2015/wpilib/BUILD
+++ b/y2015/wpilib/BUILD
@@ -30,6 +30,7 @@
'//frc971/wpilib:dma_edge_counting',
'//frc971/wpilib:interrupt_edge_counting',
'//frc971/wpilib:encoder_and_potentiometer',
+ '//frc971/wpilib:wpilib_robot_base',
'//frc971/control_loops:queues',
'//frc971/wpilib:logging_queue',
'//frc971/wpilib:wpilib_interface',
diff --git a/y2015/wpilib/wpilib_interface.cc b/y2015/wpilib/wpilib_interface.cc
index 0ea4b8d..8d8b3d3 100644
--- a/y2015/wpilib/wpilib_interface.cc
+++ b/y2015/wpilib/wpilib_interface.cc
@@ -13,7 +13,7 @@
#include "AnalogInput.h"
#include "Compressor.h"
#include "Relay.h"
-#include "RobotBase.h"
+#include "frc971/wpilib/wpilib_robot_base.h"
#include "dma.h"
#ifndef WPILIB2015
#include "DigitalGlitchFilter.h"
@@ -633,13 +633,13 @@
return std::unique_ptr<T>(new T(std::forward<U>(u)...));
}
-class WPILibRobot : public RobotBase {
+class WPILibRobot : public ::frc971::wpilib::WPILibRobotBase {
public:
::std::unique_ptr<Encoder> encoder(int index) {
return make_unique<Encoder>(10 + index * 2, 11 + index * 2, false,
Encoder::k4X);
}
- virtual void StartCompetition() {
+ virtual void Run() {
::aos::InitNRT();
::aos::SetCurrentThreadName("StartCompetition");
@@ -750,4 +750,4 @@
} // namespace frc971
-START_ROBOT_CLASS(::frc971::wpilib::WPILibRobot);
+AOS_ROBOT_CLASS(::frc971::wpilib::WPILibRobot);
diff --git a/y2015_bot3/wpilib/BUILD b/y2015_bot3/wpilib/BUILD
index f89a2b4..cdd48e3 100644
--- a/y2015_bot3/wpilib/BUILD
+++ b/y2015_bot3/wpilib/BUILD
@@ -22,6 +22,7 @@
'//frc971/wpilib:loop_output_handler',
'//frc971/wpilib:buffered_pcm',
'//frc971/wpilib:gyro_sender',
+ '//frc971/wpilib:wpilib_robot_base',
'//frc971/wpilib:wpilib_interface',
'//frc971/control_loops:queues',
'//frc971/wpilib:logging_queue',
diff --git a/y2015_bot3/wpilib/wpilib_interface.cc b/y2015_bot3/wpilib/wpilib_interface.cc
index 6b5c3db..45924b0 100644
--- a/y2015_bot3/wpilib/wpilib_interface.cc
+++ b/y2015_bot3/wpilib/wpilib_interface.cc
@@ -13,7 +13,7 @@
#include "AnalogInput.h"
#include "Compressor.h"
#include "Relay.h"
-#include "RobotBase.h"
+#include "frc971/wpilib/wpilib_robot_base.h"
#include "dma.h"
#ifndef WPILIB2015
#include "DigitalGlitchFilter.h"
@@ -450,13 +450,13 @@
return std::unique_ptr<T>(new T(std::forward<U>(u)...));
}
-class WPILibRobot : public RobotBase {
+class WPILibRobot : public ::frc971::wpilib::WPILibRobotBase {
public:
::std::unique_ptr<Encoder> encoder(int index) {
return make_unique<Encoder>(10 + index * 2, 11 + index * 2, false,
Encoder::k4X);
}
- virtual void StartCompetition() {
+ virtual void Run() {
::aos::InitNRT();
::aos::SetCurrentThreadName("StartCompetition");
@@ -545,4 +545,4 @@
} // namespace wpilib
} // namespace y2015_bot3
-START_ROBOT_CLASS(::y2015_bot3::wpilib::WPILibRobot);
+AOS_ROBOT_CLASS(::y2015_bot3::wpilib::WPILibRobot);