Add ability to associate other devices with a SimDevice

Implemented only for AnalogInput, DIO, and Encoder.
This commit is contained in:
Peter Johnson
2019-10-04 22:56:24 -07:00
parent 81c2c8a7de
commit aa90645865
36 changed files with 222 additions and 13 deletions

View File

@@ -224,6 +224,10 @@ double AnalogInput::PIDGet() {
return GetAverageVoltage();
}
void AnalogInput::SetSimDevice(HAL_SimDeviceHandle device) {
HAL_SetAnalogInputSimDevice(m_port, device);
}
void AnalogInput::InitSendable(SendableBuilder& builder) {
builder.SetSmartDashboardType("Analog Input");
builder.AddDoubleProperty("Value", [=]() { return GetAverageVoltage(); },

View File

@@ -65,6 +65,10 @@ AnalogTriggerType DigitalInput::GetAnalogTriggerTypeForRouting() const {
bool DigitalInput::IsAnalogTrigger() const { return false; }
void DigitalInput::SetSimDevice(HAL_SimDeviceHandle device) {
HAL_SetDIOSimDevice(m_handle, device);
}
int DigitalInput::GetChannel() const { return m_channel; }
void DigitalInput::InitSendable(SendableBuilder& builder) {

View File

@@ -140,6 +140,10 @@ void DigitalOutput::UpdateDutyCycle(double dutyCycle) {
wpi_setErrorWithContext(status, HAL_GetErrorMessage(status));
}
void DigitalOutput::SetSimDevice(HAL_SimDeviceHandle device) {
HAL_SetDIOSimDevice(m_handle, device);
}
void DigitalOutput::InitSendable(SendableBuilder& builder) {
builder.SetSmartDashboardType("Digital Output");
builder.AddBooleanProperty("Value", [=]() { return Get(); },

View File

@@ -217,6 +217,10 @@ void Encoder::SetIndexSource(const DigitalSource& source,
wpi_setErrorWithContext(status, HAL_GetErrorMessage(status));
}
void Encoder::SetSimDevice(HAL_SimDeviceHandle device) {
HAL_SetEncoderSimDevice(m_encoder, device);
}
int Encoder::GetFPGAIndex() const {
int32_t status = 0;
int val = HAL_GetEncoderFPGAIndex(m_encoder, &status);

View File

@@ -286,6 +286,13 @@ class AnalogInput : public ErrorBase,
*/
double PIDGet() override;
/**
* Indicates this input is used by a simulated device.
*
* @param device simulated device handle
*/
void SetSimDevice(HAL_SimDeviceHandle device);
void InitSendable(SendableBuilder& builder) override;
private:

View File

@@ -71,6 +71,13 @@ class DigitalInput : public DigitalSource,
*/
int GetChannel() const override;
/**
* Indicates this input is used by a simulated device.
*
* @param device simulated device handle
*/
void SetSimDevice(HAL_SimDeviceHandle device);
void InitSendable(SendableBuilder& builder) override;
private:

View File

@@ -125,6 +125,13 @@ class DigitalOutput : public ErrorBase,
*/
void UpdateDutyCycle(double dutyCycle);
/**
* Indicates this output is used by a simulated device.
*
* @param device simulated device handle
*/
void SetSimDevice(HAL_SimDeviceHandle device);
void InitSendable(SendableBuilder& builder) override;
private:

View File

@@ -332,6 +332,13 @@ class Encoder : public ErrorBase,
void SetIndexSource(const DigitalSource& source,
IndexingType type = kResetOnRisingEdge);
/**
* Indicates this encoder is used by a simulated device.
*
* @param device simulated device handle
*/
void SetSimDevice(HAL_SimDeviceHandle device);
int GetFPGAIndex() const;
void InitSendable(SendableBuilder& builder) override;