mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-10-15 02:03:33 +08:00
Remove the arbitrary limit on the path to the default parameter file. Add a verb to the param command to set the default parameter file.
This commit is contained in:
@@ -481,38 +481,38 @@ param_reset_all(void)
|
||||
param_notify_changes();
|
||||
}
|
||||
|
||||
static char param_default_file_name[50] = "/eeprom/parameters";
|
||||
static const char *param_default_file = "/eeprom/parameters";
|
||||
static char *param_user_file;
|
||||
|
||||
int
|
||||
param_set_default_file(const char* filename)
|
||||
{
|
||||
if (filename) {
|
||||
if (strlen(filename) < sizeof(param_default_file_name))
|
||||
{
|
||||
strcpy(param_default_file_name, filename);
|
||||
} else {
|
||||
warnx("param file name too long");
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
} else {
|
||||
warnx("no valid param file name");
|
||||
return 1;
|
||||
if (param_user_file != NULL) {
|
||||
free(param_user_file);
|
||||
param_user_file = NULL;
|
||||
}
|
||||
if (filename)
|
||||
param_user_file = strdup(filename);
|
||||
return 0;
|
||||
}
|
||||
|
||||
const char *
|
||||
param_get_default_file(void)
|
||||
{
|
||||
return (param_user_file != NULL) ? param_user_file : param_default_file;
|
||||
}
|
||||
|
||||
int
|
||||
param_save_default(void)
|
||||
{
|
||||
/* delete the file in case it exists */
|
||||
unlink(param_default_file_name);
|
||||
unlink(param_get_default_file());
|
||||
|
||||
/* create the file */
|
||||
int fd = open(param_default_file_name, O_WRONLY | O_CREAT | O_EXCL);
|
||||
int fd = open(param_get_default_file(), O_WRONLY | O_CREAT | O_EXCL);
|
||||
|
||||
if (fd < 0) {
|
||||
warn("opening '%s' for writing failed", param_default_file_name);
|
||||
warn("opening '%s' for writing failed", param_get_default_file());
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -522,8 +522,8 @@ param_save_default(void)
|
||||
close(fd);
|
||||
|
||||
if (result != 0) {
|
||||
unlink(param_default_file_name);
|
||||
warn("error exporting parameters to '%s'", param_default_file_name);
|
||||
unlink(param_get_default_file());
|
||||
warn("error exporting parameters to '%s'", param_get_default_file());
|
||||
return -2;
|
||||
}
|
||||
|
||||
@@ -536,12 +536,12 @@ param_save_default(void)
|
||||
int
|
||||
param_load_default(void)
|
||||
{
|
||||
int fd = open(param_default_file_name, O_RDONLY);
|
||||
int fd = open(param_get_default_file(), O_RDONLY);
|
||||
|
||||
if (fd < 0) {
|
||||
/* no parameter file is OK, otherwise this is an error */
|
||||
if (errno != ENOENT) {
|
||||
warn("open '%s' for reading failed", param_default_file_name);
|
||||
warn("open '%s' for reading failed", param_get_default_file());
|
||||
return -1;
|
||||
}
|
||||
return 1;
|
||||
@@ -551,7 +551,7 @@ param_load_default(void)
|
||||
close(fd);
|
||||
|
||||
if (result != 0) {
|
||||
warn("error reading parameters from '%s'", param_default_file_name);
|
||||
warn("error reading parameters from '%s'", param_get_default_file());
|
||||
return -2;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user