aboutsummaryrefslogtreecommitdiff
path: root/apps/systemcmds/param
diff options
context:
space:
mode:
authorLorenz Meier <lm@inf.ethz.ch>2012-11-01 08:14:31 +0100
committerLorenz Meier <lm@inf.ethz.ch>2012-11-01 08:14:31 +0100
commit5e1416178afef2b61f3e7a8dec2756ca990360b8 (patch)
tree57b6fd1ee85dc0e3178ca60f8ec656440dcf460f /apps/systemcmds/param
parent18dbdf0a54cdcfdd5b43f94263be75c01b4e7f65 (diff)
parent8bfceef89cc1fd2422863a99d99039d18a1301bc (diff)
downloadpx4-firmware-5e1416178afef2b61f3e7a8dec2756ca990360b8.tar.gz
px4-firmware-5e1416178afef2b61f3e7a8dec2756ca990360b8.tar.bz2
px4-firmware-5e1416178afef2b61f3e7a8dec2756ca990360b8.zip
Merged
Diffstat (limited to 'apps/systemcmds/param')
-rw-r--r--apps/systemcmds/param/param.c60
1 files changed, 43 insertions, 17 deletions
diff --git a/apps/systemcmds/param/param.c b/apps/systemcmds/param/param.c
index 67ffb531a..53f9c365e 100644
--- a/apps/systemcmds/param/param.c
+++ b/apps/systemcmds/param/param.c
@@ -56,26 +56,48 @@
__EXPORT int param_main(int argc, char *argv[]);
-static void do_save(void);
-static void do_load(void);
-static void do_import(void);
+static void do_save(const char* param_file_name);
+static void do_load(const char* param_file_name);
+static void do_import(const char* param_file_name);
static void do_show(const char* search_string);
static void do_show_print(void *arg, param_t param);
-static const char *param_file_name = "/eeprom/parameters";
-
int
param_main(int argc, char *argv[])
{
if (argc >= 2) {
- if (!strcmp(argv[1], "save"))
- do_save();
+ if (!strcmp(argv[1], "save")) {
+ if (argc >= 3) {
+ do_save(argv[2]);
+ } else {
+ do_save(param_get_default_file());
+ }
+ }
- if (!strcmp(argv[1], "load"))
- do_load();
+ if (!strcmp(argv[1], "load")) {
+ if (argc >= 3) {
+ do_load(argv[2]);
+ } else {
+ do_load(param_get_default_file());
+ }
+ }
+
+ if (!strcmp(argv[1], "import")) {
+ if (argc >= 3) {
+ do_import(argv[2]);
+ } else {
+ do_import(param_get_default_file());
+ }
+ }
- if (!strcmp(argv[1], "import"))
- do_import();
+ if (!strcmp(argv[1], "select")) {
+ if (argc >= 3) {
+ param_set_default_file(argv[2]);
+ } else {
+ param_set_default_file(NULL);
+ }
+ warnx("selected parameter file %s", param_get_default_file());
+ }
if (!strcmp(argv[1], "show"))
if (argc >= 3) {
@@ -84,12 +106,12 @@ param_main(int argc, char *argv[])
do_show(NULL);
}
}
-
- errx(1, "expected a command, try 'load', 'import', 'show' or 'save'\n");
+
+ errx(1, "expected a command, try 'load', 'import', 'show', 'select' or 'save'");
}
static void
-do_save(void)
+do_save(const char* param_file_name)
{
/* delete the parameter file in case it exists */
unlink(param_file_name);
@@ -112,7 +134,7 @@ do_save(void)
}
static void
-do_load(void)
+do_load(const char* param_file_name)
{
int fd = open(param_file_name, O_RDONLY);
@@ -122,14 +144,18 @@ do_load(void)
int result = param_load(fd);
close(fd);
- if (result < 0)
+ if (result < 0) {
errx(1, "error importing from '%s'", param_file_name);
+ } else {
+ /* set default file name for next storage operation */
+ param_set_default_file(param_file_name);
+ }
exit(0);
}
static void
-do_import(void)
+do_import(const char* param_file_name)
{
int fd = open(param_file_name, O_RDONLY);