From b04d61c4115d11cc6e32d53458506459ecc6a29c Mon Sep 17 00:00:00 2001 From: bresch Date: Thu, 4 Aug 2022 16:46:50 +0200 Subject: [PATCH] ekf2: param migration for rng aid, aid mask (gps) and hgt mode --- src/lib/parameters/param_translation.cpp | 35 ++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/src/lib/parameters/param_translation.cpp b/src/lib/parameters/param_translation.cpp index 7eddfa9d31..00280117a2 100644 --- a/src/lib/parameters/param_translation.cpp +++ b/src/lib/parameters/param_translation.cpp @@ -255,5 +255,40 @@ bool param_modify_on_import(bson_node_t node) } } + // 2022-08-04: migrate EKF2_AID_MASK (GPS) -> EKF2_GPS_CTRL, EKF2_RNG_AID->EKF2_RNG_CTRL and EKF2_HGT_MODE->EKF2_HGT_REF + { + if (strcmp("EKF2_AID_MASK", node->name) == 0) { + int32_t aid_mask = node->i32; + bool lat_lon_en = aid_mask & (1 << 0); + bool yaw_en = aid_mask & (1 << 7); + // automatically set alt and vel aiding if the GPS bit was set in the aid mask + bool alt_en = lat_lon_en; + bool vel_en = lat_lon_en; + strcpy(node->name, "EKF2_GPS_CTRL"); + node->i32 = lat_lon_en | (alt_en << 1) | (vel_en << 2) | (yaw_en << 3); + PX4_INFO("param migrating EKF2_AID_MASK (GPS) -> EKF2_GPS_CTRL: value=%d", node->i32); + return true; + } + + if (strcmp("EKF2_RNG_AID", node->name) == 0) { + strcpy(node->name, "EKF2_RNG_CTRL"); + PX4_INFO("param migrating EKF2_RNG_AID (removed) -> EKF2_RNG_CTRL: value=%d", node->i32); + return true; + } + + if (strcmp("EKF2_HGT_MODE", node->name) == 0) { + strcpy(node->name, "EKF2_HGT_REF"); + + // If was in range height mode, set range aiding to "always" + if (node->i32 == 2) { + int32_t rng_mode = 2; + param_set_no_notification(param_find("EKF2_RNG_CTRL"), &rng_mode); + } + + PX4_INFO("param migrating EKF2_HGT_MODE (removed) -> EKF2_HGT_REF: value=%d", node->i32); + return true; + } + } + return false; }