diff options
Diffstat (limited to 'sensors/NativeSensorManager.h')
| -rw-r--r-- | sensors/NativeSensorManager.h | 147 |
1 files changed, 0 insertions, 147 deletions
diff --git a/sensors/NativeSensorManager.h b/sensors/NativeSensorManager.h deleted file mode 100644 index 8272162..0000000 --- a/sensors/NativeSensorManager.h +++ /dev/null @@ -1,147 +0,0 @@ -/*-------------------------------------------------------------------------- -Copyright (c) 2014, The Linux Foundation. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials provided - with the distribution. - * Neither the name of The Linux Foundation nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED -WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS -BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR -BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE -OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ---------------------------------------------------------------------------*/ - -#ifndef SENSOR_INFO_MANAGER_H -#define SENSOR_INFO_MANAGER_H - -#include <string.h> -#include <dirent.h> -#include <utils/Log.h> -#include <sys/stat.h> -#include <fcntl.h> -#include <SensorBase.h> - -#include <utils/Singleton.h> -#include <cutils/list.h> -#include <sensors.h> -#include <utils/KeyedVector.h> - -#include "AccelSensor.h" -#include "LightSensor.h" -#include "ProximitySensor.h" -#include "CompassSensor.h" -#include "GyroSensor.h" -#include "VirtualSensor.h" - -#include "sensors_extension.h" -#include "sensors_XML.h" -using namespace android; - -#define EVENT_PATH "/dev/input/" -#define DEPEND_ON(m, t) (m & (1ULL << t)) -#define SENSORS_HANDLE(x) (SENSORS_HANDLE_BASE + x + 1) - -#ifndef list_for_each_safe -#define list_for_each_safe(node, n, list) \ - for (node = (list)->next, n = node->next; \ - node != (list); \ - node = n, n = node->next) -#endif - -enum { - TYPE_STRING = 0, - TYPE_INTEGER, - TYPE_FLOAT, -}; - -struct SensorContext { - char name[SYSFS_MAXLEN]; // name of the sensor - char vendor[SYSFS_MAXLEN]; // vendor of the sensor - char *enable_path; // the control path to enable this sensor - char *data_path; // the data path to get sensor events - - struct sensor_t *sensor; // point to the sensor_t structure in the sensor list - SensorBase *driver; // point to the sensor driver instance - - int data_fd; // the file descriptor of the data device node - int enable; // indicate if the sensor is enabled - bool is_virtual; // indicate if this is a virtual sensor - int64_t delay_ns; // the poll delay setting of this sensor - struct listnode dep_list; // the background sensor type needed for this sensor - - struct listnode listener; // the head of listeners of this sensor -}; - -struct SensorEventMap { - char data_name[80]; - char data_path[PATH_MAX]; -}; - -struct SysfsMap { - int offset; - const char *node; - int type; -}; - -/* To contain the listener list and denpend list */ -struct SensorRefMap { - struct listnode list; - struct SensorContext *ctx; -}; - -class NativeSensorManager : public Singleton<NativeSensorManager> { - friend class Singleton<NativeSensorManager>; - NativeSensorManager(); - ~NativeSensorManager(); - struct sensor_t sensor_list[MAX_SENSORS]; - struct SensorContext context[MAX_SENSORS]; - struct SensorEventMap event_list[MAX_SENSORS]; - static const struct SysfsMap node_map[]; - static const struct sensor_t virtualSensorList[]; - - int mSensorCount; - - DefaultKeyedVector<int32_t, struct SensorContext*> type_map; - DefaultKeyedVector<int32_t, struct SensorContext*> handle_map; - DefaultKeyedVector<int, struct SensorContext*> fd_map; - - int getNode(char *buf, char *path, const struct SysfsMap *map); - int getSensorListInner(); - int getDataInfo(); - int registerListener(struct SensorContext *hw, struct SensorContext *virt); - int unregisterListener(struct SensorContext *hw, struct SensorContext *virt); - int syncDelay(int handle); - int initVirtualSensor(struct SensorContext *ctx, int handle, int64_t dep, struct sensor_t info); - int initCalibrate(const SensorContext *list); -public: - int getSensorList(const sensor_t **list); - inline SensorContext* getInfoByFd(int fd) { return fd_map.valueFor(fd); }; - inline SensorContext* getInfoByHandle(int handle) { return handle_map.valueFor(handle); }; - inline SensorContext* getInfoByType(int type) { return type_map.valueFor(type); }; - int getSensorCount() {return mSensorCount;} - void dump(); - int hasPendingEvents(int handle); - int activate(int handle, int enable); - int setDelay(int handle, int64_t ns); - int readEvents(int handle, sensors_event_t *data, int count); - int calibrate(int handle, struct cal_cmd_t *para); -}; - -#endif - |
