diff --git a/src/modules/mavlink/mavlink_parameters.cpp b/src/modules/mavlink/mavlink_parameters.cpp index c2d10c53ea..a20035172b 100644 --- a/src/modules/mavlink/mavlink_parameters.cpp +++ b/src/modules/mavlink/mavlink_parameters.cpp @@ -284,6 +284,38 @@ MavlinkParametersManager::handle_message(const mavlink_message_t *msg) void MavlinkParametersManager::send() { + if (!_first_send) { + // parameters QGC can't tolerate not finding (2020-11-11) + param_find("BAT_A_PER_V"); + param_find("BAT_CRIT_THR"); + param_find("BAT_EMERGEN_THR"); + param_find("BAT_LOW_THR"); + param_find("BAT_N_CELLS"); + param_find("BAT_V_CHARGED"); + param_find("BAT_V_DIV"); + param_find("BAT_V_EMPTY"); + param_find("CAL_ACC0_ID"); + param_find("CAL_GYRO0_ID"); + param_find("CAL_MAG0_ID"); + param_find("CAL_MAG0_ROT"); + param_find("CAL_MAG1_ID"); + param_find("CAL_MAG1_ROT"); + param_find("CAL_MAG2_ID"); + param_find("CAL_MAG2_ROT"); + param_find("CAL_MAG3_ID"); + param_find("CAL_MAG3_ROT"); + param_find("SENS_BOARD_ROT"); + param_find("SENS_BOARD_X_OFF"); + param_find("SENS_BOARD_Y_OFF"); + param_find("SENS_BOARD_Z_OFF"); + param_find("SENS_DPRES_OFF"); + param_find("SYS_PARAM_VER"); + param_find("TRIG_MODE"); + param_find("UAVCAN_ENABLE"); + + _first_send = true; + } + int max_num_to_send; if (_mavlink->get_protocol() == Protocol::SERIAL && !_mavlink->is_usb_uart()) { diff --git a/src/modules/mavlink/mavlink_parameters.h b/src/modules/mavlink/mavlink_parameters.h index 140c8973d3..a71657f1d6 100644 --- a/src/modules/mavlink/mavlink_parameters.h +++ b/src/modules/mavlink/mavlink_parameters.h @@ -152,4 +152,6 @@ protected: int _param_update_index{0}; Mavlink *_mavlink; + + bool _first_send{false}; }; diff --git a/src/modules/sensors/sensors.cpp b/src/modules/sensors/sensors.cpp index 326e9f4d63..ae87688808 100644 --- a/src/modules/sensors/sensors.cpp +++ b/src/modules/sensors/sensors.cpp @@ -235,23 +235,7 @@ Sensors::Sensors(bool hil_enabled) : _parameter_handles.air_tube_length = param_find("CAL_AIR_TUBELEN"); _parameter_handles.air_tube_diameter_mm = param_find("CAL_AIR_TUBED_MM"); - param_find("BAT_V_DIV"); - param_find("BAT_A_PER_V"); - - param_find("CAL_ACC0_ID"); - param_find("CAL_GYRO0_ID"); - - param_find("SENS_BOARD_ROT"); - param_find("SENS_BOARD_X_OFF"); - param_find("SENS_BOARD_Y_OFF"); - param_find("SENS_BOARD_Z_OFF"); - param_find("SYS_FAC_CAL_MODE"); - param_find("SYS_PARAM_VER"); - param_find("SYS_AUTOSTART"); - param_find("SYS_AUTOCONFIG"); - param_find("TRIG_MODE"); - param_find("UAVCAN_ENABLE"); // Parameters controlling the on-board sensor thermal calibrator param_find("SYS_CAL_TDEL"); diff --git a/src/modules/sensors/vehicle_magnetometer/VehicleMagnetometer.cpp b/src/modules/sensors/vehicle_magnetometer/VehicleMagnetometer.cpp index 5db4b94227..91cd59724e 100644 --- a/src/modules/sensors/vehicle_magnetometer/VehicleMagnetometer.cpp +++ b/src/modules/sensors/vehicle_magnetometer/VehicleMagnetometer.cpp @@ -48,18 +48,6 @@ VehicleMagnetometer::VehicleMagnetometer() : ModuleParams(nullptr), ScheduledWorkItem(MODULE_NAME, px4::wq_configurations::nav_and_controllers) { - char str[20] {}; - - for (int mag_index = 0; mag_index < MAX_SENSOR_COUNT; mag_index++) { - // CAL_MAGx_ID - sprintf(str, "CAL_%s%u_ID", "MAG", mag_index); - param_find(str); - - // CAL_MAGx_ROT - sprintf(str, "CAL_%s%u_ROT", "MAG", mag_index); - param_find(str); - } - param_find("CAL_MAG_SIDES"); param_find("CAL_MAG_ROT_AUTO");