17494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall/* 27494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall* Copyright (C) 2012 Invensense, Inc. 37494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall* 47494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall* Licensed under the Apache License, Version 2.0 (the "License"); 57494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall* you may not use this file except in compliance with the License. 67494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall* You may obtain a copy of the License at 77494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall* 87494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall* http://www.apache.org/licenses/LICENSE-2.0 97494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall* 107494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall* Unless required by applicable law or agreed to in writing, software 117494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall* distributed under the License is distributed on an "AS IS" BASIS, 127494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 137494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall* See the License for the specific language governing permissions and 147494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall* limitations under the License. 157494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall*/ 167494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall 177494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall#ifndef ANDROID_SENSOR_BASE_H 187494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall#define ANDROID_SENSOR_BASE_H 197494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall 207494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall#include <stdint.h> 217494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall#include <errno.h> 227494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall#include <sys/cdefs.h> 237494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall#include <sys/types.h> 247494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall 257494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall#define CALL_MEMBER_FN(pobject, ptrToMember) ((pobject)->*(ptrToMember)) 267494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall 277494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall#define MAX_SYSFS_NAME_LEN (100) 287494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall 297494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall/*****************************************************************************/ 307494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall 317494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrallstruct sensors_event_t; 327494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall 337494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrallclass SensorBase { 347494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrallprotected: 357494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall const char *dev_name; 367494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall const char *data_name; 377494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall char input_name[PATH_MAX]; 387494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall int dev_fd; 397494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall int data_fd; 407494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall 417494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall int openInput(const char* inputName); 427494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall static int64_t getTimestamp(); 437494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall static int64_t timevalToNano(timeval const& t) { 447494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall return t.tv_sec * 1000000000LL + t.tv_usec * 1000; 457494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall } 467494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall 477494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall int open_device(); 487494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall int close_device(); 497494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall 507494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrallpublic: 517494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall SensorBase(const char* dev_name, const char* data_name); 527494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall 537494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall virtual ~SensorBase(); 547494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall 557494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall virtual int readEvents(sensors_event_t* data, int count) = 0; 567494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall virtual bool hasPendingEvents() const; 577494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall virtual int getFd() const; 587494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall virtual int setDelay(int32_t handle, int64_t ns); 597494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall virtual int enable(int32_t handle, int enabled); 607494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall}; 617494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall 627494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall/*****************************************************************************/ 637494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall 647494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall#endif // ANDROID_SENSOR_BASE_H 65