Fix bug with opening/closing duration calibration (#194)
Co-authored-by: J. Nick Koston <nick@koston.org>
This commit is contained in:
parent
c869aad0ff
commit
4b57303c1f
|
@ -428,13 +428,15 @@ namespace ratgdo {
|
||||||
|
|
||||||
this->door_action(DoorAction::OPEN);
|
this->door_action(DoorAction::OPEN);
|
||||||
|
|
||||||
// query state in case we don't get a status message
|
if (*this->opening_duration > 0) {
|
||||||
set_timeout("door_query_state", (*this->opening_duration + 1) * 1000, [=]() {
|
// query state in case we don't get a status message
|
||||||
if (*this->door_state != DoorState::OPEN && *this->door_state != DoorState::STOPPED) {
|
set_timeout("door_query_state", (*this->opening_duration + 2) * 1000, [=]() {
|
||||||
this->door_state = DoorState::OPEN; // probably missed a status mesage, assume it's open
|
if (*this->door_state != DoorState::OPEN && *this->door_state != DoorState::STOPPED) {
|
||||||
this->query_status(); // query in case we're wrong and it's stopped
|
this->received(DoorState::OPEN); // probably missed a status mesage, assume it's open
|
||||||
}
|
this->query_status(); // query in case we're wrong and it's stopped
|
||||||
});
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void RATGDOComponent::door_close()
|
void RATGDOComponent::door_close()
|
||||||
|
@ -458,13 +460,15 @@ namespace ratgdo {
|
||||||
|
|
||||||
this->door_action(DoorAction::CLOSE);
|
this->door_action(DoorAction::CLOSE);
|
||||||
|
|
||||||
// query state in case we don't get a status message
|
if (*this->closing_duration > 0) {
|
||||||
set_timeout("door_query_state", (*this->closing_duration + 1) * 1000, [=]() {
|
// query state in case we don't get a status message
|
||||||
if (*this->door_state != DoorState::CLOSED && *this->door_state != DoorState::STOPPED) {
|
set_timeout("door_query_state", (*this->closing_duration + 2) * 1000, [=]() {
|
||||||
this->door_state = DoorState::CLOSED; // probably missed a status mesage, assume it's closed
|
if (*this->door_state != DoorState::CLOSED && *this->door_state != DoorState::STOPPED) {
|
||||||
this->query_status(); // query in case we're wrong and it's stopped
|
this->received(DoorState::CLOSED); // probably missed a status mesage, assume it's closed
|
||||||
}
|
this->query_status(); // query in case we're wrong and it's stopped
|
||||||
});
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void RATGDOComponent::door_stop()
|
void RATGDOComponent::door_stop()
|
||||||
|
|
Loading…
Reference in New Issue