aboutsummaryrefslogtreecommitdiff
path: root/ROMFS/scripts/rcS
blob: 9b9a2fd614fd8d3d5ff1cacbcfb9d4cd41923ef6 (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
#!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_ALLOWED yes
set USB no

#
# 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
#
if [ $USB_ALLOWED == yes ]
then
	if sercon
	then
		echo "[init] USB interface 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 -t 7
	then
		set BOARD PX4IOAR
		if [ -f /etc/init.d/rc.PX4IOAR ]
		then
			echo "[init] reading /etc/init.d/rc.PX4IOAR"
			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"
			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