From 1cb775e2c24aee9328ed479bd2e7270cc37f7b73 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Fri, 6 Sep 2019 06:28:11 +1000 Subject: [PATCH] AP_Compass: probe more addresses for IST8310 IST8310 can be on 4 possible i2c addresses --- libraries/AP_Compass/AP_Compass.cpp | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/libraries/AP_Compass/AP_Compass.cpp b/libraries/AP_Compass/AP_Compass.cpp index 83cf1b0a64..2544e23f82 100644 --- a/libraries/AP_Compass/AP_Compass.cpp +++ b/libraries/AP_Compass/AP_Compass.cpp @@ -708,15 +708,18 @@ void Compass::_probe_external_i2c_compasses(void) } else { default_rotation = ROTATION_PITCH_180; } + // probe all 4 possible addresses + const uint8_t ist8310_addr[] = { 0x0C, 0x0D, 0x0E, 0x0F }; - FOREACH_I2C_EXTERNAL(i) { - ADD_BACKEND(DRIVER_IST8310, AP_Compass_IST8310::probe(GET_I2C_DEVICE(i, HAL_COMPASS_IST8310_I2C_ADDR), - true, default_rotation)); - } - - FOREACH_I2C_INTERNAL(i) { - ADD_BACKEND(DRIVER_IST8310, AP_Compass_IST8310::probe(GET_I2C_DEVICE(i, HAL_COMPASS_IST8310_I2C_ADDR), - all_external, default_rotation)); + for (uint8_t a=0; a