diff options
Diffstat (limited to 'libsensors_iio/src/SWSensorBase.cpp')
-rw-r--r-- | libsensors_iio/src/SWSensorBase.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/libsensors_iio/src/SWSensorBase.cpp b/libsensors_iio/src/SWSensorBase.cpp index 0acd26d..e4db3c6 100644 --- a/libsensors_iio/src/SWSensorBase.cpp +++ b/libsensors_iio/src/SWSensorBase.cpp @@ -126,6 +126,8 @@ int SWSensorBaseWithPollrate::SetDelay(int handle, int64_t period_ns, int64_t ti temp_real_pollrate = GetMinPeriod(); } + last_data_timestamp = GetTimestamp(); + return 0; } @@ -136,13 +138,13 @@ void SWSensorBaseWithPollrate::WriteDataToPipe() if (!GetStatusOfHandle(sensor_t_data.handle)) return; - if (sensor_event.timestamp >= (last_data_timestamp + real_pollrate)) { + if (sensor_event.timestamp >= last_data_timestamp) { err = write(android_pipe_fd, &sensor_event, sizeof(sensor_event)); if (err < 0) { ALOGE("%s: Failed to write sensor data to pipe.", android_name); return; } - last_data_timestamp = sensor_event.timestamp; - } + } else + ALOGE("Timestamp out of order, event from type=%d dropped", sensor_event.type); } |