| John Wang | 95e6b3c | 2020-02-13 09:43:24 +0800 | [diff] [blame] | 1 | #pragma once | 
|  | 2 |  | 
|  | 3 | #include "bios_attribute.hpp" | 
|  | 4 |  | 
|  | 5 | class TestBIOSIntegerAttribute; | 
|  | 6 |  | 
|  | 7 | namespace pldm | 
|  | 8 | { | 
|  | 9 | namespace responder | 
|  | 10 | { | 
|  | 11 | namespace bios | 
|  | 12 | { | 
|  | 13 |  | 
|  | 14 | /** @class BIOSIntegerAttribute | 
|  | 15 | *  @brief Associate integer entry(attr table and attribute value table) and | 
|  | 16 | *         dbus attribute | 
|  | 17 | */ | 
|  | 18 | class 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 | 
| Tom Joseph | ca7b252 | 2020-11-18 12:27:11 +0530 | [diff] [blame^] | 46 | *  @param[in,out] optAttributeValue - init value of the attribute | 
| John Wang | 95e6b3c | 2020-02-13 09:43:24 +0800 | [diff] [blame] | 47 | */ | 
|  | 48 | void constructEntry(const BIOSStringTable& stringTable, Table& attrTable, | 
| Tom Joseph | ca7b252 | 2020-11-18 12:27:11 +0530 | [diff] [blame^] | 49 | Table& attrValueTable, | 
|  | 50 | std::optional<std::variant<int64_t, std::string>> | 
|  | 51 | optAttributeValue = std::nullopt) override; | 
| John Wang | 95e6b3c | 2020-02-13 09:43:24 +0800 | [diff] [blame] | 52 |  | 
| George Liu | 1244acf | 2020-08-14 09:11:11 +0800 | [diff] [blame] | 53 | /** @brief Generate attribute entry by the spec DSP0247_1.0.0 Table 14 | 
|  | 54 | *  @param[in] attributevalue - attribute value(Enumeration, String and | 
|  | 55 | *             Integer) | 
|  | 56 | *  @param[in,out] attrValueEntry - attribute entry | 
|  | 57 | */ | 
|  | 58 | void generateAttributeEntry( | 
|  | 59 | const std::variant<int64_t, std::string>& attributevalue, | 
|  | 60 | Table& attrValueEntry) override; | 
|  | 61 |  | 
| Sampa Misra | 46ece06 | 2020-03-18 07:17:44 -0500 | [diff] [blame] | 62 | int updateAttrVal(Table& newValue, uint16_t attrHdl, uint8_t attrType, | 
|  | 63 | const PropertyValue& newPropVal); | 
|  | 64 |  | 
| John Wang | 95e6b3c | 2020-02-13 09:43:24 +0800 | [diff] [blame] | 65 | private: | 
|  | 66 | /** @brief Integer field from json */ | 
|  | 67 | table::attribute::IntegerField integerInfo; | 
|  | 68 |  | 
|  | 69 | /** @brief Get pldm value from dbus propertyValue */ | 
| Sampa Misra | 46ece06 | 2020-03-18 07:17:44 -0500 | [diff] [blame] | 70 | uint64_t getAttrValue(const PropertyValue& value); | 
| John Wang | 95e6b3c | 2020-02-13 09:43:24 +0800 | [diff] [blame] | 71 |  | 
|  | 72 | /** @brief Get value on dbus */ | 
|  | 73 | uint64_t getAttrValue(); | 
|  | 74 | }; | 
|  | 75 |  | 
|  | 76 | } // namespace bios | 
|  | 77 | } // namespace responder | 
| Sampa Misra | 46ece06 | 2020-03-18 07:17:44 -0500 | [diff] [blame] | 78 | } // namespace pldm |