diff --git a/conf/airframes/ENAC/fixed-wing/apogee.xml b/conf/airframes/ENAC/fixed-wing/apogee.xml
index a8687c32b08..f29fd84bf29 100644
--- a/conf/airframes/ENAC/fixed-wing/apogee.xml
+++ b/conf/airframes/ENAC/fixed-wing/apogee.xml
@@ -33,6 +33,7 @@
+
diff --git a/conf/airframes/examples/microjet_lisa_m.xml b/conf/airframes/examples/microjet_lisa_m.xml
index 491b8367c9a..cd1e3a14203 100644
--- a/conf/airframes/examples/microjet_lisa_m.xml
+++ b/conf/airframes/examples/microjet_lisa_m.xml
@@ -47,6 +47,7 @@
+
diff --git a/conf/airframes/examples/quadrotor_lisa_mx.xml b/conf/airframes/examples/quadrotor_lisa_mx.xml
index b391cca192b..14f8045803c 100644
--- a/conf/airframes/examples/quadrotor_lisa_mx.xml
+++ b/conf/airframes/examples/quadrotor_lisa_mx.xml
@@ -63,6 +63,7 @@
+
diff --git a/conf/firmwares/rotorcraft.makefile b/conf/firmwares/rotorcraft.makefile
index 36ab61eb629..5278b7dd61a 100644
--- a/conf/firmwares/rotorcraft.makefile
+++ b/conf/firmwares/rotorcraft.makefile
@@ -141,8 +141,6 @@ ap.srcs += subsystems/actuators.c
#
ap.srcs += subsystems/air_data.c
-include $(CFG_SHARED)/baro_board.makefile
-
#
# Analog Backend
#
diff --git a/conf/firmwares/subsystems/fixedwing/autopilot.makefile b/conf/firmwares/subsystems/fixedwing/autopilot.makefile
index c7e38d561e3..a63d0fc48da 100644
--- a/conf/firmwares/subsystems/fixedwing/autopilot.makefile
+++ b/conf/firmwares/subsystems/fixedwing/autopilot.makefile
@@ -161,9 +161,6 @@ ap_srcs += $(SRC_ARCH)/subsystems/settings_arch.c
# AIR DATA
ap_srcs += subsystems/air_data.c
-# BARO
-include $(CFG_SHARED)/baro_board.makefile
-
######################################################################
##
diff --git a/conf/modules/baro_board.xml b/conf/modules/baro_board.xml
new file mode 100644
index 00000000000..c8da974be4f
--- /dev/null
+++ b/conf/modules/baro_board.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+ Baro board default.
+ Drivers for baros already on an autopilot board.
+
+
+
+
+
+
+
+
+
+include $(CFG_SHARED)/baro_board.makefile
+
+
+
diff --git a/sw/airborne/boards/apogee/baro_board.c b/sw/airborne/boards/apogee/baro_board.c
index c337bdf6273..e868dcd6aab 100644
--- a/sw/airborne/boards/apogee/baro_board.c
+++ b/sw/airborne/boards/apogee/baro_board.c
@@ -27,7 +27,7 @@
*/
#include "std.h"
-#include "subsystems/sensors/baro.h"
+#include "modules/sensors/baro_board_module.h"
#include "peripherals/mpl3115.h"
// to get MPU status
diff --git a/sw/airborne/boards/ardrone/baro_board.c b/sw/airborne/boards/ardrone/baro_board.c
index 67528f47618..b6d553b0e1c 100644
--- a/sw/airborne/boards/ardrone/baro_board.c
+++ b/sw/airborne/boards/ardrone/baro_board.c
@@ -26,7 +26,7 @@
* Based on BMP180 implementation by C. de Wagter.
*/
-#include "subsystems/sensors/baro.h"
+#include "modules/sensors/baro_board_module.h"
#include "subsystems/abi.h"
#include "baro_board.h"
#include "navdata.h"
diff --git a/sw/airborne/boards/baro_board_ms5611_i2c.c b/sw/airborne/boards/baro_board_ms5611_i2c.c
index c7a2e34a206..e59d06d1f71 100644
--- a/sw/airborne/boards/baro_board_ms5611_i2c.c
+++ b/sw/airborne/boards/baro_board_ms5611_i2c.c
@@ -27,7 +27,7 @@
*
*/
-#include "subsystems/sensors/baro.h"
+#include "modules/sensors/baro_board_module.h"
#include "peripherals/ms5611_i2c.h"
#include "mcu_periph/sys_time.h"
diff --git a/sw/airborne/boards/baro_board_ms5611_spi.c b/sw/airborne/boards/baro_board_ms5611_spi.c
index 9c8a84f403b..82f6303e393 100644
--- a/sw/airborne/boards/baro_board_ms5611_spi.c
+++ b/sw/airborne/boards/baro_board_ms5611_spi.c
@@ -27,7 +27,7 @@
*
*/
-#include "subsystems/sensors/baro.h"
+#include "modules/sensors/baro_board_module.h"
#include "peripherals/ms5611_spi.h"
#include "mcu_periph/sys_time.h"
diff --git a/sw/airborne/boards/booz/baro_board.c b/sw/airborne/boards/booz/baro_board.c
index e7d955ecdb3..751625a145a 100644
--- a/sw/airborne/boards/booz/baro_board.c
+++ b/sw/airborne/boards/booz/baro_board.c
@@ -25,7 +25,7 @@
*/
-#include "subsystems/sensors/baro.h"
+#include "modules/sensors/baro_board_module.h"
#include "generated/airframe.h"
#include "subsystems/abi.h"
diff --git a/sw/airborne/boards/booz/baro_board.h b/sw/airborne/boards/booz/baro_board.h
index f47abe700ba..94d09012dce 100644
--- a/sw/airborne/boards/booz/baro_board.h
+++ b/sw/airborne/boards/booz/baro_board.h
@@ -30,7 +30,7 @@
#include "std.h"
-#include "subsystems/sensors/baro.h"
+#include "modules/sensors/baro_board_module.h"
#include "mcu_periph/adc.h"
#include "mcu_periph/dac.h"
diff --git a/sw/airborne/boards/lisa_l/baro_board.c b/sw/airborne/boards/lisa_l/baro_board.c
index a7a6a7834bf..14b8f5f1796 100644
--- a/sw/airborne/boards/lisa_l/baro_board.c
+++ b/sw/airborne/boards/lisa_l/baro_board.c
@@ -21,7 +21,7 @@
*/
#include "std.h"
-#include "subsystems/sensors/baro.h"
+#include "modules/sensors/baro_board_module.h"
#include "mcu_periph/i2c.h"
#include "subsystems/abi.h"
#include "led.h"
diff --git a/sw/airborne/boards/lisa_m/baro_board.c b/sw/airborne/boards/lisa_m/baro_board.c
index 6a23b1173d6..b4219a33f3e 100644
--- a/sw/airborne/boards/lisa_m/baro_board.c
+++ b/sw/airborne/boards/lisa_m/baro_board.c
@@ -25,7 +25,7 @@
#include "std.h"
-#include "subsystems/sensors/baro.h"
+#include "modules/sensors/baro_board_module.h"
#include "peripherals/bmp085.h"
#include "peripherals/bmp085_regs.h"
#include
diff --git a/sw/airborne/boards/navgo/baro_board.c b/sw/airborne/boards/navgo/baro_board.c
index fd99a5c6cac..742bea2aec1 100644
--- a/sw/airborne/boards/navgo/baro_board.c
+++ b/sw/airborne/boards/navgo/baro_board.c
@@ -27,7 +27,7 @@
#include "std.h"
#include "baro_board.h"
-#include "subsystems/sensors/baro.h"
+#include "modules/sensors/baro_board_module.h"
#include "peripherals/mcp355x.h"
#include "subsystems/abi.h"
#include "led.h"
diff --git a/sw/airborne/boards/navstik/baro_board.c b/sw/airborne/boards/navstik/baro_board.c
index b0d030e2ec1..b44dac886d1 100644
--- a/sw/airborne/boards/navstik/baro_board.c
+++ b/sw/airborne/boards/navstik/baro_board.c
@@ -25,7 +25,7 @@
#include "std.h"
-#include "subsystems/sensors/baro.h"
+#include "modules/sensors/baro_board_module.h"
#include "peripherals/bmp085.h"
#include "peripherals/bmp085_regs.h"
#include
diff --git a/sw/airborne/boards/umarim/baro_board.c b/sw/airborne/boards/umarim/baro_board.c
index c02542ed145..89df1f24e62 100644
--- a/sw/airborne/boards/umarim/baro_board.c
+++ b/sw/airborne/boards/umarim/baro_board.c
@@ -27,7 +27,7 @@
#include "std.h"
#include "baro_board.h"
-#include "subsystems/sensors/baro.h"
+#include "modules/sensors/baro_board_module.h"
#include "peripherals/ads1114.h"
#include "subsystems/abi.h"
#include "led.h"
diff --git a/sw/airborne/firmwares/fixedwing/main_ap.c b/sw/airborne/firmwares/fixedwing/main_ap.c
index da337d4af76..8940cb7526d 100644
--- a/sw/airborne/firmwares/fixedwing/main_ap.c
+++ b/sw/airborne/firmwares/fixedwing/main_ap.c
@@ -54,13 +54,8 @@
#include "subsystems/ahrs/ahrs_aligner.h"
#endif
#include "subsystems/air_data.h"
-#if USE_BARO_BOARD
-#include "subsystems/sensors/baro.h"
-PRINT_CONFIG_MSG_VALUE("USE_BARO_BOARD is TRUE, reading onboard baro: ", BARO_BOARD)
-#endif
#include "subsystems/ins.h"
-
// autopilot & control
#include "state.h"
#include "firmwares/fixedwing/autopilot.h"
@@ -106,6 +101,14 @@ PRINT_CONFIG_MSG_VALUE("USE_BARO_BOARD is TRUE, reading onboard baro: ", BARO_BO
#define COMMAND_YAW_TRIM 0
#endif
+#if USE_BARO_BOARD
+#if BARO_BOARD_MODULE_LOADED
+PRINT_CONFIG_MSG_VALUE("USE_BARO_BOARD is TRUE, reading onboard baro: ", BARO_BOARD)
+#else
+#warning "USE_BARO_BOARD is TRUE, but baro_board.xml module not loaded!"
+#endif // BARO_BOARD_MODULE_LOADED
+#endif // USE_BARO_BOARD
+
/* if PRINT_CONFIG is defined, print some config options */
PRINT_CONFIG_VAR(PERIODIC_FREQUENCY)
PRINT_CONFIG_VAR(NAVIGATION_FREQUENCY)
@@ -121,13 +124,6 @@ PRINT_CONFIG_VAR(TELEMETRY_FREQUENCY)
*/
PRINT_CONFIG_VAR(MODULES_FREQUENCY)
-#if USE_BARO_BOARD
-#ifndef BARO_PERIODIC_FREQUENCY
-#define BARO_PERIODIC_FREQUENCY 50
-#endif
-PRINT_CONFIG_VAR(BARO_PERIODIC_FREQUENCY)
-#endif
-
#if USE_AHRS && USE_IMU
#ifndef AHRS_PROPAGATE_FREQUENCY
@@ -178,9 +174,6 @@ tid_t sensors_tid; ///< id for sensors_task() timer
tid_t attitude_tid; ///< id for attitude_loop() timer
tid_t navigation_tid; ///< id for navigation_task() timer
tid_t monitor_tid; ///< id for monitor_task() timer
-#if USE_BARO_BOARD
-tid_t baro_tid; ///< id for baro_periodic() timer
-#endif
void init_ap( void ) {
#ifndef SINGLE_MCU /** init done in main_fbw in single MCU */
@@ -213,9 +206,6 @@ void init_ap( void ) {
#endif
air_data_init();
-#if USE_BARO_BOARD
- baro_init();
-#endif
ins_init();
@@ -244,9 +234,6 @@ void init_ap( void ) {
modules_tid = sys_time_register_timer(1./MODULES_FREQUENCY, NULL);
telemetry_tid = sys_time_register_timer(1./TELEMETRY_FREQUENCY, NULL);
monitor_tid = sys_time_register_timer(1.0, NULL);
-#if USE_BARO_BOARD
- baro_tid = sys_time_register_timer(1./BARO_PERIODIC_FREQUENCY, NULL);
-#endif
/** - start interrupt task */
mcu_int_enable();
@@ -285,11 +272,6 @@ void handle_periodic_tasks_ap(void) {
if (sys_time_check_and_ack_timer(sensors_tid))
sensors_task();
-#if USE_BARO_BOARD
- if (sys_time_check_and_ack_timer(baro_tid))
- baro_periodic();
-#endif
-
if (sys_time_check_and_ack_timer(navigation_tid))
navigation_task();
@@ -682,10 +664,6 @@ void event_task_ap( void ) {
GpsEvent(on_gps_solution);
#endif /* USE_GPS */
-#if USE_BARO_BOARD
- BaroEvent();
-#endif
-
DatalinkEvent();
diff --git a/sw/airborne/firmwares/rotorcraft/main.c b/sw/airborne/firmwares/rotorcraft/main.c
index b2dfed1683b..924ea261eab 100644
--- a/sw/airborne/firmwares/rotorcraft/main.c
+++ b/sw/airborne/firmwares/rotorcraft/main.c
@@ -54,11 +54,6 @@
#include "subsystems/gps.h"
#include "subsystems/air_data.h"
-#if USE_BARO_BOARD
-#include "subsystems/sensors/baro.h"
-PRINT_CONFIG_MSG_VALUE("USE_BARO_BOARD is TRUE, reading onboard baro: ", BARO_BOARD)
-#endif
-
#include "subsystems/electrical.h"
#include "firmwares/rotorcraft/autopilot.h"
@@ -84,6 +79,14 @@ PRINT_CONFIG_MSG_VALUE("USE_BARO_BOARD is TRUE, reading onboard baro: ", BARO_BO
#include "subsystems/abi.h"
+#if USE_BARO_BOARD
+#if BARO_BOARD_MODULE_LOADED
+PRINT_CONFIG_MSG_VALUE("USE_BARO_BOARD is TRUE, reading onboard baro: ", BARO_BOARD)
+#else
+#warning "USE_BARO_BOARD is TRUE, but baro_board.xml module not loaded!"
+#endif // BARO_BOARD_MODULE_LOADED
+#endif // USE_BARO_BOARD
+
/* if PRINT_CONFIG is defined, print some config options */
PRINT_CONFIG_VAR(PERIODIC_FREQUENCY)
@@ -97,11 +100,6 @@ PRINT_CONFIG_VAR(TELEMETRY_FREQUENCY)
*/
PRINT_CONFIG_VAR(MODULES_FREQUENCY)
-#ifndef BARO_PERIODIC_FREQUENCY
-#define BARO_PERIODIC_FREQUENCY 50
-#endif
-PRINT_CONFIG_VAR(BARO_PERIODIC_FREQUENCY)
-
#if USE_AHRS && USE_IMU && (defined AHRS_PROPAGATE_FREQUENCY)
#if (AHRS_PROPAGATE_FREQUENCY > PERIODIC_FREQUENCY)
#warning "PERIODIC_FREQUENCY should be least equal or greater than AHRS_PROPAGATE_FREQUENCY"
@@ -121,9 +119,6 @@ tid_t failsafe_tid; ///< id for failsafe_check() timer
tid_t radio_control_tid; ///< id for radio_control_periodic_task() timer
tid_t electrical_tid; ///< id for electrical_periodic() timer
tid_t telemetry_tid; ///< id for telemetry_periodic() timer
-#if USE_BARO_BOARD
-tid_t baro_tid; ///< id for baro_periodic() timer
-#endif
#ifndef SITL
int main( void ) {
@@ -153,9 +148,7 @@ STATIC_INLINE void main_init( void ) {
radio_control_init();
air_data_init();
-#if USE_BARO_BOARD
- baro_init();
-#endif
+
imu_init();
ahrs_aligner_init();
ahrs_init();
@@ -188,9 +181,6 @@ STATIC_INLINE void main_init( void ) {
failsafe_tid = sys_time_register_timer(0.05, NULL);
electrical_tid = sys_time_register_timer(0.1, NULL);
telemetry_tid = sys_time_register_timer((1./TELEMETRY_FREQUENCY), NULL);
-#if USE_BARO_BOARD
- baro_tid = sys_time_register_timer(1./BARO_PERIODIC_FREQUENCY, NULL);
-#endif
}
STATIC_INLINE void handle_periodic_tasks( void ) {
@@ -206,10 +196,6 @@ STATIC_INLINE void handle_periodic_tasks( void ) {
electrical_periodic();
if (sys_time_check_and_ack_timer(telemetry_tid))
telemetry_periodic();
-#if USE_BARO_BOARD
- if (sys_time_check_and_ack_timer(baro_tid))
- baro_periodic();
-#endif
}
STATIC_INLINE void main_periodic( void ) {
@@ -290,10 +276,6 @@ STATIC_INLINE void main_event( void ) {
ImuEvent(on_gyro_event, on_accel_event, on_mag_event);
-#if USE_BARO_BOARD
- BaroEvent();
-#endif
-
#if USE_GPS
GpsEvent(on_gps_event);
#endif
diff --git a/sw/airborne/modules/sensors/airspeed_ads1114.c b/sw/airborne/modules/sensors/airspeed_ads1114.c
index b472beb4ade..f7b4ad910cf 100644
--- a/sw/airborne/modules/sensors/airspeed_ads1114.c
+++ b/sw/airborne/modules/sensors/airspeed_ads1114.c
@@ -26,7 +26,7 @@
*/
#include "modules/sensors/airspeed_ads1114.h"
-#include "subsystems/sensors/baro.h"
+#include "modules/sensors/baro_board_module.h"
#include "baro_board.h"
void airspeed_periodic(void) {
diff --git a/sw/airborne/subsystems/sensors/baro.h b/sw/airborne/modules/sensors/baro_board_module.h
similarity index 86%
rename from sw/airborne/subsystems/sensors/baro.h
rename to sw/airborne/modules/sensors/baro_board_module.h
index 226d2b42b54..80974350581 100644
--- a/sw/airborne/subsystems/sensors/baro.h
+++ b/sw/airborne/modules/sensors/baro_board_module.h
@@ -20,7 +20,7 @@
*/
/**
- * @file subsystems/sensors/baro.h
+ * @file modules/sensors/baro_board_module.h
*
* Common barometric sensor implementation.
* Used with baro integrated to the autopilot board.
@@ -28,13 +28,14 @@
*
*/
-#ifndef SUBSYSTEMS_SENSORS_BARO_H
-#define SUBSYSTEMS_SENSORS_BARO_H
+#ifndef MODULES_SENSORS_BARO_H
+#define MODULES_SENSORS_BARO_H
#include BOARD_CONFIG
#if USE_BARO_BOARD
#include "baro_board.h"
+#define BARO_BOARD_MODULE_LOADED 1
#ifndef BARO_BOARD
#define BARO_BOARD BARO_BOARD_DEFAULT
#endif
@@ -43,4 +44,4 @@
extern void baro_init(void);
extern void baro_periodic(void);
-#endif /* SUBSYSTEMS_SENSORS_BARO_H */
+#endif /* MODULES_SENSORS_BARO_H */
diff --git a/sw/airborne/subsystems/ins/ins_alt_float.c b/sw/airborne/subsystems/ins/ins_alt_float.c
index ea39e5bc90b..cbfaa02469e 100644
--- a/sw/airborne/subsystems/ins/ins_alt_float.c
+++ b/sw/airborne/subsystems/ins/ins_alt_float.c
@@ -51,7 +51,7 @@
struct InsAltFloat ins_impl;
#if USE_BAROMETER
-#include "subsystems/sensors/baro.h"
+#include "modules/sensors/baro_board_module.h"
#include "math/pprz_isa.h"
PRINT_CONFIG_MSG("USE_BAROMETER is TRUE: Using baro for altitude estimation.")
diff --git a/sw/airborne/test/test_baro_board.c b/sw/airborne/test/test_baro_board.c
index 133c3684708..f0de040d7a8 100644
--- a/sw/airborne/test/test_baro_board.c
+++ b/sw/airborne/test/test_baro_board.c
@@ -34,7 +34,7 @@
#include "subsystems/datalink/downlink.h"
-#include "subsystems/sensors/baro.h"
+#include "modules/sensors/baro_board_module.h"
#define ABI_C
#include "subsystems/abi.h"