ardupilot/libraries/AP_HAL_PX4/scripts/rc.APM
2013-03-21 15:05:21 +11:00

118 lines
2.3 KiB
Plaintext

#!nsh
# APM startup script for NuttX on PX4
# To disable APM startup add a /fs/microsd/APM/nostart file
set deviceA /dev/ttyACM0
set deviceC /dev/ttyS1
# check for an old file called APM, caused by
# a bug in an earlier firmware release
if [ -f /fs/microsd/APM ]
then
echo "APM file found - renaming"
mv /fs/microsd/APM /fs/microsd/APM.old
fi
if [ -f /fs/microsd/APM/nostart ]
then
echo "APM/nostart found - skipping"
else
# mount binfs so we can find the built-in apps
if [ -f /bin/reboot ]
then
echo "binfs already mounted"
else
echo "Mounting binfs"
mount -t binfs /dev/null /bin
fi
set sketch NONE
if [ -f /bin/ArduPlane ]
then
set sketch ArduPlane
fi
if [ -f /bin/ArduCopter ]
then
set sketch ArduCopter
fi
if [ -f /bin/APMrover2 ]
then
set sketch APMrover2
fi
if [ $sketch != NONE ]
then
if mkdir /fs/microsd/APM
then
echo "Created APM directory"
fi
if [ -f /fs/microsd/px4io.bin ]
then
echo "Checking for new px4io firmware"
if cmp /fs/microsd/px4io.bin /fs/microsd/px4io.bin.loaded
then
echo "No new px4io firmware"
else
echo "Loading /fs/microsd/px4io.bin"
if px4io update /fs/microsd/px4io.bin > /fs/microsd/APM/px4io_update.log
then
cp /fs/microsd/px4io.bin /fs/microsd/px4io.bin.loaded
echo "Loaded /fs/microsd/px4io.bin OK" >> /fs/microsd/APM/px4io_update.log
else
echo "Failed loading /fs/microsd/px4io.bin" >> /fs/microsd/APM/px4io_update.log
echo "Failed to upgrade PX4IO firmware - check PX4IO is in bootloader mode"
fi
fi
fi
echo "Starting APM sensors"
uorb start
mpu6000 start
ms5611 start
hmc5883 start
adc start
echo "Trying PX4IO board"
if px4io start
then
echo "PX4IO board OK"
echo "Loading FMU_pass mixer"
mixer load /dev/pwm_output /etc/mixers/FMU_pass.mix
echo "Setting FMU mode_serial"
fmu mode_serial
else
echo "No PX4IO board found"
echo "Setting up PX4FMU direct mode"
fmu mode_pwm
if [ $deviceC == /dev/ttyS1 ]
then
# ttyS1 is used for PWM output when there
# is no IO board
set deviceC /dev/ttyS2
fi
fi
echo Starting $sketch
$sketch -d $deviceA -d2 $deviceC start
# if starting on the console, tell nsh to exit
# this prevents it from chewing bytes
if [ $deviceC == /dev/ttyS0 ]
then
echo "Exiting from nsh shell"
exit
fi
else
echo "No APM sketch found"
fi
fi
echo "rc.APM finished"