diff --git a/src/platforms/px4_parameter.h b/src/platforms/px4_parameter.h index 464a84f517..6b5453d773 100644 --- a/src/platforms/px4_parameter.h +++ b/src/platforms/px4_parameter.h @@ -43,6 +43,7 @@ #include #else /* includes when building for NuttX */ +#include #endif namespace px4 @@ -96,7 +97,6 @@ public: /** * Update the parameter value - * Nothing to do for ROS */ T update() { @@ -113,11 +113,45 @@ public: } }; - - #else +template +class Parameter : + public ParameterBase +{ +public: + Parameter(const char *name, T value) : + ParameterBase(name, value), + _handle(param_find(name)) + { + } + + ~Parameter() {}; + + /** + * Update the parameter value + */ + T update() + { + if (_handle != PARAM_INVALID) { + param_get(_handle, &(this->_value)); + } + return get(); + } + + /** + * Get the current parameter value + */ + T get() + { + return this->_value; + } + +protected: + param_t _handle; + +}; #endif -typedef Parameter ParameterFloat; +typedef Parameter ParameterFloat; typedef Parameter ParameterInt; }