From 5efe2a34889b828a19c84818be3a551516513907 Mon Sep 17 00:00:00 2001 From: wangjue Date: Fri, 24 Jan 2025 17:27:19 +0800 Subject: [PATCH] Set DIMM LED to NA when dc on and OFF when dc off Signed-off-by: wangjue --- src/DIMMTempSensor.cpp | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/src/DIMMTempSensor.cpp b/src/DIMMTempSensor.cpp index d2c2f65..dca398e 100644 --- a/src/DIMMTempSensor.cpp +++ b/src/DIMMTempSensor.cpp @@ -84,7 +84,7 @@ static void setupDimmLEDMatch( std::move(eventHandler)); } -static bool getDbusMsgState(sdbusplus::message_t& msg, bool& value) +static bool getDbusMsgState(sdbusplus::message_t& msg, bool& value, std::string& propertyName) { std::string pltStateInterface; std::string event; @@ -99,13 +99,13 @@ static bool getDbusMsgState(sdbusplus::message_t& msg, bool& value) } std::string property = propertiesChanged.begin()->first; - - if (property.empty() || property != "dimmI3cSwitch") + if (property.empty() || (property != "dimmI3cSwitch" && property != "ESpiPlatformReset")) { return false; } value = std::get(propertiesChanged.begin()->second); + propertyName = property; return true; } catch (const std::exception& e) @@ -117,16 +117,17 @@ static bool getDbusMsgState(sdbusplus::message_t& msg, bool& value) static void dimmI3cSwitchMatcher( std::vector& matches, sdbusplus::bus_t& connection, - std::function&& onMatch) + std::function&& onMatch) { auto pulseEventMatcherCallback = [onMatch{std::move(onMatch)}](sdbusplus::message_t& msg) { bool value = false; - if (!getDbusMsgState(msg, value)) + std::string propertyName = ""; + if (!getDbusMsgState(msg, value, propertyName)) { return; } - onMatch(value); + onMatch(propertyName, value); }; matches.emplace_back( @@ -343,21 +344,22 @@ void DIMMTempSensor::setupMatches(const std::string& sensorName) } ); - dimmI3cSwitchMatcher(matches, *dbusConnection, [sharedRef](bool state) + dimmI3cSwitchMatcher(matches, *dbusConnection, [sharedRef](std::string propertyName, bool state) { if (!sharedRef) { return; } - if (!state) + + if (propertyName == "dimmI3cSwitch") { - sharedRef->dimmI3cSwitchState = false; + sharedRef->dimmI3cSwitchState = state; } - else + else if (propertyName == "ESpiPlatformReset") { - sharedRef->dimmI3cSwitchState = true; + std::string dimmLEDState = state ? "NA" : "OFF"; + sharedRef->dimmLEDInterface->set_property("LEDState", dimmLEDState); } - std::cout << "dimmI3cSwitchState: " << (int)sharedRef->dimmI3cSwitchState << std::endl; }); } -- 2.34.1