mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-22 01:11:42 +00:00
[hal,wpilib] Add support for joystick outputs (#8385)
Support joystick outputs, including Rumble and LEDs. Also requires an update to Joystick descriptors, as that has also changed in mrccomm to support showing what outputs are supported.
This commit is contained in:
@@ -17,9 +17,19 @@ TEST(GenericHIDTest, RumbleRange) {
|
||||
|
||||
for (int i = 0; i <= 100; i++) {
|
||||
double rumbleValue = i / 100.0;
|
||||
hid.SetRumble(RumbleType::kBothRumble, rumbleValue);
|
||||
hid.SetRumble(RumbleType::kLeftRumble, rumbleValue);
|
||||
EXPECT_NEAR(rumbleValue, sim.GetRumble(RumbleType::kLeftRumble), kEpsilon);
|
||||
|
||||
hid.SetRumble(RumbleType::kRightRumble, rumbleValue);
|
||||
EXPECT_NEAR(rumbleValue, sim.GetRumble(RumbleType::kRightRumble), kEpsilon);
|
||||
|
||||
hid.SetRumble(RumbleType::kLeftTriggerRumble, rumbleValue);
|
||||
EXPECT_NEAR(rumbleValue, sim.GetRumble(RumbleType::kLeftTriggerRumble),
|
||||
kEpsilon);
|
||||
|
||||
hid.SetRumble(RumbleType::kRightTriggerRumble, rumbleValue);
|
||||
EXPECT_NEAR(rumbleValue, sim.GetRumble(RumbleType::kRightTriggerRumble),
|
||||
kEpsilon);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,25 +37,45 @@ TEST(GenericHIDTest, RumbleTypes) {
|
||||
GenericHID hid{0};
|
||||
sim::GenericHIDSim sim{0};
|
||||
|
||||
// Make sure both are off
|
||||
hid.SetRumble(RumbleType::kBothRumble, 0);
|
||||
EXPECT_NEAR(0, sim.GetRumble(RumbleType::kBothRumble), kEpsilon);
|
||||
|
||||
// test both
|
||||
hid.SetRumble(RumbleType::kBothRumble, 1);
|
||||
EXPECT_NEAR(1, sim.GetRumble(RumbleType::kLeftRumble), kEpsilon);
|
||||
EXPECT_NEAR(1, sim.GetRumble(RumbleType::kRightRumble), kEpsilon);
|
||||
hid.SetRumble(RumbleType::kBothRumble, 0);
|
||||
// Make sure all are off
|
||||
hid.SetRumble(RumbleType::kLeftRumble, 0);
|
||||
hid.SetRumble(RumbleType::kLeftTriggerRumble, 0);
|
||||
hid.SetRumble(RumbleType::kRightRumble, 0);
|
||||
hid.SetRumble(RumbleType::kRightTriggerRumble, 0);
|
||||
EXPECT_NEAR(0, sim.GetRumble(RumbleType::kLeftRumble), kEpsilon);
|
||||
EXPECT_NEAR(0, sim.GetRumble(RumbleType::kLeftTriggerRumble), kEpsilon);
|
||||
EXPECT_NEAR(0, sim.GetRumble(RumbleType::kRightRumble), kEpsilon);
|
||||
EXPECT_NEAR(0, sim.GetRumble(RumbleType::kRightTriggerRumble), kEpsilon);
|
||||
|
||||
// test left only
|
||||
hid.SetRumble(RumbleType::kLeftRumble, 1);
|
||||
EXPECT_NEAR(1, sim.GetRumble(RumbleType::kLeftRumble), kEpsilon);
|
||||
EXPECT_NEAR(0, sim.GetRumble(RumbleType::kRightRumble), kEpsilon);
|
||||
EXPECT_NEAR(0, sim.GetRumble(RumbleType::kLeftTriggerRumble), kEpsilon);
|
||||
EXPECT_NEAR(0, sim.GetRumble(RumbleType::kRightTriggerRumble), kEpsilon);
|
||||
hid.SetRumble(RumbleType::kLeftRumble, 0);
|
||||
|
||||
// test right only
|
||||
hid.SetRumble(RumbleType::kRightRumble, 1);
|
||||
EXPECT_NEAR(0, sim.GetRumble(RumbleType::kLeftRumble), kEpsilon);
|
||||
EXPECT_NEAR(1, sim.GetRumble(RumbleType::kRightRumble), kEpsilon);
|
||||
EXPECT_NEAR(0, sim.GetRumble(RumbleType::kLeftTriggerRumble), kEpsilon);
|
||||
EXPECT_NEAR(0, sim.GetRumble(RumbleType::kRightTriggerRumble), kEpsilon);
|
||||
hid.SetRumble(RumbleType::kRightRumble, 0);
|
||||
|
||||
// test left trigger only
|
||||
hid.SetRumble(RumbleType::kLeftTriggerRumble, 1);
|
||||
EXPECT_NEAR(0, sim.GetRumble(RumbleType::kLeftRumble), kEpsilon);
|
||||
EXPECT_NEAR(0, sim.GetRumble(RumbleType::kRightRumble), kEpsilon);
|
||||
EXPECT_NEAR(1, sim.GetRumble(RumbleType::kLeftTriggerRumble), kEpsilon);
|
||||
EXPECT_NEAR(0, sim.GetRumble(RumbleType::kRightTriggerRumble), kEpsilon);
|
||||
hid.SetRumble(RumbleType::kLeftTriggerRumble, 0);
|
||||
|
||||
// test right trigger only
|
||||
hid.SetRumble(RumbleType::kRightTriggerRumble, 1);
|
||||
EXPECT_NEAR(0, sim.GetRumble(RumbleType::kLeftRumble), kEpsilon);
|
||||
EXPECT_NEAR(0, sim.GetRumble(RumbleType::kRightRumble), kEpsilon);
|
||||
EXPECT_NEAR(0, sim.GetRumble(RumbleType::kLeftTriggerRumble), kEpsilon);
|
||||
EXPECT_NEAR(1, sim.GetRumble(RumbleType::kRightTriggerRumble), kEpsilon);
|
||||
hid.SetRumble(RumbleType::kRightTriggerRumble, 0);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user