diff --git a/wpilibc/src/main/native/cpp/Compressor.cpp b/wpilibc/src/main/native/cpp/Compressor.cpp index 1f6c906820..1306561fcb 100644 --- a/wpilibc/src/main/native/cpp/Compressor.cpp +++ b/wpilibc/src/main/native/cpp/Compressor.cpp @@ -4,6 +4,8 @@ #include "frc/Compressor.h" +#include + #include #include #include @@ -14,7 +16,8 @@ using namespace frc; Compressor::Compressor(int module, PneumaticsModuleType moduleType) - : m_module{PneumaticsBase::GetForType(module, moduleType)} { + : m_module{PneumaticsBase::GetForType(module, moduleType)}, + m_moduleType{moduleType} { if (!m_module->ReserveCompressor()) { throw FRC_MakeError(err::ResourceAlreadyAllocated, "{}", module); } @@ -82,4 +85,14 @@ void Compressor::InitSendable(wpi::SendableBuilder& builder) { "Enabled", [this] { return IsEnabled(); }, nullptr); builder.AddBooleanProperty( "Pressure switch", [this] { return GetPressureSwitchValue(); }, nullptr); + builder.AddDoubleProperty( + "Current (A)", [this] { return GetCurrent().value(); }, nullptr); + // These are not supported by the CTRE PCM + if (m_moduleType == PneumaticsModuleType::REVPH) { + builder.AddDoubleProperty( + "Analog Voltage", [this] { return GetAnalogVoltage().value(); }, + nullptr); + builder.AddDoubleProperty( + "Pressure (PSI)", [this] { return GetPressure().value(); }, nullptr); + } } diff --git a/wpilibc/src/main/native/include/frc/Compressor.h b/wpilibc/src/main/native/include/frc/Compressor.h index ed1b3b986c..d9bff84100 100644 --- a/wpilibc/src/main/native/include/frc/Compressor.h +++ b/wpilibc/src/main/native/include/frc/Compressor.h @@ -175,6 +175,7 @@ class Compressor : public wpi::Sendable, private: std::shared_ptr m_module; + PneumaticsModuleType m_moduleType; }; } // namespace frc diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/Compressor.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/Compressor.java index e7a14bd659..38dee09128 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/Compressor.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/Compressor.java @@ -24,6 +24,7 @@ import edu.wpi.first.util.sendable.SendableRegistry; */ public class Compressor implements Sendable, AutoCloseable { private PneumaticsBase m_module; + private PneumaticsModuleType m_moduleType; /** * Constructs a compressor for a specified module and type. @@ -34,6 +35,7 @@ public class Compressor implements Sendable, AutoCloseable { @SuppressWarnings("this-escape") public Compressor(int module, PneumaticsModuleType moduleType) { m_module = PneumaticsBase.getForType(module, moduleType); + m_moduleType = moduleType; if (!m_module.reserveCompressor()) { m_module.close(); @@ -194,5 +196,10 @@ public class Compressor implements Sendable, AutoCloseable { builder.setSmartDashboardType("Compressor"); builder.addBooleanProperty("Enabled", this::isEnabled, null); builder.addBooleanProperty("Pressure switch", this::getPressureSwitchValue, null); + builder.addDoubleProperty("Current (A)", this::getCurrent, null); + if (m_moduleType == PneumaticsModuleType.REVPH) { // These are not supported by the CTRE PCM + builder.addDoubleProperty("Analog Voltage", this::getAnalogVoltage, null); + builder.addDoubleProperty("Pressure (PSI)", this::getPressure, null); + } } }