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); 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()