diff options
author | Xo Wang <xow@google.com> | 2017-08-09 15:31:33 -0700 |
---|---|---|
committer | Patrick Venture <venture@google.com> | 2018-09-24 14:49:47 +0000 |
commit | 069db2fd856db744a254120ed3054d49f241ae80 (patch) | |
tree | f18da9a2afe68433a22be34d2f25148fffce8d43 /sys_info_param.cpp | |
parent | ba23ff7102ce7d9c63affecc626efb4ee97124b1 (diff) | |
download | phosphor-host-ipmid-069db2fd856db744a254120ed3054d49f241ae80.tar.gz phosphor-host-ipmid-069db2fd856db744a254120ed3054d49f241ae80.zip |
apphandler: Add storage for Get/Set System Info Parameter
All but one standard System Info Parameter and most (all?) OEM
parameters are string type. Add a interface to connect string callbacks
to System Info Parameter selector codes. Also add a convenience call
that can connect a static string to a parameter selector code.
Change-Id: I5e35d0418b8ddf5b2575fac093acfc7d7ca2217c
Signed-off-by: Xo Wang <xow@google.com>
Signed-off-by: Patrick Venture <venture@google.com>
Diffstat (limited to 'sys_info_param.cpp')
-rw-r--r-- | sys_info_param.cpp | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/sys_info_param.cpp b/sys_info_param.cpp new file mode 100644 index 0000000..c9bee32 --- /dev/null +++ b/sys_info_param.cpp @@ -0,0 +1,33 @@ +#include "sys_info_param.hpp" + +std::tuple<bool, std::string> + SysInfoParamStore::lookup(uint8_t paramSelector) const +{ + const auto iterator = params.find(paramSelector); + if (iterator == params.end()) + { + return std::make_tuple(false, ""); + } + + auto& callback = iterator->second; + auto s = callback(); + return std::make_tuple(true, s); +} + +void SysInfoParamStore::update(uint8_t paramSelector, const std::string& s) +{ + // Add a callback that captures a copy of the string passed and returns it + // when invoked. + + // clang-format off + update(paramSelector, [s]() { + return s; + }); + // clang-format on +} + +void SysInfoParamStore::update(uint8_t paramSelector, + const std::function<std::string()>& callback) +{ + params[paramSelector] = callback; +} |