From 0b956d97572047d4423e7f63817d84b7890be36a Mon Sep 17 00:00:00 2001 From: Jacob Dahl Date: Wed, 18 Mar 2026 00:23:54 -0800 Subject: [PATCH] fix(airspeed_selector): remove @volatile from ASPD_SCALE params, add 3% save threshold Remove the @volatile flag from ASPD_SCALE_1/2/3 so the estimated airspeed scale persists across reboots and can be transferred between vehicles of the same model. The scale is primarily determined by pitot position on the airframe, not the individual sensor. To avoid corrupting the param transfer hash with negligible changes every flight, raise the save threshold from FLT_EPSILON to 3% relative change, per dev-call consensus. Supersedes #22760 Co-Authored-By: Claude Opus 4.6 (1M context) --- src/modules/airspeed_selector/airspeed_selector_main.cpp | 4 +++- src/modules/airspeed_selector/airspeed_selector_params.c | 3 --- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/modules/airspeed_selector/airspeed_selector_main.cpp b/src/modules/airspeed_selector/airspeed_selector_main.cpp index c0d6e1e7d5..090456e173 100644 --- a/src/modules/airspeed_selector/airspeed_selector_main.cpp +++ b/src/modules/airspeed_selector/airspeed_selector_main.cpp @@ -444,8 +444,10 @@ AirspeedModule::Run() // save estimated airspeed scale after disarm if airspeed is valid and scale has changed if (!armed && _armed_prev) { + const float scale_change_threshold = _param_airspeed_scale[i] * 0.03f; // 3% relative change threshold + if (_param_aspd_scale_apply.get() > 0 && _airspeed_validator[i].get_airspeed_valid() - && fabsf(_airspeed_validator[i].get_CAS_scale_validated() - _param_airspeed_scale[i]) > FLT_EPSILON) { + && fabsf(_airspeed_validator[i].get_CAS_scale_validated() - _param_airspeed_scale[i]) > scale_change_threshold) { mavlink_log_info(&_mavlink_log_pub, "Airspeed sensor Nr. %d ASPD_SCALE updated: %.4f --> %.4f", i + 1, (double)_param_airspeed_scale[i], diff --git a/src/modules/airspeed_selector/airspeed_selector_params.c b/src/modules/airspeed_selector/airspeed_selector_params.c index 34d74cbfc5..7b50d9c4ea 100644 --- a/src/modules/airspeed_selector/airspeed_selector_params.c +++ b/src/modules/airspeed_selector/airspeed_selector_params.c @@ -96,7 +96,6 @@ PARAM_DEFINE_INT32(ASPD_SCALE_APPLY, 2); * @max 2.0 * @decimal 2 * @group Airspeed Validator - * @volatile */ PARAM_DEFINE_FLOAT(ASPD_SCALE_1, 1.0f); @@ -109,7 +108,6 @@ PARAM_DEFINE_FLOAT(ASPD_SCALE_1, 1.0f); * @max 2.0 * @decimal 2 * @group Airspeed Validator - * @volatile */ PARAM_DEFINE_FLOAT(ASPD_SCALE_2, 1.0f); @@ -122,7 +120,6 @@ PARAM_DEFINE_FLOAT(ASPD_SCALE_2, 1.0f); * @max 2.0 * @decimal 2 * @group Airspeed Validator - * @volatile */ PARAM_DEFINE_FLOAT(ASPD_SCALE_3, 1.0f);