From eee29daaf9c29dabdaf6cb4f2cc9e20befe53fcb Mon Sep 17 00:00:00 2001 From: Oblarg Date: Wed, 29 Dec 2021 19:10:43 -0500 Subject: [PATCH] [newCommands] Trigger: Allow override of debounce type (#3845) Previously Trigger could only be debounced on rising edges. This change preserves the default behavior but adds the capability to override it. --- .../first/wpilibj2/command/button/Trigger.java | 18 +++++++++++++++--- .../native/cpp/frc2/command/button/Trigger.cpp | 10 ++++++---- .../include/frc2/command/button/Trigger.h | 10 +++++++--- 3 files changed, 28 insertions(+), 10 deletions(-) diff --git a/wpilibNewCommands/src/main/java/edu/wpi/first/wpilibj2/command/button/Trigger.java b/wpilibNewCommands/src/main/java/edu/wpi/first/wpilibj2/command/button/Trigger.java index 6d2c9a8de9..25d253e825 100644 --- a/wpilibNewCommands/src/main/java/edu/wpi/first/wpilibj2/command/button/Trigger.java +++ b/wpilibNewCommands/src/main/java/edu/wpi/first/wpilibj2/command/button/Trigger.java @@ -381,13 +381,25 @@ public class Trigger implements BooleanSupplier { * Creates a new debounced trigger from this trigger - it will become active when this trigger has * been active for longer than the specified period. * - * @param seconds the debounce period - * @return the debounced trigger + * @param seconds The debounce period. + * @return The debounced trigger (rising edges debounced only) */ public Trigger debounce(double seconds) { + return debounce(seconds, Debouncer.DebounceType.kRising); + } + + /** + * Creates a new debounced trigger from this trigger - it will become active when this trigger has + * been active for longer than the specified period. + * + * @param seconds The debounce period. + * @param type The debounce type. + * @return The debounced trigger. + */ + public Trigger debounce(double seconds, Debouncer.DebounceType type) { return new Trigger( new BooleanSupplier() { - Debouncer m_debouncer = new Debouncer(seconds); + Debouncer m_debouncer = new Debouncer(seconds, type); @Override public boolean getAsBoolean() { diff --git a/wpilibNewCommands/src/main/native/cpp/frc2/command/button/Trigger.cpp b/wpilibNewCommands/src/main/native/cpp/frc2/command/button/Trigger.cpp index dd41e1f9e5..e370097d72 100644 --- a/wpilibNewCommands/src/main/native/cpp/frc2/command/button/Trigger.cpp +++ b/wpilibNewCommands/src/main/native/cpp/frc2/command/button/Trigger.cpp @@ -139,8 +139,10 @@ Trigger Trigger::CancelWhenActive(Command* command) { return *this; } -Trigger Trigger::Debounce(units::second_t debounceTime) { - return Trigger([debouncer = frc::Debouncer(debounceTime), *this]() mutable { - return debouncer.Calculate(m_isActive()); - }); +Trigger Trigger::Debounce(units::second_t debounceTime, + frc::Debouncer::DebounceType type) { + return Trigger( + [debouncer = frc::Debouncer(debounceTime, type), *this]() mutable { + return debouncer.Calculate(m_isActive()); + }); } diff --git a/wpilibNewCommands/src/main/native/include/frc2/command/button/Trigger.h b/wpilibNewCommands/src/main/native/include/frc2/command/button/Trigger.h index 3213d4b226..8762cab7f0 100644 --- a/wpilibNewCommands/src/main/native/include/frc2/command/button/Trigger.h +++ b/wpilibNewCommands/src/main/native/include/frc2/command/button/Trigger.h @@ -9,6 +9,7 @@ #include #include +#include #include #include @@ -350,10 +351,13 @@ class Trigger { * Creates a new debounced trigger from this trigger - it will become active * when this trigger has been active for longer than the specified period. * - * @param debounceTime the debounce period - * @return the debounced trigger + * @param debounceTime The debounce period. + * @param type The debounce type. + * @return The debounced trigger. */ - Trigger Debounce(units::second_t debounceTime); + Trigger Debounce(units::second_t debounceTime, + frc::Debouncer::DebounceType type = + frc::Debouncer::DebounceType::kRising); private: std::function m_isActive;