summaryrefslogtreecommitdiffstats
path: root/services/sensorservice/SensorDevice.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'services/sensorservice/SensorDevice.cpp')
-rw-r--r--services/sensorservice/SensorDevice.cpp25
1 files changed, 23 insertions, 2 deletions
diff --git a/services/sensorservice/SensorDevice.cpp b/services/sensorservice/SensorDevice.cpp
index f192913..38d498c 100644
--- a/services/sensorservice/SensorDevice.cpp
+++ b/services/sensorservice/SensorDevice.cpp
@@ -29,6 +29,7 @@
#include <hardware/sensors.h>
#include "SensorDevice.h"
+#include "SensorService.h"
namespace android {
// ---------------------------------------------------------------------------
@@ -166,17 +167,32 @@ status_t SensorDevice::activate(void* ident, int handle, int enabled)
bool actuateHardware = false;
Info& info( mActivationCount.editValueFor(handle) );
+
+
+ LOGD_IF(DEBUG_CONNECTIONS,
+ "SensorDevice::activate: ident=%p, handle=0x%08x, enabled=%d, count=%d",
+ ident, handle, enabled, info.rates.size());
+
if (enabled) {
Mutex::Autolock _l(mLock);
+ LOGD_IF(DEBUG_CONNECTIONS, "... index=%ld",
+ info.rates.indexOfKey(ident));
+
if (info.rates.indexOfKey(ident) < 0) {
info.rates.add(ident, DEFAULT_EVENTS_PERIOD);
- actuateHardware = true;
+ if (info.rates.size() == 1) {
+ actuateHardware = true;
+ }
} else {
// sensor was already activated for this ident
}
} else {
Mutex::Autolock _l(mLock);
- if (info.rates.removeItem(ident) >= 0) {
+ LOGD_IF(DEBUG_CONNECTIONS, "... index=%ld",
+ info.rates.indexOfKey(ident));
+
+ ssize_t idx = info.rates.removeItem(ident);
+ if (idx >= 0) {
if (info.rates.size() == 0) {
actuateHardware = true;
}
@@ -186,6 +202,8 @@ status_t SensorDevice::activate(void* ident, int handle, int enabled)
}
if (actuateHardware) {
+ LOGD_IF(DEBUG_CONNECTIONS, "\t>>> actuating h/w");
+
err = mSensorDevice->activate(mSensorDevice, handle, enabled);
if (enabled) {
LOGE_IF(err, "Error activating sensor %d (%s)", handle, strerror(-err));
@@ -233,6 +251,9 @@ status_t SensorDevice::setDelay(void* ident, int handle, int64_t ns)
}
}
}
+
+ //LOGD("setDelay: ident=%p, handle=%d, ns=%lld", ident, handle, ns);
+
return mSensorDevice->setDelay(mSensorDevice, handle, ns);
}