summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNick Vaccaro <nvaccaro@google.com>2015-03-30 18:43:03 -0700
committerNick Vaccaro <nvaccaro@google.com>2015-05-18 20:49:49 +0000
commita38914db2fd5b3192bfa8fbd46269aa860d7937b (patch)
tree6c138fa52d0c4bd3b99cc3a903534f6b23854305
parent9b7ebb5143dd692c20fc9348ae999450133dad57 (diff)
downloadandroid_hardware_invensense-a38914db2fd5b3192bfa8fbd46269aa860d7937b.tar.gz
android_hardware_invensense-a38914db2fd5b3192bfa8fbd46269aa860d7937b.tar.bz2
android_hardware_invensense-a38914db2fd5b3192bfa8fbd46269aa860d7937b.zip
Invensense: 6515: adjust minDelay and maxDelay values
Adjust minDelay and maxDelay settings for Android Wear devices. Bug: 19575833 Change-Id: Ia8cc54a13865177a68a2d18108e1f6cf5fbe7ea6
-rw-r--r--6515/libsensors_iio/MPLSensor.cpp30
-rw-r--r--6515/libsensors_iio/sensors.h108
-rwxr-xr-x6515/libsensors_iio/sensors_mpl.cpp6
3 files changed, 78 insertions, 66 deletions
diff --git a/6515/libsensors_iio/MPLSensor.cpp b/6515/libsensors_iio/MPLSensor.cpp
index 96f38fc..1cfab7a 100644
--- a/6515/libsensors_iio/MPLSensor.cpp
+++ b/6515/libsensors_iio/MPLSensor.cpp
@@ -2909,6 +2909,18 @@ int MPLSensor::scHandler(sensors_event_t* s)
LOGV_IF(HANDLER_DATA, "HAL:sc data: %lld - %lld - %d",
s->step_counter, s->timestamp, update);
#endif
+
+ if (s->timestamp == 0 && update) {
+ struct timespec ts;
+ clock_gettime(CLOCK_MONOTONIC, &ts);
+ s->timestamp = (int64_t) ts.tv_sec * 1000000000 + ts.tv_nsec;
+ // workaround for some platform which has gap between monotonic clock
+ // and Android SystemClock.
+ // Subtract 100ms not to point the future for SystemClock.
+ // s->timestamp -= 100000000LL;
+ LOGV_IF(0, "HAL:sc timestamp %lld", s->timestamp);
+ }
+
return update;
}
@@ -4975,18 +4987,6 @@ void MPLSensor::fillAccel(const char* accel, struct sensor_t *list)
list[Accelerometer].power = ACCEL_MPU6500_POWER;
list[Accelerometer].minDelay = ACCEL_MPU6500_MINDELAY;
return;
- } else if (accel != NULL && strcmp(accel, "MPU6500") == 0) {
- list[Accelerometer].maxRange = ACCEL_MPU6500_RANGE;
- list[Accelerometer].resolution = ACCEL_MPU6500_RESOLUTION;
- list[Accelerometer].power = ACCEL_MPU6500_POWER;
- list[Accelerometer].minDelay = ACCEL_MPU6500_MINDELAY;
- return;
- } else if (accel != NULL && strcmp(accel, "MPU6500") == 0) {
- list[Accelerometer].maxRange = ACCEL_MPU6500_RANGE;
- list[Accelerometer].resolution = ACCEL_MPU6500_RESOLUTION;
- list[Accelerometer].power = ACCEL_MPU6500_POWER;
- list[Accelerometer].minDelay = ACCEL_MPU6500_MINDELAY;
- return;
} else if (accel != NULL && strcmp(accel, "MPU9150") == 0) {
list[Accelerometer].maxRange = ACCEL_MPU9150_RANGE;
list[Accelerometer].resolution = ACCEL_MPU9150_RESOLUTION;
@@ -5759,8 +5759,14 @@ int MPLSensor::batch(int handle, int flags, int64_t period_ns, int64_t timeout)
// limit all rates to reasonable ones */
if (period_ns < 5000000LL) {
period_ns = 5000000LL;
+ } else if (period_ns > 200000000LL) {
+ period_ns = 200000000LL;
}
+ LOGV_IF(PROCESS_VERBOSE,
+ "HAL:batch after applying upper and lower limit: %llu ns, (%.2f Hz)",
+ period_ns, 1000000000.f / period_ns);
+
switch (what) {
case Gyro:
case RawGyro:
diff --git a/6515/libsensors_iio/sensors.h b/6515/libsensors_iio/sensors.h
index e299228..4ea3e4d 100644
--- a/6515/libsensors_iio/sensors.h
+++ b/6515/libsensors_iio/sensors.h
@@ -106,67 +106,77 @@ enum {
/*****************************************************************************/
/*
- Android KitKat
+ Android Lollipop
Populate sensor_t structure according to hardware sensors.h
- { name, vendor, version, handle, type, maxRange, resolution, power, minDelay,
- fifoReservedEventCount, fifoMaxEventCount, reserved[] }
+ {name, vendor, version, handle,
+ type, maxRange, resolution, power, minDelay, fifoReservedEventCount, fifoMaxEventCount,
+ stringType, requiredPermission, maxDelay, flags, reserved[]}
*/
#if defined ANDROID_LOLLIPOP
static struct sensor_t sBaseSensorList[] =
{
- {(const char *)("MPL Gyroscope"), (const char *)("Invensense"), 1,
- SENSORS_GYROSCOPE_HANDLE,
- SENSOR_TYPE_GYROSCOPE, 2000.0f, 1.0f, 0.5f, 10000, 0, 124, 0,0,0,0,0,0},
- {"MPL Raw Gyroscope", "Invensense", 1,
- SENSORS_RAW_GYROSCOPE_HANDLE,
- SENSOR_TYPE_GYROSCOPE_UNCALIBRATED, 2000.0f, 1.0f, 0.5f, 10000, 0, 124, 0,0,0,0,0,0},
- {"MPL Accelerometer", "Invensense", 1,
- SENSORS_ACCELERATION_HANDLE,
- SENSOR_TYPE_ACCELEROMETER, 10240.0f, 1.0f, 0.5f, 10000, 0, 124, 0,0,0,0,0,0},
- {"MPL Magnetic Field", "Invensense", 1,
- SENSORS_MAGNETIC_FIELD_HANDLE,
- SENSOR_TYPE_MAGNETIC_FIELD, 10240.0f, 1.0f, 0.5f, 10000, 0, 124, 0,0,0,0,0,0},
- {"MPL Raw Magnetic Field", "Invensense", 1,
- SENSORS_RAW_MAGNETIC_FIELD_HANDLE,
- SENSOR_TYPE_MAGNETIC_FIELD_UNCALIBRATED, 10240.0f, 1.0f, 0.5f, 10000, 0, 124, 0,0,0,0,0,0},
+ {"MPL Gyroscope", "Invensense", 1, SENSORS_GYROSCOPE_HANDLE,
+ SENSOR_TYPE_GYROSCOPE, 2000.0f, 1.0f, 0.5f, 10000, 0, 124,
+ SENSOR_STRING_TYPE_GYROSCOPE, "", 200000, SENSOR_FLAG_CONTINUOUS_MODE, {}},
+ {"MPL Raw Gyroscope", "Invensense", 1, SENSORS_RAW_GYROSCOPE_HANDLE,
+ SENSOR_TYPE_GYROSCOPE_UNCALIBRATED, 2000.0f, 1.0f, 0.5f, 10000, 0, 124,
+ SENSOR_STRING_TYPE_GYROSCOPE_UNCALIBRATED, "", 200000, SENSOR_FLAG_CONTINUOUS_MODE, {}},
+ {"MPL Accelerometer", "Invensense", 1, SENSORS_ACCELERATION_HANDLE,
+ SENSOR_TYPE_ACCELEROMETER, 10240.0f, 1.0f, 0.5f, 10000, 0, 124,
+ SENSOR_STRING_TYPE_ACCELEROMETER, "", 200000, SENSOR_FLAG_CONTINUOUS_MODE, {}},
+ {"MPL Magnetic Field", "Invensense", 1, SENSORS_MAGNETIC_FIELD_HANDLE,
+ SENSOR_TYPE_MAGNETIC_FIELD, 10240.0f, 1.0f, 0.5f, 10000, 0, 124,
+ SENSOR_STRING_TYPE_MAGNETIC_FIELD, "", 200000, SENSOR_FLAG_CONTINUOUS_MODE, {}},
+ {"MPL Raw Magnetic Field", "Invensense", 1, SENSORS_RAW_MAGNETIC_FIELD_HANDLE,
+ SENSOR_TYPE_MAGNETIC_FIELD_UNCALIBRATED, 10240.0f, 1.0f, 0.5f, 10000, 0, 124,
+ SENSOR_STRING_TYPE_MAGNETIC_FIELD_UNCALIBRATED, "", 200000, SENSOR_FLAG_CONTINUOUS_MODE, {}},
#ifdef ENABLE_PRESSURE
- {"MPL Pressure", "Invensense", 1,
- SENSORS_PRESSURE_HANDLE,
- SENSOR_TYPE_PRESSURE, 10240.0f, 1.0f, 0.5f, 10000, 0, 165, 0,0,0,0,0,0},
+ {"MPL Pressure", "Invensense", 1, SENSORS_PRESSURE_HANDLE,
+ SENSOR_TYPE_PRESSURE, 10240.0f, 1.0f, 0.5f, 10000, 0, 165,
+ SENSOR_STRING_TYPE_PRESSURE, "", 200000, SENSOR_FLAG_CONTINUOUS_MODE, {}},
#endif
- {"MPL Orientation", "Invensense", 1,
- SENSORS_ORIENTATION_HANDLE,
- SENSOR_TYPE_ORIENTATION, 360.0f, 1.0f, 9.7f, 10000, 0, 0, 0,0,0,0,0,0},
- {"MPL Rotation Vector", "Invensense", 1,
- SENSORS_ROTATION_VECTOR_HANDLE,
- SENSOR_TYPE_ROTATION_VECTOR, 10240.0f, 1.0f, 0.5f, 10000, 0, 0, 0,0,0,0,0,0},
- {"MPL Game Rotation Vector", "Invensense", 1,
- SENSORS_GAME_ROTATION_VECTOR_HANDLE,
- SENSOR_TYPE_GAME_ROTATION_VECTOR, 10240.0f, 1.0f, 0.5f, 10000, 0, 62, 0,0,0,0,0,0},
- {"MPL Linear Acceleration", "Invensense", 1,
- SENSORS_LINEAR_ACCEL_HANDLE,
- SENSOR_TYPE_LINEAR_ACCELERATION, 10240.0f, 1.0f, 0.5f, 10000, 0, 0, 0,0,0,0,0,0},
- {"MPL Gravity", "Invensense", 1,
- SENSORS_GRAVITY_HANDLE,
- SENSOR_TYPE_GRAVITY, 10240.0f, 1.0f, 0.5f, 10000, 0, 0, 0,0,0,0,0,0},
- {"MPL Significant Motion", "Invensense", 1,
- SENSORS_SIGNIFICANT_MOTION_HANDLE,
- SENSOR_TYPE_SIGNIFICANT_MOTION, 100.0f, 1.0f, 1.1f, 0, 0, 0, 0,0,0,0,0,0},
- {"MPL Step Detector", "Invensense", 1,
- SENSORS_PEDOMETER_HANDLE,
- SENSOR_TYPE_STEP_DETECTOR, 100.0f, 1.0f, 1.1f, 0, 0, 124, 0,0,0,0,0,0},
- {"MPL Step Counter", "Invensense", 1,
- SENSORS_STEP_COUNTER_HANDLE,
- SENSOR_TYPE_STEP_COUNTER, 100.0f, 1.0f, 1.1f, 0, 0, 0, 0,0,0,0,0,0},
+ {"MPL Orientation", "Invensense", 1, SENSORS_ORIENTATION_HANDLE,
+ SENSOR_TYPE_ORIENTATION, 360.0f, 1.0f, 9.7f, 10000, 0, 0,
+ SENSOR_STRING_TYPE_ORIENTATION, "", 0, SENSOR_FLAG_CONTINUOUS_MODE, {}},
+ {"MPL Rotation Vector", "Invensense", 1, SENSORS_ROTATION_VECTOR_HANDLE,
+ SENSOR_TYPE_ROTATION_VECTOR, 10240.0f, 1.0f, 0.5f, 10000, 0, 0,
+ SENSOR_STRING_TYPE_ROTATION_VECTOR, "", 0, SENSOR_FLAG_CONTINUOUS_MODE, {}},
+ {"MPL Game Rotation Vector", "Invensense", 1, SENSORS_GAME_ROTATION_VECTOR_HANDLE,
+ SENSOR_TYPE_GAME_ROTATION_VECTOR, 10240.0f, 1.0f, 0.5f, 10000, 0, 62,
+ SENSOR_STRING_TYPE_GAME_ROTATION_VECTOR, "", 200000, SENSOR_FLAG_CONTINUOUS_MODE, {}},
+ {"MPL Linear Acceleration", "Invensense", 1, SENSORS_LINEAR_ACCEL_HANDLE,
+ SENSOR_TYPE_LINEAR_ACCELERATION, 10240.0f, 1.0f, 0.5f, 10000, 0, 0,
+ SENSOR_STRING_TYPE_LINEAR_ACCELERATION, "", 0, SENSOR_FLAG_CONTINUOUS_MODE, {}},
+ {"MPL Gravity", "Invensense", 1, SENSORS_GRAVITY_HANDLE,
+ SENSOR_TYPE_GRAVITY, 10240.0f, 1.0f, 0.5f, 10000, 0, 0,
+ SENSOR_STRING_TYPE_GRAVITY, "", 0, SENSOR_FLAG_CONTINUOUS_MODE, {}},
+ {"MPL Significant Motion", "Invensense", 1, SENSORS_SIGNIFICANT_MOTION_HANDLE,
+ SENSOR_TYPE_SIGNIFICANT_MOTION, 100.0f, 1.0f, 1.1f, 0, 0, 0,
+ SENSOR_STRING_TYPE_SIGNIFICANT_MOTION, "", 0,
+ SENSOR_FLAG_ONE_SHOT_MODE | SENSOR_FLAG_WAKE_UP, {}},
+ {"MPL Step Detector", "Invensense", 1, SENSORS_PEDOMETER_HANDLE,
+ SENSOR_TYPE_STEP_DETECTOR, 100.0f, 1.0f, 1.1f, 0, 0, 124,
+ SENSOR_STRING_TYPE_STEP_DETECTOR, "", 0, SENSOR_FLAG_SPECIAL_REPORTING_MODE, {}},
+ {"MPL Step Counter", "Invensense", 1, SENSORS_STEP_COUNTER_HANDLE,
+ SENSOR_TYPE_STEP_COUNTER, 100.0f, 1.0f, 1.1f, 0, 0, 0,
+ SENSOR_STRING_TYPE_STEP_COUNTER, "", 0, SENSOR_FLAG_ON_CHANGE_MODE, {}},
{"MPL Geomagnetic Rotation Vector", "Invensense", 1,
SENSORS_GEOMAGNETIC_ROTATION_VECTOR_HANDLE,
- SENSOR_TYPE_GEOMAGNETIC_ROTATION_VECTOR, 10240.0f, 1.0f, 0.5f, 5000, 0, 0, 0,0,0,0,0,0},
+ SENSOR_TYPE_GEOMAGNETIC_ROTATION_VECTOR, 10240.0f, 1.0f, 0.5f, 5000, 0, 0,
+ SENSOR_STRING_TYPE_GEOMAGNETIC_ROTATION_VECTOR, "", 0, SENSOR_FLAG_CONTINUOUS_MODE, {}},
#ifdef ENABLE_DMP_SCREEN_AUTO_ROTATION
- {"MPL Screen Orientation", "Invensense ", 1,
- SENSORS_SCREEN_ORIENTATION_HANDLE,
- SENSOR_TYPE_SCREEN_ORIENTATION, 100.0f, 1.0f, 1.1f, 0, 0, 0, 0,0,0,0,0,0},
+ {"MPL Screen Orientation", "Invensense ", 1, SENSORS_SCREEN_ORIENTATION_HANDLE,
+ SENSOR_TYPE_SCREEN_ORIENTATION, 100.0f, 1.0f, 1.1f, 0, 0, 0,
+ SENSOR_STRING_TYPE_SCREEN_ORIENTATION, "", 0, SENSOR_FLAG_ON_CHANGE_MODE, {}},
#endif
};
+/*
+ Android KitKat
+ Populate sensor_t structure according to hardware sensors.h
+ {name, vendor, version,
+ handle,
+ type, maxRange, resolution, power, minDelay, fifoReservedEventCount, fifoMaxEventCount, reserved[]}
+*/
#elif defined ANDROID_KITKAT
static struct sensor_t sBaseSensorList[] =
{
diff --git a/6515/libsensors_iio/sensors_mpl.cpp b/6515/libsensors_iio/sensors_mpl.cpp
index 268b853..7e7b06b 100755
--- a/6515/libsensors_iio/sensors_mpl.cpp
+++ b/6515/libsensors_iio/sensors_mpl.cpp
@@ -438,18 +438,14 @@ static int open_sensors(const struct hw_module_t* module, const char* id,
memset(&dev->device, 0, sizeof(sensors_poll_device_1));
dev->device.common.tag = HARDWARE_DEVICE_TAG;
-#if defined ANDROID_KITKAT || defined ANDROID_LOLLIPOP
dev->device.common.version = SENSORS_DEVICE_API_VERSION_1_3;
dev->device.flush = poll__flush;
-#else
- dev->device.common.version = SENSORS_DEVICE_API_VERSION_1_0;
-#endif
dev->device.common.module = const_cast<hw_module_t*>(module);
dev->device.common.close = poll__close;
dev->device.activate = poll__activate;
dev->device.setDelay = poll__setDelay;
dev->device.poll = poll__poll;
- dev->device.batch = poll__batch;
+ dev->device.batch = poll__batch;
*device = &dev->device.common;
status = 0;