From f6bdc42977169a84f8dc3989d8e22140327536f3 Mon Sep 17 00:00:00 2001 From: Thomas Debrunner Date: Mon, 28 Mar 2022 15:03:11 +0200 Subject: [PATCH] param-reset: Add option to reset all configurable params, but not the ones that store vehicle information --- src/modules/commander/Commander.cpp | 6 +++++- src/modules/commander/worker_thread.cpp | 24 ++++++++++++++++++------ src/modules/commander/worker_thread.hpp | 1 + 3 files changed, 24 insertions(+), 7 deletions(-) diff --git a/src/modules/commander/Commander.cpp b/src/modules/commander/Commander.cpp index d4956c6760..143b83c803 100644 --- a/src/modules/commander/Commander.cpp +++ b/src/modules/commander/Commander.cpp @@ -1535,11 +1535,15 @@ Commander::handle_command(const vehicle_command_s &cmd) } else if (((int)(cmd.param1)) == 2) { answer_command(cmd, vehicle_command_s::VEHICLE_CMD_RESULT_ACCEPTED); - _worker_thread.startTask(WorkerThread::Request::ParamResetAll); + _worker_thread.startTask(WorkerThread::Request::ParamResetAllConfig); } else if (((int)(cmd.param1)) == 3) { answer_command(cmd, vehicle_command_s::VEHICLE_CMD_RESULT_ACCEPTED); _worker_thread.startTask(WorkerThread::Request::ParamResetSensorFactory); + + } else if (((int)(cmd.param1)) == 4) { + answer_command(cmd, vehicle_command_s::VEHICLE_CMD_RESULT_ACCEPTED); + _worker_thread.startTask(WorkerThread::Request::ParamResetAll); } } diff --git a/src/modules/commander/worker_thread.cpp b/src/modules/commander/worker_thread.cpp index 55ad10f284..70a3ebb33e 100644 --- a/src/modules/commander/worker_thread.cpp +++ b/src/modules/commander/worker_thread.cpp @@ -174,14 +174,26 @@ void WorkerThread::threadEntry() _ret_value = 0; break; - case Request::ParamResetSensorFactory: - const char *reset_cal[] = { "CAL_ACC*", "CAL_GYRO*", "CAL_MAG*" }; - param_reset_specific(reset_cal, sizeof(reset_cal) / sizeof(reset_cal[0])); - _ret_value = param_save_default(); + case Request::ParamResetSensorFactory: { + const char *reset_cal[] = { "CAL_ACC*", "CAL_GYRO*", "CAL_MAG*" }; + param_reset_specific(reset_cal, sizeof(reset_cal) / sizeof(reset_cal[0])); + _ret_value = param_save_default(); #if defined(CONFIG_BOARDCTL_RESET) - px4_reboot_request(false, 400_ms); + px4_reboot_request(false, 400_ms); #endif // CONFIG_BOARDCTL_RESET - break; + break; + } + + case Request::ParamResetAllConfig: { + const char *exclude_list[] = { + "LND_FLIGHT_T_HI", + "LND_FLIGHT_T_LO", + "COM_FLIGHT_UUID" + }; + param_reset_excludes(exclude_list, sizeof(exclude_list) / sizeof(exclude_list[0])); + _ret_value = 0; + break; + } } _state.store((int)State::Finished); // set this last to signal the main thread we're done diff --git a/src/modules/commander/worker_thread.hpp b/src/modules/commander/worker_thread.hpp index 940e64b707..5194c6758d 100644 --- a/src/modules/commander/worker_thread.hpp +++ b/src/modules/commander/worker_thread.hpp @@ -64,6 +64,7 @@ public: ParamSaveDefault, ParamResetAll, ParamResetSensorFactory, + ParamResetAllConfig }; WorkerThread() = default;