1 #pragma once 2 3 #include "const.hpp" 4 #include "types.hpp" 5 6 #include <iostream> 7 8 using namespace std; 9 10 namespace openpower 11 { 12 namespace vpd 13 { 14 15 /** @brief Return the hex representation of the incoming byte 16 * 17 * @param [in] c - The input byte 18 * @returns The hex representation of the byte as a character. 19 */ 20 constexpr auto toHex(size_t c) 21 { 22 constexpr auto map = "0123456789abcdef"; 23 return map[c]; 24 } 25 26 namespace inventory 27 { 28 /** @brief Api to obtain a dictionary of path -> services 29 * where path is in subtree and services is of the type 30 * returned by the GetObject method. 31 * 32 * @param [in] root - Root path for object subtree 33 * @param [in] depth - Maximum subtree depth required 34 * @param [in] interfaces - Array to interfaces for which 35 * result is required. 36 * @return A dictionary of Path -> services 37 */ 38 MapperResponse 39 getObjectSubtreeForInterfaces(const std::string& root, const int32_t depth, 40 const std::vector<std::string>& interfaces); 41 42 } // namespace inventory 43 44 /**@brief This API reads 2 Bytes of data and swap the read data 45 * @param[in] iterator- Pointer pointing to the data to be read 46 * @return returns 2 Byte data read at the given pointer 47 */ 48 openpower::vpd::constants::LE2ByteData 49 readUInt16LE(Binary::const_iterator iterator); 50 51 /** @brief Encodes a keyword for D-Bus. 52 * @param[in] kw - kwd data in string format 53 * @param[in] encoding - required for kwd data 54 */ 55 string encodeKeyword(const string& kw, const string& encoding); 56 57 /** @brief Reads a property from the inventory manager given object path, 58 * intreface and property. 59 * @param[in] obj - object path 60 * @param[in] inf - interface 61 * @param[in] prop - property whose value is fetched 62 * @return [out] - value of the property 63 */ 64 string readBusProperty(const string& obj, const string& inf, 65 const string& prop); 66 67 /** 68 * @brief API to create PEL entry 69 * @param[in] Map holding the additional data 70 * @param[in] error interface 71 */ 72 void createPEL(const std::map<std::string, std::string>& additionalData, 73 const std::string& errIntf); 74 75 /** 76 * @brief getVpdFilePath 77 * Get vpd file path corresponding to the given object path. 78 * @param[in] - json file path 79 * @param[in] - Object path 80 * @return - Vpd file path 81 */ 82 inventory::VPDfilepath getVpdFilePath(const string& jsonFile, 83 const std::string& ObjPath); 84 85 /** 86 * @brief isPathInJson 87 * API which checks for the presence of the given eeprom path in the given json. 88 * @param[in] - eepromPath 89 * @return - true if the eeprom is present in the json; false otherwise 90 */ 91 bool isPathInJson(const std::string& eepromPath); 92 93 /** 94 * @brief isRecKwInDbusJson 95 * API which checks whether the given keyword under the given record is to be 96 * published on dbus or not. Checks against the keywords present in 97 * dbus_property.json. 98 * @param[in] - record name 99 * @param[in] - keyword name 100 * @return - true if the record-keyword pair is present in dbus_property.json; 101 * false otherwise. 102 */ 103 bool isRecKwInDbusJson(const std::string& record, const std::string& keyword); 104 105 /** 106 * @brief Check the type of VPD. 107 * 108 * Checks the type of vpd based on the start tag. 109 * @param[in] vector - Vpd data in vector format 110 * 111 * @return enum of type vpdType 112 */ 113 constants::vpdType vpdTypeCheck(const Binary& vector); 114 115 } // namespace vpd 116 } // namespace openpower 117