APM:Libraries
Classes | Macros | Enumerations | Functions
AP_Param.h File Reference

A system for managing and storing variables that are of general interest to the system. More...

#include <stddef.h>
#include <string.h>
#include <stdint.h>
#include <cmath>
#include <AP_HAL/AP_HAL.h>
#include <StorageManager/StorageManager.h>
#include "float.h"
Include dependency graph for AP_Param.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  AP_Param
 
struct  AP_Param::GroupInfo
 
struct  AP_Param::Info
 
struct  AP_Param::ConversionInfo
 
struct  AP_Param::ParamToken
 
struct  AP_Param::GroupNesting
 
struct  AP_Param::EEPROM_header
 
struct  AP_Param::Param_header
 
struct  AP_Param::param_defaults_struct
 
struct  AP_Param::param_override
 
class  AP_ParamT< T, PT >
 
class  AP_ParamV< T, PT >
 
class  AP_ParamA< T, N, PT >
 

Macros

#define AP_MAX_NAME_SIZE   16
 
#define AP_PARAM_KEY_DUMP   0
 
#define AP_PARAM_MAX_EMBEDDED_PARAM   8192
 
#define AP_PARAM_FLAG_NESTED_OFFSET   (1<<0)
 
#define AP_PARAM_FLAG_POINTER   (1<<1)
 
#define AP_PARAM_FLAG_ENABLE   (1<<2)
 
#define AP_PARAM_NO_SHIFT   (1<<3)
 
#define AP_PARAM_FLAG_INFO_POINTER   (1<<4)
 
#define AP_PARAM_FLAG_IGNORE_ENABLE   (1<<5)
 
#define AP_PARAM_FRAME_TYPE_SHIFT   6
 
#define AP_PARAM_FRAME_COPTER   (1<<0)
 
#define AP_PARAM_FRAME_ROVER   (1<<1)
 
#define AP_PARAM_FRAME_PLANE   (1<<2)
 
#define AP_PARAM_FRAME_SUB   (1<<3)
 
#define AP_PARAM_FRAME_TRICOPTER   (1<<4)
 
#define AP_PARAM_FRAME_HELI   (1<<5)
 
#define AP_VAROFFSET(type, element)   (((ptrdiff_t)(&((const type *)1)->element))-1)
 
#define AP_CLASSTYPE(clazz, element)   ((uint8_t)(((const clazz *) 1)->element.vtype))
 
#define AP_GROUPINFO_FLAGS(name, idx, clazz, element, def, flags)   { AP_CLASSTYPE(clazz, element), idx, name, AP_VAROFFSET(clazz, element), {def_value : def}, flags }
 
#define AP_GROUPINFO_FRAME(name, idx, clazz, element, def, frame_flags)   AP_GROUPINFO_FLAGS(name, idx, clazz, element, def, (frame_flags)<<AP_PARAM_FRAME_TYPE_SHIFT )
 
#define AP_GROUPINFO_FLAGS_FRAME(name, idx, clazz, element, def, flags, frame_flags)   AP_GROUPINFO_FLAGS(name, idx, clazz, element, def, flags|((frame_flags)<<AP_PARAM_FRAME_TYPE_SHIFT) )
 
#define AP_GROUPINFO(name, idx, clazz, element, def)   AP_GROUPINFO_FLAGS(name, idx, clazz, element, def, 0)
 
#define AP_NESTEDGROUPINFO(clazz, idx)   { AP_PARAM_GROUP, idx, "", 0, { group_info : clazz::var_info }, 0 }
 
#define AP_SUBGROUPINFO(element, name, idx, thisclazz, elclazz)   { AP_PARAM_GROUP, idx, name, AP_VAROFFSET(thisclazz, element), { group_info : elclazz::var_info }, AP_PARAM_FLAG_NESTED_OFFSET }
 
#define AP_SUBGROUPINFO_FLAGS(element, name, idx, thisclazz, elclazz, flags)   { AP_PARAM_GROUP, idx, name, AP_VAROFFSET(thisclazz, element), { group_info : elclazz::var_info }, AP_PARAM_FLAG_NESTED_OFFSET | flags }
 
#define AP_SUBGROUPEXTENSION(name, idx, clazz, vinfo)   { AP_PARAM_GROUP, idx, name, 0, { group_info : clazz::vinfo }, AP_PARAM_FLAG_NESTED_OFFSET }
 
#define AP_SUBGROUPPTR(element, name, idx, thisclazz, elclazz)   { AP_PARAM_GROUP, idx, name, AP_VAROFFSET(thisclazz, element), { group_info : elclazz::var_info }, AP_PARAM_FLAG_POINTER }
 
#define AP_SUBGROUPVARPTR(element, name, idx, thisclazz, var_info)   { AP_PARAM_GROUP, idx, name, AP_VAROFFSET(thisclazz, element), { group_info_ptr : &var_info }, AP_PARAM_FLAG_POINTER | AP_PARAM_FLAG_INFO_POINTER }
 
#define AP_GROUPEND   { AP_PARAM_NONE, 0xFF, "", 0, { group_info : nullptr } }
 
#define AP_VAREND   { AP_PARAM_NONE, "", 0, nullptr, { group_info : nullptr } }
 
#define AP_PARAMDEF(_t, _suffix, _pt)   typedef AP_ParamT<_t, _pt> AP_ ## _suffix;
 
#define AP_PARAMDEFV(_t, _suffix, _pt)   typedef AP_ParamV<_t, _pt> AP_ ## _suffix;
 

Enumerations

enum  ap_var_type {
  AP_PARAM_NONE = 0, AP_PARAM_INT8, AP_PARAM_INT16, AP_PARAM_INT32,
  AP_PARAM_FLOAT, AP_PARAM_VECTOR3F, AP_PARAM_GROUP, AP_PARAM_NONE = 0,
  AP_PARAM_INT8, AP_PARAM_INT16, AP_PARAM_INT32, AP_PARAM_FLOAT,
  AP_PARAM_VECTOR3F, AP_PARAM_VECTOR6F, AP_PARAM_MATRIX3F, AP_PARAM_GROUP
}
 

Functions

 AP_PARAMDEF (float, Float, AP_PARAM_FLOAT)
 
 AP_PARAMDEF (int8_t, Int8, AP_PARAM_INT8)
 
 AP_PARAMDEF (int16_t, Int16, AP_PARAM_INT16)
 
 AP_PARAMDEF (int32_t, Int32, AP_PARAM_INT32)
 

Detailed Description

A system for managing and storing variables that are of general interest to the system.

Definition in file AP_Param.h.

Macro Definition Documentation

◆ AP_CLASSTYPE

#define AP_CLASSTYPE (   clazz,
  element 
)    ((uint8_t)(((const clazz *) 1)->element.vtype))

Definition at line 90 of file AP_Param.h.

◆ AP_GROUPEND

#define AP_GROUPEND   { AP_PARAM_NONE, 0xFF, "", 0, { group_info : nullptr } }

Definition at line 121 of file AP_Param.h.

Referenced by NotchFilter< Vector3 >::apply(), loop(), and DataFlashTest_AllTypes::loop().

◆ AP_GROUPINFO

#define AP_GROUPINFO (   name,
  idx,
  clazz,
  element,
  def 
)    AP_GROUPINFO_FLAGS(name, idx, clazz, element, def, 0)

Definition at line 102 of file AP_Param.h.

Referenced by NotchFilter< Vector3 >::apply().

◆ AP_GROUPINFO_FLAGS

#define AP_GROUPINFO_FLAGS (   name,
  idx,
  clazz,
  element,
  def,
  flags 
)    { AP_CLASSTYPE(clazz, element), idx, name, AP_VAROFFSET(clazz, element), {def_value : def}, flags }

Definition at line 93 of file AP_Param.h.

Referenced by NotchFilter< Vector3 >::apply().

◆ AP_GROUPINFO_FLAGS_FRAME

#define AP_GROUPINFO_FLAGS_FRAME (   name,
  idx,
  clazz,
  element,
  def,
  flags,
  frame_flags 
)    AP_GROUPINFO_FLAGS(name, idx, clazz, element, def, flags|((frame_flags)<<AP_PARAM_FRAME_TYPE_SHIFT) )

Definition at line 99 of file AP_Param.h.

◆ AP_GROUPINFO_FRAME

#define AP_GROUPINFO_FRAME (   name,
  idx,
  clazz,
  element,
  def,
  frame_flags 
)    AP_GROUPINFO_FLAGS(name, idx, clazz, element, def, (frame_flags)<<AP_PARAM_FRAME_TYPE_SHIFT )

Definition at line 96 of file AP_Param.h.

◆ AP_MAX_NAME_SIZE

#define AP_MAX_NAME_SIZE   16

◆ AP_NESTEDGROUPINFO

#define AP_NESTEDGROUPINFO (   clazz,
  idx 
)    { AP_PARAM_GROUP, idx, "", 0, { group_info : clazz::var_info }, 0 }

Definition at line 105 of file AP_Param.h.

◆ AP_PARAM_FLAG_ENABLE

#define AP_PARAM_FLAG_ENABLE   (1<<2)

Definition at line 56 of file AP_Param.h.

Referenced by NotchFilter< Vector3 >::apply(), AP_Param::next_scalar(), and AP_Param::save().

◆ AP_PARAM_FLAG_IGNORE_ENABLE

#define AP_PARAM_FLAG_IGNORE_ENABLE   (1<<5)

Definition at line 66 of file AP_Param.h.

Referenced by AP_Param::next_scalar().

◆ AP_PARAM_FLAG_INFO_POINTER

#define AP_PARAM_FLAG_INFO_POINTER   (1<<4)

Definition at line 63 of file AP_Param.h.

Referenced by AP_Param::get_group_info().

◆ AP_PARAM_FLAG_NESTED_OFFSET

#define AP_PARAM_FLAG_NESTED_OFFSET   (1<<0)

Definition at line 49 of file AP_Param.h.

Referenced by AP_Param::adjust_group_offset().

◆ AP_PARAM_FLAG_POINTER

#define AP_PARAM_FLAG_POINTER   (1<<1)

◆ AP_PARAM_FRAME_COPTER

#define AP_PARAM_FRAME_COPTER   (1<<0)

Definition at line 77 of file AP_Param.h.

◆ AP_PARAM_FRAME_HELI

#define AP_PARAM_FRAME_HELI   (1<<5)

Definition at line 82 of file AP_Param.h.

◆ AP_PARAM_FRAME_PLANE

#define AP_PARAM_FRAME_PLANE   (1<<2)

Definition at line 79 of file AP_Param.h.

◆ AP_PARAM_FRAME_ROVER

#define AP_PARAM_FRAME_ROVER   (1<<1)

Definition at line 78 of file AP_Param.h.

◆ AP_PARAM_FRAME_SUB

#define AP_PARAM_FRAME_SUB   (1<<3)

Definition at line 80 of file AP_Param.h.

◆ AP_PARAM_FRAME_TRICOPTER

#define AP_PARAM_FRAME_TRICOPTER   (1<<4)

Definition at line 81 of file AP_Param.h.

◆ AP_PARAM_FRAME_TYPE_SHIFT

#define AP_PARAM_FRAME_TYPE_SHIFT   6

Definition at line 74 of file AP_Param.h.

Referenced by AP_Param::check_frame_type().

◆ AP_PARAM_KEY_DUMP

#define AP_PARAM_KEY_DUMP   0

Definition at line 35 of file AP_Param.h.

◆ AP_PARAM_MAX_EMBEDDED_PARAM

#define AP_PARAM_MAX_EMBEDDED_PARAM   8192

Definition at line 41 of file AP_Param.h.

◆ AP_PARAM_NO_SHIFT

#define AP_PARAM_NO_SHIFT   (1<<3)

Definition at line 60 of file AP_Param.h.

Referenced by AP_Param::group_id().

◆ AP_PARAMDEF

#define AP_PARAMDEF (   _t,
  _suffix,
  _pt 
)    typedef AP_ParamT<_t, _pt> AP_ ## _suffix;

Convenience macro for defining instances of the AP_ParamT template.

Definition at line 856 of file AP_Param.h.

◆ AP_PARAMDEFV

#define AP_PARAMDEFV (   _t,
  _suffix,
  _pt 
)    typedef AP_ParamV<_t, _pt> AP_ ## _suffix;

Definition at line 867 of file AP_Param.h.

◆ AP_SUBGROUPEXTENSION

#define AP_SUBGROUPEXTENSION (   name,
  idx,
  clazz,
  vinfo 
)    { AP_PARAM_GROUP, idx, name, 0, { group_info : clazz::vinfo }, AP_PARAM_FLAG_NESTED_OFFSET }

Definition at line 113 of file AP_Param.h.

◆ AP_SUBGROUPINFO

#define AP_SUBGROUPINFO (   element,
  name,
  idx,
  thisclazz,
  elclazz 
)    { AP_PARAM_GROUP, idx, name, AP_VAROFFSET(thisclazz, element), { group_info : elclazz::var_info }, AP_PARAM_FLAG_NESTED_OFFSET }

Definition at line 109 of file AP_Param.h.

◆ AP_SUBGROUPINFO_FLAGS

#define AP_SUBGROUPINFO_FLAGS (   element,
  name,
  idx,
  thisclazz,
  elclazz,
  flags 
)    { AP_PARAM_GROUP, idx, name, AP_VAROFFSET(thisclazz, element), { group_info : elclazz::var_info }, AP_PARAM_FLAG_NESTED_OFFSET | flags }

Definition at line 110 of file AP_Param.h.

◆ AP_SUBGROUPPTR

#define AP_SUBGROUPPTR (   element,
  name,
  idx,
  thisclazz,
  elclazz 
)    { AP_PARAM_GROUP, idx, name, AP_VAROFFSET(thisclazz, element), { group_info : elclazz::var_info }, AP_PARAM_FLAG_POINTER }

Definition at line 116 of file AP_Param.h.

◆ AP_SUBGROUPVARPTR

#define AP_SUBGROUPVARPTR (   element,
  name,
  idx,
  thisclazz,
  var_info 
)    { AP_PARAM_GROUP, idx, name, AP_VAROFFSET(thisclazz, element), { group_info_ptr : &var_info }, AP_PARAM_FLAG_POINTER | AP_PARAM_FLAG_INFO_POINTER }

Definition at line 119 of file AP_Param.h.

◆ AP_VAREND

#define AP_VAREND   { AP_PARAM_NONE, "", 0, nullptr, { group_info : nullptr } }

Definition at line 122 of file AP_Param.h.

◆ AP_VAROFFSET

#define AP_VAROFFSET (   type,
  element 
)    (((ptrdiff_t)(&((const type *)1)->element))-1)

Definition at line 87 of file AP_Param.h.

Enumeration Type Documentation

◆ ap_var_type

Enumerator
AP_PARAM_NONE 
AP_PARAM_INT8 
AP_PARAM_INT16 
AP_PARAM_INT32 
AP_PARAM_FLOAT 
AP_PARAM_VECTOR3F 
AP_PARAM_GROUP 
AP_PARAM_NONE 
AP_PARAM_INT8 
AP_PARAM_INT16 
AP_PARAM_INT32 
AP_PARAM_FLOAT 
AP_PARAM_VECTOR3F 
AP_PARAM_VECTOR6F 
AP_PARAM_MATRIX3F 
AP_PARAM_GROUP 

Definition at line 124 of file AP_Param.h.

Function Documentation

◆ AP_PARAMDEF() [1/4]

AP_PARAMDEF ( float  ,
Float  ,
AP_PARAM_FLOAT   
)

◆ AP_PARAMDEF() [2/4]

AP_PARAMDEF ( int8_t  ,
Int8  ,
AP_PARAM_INT8   
)

◆ AP_PARAMDEF() [3/4]

AP_PARAMDEF ( int16_t  ,
Int16  ,
AP_PARAM_INT16   
)

◆ AP_PARAMDEF() [4/4]

AP_PARAMDEF ( int32_t  ,
Int32  ,
AP_PARAM_INT32   
)