aboutsummaryrefslogtreecommitdiff
path: root/src/systemcmds
diff options
context:
space:
mode:
authorLorenz Meier <lm@inf.ethz.ch>2013-08-19 15:02:15 +0200
committerLorenz Meier <lm@inf.ethz.ch>2013-08-19 15:02:15 +0200
commit1ae5a6ac1d3da98e5612b77ff28afa86669c287f (patch)
tree4001aac07555cc58bb3843e505babe5377334010 /src/systemcmds
parent9610f7a0d7ba7abf7d88c4b3096285e3da68e04d (diff)
downloadpx4-firmware-1ae5a6ac1d3da98e5612b77ff28afa86669c287f.tar.gz
px4-firmware-1ae5a6ac1d3da98e5612b77ff28afa86669c287f.tar.bz2
px4-firmware-1ae5a6ac1d3da98e5612b77ff28afa86669c287f.zip
Minimized nshterm flags, fixed some pretty stupid non-standard coding in top, now behaving with two shell instances as expected
Diffstat (limited to 'src/systemcmds')
-rw-r--r--src/systemcmds/nshterm/nshterm.c2
-rw-r--r--src/systemcmds/top/top.c18
2 files changed, 11 insertions, 9 deletions
diff --git a/src/systemcmds/nshterm/nshterm.c b/src/systemcmds/nshterm/nshterm.c
index 2341068a2..41d108ffc 100644
--- a/src/systemcmds/nshterm/nshterm.c
+++ b/src/systemcmds/nshterm/nshterm.c
@@ -91,7 +91,7 @@ nshterm_main(int argc, char *argv[])
}
/* Set ONLCR flag (which appends a CR for every LF) */
- uart_config.c_oflag |= (ONLCR | OPOST | OCRNL);
+ uart_config.c_oflag |= (ONLCR | OPOST/* | OCRNL*/);
if ((termios_state = tcsetattr(fd, TCSANOW, &uart_config)) < 0) {
warnx("ERROR setting baudrate / termios config for %s (tcsetattr)\n", argv[1]);
diff --git a/src/systemcmds/top/top.c b/src/systemcmds/top/top.c
index 0d064a05e..1ca3fc928 100644
--- a/src/systemcmds/top/top.c
+++ b/src/systemcmds/top/top.c
@@ -107,9 +107,6 @@ top_main(void)
float interval_time_ms_inv = 0.f;
- /* Open console directly to grab CTRL-C signal */
- int console = open("/dev/console", O_NONBLOCK | O_RDONLY | O_NOCTTY);
-
/* clear screen */
printf("\033[2J");
@@ -256,17 +253,24 @@ top_main(void)
interval_start_time = new_time;
/* Sleep 200 ms waiting for user input five times ~ 1s */
- /* XXX use poll ... */
for (int k = 0; k < 5; k++) {
char c;
- if (read(console, &c, 1) == 1) {
+ 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':
- close(console);
return OK;
/* not reached */
}
@@ -278,7 +282,5 @@ top_main(void)
new_time = hrt_absolute_time();
}
- close(console);
-
return OK;
}