From ea1a1e6bc39f04a0cecf7625e5d02cefc4f13d9f Mon Sep 17 00:00:00 2001 From: Thad House Date: Tue, 12 Jul 2016 21:53:51 -0700 Subject: [PATCH] Makes the CANJaguar error status messages more useful (#165) The previous version would just return the class name for the DigitalOutput port. Now it actually gets the dio port value for better readability. --- wpilibc/athena/include/DigitalOutput.h | 1 + wpilibc/athena/src/DigitalOutput.cpp | 14 ++++++++++++++ .../java/edu/wpi/first/wpilibj/DigitalOutput.java | 9 +++++++++ .../wpilibj/fixtures/CANMotorEncoderFixture.java | 4 ++-- 4 files changed, 26 insertions(+), 2 deletions(-) diff --git a/wpilibc/athena/include/DigitalOutput.h b/wpilibc/athena/include/DigitalOutput.h index 2d9ddf8f39..2b88539e66 100644 --- a/wpilibc/athena/include/DigitalOutput.h +++ b/wpilibc/athena/include/DigitalOutput.h @@ -27,6 +27,7 @@ class DigitalOutput : public DigitalSource, explicit DigitalOutput(uint32_t channel); virtual ~DigitalOutput(); void Set(bool value); + bool Get(); uint32_t GetChannel() const override; void Pulse(float length); bool IsPulsing() const; diff --git a/wpilibc/athena/src/DigitalOutput.cpp b/wpilibc/athena/src/DigitalOutput.cpp index 3e358ddf91..86b744e7e0 100644 --- a/wpilibc/athena/src/DigitalOutput.cpp +++ b/wpilibc/athena/src/DigitalOutput.cpp @@ -72,6 +72,20 @@ void DigitalOutput::Set(bool value) { wpi_setErrorWithContext(status, HAL_GetErrorMessage(status)); } +/** + * Gets the value being output from the Digital Output. + * + * @return the state of the digital output. + */ +bool DigitalOutput::Get() { + if (StatusIsFatal()) return false; + + int32_t status = 0; + bool val = HAL_GetDIO(m_handle, &status); + wpi_setErrorWithContext(status, HAL_GetErrorMessage(status)); + return val; +} + /** * @return The GPIO channel number that this object represents. */ diff --git a/wpilibj/src/athena/java/edu/wpi/first/wpilibj/DigitalOutput.java b/wpilibj/src/athena/java/edu/wpi/first/wpilibj/DigitalOutput.java index 5c5cdaed90..18c2c3435a 100644 --- a/wpilibj/src/athena/java/edu/wpi/first/wpilibj/DigitalOutput.java +++ b/wpilibj/src/athena/java/edu/wpi/first/wpilibj/DigitalOutput.java @@ -64,6 +64,15 @@ public class DigitalOutput extends DigitalSource implements LiveWindowSendable { DIOJNI.setDIO(m_handle, (short) (value ? 1 : 0)); } + /** + * Gets the value being output from the Digital Output. + * + * @return the state of the digital output. + */ + public boolean get() { + return DIOJNI.getDIO(m_handle); + } + /** * @return The GPIO channel number that this object represents. */ diff --git a/wpilibjIntegrationTests/src/main/java/edu/wpi/first/wpilibj/fixtures/CANMotorEncoderFixture.java b/wpilibjIntegrationTests/src/main/java/edu/wpi/first/wpilibj/fixtures/CANMotorEncoderFixture.java index 878c91fefc..2257e50fb1 100644 --- a/wpilibjIntegrationTests/src/main/java/edu/wpi/first/wpilibj/fixtures/CANMotorEncoderFixture.java +++ b/wpilibjIntegrationTests/src/main/java/edu/wpi/first/wpilibj/fixtures/CANMotorEncoderFixture.java @@ -161,12 +161,12 @@ public abstract class CANMotorEncoderFixture extends MotorEncoderFixture