diff options
Diffstat (limited to 'libsensors/sensors.cpp')
-rw-r--r-- | libsensors/sensors.cpp | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/libsensors/sensors.cpp b/libsensors/sensors.cpp index c0ad385..0065653 100644 --- a/libsensors/sensors.cpp +++ b/libsensors/sensors.cpp @@ -39,6 +39,7 @@ #include "LightSensor.h" #include "ProximitySensor.h" #include "PressureSensor.h" +#include "TemperatureSensor.h" /*****************************************************************************/ @@ -57,6 +58,7 @@ #define SENSORS_LIGHT (1<<ID_L) #define SENSORS_PROXIMITY (1<<ID_P) #define SENSORS_PRESSURE (1<<ID_PR) +#define SENSORS_TEMPERATURE (1<<ID_T) #define SENSORS_ROTATION_VECTOR_HANDLE (ID_RV) #define SENSORS_LINEAR_ACCEL_HANDLE (ID_LA) @@ -68,6 +70,7 @@ #define SENSORS_LIGHT_HANDLE (ID_L) #define SENSORS_PROXIMITY_HANDLE (ID_P) #define SENSORS_PRESSURE_HANDLE (ID_PR) +#define SENSORS_TEMPERATURE_HANDLE (ID_T) #define AKM_FTRACE 0 #define AKM_DEBUG 0 #define AKM_DATA 0 @@ -75,7 +78,7 @@ /*****************************************************************************/ /* The SENSORS Module */ -#define LOCAL_SENSORS (3) +#define LOCAL_SENSORS (4) static struct sensor_t sSensorList[LOCAL_SENSORS + MPLSensor::numSensors] = { { "GP2A Light sensor", "Sharp", @@ -95,6 +98,12 @@ static struct sensor_t sSensorList[LOCAL_SENSORS + MPLSensor::numSensors] = { SENSOR_TYPE_PRESSURE, 1100.0f, 0.01f, 0.67f, 20000, 0, 0, 0, 0, 20000, SENSOR_FLAG_CONTINUOUS_MODE, { } }, + { "BMP180 Temperature sensor", + "Bosch", + 1, SENSORS_TEMPERATURE_HANDLE, + SENSOR_TYPE_AMBIENT_TEMPERATURE, 850.0f, 0.1f, 0.67f, 20000, 0, 0, 0, 0, 20000, + SENSOR_FLAG_CONTINUOUS_MODE, + { } } }; static int numSensors = LOCAL_SENSORS; @@ -145,6 +154,7 @@ private: light, proximity, pressure, + temperature, numSensorDrivers, // wake pipe goes here mpl_power, //special handle for MPL pm interaction numFds, @@ -172,6 +182,8 @@ private: return proximity; case ID_PR: return pressure; + case ID_T: + return temperature; } return -EINVAL; } @@ -219,6 +231,11 @@ sensors_poll_context_t::sensors_poll_context_t() mPollFds[pressure].events = POLLIN; mPollFds[pressure].revents = 0; + mSensors[temperature] = new TemperatureSensor(); + mPollFds[temperature].fd = mSensors[temperature]->getFd(); + mPollFds[temperature].events = POLLIN; + mPollFds[temperature].revents = 0; + int wakeFds[2]; int result = pipe(wakeFds); ALOGE_IF(result<0, "error creating wake pipe (%s)", strerror(errno)); |