| commit | ff0ce4091655037839782e253775e63553d6541f | [log] [tgz] |
|---|---|---|
| author | Chris Cain <cjcain@us.ibm.com> | Fri Jan 17 10:54:55 2025 -0600 |
| committer | Chris Cain <cjcain@us.ibm.com> | Mon Feb 10 19:40:56 2025 +0000 |
| tree | 360d2bdd8ae01b7529f8f1a98f6fc8a5fc0bc121 | |
| parent | 601cea4cbfa2e8d2cd9021e87d9d79736e4d95c3 [diff] [blame] |
Add SensorPurpose for total_power sensor
Change will allow users to find the total system/chassis power sensor by
querying the SensorPurpose for TotalPower.
The total_power chassis association is being removed, since the
SensorPurpose will be used in its place.
Tested on Rainier.
'''
$ busctl call xyz.openbmc_project.ObjectMapper /xyz/openbmc_project/object_mapper xyz.openbmc_project.ObjectMapper GetSubTree sias "/" 0 1 "xyz.openbmc_project.Sensor.Purpose"
a{sa{sas}} 1 "/xyz/openbmc_project/sensors/power/total_power" 1 "org.open_power.OCC.Control" 6 "org.freedesktop.DBus.Introspectable" "org.freedesktop.DBus.Peer" "org.freedesktop.DBus.Properties" "xyz.openbmc_project.Sensor.Purpose" "xyz.openbmc_project.Sensor.Value" "xyz.openbmc_project.State.Decorator.OperationalStatus"
$ busctl -l introspect org.open_power.OCC.Control /xyz/openbmc_project/sensors/power/total_power
NAME TYPE SIGNATURE RESULT/VALUE FLAGS
org.freedesktop.DBus.Introspectable interface - - -
.Introspect method - s -
org.freedesktop.DBus.Peer interface - - -
.GetMachineId method - s -
.Ping method - - -
org.freedesktop.DBus.Properties interface - - -
.Get method ss v -
.GetAll method s a{sv} -
.Set method ssv - -
.PropertiesChanged signal sa{sv}as - -
xyz.openbmc_project.Association.Definitions interface - - -
.Associations property a(sss) 1 "chassis" "all_sensors" "/xyz/openbmc_project/inventory/system/chassis" emits-change writable
B
xyz.openbmc_project.Sensor.Purpose interface - - -
.Purpose property as 1 "xyz.openbmc_project.Sensor.Purpose.SensorPurpose.TotalPower" emits-change
xyz.openbmc_project.Sensor.Value interface - - -
.MaxValue property d inf emits-change writable
.MinValue property d -inf emits-change writable
.Unit property s "xyz.openbmc_project.Sensor.Value.Unit.Watts" emits-change writable
.Value property d 419 emits-change writable
xyz.openbmc_project.State.Decorator.OperationalStatus interface - - -
.Functional property b true emits-change writable
'''
Change-Id: I414c01e81cbb965d9ab68bafa06565d997abbe0f
Signed-off-by: Chris Cain <cjcain@us.ibm.com>
diff --git a/occ_dbus.hpp b/occ_dbus.hpp index 595cf5f..1446a45 100644 --- a/occ_dbus.hpp +++ b/occ_dbus.hpp
@@ -1,6 +1,7 @@ #pragma once #include <xyz/openbmc_project/Association/Definitions/server.hpp> +#include <xyz/openbmc_project/Sensor/Purpose/server.hpp> #include <xyz/openbmc_project/Sensor/Value/server.hpp> #include <xyz/openbmc_project/State/Decorator/OperationalStatus/server.hpp> @@ -18,6 +19,8 @@ using OperationalStatusIntf = sdbusplus::server::object_t<sdbusplus::xyz::openbmc_project::State:: Decorator::server::OperationalStatus>; +using PurposeIntf = sdbusplus::server::object_t< + sdbusplus::xyz::openbmc_project::Sensor::server::Purpose>; // Note: Not using object<> so the PropertiesVariant ctor is available. using AssociationIntf = @@ -159,8 +162,18 @@ */ bool hasDvfsTemp(const std::string& path) const; + /** @brief Set the purpose of the Sensor + * + * @param[in] path - The object path + * @param[in] value - The value of the Purpose property + * + * @return true or false + */ + bool setPurpose(const std::string& path, const std::string& value); + private: std::map<ObjectPath, std::unique_ptr<SensorIntf>> sensors; + std::map<ObjectPath, std::unique_ptr<PurposeIntf>> purposes; std::map<ObjectPath, std::unique_ptr<OperationalStatusIntf>> operationalStatus;