diff --git a/wpilibNewCommands/src/generate/main/java/edu/wpi/first/wpilibj2/command/button/commandhid.java.jinja b/wpilibNewCommands/src/generate/main/java/edu/wpi/first/wpilibj2/command/button/commandhid.java.jinja index a13d673afd..331c7723a2 100644 --- a/wpilibNewCommands/src/generate/main/java/edu/wpi/first/wpilibj2/command/button/commandhid.java.jinja +++ b/wpilibNewCommands/src/generate/main/java/edu/wpi/first/wpilibj2/command/button/commandhid.java.jinja @@ -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); } /** diff --git a/wpilibNewCommands/src/generate/main/native/cpp/frc2/command/button/commandhid.cpp.jinja b/wpilibNewCommands/src/generate/main/native/cpp/frc2/command/button/commandhid.cpp.jinja index b6e5058598..38878f9b33 100644 --- a/wpilibNewCommands/src/generate/main/native/cpp/frc2/command/button/commandhid.cpp.jinja +++ b/wpilibNewCommands/src/generate/main/native/cpp/frc2/command/button/commandhid.cpp.jinja @@ -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(); + 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(); + return Trigger(loop, [this, threshold] { + return m_hid.Get{{ capitalize_first(trigger.name) }}Axis() > threshold; + }); } {% endif -%} {% endfor -%} diff --git a/wpilibNewCommands/src/generated/main/java/edu/wpi/first/wpilibj2/command/button/CommandPS4Controller.java b/wpilibNewCommands/src/generated/main/java/edu/wpi/first/wpilibj2/command/button/CommandPS4Controller.java index 150d124228..9c72f60cbd 100644 --- a/wpilibNewCommands/src/generated/main/java/edu/wpi/first/wpilibj2/command/button/CommandPS4Controller.java +++ b/wpilibNewCommands/src/generated/main/java/edu/wpi/first/wpilibj2/command/button/CommandPS4Controller.java @@ -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); } /** diff --git a/wpilibNewCommands/src/generated/main/java/edu/wpi/first/wpilibj2/command/button/CommandPS5Controller.java b/wpilibNewCommands/src/generated/main/java/edu/wpi/first/wpilibj2/command/button/CommandPS5Controller.java index 2f3d271837..908d24e842 100644 --- a/wpilibNewCommands/src/generated/main/java/edu/wpi/first/wpilibj2/command/button/CommandPS5Controller.java +++ b/wpilibNewCommands/src/generated/main/java/edu/wpi/first/wpilibj2/command/button/CommandPS5Controller.java @@ -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); } /** diff --git a/wpilibNewCommands/src/generated/main/java/edu/wpi/first/wpilibj2/command/button/CommandStadiaController.java b/wpilibNewCommands/src/generated/main/java/edu/wpi/first/wpilibj2/command/button/CommandStadiaController.java index 90bc5d0178..0890bbde48 100644 --- a/wpilibNewCommands/src/generated/main/java/edu/wpi/first/wpilibj2/command/button/CommandStadiaController.java +++ b/wpilibNewCommands/src/generated/main/java/edu/wpi/first/wpilibj2/command/button/CommandStadiaController.java @@ -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); } /** diff --git a/wpilibNewCommands/src/generated/main/java/edu/wpi/first/wpilibj2/command/button/CommandXboxController.java b/wpilibNewCommands/src/generated/main/java/edu/wpi/first/wpilibj2/command/button/CommandXboxController.java index 0f6417674e..a5ea65da28 100644 --- a/wpilibNewCommands/src/generated/main/java/edu/wpi/first/wpilibj2/command/button/CommandXboxController.java +++ b/wpilibNewCommands/src/generated/main/java/edu/wpi/first/wpilibj2/command/button/CommandXboxController.java @@ -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); } /** diff --git a/wpilibNewCommands/src/generated/main/native/cpp/frc2/command/button/CommandPS4Controller.cpp b/wpilibNewCommands/src/generated/main/native/cpp/frc2/command/button/CommandPS4Controller.cpp index e5418f845a..78d77b8fa4 100644 --- a/wpilibNewCommands/src/generated/main/native/cpp/frc2/command/button/CommandPS4Controller.cpp +++ b/wpilibNewCommands/src/generated/main/native/cpp/frc2/command/button/CommandPS4Controller.cpp @@ -16,59 +16,59 @@ frc::PS4Controller& CommandPS4Controller::GetHID() { } Trigger CommandPS4Controller::Square(frc::EventLoop* loop) const { - return m_hid.Square(loop).CastTo(); + return Button(frc::PS4Controller::Button::kSquare, loop); } Trigger CommandPS4Controller::Cross(frc::EventLoop* loop) const { - return m_hid.Cross(loop).CastTo(); + return Button(frc::PS4Controller::Button::kCross, loop); } Trigger CommandPS4Controller::Circle(frc::EventLoop* loop) const { - return m_hid.Circle(loop).CastTo(); + return Button(frc::PS4Controller::Button::kCircle, loop); } Trigger CommandPS4Controller::Triangle(frc::EventLoop* loop) const { - return m_hid.Triangle(loop).CastTo(); + return Button(frc::PS4Controller::Button::kTriangle, loop); } Trigger CommandPS4Controller::L1(frc::EventLoop* loop) const { - return m_hid.L1(loop).CastTo(); + return Button(frc::PS4Controller::Button::kL1, loop); } Trigger CommandPS4Controller::R1(frc::EventLoop* loop) const { - return m_hid.R1(loop).CastTo(); + return Button(frc::PS4Controller::Button::kR1, loop); } Trigger CommandPS4Controller::L2(frc::EventLoop* loop) const { - return m_hid.L2(loop).CastTo(); + return Button(frc::PS4Controller::Button::kL2, loop); } Trigger CommandPS4Controller::R2(frc::EventLoop* loop) const { - return m_hid.R2(loop).CastTo(); + return Button(frc::PS4Controller::Button::kR2, loop); } Trigger CommandPS4Controller::Share(frc::EventLoop* loop) const { - return m_hid.Share(loop).CastTo(); + return Button(frc::PS4Controller::Button::kShare, loop); } Trigger CommandPS4Controller::Options(frc::EventLoop* loop) const { - return m_hid.Options(loop).CastTo(); + return Button(frc::PS4Controller::Button::kOptions, loop); } Trigger CommandPS4Controller::L3(frc::EventLoop* loop) const { - return m_hid.L3(loop).CastTo(); + return Button(frc::PS4Controller::Button::kL3, loop); } Trigger CommandPS4Controller::R3(frc::EventLoop* loop) const { - return m_hid.R3(loop).CastTo(); + return Button(frc::PS4Controller::Button::kR3, loop); } Trigger CommandPS4Controller::PS(frc::EventLoop* loop) const { - return m_hid.PS(loop).CastTo(); + return Button(frc::PS4Controller::Button::kPS, loop); } Trigger CommandPS4Controller::Touchpad(frc::EventLoop* loop) const { - return m_hid.Touchpad(loop).CastTo(); + return Button(frc::PS4Controller::Button::kTouchpad, loop); } double CommandPS4Controller::GetLeftX() const { diff --git a/wpilibNewCommands/src/generated/main/native/cpp/frc2/command/button/CommandPS5Controller.cpp b/wpilibNewCommands/src/generated/main/native/cpp/frc2/command/button/CommandPS5Controller.cpp index bb0c5b8e5b..667c58b9af 100644 --- a/wpilibNewCommands/src/generated/main/native/cpp/frc2/command/button/CommandPS5Controller.cpp +++ b/wpilibNewCommands/src/generated/main/native/cpp/frc2/command/button/CommandPS5Controller.cpp @@ -16,59 +16,59 @@ frc::PS5Controller& CommandPS5Controller::GetHID() { } Trigger CommandPS5Controller::Square(frc::EventLoop* loop) const { - return m_hid.Square(loop).CastTo(); + return Button(frc::PS5Controller::Button::kSquare, loop); } Trigger CommandPS5Controller::Cross(frc::EventLoop* loop) const { - return m_hid.Cross(loop).CastTo(); + return Button(frc::PS5Controller::Button::kCross, loop); } Trigger CommandPS5Controller::Circle(frc::EventLoop* loop) const { - return m_hid.Circle(loop).CastTo(); + return Button(frc::PS5Controller::Button::kCircle, loop); } Trigger CommandPS5Controller::Triangle(frc::EventLoop* loop) const { - return m_hid.Triangle(loop).CastTo(); + return Button(frc::PS5Controller::Button::kTriangle, loop); } Trigger CommandPS5Controller::L1(frc::EventLoop* loop) const { - return m_hid.L1(loop).CastTo(); + return Button(frc::PS5Controller::Button::kL1, loop); } Trigger CommandPS5Controller::R1(frc::EventLoop* loop) const { - return m_hid.R1(loop).CastTo(); + return Button(frc::PS5Controller::Button::kR1, loop); } Trigger CommandPS5Controller::L2(frc::EventLoop* loop) const { - return m_hid.L2(loop).CastTo(); + return Button(frc::PS5Controller::Button::kL2, loop); } Trigger CommandPS5Controller::R2(frc::EventLoop* loop) const { - return m_hid.R2(loop).CastTo(); + return Button(frc::PS5Controller::Button::kR2, loop); } Trigger CommandPS5Controller::Create(frc::EventLoop* loop) const { - return m_hid.Create(loop).CastTo(); + return Button(frc::PS5Controller::Button::kCreate, loop); } Trigger CommandPS5Controller::Options(frc::EventLoop* loop) const { - return m_hid.Options(loop).CastTo(); + return Button(frc::PS5Controller::Button::kOptions, loop); } Trigger CommandPS5Controller::L3(frc::EventLoop* loop) const { - return m_hid.L3(loop).CastTo(); + return Button(frc::PS5Controller::Button::kL3, loop); } Trigger CommandPS5Controller::R3(frc::EventLoop* loop) const { - return m_hid.R3(loop).CastTo(); + return Button(frc::PS5Controller::Button::kR3, loop); } Trigger CommandPS5Controller::PS(frc::EventLoop* loop) const { - return m_hid.PS(loop).CastTo(); + return Button(frc::PS5Controller::Button::kPS, loop); } Trigger CommandPS5Controller::Touchpad(frc::EventLoop* loop) const { - return m_hid.Touchpad(loop).CastTo(); + return Button(frc::PS5Controller::Button::kTouchpad, loop); } double CommandPS5Controller::GetLeftX() const { diff --git a/wpilibNewCommands/src/generated/main/native/cpp/frc2/command/button/CommandStadiaController.cpp b/wpilibNewCommands/src/generated/main/native/cpp/frc2/command/button/CommandStadiaController.cpp index ee032b1926..72088defe8 100644 --- a/wpilibNewCommands/src/generated/main/native/cpp/frc2/command/button/CommandStadiaController.cpp +++ b/wpilibNewCommands/src/generated/main/native/cpp/frc2/command/button/CommandStadiaController.cpp @@ -16,63 +16,63 @@ frc::StadiaController& CommandStadiaController::GetHID() { } Trigger CommandStadiaController::A(frc::EventLoop* loop) const { - return m_hid.A(loop).CastTo(); + return Button(frc::StadiaController::Button::kA, loop); } Trigger CommandStadiaController::B(frc::EventLoop* loop) const { - return m_hid.B(loop).CastTo(); + return Button(frc::StadiaController::Button::kB, loop); } Trigger CommandStadiaController::X(frc::EventLoop* loop) const { - return m_hid.X(loop).CastTo(); + return Button(frc::StadiaController::Button::kX, loop); } Trigger CommandStadiaController::Y(frc::EventLoop* loop) const { - return m_hid.Y(loop).CastTo(); + return Button(frc::StadiaController::Button::kY, loop); } Trigger CommandStadiaController::LeftBumper(frc::EventLoop* loop) const { - return m_hid.LeftBumper(loop).CastTo(); + return Button(frc::StadiaController::Button::kLeftBumper, loop); } Trigger CommandStadiaController::RightBumper(frc::EventLoop* loop) const { - return m_hid.RightBumper(loop).CastTo(); + return Button(frc::StadiaController::Button::kRightBumper, loop); } Trigger CommandStadiaController::LeftStick(frc::EventLoop* loop) const { - return m_hid.LeftStick(loop).CastTo(); + return Button(frc::StadiaController::Button::kLeftStick, loop); } Trigger CommandStadiaController::RightStick(frc::EventLoop* loop) const { - return m_hid.RightStick(loop).CastTo(); + return Button(frc::StadiaController::Button::kRightStick, loop); } Trigger CommandStadiaController::Ellipses(frc::EventLoop* loop) const { - return m_hid.Ellipses(loop).CastTo(); + return Button(frc::StadiaController::Button::kEllipses, loop); } Trigger CommandStadiaController::Hamburger(frc::EventLoop* loop) const { - return m_hid.Hamburger(loop).CastTo(); + return Button(frc::StadiaController::Button::kHamburger, loop); } Trigger CommandStadiaController::Stadia(frc::EventLoop* loop) const { - return m_hid.Stadia(loop).CastTo(); + return Button(frc::StadiaController::Button::kStadia, loop); } Trigger CommandStadiaController::RightTrigger(frc::EventLoop* loop) const { - return m_hid.RightTrigger(loop).CastTo(); + return Button(frc::StadiaController::Button::kRightTrigger, loop); } Trigger CommandStadiaController::LeftTrigger(frc::EventLoop* loop) const { - return m_hid.LeftTrigger(loop).CastTo(); + return Button(frc::StadiaController::Button::kLeftTrigger, loop); } Trigger CommandStadiaController::Google(frc::EventLoop* loop) const { - return m_hid.Google(loop).CastTo(); + return Button(frc::StadiaController::Button::kGoogle, loop); } Trigger CommandStadiaController::Frame(frc::EventLoop* loop) const { - return m_hid.Frame(loop).CastTo(); + return Button(frc::StadiaController::Button::kFrame, loop); } double CommandStadiaController::GetLeftX() const { diff --git a/wpilibNewCommands/src/generated/main/native/cpp/frc2/command/button/CommandXboxController.cpp b/wpilibNewCommands/src/generated/main/native/cpp/frc2/command/button/CommandXboxController.cpp index 39fa015454..9f4ad960b8 100644 --- a/wpilibNewCommands/src/generated/main/native/cpp/frc2/command/button/CommandXboxController.cpp +++ b/wpilibNewCommands/src/generated/main/native/cpp/frc2/command/button/CommandXboxController.cpp @@ -16,53 +16,57 @@ frc::XboxController& CommandXboxController::GetHID() { } Trigger CommandXboxController::A(frc::EventLoop* loop) const { - return m_hid.A(loop).CastTo(); + return Button(frc::XboxController::Button::kA, loop); } Trigger CommandXboxController::B(frc::EventLoop* loop) const { - return m_hid.B(loop).CastTo(); + return Button(frc::XboxController::Button::kB, loop); } Trigger CommandXboxController::X(frc::EventLoop* loop) const { - return m_hid.X(loop).CastTo(); + return Button(frc::XboxController::Button::kX, loop); } Trigger CommandXboxController::Y(frc::EventLoop* loop) const { - return m_hid.Y(loop).CastTo(); + return Button(frc::XboxController::Button::kY, loop); } Trigger CommandXboxController::LeftBumper(frc::EventLoop* loop) const { - return m_hid.LeftBumper(loop).CastTo(); + return Button(frc::XboxController::Button::kLeftBumper, loop); } Trigger CommandXboxController::RightBumper(frc::EventLoop* loop) const { - return m_hid.RightBumper(loop).CastTo(); + return Button(frc::XboxController::Button::kRightBumper, loop); } Trigger CommandXboxController::Back(frc::EventLoop* loop) const { - return m_hid.Back(loop).CastTo(); + return Button(frc::XboxController::Button::kBack, loop); } Trigger CommandXboxController::Start(frc::EventLoop* loop) const { - return m_hid.Start(loop).CastTo(); + return Button(frc::XboxController::Button::kStart, loop); } Trigger CommandXboxController::LeftStick(frc::EventLoop* loop) const { - return m_hid.LeftStick(loop).CastTo(); + return Button(frc::XboxController::Button::kLeftStick, loop); } Trigger CommandXboxController::RightStick(frc::EventLoop* loop) const { - return m_hid.RightStick(loop).CastTo(); + return Button(frc::XboxController::Button::kRightStick, loop); } Trigger CommandXboxController::LeftTrigger(double threshold, frc::EventLoop* loop) const { - return m_hid.LeftTrigger(threshold, loop).CastTo(); + 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(); + return Trigger(loop, [this, threshold] { + return m_hid.GetRightTriggerAxis() > threshold; + }); } double CommandXboxController::GetLeftX() const { diff --git a/wpilibNewCommands/src/main/java/edu/wpi/first/wpilibj2/command/button/CommandGenericHID.java b/wpilibNewCommands/src/main/java/edu/wpi/first/wpilibj2/command/button/CommandGenericHID.java index 423d88ea14..6eafae5046 100644 --- a/wpilibNewCommands/src/main/java/edu/wpi/first/wpilibj2/command/button/CommandGenericHID.java +++ b/wpilibNewCommands/src/main/java/edu/wpi/first/wpilibj2/command/button/CommandGenericHID.java @@ -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> m_buttonCache = new HashMap<>(); + private final Map, Trigger>> m_axisLessThanCache = + new HashMap<>(); + private final Map, Trigger>> m_axisGreaterThanCache = + new HashMap<>(); + private final Map> 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)); } /** diff --git a/wpilibNewCommands/src/main/java/edu/wpi/first/wpilibj2/command/button/CommandJoystick.java b/wpilibNewCommands/src/main/java/edu/wpi/first/wpilibj2/command/button/CommandJoystick.java index f9936096c4..647369f401 100644 --- a/wpilibNewCommands/src/main/java/edu/wpi/first/wpilibj2/command/button/CommandJoystick.java +++ b/wpilibNewCommands/src/main/java/edu/wpi/first/wpilibj2/command/button/CommandJoystick.java @@ -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); } /** diff --git a/wpilibNewCommands/src/main/native/cpp/frc2/command/button/CommandGenericHID.cpp b/wpilibNewCommands/src/main/native/cpp/frc2/command/button/CommandGenericHID.cpp index cfe12cd25d..b39d3d4838 100644 --- a/wpilibNewCommands/src/main/native/cpp/frc2/command/button/CommandGenericHID.cpp +++ b/wpilibNewCommands/src/main/native/cpp/frc2/command/button/CommandGenericHID.cpp @@ -13,7 +13,7 @@ frc::GenericHID& CommandGenericHID::GetHID() { } Trigger CommandGenericHID::Button(int button, frc::EventLoop* loop) const { - return m_hid.Button(button, loop).CastTo(); + return Trigger(loop, [this, button] { return m_hid.GetRawButton(button); }); } Trigger CommandGenericHID::POV(int angle, frc::EventLoop* loop) const { diff --git a/wpilibNewCommands/src/main/native/cpp/frc2/command/button/CommandJoystick.cpp b/wpilibNewCommands/src/main/native/cpp/frc2/command/button/CommandJoystick.cpp index 03cb6d89d2..ae25fb05ea 100644 --- a/wpilibNewCommands/src/main/native/cpp/frc2/command/button/CommandJoystick.cpp +++ b/wpilibNewCommands/src/main/native/cpp/frc2/command/button/CommandJoystick.cpp @@ -14,11 +14,11 @@ frc::Joystick& CommandJoystick::GetHID() { } Trigger CommandJoystick::Trigger(frc::EventLoop* loop) const { - return m_hid.Trigger(loop).CastTo(); + return Button(frc::Joystick::ButtonType::kTriggerButton, loop); } Trigger CommandJoystick::Top(frc::EventLoop* loop) const { - return m_hid.Top(loop).CastTo(); + return Button(frc::Joystick::ButtonType::kTopButton, loop); } double CommandJoystick::GetMagnitude() const { diff --git a/wpilibj/src/generate/hid.java.jinja b/wpilibj/src/generate/hid.java.jinja index 3c78bd5a3d..48a3d67d43 100644 --- a/wpilibj/src/generate/hid.java.jinja +++ b/wpilibj/src/generate/hid.java.jinja @@ -133,7 +133,7 @@ public class {{ ConsoleName }}Controller extends GenericHID implements Sendable * threshold, attached to the given event loop */ public BooleanEvent {{ trigger.name }}(double threshold, EventLoop loop) { - return new BooleanEvent(loop, () -> get{{ capitalize_first(trigger.name) }}Axis() > threshold); + return axisGreaterThan(Axis.k{{ capitalize_first(trigger.name) }}.value, threshold, loop); } /** @@ -185,7 +185,7 @@ public class {{ ConsoleName }}Controller extends GenericHID implements Sendable * attached to the given loop. */ public BooleanEvent {{ button.name }}(EventLoop loop) { - return new BooleanEvent(loop, this::get{{ capitalize_first(button.name) }}Button); + return button(Button.k{{ capitalize_first(button.name) }}.value, loop); } {% endfor -%} {% if ConsoleName == "Xbox" or ConsoleName == "Stadia" %} diff --git a/wpilibj/src/generated/main/java/edu/wpi/first/wpilibj/PS4Controller.java b/wpilibj/src/generated/main/java/edu/wpi/first/wpilibj/PS4Controller.java index ca8ae5058f..669cd65cfe 100644 --- a/wpilibj/src/generated/main/java/edu/wpi/first/wpilibj/PS4Controller.java +++ b/wpilibj/src/generated/main/java/edu/wpi/first/wpilibj/PS4Controller.java @@ -219,7 +219,7 @@ public class PS4Controller extends GenericHID implements Sendable { * attached to the given loop. */ public BooleanEvent square(EventLoop loop) { - return new BooleanEvent(loop, this::getSquareButton); + return button(Button.kSquare.value, loop); } /** @@ -257,7 +257,7 @@ public class PS4Controller extends GenericHID implements Sendable { * attached to the given loop. */ public BooleanEvent cross(EventLoop loop) { - return new BooleanEvent(loop, this::getCrossButton); + return button(Button.kCross.value, loop); } /** @@ -295,7 +295,7 @@ public class PS4Controller extends GenericHID implements Sendable { * attached to the given loop. */ public BooleanEvent circle(EventLoop loop) { - return new BooleanEvent(loop, this::getCircleButton); + return button(Button.kCircle.value, loop); } /** @@ -333,7 +333,7 @@ public class PS4Controller extends GenericHID implements Sendable { * attached to the given loop. */ public BooleanEvent triangle(EventLoop loop) { - return new BooleanEvent(loop, this::getTriangleButton); + return button(Button.kTriangle.value, loop); } /** @@ -371,7 +371,7 @@ public class PS4Controller extends GenericHID implements Sendable { * attached to the given loop. */ public BooleanEvent L1(EventLoop loop) { - return new BooleanEvent(loop, this::getL1Button); + return button(Button.kL1.value, loop); } /** @@ -409,7 +409,7 @@ public class PS4Controller extends GenericHID implements Sendable { * attached to the given loop. */ public BooleanEvent R1(EventLoop loop) { - return new BooleanEvent(loop, this::getR1Button); + return button(Button.kR1.value, loop); } /** @@ -447,7 +447,7 @@ public class PS4Controller extends GenericHID implements Sendable { * attached to the given loop. */ public BooleanEvent L2(EventLoop loop) { - return new BooleanEvent(loop, this::getL2Button); + return button(Button.kL2.value, loop); } /** @@ -485,7 +485,7 @@ public class PS4Controller extends GenericHID implements Sendable { * attached to the given loop. */ public BooleanEvent R2(EventLoop loop) { - return new BooleanEvent(loop, this::getR2Button); + return button(Button.kR2.value, loop); } /** @@ -523,7 +523,7 @@ public class PS4Controller extends GenericHID implements Sendable { * attached to the given loop. */ public BooleanEvent share(EventLoop loop) { - return new BooleanEvent(loop, this::getShareButton); + return button(Button.kShare.value, loop); } /** @@ -561,7 +561,7 @@ public class PS4Controller extends GenericHID implements Sendable { * attached to the given loop. */ public BooleanEvent options(EventLoop loop) { - return new BooleanEvent(loop, this::getOptionsButton); + return button(Button.kOptions.value, loop); } /** @@ -599,7 +599,7 @@ public class PS4Controller extends GenericHID implements Sendable { * attached to the given loop. */ public BooleanEvent L3(EventLoop loop) { - return new BooleanEvent(loop, this::getL3Button); + return button(Button.kL3.value, loop); } /** @@ -637,7 +637,7 @@ public class PS4Controller extends GenericHID implements Sendable { * attached to the given loop. */ public BooleanEvent R3(EventLoop loop) { - return new BooleanEvent(loop, this::getR3Button); + return button(Button.kR3.value, loop); } /** @@ -675,7 +675,7 @@ public class PS4Controller extends GenericHID implements Sendable { * attached to the given loop. */ public BooleanEvent PS(EventLoop loop) { - return new BooleanEvent(loop, this::getPSButton); + return button(Button.kPS.value, loop); } /** @@ -713,7 +713,7 @@ public class PS4Controller extends GenericHID implements Sendable { * attached to the given loop. */ public BooleanEvent touchpad(EventLoop loop) { - return new BooleanEvent(loop, this::getTouchpadButton); + return button(Button.kTouchpad.value, loop); } /** diff --git a/wpilibj/src/generated/main/java/edu/wpi/first/wpilibj/PS5Controller.java b/wpilibj/src/generated/main/java/edu/wpi/first/wpilibj/PS5Controller.java index 26c747906f..52ca2e91d8 100644 --- a/wpilibj/src/generated/main/java/edu/wpi/first/wpilibj/PS5Controller.java +++ b/wpilibj/src/generated/main/java/edu/wpi/first/wpilibj/PS5Controller.java @@ -219,7 +219,7 @@ public class PS5Controller extends GenericHID implements Sendable { * attached to the given loop. */ public BooleanEvent square(EventLoop loop) { - return new BooleanEvent(loop, this::getSquareButton); + return button(Button.kSquare.value, loop); } /** @@ -257,7 +257,7 @@ public class PS5Controller extends GenericHID implements Sendable { * attached to the given loop. */ public BooleanEvent cross(EventLoop loop) { - return new BooleanEvent(loop, this::getCrossButton); + return button(Button.kCross.value, loop); } /** @@ -295,7 +295,7 @@ public class PS5Controller extends GenericHID implements Sendable { * attached to the given loop. */ public BooleanEvent circle(EventLoop loop) { - return new BooleanEvent(loop, this::getCircleButton); + return button(Button.kCircle.value, loop); } /** @@ -333,7 +333,7 @@ public class PS5Controller extends GenericHID implements Sendable { * attached to the given loop. */ public BooleanEvent triangle(EventLoop loop) { - return new BooleanEvent(loop, this::getTriangleButton); + return button(Button.kTriangle.value, loop); } /** @@ -371,7 +371,7 @@ public class PS5Controller extends GenericHID implements Sendable { * attached to the given loop. */ public BooleanEvent L1(EventLoop loop) { - return new BooleanEvent(loop, this::getL1Button); + return button(Button.kL1.value, loop); } /** @@ -409,7 +409,7 @@ public class PS5Controller extends GenericHID implements Sendable { * attached to the given loop. */ public BooleanEvent R1(EventLoop loop) { - return new BooleanEvent(loop, this::getR1Button); + return button(Button.kR1.value, loop); } /** @@ -447,7 +447,7 @@ public class PS5Controller extends GenericHID implements Sendable { * attached to the given loop. */ public BooleanEvent L2(EventLoop loop) { - return new BooleanEvent(loop, this::getL2Button); + return button(Button.kL2.value, loop); } /** @@ -485,7 +485,7 @@ public class PS5Controller extends GenericHID implements Sendable { * attached to the given loop. */ public BooleanEvent R2(EventLoop loop) { - return new BooleanEvent(loop, this::getR2Button); + return button(Button.kR2.value, loop); } /** @@ -523,7 +523,7 @@ public class PS5Controller extends GenericHID implements Sendable { * attached to the given loop. */ public BooleanEvent create(EventLoop loop) { - return new BooleanEvent(loop, this::getCreateButton); + return button(Button.kCreate.value, loop); } /** @@ -561,7 +561,7 @@ public class PS5Controller extends GenericHID implements Sendable { * attached to the given loop. */ public BooleanEvent options(EventLoop loop) { - return new BooleanEvent(loop, this::getOptionsButton); + return button(Button.kOptions.value, loop); } /** @@ -599,7 +599,7 @@ public class PS5Controller extends GenericHID implements Sendable { * attached to the given loop. */ public BooleanEvent L3(EventLoop loop) { - return new BooleanEvent(loop, this::getL3Button); + return button(Button.kL3.value, loop); } /** @@ -637,7 +637,7 @@ public class PS5Controller extends GenericHID implements Sendable { * attached to the given loop. */ public BooleanEvent R3(EventLoop loop) { - return new BooleanEvent(loop, this::getR3Button); + return button(Button.kR3.value, loop); } /** @@ -675,7 +675,7 @@ public class PS5Controller extends GenericHID implements Sendable { * attached to the given loop. */ public BooleanEvent PS(EventLoop loop) { - return new BooleanEvent(loop, this::getPSButton); + return button(Button.kPS.value, loop); } /** @@ -713,7 +713,7 @@ public class PS5Controller extends GenericHID implements Sendable { * attached to the given loop. */ public BooleanEvent touchpad(EventLoop loop) { - return new BooleanEvent(loop, this::getTouchpadButton); + return button(Button.kTouchpad.value, loop); } /** diff --git a/wpilibj/src/generated/main/java/edu/wpi/first/wpilibj/StadiaController.java b/wpilibj/src/generated/main/java/edu/wpi/first/wpilibj/StadiaController.java index 3bcd395eb9..4434586191 100644 --- a/wpilibj/src/generated/main/java/edu/wpi/first/wpilibj/StadiaController.java +++ b/wpilibj/src/generated/main/java/edu/wpi/first/wpilibj/StadiaController.java @@ -197,7 +197,7 @@ public class StadiaController extends GenericHID implements Sendable { * attached to the given loop. */ public BooleanEvent a(EventLoop loop) { - return new BooleanEvent(loop, this::getAButton); + return button(Button.kA.value, loop); } /** @@ -235,7 +235,7 @@ public class StadiaController extends GenericHID implements Sendable { * attached to the given loop. */ public BooleanEvent b(EventLoop loop) { - return new BooleanEvent(loop, this::getBButton); + return button(Button.kB.value, loop); } /** @@ -273,7 +273,7 @@ public class StadiaController extends GenericHID implements Sendable { * attached to the given loop. */ public BooleanEvent x(EventLoop loop) { - return new BooleanEvent(loop, this::getXButton); + return button(Button.kX.value, loop); } /** @@ -311,7 +311,7 @@ public class StadiaController extends GenericHID implements Sendable { * attached to the given loop. */ public BooleanEvent y(EventLoop loop) { - return new BooleanEvent(loop, this::getYButton); + return button(Button.kY.value, loop); } /** @@ -349,7 +349,7 @@ public class StadiaController extends GenericHID implements Sendable { * attached to the given loop. */ public BooleanEvent leftBumper(EventLoop loop) { - return new BooleanEvent(loop, this::getLeftBumperButton); + return button(Button.kLeftBumper.value, loop); } /** @@ -387,7 +387,7 @@ public class StadiaController extends GenericHID implements Sendable { * attached to the given loop. */ public BooleanEvent rightBumper(EventLoop loop) { - return new BooleanEvent(loop, this::getRightBumperButton); + return button(Button.kRightBumper.value, loop); } /** @@ -425,7 +425,7 @@ public class StadiaController extends GenericHID implements Sendable { * attached to the given loop. */ public BooleanEvent leftStick(EventLoop loop) { - return new BooleanEvent(loop, this::getLeftStickButton); + return button(Button.kLeftStick.value, loop); } /** @@ -463,7 +463,7 @@ public class StadiaController extends GenericHID implements Sendable { * attached to the given loop. */ public BooleanEvent rightStick(EventLoop loop) { - return new BooleanEvent(loop, this::getRightStickButton); + return button(Button.kRightStick.value, loop); } /** @@ -501,7 +501,7 @@ public class StadiaController extends GenericHID implements Sendable { * attached to the given loop. */ public BooleanEvent ellipses(EventLoop loop) { - return new BooleanEvent(loop, this::getEllipsesButton); + return button(Button.kEllipses.value, loop); } /** @@ -539,7 +539,7 @@ public class StadiaController extends GenericHID implements Sendable { * attached to the given loop. */ public BooleanEvent hamburger(EventLoop loop) { - return new BooleanEvent(loop, this::getHamburgerButton); + return button(Button.kHamburger.value, loop); } /** @@ -577,7 +577,7 @@ public class StadiaController extends GenericHID implements Sendable { * attached to the given loop. */ public BooleanEvent stadia(EventLoop loop) { - return new BooleanEvent(loop, this::getStadiaButton); + return button(Button.kStadia.value, loop); } /** @@ -615,7 +615,7 @@ public class StadiaController extends GenericHID implements Sendable { * attached to the given loop. */ public BooleanEvent rightTrigger(EventLoop loop) { - return new BooleanEvent(loop, this::getRightTriggerButton); + return button(Button.kRightTrigger.value, loop); } /** @@ -653,7 +653,7 @@ public class StadiaController extends GenericHID implements Sendable { * attached to the given loop. */ public BooleanEvent leftTrigger(EventLoop loop) { - return new BooleanEvent(loop, this::getLeftTriggerButton); + return button(Button.kLeftTrigger.value, loop); } /** @@ -691,7 +691,7 @@ public class StadiaController extends GenericHID implements Sendable { * attached to the given loop. */ public BooleanEvent google(EventLoop loop) { - return new BooleanEvent(loop, this::getGoogleButton); + return button(Button.kGoogle.value, loop); } /** @@ -729,7 +729,7 @@ public class StadiaController extends GenericHID implements Sendable { * attached to the given loop. */ public BooleanEvent frame(EventLoop loop) { - return new BooleanEvent(loop, this::getFrameButton); + return button(Button.kFrame.value, loop); } /** diff --git a/wpilibj/src/generated/main/java/edu/wpi/first/wpilibj/XboxController.java b/wpilibj/src/generated/main/java/edu/wpi/first/wpilibj/XboxController.java index 5dc2a0258f..2bc096f8ef 100644 --- a/wpilibj/src/generated/main/java/edu/wpi/first/wpilibj/XboxController.java +++ b/wpilibj/src/generated/main/java/edu/wpi/first/wpilibj/XboxController.java @@ -177,7 +177,7 @@ public class XboxController extends GenericHID implements Sendable { * threshold, attached to the given event loop */ public BooleanEvent leftTrigger(double threshold, EventLoop loop) { - return new BooleanEvent(loop, () -> getLeftTriggerAxis() > threshold); + return axisGreaterThan(Axis.kLeftTrigger.value, threshold, loop); } /** @@ -213,7 +213,7 @@ public class XboxController extends GenericHID implements Sendable { * threshold, attached to the given event loop */ public BooleanEvent rightTrigger(double threshold, EventLoop loop) { - return new BooleanEvent(loop, () -> getRightTriggerAxis() > threshold); + return axisGreaterThan(Axis.kRightTrigger.value, threshold, loop); } /** @@ -263,7 +263,7 @@ public class XboxController extends GenericHID implements Sendable { * attached to the given loop. */ public BooleanEvent a(EventLoop loop) { - return new BooleanEvent(loop, this::getAButton); + return button(Button.kA.value, loop); } /** @@ -301,7 +301,7 @@ public class XboxController extends GenericHID implements Sendable { * attached to the given loop. */ public BooleanEvent b(EventLoop loop) { - return new BooleanEvent(loop, this::getBButton); + return button(Button.kB.value, loop); } /** @@ -339,7 +339,7 @@ public class XboxController extends GenericHID implements Sendable { * attached to the given loop. */ public BooleanEvent x(EventLoop loop) { - return new BooleanEvent(loop, this::getXButton); + return button(Button.kX.value, loop); } /** @@ -377,7 +377,7 @@ public class XboxController extends GenericHID implements Sendable { * attached to the given loop. */ public BooleanEvent y(EventLoop loop) { - return new BooleanEvent(loop, this::getYButton); + return button(Button.kY.value, loop); } /** @@ -415,7 +415,7 @@ public class XboxController extends GenericHID implements Sendable { * attached to the given loop. */ public BooleanEvent leftBumper(EventLoop loop) { - return new BooleanEvent(loop, this::getLeftBumperButton); + return button(Button.kLeftBumper.value, loop); } /** @@ -453,7 +453,7 @@ public class XboxController extends GenericHID implements Sendable { * attached to the given loop. */ public BooleanEvent rightBumper(EventLoop loop) { - return new BooleanEvent(loop, this::getRightBumperButton); + return button(Button.kRightBumper.value, loop); } /** @@ -491,7 +491,7 @@ public class XboxController extends GenericHID implements Sendable { * attached to the given loop. */ public BooleanEvent back(EventLoop loop) { - return new BooleanEvent(loop, this::getBackButton); + return button(Button.kBack.value, loop); } /** @@ -529,7 +529,7 @@ public class XboxController extends GenericHID implements Sendable { * attached to the given loop. */ public BooleanEvent start(EventLoop loop) { - return new BooleanEvent(loop, this::getStartButton); + return button(Button.kStart.value, loop); } /** @@ -567,7 +567,7 @@ public class XboxController extends GenericHID implements Sendable { * attached to the given loop. */ public BooleanEvent leftStick(EventLoop loop) { - return new BooleanEvent(loop, this::getLeftStickButton); + return button(Button.kLeftStick.value, loop); } /** @@ -605,7 +605,7 @@ public class XboxController extends GenericHID implements Sendable { * attached to the given loop. */ public BooleanEvent rightStick(EventLoop loop) { - return new BooleanEvent(loop, this::getRightStickButton); + return button(Button.kRightStick.value, loop); } /** diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/GenericHID.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/GenericHID.java index ceb00a780b..ba48da1662 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/GenericHID.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/GenericHID.java @@ -6,6 +6,7 @@ package edu.wpi.first.wpilibj; import edu.wpi.first.hal.DriverStationJNI; import edu.wpi.first.math.MathUtil; +import edu.wpi.first.math.Pair; import edu.wpi.first.wpilibj.event.BooleanEvent; import edu.wpi.first.wpilibj.event.EventLoop; import java.util.HashMap; @@ -97,6 +98,12 @@ public class GenericHID { private int m_outputs; private int m_leftRumble; private int m_rightRumble; + private final Map> m_buttonCache = new HashMap<>(); + private final Map, BooleanEvent>> m_axisLessThanCache = + new HashMap<>(); + private final Map, BooleanEvent>> m_axisGreaterThanCache = + new HashMap<>(); + private final Map> m_povCache = new HashMap<>(); /** * Construct an instance of a device. @@ -159,7 +166,10 @@ public class GenericHID { * @return an event instance representing the button's digital signal attached to the given loop. */ public BooleanEvent button(int button, EventLoop loop) { - return new BooleanEvent(loop, () -> getRawButton(button)); + synchronized (m_buttonCache) { + var cache = m_buttonCache.computeIfAbsent(loop, k -> new HashMap<>()); + return cache.computeIfAbsent(button, k -> new BooleanEvent(loop, () -> getRawButton(k))); + } } /** @@ -223,7 +233,12 @@ public class GenericHID { * @return a BooleanEvent instance based around this angle of a POV on the HID. */ public BooleanEvent pov(int pov, int angle, EventLoop loop) { - return new BooleanEvent(loop, () -> getPOV(pov) == angle); + synchronized (m_povCache) { + 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 BooleanEvent(loop, () -> getPOV(pov) == angle)); + } } /** @@ -335,7 +350,12 @@ public class GenericHID { * @return an event instance that is true when the axis value is less than the provided threshold. */ public BooleanEvent axisLessThan(int axis, double threshold, EventLoop loop) { - return new BooleanEvent(loop, () -> getRawAxis(axis) < threshold); + synchronized (m_axisLessThanCache) { + var cache = m_axisLessThanCache.computeIfAbsent(loop, k -> new HashMap<>()); + return cache.computeIfAbsent( + Pair.of(axis, threshold), + k -> new BooleanEvent(loop, () -> getRawAxis(axis) < threshold)); + } } /** @@ -349,7 +369,12 @@ public class GenericHID { * threshold. */ public BooleanEvent axisGreaterThan(int axis, double threshold, EventLoop loop) { - return new BooleanEvent(loop, () -> getRawAxis(axis) > threshold); + synchronized (m_axisGreaterThanCache) { + var cache = m_axisGreaterThanCache.computeIfAbsent(loop, k -> new HashMap<>()); + return cache.computeIfAbsent( + Pair.of(axis, threshold), + k -> new BooleanEvent(loop, () -> getRawAxis(axis) > threshold)); + } } /** diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/Joystick.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/Joystick.java index 5536009e32..08eebeef7d 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/Joystick.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/Joystick.java @@ -261,7 +261,7 @@ public class Joystick extends GenericHID { * given loop. */ public BooleanEvent trigger(EventLoop loop) { - return new BooleanEvent(loop, this::getTrigger); + return button(ButtonType.kTrigger.value, loop); } /** @@ -299,7 +299,7 @@ public class Joystick extends GenericHID { * loop. */ public BooleanEvent top(EventLoop loop) { - return new BooleanEvent(loop, this::getTop); + return button(ButtonType.kTop.value, loop); } /**