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_manager.cpp b/occ_manager.cpp
index df8ff0c..6b0282c 100644
--- a/occ_manager.cpp
+++ b/occ_manager.cpp
@@ -1260,12 +1260,13 @@
if (existingSensors.find(sensorPath) == existingSensors.end())
{
- std::vector<int> occs;
std::vector<std::string> fTypeList = {"all_sensors"};
if (iter->second == "total_power")
{
- // Total system power has its own chassis association
- fTypeList.push_back("total_power");
+ // Set sensor purpose as TotalPower
+ dbus::OccDBusSensors::getOccDBus().setPurpose(
+ sensorPath,
+ "xyz.openbmc_project.Sensor.Purpose.SensorPurpose.TotalPower");
}
dbus::OccDBusSensors::getOccDBus().setChassisAssociation(
sensorPath, fTypeList);