diff options
author | Lorenz Meier <lm@inf.ethz.ch> | 2014-02-11 08:24:18 +0100 |
---|---|---|
committer | Lorenz Meier <lm@inf.ethz.ch> | 2014-02-11 08:24:18 +0100 |
commit | 1b978293d9cce0ddd49299ac893864fea27ae491 (patch) | |
tree | 78e6e03a233a5addc6be6fd7703438076e3a2682 /src/modules | |
parent | 268f3d757f264fcd1c2217a41d5fa480e0c91a8f (diff) | |
parent | 0388d9adefb33c98f1e4350e3f2ed59a7fdd5359 (diff) | |
download | px4-firmware-1b978293d9cce0ddd49299ac893864fea27ae491.tar.gz px4-firmware-1b978293d9cce0ddd49299ac893864fea27ae491.tar.bz2 px4-firmware-1b978293d9cce0ddd49299ac893864fea27ae491.zip |
Merged master into beta
Diffstat (limited to 'src/modules')
-rw-r--r-- | src/modules/commander/state_machine_helper.cpp | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/modules/commander/state_machine_helper.cpp b/src/modules/commander/state_machine_helper.cpp index e5d77b246..31955d3e5 100644 --- a/src/modules/commander/state_machine_helper.cpp +++ b/src/modules/commander/state_machine_helper.cpp @@ -42,6 +42,8 @@ #include <unistd.h> #include <stdint.h> #include <stdbool.h> +#include <dirent.h> +#include <fcntl.h> #include <uORB/uORB.h> #include <uORB/topics/vehicle_status.h> @@ -50,6 +52,7 @@ #include <systemlib/param/param.h> #include <systemlib/err.h> #include <drivers/drv_hrt.h> +#include <drivers/drv_device.h> #include <mavlink/mavlink_log.h> #include "state_machine_helper.h" @@ -332,6 +335,33 @@ int hil_state_transition(hil_state_t new_state, int status_pub, struct vehicle_s mavlink_log_critical(mavlink_fd, "Switched to ON hil state"); valid_transition = true; + + // Disable publication of all attached sensors + + /* list directory */ + DIR *d; + struct dirent *direntry; + d = opendir("/dev"); + if (d) { + + while ((direntry = readdir(d)) != NULL) { + + int sensfd = ::open(direntry->d_name, 0); + int block_ret = ::ioctl(sensfd, DEVIOCSPUBBLOCK, 0); + close(sensfd); + + printf("Disabling %s\n: %s", direntry->d_name, (!block_ret) ? "OK" : "FAIL"); + } + + closedir(d); + + warnx("directory listing ok (FS mounted and readable)"); + + } else { + /* failed opening dir */ + warnx("FAILED LISTING DEVICE ROOT DIRECTORY"); + return 1; + } } break; |