SensorBase.h revision 42331858975144405f95243be8427084ee7d478d
142331858975144405f95243be8427084ee7d478dJean-Baptiste Queru/*
242331858975144405f95243be8427084ee7d478dJean-Baptiste Queru * Copyright (C) 2008 The Android Open Source Project
342331858975144405f95243be8427084ee7d478dJean-Baptiste Queru *
442331858975144405f95243be8427084ee7d478dJean-Baptiste Queru * Licensed under the Apache License, Version 2.0 (the "License");
542331858975144405f95243be8427084ee7d478dJean-Baptiste Queru * you may not use this file except in compliance with the License.
642331858975144405f95243be8427084ee7d478dJean-Baptiste Queru * You may obtain a copy of the License at
742331858975144405f95243be8427084ee7d478dJean-Baptiste Queru *
842331858975144405f95243be8427084ee7d478dJean-Baptiste Queru *      http://www.apache.org/licenses/LICENSE-2.0
942331858975144405f95243be8427084ee7d478dJean-Baptiste Queru *
1042331858975144405f95243be8427084ee7d478dJean-Baptiste Queru * Unless required by applicable law or agreed to in writing, software
1142331858975144405f95243be8427084ee7d478dJean-Baptiste Queru * distributed under the License is distributed on an "AS IS" BASIS,
1242331858975144405f95243be8427084ee7d478dJean-Baptiste Queru * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1342331858975144405f95243be8427084ee7d478dJean-Baptiste Queru * See the License for the specific language governing permissions and
1442331858975144405f95243be8427084ee7d478dJean-Baptiste Queru * limitations under the License.
1542331858975144405f95243be8427084ee7d478dJean-Baptiste Queru */
1642331858975144405f95243be8427084ee7d478dJean-Baptiste Queru
1742331858975144405f95243be8427084ee7d478dJean-Baptiste Queru#ifndef ANDROID_SENSOR_BASE_H
1842331858975144405f95243be8427084ee7d478dJean-Baptiste Queru#define ANDROID_SENSOR_BASE_H
1942331858975144405f95243be8427084ee7d478dJean-Baptiste Queru
2042331858975144405f95243be8427084ee7d478dJean-Baptiste Queru#include <stdint.h>
2142331858975144405f95243be8427084ee7d478dJean-Baptiste Queru#include <errno.h>
2242331858975144405f95243be8427084ee7d478dJean-Baptiste Queru#include <sys/cdefs.h>
2342331858975144405f95243be8427084ee7d478dJean-Baptiste Queru#include <sys/types.h>
2442331858975144405f95243be8427084ee7d478dJean-Baptiste Queru
2542331858975144405f95243be8427084ee7d478dJean-Baptiste Queru
2642331858975144405f95243be8427084ee7d478dJean-Baptiste Queru/*****************************************************************************/
2742331858975144405f95243be8427084ee7d478dJean-Baptiste Queru
2842331858975144405f95243be8427084ee7d478dJean-Baptiste Querustruct sensors_event_t;
2942331858975144405f95243be8427084ee7d478dJean-Baptiste Queru
3042331858975144405f95243be8427084ee7d478dJean-Baptiste Queruclass SensorBase {
3142331858975144405f95243be8427084ee7d478dJean-Baptiste Queruprotected:
3242331858975144405f95243be8427084ee7d478dJean-Baptiste Queru    const char* dev_name;
3342331858975144405f95243be8427084ee7d478dJean-Baptiste Queru    const char* data_name;
3442331858975144405f95243be8427084ee7d478dJean-Baptiste Queru    char        input_name[PATH_MAX];
3542331858975144405f95243be8427084ee7d478dJean-Baptiste Queru    int         dev_fd;
3642331858975144405f95243be8427084ee7d478dJean-Baptiste Queru    int         data_fd;
3742331858975144405f95243be8427084ee7d478dJean-Baptiste Queru
3842331858975144405f95243be8427084ee7d478dJean-Baptiste Queru    int openInput(const char* inputName);
3942331858975144405f95243be8427084ee7d478dJean-Baptiste Queru    static int64_t getTimestamp();
4042331858975144405f95243be8427084ee7d478dJean-Baptiste Queru
4142331858975144405f95243be8427084ee7d478dJean-Baptiste Queru
4242331858975144405f95243be8427084ee7d478dJean-Baptiste Queru    static int64_t timevalToNano(timeval const& t) {
4342331858975144405f95243be8427084ee7d478dJean-Baptiste Queru        return t.tv_sec*1000000000LL + t.tv_usec*1000;
4442331858975144405f95243be8427084ee7d478dJean-Baptiste Queru    }
4542331858975144405f95243be8427084ee7d478dJean-Baptiste Queru
4642331858975144405f95243be8427084ee7d478dJean-Baptiste Queru    int open_device();
4742331858975144405f95243be8427084ee7d478dJean-Baptiste Queru    int close_device();
4842331858975144405f95243be8427084ee7d478dJean-Baptiste Queru
4942331858975144405f95243be8427084ee7d478dJean-Baptiste Querupublic:
5042331858975144405f95243be8427084ee7d478dJean-Baptiste Queru            SensorBase(
5142331858975144405f95243be8427084ee7d478dJean-Baptiste Queru                    const char* dev_name,
5242331858975144405f95243be8427084ee7d478dJean-Baptiste Queru                    const char* data_name);
5342331858975144405f95243be8427084ee7d478dJean-Baptiste Queru
5442331858975144405f95243be8427084ee7d478dJean-Baptiste Queru    virtual ~SensorBase();
5542331858975144405f95243be8427084ee7d478dJean-Baptiste Queru
5642331858975144405f95243be8427084ee7d478dJean-Baptiste Queru    virtual int readEvents(sensors_event_t* data, int count) = 0;
5742331858975144405f95243be8427084ee7d478dJean-Baptiste Queru    virtual bool hasPendingEvents() const;
5842331858975144405f95243be8427084ee7d478dJean-Baptiste Queru    virtual int getFd() const;
5942331858975144405f95243be8427084ee7d478dJean-Baptiste Queru    virtual int setDelay(int32_t handle, int64_t ns);
6042331858975144405f95243be8427084ee7d478dJean-Baptiste Queru    virtual int enable(int32_t handle, int enabled) = 0;
6142331858975144405f95243be8427084ee7d478dJean-Baptiste Queru};
6242331858975144405f95243be8427084ee7d478dJean-Baptiste Queru
6342331858975144405f95243be8427084ee7d478dJean-Baptiste Queru/*****************************************************************************/
6442331858975144405f95243be8427084ee7d478dJean-Baptiste Queru
6542331858975144405f95243be8427084ee7d478dJean-Baptiste Queru#endif  // ANDROID_SENSOR_BASE_H
66