Browse Source

parameters: add param_reset_no_notification()

- add reset() to Param<>
sbg
Daniel Agar 4 years ago committed by Beat Küng
parent
commit
7255f5feac
  1. 30
      platforms/common/include/px4_platform_common/param.h
  2. 11
      src/lib/parameters/param.h
  3. 9
      src/lib/parameters/parameters.cpp

30
platforms/common/include/px4_platform_common/param.h

@ -132,6 +132,12 @@ public: @@ -132,6 +132,12 @@ public:
void set(float val) { _val = val; }
void reset()
{
param_reset_no_notification(handle());
update();
}
bool update() { return param_get(handle(), &_val) == 0; }
param_t handle() const { return param_handle(p); }
@ -166,6 +172,12 @@ public: @@ -166,6 +172,12 @@ public:
void set(float val) { _val = val; }
void reset()
{
param_reset_no_notification(handle());
update();
}
bool update() { return param_get(handle(), &_val) == 0; }
param_t handle() const { return param_handle(p); }
@ -198,6 +210,12 @@ public: @@ -198,6 +210,12 @@ public:
void set(int32_t val) { _val = val; }
void reset()
{
param_reset_no_notification(handle());
update();
}
bool update() { return param_get(handle(), &_val) == 0; }
param_t handle() const { return param_handle(p); }
@ -232,6 +250,12 @@ public: @@ -232,6 +250,12 @@ public:
void set(int32_t val) { _val = val; }
void reset()
{
param_reset_no_notification(handle());
update();
}
bool update() { return param_get(handle(), &_val) == 0; }
param_t handle() const { return param_handle(p); }
@ -272,6 +296,12 @@ public: @@ -272,6 +296,12 @@ public:
void set(bool val) { _val = val; }
void reset()
{
param_reset_no_notification(handle());
update();
}
bool update()
{
int32_t value_int;

11
src/lib/parameters/param.h

@ -260,6 +260,17 @@ __EXPORT void param_notify_changes(void); @@ -260,6 +260,17 @@ __EXPORT void param_notify_changes(void);
*/
__EXPORT int param_reset(param_t param);
/**
* Reset a parameter to its default value, but do not notify the system about the change.
*
* This function frees any storage used by struct parameters, and returns the parameter
* to its default value.
*
* @param param A handle returned by param_find or passed by param_foreach.
* @return Zero on success, nonzero on failure
*/
__EXPORT int param_reset_no_notification(param_t param);
/**
* Reset all parameters to their default values.
*

9
src/lib/parameters/parameters.cpp

@ -797,8 +797,7 @@ void param_set_used_internal(param_t param) @@ -797,8 +797,7 @@ void param_set_used_internal(param_t param)
(1 << param_index % bits_per_allocation_unit);
}
int
param_reset(param_t param)
static int param_reset_internal(param_t param, bool notify = true)
{
param_wbuf_s *s = nullptr;
bool param_found = false;
@ -823,12 +822,16 @@ param_reset(param_t param) @@ -823,12 +822,16 @@ param_reset(param_t param)
param_unlock_writer();
if (s != nullptr) {
if (s != nullptr && notify) {
_param_notify_changes();
}
return (!param_found);
}
int param_reset(param_t param) { return param_reset_internal(param, true); }
int param_reset_no_notification(param_t param) { return param_reset_internal(param, false); }
static void
param_reset_all_internal(bool auto_save)
{

Loading…
Cancel
Save