149ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow/*
249ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow * Copyright (C) 2012 The Android Open Source Project
349ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow *
449ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow * Licensed under the Apache License, Version 2.0 (the "License");
549ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow * you may not use this file except in compliance with the License.
649ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow * You may obtain a copy of the License at
749ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow *
849ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow *      http://www.apache.org/licenses/LICENSE-2.0
949ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow *
1049ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow * Unless required by applicable law or agreed to in writing, software
1149ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow * distributed under the License is distributed on an "AS IS" BASIS,
1249ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1349ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow * See the License for the specific language governing permissions and
1449ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow * limitations under the License.
1549ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow */
1649ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow
1749ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow#ifndef PRESSURE_SENSOR_H
1849ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow#define PRESSURE_SENSOR_H
1949ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow
2049ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow#include <stdint.h>
2149ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow#include <errno.h>
2249ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow#include <sys/cdefs.h>
2349ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow#include <sys/types.h>
2449ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow
2549ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow#include <stdint.h>
2649ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow#include <errno.h>
2749ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow#include <sys/cdefs.h>
2849ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow#include <sys/types.h>
2949ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow#include <poll.h>
3049ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow#include <utils/Vector.h>
3149ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow#include <utils/KeyedVector.h>
3249ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow
3349ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow#include "sensors.h"
3449ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow#include "SensorBase.h"
3549ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow#include "InputEventReader.h"
3649ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow
3749ea3e26ca3c6a779e527a0322e49a663333350aRosa Chowclass PressureSensor : public SensorBase {
3849ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow
3949ea3e26ca3c6a779e527a0322e49a663333350aRosa Chowpublic:
40cd79002b2edb60b25843e5f4f9a06e768bc1a568Nick Vaccaro    PressureSensor(const char *sysfs_path);
4149ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow    virtual ~PressureSensor();
4249ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow
4349ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow    virtual int getFd() const;
4449ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow    virtual int enable(int32_t handle, int enabled);
4549ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow    virtual int setDelay(int32_t handle, int64_t ns);
4649ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow    virtual int getEnable(int32_t handle);
4749ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow    virtual int64_t getDelay(int32_t handle);
48cd79002b2edb60b25843e5f4f9a06e768bc1a568Nick Vaccaro    virtual int64_t getMinDelay() { return mMinDelay; }
4949ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow    // only applicable to primary
5049ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow    virtual int readEvents(sensors_event_t *data, int count) { return 0; }
5149ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow
5249ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow    void fillList(struct sensor_t *list);
5349ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow    // default is integrated for secondary bus
5449ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow    int isIntegrated() { return (1); }
5549ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow
5649ea3e26ca3c6a779e527a0322e49a663333350aRosa Chowprivate:
5749ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow    char sensor_name[200];
5849ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow
5949ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow    struct sysfs_attrbs {
604a28f9c897c46c42a255823f7e307169a828a025Rosa Chow       char *pressure_enable;
61cd79002b2edb60b25843e5f4f9a06e768bc1a568Nick Vaccaro       char *pressure_rate;
6249ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow    } pressureSysFs;
6349ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow
6449ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow    int pressure_fd;
6549ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow    int64_t mDelay;
66cd79002b2edb60b25843e5f4f9a06e768bc1a568Nick Vaccaro    int64_t mMinDelay;
6749ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow    int mEnable;
6849ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow    char* pathP;
6949ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow    const char* mSysfsPath;
7049ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow
7149ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow    int inv_init_sysfs_attributes(void);
7249ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow};
7349ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow
7449ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow/*****************************************************************************/
7549ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow
7649ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow#endif  // PRESSURE_SENSOR_H
77