aboutsummaryrefslogtreecommitdiff
path: root/apps/systemcmds
diff options
context:
space:
mode:
authorLorenz Meier <lm@inf.ethz.ch>2012-10-31 16:31:21 +0100
committerLorenz Meier <lm@inf.ethz.ch>2012-10-31 16:31:21 +0100
commit0ddfd7c75c1f692fe83fcc88f832b42e2b04f0af (patch)
treee574326c207421f7cb8f3bd02d4fb4658823c253 /apps/systemcmds
parent8dcde7f8cd72e73ced0ea534a84257ef43210ab6 (diff)
downloadpx4-firmware-0ddfd7c75c1f692fe83fcc88f832b42e2b04f0af.tar.gz
px4-firmware-0ddfd7c75c1f692fe83fcc88f832b42e2b04f0af.tar.bz2
px4-firmware-0ddfd7c75c1f692fe83fcc88f832b42e2b04f0af.zip
New param interface for microSD and EEPROM
Diffstat (limited to 'apps/systemcmds')
-rw-r--r--apps/systemcmds/param/param.c51
1 files changed, 36 insertions, 15 deletions
diff --git a/apps/systemcmds/param/param.c b/apps/systemcmds/param/param.c
index 68dbd822e..77f47b95d 100644
--- a/apps/systemcmds/param/param.c
+++ b/apps/systemcmds/param/param.c
@@ -56,36 +56,53 @@
__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(void);
static void do_show_print(void *arg, param_t param);
-static const char *param_file_name = "/eeprom/parameters";
+static const char *param_file_name_default = "/fs/microsd/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_file_name_default);
+ }
+ }
- if (!strcmp(argv[1], "load"))
- do_load();
+ if (!strcmp(argv[1], "load")) {
+ if (argc >= 3) {
+ do_load(argv[2]);
+ } else {
+ do_load(param_file_name_default);
+ }
+ }
- if (!strcmp(argv[1], "import"))
- do_import();
+ if (!strcmp(argv[1], "import")) {
+ if (argc >= 3) {
+ do_import(argv[2]);
+ } else {
+ do_import(param_file_name_default);
+ }
+ }
- if (!strcmp(argv[1], "show"))
+ if (!strcmp(argv[1], "show")) {
do_show();
+ }
+
}
errx(1, "expected a command, try 'load', 'import', 'show' or 'save'\n");
}
static void
-do_save(void)
+do_save(const char* param_file_name)
{
/* delete the parameter file in case it exists */
unlink(param_file_name);
@@ -108,7 +125,7 @@ do_save(void)
}
static void
-do_load(void)
+do_load(const char* param_file_name)
{
int fd = open(param_file_name, O_RDONLY);
@@ -118,14 +135,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);