summaryrefslogtreecommitdiffstats
path: root/utils.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'utils.hpp')
-rw-r--r--utils.hpp22
1 files changed, 16 insertions, 6 deletions
diff --git a/utils.hpp b/utils.hpp
index a100718..09bb1b4 100644
--- a/utils.hpp
+++ b/utils.hpp
@@ -1,12 +1,15 @@
#pragma once
#include "types.hpp"
+#include <chrono>
#include <optional>
#include <sdbusplus/server.hpp>
namespace ipmi
{
+using namespace std::literals::chrono_literals;
+
constexpr auto MAPPER_BUS_NAME = "xyz.openbmc_project.ObjectMapper";
constexpr auto MAPPER_OBJ = "/xyz/openbmc_project/object_mapper";
constexpr auto MAPPER_INTF = "xyz.openbmc_project.ObjectMapper";
@@ -21,6 +24,10 @@ constexpr auto METHOD_GET = "Get";
constexpr auto METHOD_GET_ALL = "GetAll";
constexpr auto METHOD_SET = "Set";
+/* Use a value of 5s which aligns with BT/KCS bridged timeouts, rather
+ * than the default 25s D-Bus timeout. */
+constexpr std::chrono::microseconds IPMI_DBUS_TIMEOUT = 5s;
+
/** @class ServiceCache
* @brief Caches lookups of service names from the object mapper.
* @details Most ipmi commands need to talk to other dbus daemons to perform
@@ -130,7 +137,8 @@ DbusObjectInfo getIPObject(sdbusplus::bus::bus& bus,
*/
Value getDbusProperty(sdbusplus::bus::bus& bus, const std::string& service,
const std::string& objPath, const std::string& interface,
- const std::string& property);
+ const std::string& property,
+ std::chrono::microseconds timeout = IPMI_DBUS_TIMEOUT);
/** @brief Gets all the properties associated with the given object
* and the interface.
@@ -140,10 +148,11 @@ Value getDbusProperty(sdbusplus::bus::bus& bus, const std::string& service,
* @param[in] interface - Dbus interface.
* @return On success returns the map of name value pair.
*/
-PropertyMap getAllDbusProperties(sdbusplus::bus::bus& bus,
- const std::string& service,
- const std::string& objPath,
- const std::string& interface);
+PropertyMap
+ getAllDbusProperties(sdbusplus::bus::bus& bus, const std::string& service,
+ const std::string& objPath,
+ const std::string& interface,
+ std::chrono::microseconds timeout = IPMI_DBUS_TIMEOUT);
/** @brief Gets all managed objects associated with the given object
* path and service.
@@ -166,7 +175,8 @@ ObjectValueTree getManagedObjects(sdbusplus::bus::bus& bus,
*/
void setDbusProperty(sdbusplus::bus::bus& bus, const std::string& service,
const std::string& objPath, const std::string& interface,
- const std::string& property, const Value& value);
+ const std::string& property, const Value& value,
+ std::chrono::microseconds timeout = IPMI_DBUS_TIMEOUT);
/** @brief Gets all the dbus objects from the given service root
* which matches the object identifier.
OpenPOWER on IntegriCloud