blob: 1b1f0348ea487533ecd198a55398510950fdceee [file] [log] [blame]
SunnySrivastava1984e12b1812020-05-26 02:23:11 -05001#pragma once
2
3#include "const.hpp"
4#include "parser_interface.hpp"
5#include "store.hpp"
6#include "types.hpp"
7
8#include <vector>
9
10namespace openpower
11{
12namespace vpd
13{
14namespace ipz
15{
16namespace parser
17{
18
19using ParserInterface = openpower::vpd::parser::interface::ParserInterface;
20using kwdVpdMap = openpower::vpd::inventory::KeywordVpdMap;
21
22class IpzVpdParser : public ParserInterface
23{
24 public:
25 IpzVpdParser() = delete;
26 IpzVpdParser(const IpzVpdParser&) = delete;
27 IpzVpdParser& operator=(const IpzVpdParser&) = delete;
28 IpzVpdParser(IpzVpdParser&&) = delete;
29 IpzVpdParser& operator=(IpzVpdParser&&) = delete;
30 ~IpzVpdParser() = default;
31
32 /**
33 * @brief Constructor
girik18bb9852022-11-16 05:48:13 -060034 * @param[in] - VpdVector - vpd buffer
35 * @param[in] - path - Inventory Path
36 * @param[in] - vpdFilePath - VPD H/w path
37 * @param[in] - vpdStartOffset - VPD starting offset
SunnySrivastava1984e12b1812020-05-26 02:23:11 -050038 */
girik18bb9852022-11-16 05:48:13 -060039 IpzVpdParser(const Binary& VpdVector, const std::string& path,
40 const std::string& vpdFilePath, uint32_t vpdStartOffset) :
41 vpd(VpdVector),
42 inventoryPath(path), vpdFilePath(vpdFilePath),
43 vpdStartOffset(vpdStartOffset)
Patrick Williamsc78d8872023-05-10 07:50:56 -050044 {}
SunnySrivastava1984e12b1812020-05-26 02:23:11 -050045
46 /**
47 * @brief Parse the memory VPD binary data.
48 * Collects and emplace the keyword-value pairs in map.
49 *
50 * @return map of keyword:value
51 */
52 std::variant<kwdVpdMap, Store> parse();
53
54 /**
55 * @brief An api to return interface name with respect to
56 * the parser selected.
57 *
58 * @return - Interface name for that vpd type.
59 */
60 std::string getInterfaceName() const;
61
62 /** @brief API to check vpd header
63 * @param [in] vpd - VPDheader in binary format
64 */
65 void processHeader();
66
67 private:
PriyangaRamasamy33c61c22021-04-06 11:15:57 -050068 const Binary& vpd;
Sunny Srivastavaf31a91b2022-06-09 08:11:29 -050069
70 /*Inventory path of the FRU */
71 const std::string inventoryPath;
girik18bb9852022-11-16 05:48:13 -060072
73 /* VPD Path */
74 const std::string vpdFilePath;
75
76 /* Offset */
77 uint32_t vpdStartOffset;
78
SunnySrivastava1984e12b1812020-05-26 02:23:11 -050079}; // class IpzVpdParser
80
81} // namespace parser
82} // namespace ipz
83} // namespace vpd
84} // namespace openpower