diff options
author | Lorenz Meier <lm@inf.ethz.ch> | 2012-11-01 08:14:31 +0100 |
---|---|---|
committer | Lorenz Meier <lm@inf.ethz.ch> | 2012-11-01 08:14:31 +0100 |
commit | 5e1416178afef2b61f3e7a8dec2756ca990360b8 (patch) | |
tree | 57b6fd1ee85dc0e3178ca60f8ec656440dcf460f /apps/systemcmds/param | |
parent | 18dbdf0a54cdcfdd5b43f94263be75c01b4e7f65 (diff) | |
parent | 8bfceef89cc1fd2422863a99d99039d18a1301bc (diff) | |
download | px4-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.c | 60 |
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); |