aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorhauptmech <hauptmech@gmail.com>2015-01-28 15:40:44 +1300
committerLorenz Meier <lm@inf.ethz.ch>2015-01-28 10:20:19 +0100
commit21d3dcb1905432e349f70012ac0a4f79e5e7935a (patch)
tree8a36e90081fc6320d614389bad93b95e8d1fa540 /src
parent5444972347606333dd61206011263e4a2e5d83e8 (diff)
downloadpx4-firmware-21d3dcb1905432e349f70012ac0a4f79e5e7935a.tar.gz
px4-firmware-21d3dcb1905432e349f70012ac0a4f79e5e7935a.tar.bz2
px4-firmware-21d3dcb1905432e349f70012ac0a4f79e5e7935a.zip
Fix config utility to work with all devices of each type, not just the primary one.
Diffstat (limited to 'src')
-rw-r--r--src/systemcmds/config/config.c70
1 files changed, 35 insertions, 35 deletions
diff --git a/src/systemcmds/config/config.c b/src/systemcmds/config/config.c
index 077bc47c9..9f13edb18 100644
--- a/src/systemcmds/config/config.c
+++ b/src/systemcmds/config/config.c
@@ -36,7 +36,7 @@
* @author Lorenz Meier <lm@inf.ethz.ch>
* @author Julian Oes <joes@student.ethz.ch>
*
- * config tool.
+ * config tool. Takes the device name as the first parameter.
*/
#include <nuttx/config.h>
@@ -71,18 +71,18 @@ int
config_main(int argc, char *argv[])
{
if (argc >= 2) {
- if (!strcmp(argv[1], "gyro")) {
- do_gyro(argc - 2, argv + 2);
- } else if (!strcmp(argv[1], "accel")) {
- do_accel(argc - 2, argv + 2);
- } else if (!strcmp(argv[1], "mag")) {
- do_mag(argc - 2, argv + 2);
+ if (!strncmp(argv[1], "/dev/gyro",9)) {
+ do_gyro(argc - 1, argv + 1);
+ } else if (!strncmp(argv[1], "/dev/accel",10)) {
+ do_accel(argc - 1, argv + 1);
+ } else if (!strncmp(argv[1], "/dev/mag",8)) {
+ do_mag(argc - 1, argv + 1);
} else {
do_device(argc - 1, argv + 1);
}
}
- errx(1, "expected a command, try 'gyro', 'accel', 'mag'");
+ errx(1, "expected a device, try '/dev/gyro', '/dev/accel', '/dev/mag'");
}
static void
@@ -133,41 +133,41 @@ do_gyro(int argc, char *argv[])
{
int fd;
- fd = open(GYRO_DEVICE_PATH, 0);
+ fd = open(argv[0], 0);
if (fd < 0) {
- warn("%s", GYRO_DEVICE_PATH);
+ warn("%s", argv[0]);
errx(1, "FATAL: no gyro found");
} else {
int ret;
- if (argc == 2 && !strcmp(argv[0], "sampling")) {
+ if (argc == 3 && !strcmp(argv[1], "sampling")) {
/* set the gyro internal sampling rate up to at least i Hz */
- ret = ioctl(fd, GYROIOCSSAMPLERATE, strtoul(argv[1], NULL, 0));
+ ret = ioctl(fd, GYROIOCSSAMPLERATE, strtoul(argv[2], NULL, 0));
if (ret)
errx(ret,"sampling rate could not be set");
- } else if (argc == 2 && !strcmp(argv[0], "rate")) {
+ } else if (argc == 3 && !strcmp(argv[1], "rate")) {
/* set the driver to poll at i Hz */
- ret = ioctl(fd, SENSORIOCSPOLLRATE, strtoul(argv[1], NULL, 0));
+ ret = ioctl(fd, SENSORIOCSPOLLRATE, strtoul(argv[2], NULL, 0));
if (ret)
errx(ret,"pollrate could not be set");
- } else if (argc == 2 && !strcmp(argv[0], "range")) {
+ } else if (argc == 3 && !strcmp(argv[1], "range")) {
/* set the range to i dps */
- ret = ioctl(fd, GYROIOCSRANGE, strtoul(argv[1], NULL, 0));
+ ret = ioctl(fd, GYROIOCSRANGE, strtoul(argv[2], NULL, 0));
if (ret)
errx(ret,"range could not be set");
- } else if (argc == 1 && !strcmp(argv[0], "check")) {
+ } else if (argc == 2 && !strcmp(argv[1], "check")) {
ret = ioctl(fd, GYROIOCSELFTEST, 0);
if (ret) {
@@ -206,41 +206,41 @@ do_mag(int argc, char *argv[])
{
int fd;
- fd = open(MAG_DEVICE_PATH, 0);
+ fd = open(argv[0], 0);
if (fd < 0) {
- warn("%s", MAG_DEVICE_PATH);
+ warn("%s", argv[0]);
errx(1, "FATAL: no magnetometer found");
} else {
int ret;
- if (argc == 2 && !strcmp(argv[0], "sampling")) {
+ if (argc == 3 && !strcmp(argv[1], "sampling")) {
/* set the mag internal sampling rate up to at least i Hz */
- ret = ioctl(fd, MAGIOCSSAMPLERATE, strtoul(argv[1], NULL, 0));
+ ret = ioctl(fd, MAGIOCSSAMPLERATE, strtoul(argv[2], NULL, 0));
if (ret)
errx(ret,"sampling rate could not be set");
- } else if (argc == 2 && !strcmp(argv[0], "rate")) {
+ } else if (argc == 3 && !strcmp(argv[1], "rate")) {
/* set the driver to poll at i Hz */
- ret = ioctl(fd, SENSORIOCSPOLLRATE, strtoul(argv[1], NULL, 0));
+ ret = ioctl(fd, SENSORIOCSPOLLRATE, strtoul(argv[2], NULL, 0));
if (ret)
errx(ret,"pollrate could not be set");
- } else if (argc == 2 && !strcmp(argv[0], "range")) {
+ } else if (argc == 3 && !strcmp(argv[1], "range")) {
/* set the range to i G */
- ret = ioctl(fd, MAGIOCSRANGE, strtoul(argv[1], NULL, 0));
+ ret = ioctl(fd, MAGIOCSRANGE, strtoul(argv[2], NULL, 0));
if (ret)
errx(ret,"range could not be set");
- } else if(argc == 1 && !strcmp(argv[0], "check")) {
+ } else if(argc == 2 && !strcmp(argv[1], "check")) {
ret = ioctl(fd, MAGIOCSELFTEST, 0);
if (ret) {
@@ -282,41 +282,41 @@ do_accel(int argc, char *argv[])
{
int fd;
- fd = open(ACCEL_DEVICE_PATH, 0);
+ fd = open(argv[0], 0);
if (fd < 0) {
- warn("%s", ACCEL_DEVICE_PATH);
+ warn("%s", argv[0]);
errx(1, "FATAL: no accelerometer found");
} else {
int ret;
- if (argc == 2 && !strcmp(argv[0], "sampling")) {
+ if (argc == 3 && !strcmp(argv[1], "sampling")) {
/* set the accel internal sampling rate up to at least i Hz */
- ret = ioctl(fd, ACCELIOCSSAMPLERATE, strtoul(argv[1], NULL, 0));
+ ret = ioctl(fd, ACCELIOCSSAMPLERATE, strtoul(argv[2], NULL, 0));
if (ret)
errx(ret,"sampling rate could not be set");
- } else if (argc == 2 && !strcmp(argv[0], "rate")) {
+ } else if (argc == 3 && !strcmp(argv[1], "rate")) {
/* set the driver to poll at i Hz */
- ret = ioctl(fd, SENSORIOCSPOLLRATE, strtoul(argv[1], NULL, 0));
+ ret = ioctl(fd, SENSORIOCSPOLLRATE, strtoul(argv[2], NULL, 0));
if (ret)
errx(ret,"pollrate could not be set");
- } else if (argc == 2 && !strcmp(argv[0], "range")) {
+ } else if (argc == 3 && !strcmp(argv[1], "range")) {
/* set the range to i G */
- ret = ioctl(fd, ACCELIOCSRANGE, strtoul(argv[1], NULL, 0));
+ ret = ioctl(fd, ACCELIOCSRANGE, strtoul(argv[2], NULL, 0));
if (ret)
errx(ret,"range could not be set");
- } else if(argc == 1 && !strcmp(argv[0], "check")) {
+ } else if(argc == 2 && !strcmp(argv[1], "check")) {
ret = ioctl(fd, ACCELIOCSELFTEST, 0);
if (ret) {