blob: 5f2773ac3121dc0832907826d130f693dedba9f5 [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
George Liu1244acf2020-08-14 09:11:11 +080050 /** @brief Generate attribute entry by the spec DSP0247_1.0.0 Table 14
51 * @param[in] attributevalue - attribute value(Enumeration, String and
52 * Integer)
53 * @param[in,out] attrValueEntry - attribute entry
54 */
55 void generateAttributeEntry(
56 const std::variant<int64_t, std::string>& attributevalue,
57 Table& attrValueEntry) override;
58
Sampa Misra46ece062020-03-18 07:17:44 -050059 int updateAttrVal(Table& newValue, uint16_t attrHdl, uint8_t attrType,
60 const PropertyValue& newPropVal);
61
John Wang95e6b3c2020-02-13 09:43:24 +080062 private:
63 /** @brief Integer field from json */
64 table::attribute::IntegerField integerInfo;
65
66 /** @brief Get pldm value from dbus propertyValue */
Sampa Misra46ece062020-03-18 07:17:44 -050067 uint64_t getAttrValue(const PropertyValue& value);
John Wang95e6b3c2020-02-13 09:43:24 +080068
69 /** @brief Get value on dbus */
70 uint64_t getAttrValue();
71};
72
73} // namespace bios
74} // namespace responder
Sampa Misra46ece062020-03-18 07:17:44 -050075} // namespace pldm