From ee6b44113d03dbdd535e54981cea9954d7e796c2 Mon Sep 17 00:00:00 2001 From: Peter Barker Date: Mon, 20 Feb 2023 12:05:07 +1100 Subject: [PATCH] AP_Compass: add and use AP_COMPASS_ICM20948_ENABLED --- libraries/AP_Compass/AP_Compass.cpp | 6 +++--- libraries/AP_Compass/AP_Compass.h | 2 ++ libraries/AP_Compass/AP_Compass_AK09916.cpp | 2 ++ libraries/AP_Compass/AP_Compass_AK09916.h | 2 ++ libraries/AP_Compass/AP_Compass_config.h | 4 ++++ 5 files changed, 13 insertions(+), 3 deletions(-) diff --git a/libraries/AP_Compass/AP_Compass.cpp b/libraries/AP_Compass/AP_Compass.cpp index 87c0fde243..2143550e2f 100644 --- a/libraries/AP_Compass/AP_Compass.cpp +++ b/libraries/AP_Compass/AP_Compass.cpp @@ -1107,7 +1107,7 @@ void Compass::_probe_external_i2c_compasses(void) #ifndef HAL_BUILD_AP_PERIPH // AK09916 on ICM20948 -#if AP_COMPASS_AK09916_ENABLED +#if AP_COMPASS_AK09916_ENABLED && AP_COMPASS_ICM20948_ENABLED FOREACH_I2C_EXTERNAL(i) { ADD_BACKEND(DRIVER_ICM20948, AP_Compass_AK09916::probe_ICM20948(GET_I2C_DEVICE(i, HAL_COMPASS_AK09916_I2C_ADDR), GET_I2C_DEVICE(i, HAL_COMPASS_ICM20948_I2C_ADDR), @@ -1127,7 +1127,7 @@ void Compass::_probe_external_i2c_compasses(void) all_external, ROTATION_PITCH_180_YAW_90)); } #endif -#endif // AP_COMPASS_AK09916_ENABLED +#endif // AP_COMPASS_AK09916_ENABLED && AP_COMPASS_ICM20948_ENABLED #endif // HAL_BUILD_AP_PERIPH #if AP_COMPASS_LIS3MDL_ENABLED @@ -1380,7 +1380,7 @@ void Compass::_detect_backends(void) // first MPU9250 to run without disturbance at high rate ADD_BACKEND(DRIVER_AK8963, AP_Compass_AK8963::probe_mpu9250(1, ROTATION_YAW_270)); #endif -#if AP_COMPASS_AK09916_ENABLED +#if AP_COMPASS_AK09916_ENABLED && AP_COMPASS_ICM20948_ENABLED ADD_BACKEND(DRIVER_AK09916, AP_Compass_AK09916::probe_ICM20948(0, ROTATION_ROLL_180_YAW_90)); #endif break; diff --git a/libraries/AP_Compass/AP_Compass.h b/libraries/AP_Compass/AP_Compass.h index 6f798eff75..25857d4407 100644 --- a/libraries/AP_Compass/AP_Compass.h +++ b/libraries/AP_Compass/AP_Compass.h @@ -438,7 +438,9 @@ private: #if AP_COMPASS_IST8310_ENABLED DRIVER_IST8310 =7, #endif +#if AP_COMPASS_ICM20948_ENABLED DRIVER_ICM20948 =8, +#endif DRIVER_MMC3416 =9, #if AP_COMPASS_UAVCAN_ENABLED DRIVER_UAVCAN =11, diff --git a/libraries/AP_Compass/AP_Compass_AK09916.cpp b/libraries/AP_Compass/AP_Compass_AK09916.cpp index ba1a808057..a7d959d4f0 100644 --- a/libraries/AP_Compass/AP_Compass_AK09916.cpp +++ b/libraries/AP_Compass/AP_Compass_AK09916.cpp @@ -100,6 +100,7 @@ AP_Compass_Backend *AP_Compass_AK09916::probe(AP_HAL::OwnPtr return sensor; } +#if AP_COMPASS_ICM20948_ENABLED AP_Compass_Backend *AP_Compass_AK09916::probe_ICM20948(AP_HAL::OwnPtr dev, AP_HAL::OwnPtr dev_icm, bool force_external, @@ -221,6 +222,7 @@ AP_Compass_Backend *AP_Compass_AK09916::probe_ICM20948_I2C(uint8_t inv2_instance return sensor; } +#endif // AP_COMPASS_ICM20948_ENABLED bool AP_Compass_AK09916::init() { diff --git a/libraries/AP_Compass/AP_Compass_AK09916.h b/libraries/AP_Compass/AP_Compass_AK09916.h index cab98d50de..f83550e64a 100644 --- a/libraries/AP_Compass/AP_Compass_AK09916.h +++ b/libraries/AP_Compass/AP_Compass_AK09916.h @@ -52,6 +52,7 @@ public: bool force_external, enum Rotation rotation); +#if AP_COMPASS_ICM20948_ENABLED /* Probe for AK09916 on auxiliary bus of ICM20948, connected through I2C */ static AP_Compass_Backend *probe_ICM20948(AP_HAL::OwnPtr dev, AP_HAL::OwnPtr dev_icm, @@ -66,6 +67,7 @@ public: /* Probe for AK09916 on auxiliary bus of ICM20948, connected through I2C */ static AP_Compass_Backend *probe_ICM20948_I2C(uint8_t mpu9250_instance, enum Rotation rotation); +#endif static constexpr const char *name = "AK09916"; diff --git a/libraries/AP_Compass/AP_Compass_config.h b/libraries/AP_Compass/AP_Compass_config.h index f08dae86e3..d79bf1ea2e 100644 --- a/libraries/AP_Compass/AP_Compass_config.h +++ b/libraries/AP_Compass/AP_Compass_config.h @@ -59,6 +59,10 @@ #define AP_COMPASS_HMC5843_ENABLED AP_COMPASS_I2C_BACKEND_DEFAULT_ENABLED #endif +#ifndef AP_COMPASS_ICM20948_ENABLED +#define AP_COMPASS_ICM20948_ENABLED AP_COMPASS_I2C_BACKEND_DEFAULT_ENABLED +#endif + #ifndef AP_COMPASS_IST8308_ENABLED #define AP_COMPASS_IST8308_ENABLED AP_COMPASS_I2C_BACKEND_DEFAULT_ENABLED #endif