[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

@@ -11,14 +11,13 @@ import edu.wpi.first.wpilibj.ADXL345_I2C;
import edu.wpi.first.wpilibj.ADXL345_SPI;
import edu.wpi.first.wpilibj.I2C;
import edu.wpi.first.wpilibj.SPI;
import edu.wpi.first.wpilibj.interfaces.Accelerometer;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.EnumSource;
class ADXL345SimTest {
@ParameterizedTest
@EnumSource(Accelerometer.Range.class)
void testInitI2C(Accelerometer.Range range) {
@EnumSource(ADXL345_I2C.Range.class)
void testInitI2C(ADXL345_I2C.Range range) {
HAL.initialize(500, 0);
try (ADXL345_I2C accel = new ADXL345_I2C(I2C.Port.kMXP, range)) {
@@ -40,8 +39,8 @@ class ADXL345SimTest {
}
@ParameterizedTest
@EnumSource(Accelerometer.Range.class)
void testInitSPi(Accelerometer.Range range) {
@EnumSource(ADXL345_SPI.Range.class)
void testInitSPi(ADXL345_SPI.Range range) {
HAL.initialize(500, 0);
try (ADXL345_SPI accel = new ADXL345_SPI(SPI.Port.kMXP, range)) {

View File

@@ -9,14 +9,13 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
import edu.wpi.first.hal.HAL;
import edu.wpi.first.wpilibj.ADXL362;
import edu.wpi.first.wpilibj.SPI;
import edu.wpi.first.wpilibj.interfaces.Accelerometer;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.EnumSource;
class ADXL362SimTest {
@ParameterizedTest
@EnumSource(Accelerometer.Range.class)
void testAccel(Accelerometer.Range range) {
@EnumSource(ADXL362.Range.class)
void testAccel(ADXL362.Range range) {
HAL.initialize(500, 0);
try (ADXL362 accel = new ADXL362(SPI.Port.kMXP, range)) {

View File

@@ -6,12 +6,10 @@ package edu.wpi.first.wpilibj.simulation;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;
import edu.wpi.first.hal.HAL;
import edu.wpi.first.wpilibj.BuiltInAccelerometer;
import edu.wpi.first.wpilibj.interfaces.Accelerometer;
import edu.wpi.first.wpilibj.simulation.testutils.BooleanCallback;
import edu.wpi.first.wpilibj.simulation.testutils.DoubleCallback;
import edu.wpi.first.wpilibj.simulation.testutils.EnumCallback;
@@ -102,7 +100,7 @@ class AccelerometerSimTest {
EnumCallback callback = new EnumCallback();
Accelerometer.Range range = Accelerometer.Range.k4G;
BuiltInAccelerometer.Range range = BuiltInAccelerometer.Range.k4G;
try (CallbackStore cb = sim.registerRangeCallback(callback, false);
BuiltInAccelerometer accel = new BuiltInAccelerometer(range)) {
assertTrue(callback.wasTriggered());
@@ -111,7 +109,7 @@ class AccelerometerSimTest {
// 2G
callback.reset();
range = Accelerometer.Range.k2G;
range = BuiltInAccelerometer.Range.k2G;
accel.setRange(range);
assertTrue(callback.wasTriggered());
assertEquals(range.ordinal(), sim.getRange());
@@ -119,7 +117,7 @@ class AccelerometerSimTest {
// 4G
callback.reset();
range = Accelerometer.Range.k4G;
range = BuiltInAccelerometer.Range.k4G;
accel.setRange(range);
assertTrue(callback.wasTriggered());
assertEquals(range.ordinal(), sim.getRange());
@@ -127,16 +125,11 @@ class AccelerometerSimTest {
// 8G
callback.reset();
range = Accelerometer.Range.k8G;
range = BuiltInAccelerometer.Range.k8G;
accel.setRange(range);
assertTrue(callback.wasTriggered());
assertEquals(range.ordinal(), sim.getRange());
assertEquals(range.ordinal(), callback.getSetValue());
// 16G - Not supported
callback.reset();
assertThrows(IllegalArgumentException.class, () -> accel.setRange(Accelerometer.Range.k16G));
assertFalse(callback.wasTriggered());
}
}
}