diff options
Diffstat (limited to 'libsensors_iio/src/SensorBase.h')
-rw-r--r-- | libsensors_iio/src/SensorBase.h | 166 |
1 files changed, 0 insertions, 166 deletions
diff --git a/libsensors_iio/src/SensorBase.h b/libsensors_iio/src/SensorBase.h deleted file mode 100644 index b20dea2..0000000 --- a/libsensors_iio/src/SensorBase.h +++ /dev/null @@ -1,166 +0,0 @@ -/* - * Copyright (C) 2013-2015 STMicroelectronics - * Author: Denis Ciocca - <denis.ciocca@st.com> - * - * 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 ST_SENSOR_BASE_H -#define ST_SENSOR_BASE_H - -#include <sys/cdefs.h> -#include <sys/types.h> -#include <sys/stat.h> -#include <time.h> -#include <pthread.h> -#include <errno.h> -#include <poll.h> -#include <vector> - -#include <hardware/sensors.h> -#include <cutils/log.h> - -#include "common_data.h" -#include <CircularBuffer.h> - -#define SENSOR_BASE_0AXIS (0) -#define SENSOR_BASE_1AXIS (1) -#define SENSOR_BASE_3AXIS (3) -#define SENSOR_BASE_4AXIS (4) - -#define SENSOR_BASE_DEPENDENCY_0 (0) -#define SENSOR_BASE_DEPENDENCY_1 (1) -#define SENSOR_BASE_DEPENDENCY_2 (2) -#define SENSOR_BASE_DEPENDENCY_3 (3) -#define SENSOR_BASE_DEPENDENCY_4 (4) -#define SENSOR_BASE_MAX_DEPENDENCY (5) - -#define SENSOR_BASE_ANDROID_NAME_MAX (40) - -#define POLL_TIMEOUT_FLUSH_EVENT (-1) -#define POLL_TIMEOUT_DATA_EVENT (1000) - -#define GAUSS_TO_UTESLA(x) ((x) * 100.0f) -#define NS_TO_FREQUENCY(x) (1E9 / x) -#define FREQUENCY_TO_NS(x) (1E9 / x) -#define FREQUENCY_TO_US(x) (1E6 / x) -#define NS_TO_MS(x) (x / 1E6) -#define NS_TO_S(x) (x / 1E9) - -typedef struct trigger_mutex { - pthread_mutex_t trigger_mutex; - pthread_cond_t trigger_data_cond; -} trigger_mutex; - -class SensorBase; - -/* - * class SensorBase - */ -class SensorBase { -private: - int64_t enabled_sensors_mask; - int64_t sensors_timeout[ST_HAL_IIO_MAX_DEVICES]; - int64_t sensors_pollrates[ST_HAL_IIO_MAX_DEVICES]; - int64_t last_timestap_pushed[ST_HAL_IIO_MAX_DEVICES]; - - CircularBuffer *circular_buffer_data[SENSOR_BASE_MAX_DEPENDENCY]; - -protected: - bool valid_class; - char android_name[SENSOR_BASE_ANDROID_NAME_MAX]; - - int android_pipe_fd; - int type_sensor_need_trigger; - int handle_remapping[ST_HAL_IIO_MAX_DEVICES]; - int type_dependencies[SENSOR_BASE_MAX_DEPENDENCY]; - int sensors_to_push_data_type[SENSOR_BASE_MAX_DEPENDENCY]; - - unsigned int num_data_axis; - unsigned int dependencies_num; - unsigned int sensors_to_trigger_num; - unsigned int sensors_to_push_data_num; - - int64_t real_pollrate; - int64_t last_data_timestamp; - - SensorBase *sensors_to_push_data[SENSOR_BASE_MAX_DEPENDENCY]; - SensorBase *sensors_to_trigger[SENSOR_BASE_MAX_DEPENDENCY]; - SensorBase *dependencies[SENSOR_BASE_MAX_DEPENDENCY]; - sensors_event_t sensor_event; - struct sensor_t sensor_t_data; - - trigger_mutex mutext; - - int64_t GetMinTimeout(); - int64_t GetMinPeriod(); - - void SetBitEnableMask(int handle); - void ResetBitEnableMask(int handle); - - bool GetStatusExcludeHandle(int handle); - bool GetStatusOfHandle(int handle); - - int AllocateBufferForDependencyData(int dependency_id, unsigned int max_fifo_len); - void DeAllocateBufferForDependencyData(int dependency_id); - - int AddSensorToDataPush(SensorBase *t); - void RemoveSensorToDataPush(SensorBase *t); - -public: - SensorBase(const char *name, int handle, int type, int pipe_data_fd); - virtual ~SensorBase(); - bool IsValidClass(); - - int GetHandle(); - int GetType(); - int GetMaxFifoLenght(); - - std::vector<int64_t> timestamp; - char* GetName(); - - virtual int Enable(int handle, bool enable); - bool GetStatus(); - - virtual int SetDelay(int handle, int64_t period_ns, int64_t timeout); - int64_t GetDelay(); - int64_t GetRealPollrate(); - - void GetDepenciesTypeList(int type[SENSOR_BASE_MAX_DEPENDENCY]); - int AddSensorDependency(SensorBase *p); - void RemoveSensorDependency(SensorBase *p); - - trigger_mutex* GetMutexForTrigger(); - int GetSensorNeedTriggerType(); - int AddSensorToTrigger(SensorBase *t); - - bool FillSensor_tData(struct sensor_t *data); - - virtual int WritePipeWithPoll(sensors_event_t *event_data, int size, int timeout); - virtual int FlushData(bool); - - virtual void ProcessData(SensorBaseData *data); - virtual void ProcessEvent(struct iio_event_data *event_data); - virtual void TriggerEventReceived(); - virtual void WriteDataToPipe(); - virtual void ReceiveDataFromDependency(int handle, SensorBaseData *data); - - virtual int GetLatestValidDataFromDependency(int dependency_id, SensorBaseData *data); - - static void *ThreadWork(void *context); - virtual void ThreadTask(); -}; - -int64_t get_monotonic_time(void); - -#endif /* ST_SENSOR_BASE_H */ |