Sensor.h revision 30d6fd6b28aeacfe06ddc7adaac34e8a0032df40
19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/*
29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2010 The Android Open Source Project
39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License.
69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at
79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0
99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software
119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and
149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License.
159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#ifndef ANDROID_GUI_SENSOR_H
189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#define ANDROID_GUI_SENSOR_H
198c84109b9fbbf473b225707a38261ff5f99d95fbDianne Hackborn
201ce5bd34632e91a928aa12a30b1c160a35db033bDave Bort#include <stdint.h>
211ce5bd34632e91a928aa12a30b1c160a35db033bDave Bort#include <sys/types.h>
221ce5bd34632e91a928aa12a30b1c160a35db033bDave Bort
231ce5bd34632e91a928aa12a30b1c160a35db033bDave Bort#include <utils/Errors.h>
249c8dd55a9d829c29a3feee9469d8c2f27a9f5516Dianne Hackborn#include <utils/Flattenable.h>
251ce5bd34632e91a928aa12a30b1c160a35db033bDave Bort#include <utils/String8.h>
269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include <utils/Timers.h>
271ce5bd34632e91a928aa12a30b1c160a35db033bDave Bort
289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include <hardware/sensors.h>
299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
301ce5bd34632e91a928aa12a30b1c160a35db033bDave Bort#include <android/sensor.h>
311ce5bd34632e91a928aa12a30b1c160a35db033bDave Bort
321ce5bd34632e91a928aa12a30b1c160a35db033bDave Bort// ----------------------------------------------------------------------------
33c4b11a79fb164310af03c1190622fe52e3695d2bRomain Guy// Concrete types for the NDK
34c4b11a79fb164310af03c1190622fe52e3695d2bRomain Guystruct ASensor { };
35c4b11a79fb164310af03c1190622fe52e3695d2bRomain Guy
36c4b11a79fb164310af03c1190622fe52e3695d2bRomain Guy// ----------------------------------------------------------------------------
379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectnamespace android {
389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ----------------------------------------------------------------------------
399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectclass Parcel;
419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
429f3155418d0a504e45bc8c0ce47e11c8689ab36cDan Bornstein// ----------------------------------------------------------------------------
439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectclass Sensor : public ASensor, public LightFlattenable<Sensor>
459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{
469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic:
47fe067a4cc586631881f51d0fd48100dd0f7cadf2Ian Rogers    enum {
489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        TYPE_ACCELEROMETER  = ASENSOR_TYPE_ACCELEROMETER,
499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        TYPE_MAGNETIC_FIELD = ASENSOR_TYPE_MAGNETIC_FIELD,
509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        TYPE_GYROSCOPE      = ASENSOR_TYPE_GYROSCOPE,
519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        TYPE_LIGHT          = ASENSOR_TYPE_LIGHT,
529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        TYPE_PROXIMITY      = ASENSOR_TYPE_PROXIMITY
539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    };
549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            Sensor();
569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            Sensor(struct sensor_t const* hwSensor, int halVersion = 0);
579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            ~Sensor();
589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
593eda9799a162765dd49f481cc303fc5702a9c5feDan Egnor    const String8& getName() const;
603eda9799a162765dd49f481cc303fc5702a9c5feDan Egnor    const String8& getVendor() const;
619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int32_t getHandle() const;
629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int32_t getType() const;
639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    float getMinValue() const;
649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    float getMaxValue() const;
659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    float getResolution() const;
669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    float getPowerUsage() const;
679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int32_t getMinDelay() const;
689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    nsecs_t getMinDelayNs() const;
699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int32_t getVersion() const;
709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int32_t getFifoReservedEventCount() const;
719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int32_t getFifoMaxEventCount() const;
729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    // LightFlattenable protocol
749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    inline bool isFixedSize() const { return false; }
759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    size_t getFlattenedSize() const;
769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    status_t flatten(void* buffer, size_t size) const;
779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    status_t unflatten(void const* buffer, size_t size);
789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectprivate:
809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    String8 mName;
819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    String8 mVendor;
829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int32_t mHandle;
839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int32_t mType;
849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    float   mMinValue;
859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    float   mMaxValue;
869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    float   mResolution;
879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    float   mPower;
889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int32_t mMinDelay;
899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int32_t mVersion;
909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int32_t mFifoReservedEventCount;
919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int32_t mFifoMaxEventCount;
929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project};
939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ----------------------------------------------------------------------------
959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; // namespace android
96798e2d3d0c80e269ead1489dbc3f2f762f1e52b5Christian Mehlmauer
97b049e212ab7fe8967893c202efcb30fecfdb82fbJeff Sharkey#endif // ANDROID_GUI_SENSOR_H
989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project