aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJahdiel Alvarez <jahdiel@google.com>2022-03-15 17:20:07 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2022-03-15 17:20:07 +0000
commita30e7191d8c60c0c8513d03a06dbbdf74667b299 (patch)
treec221b62ee098db764ab8774b328b501e4f7a3441
parentaabfb31feadcbca369886155ae19d92f16f4afca (diff)
parent20f3ed4a39423cf0eeb4504b6c197dfcfd67e5d7 (diff)
downloadCar-a30e7191d8c60c0c8513d03a06dbbdf74667b299.tar.gz
Merge "Reset VHAL health checking on power cycle resume" into tm-dev
-rw-r--r--cpp/watchdog/server/src/WatchdogProcessService.cpp25
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;