aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLorenz Meier <lm@inf.ethz.ch>2014-01-09 08:42:40 +0100
committerLorenz Meier <lm@inf.ethz.ch>2014-01-09 08:42:40 +0100
commitc1ecdadd9ba70c909e153040b7698d50d7e7dfeb (patch)
tree0ea73ab2cc7a029c97a32f2987960c95446a204d
parentc463fde0b95eb07a5f2792032d24fbda8626b808 (diff)
parent902fcf44c90d0553ece2bc524a3f07c6a69e5504 (diff)
downloadpx4-firmware-c1ecdadd9ba70c909e153040b7698d50d7e7dfeb.tar.gz
px4-firmware-c1ecdadd9ba70c909e153040b7698d50d7e7dfeb.tar.bz2
px4-firmware-c1ecdadd9ba70c909e153040b7698d50d7e7dfeb.zip
Merge branch 'master' of github.com:PX4/Firmware
-rw-r--r--nuttx-configs/px4fmu-v2/nsh/defconfig2
-rw-r--r--src/systemcmds/tests/test_file.c50
2 files changed, 50 insertions, 2 deletions
diff --git a/nuttx-configs/px4fmu-v2/nsh/defconfig b/nuttx-configs/px4fmu-v2/nsh/defconfig
index 8a282693f..c0ed11a62 100644
--- a/nuttx-configs/px4fmu-v2/nsh/defconfig
+++ b/nuttx-configs/px4fmu-v2/nsh/defconfig
@@ -302,7 +302,7 @@ CONFIG_USART2_RXDMA=y
CONFIG_USART3_RXDMA=y
# CONFIG_UART4_RS485 is not set
CONFIG_UART4_RXDMA=y
-# CONFIG_UART5_RXDMA is not set
+CONFIG_UART5_RXDMA=y
# CONFIG_USART6_RS485 is not set
CONFIG_USART6_RXDMA=y
# CONFIG_UART7_RS485 is not set
diff --git a/src/systemcmds/tests/test_file.c b/src/systemcmds/tests/test_file.c
index 798724cf1..cdb0b0337 100644
--- a/src/systemcmds/tests/test_file.c
+++ b/src/systemcmds/tests/test_file.c
@@ -38,6 +38,7 @@
*/
#include <sys/stat.h>
+#include <poll.h>
#include <dirent.h>
#include <stdio.h>
#include <stddef.h>
@@ -51,6 +52,38 @@
#include "tests.h"
+int check_user_abort();
+
+int check_user_abort() {
+ /* check if user wants to abort */
+ char c;
+
+ struct pollfd fds;
+ int ret;
+ fds.fd = 0; /* stdin */
+ fds.events = POLLIN;
+ ret = poll(&fds, 1, 0);
+
+ if (ret > 0) {
+
+ read(0, &c, 1);
+
+ switch (c) {
+ case 0x03: // ctrl-c
+ case 0x1b: // esc
+ case 'c':
+ case 'q':
+ {
+ warnx("Test aborted.");
+ return OK;
+ /* not reached */
+ }
+ }
+ }
+
+ return 1;
+}
+
int
test_file(int argc, char *argv[])
{
@@ -108,6 +141,9 @@ test_file(int argc, char *argv[])
fsync(fd);
//perf_end(wperf);
+ if (!check_user_abort())
+ return OK;
+
}
end = hrt_absolute_time();
@@ -142,6 +178,9 @@ test_file(int argc, char *argv[])
errx(1, "ABORTING FURTHER COMPARISON DUE TO ERROR");
}
+ if (!check_user_abort())
+ return OK;
+
}
/*
@@ -152,7 +191,7 @@ test_file(int argc, char *argv[])
int ret = unlink("/fs/microsd/testfile");
fd = open("/fs/microsd/testfile", O_TRUNC | O_WRONLY | O_CREAT);
- warnx("testing aligned writes - please wait..");
+ warnx("testing aligned writes - please wait.. (CTRL^C to abort)");
start = hrt_absolute_time();
for (unsigned i = 0; i < iterations; i++) {
@@ -162,6 +201,9 @@ test_file(int argc, char *argv[])
err(1, "WRITE ERROR!");
}
+ if (!check_user_abort())
+ return OK;
+
}
fsync(fd);
@@ -190,6 +232,9 @@ test_file(int argc, char *argv[])
align_read_ok = false;
break;
}
+
+ if (!check_user_abort())
+ return OK;
}
if (!align_read_ok) {
@@ -228,6 +273,9 @@ test_file(int argc, char *argv[])
if (unalign_read_err_count > 10)
break;
}
+
+ if (!check_user_abort())
+ return OK;
}
if (!unalign_read_ok) {