1671a6ff4be11b3e2d8eb017e0c7a78e6133fb2b8Mathias Agopian/* 2671a6ff4be11b3e2d8eb017e0c7a78e6133fb2b8Mathias Agopian * Copyright (C) 2010 The Android Open Source Project 3671a6ff4be11b3e2d8eb017e0c7a78e6133fb2b8Mathias Agopian * 4671a6ff4be11b3e2d8eb017e0c7a78e6133fb2b8Mathias Agopian * Licensed under the Apache License, Version 2.0 (the "License"); 5671a6ff4be11b3e2d8eb017e0c7a78e6133fb2b8Mathias Agopian * you may not use this file except in compliance with the License. 6671a6ff4be11b3e2d8eb017e0c7a78e6133fb2b8Mathias Agopian * You may obtain a copy of the License at 7671a6ff4be11b3e2d8eb017e0c7a78e6133fb2b8Mathias Agopian * 8671a6ff4be11b3e2d8eb017e0c7a78e6133fb2b8Mathias Agopian * http://www.apache.org/licenses/LICENSE-2.0 9671a6ff4be11b3e2d8eb017e0c7a78e6133fb2b8Mathias Agopian * 10671a6ff4be11b3e2d8eb017e0c7a78e6133fb2b8Mathias Agopian * Unless required by applicable law or agreed to in writing, software 11671a6ff4be11b3e2d8eb017e0c7a78e6133fb2b8Mathias Agopian * distributed under the License is distributed on an "AS IS" BASIS, 12671a6ff4be11b3e2d8eb017e0c7a78e6133fb2b8Mathias Agopian * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13671a6ff4be11b3e2d8eb017e0c7a78e6133fb2b8Mathias Agopian * See the License for the specific language governing permissions and 14671a6ff4be11b3e2d8eb017e0c7a78e6133fb2b8Mathias Agopian * limitations under the License. 15671a6ff4be11b3e2d8eb017e0c7a78e6133fb2b8Mathias Agopian */ 16671a6ff4be11b3e2d8eb017e0c7a78e6133fb2b8Mathias Agopian 17671a6ff4be11b3e2d8eb017e0c7a78e6133fb2b8Mathias Agopian#ifndef ANDROID_ROTATION_VECTOR_SENSOR_H 18671a6ff4be11b3e2d8eb017e0c7a78e6133fb2b8Mathias Agopian#define ANDROID_ROTATION_VECTOR_SENSOR_H 19671a6ff4be11b3e2d8eb017e0c7a78e6133fb2b8Mathias Agopian 20671a6ff4be11b3e2d8eb017e0c7a78e6133fb2b8Mathias Agopian#include <stdint.h> 21671a6ff4be11b3e2d8eb017e0c7a78e6133fb2b8Mathias Agopian#include <sys/types.h> 22671a6ff4be11b3e2d8eb017e0c7a78e6133fb2b8Mathias Agopian 23671a6ff4be11b3e2d8eb017e0c7a78e6133fb2b8Mathias Agopian#include <gui/Sensor.h> 24671a6ff4be11b3e2d8eb017e0c7a78e6133fb2b8Mathias Agopian 25671a6ff4be11b3e2d8eb017e0c7a78e6133fb2b8Mathias Agopian#include "SensorDevice.h" 26671a6ff4be11b3e2d8eb017e0c7a78e6133fb2b8Mathias Agopian#include "SensorInterface.h" 27671a6ff4be11b3e2d8eb017e0c7a78e6133fb2b8Mathias Agopian 2873e0bc805a143d8cc2202fccb73230459edc6869Mathias Agopian#include "Fusion.h" 2973e0bc805a143d8cc2202fccb73230459edc6869Mathias Agopian#include "SensorFusion.h" 3073e0bc805a143d8cc2202fccb73230459edc6869Mathias Agopian 31671a6ff4be11b3e2d8eb017e0c7a78e6133fb2b8Mathias Agopian// --------------------------------------------------------------------------- 32671a6ff4be11b3e2d8eb017e0c7a78e6133fb2b8Mathias Agopiannamespace android { 33671a6ff4be11b3e2d8eb017e0c7a78e6133fb2b8Mathias Agopian// --------------------------------------------------------------------------- 34671a6ff4be11b3e2d8eb017e0c7a78e6133fb2b8Mathias Agopian 35671a6ff4be11b3e2d8eb017e0c7a78e6133fb2b8Mathias Agopianclass RotationVectorSensor : public SensorInterface { 36671a6ff4be11b3e2d8eb017e0c7a78e6133fb2b8Mathias Agopian SensorDevice& mSensorDevice; 3773e0bc805a143d8cc2202fccb73230459edc6869Mathias Agopian SensorFusion& mSensorFusion; 38671a6ff4be11b3e2d8eb017e0c7a78e6133fb2b8Mathias Agopian 39671a6ff4be11b3e2d8eb017e0c7a78e6133fb2b8Mathias Agopianpublic: 4073e0bc805a143d8cc2202fccb73230459edc6869Mathias Agopian RotationVectorSensor(); 41671a6ff4be11b3e2d8eb017e0c7a78e6133fb2b8Mathias Agopian virtual bool process(sensors_event_t* outEvent, 42671a6ff4be11b3e2d8eb017e0c7a78e6133fb2b8Mathias Agopian const sensors_event_t& event); 43671a6ff4be11b3e2d8eb017e0c7a78e6133fb2b8Mathias Agopian virtual status_t activate(void* ident, bool enabled); 44671a6ff4be11b3e2d8eb017e0c7a78e6133fb2b8Mathias Agopian virtual status_t setDelay(void* ident, int handle, int64_t ns); 45671a6ff4be11b3e2d8eb017e0c7a78e6133fb2b8Mathias Agopian virtual Sensor getSensor() const; 46671a6ff4be11b3e2d8eb017e0c7a78e6133fb2b8Mathias Agopian virtual bool isVirtual() const { return true; } 47671a6ff4be11b3e2d8eb017e0c7a78e6133fb2b8Mathias Agopian}; 48671a6ff4be11b3e2d8eb017e0c7a78e6133fb2b8Mathias Agopian 496043e5329cc023ae1bf6c0b7b750e584c1ebfbf4Mathias Agopianclass GyroDriftSensor : public SensorInterface { 506043e5329cc023ae1bf6c0b7b750e584c1ebfbf4Mathias Agopian SensorDevice& mSensorDevice; 516043e5329cc023ae1bf6c0b7b750e584c1ebfbf4Mathias Agopian SensorFusion& mSensorFusion; 526043e5329cc023ae1bf6c0b7b750e584c1ebfbf4Mathias Agopian 536043e5329cc023ae1bf6c0b7b750e584c1ebfbf4Mathias Agopianpublic: 546043e5329cc023ae1bf6c0b7b750e584c1ebfbf4Mathias Agopian GyroDriftSensor(); 556043e5329cc023ae1bf6c0b7b750e584c1ebfbf4Mathias Agopian virtual bool process(sensors_event_t* outEvent, 566043e5329cc023ae1bf6c0b7b750e584c1ebfbf4Mathias Agopian const sensors_event_t& event); 576043e5329cc023ae1bf6c0b7b750e584c1ebfbf4Mathias Agopian virtual status_t activate(void* ident, bool enabled); 586043e5329cc023ae1bf6c0b7b750e584c1ebfbf4Mathias Agopian virtual status_t setDelay(void* ident, int handle, int64_t ns); 596043e5329cc023ae1bf6c0b7b750e584c1ebfbf4Mathias Agopian virtual Sensor getSensor() const; 606043e5329cc023ae1bf6c0b7b750e584c1ebfbf4Mathias Agopian virtual bool isVirtual() const { return true; } 616043e5329cc023ae1bf6c0b7b750e584c1ebfbf4Mathias Agopian}; 626043e5329cc023ae1bf6c0b7b750e584c1ebfbf4Mathias Agopian 63671a6ff4be11b3e2d8eb017e0c7a78e6133fb2b8Mathias Agopian// --------------------------------------------------------------------------- 64671a6ff4be11b3e2d8eb017e0c7a78e6133fb2b8Mathias Agopian}; // namespace android 65671a6ff4be11b3e2d8eb017e0c7a78e6133fb2b8Mathias Agopian 66671a6ff4be11b3e2d8eb017e0c7a78e6133fb2b8Mathias Agopian#endif // ANDROID_ROTATION_VECTOR_SENSOR_H 67