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