From 8cb93ae7c3ddf2faa7659c2ad6bb1195b170062f Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Mon, 17 Oct 2016 17:59:11 +1100 Subject: [PATCH] AP_BoardConfig: call PWM_SERVO_IGNORE_SAFETY on fmu as well --- libraries/AP_BoardConfig/px4_drivers.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/libraries/AP_BoardConfig/px4_drivers.cpp b/libraries/AP_BoardConfig/px4_drivers.cpp index e9555238b7..989f0e9fa7 100644 --- a/libraries/AP_BoardConfig/px4_drivers.cpp +++ b/libraries/AP_BoardConfig/px4_drivers.cpp @@ -138,9 +138,22 @@ void AP_BoardConfig::px4_setup_safety() // setup channels to ignore the armed state int px4io_fd = open("/dev/px4io", 0); if (px4io_fd != -1) { - if (ioctl(px4io_fd, PWM_SERVO_IGNORE_SAFETY, (uint16_t)(0x0000FFFF & px4.ignore_safety_channels)) != 0) { + if (ioctl(px4io_fd, PWM_SERVO_IGNORE_SAFETY, (uint16_t)px4.ignore_safety_channels) != 0) { hal.console->printf("IGNORE_SAFETY failed\n"); } + } + int px4fmu_fd = open("/dev/px4fmu", 0); + if (px4fmu_fd != -1) { + uint16_t mask = px4.ignore_safety_channels; + if (px4io_fd != -1) { + mask >>= 8; + } + if (ioctl(px4io_fd, PWM_SERVO_IGNORE_SAFETY, (uint16_t)mask) != 0) { + hal.console->printf("IGNORE_SAFETY failed\n"); + } + close(px4fmu_fd); + } + if (px4io_fd != -1) { close(px4io_fd); } #endif