1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
|
#pragma once
#include "types.hpp"
#include <sdbusplus/server.hpp>
namespace ipmi
{
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";
constexpr auto ROOT = "/";
constexpr auto HOST_MATCH = "host0";
constexpr auto PROP_INTF = "org.freedesktop.DBus.Properties";
constexpr auto IP_INTERFACE = "xyz.openbmc_project.Network.IP";
constexpr auto MAC_INTERFACE = "xyz.openbmc_project.Network.MACAddress";
constexpr auto METHOD_GET = "Get";
constexpr auto METHOD_GET_ALL = "GetAll";
constexpr auto METHOD_SET = "Set";
/**
* @brief Get the DBUS Service name for the input dbus path
*
* @param[in] bus - DBUS Bus Object
* @param[in] intf - DBUS Interface
* @param[in] path - DBUS Object Path
*
*/
std::string getService(sdbusplus::bus::bus& bus,
const std::string& intf,
const std::string& path);
/** @brief Gets the dbus object info implementing the given interface
* from the given subtree.
* @param[in] interface - Dbus interface.
* @param[in] subtreePath - subtree from where the search should start.
* @param[in] match - identifier for object.
* @return On success returns the object having objectpath and servicename.
*/
DbusObjectInfo getDbusObject(const std::string& interface,
const std::string& subtreePath = ROOT,
const std::string& match = {});
/** @brief Gets the value associated with the given object
* and the interface.
* @param[in] service - Dbus service name.
* @param[in] objPath - Dbus object path.
* @param[in] interface - Dbus interface.
* @param[in] property - name of the property.
* @return On success returns the value of the property.
*/
Value getDbusProperty(const std::string& service,
const std::string& objPath,
const std::string& interface,
const std::string& property);
/** @brief Gets all the properties associated with the given object
* and the interface.
* @param[in] service - Dbus service name.
* @param[in] objPath - Dbus object path.
* @param[in] interface - Dbus interface.
* @return On success returns the map of name value pair.
*/
PropertyMap getAllDbusProperties(const std::string& service,
const std::string& objPath,
const std::string& interface);
/** @brief Sets the property value of the given object.
* @param[in] service - Dbus service name.
* @param[in] objPath - Dbus object path.
* @param[in] interface - Dbus interface.
* @param[in] property - name of the property.
* @param[in] value - value which needs to be set.
*/
void setDbusProperty(const std::string& service,
const std::string& objPath,
const std::string& interface,
const std::string& property,
const Value& value);
} // namespace ipmi
|