summaryrefslogtreecommitdiffstats
path: root/sys_info_param.cpp
diff options
context:
space:
mode:
authorXo Wang <xow@google.com>2017-08-09 15:31:33 -0700
committerPatrick Venture <venture@google.com>2018-09-24 14:49:47 +0000
commit069db2fd856db744a254120ed3054d49f241ae80 (patch)
treef18da9a2afe68433a22be34d2f25148fffce8d43 /sys_info_param.cpp
parentba23ff7102ce7d9c63affecc626efb4ee97124b1 (diff)
downloadphosphor-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.cpp33
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;
+}
OpenPOWER on IntegriCloud