blob: f7c17a2a362b8667452dde2ff825252dcaf3a3bd [file] [log] [blame]
Andrew Geisslerbb7b5922019-02-08 14:16:48 -06001#include "src/associations.hpp"
Andrew Geissler20679262019-02-11 20:20:40 -06002#include "src/processing.hpp"
Andrew Geisslerbb7b5922019-02-08 14:16:48 -06003
Brad Bishopa098a372022-05-05 15:19:04 -04004const std::string defaultSourcePath = "/logging/entry/1";
5const std::string defaultDbusSvc = "xyz.openbmc_project.New.Interface";
6const std::string defaultFwdPath = {defaultSourcePath + "/" + "inventory"};
7const std::string defaultEndpoint =
Andrew Geisslerbb7b5922019-02-08 14:16:48 -06008 "/xyz/openbmc_project/inventory/system/chassis";
Brad Bishopa098a372022-05-05 15:19:04 -04009const std::string defaultRevPath = {defaultEndpoint + "/" + "error"};
Brad Bishop93d664f2025-07-29 16:31:58 -040010const std::string extraEndpoint = "/xyz/openbmc_project/different/endpoint";
Andrew Geisslerbb7b5922019-02-08 14:16:48 -060011
12// Create a default AssociationOwnersType object
Brad Bishop7dd20292025-07-29 16:53:45 -040013inline AssociationOwnersType createDefaultOwnerAssociation()
Andrew Geisslerbb7b5922019-02-08 14:16:48 -060014{
Brad Bishopa098a372022-05-05 15:19:04 -040015 AssociationPaths assocPathMap = {{defaultFwdPath, {defaultEndpoint}},
16 {defaultRevPath, {defaultSourcePath}}};
Andrew Geisslerbb7b5922019-02-08 14:16:48 -060017 boost::container::flat_map<std::string, AssociationPaths> serviceMap = {
Brad Bishopa098a372022-05-05 15:19:04 -040018 {defaultDbusSvc, assocPathMap}};
19 AssociationOwnersType ownerAssoc = {{defaultSourcePath, serviceMap}};
Andrew Geisslerbb7b5922019-02-08 14:16:48 -060020 return ownerAssoc;
21}
22
23// Create a default AssociationInterfaces object
Brad Bishop7dd20292025-07-29 16:53:45 -040024inline AssociationInterfaces createDefaultInterfaceAssociation(
Patrick Williamsd884cdf2025-02-01 08:23:38 -050025 sdbusplus::asio::object_server* server)
Andrew Geisslerbb7b5922019-02-08 14:16:48 -060026{
27 AssociationInterfaces interfaceAssoc;
28
Brad Bishopa098a372022-05-05 15:19:04 -040029 auto& iface = interfaceAssoc[defaultFwdPath];
Andrew Geisslerbb7b5922019-02-08 14:16:48 -060030 auto& endpoints = std::get<endpointsPos>(iface);
Brad Bishopa098a372022-05-05 15:19:04 -040031 endpoints.push_back(defaultEndpoint);
32 server->add_interface(defaultFwdPath, defaultDbusSvc);
Andrew Geisslerbb7b5922019-02-08 14:16:48 -060033
Brad Bishopa098a372022-05-05 15:19:04 -040034 auto& iface2 = interfaceAssoc[defaultRevPath];
Andrew Geisslerbb7b5922019-02-08 14:16:48 -060035 auto& endpoints2 = std::get<endpointsPos>(iface2);
Brad Bishopa098a372022-05-05 15:19:04 -040036 endpoints2.push_back(defaultSourcePath);
37 server->add_interface(defaultRevPath, defaultDbusSvc);
Andrew Geisslerbb7b5922019-02-08 14:16:48 -060038
39 return interfaceAssoc;
40}
41
42// Just add an extra endpoint to the first association
Brad Bishop7dd20292025-07-29 16:53:45 -040043inline void addEndpointToInterfaceAssociation(
44 AssociationInterfaces& interfaceAssoc)
Andrew Geisslerbb7b5922019-02-08 14:16:48 -060045{
Brad Bishopa098a372022-05-05 15:19:04 -040046 auto iface = interfaceAssoc[defaultFwdPath];
Andrew Geisslerbb7b5922019-02-08 14:16:48 -060047 auto endpoints = std::get<endpointsPos>(iface);
Brad Bishopa098a372022-05-05 15:19:04 -040048 endpoints.push_back(extraEndpoint);
Andrew Geisslerbb7b5922019-02-08 14:16:48 -060049}
Andrew Geissler20679262019-02-11 20:20:40 -060050
Brad Bishopa098a372022-05-05 15:19:04 -040051// Create a default interfaceMapType with input values
Brad Bishop7dd20292025-07-29 16:53:45 -040052inline InterfaceMapType createInterfaceMap(const std::string& path,
53 const std::string& connectionName,
54 const InterfaceNames& interfaceNames)
Andrew Geissler20679262019-02-11 20:20:40 -060055{
Ed Tanous964681c2022-07-08 12:47:24 -070056 ConnectionNames connectionMap{{connectionName, interfaceNames}};
57 InterfaceMapType interfaceMap{{path, connectionMap}};
58
Andrew Geissler20679262019-02-11 20:20:40 -060059 return interfaceMap;
60}
Matt Spinlere0b0e3a2019-04-08 10:39:23 -050061
Brad Bishopa098a372022-05-05 15:19:04 -040062// Create a default interfaceMapType with 2 entries with the same
Matt Spinlere0b0e3a2019-04-08 10:39:23 -050063// owner.
Brad Bishop7dd20292025-07-29 16:53:45 -040064inline InterfaceMapType createDefaultInterfaceMap()
Matt Spinlere0b0e3a2019-04-08 10:39:23 -050065{
Brad Bishopa098a372022-05-05 15:19:04 -040066 InterfaceMapType interfaceMap = {
67 {defaultSourcePath, {{defaultDbusSvc, {"a"}}}},
68 {defaultEndpoint, {{defaultDbusSvc, {"b"}}}}};
Matt Spinlere0b0e3a2019-04-08 10:39:23 -050069
70 return interfaceMap;
71}