Skip to content

Commit

Permalink
[wpilib] Throw on nonexistent SimDevice name in SimDeviceSim construc…
Browse files Browse the repository at this point in the history
…tor (wpilibsuite#5041)

Previously this would just create a object that was otherwise non-functional.
  • Loading branch information
rzblue authored and Starlight220 committed Mar 2, 2023
1 parent 8065914 commit 4777489
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 1 deletion.
19 changes: 18 additions & 1 deletion wpilibc/src/main/native/cpp/simulation/SimDeviceSim.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -11,20 +11,37 @@
#include <hal/SimDevice.h>
#include <hal/simulation/SimDeviceData.h>

#include "frc/Errors.h"

using namespace frc;
using namespace frc::sim;

SimDeviceSim::SimDeviceSim(const char* name)
: m_handle{HALSIM_GetSimDeviceHandle(name)} {}
: m_handle{HALSIM_GetSimDeviceHandle(name)} {
if (m_handle == 0) {
throw FRC_MakeError(err::InvalidParameter,
"No sim device exists with name '{}'.", name);
}
}

SimDeviceSim::SimDeviceSim(const char* name, int index) {
m_handle =
HALSIM_GetSimDeviceHandle(fmt::format("{}[{}]", name, index).c_str());
if (m_handle == 0) {
throw FRC_MakeError(err::InvalidParameter,
"No sim device exists with name '{}[{}]'.", name,
index);
}
}

SimDeviceSim::SimDeviceSim(const char* name, int index, int channel) {
m_handle = HALSIM_GetSimDeviceHandle(
fmt::format("{}[{},{}]", name, index, channel).c_str());
if (m_handle == 0) {
throw FRC_MakeError(err::InvalidParameter,
"No sim device exists with name '{}[{},{}]'.", name,
index, channel);
}
}

SimDeviceSim::SimDeviceSim(HAL_SimDeviceHandle handle) : m_handle(handle) {}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,9 @@ public class SimDeviceSim {
*/
public SimDeviceSim(String name) {
this(SimDeviceDataJNI.getSimDeviceHandle(name));
if (m_handle == 0) {
throw new IllegalArgumentException("No sim device exists with name '" + name + "'.");
}
}

/**
Expand Down

0 comments on commit 4777489

Please sign in to comment.