128dd47033198a502b18b0363b98ad030ea1789ccKeun-young Park/*
228dd47033198a502b18b0363b98ad030ea1789ccKeun-young Park * Copyright (C) 2015 The Android Open Source Project
328dd47033198a502b18b0363b98ad030ea1789ccKeun-young Park *
428dd47033198a502b18b0363b98ad030ea1789ccKeun-young Park * Licensed under the Apache License, Version 2.0 (the "License");
528dd47033198a502b18b0363b98ad030ea1789ccKeun-young Park * you may not use this file except in compliance with the License.
628dd47033198a502b18b0363b98ad030ea1789ccKeun-young Park * You may obtain a copy of the License at
728dd47033198a502b18b0363b98ad030ea1789ccKeun-young Park *
828dd47033198a502b18b0363b98ad030ea1789ccKeun-young Park *      http://www.apache.org/licenses/LICENSE-2.0
928dd47033198a502b18b0363b98ad030ea1789ccKeun-young Park *
1028dd47033198a502b18b0363b98ad030ea1789ccKeun-young Park * Unless required by applicable law or agreed to in writing, software
1128dd47033198a502b18b0363b98ad030ea1789ccKeun-young Park * distributed under the License is distributed on an "AS IS" BASIS,
1228dd47033198a502b18b0363b98ad030ea1789ccKeun-young Park * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1328dd47033198a502b18b0363b98ad030ea1789ccKeun-young Park * See the License for the specific language governing permissions and
1428dd47033198a502b18b0363b98ad030ea1789ccKeun-young Park * limitations under the License.
1528dd47033198a502b18b0363b98ad030ea1789ccKeun-young Park */
1628dd47033198a502b18b0363b98ad030ea1789ccKeun-young Park
1728dd47033198a502b18b0363b98ad030ea1789ccKeun-young Park#ifndef ANDROID_VEHICLE_HAL_MOCK_H
1828dd47033198a502b18b0363b98ad030ea1789ccKeun-young Park#define ANDROID_VEHICLE_HAL_MOCK_H
1928dd47033198a502b18b0363b98ad030ea1789ccKeun-young Park
2028dd47033198a502b18b0363b98ad030ea1789ccKeun-young Park#include <IVehicleNetworkHalMock.h>
2128dd47033198a502b18b0363b98ad030ea1789ccKeun-young Park
2228dd47033198a502b18b0363b98ad030ea1789ccKeun-young Parkextern "C" {
2328dd47033198a502b18b0363b98ad030ea1789ccKeun-young Parkvehicle_prop_config_t const * getTestProperties();
2428dd47033198a502b18b0363b98ad030ea1789ccKeun-young Parkint getNumTestProperties();
2528dd47033198a502b18b0363b98ad030ea1789ccKeun-young Park};
2628dd47033198a502b18b0363b98ad030ea1789ccKeun-young Park
2728dd47033198a502b18b0363b98ad030ea1789ccKeun-young Parknamespace android {
2828dd47033198a502b18b0363b98ad030ea1789ccKeun-young Park
2928dd47033198a502b18b0363b98ad030ea1789ccKeun-young Parkclass VehicleHalMock : public BnVehicleNetworkHalMock {
3028dd47033198a502b18b0363b98ad030ea1789ccKeun-young Parkpublic:
3128dd47033198a502b18b0363b98ad030ea1789ccKeun-young Park    VehicleHalMock() {
3228dd47033198a502b18b0363b98ad030ea1789ccKeun-young Park        mProperties = new VehiclePropertiesHolder(false /* deleteConfigsInDestructor */);
3328dd47033198a502b18b0363b98ad030ea1789ccKeun-young Park        vehicle_prop_config_t const * properties = getTestProperties();
3428dd47033198a502b18b0363b98ad030ea1789ccKeun-young Park        for (int i = 0; i < getNumTestProperties(); i++) {
3528dd47033198a502b18b0363b98ad030ea1789ccKeun-young Park            mProperties->getList().push_back(properties + i);
3628dd47033198a502b18b0363b98ad030ea1789ccKeun-young Park        }
3728dd47033198a502b18b0363b98ad030ea1789ccKeun-young Park    };
3828dd47033198a502b18b0363b98ad030ea1789ccKeun-young Park
39aaeffaff85979583b1826db759b5cdb6184559d5Keun-young Park    virtual ~VehicleHalMock() {};
40aaeffaff85979583b1826db759b5cdb6184559d5Keun-young Park
4128dd47033198a502b18b0363b98ad030ea1789ccKeun-young Park    virtual sp<VehiclePropertiesHolder> onListProperties() {
4228dd47033198a502b18b0363b98ad030ea1789ccKeun-young Park        return mProperties;
4328dd47033198a502b18b0363b98ad030ea1789ccKeun-young Park    };
4428dd47033198a502b18b0363b98ad030ea1789ccKeun-young Park
45558e9b1c1ed5a21445b4a937f67843e2bf89f0a5Keun-young Park    virtual status_t onPropertySet(const vehicle_prop_value_t& /*value*/) {
4628dd47033198a502b18b0363b98ad030ea1789ccKeun-young Park        return NO_ERROR;
4728dd47033198a502b18b0363b98ad030ea1789ccKeun-young Park    };
4828dd47033198a502b18b0363b98ad030ea1789ccKeun-young Park
49558e9b1c1ed5a21445b4a937f67843e2bf89f0a5Keun-young Park    virtual status_t onPropertyGet(vehicle_prop_value_t* /*value*/) {
5028dd47033198a502b18b0363b98ad030ea1789ccKeun-young Park        return NO_ERROR;
5128dd47033198a502b18b0363b98ad030ea1789ccKeun-young Park    };
5228dd47033198a502b18b0363b98ad030ea1789ccKeun-young Park
53558e9b1c1ed5a21445b4a937f67843e2bf89f0a5Keun-young Park    virtual status_t onPropertySubscribe(int32_t /*property*/, float /*sampleRate*/,
54558e9b1c1ed5a21445b4a937f67843e2bf89f0a5Keun-young Park            int32_t /*zones*/) {
5528dd47033198a502b18b0363b98ad030ea1789ccKeun-young Park        return NO_ERROR;
5628dd47033198a502b18b0363b98ad030ea1789ccKeun-young Park    };
5728dd47033198a502b18b0363b98ad030ea1789ccKeun-young Park
58558e9b1c1ed5a21445b4a937f67843e2bf89f0a5Keun-young Park    virtual void onPropertyUnsubscribe(int32_t /*property*/) {
5928dd47033198a502b18b0363b98ad030ea1789ccKeun-young Park    };
6028dd47033198a502b18b0363b98ad030ea1789ccKeun-young Park
6128dd47033198a502b18b0363b98ad030ea1789ccKeun-young Park    bool isTheSameProperties(sp<VehiclePropertiesHolder>& list) {
6228dd47033198a502b18b0363b98ad030ea1789ccKeun-young Park        if (mProperties->getList().size() != list->getList().size()) {
6328dd47033198a502b18b0363b98ad030ea1789ccKeun-young Park            return false;
6428dd47033198a502b18b0363b98ad030ea1789ccKeun-young Park        }
6528dd47033198a502b18b0363b98ad030ea1789ccKeun-young Park        auto l = mProperties->getList().begin();
6628dd47033198a502b18b0363b98ad030ea1789ccKeun-young Park        auto r = list->getList().begin();
6728dd47033198a502b18b0363b98ad030ea1789ccKeun-young Park        while (l != mProperties->getList().end() && r != list->getList().end()) {
6828dd47033198a502b18b0363b98ad030ea1789ccKeun-young Park            if (!VehiclePropertiesUtil::isTheSame(**l, **r)) {
6928dd47033198a502b18b0363b98ad030ea1789ccKeun-young Park                return false;
7028dd47033198a502b18b0363b98ad030ea1789ccKeun-young Park            }
7128dd47033198a502b18b0363b98ad030ea1789ccKeun-young Park            l++;
7228dd47033198a502b18b0363b98ad030ea1789ccKeun-young Park            r++;
7328dd47033198a502b18b0363b98ad030ea1789ccKeun-young Park        }
7428dd47033198a502b18b0363b98ad030ea1789ccKeun-young Park        return true;
7528dd47033198a502b18b0363b98ad030ea1789ccKeun-young Park    }
7628dd47033198a502b18b0363b98ad030ea1789ccKeun-young Park
7728dd47033198a502b18b0363b98ad030ea1789ccKeun-young Parkprivate:
7828dd47033198a502b18b0363b98ad030ea1789ccKeun-young Park    sp<VehiclePropertiesHolder> mProperties;
7928dd47033198a502b18b0363b98ad030ea1789ccKeun-young Park
8028dd47033198a502b18b0363b98ad030ea1789ccKeun-young Park};
8128dd47033198a502b18b0363b98ad030ea1789ccKeun-young Park
8228dd47033198a502b18b0363b98ad030ea1789ccKeun-young Park}; // namespace android
8328dd47033198a502b18b0363b98ad030ea1789ccKeun-young Park#endif /* ANDROID_VEHICLE_HAL_MOCK_H */
84