From a9bbbdce82ebf9d1d38fd36948fc3eb064d80177 Mon Sep 17 00:00:00 2001 From: Daniel Agar Date: Wed, 20 Dec 2017 15:46:30 -0500 Subject: [PATCH] controllib add BlockParamBool (int32 wrapper) --- src/lib/controllib/block/BlockParam.cpp | 24 ++++++++++++++++++++++++ src/lib/controllib/block/BlockParam.hpp | 6 +++++- 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/src/lib/controllib/block/BlockParam.cpp b/src/lib/controllib/block/BlockParam.cpp index 7409144938..4b0e14cf5c 100644 --- a/src/lib/controllib/block/BlockParam.cpp +++ b/src/lib/controllib/block/BlockParam.cpp @@ -81,6 +81,30 @@ BlockParamBase::BlockParamBase(Block *parent, const char *name, bool parent_pref } }; +template <> +BlockParam::BlockParam(Block *block, const char *name, bool parent_prefix) : + BlockParamBase(block, name, parent_prefix), + _val() +{ + update(); +} + +template <> +bool BlockParam::update() +{ + int32_t tmp = 0; + int ret = param_get(_handle, &tmp); + + if (tmp == 1) { + _val = true; + + } else { + _val = false; + } + + return (ret == PX4_OK); +} + template <> BlockParam::BlockParam(Block *block, const char *name, bool parent_prefix) : BlockParamBase(block, name, parent_prefix), diff --git a/src/lib/controllib/block/BlockParam.hpp b/src/lib/controllib/block/BlockParam.hpp index 5321ee6419..841ba879c9 100644 --- a/src/lib/controllib/block/BlockParam.hpp +++ b/src/lib/controllib/block/BlockParam.hpp @@ -63,7 +63,7 @@ public: virtual ~BlockParamBase() = default; virtual bool update() = 0; - const char *getName() { return param_name(_handle); } + const char *getName() const { return param_name(_handle); } protected: param_t _handle{PARAM_INVALID}; @@ -101,8 +101,12 @@ protected: T _val; }; +template <> +bool BlockParam::update(); + typedef BlockParam BlockParamFloat; typedef BlockParam BlockParamInt; +typedef BlockParam BlockParamBool; typedef BlockParam BlockParamExtFloat; typedef BlockParam BlockParamExtInt;