mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-07-06 03:31:43 +00:00
[wpilib, commands] Cache controller BooleanEvents/Triggers and directly construct Triggers (#6738)
This has been a common footgun for teams, due to calling the factory functions in periodic loops.
This commit is contained in:
@@ -60,7 +60,7 @@ public class Command{{ ConsoleName }}Controller extends CommandGenericHID {
|
||||
* to the given loop.
|
||||
*/
|
||||
public Trigger {{ button.name }}(EventLoop loop) {
|
||||
return m_hid.{{ button.name }}(loop).castTo(Trigger::new);
|
||||
return button({{ ConsoleName }}Controller.Button.k{{ capitalize_first(button.name) }}.value, loop);
|
||||
}
|
||||
{% endfor -%}
|
||||
{% for trigger in triggers -%}
|
||||
@@ -76,7 +76,7 @@ public class Command{{ ConsoleName }}Controller extends CommandGenericHID {
|
||||
* threshold, attached to the given event loop
|
||||
*/
|
||||
public Trigger {{ trigger.name }}(double threshold, EventLoop loop) {
|
||||
return m_hid.{{ trigger.name }}(threshold, loop).castTo(Trigger::new);
|
||||
return axisGreaterThan({{ ConsoleName }}Controller.Axis.k{{ capitalize_first(trigger.name) }}.value, threshold, loop);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -18,14 +18,16 @@ frc::{{ ConsoleName }}Controller& Command{{ ConsoleName }}Controller::GetHID() {
|
||||
}
|
||||
{% for button in buttons %}
|
||||
Trigger Command{{ ConsoleName }}Controller::{{ capitalize_first(button.name) }}(frc::EventLoop* loop) const {
|
||||
return m_hid.{{ capitalize_first(button.name) }}(loop).CastTo<Trigger>();
|
||||
return Button(frc::{{ ConsoleName }}Controller::Button::k{{ capitalize_first(button.name) }}, loop);
|
||||
}
|
||||
{% endfor -%}
|
||||
{% for trigger in triggers -%}
|
||||
{% if trigger.UseThresholdMethods %}
|
||||
Trigger Command{{ ConsoleName }}Controller::{{ capitalize_first(trigger.name) }}(double threshold,
|
||||
frc::EventLoop* loop) const {
|
||||
return m_hid.{{ capitalize_first(trigger.name) }}(threshold, loop).CastTo<Trigger>();
|
||||
return Trigger(loop, [this, threshold] {
|
||||
return m_hid.Get{{ capitalize_first(trigger.name) }}Axis() > threshold;
|
||||
});
|
||||
}
|
||||
{% endif -%}
|
||||
{% endfor -%}
|
||||
|
||||
@@ -58,7 +58,7 @@ public class CommandPS4Controller extends CommandGenericHID {
|
||||
* to the given loop.
|
||||
*/
|
||||
public Trigger square(EventLoop loop) {
|
||||
return m_hid.square(loop).castTo(Trigger::new);
|
||||
return button(PS4Controller.Button.kSquare.value, loop);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -80,7 +80,7 @@ public class CommandPS4Controller extends CommandGenericHID {
|
||||
* to the given loop.
|
||||
*/
|
||||
public Trigger cross(EventLoop loop) {
|
||||
return m_hid.cross(loop).castTo(Trigger::new);
|
||||
return button(PS4Controller.Button.kCross.value, loop);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -102,7 +102,7 @@ public class CommandPS4Controller extends CommandGenericHID {
|
||||
* to the given loop.
|
||||
*/
|
||||
public Trigger circle(EventLoop loop) {
|
||||
return m_hid.circle(loop).castTo(Trigger::new);
|
||||
return button(PS4Controller.Button.kCircle.value, loop);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -124,7 +124,7 @@ public class CommandPS4Controller extends CommandGenericHID {
|
||||
* to the given loop.
|
||||
*/
|
||||
public Trigger triangle(EventLoop loop) {
|
||||
return m_hid.triangle(loop).castTo(Trigger::new);
|
||||
return button(PS4Controller.Button.kTriangle.value, loop);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -146,7 +146,7 @@ public class CommandPS4Controller extends CommandGenericHID {
|
||||
* to the given loop.
|
||||
*/
|
||||
public Trigger L1(EventLoop loop) {
|
||||
return m_hid.L1(loop).castTo(Trigger::new);
|
||||
return button(PS4Controller.Button.kL1.value, loop);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -168,7 +168,7 @@ public class CommandPS4Controller extends CommandGenericHID {
|
||||
* to the given loop.
|
||||
*/
|
||||
public Trigger R1(EventLoop loop) {
|
||||
return m_hid.R1(loop).castTo(Trigger::new);
|
||||
return button(PS4Controller.Button.kR1.value, loop);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -190,7 +190,7 @@ public class CommandPS4Controller extends CommandGenericHID {
|
||||
* to the given loop.
|
||||
*/
|
||||
public Trigger L2(EventLoop loop) {
|
||||
return m_hid.L2(loop).castTo(Trigger::new);
|
||||
return button(PS4Controller.Button.kL2.value, loop);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -212,7 +212,7 @@ public class CommandPS4Controller extends CommandGenericHID {
|
||||
* to the given loop.
|
||||
*/
|
||||
public Trigger R2(EventLoop loop) {
|
||||
return m_hid.R2(loop).castTo(Trigger::new);
|
||||
return button(PS4Controller.Button.kR2.value, loop);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -234,7 +234,7 @@ public class CommandPS4Controller extends CommandGenericHID {
|
||||
* to the given loop.
|
||||
*/
|
||||
public Trigger share(EventLoop loop) {
|
||||
return m_hid.share(loop).castTo(Trigger::new);
|
||||
return button(PS4Controller.Button.kShare.value, loop);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -256,7 +256,7 @@ public class CommandPS4Controller extends CommandGenericHID {
|
||||
* to the given loop.
|
||||
*/
|
||||
public Trigger options(EventLoop loop) {
|
||||
return m_hid.options(loop).castTo(Trigger::new);
|
||||
return button(PS4Controller.Button.kOptions.value, loop);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -278,7 +278,7 @@ public class CommandPS4Controller extends CommandGenericHID {
|
||||
* to the given loop.
|
||||
*/
|
||||
public Trigger L3(EventLoop loop) {
|
||||
return m_hid.L3(loop).castTo(Trigger::new);
|
||||
return button(PS4Controller.Button.kL3.value, loop);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -300,7 +300,7 @@ public class CommandPS4Controller extends CommandGenericHID {
|
||||
* to the given loop.
|
||||
*/
|
||||
public Trigger R3(EventLoop loop) {
|
||||
return m_hid.R3(loop).castTo(Trigger::new);
|
||||
return button(PS4Controller.Button.kR3.value, loop);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -322,7 +322,7 @@ public class CommandPS4Controller extends CommandGenericHID {
|
||||
* to the given loop.
|
||||
*/
|
||||
public Trigger PS(EventLoop loop) {
|
||||
return m_hid.PS(loop).castTo(Trigger::new);
|
||||
return button(PS4Controller.Button.kPS.value, loop);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -344,7 +344,7 @@ public class CommandPS4Controller extends CommandGenericHID {
|
||||
* to the given loop.
|
||||
*/
|
||||
public Trigger touchpad(EventLoop loop) {
|
||||
return m_hid.touchpad(loop).castTo(Trigger::new);
|
||||
return button(PS4Controller.Button.kTouchpad.value, loop);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -58,7 +58,7 @@ public class CommandPS5Controller extends CommandGenericHID {
|
||||
* to the given loop.
|
||||
*/
|
||||
public Trigger square(EventLoop loop) {
|
||||
return m_hid.square(loop).castTo(Trigger::new);
|
||||
return button(PS5Controller.Button.kSquare.value, loop);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -80,7 +80,7 @@ public class CommandPS5Controller extends CommandGenericHID {
|
||||
* to the given loop.
|
||||
*/
|
||||
public Trigger cross(EventLoop loop) {
|
||||
return m_hid.cross(loop).castTo(Trigger::new);
|
||||
return button(PS5Controller.Button.kCross.value, loop);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -102,7 +102,7 @@ public class CommandPS5Controller extends CommandGenericHID {
|
||||
* to the given loop.
|
||||
*/
|
||||
public Trigger circle(EventLoop loop) {
|
||||
return m_hid.circle(loop).castTo(Trigger::new);
|
||||
return button(PS5Controller.Button.kCircle.value, loop);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -124,7 +124,7 @@ public class CommandPS5Controller extends CommandGenericHID {
|
||||
* to the given loop.
|
||||
*/
|
||||
public Trigger triangle(EventLoop loop) {
|
||||
return m_hid.triangle(loop).castTo(Trigger::new);
|
||||
return button(PS5Controller.Button.kTriangle.value, loop);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -146,7 +146,7 @@ public class CommandPS5Controller extends CommandGenericHID {
|
||||
* to the given loop.
|
||||
*/
|
||||
public Trigger L1(EventLoop loop) {
|
||||
return m_hid.L1(loop).castTo(Trigger::new);
|
||||
return button(PS5Controller.Button.kL1.value, loop);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -168,7 +168,7 @@ public class CommandPS5Controller extends CommandGenericHID {
|
||||
* to the given loop.
|
||||
*/
|
||||
public Trigger R1(EventLoop loop) {
|
||||
return m_hid.R1(loop).castTo(Trigger::new);
|
||||
return button(PS5Controller.Button.kR1.value, loop);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -190,7 +190,7 @@ public class CommandPS5Controller extends CommandGenericHID {
|
||||
* to the given loop.
|
||||
*/
|
||||
public Trigger L2(EventLoop loop) {
|
||||
return m_hid.L2(loop).castTo(Trigger::new);
|
||||
return button(PS5Controller.Button.kL2.value, loop);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -212,7 +212,7 @@ public class CommandPS5Controller extends CommandGenericHID {
|
||||
* to the given loop.
|
||||
*/
|
||||
public Trigger R2(EventLoop loop) {
|
||||
return m_hid.R2(loop).castTo(Trigger::new);
|
||||
return button(PS5Controller.Button.kR2.value, loop);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -234,7 +234,7 @@ public class CommandPS5Controller extends CommandGenericHID {
|
||||
* to the given loop.
|
||||
*/
|
||||
public Trigger create(EventLoop loop) {
|
||||
return m_hid.create(loop).castTo(Trigger::new);
|
||||
return button(PS5Controller.Button.kCreate.value, loop);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -256,7 +256,7 @@ public class CommandPS5Controller extends CommandGenericHID {
|
||||
* to the given loop.
|
||||
*/
|
||||
public Trigger options(EventLoop loop) {
|
||||
return m_hid.options(loop).castTo(Trigger::new);
|
||||
return button(PS5Controller.Button.kOptions.value, loop);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -278,7 +278,7 @@ public class CommandPS5Controller extends CommandGenericHID {
|
||||
* to the given loop.
|
||||
*/
|
||||
public Trigger L3(EventLoop loop) {
|
||||
return m_hid.L3(loop).castTo(Trigger::new);
|
||||
return button(PS5Controller.Button.kL3.value, loop);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -300,7 +300,7 @@ public class CommandPS5Controller extends CommandGenericHID {
|
||||
* to the given loop.
|
||||
*/
|
||||
public Trigger R3(EventLoop loop) {
|
||||
return m_hid.R3(loop).castTo(Trigger::new);
|
||||
return button(PS5Controller.Button.kR3.value, loop);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -322,7 +322,7 @@ public class CommandPS5Controller extends CommandGenericHID {
|
||||
* to the given loop.
|
||||
*/
|
||||
public Trigger PS(EventLoop loop) {
|
||||
return m_hid.PS(loop).castTo(Trigger::new);
|
||||
return button(PS5Controller.Button.kPS.value, loop);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -344,7 +344,7 @@ public class CommandPS5Controller extends CommandGenericHID {
|
||||
* to the given loop.
|
||||
*/
|
||||
public Trigger touchpad(EventLoop loop) {
|
||||
return m_hid.touchpad(loop).castTo(Trigger::new);
|
||||
return button(PS5Controller.Button.kTouchpad.value, loop);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -58,7 +58,7 @@ public class CommandStadiaController extends CommandGenericHID {
|
||||
* to the given loop.
|
||||
*/
|
||||
public Trigger a(EventLoop loop) {
|
||||
return m_hid.a(loop).castTo(Trigger::new);
|
||||
return button(StadiaController.Button.kA.value, loop);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -80,7 +80,7 @@ public class CommandStadiaController extends CommandGenericHID {
|
||||
* to the given loop.
|
||||
*/
|
||||
public Trigger b(EventLoop loop) {
|
||||
return m_hid.b(loop).castTo(Trigger::new);
|
||||
return button(StadiaController.Button.kB.value, loop);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -102,7 +102,7 @@ public class CommandStadiaController extends CommandGenericHID {
|
||||
* to the given loop.
|
||||
*/
|
||||
public Trigger x(EventLoop loop) {
|
||||
return m_hid.x(loop).castTo(Trigger::new);
|
||||
return button(StadiaController.Button.kX.value, loop);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -124,7 +124,7 @@ public class CommandStadiaController extends CommandGenericHID {
|
||||
* to the given loop.
|
||||
*/
|
||||
public Trigger y(EventLoop loop) {
|
||||
return m_hid.y(loop).castTo(Trigger::new);
|
||||
return button(StadiaController.Button.kY.value, loop);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -146,7 +146,7 @@ public class CommandStadiaController extends CommandGenericHID {
|
||||
* to the given loop.
|
||||
*/
|
||||
public Trigger leftBumper(EventLoop loop) {
|
||||
return m_hid.leftBumper(loop).castTo(Trigger::new);
|
||||
return button(StadiaController.Button.kLeftBumper.value, loop);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -168,7 +168,7 @@ public class CommandStadiaController extends CommandGenericHID {
|
||||
* to the given loop.
|
||||
*/
|
||||
public Trigger rightBumper(EventLoop loop) {
|
||||
return m_hid.rightBumper(loop).castTo(Trigger::new);
|
||||
return button(StadiaController.Button.kRightBumper.value, loop);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -190,7 +190,7 @@ public class CommandStadiaController extends CommandGenericHID {
|
||||
* to the given loop.
|
||||
*/
|
||||
public Trigger leftStick(EventLoop loop) {
|
||||
return m_hid.leftStick(loop).castTo(Trigger::new);
|
||||
return button(StadiaController.Button.kLeftStick.value, loop);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -212,7 +212,7 @@ public class CommandStadiaController extends CommandGenericHID {
|
||||
* to the given loop.
|
||||
*/
|
||||
public Trigger rightStick(EventLoop loop) {
|
||||
return m_hid.rightStick(loop).castTo(Trigger::new);
|
||||
return button(StadiaController.Button.kRightStick.value, loop);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -234,7 +234,7 @@ public class CommandStadiaController extends CommandGenericHID {
|
||||
* to the given loop.
|
||||
*/
|
||||
public Trigger ellipses(EventLoop loop) {
|
||||
return m_hid.ellipses(loop).castTo(Trigger::new);
|
||||
return button(StadiaController.Button.kEllipses.value, loop);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -256,7 +256,7 @@ public class CommandStadiaController extends CommandGenericHID {
|
||||
* to the given loop.
|
||||
*/
|
||||
public Trigger hamburger(EventLoop loop) {
|
||||
return m_hid.hamburger(loop).castTo(Trigger::new);
|
||||
return button(StadiaController.Button.kHamburger.value, loop);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -278,7 +278,7 @@ public class CommandStadiaController extends CommandGenericHID {
|
||||
* to the given loop.
|
||||
*/
|
||||
public Trigger stadia(EventLoop loop) {
|
||||
return m_hid.stadia(loop).castTo(Trigger::new);
|
||||
return button(StadiaController.Button.kStadia.value, loop);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -300,7 +300,7 @@ public class CommandStadiaController extends CommandGenericHID {
|
||||
* to the given loop.
|
||||
*/
|
||||
public Trigger rightTrigger(EventLoop loop) {
|
||||
return m_hid.rightTrigger(loop).castTo(Trigger::new);
|
||||
return button(StadiaController.Button.kRightTrigger.value, loop);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -322,7 +322,7 @@ public class CommandStadiaController extends CommandGenericHID {
|
||||
* to the given loop.
|
||||
*/
|
||||
public Trigger leftTrigger(EventLoop loop) {
|
||||
return m_hid.leftTrigger(loop).castTo(Trigger::new);
|
||||
return button(StadiaController.Button.kLeftTrigger.value, loop);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -344,7 +344,7 @@ public class CommandStadiaController extends CommandGenericHID {
|
||||
* to the given loop.
|
||||
*/
|
||||
public Trigger google(EventLoop loop) {
|
||||
return m_hid.google(loop).castTo(Trigger::new);
|
||||
return button(StadiaController.Button.kGoogle.value, loop);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -366,7 +366,7 @@ public class CommandStadiaController extends CommandGenericHID {
|
||||
* to the given loop.
|
||||
*/
|
||||
public Trigger frame(EventLoop loop) {
|
||||
return m_hid.frame(loop).castTo(Trigger::new);
|
||||
return button(StadiaController.Button.kFrame.value, loop);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -58,7 +58,7 @@ public class CommandXboxController extends CommandGenericHID {
|
||||
* to the given loop.
|
||||
*/
|
||||
public Trigger a(EventLoop loop) {
|
||||
return m_hid.a(loop).castTo(Trigger::new);
|
||||
return button(XboxController.Button.kA.value, loop);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -80,7 +80,7 @@ public class CommandXboxController extends CommandGenericHID {
|
||||
* to the given loop.
|
||||
*/
|
||||
public Trigger b(EventLoop loop) {
|
||||
return m_hid.b(loop).castTo(Trigger::new);
|
||||
return button(XboxController.Button.kB.value, loop);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -102,7 +102,7 @@ public class CommandXboxController extends CommandGenericHID {
|
||||
* to the given loop.
|
||||
*/
|
||||
public Trigger x(EventLoop loop) {
|
||||
return m_hid.x(loop).castTo(Trigger::new);
|
||||
return button(XboxController.Button.kX.value, loop);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -124,7 +124,7 @@ public class CommandXboxController extends CommandGenericHID {
|
||||
* to the given loop.
|
||||
*/
|
||||
public Trigger y(EventLoop loop) {
|
||||
return m_hid.y(loop).castTo(Trigger::new);
|
||||
return button(XboxController.Button.kY.value, loop);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -146,7 +146,7 @@ public class CommandXboxController extends CommandGenericHID {
|
||||
* to the given loop.
|
||||
*/
|
||||
public Trigger leftBumper(EventLoop loop) {
|
||||
return m_hid.leftBumper(loop).castTo(Trigger::new);
|
||||
return button(XboxController.Button.kLeftBumper.value, loop);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -168,7 +168,7 @@ public class CommandXboxController extends CommandGenericHID {
|
||||
* to the given loop.
|
||||
*/
|
||||
public Trigger rightBumper(EventLoop loop) {
|
||||
return m_hid.rightBumper(loop).castTo(Trigger::new);
|
||||
return button(XboxController.Button.kRightBumper.value, loop);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -190,7 +190,7 @@ public class CommandXboxController extends CommandGenericHID {
|
||||
* to the given loop.
|
||||
*/
|
||||
public Trigger back(EventLoop loop) {
|
||||
return m_hid.back(loop).castTo(Trigger::new);
|
||||
return button(XboxController.Button.kBack.value, loop);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -212,7 +212,7 @@ public class CommandXboxController extends CommandGenericHID {
|
||||
* to the given loop.
|
||||
*/
|
||||
public Trigger start(EventLoop loop) {
|
||||
return m_hid.start(loop).castTo(Trigger::new);
|
||||
return button(XboxController.Button.kStart.value, loop);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -234,7 +234,7 @@ public class CommandXboxController extends CommandGenericHID {
|
||||
* to the given loop.
|
||||
*/
|
||||
public Trigger leftStick(EventLoop loop) {
|
||||
return m_hid.leftStick(loop).castTo(Trigger::new);
|
||||
return button(XboxController.Button.kLeftStick.value, loop);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -256,7 +256,7 @@ public class CommandXboxController extends CommandGenericHID {
|
||||
* to the given loop.
|
||||
*/
|
||||
public Trigger rightStick(EventLoop loop) {
|
||||
return m_hid.rightStick(loop).castTo(Trigger::new);
|
||||
return button(XboxController.Button.kRightStick.value, loop);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -270,7 +270,7 @@ public class CommandXboxController extends CommandGenericHID {
|
||||
* threshold, attached to the given event loop
|
||||
*/
|
||||
public Trigger leftTrigger(double threshold, EventLoop loop) {
|
||||
return m_hid.leftTrigger(threshold, loop).castTo(Trigger::new);
|
||||
return axisGreaterThan(XboxController.Axis.kLeftTrigger.value, threshold, loop);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -309,7 +309,7 @@ public class CommandXboxController extends CommandGenericHID {
|
||||
* threshold, attached to the given event loop
|
||||
*/
|
||||
public Trigger rightTrigger(double threshold, EventLoop loop) {
|
||||
return m_hid.rightTrigger(threshold, loop).castTo(Trigger::new);
|
||||
return axisGreaterThan(XboxController.Axis.kRightTrigger.value, threshold, loop);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -16,59 +16,59 @@ frc::PS4Controller& CommandPS4Controller::GetHID() {
|
||||
}
|
||||
|
||||
Trigger CommandPS4Controller::Square(frc::EventLoop* loop) const {
|
||||
return m_hid.Square(loop).CastTo<Trigger>();
|
||||
return Button(frc::PS4Controller::Button::kSquare, loop);
|
||||
}
|
||||
|
||||
Trigger CommandPS4Controller::Cross(frc::EventLoop* loop) const {
|
||||
return m_hid.Cross(loop).CastTo<Trigger>();
|
||||
return Button(frc::PS4Controller::Button::kCross, loop);
|
||||
}
|
||||
|
||||
Trigger CommandPS4Controller::Circle(frc::EventLoop* loop) const {
|
||||
return m_hid.Circle(loop).CastTo<Trigger>();
|
||||
return Button(frc::PS4Controller::Button::kCircle, loop);
|
||||
}
|
||||
|
||||
Trigger CommandPS4Controller::Triangle(frc::EventLoop* loop) const {
|
||||
return m_hid.Triangle(loop).CastTo<Trigger>();
|
||||
return Button(frc::PS4Controller::Button::kTriangle, loop);
|
||||
}
|
||||
|
||||
Trigger CommandPS4Controller::L1(frc::EventLoop* loop) const {
|
||||
return m_hid.L1(loop).CastTo<Trigger>();
|
||||
return Button(frc::PS4Controller::Button::kL1, loop);
|
||||
}
|
||||
|
||||
Trigger CommandPS4Controller::R1(frc::EventLoop* loop) const {
|
||||
return m_hid.R1(loop).CastTo<Trigger>();
|
||||
return Button(frc::PS4Controller::Button::kR1, loop);
|
||||
}
|
||||
|
||||
Trigger CommandPS4Controller::L2(frc::EventLoop* loop) const {
|
||||
return m_hid.L2(loop).CastTo<Trigger>();
|
||||
return Button(frc::PS4Controller::Button::kL2, loop);
|
||||
}
|
||||
|
||||
Trigger CommandPS4Controller::R2(frc::EventLoop* loop) const {
|
||||
return m_hid.R2(loop).CastTo<Trigger>();
|
||||
return Button(frc::PS4Controller::Button::kR2, loop);
|
||||
}
|
||||
|
||||
Trigger CommandPS4Controller::Share(frc::EventLoop* loop) const {
|
||||
return m_hid.Share(loop).CastTo<Trigger>();
|
||||
return Button(frc::PS4Controller::Button::kShare, loop);
|
||||
}
|
||||
|
||||
Trigger CommandPS4Controller::Options(frc::EventLoop* loop) const {
|
||||
return m_hid.Options(loop).CastTo<Trigger>();
|
||||
return Button(frc::PS4Controller::Button::kOptions, loop);
|
||||
}
|
||||
|
||||
Trigger CommandPS4Controller::L3(frc::EventLoop* loop) const {
|
||||
return m_hid.L3(loop).CastTo<Trigger>();
|
||||
return Button(frc::PS4Controller::Button::kL3, loop);
|
||||
}
|
||||
|
||||
Trigger CommandPS4Controller::R3(frc::EventLoop* loop) const {
|
||||
return m_hid.R3(loop).CastTo<Trigger>();
|
||||
return Button(frc::PS4Controller::Button::kR3, loop);
|
||||
}
|
||||
|
||||
Trigger CommandPS4Controller::PS(frc::EventLoop* loop) const {
|
||||
return m_hid.PS(loop).CastTo<Trigger>();
|
||||
return Button(frc::PS4Controller::Button::kPS, loop);
|
||||
}
|
||||
|
||||
Trigger CommandPS4Controller::Touchpad(frc::EventLoop* loop) const {
|
||||
return m_hid.Touchpad(loop).CastTo<Trigger>();
|
||||
return Button(frc::PS4Controller::Button::kTouchpad, loop);
|
||||
}
|
||||
|
||||
double CommandPS4Controller::GetLeftX() const {
|
||||
|
||||
@@ -16,59 +16,59 @@ frc::PS5Controller& CommandPS5Controller::GetHID() {
|
||||
}
|
||||
|
||||
Trigger CommandPS5Controller::Square(frc::EventLoop* loop) const {
|
||||
return m_hid.Square(loop).CastTo<Trigger>();
|
||||
return Button(frc::PS5Controller::Button::kSquare, loop);
|
||||
}
|
||||
|
||||
Trigger CommandPS5Controller::Cross(frc::EventLoop* loop) const {
|
||||
return m_hid.Cross(loop).CastTo<Trigger>();
|
||||
return Button(frc::PS5Controller::Button::kCross, loop);
|
||||
}
|
||||
|
||||
Trigger CommandPS5Controller::Circle(frc::EventLoop* loop) const {
|
||||
return m_hid.Circle(loop).CastTo<Trigger>();
|
||||
return Button(frc::PS5Controller::Button::kCircle, loop);
|
||||
}
|
||||
|
||||
Trigger CommandPS5Controller::Triangle(frc::EventLoop* loop) const {
|
||||
return m_hid.Triangle(loop).CastTo<Trigger>();
|
||||
return Button(frc::PS5Controller::Button::kTriangle, loop);
|
||||
}
|
||||
|
||||
Trigger CommandPS5Controller::L1(frc::EventLoop* loop) const {
|
||||
return m_hid.L1(loop).CastTo<Trigger>();
|
||||
return Button(frc::PS5Controller::Button::kL1, loop);
|
||||
}
|
||||
|
||||
Trigger CommandPS5Controller::R1(frc::EventLoop* loop) const {
|
||||
return m_hid.R1(loop).CastTo<Trigger>();
|
||||
return Button(frc::PS5Controller::Button::kR1, loop);
|
||||
}
|
||||
|
||||
Trigger CommandPS5Controller::L2(frc::EventLoop* loop) const {
|
||||
return m_hid.L2(loop).CastTo<Trigger>();
|
||||
return Button(frc::PS5Controller::Button::kL2, loop);
|
||||
}
|
||||
|
||||
Trigger CommandPS5Controller::R2(frc::EventLoop* loop) const {
|
||||
return m_hid.R2(loop).CastTo<Trigger>();
|
||||
return Button(frc::PS5Controller::Button::kR2, loop);
|
||||
}
|
||||
|
||||
Trigger CommandPS5Controller::Create(frc::EventLoop* loop) const {
|
||||
return m_hid.Create(loop).CastTo<Trigger>();
|
||||
return Button(frc::PS5Controller::Button::kCreate, loop);
|
||||
}
|
||||
|
||||
Trigger CommandPS5Controller::Options(frc::EventLoop* loop) const {
|
||||
return m_hid.Options(loop).CastTo<Trigger>();
|
||||
return Button(frc::PS5Controller::Button::kOptions, loop);
|
||||
}
|
||||
|
||||
Trigger CommandPS5Controller::L3(frc::EventLoop* loop) const {
|
||||
return m_hid.L3(loop).CastTo<Trigger>();
|
||||
return Button(frc::PS5Controller::Button::kL3, loop);
|
||||
}
|
||||
|
||||
Trigger CommandPS5Controller::R3(frc::EventLoop* loop) const {
|
||||
return m_hid.R3(loop).CastTo<Trigger>();
|
||||
return Button(frc::PS5Controller::Button::kR3, loop);
|
||||
}
|
||||
|
||||
Trigger CommandPS5Controller::PS(frc::EventLoop* loop) const {
|
||||
return m_hid.PS(loop).CastTo<Trigger>();
|
||||
return Button(frc::PS5Controller::Button::kPS, loop);
|
||||
}
|
||||
|
||||
Trigger CommandPS5Controller::Touchpad(frc::EventLoop* loop) const {
|
||||
return m_hid.Touchpad(loop).CastTo<Trigger>();
|
||||
return Button(frc::PS5Controller::Button::kTouchpad, loop);
|
||||
}
|
||||
|
||||
double CommandPS5Controller::GetLeftX() const {
|
||||
|
||||
@@ -16,63 +16,63 @@ frc::StadiaController& CommandStadiaController::GetHID() {
|
||||
}
|
||||
|
||||
Trigger CommandStadiaController::A(frc::EventLoop* loop) const {
|
||||
return m_hid.A(loop).CastTo<Trigger>();
|
||||
return Button(frc::StadiaController::Button::kA, loop);
|
||||
}
|
||||
|
||||
Trigger CommandStadiaController::B(frc::EventLoop* loop) const {
|
||||
return m_hid.B(loop).CastTo<Trigger>();
|
||||
return Button(frc::StadiaController::Button::kB, loop);
|
||||
}
|
||||
|
||||
Trigger CommandStadiaController::X(frc::EventLoop* loop) const {
|
||||
return m_hid.X(loop).CastTo<Trigger>();
|
||||
return Button(frc::StadiaController::Button::kX, loop);
|
||||
}
|
||||
|
||||
Trigger CommandStadiaController::Y(frc::EventLoop* loop) const {
|
||||
return m_hid.Y(loop).CastTo<Trigger>();
|
||||
return Button(frc::StadiaController::Button::kY, loop);
|
||||
}
|
||||
|
||||
Trigger CommandStadiaController::LeftBumper(frc::EventLoop* loop) const {
|
||||
return m_hid.LeftBumper(loop).CastTo<Trigger>();
|
||||
return Button(frc::StadiaController::Button::kLeftBumper, loop);
|
||||
}
|
||||
|
||||
Trigger CommandStadiaController::RightBumper(frc::EventLoop* loop) const {
|
||||
return m_hid.RightBumper(loop).CastTo<Trigger>();
|
||||
return Button(frc::StadiaController::Button::kRightBumper, loop);
|
||||
}
|
||||
|
||||
Trigger CommandStadiaController::LeftStick(frc::EventLoop* loop) const {
|
||||
return m_hid.LeftStick(loop).CastTo<Trigger>();
|
||||
return Button(frc::StadiaController::Button::kLeftStick, loop);
|
||||
}
|
||||
|
||||
Trigger CommandStadiaController::RightStick(frc::EventLoop* loop) const {
|
||||
return m_hid.RightStick(loop).CastTo<Trigger>();
|
||||
return Button(frc::StadiaController::Button::kRightStick, loop);
|
||||
}
|
||||
|
||||
Trigger CommandStadiaController::Ellipses(frc::EventLoop* loop) const {
|
||||
return m_hid.Ellipses(loop).CastTo<Trigger>();
|
||||
return Button(frc::StadiaController::Button::kEllipses, loop);
|
||||
}
|
||||
|
||||
Trigger CommandStadiaController::Hamburger(frc::EventLoop* loop) const {
|
||||
return m_hid.Hamburger(loop).CastTo<Trigger>();
|
||||
return Button(frc::StadiaController::Button::kHamburger, loop);
|
||||
}
|
||||
|
||||
Trigger CommandStadiaController::Stadia(frc::EventLoop* loop) const {
|
||||
return m_hid.Stadia(loop).CastTo<Trigger>();
|
||||
return Button(frc::StadiaController::Button::kStadia, loop);
|
||||
}
|
||||
|
||||
Trigger CommandStadiaController::RightTrigger(frc::EventLoop* loop) const {
|
||||
return m_hid.RightTrigger(loop).CastTo<Trigger>();
|
||||
return Button(frc::StadiaController::Button::kRightTrigger, loop);
|
||||
}
|
||||
|
||||
Trigger CommandStadiaController::LeftTrigger(frc::EventLoop* loop) const {
|
||||
return m_hid.LeftTrigger(loop).CastTo<Trigger>();
|
||||
return Button(frc::StadiaController::Button::kLeftTrigger, loop);
|
||||
}
|
||||
|
||||
Trigger CommandStadiaController::Google(frc::EventLoop* loop) const {
|
||||
return m_hid.Google(loop).CastTo<Trigger>();
|
||||
return Button(frc::StadiaController::Button::kGoogle, loop);
|
||||
}
|
||||
|
||||
Trigger CommandStadiaController::Frame(frc::EventLoop* loop) const {
|
||||
return m_hid.Frame(loop).CastTo<Trigger>();
|
||||
return Button(frc::StadiaController::Button::kFrame, loop);
|
||||
}
|
||||
|
||||
double CommandStadiaController::GetLeftX() const {
|
||||
|
||||
@@ -16,53 +16,57 @@ frc::XboxController& CommandXboxController::GetHID() {
|
||||
}
|
||||
|
||||
Trigger CommandXboxController::A(frc::EventLoop* loop) const {
|
||||
return m_hid.A(loop).CastTo<Trigger>();
|
||||
return Button(frc::XboxController::Button::kA, loop);
|
||||
}
|
||||
|
||||
Trigger CommandXboxController::B(frc::EventLoop* loop) const {
|
||||
return m_hid.B(loop).CastTo<Trigger>();
|
||||
return Button(frc::XboxController::Button::kB, loop);
|
||||
}
|
||||
|
||||
Trigger CommandXboxController::X(frc::EventLoop* loop) const {
|
||||
return m_hid.X(loop).CastTo<Trigger>();
|
||||
return Button(frc::XboxController::Button::kX, loop);
|
||||
}
|
||||
|
||||
Trigger CommandXboxController::Y(frc::EventLoop* loop) const {
|
||||
return m_hid.Y(loop).CastTo<Trigger>();
|
||||
return Button(frc::XboxController::Button::kY, loop);
|
||||
}
|
||||
|
||||
Trigger CommandXboxController::LeftBumper(frc::EventLoop* loop) const {
|
||||
return m_hid.LeftBumper(loop).CastTo<Trigger>();
|
||||
return Button(frc::XboxController::Button::kLeftBumper, loop);
|
||||
}
|
||||
|
||||
Trigger CommandXboxController::RightBumper(frc::EventLoop* loop) const {
|
||||
return m_hid.RightBumper(loop).CastTo<Trigger>();
|
||||
return Button(frc::XboxController::Button::kRightBumper, loop);
|
||||
}
|
||||
|
||||
Trigger CommandXboxController::Back(frc::EventLoop* loop) const {
|
||||
return m_hid.Back(loop).CastTo<Trigger>();
|
||||
return Button(frc::XboxController::Button::kBack, loop);
|
||||
}
|
||||
|
||||
Trigger CommandXboxController::Start(frc::EventLoop* loop) const {
|
||||
return m_hid.Start(loop).CastTo<Trigger>();
|
||||
return Button(frc::XboxController::Button::kStart, loop);
|
||||
}
|
||||
|
||||
Trigger CommandXboxController::LeftStick(frc::EventLoop* loop) const {
|
||||
return m_hid.LeftStick(loop).CastTo<Trigger>();
|
||||
return Button(frc::XboxController::Button::kLeftStick, loop);
|
||||
}
|
||||
|
||||
Trigger CommandXboxController::RightStick(frc::EventLoop* loop) const {
|
||||
return m_hid.RightStick(loop).CastTo<Trigger>();
|
||||
return Button(frc::XboxController::Button::kRightStick, loop);
|
||||
}
|
||||
|
||||
Trigger CommandXboxController::LeftTrigger(double threshold,
|
||||
frc::EventLoop* loop) const {
|
||||
return m_hid.LeftTrigger(threshold, loop).CastTo<Trigger>();
|
||||
return Trigger(loop, [this, threshold] {
|
||||
return m_hid.GetLeftTriggerAxis() > threshold;
|
||||
});
|
||||
}
|
||||
|
||||
Trigger CommandXboxController::RightTrigger(double threshold,
|
||||
frc::EventLoop* loop) const {
|
||||
return m_hid.RightTrigger(threshold, loop).CastTo<Trigger>();
|
||||
return Trigger(loop, [this, threshold] {
|
||||
return m_hid.GetRightTriggerAxis() > threshold;
|
||||
});
|
||||
}
|
||||
|
||||
double CommandXboxController::GetLeftX() const {
|
||||
|
||||
@@ -4,9 +4,12 @@
|
||||
|
||||
package edu.wpi.first.wpilibj2.command.button;
|
||||
|
||||
import edu.wpi.first.math.Pair;
|
||||
import edu.wpi.first.wpilibj.GenericHID;
|
||||
import edu.wpi.first.wpilibj.event.EventLoop;
|
||||
import edu.wpi.first.wpilibj2.command.CommandScheduler;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* A version of {@link GenericHID} with {@link Trigger} factories for command-based.
|
||||
@@ -15,6 +18,12 @@ import edu.wpi.first.wpilibj2.command.CommandScheduler;
|
||||
*/
|
||||
public class CommandGenericHID {
|
||||
private final GenericHID m_hid;
|
||||
private final Map<EventLoop, Map<Integer, Trigger>> m_buttonCache = new HashMap<>();
|
||||
private final Map<EventLoop, Map<Pair<Integer, Double>, Trigger>> m_axisLessThanCache =
|
||||
new HashMap<>();
|
||||
private final Map<EventLoop, Map<Pair<Integer, Double>, Trigger>> m_axisGreaterThanCache =
|
||||
new HashMap<>();
|
||||
private final Map<EventLoop, Map<Integer, Trigger>> m_povCache = new HashMap<>();
|
||||
|
||||
/**
|
||||
* Construct an instance of a device.
|
||||
@@ -43,7 +52,7 @@ public class CommandGenericHID {
|
||||
* @see #button(int, EventLoop)
|
||||
*/
|
||||
public Trigger button(int button) {
|
||||
return this.button(button, CommandScheduler.getInstance().getDefaultButtonLoop());
|
||||
return button(button, CommandScheduler.getInstance().getDefaultButtonLoop());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -54,7 +63,8 @@ public class CommandGenericHID {
|
||||
* @return an event instance representing the button's digital signal attached to the given loop.
|
||||
*/
|
||||
public Trigger button(int button, EventLoop loop) {
|
||||
return new Trigger(loop, () -> m_hid.getRawButton(button));
|
||||
var cache = m_buttonCache.computeIfAbsent(loop, k -> new HashMap<>());
|
||||
return cache.computeIfAbsent(button, k -> new Trigger(loop, () -> m_hid.getRawButton(k)));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -85,7 +95,10 @@ public class CommandGenericHID {
|
||||
* @return a Trigger instance based around this angle of a POV on the HID.
|
||||
*/
|
||||
public Trigger pov(int pov, int angle, EventLoop loop) {
|
||||
return new Trigger(loop, () -> m_hid.getPOV(pov) == angle);
|
||||
var cache = m_povCache.computeIfAbsent(loop, k -> new HashMap<>());
|
||||
// angle can be -1, so use 3600 instead of 360
|
||||
return cache.computeIfAbsent(
|
||||
pov * 3600 + angle, k -> new Trigger(loop, () -> m_hid.getPOV(pov) == angle));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -212,7 +225,9 @@ public class CommandGenericHID {
|
||||
* threshold.
|
||||
*/
|
||||
public Trigger axisLessThan(int axis, double threshold, EventLoop loop) {
|
||||
return m_hid.axisLessThan(axis, threshold, loop).castTo(Trigger::new);
|
||||
var cache = m_axisLessThanCache.computeIfAbsent(loop, k -> new HashMap<>());
|
||||
return cache.computeIfAbsent(
|
||||
Pair.of(axis, threshold), k -> new Trigger(loop, () -> getRawAxis(axis) < threshold));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -240,7 +255,9 @@ public class CommandGenericHID {
|
||||
* threshold.
|
||||
*/
|
||||
public Trigger axisGreaterThan(int axis, double threshold, EventLoop loop) {
|
||||
return m_hid.axisGreaterThan(axis, threshold, loop).castTo(Trigger::new);
|
||||
var cache = m_axisGreaterThanCache.computeIfAbsent(loop, k -> new HashMap<>());
|
||||
return cache.computeIfAbsent(
|
||||
Pair.of(axis, threshold), k -> new Trigger(loop, () -> getRawAxis(axis) > threshold));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -55,7 +55,7 @@ public class CommandJoystick extends CommandGenericHID {
|
||||
* given loop.
|
||||
*/
|
||||
public Trigger trigger(EventLoop loop) {
|
||||
return m_hid.trigger(loop).castTo(Trigger::new);
|
||||
return button(Joystick.ButtonType.kTrigger.value, loop);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -77,7 +77,7 @@ public class CommandJoystick extends CommandGenericHID {
|
||||
* loop.
|
||||
*/
|
||||
public Trigger top(EventLoop loop) {
|
||||
return m_hid.top(loop).castTo(Trigger::new);
|
||||
return button(Joystick.ButtonType.kTop.value, loop);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -13,7 +13,7 @@ frc::GenericHID& CommandGenericHID::GetHID() {
|
||||
}
|
||||
|
||||
Trigger CommandGenericHID::Button(int button, frc::EventLoop* loop) const {
|
||||
return m_hid.Button(button, loop).CastTo<Trigger>();
|
||||
return Trigger(loop, [this, button] { return m_hid.GetRawButton(button); });
|
||||
}
|
||||
|
||||
Trigger CommandGenericHID::POV(int angle, frc::EventLoop* loop) const {
|
||||
|
||||
@@ -14,11 +14,11 @@ frc::Joystick& CommandJoystick::GetHID() {
|
||||
}
|
||||
|
||||
Trigger CommandJoystick::Trigger(frc::EventLoop* loop) const {
|
||||
return m_hid.Trigger(loop).CastTo<class Trigger>();
|
||||
return Button(frc::Joystick::ButtonType::kTriggerButton, loop);
|
||||
}
|
||||
|
||||
Trigger CommandJoystick::Top(frc::EventLoop* loop) const {
|
||||
return m_hid.Top(loop).CastTo<class Trigger>();
|
||||
return Button(frc::Joystick::ButtonType::kTopButton, loop);
|
||||
}
|
||||
|
||||
double CommandJoystick::GetMagnitude() const {
|
||||
|
||||
Reference in New Issue
Block a user