blob: e1800666b5484bfd3a3f04ee888520bb05e8daf3 [file] [log] [blame]
John Wang95e6b3c2020-02-13 09:43:24 +08001#pragma once
2
3#include "bios_attribute.hpp"
4
5class TestBIOSIntegerAttribute;
6
7namespace pldm
8{
9namespace responder
10{
11namespace bios
12{
13
14/** @class BIOSIntegerAttribute
15 * @brief Associate integer entry(attr table and attribute value table) and
16 * dbus attribute
17 */
18class BIOSIntegerAttribute : public BIOSAttribute
19{
20 public:
21 friend class ::TestBIOSIntegerAttribute;
22
23 /** @brief Construct a bios integer attribute
24 * @param[in] entry - Json Object
25 * @param[in] dbusHandler - Dbus Handler
26 */
27 BIOSIntegerAttribute(const Json& entry, DBusHandler* const dbusHandler);
28
29 /** @brief Set Attribute value On Dbus according to the attribute value
30 * entry
31 * @param[in] attrValueEntry - The attribute value entry
32 * @param[in] attrEntry - The attribute entry corresponding to the
33 * attribute value entry
34 * @param[in] stringTable - The string table
35 */
36 void
37 setAttrValueOnDbus(const pldm_bios_attr_val_table_entry* attrValueEntry,
38 const pldm_bios_attr_table_entry* attrEntry,
39 const BIOSStringTable& stringTable) override;
40
41 /** @brief Construct corresponding entries at the end of the attribute table
42 * and attribute value tables
43 * @param[in] stringTable - The string Table
44 * @param[in,out] attrTable - The attribute table
45 * @param[in,out] attrValueTable - The attribute value table
46 */
47 void constructEntry(const BIOSStringTable& stringTable, Table& attrTable,
48 Table& attrValueTable) override;
49
Sampa Misra46ece062020-03-18 07:17:44 -050050 int updateAttrVal(Table& newValue, uint16_t attrHdl, uint8_t attrType,
51 const PropertyValue& newPropVal);
52
John Wang95e6b3c2020-02-13 09:43:24 +080053 private:
54 /** @brief Integer field from json */
55 table::attribute::IntegerField integerInfo;
56
57 /** @brief Get pldm value from dbus propertyValue */
Sampa Misra46ece062020-03-18 07:17:44 -050058 uint64_t getAttrValue(const PropertyValue& value);
John Wang95e6b3c2020-02-13 09:43:24 +080059
60 /** @brief Get value on dbus */
61 uint64_t getAttrValue();
62};
63
64} // namespace bios
65} // namespace responder
Sampa Misra46ece062020-03-18 07:17:44 -050066} // namespace pldm