From 86416e8f0553dd07363392e127a1a8aed00e301d Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Fri, 1 Apr 2016 16:39:51 +1100 Subject: [PATCH] AP_Param: added set_default_by_name() --- libraries/AP_Param/AP_Param.cpp | 29 +++++++++++++++++++++++++++++ libraries/AP_Param/AP_Param.h | 7 +++++++ 2 files changed, 36 insertions(+) diff --git a/libraries/AP_Param/AP_Param.cpp b/libraries/AP_Param/AP_Param.cpp index a5c498ef25..624e5d118b 100644 --- a/libraries/AP_Param/AP_Param.cpp +++ b/libraries/AP_Param/AP_Param.cpp @@ -1834,3 +1834,32 @@ uint16_t AP_Param::count_parameters(void) return _parameter_count; } +/* + set a default value by name + */ +bool AP_Param::set_default_by_name(const char *name, float value) +{ + enum ap_var_type vtype; + AP_Param *vp = find(name, &vtype); + if (vp == nullptr) { + return false; + } + switch (vtype) { + case AP_PARAM_INT8: + ((AP_Int8 *)vp)->set_default(value); + return true; + case AP_PARAM_INT16: + ((AP_Int16 *)vp)->set_default(value); + return true; + case AP_PARAM_INT32: + ((AP_Int32 *)vp)->set_default(value); + return true; + case AP_PARAM_FLOAT: + ((AP_Float *)vp)->set_default(value); + return true; + default: + break; + } + // not a supported type + return false; +} diff --git a/libraries/AP_Param/AP_Param.h b/libraries/AP_Param/AP_Param.h index 2c3d25c3e8..bacb05d746 100644 --- a/libraries/AP_Param/AP_Param.h +++ b/libraries/AP_Param/AP_Param.h @@ -203,6 +203,13 @@ public: /// static AP_Param * find(const char *name, enum ap_var_type *ptype); + /// set a default value by name + /// + /// @param name The full name of the variable to be found. + /// @param value The default value + /// @return true if the variable is found + static bool set_default_by_name(const char *name, float value); + /// Find a variable by index. /// ///