Fix bug with opening/closing duration calibration (#194)

Co-authored-by: J. Nick Koston <nick@koston.org>
This commit is contained in:
Marius Muja 2024-01-23 14:05:04 -08:00 committed by GitHub
parent c869aad0ff
commit 4b57303c1f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 18 additions and 14 deletions

View File

@ -428,13 +428,15 @@ namespace ratgdo {
this->door_action(DoorAction::OPEN);
// query state in case we don't get a status message
set_timeout("door_query_state", (*this->opening_duration + 1) * 1000, [=]() {
if (*this->door_state != DoorState::OPEN && *this->door_state != DoorState::STOPPED) {
this->door_state = DoorState::OPEN; // probably missed a status mesage, assume it's open
this->query_status(); // query in case we're wrong and it's stopped
}
});
if (*this->opening_duration > 0) {
// query state in case we don't get a status message
set_timeout("door_query_state", (*this->opening_duration + 2) * 1000, [=]() {
if (*this->door_state != DoorState::OPEN && *this->door_state != DoorState::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()
@ -458,13 +460,15 @@ namespace ratgdo {
this->door_action(DoorAction::CLOSE);
// query state in case we don't get a status message
set_timeout("door_query_state", (*this->closing_duration + 1) * 1000, [=]() {
if (*this->door_state != DoorState::CLOSED && *this->door_state != DoorState::STOPPED) {
this->door_state = DoorState::CLOSED; // probably missed a status mesage, assume it's closed
this->query_status(); // query in case we're wrong and it's stopped
}
});
if (*this->closing_duration > 0) {
// query state in case we don't get a status message
set_timeout("door_query_state", (*this->closing_duration + 2) * 1000, [=]() {
if (*this->door_state != DoorState::CLOSED && *this->door_state != DoorState::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()