xref: /openbmc/entity-manager/src/entity_manager/utils.hpp (revision 7962944f072b54e22075e8290e1e6708bdb30c38)
1 #pragma once
2 
3 #include <boost/asio/io_context.hpp>
4 #include <boost/container/flat_map.hpp>
5 #include <nlohmann/json.hpp>
6 #include <sdbusplus/asio/connection.hpp>
7 
8 using DBusValueVariant =
9     std::variant<std::string, int64_t, uint64_t, double, int32_t, uint32_t,
10                  int16_t, uint16_t, uint8_t, bool, std::vector<uint8_t>>;
11 using DBusInterface = boost::container::flat_map<std::string, DBusValueVariant>;
12 using DBusObject = boost::container::flat_map<std::string, DBusInterface>;
13 
14 constexpr const char* configurationOutDir = "/var/configuration/";
15 constexpr const char* versionHashFile = "/var/configuration/version";
16 constexpr const char* versionFile = "/etc/os-release";
17 
18 namespace em_utils
19 {
20 
21 namespace properties
22 {
23 constexpr const char* interface = "org.freedesktop.DBus.Properties";
24 constexpr const char* get = "Get";
25 } // namespace properties
26 
27 bool fwVersionIsSame();
28 
29 void handleLeftOverTemplateVars(nlohmann::json::iterator& keyPair);
30 
31 std::optional<std::string> templateCharReplace(
32     nlohmann::json::iterator& keyPair, const DBusObject& object, size_t index,
33     const std::optional<std::string>& replaceStr = std::nullopt);
34 
35 std::optional<std::string> templateCharReplace(
36     nlohmann::json::iterator& keyPair, const DBusInterface& interface,
37     size_t index, const std::optional<std::string>& replaceStr = std::nullopt);
38 
39 std::string buildInventorySystemPath(std::string& boardName,
40                                      const std::string& boardType);
41 
42 } // namespace em_utils
43