From 2dd0d1e4d275891ebd705ef95f25b8ae067e6cf1 Mon Sep 17 00:00:00 2001 From: Jarrod Johnson Date: Tue, 8 Sep 2020 13:33:53 -0400 Subject: [PATCH] Fix software sensor data Software sensors are not in the SDR, and the owner ID is used to distinguish them. Incorporate the owner ID to qualify the sensors. Change-Id: I984eaab21fd992bfd9bf8eda4e22943f9812a104 --- pyghmi/ipmi/events.py | 3 ++- pyghmi/ipmi/sdr.py | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/pyghmi/ipmi/events.py b/pyghmi/ipmi/events.py index 89a6b702..415a1957 100644 --- a/pyghmi/ipmi/events.py +++ b/pyghmi/ipmi/events.py @@ -498,7 +498,8 @@ class EventHandler(object): raise pygexc.PyghmiException( 'Unrecognized Event message version {0}'.format(eventdata[2])) sensor_type = eventdata[3] - sensorid = '{0}.{1}'.format(eventdata[4], eventdata[1] & 0b11) + sensorid = '{0}.{1}.{2}'.format( + eventdata[0], eventdata[4], eventdata[1] & 0b11) event_data = eventdata[6:] deassertion = (eventdata[5] & 0b10000000 == 0b10000000) event_type = eventdata[5] & 0b1111111 diff --git a/pyghmi/ipmi/sdr.py b/pyghmi/ipmi/sdr.py index ea50108e..92b78184 100644 --- a/pyghmi/ipmi/sdr.py +++ b/pyghmi/ipmi/sdr.py @@ -377,6 +377,7 @@ class SDREntry(object): # event only, compact and full are very similar # this function handles the common aspects of compact and full # offsets from spec, minus 6 + self.sensor_owner = entry[0] self.sensor_lun = entry[1] & 0x03 self.sensor_number = entry[2] self.entity = ipmiconst.entity_ids.get( @@ -836,7 +837,8 @@ class SDR(object): newent = SDREntry(sdrbytes, self.ipmicmd, False, self.mfg_id, self.prod_id) if newent.sdrtype == TYPE_SENSOR: - id = '{0}.{1}'.format(newent.sensor_number, newent.sensor_lun) + id = '{0}.{1}.{2}'.format( + newent.sensor_owner, newent.sensor_number, newent.sensor_lun) if id in self.sensors: self.broken_sensor_ids[id] = True return