diff options
Diffstat (limited to 'apps/px4/tests')
-rw-r--r-- | apps/px4/tests/Makefile | 2 | ||||
-rw-r--r-- | apps/px4/tests/test_sensors.c | 50 | ||||
-rw-r--r-- | apps/px4/tests/tests.h | 1 | ||||
-rw-r--r-- | apps/px4/tests/tests_main.c | 1 | ||||
-rw-r--r-- | apps/px4/tests/tests_param.c | 81 |
5 files changed, 111 insertions, 24 deletions
diff --git a/apps/px4/tests/Makefile b/apps/px4/tests/Makefile index ad8849454..cb1c3c618 100644 --- a/apps/px4/tests/Makefile +++ b/apps/px4/tests/Makefile @@ -37,6 +37,6 @@ APPNAME = tests PRIORITY = SCHED_PRIORITY_DEFAULT -STACKSIZE = 8096 +STACKSIZE = 12000 include $(APPDIR)/mk/app.mk diff --git a/apps/px4/tests/test_sensors.c b/apps/px4/tests/test_sensors.c index af1213711..87ea7f058 100644 --- a/apps/px4/tests/test_sensors.c +++ b/apps/px4/tests/test_sensors.c @@ -60,7 +60,7 @@ #include <arch/board/drv_bma180.h> #include <arch/board/drv_l3gd20.h> #include <arch/board/drv_hmc5883l.h> -#include <arch/board/drv_mpu6000.h> +#include <drivers/drv_accel.h> /**************************************************************************** * Pre-processor Definitions @@ -90,11 +90,11 @@ struct { const char *path; int (* test)(int argc, char *argv[]); } sensors[] = { - {"l3gd20", "/dev/l3gd20", l3gd20}, {"bma180", "/dev/bma180", bma180}, + {"mpu6000", "/dev/accel", mpu6000}, + {"l3gd20", "/dev/l3gd20", l3gd20}, {"hmc5883l", "/dev/hmc5883l", hmc5883l}, {"ms5611", "/dev/ms5611", ms5611}, - {"mpu6000", "/dev/mpu6000", mpu6000}, // {"lis331", "/dev/lis331", lis331}, {NULL, NULL, NULL} }; @@ -253,6 +253,9 @@ l3gd20(int argc, char *argv[]) static int bma180(int argc, char *argv[]) { + // XXX THIS SENSOR IS OBSOLETE + // TEST REMAINS, BUT ALWAYS RETURNS OK + printf("\tBMA180: test start\n"); fflush(stdout); @@ -264,7 +267,7 @@ bma180(int argc, char *argv[]) if (fd < 0) { printf("\tBMA180: open fail\n"); - return ERROR; + return OK; } // if (ioctl(fd, LIS331_SETRATE, LIS331_RATE_50Hz) || @@ -283,7 +286,7 @@ bma180(int argc, char *argv[]) if (ret != sizeof(buf)) { printf("\tBMA180: read1 fail (%d)\n", ret); close(fd); - return ERROR; + return OK; } else { printf("\tBMA180 values: x:%d\ty:%d\tz:%d\n", buf[0], buf[1], buf[2]); @@ -297,7 +300,7 @@ bma180(int argc, char *argv[]) if (ret != sizeof(buf)) { printf("\tBMA180: read2 fail (%d)\n", ret); close(fd); - return ERROR; + return OK; } else { printf("\tBMA180: x:%d\ty:%d\tz:%d\n", buf[0], buf[1], buf[2]); @@ -331,13 +334,13 @@ mpu6000(int argc, char *argv[]) fflush(stdout); int fd; - int16_t buf[6] = { -1, 0, -1, 0, -1, 0}; + struct accel_report buf; int ret; - fd = open("/dev/mpu6000", O_RDONLY); + fd = open("/dev/accel", O_RDONLY); if (fd < 0) { - printf("\tMPU-6000: open fail\n"); + printf("\tMPU-6000: open fail, run <mpu6000 start> first.\n"); return ERROR; } @@ -345,28 +348,28 @@ mpu6000(int argc, char *argv[]) usleep(100000); /* read data - expect samples */ - ret = read(fd, buf, sizeof(buf)); + ret = read(fd, &buf, sizeof(buf)); - if (ret != sizeof(buf)) { + if (ret < 3) { printf("\tMPU-6000: read1 fail (%d)\n", ret); return ERROR; } else { - printf("\tMPU-6000 values: acc: x:%d\ty:%d\tz:%d\tgyro: r:%d\tp:%d\ty:%d\n", buf[0], buf[1], buf[2], buf[3], buf[4], buf[5]); + printf("\tMPU-6000 values: acc: x:%8.4f\ty:%8.4f\tz:%8.4f\n", (double)buf.x, (double)buf.y, (double)buf.z);//\tgyro: r:%d\tp:%d\ty:%d\n", buf[0], buf[1], buf[2], buf[3], buf[4], buf[5]); } - /* wait at least 10ms, sensor should have data after no more than 2ms */ - usleep(100000); + // /* wait at least 10ms, sensor should have data after no more than 2ms */ + // usleep(100000); - ret = read(fd, buf, sizeof(buf)); + // ret = read(fd, buf, sizeof(buf)); - if (ret != sizeof(buf)) { - printf("\tMPU-6000: read2 fail (%d)\n", ret); - return ERROR; + // if (ret != sizeof(buf)) { + // printf("\tMPU-6000: read2 fail (%d)\n", ret); + // return ERROR; - } else { - printf("\tMPU-6000 values: acc: x:%d\ty:%d\tz:%d\tgyro: r:%d\tp:%d\ty:%d\n", buf[0], buf[1], buf[2], buf[3], buf[4], buf[5]); - } + // } else { + // printf("\tMPU-6000 values: acc: x:%d\ty:%d\tz:%d\tgyro: r:%d\tp:%d\ty:%d\n", buf[0], buf[1], buf[2], buf[3], buf[4], buf[5]); + // } /* XXX more tests here */ @@ -398,7 +401,8 @@ ms5611(int argc, char *argv[]) ret = read(fd, buf, sizeof(buf)); if (ret != sizeof(buf)) { - if ((uint8_t)ret == -EAGAIN || (uint8_t)ret == -EINPROGRESS || i < 3) { + + if ((int8_t)ret == -EAGAIN || (int8_t)ret == -EINPROGRESS) { /* waiting for device to become ready, this is not an error */ } else { printf("\tMS5611: read fail (%d)\n", ret); @@ -435,7 +439,7 @@ hmc5883l(int argc, char *argv[]) fflush(stdout); int fd; - int16_t buf[3] = {0, 0, 0}; + int16_t buf[7] = {0, 0, 0}; int ret; fd = open("/dev/hmc5883l", O_RDONLY); diff --git a/apps/px4/tests/tests.h b/apps/px4/tests/tests.h index aa6dae1e0..f2e35972f 100644 --- a/apps/px4/tests/tests.h +++ b/apps/px4/tests/tests.h @@ -95,5 +95,6 @@ extern int test_sleep(int argc, char *argv[]); extern int test_time(int argc, char *argv[]); extern int test_uart_console(int argc, char *argv[]); extern int test_jig_voltages(int argc, char *argv[]); +extern int test_param(int argc, char *argv[]); #endif /* __APPS_PX4_TESTS_H */ diff --git a/apps/px4/tests/tests_main.c b/apps/px4/tests/tests_main.c index 268e7d5f9..a4613288f 100644 --- a/apps/px4/tests/tests_main.c +++ b/apps/px4/tests/tests_main.c @@ -108,6 +108,7 @@ struct { {"perf", test_perf, OPT_NOJIGTEST, 0}, {"all", test_all, OPT_NOALLTEST | OPT_NOJIGTEST, 0}, {"jig", test_jig, OPT_NOJIGTEST | OPT_NOALLTEST, 0}, + {"param", test_param, 0, 0}, {"help", test_help, OPT_NOALLTEST | OPT_NOHELP | OPT_NOJIGTEST, 0}, {NULL, NULL, 0, 0} }; diff --git a/apps/px4/tests/tests_param.c b/apps/px4/tests/tests_param.c new file mode 100644 index 000000000..5ac9f0343 --- /dev/null +++ b/apps/px4/tests/tests_param.c @@ -0,0 +1,81 @@ +/**************************************************************************** + * + * Copyright (C) 2012 PX4 Development Team. All rights reserved. + * Author: @author Lorenz Meier <lm@inf.ethz.ch> + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/** + * @file tests_param.c + * + * Tests related to the parameter system. + */ + +#include <stdio.h> +#include "systemlib/err.h" + +#include "systemlib/param/param.h" +#include "tests.h" + +PARAM_DEFINE_INT32(test, 0x12345678); + +int +test_param(int argc, char *argv[]) +{ + param_t p; + + p = param_find("test"); + if (p == PARAM_INVALID) + errx(1, "test parameter not found"); + + param_type_t t = param_type(p); + if (t != PARAM_TYPE_INT32) + errx(1, "test parameter type mismatch (got %u)", (unsigned)t); + + int32_t val; + if (param_get(p, &val) != 0) + errx(1, "failed to read test parameter"); + if (val != 0x12345678) + errx(1, "parameter value mismatch"); + + val = 0xa5a5a5a5; + if (param_set(p, &val) != 0) + errx(1, "failed to write test parameter"); + if (param_get(p, &val) != 0) + errx(1, "failed to re-read test parameter"); + if ((uint32_t)val != 0xa5a5a5a5) + errx(1, "parameter value mismatch after write"); + + param_export(-1, false); + + warnx("parameter test PASS"); + + return 0; +} |