Update AkmSensor to manually set poll interval

Change-Id: I84fc5c3fc1cb552874129512ea6dfc19b1f9a60a
tirimbino
Espen Fjellvær Olsen 13 years ago
parent ec03b1b0c8
commit 8537e27d60
  1. 23
      exynos4/hal/libsensors/AkmSensor.cpp
  2. 2
      exynos4/hal/libsensors/AkmSensor.h

@ -175,6 +175,7 @@ int AkmSensor::enable(int32_t handle, int en)
int AkmSensor::setDelay(int32_t handle, int64_t ns)
{
int what = -1;
uint32_t sensor_type = 0;
if (ns < 0)
@ -189,9 +190,29 @@ int AkmSensor::setDelay(int32_t handle, int64_t ns)
if (sensor_type == 0)
return -EINVAL;
return akm_set_delay(sensor_type, ns);
mDelays[what] = ns;
return update_delay();
}
int AkmSensor::update_delay()
{
if (mEnabled) {
uint64_t wanted = -1LLU;
for (int i=0 ; i<numSensors ; i++) {
if (mEnabled & (1<<i)) {
uint64_t ns = mDelays[i];
wanted = wanted < ns ? wanted : ns;
}
}
short delay = int64_t(wanted) / 1000000;
if (ioctl(dev_fd, ECS_IOCTL_APP_SET_DELAY, &delay)) {
return -errno;
}
}
return 0;
}
int AkmSensor::loadAKMLibrary()
{
mLibAKM = dlopen("libakm.so", RTLD_NOW);

@ -50,11 +50,13 @@ public:
private:
int loadAKMLibrary();
int update_delay();
void *mLibAKM;
uint32_t mEnabled;
uint32_t mPendingMask;
InputEventCircularReader mInputReader;
sensors_event_t mPendingEvents[numSensors];
uint64_t mDelays[numSensors];
};
/*****************************************************************************/

Loading…
Cancel
Save