From a8bb2ef1c3585572d8b255622927ee4e5bafb170 Mon Sep 17 00:00:00 2001 From: Peter Johnson Date: Thu, 24 Dec 2020 12:23:38 -0800 Subject: [PATCH] [sim] Fix ADXRS450_GyroSim and DutyCycleEncoderSim (#2963) These were broken by #2952. Also fix Java ADXRS450_Gyro angle/rate SimValue names. --- wpilibc/src/main/native/cpp/DutyCycleEncoder.cpp | 3 +++ .../src/main/native/cpp/simulation/ADXRS450_GyroSim.cpp | 6 +++--- .../src/main/native/cpp/simulation/DutyCycleEncoderSim.cpp | 7 ++++--- wpilibc/src/main/native/include/frc/DutyCycleEncoder.h | 1 + .../src/main/java/edu/wpi/first/wpilibj/ADXRS450_Gyro.java | 4 ++-- .../main/java/edu/wpi/first/wpilibj/DutyCycleEncoder.java | 3 +++ .../edu/wpi/first/wpilibj/simulation/ADXRS450_GyroSim.java | 6 +++--- .../wpi/first/wpilibj/simulation/DutyCycleEncoderSim.java | 7 ++++--- 8 files changed, 23 insertions(+), 14 deletions(-) diff --git a/wpilibc/src/main/native/cpp/DutyCycleEncoder.cpp b/wpilibc/src/main/native/cpp/DutyCycleEncoder.cpp index 1845673456..dd4fb50f08 100644 --- a/wpilibc/src/main/native/cpp/DutyCycleEncoder.cpp +++ b/wpilibc/src/main/native/cpp/DutyCycleEncoder.cpp @@ -60,6 +60,8 @@ void DutyCycleEncoder::Init() { if (m_simDevice) { m_simPosition = m_simDevice.CreateDouble("position", hal::SimDevice::kInput, 0.0); + m_simDistancePerRotation = m_simDevice.CreateDouble( + "distance_per_rot", hal::SimDevice::kOutput, 1.0); m_simIsConnected = m_simDevice.CreateBoolean("connected", hal::SimDevice::kInput, true); } else { @@ -101,6 +103,7 @@ units::turn_t DutyCycleEncoder::Get() const { void DutyCycleEncoder::SetDistancePerRotation(double distancePerRotation) { m_distancePerRotation = distancePerRotation; + m_simDistancePerRotation.Set(distancePerRotation); } double DutyCycleEncoder::GetDistancePerRotation() const { diff --git a/wpilibc/src/main/native/cpp/simulation/ADXRS450_GyroSim.cpp b/wpilibc/src/main/native/cpp/simulation/ADXRS450_GyroSim.cpp index 74a5180bc1..8fe5da0242 100644 --- a/wpilibc/src/main/native/cpp/simulation/ADXRS450_GyroSim.cpp +++ b/wpilibc/src/main/native/cpp/simulation/ADXRS450_GyroSim.cpp @@ -18,10 +18,10 @@ using namespace frc::sim; ADXRS450_GyroSim::ADXRS450_GyroSim(const frc::ADXRS450_Gyro& gyro) { wpi::SmallString<128> fullname; wpi::raw_svector_ostream os(fullname); - os << "ADXRS450_Gyro" << '[' << gyro.GetPort() << ']'; + os << "Gyro:ADXRS450" << '[' << gyro.GetPort() << ']'; frc::sim::SimDeviceSim deviceSim{fullname.c_str()}; - m_simAngle = deviceSim.GetDouble("Angle"); - m_simRate = deviceSim.GetDouble("Rate"); + m_simAngle = deviceSim.GetDouble("angle_x"); + m_simRate = deviceSim.GetDouble("rate_x"); } void ADXRS450_GyroSim::SetAngle(units::degree_t angle) { diff --git a/wpilibc/src/main/native/cpp/simulation/DutyCycleEncoderSim.cpp b/wpilibc/src/main/native/cpp/simulation/DutyCycleEncoderSim.cpp index b12f00a59c..1025a29720 100644 --- a/wpilibc/src/main/native/cpp/simulation/DutyCycleEncoderSim.cpp +++ b/wpilibc/src/main/native/cpp/simulation/DutyCycleEncoderSim.cpp @@ -18,10 +18,11 @@ using namespace frc::sim; DutyCycleEncoderSim::DutyCycleEncoderSim(const frc::DutyCycleEncoder& encoder) { wpi::SmallString<128> fullname; wpi::raw_svector_ostream os(fullname); - os << "DutyCycleEncoder" << '[' << encoder.GetFPGAIndex() << ']'; + os << "DutyCycle:DutyCycleEncoder" << '[' << encoder.GetSourceChannel() + << ']'; frc::sim::SimDeviceSim deviceSim{fullname.c_str()}; - m_simPosition = deviceSim.GetDouble("Position"); - m_simDistancePerRotation = deviceSim.GetDouble("DistancePerRotation"); + m_simPosition = deviceSim.GetDouble("position"); + m_simDistancePerRotation = deviceSim.GetDouble("distance_per_rot"); } void DutyCycleEncoderSim::Set(units::turn_t turns) { diff --git a/wpilibc/src/main/native/include/frc/DutyCycleEncoder.h b/wpilibc/src/main/native/include/frc/DutyCycleEncoder.h index 23e3736a7b..17b038fe17 100644 --- a/wpilibc/src/main/native/include/frc/DutyCycleEncoder.h +++ b/wpilibc/src/main/native/include/frc/DutyCycleEncoder.h @@ -183,6 +183,7 @@ class DutyCycleEncoder : public ErrorBase, hal::SimDevice m_simDevice; hal::SimDouble m_simPosition; + hal::SimDouble m_simDistancePerRotation; hal::SimBoolean m_simIsConnected; }; } // namespace frc diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/ADXRS450_Gyro.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/ADXRS450_Gyro.java index 6c917e99ac..bc8e2c69dd 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/ADXRS450_Gyro.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/ADXRS450_Gyro.java @@ -72,8 +72,8 @@ public class ADXRS450_Gyro extends GyroBase implements Gyro, PIDSource, Sendable m_simDevice = SimDevice.create("Gyro:ADXRS450", port.value); if (m_simDevice != null) { m_simConnected = m_simDevice.createBoolean("connected", SimDevice.Direction.kInput, true); - m_simAngle = m_simDevice.createDouble("angle", SimDevice.Direction.kInput, 0.0); - m_simRate = m_simDevice.createDouble("rate", SimDevice.Direction.kInput, 0.0); + m_simAngle = m_simDevice.createDouble("angle_x", SimDevice.Direction.kInput, 0.0); + m_simRate = m_simDevice.createDouble("rate_x", SimDevice.Direction.kInput, 0.0); } m_spi.setClockRate(3000000); 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 db7d125f22..9486881ef8 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/DutyCycleEncoder.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/DutyCycleEncoder.java @@ -32,6 +32,7 @@ public class DutyCycleEncoder implements Sendable, AutoCloseable { protected SimDevice m_simDevice; protected SimDouble m_simPosition; + protected SimDouble m_simDistancePerRotation; protected SimBoolean m_simIsConnected; /** @@ -72,6 +73,8 @@ public class DutyCycleEncoder implements Sendable, AutoCloseable { if (m_simDevice != null) { m_simPosition = m_simDevice.createDouble("position", SimDevice.Direction.kInput, 0.0); + m_simDistancePerRotation = m_simDevice.createDouble("distance_per_rot", + SimDevice.Direction.kOutput, 1.0); m_simIsConnected = m_simDevice.createBoolean("connected", SimDevice.Direction.kInput, true); } else { m_counter = new Counter(); diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/simulation/ADXRS450_GyroSim.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/simulation/ADXRS450_GyroSim.java index 950efeff64..1186773004 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/simulation/ADXRS450_GyroSim.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/simulation/ADXRS450_GyroSim.java @@ -24,9 +24,9 @@ public class ADXRS450_GyroSim { * @param gyro ADXRS450_Gyro to simulate */ public ADXRS450_GyroSim(ADXRS450_Gyro gyro) { - SimDeviceSim wrappedSimDevice = new SimDeviceSim("ADXRS450_Gyro" + "[" + gyro.getPort() + "]"); - m_simAngle = wrappedSimDevice.getDouble("Angle"); - m_simRate = wrappedSimDevice.getDouble("Rate"); + SimDeviceSim wrappedSimDevice = new SimDeviceSim("Gyro:ADXRS450" + "[" + gyro.getPort() + "]"); + m_simAngle = wrappedSimDevice.getDouble("angle_x"); + m_simRate = wrappedSimDevice.getDouble("rate_x"); } /** diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/simulation/DutyCycleEncoderSim.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/simulation/DutyCycleEncoderSim.java index 92b08830ef..87c5757d9c 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/simulation/DutyCycleEncoderSim.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/simulation/DutyCycleEncoderSim.java @@ -23,9 +23,10 @@ public class DutyCycleEncoderSim { * @param encoder DutyCycleEncoder to simulate */ public DutyCycleEncoderSim(DutyCycleEncoder encoder) { - SimDeviceSim wrappedSimDevice = new SimDeviceSim("DutyCycleEncoder" + "[" + encoder.getFPGAIndex() + "]"); - m_simPosition = wrappedSimDevice.getDouble("Position"); - m_simDistancePerRotation = wrappedSimDevice.getDouble("DistancePerRotation"); + SimDeviceSim wrappedSimDevice = new SimDeviceSim("DutyCycle:DutyCycleEncoder" + "[" + + encoder.getSourceChannel() + "]"); + m_simPosition = wrappedSimDevice.getDouble("position"); + m_simDistancePerRotation = wrappedSimDevice.getDouble("distance_per_rot"); } /**