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/WORKSPACE b/WORKSPACE
index 394c856..22cfc8e 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -106,8 +106,9 @@
new_http_archive(
name = "arm_frc_linux_gnueabi_repo",
build_file = "tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi.BUILD",
- sha256 = "875b23bec5138e09e3d21cc1ff2727ea3ecbec57509c37589514ba50f92979c7",
- url = "http://www.frc971.org/Build-Dependencies/roborio-compiler-2018.tar.xz",
+ sha256 = "d627c5e437db99780a938392499ef71aecbfb0e9b3fffd53bde7e402a6af4f32",
+ strip_prefix = "frc2019/roborio/",
+ url = "http://www.frc971.org/Build-Dependencies/FRC-2019-Linux-Toolchain-6.3.0-v2019-3.tar.gz",
)
# Recompressed version of the one downloaded from Linaro at
@@ -299,7 +300,7 @@
java_runtime(
name = 'jdk',
srcs = glob(['**']),
- visibility = ['//visibility:public']
+ visibility = ['//visibility:public'],
)
""",
sha256 = "f27cb933de4f9e7fe9a703486cf44c84bc8e9f138be0c270c9e5716a32367e87",
@@ -329,3 +330,88 @@
name = "com_google_ceres_solver",
path = "third_party/ceres",
)
+
+# Downloaded from http://devsite.ctr-electronics.com/maven/release/com/ctre/phoenix/api-cpp/5.12.1/.
+new_http_archive(
+ name = "ctre_phoenix_api_cpp_headers_2019",
+ build_file_content = """
+cc_library(
+ name = 'api-cpp',
+ visibility = ['//visibility:public'],
+ hdrs = glob(['ctre/phoenix/**/*.h']),
+)
+""",
+ sha256 = "eb625897a16f1894a4854dd60f68f495875f9b0baed826ea1a38f0afdb14712d",
+ urls = [
+ "http://www.frc971.org/Build-Dependencies/api-cpp-5.12.1-headers.zip",
+ ],
+)
+
+# Downloaded from http://devsite.ctr-electronics.com/maven/release/com/ctre/phoenix/api-cpp/5.12.1/.
+new_http_archive(
+ name = "ctre_phoenix_api_cpp_athena_2019",
+ build_file_content = """
+cc_library(
+ name = 'api-cpp',
+ visibility = ['//visibility:public'],
+ srcs = ['linux/athena/static/libCTRE_Phoenix.a'],
+ restricted_to = ['@//tools:roborio'],
+ deps = [
+ '@ctre_phoenix_core_headers_2019//:core',
+ ],
+)
+""",
+ sha256 = "f6afe6d35b8abcef16b09b2e65c59049091c88a0eb471bf65e77bc510de3f571",
+ urls = [
+ "http://www.frc971.org/Build-Dependencies/api-cpp-5.12.1-linuxathenastatic.zip",
+ ],
+)
+
+# Downloaded from http://devsite.ctr-electronics.com/maven/release/com/ctre/phoenix/cci/5.12.1/.
+new_http_archive(
+ name = "ctre_phoenix_cci_headers_2019",
+ build_file_content = """
+cc_library(
+ name = 'cci',
+ visibility = ['//visibility:public'],
+ hdrs = glob(['ctre/phoenix/**/*.h']),
+)
+""",
+ sha256 = "98f30180fc2cdd8119482364b7d47d38ee02b7746aeecd4cf1d2c25cbde7837b",
+ urls = [
+ "http://www.frc971.org/Build-Dependencies/cci-5.12.1-headers.zip",
+ ],
+)
+
+# Downloaded from http://devsite.ctr-electronics.com/maven/release/com/ctre/phoenix/cci/5.12.1/.
+new_http_archive(
+ name = "ctre_phoenix_cci_athena_2019",
+ build_file_content = """
+cc_library(
+ name = 'cci',
+ visibility = ['//visibility:public'],
+ srcs = ['linux/athena/static/libCTRE_PhoenixCCI.a'],
+ restricted_to = ['@//tools:roborio'],
+)
+""",
+ sha256 = "2fdc8dd0c2bcb463cd7a5082f2a378554497861508b4257b0cc4bab6a4a8316f",
+ urls = [
+ "http://www.frc971.org/Build-Dependencies/cci-5.12.1-linuxathenastatic.zip",
+ ],
+)
+
+# Downloaded from http://devsite.ctr-electronics.com/maven/release/com/ctre/phoenix/core/5.12.1/.
+new_http_archive(
+ name = "ctre_phoenix_core_headers_2019",
+ build_file_content = """
+cc_library(
+ name = 'core',
+ visibility = ['//visibility:public'],
+ hdrs = glob(['ctre/phoenix/**/*.h']),
+)
+""",
+ sha256 = "ddd7d740787279359d9773a4096696770411aec22e092c20749a4f5388779edf",
+ urls = [
+ "http://www.frc971.org/Build-Dependencies/core-5.12.1-headers.zip",
+ ],
+)
diff --git a/aos/config/setup_roborio.sh b/aos/config/setup_roborio.sh
index 99701a3..d2b6b8c 100755
--- a/aos/config/setup_roborio.sh
+++ b/aos/config/setup_roborio.sh
@@ -37,6 +37,3 @@
echo "Deploying robotCommand startup script"
scp aos/config/robotCommand "admin@${ROBOT_HOSTNAME}:/home/lvuser/"
-
-echo "Copying libstdc++.so.6.0.21 library to /usr/lib"
-scp external/arm_frc_linux_gnueabi_repo/usr/arm-frc-linux-gnueabi/lib/libstdc++.so.6.0.21 "admin@${ROBOT_HOSTNAME}:/usr/lib/"
diff --git a/debian/clapack.BUILD b/debian/clapack.BUILD
index 8d805c3..b839fae 100644
--- a/debian/clapack.BUILD
+++ b/debian/clapack.BUILD
@@ -298,6 +298,8 @@
],
"gcc": [
"-Wno-discarded-qualifiers",
+ "-Wno-maybe-uninitialized",
+ "-Wno-unused-but-set-variable",
],
}),
includes = [
diff --git a/debian/slycot.BUILD b/debian/slycot.BUILD
index 7463173..41e7be2 100644
--- a/debian/slycot.BUILD
+++ b/debian/slycot.BUILD
@@ -79,6 +79,7 @@
"-Wno-unused-parameter",
"-Wno-missing-field-initializers",
"-Wno-unused-function",
+ "-Wno-unused-but-set-variable",
],
restricted_to = ["@//tools:k8"],
deps = [
diff --git a/frc971/wpilib/ADIS16448.cc b/frc971/wpilib/ADIS16448.cc
index 6c4a6d1..21a5e2c 100644
--- a/frc971/wpilib/ADIS16448.cc
+++ b/frc971/wpilib/ADIS16448.cc
@@ -236,7 +236,10 @@
}
auto message = imu_values.MakeMessage();
- message->fpga_timestamp = dio1_->ReadRisingTimestamp();
+ message->fpga_timestamp =
+ chrono::duration_cast<chrono::duration<double>>(
+ dio1_->ReadRisingTimestamp().time_since_epoch())
+ .count();
message->monotonic_timestamp_ns =
chrono::duration_cast<chrono::nanoseconds>(read_time.time_since_epoch())
.count();
diff --git a/frc971/wpilib/ahal/AnalogInput.cc b/frc971/wpilib/ahal/AnalogInput.cc
index fc2e5a7..1694708 100644
--- a/frc971/wpilib/ahal/AnalogInput.cc
+++ b/frc971/wpilib/ahal/AnalogInput.cc
@@ -6,12 +6,12 @@
/*----------------------------------------------------------------------------*/
#include "frc971/wpilib/ahal/AnalogInput.h"
-#include "HAL/AnalogInput.h"
+#include "hal/AnalogInput.h"
#include <sstream>
-#include "HAL/HAL.h"
-#include "HAL/Ports.h"
+#include "hal/HAL.h"
+#include "hal/Ports.h"
#include "frc971/wpilib/ahal/WPIErrors.h"
using namespace frc;
diff --git a/frc971/wpilib/ahal/AnalogInput.h b/frc971/wpilib/ahal/AnalogInput.h
index 5398eec..4540bbe 100644
--- a/frc971/wpilib/ahal/AnalogInput.h
+++ b/frc971/wpilib/ahal/AnalogInput.h
@@ -10,7 +10,7 @@
#include <memory>
#include <string>
-#include "HAL/Types.h"
+#include "hal/Types.h"
#include "frc971/wpilib/ahal/SensorBase.h"
namespace frc {
diff --git a/frc971/wpilib/ahal/AnalogTrigger.cc b/frc971/wpilib/ahal/AnalogTrigger.cc
index c9028ae..194537c 100644
--- a/frc971/wpilib/ahal/AnalogTrigger.cc
+++ b/frc971/wpilib/ahal/AnalogTrigger.cc
@@ -9,7 +9,7 @@
#include <memory>
-#include <HAL/HAL.h>
+#include <hal/HAL.h>
#include "frc971/wpilib/ahal/AnalogInput.h"
#include "frc971/wpilib/ahal/WPIErrors.h"
diff --git a/frc971/wpilib/ahal/AnalogTrigger.h b/frc971/wpilib/ahal/AnalogTrigger.h
index 7b6fc92..30a07d1 100644
--- a/frc971/wpilib/ahal/AnalogTrigger.h
+++ b/frc971/wpilib/ahal/AnalogTrigger.h
@@ -9,7 +9,7 @@
#include <memory>
-#include "HAL/Types.h"
+#include "hal/Types.h"
#include "frc971/wpilib/ahal/AnalogTriggerOutput.h"
#include "frc971/wpilib/ahal/SensorBase.h"
diff --git a/frc971/wpilib/ahal/AnalogTriggerOutput.cc b/frc971/wpilib/ahal/AnalogTriggerOutput.cc
index bdc47b6..d95b1d7 100644
--- a/frc971/wpilib/ahal/AnalogTriggerOutput.cc
+++ b/frc971/wpilib/ahal/AnalogTriggerOutput.cc
@@ -7,7 +7,7 @@
#include "frc971/wpilib/ahal/AnalogTriggerOutput.h"
-#include <HAL/HAL.h>
+#include <hal/HAL.h>
#include "frc971/wpilib/ahal/AnalogTrigger.h"
#include "frc971/wpilib/ahal/WPIErrors.h"
diff --git a/frc971/wpilib/ahal/AnalogTriggerOutput.h b/frc971/wpilib/ahal/AnalogTriggerOutput.h
index 0ddaae0..7eb3163 100644
--- a/frc971/wpilib/ahal/AnalogTriggerOutput.h
+++ b/frc971/wpilib/ahal/AnalogTriggerOutput.h
@@ -7,7 +7,7 @@
#pragma once
-#include "HAL/AnalogTrigger.h"
+#include "hal/AnalogTrigger.h"
#include "frc971/wpilib/ahal/DigitalSource.h"
namespace frc {
diff --git a/frc971/wpilib/ahal/Compressor.cc b/frc971/wpilib/ahal/Compressor.cc
index 2967f05..4a17f76 100644
--- a/frc971/wpilib/ahal/Compressor.cc
+++ b/frc971/wpilib/ahal/Compressor.cc
@@ -6,11 +6,11 @@
/*----------------------------------------------------------------------------*/
#include "frc971/wpilib/ahal/Compressor.h"
-#include "HAL/Compressor.h"
+#include "hal/Compressor.h"
-#include "HAL/HAL.h"
-#include "HAL/Ports.h"
-#include "HAL/Solenoid.h"
+#include "hal/HAL.h"
+#include "hal/Ports.h"
+#include "hal/Solenoid.h"
#include "frc971/wpilib/ahal/WPIErrors.h"
using namespace frc;
diff --git a/frc971/wpilib/ahal/Compressor.h b/frc971/wpilib/ahal/Compressor.h
index 60e21d9..c358ce1 100644
--- a/frc971/wpilib/ahal/Compressor.h
+++ b/frc971/wpilib/ahal/Compressor.h
@@ -10,7 +10,7 @@
#include <memory>
#include <string>
-#include "HAL/Types.h"
+#include "hal/Types.h"
#include "frc971/wpilib/ahal/SensorBase.h"
namespace frc {
diff --git a/frc971/wpilib/ahal/ControllerPower.cc b/frc971/wpilib/ahal/ControllerPower.cc
index e045fdc..9637d17 100644
--- a/frc971/wpilib/ahal/ControllerPower.cc
+++ b/frc971/wpilib/ahal/ControllerPower.cc
@@ -9,8 +9,8 @@
#include <stdint.h>
-#include "HAL/HAL.h"
-#include "HAL/Power.h"
+#include "hal/HAL.h"
+#include "hal/Power.h"
#include "frc971/wpilib/ahal/ErrorBase.h"
using namespace frc;
diff --git a/frc971/wpilib/ahal/Counter.cc b/frc971/wpilib/ahal/Counter.cc
index 352904b..3614b8c 100644
--- a/frc971/wpilib/ahal/Counter.cc
+++ b/frc971/wpilib/ahal/Counter.cc
@@ -7,7 +7,7 @@
#include "frc971/wpilib/ahal/Counter.h"
-#include "HAL/HAL.h"
+#include "hal/HAL.h"
#include "frc971/wpilib/ahal/AnalogTrigger.h"
#include "frc971/wpilib/ahal/DigitalInput.h"
#include "frc971/wpilib/ahal/WPIErrors.h"
diff --git a/frc971/wpilib/ahal/Counter.h b/frc971/wpilib/ahal/Counter.h
index c32dd33..26ae7a2 100644
--- a/frc971/wpilib/ahal/Counter.h
+++ b/frc971/wpilib/ahal/Counter.h
@@ -10,8 +10,8 @@
#include <memory>
#include <string>
-#include "HAL/Counter.h"
-#include "HAL/Types.h"
+#include "hal/Counter.h"
+#include "hal/Types.h"
#include "frc971/wpilib/ahal/AnalogTrigger.h"
#include "frc971/wpilib/ahal/CounterBase.h"
#include "frc971/wpilib/ahal/SensorBase.h"
diff --git a/frc971/wpilib/ahal/DigitalGlitchFilter.cc b/frc971/wpilib/ahal/DigitalGlitchFilter.cc
index 76e2b3b..cddfcf0 100644
--- a/frc971/wpilib/ahal/DigitalGlitchFilter.cc
+++ b/frc971/wpilib/ahal/DigitalGlitchFilter.cc
@@ -10,9 +10,9 @@
#include <algorithm>
#include <array>
-#include "HAL/Constants.h"
-#include "HAL/DIO.h"
-#include "HAL/HAL.h"
+#include "hal/Constants.h"
+#include "hal/DIO.h"
+#include "hal/HAL.h"
#include "frc971/wpilib/ahal/Counter.h"
#include "frc971/wpilib/ahal/Encoder.h"
#include "frc971/wpilib/ahal/Utility.h"
@@ -31,7 +31,7 @@
m_channelIndex = std::distance(m_filterAllocated.begin(), index);
*index = true;
- HAL_Report(HALUsageReporting::kResourceType_DigitalFilter, m_channelIndex);
+ HAL_Report(HALUsageReporting::kResourceType_DigitalGlitchFilter, m_channelIndex);
}
DigitalGlitchFilter::~DigitalGlitchFilter() {
diff --git a/frc971/wpilib/ahal/DigitalGlitchFilter.h b/frc971/wpilib/ahal/DigitalGlitchFilter.h
index 1864542..d31b9d5 100644
--- a/frc971/wpilib/ahal/DigitalGlitchFilter.h
+++ b/frc971/wpilib/ahal/DigitalGlitchFilter.h
@@ -10,7 +10,7 @@
#include <array>
#include "frc971/wpilib/ahal/DigitalSource.h"
-// #include "HAL/cpp/priority_mutex.h"
+// #include "hal/cpp/priority_mutex.h"
namespace frc {
diff --git a/frc971/wpilib/ahal/DigitalInput.cc b/frc971/wpilib/ahal/DigitalInput.cc
index 45e405d..e0121ea 100644
--- a/frc971/wpilib/ahal/DigitalInput.cc
+++ b/frc971/wpilib/ahal/DigitalInput.cc
@@ -10,9 +10,9 @@
#include <limits>
#include <sstream>
-#include "HAL/DIO.h"
-#include "HAL/HAL.h"
-#include "HAL/Ports.h"
+#include "hal/DIO.h"
+#include "hal/HAL.h"
+#include "hal/Ports.h"
#include "frc971/wpilib/ahal/WPIErrors.h"
using namespace frc;
diff --git a/frc971/wpilib/ahal/DigitalOutput.cc b/frc971/wpilib/ahal/DigitalOutput.cc
index 7f8495b..f4b2781 100644
--- a/frc971/wpilib/ahal/DigitalOutput.cc
+++ b/frc971/wpilib/ahal/DigitalOutput.cc
@@ -10,9 +10,9 @@
#include <limits>
#include <sstream>
-#include "HAL/DIO.h"
-#include "HAL/HAL.h"
-#include "HAL/Ports.h"
+#include "hal/DIO.h"
+#include "hal/HAL.h"
+#include "hal/Ports.h"
#include "frc971/wpilib/ahal/WPIErrors.h"
using namespace frc;
diff --git a/frc971/wpilib/ahal/DigitalOutput.h b/frc971/wpilib/ahal/DigitalOutput.h
index e1f7080..c6139ce 100644
--- a/frc971/wpilib/ahal/DigitalOutput.h
+++ b/frc971/wpilib/ahal/DigitalOutput.h
@@ -10,7 +10,7 @@
#include <memory>
#include <string>
-#include "HAL/Types.h"
+#include "hal/Types.h"
#include "frc971/wpilib/ahal/DigitalSource.h"
namespace frc {
diff --git a/frc971/wpilib/ahal/DigitalSource.h b/frc971/wpilib/ahal/DigitalSource.h
index 6844923..f5ece9c 100644
--- a/frc971/wpilib/ahal/DigitalSource.h
+++ b/frc971/wpilib/ahal/DigitalSource.h
@@ -7,7 +7,7 @@
#pragma once
-#include "HAL/Types.h"
+#include "hal/Types.h"
#include "frc971/wpilib/ahal/InterruptableSensorBase.h"
namespace frc {
diff --git a/frc971/wpilib/ahal/DriverStation.cc b/frc971/wpilib/ahal/DriverStation.cc
index c34db1b..8420a9e 100644
--- a/frc971/wpilib/ahal/DriverStation.cc
+++ b/frc971/wpilib/ahal/DriverStation.cc
@@ -10,13 +10,13 @@
#include <chrono>
#include "FRC_NetworkCommunication/FRCComm.h"
-#include "HAL/HAL.h"
-#include "HAL/Power.h"
#include "aos/make_unique.h"
#include "frc971/wpilib/ahal/AnalogInput.h"
#include "frc971/wpilib/ahal/Utility.h"
#include "frc971/wpilib/ahal/WPIErrors.h"
-#include "llvm/SmallString.h"
+#include "hal/HAL.h"
+#include "hal/Power.h"
+#include "wpi/SmallString.h"
using namespace frc;
@@ -43,9 +43,10 @@
*
* The error is also printed to the program console.
*/
-void DriverStation::ReportError(llvm::StringRef error) {
- llvm::SmallString<128> temp;
- HAL_SendError(1, 1, 0, error.c_str(temp), "", "", 1);
+void DriverStation::ReportError(const wpi::Twine &error) {
+ wpi::SmallString<128> temp;
+ HAL_SendError(1, 1, 0, error.toNullTerminatedStringRef(temp).data(), "", "",
+ 1);
}
/**
@@ -53,9 +54,10 @@
*
* The warning is also printed to the program console.
*/
-void DriverStation::ReportWarning(llvm::StringRef error) {
- llvm::SmallString<128> temp;
- HAL_SendError(0, 1, 0, error.c_str(temp), "", "", 1);
+void DriverStation::ReportWarning(const wpi::Twine &error) {
+ wpi::SmallString<128> temp;
+ HAL_SendError(0, 1, 0, error.toNullTerminatedStringRef(temp).data(), "", "",
+ 1);
}
/**
@@ -64,13 +66,16 @@
* The error is also printed to the program console.
*/
void DriverStation::ReportError(bool is_error, int32_t code,
- llvm::StringRef error, llvm::StringRef location,
- llvm::StringRef stack) {
- llvm::SmallString<128> errorTemp;
- llvm::SmallString<128> locationTemp;
- llvm::SmallString<128> stackTemp;
- HAL_SendError(is_error, code, 0, error.c_str(errorTemp),
- location.c_str(locationTemp), stack.c_str(stackTemp), 1);
+ const wpi::Twine &error,
+ const wpi::Twine &location,
+ const wpi::Twine &stack) {
+ wpi::SmallString<128> errorTemp;
+ wpi::SmallString<128> locationTemp;
+ wpi::SmallString<128> stackTemp;
+ HAL_SendError(is_error, code, 0,
+ error.toNullTerminatedStringRef(errorTemp).data(),
+ location.toNullTerminatedStringRef(locationTemp).data(),
+ stack.toNullTerminatedStringRef(stackTemp).data(), 1);
}
/**
@@ -394,17 +399,17 @@
// DS, and if the DS thinks you don't have robot code, then you can't enable).
HAL_ObserveUserProgramStarting();
- m_joystickAxes = std::make_unique<HAL_JoystickAxes[]>(kJoystickPorts);
- m_joystickPOVs = std::make_unique<HAL_JoystickPOVs[]>(kJoystickPorts);
- m_joystickButtons = std::make_unique<HAL_JoystickButtons[]>(kJoystickPorts);
+ m_joystickAxes = aos::make_unique<HAL_JoystickAxes[]>(kJoystickPorts);
+ m_joystickPOVs = aos::make_unique<HAL_JoystickPOVs[]>(kJoystickPorts);
+ m_joystickButtons = aos::make_unique<HAL_JoystickButtons[]>(kJoystickPorts);
m_joystickDescriptor =
- std::make_unique<HAL_JoystickDescriptor[]>(kJoystickPorts);
- m_joystickAxesCache = std::make_unique<HAL_JoystickAxes[]>(kJoystickPorts);
- m_joystickPOVsCache = std::make_unique<HAL_JoystickPOVs[]>(kJoystickPorts);
+ aos::make_unique<HAL_JoystickDescriptor[]>(kJoystickPorts);
+ m_joystickAxesCache = aos::make_unique<HAL_JoystickAxes[]>(kJoystickPorts);
+ m_joystickPOVsCache = aos::make_unique<HAL_JoystickPOVs[]>(kJoystickPorts);
m_joystickButtonsCache =
- std::make_unique<HAL_JoystickButtons[]>(kJoystickPorts);
+ aos::make_unique<HAL_JoystickButtons[]>(kJoystickPorts);
m_joystickDescriptorCache =
- std::make_unique<HAL_JoystickDescriptor[]>(kJoystickPorts);
+ aos::make_unique<HAL_JoystickDescriptor[]>(kJoystickPorts);
// All joysticks should default to having zero axes, povs and buttons, so
// uninitialized memory doesn't get sent to speed controllers.
diff --git a/frc971/wpilib/ahal/DriverStation.h b/frc971/wpilib/ahal/DriverStation.h
index f1d0804..2fbac9c 100644
--- a/frc971/wpilib/ahal/DriverStation.h
+++ b/frc971/wpilib/ahal/DriverStation.h
@@ -13,9 +13,9 @@
#include <string>
#include <thread>
-#include "HAL/DriverStation.h"
+#include "hal/DriverStation.h"
#include "frc971/wpilib/ahal/SensorBase.h"
-#include "llvm/StringRef.h"
+#include "wpi/Twine.h"
namespace frc {
@@ -29,10 +29,10 @@
virtual ~DriverStation();
static DriverStation &GetInstance();
- static void ReportError(llvm::StringRef error);
- static void ReportWarning(llvm::StringRef error);
- static void ReportError(bool is_error, int code, llvm::StringRef error,
- llvm::StringRef location, llvm::StringRef stack);
+ static void ReportError(const wpi::Twine &error);
+ static void ReportWarning(const wpi::Twine &error);
+ static void ReportError(bool is_error, int code, const wpi::Twine &error,
+ const wpi::Twine &location, const wpi::Twine &stack);
static const int kJoystickPorts = 6;
diff --git a/frc971/wpilib/ahal/Encoder.cc b/frc971/wpilib/ahal/Encoder.cc
index 8d57eda..b452720 100644
--- a/frc971/wpilib/ahal/Encoder.cc
+++ b/frc971/wpilib/ahal/Encoder.cc
@@ -7,7 +7,7 @@
#include "frc971/wpilib/ahal/Encoder.h"
-#include "HAL/HAL.h"
+#include "hal/HAL.h"
#include "frc971/wpilib/ahal/DigitalInput.h"
using namespace frc;
diff --git a/frc971/wpilib/ahal/Encoder.h b/frc971/wpilib/ahal/Encoder.h
index 2f06e65..56e499f 100644
--- a/frc971/wpilib/ahal/Encoder.h
+++ b/frc971/wpilib/ahal/Encoder.h
@@ -10,7 +10,7 @@
#include <memory>
#include <string>
-#include "HAL/Encoder.h"
+#include "hal/Encoder.h"
namespace frc {
diff --git a/frc971/wpilib/ahal/ErrorBase.h b/frc971/wpilib/ahal/ErrorBase.h
index 0f4e377..8228df1 100644
--- a/frc971/wpilib/ahal/ErrorBase.h
+++ b/frc971/wpilib/ahal/ErrorBase.h
@@ -8,7 +8,7 @@
#pragma once
#include "frc971/wpilib/ahal/Base.h"
-#include "llvm/StringRef.h"
+#include "wpi/StringRef.h"
#define wpi_setErrnoErrorWithContext(context) \
this->SetErrnoError((context), __FILE__, __FUNCTION__, __LINE__)
diff --git a/frc971/wpilib/ahal/InterruptableSensorBase.cc b/frc971/wpilib/ahal/InterruptableSensorBase.cc
index a757bee..4becafc 100644
--- a/frc971/wpilib/ahal/InterruptableSensorBase.cc
+++ b/frc971/wpilib/ahal/InterruptableSensorBase.cc
@@ -7,47 +7,50 @@
#include "frc971/wpilib/ahal/InterruptableSensorBase.h"
-#include "HAL/HAL.h"
+#include "hal/HAL.h"
#include "frc971/wpilib/ahal/Utility.h"
#include "frc971/wpilib/ahal/WPIErrors.h"
using namespace frc;
-InterruptableSensorBase::InterruptableSensorBase() {}
+namespace {
-/**
- * Request one of the 8 interrupts asynchronously on this digital input.
- *
- * Request interrupts in asynchronous mode where the user's interrupt handler
- * will be called when the interrupt fires. Users that want control over the
- * thread priority should use the synchronous method with their own spawned
- * thread. The default is interrupt on rising edges only.
- */
-void InterruptableSensorBase::RequestInterrupts(
- HAL_InterruptHandlerFunction handler, void *param) {
- if (StatusIsFatal()) return;
+// Converts a freestanding lower half to a 64 bit FPGA timestamp
+//
+// Note: This is making the assumption that the timestamp being converted is
+// always in the past. If you call this with a future timestamp, it probably
+// will make it in the past. If you wait over 70 minutes between capturing the
+// bottom 32 bits of the timestamp and expanding it, you will be off by
+// multiples of 1<<32 microseconds.
+//
+// @return The current time in microseconds according to the FPGA (since FPGA
+// reset) as a 64 bit number.
+uint64_t HAL_ExpandFPGATime(uint32_t unexpanded_lower, int32_t* status) {
+ // Capture the current FPGA time. This will give us the upper half of the
+ // clock.
+ uint64_t fpga_time = HAL_GetFPGATime(status);
+ if (*status != 0) return 0;
- wpi_assert(m_interrupt == HAL_kInvalidHandle);
- AllocateInterrupts(false);
- if (StatusIsFatal()) return; // if allocate failed, out of interrupts
+ // Now, we need to detect the case where the lower bits rolled over after we
+ // sampled. In that case, the upper bits will be 1 bigger than they should
+ // be.
- int32_t status = 0;
- HAL_RequestInterrupts(
- m_interrupt, GetPortHandleForRouting(),
- static_cast<HAL_AnalogTriggerType>(GetAnalogTriggerTypeForRouting()),
- &status);
- SetUpSourceEdge(true, false);
- HAL_AttachInterruptHandler(m_interrupt, handler, param, &status);
- wpi_setErrorWithContext(status, HAL_GetErrorMessage(status));
+ // Break it into lower and upper portions.
+ uint32_t lower = fpga_time & ((uint64_t)0xffffffff);
+ uint64_t upper = (fpga_time >> 32) & 0xffffffff;
+
+ // The time was sampled *before* the current time, so roll it back.
+ if (lower < unexpanded_lower) {
+ --upper;
+ }
+
+ return (upper << 32) + static_cast<uint64_t>(unexpanded_lower);
}
-/**
- * Request one of the 8 interrupts synchronously on this digital input.
- *
- * Request interrupts in synchronous mode where the user program will have to
- * explicitly wait for the interrupt to occur using WaitForInterrupt.
- * The default is interrupt on rising edges only.
- */
+} // namespace
+
+InterruptableSensorBase::InterruptableSensorBase() {}
+
void InterruptableSensorBase::RequestInterrupts() {
if (StatusIsFatal()) return;
@@ -72,11 +75,6 @@
wpi_setErrorWithContext(status, HAL_GetErrorMessage(status));
}
-/**
- * Cancel interrupts on this device.
- *
- * This deallocates all the chipobject structures and disables any interrupts.
- */
void InterruptableSensorBase::CancelInterrupts() {
if (StatusIsFatal()) return;
wpi_assert(m_interrupt != HAL_kInvalidHandle);
@@ -86,18 +84,6 @@
m_interrupt = HAL_kInvalidHandle;
}
-/**
- * In synchronous mode, wait for the defined interrupt to occur.
- *
- * You should <b>NOT</b> attempt to read the sensor from another thread while
- * waiting for an interrupt. This is not threadsafe, and can cause memory
- * corruption
- *
- * @param timeout Timeout in seconds
- * @param ignorePrevious If true, ignore interrupts that happened before
- * WaitForInterrupt was called.
- * @return What interrupts fired
- */
InterruptableSensorBase::WaitResult InterruptableSensorBase::WaitForInterrupt(
double timeout, bool ignorePrevious) {
if (StatusIsFatal()) return InterruptableSensorBase::kTimeout;
@@ -117,13 +103,6 @@
return static_cast<WaitResult>(falling | rising);
}
-/**
- * Enable interrupts to occur on this input.
- *
- * Interrupts are disabled when the RequestInterrupt call is made. This gives
- * time to do the setup of the other options before starting to field
- * interrupts.
- */
void InterruptableSensorBase::EnableInterrupts() {
if (StatusIsFatal()) return;
wpi_assert(m_interrupt != HAL_kInvalidHandle);
@@ -132,59 +111,26 @@
wpi_setErrorWithContext(status, HAL_GetErrorMessage(status));
}
-/**
- * Disable Interrupts without without deallocating structures.
- */
-void InterruptableSensorBase::DisableInterrupts() {
- if (StatusIsFatal()) return;
+hal::fpga_clock::time_point InterruptableSensorBase::ReadRisingTimestamp() {
+ if (StatusIsFatal()) return hal::fpga_clock::min_time;
wpi_assert(m_interrupt != HAL_kInvalidHandle);
int32_t status = 0;
- HAL_DisableInterrupts(m_interrupt, &status);
+ uint64_t timestamp = HAL_ReadInterruptRisingTimestamp(m_interrupt, &status);
+ timestamp = HAL_ExpandFPGATime(timestamp, &status);
wpi_setErrorWithContext(status, HAL_GetErrorMessage(status));
+ return hal::fpga_clock::time_point(hal::fpga_clock::duration(timestamp));
}
-/**
- * Return the timestamp for the rising interrupt that occurred most recently.
- *
- * This is in the same time domain as GetClock().
- * The rising-edge interrupt should be enabled with
- * {@link #DigitalInput.SetUpSourceEdge}
- *
- * @return Timestamp in seconds since boot.
- */
-double InterruptableSensorBase::ReadRisingTimestamp() {
- if (StatusIsFatal()) return 0.0;
+hal::fpga_clock::time_point InterruptableSensorBase::ReadFallingTimestamp() {
+ if (StatusIsFatal()) return hal::fpga_clock::min_time;
wpi_assert(m_interrupt != HAL_kInvalidHandle);
int32_t status = 0;
- double timestamp = HAL_ReadInterruptRisingTimestamp(m_interrupt, &status);
+ uint64_t timestamp = HAL_ReadInterruptFallingTimestamp(m_interrupt, &status);
+ timestamp = HAL_ExpandFPGATime(timestamp, &status);
wpi_setErrorWithContext(status, HAL_GetErrorMessage(status));
- return timestamp;
+ return hal::fpga_clock::time_point(hal::fpga_clock::duration(timestamp));
}
-/**
- * Return the timestamp for the falling interrupt that occurred most recently.
- *
- * This is in the same time domain as GetClock().
- * The falling-edge interrupt should be enabled with
- * {@link #DigitalInput.SetUpSourceEdge}
- *
- * @return Timestamp in seconds since boot.
-*/
-double InterruptableSensorBase::ReadFallingTimestamp() {
- if (StatusIsFatal()) return 0.0;
- wpi_assert(m_interrupt != HAL_kInvalidHandle);
- int32_t status = 0;
- double timestamp = HAL_ReadInterruptFallingTimestamp(m_interrupt, &status);
- wpi_setErrorWithContext(status, HAL_GetErrorMessage(status));
- return timestamp;
-}
-
-/**
- * Set which edge to trigger interrupts on
- *
- * @param risingEdge true to interrupt on rising edge
- * @param fallingEdge true to interrupt on falling edge
- */
void InterruptableSensorBase::SetUpSourceEdge(bool risingEdge,
bool fallingEdge) {
if (StatusIsFatal()) return;
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:
diff --git a/frc971/wpilib/ahal/PWM.cc b/frc971/wpilib/ahal/PWM.cc
index 9407a9c..0bf38a3 100644
--- a/frc971/wpilib/ahal/PWM.cc
+++ b/frc971/wpilib/ahal/PWM.cc
@@ -5,13 +5,13 @@
/* the project. */
/*----------------------------------------------------------------------------*/
-#include "HAL/PWM.h"
+#include "hal/PWM.h"
#include "frc971/wpilib/ahal/PWM.h"
#include <sstream>
-#include "HAL/HAL.h"
-#include "HAL/Ports.h"
+#include "hal/HAL.h"
+#include "hal/Ports.h"
#include "frc971/wpilib/ahal/Utility.h"
#include "frc971/wpilib/ahal/WPIErrors.h"
diff --git a/frc971/wpilib/ahal/PWM.h b/frc971/wpilib/ahal/PWM.h
index 9af8d0f..c6e7a25 100644
--- a/frc971/wpilib/ahal/PWM.h
+++ b/frc971/wpilib/ahal/PWM.h
@@ -10,7 +10,7 @@
#include <memory>
#include <string>
-#include "HAL/Types.h"
+#include "hal/Types.h"
#include "frc971/wpilib/ahal/SensorBase.h"
namespace frc {
diff --git a/frc971/wpilib/ahal/PowerDistributionPanel.cc b/frc971/wpilib/ahal/PowerDistributionPanel.cc
index 90655c2..d9d106b 100644
--- a/frc971/wpilib/ahal/PowerDistributionPanel.cc
+++ b/frc971/wpilib/ahal/PowerDistributionPanel.cc
@@ -9,9 +9,9 @@
#include <sstream>
-#include "HAL/HAL.h"
-#include "HAL/PDP.h"
-#include "HAL/Ports.h"
+#include "hal/HAL.h"
+#include "hal/PDP.h"
+#include "hal/Ports.h"
#include "frc971/wpilib/ahal/WPIErrors.h"
using namespace frc;
diff --git a/frc971/wpilib/ahal/Relay.cc b/frc971/wpilib/ahal/Relay.cc
index b69e7af..e0cd090 100644
--- a/frc971/wpilib/ahal/Relay.cc
+++ b/frc971/wpilib/ahal/Relay.cc
@@ -5,13 +5,13 @@
/* the project. */
/*----------------------------------------------------------------------------*/
-#include "HAL/Relay.h"
+#include "hal/Relay.h"
#include "frc971/wpilib/ahal/Relay.h"
#include <sstream>
-#include "HAL/HAL.h"
-#include "HAL/Ports.h"
+#include "hal/HAL.h"
+#include "hal/Ports.h"
#include "frc971/wpilib/ahal/WPIErrors.h"
using namespace frc;
diff --git a/frc971/wpilib/ahal/Relay.h b/frc971/wpilib/ahal/Relay.h
index ecdd8af..389947c 100644
--- a/frc971/wpilib/ahal/Relay.h
+++ b/frc971/wpilib/ahal/Relay.h
@@ -10,7 +10,7 @@
#include <memory>
#include <string>
-#include "HAL/Types.h"
+#include "hal/Types.h"
#include "frc971/wpilib/ahal/SensorBase.h"
namespace frc {
diff --git a/frc971/wpilib/ahal/RobotBase.cc b/frc971/wpilib/ahal/RobotBase.cc
index 35e5570..1ce1d4e 100644
--- a/frc971/wpilib/ahal/RobotBase.cc
+++ b/frc971/wpilib/ahal/RobotBase.cc
@@ -9,7 +9,7 @@
#include <cstdio>
-#include "HAL/HAL.h"
+#include "hal/HAL.h"
#include "frc971/wpilib/ahal/DriverStation.h"
#include "frc971/wpilib/ahal/Utility.h"
#include "frc971/wpilib/ahal/WPILibVersion.h"
diff --git a/frc971/wpilib/ahal/RobotBase.h b/frc971/wpilib/ahal/RobotBase.h
index da37e06..df91525 100644
--- a/frc971/wpilib/ahal/RobotBase.h
+++ b/frc971/wpilib/ahal/RobotBase.h
@@ -11,7 +11,7 @@
#include <iostream>
#include <thread>
-#include "HAL/HAL.h"
+#include "hal/HAL.h"
#include "frc971/wpilib/ahal/Base.h"
namespace frc {
diff --git a/frc971/wpilib/ahal/SPI.cc b/frc971/wpilib/ahal/SPI.cc
index 84a72db..00e7dc9 100644
--- a/frc971/wpilib/ahal/SPI.cc
+++ b/frc971/wpilib/ahal/SPI.cc
@@ -5,13 +5,13 @@
/* the project. */
/*----------------------------------------------------------------------------*/
-#include "HAL/SPI.h"
+#include "hal/SPI.h"
#include "frc971/wpilib/ahal/SPI.h"
#include <cstring>
-#include "HAL/HAL.h"
-#include "llvm/SmallVector.h"
+#include "hal/HAL.h"
+#include "wpi/SmallVector.h"
using namespace frc;
@@ -87,7 +87,7 @@
int SPI::Read(bool initiate, uint8_t *dataReceived, int size) {
int retVal = 0;
if (initiate) {
- llvm::SmallVector<uint8_t, 32> dataToSend;
+ wpi::SmallVector<uint8_t, 32> dataToSend;
dataToSend.resize(size);
retVal = HAL_TransactionSPI(m_port, dataToSend.data(), dataReceived, size);
} else {
diff --git a/frc971/wpilib/ahal/SPI.h b/frc971/wpilib/ahal/SPI.h
index dbac4ae..898f426 100644
--- a/frc971/wpilib/ahal/SPI.h
+++ b/frc971/wpilib/ahal/SPI.h
@@ -7,7 +7,7 @@
#pragma once
-#include "HAL/SPI.h"
+#include "hal/SPI.h"
namespace frc {
diff --git a/frc971/wpilib/ahal/SensorBase.cc b/frc971/wpilib/ahal/SensorBase.cc
index c6db447..0b796f1 100644
--- a/frc971/wpilib/ahal/SensorBase.cc
+++ b/frc971/wpilib/ahal/SensorBase.cc
@@ -8,15 +8,15 @@
#include "frc971/wpilib/ahal/SensorBase.h"
#include "FRC_NetworkCommunication/LoadOut.h"
-#include "HAL/AnalogInput.h"
-#include "HAL/AnalogOutput.h"
-#include "HAL/DIO.h"
-#include "HAL/HAL.h"
-#include "HAL/PDP.h"
-#include "HAL/PWM.h"
-#include "HAL/Ports.h"
-#include "HAL/Relay.h"
-#include "HAL/Solenoid.h"
+#include "hal/AnalogInput.h"
+#include "hal/AnalogOutput.h"
+#include "hal/DIO.h"
+#include "hal/HAL.h"
+#include "hal/PDP.h"
+#include "hal/PWM.h"
+#include "hal/Ports.h"
+#include "hal/Relay.h"
+#include "hal/Solenoid.h"
#include "frc971/wpilib/ahal/WPIErrors.h"
namespace frc {
diff --git a/frc971/wpilib/ahal/Spark.cc b/frc971/wpilib/ahal/Spark.cc
index 9127931..deb891b 100644
--- a/frc971/wpilib/ahal/Spark.cc
+++ b/frc971/wpilib/ahal/Spark.cc
@@ -7,7 +7,7 @@
#include "frc971/wpilib/ahal/Spark.h"
-#include <HAL/HAL.h>
+#include <hal/HAL.h>
using namespace frc;
diff --git a/frc971/wpilib/ahal/Talon.cc b/frc971/wpilib/ahal/Talon.cc
index 40d8a77..e3af567 100644
--- a/frc971/wpilib/ahal/Talon.cc
+++ b/frc971/wpilib/ahal/Talon.cc
@@ -7,7 +7,7 @@
#include "frc971/wpilib/ahal/Talon.h"
-#include "HAL/HAL.h"
+#include "hal/HAL.h"
using namespace frc;
diff --git a/frc971/wpilib/ahal/Utility.cc b/frc971/wpilib/ahal/Utility.cc
index 7a00e42..f4b9f38 100644
--- a/frc971/wpilib/ahal/Utility.cc
+++ b/frc971/wpilib/ahal/Utility.cc
@@ -15,10 +15,12 @@
#include <cstring>
#include <sstream>
-#include "HAL/DriverStation.h"
-#include "HAL/HAL.h"
#include "frc971/wpilib/ahal/ErrorBase.h"
-#include "llvm/SmallString.h"
+#include "hal/DriverStation.h"
+#include "hal/HAL.h"
+#include "wpi/Path.h"
+#include "wpi/SmallString.h"
+#include "wpi/raw_ostream.h"
using namespace frc;
@@ -28,31 +30,31 @@
* The users don't call this, but instead use the wpi_assert macros in
* Utility.h.
*/
-bool wpi_assert_impl(bool conditionValue, llvm::StringRef conditionText,
- llvm::StringRef message, llvm::StringRef fileName,
- int lineNumber, llvm::StringRef funcName) {
+bool wpi_assert_impl(bool conditionValue, const wpi::Twine &conditionText,
+ const wpi::Twine &message, wpi::StringRef fileName,
+ int lineNumber, wpi::StringRef funcName) {
if (!conditionValue) {
- std::stringstream locStream;
- locStream << funcName << " [";
- llvm::SmallString<128> fileTemp;
- locStream << basename(fileName.c_str(fileTemp)) << ":" << lineNumber << "]";
+ wpi::SmallString<128> locBuf;
+ wpi::raw_svector_ostream locStream(locBuf);
+ locStream << funcName << " [" << wpi::sys::path::filename(fileName) << ":"
+ << lineNumber << "]";
- std::stringstream errorStream;
+ wpi::SmallString<128> errorBuf;
+ wpi::raw_svector_ostream errorStream(errorBuf);
errorStream << "Assertion \"" << conditionText << "\" ";
- if (message[0] != '\0') {
- errorStream << "failed: " << message << std::endl;
+ if (message.isTriviallyEmpty() ||
+ (message.isSingleStringRef() && message.getSingleStringRef().empty())) {
+ errorStream << "failed.\n";
} else {
- errorStream << "failed." << std::endl;
+ errorStream << "failed: " << message << "\n";
}
std::string stack = GetStackTrace(2);
- std::string location = locStream.str();
- std::string error = errorStream.str();
// Print the error and send it to the DriverStation
- HAL_SendError(1, 1, 0, error.c_str(), location.c_str(), stack.c_str(), 1);
+ HAL_SendError(1, 1, 0, errorBuf.c_str(), locBuf.c_str(), stack.c_str(), 1);
}
return conditionValue;
@@ -63,33 +65,34 @@
* This should not be called directly; it should only be used by
* wpi_assertEqual_impl and wpi_assertNotEqual_impl.
*/
-void wpi_assertEqual_common_impl(llvm::StringRef valueA, llvm::StringRef valueB,
- llvm::StringRef equalityType,
- llvm::StringRef message,
- llvm::StringRef fileName, int lineNumber,
- llvm::StringRef funcName) {
- std::stringstream locStream;
- locStream << funcName << " [";
- llvm::SmallString<128> fileTemp;
- locStream << basename(fileName.c_str(fileTemp)) << ":" << lineNumber << "]";
+void wpi_assertEqual_common_impl(const wpi::Twine &valueA,
+ const wpi::Twine &valueB,
+ const wpi::Twine &equalityType,
+ const wpi::Twine &message,
+ wpi::StringRef fileName, int lineNumber,
+ wpi::StringRef funcName) {
+ wpi::SmallString<128> locBuf;
+ wpi::raw_svector_ostream locStream(locBuf);
+ locStream << funcName << " [" << wpi::sys::path::filename(fileName) << ":"
+ << lineNumber << "]";
- std::stringstream errorStream;
+ wpi::SmallString<128> errorBuf;
+ wpi::raw_svector_ostream errorStream(errorBuf);
errorStream << "Assertion \"" << valueA << " " << equalityType << " "
<< valueB << "\" ";
- if (message[0] != '\0') {
- errorStream << "failed: " << message << std::endl;
+ if (message.isTriviallyEmpty() ||
+ (message.isSingleStringRef() && message.getSingleStringRef().empty())) {
+ errorStream << "failed.\n";
} else {
- errorStream << "failed." << std::endl;
+ errorStream << "failed: " << message << "\n";
}
std::string trace = GetStackTrace(3);
- std::string location = locStream.str();
- std::string error = errorStream.str();
// Print the error and send it to the DriverStation
- HAL_SendError(1, 1, 0, error.c_str(), location.c_str(), trace.c_str(), 1);
+ HAL_SendError(1, 1, 0, errorBuf.c_str(), locBuf.c_str(), trace.c_str(), 1);
}
/**
@@ -99,10 +102,11 @@
* The users don't call this, but instead use the wpi_assertEqual macros in
* Utility.h.
*/
-bool wpi_assertEqual_impl(int valueA, int valueB, llvm::StringRef valueAString,
- llvm::StringRef valueBString, llvm::StringRef message,
- llvm::StringRef fileName, int lineNumber,
- llvm::StringRef funcName) {
+bool wpi_assertEqual_impl(int valueA, int valueB,
+ const wpi::Twine &valueAString,
+ const wpi::Twine &valueBString,
+ const wpi::Twine &message, wpi::StringRef fileName,
+ int lineNumber, wpi::StringRef funcName) {
if (!(valueA == valueB)) {
wpi_assertEqual_common_impl(valueAString, valueBString, "==", message,
fileName, lineNumber, funcName);
@@ -118,10 +122,10 @@
* Utility.h.
*/
bool wpi_assertNotEqual_impl(int valueA, int valueB,
- llvm::StringRef valueAString,
- llvm::StringRef valueBString,
- llvm::StringRef message, llvm::StringRef fileName,
- int lineNumber, llvm::StringRef funcName) {
+ const wpi::Twine &valueAString,
+ const wpi::Twine &valueBString,
+ const wpi::Twine &message, wpi::StringRef fileName,
+ int lineNumber, wpi::StringRef funcName) {
if (!(valueA != valueB)) {
wpi_assertEqual_common_impl(valueAString, valueBString, "!=", message,
fileName, lineNumber, funcName);
diff --git a/frc971/wpilib/ahal/Utility.h b/frc971/wpilib/ahal/Utility.h
index bf97692..be8dc35 100644
--- a/frc971/wpilib/ahal/Utility.h
+++ b/frc971/wpilib/ahal/Utility.h
@@ -15,7 +15,8 @@
#include <string>
-#include "llvm/StringRef.h"
+#include "wpi/StringRef.h"
+#include "wpi/Twine.h"
#define wpi_assert(condition) \
wpi_assert_impl(condition, #condition, "", __FILE__, __LINE__, __FUNCTION__)
@@ -34,18 +35,19 @@
wpi_assertNotEqual_impl(a, b, #a, #b, message, __FILE__, __LINE__, \
__FUNCTION__)
-bool wpi_assert_impl(bool conditionValue, llvm::StringRef conditionText,
- llvm::StringRef message, llvm::StringRef fileName,
- int lineNumber, llvm::StringRef funcName);
-bool wpi_assertEqual_impl(int valueA, int valueB, llvm::StringRef valueAString,
- llvm::StringRef valueBString, llvm::StringRef message,
- llvm::StringRef fileName, int lineNumber,
- llvm::StringRef funcName);
+bool wpi_assert_impl(bool conditionValue, const wpi::Twine &conditionText,
+ const wpi::Twine &message, wpi::StringRef fileName,
+ int lineNumber, wpi::StringRef funcName);
+bool wpi_assertEqual_impl(int valueA, int valueB,
+ const wpi::Twine &valueAString,
+ const wpi::Twine &valueBString,
+ const wpi::Twine &message, wpi::StringRef fileName,
+ int lineNumber, wpi::StringRef funcName);
bool wpi_assertNotEqual_impl(int valueA, int valueB,
- llvm::StringRef valueAString,
- llvm::StringRef valueBString,
- llvm::StringRef message, llvm::StringRef fileName,
- int lineNumber, llvm::StringRef funcName);
+ const wpi::Twine &valueAString,
+ const wpi::Twine &valueBString,
+ const wpi::Twine &message, wpi::StringRef fileName,
+ int lineNumber, wpi::StringRef funcName);
void wpi_suspendOnAssertEnabled(bool enabled);
diff --git a/frc971/wpilib/ahal/VictorSP.cc b/frc971/wpilib/ahal/VictorSP.cc
index 7d1741b..fee03a9 100644
--- a/frc971/wpilib/ahal/VictorSP.cc
+++ b/frc971/wpilib/ahal/VictorSP.cc
@@ -7,7 +7,7 @@
#include "frc971/wpilib/ahal/VictorSP.h"
-#include "HAL/HAL.h"
+#include "hal/HAL.h"
using namespace frc;
diff --git a/frc971/wpilib/buffered_pcm.cc b/frc971/wpilib/buffered_pcm.cc
index 9625073..de8c547 100644
--- a/frc971/wpilib/buffered_pcm.cc
+++ b/frc971/wpilib/buffered_pcm.cc
@@ -2,10 +2,10 @@
#include <inttypes.h>
-#include <HAL/HAL.h>
-#include <HAL/Ports.h>
-#include <HAL/Solenoid.h>
#include "aos/logging/logging.h"
+#include "hal/HAL.h"
+#include "hal/Ports.h"
+#include "hal/Solenoid.h"
namespace frc971 {
namespace wpilib {
diff --git a/frc971/wpilib/buffered_pcm.h b/frc971/wpilib/buffered_pcm.h
index 877e830..033ded6 100644
--- a/frc971/wpilib/buffered_pcm.h
+++ b/frc971/wpilib/buffered_pcm.h
@@ -3,7 +3,7 @@
#include <memory>
-#include <HAL/HAL.h>
+#include <hal/HAL.h>
#include "frc971/wpilib/buffered_solenoid.h"
diff --git a/frc971/wpilib/dma.cc b/frc971/wpilib/dma.cc
index a379262..b990532 100644
--- a/frc971/wpilib/dma.cc
+++ b/frc971/wpilib/dma.cc
@@ -5,10 +5,10 @@
#include <algorithm>
#include <type_traits>
-#include "HAL/HAL.h"
#include "frc971/wpilib/ahal/AnalogInput.h"
#include "frc971/wpilib/ahal/DigitalSource.h"
#include "frc971/wpilib/ahal/Encoder.h"
+#include "hal/HAL.h"
// Interface to the roboRIO FPGA's DMA features.
diff --git a/frc971/wpilib/dma.h b/frc971/wpilib/dma.h
index c870728..6d82af8 100644
--- a/frc971/wpilib/dma.h
+++ b/frc971/wpilib/dma.h
@@ -9,7 +9,7 @@
#include <array>
#include <memory>
-#include "HAL/ChipObject.h"
+#include "hal/ChipObject.h"
class DMA;
namespace frc {
diff --git a/frc971/wpilib/joystick_sender.cc b/frc971/wpilib/joystick_sender.cc
index e005475..6a3281b 100644
--- a/frc971/wpilib/joystick_sender.cc
+++ b/frc971/wpilib/joystick_sender.cc
@@ -5,8 +5,8 @@
#include "aos/network/team_number.h"
#include "aos/logging/queue_logging.h"
-#include "HAL/HAL.h"
#include "frc971/wpilib/ahal/DriverStation.h"
+#include "hal/HAL.h"
namespace frc971 {
namespace wpilib {
@@ -32,7 +32,6 @@
new_state->scale_left = match_info.gameSpecificMessage[1] == 'L' ||
match_info.gameSpecificMessage[1] == 'l';
}
- HAL_FreeMatchInfo(&match_info);
new_state->test_mode = ds->IsTestMode();
new_state->fms_attached = ds->IsFmsAttached();
diff --git a/frc971/wpilib/wpilib_interface.cc b/frc971/wpilib/wpilib_interface.cc
index 8db81e1..4dddd91 100644
--- a/frc971/wpilib/wpilib_interface.cc
+++ b/frc971/wpilib/wpilib_interface.cc
@@ -3,7 +3,7 @@
#include "aos/robot_state/robot_state.q.h"
#include "aos/logging/queue_logging.h"
-#include <HAL/HAL.h>
+#include "hal/HAL.h"
namespace frc971 {
namespace wpilib {
diff --git a/third_party/BUILD b/third_party/BUILD
index 934486e..d67d4b4 100644
--- a/third_party/BUILD
+++ b/third_party/BUILD
@@ -10,5 +10,17 @@
name = "wpilib_hal",
restricted_to = ["//tools:roborio"],
visibility = ["//visibility:public"],
- deps = ["//third_party/allwpilib_2018:hal"],
+ deps = ["//third_party/allwpilib_2019:hal"],
+)
+
+cc_library(
+ name = "phoenix",
+ restricted_to = ["//tools:roborio"],
+ visibility = ["//visibility:public"],
+ deps = [
+ "@ctre_phoenix_api_cpp_athena_2019//:api-cpp",
+ "@ctre_phoenix_api_cpp_headers_2019//:api-cpp",
+ "@ctre_phoenix_cci_athena_2019//:cci",
+ "@ctre_phoenix_cci_headers_2019//:cci",
+ ],
)
diff --git a/third_party/allwpilib_2019/BUILD b/third_party/allwpilib_2019/BUILD
index ea548fc..e35687d 100644
--- a/third_party/allwpilib_2019/BUILD
+++ b/third_party/allwpilib_2019/BUILD
@@ -63,9 +63,10 @@
srcs = glob(
include = [
"hal/src/main/native/athena/*.cpp",
- "hal/src/main/native/athena/cpp/*.cpp",
+ "hal/src/main/native/cpp/cpp/*.cpp",
"hal/src/main/native/athena/ctre/*.cpp",
"hal/src/main/native/shared/handles/*.cpp",
+ "hal/src/main/native/cpp/handles/*.cpp",
],
exclude = ["**/%s.*" % d for d in _excluded_devices],
),
diff --git a/third_party/allwpilib_2019/wpiutil/BUILD b/third_party/allwpilib_2019/wpiutil/BUILD
index aceed4a..e579466 100644
--- a/third_party/allwpilib_2019/wpiutil/BUILD
+++ b/third_party/allwpilib_2019/wpiutil/BUILD
@@ -4,9 +4,12 @@
name = "wpiutil",
srcs = glob([
"src/main/native/cpp/llvm/*.cpp",
+ ]) + [
"src/main/native/cpp/llvm/Unix/Path.inc",
- "src/main/native/cpp/support/timestamp.cpp",
- ]),
+ "src/main/native/cpp/timestamp.cpp",
+ "src/main/native/cpp/SafeThread.cpp",
+ "src/main/native/cpp/memory.cpp",
+ ],
hdrs = glob([
"src/main/native/include/**",
]),
diff --git a/third_party/cddlib/lib-src/cddlib.c b/third_party/cddlib/lib-src/cddlib.c
index ca9469f..1fb9551 100644
--- a/third_party/cddlib/lib-src/cddlib.c
+++ b/third_party/cddlib/lib-src/cddlib.c
@@ -114,7 +114,7 @@
}
if (!cone->PreOrderedRun){
for (itemp=1; cone->OrderVector[itemp]!=hh; itemp++);
- otemp=cone->OrderVector[cone->Iteration];
+ otemp=cone->OrderVector[cone->Iteration];
cone->OrderVector[cone->Iteration]=hh;
/* store the dynamic ordering in ordervec */
cone->OrderVector[itemp]=otemp;
diff --git a/third_party/ceres/BUILD b/third_party/ceres/BUILD
index 216b1b5..8bc1dde 100644
--- a/third_party/ceres/BUILD
+++ b/third_party/ceres/BUILD
@@ -32,6 +32,7 @@
# not support parameterization around threading choice or sparse backends.
load("//:bazel/ceres.bzl", "ceres_library")
+load("@//tools/build_rules:select.bzl", "cpu_select")
ceres_library(
name = "ceres",
@@ -170,7 +171,10 @@
"-Wno-format-nonliteral",
"-Wno-missing-braces",
"-Wno-missing-field-initializers",
-]
+] + cpu_select({
+ "roborio": ["-Wno-nonnull-compare"],
+ "else": [],
+})
TEST_DEPS = [
"//:ceres",
diff --git a/third_party/googletest/googlemock/test/BUILD.bazel b/third_party/googletest/googlemock/test/BUILD.bazel
index 550a77a..541ef8e 100644
--- a/third_party/googletest/googlemock/test/BUILD.bazel
+++ b/third_party/googletest/googlemock/test/BUILD.bazel
@@ -46,6 +46,7 @@
),
copts = [
"-Wno-unused-parameter",
+ "-Wno-unused-function",
],
deps = ["//third_party/googletest:gtest"],
)
diff --git a/third_party/libjpeg/BUILD b/third_party/libjpeg/BUILD
index 3fb36ec..2f3a812 100644
--- a/third_party/libjpeg/BUILD
+++ b/third_party/libjpeg/BUILD
@@ -65,7 +65,16 @@
"-Wno-switch-enum",
"-Wno-format-nonliteral",
"-Wno-unused-parameter",
- ],
+ ] + select({
+ "//tools:cpu_roborio": [
+ # This is sketchy under the standard, but it's a known issue with
+ # libjpeg which isn't particularly well defined by the JPEG standard
+ # either. We should be fine because all our platforms are two's
+ # complement.
+ "-Wno-shift-negative-value",
+ ],
+ "//conditions:default": [],
+ }),
includes = ["src/main/c"],
visibility = ["//visibility:public"],
)
diff --git a/tools/build_rules/select.bzl b/tools/build_rules/select.bzl
index 2d0bce5..8754f26 100644
--- a/tools/build_rules/select.bzl
+++ b/tools/build_rules/select.bzl
@@ -40,9 +40,9 @@
if key not in all_cpus and key != 'else':
fail('Not sure what a %s CPU is!' % key, 'values')
return select({
- '//tools:cpu_k8': values['amd64'],
- '//tools:cpu_roborio': values['roborio'],
- '//tools:cpu_armhf': values['armhf'],
+ '@//tools:cpu_k8': values['amd64'],
+ '@//tools:cpu_roborio': values['roborio'],
+ '@//tools:cpu_armhf': values['armhf'],
})
"""A select wrapper for address space sizes.
@@ -58,9 +58,9 @@
if '64' not in values:
fail('Need to handle 64 bit addresses!', 'values')
return select({
- '//tools:cpu_k8': values['64'],
- '//tools:cpu_roborio': values['32'],
- '//tools:cpu_armhf': values['32'],
+ '@//tools:cpu_k8': values['64'],
+ '@//tools:cpu_roborio': values['32'],
+ '@//tools:cpu_armhf': values['32'],
})
"""A select wrapper for compilers.
diff --git a/tools/cpp/CROSSTOOL b/tools/cpp/CROSSTOOL
index a530233..12d69ec 100644
--- a/tools/cpp/CROSSTOOL
+++ b/tools/cpp/CROSSTOOL
@@ -343,6 +343,10 @@
path: "arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-ar"
}
tool_path {
+ name: "as"
+ path: "arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-as"
+ }
+ tool_path {
name: "compat-ld"
path: "arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-ld"
}
@@ -398,13 +402,10 @@
linking_mode_flags {
mode: DYNAMIC
}
- cxx_builtin_include_directory: "%package(@arm_frc_linux_gnueabi_repo//usr/arm-frc-linux-gnueabi/include)%/c++/5.4.0"
- cxx_builtin_include_directory: "%package(@arm_frc_linux_gnueabi_repo//usr/arm-frc-linux-gnueabi/include)%/c++/5.4.0/arm-frc-linux-gnueabi"
- cxx_builtin_include_directory: "%package(@arm_frc_linux_gnueabi_repo//usr/arm-frc-linux-gnueabi/include)%/c++/5.4.0/backward"
- cxx_builtin_include_directory: "%package(@arm_frc_linux_gnueabi_repo//usr/lib/x86_64-linux-gnu/gcc/arm-frc-linux-gnueabi/5.4.0/include)%"
- cxx_builtin_include_directory: "%package(@arm_frc_linux_gnueabi_repo//usr/lib/x86_64-linux-gnu/gcc/arm-frc-linux-gnueabi/5.4.0/include-fixed)%"
- cxx_builtin_include_directory: "%package(@arm_frc_linux_gnueabi_repo//usr/arm-frc-linux-gnueabi/include)%"
- cxx_builtin_include_directory: "%package(@arm_frc_linux_gnueabi_repo//usr/arm-frc-linux-gnueabi/usr/include)%"
+ cxx_builtin_include_directory: "%package(@arm_frc_linux_gnueabi_repo//arm-frc2019-linux-gnueabi/usr/lib/gcc/arm-frc2019-linux-gnueabi/6.3.0/include)%"
+ cxx_builtin_include_directory: "%package(@arm_frc_linux_gnueabi_repo//arm-frc2019-linux-gnueabi/usr/lib/gcc/arm-frc2019-linux-gnueabi/6.3.0/include-fixed)%"
+ cxx_builtin_include_directory: "%package(@arm_frc_linux_gnueabi_repo//arm-frc2019-linux-gnueabi/usr/include/c++/6.3.0/arm-frc2019-linux-gnueabi)%"
+ cxx_builtin_include_directory: "%package(@arm_frc_linux_gnueabi_repo//arm-frc2019-linux-gnueabi/usr/include/c++/6.3.0/backward)%"
builtin_sysroot: ""
unfiltered_cxx_flag: "-no-canonical-prefixes"
unfiltered_cxx_flag: "-Wno-builtin-macro-redefined"
@@ -429,14 +430,41 @@
action: "lto-backend"
action: "clif-match"
flag_group {
- flag: "--sysroot=external/arm_frc_linux_gnueabi_repo/usr/arm-frc-linux-gnueabi"
+ flag: "--sysroot=external/arm_frc_linux_gnueabi_repo/arm-frc2019-linux-gnueabi"
flag: "-nostdinc"
flag: "-isystem"
- flag: "external/arm_frc_linux_gnueabi_repo/usr/lib/x86_64-linux-gnu/gcc/arm-frc-linux-gnueabi/5.4.0/include"
+ flag: "external/arm_frc_linux_gnueabi_repo/arm-frc2019-linux-gnueabi/usr/lib/gcc/arm-frc2019-linux-gnueabi/6.3.0/include"
flag: "-isystem"
- flag: "external/arm_frc_linux_gnueabi_repo/usr/lib/x86_64-linux-gnu/gcc/arm-frc-linux-gnueabi/5.4.0/include-fixed"
+ flag: "external/arm_frc_linux_gnueabi_repo/arm-frc2019-linux-gnueabi/usr/lib/gcc/arm-frc2019-linux-gnueabi/6.3.0/include-fixed"
+ }
+ }
+ flag_set {
+ action: "c++-compile"
+ action: "c++-header-parsing"
+ action: "c++-module-compile"
+ action: "c++-module-codegen"
+ flag_group {
flag: "-isystem"
- flag: "external/arm_frc_linux_gnueabi_repo/usr/arm-frc-linux-gnueabi/usr/include"
+ flag: "external/arm_frc_linux_gnueabi_repo/arm-frc2019-linux-gnueabi/usr/include/c++/6.3.0"
+ flag: "-isystem"
+ flag: "external/arm_frc_linux_gnueabi_repo/arm-frc2019-linux-gnueabi/usr/include/c++/6.3.0/arm-frc2019-linux-gnueabi"
+ flag: "-isystem"
+ flag: "external/arm_frc_linux_gnueabi_repo/arm-frc2019-linux-gnueabi/usr/include/c++/6.3.0/backward"
+ }
+ }
+ flag_set {
+ action: "assemble"
+ action: "preprocess-assemble"
+ action: "c-compile"
+ action: "c++-compile"
+ action: "c++-header-parsing"
+ action: "c++-module-compile"
+ action: "c++-module-codegen"
+ action: "lto-backend"
+ action: "clif-match"
+ flag_group {
+ flag: "-isystem"
+ flag: "external/arm_frc_linux_gnueabi_repo/arm-frc2019-linux-gnueabi/usr/include"
flag: "-mfpu=neon"
flag: "-D__STDC_FORMAT_MACROS"
flag: "-D__STDC_CONSTANT_MACROS"
@@ -498,34 +526,6 @@
implies: "opt_post"
}
feature {
- name: "compile_flags2"
- flag_set {
- action: "c++-compile"
- action: "c++-header-parsing"
- action: "c++-module-compile"
- action: "c++-module-codegen"
- action: "lto-backend"
- action: "clif-match"
- flag_group {
- flag: "-isystem"
- flag: "external/arm_frc_linux_gnueabi_repo/usr/arm-frc-linux-gnueabi/include/c++/5.4.0"
- flag: "-isystem"
- flag: "external/arm_frc_linux_gnueabi_repo/usr/arm-frc-linux-gnueabi/include/c++/5.4.0/arm-frc-linux-gnueabi"
- flag: "-isystem"
- flag: "external/arm_frc_linux_gnueabi_repo/usr/arm-frc-linux-gnueabi/include/c++/5.4.0/backward"
- flag: "-isystem"
- flag: "external/arm_frc_linux_gnueabi_repo/usr/lib/x86_64-linux-gnu/gcc/arm-frc-linux-gnueabi/5.4.0/include"
- flag: "-isystem"
- flag: "external/arm_frc_linux_gnueabi_repo/usr/lib/x86_64-linux-gnu/gcc/arm-frc-linux-gnueabi/5.4.0/include-fixed"
- flag: "-isystem"
- flag: "external/arm_frc_linux_gnueabi_repo/usr/arm-frc-linux-gnueabi/include"
- flag: "-isystem"
- flag: "external/arm_frc_linux_gnueabi_repo/usr/arm-frc-linux-gnueabi/usr/include"
- }
- }
- enabled: true
- }
- feature {
name: "dependency_file"
flag_set {
action: "assemble"
@@ -676,6 +676,7 @@
action: "c++-module-compile"
flag_group {
flag: "-std=gnu++1y"
+ flag: "-fno-sized-deallocation"
}
}
flag_set {
diff --git a/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-ar b/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-ar
index 5725bbb..09e37a4 100755
--- a/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-ar
+++ b/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-ar
@@ -4,6 +4,6 @@
LD_LIBRARY_PATH+=":${BAZEL_OUTPUT_ROOT}external/arm_frc_gnueabi_deps/lib/x86_64-linux-gnu"
export LD_LIBRARY_PATH
-exec -a arm-frc-linux-gnueabi-ar \
- "${BAZEL_OUTPUT_ROOT}external/arm_frc_linux_gnueabi_repo/usr/bin/arm-frc-linux-gnueabi-ar" \
+exec -a arm-frc2019-linux-gnueabi-ar \
+ "${BAZEL_OUTPUT_ROOT}external/arm_frc_linux_gnueabi_repo/bin/arm-frc2019-linux-gnueabi-ar" \
"$@"
diff --git a/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-as b/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-as
index 6e67db8..df82796 100755
--- a/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-as
+++ b/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-as
@@ -4,6 +4,6 @@
LD_LIBRARY_PATH+=":${BAZEL_OUTPUT_ROOT}external/arm_frc_gnueabi_deps/lib/x86_64-linux-gnu"
export LD_LIBRARY_PATH
-exec -a arm-frc-linux-gnueabi-as \
- "${BAZEL_OUTPUT_ROOT}external/arm_frc_linux_gnueabi_repo/usr/bin/arm-frc-linux-gnueabi-as" \
+exec -a arm-frc2019-linux-gnueabi-as \
+ "${BAZEL_OUTPUT_ROOT}external/arm_frc_linux_gnueabi_repo/bin/arm-frc2019-linux-gnueabi-as" \
"$@"
diff --git a/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-cpp b/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-cpp
index d2968e3..00e88d6 100755
--- a/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-cpp
+++ b/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-cpp
@@ -4,6 +4,6 @@
LD_LIBRARY_PATH+=":${BAZEL_OUTPUT_ROOT}external/arm_frc_gnueabi_deps/lib/x86_64-linux-gnu"
export LD_LIBRARY_PATH
-exec -a arm-frc-linux-gnueabi-cpp \
- "${BAZEL_OUTPUT_ROOT}external/arm_frc_linux_gnueabi_repo/usr/bin/arm-frc-linux-gnueabi-cpp" \
+exec -a arm-frc2019-linux-gnueabi-cpp \
+ "${BAZEL_OUTPUT_ROOT}external/arm_frc_linux_gnueabi_repo/bin/arm-frc2019-linux-gnueabi-cpp" \
"$@"
diff --git a/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-dwp b/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-dwp
index 697f65a..9201bbe 100755
--- a/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-dwp
+++ b/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-dwp
@@ -4,6 +4,6 @@
LD_LIBRARY_PATH+=":${BAZEL_OUTPUT_ROOT}external/arm_frc_gnueabi_deps/lib/x86_64-linux-gnu"
export LD_LIBRARY_PATH
-exec -a arm-frc-linux-gnueabi-dwp \
- "${BAZEL_OUTPUT_ROOT}external/arm_frc_linux_gnueabi_repo/usr/bin/arm-frc-linux-gnueabi-dwp" \
+exec -a arm-frc2019-linux-gnueabi-dwp \
+ "${BAZEL_OUTPUT_ROOT}external/arm_frc_linux_gnueabi_repo/bin/arm-frc2019-linux-gnueabi-dwp" \
"$@"
diff --git a/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-gcc b/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-gcc
index 7b127aa..33bf997 100755
--- a/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-gcc
+++ b/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-gcc
@@ -4,6 +4,5 @@
LD_LIBRARY_PATH+=":${BAZEL_OUTPUT_ROOT}external/arm_frc_gnueabi_deps/lib/x86_64-linux-gnu"
export LD_LIBRARY_PATH
-exec \
- "${BAZEL_OUTPUT_ROOT}external/arm_frc_linux_gnueabi_repo/usr/bin/arm-frc-linux-gnueabi-gcc" \
+exec "${BAZEL_OUTPUT_ROOT}external/arm_frc_linux_gnueabi_repo/bin/arm-frc2019-linux-gnueabi-gcc" \
"$@"
diff --git a/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-gcov b/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-gcov
index 35d71c2..2f0a64e 100755
--- a/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-gcov
+++ b/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-gcov
@@ -4,6 +4,6 @@
LD_LIBRARY_PATH+=":${BAZEL_OUTPUT_ROOT}external/arm_frc_gnueabi_deps/lib/x86_64-linux-gnu"
export LD_LIBRARY_PATH
-exec -a arm-frc-linux-gnueabi-gcov \
- "${BAZEL_OUTPUT_ROOT}external/arm_frc_linux_gnueabi_repo/usr/bin/arm-frc-linux-gnueabi-gcov" \
+exec -a arm-frc2019-linux-gnueabi-gcov \
+ "${BAZEL_OUTPUT_ROOT}external/arm_frc_linux_gnueabi_repo/bin/arm-frc2019-linux-gnueabi-gcov" \
"$@"
diff --git a/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-ld b/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-ld
index f3dc5ef..862fb3c 100755
--- a/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-ld
+++ b/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-ld
@@ -4,6 +4,6 @@
LD_LIBRARY_PATH+=":${BAZEL_OUTPUT_ROOT}external/arm_frc_gnueabi_deps/lib/x86_64-linux-gnu"
export LD_LIBRARY_PATH
-exec -a arm-frc-linux-gnueabi-ld \
- "${BAZEL_OUTPUT_ROOT}external/arm_frc_linux_gnueabi_repo/usr/bin/arm-frc-linux-gnueabi-ld" \
+exec -a arm-frc2019-linux-gnueabi-ld \
+ "${BAZEL_OUTPUT_ROOT}external/arm_frc_linux_gnueabi_repo/bin/arm-frc2019-linux-gnueabi-ld" \
"$@"
diff --git a/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-nm b/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-nm
index b9bc2b8..1436464 100755
--- a/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-nm
+++ b/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-nm
@@ -4,6 +4,6 @@
LD_LIBRARY_PATH+=":${BAZEL_OUTPUT_ROOT}external/arm_frc_gnueabi_deps/lib/x86_64-linux-gnu"
export LD_LIBRARY_PATH
-exec -a arm-frc-linux-gnueabi-nm \
- "${BAZEL_OUTPUT_ROOT}external/arm_frc_linux_gnueabi_repo/usr/bin/arm-frc-linux-gnueabi-nm" \
+exec -a arm-frc2019-linux-gnueabi-nm \
+ "${BAZEL_OUTPUT_ROOT}external/arm_frc_linux_gnueabi_repo/bin/arm-frc2019-linux-gnueabi-nm" \
"$@"
diff --git a/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-objcopy b/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-objcopy
index 04381fa..fec13a6 100755
--- a/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-objcopy
+++ b/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-objcopy
@@ -4,6 +4,6 @@
LD_LIBRARY_PATH+=":${BAZEL_OUTPUT_ROOT}external/arm_frc_gnueabi_deps/lib/x86_64-linux-gnu"
export LD_LIBRARY_PATH
-exec -a arm-frc-linux-gnueabi-objcopy \
- "${BAZEL_OUTPUT_ROOT}external/arm_frc_linux_gnueabi_repo/usr/bin/arm-frc-linux-gnueabi-objcopy" \
+exec -a arm-frc2019-linux-gnueabi-objcopy \
+ "${BAZEL_OUTPUT_ROOT}external/arm_frc_linux_gnueabi_repo/bin/arm-frc2019-linux-gnueabi-objcopy" \
"$@"
diff --git a/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-objdump b/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-objdump
index 2c6a99c..d305185 100755
--- a/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-objdump
+++ b/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-objdump
@@ -4,6 +4,6 @@
LD_LIBRARY_PATH+=":${BAZEL_OUTPUT_ROOT}external/arm_frc_gnueabi_deps/lib/x86_64-linux-gnu"
export LD_LIBRARY_PATH
-exec -a arm-frc-linux-gnueabi-objdump \
- "${BAZEL_OUTPUT_ROOT}external/arm_frc_linux_gnueabi_repo/usr/bin/arm-frc-linux-gnueabi-objdump" \
+exec -a arm-frc2019-linux-gnueabi-objdump \
+ "${BAZEL_OUTPUT_ROOT}external/arm_frc_linux_gnueabi_repo/bin/arm-frc2019-linux-gnueabi-objdump" \
"$@"
diff --git a/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-strip b/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-strip
index 78a0f65..3de77a6 100755
--- a/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-strip
+++ b/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-strip
@@ -4,6 +4,6 @@
LD_LIBRARY_PATH+=":${BAZEL_OUTPUT_ROOT}external/arm_frc_gnueabi_deps/lib/x86_64-linux-gnu"
export LD_LIBRARY_PATH
-exec -a arm-frc-linux-gnueabi-strip \
- "${BAZEL_OUTPUT_ROOT}external/arm_frc_linux_gnueabi_repo/usr/bin/arm-frc-linux-gnueabi-strip" \
+exec -a arm-frc2019-linux-gnueabi-strip \
+ "${BAZEL_OUTPUT_ROOT}external/arm_frc_linux_gnueabi_repo/bin/arm-frc2019-linux-gnueabi-strip" \
"$@"
diff --git a/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi.BUILD b/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi.BUILD
index a2725fe..51b17a7 100644
--- a/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi.BUILD
+++ b/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi.BUILD
@@ -1,72 +1,75 @@
package(default_visibility = ["//visibility:public"])
+prefix = "arm-frc2019-linux-gnueabi"
+
filegroup(
name = "gcc",
srcs = [
- "usr/bin/arm-frc-linux-gnueabi-gcc",
+ "bin/" + prefix + "-gcc",
],
)
filegroup(
name = "ar",
srcs = [
- "usr/bin/arm-frc-linux-gnueabi-ar",
+ "bin/" + prefix + "-ar",
],
)
filegroup(
name = "as",
srcs = [
- "usr/bin/arm-frc-linux-gnueabi-as",
+ "bin/" + prefix + "-as",
],
)
filegroup(
name = "ld",
srcs = [
- "usr/bin/arm-frc-linux-gnueabi-ld",
+ "bin/" + prefix + "-ld",
],
)
filegroup(
name = "nm",
srcs = [
- "usr/bin/arm-frc-linux-gnueabi-nm",
+ "bin/" + prefix + "-nm",
],
)
filegroup(
name = "objcopy",
srcs = [
- "usr/bin/arm-frc-linux-gnueabi-objcopy",
+ "bin/" + prefix + "-objcopy",
],
)
filegroup(
name = "objdump",
srcs = [
- "usr/bin/arm-frc-linux-gnueabi-objdump",
+ "bin/" + prefix + "-objdump",
],
)
filegroup(
name = "strip",
srcs = [
- "usr/bin/arm-frc-linux-gnueabi-strip",
+ "bin/" + prefix + "-strip",
],
)
filegroup(
name = "compiler_pieces",
- srcs = glob([
- "usr/bin/**/*",
- "usr/include/**/*",
- "usr/lib/**/*",
- "usr/arm-frc-linux-gnueabi/**/*",
- "usr/lib/x86_64-linux-gnu/gcc/**/*",
- ]) + [
- "@arm_frc_gnueabi_deps",
- ],
+ srcs = glob([prefix + "/" + s for s in [
+ "usr/include/**",
+ "usr/lib/**",
+ "lib/**",
+ "bin/**",
+ "**"
+ ]] + [
+ "libexec/gcc/" + prefix + "/6.3.0/**",
+ "bin/**",
+ ]),
)
filegroup(
diff --git a/tools/cpp/static_crosstool.pb b/tools/cpp/static_crosstool.pb
index 682ce1e..778a70d 100644
--- a/tools/cpp/static_crosstool.pb
+++ b/tools/cpp/static_crosstool.pb
@@ -343,6 +343,7 @@
supports_thin_archives: false
tool_path { name: "ar" path: "arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-ar" }
+ tool_path { name: "as" path: "arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-as" }
tool_path { name: "compat-ld" path: "arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-ld" }
tool_path { name: "cpp" path: "arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-cpp" }
tool_path { name: "dwp" path: "/bin/false" }
@@ -373,14 +374,44 @@
action: "lto-backend"
action: "clif-match"
flag_group {
- flag: "--sysroot=external/arm_frc_linux_gnueabi_repo/usr/arm-frc-linux-gnueabi"
+ flag: "--sysroot=external/arm_frc_linux_gnueabi_repo/arm-frc2019-linux-gnueabi"
flag: "-nostdinc"
flag: "-isystem"
- flag: "external/arm_frc_linux_gnueabi_repo/usr/lib/x86_64-linux-gnu/gcc/arm-frc-linux-gnueabi/5.4.0/include"
+ flag: "external/arm_frc_linux_gnueabi_repo/arm-frc2019-linux-gnueabi/usr/lib/gcc/arm-frc2019-linux-gnueabi/6.3.0/include"
flag: "-isystem"
- flag: "external/arm_frc_linux_gnueabi_repo/usr/lib/x86_64-linux-gnu/gcc/arm-frc-linux-gnueabi/5.4.0/include-fixed"
+ flag: "external/arm_frc_linux_gnueabi_repo/arm-frc2019-linux-gnueabi/usr/lib/gcc/arm-frc2019-linux-gnueabi/6.3.0/include-fixed"
+ }
+ }
+
+ flag_set {
+ action: "c++-compile"
+ action: "c++-header-parsing"
+ action: "c++-module-compile"
+ action: "c++-module-codegen"
+ flag_group {
flag: "-isystem"
- flag: "external/arm_frc_linux_gnueabi_repo/usr/arm-frc-linux-gnueabi/usr/include"
+ flag: "external/arm_frc_linux_gnueabi_repo/arm-frc2019-linux-gnueabi/usr/include/c++/6.3.0"
+ flag: "-isystem"
+ flag: "external/arm_frc_linux_gnueabi_repo/arm-frc2019-linux-gnueabi/usr/include/c++/6.3.0/arm-frc2019-linux-gnueabi"
+ flag: "-isystem"
+ flag: "external/arm_frc_linux_gnueabi_repo/arm-frc2019-linux-gnueabi/usr/include/c++/6.3.0/backward"
+ }
+ }
+
+ flag_set {
+ action: "assemble"
+ action: "preprocess-assemble"
+ action: "c-compile"
+ action: "c++-compile"
+ action: "c++-header-parsing"
+ action: "c++-module-compile"
+ action: "c++-module-codegen"
+ action: "lto-backend"
+ action: "clif-match"
+ flag_group {
+ flag: "-isystem"
+ flag: "external/arm_frc_linux_gnueabi_repo/arm-frc2019-linux-gnueabi/usr/include"
+
flag: "-mfpu=neon"
# Things that the code wants defined.
@@ -462,46 +493,15 @@
}
}
- feature {
- name: "compile_flags2"
- enabled: true
- flag_set {
- action: "c++-compile"
- action: "c++-header-parsing"
- action: "c++-module-compile"
- action: "c++-module-codegen"
- action: "lto-backend"
- action: "clif-match"
- flag_group {
- flag: "-isystem"
- flag: "external/arm_frc_linux_gnueabi_repo/usr/arm-frc-linux-gnueabi/include/c++/5.4.0"
- flag: "-isystem"
- flag: "external/arm_frc_linux_gnueabi_repo/usr/arm-frc-linux-gnueabi/include/c++/5.4.0/arm-frc-linux-gnueabi"
- flag: "-isystem"
- flag: "external/arm_frc_linux_gnueabi_repo/usr/arm-frc-linux-gnueabi/include/c++/5.4.0/backward"
- flag: "-isystem"
- flag: "external/arm_frc_linux_gnueabi_repo/usr/lib/x86_64-linux-gnu/gcc/arm-frc-linux-gnueabi/5.4.0/include"
- flag: "-isystem"
- flag: "external/arm_frc_linux_gnueabi_repo/usr/lib/x86_64-linux-gnu/gcc/arm-frc-linux-gnueabi/5.4.0/include-fixed"
- flag: "-isystem"
- flag: "external/arm_frc_linux_gnueabi_repo/usr/arm-frc-linux-gnueabi/include"
- flag: "-isystem"
- flag: "external/arm_frc_linux_gnueabi_repo/usr/arm-frc-linux-gnueabi/usr/include"
- }
- }
- }
-
# TODO(bazel-team): In theory, the path here ought to exactly match the path
# used by gcc. That works because bazel currently doesn't track files at
# absolute locations and has no remote execution, yet. However, this will need
# to be fixed, maybe with auto-detection?
- cxx_builtin_include_directory: "%package(@arm_frc_linux_gnueabi_repo//usr/arm-frc-linux-gnueabi/include)%/c++/5.4.0"
- cxx_builtin_include_directory: "%package(@arm_frc_linux_gnueabi_repo//usr/arm-frc-linux-gnueabi/include)%/c++/5.4.0/arm-frc-linux-gnueabi"
- cxx_builtin_include_directory: "%package(@arm_frc_linux_gnueabi_repo//usr/arm-frc-linux-gnueabi/include)%/c++/5.4.0/backward"
- cxx_builtin_include_directory: "%package(@arm_frc_linux_gnueabi_repo//usr/lib/x86_64-linux-gnu/gcc/arm-frc-linux-gnueabi/5.4.0/include)%"
- cxx_builtin_include_directory: "%package(@arm_frc_linux_gnueabi_repo//usr/lib/x86_64-linux-gnu/gcc/arm-frc-linux-gnueabi/5.4.0/include-fixed)%"
- cxx_builtin_include_directory: "%package(@arm_frc_linux_gnueabi_repo//usr/arm-frc-linux-gnueabi/include)%"
- cxx_builtin_include_directory: "%package(@arm_frc_linux_gnueabi_repo//usr/arm-frc-linux-gnueabi/usr/include)%"
+
+ cxx_builtin_include_directory: "%package(@arm_frc_linux_gnueabi_repo//arm-frc2019-linux-gnueabi/usr/lib/gcc/arm-frc2019-linux-gnueabi/6.3.0/include)%"
+ cxx_builtin_include_directory: "%package(@arm_frc_linux_gnueabi_repo//arm-frc2019-linux-gnueabi/usr/lib/gcc/arm-frc2019-linux-gnueabi/6.3.0/include-fixed)%"
+ cxx_builtin_include_directory: "%package(@arm_frc_linux_gnueabi_repo//arm-frc2019-linux-gnueabi/usr/include/c++/6.3.0/arm-frc2019-linux-gnueabi)%"
+ cxx_builtin_include_directory: "%package(@arm_frc_linux_gnueabi_repo//arm-frc2019-linux-gnueabi/usr/include/c++/6.3.0/backward)%"
linker_flag: "-lstdc++"
linker_flag: "-Ltools/cpp/arm-frc-linux-gnueabi/libs"
@@ -670,6 +670,7 @@
action: "c++-module-compile"
flag_group {
flag: "-std=gnu++1y"
+ flag: "-fno-sized-deallocation"
}
}
flag_set {
diff --git a/y2018/BUILD b/y2018/BUILD
index 18a8ba0..5285116 100644
--- a/y2018/BUILD
+++ b/y2018/BUILD
@@ -95,8 +95,8 @@
"//frc971/wpilib:pdp_fetcher",
"//frc971/wpilib:sensor_reader",
"//frc971/wpilib:wpilib_robot_base",
+ "//third_party:phoenix",
"//third_party:wpilib",
- "//third_party/Phoenix-frc-lib:phoenix",
"//y2018:constants",
"//y2018/control_loops/superstructure:superstructure_queue",
"//y2018/vision:vision_queue",
diff --git a/y2019/BUILD b/y2019/BUILD
index a4f498b..c00f25b 100644
--- a/y2019/BUILD
+++ b/y2019/BUILD
@@ -70,8 +70,8 @@
"//frc971/wpilib:sensor_reader",
"//frc971/wpilib:wpilib_interface",
"//frc971/wpilib:wpilib_robot_base",
+ "//third_party:phoenix",
"//third_party:wpilib",
- "//third_party/Phoenix-frc-lib:phoenix",
"//y2019/control_loops/superstructure:superstructure_queue",
],
)
diff --git a/y2019/wpilib_interface.cc b/y2019/wpilib_interface.cc
index 221bb51..eee7342 100644
--- a/y2019/wpilib_interface.cc
+++ b/y2019/wpilib_interface.cc
@@ -42,7 +42,7 @@
#include "frc971/wpilib/pdp_fetcher.h"
#include "frc971/wpilib/sensor_reader.h"
#include "frc971/wpilib/wpilib_robot_base.h"
-#include "third_party/Phoenix-frc-lib/cpp/include/ctre/phoenix/MotorControl/CAN/TalonSRX.h"
+#include "ctre/phoenix/motorcontrol/can/TalonSRX.h"
#include "y2019/constants.h"
#include "y2019/control_loops/superstructure/superstructure.q.h"