mirror of
https://github.com/ArduPilot/ardupilot
synced 2025-02-21 07:13:56 -04:00
AP_Param: warn on last pass only about unknown parameters
Do not warn about unknown parameters on the first pass, i.e. when AP_Param:load_all() is called. This is because we may still not know about dynamically loaded parameters. When we call the second (last) time, we expect to already know all possible parameters, so print a warning to both console and the debug terminal.
This commit is contained in:
parent
7f0d5ddf21
commit
1a45aa12f5
@ -611,7 +611,7 @@ void Copter::allocate_motors(void)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
// reload lines from the defaults file that may now be accessible
|
// reload lines from the defaults file that may now be accessible
|
||||||
AP_Param::reload_defaults_file();
|
AP_Param::reload_defaults_file(true);
|
||||||
|
|
||||||
// now setup some frame-class specific defaults
|
// now setup some frame-class specific defaults
|
||||||
switch ((AP_Motors::motor_frame_class)g2.frame_class.get()) {
|
switch ((AP_Motors::motor_frame_class)g2.frame_class.get()) {
|
||||||
|
@ -184,7 +184,7 @@ void Plane::init_ardupilot()
|
|||||||
|
|
||||||
quadplane.setup();
|
quadplane.setup();
|
||||||
|
|
||||||
AP_Param::reload_defaults_file();
|
AP_Param::reload_defaults_file(true);
|
||||||
|
|
||||||
startup_ground();
|
startup_ground();
|
||||||
|
|
||||||
|
@ -1274,7 +1274,7 @@ bool AP_Param::load_all()
|
|||||||
struct Param_header phdr;
|
struct Param_header phdr;
|
||||||
uint16_t ofs = sizeof(AP_Param::EEPROM_header);
|
uint16_t ofs = sizeof(AP_Param::EEPROM_header);
|
||||||
|
|
||||||
reload_defaults_file();
|
reload_defaults_file(false);
|
||||||
|
|
||||||
while (ofs < _storage.size()) {
|
while (ofs < _storage.size()) {
|
||||||
_storage.read_block(&phdr, ofs, sizeof(phdr));
|
_storage.read_block(&phdr, ofs, sizeof(phdr));
|
||||||
@ -1302,12 +1302,14 @@ bool AP_Param::load_all()
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
reload from hal.util defaults file
|
* reload from hal.util defaults file or embedded param region
|
||||||
|
* @last_pass: if this is the last pass on defaults - unknown parameters are
|
||||||
|
* ignored but if this is set a warning will be emitted
|
||||||
*/
|
*/
|
||||||
void AP_Param::reload_defaults_file()
|
void AP_Param::reload_defaults_file(bool last_pass)
|
||||||
{
|
{
|
||||||
if (param_defaults_data.length != 0) {
|
if (param_defaults_data.length != 0) {
|
||||||
load_embedded_param_defaults();
|
load_embedded_param_defaults(last_pass);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1318,7 +1320,7 @@ void AP_Param::reload_defaults_file()
|
|||||||
*/
|
*/
|
||||||
const char *default_file = hal.util->get_custom_defaults_file();
|
const char *default_file = hal.util->get_custom_defaults_file();
|
||||||
if (default_file) {
|
if (default_file) {
|
||||||
if (load_defaults_file(default_file)) {
|
if (load_defaults_file(default_file, last_pass)) {
|
||||||
printf("Loaded defaults from %s\n", default_file);
|
printf("Loaded defaults from %s\n", default_file);
|
||||||
} else {
|
} else {
|
||||||
printf("Failed to load defaults from %s\n", default_file);
|
printf("Failed to load defaults from %s\n", default_file);
|
||||||
@ -1815,7 +1817,7 @@ bool AP_Param::count_defaults_in_file(const char *filename, uint16_t &num_defaul
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool AP_Param::read_param_defaults_file(const char *filename)
|
bool AP_Param::read_param_defaults_file(const char *filename, bool last_pass)
|
||||||
{
|
{
|
||||||
FILE *f = fopen(filename, "r");
|
FILE *f = fopen(filename, "r");
|
||||||
if (f == nullptr) {
|
if (f == nullptr) {
|
||||||
@ -1834,8 +1836,13 @@ bool AP_Param::read_param_defaults_file(const char *filename)
|
|||||||
enum ap_var_type var_type;
|
enum ap_var_type var_type;
|
||||||
AP_Param *vp = find(pname, &var_type);
|
AP_Param *vp = find(pname, &var_type);
|
||||||
if (!vp) {
|
if (!vp) {
|
||||||
::printf("Ignored unknown param %s in defaults file %s\n",
|
if (last_pass) {
|
||||||
pname, filename);
|
::printf("Ignored unknown param %s in defaults file %s\n",
|
||||||
|
pname, filename);
|
||||||
|
hal.console->printf(
|
||||||
|
"Ignored unknown param %s in defaults file %s\n",
|
||||||
|
pname, filename);
|
||||||
|
}
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
param_overrides[idx].object_ptr = vp;
|
param_overrides[idx].object_ptr = vp;
|
||||||
@ -1852,7 +1859,7 @@ bool AP_Param::read_param_defaults_file(const char *filename)
|
|||||||
/*
|
/*
|
||||||
load a default set of parameters from a file
|
load a default set of parameters from a file
|
||||||
*/
|
*/
|
||||||
bool AP_Param::load_defaults_file(const char *filename)
|
bool AP_Param::load_defaults_file(const char *filename, bool last_pass)
|
||||||
{
|
{
|
||||||
if (filename == nullptr) {
|
if (filename == nullptr) {
|
||||||
return false;
|
return false;
|
||||||
@ -1894,7 +1901,7 @@ bool AP_Param::load_defaults_file(const char *filename)
|
|||||||
for (char *pname = strtok_r(mutable_filename, ",", &saveptr);
|
for (char *pname = strtok_r(mutable_filename, ",", &saveptr);
|
||||||
pname != nullptr;
|
pname != nullptr;
|
||||||
pname = strtok_r(nullptr, ",", &saveptr)) {
|
pname = strtok_r(nullptr, ",", &saveptr)) {
|
||||||
if (!read_param_defaults_file(pname)) {
|
if (!read_param_defaults_file(pname, last_pass)) {
|
||||||
free(mutable_filename);
|
free(mutable_filename);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -1957,11 +1964,12 @@ bool AP_Param::count_embedded_param_defaults(uint16_t &count)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
load a default set of parameters from a embedded parameter region
|
* load a default set of parameters from a embedded parameter region
|
||||||
|
* @last_pass: if this is the last pass on defaults - unknown parameters are
|
||||||
|
* ignored but if this is set a warning will be emitted
|
||||||
*/
|
*/
|
||||||
void AP_Param::load_embedded_param_defaults()
|
void AP_Param::load_embedded_param_defaults(bool last_pass)
|
||||||
{
|
{
|
||||||
if (param_overrides != nullptr) {
|
if (param_overrides != nullptr) {
|
||||||
free(param_overrides);
|
free(param_overrides);
|
||||||
@ -2015,8 +2023,13 @@ void AP_Param::load_embedded_param_defaults()
|
|||||||
enum ap_var_type var_type;
|
enum ap_var_type var_type;
|
||||||
AP_Param *vp = find(pname, &var_type);
|
AP_Param *vp = find(pname, &var_type);
|
||||||
if (!vp) {
|
if (!vp) {
|
||||||
::printf("Ignored unknown param %s from embedded region (offset=%u)\n",
|
if (last_pass) {
|
||||||
pname, ptr - param_defaults_data.data);
|
::printf("Ignored unknown param %s from embedded region (offset=%u)\n",
|
||||||
|
pname, ptr - param_defaults_data.data);
|
||||||
|
hal.console->printf(
|
||||||
|
"Ignored unknown param %s from embedded region (offset=%u)\n",
|
||||||
|
pname, ptr - param_defaults_data.data);
|
||||||
|
}
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
param_overrides[idx].object_ptr = vp;
|
param_overrides[idx].object_ptr = vp;
|
||||||
|
@ -327,7 +327,7 @@ public:
|
|||||||
|
|
||||||
/// reoad the hal.util defaults file. Called after pointer parameters have been allocated
|
/// reoad the hal.util defaults file. Called after pointer parameters have been allocated
|
||||||
///
|
///
|
||||||
static void reload_defaults_file();
|
static void reload_defaults_file(bool last_pass);
|
||||||
|
|
||||||
static void load_object_from_eeprom(const void *object_pointer, const struct GroupInfo *group_info);
|
static void load_object_from_eeprom(const void *object_pointer, const struct GroupInfo *group_info);
|
||||||
|
|
||||||
@ -574,15 +574,15 @@ private:
|
|||||||
load a parameter defaults file. This happens as part of load_all()
|
load a parameter defaults file. This happens as part of load_all()
|
||||||
*/
|
*/
|
||||||
static bool count_defaults_in_file(const char *filename, uint16_t &num_defaults);
|
static bool count_defaults_in_file(const char *filename, uint16_t &num_defaults);
|
||||||
static bool read_param_defaults_file(const char *filename);
|
static bool read_param_defaults_file(const char *filename, bool last_pass);
|
||||||
static bool load_defaults_file(const char *filename);
|
static bool load_defaults_file(const char *filename, bool last_pass);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
load defaults from embedded parameters
|
load defaults from embedded parameters
|
||||||
*/
|
*/
|
||||||
static bool count_embedded_param_defaults(uint16_t &count);
|
static bool count_embedded_param_defaults(uint16_t &count);
|
||||||
static void load_embedded_param_defaults();
|
static void load_embedded_param_defaults(bool last_pass);
|
||||||
|
|
||||||
// send a parameter to all GCS instances
|
// send a parameter to all GCS instances
|
||||||
void send_parameter(const char *name, enum ap_var_type param_header_type, uint8_t idx) const;
|
void send_parameter(const char *name, enum ap_var_type param_header_type, uint8_t idx) const;
|
||||||
|
Loading…
Reference in New Issue
Block a user