diff --git a/src/modules/commander/mag_calibration.cpp b/src/modules/commander/mag_calibration.cpp index 9903990a53..fcb35ca782 100644 --- a/src/modules/commander/mag_calibration.cpp +++ b/src/modules/commander/mag_calibration.cpp @@ -106,7 +106,7 @@ int do_mag_calibration(orb_advert_t *mavlink_log_pub) // Collect: As defined by configuration // start with a full mask, all six bits set int32_t cal_mask = (1 << 6) - 1; - param_get(param_find("CAL_MAG_SIDES"), &cal_mask); + param_get(param_find("SENS_MAG_SIDES"), &cal_mask); // Calibrate all mags at the same time if (result == PX4_OK) { @@ -696,10 +696,10 @@ calibrate_return mag_calibrate_all(orb_advert_t *mavlink_log_pub, int32_t cal_ma // Attempt to automatically determine external mag rotations if (result == calibrate_return_ok) { - int32_t param_cal_mag_rot_auto = 0; - param_get(param_find("CAL_MAG_ROT_AUTO"), ¶m_cal_mag_rot_auto); + int32_t param_sens_mag_autorot = 0; + param_get(param_find("SENS_MAG_AUTOROT"), ¶m_sens_mag_autorot); - if ((worker_data.calibration_sides >= 3) && (param_cal_mag_rot_auto == 1)) { + if ((worker_data.calibration_sides >= 3) && (param_sens_mag_autorot == 1)) { // find first internal mag to use as reference int internal_index = -1; diff --git a/src/modules/sensors/sensor_params_mag.c b/src/modules/sensors/sensor_params_mag.c index ff35f49558..8160560630 100644 --- a/src/modules/sensors/sensor_params_mag.c +++ b/src/modules/sensors/sensor_params_mag.c @@ -53,6 +53,15 @@ * @value 63 Six side calibration * @group Sensors */ +PARAM_DEFINE_INT32(SENS_MAG_SIDES, 63); + +/** + * For legacy QGC support only + * + * Use SENS_MAG_SIDES instead + * + * @group Sensors + */ PARAM_DEFINE_INT32(CAL_MAG_SIDES, 63); /** @@ -76,7 +85,7 @@ PARAM_DEFINE_INT32(CAL_MAG_COMP_TYP, 0); * @boolean * @group Sensors */ -PARAM_DEFINE_INT32(CAL_MAG_ROT_AUTO, 1); +PARAM_DEFINE_INT32(SENS_MAG_AUTOROT, 1); /** * Magnetometer max rate. diff --git a/src/modules/sensors/vehicle_magnetometer/VehicleMagnetometer.cpp b/src/modules/sensors/vehicle_magnetometer/VehicleMagnetometer.cpp index 7d87f705a7..193f02fbf0 100644 --- a/src/modules/sensors/vehicle_magnetometer/VehicleMagnetometer.cpp +++ b/src/modules/sensors/vehicle_magnetometer/VehicleMagnetometer.cpp @@ -49,8 +49,8 @@ VehicleMagnetometer::VehicleMagnetometer() : ModuleParams(nullptr), ScheduledWorkItem(MODULE_NAME, px4::wq_configurations::nav_and_controllers) { - param_find("CAL_MAG_SIDES"); - param_find("CAL_MAG_ROT_AUTO"); + param_find("SENS_MAG_SIDES"); + param_find("SENS_MAG_AUTOROT"); _voter.set_timeout(SENSOR_TIMEOUT); _voter.set_equal_value_threshold(1000); @@ -98,12 +98,26 @@ bool VehicleMagnetometer::ParametersUpdate(bool force) { // Check if parameters have changed if (_parameter_update_sub.updated() || force) { + const int cal_mag_sides_prev = _param_cal_mag_sides.get(); + // clear update parameter_update_s param_update; _parameter_update_sub.copy(¶m_update); updateParams(); + // Legacy QGC support: CAL_MAG_SIDES required to display the correct UI + // Force it to be a copy of the new SENS_MAG_SIDES + if (_param_cal_mag_sides.get() != _param_sens_mag_sides.get()) { + if (_param_cal_mag_sides.get() != cal_mag_sides_prev) { + // The user tried to change the deprecated parameter + mavlink_log_critical(&_mavlink_log_pub, "CAL_MAG_SIDES deprecated, use SENS_MAG_SIDES\t"); + } + + _param_cal_mag_sides.set(_param_sens_mag_sides.get()); + _param_cal_mag_sides.commit(); + } + // Mag compensation type MagCompensationType mag_comp_typ = static_cast(_param_mag_comp_typ.get()); diff --git a/src/modules/sensors/vehicle_magnetometer/VehicleMagnetometer.hpp b/src/modules/sensors/vehicle_magnetometer/VehicleMagnetometer.hpp index d47fa87428..0fefd32dee 100644 --- a/src/modules/sensors/vehicle_magnetometer/VehicleMagnetometer.hpp +++ b/src/modules/sensors/vehicle_magnetometer/VehicleMagnetometer.hpp @@ -177,7 +177,9 @@ private: (ParamInt) _param_mag_comp_typ, (ParamBool) _param_sens_mag_mode, (ParamFloat) _param_sens_mag_rate, - (ParamBool) _param_sens_mag_autocal + (ParamBool) _param_sens_mag_autocal, + (ParamInt) _param_cal_mag_sides, + (ParamInt) _param_sens_mag_sides ) }; }; // namespace sensors