Fixed wait check in device online/offline

This commit is contained in:
EricLiu2000
2019-08-07 10:06:33 -04:00
parent 5112e1d2f9
commit 9629864f1b
6 changed files with 46 additions and 30 deletions
+23 -5
View File
@@ -222,15 +222,24 @@ bool Device::goOnline() {
ledState = LEDState::Online;
online = true;
updateLEDState();
MessageFilter filter(Network::NetID::Reset_Status);
filter.includeInternalInAny = true;
// wait until communication is enabled or 10 seconds, whichever comes first
while((std::chrono::system_clock::now() - startTime) < std::chrono::seconds::duration(10)) {
while((std::chrono::system_clock::now() - startTime) < std::chrono::seconds::duration(5)) {
if(latestResetStatus && latestResetStatus->comEnabled)
break;
}
if(!com->sendCommand(Command::RequestStatusUpdate))
return false;
com->waitForMessageSync(filter, std::chrono::milliseconds(100));
}
online = true;
return true;
}
@@ -243,13 +252,22 @@ bool Device::goOffline() {
ledState = (latestResetStatus && latestResetStatus->cmRunning) ? LEDState::CoreMiniRunning : LEDState::Offline;
updateLEDState();
online = false;
MessageFilter filter(Network::NetID::Reset_Status);
filter.includeInternalInAny = true;
// wait until communication is disabled or 10 seconds, whichever comes first
while((std::chrono::system_clock::now() - startTime) < std::chrono::seconds::duration(10)) {
while((std::chrono::system_clock::now() - startTime) < std::chrono::seconds::duration(5)) {
if(latestResetStatus && !latestResetStatus->comEnabled)
break;
if(!com->sendCommand(Command::RequestStatusUpdate))
return false;
com->waitForMessageSync(filter, std::chrono::milliseconds(100));
}
online = false;
return true;
}