aboutsummaryrefslogtreecommitdiff
path: root/ROMFS/px4fmu_common/init.d/rcS
diff options
context:
space:
mode:
Diffstat (limited to 'ROMFS/px4fmu_common/init.d/rcS')
-rwxr-xr-xROMFS/px4fmu_common/init.d/rcS221
1 files changed, 149 insertions, 72 deletions
diff --git a/ROMFS/px4fmu_common/init.d/rcS b/ROMFS/px4fmu_common/init.d/rcS
index f0ee1a0c6..8c79a035a 100755
--- a/ROMFS/px4fmu_common/init.d/rcS
+++ b/ROMFS/px4fmu_common/init.d/rcS
@@ -20,7 +20,7 @@ then
else
echo "[init] no microSD card found"
# Play SOS
- tone_alarm 2
+ tone_alarm error
fi
#
@@ -57,90 +57,167 @@ fi
if [ $MODE == autostart ]
then
-
-#
-# Start the ORB (first app to start)
-#
-uorb start
-
-#
-# Load microSD params
-#
-if ramtron start
-then
- param select /ramtron/params
- if [ -f /ramtron/params ]
+ #
+ # Start terminal
+ #
+ if sercon
then
- param load /ramtron/params
+ echo "USB connected"
+ sleep 3
+ mavlink start -d /dev/ttyACM0 -b 230400
fi
-else
- param select /fs/microsd/params
- if [ -f /fs/microsd/params ]
+
+ #
+ # Start the ORB (first app to start)
+ #
+ uorb start
+
+ #
+ # Load microSD params
+ #
+ if ramtron start
then
- param load /fs/microsd/params
+ param select /ramtron/params
+ if [ -f /ramtron/params ]
+ then
+ param load /ramtron/params
+ fi
+ else
+ param select /fs/microsd/params
+ if [ -f /fs/microsd/params ]
+ then
+ param load /fs/microsd/params
+ fi
fi
-fi
-
-#
-# Check if PX4IO Firmware should be upgraded (from Andrew Tridgell)
-#
-if [ -f /fs/microsd/px4io.bin ]
-then
- echo "PX4IO Firmware found. Checking Upgrade.."
- if cmp /fs/microsd/px4io.bin /fs/microsd/px4io.cur
+
+ #
+ # Start system state indicator
+ #
+ if rgbled start
then
- echo "No newer version, skipping upgrade."
+ echo "Using external RGB Led"
else
- echo "Loading /fs/microsd/px4io.bin"
- if px4io update /fs/microsd/px4io.bin > /fs/microsd/px4io.log
+ if blinkm start
then
- cp /fs/microsd/px4io.bin /fs/microsd/px4io.cur
- echo "Flashed /fs/microsd/px4io.bin OK" >> /fs/microsd/px4io.log
- else
- echo "Failed flashing /fs/microsd/px4io.bin" >> /fs/microsd/px4io.log
- echo "Failed to upgrade px4io firmware - check if px4io is in bootloader mode"
+ blinkm systemstate
fi
fi
-fi
-#
-# Check if auto-setup from one of the standard scripts is wanted
-# SYS_AUTOSTART = 0 means no autostart (default)
-#
-if param compare SYS_AUTOSTART 1
-then
- sh /etc/init.d/01_fmu_quad_x
-fi
-
-if param compare SYS_AUTOSTART 2
-then
- sh /etc/init.d/02_io_quad_x
-fi
-
-if param compare SYS_AUTOSTART 8
-then
- sh /etc/init.d/08_ardrone
-fi
-
-if param compare SYS_AUTOSTART 9
-then
- sh /etc/init.d/09_ardrone_flow
-fi
+ # Try to get an USB console
+ #nshterm /dev/ttyACM0 &
+
+ #
+ # Upgrade PX4IO firmware
+ #
+ if px4io detect
+ then
+ echo "PX4IO running, not upgrading"
+ else
+ echo "Attempting to upgrade PX4IO"
+ if px4io update
+ then
+ if [ -d /fs/microsd ]
+ then
+ echo "Flashed PX4IO Firmware OK" > /fs/microsd/px4io.log
+ fi
-if param compare SYS_AUTOSTART 10
-then
- sh /etc/init.d/10_io_f330
-fi
+ # Allow IO to safely kick back to app
+ usleep 200000
+ else
+ echo "No PX4IO to upgrade here"
+ fi
+ fi
+
+ #
+ # Check if auto-setup from one of the standard scripts is wanted
+ # SYS_AUTOSTART = 0 means no autostart (default)
+ #
+
+ if param compare SYS_AUTOSTART 8
+ then
+ sh /etc/init.d/08_ardrone
+ set MODE custom
+ fi
+
+ if param compare SYS_AUTOSTART 9
+ then
+ sh /etc/init.d/09_ardrone_flow
+ set MODE custom
+ fi
+
+ if param compare SYS_AUTOSTART 10
+ then
+ sh /etc/init.d/10_dji_f330
+ set MODE custom
+ fi
-if param compare SYS_AUTOSTART 30
-then
- sh /etc/init.d/30_io_camflyer
-fi
+ if param compare SYS_AUTOSTART 11
+ then
+ sh /etc/init.d/11_dji_f450
+ set MODE custom
+ fi
+
+ if param compare SYS_AUTOSTART 15
+ then
+ sh /etc/init.d/15_tbs_discovery
+ set MODE custom
+ fi
-if param compare SYS_AUTOSTART 31
-then
- sh /etc/init.d/31_io_phantom
-fi
+ if param compare SYS_AUTOSTART 16
+ then
+ sh /etc/init.d/16_3dr_iris
+ set MODE custom
+ fi
+
+ if param compare SYS_AUTOSTART 30
+ then
+ sh /etc/init.d/30_io_camflyer
+ set MODE custom
+ fi
+
+ if param compare SYS_AUTOSTART 31
+ then
+ sh /etc/init.d/31_io_phantom
+ set MODE custom
+ fi
+
+ # Start any custom extensions that might be missing
+ if [ -f /fs/microsd/etc/rc.local ]
+ then
+ sh /fs/microsd/etc/rc.local
+ fi
+
+ # If none of the autostart scripts triggered, get a minimal setup
+ if [ $MODE == autostart ]
+ then
+ # Telemetry port is on both FMU boards ttyS1
+ mavlink start -b 57600 -d /dev/ttyS1
+ usleep 5000
+
+ # Start commander
+ commander start
+
+ # Start px4io if present
+ if px4io detect
+ then
+ px4io start
+ else
+ if fmu mode_serial
+ then
+ echo "FMU driver (no PWM) started"
+ fi
+ fi
+
+ # Start sensors
+ sh /etc/init.d/rc.sensors
+
+ # Start one of the estimators
+ attitude_estimator_ekf start
+
+ # Start GPS
+ gps start
+
+ fi
# End of autostart
fi