aboutsummaryrefslogtreecommitdiff
path: root/src/systemcmds/param
diff options
context:
space:
mode:
authorLorenz Meier <lm@inf.ethz.ch>2014-05-08 20:20:29 +0200
committerLorenz Meier <lm@inf.ethz.ch>2014-05-08 20:21:02 +0200
commite4c0a224af5a2835e08786a2d3ed3e641cfcb22d (patch)
tree9451c5a8ffe6d77370213b4e4fa777b1fec7937c /src/systemcmds/param
parent45be38c33363921b00ff764da7f87aaf8ec591c5 (diff)
downloadpx4-firmware-e4c0a224af5a2835e08786a2d3ed3e641cfcb22d.tar.gz
px4-firmware-e4c0a224af5a2835e08786a2d3ed3e641cfcb22d.tar.bz2
px4-firmware-e4c0a224af5a2835e08786a2d3ed3e641cfcb22d.zip
Fix a param save issue where a state variable might preven the parameters from being saved (identified and fixed by ultrasystem)
Diffstat (limited to 'src/systemcmds/param')
-rw-r--r--src/systemcmds/param/param.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/systemcmds/param/param.c b/src/systemcmds/param/param.c
index 0cbba0a37..984d19bd9 100644
--- a/src/systemcmds/param/param.c
+++ b/src/systemcmds/param/param.c
@@ -63,6 +63,7 @@ static void do_show(const char* search_string);
static void do_show_print(void *arg, param_t param);
static void do_set(const char* name, const char* val);
static void do_compare(const char* name, const char* vals[], unsigned comparisons);
+static void do_reset();
int
param_main(int argc, char *argv[])
@@ -130,6 +131,10 @@ param_main(int argc, char *argv[])
errx(1, "not enough arguments.\nTry 'param compare PARAM_NAME 3'");
}
}
+
+ if (!strcmp(argv[1], "reset")) {
+ do_reset();
+ }
}
errx(1, "expected a command, try 'load', 'import', 'show', 'set', 'compare', 'select' or 'save'");
@@ -402,3 +407,16 @@ do_compare(const char* name, const char* vals[], unsigned comparisons)
exit(ret);
}
+
+static void
+do_reset()
+{
+ param_reset_all();
+
+ if (param_save_default()) {
+ warnx("Param export failed.");
+ exit(1);
+ } else {
+ exit(0);
+ }
+}