diff --git a/conf/Makefile.avr b/conf/Makefile.avr index 08b62d0013..3eed8ed50f 100644 --- a/conf/Makefile.avr +++ b/conf/Makefile.avr @@ -56,7 +56,7 @@ UISP_FLAGS = $(ISP_FLAGS) CFLAGS = \ - -W -Wall \ + -Werror -W -Wall \ $(ATMEL_INCLUDES) \ $(INCLUDES) \ -Wstrict-prototypes \ diff --git a/conf/airframes/gorrazoptere_esc_3DMG.xml b/conf/airframes/gorrazoptere_esc_3DMG.xml index a0031e051f..105503b5f0 100644 --- a/conf/airframes/gorrazoptere_esc_3DMG.xml +++ b/conf/airframes/gorrazoptere_esc_3DMG.xml @@ -74,6 +74,7 @@ +
diff --git a/conf/airframes/twinstar1.xml b/conf/airframes/twinstar1.xml index 0c0434f691..b874e6cafd 100644 --- a/conf/airframes/twinstar1.xml +++ b/conf/airframes/twinstar1.xml @@ -2,6 +2,7 @@
+
@@ -20,13 +21,15 @@ - - - - - + + + + + + + diff --git a/conf/autopilot/twin_avr.makefile b/conf/autopilot/twin_avr.makefile index c0bb8b0d3e..ca75a5d622 100644 --- a/conf/autopilot/twin_avr.makefile +++ b/conf/autopilot/twin_avr.makefile @@ -20,4 +20,4 @@ fbw.HIGH_FUSE = cb fbw.EXT_FUSE = ff fbw.LOCK_FUSE = ff fbw.CFLAGS += -DFBW -DMCU_SPI_LINK -DACTUATORS=\"servos_4017.h\" -fbw.srcs = $(SRC_ARCH)/ppm_hw.c inter_mcu.c $(SRC_ARCH)/servo.c $(SRC_ARCH)/spi_fbw.c $(SRC_ARCH)/uart_fbw.c $(SRC_ARCH)/adc_fbw.c sys_time.c main_fbw.c main.c +fbw.srcs = $(SRC_ARCH)/ppm_hw.c inter_mcu.c $(SRC_ARCH)/servos_4017.c $(SRC_ARCH)/spi_fbw.c $(SRC_ARCH)/uart_fbw.c $(SRC_ARCH)/adc_fbw.c sys_time.c main_fbw.c main.c diff --git a/sw/airborne/avr/servos_4017.c b/sw/airborne/avr/servos_4017.c index 971eccb4f1..11a5434606 100644 --- a/sw/airborne/avr/servos_4017.c +++ b/sw/airborne/avr/servos_4017.c @@ -40,7 +40,6 @@ static const pprz_t failsafe_values[COMMANDS_NB] = COMMANDS_FAILSAFE; #define ChopServo(x,a,b) Chop(x, a, b) #define COMMAND(i) servo_widths[i] -#define SERVOS_TICS_OF_USEC(s) SYS_TICS_OF_USEC(s) /* * We use the output compare registers to generate our servo pulses. * These should be connected to a decade counter that routes the diff --git a/sw/airborne/avr/spi_fbw.c b/sw/airborne/avr/spi_fbw.c index 00348a37ce..005131a268 100644 --- a/sw/airborne/avr/spi_fbw.c +++ b/sw/airborne/avr/spi_fbw.c @@ -48,8 +48,8 @@ static volatile uint8_t idx_buf = 0; static volatile uint16_t crc_in, crc_out; void spi_init(void) { - from_fbw.status = 0; - from_fbw.nb_err = 0; + from_fbw.from_fbw.status = 0; + from_fbw.from_fbw.nb_err = 0; /* set it pin output */ // IT_DDR |= _BV(IT_PIN); @@ -67,7 +67,7 @@ void spi_reset(void) { crc_in = CRC_INIT; crc_out = CRC_INIT; - uint8_t first_byte = ((uint8_t*)&from_fbw)[0]; + uint8_t first_byte = ((uint8_t*)&from_fbw.from_fbw)[0]; crc_out = CrcUpdate(crc_out, first_byte); SPDR = first_byte; @@ -93,7 +93,7 @@ SIGNAL(SIG_SPI) { if (crc_in1 == Crc1(crc_in) && tmp == Crc2(crc_in)) from_ap_receive_valid = TRUE; else - from_fbw.nb_err++; + from_fbw.from_fbw.nb_err++; return; } @@ -109,7 +109,7 @@ SIGNAL(SIG_SPI) { /* we are sending/receiving payload */ if (idx_buf < FRAME_LENGTH - 2) { /* place new payload byte in send register */ - tmp = ((uint8_t*)&from_fbw)[idx_buf]; + tmp = ((uint8_t*)&from_fbw.from_fbw)[idx_buf]; SPDR = tmp; crc_out = CrcUpdate(crc_out, tmp); } diff --git a/sw/airborne/inter_mcu.h b/sw/airborne/inter_mcu.h index a01327da84..291c1069fa 100644 --- a/sw/airborne/inter_mcu.h +++ b/sw/airborne/inter_mcu.h @@ -95,7 +95,7 @@ typedef union { #define STATUS_AUTO_OK 0 /** Two bytes for the CRC */ -#define FRAME_LENGTH (sizeof(struct inter_mcu_msg)+2) +#define FRAME_LENGTH (sizeof(inter_mcu_msg)+2) #define CRC_INIT 0xffff #define CrcUpdate(_crc, _data) _crc_ccitt_update(_crc, _data) diff --git a/sw/airborne/main_fbw.c b/sw/airborne/main_fbw.c index ce92653d81..482bd43d31 100644 --- a/sw/airborne/main_fbw.c +++ b/sw/airborne/main_fbw.c @@ -204,9 +204,9 @@ void event_task_fbw( void) { ap_ok = TRUE; if (mode == FBW_MODE_AUTO) { #if defined IMU_ANALOG || defined IMU_3DMG - control_set_desired(from_ap.channels); + control_set_desired(from_ap.from_ap.channels); #else - command_set(from_ap.channels); + command_set(from_ap.from_ap.channels); #endif } to_autopilot_from_rc_values(); diff --git a/sw/tools/gen_airframe.ml b/sw/tools/gen_airframe.ml index 0e0dec6b00..4618ec6513 100644 --- a/sw/tools/gen_airframe.ml +++ b/sw/tools/gen_airframe.ml @@ -107,6 +107,24 @@ let parse_command_laws = fun command -> | _ -> xml_error "set|let" +let parse_radio_laws = fun rc -> + let a = fun s -> ExtXml.attrib rc s in + match Xml.tag rc with + "set" -> + let com = a "command" + and value = a "value" in + let v = preprocess_command value in + printf " values[COMMAND_%s] = %s;\\\n" com v; + | "let" -> + let var = a "var" + and value = a "value" in + let v = preprocess_command value in + printf " int16_t _var_%s = %s;\\\n" var v + | "define" -> + parse_element "" rc + | _ -> xml_error "set|let" + + let parse_command = fun commands_params command no -> let command_name = "COMMAND_"^ExtXml.attrib command "name" in let failsafe_value = int_of_string (ExtXml.attrib command "failsafe_value") in @@ -136,7 +154,11 @@ let parse_section = fun s -> let commands_params = Array.to_list commands_params in define "COMMANDS_FAILSAFE" (sprint_float_array (List.map (fun x -> string_of_int x.failsafe_value) commands_params)); nl (); nl () - | "command_laws" -> + | "radio_laws" -> + printf "#define CommandsOfRC(values) { \\\n"; + List.iter parse_radio_laws (Xml.children s); + printf "}\n\n" + | "command_laws" -> printf "#define CommandsSet(values) { \\\n"; printf " uint16_t servo_value;\\\n"; printf " float command_value;\\\n";