blob: cbd44bb2d7f65f7ab2822343cd18277c50bfd8d2 [file] [log] [blame]
SunnySrivastava1984e12b1812020-05-26 02:23:11 -05001#pragma once
2
3#include "impl.hpp"
4#include "parser_interface.hpp"
5#include "types.hpp"
6
7namespace openpower
8{
9namespace vpd
10{
11namespace memory
12{
13namespace parser
14{
15using ParserInterface = openpower::vpd::parser::interface::ParserInterface;
16using kwdVpdMap = openpower::vpd::inventory::KeywordVpdMap;
17
18class memoryVpdParser : public ParserInterface
19{
20 public:
21 memoryVpdParser() = delete;
22 memoryVpdParser(const memoryVpdParser&) = delete;
23 memoryVpdParser& operator=(const memoryVpdParser&) = delete;
24 memoryVpdParser(memoryVpdParser&&) = delete;
25 memoryVpdParser& operator=(memoryVpdParser&&) = delete;
26 ~memoryVpdParser() = default;
27
28 /**
29 * @brief Constructor
30 *
Alpana Kumari80f15342020-06-09 07:41:02 -050031 * Move memVpdVector to parser object's memVpdVector
SunnySrivastava1984e12b1812020-05-26 02:23:11 -050032 */
PriyangaRamasamy33c61c22021-04-06 11:15:57 -050033 memoryVpdParser(const Binary& VpdVector) : memVpd(VpdVector)
SunnySrivastava1984e12b1812020-05-26 02:23:11 -050034 {
35 }
36
37 /**
38 * @brief Parse the memory VPD binary data.
39 * Collects and emplace the keyword-value pairs in map.
40 *
41 * @return map of keyword:value
42 */
43 std::variant<kwdVpdMap, Store> parse();
44
45 /**
46 * @brief An api to return interface name with respect to
47 * publish data on cache
48 *
49 * @return - Interface name for that vpd type.
50 */
51 std::string getInterfaceName() const;
52
53 private:
54 /**
55 * @brief An api to read keywords.
56 *
57 * @return- map of kwd:value
58 */
59 kwdVpdMap readKeywords(Binary::const_iterator iterator);
60
Alpana Kumari3ab26a72021-04-05 19:09:19 +000061 /**
62 * @brief This function calculates dimm size from DIMM VPD
63 *
64 * @param[in] iterator - iterator to buffer containing VPD
65 * @return calculated data or 0 in case of any error.
66 */
67 auto getDimmSize(Binary::const_iterator iterator);
68
SunnySrivastava1984e12b1812020-05-26 02:23:11 -050069 // vdp file to be parsed
PriyangaRamasamy33c61c22021-04-06 11:15:57 -050070 const Binary& memVpd;
SunnySrivastava1984e12b1812020-05-26 02:23:11 -050071};
72} // namespace parser
73} // namespace memory
74} // namespace vpd
75} // namespace openpower