From d2e966a4699435265904f40dc3a32148f9562057 Mon Sep 17 00:00:00 2001 From: Peter Barker Date: Fri, 27 Jan 2023 15:09:50 +1100 Subject: [PATCH 1/3] AP_Compass: add and use AP_COMPASS_LSM303D_ENABLED --- libraries/AP_Compass/AP_Compass.cpp | 6 ++++++ libraries/AP_Compass/AP_Compass.h | 2 ++ libraries/AP_Compass/AP_Compass_LSM303D.cpp | 9 +++++++-- libraries/AP_Compass/AP_Compass_LSM303D.h | 6 ++++++ libraries/AP_Compass/AP_Compass_config.h | 4 ++++ 5 files changed, 25 insertions(+), 2 deletions(-) diff --git a/libraries/AP_Compass/AP_Compass.cpp b/libraries/AP_Compass/AP_Compass.cpp index c1631ceef0fdc..fbc089624ad38 100644 --- a/libraries/AP_Compass/AP_Compass.cpp +++ b/libraries/AP_Compass/AP_Compass.cpp @@ -1353,11 +1353,15 @@ void Compass::_detect_backends(void) case AP_BoardConfig::PX4_BOARD_PIXHAWK: ADD_BACKEND(DRIVER_HMC5843, AP_Compass_HMC5843::probe(hal.spi->get_device(HAL_COMPASS_HMC5843_NAME), false, ROTATION_PITCH_180)); +#if AP_COMPASS_LSM303D_ENABLED ADD_BACKEND(DRIVER_LSM303D, AP_Compass_LSM303D::probe(hal.spi->get_device(HAL_INS_LSM9DS0_A_NAME), ROTATION_NONE)); +#endif break; case AP_BoardConfig::PX4_BOARD_PIXHAWK2: +#if AP_COMPASS_LSM303D_ENABLED ADD_BACKEND(DRIVER_LSM303D, AP_Compass_LSM303D::probe(hal.spi->get_device(HAL_INS_LSM9DS0_EXT_A_NAME), ROTATION_YAW_270)); +#endif // we run the AK8963 only on the 2nd MPU9250, which leaves the // first MPU9250 to run without disturbance at high rate ADD_BACKEND(DRIVER_AK8963, AP_Compass_AK8963::probe_mpu9250(1, ROTATION_YAW_270)); @@ -1401,7 +1405,9 @@ void Compass::_detect_backends(void) case AP_BoardConfig::PX4_BOARD_MINDPXV2: ADD_BACKEND(DRIVER_HMC5843, AP_Compass_HMC5843::probe(GET_I2C_DEVICE(0, HAL_COMPASS_HMC5843_I2C_ADDR), false, ROTATION_YAW_90)); +#if AP_COMPASS_LSM303D_ENABLED ADD_BACKEND(DRIVER_LSM303D, AP_Compass_LSM303D::probe(hal.spi->get_device(HAL_INS_LSM9DS0_A_NAME), ROTATION_PITCH_180_YAW_270)); +#endif break; default: diff --git a/libraries/AP_Compass/AP_Compass.h b/libraries/AP_Compass/AP_Compass.h index 074b94ead4d53..92a4919c2be9c 100644 --- a/libraries/AP_Compass/AP_Compass.h +++ b/libraries/AP_Compass/AP_Compass.h @@ -415,7 +415,9 @@ friend class AP_Compass_Backend; // enum of drivers for COMPASS_TYPEMASK enum DriverType { DRIVER_HMC5843 =0, +#if AP_COMPASS_LSM303D_ENABLED DRIVER_LSM303D =1, +#endif DRIVER_AK8963 =2, DRIVER_BMM150 =3, DRIVER_LSM9DS1 =4, diff --git a/libraries/AP_Compass/AP_Compass_LSM303D.cpp b/libraries/AP_Compass/AP_Compass_LSM303D.cpp index ec5910e8b779d..c3a2e682179e5 100644 --- a/libraries/AP_Compass/AP_Compass_LSM303D.cpp +++ b/libraries/AP_Compass/AP_Compass_LSM303D.cpp @@ -12,13 +12,16 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ + +#include "AP_Compass_LSM303D.h" + +#if AP_COMPASS_LSM303D_ENABLED + #include #include #include -#include "AP_Compass_LSM303D.h" - extern const AP_HAL::HAL &hal; #if CONFIG_HAL_BOARD == HAL_BOARD_LINUX @@ -428,3 +431,5 @@ bool AP_Compass_LSM303D::_mag_set_samplerate(uint16_t frequency) return true; } + +#endif // AP_COMPASS_LSM303D_ENABLED diff --git a/libraries/AP_Compass/AP_Compass_LSM303D.h b/libraries/AP_Compass/AP_Compass_LSM303D.h index 7c72d41ede623..328e0477e0577 100644 --- a/libraries/AP_Compass/AP_Compass_LSM303D.h +++ b/libraries/AP_Compass/AP_Compass_LSM303D.h @@ -1,5 +1,9 @@ #pragma once +#include "AP_Compass_config.h" + +#if AP_COMPASS_LSM303D_ENABLED + #include #include #include @@ -53,3 +57,5 @@ class AP_Compass_LSM303D : public AP_Compass_Backend uint8_t _mag_samplerate; uint8_t _reg7_expected; }; + +#endif // AP_COMPASS_LSM303D_ENABLED diff --git a/libraries/AP_Compass/AP_Compass_config.h b/libraries/AP_Compass/AP_Compass_config.h index d10af7e9d8e2c..37a6f978937c1 100644 --- a/libraries/AP_Compass/AP_Compass_config.h +++ b/libraries/AP_Compass/AP_Compass_config.h @@ -37,3 +37,7 @@ #ifndef AP_COMPASS_IST8308_ENABLED #define AP_COMPASS_IST8308_ENABLED AP_COMPASS_I2C_BACKEND_DEFAULT_ENABLED #endif + +#ifndef AP_COMPASS_LSM303D_ENABLED +#define AP_COMPASS_LSM303D_ENABLED AP_COMPASS_I2C_BACKEND_DEFAULT_ENABLED +#endif From 6681219010592d05df97789b5a4a5af7924e2f62 Mon Sep 17 00:00:00 2001 From: Peter Barker Date: Fri, 27 Jan 2023 15:10:12 +1100 Subject: [PATCH 2/3] AP_Compass: make DRIVER_IST8308 an invalid symbol if not compiled in --- libraries/AP_Compass/AP_Compass.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libraries/AP_Compass/AP_Compass.h b/libraries/AP_Compass/AP_Compass.h index 92a4919c2be9c..f13f67d17287a 100644 --- a/libraries/AP_Compass/AP_Compass.h +++ b/libraries/AP_Compass/AP_Compass.h @@ -430,7 +430,9 @@ friend class AP_Compass_Backend; DRIVER_QMC5883L =12, DRIVER_SITL =13, DRIVER_MAG3110 =14, +#if AP_COMPASS_IST8308_ENABLED DRIVER_IST8308 =15, +#endif DRIVER_RM3100 =16, DRIVER_MSP =17, DRIVER_SERIAL =18, From d864b741c2ef846d6e773261c8b152d532f51ee9 Mon Sep 17 00:00:00 2001 From: Peter Barker Date: Fri, 27 Jan 2023 15:51:50 +1100 Subject: [PATCH 3/3] autotest: add AP_COMPASS_LSM303D_ENABLED to must-have drivers for CubeOrange --- Tools/autotest/test_build_options.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Tools/autotest/test_build_options.py b/Tools/autotest/test_build_options.py index f138d6194e15d..712abc202f726 100755 --- a/Tools/autotest/test_build_options.py +++ b/Tools/autotest/test_build_options.py @@ -64,7 +64,10 @@ def __init__(self, def must_have_defines_for_board(self, board): '''return a set of defines which must always be enabled''' must_have_defines = { - "CubeOrange": frozenset(['AP_BARO_MS56XX_ENABLED']) + "CubeOrange": frozenset([ + 'AP_BARO_MS56XX_ENABLED', + 'AP_COMPASS_LSM303D_ENABLED', + ]) } return must_have_defines.get(board, frozenset([]))