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 
BaseSensor(const sensor_t & sensor)32 BaseSensor::BaseSensor(const sensor_t& sensor) :
33         mSensorDevice(SensorDevice::getInstance()),
34         mSensor(&sensor, mSensorDevice.getHalDeviceVersion()) {
35 }
36 
BaseSensor(const sensor_t & sensor,const uint8_t (& uuid)[16])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 
HardwareSensor(const sensor_t & sensor)44 HardwareSensor::HardwareSensor(const sensor_t& sensor):
45         BaseSensor(sensor) {
46 }
47 
HardwareSensor(const sensor_t & sensor,const uint8_t (& uuid)[16])48 HardwareSensor::HardwareSensor(const sensor_t& sensor, const uint8_t (&uuid)[16]):
49         BaseSensor(sensor, uuid) {
50 }
51 
~HardwareSensor()52 HardwareSensor::~HardwareSensor() {
53 }
54 
process(sensors_event_t * outEvent,const sensors_event_t & event)55 bool HardwareSensor::process(sensors_event_t* outEvent,
56         const sensors_event_t& event) {
57     *outEvent = event;
58     return true;
59 }
60 
activate(void * ident,bool enabled)61 status_t HardwareSensor::activate(void* ident, bool enabled) {
62     return mSensorDevice.activate(ident, mSensor.getHandle(), enabled);
63 }
64 
batch(void * ident,int,int flags,int64_t samplingPeriodNs,int64_t maxBatchReportLatencyNs)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 
flush(void * ident,int handle)71 status_t HardwareSensor::flush(void* ident, int handle) {
72     return mSensorDevice.flush(ident, handle);
73 }
74 
setDelay(void * ident,int handle,int64_t ns)75 status_t HardwareSensor::setDelay(void* ident, int handle, int64_t ns) {
76     return mSensorDevice.setDelay(ident, handle, ns);
77 }
78 
autoDisable(void * ident,int handle)79 void HardwareSensor::autoDisable(void *ident, int handle) {
80     mSensorDevice.autoDisable(ident, handle);
81 }
82 
VirtualSensor()83 VirtualSensor::VirtualSensor() :
84         BaseSensor(DUMMY_SENSOR), mSensorFusion(SensorFusion::getInstance()) {
85 }
86 
87 // ---------------------------------------------------------------------------
88 }; // namespace android
89