diff --git a/ArduCopter/APM_Config.h b/ArduCopter/APM_Config.h index 8b967d6689..51c0eea680 100644 --- a/ArduCopter/APM_Config.h +++ b/ArduCopter/APM_Config.h @@ -66,3 +66,4 @@ //#define USERHOOK_SLOWLOOP userhook_SlowLoop(); // for code to be run at 3.3hz //#define USERHOOK_SUPERSLOWLOOP userhook_SuperSlowLoop(); // for code to be run at 1hz //#define USERHOOK_AUXSWITCH ENABLED // for code to handle user aux switches +//#define USER_PARAMS_ENABLED ENABLED // to enable user parameters diff --git a/ArduCopter/Copter.h b/ArduCopter/Copter.h index 2558bfa9fd..1d4e39e985 100644 --- a/ArduCopter/Copter.h +++ b/ArduCopter/Copter.h @@ -171,6 +171,9 @@ #endif // Local modules +#ifdef USER_PARAMS_ENABLED +#include "UserParameters.h" +#endif #include "Parameters.h" #if ADSB_ENABLED == ENABLED #include "avoidance_adsb.h" diff --git a/ArduCopter/Parameters.cpp b/ArduCopter/Parameters.cpp index a9c2fe20cd..84e40b9ede 100644 --- a/ArduCopter/Parameters.cpp +++ b/ArduCopter/Parameters.cpp @@ -944,6 +944,10 @@ const AP_Param::GroupInfo ParametersG2::var_info[] = { AP_SUBGROUPINFO(follow, "FOLL", 27, ParametersG2, AP_Follow), #endif +#ifdef USER_PARAMS_ENABLED + AP_SUBGROUPINFO(follow, "USR", 28, ParametersG2, UserParameters), +#endif + AP_GROUPEND }; @@ -1009,6 +1013,9 @@ ParametersG2::ParametersG2(void) #if MODE_FOLLOW_ENABLED == ENABLED ,follow() #endif +#ifdef USER_PARAMS_ENABLED + ,user_parameters() +#endif { AP_Param::setup_object_defaults(this, var_info); } diff --git a/ArduCopter/Parameters.h b/ArduCopter/Parameters.h index 7ce2f70d76..5015b6fadf 100644 --- a/ArduCopter/Parameters.h +++ b/ArduCopter/Parameters.h @@ -581,6 +581,11 @@ public: AP_Follow follow; #endif +#ifdef USER_PARAMS_ENABLED + // User custom parameters + UserParameters user_parameters; +#endif + }; extern const AP_Param::Info var_info[]; diff --git a/ArduCopter/UserParameters.cpp b/ArduCopter/UserParameters.cpp new file mode 100644 index 0000000000..7bd0fdb34f --- /dev/null +++ b/ArduCopter/UserParameters.cpp @@ -0,0 +1,13 @@ +#include "UserParameters.h" + +// "USR" + 13 chars remaining for param name +const AP_Param::GroupInfo UserParameters::var_info[] = { + + // Put your parameters definition here + // Note the maximum length of parameter name is 13 chars + AP_GROUPINFO("_INT8", 0, UserParameters, _int8, 0), + AP_GROUPINFO("_INT16", 1, UserParameters, _int16, 0), + AP_GROUPINFO("_FLOAT", 2, UserParameters, _float, 0), + + AP_GROUPEND +}; diff --git a/ArduCopter/UserParameters.h b/ArduCopter/UserParameters.h new file mode 100644 index 0000000000..c5491eda39 --- /dev/null +++ b/ArduCopter/UserParameters.h @@ -0,0 +1,22 @@ +#pragma once + +#include + +class UserParameters { + +public: + UserParameters() {} + static const struct AP_Param::GroupInfo var_info[]; + + // Put accessors to your parameter variables here + // UserCode usage example: g2.user_parameters.get_int8Param() + AP_Int8 get_int8Param() const { return _int8; } + AP_Int16 get_int16Param() const { return _int16; } + AP_Float get_floatParam() const { return _float; } + +private: + // Put your parameter variable definitions here + AP_Int8 _int8; + AP_Int16 _int16; + AP_Float _float; +};