Support `terminus_name` option in `dbus_to_terminus_effecter`
Support `terminus_name` configuration option in
`dbus_to_terminus_effecter` to allow setting the destination terminus
beside `mctp_eid`. This is helpful when the mctp endpoint Eid is not
static.
Change-Id: I8b1ed15741807086254146017c99c13ae667dac1
Signed-off-by: Thu Nguyen <thu@os.amperecomputing.com>
diff --git a/host-bmc/dbus_to_terminus_effecters.cpp b/host-bmc/dbus_to_terminus_effecters.cpp
index 5c2e0ee..0c27f95 100644
--- a/host-bmc/dbus_to_terminus_effecters.cpp
+++ b/host-bmc/dbus_to_terminus_effecters.cpp
@@ -67,6 +67,7 @@
{
EffecterInfo effecterInfo;
effecterInfo.mctpEid = entry.value("mctp_eid", 0xFF);
+ effecterInfo.terminusName = entry.value("terminus_name", "");
auto jsonEffecterInfo = entry.value("effecter_info", empty);
auto effecterId =
jsonEffecterInfo.value("effecterID", PLDM_INVALID_EFFECTER_ID);
@@ -469,7 +470,17 @@
size_t effecterInfoIndex, uint16_t effecterId, uint8_t dataSize,
double rawValue)
{
+ std::string terminusName = hostEffecterInfo[effecterInfoIndex].terminusName;
uint8_t& mctpEid = hostEffecterInfo[effecterInfoIndex].mctpEid;
+ if (!terminusName.empty())
+ {
+ auto tmpEid = platformManager->getActiveEidByName(terminusName);
+ if (tmpEid)
+ {
+ mctpEid = tmpEid.value();
+ }
+ }
+
auto instanceId = instanceIdDb->next(mctpEid);
int rc = PLDM_ERROR;
std::vector<uint8_t> requestMsg;
@@ -597,7 +608,17 @@
size_t effecterInfoIndex, std::vector<set_effecter_state_field>& stateField,
uint16_t effecterId)
{
+ std::string terminusName = hostEffecterInfo[effecterInfoIndex].terminusName;
uint8_t& mctpEid = hostEffecterInfo[effecterInfoIndex].mctpEid;
+ if (!terminusName.empty())
+ {
+ auto tmpEid = platformManager->getActiveEidByName(terminusName);
+ if (tmpEid)
+ {
+ mctpEid = tmpEid.value();
+ }
+ }
+
uint8_t& compEffCnt = hostEffecterInfo[effecterInfoIndex].compEffecterCnt;
auto instanceId = instanceIdDb->next(mctpEid);