diff options
Diffstat (limited to 'libsensors/OrientationSensor.cpp')
-rw-r--r-- | libsensors/OrientationSensor.cpp | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/libsensors/OrientationSensor.cpp b/libsensors/OrientationSensor.cpp index 3fb5d29..2925ba7 100644 --- a/libsensors/OrientationSensor.cpp +++ b/libsensors/OrientationSensor.cpp @@ -103,12 +103,24 @@ bool OrientationSensor::hasPendingEvents() const { int OrientationSensor::setDelay(int32_t handle, int64_t ns) { - LOGD("OrientationSensor::~setDelay(%d, %d)", handle, ns); - /* FIXME needs changes to the kernel driver. - We need to add a IOCTL that can set the samplingrate - the driver in ther kernel supports this allready only need - to add a IOCTL on both sides for that*/ - return 0; + LOGD("OrientationSensor::~setDelay(%d, %lld)", handle, ns); + + int fd; + + if (ns < 10000000) { + ns = 10000000; // Minimum on stock + } + + strcpy(&input_sysfs_path[input_sysfs_path_len], "delay"); + fd = open(input_sysfs_path, O_RDWR); + if (fd >= 0) { + char buf[80]; + sprintf(buf, "%lld", ns / 10000000 * 10); // Some flooring to match stock value + write(fd, buf, strlen(buf)+1); + close(fd); + return 0; + } + return -1; } |