1 /* 2 * Copyright (C) 2010 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 #include "SensorInterface.h" 18 #include "SensorDevice.h" 19 #include "SensorFusion.h" 20 21 #include <stdint.h> 22 #include <sys/types.h> 23 24 namespace android { 25 // --------------------------------------------------------------------------- 26 27 namespace { 28 const sensor_t DUMMY_SENSOR = { 29 .name = "", .vendor = "", .stringType = "", .requiredPermission = ""}; 30 } //unnamed namespace 31 32 BaseSensor::BaseSensor(const sensor_t& sensor) : 33 mSensorDevice(SensorDevice::getInstance()), 34 mSensor(&sensor, mSensorDevice.getHalDeviceVersion()) { 35 } 36 37 BaseSensor::BaseSensor(const sensor_t& sensor, const uint8_t (&uuid)[16]) : 38 mSensorDevice(SensorDevice::getInstance()), 39 mSensor(sensor, Sensor::uuid_t(uuid), mSensorDevice.getHalDeviceVersion()) { 40 } 41 42 // --------------------------------------------------------------------------- 43 44 HardwareSensor::HardwareSensor(const sensor_t& sensor): 45 BaseSensor(sensor) { 46 } 47 48 HardwareSensor::HardwareSensor(const sensor_t& sensor, const uint8_t (&uuid)[16]): 49 BaseSensor(sensor, uuid) { 50 } 51 52 HardwareSensor::~HardwareSensor() { 53 } 54 55 bool HardwareSensor::process(sensors_event_t* outEvent, 56 const sensors_event_t& event) { 57 *outEvent = event; 58 return true; 59 } 60 61 status_t HardwareSensor::activate(void* ident, bool enabled) { 62 return mSensorDevice.activate(ident, mSensor.getHandle(), enabled); 63 } 64 65 status_t HardwareSensor::batch(void* ident, int /*handle*/, int flags, 66 int64_t samplingPeriodNs, int64_t maxBatchReportLatencyNs) { 67 return mSensorDevice.batch(ident, mSensor.getHandle(), flags, samplingPeriodNs, 68 maxBatchReportLatencyNs); 69 } 70 71 status_t HardwareSensor::flush(void* ident, int handle) { 72 return mSensorDevice.flush(ident, handle); 73 } 74 75 status_t HardwareSensor::setDelay(void* ident, int handle, int64_t ns) { 76 return mSensorDevice.setDelay(ident, handle, ns); 77 } 78 79 void HardwareSensor::autoDisable(void *ident, int handle) { 80 mSensorDevice.autoDisable(ident, handle); 81 } 82 83 VirtualSensor::VirtualSensor() : 84 BaseSensor(DUMMY_SENSOR), mSensorFusion(SensorFusion::getInstance()) { 85 } 86 87 // --------------------------------------------------------------------------- 88 }; // namespace android 89