aboutsummaryrefslogtreecommitdiff
path: root/ROMFS/scripts/rcS
blob: 69d791da52c73eff84ff647cc880221ee736e8da (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
#!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
set USB autoconnect

#
# Start playing the startup tune
#
tone_alarm start

#
# 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
# 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 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 test name PX4IOAR
	then
		set BOARD PX4IOAR
		if [ -f /etc/init.d/rc.PX4IOAR ]
		then
			echo "[init] reading /etc/init.d/rc.PX4IOAR"
			usleep 500
			sh /etc/init.d/rc.PX4IOAR
		fi
	else
		echo "[init] PX4IOAR not detected"
	fi

	#
	# Are we attached to a PX4IO?
	#
	if boardinfo test name PX4IO
	then
		set BOARD PX4IO
		if [ -f /etc/init.d/rc.PX4IO ]
		then
			echo "[init] reading /etc/init.d/rc.PX4IO"
			usleep 500
			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