aboutsummaryrefslogtreecommitdiff
path: root/src/modules/systemlib/param/param.c
diff options
context:
space:
mode:
authorLorenz Meier <lm@inf.ethz.ch>2015-02-14 20:31:51 +0100
committerLorenz Meier <lm@inf.ethz.ch>2015-02-15 19:52:01 +0100
commitaef041e0329fc1902f88392945d875bb49eba6f5 (patch)
tree5d392d481fcde211a55aad28e9a38fe79c809be7 /src/modules/systemlib/param/param.c
parentbed3eaafa10fe8e916ddcd31a66d2411f86c601e (diff)
downloadpx4-firmware-aef041e0329fc1902f88392945d875bb49eba6f5.tar.gz
px4-firmware-aef041e0329fc1902f88392945d875bb49eba6f5.tar.bz2
px4-firmware-aef041e0329fc1902f88392945d875bb49eba6f5.zip
Syslib: Add support for setting parameters without global notification
Diffstat (limited to 'src/modules/systemlib/param/param.c')
-rw-r--r--src/modules/systemlib/param/param.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/modules/systemlib/param/param.c b/src/modules/systemlib/param/param.c
index 926ae75a7..d0d24960e 100644
--- a/src/modules/systemlib/param/param.c
+++ b/src/modules/systemlib/param/param.c
@@ -361,7 +361,7 @@ param_get(param_t param, void *val)
}
static int
-param_set_internal(param_t param, const void *val, bool mark_saved)
+param_set_internal(param_t param, const void *val, bool mark_saved, bool notify_changes)
{
int result = -1;
bool params_changed = false;
@@ -436,7 +436,7 @@ out:
* If we set something, now that we have unlocked, go ahead and advertise that
* a thing has been set.
*/
- if (params_changed)
+ if (params_changed && notify_changes)
param_notify_changes();
return result;
@@ -445,7 +445,13 @@ out:
int
param_set(param_t param, const void *val)
{
- return param_set_internal(param, val, false);
+ return param_set_internal(param, val, false, true);
+}
+
+int
+param_set_no_notification(param_t param, const void *val)
+{
+ return param_set_internal(param, val, false, false);
}
int
@@ -775,7 +781,7 @@ param_import_callback(bson_decoder_t decoder, void *private, bson_node_t node)
goto out;
}
- if (param_set_internal(param, v, state->mark_saved)) {
+ if (param_set_internal(param, v, state->mark_saved, true)) {
debug("error setting value for '%s'", node->name);
goto out;
}