From 068dce6820ae25c11b8b6784c4dded5a42a5c683 Mon Sep 17 00:00:00 2001 From: LukeMike Date: Wed, 4 Jun 2014 14:03:57 +0200 Subject: [PATCH] VRBRAIN: Scripts for VRBRAIB custom start --- mk/VRBRAIN/ROMFS_VRBRAIN45_APM/init.d/rc.APM | 177 ++++++++++++++++++ .../ROMFS_VRBRAIN45_APM/init.d/rc.APMNS | 150 +++++++++++++++ .../ROMFS_VRBRAIN45_APM/init.d/rc.error | 7 + mk/VRBRAIN/ROMFS_VRBRAIN45_APM/init.d/rcS | 93 +++++++++ mk/VRBRAIN/ROMFS_VRUBRAIN51_APM/init.d/rc.APM | 155 +++++++++++++++ .../ROMFS_VRUBRAIN51_APM/init.d/rc.APMNS | 128 +++++++++++++ .../ROMFS_VRUBRAIN51_APM/init.d/rc.error | 7 + mk/VRBRAIN/ROMFS_VRUBRAIN51_APM/init.d/rcS | 93 +++++++++ 8 files changed, 810 insertions(+) create mode 100644 mk/VRBRAIN/ROMFS_VRBRAIN45_APM/init.d/rc.APM create mode 100644 mk/VRBRAIN/ROMFS_VRBRAIN45_APM/init.d/rc.APMNS create mode 100644 mk/VRBRAIN/ROMFS_VRBRAIN45_APM/init.d/rc.error create mode 100644 mk/VRBRAIN/ROMFS_VRBRAIN45_APM/init.d/rcS create mode 100644 mk/VRBRAIN/ROMFS_VRUBRAIN51_APM/init.d/rc.APM create mode 100644 mk/VRBRAIN/ROMFS_VRUBRAIN51_APM/init.d/rc.APMNS create mode 100644 mk/VRBRAIN/ROMFS_VRUBRAIN51_APM/init.d/rc.error create mode 100644 mk/VRBRAIN/ROMFS_VRUBRAIN51_APM/init.d/rcS diff --git a/mk/VRBRAIN/ROMFS_VRBRAIN45_APM/init.d/rc.APM b/mk/VRBRAIN/ROMFS_VRBRAIN45_APM/init.d/rc.APM new file mode 100644 index 0000000000..8085176822 --- /dev/null +++ b/mk/VRBRAIN/ROMFS_VRBRAIN45_APM/init.d/rc.APM @@ -0,0 +1,177 @@ +#!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] APM file found - renaming" + mv /fs/microsd/APM /fs/microsd/APM.old +fi + +if [ -f /fs/microsd/APM/nostart ] +then + echo "[APM] 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 "[APM] binfs already mounted" +else + echo "[APM] Mounting binfs" + if mount -t binfs /dev/null /bin + then + echo "[APM] binfs mounted OK" + else + sh /etc/init.d/rc.error + fi +fi + +if rm /fs/microsd/APM/boot.log +then + echo "[APM] Removed old boot.log" +fi +set logfile /fs/microsd/APM/BOOT.LOG + +if [ ! -f /bin/ArduPilot ] +then + echo "[APM] /bin/ArduPilot not found" + sh /etc/init.d/rc.error +fi + +if mkdir /fs/microsd/APM > /dev/null +then + echo "[APM] Created APM directory" +fi + +echo "[APM] Starting UORB" +if uorb start +then + echo "[APM] UORB started OK" +else + sh /etc/init.d/rc.error +fi + +echo "[APM] Starting ADC" +if adc start +then + echo "[APM] ADC started OK" +else + sh /etc/init.d/rc.error +fi + +echo "[APM] Starting APM sensors" +if ms5611 start +then + echo "[APM] MS5611 started OK" +else + echo "[APM] MS5611 start failed" + sh /etc/init.d/rc.error +fi + +if hmc5883_onboard start +then + echo "[APM] HMC5883 onboard started OK" +# if hmc5883 calibrate +# then +# echo "[APM] HMC5883 onboard calibrate OK" +# else +# echo "[APM] HMC5883 onboard calibrate failed" +# fi +else + echo "[APM] HMC5883 onboard start failed" + sh /etc/init.d/rc.error +fi + +if hmc5883_external start +then + echo "[APM] HMC5883 external started OK" +# if hmc5883 calibrate +# then +# echo "[APM] HMC5883 external calibrate OK" +# else +# echo "[APM] HMC5883 external calibrate failed" +# fi +else + echo "[APM] HMC5883 external start failed" +# sh /etc/init.d/rc.error +fi + +if mpu6000_onboard start +then + echo "[APM] MPU6000 onboard started OK" +else + echo "[APM] MPU6000 onboard start failed" + sh /etc/init.d/rc.error +fi + +if mpu6000_external start +then + echo "[APM] MPU6000 external started OK" +else + echo "[APM] MPU6000 external start failed" +# sh /etc/init.d/rc.error +fi + +echo "[APM] Starting MTD driver" +if mtd start /fs/mtd +then + echo "[APM] MTD driver started OK" +else + echo "[APM] MTD driver start failed" + sh /etc/init.d/rc.error +fi + +echo "[APM] MTD driver read test" +if mtd readtest /fs/mtd +then + echo "[APM] MTD driver readtest OK" +else + echo "[APM] MTD driver failed to read" + sh /etc/init.d/rc.error +fi + +echo "[APM] Starting VROUTPUT driver" +vroutput mode_pwm +#if vroutput mode_pwm +#then +# echo "[APM] VROUTPUT driver started OK" +#else +# echo "[APM] VROUTPUT driver start failed" +# sh /etc/init.d/rc.error +#fi + +echo "[APM] Starting VRINPUT driver" +vrinput start +#if vrinput start +#then +# echo "[APM] VRINPUT driver started OK" +#else +# echo "[APM] VRINPUT driver start failed" +# sh /etc/init.d/rc.error +#fi + +set sketch NONE +set deviceA /dev/ttyACM0 +set deviceC /dev/ttyS2 + +echo "[APM] Starting ArduPilot" +#if ArduPilot -d $deviceA -d2 $deviceC start +if ArduPilot start +then + echo "[APM] ArduPilot started OK" +else + echo "[APM] ArduPilot start failed" + sh /etc/init.d/rc.error +fi + +echo "[APM] Exiting from nsh shell" +exit + +echo "[APM] Script finished" + diff --git a/mk/VRBRAIN/ROMFS_VRBRAIN45_APM/init.d/rc.APMNS b/mk/VRBRAIN/ROMFS_VRBRAIN45_APM/init.d/rc.APMNS new file mode 100644 index 0000000000..c0a02c3c5a --- /dev/null +++ b/mk/VRBRAIN/ROMFS_VRBRAIN45_APM/init.d/rc.APMNS @@ -0,0 +1,150 @@ +#!nsh + +# APM startup script for NuttX on VRBRAIN + +# mount binfs so we can find the built-in apps +if [ -f /bin/reboot ] +then + echo "[APMNS] binfs already mounted" +else + echo "[APMNS] Mounting binfs" + if mount -t binfs /dev/null /bin + then + echo "[APMNS] binfs mounted OK" + else + sh /etc/init.d/rc.error + fi +fi + +if [ ! -f /bin/ArduPilot ] +then + echo "[APMNS] /bin/ArduPilot not found" + sh /etc/init.d/rc.error +fi + +echo "[APMNS] Starting UORB" +if uorb start +then + echo "[APMNS] UORB started OK" +else + sh /etc/init.d/rc.error +fi + +echo "[APMNS] Starting ADC" +if adc start +then + echo "[APMNS] ADC started OK" +else + sh /etc/init.d/rc.error +fi + +echo "[APMNS] Starting APM sensors" +if ms5611 start +then + echo "[APMNS] MS5611 started OK" +else + echo "[APMNS] MS5611 start failed" + sh /etc/init.d/rc.error +fi + +if hmc5883_onboard start +then + echo "[APMNS] HMC5883 onboard started OK" +# if hmc5883 calibrate +# then +# echo "[APMNS] HMC5883 onboard calibrate OK" +# else +# echo "[APMNS] HMC5883 onboard calibrate failed" +# fi +else + echo "[APMNS] HMC5883 onboard start failed" + sh /etc/init.d/rc.error +fi + +if hmc5883_external start +then + echo "[APMNS] HMC5883 external started OK" +# if hmc5883 calibrate +# then +# echo "[APMNS] HMC5883 external calibrate OK" +# else +# echo "[APMNS] HMC5883 external calibrate failed" +# fi +else + echo "[APMNS] HMC5883 external start failed" +# sh /etc/init.d/rc.error +fi + +if mpu6000_onboard start +then + echo "[APMNS] MPU6000 onboard started OK" +else + echo "[APMNS] MPU6000 onboard start failed" + sh /etc/init.d/rc.error +fi + +if mpu6000_external start +then + echo "[APMNS] MPU6000 external started OK" +else + echo "[APMNS] MPU6000 external start failed" +# sh /etc/init.d/rc.error +fi + +echo "[APMNS] Starting MTD driver" +if mtd start /fs/mtd +then + echo "[APMNS] MTD driver started OK" +else + echo "[APMNS] MTD driver start failed" + sh /etc/init.d/rc.error +fi + +echo "[APMNS] MTD driver read test" +if mtd readtest /fs/mtd +then + echo "[APMNS] MTD driver readtest OK" +else + echo "[APMNS] MTD driver failed to read" + sh /etc/init.d/rc.error +fi + +echo "[APMNS] Starting VROUTPUT driver" +vroutput mode_pwm +#if vroutput mode_pwm +#then +# echo "[APMNS] VROUTPUT driver started OK" +#else +# echo "[APMNS] VROUTPUT driver start failed" +# sh /etc/init.d/rc.error +#fi + +echo "[APMNS] Starting VRINPUT driver" +vrinput start +#if vrinput start +#then +# echo "[APMNS] VRINPUT driver started OK" +#else +# echo "[APMNS] VRINPUT driver start failed" +# sh /etc/init.d/rc.error +#fi + +set sketch NONE +set deviceA /dev/ttyACM0 +set deviceC /dev/ttyS2 + +echo "[APMNS] Starting ArduPilot" +#if ArduPilot -d $deviceA -d2 $deviceC start +if ArduPilot start +then + echo "[APMNS] ArduPilot started OK" +else + echo "[APMNS] ArduPilot start failed" + sh /etc/init.d/rc.error +fi + +echo "[APMNS] Exiting from nsh shell" +exit + +echo "[APMNS] Script finished" + diff --git a/mk/VRBRAIN/ROMFS_VRBRAIN45_APM/init.d/rc.error b/mk/VRBRAIN/ROMFS_VRBRAIN45_APM/init.d/rc.error new file mode 100644 index 0000000000..a14e763476 --- /dev/null +++ b/mk/VRBRAIN/ROMFS_VRBRAIN45_APM/init.d/rc.error @@ -0,0 +1,7 @@ +echo "Error in startup" + +nshterm /dev/ttyACM0 & +sleep 1 +nshterm /dev/ttyS0 & +sleep 1 +exit diff --git a/mk/VRBRAIN/ROMFS_VRBRAIN45_APM/init.d/rcS b/mk/VRBRAIN/ROMFS_VRBRAIN45_APM/init.d/rcS new file mode 100644 index 0000000000..37eab9f8b6 --- /dev/null +++ b/mk/VRBRAIN/ROMFS_VRBRAIN45_APM/init.d/rcS @@ -0,0 +1,93 @@ +#!nsh +# +# VRBRAIN 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 +set USB autoconnect + +# +# 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" + set HAVE_MICROSD 1 +else + echo "[init] no microSD card found" + set HAVE_MICROSD 0 +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 +# Also consider rc.txt files +if [ -f /fs/microsd/etc/rc.txt ] +then + echo "[init] reading /fs/microsd/etc/rc.txt" + sh /fs/microsd/etc/rc.txt +fi + +# +# Check for USB host +# +if [ $USB != autoconnect ] +then + echo "[init] not connecting USB" +else + if sercon + then + echo "[init] USB interface connected" + else + echo "[init] No USB connected" + fi +fi + +if [ $HAVE_MICROSD == 1 ] +then + if [ ! -f /fs/microsd/APM/nostart ] + then + if [ -f /etc/init.d/rc.APM ] + then + echo "[init] Running rc.APM" + # if APM startup is successful then nsh will exit + sh /etc/init.d/rc.APM + else + nshterm /dev/ttyACM0 & + fi + else + nshterm /dev/ttyACM0 & + fi +else + if [ -f /etc/init.d/rc.APMNS ] + then + echo "[init] Running rc.APM without SD" + # if APM startup is successful then nsh will exit + sh /etc/init.d/rc.APMNS + else + nshterm /dev/ttyACM0 & + fi +fi diff --git a/mk/VRBRAIN/ROMFS_VRUBRAIN51_APM/init.d/rc.APM b/mk/VRBRAIN/ROMFS_VRUBRAIN51_APM/init.d/rc.APM new file mode 100644 index 0000000000..8b2ff5a900 --- /dev/null +++ b/mk/VRBRAIN/ROMFS_VRUBRAIN51_APM/init.d/rc.APM @@ -0,0 +1,155 @@ +#!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] APM file found - renaming" + mv /fs/microsd/APM /fs/microsd/APM.old +fi + +if [ -f /fs/microsd/APM/nostart ] +then + echo "[APM] 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 "[APM] binfs already mounted" +else + echo "[APM] Mounting binfs" + if mount -t binfs /dev/null /bin + then + echo "[APM] binfs mounted OK" + else + sh /etc/init.d/rc.error + fi +fi + +if rm /fs/microsd/APM/boot.log +then + echo "[APM] Removed old boot.log" +fi +set logfile /fs/microsd/APM/BOOT.LOG + +if [ ! -f /bin/ArduPilot ] +then + echo "[APM] /bin/ArduPilot not found" + sh /etc/init.d/rc.error +fi + +if mkdir /fs/microsd/APM > /dev/null +then + echo "[APM] Created APM directory" +fi + +echo "[APM] Starting UORB" +if uorb start +then + echo "[APM] UORB started OK" +else + sh /etc/init.d/rc.error +fi + +echo "[APM] Starting ADC" +if adc start +then + echo "[APM] ADC started OK" +else + sh /etc/init.d/rc.error +fi + +echo "[APM] Starting APM sensors" +if ms5611 start +then + echo "[APM] MS5611 started OK" +else + echo "[APM] MS5611 start failed" + sh /etc/init.d/rc.error +fi + +if hmc5883_external start +then + echo "[APM] HMC5883 external started OK" +# if hmc5883 calibrate +# then +# echo "[APM] HMC5883 external calibrate OK" +# else +# echo "[APM] HMC5883 external calibrate failed" +# fi +else + echo "[APM] HMC5883 external start failed" + sh /etc/init.d/rc.error +fi + +if mpu6000_onboard start +then + echo "[APM] MPU6000 onboard started OK" +else + echo "[APM] MPU6000 onboard start failed" + sh /etc/init.d/rc.error +fi + +echo "[APM] Starting MTD driver" +if mtd start /fs/mtd +then + echo "[APM] MTD driver started OK" +else + echo "[APM] MTD driver start failed" + sh /etc/init.d/rc.error +fi + +echo "[APM] MTD driver read test" +if mtd readtest /fs/mtd +then + echo "[APM] MTD driver readtest OK" +else + echo "[APM] MTD driver failed to read" + sh /etc/init.d/rc.error +fi + +echo "[APM] Starting VROUTPUT driver" +vroutput mode_pwm +#if vroutput mode_pwm +#then +# echo "[APM] VROUTPUT driver started OK" +#else +# echo "[APM] VROUTPUT driver start failed" +# sh /etc/init.d/rc.error +#fi + +echo "[APM] Starting VRINPUT driver" +vrinput start +#if vrinput start +#then +# echo "[APM] VRINPUT driver started OK" +#else +# echo "[APM] VRINPUT driver start failed" +# sh /etc/init.d/rc.error +#fi + +set sketch NONE +set deviceA /dev/ttyACM0 +set deviceC /dev/ttyS2 + +echo "[APM] Starting ArduPilot" +#if ArduPilot -d $deviceA -d2 $deviceC start +if ArduPilot start +then + echo "[APM] ArduPilot started OK" +else + echo "[APM] ArduPilot start failed" + sh /etc/init.d/rc.error +fi + +echo "[APM] Exiting from nsh shell" +exit + +echo "[APM] Script finished" + diff --git a/mk/VRBRAIN/ROMFS_VRUBRAIN51_APM/init.d/rc.APMNS b/mk/VRBRAIN/ROMFS_VRUBRAIN51_APM/init.d/rc.APMNS new file mode 100644 index 0000000000..231576f298 --- /dev/null +++ b/mk/VRBRAIN/ROMFS_VRUBRAIN51_APM/init.d/rc.APMNS @@ -0,0 +1,128 @@ +#!nsh + +# APM startup script for NuttX on VRBRAIN + +# mount binfs so we can find the built-in apps +if [ -f /bin/reboot ] +then + echo "[APMNS] binfs already mounted" +else + echo "[APMNS] Mounting binfs" + if mount -t binfs /dev/null /bin + then + echo "[APMNS] binfs mounted OK" + else + sh /etc/init.d/rc.error + fi +fi + +if [ ! -f /bin/ArduPilot ] +then + echo "[APMNS] /bin/ArduPilot not found" + sh /etc/init.d/rc.error +fi + +echo "[APMNS] Starting UORB" +if uorb start +then + echo "[APMNS] UORB started OK" +else + sh /etc/init.d/rc.error +fi + +echo "[APMNS] Starting ADC" +if adc start +then + echo "[APMNS] ADC started OK" +else + sh /etc/init.d/rc.error +fi + +echo "[APMNS] Starting APM sensors" +if ms5611 start +then + echo "[APMNS] MS5611 started OK" +else + echo "[APMNS] MS5611 start failed" + sh /etc/init.d/rc.error +fi + +if hmc5883_onboard start +then + echo "[APMNS] HMC5883 onboard started OK" +# if hmc5883 calibrate +# then +# echo "[APMNS] HMC5883 onboard calibrate OK" +# else +# echo "[APMNS] HMC5883 onboard calibrate failed" +# fi +else + echo "[APMNS] HMC5883 onboard start failed" + sh /etc/init.d/rc.error +fi + +if mpu6000_onboard start +then + echo "[APMNS] MPU6000 onboard started OK" +else + echo "[APMNS] MPU6000 onboard start failed" + sh /etc/init.d/rc.error +fi + +echo "[APMNS] Starting MTD driver" +if mtd start /fs/mtd +then + echo "[APMNS] MTD driver started OK" +else + echo "[APMNS] MTD driver start failed" + sh /etc/init.d/rc.error +fi + +echo "[APMNS] MTD driver read test" +if mtd readtest /fs/mtd +then + echo "[APMNS] MTD driver readtest OK" +else + echo "[APMNS] MTD driver failed to read" + sh /etc/init.d/rc.error +fi + +echo "[APMNS] Starting VROUTPUT driver" +vroutput mode_pwm +#if vroutput mode_pwm +#then +# echo "[APMNS] VROUTPUT driver started OK" +#else +# echo "[APMNS] VROUTPUT driver start failed" +# sh /etc/init.d/rc.error +#fi + +echo "[APMNS] Starting VRINPUT driver" +vrinput start +#if vrinput start +#then +# echo "[APMNS] VRINPUT driver started OK" +#else +# echo "[APMNS] VRINPUT driver start failed" +# sh /etc/init.d/rc.error +#fi + +set sketch NONE +set deviceA /dev/ttyACM0 +set deviceC /dev/ttyS2 + +echo "[APMNS] Starting ArduPilot" +#if ArduPilot -d $deviceA -d2 $deviceC start +if ArduPilot start +then + echo "[APMNS] ArduPilot started OK" +else + echo "[APMNS] ArduPilot start failed" + sh /etc/init.d/rc.error +fi + +echo "[APMNS] Exiting from nsh shell" +exit + +echo "[APMNS] Script finished" + diff --git a/mk/VRBRAIN/ROMFS_VRUBRAIN51_APM/init.d/rc.error b/mk/VRBRAIN/ROMFS_VRUBRAIN51_APM/init.d/rc.error new file mode 100644 index 0000000000..a14e763476 --- /dev/null +++ b/mk/VRBRAIN/ROMFS_VRUBRAIN51_APM/init.d/rc.error @@ -0,0 +1,7 @@ +echo "Error in startup" + +nshterm /dev/ttyACM0 & +sleep 1 +nshterm /dev/ttyS0 & +sleep 1 +exit diff --git a/mk/VRBRAIN/ROMFS_VRUBRAIN51_APM/init.d/rcS b/mk/VRBRAIN/ROMFS_VRUBRAIN51_APM/init.d/rcS new file mode 100644 index 0000000000..37eab9f8b6 --- /dev/null +++ b/mk/VRBRAIN/ROMFS_VRUBRAIN51_APM/init.d/rcS @@ -0,0 +1,93 @@ +#!nsh +# +# VRBRAIN 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 +set USB autoconnect + +# +# 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" + set HAVE_MICROSD 1 +else + echo "[init] no microSD card found" + set HAVE_MICROSD 0 +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 +# Also consider rc.txt files +if [ -f /fs/microsd/etc/rc.txt ] +then + echo "[init] reading /fs/microsd/etc/rc.txt" + sh /fs/microsd/etc/rc.txt +fi + +# +# Check for USB host +# +if [ $USB != autoconnect ] +then + echo "[init] not connecting USB" +else + if sercon + then + echo "[init] USB interface connected" + else + echo "[init] No USB connected" + fi +fi + +if [ $HAVE_MICROSD == 1 ] +then + if [ ! -f /fs/microsd/APM/nostart ] + then + if [ -f /etc/init.d/rc.APM ] + then + echo "[init] Running rc.APM" + # if APM startup is successful then nsh will exit + sh /etc/init.d/rc.APM + else + nshterm /dev/ttyACM0 & + fi + else + nshterm /dev/ttyACM0 & + fi +else + if [ -f /etc/init.d/rc.APMNS ] + then + echo "[init] Running rc.APM without SD" + # if APM startup is successful then nsh will exit + sh /etc/init.d/rc.APMNS + else + nshterm /dev/ttyACM0 & + fi +fi