blob: 83fa53d636ea452e6d627b6cd7f72ae736555467 [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
50 private:
51 /** @brief Integer field from json */
52 table::attribute::IntegerField integerInfo;
53
54 /** @brief Get pldm value from dbus propertyValue */
55 uint64_t getAttrValue(PropertyValue value);
56
57 /** @brief Get value on dbus */
58 uint64_t getAttrValue();
59};
60
61} // namespace bios
62} // namespace responder
63} // namespace pldm