You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
320 lines
6.2 KiB
320 lines
6.2 KiB
#!nsh |
|
|
|
# APM startup script for NuttX on VRBRAIN |
|
|
|
# To disable APM startup add a /fs/microsd/APM/nostart file |
|
|
|
# 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 APM startup" |
|
sh /etc/init.d/rc.error |
|
fi |
|
|
|
# mount binfs so we can find the built-in apps |
|
if [ -f /bin/reboot ] |
|
then |
|
echo "binfs already mounted" |
|
else |
|
echo "Mounting binfs" |
|
if mount -t binfs /dev/null /bin |
|
then |
|
echo "binfs mounted OK" |
|
else |
|
sh /etc/init.d/rc.error |
|
fi |
|
fi |
|
|
|
set sketch NONE |
|
if rm /fs/microsd/APM/boot.log |
|
then |
|
echo "removed old boot.log" |
|
fi |
|
set logfile /fs/microsd/APM/BOOT.LOG |
|
|
|
if [ ! -f /bin/ArduPilot ] |
|
then |
|
echo "/bin/ardupilot not found" |
|
sh /etc/init.d/rc.error |
|
fi |
|
|
|
if mkdir /fs/microsd/APM > /dev/null |
|
then |
|
echo "Created APM directory" |
|
fi |
|
|
|
echo "Starting uORB" |
|
if uorb start |
|
then |
|
echo "uorb started OK" |
|
else |
|
sh /etc/init.d/rc.error |
|
fi |
|
|
|
echo "Starting ADC" |
|
if adc start |
|
then |
|
echo "ADC started OK" |
|
else |
|
sh /etc/init.d/rc.error |
|
fi |
|
|
|
echo "Starting APM sensors" |
|
|
|
set INTERNAL_MS5611 false |
|
set INTERNAL_MPU6000 false |
|
set INTERNAL_MPU9250 false |
|
set INTERNAL_HMC5883 false |
|
|
|
set EXTERNAL_EXP_MS5611 false |
|
set EXTERNAL_EXP_MPU6000 false |
|
set EXTERNAL_EXP_HMC5983 false |
|
|
|
set EXTERNAL_IMU_MS5611 false |
|
set EXTERNAL_IMU_MPU6000 false |
|
set EXTERNAL_IMU_HMC5983 false |
|
|
|
set EXTERNAL_GPS_HMC5883 false |
|
|
|
if ver hwcmp VRBRAIN_V51 |
|
then |
|
echo "Detected VRBRAINv51 board" |
|
set INTERNAL_MS5611 true |
|
set INTERNAL_MPU6000 true |
|
set INTERNAL_HMC5883 true |
|
set EXTERNAL_GPS_HMC5883 true |
|
fi |
|
|
|
if ver hwcmp VRBRAIN_V52 |
|
then |
|
echo "Detected VRBRAINv52 board" |
|
set INTERNAL_MS5611 true |
|
set INTERNAL_MPU6000 true |
|
set INTERNAL_HMC5883 true |
|
set EXTERNAL_GPS_HMC5883 true |
|
fi |
|
|
|
if ver hwcmp VRBRAIN_V54 |
|
then |
|
echo "Detected VRBRAINv54 board" |
|
set INTERNAL_MS5611 true |
|
set INTERNAL_MPU6000 true |
|
set INTERNAL_HMC5883 true |
|
set EXTERNAL_GPS_HMC5883 true |
|
fi |
|
|
|
if ver hwcmp VRCORE_V10 |
|
then |
|
echo "Detected VRCOREv10 board" |
|
set INTERNAL_MS5611 true |
|
set INTERNAL_MPU6000 true |
|
set EXTERNAL_GPS_HMC5883 true |
|
fi |
|
|
|
if ver hwcmp VRUBRAIN_V51 |
|
then |
|
echo "Detected VRUBRAINv51 board" |
|
set INTERNAL_MS5611 true |
|
set INTERNAL_MPU6000 true |
|
set EXTERNAL_GPS_HMC5883 true |
|
fi |
|
|
|
if ver hwcmp VRUBRAIN_V52 |
|
then |
|
echo "Detected VRUBRAINv52 board" |
|
set INTERNAL_MS5611 true |
|
set INTERNAL_MPU6000 true |
|
set EXTERNAL_GPS_HMC5883 true |
|
fi |
|
|
|
if [ $INTERNAL_MS5611 == true ] |
|
then |
|
echo "Starting MS5611 Internal" |
|
if ms5611 -s start |
|
then |
|
echo "MS5611 Internal started OK" |
|
else |
|
echo "MS5611 Internal start failed" |
|
sh /etc/init.d/rc.error |
|
fi |
|
fi |
|
|
|
if [ $EXTERNAL_GPS_HMC5883 == true ] |
|
then |
|
echo "Starting HMC5883 External GPS" |
|
if hmc5883 -C -X start |
|
then |
|
echo "HMC5883 External GPS started OK" |
|
else |
|
echo "HMC5883 External GPS start failed" |
|
# sh /etc/init.d/rc.error |
|
fi |
|
fi |
|
|
|
if [ $INTERNAL_HMC5883 == true ] |
|
then |
|
echo "Starting HMC5883 Internal" |
|
if hmc5883 -C -R 12 -I start |
|
then |
|
echo "HMC5883 Internal started OK" |
|
else |
|
echo "HMC5883 Internal start failed" |
|
# sh /etc/init.d/rc.error |
|
fi |
|
fi |
|
|
|
if [ $INTERNAL_MPU6000 == true ] |
|
then |
|
echo "Starting MPU6000 Internal" |
|
if mpu6000 -R 12 start |
|
then |
|
echo "MPU6000 Internal started OK" |
|
else |
|
echo "[APM] MPU6000 Internal start failed" |
|
sh /etc/init.d/rc.error |
|
fi |
|
fi |
|
|
|
if [ $INTERNAL_MPU9250 == true ] |
|
then |
|
echo "Starting MPU9250 Internal" |
|
if mpu9250 -R 4 start |
|
then |
|
echo "MPU9250 Internal started OK" |
|
else |
|
echo "[APM] MPU9250 Internal start failed" |
|
sh /etc/init.d/rc.error |
|
fi |
|
fi |
|
|
|
# optional ETS airspeed sensor |
|
if ets_airspeed start |
|
then |
|
echo "Found ETS airspeed sensor" |
|
else |
|
if ets_airspeed start -b 2 |
|
then |
|
echo "Found ETS airspeed sensor" |
|
else |
|
echo "ETS airspeed sensor start failed" |
|
fi |
|
fi |
|
|
|
if meas_airspeed start |
|
then |
|
echo "Found MEAS airspeed sensor" |
|
else |
|
if meas_airspeed start -b 2 |
|
then |
|
echo "Found MEAS airspeed sensor" |
|
else |
|
echo "MEAS airspeed sensor start failed" |
|
fi |
|
fi |
|
|
|
# optional Range Finder sensor |
|
if ll40ls -X start |
|
then |
|
echo "Found external ll40ls sensor" |
|
fi |
|
|
|
if [ $LL_I2C_AUX == true ] |
|
then |
|
if ll40ls -I start |
|
then |
|
echo "Found internal ll40ls sensor" |
|
fi |
|
fi |
|
|
|
if [ $LL_PWM_INPUT == true ] |
|
then |
|
# optional PWM input driver |
|
if pwm_input start |
|
then |
|
echo "started pwm_input driver" |
|
if ll40ls start pwm |
|
then |
|
echo "Found ll40ls sensor PWM" |
|
fi |
|
fi |
|
fi |
|
|
|
if trone start |
|
then |
|
echo "Found trone sensor" |
|
fi |
|
|
|
if mb12xx start |
|
then |
|
echo "Found mb12xx sensor" |
|
fi |
|
|
|
# Starting Optional PX4Flow sensor |
|
if px4flow start |
|
then |
|
echo "Found PX4Flow sensor" |
|
fi |
|
|
|
if irlock start |
|
then |
|
echo "Found IR-Lock and Pixy vision sensor" |
|
else |
|
if irlock start -b 2 |
|
then |
|
echo "Found IR-Lock and Pixy vision sensor" |
|
else |
|
echo "IR-Lock and Pixy vision sensor start failed" |
|
fi |
|
fi |
|
|
|
echo "Starting MTD driver" |
|
if mtd start /fs/mtd |
|
then |
|
echo "MTD driver started OK" |
|
else |
|
echo "MTD driver start failed" |
|
sh /etc/init.d/rc.error |
|
fi |
|
|
|
echo "MTD driver read test" |
|
if mtd readtest /fs/mtd |
|
then |
|
echo "MTD driver readtest OK" |
|
else |
|
echo "MTD driver failed to read" |
|
sh /etc/init.d/rc.error |
|
fi |
|
|
|
echo "FMU mode PWM" |
|
if fmu mode_pwm |
|
then |
|
echo "Set FMU mode_pwm" |
|
fi |
|
|
|
# optional PWM input driver |
|
if pwm_input start |
|
then |
|
echo "started pwm_input driver" |
|
fi |
|
|
|
echo "Starting ArduPilot" |
|
if ArduPilot start |
|
then |
|
echo "ArduPilot started OK" |
|
else |
|
echo "ArduPilot start failed" |
|
sh /etc/init.d/rc.error |
|
fi |
|
|
|
echo "Exiting from nsh shell" |
|
exit |
|
|
|
echo "rc.APM finished" |
|
|
|
|