AP_Compass: probe more addresses for IST8310

IST8310 can be on 4 possible i2c addresses
This commit is contained in:
Andrew Tridgell 2019-09-06 06:28:11 +10:00
parent 1edd1034f9
commit 1cb775e2c2
1 changed files with 11 additions and 8 deletions

View File

@ -708,17 +708,20 @@ 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 };
for (uint8_t a=0; a<ARRAY_SIZE(ist8310_addr); a++) {
FOREACH_I2C_EXTERNAL(i) {
ADD_BACKEND(DRIVER_IST8310, AP_Compass_IST8310::probe(GET_I2C_DEVICE(i, HAL_COMPASS_IST8310_I2C_ADDR),
ADD_BACKEND(DRIVER_IST8310, AP_Compass_IST8310::probe(GET_I2C_DEVICE(i, ist8310_addr[a]),
true, default_rotation));
}
FOREACH_I2C_INTERNAL(i) {
ADD_BACKEND(DRIVER_IST8310, AP_Compass_IST8310::probe(GET_I2C_DEVICE(i, HAL_COMPASS_IST8310_I2C_ADDR),
ADD_BACKEND(DRIVER_IST8310, AP_Compass_IST8310::probe(GET_I2C_DEVICE(i, ist8310_addr[a]),
all_external, default_rotation));
}
}
}
// external i2c bus
FOREACH_I2C_EXTERNAL(i) {