diff options
author | Jahdiel Alvarez <jahdiel@google.com> | 2022-03-15 17:20:07 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2022-03-15 17:20:07 +0000 |
commit | a30e7191d8c60c0c8513d03a06dbbdf74667b299 (patch) | |
tree | c221b62ee098db764ab8774b328b501e4f7a3441 | |
parent | aabfb31feadcbca369886155ae19d92f16f4afca (diff) | |
parent | 20f3ed4a39423cf0eeb4504b6c197dfcfd67e5d7 (diff) | |
download | Car-a30e7191d8c60c0c8513d03a06dbbdf74667b299.tar.gz |
Merge "Reset VHAL health checking on power cycle resume" into tm-dev
-rw-r--r-- | cpp/watchdog/server/src/WatchdogProcessService.cpp | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/cpp/watchdog/server/src/WatchdogProcessService.cpp b/cpp/watchdog/server/src/WatchdogProcessService.cpp index 3455bb1a5f..8450242f1b 100644 --- a/cpp/watchdog/server/src/WatchdogProcessService.cpp +++ b/cpp/watchdog/server/src/WatchdogProcessService.cpp @@ -285,14 +285,22 @@ Status WatchdogProcessService::tellDumpFinished(const sp<aawi::ICarWatchdogMonit void WatchdogProcessService::setEnabled(bool isEnabled) { Mutex::Autolock lock(mMutex); - if (mIsEnabled != isEnabled) { - ALOGI("%s is %s", kServiceName, isEnabled ? "enabled" : "disabled"); + if (mIsEnabled == isEnabled) { + return; } + ALOGI("%s is %s", kServiceName, isEnabled ? "enabled" : "disabled"); mIsEnabled = isEnabled; - if (mIsEnabled) { - for (const auto& timeout : kTimeouts) { - startHealthCheckingLocked(timeout); - } + mHandlerLooper->removeMessages(mMessageHandler, MSG_VHAL_HEALTH_CHECK); + if (!mIsEnabled) { + return; + } + mVhalHeartBeat.eventTime = uptimeMillis(); + std::chrono::nanoseconds intervalNs = mVhalHealthCheckWindowMs + kHealthCheckDelayMs; + mHandlerLooper->sendMessageDelayed(intervalNs.count(), mMessageHandler, + Message(MSG_VHAL_HEALTH_CHECK)); + for (const auto& timeout : kTimeouts) { + mHandlerLooper->removeMessages(mMessageHandler, static_cast<int>(timeout)); + startHealthCheckingLocked(timeout); } } @@ -790,6 +798,9 @@ void WatchdogProcessService::updateVhalHeartBeat(int64_t value) { bool wrongHeartBeat; { Mutex::Autolock lock(mMutex); + if (!mIsEnabled) { + return; + } wrongHeartBeat = value <= mVhalHeartBeat.value; mVhalHeartBeat.eventTime = uptimeMillis(); mVhalHeartBeat.value = value; @@ -809,7 +820,7 @@ void WatchdogProcessService::checkVhalHealth() { int64_t currentUptime = uptimeMillis(); { Mutex::Autolock lock(mMutex); - if (mVhalService == nullptr) { + if (mVhalService == nullptr || !mIsEnabled) { return; } lastEventTime = mVhalHeartBeat.eventTime; |