summaryrefslogtreecommitdiffstats
path: root/libsensors/sensors.cpp
diff options
context:
space:
mode:
authorKyle Repinski <repinski23@gmail.com>2014-07-04 16:03:02 -0500
committerZiyan <jaraidaniel@gmail.com>2014-12-13 00:39:24 +0100
commitca2bb8fc30fc6e4b5765d4da01e8c3cafc3b0095 (patch)
tree9a71c5a06c4688c99a80fdbc11908ed365340f26 /libsensors/sensors.cpp
parentccf65b4db704992acd3f2dca771a2cb2c2500410 (diff)
downloaddevice_samsung_tuna-ca2bb8fc30fc6e4b5765d4da01e8c3cafc3b0095.zip
device_samsung_tuna-ca2bb8fc30fc6e4b5765d4da01e8c3cafc3b0095.tar.gz
device_samsung_tuna-ca2bb8fc30fc6e4b5765d4da01e8c3cafc3b0095.tar.bz2
tuna: Add ambient temperature sensor.
This leverages the BMP180's ability to sense the temperature. Requires kernel change, but there are no adverse side-effects without the kernel change. Change-Id: Ibe2228d0ab30775556acb0a034f7f0904ed1b0b7 Signed-off-by: Kyle Repinski <repinski23@gmail.com> Conflicts: libsensors/sensors.cpp
Diffstat (limited to 'libsensors/sensors.cpp')
-rw-r--r--libsensors/sensors.cpp19
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));