[wpilib] Deprecate Accelerometer and Gyro interfaces (#5445)

Accelerometer is hyper-specific to ADXL accelerometers, and Gyro is
less useful now that 3D IMUs are prevalent, and if those IMUs want to
support the Gyro interface, they also need to provide a way to set the
axis used for the Gyro interface, which is confusing. Higher-order
functions (e.g., lambdas) are a more flexible interface boundary than
interfaces, but they didn't exist when these interfaces were
created.
This commit is contained in:
Tyler Veness
2023-07-18 12:52:43 -07:00
committed by GitHub
parent 70b60e3a74
commit 14f30752ab
32 changed files with 426 additions and 152 deletions

View File

@@ -99,7 +99,7 @@ TEST(AcclerometerSimTest, SetRange) {
EnumCallback callback;
Accelerometer::Range range = Accelerometer::kRange_4G;
BuiltInAccelerometer::Range range = BuiltInAccelerometer::kRange_4G;
auto cb = sim.RegisterRangeCallback(callback.GetCallback(), false);
BuiltInAccelerometer accel(range);
EXPECT_TRUE(callback.WasTriggered());
@@ -108,7 +108,7 @@ TEST(AcclerometerSimTest, SetRange) {
// 2G
callback.Reset();
range = Accelerometer::kRange_2G;
range = BuiltInAccelerometer::kRange_2G;
accel.SetRange(range);
EXPECT_TRUE(callback.WasTriggered());
EXPECT_EQ(static_cast<int>(range), sim.GetRange());
@@ -116,7 +116,7 @@ TEST(AcclerometerSimTest, SetRange) {
// 4G
callback.Reset();
range = Accelerometer::kRange_4G;
range = BuiltInAccelerometer::kRange_4G;
accel.SetRange(range);
EXPECT_TRUE(callback.WasTriggered());
EXPECT_EQ(static_cast<int>(range), sim.GetRange());
@@ -124,15 +124,10 @@ TEST(AcclerometerSimTest, SetRange) {
// 8G
callback.Reset();
range = Accelerometer::kRange_8G;
range = BuiltInAccelerometer::kRange_8G;
accel.SetRange(range);
EXPECT_TRUE(callback.WasTriggered());
EXPECT_EQ(static_cast<int>(range), sim.GetRange());
EXPECT_EQ(static_cast<int>(range), callback.GetLastValue());
// 16G - Not supported
callback.Reset();
EXPECT_THROW(accel.SetRange(Accelerometer::kRange_16G), std::runtime_error);
EXPECT_FALSE(callback.WasTriggered());
}
} // namespace frc::sim