Update to use match methods for signal callbacks
Attach the tach change handler function to the match along with using
the new match methods on the match string. Add 'argN' sensor
value interface to reduce dbus traffic
Resolves openbmc/phosphor-fan-presence#5
Change-Id: I9c809e42a384ea751d2f3a51b14ad304ce61cd2c
Signed-off-by: Matthew Barth <msbarth@us.ibm.com>
diff --git a/presence/tach_sensor.cpp b/presence/tach_sensor.cpp
index c21478b..60da441 100644
--- a/presence/tach_sensor.cpp
+++ b/presence/tach_sensor.cpp
@@ -30,35 +30,18 @@
return (tach != 0);
}
-// Tach signal callback handler
-int TachSensor::handleTachChangeSignal(sd_bus_message* msg,
- void* usrData,
- sd_bus_error* err)
-{
- auto sdbpMsg = sdbusplus::message::message(msg);
- static_cast<TachSensor*>(usrData)->handleTachChange(sdbpMsg, err);
- return 0;
-}
-
-void TachSensor::handleTachChange(sdbusplus::message::message& sdbpMsg,
- sd_bus_error* err)
+void TachSensor::handleTachChange(sdbusplus::message::message& sdbpMsg)
{
std::string msgSensor;
std::map<std::string, sdbusplus::message::variant<int64_t>> msgData;
sdbpMsg.read(msgSensor, msgData);
- // TODO openbmc/phosphor-fan-presence#5
- // Update to use 'arg0namespace' match option to reduce dbus traffic
- // Find interface with value property
- if (msgSensor.compare("xyz.openbmc_project.Sensor.Value") == 0)
+ // Find the 'Value' property containing tach
+ auto valPropMap = msgData.find("Value");
+ if (valPropMap != msgData.end())
{
- // Find the 'Value' property containing tach
- auto valPropMap = msgData.find("Value");
- if (valPropMap != msgData.end())
- {
- tach = sdbusplus::message::variant_ns::get<int64_t>(
- valPropMap->second);
- }
+ tach = sdbusplus::message::variant_ns::get<int64_t>(
+ valPropMap->second);
}
// Update inventory according to latest tach reported
fanEnc.updInventory();