Refactor : Add a helper function findIndexForFRU to
addFruObjectToDbus
Refactoring addFruObjectToDbus function and created a new helper
function findIndexForFRU. Moved this function to fru_utils.cpp
as it is common for all fru-device deamons and avoid code
duplication.
This patch is created based on suggestion on the below patch.
https://gerrit.openbmc.org/c/openbmc/entity-manager/+/51555
TESTED : Built Facebook YosemiteV2 images and loaded
on the target hardware. Verified all the fru's read and write.
Signed-off-by: Kumar Thangavel <thangavel.k@hcl.com>
Change-Id: I2c9b3eb0dfb6050217c3ad459932cda59deea8c8
diff --git a/include/fru_utils.hpp b/include/fru_utils.hpp
index 0a988ef..20d1b66 100644
--- a/include/fru_utils.hpp
+++ b/include/fru_utils.hpp
@@ -19,6 +19,7 @@
#include "fru_reader.hpp"
#include <boost/container/flat_map.hpp>
+#include <sdbusplus/asio/object_server.hpp>
#include <cstdint>
#include <functional>
@@ -194,3 +195,15 @@
const std::string& propertyName,
struct FruArea& fruAreaParams,
std::vector<uint8_t>& restFRUAreaFieldsData);
+
+/// \brief Get all device dbus path and match path with product name using
+/// regular expression and find the device index for all devices.
+/// \param dbusInterfaceMap - Map to store fru device dbus path and interface
+/// \param productName - fru device product name.
+/// \return optional<int> highest index for fru device on success, return
+/// nullopt on failure.
+std::optional<int> findIndexForFRU(
+ boost::container::flat_map<
+ std::pair<size_t, size_t>,
+ std::shared_ptr<sdbusplus::asio::dbus_interface>>& dbusInterfaceMap,
+ std::string& productName);