Add state set id support for remote sensor events
In the current state, PLDM does not support having a state set ID
field in the event JSONs, this commit would add that support in
PLDM there by allowing hosts to have multiple sensors with the
same entity instance number, type and container id, but with different
state sets.
TESTED: with pldmtool raw commands sending sensor events to the BMC.
Signed-off-by: Sagar Srinivas <sagar.srinivas@ibm.com>
Change-Id: If9bb9bde27d6b35f5904ac199801dbdffde0f57e
diff --git a/common/types.hpp b/common/types.hpp
index 6f06ecc..0c7514c 100644
--- a/common/types.hpp
+++ b/common/types.hpp
@@ -131,7 +131,8 @@
//!< composite efffecter/sensor
using CompositeSensorStates = std::vector<PossibleStates>;
using EntityInfo = std::tuple<ContainerID, EntityType, EntityInstance>;
-using SensorInfo = std::tuple<EntityInfo, CompositeSensorStates>;
+using SensorInfo =
+ std::tuple<EntityInfo, CompositeSensorStates, std::vector<StateSetId>>;
} // namespace pdr
diff --git a/configurations/events/stateSensorPdrs.json b/configurations/events/stateSensorPdrs.json
index 37d8df4..baab3e3 100644
--- a/configurations/events/stateSensorPdrs.json
+++ b/configurations/events/stateSensorPdrs.json
@@ -1,10 +1,36 @@
{
"entries": [
{
+ "containerID": 1,
+ "entityType": 32801,
+ "entityInstance": 0,
+ "sensorOffset": 0,
+ "stateSetId": 196,
+ "event_states": [1, 2, 3, 5, 7, 9, 21, 22, 26],
+ "dbus": {
+ "object_path": "/xyz/openbmc_project/state/host0",
+ "interface": "xyz.openbmc_project.State.Boot.Progress",
+ "property_name": "BootProgress",
+ "property_type": "string",
+ "property_values": [
+ "xyz.openbmc_project.State.Boot.Progress.ProgressStages.Unspecified",
+ "xyz.openbmc_project.State.Boot.Progress.ProgressStages.SystemInitComplete",
+ "xyz.openbmc_project.State.Boot.Progress.ProgressStages.MemoryInit",
+ "xyz.openbmc_project.State.Boot.Progress.ProgressStages.SecondaryProcInit",
+ "xyz.openbmc_project.State.Boot.Progress.ProgressStages.SystemSetup",
+ "xyz.openbmc_project.State.Boot.Progress.ProgressStages.PCIInit",
+ "xyz.openbmc_project.State.Boot.Progress.ProgressStages.OSRunning",
+ "xyz.openbmc_project.State.Boot.Progress.ProgressStages.BusInit",
+ "xyz.openbmc_project.State.Boot.Progress.ProgressStages.PrimaryProcInit"
+ ]
+ }
+ },
+ {
"containerID": 0,
"entityType": 32801,
"entityInstance": 0,
"sensorOffset": 0,
+ "stateSetId": 196,
"event_states": [1, 2, 3, 5, 7, 9, 21, 22, 26],
"dbus": {
"object_path": "/xyz/openbmc_project/state/host0",
@@ -50,6 +76,7 @@
"entityType": 66,
"entityInstance": 0,
"sensorOffset": 0,
+ "stateSetId": 1,
"event_states": [1, 3],
"dbus": {
"object_path": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm0",
@@ -64,6 +91,7 @@
"entityType": 66,
"entityInstance": 1,
"sensorOffset": 0,
+ "stateSetId": 1,
"event_states": [1, 3],
"dbus": {
"object_path": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm1",
@@ -78,6 +106,7 @@
"entityType": 66,
"entityInstance": 2,
"sensorOffset": 0,
+ "stateSetId": 1,
"event_states": [1, 3],
"dbus": {
"object_path": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm2",
@@ -92,6 +121,7 @@
"entityType": 66,
"entityInstance": 3,
"sensorOffset": 0,
+ "stateSetId": 1,
"event_states": [1, 3],
"dbus": {
"object_path": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm3",
@@ -106,6 +136,7 @@
"entityType": 66,
"entityInstance": 4,
"sensorOffset": 0,
+ "stateSetId": 1,
"event_states": [1, 3],
"dbus": {
"object_path": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm4",
@@ -120,6 +151,7 @@
"entityType": 66,
"entityInstance": 5,
"sensorOffset": 0,
+ "stateSetId": 1,
"event_states": [1, 3],
"dbus": {
"object_path": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm5",
@@ -134,6 +166,7 @@
"entityType": 66,
"entityInstance": 6,
"sensorOffset": 0,
+ "stateSetId": 1,
"event_states": [1, 3],
"dbus": {
"object_path": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm6",
@@ -148,6 +181,7 @@
"entityType": 66,
"entityInstance": 7,
"sensorOffset": 0,
+ "stateSetId": 1,
"event_states": [1, 3],
"dbus": {
"object_path": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm7",
@@ -162,6 +196,7 @@
"entityType": 66,
"entityInstance": 8,
"sensorOffset": 0,
+ "stateSetId": 1,
"event_states": [1, 3],
"dbus": {
"object_path": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm8",
@@ -176,6 +211,7 @@
"entityType": 66,
"entityInstance": 9,
"sensorOffset": 0,
+ "stateSetId": 1,
"event_states": [1, 3],
"dbus": {
"object_path": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm9",
@@ -190,6 +226,7 @@
"entityType": 66,
"entityInstance": 10,
"sensorOffset": 0,
+ "stateSetId": 1,
"event_states": [1, 3],
"dbus": {
"object_path": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm10",
@@ -218,6 +255,7 @@
"entityType": 66,
"entityInstance": 12,
"sensorOffset": 0,
+ "stateSetId": 1,
"event_states": [1, 3],
"dbus": {
"object_path": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm12",
@@ -232,6 +270,7 @@
"entityType": 66,
"entityInstance": 13,
"sensorOffset": 0,
+ "stateSetId": 1,
"event_states": [1, 3],
"dbus": {
"object_path": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm13",
@@ -246,6 +285,7 @@
"entityType": 66,
"entityInstance": 14,
"sensorOffset": 0,
+ "stateSetId": 1,
"event_states": [1, 3],
"dbus": {
"object_path": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm14",
@@ -260,6 +300,7 @@
"entityType": 66,
"entityInstance": 15,
"sensorOffset": 0,
+ "stateSetId": 1,
"event_states": [1, 3],
"dbus": {
"object_path": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm15",
@@ -274,6 +315,7 @@
"entityType": 66,
"entityInstance": 16,
"sensorOffset": 0,
+ "stateSetId": 1,
"event_states": [1, 3],
"dbus": {
"object_path": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm16",
@@ -288,6 +330,7 @@
"entityType": 66,
"entityInstance": 17,
"sensorOffset": 0,
+ "stateSetId": 1,
"event_states": [1, 3],
"dbus": {
"object_path": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm17",
@@ -302,6 +345,7 @@
"entityType": 66,
"entityInstance": 18,
"sensorOffset": 0,
+ "stateSetId": 1,
"event_states": [1, 3],
"dbus": {
"object_path": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm18",
@@ -316,6 +360,7 @@
"entityType": 66,
"entityInstance": 19,
"sensorOffset": 0,
+ "stateSetId": 1,
"event_states": [1, 3],
"dbus": {
"object_path": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm19",
@@ -330,6 +375,7 @@
"entityType": 66,
"entityInstance": 20,
"sensorOffset": 0,
+ "stateSetId": 1,
"event_states": [1, 3],
"dbus": {
"object_path": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm20",
@@ -344,6 +390,7 @@
"entityType": 66,
"entityInstance": 21,
"sensorOffset": 0,
+ "stateSetId": 1,
"event_states": [1, 3],
"dbus": {
"object_path": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm21",
@@ -358,6 +405,7 @@
"entityType": 66,
"entityInstance": 22,
"sensorOffset": 0,
+ "stateSetId": 1,
"event_states": [1, 3],
"dbus": {
"object_path": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm22",
@@ -372,6 +420,7 @@
"entityType": 66,
"entityInstance": 23,
"sensorOffset": 0,
+ "stateSetId": 1,
"event_states": [1, 3],
"dbus": {
"object_path": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm23",
@@ -386,6 +435,7 @@
"entityType": 66,
"entityInstance": 24,
"sensorOffset": 0,
+ "stateSetId": 1,
"event_states": [1, 3],
"dbus": {
"object_path": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm24",
@@ -400,6 +450,7 @@
"entityType": 66,
"entityInstance": 25,
"sensorOffset": 0,
+ "stateSetId": 1,
"event_states": [1, 3],
"dbus": {
"object_path": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm25",
@@ -414,6 +465,7 @@
"entityType": 66,
"entityInstance": 26,
"sensorOffset": 0,
+ "stateSetId": 1,
"event_states": [1, 3],
"dbus": {
"object_path": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm26",
@@ -428,6 +480,7 @@
"entityType": 66,
"entityInstance": 27,
"sensorOffset": 0,
+ "stateSetId": 1,
"event_states": [1, 3],
"dbus": {
"object_path": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm27",
@@ -442,6 +495,7 @@
"entityType": 66,
"entityInstance": 28,
"sensorOffset": 0,
+ "stateSetId": 1,
"event_states": [1, 3],
"dbus": {
"object_path": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm28",
@@ -456,6 +510,7 @@
"entityType": 66,
"entityInstance": 29,
"sensorOffset": 0,
+ "stateSetId": 1,
"event_states": [1, 3],
"dbus": {
"object_path": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm29",
@@ -470,6 +525,7 @@
"entityType": 66,
"entityInstance": 30,
"sensorOffset": 0,
+ "stateSetId": 1,
"event_states": [1, 3],
"dbus": {
"object_path": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm30",
@@ -484,6 +540,7 @@
"entityType": 66,
"entityInstance": 31,
"sensorOffset": 0,
+ "stateSetId": 1,
"event_states": [1, 3],
"dbus": {
"object_path": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm31",
@@ -972,486 +1029,6 @@
"property_type": "bool",
"property_values": [true, false]
}
- },
- {
- "containerID": 3,
- "entityType": 66,
- "entityInstance": 32,
- "sensorOffset": 0,
- "stateSetId": 1,
- "event_states": [1, 3],
- "dbus": {
- "object_path": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm32",
- "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
- "property_name": "Functional",
- "property_type": "bool",
- "property_values": [true, false]
- }
- },
- {
- "containerID": 3,
- "entityType": 66,
- "entityInstance": 33,
- "sensorOffset": 0,
- "stateSetId": 1,
- "event_states": [1, 3],
- "dbus": {
- "object_path": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm33",
- "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
- "property_name": "Functional",
- "property_type": "bool",
- "property_values": [true, false]
- }
- },
- {
- "containerID": 3,
- "entityType": 66,
- "entityInstance": 34,
- "sensorOffset": 0,
- "stateSetId": 1,
- "event_states": [1, 3],
- "dbus": {
- "object_path": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm34",
- "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
- "property_name": "Functional",
- "property_type": "bool",
- "property_values": [true, false]
- }
- },
- {
- "containerID": 3,
- "entityType": 66,
- "entityInstance": 35,
- "sensorOffset": 0,
- "stateSetId": 1,
- "event_states": [1, 3],
- "dbus": {
- "object_path": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm35",
- "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
- "property_name": "Functional",
- "property_type": "bool",
- "property_values": [true, false]
- }
- },
- {
- "containerID": 3,
- "entityType": 66,
- "entityInstance": 36,
- "sensorOffset": 0,
- "stateSetId": 1,
- "event_states": [1, 3],
- "dbus": {
- "object_path": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm36",
- "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
- "property_name": "Functional",
- "property_type": "bool",
- "property_values": [true, false]
- }
- },
- {
- "containerID": 3,
- "entityType": 66,
- "entityInstance": 37,
- "sensorOffset": 0,
- "stateSetId": 1,
- "event_states": [1, 3],
- "dbus": {
- "object_path": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm37",
- "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
- "property_name": "Functional",
- "property_type": "bool",
- "property_values": [true, false]
- }
- },
- {
- "containerID": 3,
- "entityType": 66,
- "entityInstance": 38,
- "sensorOffset": 0,
- "stateSetId": 1,
- "event_states": [1, 3],
- "dbus": {
- "object_path": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm38",
- "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
- "property_name": "Functional",
- "property_type": "bool",
- "property_values": [true, false]
- }
- },
- {
- "containerID": 3,
- "entityType": 66,
- "entityInstance": 39,
- "sensorOffset": 0,
- "stateSetId": 1,
- "event_states": [1, 3],
- "dbus": {
- "object_path": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm39",
- "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
- "property_name": "Functional",
- "property_type": "bool",
- "property_values": [true, false]
- }
- },
- {
- "containerID": 3,
- "entityType": 66,
- "entityInstance": 40,
- "sensorOffset": 0,
- "stateSetId": 1,
- "event_states": [1, 3],
- "dbus": {
- "object_path": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm40",
- "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
- "property_name": "Functional",
- "property_type": "bool",
- "property_values": [true, false]
- }
- },
- {
- "containerID": 3,
- "entityType": 66,
- "entityInstance": 41,
- "sensorOffset": 0,
- "stateSetId": 1,
- "event_states": [1, 3],
- "dbus": {
- "object_path": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm41",
- "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
- "property_name": "Functional",
- "property_type": "bool",
- "property_values": [true, false]
- }
- },
- {
- "containerID": 3,
- "entityType": 66,
- "entityInstance": 42,
- "sensorOffset": 0,
- "stateSetId": 1,
- "event_states": [1, 3],
- "dbus": {
- "object_path": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm42",
- "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
- "property_name": "Functional",
- "property_type": "bool",
- "property_values": [true, false]
- }
- },
- {
- "containerID": 3,
- "entityType": 66,
- "entityInstance": 43,
- "sensorOffset": 0,
- "stateSetId": 1,
- "event_states": [1, 3],
- "dbus": {
- "object_path": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm43",
- "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
- "property_name": "Functional",
- "property_type": "bool",
- "property_values": [true, false]
- }
- },
- {
- "containerID": 3,
- "entityType": 66,
- "entityInstance": 44,
- "sensorOffset": 0,
- "stateSetId": 1,
- "event_states": [1, 3],
- "dbus": {
- "object_path": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm44",
- "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
- "property_name": "Functional",
- "property_type": "bool",
- "property_values": [true, false]
- }
- },
- {
- "containerID": 3,
- "entityType": 66,
- "entityInstance": 45,
- "sensorOffset": 0,
- "stateSetId": 1,
- "event_states": [1, 3],
- "dbus": {
- "object_path": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm45",
- "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
- "property_name": "Functional",
- "property_type": "bool",
- "property_values": [true, false]
- }
- },
- {
- "containerID": 3,
- "entityType": 66,
- "entityInstance": 46,
- "sensorOffset": 0,
- "stateSetId": 1,
- "event_states": [1, 3],
- "dbus": {
- "object_path": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm46",
- "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
- "property_name": "Functional",
- "property_type": "bool",
- "property_values": [true, false]
- }
- },
- {
- "containerID": 3,
- "entityType": 66,
- "entityInstance": 47,
- "sensorOffset": 0,
- "stateSetId": 1,
- "event_states": [1, 3],
- "dbus": {
- "object_path": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm47",
- "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
- "property_name": "Functional",
- "property_type": "bool",
- "property_values": [true, false]
- }
- },
- {
- "containerID": 3,
- "entityType": 66,
- "entityInstance": 48,
- "sensorOffset": 0,
- "stateSetId": 1,
- "event_states": [1, 3],
- "dbus": {
- "object_path": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm48",
- "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
- "property_name": "Functional",
- "property_type": "bool",
- "property_values": [true, false]
- }
- },
- {
- "containerID": 3,
- "entityType": 66,
- "entityInstance": 49,
- "sensorOffset": 0,
- "stateSetId": 1,
- "event_states": [1, 3],
- "dbus": {
- "object_path": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm49",
- "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
- "property_name": "Functional",
- "property_type": "bool",
- "property_values": [true, false]
- }
- },
- {
- "containerID": 3,
- "entityType": 66,
- "entityInstance": 50,
- "sensorOffset": 0,
- "stateSetId": 1,
- "event_states": [1, 3],
- "dbus": {
- "object_path": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm50",
- "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
- "property_name": "Functional",
- "property_type": "bool",
- "property_values": [true, false]
- }
- },
- {
- "containerID": 3,
- "entityType": 66,
- "entityInstance": 51,
- "sensorOffset": 0,
- "stateSetId": 1,
- "event_states": [1, 3],
- "dbus": {
- "object_path": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm51",
- "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
- "property_name": "Functional",
- "property_type": "bool",
- "property_values": [true, false]
- }
- },
- {
- "containerID": 3,
- "entityType": 66,
- "entityInstance": 52,
- "sensorOffset": 0,
- "stateSetId": 1,
- "event_states": [1, 3],
- "dbus": {
- "object_path": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm52",
- "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
- "property_name": "Functional",
- "property_type": "bool",
- "property_values": [true, false]
- }
- },
- {
- "containerID": 3,
- "entityType": 66,
- "entityInstance": 53,
- "sensorOffset": 0,
- "stateSetId": 1,
- "event_states": [1, 3],
- "dbus": {
- "object_path": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm53",
- "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
- "property_name": "Functional",
- "property_type": "bool",
- "property_values": [true, false]
- }
- },
- {
- "containerID": 3,
- "entityType": 66,
- "entityInstance": 54,
- "sensorOffset": 0,
- "stateSetId": 1,
- "event_states": [1, 3],
- "dbus": {
- "object_path": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm54",
- "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
- "property_name": "Functional",
- "property_type": "bool",
- "property_values": [true, false]
- }
- },
- {
- "containerID": 3,
- "entityType": 66,
- "entityInstance": 55,
- "sensorOffset": 0,
- "stateSetId": 1,
- "event_states": [1, 3],
- "dbus": {
- "object_path": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm55",
- "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
- "property_name": "Functional",
- "property_type": "bool",
- "property_values": [true, false]
- }
- },
- {
- "containerID": 3,
- "entityType": 66,
- "entityInstance": 56,
- "sensorOffset": 0,
- "stateSetId": 1,
- "event_states": [1, 3],
- "dbus": {
- "object_path": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm56",
- "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
- "property_name": "Functional",
- "property_type": "bool",
- "property_values": [true, false]
- }
- },
- {
- "containerID": 3,
- "entityType": 66,
- "entityInstance": 57,
- "sensorOffset": 0,
- "stateSetId": 1,
- "event_states": [1, 3],
- "dbus": {
- "object_path": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm57",
- "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
- "property_name": "Functional",
- "property_type": "bool",
- "property_values": [true, false]
- }
- },
- {
- "containerID": 3,
- "entityType": 66,
- "entityInstance": 58,
- "sensorOffset": 0,
- "stateSetId": 1,
- "event_states": [1, 3],
- "dbus": {
- "object_path": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm58",
- "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
- "property_name": "Functional",
- "property_type": "bool",
- "property_values": [true, false]
- }
- },
- {
- "containerID": 3,
- "entityType": 66,
- "entityInstance": 59,
- "sensorOffset": 0,
- "stateSetId": 1,
- "event_states": [1, 3],
- "dbus": {
- "object_path": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm59",
- "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
- "property_name": "Functional",
- "property_type": "bool",
- "property_values": [true, false]
- }
- },
- {
- "containerID": 3,
- "entityType": 66,
- "entityInstance": 60,
- "sensorOffset": 0,
- "stateSetId": 1,
- "event_states": [1, 3],
- "dbus": {
- "object_path": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm60",
- "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
- "property_name": "Functional",
- "property_type": "bool",
- "property_values": [true, false]
- }
- },
- {
- "containerID": 3,
- "entityType": 66,
- "entityInstance": 61,
- "sensorOffset": 0,
- "stateSetId": 1,
- "event_states": [1, 3],
- "dbus": {
- "object_path": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm61",
- "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
- "property_name": "Functional",
- "property_type": "bool",
- "property_values": [true, false]
- }
- },
- {
- "containerID": 3,
- "entityType": 66,
- "entityInstance": 62,
- "sensorOffset": 0,
- "stateSetId": 1,
- "event_states": [1, 3],
- "dbus": {
- "object_path": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm62",
- "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
- "property_name": "Functional",
- "property_type": "bool",
- "property_values": [true, false]
- }
- },
- {
- "containerID": 3,
- "entityType": 66,
- "entityInstance": 63,
- "sensorOffset": 0,
- "stateSetId": 1,
- "event_states": [1, 3],
- "dbus": {
- "object_path": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm63",
- "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
- "property_name": "Functional",
- "property_type": "bool",
- "property_values": [true, false]
- }
}
]
}
diff --git a/host-bmc/host_pdr_handler.cpp b/host-bmc/host_pdr_handler.cpp
index c309c2a..72f2478 100644
--- a/host-bmc/host_pdr_handler.cpp
+++ b/host-bmc/host_pdr_handler.cpp
@@ -857,10 +857,12 @@
pldm::pdr::EntityInfo entityInfo{};
pldm::pdr::CompositeSensorStates
compositeSensorStates{};
+ std::vector<pldm::pdr::StateSetId> stateSetIds{};
try
{
- std::tie(entityInfo, compositeSensorStates) =
+ std::tie(entityInfo, compositeSensorStates,
+ stateSetIds) =
lookupSensorInfo(sensorEntry);
}
catch (const std::out_of_range&)
@@ -868,7 +870,8 @@
try
{
sensorEntry.terminusID = PLDM_TID_RESERVED;
- std::tie(entityInfo, compositeSensorStates) =
+ std::tie(entityInfo, compositeSensorStates,
+ stateSetIds) =
lookupSensorInfo(sensorEntry);
}
catch (const std::out_of_range&)
@@ -893,9 +896,11 @@
}
const auto& [containerId, entityType,
entityInstance] = entityInfo;
+ auto stateSetId = stateSetIds[sensorOffset];
pldm::responder::events::StateSensorEntry
stateSensorEntry{containerId, entityType,
- entityInstance, sensorOffset};
+ entityInstance, sensorOffset,
+ stateSetId};
handleStateSensorEvent(stateSensorEntry, eventState);
}
};
diff --git a/libpldmresponder/event_parser.cpp b/libpldmresponder/event_parser.cpp
index d070758..303a553 100644
--- a/libpldmresponder/event_parser.cpp
+++ b/libpldmresponder/event_parser.cpp
@@ -5,7 +5,6 @@
#include <filesystem>
#include <fstream>
-#include <iostream>
#include <set>
PHOSPHOR_LOG2_USING;
@@ -58,6 +57,8 @@
static_cast<uint16_t>(entry.value("entityInstance", 0));
stateSensorEntry.sensorOffset =
static_cast<uint8_t>(entry.value("sensorOffset", 0));
+ stateSensorEntry.stateSetid =
+ static_cast<uint16_t>(entry.value("stateSetId", 0));
pldm::utils::DBusMapping dbusInfo{};
diff --git a/libpldmresponder/event_parser.hpp b/libpldmresponder/event_parser.hpp
index 4d95e3a..7498c4c 100644
--- a/libpldmresponder/event_parser.hpp
+++ b/libpldmresponder/event_parser.hpp
@@ -27,13 +27,14 @@
pdr::EntityType entityType;
pdr::EntityInstance entityInstance;
pdr::SensorOffset sensorOffset;
+ pdr::StateSetId stateSetid;
bool operator==(const StateSensorEntry& e) const
{
- return ((containerId == e.containerId) &&
- (entityType == e.entityType) &&
- (entityInstance == e.entityInstance) &&
- (sensorOffset == e.sensorOffset));
+ return (
+ (containerId == e.containerId) && (entityType == e.entityType) &&
+ (entityInstance == e.entityInstance) &&
+ (sensorOffset == e.sensorOffset) && (stateSetid == e.stateSetid));
}
bool operator<(const StateSensorEntry& e) const
@@ -45,7 +46,10 @@
(entityInstance < e.entityInstance)) ||
((containerId == e.containerId) && (entityType == e.entityType) &&
(entityInstance == e.entityInstance) &&
- (sensorOffset < e.sensorOffset)));
+ (sensorOffset < e.sensorOffset)) ||
+ ((containerId == e.containerId) && (entityType == e.entityType) &&
+ (entityInstance == e.entityInstance) &&
+ (sensorOffset == e.sensorOffset) && (stateSetid < e.stateSetid)));
}
};
diff --git a/libpldmresponder/pdr_utils.cpp b/libpldmresponder/pdr_utils.cpp
index 06f080d..e7f6d42 100644
--- a/libpldmresponder/pdr_utils.cpp
+++ b/libpldmresponder/pdr_utils.cpp
@@ -166,6 +166,7 @@
CompositeSensorStates sensors{};
auto statesPtr = pdr->possible_states;
auto compositeSensorCount = pdr->composite_sensor_count;
+ std::vector<StateSetId> stateSetIds{};
while (compositeSensorCount--)
{
@@ -189,6 +190,8 @@
updateStates);
sensors.emplace_back(std::move(possibleStates));
+ stateSetIds.emplace_back(state->state_set_id);
+
if (compositeSensorCount)
{
statesPtr += sizeof(state_sensor_possible_states) +
@@ -200,8 +203,8 @@
std::make_tuple(static_cast<ContainerID>(pdr->container_id),
static_cast<EntityType>(pdr->entity_type),
static_cast<EntityInstance>(pdr->entity_instance));
- auto sensorInfo = std::make_tuple(std::move(entityInfo),
- std::move(sensors));
+ auto sensorInfo = std::make_tuple(std::move(entityInfo), std::move(sensors),
+ std::move(stateSetIds));
return std::make_tuple(pdr->terminus_handle, pdr->sensor_id,
std::move(sensorInfo));
}
diff --git a/libpldmresponder/platform.cpp b/libpldmresponder/platform.cpp
index 70ac4bc..0e5455c 100644
--- a/libpldmresponder/platform.cpp
+++ b/libpldmresponder/platform.cpp
@@ -450,10 +450,11 @@
pldm::pdr::EntityInfo entityInfo{};
pldm::pdr::CompositeSensorStates compositeSensorStates{};
+ std::vector<pldm::pdr::StateSetId> stateSetIds{};
try
{
- std::tie(entityInfo, compositeSensorStates) =
+ std::tie(entityInfo, compositeSensorStates, stateSetIds) =
hostPDRHandler->lookupSensorInfo(sensorEntry);
}
catch (const std::out_of_range&)
@@ -464,7 +465,7 @@
try
{
sensorEntry.terminusID = PLDM_TID_RESERVED;
- std::tie(entityInfo, compositeSensorStates) =
+ std::tie(entityInfo, compositeSensorStates, stateSetIds) =
hostPDRHandler->lookupSensorInfo(sensorEntry);
}
// If there is no mapping for events return PLDM_SUCCESS
@@ -487,7 +488,8 @@
const auto& [containerId, entityType, entityInstance] = entityInfo;
events::StateSensorEntry stateSensorEntry{containerId, entityType,
- entityInstance, sensorOffset};
+ entityInstance, sensorOffset,
+ stateSetIds[sensorOffset]};
return hostPDRHandler->handleStateSensorEvent(stateSensorEntry,
eventState);
}
diff --git a/libpldmresponder/test/event_jsons/good/event_state_sensor.json b/libpldmresponder/test/event_jsons/good/event_state_sensor.json
index f917b90..b966076 100644
--- a/libpldmresponder/test/event_jsons/good/event_state_sensor.json
+++ b/libpldmresponder/test/event_jsons/good/event_state_sensor.json
@@ -5,6 +5,7 @@
"entityType": 64,
"entityInstance": 1,
"sensorOffset": 0,
+ "stateSetId": 1,
"event_states": [0, 1, 2],
"dbus": {
"object_path": "/xyz/abc/def",
@@ -23,6 +24,7 @@
"entityType": 64,
"entityInstance": 1,
"sensorOffset": 1,
+ "stateSetId": 1,
"event_states": [2, 3],
"dbus": {
"object_path": "/xyz/abc/def",
@@ -37,6 +39,7 @@
"entityType": 67,
"entityInstance": 2,
"sensorOffset": 0,
+ "stateSetId": 1,
"event_states": [0, 1],
"dbus": {
"object_path": "/xyz/abc/ghi",
@@ -45,6 +48,21 @@
"property_type": "bool",
"property_values": [false, true]
}
+ },
+ {
+ "containerID": 2,
+ "entityType": 67,
+ "entityInstance": 2,
+ "sensorOffset": 0,
+ "stateSetId": 2,
+ "event_states": [0, 1, 2],
+ "dbus": {
+ "object_path": "/xyz/abc/jkl",
+ "interface": "xyz.openbmc_project.example4.value",
+ "property_name": "value4",
+ "property_type": "string",
+ "property_values": ["Enabled", "Disabled", "Auto"]
+ }
}
]
}
diff --git a/libpldmresponder/test/libpldmresponder_platform_test.cpp b/libpldmresponder/test/libpldmresponder_platform_test.cpp
index c56cf06..ad3cb8e 100644
--- a/libpldmresponder/test/libpldmresponder_platform_test.cpp
+++ b/libpldmresponder/test/libpldmresponder_platform_test.cpp
@@ -603,7 +603,7 @@
// Event Entry 1
{
- StateSensorEntry entry{1, 64, 1, 0};
+ StateSensorEntry entry{1, 64, 1, 0, 1};
const auto& [dbusMapping, eventStateMap] = handler.getEventInfo(entry);
DBusMapping mapping{"/xyz/abc/def",
"xyz.openbmc_project.example1.value", "value1",
@@ -626,7 +626,7 @@
// Event Entry 2
{
- StateSensorEntry entry{1, 64, 1, 1};
+ StateSensorEntry entry{1, 64, 1, 1, 1};
const auto& [dbusMapping, eventStateMap] = handler.getEventInfo(entry);
DBusMapping mapping{"/xyz/abc/def",
"xyz.openbmc_project.example2.value", "value2",
@@ -643,7 +643,7 @@
// Event Entry 3
{
- StateSensorEntry entry{2, 67, 2, 0};
+ StateSensorEntry entry{2, 67, 2, 0, 1};
const auto& [dbusMapping, eventStateMap] = handler.getEventInfo(entry);
DBusMapping mapping{"/xyz/abc/ghi",
"xyz.openbmc_project.example3.value", "value3",
@@ -658,9 +658,29 @@
ASSERT_EQ(value1 == propValue1, true);
}
+ // Event Entry 4
+ {
+ StateSensorEntry entry{2, 67, 2, 0, 2};
+ const auto& [dbusMapping, eventStateMap] = handler.getEventInfo(entry);
+ DBusMapping mapping{"/xyz/abc/jkl",
+ "xyz.openbmc_project.example4.value", "value4",
+ "string"};
+ ASSERT_EQ(mapping == dbusMapping, true);
+
+ const auto& propValue0 = eventStateMap.at(eventState0);
+ const auto& propValue1 = eventStateMap.at(eventState1);
+ const auto& propValue2 = eventStateMap.at(eventState2);
+ PropertyValue value0{std::in_place_type<std::string>, "Enabled"};
+ PropertyValue value1{std::in_place_type<std::string>, "Disabled"};
+ PropertyValue value2{std::in_place_type<std::string>, "Auto"};
+ ASSERT_EQ(value0 == propValue0, true);
+ ASSERT_EQ(value1 == propValue1, true);
+ ASSERT_EQ(value2 == propValue2, true);
+ }
+
// Invalid Entry
{
- StateSensorEntry entry{0, 0, 0, 0};
+ StateSensorEntry entry{0, 0, 0, 0, 1};
ASSERT_THROW(handler.getEventInfo(entry), std::out_of_range);
}
}