diff --git a/libraries/AP_Compass/AP_Compass.cpp b/libraries/AP_Compass/AP_Compass.cpp index b8dfffb7a9..e48691e6c5 100644 --- a/libraries/AP_Compass/AP_Compass.cpp +++ b/libraries/AP_Compass/AP_Compass.cpp @@ -508,6 +508,22 @@ void Compass::_detect_backends(void) hal.console->printf("LSM9DS1: Compass not detected\n"); } + backend = AP_Compass_HMC5843::probe(*this, hal.i2c_mgr->get_device(HAL_COMPASS_HMC5843_I2C_BUS, HAL_COMPASS_HMC5843_I2C_ADDR)); + if (backend) { + _add_backend(backend); + hal.console->printf("HMC5843: External compass detected\n"); + } else { + hal.console->printf("HMC5843: External compass not detected\n"); + } +#elif HAL_COMPASS_DEFAULT == HAL_COMPASS_NAVIO + AP_Compass_Backend *backend = AP_Compass_AK8963::probe_mpu9250(*this, 0); + if (backend) { + _add_backend(backend); + hal.console->printf("AK8953: Compass detected\n"); + } else { + hal.console->printf("AK8953: Compass not detected\n"); + } + backend = AP_Compass_HMC5843::probe(*this, hal.i2c_mgr->get_device(HAL_COMPASS_HMC5843_I2C_BUS, HAL_COMPASS_HMC5843_I2C_ADDR)); if (backend) { _add_backend(backend); diff --git a/libraries/AP_HAL/AP_HAL_Boards.h b/libraries/AP_HAL/AP_HAL_Boards.h index 24f10f90b1..5d913ff3e8 100644 --- a/libraries/AP_HAL/AP_HAL_Boards.h +++ b/libraries/AP_HAL/AP_HAL_Boards.h @@ -97,6 +97,7 @@ #define HAL_COMPASS_QURT 12 #define HAL_COMPASS_BBBMINI 13 #define HAL_COMPASS_NAVIO2 14 +#define HAL_COMPASS_NAVIO 15 // Heat Types #define HAL_LINUX_HEAT_PWM 1 @@ -288,7 +289,7 @@ #define HAL_BARO_MS5611_I2C_BUS 1 #define HAL_BARO_MS5611_I2C_ADDR 0x77 #define HAL_BARO_MS5611_USE_TIMER false -#define HAL_COMPASS_DEFAULT HAL_COMPASS_AK8963_MPU9250 +#define HAL_COMPASS_DEFAULT HAL_COMPASS_NAVIO /* HMC5843 can be an external compass */ #define HAL_COMPASS_HMC5843_I2C_BUS 1 #define HAL_COMPASS_HMC5843_I2C_ADDR 0x1E