Browse Source

AP_Compass: probe more addresses for IST8310

IST8310 can be on 4 possible i2c addresses
master
Andrew Tridgell 6 years ago
parent
commit
1cb775e2c2
  1. 21
      libraries/AP_Compass/AP_Compass.cpp

21
libraries/AP_Compass/AP_Compass.cpp

@ -708,15 +708,18 @@ void Compass::_probe_external_i2c_compasses(void)
} else { } else {
default_rotation = ROTATION_PITCH_180; default_rotation = ROTATION_PITCH_180;
} }
// probe all 4 possible addresses
FOREACH_I2C_EXTERNAL(i) { const uint8_t ist8310_addr[] = { 0x0C, 0x0D, 0x0E, 0x0F };
ADD_BACKEND(DRIVER_IST8310, AP_Compass_IST8310::probe(GET_I2C_DEVICE(i, HAL_COMPASS_IST8310_I2C_ADDR),
true, default_rotation)); 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, ist8310_addr[a]),
FOREACH_I2C_INTERNAL(i) { true, default_rotation));
ADD_BACKEND(DRIVER_IST8310, AP_Compass_IST8310::probe(GET_I2C_DEVICE(i, HAL_COMPASS_IST8310_I2C_ADDR), }
all_external, default_rotation)); FOREACH_I2C_INTERNAL(i) {
ADD_BACKEND(DRIVER_IST8310, AP_Compass_IST8310::probe(GET_I2C_DEVICE(i, ist8310_addr[a]),
all_external, default_rotation));
}
} }
} }

Loading…
Cancel
Save