157d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu/*
257d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu * Copyright (C) 2017 The Android Open Source Project
357d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu *
457d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu * Licensed under the Apache License, Version 2.0 (the "License");
557d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu * you may not use this file except in compliance with the License.
657d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu * You may obtain a copy of the License at
757d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu *
857d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu *      http://www.apache.org/licenses/LICENSE-2.0
957d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu *
1057d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu * Unless required by applicable law or agreed to in writing, software
1157d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu * distributed under the License is distributed on an "AS IS" BASIS,
1257d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1357d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu * See the License for the specific language governing permissions and
1457d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu * limitations under the License.
1557d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu */
1657d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu
1757d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu#ifndef ANDROID_SENSORHAL_EXT_BASE_DYNAMIC_SENSOR_DAEMON_H
1857d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu#define ANDROID_SENSORHAL_EXT_BASE_DYNAMIC_SENSOR_DAEMON_H
1957d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu
2018082bd61fffd120100ea93fd94538492b39d7bdPeng Xu#include "BaseSensorObject.h"
2118082bd61fffd120100ea93fd94538492b39d7bdPeng Xu
2257d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu#include <utils/RefBase.h>
2318082bd61fffd120100ea93fd94538492b39d7bdPeng Xu#include <string>
2418082bd61fffd120100ea93fd94538492b39d7bdPeng Xu#include <unordered_map>
2557d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu
2657d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xunamespace android {
2757d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xunamespace SensorHalExt {
2857d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu
2957d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xuclass DynamicSensorManager;
3057d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu
314715d1734d2c60cc91ef70d409678d8eda382fdePeng Xutypedef std::vector<sp<BaseSensorObject>> BaseSensorVector;
324715d1734d2c60cc91ef70d409678d8eda382fdePeng Xu
3357d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xuclass BaseDynamicSensorDaemon : public RefBase {
3457d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xupublic:
3557d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu    BaseDynamicSensorDaemon(DynamicSensorManager& manager) : mManager(manager) {}
3657d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu    virtual ~BaseDynamicSensorDaemon() = default;
3718082bd61fffd120100ea93fd94538492b39d7bdPeng Xu
3818082bd61fffd120100ea93fd94538492b39d7bdPeng Xu    virtual bool onConnectionChange(const std::string &deviceKey, bool connected);
3957d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xuprotected:
404715d1734d2c60cc91ef70d409678d8eda382fdePeng Xu    virtual BaseSensorVector createSensor(const std::string &deviceKey) = 0;
414715d1734d2c60cc91ef70d409678d8eda382fdePeng Xu    virtual void removeSensor(const std::string &/*deviceKey*/) {};
4218082bd61fffd120100ea93fd94538492b39d7bdPeng Xu
4318082bd61fffd120100ea93fd94538492b39d7bdPeng Xu    DynamicSensorManager &mManager;
444715d1734d2c60cc91ef70d409678d8eda382fdePeng Xu    std::unordered_map<std::string, BaseSensorVector> mDeviceKeySensorMap;
4557d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu};
4657d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu
4757d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu} // namespace SensorHalExt
4857d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu} // namespace android
4957d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu
5057d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu#endif // ANDROID_SENSORHAL_EXT_BASE_DYNAMIC_SENSOR_DAEMON_H
5157d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu
52