AP_Param: added find_top_level_key_by_pointer

This commit is contained in:
Andrew Tridgell 2020-05-11 19:35:20 +10:00
parent eddb0a7376
commit 36caf3da49
2 changed files with 25 additions and 0 deletions

View File

@ -962,6 +962,23 @@ bool AP_Param::find_key_by_pointer(const void *ptr, uint16_t &key)
return false;
}
/*
Find key to top level group parameters by pointer
*/
bool AP_Param::find_top_level_key_by_pointer(const void *ptr, uint16_t &key)
{
for (uint16_t i=0; i<_num_vars; i++) {
if (_var_info[i].type != AP_PARAM_GROUP) {
continue;
}
if (ptr == (void **)_var_info[i].ptr) {
key = _var_info[i].key;
return true;
}
}
return false;
}
// Find a object by name.
//

View File

@ -303,6 +303,14 @@ public:
ptrdiff_t offset, uint16_t &key);
static bool find_key_by_pointer(const void *ptr, uint16_t &key);
/// Find key of top level group variable by pointer
///
///
/// @param p Pointer to variable
/// @return key for variable
static bool find_top_level_key_by_pointer(const void *ptr, uint16_t &key);
/// Find a object in the top level var_info table
///
/// If the variable has no name, it cannot be found by this interface.