1ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda/* 2ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda * Copyright (C) 2008 The Android Open Source Project 3ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda * 4ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda * Licensed under the Apache License, Version 2.0 (the "License"); 5ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda * you may not use this file except in compliance with the License. 6ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda * You may obtain a copy of the License at 7ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda * 8ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda * http://www.apache.org/licenses/LICENSE-2.0 9ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda * 10ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda * Unless required by applicable law or agreed to in writing, software 11ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda * distributed under the License is distributed on an "AS IS" BASIS, 12ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda * See the License for the specific language governing permissions and 14ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda * limitations under the License. 15ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda */ 16ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda 17ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda#ifndef ANDROID_AKM_SENSOR_H 18ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda#define ANDROID_AKM_SENSOR_H 19ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda 20ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda#include <stdint.h> 21ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda#include <errno.h> 22ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda#include <sys/cdefs.h> 23ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda#include <sys/types.h> 24ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda 25ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda 26ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda#include "sensors.h" 27ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda#include "SensorBase.h" 28ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda#include "InputEventReader.h" 29ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda 30ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda/*****************************************************************************/ 31ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda 32ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masudastruct input_event; 33ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda 34ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masudaclass AkmSensor : public SensorBase { 35ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masudapublic: 36ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda AkmSensor(); 37ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda virtual ~AkmSensor(); 38ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda 39ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda enum { 40ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda Accelerometer = 0, 41ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda MagneticField, 42ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda Orientation, 43ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda numSensors 44ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda }; 45ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda 46ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda virtual int readEvents(sensors_event_t* data, int count); 47ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda virtual int setDelay(int32_t handle, int64_t ns); 48ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda virtual int setEnable(int32_t handle, int enabled); 49ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda virtual int64_t getDelay(int32_t handle); 50ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda virtual int getEnable(int32_t handle); 51ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda int setAccel(sensors_event_t* data); 52ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda 53ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masudaprivate: 54ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda int mEnabled[numSensors]; 55ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda int64_t mDelay[numSensors]; 56ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda uint32_t mPendingMask; 57ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda InputEventCircularReader mInputReader; 58ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda sensors_event_t mPendingEvents[numSensors]; 59ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda char input_sysfs_path[PATH_MAX]; 60ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda int input_sysfs_path_len; 61ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda 62ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda int handle2id(int32_t handle); 63ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda void processEvent(int code, int value); 64ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda}; 65ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda 66ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda/*****************************************************************************/ 67ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda 68ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda#endif // ANDROID_AKM_SENSOR_H 69