diff options
Diffstat (limited to 'als/SensorBase.h')
-rw-r--r-- | als/SensorBase.h | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/als/SensorBase.h b/als/SensorBase.h new file mode 100644 index 0000000..2eaa872 --- /dev/null +++ b/als/SensorBase.h @@ -0,0 +1,101 @@ +/* +* Copyright (C) 2015 Intel Corp +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#ifndef ANDROID_SENSOR_BASE_H +#define ANDROID_SENSOR_BASE_H + +#include <stdint.h> +#include <errno.h> +#include <sys/cdefs.h> +#include <sys/types.h> + +#if defined ANDROID_L +/* #warning "build for Wear" */ +#define LOGV_IF ALOGV_IF +#define LOGE_IF ALOGE_IF +#define LOGI_IF ALOGI_IF +#define LOGI ALOGI +#define LOGE ALOGE +#define LOGV ALOGV +#define LOGW ALOGW +#else +#warning "build for ICS or earlier version" +#endif + +/* Log enablers, each of these independent */ + +/* TODO: clear all logging below on production build, keep it during integration */ +#define PROCESS_VERBOSE (1) /* process log messages */ +#define EXTRA_VERBOSE (1) /* verbose log messages */ +#define SYSFS_VERBOSE (1) /* log sysfs interactions as cat/echo for repro + purpose on a shell */ +#define FUNC_ENTRY (1) /* log entry in all one-time functions */ + +/* Note that enabling this logs may affect performance */ +#define HANDLER_ENTRY (1) /* log entry in all handler functions */ +#define ENG_VERBOSE (1) /* log some a lot more info about the internals */ +#define INPUT_DATA (1) /* log the data input from the events */ +#define HANDLER_DATA (1) /* log the data fetched from the handlers */ + +#define FUNC_LOG \ + LOGV("%s (hardware/intel/sensors/als)", __PRETTY_FUNCTION__) +#define VFUNC_LOG \ + LOGV_IF(FUNC_ENTRY, "Entering function '%s' (hardware/intel/sensors/als)", __PRETTY_FUNCTION__) +#define VHANDLER_LOG \ + LOGV_IF(HANDLER_ENTRY, "Entering handler '%s' (hardware/intel/sensors/als)", __PRETTY_FUNCTION__) +#define CALL_MEMBER_FN(pobject, ptrToMember) ((pobject)->*(ptrToMember)) + +#define MAX_SYSFS_NAME_LEN (100) +#define IIO_BUFFER_LENGTH (480) + +/*****************************************************************************/ + +struct sensors_event_t; + +class SensorBase { +protected: + const char *dev_name; + const char *data_name; + int dev_fd; + int data_fd; + + int openInput(const char* inputName); + static int64_t getTimestamp(); + static int64_t timevalToNano(timeval const& t) { + return t.tv_sec * 1000000000LL + t.tv_usec * 1000; + } + + int open_device(); + int close_device(); + +public: + SensorBase(const char* dev_name, const char* data_name); + + virtual ~SensorBase(); + + virtual int readEvents(sensors_event_t* data, int count) = 0; + virtual bool hasPendingEvents() const; + virtual int getFd() const; + virtual int setDelay(int32_t handle, int64_t ns); + virtual int enable(int32_t handle, int enabled); +#ifdef HAL_VERSION_GT_1_0 + virtual int batch(int handle, int flags, int64_t period_ns, int64_t timeout); +#endif +}; + +/*****************************************************************************/ + +#endif // ANDROID_SENSOR_BASE_H |