Browse Source

AP_Param: add method to find key of top level group variable by pointer

zr-v5.1
Siddharth Purohit 5 years ago committed by Randy Mackay
parent
commit
1d2985e967
  1. 17
      libraries/AP_Param/AP_Param.cpp
  2. 8
      libraries/AP_Param/AP_Param.h

17
libraries/AP_Param/AP_Param.cpp

@ -973,6 +973,23 @@ bool AP_Param::find_key_by_pointer(const void *ptr, uint16_t &key)
return false; 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. // Find a object by name.
// //

8
libraries/AP_Param/AP_Param.h

@ -323,6 +323,14 @@ public:
ptrdiff_t offset, uint16_t &key); ptrdiff_t offset, uint16_t &key);
static bool find_key_by_pointer(const void *ptr, 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 /// Find a object in the top level var_info table
/// ///
/// If the variable has no name, it cannot be found by this interface. /// If the variable has no name, it cannot be found by this interface.

Loading…
Cancel
Save