aboutsummaryrefslogtreecommitdiff
path: root/ROMFS/px4fmu_common/init.d/rcS
blob: f0ee1a0c6e726071e52b2b408b1b194d2ccd1e00 (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
137
138
139
140
141
142
143
144
145
146
#!nsh
#
# PX4FMU startup script.

#
# 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

#
# 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"
	# Start playing the startup tune
	tone_alarm start
else
	echo "[init] no microSD card found"
	# Play SOS
	tone_alarm 2
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

# if this is an APM build then there will be a rc.APM script
# from an EXTERNAL_SCRIPTS build option
if [ -f /etc/init.d/rc.APM ]
then
	if sercon
	then
		echo "[init] USB interface connected"
	fi

	echo "Running rc.APM"
	# if APM startup is successful then nsh will exit
	sh /etc/init.d/rc.APM
fi

if [ $MODE == autostart ]
then

#
# Start the ORB (first app to start)
#
uorb start

#
# Load microSD params
#
if ramtron start
then
	param select /ramtron/params
	if [ -f /ramtron/params ]
	then
		param load /ramtron/params
	fi
else
	param select /fs/microsd/params
	if [ -f /fs/microsd/params ]
	then
		param load /fs/microsd/params
	fi
fi

#
# Check if PX4IO Firmware should be upgraded (from Andrew Tridgell)
#
if [ -f /fs/microsd/px4io.bin ]
then
	echo "PX4IO Firmware found. Checking Upgrade.."
	if cmp /fs/microsd/px4io.bin /fs/microsd/px4io.cur
	then
		echo "No newer version, skipping upgrade."
	else
		echo "Loading /fs/microsd/px4io.bin"
		if px4io update /fs/microsd/px4io.bin > /fs/microsd/px4io.log
		then
			cp /fs/microsd/px4io.bin /fs/microsd/px4io.cur
			echo "Flashed /fs/microsd/px4io.bin OK" >> /fs/microsd/px4io.log
		else
			echo "Failed flashing /fs/microsd/px4io.bin" >> /fs/microsd/px4io.log
			echo "Failed to upgrade px4io firmware - check if px4io is in bootloader mode"
		fi
	fi
fi

#
# Check if auto-setup from one of the standard scripts is wanted
# SYS_AUTOSTART = 0 means no autostart (default)
#
if param compare SYS_AUTOSTART 1
then
	sh /etc/init.d/01_fmu_quad_x
fi

if param compare SYS_AUTOSTART 2
then
	sh /etc/init.d/02_io_quad_x
fi

if param compare SYS_AUTOSTART 8
then
	sh /etc/init.d/08_ardrone
fi

if param compare SYS_AUTOSTART 9
then
	sh /etc/init.d/09_ardrone_flow
fi

if param compare SYS_AUTOSTART 10
then
	sh /etc/init.d/10_io_f330
fi

if param compare SYS_AUTOSTART 30
then
	sh /etc/init.d/30_io_camflyer
fi

if param compare SYS_AUTOSTART 31
then
	sh /etc/init.d/31_io_phantom
fi

# End of autostart
fi