diff --git a/wpilibc/src/main/native/cpp/DutyCycleEncoder.cpp b/wpilibc/src/main/native/cpp/DutyCycleEncoder.cpp index e2a927a800..728b1def7d 100644 --- a/wpilibc/src/main/native/cpp/DutyCycleEncoder.cpp +++ b/wpilibc/src/main/native/cpp/DutyCycleEncoder.cpp @@ -8,6 +8,7 @@ #include "frc/DutyCycleEncoder.h" #include "frc/Counter.h" +#include "frc/DigitalInput.h" #include "frc/DigitalSource.h" #include "frc/DriverStation.h" #include "frc/DutyCycle.h" @@ -15,6 +16,12 @@ using namespace frc; +DutyCycleEncoder::DutyCycleEncoder(int channel) + : m_dutyCycle{std::make_shared( + std::make_shared(channel))}, + m_analogTrigger{m_dutyCycle.get()}, + m_counter{} {} + DutyCycleEncoder::DutyCycleEncoder(DutyCycle& dutyCycle) : m_dutyCycle{&dutyCycle, NullDeleter{}}, m_analogTrigger{m_dutyCycle.get()}, diff --git a/wpilibc/src/main/native/include/frc/DutyCycleEncoder.h b/wpilibc/src/main/native/include/frc/DutyCycleEncoder.h index dd24f9bef2..92864a8ccc 100644 --- a/wpilibc/src/main/native/include/frc/DutyCycleEncoder.h +++ b/wpilibc/src/main/native/include/frc/DutyCycleEncoder.h @@ -32,6 +32,13 @@ class DutyCycleEncoder : public ErrorBase, public Sendable, public SendableHelper { public: + /** + * Construct a new DutyCycleEncoder on a specific channel. + * + * @param channel the channel to attach to + */ + explicit DutyCycleEncoder(int channel); + /** * Construct a new DutyCycleEncoder attached to an existing DutyCycle object. * diff --git a/wpilibcExamples/src/main/cpp/examples/DutyCycleEncoder/cpp/Robot.cpp b/wpilibcExamples/src/main/cpp/examples/DutyCycleEncoder/cpp/Robot.cpp index dccdab4b00..b75d99cf65 100644 --- a/wpilibcExamples/src/main/cpp/examples/DutyCycleEncoder/cpp/Robot.cpp +++ b/wpilibcExamples/src/main/cpp/examples/DutyCycleEncoder/cpp/Robot.cpp @@ -5,17 +5,13 @@ /* the project. */ /*----------------------------------------------------------------------------*/ -#include -#include #include #include #include class Robot : public frc::TimedRobot { - frc::DigitalInput m_input{0}; // Input channel - - // Duty cycle encoder - frc::DutyCycleEncoder m_dutyCycleEncoder{m_input}; + // Duty cycle encoder on channel 0 + frc::DutyCycleEncoder m_dutyCycleEncoder{0}; public: void RobotInit() override { diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/DutyCycleEncoder.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/DutyCycleEncoder.java index b7d80e8edc..b2040f4998 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/DutyCycleEncoder.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/DutyCycleEncoder.java @@ -33,6 +33,16 @@ public class DutyCycleEncoder implements Sendable, AutoCloseable { protected SimDouble m_simPosition; protected SimBoolean m_simIsConnected; + /** + * Construct a new DutyCycleEncoder on a specific channel. + * + * @param channel the channel to attach to + */ + public DutyCycleEncoder(int channel) { + m_dutyCycle = new DutyCycle(new DigitalInput(channel)); + init(); + } + /** * Construct a new DutyCycleEncoder attached to an existing DutyCycle object. * diff --git a/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/dutycycleencoder/Robot.java b/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/dutycycleencoder/Robot.java index 1689d17eec..5755f72c07 100644 --- a/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/dutycycleencoder/Robot.java +++ b/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/dutycycleencoder/Robot.java @@ -7,20 +7,17 @@ package edu.wpi.first.wpilibj.examples.dutycycleencoder; -import edu.wpi.first.wpilibj.DigitalInput; import edu.wpi.first.wpilibj.DutyCycleEncoder; import edu.wpi.first.wpilibj.TimedRobot; import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; @SuppressWarnings({"PMD.SingularField"}) public class Robot extends TimedRobot { - private DigitalInput m_input; private DutyCycleEncoder m_dutyCycleEncoder; @Override public void robotInit() { - m_input = new DigitalInput(0); - m_dutyCycleEncoder = new DutyCycleEncoder(m_input); + m_dutyCycleEncoder = new DutyCycleEncoder(0); // Set to 0.5 units per rotation m_dutyCycleEncoder.setDistancePerRotation(0.5);