diff --git a/conf/airframes/examples/cube_orange.xml b/conf/airframes/examples/cube_orange.xml
index c4aecd8b08..67702f9ba0 100644
--- a/conf/airframes/examples/cube_orange.xml
+++ b/conf/airframes/examples/cube_orange.xml
@@ -24,8 +24,8 @@
-
-
+
+
diff --git a/conf/airframes/examples/microjet_lisa_m_xsens.xml b/conf/airframes/examples/microjet_lisa_m_xsens.xml
index 94ded44d88..d0b43bfdc1 100644
--- a/conf/airframes/examples/microjet_lisa_m_xsens.xml
+++ b/conf/airframes/examples/microjet_lisa_m_xsens.xml
@@ -15,7 +15,9 @@
-
+
+
+
diff --git a/conf/modules/actuators_ppm.xml b/conf/modules/actuators_ppm.xml
deleted file mode 100644
index b87a67ec50..0000000000
--- a/conf/modules/actuators_ppm.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
- Actuators Driver using PPM output
-
- This is used in the case where you want to directly drive a receiver which has a microcontroller
- to do the decoding and driving of the servos (not a 4015 or 4017 decoder chip).
- The PPM is output on the SERV_CLK pin. The PPM frame rate, pulse width, and number of channels
- Can be adjusted in the "servos_ppm_hw.h" file to suit your particular receiver.
-
-
-
- actuators
- actuators
-
-
-
-
-
-
-
-
diff --git a/conf/modules/radio_control_ppm.xml b/conf/modules/radio_control_ppm.xml
index 4ec237e601..9a6a1adf60 100644
--- a/conf/modules/radio_control_ppm.xml
+++ b/conf/modules/radio_control_ppm.xml
@@ -22,6 +22,7 @@
+
diff --git a/sw/airborne/arch/chibios/mcu_periph/i2c_arch.c b/sw/airborne/arch/chibios/mcu_periph/i2c_arch.c
index 36eca2ce06..731e218365 100644
--- a/sw/airborne/arch/chibios/mcu_periph/i2c_arch.c
+++ b/sw/airborne/arch/chibios/mcu_periph/i2c_arch.c
@@ -63,6 +63,8 @@ struct i2c_init {
semaphore_t sem;
I2CConfig cfg;
struct i2c_errors errors;
+ ioline_t line_sda;
+ ioline_t line_scl;
};
@@ -71,6 +73,44 @@ static void handle_i2c_thd(struct i2c_periph *p);
// Timeout for I2C transaction
static const systime_t tmo = TIME_US2I(10000000 / PERIODIC_FREQUENCY);
+static iomode_t palReadLineMode(ioline_t line)
+{
+ ioportid_t port = PAL_PORT(line);
+ uint8_t pad = PAL_PAD(line);
+ iomode_t ret = 0;
+ ret |= (port->MODER >> (pad*2)) & 0x3;
+ ret |= ((port->OTYPER >> pad)&1) << 2;
+ ret |= ((port->OSPEEDR >> (pad*2))&3) << 3;
+ ret |= ((port->PUPDR >> (pad*2))&3) << 5;
+ if (pad < 8) {
+ ret |= ((port->AFRL >> (pad*4))&0xF) << 7;
+ } else {
+ ret |= ((port->AFRH >> ((pad-8)*4))&0xF) << 7;
+ }
+ return ret;
+}
+
+/* Clear a stuck bus */
+static void i2c_clear_bus(struct i2c_init *i)
+{
+ const iomode_t mode_saved = palReadLineMode(i->line_scl);
+ palSetLineMode(i->line_scl, PAL_MODE_OUTPUT_PUSHPULL);
+ for(uint8_t j = 0; j < 20; j++) {
+ palToggleLine(i->line_scl);
+ chThdSleepMicroseconds(10);
+ }
+ palSetLineMode(i->line_scl, mode_saved);
+}
+
+static uint8_t i2c_read_sda(struct i2c_init *i)
+{
+ const iomode_t mode_saved = palReadLineMode(i->line_sda);
+ palSetLineMode(i->line_sda, PAL_MODE_INPUT);
+ uint8_t ret = palReadLine(i->line_sda);
+ palSetLineMode(i->line_sda, mode_saved);
+ return ret;
+}
+
/**
* main thread function
*
@@ -152,8 +192,13 @@ static void handle_i2c_thd(struct i2c_periph *p)
break;
case MSG_TIMEOUT:
//if a timeout occurred before operation end
- // mark as failed and restart
+ // mark as failed
t->status = I2CTransFailed;
+ p->errors->unexpected_event_cnt++;
+ // Clear the bus if kept busy
+ if(i2c_read_sda(i) == 0) {
+ i2c_clear_bus(i);
+ }
i2cStart((I2CDriver *)p->reg_addr, &i->cfg);
break;
case MSG_RESET:
@@ -211,7 +256,9 @@ PRINT_CONFIG_VAR(I2C1_CLOCK_SPEED)
static IN_DMA_SECTION(struct i2c_init i2c1_init_s) = {
.name = "i2c1",
.sem = __SEMAPHORE_DATA(i2c1_init_s.sem, 0),
- .cfg = I2C1_CFG_DEF
+ .cfg = I2C1_CFG_DEF,
+ .line_sda = LINE_I2C1_SDA,
+ .line_scl = LINE_I2C1_SCL
};
static THD_WORKING_AREA(wa_thd_i2c1, I2C_THREAD_STACK_SIZE);
@@ -240,7 +287,9 @@ PRINT_CONFIG_VAR(I2C2_CLOCK_SPEED)
static IN_DMA_SECTION(struct i2c_init i2c2_init_s) = {
.name = "i2c2",
.sem = __SEMAPHORE_DATA(i2c2_init_s.sem, 0),
- .cfg = I2C2_CFG_DEF
+ .cfg = I2C2_CFG_DEF,
+ .line_sda = LINE_I2C2_SDA,
+ .line_scl = LINE_I2C2_SCL
};
static THD_WORKING_AREA(wa_thd_i2c2, I2C_THREAD_STACK_SIZE);
@@ -269,7 +318,9 @@ PRINT_CONFIG_VAR(I2C3_CLOCK_SPEED)
static IN_DMA_SECTION(struct i2c_init i2c3_init_s) = {
.name = "i2c3",
.sem = __SEMAPHORE_DATA(i2c3_init_s.sem, 0),
- .cfg = I2C3_CFG_DEF
+ .cfg = I2C3_CFG_DEF,
+ .line_sda = LINE_I2C3_SDA,
+ .line_scl = LINE_I2C3_SCL
};
static THD_WORKING_AREA(wa_thd_i2c3, I2C_THREAD_STACK_SIZE);
@@ -298,7 +349,9 @@ PRINT_CONFIG_VAR(I2C4_CLOCK_SPEED)
static IN_DMA_SECTION(struct i2c_init i2c4_init_s) = {
.name = "i2c4",
.sem = __SEMAPHORE_DATA(i2c4_init_s.sem, 0),
- .cfg = I2C4_CFG_DEF
+ .cfg = I2C4_CFG_DEF,
+ .line_sda = LINE_I2C4_SDA,
+ .line_scl = LINE_I2C4_SCL
};
static THD_WORKING_AREA(wa_thd_i2c4, I2C_THREAD_STACK_SIZE);
diff --git a/sw/airborne/arch/sim/modules/actuators/servos_ppm_hw.h b/sw/airborne/arch/sim/modules/actuators/servos_ppm_hw.h
deleted file mode 100644
index 63f8d5eeda..0000000000
--- a/sw/airborne/arch/sim/modules/actuators/servos_ppm_hw.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (C) 2012 Gautier Hattenberger
- *
- * This file is part of paparazzi.
- *
- * paparazzi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2, or (at your option)
- * any later version.
- *
- * paparazzi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with paparazzi; see the file COPYING. If not, write to
- * the Free Software Foundation, 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- */
-
-#ifndef SERVOS_PPM_HW_H
-#define SERVOS_PPM_HW_H
-
-#define SERVOS_TICS_OF_USEC(_v) (_v)
-
-#define ActuatorPpmSet(_i, _v) {}
-#define ActuatorsPpmInit() {}
-#define ActuatorsPpmCommit() {}
-
-#endif
-
-
diff --git a/sw/airborne/boards/apogee/chibios/v1.0/mcuconf.h b/sw/airborne/boards/apogee/chibios/v1.0/mcuconf.h
index b5e0f477f6..bbc4abce03 100644
--- a/sw/airborne/boards/apogee/chibios/v1.0/mcuconf.h
+++ b/sw/airborne/boards/apogee/chibios/v1.0/mcuconf.h
@@ -201,7 +201,8 @@
#else
#define STM32_I2C_USE_I2C3 FALSE
#endif
-#define STM32_I2C_BUSY_TIMEOUT 50
+#define STM32_I2C_ISR_LIMIT 6
+#define STM32_I2C_BUSY_TIMEOUT 0
#define STM32_I2C_I2C1_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 0)
#define STM32_I2C_I2C1_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 6)
#define STM32_I2C_I2C2_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 2)
diff --git a/sw/airborne/boards/chimera/chibios/v1.0/mcuconf.h b/sw/airborne/boards/chimera/chibios/v1.0/mcuconf.h
index dd52dcef29..93a7f7a587 100644
--- a/sw/airborne/boards/chimera/chibios/v1.0/mcuconf.h
+++ b/sw/airborne/boards/chimera/chibios/v1.0/mcuconf.h
@@ -240,7 +240,8 @@
#endif
#define STM32_I2C_USE_I2C3 FALSE
#define STM32_I2C_USE_I2C4 FALSE
-#define STM32_I2C_BUSY_TIMEOUT 50
+#define STM32_I2C_ISR_LIMIT 6
+#define STM32_I2C_BUSY_TIMEOUT 0
#define STM32_I2C_I2C1_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 0)
#define STM32_I2C_I2C1_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 6)
#define STM32_I2C_I2C2_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 2)
diff --git a/sw/airborne/boards/crazyflie/chibios/v2.1/mcuconf.h b/sw/airborne/boards/crazyflie/chibios/v2.1/mcuconf.h
index 0d92f7e437..20f00d65d8 100644
--- a/sw/airborne/boards/crazyflie/chibios/v2.1/mcuconf.h
+++ b/sw/airborne/boards/crazyflie/chibios/v2.1/mcuconf.h
@@ -189,7 +189,8 @@
#else
#define STM32_I2C_USE_I2C3 FALSE
#endif
-#define STM32_I2C_BUSY_TIMEOUT 50
+#define STM32_I2C_ISR_LIMIT 6
+#define STM32_I2C_BUSY_TIMEOUT 0
#define STM32_I2C_I2C1_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 0)
#define STM32_I2C_I2C1_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 6)
#define STM32_I2C_I2C2_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 2)
diff --git a/sw/airborne/boards/cube/orange/mcuconf.h b/sw/airborne/boards/cube/orange/mcuconf.h
index 96a2bbfb0e..91ad5461ac 100644
--- a/sw/airborne/boards/cube/orange/mcuconf.h
+++ b/sw/airborne/boards/cube/orange/mcuconf.h
@@ -311,7 +311,8 @@
#else
#define STM32_I2C_USE_I2C4 FALSE
#endif
-#define STM32_I2C_BUSY_TIMEOUT 50
+#define STM32_I2C_ISR_LIMIT 6
+#define STM32_I2C_BUSY_TIMEOUT 0
#define STM32_I2C_I2C1_RX_DMA_STREAM STM32_DMA_STREAM_ID_ANY
#define STM32_I2C_I2C1_TX_DMA_STREAM STM32_DMA_STREAM_ID_ANY
#define STM32_I2C_I2C2_RX_DMA_STREAM STM32_DMA_STREAM_ID_ANY
diff --git a/sw/airborne/boards/holybro/kakute_f7/mcuconf.h b/sw/airborne/boards/holybro/kakute_f7/mcuconf.h
index 90eba6a6eb..7a6f73a8f2 100644
--- a/sw/airborne/boards/holybro/kakute_f7/mcuconf.h
+++ b/sw/airborne/boards/holybro/kakute_f7/mcuconf.h
@@ -218,7 +218,8 @@
#define STM32_I2C_USE_I2C2 FALSE
#define STM32_I2C_USE_I2C3 FALSE
#define STM32_I2C_USE_I2C4 FALSE
-#define STM32_I2C_BUSY_TIMEOUT 50
+#define STM32_I2C_ISR_LIMIT 6
+#define STM32_I2C_BUSY_TIMEOUT 0
#define STM32_I2C_I2C1_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 0)
#define STM32_I2C_I2C1_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 6)
#define STM32_I2C_I2C2_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 3)
diff --git a/sw/airborne/boards/lia/chibios/v1.1/mcuconf.h b/sw/airborne/boards/lia/chibios/v1.1/mcuconf.h
index b5ee668eff..98957d8d5a 100644
--- a/sw/airborne/boards/lia/chibios/v1.1/mcuconf.h
+++ b/sw/airborne/boards/lia/chibios/v1.1/mcuconf.h
@@ -121,7 +121,8 @@
#else
#define STM32_I2C_USE_I2C2 FALSE
#endif
-#define STM32_I2C_BUSY_TIMEOUT 50
+#define STM32_I2C_ISR_LIMIT 6
+#define STM32_I2C_BUSY_TIMEOUT 0
#define STM32_I2C_I2C1_IRQ_PRIORITY 5
#define STM32_I2C_I2C2_IRQ_PRIORITY 5
#define STM32_I2C_I2C1_DMA_PRIORITY 3
diff --git a/sw/airborne/boards/lisa_m_common.h b/sw/airborne/boards/lisa_m_common.h
index 133c8c1938..2cf0735638 100644
--- a/sw/airborne/boards/lisa_m_common.h
+++ b/sw/airborne/boards/lisa_m_common.h
@@ -1,6 +1,8 @@
#ifndef CONFIG_LISA_M_COMMON_H
#define CONFIG_LISA_M_COMMON_H
+#include "std.h"
+
/* SPI slave mapping */
#define SPI_SELECT_SLAVE0_PORT GPIOA
@@ -105,7 +107,7 @@
*
* Default is PPM config 2, input on GPIO01 (Servo pin 6)
*/
-
+#if USE_PPM
#ifndef PPM_CONFIG
#define PPM_CONFIG 2
#endif
@@ -147,6 +149,7 @@
#error "Unknown PPM config"
#endif // PPM_CONFIG
+#endif // USE_PPM
/*
* ADC
@@ -255,7 +258,7 @@
#endif
#endif
-#if PPM_CONFIG == 2 && USE_PWM6 == 1
+#if (USE_PPM && PPM_CONFIG == 2) && USE_PWM6 == 1
#warning "You cannot USE_PWM6 and SERVO6 (or equivalent) at the same time"
#endif
diff --git a/sw/airborne/boards/lisa_mx/chibios/v2.1/mcuconf.h b/sw/airborne/boards/lisa_mx/chibios/v2.1/mcuconf.h
index f5a7c28a0e..dcf313a4aa 100644
--- a/sw/airborne/boards/lisa_mx/chibios/v2.1/mcuconf.h
+++ b/sw/airborne/boards/lisa_mx/chibios/v2.1/mcuconf.h
@@ -209,7 +209,8 @@
#else
#define STM32_I2C_USE_I2C3 FALSE
#endif
-#define STM32_I2C_BUSY_TIMEOUT 50
+#define STM32_I2C_ISR_LIMIT 6
+#define STM32_I2C_BUSY_TIMEOUT 0
#define STM32_I2C_I2C1_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 0)
#define STM32_I2C_I2C1_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 6)
#define STM32_I2C_I2C2_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 2)
diff --git a/sw/airborne/boards/lisa_mx_common.h b/sw/airborne/boards/lisa_mx_common.h
index 822eba3a9c..d9fd1f18ec 100644
--- a/sw/airborne/boards/lisa_mx_common.h
+++ b/sw/airborne/boards/lisa_mx_common.h
@@ -23,6 +23,8 @@
#ifndef CONFIG_LISA_MX_COMMON_H
#define CONFIG_LISA_MX_COMMON_H
+#include "std.h"
+
#define BOARD_LISA_MX
/* Lisa/M has a 12MHz external clock and 168MHz internal. */
@@ -218,7 +220,7 @@
*
* Default is PPM config 2, input on GPIOA1 (Servo pin 6)
*/
-
+#if USE_PPM
#ifndef PPM_CONFIG
#define PPM_CONFIG 2
#endif
@@ -260,6 +262,7 @@
#error "Unknown PPM config"
#endif // PPM_CONFIG
+#endif // USE_PPM
/* SPI */
#define SPI1_GPIO_AF GPIO_AF5
@@ -424,7 +427,7 @@
#define USE_PWM6 1
#endif
-#if PPM_CONFIG == 2 && USE_PWM6 == 1
+#if (USE_PPM && PPM_CONFIG == 2) && USE_PWM6 == 1
#warning "You cannot USE_PWM6 and SERVO6 (or equivalent) at the same time"
#endif
diff --git a/sw/airborne/boards/mateksys/F765-WING/mcuconf.h b/sw/airborne/boards/mateksys/F765-WING/mcuconf.h
index 026314f022..276b2c217a 100644
--- a/sw/airborne/boards/mateksys/F765-WING/mcuconf.h
+++ b/sw/airborne/boards/mateksys/F765-WING/mcuconf.h
@@ -228,7 +228,8 @@
#endif
#define STM32_I2C_USE_I2C3 FALSE
#define STM32_I2C_USE_I2C4 FALSE
-#define STM32_I2C_BUSY_TIMEOUT 50
+#define STM32_I2C_ISR_LIMIT 6
+#define STM32_I2C_BUSY_TIMEOUT 0
#define STM32_I2C_I2C1_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 0)
#define STM32_I2C_I2C1_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 6)
#define STM32_I2C_I2C2_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 3)
diff --git a/sw/airborne/boards/nucleo/144_f767zi/mcuconf.h b/sw/airborne/boards/nucleo/144_f767zi/mcuconf.h
index 6d4b289e7a..c8af795252 100644
--- a/sw/airborne/boards/nucleo/144_f767zi/mcuconf.h
+++ b/sw/airborne/boards/nucleo/144_f767zi/mcuconf.h
@@ -228,7 +228,8 @@
#else
#define STM32_I2C_USE_I2C4 FALSE
#endif
-#define STM32_I2C_BUSY_TIMEOUT 50
+#define STM32_I2C_ISR_LIMIT 6
+#define STM32_I2C_BUSY_TIMEOUT 0
#define STM32_I2C_I2C1_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 0)
#define STM32_I2C_I2C1_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 7)
#define STM32_I2C_I2C2_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 2)
diff --git a/sw/airborne/boards/px4fmu/chibios/v2.4/mcuconf.h b/sw/airborne/boards/px4fmu/chibios/v2.4/mcuconf.h
index 4c88ec3b58..fafd76acf8 100644
--- a/sw/airborne/boards/px4fmu/chibios/v2.4/mcuconf.h
+++ b/sw/airborne/boards/px4fmu/chibios/v2.4/mcuconf.h
@@ -201,7 +201,8 @@
#else
#define STM32_I2C_USE_I2C3 FALSE
#endif
-#define STM32_I2C_BUSY_TIMEOUT 50
+#define STM32_I2C_ISR_LIMIT 6
+#define STM32_I2C_BUSY_TIMEOUT 0
#define STM32_I2C_I2C1_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 0)
#define STM32_I2C_I2C1_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 6)
#define STM32_I2C_I2C2_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 2)
diff --git a/sw/airborne/boards/px4fmu/chibios/v4.0/mcuconf.h b/sw/airborne/boards/px4fmu/chibios/v4.0/mcuconf.h
index 006da6cc3b..d6c0918d7a 100644
--- a/sw/airborne/boards/px4fmu/chibios/v4.0/mcuconf.h
+++ b/sw/airborne/boards/px4fmu/chibios/v4.0/mcuconf.h
@@ -203,7 +203,8 @@
#else
#define STM32_I2C_USE_I2C3 FALSE
#endif
-#define STM32_I2C_BUSY_TIMEOUT 50
+#define STM32_I2C_ISR_LIMIT 6
+#define STM32_I2C_BUSY_TIMEOUT 0
#define STM32_I2C_I2C1_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 0)
#define STM32_I2C_I2C1_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 6)
#define STM32_I2C_I2C2_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 2)
diff --git a/sw/airborne/boards/px4fmu/chibios/v5.0/mcuconf.h b/sw/airborne/boards/px4fmu/chibios/v5.0/mcuconf.h
index cf8bebc7c2..7612abf79a 100644
--- a/sw/airborne/boards/px4fmu/chibios/v5.0/mcuconf.h
+++ b/sw/airborne/boards/px4fmu/chibios/v5.0/mcuconf.h
@@ -236,7 +236,8 @@
#else
#define STM32_I2C_USE_I2C4 FALSE
#endif
-#define STM32_I2C_BUSY_TIMEOUT 50
+#define STM32_I2C_ISR_LIMIT 6
+#define STM32_I2C_BUSY_TIMEOUT 0
#define STM32_I2C_I2C1_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 0)
#define STM32_I2C_I2C1_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 7)
#define STM32_I2C_I2C2_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 2)
diff --git a/sw/airborne/boards/tawaki/chibios/common/mcuconf.h b/sw/airborne/boards/tawaki/chibios/common/mcuconf.h
index ba1e99f7b3..fc4d8db7a9 100644
--- a/sw/airborne/boards/tawaki/chibios/common/mcuconf.h
+++ b/sw/airborne/boards/tawaki/chibios/common/mcuconf.h
@@ -228,7 +228,8 @@
#else
#define STM32_I2C_USE_I2C4 FALSE
#endif
-#define STM32_I2C_BUSY_TIMEOUT 50
+#define STM32_I2C_ISR_LIMIT 6
+#define STM32_I2C_BUSY_TIMEOUT 0
#define STM32_I2C_I2C1_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 0)
#define STM32_I2C_I2C1_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 7)
#define STM32_I2C_I2C2_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 2)
diff --git a/sw/airborne/boards/tawaki/chibios/v1.0/board.h b/sw/airborne/boards/tawaki/chibios/v1.0/board.h
index b024f1d067..bed1f76c6b 100644
--- a/sw/airborne/boards/tawaki/chibios/v1.0/board.h
+++ b/sw/airborne/boards/tawaki/chibios/v1.0/board.h
@@ -76,8 +76,8 @@
#define SRVB2 7U
#define SRVB3 8U
#define SRVB4 9U
-#define I2C2_SCL_EXTERNAL 10U
-#define I2C2_SDA_EXTERNAL 11U
+#define I2C2_SCL 10U
+#define I2C2_SDA 11U
#define SPI2_EXTERNAL_CS 12U
#define PB13 13U
#define SPI2_EXTERNAL_MISO 14U
@@ -112,8 +112,8 @@
#define UART3_RX 9U
#define LED4 10U
#define PD11 11U
-#define I2C4_SCL_EXTERNAL 12U
-#define I2C4_SDA_EXTERNAL 13U
+#define I2C4_SCL 12U
+#define I2C4_SDA 13U
#define PD14 14U
#define LED1 15U
@@ -261,8 +261,8 @@
#define LINE_SRVB2 PAL_LINE(GPIOB, 7U)
#define LINE_SRVB3 PAL_LINE(GPIOB, 8U)
#define LINE_SRVB4 PAL_LINE(GPIOB, 9U)
-#define LINE_I2C2_SCL_EXTERNAL PAL_LINE(GPIOB, 10U)
-#define LINE_I2C2_SDA_EXTERNAL PAL_LINE(GPIOB, 11U)
+#define LINE_I2C2_SCL PAL_LINE(GPIOB, 10U)
+#define LINE_I2C2_SDA PAL_LINE(GPIOB, 11U)
#define LINE_SPI2_EXTERNAL_CS PAL_LINE(GPIOB, 12U)
#define LINE_SPI2_EXTERNAL_MISO PAL_LINE(GPIOB, 14U)
#define LINE_SPI2_EXTERNAL_MOSI PAL_LINE(GPIOB, 15U)
@@ -288,8 +288,8 @@
#define LINE_UART3_TX PAL_LINE(GPIOD, 8U)
#define LINE_UART3_RX PAL_LINE(GPIOD, 9U)
#define LINE_LED4 PAL_LINE(GPIOD, 10U)
-#define LINE_I2C4_SCL_EXTERNAL PAL_LINE(GPIOD, 12U)
-#define LINE_I2C4_SDA_EXTERNAL PAL_LINE(GPIOD, 13U)
+#define LINE_I2C4_SCL PAL_LINE(GPIOD, 12U)
+#define LINE_I2C4_SDA PAL_LINE(GPIOD, 13U)
#define LINE_LED1 PAL_LINE(GPIOD, 15U)
#define LINE_RC1 PAL_LINE(GPIOE, 0U)
@@ -441,8 +441,8 @@
PIN_MODE_ALTERNATE(SRVB2) | \
PIN_MODE_ALTERNATE(SRVB3) | \
PIN_MODE_ALTERNATE(SRVB4) | \
- PIN_MODE_ALTERNATE(I2C2_SCL_EXTERNAL) | \
- PIN_MODE_ALTERNATE(I2C2_SDA_EXTERNAL) | \
+ PIN_MODE_ALTERNATE(I2C2_SCL) | \
+ PIN_MODE_ALTERNATE(I2C2_SDA) | \
PIN_MODE_OUTPUT(SPI2_EXTERNAL_CS) | \
PIN_MODE_INPUT(PB13) | \
PIN_MODE_ALTERNATE(SPI2_EXTERNAL_MISO) | \
@@ -458,8 +458,8 @@
PIN_OTYPE_PUSHPULL(SRVB2) | \
PIN_OTYPE_PUSHPULL(SRVB3) | \
PIN_OTYPE_PUSHPULL(SRVB4) | \
- PIN_OTYPE_OPENDRAIN(I2C2_SCL_EXTERNAL) | \
- PIN_OTYPE_OPENDRAIN(I2C2_SDA_EXTERNAL) | \
+ PIN_OTYPE_OPENDRAIN(I2C2_SCL) | \
+ PIN_OTYPE_OPENDRAIN(I2C2_SDA) | \
PIN_OTYPE_PUSHPULL(SPI2_EXTERNAL_CS) | \
PIN_OTYPE_PUSHPULL(PB13) | \
PIN_OTYPE_PUSHPULL(SPI2_EXTERNAL_MISO) | \
@@ -475,8 +475,8 @@
PIN_OSPEED_SPEED_HIGH(SRVB2) | \
PIN_OSPEED_SPEED_HIGH(SRVB3) | \
PIN_OSPEED_SPEED_HIGH(SRVB4) | \
- PIN_OSPEED_SPEED_HIGH(I2C2_SCL_EXTERNAL) | \
- PIN_OSPEED_SPEED_HIGH(I2C2_SDA_EXTERNAL) | \
+ PIN_OSPEED_SPEED_HIGH(I2C2_SCL) | \
+ PIN_OSPEED_SPEED_HIGH(I2C2_SDA) | \
PIN_OSPEED_SPEED_HIGH(SPI2_EXTERNAL_CS) | \
PIN_OSPEED_SPEED_VERYLOW(PB13) | \
PIN_OSPEED_SPEED_HIGH(SPI2_EXTERNAL_MISO) | \
@@ -492,8 +492,8 @@
PIN_PUPDR_FLOATING(SRVB2) | \
PIN_PUPDR_FLOATING(SRVB3) | \
PIN_PUPDR_FLOATING(SRVB4) | \
- PIN_PUPDR_PULLUP(I2C2_SCL_EXTERNAL) | \
- PIN_PUPDR_PULLUP(I2C2_SDA_EXTERNAL) | \
+ PIN_PUPDR_PULLUP(I2C2_SCL) | \
+ PIN_PUPDR_PULLUP(I2C2_SDA) | \
PIN_PUPDR_FLOATING(SPI2_EXTERNAL_CS) | \
PIN_PUPDR_PULLDOWN(PB13) | \
PIN_PUPDR_FLOATING(SPI2_EXTERNAL_MISO) | \
@@ -509,8 +509,8 @@
PIN_ODR_LEVEL_LOW(SRVB2) | \
PIN_ODR_LEVEL_LOW(SRVB3) | \
PIN_ODR_LEVEL_LOW(SRVB4) | \
- PIN_ODR_LEVEL_HIGH(I2C2_SCL_EXTERNAL) | \
- PIN_ODR_LEVEL_HIGH(I2C2_SDA_EXTERNAL) | \
+ PIN_ODR_LEVEL_HIGH(I2C2_SCL) | \
+ PIN_ODR_LEVEL_HIGH(I2C2_SDA) | \
PIN_ODR_LEVEL_HIGH(SPI2_EXTERNAL_CS) | \
PIN_ODR_LEVEL_LOW(PB13) | \
PIN_ODR_LEVEL_HIGH(SPI2_EXTERNAL_MISO) | \
@@ -527,8 +527,8 @@
#define VAL_GPIOB_AFRH (PIN_AFIO_AF(SRVB3, 2) | \
PIN_AFIO_AF(SRVB4, 2) | \
- PIN_AFIO_AF(I2C2_SCL_EXTERNAL, 4) | \
- PIN_AFIO_AF(I2C2_SDA_EXTERNAL, 4) | \
+ PIN_AFIO_AF(I2C2_SCL, 4) | \
+ PIN_AFIO_AF(I2C2_SDA, 4) | \
PIN_AFIO_AF(SPI2_EXTERNAL_CS, 0) | \
PIN_AFIO_AF(PB13, 0) | \
PIN_AFIO_AF(SPI2_EXTERNAL_MISO, 5) | \
@@ -649,8 +649,8 @@
PIN_MODE_ALTERNATE(UART3_RX) | \
PIN_MODE_OUTPUT(LED4) | \
PIN_MODE_INPUT(PD11) | \
- PIN_MODE_ALTERNATE(I2C4_SCL_EXTERNAL) | \
- PIN_MODE_ALTERNATE(I2C4_SDA_EXTERNAL) | \
+ PIN_MODE_ALTERNATE(I2C4_SCL) | \
+ PIN_MODE_ALTERNATE(I2C4_SDA) | \
PIN_MODE_INPUT(PD14) | \
PIN_MODE_OUTPUT(LED1))
@@ -666,8 +666,8 @@
PIN_OTYPE_PUSHPULL(UART3_RX) | \
PIN_OTYPE_PUSHPULL(LED4) | \
PIN_OTYPE_PUSHPULL(PD11) | \
- PIN_OTYPE_OPENDRAIN(I2C4_SCL_EXTERNAL) | \
- PIN_OTYPE_OPENDRAIN(I2C4_SDA_EXTERNAL) | \
+ PIN_OTYPE_OPENDRAIN(I2C4_SCL) | \
+ PIN_OTYPE_OPENDRAIN(I2C4_SDA) | \
PIN_OTYPE_PUSHPULL(PD14) | \
PIN_OTYPE_PUSHPULL(LED1))
@@ -683,8 +683,8 @@
PIN_OSPEED_SPEED_HIGH(UART3_RX) | \
PIN_OSPEED_SPEED_VERYLOW(LED4) | \
PIN_OSPEED_SPEED_VERYLOW(PD11) | \
- PIN_OSPEED_SPEED_HIGH(I2C4_SCL_EXTERNAL) | \
- PIN_OSPEED_SPEED_HIGH(I2C4_SDA_EXTERNAL) | \
+ PIN_OSPEED_SPEED_HIGH(I2C4_SCL) | \
+ PIN_OSPEED_SPEED_HIGH(I2C4_SDA) | \
PIN_OSPEED_SPEED_VERYLOW(PD14) | \
PIN_OSPEED_SPEED_VERYLOW(LED1))
@@ -700,8 +700,8 @@
PIN_PUPDR_FLOATING(UART3_RX) | \
PIN_PUPDR_FLOATING(LED4) | \
PIN_PUPDR_PULLDOWN(PD11) | \
- PIN_PUPDR_PULLUP(I2C4_SCL_EXTERNAL) | \
- PIN_PUPDR_PULLUP(I2C4_SDA_EXTERNAL) | \
+ PIN_PUPDR_PULLUP(I2C4_SCL) | \
+ PIN_PUPDR_PULLUP(I2C4_SDA) | \
PIN_PUPDR_PULLDOWN(PD14) | \
PIN_PUPDR_FLOATING(LED1))
@@ -717,8 +717,8 @@
PIN_ODR_LEVEL_HIGH(UART3_RX) | \
PIN_ODR_LEVEL_LOW(LED4) | \
PIN_ODR_LEVEL_LOW(PD11) | \
- PIN_ODR_LEVEL_HIGH(I2C4_SCL_EXTERNAL) | \
- PIN_ODR_LEVEL_HIGH(I2C4_SDA_EXTERNAL) | \
+ PIN_ODR_LEVEL_HIGH(I2C4_SCL) | \
+ PIN_ODR_LEVEL_HIGH(I2C4_SDA) | \
PIN_ODR_LEVEL_LOW(PD14) | \
PIN_ODR_LEVEL_LOW(LED1))
@@ -735,8 +735,8 @@
PIN_AFIO_AF(UART3_RX, 7) | \
PIN_AFIO_AF(LED4, 0) | \
PIN_AFIO_AF(PD11, 0) | \
- PIN_AFIO_AF(I2C4_SCL_EXTERNAL, 4) | \
- PIN_AFIO_AF(I2C4_SDA_EXTERNAL, 4) | \
+ PIN_AFIO_AF(I2C4_SCL, 4) | \
+ PIN_AFIO_AF(I2C4_SDA, 4) | \
PIN_AFIO_AF(PD14, 0) | \
PIN_AFIO_AF(LED1, 0))
@@ -1483,10 +1483,10 @@
#define AF_LINE_SRVB3 2U
#define AF_SRVB4 2U
#define AF_LINE_SRVB4 2U
-#define AF_I2C2_SCL_EXTERNAL 4U
-#define AF_LINE_I2C2_SCL_EXTERNAL 4U
-#define AF_I2C2_SDA_EXTERNAL 4U
-#define AF_LINE_I2C2_SDA_EXTERNAL 4U
+#define AF_I2C2_SCL 4U
+#define AF_LINE_I2C2_SCL 4U
+#define AF_I2C2_SDA 4U
+#define AF_LINE_I2C2_SDA 4U
#define AF_SPI2_EXTERNAL_MISO 5U
#define AF_LINE_SPI2_EXTERNAL_MISO 5U
#define AF_SPI2_EXTERNAL_MOSI 5U
@@ -1521,10 +1521,10 @@
#define AF_LINE_UART3_TX 7U
#define AF_UART3_RX 7U
#define AF_LINE_UART3_RX 7U
-#define AF_I2C4_SCL_EXTERNAL 4U
-#define AF_LINE_I2C4_SCL_EXTERNAL 4U
-#define AF_I2C4_SDA_EXTERNAL 4U
-#define AF_LINE_I2C4_SDA_EXTERNAL 4U
+#define AF_I2C4_SCL 4U
+#define AF_LINE_I2C4_SCL 4U
+#define AF_I2C4_SDA 4U
+#define AF_LINE_I2C4_SDA 4U
#define AF_RC1 8U
#define AF_LINE_RC1 8U
#define AF_SPI4_INTERNAL_CLK 5U
diff --git a/sw/airborne/boards/tawaki/chibios/v1.0/tawaki_1.0.cfg b/sw/airborne/boards/tawaki/chibios/v1.0/tawaki_1.0.cfg
index bc9f6da347..7f22319848 100644
--- a/sw/airborne/boards/tawaki/chibios/v1.0/tawaki_1.0.cfg
+++ b/sw/airborne/boards/tawaki/chibios/v1.0/tawaki_1.0.cfg
@@ -95,8 +95,8 @@ PB06 SRVB1 PWM AF:TIM4_CH1 ()
PB07 SRVB2 PWM AF:TIM4_CH2 ()
PB08 SRVB3 PWM AF:TIM4_CH3 ()
PB09 SRVB4 PWM AF:TIM4_CH4 ()
-PB10 I2C2_SCL_EXTERNAL I2C AF:I2C2_SCL
-PB11 I2C2_SDA_EXTERNAL I2C AF:I2C2_SDA
+PB10 I2C2_SCL I2C AF:I2C2_SCL #External
+PB11 I2C2_SDA I2C AF:I2C2_SDA #External
PB12 SPI2_EXTERNAL_CS OUTPUT PUSHPULL SPEED_HIGH FLOATING LEVEL_HIGH
PB14 SPI2_EXTERNAL_MISO SPI AF:SPI2_MISO
PB15 SPI2_EXTERNAL_MOSI SPI AF:SPI2_MOSI
@@ -121,8 +121,8 @@ PD06 UART2_RX UART AF:USART2_RX
PD08 UART3_TX UART AF:USART3_TX
PD09 UART3_RX UART AF:USART3_RX
PD10 LED4 LED
-PD12 I2C4_SCL_EXTERNAL I2C AF:I2C4_SCL
-PD13 I2C4_SDA_EXTERNAL I2C AF:I2C4_SDA
+PD12 I2C4_SCL I2C AF:I2C4_SCL #External
+PD13 I2C4_SDA I2C AF:I2C4_SDA #External
PD15 LED1 LED
PE00 RC1 UART AF:UART8_RX ()
diff --git a/sw/airborne/boards/tawaki/chibios/v1.1/board.h b/sw/airborne/boards/tawaki/chibios/v1.1/board.h
index be6a1d7385..3a19ab23dc 100644
--- a/sw/airborne/boards/tawaki/chibios/v1.1/board.h
+++ b/sw/airborne/boards/tawaki/chibios/v1.1/board.h
@@ -76,8 +76,8 @@
#define SRVB2 7U
#define SRVB3 8U
#define SRVB4 9U
-#define I2C2_SCL_EXTERNAL 10U
-#define I2C2_SDA_EXTERNAL 11U
+#define I2C2_SCL 10U
+#define I2C2_SDA 11U
#define SPI2_EXTERNAL_CS 12U
#define PB13 13U
#define SPI2_EXTERNAL_MISO 14U
@@ -112,8 +112,8 @@
#define UART3_RX 9U
#define LED4 10U
#define PD11 11U
-#define I2C4_SCL_EXTERNAL 12U
-#define I2C4_SDA_EXTERNAL 13U
+#define I2C4_SCL 12U
+#define I2C4_SDA 13U
#define PD14 14U
#define LED1 15U
@@ -261,8 +261,8 @@
#define LINE_SRVB2 PAL_LINE(GPIOB, 7U)
#define LINE_SRVB3 PAL_LINE(GPIOB, 8U)
#define LINE_SRVB4 PAL_LINE(GPIOB, 9U)
-#define LINE_I2C2_SCL_EXTERNAL PAL_LINE(GPIOB, 10U)
-#define LINE_I2C2_SDA_EXTERNAL PAL_LINE(GPIOB, 11U)
+#define LINE_I2C2_SCL PAL_LINE(GPIOB, 10U)
+#define LINE_I2C2_SDA PAL_LINE(GPIOB, 11U)
#define LINE_SPI2_EXTERNAL_CS PAL_LINE(GPIOB, 12U)
#define LINE_SPI2_EXTERNAL_MISO PAL_LINE(GPIOB, 14U)
#define LINE_SPI2_EXTERNAL_MOSI PAL_LINE(GPIOB, 15U)
@@ -288,8 +288,8 @@
#define LINE_UART3_TX PAL_LINE(GPIOD, 8U)
#define LINE_UART3_RX PAL_LINE(GPIOD, 9U)
#define LINE_LED4 PAL_LINE(GPIOD, 10U)
-#define LINE_I2C4_SCL_EXTERNAL PAL_LINE(GPIOD, 12U)
-#define LINE_I2C4_SDA_EXTERNAL PAL_LINE(GPIOD, 13U)
+#define LINE_I2C4_SCL PAL_LINE(GPIOD, 12U)
+#define LINE_I2C4_SDA PAL_LINE(GPIOD, 13U)
#define LINE_LED1 PAL_LINE(GPIOD, 15U)
#define LINE_RC1 PAL_LINE(GPIOE, 0U)
@@ -441,8 +441,8 @@
PIN_MODE_ALTERNATE(SRVB2) | \
PIN_MODE_ALTERNATE(SRVB3) | \
PIN_MODE_ALTERNATE(SRVB4) | \
- PIN_MODE_ALTERNATE(I2C2_SCL_EXTERNAL) | \
- PIN_MODE_ALTERNATE(I2C2_SDA_EXTERNAL) | \
+ PIN_MODE_ALTERNATE(I2C2_SCL) | \
+ PIN_MODE_ALTERNATE(I2C2_SDA) | \
PIN_MODE_OUTPUT(SPI2_EXTERNAL_CS) | \
PIN_MODE_INPUT(PB13) | \
PIN_MODE_ALTERNATE(SPI2_EXTERNAL_MISO) | \
@@ -458,8 +458,8 @@
PIN_OTYPE_PUSHPULL(SRVB2) | \
PIN_OTYPE_PUSHPULL(SRVB3) | \
PIN_OTYPE_PUSHPULL(SRVB4) | \
- PIN_OTYPE_OPENDRAIN(I2C2_SCL_EXTERNAL) | \
- PIN_OTYPE_OPENDRAIN(I2C2_SDA_EXTERNAL) | \
+ PIN_OTYPE_OPENDRAIN(I2C2_SCL) | \
+ PIN_OTYPE_OPENDRAIN(I2C2_SDA) | \
PIN_OTYPE_PUSHPULL(SPI2_EXTERNAL_CS) | \
PIN_OTYPE_PUSHPULL(PB13) | \
PIN_OTYPE_PUSHPULL(SPI2_EXTERNAL_MISO) | \
@@ -475,8 +475,8 @@
PIN_OSPEED_SPEED_HIGH(SRVB2) | \
PIN_OSPEED_SPEED_HIGH(SRVB3) | \
PIN_OSPEED_SPEED_HIGH(SRVB4) | \
- PIN_OSPEED_SPEED_HIGH(I2C2_SCL_EXTERNAL) | \
- PIN_OSPEED_SPEED_HIGH(I2C2_SDA_EXTERNAL) | \
+ PIN_OSPEED_SPEED_HIGH(I2C2_SCL) | \
+ PIN_OSPEED_SPEED_HIGH(I2C2_SDA) | \
PIN_OSPEED_SPEED_HIGH(SPI2_EXTERNAL_CS) | \
PIN_OSPEED_SPEED_VERYLOW(PB13) | \
PIN_OSPEED_SPEED_HIGH(SPI2_EXTERNAL_MISO) | \
@@ -492,8 +492,8 @@
PIN_PUPDR_FLOATING(SRVB2) | \
PIN_PUPDR_FLOATING(SRVB3) | \
PIN_PUPDR_FLOATING(SRVB4) | \
- PIN_PUPDR_PULLUP(I2C2_SCL_EXTERNAL) | \
- PIN_PUPDR_PULLUP(I2C2_SDA_EXTERNAL) | \
+ PIN_PUPDR_PULLUP(I2C2_SCL) | \
+ PIN_PUPDR_PULLUP(I2C2_SDA) | \
PIN_PUPDR_FLOATING(SPI2_EXTERNAL_CS) | \
PIN_PUPDR_PULLDOWN(PB13) | \
PIN_PUPDR_FLOATING(SPI2_EXTERNAL_MISO) | \
@@ -509,8 +509,8 @@
PIN_ODR_LEVEL_LOW(SRVB2) | \
PIN_ODR_LEVEL_LOW(SRVB3) | \
PIN_ODR_LEVEL_LOW(SRVB4) | \
- PIN_ODR_LEVEL_HIGH(I2C2_SCL_EXTERNAL) | \
- PIN_ODR_LEVEL_HIGH(I2C2_SDA_EXTERNAL) | \
+ PIN_ODR_LEVEL_HIGH(I2C2_SCL) | \
+ PIN_ODR_LEVEL_HIGH(I2C2_SDA) | \
PIN_ODR_LEVEL_HIGH(SPI2_EXTERNAL_CS) | \
PIN_ODR_LEVEL_LOW(PB13) | \
PIN_ODR_LEVEL_HIGH(SPI2_EXTERNAL_MISO) | \
@@ -527,8 +527,8 @@
#define VAL_GPIOB_AFRH (PIN_AFIO_AF(SRVB3, 2) | \
PIN_AFIO_AF(SRVB4, 2) | \
- PIN_AFIO_AF(I2C2_SCL_EXTERNAL, 4) | \
- PIN_AFIO_AF(I2C2_SDA_EXTERNAL, 4) | \
+ PIN_AFIO_AF(I2C2_SCL, 4) | \
+ PIN_AFIO_AF(I2C2_SDA, 4) | \
PIN_AFIO_AF(SPI2_EXTERNAL_CS, 0) | \
PIN_AFIO_AF(PB13, 0) | \
PIN_AFIO_AF(SPI2_EXTERNAL_MISO, 5) | \
@@ -649,8 +649,8 @@
PIN_MODE_ALTERNATE(UART3_RX) | \
PIN_MODE_OUTPUT(LED4) | \
PIN_MODE_INPUT(PD11) | \
- PIN_MODE_ALTERNATE(I2C4_SCL_EXTERNAL) | \
- PIN_MODE_ALTERNATE(I2C4_SDA_EXTERNAL) | \
+ PIN_MODE_ALTERNATE(I2C4_SCL) | \
+ PIN_MODE_ALTERNATE(I2C4_SDA) | \
PIN_MODE_INPUT(PD14) | \
PIN_MODE_OUTPUT(LED1))
@@ -666,8 +666,8 @@
PIN_OTYPE_PUSHPULL(UART3_RX) | \
PIN_OTYPE_PUSHPULL(LED4) | \
PIN_OTYPE_PUSHPULL(PD11) | \
- PIN_OTYPE_OPENDRAIN(I2C4_SCL_EXTERNAL) | \
- PIN_OTYPE_OPENDRAIN(I2C4_SDA_EXTERNAL) | \
+ PIN_OTYPE_OPENDRAIN(I2C4_SCL) | \
+ PIN_OTYPE_OPENDRAIN(I2C4_SDA) | \
PIN_OTYPE_PUSHPULL(PD14) | \
PIN_OTYPE_PUSHPULL(LED1))
@@ -683,8 +683,8 @@
PIN_OSPEED_SPEED_HIGH(UART3_RX) | \
PIN_OSPEED_SPEED_VERYLOW(LED4) | \
PIN_OSPEED_SPEED_VERYLOW(PD11) | \
- PIN_OSPEED_SPEED_HIGH(I2C4_SCL_EXTERNAL) | \
- PIN_OSPEED_SPEED_HIGH(I2C4_SDA_EXTERNAL) | \
+ PIN_OSPEED_SPEED_HIGH(I2C4_SCL) | \
+ PIN_OSPEED_SPEED_HIGH(I2C4_SDA) | \
PIN_OSPEED_SPEED_VERYLOW(PD14) | \
PIN_OSPEED_SPEED_VERYLOW(LED1))
@@ -700,8 +700,8 @@
PIN_PUPDR_FLOATING(UART3_RX) | \
PIN_PUPDR_FLOATING(LED4) | \
PIN_PUPDR_PULLDOWN(PD11) | \
- PIN_PUPDR_PULLUP(I2C4_SCL_EXTERNAL) | \
- PIN_PUPDR_PULLUP(I2C4_SDA_EXTERNAL) | \
+ PIN_PUPDR_PULLUP(I2C4_SCL) | \
+ PIN_PUPDR_PULLUP(I2C4_SDA) | \
PIN_PUPDR_PULLDOWN(PD14) | \
PIN_PUPDR_FLOATING(LED1))
@@ -717,8 +717,8 @@
PIN_ODR_LEVEL_HIGH(UART3_RX) | \
PIN_ODR_LEVEL_LOW(LED4) | \
PIN_ODR_LEVEL_LOW(PD11) | \
- PIN_ODR_LEVEL_HIGH(I2C4_SCL_EXTERNAL) | \
- PIN_ODR_LEVEL_HIGH(I2C4_SDA_EXTERNAL) | \
+ PIN_ODR_LEVEL_HIGH(I2C4_SCL) | \
+ PIN_ODR_LEVEL_HIGH(I2C4_SDA) | \
PIN_ODR_LEVEL_LOW(PD14) | \
PIN_ODR_LEVEL_LOW(LED1))
@@ -735,8 +735,8 @@
PIN_AFIO_AF(UART3_RX, 7) | \
PIN_AFIO_AF(LED4, 0) | \
PIN_AFIO_AF(PD11, 0) | \
- PIN_AFIO_AF(I2C4_SCL_EXTERNAL, 4) | \
- PIN_AFIO_AF(I2C4_SDA_EXTERNAL, 4) | \
+ PIN_AFIO_AF(I2C4_SCL, 4) | \
+ PIN_AFIO_AF(I2C4_SDA, 4) | \
PIN_AFIO_AF(PD14, 0) | \
PIN_AFIO_AF(LED1, 0))
@@ -1483,10 +1483,10 @@
#define AF_LINE_SRVB3 2U
#define AF_SRVB4 2U
#define AF_LINE_SRVB4 2U
-#define AF_I2C2_SCL_EXTERNAL 4U
-#define AF_LINE_I2C2_SCL_EXTERNAL 4U
-#define AF_I2C2_SDA_EXTERNAL 4U
-#define AF_LINE_I2C2_SDA_EXTERNAL 4U
+#define AF_I2C2_SCL 4U
+#define AF_LINE_I2C2_SCL 4U
+#define AF_I2C2_SDA 4U
+#define AF_LINE_I2C2_SDA 4U
#define AF_SPI2_EXTERNAL_MISO 5U
#define AF_LINE_SPI2_EXTERNAL_MISO 5U
#define AF_SPI2_EXTERNAL_MOSI 5U
@@ -1521,10 +1521,10 @@
#define AF_LINE_UART3_TX 7U
#define AF_UART3_RX 7U
#define AF_LINE_UART3_RX 7U
-#define AF_I2C4_SCL_EXTERNAL 4U
-#define AF_LINE_I2C4_SCL_EXTERNAL 4U
-#define AF_I2C4_SDA_EXTERNAL 4U
-#define AF_LINE_I2C4_SDA_EXTERNAL 4U
+#define AF_I2C4_SCL 4U
+#define AF_LINE_I2C4_SCL 4U
+#define AF_I2C4_SDA 4U
+#define AF_LINE_I2C4_SDA 4U
#define AF_RC1 8U
#define AF_LINE_RC1 8U
#define AF_SPI4_INTERNAL_CLK 5U
diff --git a/sw/airborne/boards/tawaki/chibios/v1.1/tawaki_1.1.cfg b/sw/airborne/boards/tawaki/chibios/v1.1/tawaki_1.1.cfg
index 6a475b66dd..e1b3fd5f7d 100644
--- a/sw/airborne/boards/tawaki/chibios/v1.1/tawaki_1.1.cfg
+++ b/sw/airborne/boards/tawaki/chibios/v1.1/tawaki_1.1.cfg
@@ -95,8 +95,8 @@ PB06 SRVB1 PWM AF:TIM4_CH1 ()
PB07 SRVB2 PWM AF:TIM4_CH2 ()
PB08 SRVB3 PWM AF:TIM4_CH3 ()
PB09 SRVB4 PWM AF:TIM4_CH4 ()
-PB10 I2C2_SCL_EXTERNAL I2C AF:I2C2_SCL
-PB11 I2C2_SDA_EXTERNAL I2C AF:I2C2_SDA
+PB10 I2C2_SCL I2C AF:I2C2_SCL #External
+PB11 I2C2_SDA I2C AF:I2C2_SDA #External
PB12 SPI2_EXTERNAL_CS OUTPUT PUSHPULL SPEED_HIGH FLOATING LEVEL_HIGH
PB14 SPI2_EXTERNAL_MISO SPI AF:SPI2_MISO
PB15 SPI2_EXTERNAL_MOSI SPI AF:SPI2_MOSI
@@ -121,8 +121,8 @@ PD06 UART2_RX UART AF:USART2_RX
PD08 UART3_TX UART AF:USART3_TX
PD09 UART3_RX UART AF:USART3_RX
PD10 LED4 LED
-PD12 I2C4_SCL_EXTERNAL I2C AF:I2C4_SCL
-PD13 I2C4_SDA_EXTERNAL I2C AF:I2C4_SDA
+PD12 I2C4_SCL I2C AF:I2C4_SCL #External
+PD13 I2C4_SDA I2C AF:I2C4_SDA #External
PD15 LED1 LED
PE00 RC1 UART AF:UART8_RX ()
diff --git a/sw/airborne/modules/actuators/actuators_ppm.h b/sw/airborne/modules/actuators/actuators_ppm.h
deleted file mode 100644
index 95cb1115cc..0000000000
--- a/sw/airborne/modules/actuators/actuators_ppm.h
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Copyright (C) 2012 Gautier Hattenberger
- *
- * This file is part of Paparazzi.
- *
- * Paparazzi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2, or (at your option)
- * any later version.
- *
- * Paparazzi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Paparazzi; see the file COPYING. If not, write to
- * the Free Software Foundation, 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef ACTUATORS_PPM_H
-#define ACTUATORS_PPM_H
-
-#include "modules/actuators/servos_ppm_hw.h"
-
-#endif /* ACTUATORS_PPM_H */
diff --git a/sw/airborne/modules/sensors/airspeed_ms45xx_i2c.c b/sw/airborne/modules/sensors/airspeed_ms45xx_i2c.c
index 8a72054d81..3ce494870f 100644
--- a/sw/airborne/modules/sensors/airspeed_ms45xx_i2c.c
+++ b/sw/airborne/modules/sensors/airspeed_ms45xx_i2c.c
@@ -229,6 +229,18 @@ void ms45xx_i2c_event(void)
/* 14bit raw pressure */
uint16_t p_raw = 0x3FFF & (((uint16_t)(ms45xx_trans.buf[0]) << 8) | (uint16_t)(ms45xx_trans.buf[1]));
+ /* 11bit raw temperature, 5 LSB bits not used */
+ uint16_t temp_raw = 0xFFE0 & (((uint16_t)(ms45xx_trans.buf[2]) << 8) |
+ (uint16_t)(ms45xx_trans.buf[3]));
+ temp_raw = temp_raw >> 5;
+
+ /* Reject any values that are the absolute minimum or maximums these
+ can happen due to gnd lifts or communication errors on the bus */
+ if(p_raw == 0x3FFF || p_raw == 0 || temp_raw == 0x7FF || temp_raw == 0) {
+ ms45xx_trans.status = I2CTransDone;
+ return;
+ }
+
/* For type Diff
* Output is proportional to the difference between Port 1 and Port 2. Output
* swings positive when Port 1> Port 2. Output is 50% of total counts
@@ -256,10 +268,6 @@ void ms45xx_i2c_event(void)
}
}
- /* 11bit raw temperature, 5 LSB bits not used */
- uint16_t temp_raw = 0xFFE0 & (((uint16_t)(ms45xx_trans.buf[2]) << 8) |
- (uint16_t)(ms45xx_trans.buf[3]));
- temp_raw = temp_raw >> 5;
/* 0 = -50degC, 20147 = 150degC
* ms45xx_temperature in 0.1 deg Celcius
*/
diff --git a/sw/ext/chibios b/sw/ext/chibios
index b0ee54fbe8..5aa52cc1a4 160000
--- a/sw/ext/chibios
+++ b/sw/ext/chibios
@@ -1 +1 @@
-Subproject commit b0ee54fbe808a570d02f36baa33d5c446806b628
+Subproject commit 5aa52cc1a4c37d25d0764a85af76edb4cb257722
diff --git a/tests/modules/test_arch/modules/actuators/servos_ppm_hw.h b/tests/modules/test_arch/modules/actuators/servos_ppm_hw.h
deleted file mode 100644
index 63f8d5eeda..0000000000
--- a/tests/modules/test_arch/modules/actuators/servos_ppm_hw.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (C) 2012 Gautier Hattenberger
- *
- * This file is part of paparazzi.
- *
- * paparazzi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2, or (at your option)
- * any later version.
- *
- * paparazzi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with paparazzi; see the file COPYING. If not, write to
- * the Free Software Foundation, 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- */
-
-#ifndef SERVOS_PPM_HW_H
-#define SERVOS_PPM_HW_H
-
-#define SERVOS_TICS_OF_USEC(_v) (_v)
-
-#define ActuatorPpmSet(_i, _v) {}
-#define ActuatorsPpmInit() {}
-#define ActuatorsPpmCommit() {}
-
-#endif
-
-