1 /*
2  * Copyright (C) 2020 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #define LOG_TAG "[email protected]"
18 
19 #include "WatchdogClient.h"
20 
21 #include <android/binder_manager.h>
22 
23 using aidl::android::automotive::watchdog::ICarWatchdog;
24 using aidl::android::automotive::watchdog::TimeoutLength;
25 
26 namespace {
27 
28 enum { WHAT_CHECK_ALIVE = 1 };
29 
30 }  // namespace
31 
32 namespace android::hardware::automotive::vehicle::V2_0::impl {
33 
WatchdogClient(const sp<Looper> & handlerLooper,VehicleHalManager * vhal)34 WatchdogClient::WatchdogClient(const sp<Looper>& handlerLooper, VehicleHalManager* vhal)
35     : BaseWatchdogClient(handlerLooper), mHal(vhal) {}
36 
isClientHealthy() const37 bool WatchdogClient::isClientHealthy() const {
38     // This implementation is the same as the one for the default VHAL
39     StatusCode status = StatusCode::TRY_AGAIN;
40     VehiclePropValue propValue = {.prop = (int32_t)VehicleProperty::PERF_VEHICLE_SPEED};
41     while (status == StatusCode::TRY_AGAIN) {
42         mHal->get(propValue, [&propValue, &status](StatusCode s, const VehiclePropValue& v) {
43             status = s;
44             if (s == StatusCode::OK) {
45                 propValue = v;
46             }
47         });
48     }
49     return status == StatusCode::OK;
50 }
51 
52 }  // namespace android::hardware::automotive::vehicle::V2_0::impl
53