Fix exception when getting a relay in kReverse Direction. Fixes #458 (#525)

Add additional tests that would have caught this previously.
This commit is contained in:
sciencewhiz
2017-05-08 21:54:03 -07:00
committed by Peter Johnson
parent fc81298fac
commit f32e696fef
4 changed files with 87 additions and 22 deletions

View File

@@ -185,25 +185,31 @@ void Relay::Set(Relay::Value value) {
Relay::Value Relay::Get() const {
int32_t status;
if (HAL_GetRelay(m_forwardHandle, &status)) {
if (m_direction == kForwardOnly) {
if (HAL_GetRelay(m_forwardHandle, &status)) {
return kOn;
} else {
return kOff;
}
} else if (m_direction == kReverseOnly) {
if (HAL_GetRelay(m_reverseHandle, &status)) {
return kOn;
} else {
if (m_direction == kForwardOnly) {
return kOff;
}
} else {
if (HAL_GetRelay(m_forwardHandle, &status)) {
if (HAL_GetRelay(m_reverseHandle, &status)) {
return kOn;
} else {
return kForward;
}
}
} else {
if (HAL_GetRelay(m_reverseHandle, &status)) {
if (m_direction == kReverseOnly) {
return kOn;
} else {
return kReverse;
}
} else {
return kOff;
if (HAL_GetRelay(m_reverseHandle, &status)) {
return kReverse;
} else {
return kOff;
}
}
}