Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion Tools/scripts/build_options.py
Original file line number Diff line number Diff line change
Expand Up @@ -215,7 +215,6 @@ def config_option(self):
Feature('Compass', 'HMC5843', 'AP_COMPASS_HMC5843_ENABLED', 'Enable HMC5843 compasses', 1, None),
Feature('Compass', 'ICM20948', 'AP_COMPASS_ICM20948_ENABLED', 'Enable AK0991x on ICM20948 compasses', 1, "AK09916"),
Feature('Compass', 'IST8308', 'AP_COMPASS_IST8308_ENABLED', 'Enable IST8308 compasses', 1, None),
Feature('Compass', 'IIS2MDC', 'AP_COMPASS_IIS2MDC_ENABLED', 'Enable IIS2MDC compasses', 0, None),
Feature('Compass', 'IST8310', 'AP_COMPASS_IST8310_ENABLED', 'Enable IST8310 compasses', 1, None),
Feature('Compass', 'LIS3MDL', 'AP_COMPASS_LIS3MDL_ENABLED', 'Enable LIS3MDL compasses', 1, None),
Feature('Compass', 'LIS2MDL', 'AP_COMPASS_LIS2MDL_ENABLED', 'Enable LIS2MDL compasses', 1, None),
Expand Down
1 change: 0 additions & 1 deletion Tools/scripts/decode_devid.py
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,6 @@ def num(s):
0x15 : "DEVTYPE_AK09915",
0x16 : "DEVTYPE_QMC5883P",
0x17 : "DEVTYPE_BMM350",
0x18 : "DEVTYPE_IIS2MDC",
0x19 : "DEVTYPE_LIS2MDL",
}

Expand Down
55 changes: 31 additions & 24 deletions libraries/AP_Compass/AP_Compass.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@
#include "AP_Compass_BMM150.h"
#include "AP_Compass_BMM350.h"
#include "AP_Compass_HMC5843.h"
#include "AP_Compass_IIS2MDC.h"
#include "AP_Compass_IST8308.h"
#include "AP_Compass_IST8310.h"
#include "AP_Compass_LSM303D.h"
Expand Down Expand Up @@ -532,7 +531,7 @@ const AP_Param::GroupInfo Compass::var_info[] = {
// @Param: DISBLMSK
// @DisplayName: Compass disable driver type mask
// @Description: This is a bitmask of driver types to disable. If a driver type is set in this mask then that driver will not try to find a sensor at startup
// @Bitmask: 0:HMC5883,1:LSM303D,2:AK8963,3:BMM150,4:LSM9DS1,5:LIS3MDL,6:AK0991x,7:IST8310,8:ICM20948,9:MMC3416,11:DroneCAN,12:QMC5883,14:MAG3110,15:IST8308,16:RM3100,17:MSP,18:ExternalAHRS,19:MMC5XX3,20:QMC5883P,21:BMM350,22:IIS2MDC,23:LIS2MDL
// @Bitmask: 0:HMC5883,1:LSM303D,2:AK8963,3:BMM150,4:LSM9DS1,5:LIS3MDL,6:AK0991x,7:IST8310,8:ICM20948,9:MMC3416,11:DroneCAN,12:QMC5883,14:MAG3110,15:IST8308,16:RM3100,17:MSP,18:ExternalAHRS,19:MMC5XX3,20:QMC5883P,21:BMM350,23:LIS2MDL
// @User: Advanced
AP_GROUPINFO("DISBLMSK", 33, Compass, _driver_type_mask, 0),

Expand Down Expand Up @@ -770,6 +769,30 @@ void Compass::init()
}
#endif // AP_CUSTOMROTATIONS_ENABLED

// migrate stored DEVTYPE_IIS2MDC (0x18) device IDs to
// DEVTYPE_LIS2MDL (0x19) so that existing mag calibrations are
// preserved across the removal of the IIS2MDC driver.
// PARAMETER_CONVERSION - Added: May-2026
{
const uint8_t old_devtype_iis2mdc = 0x18;
for (StateIndex i(0); i<COMPASS_MAX_INSTANCES; i++) {
const uint32_t did = uint32_t(_state[i].dev_id.get());
if (did != 0 && AP_HAL::Device::devid_get_devtype(did) == old_devtype_iis2mdc) {
_state[i].dev_id.set_and_save(int32_t(
AP_HAL::Device::change_bus_id(did, AP_Compass_Backend::DEVTYPE_LIS2MDL)));
}
}
#if COMPASS_MAX_INSTANCES > 1
for (Priority i(0); i<COMPASS_MAX_INSTANCES; i++) {
const uint32_t pri = uint32_t(_priority_did_stored_list[i].get());
if (pri != 0 && AP_HAL::Device::devid_get_devtype(pri) == old_devtype_iis2mdc) {
_priority_did_stored_list[i].set_and_save(int32_t(
AP_HAL::Device::change_bus_id(pri, AP_Compass_Backend::DEVTYPE_LIS2MDL)));
}
}
#endif
}

#if COMPASS_MAX_INSTANCES > 1
// Look if there was a primary compass setup in previous version
// if so and the primary compass is not set in current setup
Expand Down Expand Up @@ -1176,25 +1199,6 @@ void Compass::_probe_external_i2c_compasses(void)
}
}
#endif // AP_COMPASS_INTERNAL_BUS_PROBING_ENABLED
#endif // AP_COMPASS_QMC5883P_ENABLED

#if AP_COMPASS_IIS2MDC_ENABLED
//external i2c bus
FOREACH_I2C_EXTERNAL(i) {
probe_i2c_dev(DRIVER_IIS2MDC, AP_Compass_IIS2MDC::probe, i, HAL_COMPASS_IIS2MDC_I2C_ADDR, true, HAL_COMPASS_IIS2MDC_ORIENTATION_EXTERNAL);
RETURN_IF_NO_SPACE;
}

// internal i2c bus
#if AP_COMPASS_INTERNAL_BUS_PROBING_ENABLED
if (all_external) {
// only probe IIS2MDC on internal if we are treating internals as externals
FOREACH_I2C_INTERNAL(i) {
probe_i2c_dev(DRIVER_IIS2MDC, AP_Compass_IIS2MDC::probe, i, HAL_COMPASS_IIS2MDC_I2C_ADDR, all_external, all_external?HAL_COMPASS_IIS2MDC_ORIENTATION_EXTERNAL:HAL_COMPASS_IIS2MDC_ORIENTATION_INTERNAL);
RETURN_IF_NO_SPACE;
}
}
#endif // AP_COMPASS_INTERNAL_BUS_PROBING_ENABLED
#endif // AP_COMPASS_QMC5883P_ENABLED

// AK09916 on ICM20948
Expand Down Expand Up @@ -1253,9 +1257,12 @@ void Compass::_probe_external_i2c_compasses(void)
#endif
// internal lis2mdl
#if AP_COMPASS_INTERNAL_BUS_PROBING_ENABLED
FOREACH_I2C_INTERNAL(i) {
probe_i2c_dev(DRIVER_LIS2MDL, AP_Compass_LIS2MDL::probe, i, HAL_COMPASS_LIS2MDL_I2C_ADDR, all_external, ROTATION_NONE);
RETURN_IF_NO_SPACE;
if (all_external) {
// only probe LIS2MDL on internal if we are treating internals as externals
FOREACH_I2C_INTERNAL(i) {
probe_i2c_dev(DRIVER_LIS2MDL, AP_Compass_LIS2MDL::probe, i, HAL_COMPASS_LIS2MDL_I2C_ADDR, all_external, ROTATION_NONE);
RETURN_IF_NO_SPACE;
}
}
#endif
#endif // AP_COMPASS_LIS2MDL_ENABLED
Expand Down
3 changes: 0 additions & 3 deletions libraries/AP_Compass/AP_Compass.h
Original file line number Diff line number Diff line change
Expand Up @@ -490,9 +490,6 @@ friend class AP_Compass_DroneCAN;
#if AP_COMPASS_BMM350_ENABLED
DRIVER_BMM350 =21,
#endif
#if AP_COMPASS_IIS2MDC_ENABLED
DRIVER_IIS2MDC =22,
#endif
#if AP_COMPASS_LIS2MDL_ENABLED
DRIVER_LIS2MDL =23,
#endif
Expand Down
1 change: 0 additions & 1 deletion libraries/AP_Compass/AP_Compass_Backend.h
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,6 @@ class AP_Compass_Backend
DEVTYPE_AK09915 = 0x15,
DEVTYPE_QMC5883P = 0x16,
DEVTYPE_BMM350 = 0x17,
DEVTYPE_IIS2MDC = 0x18,
DEVTYPE_LIS2MDL = 0x19,
};

Expand Down
164 changes: 0 additions & 164 deletions libraries/AP_Compass/AP_Compass_IIS2MDC.cpp

This file was deleted.

64 changes: 0 additions & 64 deletions libraries/AP_Compass/AP_Compass_IIS2MDC.h

This file was deleted.

4 changes: 0 additions & 4 deletions libraries/AP_Compass/AP_Compass_config.h
Original file line number Diff line number Diff line change
Expand Up @@ -80,10 +80,6 @@
#define AP_COMPASS_ICM20948_ENABLED AP_COMPASS_I2C_BACKEND_DEFAULT_ENABLED && AP_INERTIALSENSOR_ENABLED
#endif

#ifndef AP_COMPASS_IIS2MDC_ENABLED
#define AP_COMPASS_IIS2MDC_ENABLED 0
#endif

#ifndef AP_COMPASS_IST8308_ENABLED
#define AP_COMPASS_IST8308_ENABLED AP_COMPASS_I2C_BACKEND_DEFAULT_ENABLED
#endif
Expand Down
3 changes: 1 addition & 2 deletions libraries/AP_HAL_ChibiOS/hwdef/ARK_FPV/hwdef.dat
Original file line number Diff line number Diff line change
Expand Up @@ -173,9 +173,8 @@ PH4 HW_REV_SENS ADC3 SCALE(1)
BARO BMP388 I2C:1:0x76

# Compass
COMPASS IIS2MDC I2C:2:0x1E false ROTATION_NONE
COMPASS LIS2MDL I2C:2:0x1E false ROTATION_NONE
define AP_COMPASS_PROBING_ENABLED 1
define AP_COMPASS_IIS2MDC_ENABLED 1

# IIM42653 IMU on SPI1
SPIDEV iim42653 SPI1 DEVID1 IMU1_CS MODE3 2*MHZ 16*MHZ
Expand Down
3 changes: 1 addition & 2 deletions libraries/AP_HAL_ChibiOS/hwdef/ARK_PI6X/hwdef.dat
Original file line number Diff line number Diff line change
Expand Up @@ -99,9 +99,8 @@ define HAL_I2C_INTERNAL_MASK 6
BARO BMP388 I2C:2:0x76

# Compass on I2C4
COMPASS IIS2MDC I2C:2:0x1E false ROTATION_YAW_180
COMPASS LIS2MDL I2C:2:0x1E false ROTATION_YAW_180
define AP_COMPASS_PROBING_ENABLED 1
define AP_COMPASS_IIS2MDC_ENABLED 1

# IMU heater
PB10 HEATER_EN OUTPUT LOW GPIO(80)
Expand Down
3 changes: 1 addition & 2 deletions libraries/AP_HAL_ChibiOS/hwdef/CUAV-7-Nano/hwdef.dat
Original file line number Diff line number Diff line change
Expand Up @@ -269,8 +269,7 @@ define AP_COMPASS_INTERNAL_BUS_PROBING_ENABLED 0
define AP_COMPASS_IST8310_DEFAULT_ROTATION ROTATION_ROLL_180_YAW_90
COMPASS IST8310 I2C:0:0x0E false ROTATION_ROLL_90_YAW_90
COMPASS IST8310 I2C:ALL_EXTERNAL:0x0E true ROTATION_ROLL_180_YAW_90
COMPASS IIS2MDC I2C:0:0x1E false ROTATION_ROLL_90_YAW_270
define AP_COMPASS_IIS2MDC_ENABLED 1
COMPASS LIS2MDL I2C:0:0x1E false ROTATION_ROLL_90_YAW_270

# IMUs
IMU Invensensev3 SPI:iim42652 ROTATION_ROLL_90_YAW_90
Expand Down
Loading
Loading