diff options
author | Julian Oes <julian@oes.ch> | 2013-07-18 14:42:08 +0200 |
---|---|---|
committer | Julian Oes <julian@oes.ch> | 2013-07-18 14:42:08 +0200 |
commit | f5f7b3f6dd1c0d48ffb0aa8c78435715a4ce3f5e (patch) | |
tree | a9fd8001ec16c34bc6644fc19535e3bfb5c76979 /src/drivers/lsm303d | |
parent | ad8fc7e61ed9f56b8c41eb0f3e9ee9226c0479c4 (diff) | |
download | px4-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.cpp | 17 |
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 */ |