A. Example PLDM Command and Response Messages
- GetPDR
- GetSensorReading
GetPDR
Run the GetPDR command with the board temperature PDR record handle (13) to get the board sensor ID, and temperature conversion formula. You can also observe threshold values set for the board temperature sensor.
GetPDR Request Command (0x51):
0x0F 0x16 0x21
0x01 0x00 0x00 0xC8
0x01 0x88 0x02 0x51 0x0D 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x01 0x80 0x00 0x00 0x00
0x3D
GetPDR Request Data | Value |
---|---|
recordHandle | 0x0000_000D – PDR handle for board temperature is 13 |
dataTransferHandle | 0x0000_0000 |
transferOperationFlag | 0x01 |
requestCount | 0x0080 (128 bytes) |
recordChangeNumber | 0x0000 |
GetPDR Response:
0x20 0x0F 0x7E 0xCF 0x01 0x00 0x05 0xC0 0x01 0x08 0x02 0x51 0x00 0x02 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x05 0x69 0x00 0x01 0x00 0x00 0x00 0x01 0x02 0x00 0x00
0x5F 0x00 0x34 0x12 0x01 0x00 0x3E 0x00 0x01 0x00 0x23 0x01 0x00 0x01 0x02 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x01 0x05 0x00 0x00 0x00 0x3F 0x00 0x00 0x00
0x00 0x00 0x00 0x02 0x02 0x14 0x00 0x00 0x00 0x05 0x06 0x00 0x00 0x40 0x40 0x00 0x00 0x40 0x40 0xFE 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x05 0x20 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x55 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x64 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0xF2
0x00 0x02 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x05 0x69 0x00
0x01 0x00 0x00 0x00 0x01 0x02 0x00 0x00 0x5F 0x00
0x34 0x12 0x01 0x00 0x3E 0x00 0x01 0x00 0x23 0x01 0x00 0x01 0x02 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x01 0x05 0x00 0x00 0x00 0x3F 0x00 0x00 0x00 0x00 0x00
0x00 0x02 0x02 0x14 0x00 0x00 0x00 0x05 0x06 0x00 0x00 0x40 0x40 0x00 0x00 0x40
0x40 0xFE 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x05 0x20 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x55 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x64 0x00 0x00 0x00 0x00 0x00 0x00 0xF2
GetPDRResponse Data | Value |
---|---|
Completion code | 0x00 |
nextRecordHandle | 0x0000_0002 |
nextDataTransferHandle | 0x0000_0000 |
transferFlag | 0x05 |
responseCount | 0x0069 = 105 bytes |
recordData | 0x00 |
Common PDR Header Format | Value |
---|---|
recordHandle | 0x0000_0001 |
PDRHeaderVersion | 0x01 |
PDRType | 0x02 |
recordChangeNumber | 0x0000 |
dataLength | 0x005F = 95 bytes |
Numeric Sensor PDR Format | Value |
---|---|
PLDMTerminusHandle | 0x1234 |
sensorID | 0x0001 |
entityType | 0x003E |
entityInstanceNumber | 0x0001 |
containerID | 0x0123 |
sensorInit | 0x00- noInit |
sensorAuxiliaryNamesPDR | 0x01 - False |
baseUnit | 0x02 - units -Degrees C |
unitModifier | 0x00 |
rateUnit | 0x00 |
baseOEMUnitHandle | 0x00 |
auxUnit | 0x00 |
auxUnitModifier | 0x00 |
auxrateUnit | 0x00 |
rel | 0x00 |
auxOEMUnitHandle | 0x00 |
isLinear | 0x01 |
sensorDataSize | 0x05 -Sint32 |
resolution | 0x3F00_0000 (IEEE754 conversion is 0.5) |
offset | 0x00 (IEEE 754 conversion is 0.0) |
accuracy | 0x00 |
plusTolerance | 0x02 |
minusTolerance | 0x02 |
hysteresis | 0x0000_0014 |
supportedThresholds | 0x05 |
thresholdAndHysteresisVolatility | 0x06 |
stateTransitionInterval | 0x4040_0000 (IEEE 754 conversion is 3.0) |
updateInterval | 0x4040_0000 (IEEE 754 conversion is 3.0) |
maxReadable | 0x0000_00FE |
minReadable | 0x0000_0000 |
rangeFieldFormat | 0x05 - Sint32 |
rangeFieldSupport | 0x0010_0000 |
nominalValue | 0x0000_0000 |
normalMax | 0x0000_0000 |
normalMin | 0x0000_0000 |
warningHigh | 0x0000_0055 = 85 units |
warningLow | 0x0000_0000 |
criticalHigh | 0x0000_0000 |
criticalLow | 0x0000_0000 |
fatalHigh | 0x0000_0064 = 100 units |
fatalLow | 0x0000_0000 |
PEC | 0xF2 |
- The sensor ID for board temperature is 0x0001
- Upper Warning high value is 85 °C
- Upper Fatal high value is 100 °C
- The reading conversation formula is Y= (m*X+B) where,
- Y= Converted reading in units
- X= Reading from sensor obtained by running GetSensorReading command
- m= Resolution from PDR in units (0.5)
- B = Offset from PDR in units (0.0)
GetSensorReading
Run the GetSensorReading command to get the raw sensor reading of the board temperature.
GetSensorReading Command (0x11):
the length of the write data is 15.
0x0F 0x0C 0x21 0x01 0x00 0x00 0xC8 0x01 0x89 0x02 0x11 0x01 0x00 0x00 0x4F
Below is the of the above command arranged in their respective SMBUS, MCTP, PLDM header location.
To decode the PLDM message payload, refer to DSP0248_1.2.0 specification.
GetSensorReading Requestdata | Value |
---|---|
sensorID | 0x0001 |
rearmEventState | 0x00 |
GetSensorReading Response:
0x20 0x0F 0x14 0xCF 0x01 0x00 0x05 0xC0 0x01 0x09 0x02 0x11 0x00 0x05 0x00 0x00 0x01 0x00 0x01 0x45 0x00 0x00 0x00 0xFB
GetSensorReading Response | Value |
---|---|
CompletionCode | 0x00 |
SensorDataSize | 0x05 - sint32 |
SensorOperationalState | 0x00 -enabled |
SensorEventMessageEnable | 0x00 |
presentState | 0x01 - Normal |
previousState | 0x00 - unknown |
eventState | 0x01- Normal |
presentReading | 0x0000_0045 = 69 units |
- The raw data value of board temperature is 69 °C
- Find the actual temperature using the conversion formula, Y=(m*X+B)
- Actual Board temperature value = (69*0.5+0.0)= 34.5 °C