| #pragma once |
| |
| #include "types.hpp" |
| #include "utilInterface.hpp" |
| |
| namespace openpower |
| { |
| namespace vpd |
| { |
| namespace manager |
| { |
| namespace reader |
| { |
| |
| using IUtil = openpower::vpd::utils::interface::UtilityInterface; |
| /** @class ReaderImpl |
| * @brief Implements functionalities related to reading of VPD related data |
| * from the system. |
| */ |
| class ReaderImpl |
| { |
| public: |
| ReaderImpl() = default; |
| ReaderImpl(const ReaderImpl&) = default; |
| ReaderImpl& operator=(const ReaderImpl&) = delete; |
| ReaderImpl(ReaderImpl&&) = default; |
| ReaderImpl& operator=(ReaderImpl&&) = delete; |
| ~ReaderImpl() = default; |
| |
| #ifdef ManagerTest |
| explicit ReaderImpl(IUtil& obj) : utilObj(obj) |
| { |
| } |
| #endif |
| |
| /** @brief An API to expand a given unexpanded location code. |
| * @param[in] locationCode - unexpanded location code. |
| * @param[in] nodeNumber - node on which we are looking for location code. |
| * @param[in] frusLocationCode - mapping of inventory path and location |
| * code. |
| * @return Expanded location code. |
| */ |
| inventory::LocationCode getExpandedLocationCode( |
| const inventory::LocationCode& locationCode, |
| const inventory::NodeNumber& nodeNumber, |
| const inventory::LocationCodeMap& frusLocationCode) const; |
| |
| /** @brief An API to get list of all the FRUs at the given location code |
| * @param[in] - location code in unexpanded format |
| * @param[in] - node number |
| * @param[in] - mapping of location code and Inventory path |
| * @return list of Inventory paths at the given location |
| */ |
| inventory::ListOfPaths getFrusAtLocation( |
| const inventory::LocationCode& locationCode, |
| const inventory::NodeNumber& nodeNumber, |
| const inventory::LocationCodeMap& frusLocationCode) const; |
| |
| /** @brief An API to get list of all the FRUs at the given location code |
| * @param[in] - location code in unexpanded format |
| * @param[in] - mapping of location code and Inventory path |
| * @return list of Inventory paths at the given location |
| */ |
| inventory::ListOfPaths getFRUsByExpandedLocationCode( |
| const inventory::LocationCode& locationCode, |
| const inventory::LocationCodeMap& frusLocationCode) const; |
| |
| private: |
| /** @brief An api to check validity of location code |
| * @param[in] - location code |
| * @return true/false based on validity check |
| */ |
| bool isValidLocationCode(const inventory::LocationCode& locationCode) const; |
| |
| /** @brief An API to split expanded location code to its un-expanded |
| * format as represented in VPD JSON and the node number. |
| * @param[in] Location code in expanded format. |
| * @return Location code in un-expanded format and its node number. |
| */ |
| std::tuple<inventory::LocationCode, inventory::NodeNumber> |
| getCollapsedLocationCode( |
| const inventory::LocationCode& locationCode) const; |
| #ifdef ManagerTest |
| IUtil& utilObj; |
| #endif |
| |
| }; // class ReaderImpl |
| |
| } // namespace reader |
| } // namespace manager |
| } // namespace vpd |
| } // namespace openpower |