From feb809fbb719aa217bfd6eb84a5ed933b46926e8 Mon Sep 17 00:00:00 2001 From: Peter Barker Date: Wed, 8 Feb 2023 09:55:11 +1100 Subject: [PATCH] AP_Compass: add and use AP_COMPASS_BMM150_ENABLED --- libraries/AP_Compass/AP_Compass.cpp | 8 +++++--- libraries/AP_Compass/AP_Compass.h | 2 ++ libraries/AP_Compass/AP_Compass_BMM150.cpp | 4 ++++ libraries/AP_Compass/AP_Compass_BMM150.h | 6 ++++++ libraries/AP_Compass/AP_Compass_config.h | 4 ++++ 5 files changed, 21 insertions(+), 3 deletions(-) diff --git a/libraries/AP_Compass/AP_Compass.cpp b/libraries/AP_Compass/AP_Compass.cpp index 2d9647ebb2..9d5f2e8101 100644 --- a/libraries/AP_Compass/AP_Compass.cpp +++ b/libraries/AP_Compass/AP_Compass.cpp @@ -1251,15 +1251,15 @@ void Compass::_probe_external_i2c_compasses(void) #endif #endif -#if AP_COMPASS_I2C_BACKEND_DEFAULT_ENABLED && !defined(STM32F1) - // BMM150 on I2C, not on F1 to save flash +#if AP_COMPASS_BMM150_ENABLED + // BMM150 on I2C FOREACH_I2C_EXTERNAL(i) { for (uint8_t addr=BMM150_I2C_ADDR_MIN; addr <= BMM150_I2C_ADDR_MAX; addr++) { ADD_BACKEND(DRIVER_BMM150, AP_Compass_BMM150::probe(GET_I2C_DEVICE(i, addr), true, ROTATION_NONE)); } } -#endif // HAL_BUILD_AP_PERIPH +#endif // AP_COMPASS_BMM150_ENABLED } /* @@ -1320,8 +1320,10 @@ void Compass::_detect_backends(void) break; case AP_BoardConfig::PX4_BOARD_PCNC1: +#if AP_COMPASS_BMM150_ENABLED ADD_BACKEND(DRIVER_BMM150, AP_Compass_BMM150::probe(GET_I2C_DEVICE(0, 0x10), false, ROTATION_NONE)); +#endif break; case AP_BoardConfig::VRX_BOARD_BRAIN54: case AP_BoardConfig::VRX_BOARD_BRAIN51: { diff --git a/libraries/AP_Compass/AP_Compass.h b/libraries/AP_Compass/AP_Compass.h index 65d74dd44c..6799eb06c5 100644 --- a/libraries/AP_Compass/AP_Compass.h +++ b/libraries/AP_Compass/AP_Compass.h @@ -423,7 +423,9 @@ private: #if AP_COMPASS_AK8963_ENABLED DRIVER_AK8963 =2, #endif +#if AP_COMPASS_BMM150_ENABLED DRIVER_BMM150 =3, +#endif DRIVER_LSM9DS1 =4, DRIVER_LIS3MDL =5, DRIVER_AK09916 =6, diff --git a/libraries/AP_Compass/AP_Compass_BMM150.cpp b/libraries/AP_Compass/AP_Compass_BMM150.cpp index 7d26f6ed29..7be066c66f 100644 --- a/libraries/AP_Compass/AP_Compass_BMM150.cpp +++ b/libraries/AP_Compass/AP_Compass_BMM150.cpp @@ -16,6 +16,8 @@ */ #include "AP_Compass_BMM150.h" +#if AP_COMPASS_BMM150_ENABLED + #include #include @@ -325,3 +327,5 @@ void AP_Compass_BMM150::read() drain_accumulated_samples(_compass_instance); } + +#endif // AP_COMPASS_BMM150_ENABLED diff --git a/libraries/AP_Compass/AP_Compass_BMM150.h b/libraries/AP_Compass/AP_Compass_BMM150.h index 36cd26ac73..2043f1b890 100644 --- a/libraries/AP_Compass/AP_Compass_BMM150.h +++ b/libraries/AP_Compass/AP_Compass_BMM150.h @@ -16,6 +16,10 @@ */ #pragma once +#include "AP_Compass_config.h" + +#if AP_COMPASS_BMM150_ENABLED + #include #include #include @@ -70,3 +74,5 @@ private: enum Rotation _rotation; bool _force_external; }; + +#endif // AP_COMPASS_BMM150_ENABLED diff --git a/libraries/AP_Compass/AP_Compass_config.h b/libraries/AP_Compass/AP_Compass_config.h index 9aea7c9b32..eabbe9de1b 100644 --- a/libraries/AP_Compass/AP_Compass_config.h +++ b/libraries/AP_Compass/AP_Compass_config.h @@ -38,6 +38,10 @@ #define AP_COMPASS_AK8963_ENABLED AP_COMPASS_I2C_BACKEND_DEFAULT_ENABLED #endif +#ifndef AP_COMPASS_BMM150_ENABLED +#define AP_COMPASS_BMM150_ENABLED AP_COMPASS_I2C_BACKEND_DEFAULT_ENABLED && !defined(STM32F1) +#endif + #ifndef AP_COMPASS_HMC5843_ENABLED #define AP_COMPASS_HMC5843_ENABLED AP_COMPASS_I2C_BACKEND_DEFAULT_ENABLED #endif