2012-08-04 19:12:36 -03:00
|
|
|
#!nsh
|
|
|
|
#
|
|
|
|
# PX4FMU startup script.
|
|
|
|
#
|
|
|
|
# This script is responsible for:
|
|
|
|
#
|
|
|
|
# - mounting the microSD card (if present)
|
|
|
|
# - running the user startup script from the microSD card (if present)
|
|
|
|
# - detecting the configuration of the system and picking a suitable
|
|
|
|
# startup script to continue with
|
|
|
|
#
|
|
|
|
# Note: DO NOT add configuration-specific commands to this script;
|
|
|
|
# add them to the per-configuration scripts instead.
|
|
|
|
#
|
|
|
|
|
|
|
|
#
|
|
|
|
# Default to auto-start mode. An init script on the microSD card
|
|
|
|
# can change this to prevent automatic startup of the flight script.
|
|
|
|
#
|
|
|
|
set MODE autostart
|
2012-08-20 12:48:31 -03:00
|
|
|
set USB autoconnect
|
2012-08-04 19:12:36 -03:00
|
|
|
|
2012-10-21 21:51:21 -03:00
|
|
|
#
|
|
|
|
# Start playing the startup tune
|
|
|
|
#
|
|
|
|
tone_alarm start
|
|
|
|
|
2012-08-04 19:12:36 -03:00
|
|
|
#
|
|
|
|
# Try to mount the microSD card.
|
|
|
|
#
|
|
|
|
echo "[init] looking for microSD..."
|
|
|
|
if mount -t vfat /dev/mmcsd0 /fs/microsd
|
|
|
|
then
|
|
|
|
echo "[init] card mounted at /fs/microsd"
|
|
|
|
else
|
|
|
|
echo "[init] no microSD card found"
|
|
|
|
fi
|
|
|
|
|
|
|
|
#
|
|
|
|
# Look for an init script on the microSD card.
|
|
|
|
#
|
|
|
|
# To prevent automatic startup in the current flight mode,
|
|
|
|
# the script should set MODE to some other value.
|
|
|
|
#
|
|
|
|
if [ -f /fs/microsd/etc/rc ]
|
|
|
|
then
|
|
|
|
echo "[init] reading /fs/microsd/etc/rc"
|
|
|
|
sh /fs/microsd/etc/rc
|
|
|
|
fi
|
|
|
|
|
|
|
|
#
|
|
|
|
# Check for USB host
|
|
|
|
#
|
2012-08-20 12:48:31 -03:00
|
|
|
if [ $USB != autoconnect ]
|
2012-08-04 19:12:36 -03:00
|
|
|
then
|
2012-08-20 12:48:31 -03:00
|
|
|
echo "[init] not connecting USB"
|
2012-08-10 11:18:45 -03:00
|
|
|
else
|
2012-08-20 12:48:31 -03:00
|
|
|
if sercon
|
|
|
|
then
|
|
|
|
echo "[init] USB interface connected"
|
|
|
|
else
|
|
|
|
echo "[init] No USB connected"
|
|
|
|
fi
|
2012-08-04 19:12:36 -03:00
|
|
|
fi
|
|
|
|
|
|
|
|
#
|
|
|
|
# If we are still in flight mode, work out what airframe
|
|
|
|
# configuration we have and start up accordingly.
|
|
|
|
#
|
|
|
|
if [ $MODE != autostart ]
|
|
|
|
then
|
|
|
|
echo "[init] automatic startup cancelled by user script"
|
|
|
|
else
|
|
|
|
echo "[init] detecting attached hardware..."
|
|
|
|
|
|
|
|
#
|
|
|
|
# Assume that we are PX4FMU in standalone mode
|
|
|
|
#
|
|
|
|
set BOARD PX4FMU
|
|
|
|
|
|
|
|
#
|
|
|
|
# Are we attached to a PX4IOAR (AR.Drone carrier board)?
|
|
|
|
#
|
|
|
|
if boardinfo -t 7
|
|
|
|
then
|
|
|
|
set BOARD PX4IOAR
|
|
|
|
if [ -f /etc/init.d/rc.PX4IOAR ]
|
|
|
|
then
|
|
|
|
echo "[init] reading /etc/init.d/rc.PX4IOAR"
|
2012-08-22 11:20:05 -03:00
|
|
|
usleep 500
|
2012-08-04 19:12:36 -03:00
|
|
|
sh /etc/init.d/rc.PX4IOAR
|
|
|
|
fi
|
|
|
|
else
|
|
|
|
echo "[init] PX4IOAR not detected"
|
|
|
|
fi
|
|
|
|
|
|
|
|
#
|
|
|
|
# Are we attached to a PX4IO?
|
|
|
|
#
|
|
|
|
if boardinfo -t 6
|
|
|
|
then
|
|
|
|
set BOARD PX4IO
|
|
|
|
if [ -f /etc/init.d/rc.PX4IO ]
|
|
|
|
then
|
|
|
|
echo "[init] reading /etc/init.d/rc.PX4IO"
|
2012-08-22 11:20:05 -03:00
|
|
|
usleep 500
|
2012-08-04 19:12:36 -03:00
|
|
|
sh /etc/init.d/rc.PX4IO
|
|
|
|
fi
|
|
|
|
else
|
|
|
|
echo "[init] PX4IO not detected"
|
|
|
|
fi
|
|
|
|
|
|
|
|
#
|
|
|
|
# Looks like we are stand-alone
|
|
|
|
#
|
|
|
|
if [ $BOARD == PX4FMU ]
|
|
|
|
then
|
|
|
|
echo "[init] no expansion board detected"
|
|
|
|
if [ -f /etc/init.d/rc.standalone ]
|
|
|
|
then
|
|
|
|
echo "[init] reading /etc/init.d/rc.standalone"
|
|
|
|
sh /etc/init.d/rc.standalone
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
#
|
|
|
|
# We may not reach here if the airframe-specific script exits the shell.
|
|
|
|
#
|
|
|
|
echo "[init] startup done."
|
|
|
|
fi
|