From 77cea8844f441e086f0035d5e084ef2b85299c87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beat=20K=C3=BCng?= Date: Mon, 28 May 2018 16:37:28 +0200 Subject: [PATCH] ROMFS: fix SYS_USE_IO==0 When SYS_USE_IO was disabled, px4io would not start and thus there was no RC. SYS_USE_IO=0 is interesting on Quads to avoid the IO and reduce output latency. Tested on Pixhawk 1 and Pixhawk 4 --- ROMFS/px4fmu_common/init.d/rc.interface | 5 ++ ROMFS/px4fmu_common/init.d/rcS | 83 ++++++++++++------------- 2 files changed, 45 insertions(+), 43 deletions(-) diff --git a/ROMFS/px4fmu_common/init.d/rc.interface b/ROMFS/px4fmu_common/init.d/rc.interface index 15859d2301..9b4617836d 100644 --- a/ROMFS/px4fmu_common/init.d/rc.interface +++ b/ROMFS/px4fmu_common/init.d/rc.interface @@ -125,6 +125,11 @@ then set MIXER_AUX none fi +if [ $USE_IO == no ] +then + set MIXER_AUX none +fi + if [ $MIXER_AUX != none -a $AUX_MODE != none ] then # diff --git a/ROMFS/px4fmu_common/init.d/rcS b/ROMFS/px4fmu_common/init.d/rcS index 038edf79b7..0d345029bf 100644 --- a/ROMFS/px4fmu_common/init.d/rcS +++ b/ROMFS/px4fmu_common/init.d/rcS @@ -321,60 +321,57 @@ then set IO_PRESENT no - if [ $USE_IO == yes ] + # + # Check if PX4IO present and update firmware if needed + # + if [ -f /etc/extras/px4io-v2.bin ] then - # - # Check if PX4IO present and update firmware if needed - # - if [ -f /etc/extras/px4io-v2.bin ] + set IO_FILE /etc/extras/px4io-v2.bin + + if px4io checkcrc ${IO_FILE} then - set IO_FILE /etc/extras/px4io-v2.bin + set IO_PRESENT yes + else + tone_alarm MLL32CP8MB - if px4io checkcrc ${IO_FILE} + if px4io start then - set IO_PRESENT yes - else - tone_alarm MLL32CP8MB - - if px4io start + # try to safe px4 io so motor outputs dont go crazy + if px4io safety_on then - # try to safe px4 io so motor outputs dont go crazy - if px4io safety_on - then - # success! no-op - else - # px4io did not respond to the safety command - px4io stop - fi - fi - - if px4io forceupdate 14662 ${IO_FILE} - then - usleep 10000 - if px4io checkcrc ${IO_FILE} - then - echo "PX4IO CRC OK after updating" >> $LOG_FILE - tone_alarm MLL8CDE - - set IO_PRESENT yes - else - echo "PX4IO update failed" >> $LOG_FILE - tone_alarm ${TUNE_ERR} - fi + # success! no-op else - echo "PX4IO update failed" >> $LOG_FILE - tune_control play -m ${TUNE_ERR} + # px4io did not respond to the safety command + px4io stop fi fi - fi - unset IO_FILE - if [ $IO_PRESENT == no ] - then - echo "PX4IO not found" >> $LOG_FILE - tune_control play -m ${TUNE_ERR} + if px4io forceupdate 14662 ${IO_FILE} + then + usleep 10000 + if px4io checkcrc ${IO_FILE} + then + echo "PX4IO CRC OK after updating" >> $LOG_FILE + tone_alarm MLL8CDE + + set IO_PRESENT yes + else + echo "PX4IO update failed" >> $LOG_FILE + tone_alarm ${TUNE_ERR} + fi + else + echo "PX4IO update failed" >> $LOG_FILE + tune_control play -m ${TUNE_ERR} + fi fi fi + unset IO_FILE + + if [ $USE_IO == yes -a $IO_PRESENT == no ] + then + echo "PX4IO not found" >> $LOG_FILE + tune_control play -m ${TUNE_ERR} + fi # # Set default output if not set