1 /* 2 * Copyright (C) 2017 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 #ifndef ANDROID_SENSORHAL_BASE_SENSOR_OBJECT_H 18 #define ANDROID_SENSORHAL_BASE_SENSOR_OBJECT_H 19 20 #include "Utils.h" 21 #include <cstdint> 22 23 struct sensor_t; 24 struct sensors_event_t; 25 26 namespace android { 27 namespace SensorHalExt { 28 29 class SensorEventCallback; 30 REF_BASE(BaseSensorObject)31class BaseSensorObject : virtual public REF_BASE(BaseSensorObject) { 32 public: 33 BaseSensorObject(); 34 virtual ~BaseSensorObject() = default; 35 36 // always called by DynamicSensorManager, callback must point to 37 // valid object throughout life cycle of BaseSensorObject 38 bool setEventCallback(SensorEventCallback* callback); 39 40 // virtual functions to get sensor information and operate sensor 41 virtual const sensor_t* getSensor() const = 0; 42 43 // get uuid of sensor, default implementation set it to all zero, means does not have a uuid. 44 virtual void getUuid(uint8_t* uuid) const; 45 46 // enable sensor 47 virtual int enable(bool enable) = 0; 48 49 // set sample period and batching period of sensor. 50 // both sample period and batch period are in nano-seconds. 51 virtual int batch(int64_t samplePeriod, int64_t batchPeriod) = 0; 52 53 // flush sensor, default implementation will send a flush complete event back. 54 virtual int flush(); 55 56 protected: 57 // utility function for sub-class 58 void generateEvent(const sensors_event_t &e); 59 private: 60 SensorEventCallback* mCallback; 61 }; 62 63 } // namespace SensorHalExt 64 } // namespace android 65 66 #endif // ANDROID_SENSORHAL_BASE_SENSOR_OBJECT_H 67 68