circles intersection and tourel beacon
[aversive.git] / config / generate_aversive_config
1 #!/bin/sh
2
3 #
4 # usage generate_aversive_config config_file dst_module_file
5 #
6
7
8 # order is important !! High level modules first (defines link order)
9 #
10 MODULES_LIST="CONFIG_MODULE_BRUSHLESS_3PHASE_DIGITAL_HALL,/devices/brushless_motors/brushless_3phase_digital_hall
11               CONFIG_MODULE_BRUSHLESS_3PHASE_DIGITAL_HALL_DOUBLE,/devices/brushless_motors/brushless_3phase_digital_hall_double
12               CONFIG_MODULE_MENU,ihm/menu
13               CONFIG_MODULE_PARSE,ihm/parse
14               CONFIG_MODULE_RDLINE,ihm/rdline
15               CONFIG_MODULE_VT100,ihm/vt100
16               CONFIG_MODULE_LCD,devices/ihm/lcd
17               CONFIG_MODULE_MULTISERVO,devices/servo/multiservo
18               CONFIG_MODULE_AX12,devices/servo/ax12
19               CONFIG_MODULE_ENCODERS_SPI,devices/encoders/encoders_spi
20               CONFIG_MODULE_ENCODERS_MICROB,devices/encoders/encoders_microb
21               CONFIG_MODULE_ENCODERS_EIRBOT,devices/encoders/encoders_eirbot
22               CONFIG_MODULE_TRAJECTORY_MANAGER,devices/robot/trajectory_manager
23               CONFIG_MODULE_BLOCKING_DETECTION_MANAGER,devices/robot/blocking_detection_manager
24               CONFIG_MODULE_OBSTACLE_AVOIDANCE,devices/robot/obstacle_avoidance
25               CONFIG_MODULE_POSITION_MANAGER,devices/robot/position_manager
26               CONFIG_MODULE_ROBOT_SYSTEM,devices/robot/robot_system
27               CONFIG_MODULE_PID,devices/control_system/filters/pid
28               CONFIG_MODULE_RAMP,devices/control_system/filters/ramp
29               CONFIG_MODULE_QUADRAMP,devices/control_system/filters/quadramp
30               CONFIG_MODULE_QUADRAMP_DERIVATE,devices/control_system/filters/quadramp_derivate
31               CONFIG_MODULE_BIQUAD,devices/control_system/filters/biquad
32               CONFIG_MODULE_CONTROL_SYSTEM_MANAGER,devices/control_system/control_system_manager
33               CONFIG_MODULE_TIME,base/time
34               CONFIG_MODULE_SCHEDULER,base/scheduler
35               CONFIG_MODULE_SPI,comm/spi
36               CONFIG_MODULE_CC2420,devices/radio/cc2420
37               CONFIG_MODULE_UART,comm/uart
38               CONFIG_MODULE_I2C,comm/i2c
39               CONFIG_MODULE_MF2_CLIENT,comm/mf2_client
40               CONFIG_MODULE_MF2_SERVER,comm/mf2_server
41               CONFIG_MODULE_PWM,hardware/pwm
42               CONFIG_MODULE_PWM_NG,hardware/pwm_ng
43               CONFIG_MODULE_ADC,hardware/adc
44               CONFIG_MODULE_AES,crypto/aes
45               CONFIG_MODULE_MD5,crypto/md5
46               CONFIG_MODULE_RC4,crypto/rc4
47               CONFIG_MODULE_HAMMING,encoding/hamming
48               CONFIG_MODULE_TIMER,hardware/timer
49               CONFIG_MODULE_BASE64,encoding/base64
50               CONFIG_MODULE_CIRBUF,base/cirbuf
51               CONFIG_MODULE_DIAGNOSTIC,debug/diagnostic
52               CONFIG_MODULE_ERROR,debug/error
53               CONFIG_MODULE_FIXED_POINT,base/math/fixed_point
54               CONFIG_MODULE_TIME_EXT,base/time_ext
55               CONFIG_MODULE_GEOMETRY,base/math/geometry
56               CONFIG_MODULE_VECT2,base/math/vect2"
57
58 echo
59 echo Generating aversive configuration files
60
61 # does the .config file exists ?
62 if [ ! -f $1 ]; then
63     echo "No such file <$1>"
64     exit 1
65 fi
66
67 echo "# Aversive configuration" > $2
68
69 ####
70 ##### MCU, compilation options, output format
71 ####
72
73 echo -n "MCU = " >> $2
74 echo `grep "CONFIG_MCU_.*=y" $1 | sed s,CONFIG_MCU_,, | sed s,=y,, | tr "[A-Z]" "[a-z]"` >> $2
75
76 echo -n "OPT = " >> $2
77 echo `grep "CONFIG_OPTM_.*=y" $1 | sed s,CONFIG_OPTM_,, | sed s,=y,, | tr "[A-Z]" "[a-z]"` >> $2
78
79 if grep "CONFIG_FORMAT_IHEX=y" $1 > /dev/null 2> /dev/null
80     then
81     echo "FORMAT = ihex" >> $2
82     echo "FORMAT_EXTENSION = hex" >> $2
83 fi
84
85 if grep "CONFIG_FORMAT_SREC=y" $1 > /dev/null 2> /dev/null
86     then
87     echo "FORMAT = srec" >> $2
88     echo "FORMAT_EXTENSION = srec" >> $2
89 fi
90
91 if grep "CONFIG_FORMAT_BINARY=y" $1 > /dev/null 2> /dev/null
92     then
93     echo "FORMAT = binary" >> $2
94     echo "FORMAT_EXTENSION = bin" >> $2
95 fi
96
97 ####
98 ##### Math lib and printf
99 ####
100
101 if grep "CONFIG_MATH_LIB=y" $1 > /dev/null 2> /dev/null
102     then
103     echo "MATH_LIB = -lm" >> $2
104 else
105     echo "MATH_LIB = " >> $2
106 fi
107
108 if grep "CONFIG_MINIMAL_PRINTF=y" $1 > /dev/null 2> /dev/null
109     then
110     echo "PRINTF_LDFLAGS = -Wl,-u,vfprintf -lprintf_min" >> $2
111 fi
112
113 if grep "CONFIG_STANDARD_PRINTF=y" $1 > /dev/null 2> /dev/null
114     then
115     echo "PRINTF_LDFLAGS = " >> $2
116 fi
117
118 if grep "CONFIG_ADVANCED_PRINTF=y" $1 > /dev/null 2> /dev/null
119     then
120     echo "PRINTF_LDFLAGS = -Wl,-u,vfprintf -lprintf_flt" >> $2
121 fi
122
123 if grep "CONFIG_FDEVOPEN_COMPAT=y" $1 > /dev/null 2> /dev/null
124     then
125     echo "CFLAGS += -D__STDIO_FDEVOPEN_COMPAT_12" >> $2
126 fi
127
128
129
130 ####
131 ##### Programmer
132 ####
133
134 if grep "CONFIG_AVRDUDE=y" $1 > /dev/null 2> /dev/null
135     then
136     echo "PROGRAMMER = avrdude" >> $2
137 fi
138
139 echo -n "AVRDUDE_PROGRAMMER = " >> $2
140 echo `grep "CONFIG_AVRDUDE_PROG_.*=y" $1 | sed s,CONFIG_AVRDUDE_PROG_,, | sed s,=y,, | tr [A-Z_] [a-z\-]` >> $2
141
142 echo -n "AVRDUDE_PORT = " >> $2
143 echo `grep "CONFIG_AVRDUDE_PORT" $1 | sed s,CONFIG_AVRDUDE_PORT=,,` >> $2
144
145 echo -n "AVRDUDE_BAUDRATE = " >> $2
146 echo `grep "CONFIG_AVRDUDE_BAUDRATE" $1 | sed s,CONFIG_AVRDUDE_BAUDRATE=,,` >> $2
147
148 if grep "CONFIG_AVRDUDE_CHECK_SIGNATURE=y" $1 > /dev/null 2> /dev/null
149     then
150     echo "AVRDUDE_FLAGS_SIGNATURE_CHECK =" >> $2
151 else
152     echo "AVRDUDE_FLAGS_SIGNATURE_CHECK = -F" >> $2
153 fi
154
155
156 if grep "CONFIG_AVARICE=y" $1 > /dev/null 2> /dev/null
157     then
158     echo "PROGRAMMER = avarice" >> $2
159     if ! grep "CONFIG_FORMAT_BINARY=y" $1 > /dev/null 2> /dev/null
160         then
161         echo "WARNING: With avarice, output format should be binary"
162     fi
163 fi
164
165 if grep "CONFIG_AVARICE_PROG_MKI=y" $1 > /dev/null 2> /dev/null
166     then
167     echo "AVARICE_PROGRAMMER = mkI" >> $2
168 fi
169
170 if grep "CONFIG_AVARICE_PROG_MKII=y" $1 > /dev/null 2> /dev/null
171     then
172     echo "AVARICE_PROGRAMMER = mkII" >> $2
173 fi
174
175 echo -n "AVARICE_PORT = " >> $2
176 echo `grep "CONFIG_AVARICE_PORT" $1 | sed s,CONFIG_AVARICE_PORT=,,` >> $2
177
178 echo -n "AVARICE_DEBUG_PORT = " >> $2
179 echo `grep "CONFIG_AVARICE_DEBUG_PORT" $1 | sed s,CONFIG_AVARICE_DEBUG_PORT=,,` >> $2
180
181
182 ####
183 ##### Generation of the module list
184 ####
185 echo -n "MODULES =" >> $2
186
187 for i in $MODULES_LIST
188 do
189   config=`echo $i | cut -d ',' -f1-1`
190   path=`echo $i | cut -d ',' -f2-2`
191   
192
193   if grep $config=y $1 2>/dev/null >/dev/null
194       then
195       echo -n " "$path >> $2
196   fi
197
198   if grep -q "${config}_CREATE_CONFIG=y" $1; then
199       CONF_FILE=`basename $path`_config.h
200       if [ -f $CONF_FILE ]
201           then
202           echo Cannot create default conf file $CONF_FILE, file exists
203       else
204           if [ ! -f $AVERSIVE_DIR/modules/$path/config/$CONF_FILE ]; then
205               echo Cannot create default conf file $CONF_FILE, no config sample in $AVERSIVE_DIR/modules/$path/config/$CONF_FILE
206           else
207               echo Creating default conf file $CONF_FILE .
208               cp $AVERSIVE_DIR/modules/$path/config/$CONF_FILE .
209           fi
210       fi
211   fi
212 done
213 echo >> $2
214
215
216
217
218 echo >> $2