aboutsummaryrefslogtreecommitdiff
path: root/src/drivers/lsm303d
diff options
context:
space:
mode:
authorJulian Oes <julian@oes.ch>2013-07-18 14:42:08 +0200
committerJulian Oes <julian@oes.ch>2013-07-18 14:42:08 +0200
commitf5f7b3f6dd1c0d48ffb0aa8c78435715a4ce3f5e (patch)
treea9fd8001ec16c34bc6644fc19535e3bfb5c76979 /src/drivers/lsm303d
parentad8fc7e61ed9f56b8c41eb0f3e9ee9226c0479c4 (diff)
downloadpx4-firmware-f5f7b3f6dd1c0d48ffb0aa8c78435715a4ce3f5e.tar.gz
px4-firmware-f5f7b3f6dd1c0d48ffb0aa8c78435715a4ce3f5e.tar.bz2
px4-firmware-f5f7b3f6dd1c0d48ffb0aa8c78435715a4ce3f5e.zip
Added scale ioctl to LSM303D driver
Diffstat (limited to 'src/drivers/lsm303d')
-rw-r--r--src/drivers/lsm303d/lsm303d.cpp17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/drivers/lsm303d/lsm303d.cpp b/src/drivers/lsm303d/lsm303d.cpp
index ba7316e55..af7746d14 100644
--- a/src/drivers/lsm303d/lsm303d.cpp
+++ b/src/drivers/lsm303d/lsm303d.cpp
@@ -705,6 +705,23 @@ LSM303D::ioctl(struct file *filp, int cmd, unsigned long arg)
else
return -EINVAL;
+ case ACCELIOCSSCALE:
+ {
+ /* copy scale, but only if off by a few percent */
+ struct accel_scale *s = (struct accel_scale *) arg;
+ float sum = s->x_scale + s->y_scale + s->z_scale;
+ if (sum > 2.0f && sum < 4.0f) {
+ memcpy(&_accel_scale, s, sizeof(_accel_scale));
+ return OK;
+ } else {
+ return -EINVAL;
+ }
+ }
+
+ case ACCELIOCGSCALE:
+ /* copy scale out */
+ memcpy((struct accel_scale *) arg, &_accel_scale, sizeof(_accel_scale));
+ return OK;
default:
/* give it to the superclass */