一、Common PDR header format
所有PDR均包含以下固定格式的头部,后接可变长度的记录数据。头部字段定义如下:
字段名 | 类型 | 大小(字节) | 描述 | 特殊值/备注 |
---|---|---|---|---|
recordHandle | uint32 | 4 | 唯一标识PDR的句柄,用于访问PDR存储库中的记录。需保证同一存储库内的唯一性,但无需跨类型或系统唯一。 | 0x0000_0000 为保留值,不可使用。 |
PDRHeaderVersion | uint8 | 1 | 头部格式版本号,用于未来扩展兼容性。当前规范版本为 0x01 。 | 当前有效值:0x01 (对应本规范定义的PDR)。 |
PDRType | uint8 | 1 | 指定PDR类型,具体类型由规范定义(如传感器、实体关联等)。 | 参见规范第25.3节和28.2节的类型编码。 |
recordChangeNumber | uint16 | 2 | 记录变更计数器,用于追踪PDR的修改次数(如版本同步或更新)。 | 详见规范第26.2.3节。 |
dataLength | uint16 | 2 | PDR数据部分的长度(单位:字节),不包含头部自身长度。 | 数据部分长度可变,但建议同一类型的PDR尽量使用固定长度以简化处理。 |
二、PDR Type
标准PDR类型(1~24)
类型编号 | PDR类型名称 | 参考章节 | 说明 |
---|---|---|---|
1 | Terminus Locator PDR | 28.3 | 终结点定位器描述,用于标识PLDM通信终结点。 |
2 | Numeric Sensor PDR | 28.4 | 数值型传感器描述,支持连续数值监测(如温度、电压)。 |
3 | Numeric Sensor Initialization PDR | 28.5 | 数值型传感器初始化参数(如阈值、精度)。 |
4 | State Sensor PDR | 28.6 | 状态型传感器描述,支持离散状态监测(如开关状态)。 |
5 | State Sensor Initialization PDR | 28.7 | 状态型传感器初始化参数(如状态集定义)。 |
6 | Sensor Auxiliary Names PDR | 28.8 | 传感器辅助名称(如多语言描述或别名)。 |
7 | OEM Unit PDR | 28.9 | 厂商自定义单位定义(如扩展单位类型)。 |
8 | OEM State Set PDR | 28.10 | 厂商自定义状态集(如扩展状态编码)。 |
9 | Numeric Effecter PDR | 28.11 | 数值型执行器描述,支持连续数值控制(如风扇转速调节)。 |
10 | Numeric Effecter Initialization PDR | 28.12 | 数值型执行器初始化参数(如范围、步长)。 |
11 | State Effecter PDR | 28.13 | 状态型执行器描述,支持离散状态控制(如电源开关操作)。 |
12 | State Effecter Initialization PDR | 28.14 | 状态型执行器初始化参数(如支持的触发条件)。 |
13 | Effecter Auxiliary Names PDR | 28.15 | 执行器辅助名称(如多语言描述或别名)。 |
14 | Effecter OEM Semantic PDR | 28.16 | 执行器厂商自定义语义(如扩展操作逻辑)。 |
15 | Entity Association PDR | 28.17 | 实体关联关系描述(如硬件组件层级结构)。 |
16 | Entity Auxiliary Names PDR | 28.18 | 实体辅助名称(如设备别名或位置信息)。 |
17 | OEM Entity ID PDR | 28.19 | 厂商自定义实体标识符(如扩展实体类型)。 |
18 | Interrupt Association PDR | 28.20 | 中断关联描述(如中断信号与实体/传感器的绑定)。 |
19 | PLDM Event Log PDR | 28.21 | 事件日志配置(如日志存储位置和触发条件)。 |
20 | FRU Record Set PDR | 28.22 | 现场可更换单元(FRU)记录集定义。 |
21 | Compact Numeric Sensor PDR | 28.25 | 紧凑型数值传感器描述(优化存储空间的传感器配置)。 |
22 | Redfish Resource PDR | 28.26 | Redfish资源映射(与Redfish API资源的关联)。 |
23 | Redfish Entity Association PDR | 28.27 | Redfish实体关联(如Redfish资源与PLDM实体的绑定)。 |
24 | Redfish Action PDR | 28.28 | Redfish操作映射(定义可通过PLDM触发的Redfish操作)。 |
126 | OEM Device PDR | 28.23 | 厂商自定义设备描述(用于扩展非标准设备或功能)。 |
127 | OEM PDR | 28.24 |
三、Terminus Locator PDR
用于将 PLDMTerminusHandle
与唯一标识PLDM终结点(设备或软件)的值关联。其格式包含公共头部和以下特有字段:
字段定义
字段名 | 类型/格式 | 描述 | 枚举值/示例 |
---|---|---|---|
commonHeader | 公共头部(见28.1) | 包含 recordHandle , PDRHeaderVersion (0x01), PDRType (1), recordChangeNumber , dataLength 。 | - |
PLDMTerminusHandle | uint16 | 唯一标识属于特定PLDM终结点的PDR集合。 | - |
validity | enum8 | 标记此PDR是否有效,用于终结点枚举。 | notValid (无效,需忽略)valid (有效)详见规范12.5节。 |
TID | uint8 | PLDM终结点ID,用于标识来自该终结点的异步消息。 | - |
containerID | uint16 | 包含此终结点的实体的容器ID(如硬件模块或子系统)。 | 详见规范9.1节。 |
terminusLocatorType | enum8 | 终结点定位类型,决定后续 terminusLocatorValue 的格式。 | UID (基于唯一设备标识符)MCTP_EID (MCTP终结点ID)SMBusRelative (SMBus相对地址)systemSoftware (系统软件代理) |
terminusLocatorValueSize | uint8 | terminusLocatorValue 字段的字节长度,用于兼容未来扩展。 |
terminusLocatorValue 字段结构(按类型划分)
1. terminusLocatorType = UID
字段名 | 类型/格式 | 描述 | 示例/约束 |
---|---|---|---|
terminusInstance | uint8 | 设备包含多个PLDM终结点时,用于区分不同终结点。 | 0~255 |
deviceUID | UUID | 设备唯一标识符(可能非全局唯一),需保证同一PLDM系统内唯一。 | 厂商可预定义或通过配置选择;设备需支持 GetTerminusUID 命令。 |
2. terminusLocatorType = MCTP_EID
字段名 | 类型/格式 | 描述 | 示例/约束 |
---|---|---|---|
EID | uint8 | MCTP终结点ID,用于标识传输协议终结点。 | 0x00~0xFF(MCTP EID范围) |
3. terminusLocatorType = SMBusRelative
字段名 | 类型/格式 | 描述 | 示例/约束 |
---|---|---|---|
UID | UUID | 总线控制器的唯一标识符(参考 UID 类型定义)。 | 同 terminusLocatorType = UID 的 deviceUID 。 |
busNumber | uint8 | 设备连接的总线号(相对于拥有总线的控制器)。 | 若通过MCTP访问,必须与路由表中的端口号一致。 |
slaveAddress | uint8 | SMBus/I²C从机地址。 [7:1]: 地址值 [0]: 固定为0b。 | 例如:0x50(7位地址)对应 slaveAddress 字段值为 0xA0(左移一位后)。 |
4. terminusLocatorType = systemSoftware
字段名 | 类型/格式 | 描述 | 枚举值/示例 |
---|---|---|---|
softwareClass | enum8 | 软件类别,标识终结点类型。 | unspecified (未指定)other (其他)systemFirmware (系统固件)OSloader (OS引导程序)OS (操作系统)CIMprovider (CIM提供者)otherProvider (其他提供者)virtualMachineManager (虚拟机管理器) |
UUID | UUID | 软件实例的唯一标识符,需保证同一PLDM子系统内唯一。 (同一软件的多实例需不同UUID) | 例如:厂商预定义或动态生成。 |
四、Numeric Sensor PDR 概述
用于描述PLDM数值型传感器的语义、单位转换参数及关联实体信息,支持传感器原始数据到标准化单位的转换。其格式包含公共头部和以下特有字段
字段定义
字段名 | 类型/格式 | 描述 | 枚举值/备注 |
---|---|---|---|
commonHeader | 公共头部(见28.1) | 包含 recordHandle , PDRHeaderVersion (0x01), PDRType (2), recordChangeNumber , dataLength 。 | - |
PLDMTerminusHandle | uint16 | 标识所属PLDM终结点的PDR集合。 | - |
sensorID | uint16 | 传感器在给定终结点内的唯一标识符。 | 自规范1.1.1版本起由uint8扩展为uint16,以兼容GetSensorReading 命令。 |
entityType | uint16 | 关联实体的类型(如处理器、电源模块等)。 | 详见规范9.1节实体类型定义。 |
entityInstanceNumber | uint16 | 关联实体的实例编号(同一类型实体的多个实例)。 | 详见规范9.1节。 |
containerID | uint16 | 包含该实体的容器ID(如硬件模块或子系统)。 | 详见规范9.1节。 |
sensorInit | enum8 | 传感器初始化策略。 | noInit (无需初始化)useInitPDR (使用Numeric Sensor Initialization PDR)enableSensor (初始化时启用)disableSensor (初始化时禁用) |
sensorAuxiliaryNamesPDR | bool8 | 是否关联Sensor Auxiliary Names PDR(提供辅助名称)。 | true (关联)false (不关联) |
baseUnit | enum8 | 传感器返回值的基础单位(如伏特、安培)。 | 参见规范表74(如degreesC , volts , watts 等)。 |
unitModifier | sint8 | 基础单位的10的幂次缩放因子(如3 表示×10³)。 | 范围:-128 ~ 127 |
rateUnit | enum8 | 速率单位(如每秒、每小时)。 | None , Per MicroSecond , Per MilliSecond , Per Second , Per Minute , Per Hour 等。 |
baseOEMUnitHandle | uint8 | 若baseUnit 为OEMUnit ,此句柄指向对应的OEM Unit PDR。 | - |
auxUnit | enum8 | 辅助单位(可选,用于复合单位计算)。 | 同baseUnit 。 |
auxUnitModifier | sint8 | 辅助单位的10的幂次缩放因子。 | 范围:-128 ~ 127 |
auxrateUnit | enum8 | 辅助速率单位。 | 同rateUnit 。 |
rel | enum8 | 基础单位与辅助单位的关系。 | dividedBy (除法,如“伏特/秒”)multipliedBy (乘法,如“伏特×安培”) |
auxOEMUnitHandle | uint8 | 若auxUnit 为OEMUnit ,此句柄指向对应的OEM Unit PDR。 | - |
isLinear | bool8 | 传感器是否线性(影响MAP的CIM_NumericSensor.IsLinear 属性)。 | true (线性)false (非线性或动态范围) |
sensorDataSize | enum8 | 传感器原始数据格式及位宽。 | uint8 , sint8 , uint16 , sint16 , uint32 , sint32 |
resolution | real32 | 传感器分辨率(单位/原始计数)。 | 示例:0.1表示每计数对应0.1单位(如0.1V)。 |
offset | real32 | 原始数据转换为单位值的偏移量(如校准偏移)。 | 公式:单位值 = (原始值 × resolution) + offset |
accuracy | uint16 | 精度误差范围(±百分比,以1/100%为单位)。 | 示例:510表示±5.10%;详见规范27.6节。 |
plusTolerance minusTolerance | uint8 | 量化误差的上下限(原始计数值)。 | 示例:plusTolerance=2表示+2计数误差;详见规范27.6节。 |
hysteresis | uint8/sint8/uint16/sint16/uint32/sint32 | 传感器阈值迟滞值(原始计数单位)。 | 大小由sensorDataSize 决定;0 表示无迟滞;可被SetSensorThresholds 命令覆盖。 |
阈值与稳定性相关字段
字段名 | 类型/格式 | 描述 | 枚举值/位定义 |
---|---|---|---|
supportedThresholds | bitfield8 | 指示传感器支持的阈值类型(每位对应一种阈值)。 | 位定义:[0] : upperThresholdWarning(支持)[1] : upperThresholdCritical[2] : upperThresholdFatal[3] : lowerThresholdWarning[4] : lowerThresholdCritical[5] : lowerThresholdFatal[6:7] : 保留(必须为0) |
thresholdAndHysteresisVolatility | bitfield8 | 指示阈值和迟滞设置的易失性条件(在哪些情况下会被重置)。 | 位定义:[0] : 初始化代理重启或更新时重置[1] : PLDM子系统上电时重置[2] : 系统硬重置时重置[3] : 系统热重置时重置[4] : PLDM终结点恢复在线时重置[5:7] : 保留(必须为0)特殊值: 00000b (非易失,永久保留) |
stateTransitionInterval | real32 | 传感器状态切换(如启用/禁用)所需的最长时间(秒)。 | *示例:0.5秒(支持浮点表示);real32 允许“未知”值。 |
updateInterval | real32 | 传感器数据更新或轮询间隔(秒)。 | 示例:1.0秒(每秒更新一次)。 |
可读范围与标称值字段
字段名 | 类型/格式 | 描述 | 示例/约束 |
---|---|---|---|
maxReadable | uint8/sint8/uint16/sint16/uint32/sint32 | 传感器可返回的最大原始值(格式由sensorDataSize 决定)。 | 示例:sensorDataSize=uint16 时,maxReadable=0xFFFF (需通过转换公式转换为单位值)。 |
minReadable | uint8/sint8/uint16/sint16/uint32/sint32 | 传感器可返回的最小原始值(格式由sensorDataSize 决定)。 | 示例:sensorDataSize=sint8 时,minReadable=-128 。 |
rangeFieldFormat | enum8 | 后续范围字段(如nominalValue )的数据格式。 | uint8 , sint8 , uint16 , sint16 , uint32 , sint32 , real32 注: 规范错误未包含 warningHigh /warningLow ,需等待版本修正。 |
rangeFieldSupport | bitfield8 | 指示哪些范围字段有效(支持)。 | 位定义:[0] : nominalValue(支持)[1] : normalMax[2] : normalMin[3] : criticalHigh[4] : criticalLow[5] : fatalHigh[6] : fatalLow[7] : 保留(必须为0)注: warningHigh /warningLow 未包含,需通过紧凑型PDR实现。 |
nominalValue | uint8/sint8/uint16/sint16/uint32/sint32/real32 | 被监测参数的标称值(直接以单位表示,无需转换)。 | 示例:rangeFieldFormat=real32 时,nominalValue=5.0 (对应5.0伏特)。 |
字段名 | 类型/格式 | 描述 | 示例/约束 |
---|---|---|---|
normalMax | uint8/sint8/uint16/sint16/uint32/sint32/real32 | 被监测参数的正常操作范围上限(单位直接表示)。当读数超过此值视为超出正常范围。 | 示例:5.25 (单位:伏特,表示正常电压上限为5.25V)。 |
normalMin | 同上 | 被监测参数的正常操作范围下限(单位直接表示)。阈值设置通常低于此值以避免误报。 | 示例:4.75 (单位:伏特,表示正常电压下限为4.75V)。 |
warningHigh | 同上 | 警告条件的高阈值(读数超过此值时触发警告)。可能与 normalMax 相同。 | 示例:5.30 (单位:伏特,警告电压上限为5.30V)。 |
warningLow | 同上 | 警告条件的低阈值(读数低于此值时触发警告)。可能与 normalMin 相同。 | 示例:4.70 (单位:伏特,警告电压下限为4.70V)。 |
criticalHigh | 同上 | 严重条件的高阈值(读数超过此值时触发严重警报)。可能等于 normalMax 。 | 示例:5.50 (单位:伏特,严重电压上限为5.50V)。 |
criticalLow | 同上 | 严重条件的低阈值(读数低于此值时触发严重警报)。可能等于 normalMin 。 | 示例:4.50 (单位:伏特,严重电压下限为4.50V)。 |
fatalHigh | 同上 | 致命条件的高阈值(读数超过此值时触发致命故障)。可能等于 normalMax 。 | 示例:6.00 (单位:伏特,致命电压上限为6.00V)。 |
fatalLow | 同上 | 致命条件的低阈值(读数低于此值时触发致命故障)。可能等于 normalMin 。 | 示例:4.00 (单位:伏特,致命电压下限为4.00V)。 |
四、 Numeric Sensor Initialization PDR
用于配置需要初始化代理(Initialization Agent)初始化的数值型传感器,定义阈值、启用状态及初始化触发条件。其格式包含公共头部和以下特有字段:
字段定义
字段名 | 类型/格式 | 描述 | 枚举值/位定义 |
---|---|---|---|
commonHeader | 公共头部(见28.1) | 包含 recordHandle , PDRHeaderVersion (0x01), PDRType (3), recordChangeNumber , dataLength 。 | - |
PLDMTerminusHandle | uint16 | 标识所属PLDM终结点的PDR集合。 | - |
sensorID | uint16 | 传感器在给定终结点内的唯一标识符(与Numeric Sensor PDR的sensorID 一致)。 | - |
initConditions | bitfield8 | 初始化触发条件(每位对应一种系统事件)。 | 位定义:[0] : 初始化代理重启或更新时触发[1] : PLDM子系统上电时触发[2] : 系统硬重置时触发[3] : 系统热重置时触发[4] : PLDM终结点恢复在线时触发[5:7] : 保留(必须为0) |
sensorEnable | enum8 | 初始化后传感器的操作状态。 | 0x00 : 禁用0x01 : 启用0xFF : 不改变当前状态(特殊值) |
thresholdInitMask | bitfield8 | 指定需要初始化的阈值类型(每位对应一种阈值)。 | 位定义:[0] : 初始化upperThresholdWarning [1] : upperThresholdCritical [2] : upperThresholdFatal [3] : lowerThresholdWarning [4] : lowerThresholdCritical [5] : lowerThresholdFatal [6:7] : 保留 |
sensorDataSize | enum8 | 传感器原始数据及阈值的位宽格式。 | uint8 , sint8 , uint16 , sint16 , uint32 , sint32 |
阈值字段定义
以下字段的 类型和大小 由 sensorDataSize
决定,值以 传感器原始单位(未经转换) 表示:
字段名 | 描述 |
---|---|
upperThresholdWarning | 高警告阈值(原始单位)。当传感器读数超过此值时触发警告事件。 |
upperThresholdCritical | 高严重阈值(原始单位)。当传感器读数超过此值时触发严重事件。 |
upperThresholdFatal | 高致命阈值(原始单位)。当传感器读数超过此值时触发致命事件。 |
lowerThresholdWarning | 低警告阈值(原始单位)。当传感器读数低于此值时触发警告事件。 |
lowerThresholdCritical | 低严重阈值(原始单位)。当传感器读数低于此值时触发严重事件。 |
lowerThresholdFatal | 低致命阈值(原始单位)。当传感器读数低于此值时触发致命事件。 |
五、State Sensor PDR 概述
用于描述复合状态传感器(Composite State Sensor),包含多个子状态传感器的配置信息,所有子传感器共享同一实体关联。其格式包含公共头部和以下特有字段:
字段定义
字段名 | 类型/格式 | 描述 | 枚举值/约束 |
---|---|---|---|
commonHeader | 公共头部(见28.1) | 包含 recordHandle , PDRHeaderVersion (0x01), PDRType (4), recordChangeNumber , dataLength 。 | - |
PLDMTerminusHandle | uint16 | 标识所属PLDM终结点的PDR集合。 | - |
sensorID | uint16 | 复合状态传感器在终结点内的唯一标识符(所有子传感器共享此ID)。 | - |
entityType | uint16 | 关联实体的类型(如处理器、电源模块等)。 | 详见规范9.1节。 |
entityInstanceNumber | uint16 | 关联实体的实例编号。 | 详见规范9.1节。 |
containerID | uint16 | 包含该实体的容器ID(如硬件模块或子系统)。 | 详见规范9.1节。 |
sensorInit | enum8 | 传感器初始化策略。 | noInit (无需初始化)useInitPDR (使用State Sensor Initialization PDR)enableSensor (初始化时启用)disableSensor (初始化时禁用) |
sensorAuxiliaryNamesPDR | bool8 | 是否关联Sensor Auxiliary Names PDR(提供多语言辅助名称)。 | true (关联)false (不关联) |
compositeSensorCount | uint8 | 复合传感器中子状态传感器的数量。 | 范围:0x01 ~ 0x08 (1~8个子传感器) |
子状态传感器字段(possibleStates)
每个子状态传感器包含以下字段,由 compositeSensorCount
指定数量:
字段名 | 类型/格式 | 描述 | 示例/约束 |
---|---|---|---|
stateSetID | uint16 | 标识该子传感器使用的状态集(如“电源状态”、“健康状态”等)。 | 参考PLDM规范中预定义的状态集(如0x0001 表示电源状态)。 |
possibleStatesSize | uint8 | possibleStates 位域的大小(字节数)。 | 范围:0x01 ~ 0x20 (1~32字节)特殊值: 0x00 表示传感器不可用或禁用。 |
possibleStates | bitfield8 x M | 位域表示支持的状态值(每个位对应状态集中的某个状态)。 | 位定义: 每个字节的位0~7对应状态值 X*8+0 ~ X*8+7 (X为字节索引)。例如: 0b00000001 表示支持状态值0,0b10000000 表示支持状态值7。 |
六、 State Sensor Initialization PDR 概述
用于配置复合状态传感器(Composite State Sensor)中子传感器的初始化参数,包括启用状态、事件触发条件及初始状态值。其格式包含公共头部和以下特有字段:
字段定义
字段名 | 类型/格式 | 描述 | 枚举值/位定义 |
---|---|---|---|
commonHeader | 公共头部(见28.1) | 包含 recordHandle , PDRHeaderVersion (0x01), PDRType (5), recordChangeNumber , dataLength 。 | - |
PLDMTerminusHandle | uint16 | 标识所属PLDM终结点的PDR集合。 | - |
sensorID | uint16 | 复合状态传感器在终结点内的唯一标识符(与State Sensor PDR的sensorID 一致)。 | - |
initConditions | bitfield8 | 初始化触发条件(所有子传感器共享此配置)。 | 位定义:[0] : 初始化代理重启或更新时触发[1] : PLDM子系统上电时触发[2] : 系统硬重置时触发[3] : 系统热重置时触发[4] : PLDM终结点恢复在线时触发[5:7] : 保留(必须为0) |
sensorEnable | enum8 | 初始化后子传感器的操作状态。 | 0x00 : 禁用0x01 : 启用0xFF : 不改变当前状态(特殊值) |
sensorInitMask | bitfield8 | 标识需要初始化的子传感器(每位对应一个偏移量0~7)。 | 位定义:[0] : 初始化偏移0的子传感器[1] : 偏移1… [7] : 偏移7 |
sensorOpStateEventEnableMask | bitfield8 | 控制子传感器操作状态事件的消息生成(启用/禁用)。 | 位定义:[0] : 启用偏移0的事件消息[1] : 偏移1… [7] : 偏移7 |
sensorStateEventEnableMask | bitfield8 | 控制子传感器状态事件的消息生成(启用/禁用)。 | **位定义:**同sensorOpStateEventEnableMask 。 |
sensorEventRearm | bitfield8 | 初始化时是否触发事件(当初始状态与当前状态不一致时)。 | 位定义:0b : 接受初始状态,不触发事件1b : 触发事件(状态不匹配时) |
stateValue0 ~ stateValue7 | uint8 x 8 | 每个子传感器的初始化状态值(偏移0~7)。 | 特殊值:0x00 表示占位符(无需初始化该子传感器) |
七、 Sensor Auxiliary Names PDR 概述
用于为传感器提供多语言辅助名称(如多语言显示名称),支持单个数值传感器或复合状态传感器(Composite State Sensor)。其格式包含公共头部和以下特有字段:
字段定义
字段名 | 类型/格式 | 描述 | 示例/约束 |
---|---|---|---|
commonHeader | 公共头部(见28.1) | 包含 recordHandle , PDRHeaderVersion (0x01), PDRType (6), recordChangeNumber , dataLength 。 | - |
PLDMTerminusHandle | uint16 | 标识所属PLDM终结点的PDR集合。 | - |
sensorID | uint16 | 传感器在终结点内的唯一标识符(与Numeric/State Sensor PDR的sensorID 一致)。 | - |
sensorCount | uint8 | 复合传感器中子传感器的数量(必须按顺序填充,即使某些子传感器无名称)。 | 范围:1~M (M为复合传感器的最大子传感器数)示例:复合传感器有4个子传感器, sensorCount=4 。 |
nameStringCount | uint8 | 当前子传感器的名称字符串数量(每个字符串包括语言标签和名称)。 | 范围:0~N (N为支持的名称数量)示例: nameStringCount=2 表示提供两种语言的名称。 |
nameLanguageTag | strASCII | 语言标签(遵循RFC4646标准),标识名称的语言(如en 、zh-cmn-Hans )。 | 特殊值:0x0000 (空字符串)表示语言未指定。 |
sensorName | strUTF-16BE | UTF-16BE编码的传感器名称(Unicode支持多语言)。 | 特殊值:0x0000 (空字符串)表示名称未提供。 |
八、 OEM Unit PDR 概述
用于定义OEM厂商自定义的传感器或执行器单位名称(如特殊测量单位),支持多语言字符串。其格式包含公共头部和以下特有字段:
字段定义
字段名 | 类型/格式 | 描述 | 示例/约束 |
---|---|---|---|
commonHeader | 公共头部(见28.1) | 包含 recordHandle , PDRHeaderVersion (0x01), PDRType (7), recordChangeNumber , dataLength 。 | - |
PLDMTerminusHandle | uint16 | 标识生成此PDR的PLDM终结点。 | - |
OEMUnitHandle | uint8 | 唯一标识该OEM Unit PDR的句柄(同一PDR仓库内唯一)。 | 范围:0x00 ~ 0xFF (同一仓库内不可重复) |
vendorIANA | uint32 | 厂商的IANA企业编号(标识OEM厂商)。 | 示例:0x0000012D (华为的IANA编号)。 |
OEMUnitID | uint8 | 厂商自定义的单位类型标识符(用于FindPDR 命令搜索)。 | 示例:0x01 表示温度单位,0x02 表示功耗单位。 |
stringCount | uint8 | 后续语言标签与单位名称对的数量。 | 范围:1~N (至少1对) |
unitLanguageTag | strASCII | 语言标签(遵循RFC4646标准),标识名称的语言(如en 、zh-cmn-Hans )。 | 特殊值: 空字符串( 0x0000 )表示语言未指定。 |
unitName | strUTF-16BE | UTF-16BE编码的单位名称(Unicode支持多语言)。 | 特殊值: 空字符串( 0x0000 )表示名称未提供。 |
九、OEM State Set PDR
用于定义OEM厂商自定义的状态集(如传感器或执行器的非标准状态),支持多语言状态名称和状态值范围配置。其格式包含公共头部和以下特有字段:
字段定义
字段名 | 类型/格式 | 描述 | 示例/约束 |
---|---|---|---|
commonHeader | 公共头部(见28.1) | 包含 recordHandle , PDRHeaderVersion (0x01), PDRType (8), recordChangeNumber , dataLength 。 | - |
PLDMTerminusHandle | uint16 | 标识生成此PDR的PLDM终结点。 | - |
OEMStateSetIDHandle | uint16 | 唯一标识该OEM状态集的句柄(同一PDR仓库内唯一,取值范围需符合DSP0249定义的OEM状态集范围)。 | 示例:0x8000 (OEM状态集范围起始值)。 |
vendorIANA | uint32 | 厂商的IANA企业编号(标识OEM厂商)。 | 示例:0x0000012D (华为的IANA编号)。 |
OEMStateSetID | uint16 | 厂商自定义的状态集ID(需在DSP0249定义的OEM状态集范围内)。 | 示例:0x8001 表示厂商自定义的电源状态集。 |
unspecifiedValueHint | enum8 | 未明确覆盖的状态值的处理策略。 | treatAsUnspecified (视为未定义)treatAsError (视为错误)。 |
stateCount | uint8 | 后续OEM状态值记录(OEMStateValueRecord )的数量。 | 范围:0~N (0表示无状态记录)。 |
OEM State Value Record(状态值记录)
每个记录定义一组连续状态值的名称,格式如下:
字段名 | 类型/格式 | 描述 | 示例/约束 |
---|---|---|---|
minStateValue | uint8 | 状态值范围的最小值(含)。 | 范围:0~255 |
maxStateValue | uint8 | 状态值范围的最大值(含)。 | maxStateValue ≥ minStateValue ,且不可与其他记录范围重叠。 |
stringCount | uint8 | 后续语言标签与状态名称对的数量。 | 范围:1~N (至少1对) |
stateLanguageTag | strASCII | 语言标签(遵循RFC4646标准),标识名称的语言(如en 、zh-cmn-Hans )。 | 特殊值: 空字符串( 0x0000 )表示语言未指定。 |
stateName | strUTF-16BE | UTF-16BE编码的状态名称(Unicode支持多语言)。 | 特殊值: 空字符串( 0x0000 )表示名称未提供。 |
十、Numeric Effecter PDR 概述
用于描述PLDM数值型执行器(Numeric Effecter)的配置参数,包括单位转换、初始化策略和实体关联信息。其格式包含公共头部和以下特有字段:
字段定义
字段名 | 类型/格式 | 描述 | 枚举值/约束 |
---|---|---|---|
commonHeader | 公共头部(见28.1) | 包含 recordHandle , PDRHeaderVersion (0x01), PDRType (9), recordChangeNumber , dataLength 。 | - |
PLDMTerminusHandle | uint16 | 标识所属PLDM终结点的PDR集合。 | - |
effecterID | uint16 | 执行器在终结点内的唯一标识符。 | 注意:规范1.1.1版本后从uint8扩展为uint16。 |
entityType | uint16 | 关联实体的类型(如处理器、电源模块等)。 | 详见规范9.1节。 |
entityInstanceNumber | uint16 | 关联实体的实例编号。 | 详见规范9.1节。 |
containerID | uint16 | 包含该实体的容器ID(如硬件模块或子系统)。 | 详见规范9.1节。 |
effecterSemanticID | uint16 | 执行器语义ID(标准或OEM范围)。 | 特殊值:0x0000 (未指定)**OEM范围:**需关联OEM Effecter Semantic PDR。 |
effecterInit | enum8 | 执行器初始化策略。 | noInit (无需初始化)useInitPDR (使用Numeric Effecter Initialization PDR)enableEffecter (初始化时启用)disableEffecter (初始化时禁用) |
effecterAuxiliaryNames | bool8 | 是否关联Effecter Auxiliary Names PDR(提供多语言辅助名称)。 | true (关联)false (不关联) |
baseUnit | enum8 | 基础单位(如电压、电流等)。 | 参考规范表74(如Volts=0x01 , Amperes=0x02 )。 |
unitModifier | sint8 | 基础单位的10的幂次缩放因子(如-3 表示10^-3 即毫单位)。 | 范围:-127 ~ 127 |
rateUnit | enum8 | 速率单位(如每秒、每分钟)。 | None , Per MicroSecond , Per MilliSecond , Per Second , Per Minute , Per Hour , Per Day , Per Week , Per Month , Per Year |
baseOEMUnitHandle | uint8 | 若使用OEM单位,关联的OEM Unit PDR句柄。 | 需与OEM Unit PDR的OEMUnitHandle 一致。 |
auxUnit | enum8 | 辅助单位(可选,用于复合单位)。 | 同baseUnit |
auxUnitModifier | sint8 | 辅助单位的10的幂次缩放因子。 | 同unitModifier |
auxrateUnit | enum8 | 辅助速率单位(可选)。 | 同rateUnit |
auxOEMUnitHandle | uint8 | 若辅助单位使用OEM定义,关联的OEM Unit PDR句柄。 | 同baseOEMUnitHandle |
isLinear | bool8 | 执行器是否为线性(影响数据解析方式)。 | true (线性)false (非线性/动态) |
effecterDataSize | enum8 | 执行器数据值的格式和位宽。 | uint8 , sint8 , uint16 , sint16 , uint32 , sint32 |
resolution | real32 | 分辨率(单位/原始值),用于原始值到单位的转换。 | 公式:Unit = (Raw * resolution) + offset |
offset | real32 | 偏移量,用于原始值到单位的转换。 | 同上 |
accuracy | uint16 | 精度误差范围(±百分比,以0.01%为单位)。 | 示例:510 → ±5.10% |
字段名 | 类型/格式 | 描述 | 枚举值/约束 |
---|---|---|---|
plusTolerance | uint8 | 正向公差(以原始值计数的误差上限)。 | 示例:0x02 表示最大允许+2个计数误差。 |
minusTolerance | uint8 | 负向公差(以原始值计数的误差下限)。 | 示例:0x01 表示最小允许-1个计数误差。 |
stateTransitionInterval | real32 | 执行器状态切换的最长时间(秒),如启用/禁用操作。 | 特殊值:NaN (未知时间)。 |
TransitionInterval | real32 | 执行器设置值生效的最长时间(秒)。 | 特殊值:NaN (未知时间)。 |
maxSettable | 动态类型(见下文) | 执行器可接受的最大设置值(原始格式,需通过resolution 和offset 转换为单位)。 | 类型由effecterDataSize 决定:uint8/sint8/uint16/sint16/uint32/sint32 。 |
minSettable | 动态类型(见下文) | 执行器可接受的最小设置值(原始格式)。 | 同上 |
rangeFieldFormat | enum8 | 后续范围字段(如nominalValue )的数据格式。 | uint8 , sint8 , sint16 , uint32 , sint32 , real32 (浮点数) |
rangeFieldSupport | bitfield8 | 标识哪些范围字段有效(如nominalValue 、normalMax 等)。 | 位定义:[0] : nominalValue 有效[1] : normalMax 有效[2] : normalMin 有效[3] : ratedMax 有效[4] : ratedMin 有效[5:7] : 保留 |
nominalValue | 动态类型(见下文) | 参数的标称值(理想值,可能与实际设置值不同)。 | 类型由rangeFieldFormat 决定,示例:real32=5.0 表示5.0单位。 |
normalMax | 动态类型(见下文) | 正常操作范围的上限(超过此值视为异常)。 | 同上 |
normalMin | 动态类型(见下文) | 正常操作范围的下限(低于此值视为异常)。 | 同上 |
ratedMax | 动态类型(见下文) | 额定操作范围的上限(超过此值可能损坏设备)。 | 同上 |
ratedMin | 动态类型(见下文) | 额定操作范围的下限(低于此值可能损坏设备)。 | 同上 |
十一、Numeric Effecter Initialization PDR 概述
用于配置PLDM数值型执行器的初始化参数(如初始值、启用状态及触发条件)。其格式包含公共头部和以下特有字段:
字段定义
字段名 | 类型/格式 | 描述 | 枚举值/约束 |
---|---|---|---|
commonHeader | 公共头部(见28.1) | 包含 recordHandle , PDRHeaderVersion (0x01), PDRType (10), recordChangeNumber , dataLength 。 | - |
PLDMTerminusHandle | uint16 | 标识所属PLDM终结点的PDR集合。 | - |
effecterID | uint16 | 执行器在终结点内的唯一标识符(需与Numeric Effecter PDR的effecterID 一致)。 | - |
effecterEnable | enum8 | 初始化后执行器的操作状态(通过SetEffecterEnable 命令设置)。 | 标准值:0x00 ~0x03 (启用/禁用等)特殊值: 0xFF (不设置状态) |
initConditions | bitfield8 | 触发初始化的条件(位掩码)。 | 位定义:[0] : 初始化代理重启或更新时触发[1] : PLDM子系统上电时触发[2] : 系统硬复位时触发[3] : 系统软复位时触发[4] : PLDM终端上线时触发[5:7] : 保留 |
effecterDataSize | enum8 | 执行器数据值的格式和位宽。 | uint8 , sint8 , uint16 , sint16 , uint32 , sint32 |
effecterData | 动态类型(见下文) | 初始化时写入执行器的数值(原始格式,需通过resolution 和offset 转换为单位)。 | 类型由effecterDataSize 决定,示例:sint16=2500 表示原始值2500。 |
十二、State Effecter PDR 概述
用于描述PLDM复合状态执行器(Composite State Effecter)的配置信息,包括关联实体、状态集支持及初始化策略。其格式包含公共头部和以下特有字段:
字段定义
字段名 | 类型/格式 | 描述 | 枚举值/约束 |
---|---|---|---|
commonHeader | 公共头部(见28.1) | 包含 recordHandle , PDRHeaderVersion (0x01), PDRType (11), recordChangeNumber , dataLength 。 | - |
PLDMTerminusHandle | uint16 | 标识所属PLDM终结点的PDR集合。 | - |
effecterID | uint16 | 执行器在终结点内的唯一标识符。 | - |
entityType | uint16 | 关联实体的类型(如风扇、电源等)。 | 详见规范9.1节。 |
entityInstanceNumber | uint16 | 关联实体的实例编号。 | 详见规范9.1节。 |
containerID | uint16 | 包含该实体的容器ID(如机箱或子系统)。 | 详见规范9.1节。 |
effecterSemanticID | uint16 | 执行器语义ID(标准或OEM范围)。 | 特殊值:0x0000 (未指定)**OEM范围:**需关联OEM Effecter Semantic PDR。 |
effecterInit | enum8 | 执行器初始化策略。 | noInit (无需初始化)useInitPDR (使用State Effecter Initialization PDR)enableEffecter (初始化时启用)disableEffecter (初始化时禁用) |
effecterDescriptionPDR | bool8 | 是否关联Effecter Description PDR(提供多语言描述)。 | true (关联)false (不关联) |
compositeEffecterCount | uint8 | 复合执行器中包含的独立状态执行器数量。 | 范围:0x01 ~ 0x08 (至少1个,最多8个) |
State Effecter Possible States Fields(状态集支持字段)
每个复合执行器包含一个或多个状态集支持定义,格式如下:
字段名 | 类型/格式 | 描述 | 示例/约束 |
---|---|---|---|
stateSetID | uint16 | 状态集ID(标准或OEM范围)。 | 标准状态集参考DSP0249,OEM状态集需关联OEM State Set PDR。 |
possibleStatesSize | uint8 | 后续possibleStates 位字段的字节数。 | 特殊值:0x00 表示执行器不可用或禁用。 |
possibleStates | bitfield8 x M | 位掩码表示支持的状态值(每个位对应状态集中的状态值)。 | 规则: 位 N =1表示支持状态值N ,位N =0表示不支持。 |
十三、State Effecter Initialization PDR 概述
用于配置PLDM状态执行器的初始化参数(如初始状态值、启用策略及触发条件),支持单个或复合状态执行器。其格式包含公共头部和以下特有字段:
字段定义
字段名 | 类型/格式 | 描述 | 枚举值/约束 |
---|---|---|---|
commonHeader | 公共头部(见28.1) | 包含 recordHandle , PDRHeaderVersion (0x01), PDRType (12), recordChangeNumber , dataLength 。 | - |
PLDMTerminusHandle | uint16 | 标识所属PLDM终结点的PDR集合。 | - |
effecterID | uint16 | 执行器在终结点内的唯一标识符(需与State Effecter PDR的effecterID 一致)。 | - |
entityType | uint16 | 已弃用,应设为0。 | 未来版本可能删除,需忽略。 |
entityInstanceNumber | uint16 | 已弃用,应设为0。 | 同上 |
containerID | uint16 | 已弃用,应设为0。 | 同上 |
initConditions | bitfield8 | 触发初始化的条件(位掩码)。 | 位定义:[0] : 初始化代理重启或更新时触发[1] : PLDM子系统上电时触发[2] : 系统硬复位时触发[3] : 系统软复位时触发[4] : PLDM终端上线时触发[5:7] : 保留 |
effecterEnable | enum8 | 初始化后执行器的操作状态(通过SetStateEffecterEnables 命令设置)。 | 特殊值:0xFF (不设置状态)标准值: 0x00 ~0x03 (启用/禁用等) |
effecterInitMask | bitfield8 | 标识复合执行器中哪些独立执行器需要初始化(每个位对应一个偏移量)。 | 位定义:[0] : 偏移量0的执行器需初始化[1] : 偏移量1的执行器需初始化... [7] : 偏移量7的执行器需初始化 |
effecterOpStateEventEnableMask | bitfield8 | 标识哪些执行器初始化后启用事件消息生成(如状态变更通知)。 | **位定义:**同effecterInitMask |
stateValue0 ~ stateValue7 | uint8 x 8 | 每个偏移量对应的初始状态值(0x00 表示占位符,无需初始化)。 | 规则: 仅当 effecterInitMask 对应位为1时,该值有效。 |
十四、Effecter Auxiliary Names PDR 概述
用于为PLDM执行器(单个或复合)提供多语言辅助名称信息,支持不同语言环境下的名称展示。其格式包含公共头部和以下特有字段:
字段定义
字段名 | 类型/格式 | 描述 | 枚举值/约束 |
---|---|---|---|
commonHeader | 公共头部(见28.1) | 包含 recordHandle , PDRHeaderVersion (0x01), PDRType (13), recordChangeNumber , dataLength 。 | - |
PLDMTerminusHandle | uint16 | 标识所属PLDM终结点的PDR集合。 | - |
effecterID | uint16 | 执行器在终结点内的唯一标识符(需与Numeric/State Effecter PDR的effecterID 一致)。 | - |
effecterCount | uint8 | 复合执行器中包含的独立执行器数量(从1开始顺序填充)。 | 范围:1 ~ M (最大由复合执行器定义决定) |
每个执行器的名称信息
每个独立执行器对应一组名称描述字段:
字段名 | 类型/格式 | 描述 | 示例/约束 |
---|---|---|---|
nameStringCount | uint8 | 当前执行器的多语言名称对数量(0表示无名称)。 | 范围:0 ~ N (每组包含nameLanguageTag + effecterName )。 |
nameLanguageTag | strASCII (null终止) | 语言标签(符合RFC4646标准),标识名称的语种。 | 示例:"en" (英语)、"zh-cmn-Hans" (简体中文)**特殊值:**空字符串(未指定)。 |
effecterName | strUTF-16BE (null终止) | 执行器的本地化名称(Unicode编码)。 | 示例: |
十五、OEM Effecter Semantic PDR 概述
用于定义OEM厂商自定义的效果器语义(如特定功能或状态描述),支持多语言名称和厂商唯一标识。其格式包含公共头部和以下特有字段:
字段定义
字段名 | 类型/格式 | 描述 | 枚举值/约束 |
---|---|---|---|
commonHeader | 公共头部(见28.1) | 包含 recordHandle , PDRHeaderVersion (0x01), PDRType (14), recordChangeNumber , dataLength 。 | - |
PLDMTerminusHandle | uint16 | 标识发起此PDR的终结点(用于追踪来源)。 | - |
OEMEffecterSemanticHandle | uint8 | 厂商定义的唯一句柄,用于其他PDR引用该语义(如State Effecter PDR中的effecterSemanticID )。 | 唯一性要求:同一PDR库中不可重复。 |
vendorIANA | uint32 | 厂商的IANA企业编号(全球唯一标识)。 | IANA注册编号,如IBM=0x0000012D |
OEMEffecterSemanticID | uint8 | 厂商内部定义的语义ID(用于搜索或标识特定语义)。 | 组合唯一性:vendorIANA + OEMEffecterSemanticID 唯一标识一个语义定义。 |
stringCount | uint8 | 后续多语言名称对的数量(0表示无名称)。 | 范围:0 ~ N (每组包含languageTag + name )。 |
languageTag | strASCII (null终止) | 语言标签(符合RFC4646标准),标识名称的语种。 | 示例:"en" (英语)、"ja" (日语)**特殊值:**空字符串(未指定)。 |
name | strUTF-16BE (null终止) | 语义的本地化名称(Unicode编码)。 | 示例:"自定义风扇模式" (UTF-16BE)**特殊值:**空字符串(未提供名称)。 |
十六、 Entity Association PDR 概述
用于定义实体间的关联关系(如物理或逻辑包含关系),构建实体层次结构。其格式包含公共头部和以下特有字段:
字段定义
字段名 | 类型/格式 | 描述 | 枚举值/约束 |
---|---|---|---|
commonHeader | 公共头部(见28.1) | 包含 recordHandle , PDRHeaderVersion (0x01), PDRType (15), recordChangeNumber , dataLength 。 | - |
containerID | uint16 | 标识容器实体的唯一ID,用于层级管理。 | 范围:0x0001 ~ 0xFFFF 特殊值: 0x0000 (表示顶层“SYSTEM”容器) |
associationType | enum8 | 关联类型(物理或逻辑包含)。 | physicalToPhysicalContainment (物理包含)logicalContainment (逻辑包含) |
容器实体标识信息
字段名 | 类型/格式 | 描述 | 约束 |
---|---|---|---|
containerEntityType | uint16 | 容器实体的类型(如机箱、主板等)。 | 详见规范9.1节实体类型定义。 |
containerEntityInstanceNumber | uint16 | 容器实体的实例编号(顶层实体需设为1)。 | **顶层PDR规则:**必须为1。 |
containerEntityContainerID | uint16 | 容器实体的父容器ID(用于嵌套结构)。 | **顶层规则:**通常设为0x0000 (SYSTEM)。 |
被包含实体信息
字段名 | 类型/格式 | 描述 | 约束 |
---|---|---|---|
containedEntityCount | uint8 | 当前PDR中描述的被包含实体数量(允许分多个PDR描述同一容器的实体)。 | 范围:1 ~ N |
containedEntityType[1..N] | uint16 x N | 被包含实体的类型(如风扇、电源等)。 | 详见规范9.1节实体类型定义。 |
containedEntityInstanceNumber[1..N] | uint16 x N | 被包含实体的实例编号。 | - |
containedEntityContainerID[1..N] | uint16 x N | 被包含实体的父容器ID(通常与当前容器的containerID 一致)。 | **规则:**必须等于当前PDR的containerID |
十七、 Entity Auxiliary Names PDR 概述
用于为PLDM实体实例(单个或范围)提供多语言辅助名称,支持实体在不同语言环境下的标识。其格式包含公共头部和以下特有字段:
字段定义
字段名 | 类型/格式 | 描述 | 枚举值/约束 |
---|---|---|---|
commonHeader | 公共头部(见28.1) | 包含 recordHandle , PDRHeaderVersion (0x01), PDRType (16), recordChangeNumber , dataLength 。 | - |
entityType | uint16 | 实体类型(如风扇、电源等)。 | 详见规范9.1节实体类型定义。 |
entityInstanceNumber | uint16 | 实体实例的起始编号(用于范围命名)。 | - |
entityContainerID | uint16 | 实体所属容器的ID(同一容器内的实体可共享名称)。 | 特殊值:0x0000 (顶层容器)。 |
sharedNameCount | uint8 | 共享此名称的实体实例数量(从entityInstanceNumber 开始连续编号)。 | 规则:0 :仅当前实例有效。1~N :覆盖当前实例及后续N 个实例。 |
实体辅助名称信息
字段名 | 类型/格式 | 描述 | 示例/约束 |
---|---|---|---|
nameStringCount | uint8 | 当前实体的多语言名称对数量(0表示无名称)。 | 范围:0 ~ N (每组包含nameLanguageTag + entityAuxName )。 |
nameLanguageTag | strASCII (null终止) | 语言标签(符合RFC4646标准),标识名称的语种。 | 示例:"en" (英语)、"es" (西班牙语)**特殊值:**空字符串(未指定)。 |
entityAuxName | strUTF-16BE (null终止) | 实体的本地化名称(Unicode编码)。 | 示例:"机箱风扇" (UTF-16BE)**特殊值:**空字符串(未提供名称)。 |
十八、 Entity Auxiliary Names PDR 概述
用于为PLDM实体实例(单个或范围)提供多语言辅助名称,支持实体在不同语言环境下的标识。其格式包含公共头部和以下特有字段:
字段定义
字段名 | 类型/格式 | 描述 | 枚举值/约束 |
---|---|---|---|
commonHeader | 公共头部(见28.1) | 包含 recordHandle , PDRHeaderVersion (0x01), PDRType (16), recordChangeNumber , dataLength 。 | - |
entityType | uint16 | 实体类型(如风扇、电源等)。 | 详见规范9.1节实体类型定义。 |
entityInstanceNumber | uint16 | 实体实例的起始编号(用于范围命名)。 | 范围:0x0000 ~ 0xFFFF |
entityContainerID | uint16 | 实体所属容器的ID(同一容器内的实体可共享名称)。 | 特殊值:0x0000 (顶层容器)。 |
sharedNameCount | uint8 | 共享此名称的实体实例数量(从entityInstanceNumber 开始连续编号)。 | 规则:0 :仅当前实例有效。1~N :覆盖当前实例及后续N 个实例。 |
实体辅助名称信息
每个实体实例对应一组名称描述字段:
字段名 | 类型/格式 | 描述 | 示例/约束 |
---|---|---|---|
nameStringCount | uint8 | 当前实体的多语言名称对数量(0表示无名称)。 | 范围:0 ~ N (每组包含nameLanguageTag + entityAuxName )。 |
nameLanguageTag | strASCII (null终止) | 语言标签(符合RFC4646标准),标识名称的语种。 | 示例:"en" (英语)、"es" (西班牙语)**特殊值:**空字符串(未指定)。 |
entityAuxName | strUTF-16BE (null终止) | 实体的本地化名称(Unicode编码)。 | 示例:"机箱风扇" (UTF-16BE)**特殊值:**空字符串(未提供名称)。 |
十九、Interrupt Association PDR 概述
用于建立中断源实体与中断目标实体之间的关联关系,描述中断监控传感器与实体的对应关系。其格式包含公共头部和以下特有字段:
字段定义
字段名 | 类型/格式 | 描述 | 枚举值/约束 |
---|---|---|---|
commonHeader | 公共头部(见28.1) | 包含 recordHandle , PDRHeaderVersion (0x01), PDRType (17), recordChangeNumber , dataLength 。 | - |
PLDMTerminusHandle | uint16 | 标识提供中断访问的终结点(通常为监控传感器的来源终结点)。 | - |
sensorID | uint16 | 监控此中断的传感器ID(在源或目标端生效)。 | 引用关系:需与Numeric/State Sensor PDR中的sensorID 一致。 |
sourceOrTargetSensor | enum8 | 指示传感器是监控中断源(Source)还是目标(Target)。 | targetSensor (目标端传感器)sourceSensor (源端传感器) |
目标实体标识信息
字段名 | 类型/格式 | 描述 | 约束 |
---|---|---|---|
interruptTargetEntityType | uint16 | 目标实体的类型(如PCIe设备、处理器等)。 | 详见规范9.1节实体类型定义。 |
interruptTargetEntityInstanceNumber | uint16 | 目标实体的实例编号。 | - |
interruptTargetEntityContainerID | uint16 | 目标实体所属容器的ID。 | 特殊值:0x0000 (顶层容器)。 |
源实体标识信息
字段名 | 类型/格式 | 描述 | 约束 |
---|---|---|---|
interruptSourceEntityCount | uint8 | 当前PDR中描述的中断源实体数量(允许分多个PDR描述同一目标的多个源)。 | 范围:1 ~ N |
interruptSourcePLDMTerminusHandle[1..N] | uint32 x N | 中断源实体所属终结点的句柄。 | - |
interruptSourceEntityType[1..N] | uint16 x N | 中断源实体的类型(如GPIO控制器、外设等)。 | 详见规范9.1节实体类型定义。 |
interruptSourceEntityInstanceNumber[1..N] | uint16 x N | 中断源实体的实例编号。 | - |
interruptSourceEntityContainerID[1..N] | uint16 x N | 中断源实体所属容器的ID。 | 特殊值:0x0000 (顶层容器)。 |
interruptSourceSensorID[1..N] | uint16 x N | 监控中断源实体的传感器ID。 | 引用关系:需与Numeric/State Sensor PDR中的sensorID 一致。 |
二十、 Event Log PDR 概述
用于描述PLDM事件日志的存储特性与策略,每个主PDR库仅允许存在一个Event Log PDR。其格式包含公共头部和以下特有字段:
字段定义
字段名 | 类型/格式 | 描述 | 特殊值/约束 |
---|---|---|---|
commonHeader | 公共头部(见28.1) | 包含 recordHandle , PDRHeaderVersion (0x01), PDRType (18), recordChangeNumber , dataLength 。 | - |
logSize | uint32 | 日志存储区总大小(字节,不包括固定开销)。 | 特殊值:0x00000000 (未指定)0xFFFFFFFF (≥4 GB-1字节) |
supportedLogClearingPolicies | bitfield8 | 支持的日志清除策略(位域)。 | 位定义:[2] :clearOnAge (基于时间清除)[1] :FIFO (先进先出)[0] :fillAndStop (填满停止) |
entryIDTimeout | uint8 | 部分传输中entryID 的最小有效时间(秒)。 | 特殊值:0x00 (无超时)0x01 (默认超时)0xFF (>254秒) |
perEntryOverhead | uint8 | 每个日志条目的存储开销(字节,可能隐藏)。 | 特殊值:0xFF (未指定) |
allocationGranularity | uint8 | 存储空间分配粒度(字节对齐单位)。 | 示例:16 (按16字节对齐)特殊值: 0xFF (未指定) |
percentUsedResolution | uint8 | 存储使用百分比的分辨率(1~100,其他值保留)。 | 规则:0x01 (1%精度)→ storagePercentUsed=0x01 表示1%~2%已用。 |
-
日志清除策略
- fillAndStop(填满停止):日志满后停止记录新条目。
- FIFO(先进先出):日志满后覆盖最旧条目。
- clearOnAge(基于时间清除):根据条目时间戳自动清除旧条目。
-
存储计算规则
- 总存储空间:
logSize
仅包含日志条目数据,可能不包含固定开销。 - 条目开销:若
perEntryOverhead=2
且条目大小为10字节,则实际占用10+2=12
字节(若未隐藏开销)。 - 分配粒度:若
allocationGranularity=16
,则24字节条目占用32字节空间(16字节对齐)。
- 总存储空间:
-
超时与传输管理
- entryIDTimeout:用于部分传输场景(如大条目分片传输),超时后需重新获取完整条目。
- 默认超时:若
entryIDTimeout=0x01
,超时时间与PDR Handle Timeout(规范28.25节)一致。
-
存储使用监控
- percentUsedResolution:定义
GetPLDMEventLogInfo
返回的storagePercentUsed
精度。- 例如,
percentUsedResolution=5
时,storagePercentUsed=1
表示5%~10%已用。
- 例如,
- percentUsedResolution:定义
二十一、FRU Record Set PDR 概述
用于描述与PLDM实体关联的FRU(现场可更换单元)记录集数据特性,支持通过DSP0257规范定义的命令访问FRU数据。其格式包含公共头部和以下特有字段:
字段定义
字段名 | 类型/格式 | 描述 | 约束/引用 |
---|---|---|---|
commonHeader | 公共头部(见28.1) | 包含 recordHandle , PDRHeaderVersion (0x01), PDRType (19), recordChangeNumber , dataLength 。 | - |
PLDMTerminusHandle | uint16 | 标识管理此PDR的终结点(FRU数据来源终结点)。 | 规则:需与终结点注册信息一致。 |
FRURecordSetIdentifier | uint16 | 终结点内唯一的FRU记录集标识符(用于访问FRU数据)。 | 范围:0x0001 ~ 0xFFFF (每个终结点独立分配)。 |
entityType | uint16 | 关联FRU数据的实体类型(如机箱、电源等)。 | 详见规范9.1节实体类型定义。 |
entityInstanceNumber | uint16 | 关联实体的实例编号。 | 约束:需与Entity Association PDR中的实例一致。 |
containerID | uint16 | 关联实体所属容器的ID。 | 特殊值:0x0000 (顶层容器)。 |
二十二、 OEM Device PDR 概述
用于存储厂商自定义数据,支持设备或终结点级厂商扩展。每个PDR的厂商数据最大为64 KB,且必须包含至少1字节的VendorSpecificData
。其格式包含公共头部和以下特有字段:
字段定义
字段名 | 类型/格式 | 描述 | 特殊值/约束 |
---|---|---|---|
commonHeader | 公共头部(见28.1) | 包含 recordHandle , PDRHeaderVersion (0x01), PDRType (20), recordChangeNumber , dataLength 。 | - |
PLDMTerminusHandle | uint16 | 标识来源终结点句柄(设备PDR库中可置为0x0000 表示未指定)。 | 特殊值:0x0000 (未指定,由Discovery Agent在合并到主库时赋值)。 |
copyPDR | enum8 | 定义是否复制到主PDR库。 | doNotCopy (不复制)copyToPrimaryRepository (复制并覆盖同名PDR)。 |
vendorIANA | uint32 | IANA企业号(标识厂商的唯一编号)。 | 特殊值:0 (未指定厂商)。 |
OEMRecordID | uint16 | 厂商自定义记录ID(同一终结点内vendorIANA 相同的PDR中唯一)。 | **规则:**用于FindPDR 命令的搜索字段。 |
dataLength | uint16 | 厂商数据实际字节数(N = dataLength + 1 )。 | 示例:dataLength=0 → 数据1字节。 |
vendorSpecificData[0..N] | byte[N+1] | 厂商自定义数据(二进制或结构化数据)。 | **约束:**数据长度≤64 KB,且至少1字节。 |
二十三、OEM PDR 概述
用于存储厂商自定义数据,提供轻量化扩展能力,无需关联终结点或复制到主PDR库。其格式包含公共头部和以下特有字段,厂商数据最大为64 KB,且必须包含至少1字节的VendorSpecificData
。
字段定义
字段名 | 类型/格式 | 描述 | 特殊值/约束 |
---|---|---|---|
commonHeader | 公共头部(见28.1) | 包含 recordHandle , PDRHeaderVersion (0x01), PDRType (21), recordChangeNumber , dataLength 。 | - |
vendorIANA | uint32 | IANA企业号(标识厂商的唯一编号)。 | 特殊值:0 (未指定厂商)。 |
OEMRecordID | uint16 | 厂商自定义记录ID(同一PDR库内vendorIANA 相同的PDR中唯一)。 | **规则:**用于FindPDR 命令的搜索字段。 |
dataLength | uint16 | 厂商数据实际字节数(N = dataLength + 1 )。 | 示例:dataLength=0 → 数据1字节。 |
vendorSpecificData[1..N+1] | byte[N+1] | 厂商自定义数据(二进制或结构化数据)。 | **约束:**数据长度≤64 KB,且至少1字节。 |
-
与OEM Device PDR的区别
- OEM PDR:轻量化设计,不关联终结点(无
PLDMTerminusHandle
字段),不支持复制到主库(无copyPDR
字段)。 - OEM Device PDR:扩展版本,支持终结点关联和主库复制(需额外字段)。
- OEM PDR:轻量化设计,不关联终结点(无
-
数据长度计算
dataLength
字段表示数据字节数减1。例如,dataLength=5
表示实际数据为6字节。- 最大限制:
dataLength+1
≤ 65535 → 实际数据最大65536字节(64 KB)。
-
唯一性规则
- 同一PDR库内,
vendorIANA
和OEMRecordID
组合必须唯一。 - 跨库允许重复:不同PDR库(如设备库与主库)可存在相同
vendorIANA
和OEMRecordID
的PDR。
- 同一PDR库内,
-
应用场景
- 存储静态厂商配置(如设备固件签名、兼容性标识)。
- 扩展非终结点相关的自定义元数据(如日志格式定义、私有协议参数)
二十四、 Compact Numeric Sensor PDR 概述
专为无需数据转换的简单数值型传感器设计(如温度、计数器),直接报告规范化整数值。其格式包含公共头部和以下特有字段:
字段定义
字段名 | 类型/格式 | 描述 | 枚举/约束 |
---|---|---|---|
commonHeader | 公共头部(见28.1) | 包含 recordHandle , PDRHeaderVersion (0x01), PDRType (22), recordChangeNumber , dataLength 。 | - |
PLDMTerminusHandle | uint16 | 标识传感器所属终结点(PLDM设备)。 | - |
sensorID | uint16 | 终结点内唯一的传感器ID。 | 引用关系:需与传感器操作命令(如GetSensorReading )一致。 |
entityType | uint16 | 关联实体的类型(如处理器、电源等)。 | 详见规范9.1节实体类型定义。 |
entityInstanceNumber | uint16 | 关联实体的实例编号。 | - |
containerID | uint16 | 关联实体所属容器的ID。 | 特殊值:0x0000 (顶层容器)。 |
sensorNameStringByteLength | uint8 | 传感器名称的UTF-8字符串长度(若>0则名称字段存在)。 | **建议最大长度:**96字节。 |
baseUnit | enum8 | 传感器数值的基本单位(如摄氏度、伏特)。 | 详见规范27.4节(表74)单位定义。 |
unitModifier | sint8 | 基本单位的幂次修正(如3 表示10^3 → 单位变为毫秒、千欧等)。 | 示例:baseUnit=°C + unitModifier=3 → 单位为毫摄氏度(m°C)。 |
occurrenceRate | enum8 | 数据采集频率(单位时间内的采样次数)。 | 枚举值:0 (无频率)3 (每秒)5 (每小时)等。 |
rangeFieldSupport | bitfield8 | 支持的阈值字段(位域表示)。 | 位定义:[0] :warningHigh [1] :warningLow [5] :fatalLow 等。 |
warningHigh | sint32 | 警告上限阈值(超过此值触发警告)。 | **约束:**仅当rangeFieldSupport[0]=1 时有效。 |
warningLow | sint32 | 警告下限阈值(低于或等于此值触发警告)。 | **约束:**仅当rangeFieldSupport[1]=1 时有效。 |
criticalHigh | sint32 | 严重上限阈值(超过或等于此值触发严重告警)。 | **约束:**仅当rangeFieldSupport[2]=1 时有效。 |
criticalLow | sint32 | 严重下限阈值(低于此值触发严重告警)。 | **约束:**仅当rangeFieldSupport[3]=1 时有效。 |
fatalHigh | sint32 | 致命上限阈值(超过此值触发致命告警)。 | **约束:**仅当rangeFieldSupport[4]=1 时有效。 |
fatalLow | sint32 | 致命下限阈值(低于此值触发致命告警)。 | **约束:**仅当rangeFieldSupport[5]=1 时有效。 |
sensorNameString | strUTF-8 | 传感器名称(仅当sensorNameStringByteLength>0 时存在)。 | **用途:**显示名称,非唯一标识符。 |
-
与标准Numeric Sensor PDR的区别
- Compact版:仅支持整数值,无数据转换公式,适用于简单场景。
- 标准版:支持浮点数、线性化公式(如
y = mx + b
),适用于复杂传感器。
二十五、Redfish Resource PDR 概述
用于描述Redfish资源的层次结构、路径及模式信息,支持Redfish设备在PLDM架构中的集成管理。其格式包含公共头部和以下特有字段:
字段定义
字段名 | 类型/格式 | 描述 | 特殊值/约束 |
---|---|---|---|
commonHeader | 公共头部(见28.1) | 包含 recordHandle , PDRHeaderVersion (0x01), PDRType (23), recordChangeNumber , dataLength 。 | - |
ResourceID | uint32 | 主资源唯一标识符(同一设备内所有Redfish Resource PDR的ResourceID必须唯一)。 | 范围:0x00000001 ~ 0xFFFFFFFE 。 |
ResourceFlags | bitfield8 | 资源标志位。 | 位定义:[2] :is_collection (资源是集合)[1] :is_contained_in_collection (父资源是集合)[0] :is_device_root (设备逻辑根)。 |
ContainingResourceID | uint32 | 父资源ID(资源层次结构中的容器)。 | 特殊值:0x00000000 (EXTERNAL,逻辑根)0xFFFFFFFF (DSP0218保留)。 |
ProposedContainingResourceLengthBytes | uint16 | 建议父资源名称的长度(字节,仅当ContainingResourceID=EXTERNAL 时有效)。 | **约束:**若ContainingResourceID≠EXTERNAL ,此字段必须为1。 |
ProposedContainingResourceName | strUTF-8 | 建议父资源的名称(格式为Namespace.EntityType ,如StorageCollection.StorageCollection )。 | **约束:**若ContainingResourceID≠EXTERNAL ,此字段为null 字节。 |
SubURILengthBytes | uint16 | 主资源SubURI路径片段的长度(包含终止符)。 | **示例:**若SubURI为NetworkPorts ,长度=13(含终止符)。 |
SubURI | strUTF-8 | 主资源的路径片段(从父资源路径到当前资源路径的差值)。 | 规则: 不包含首尾斜杠( / ),除非为Settings资源(允许首斜杠)。若 ContainingResourceID=EXTERNAL ,为null 字节。 |
AdditionalResourceIDCount | uint16 | 附加资源实例的数量(共享相同模式数据)。 | 示例:NA=2 表示有两个附加资源实例。 |
AdditionalResourceID[0..NA-1] | uint32 | 附加资源ID(同一设备内唯一)。 | **规则:**所有附加资源ID必须唯一。 |
AdditionalResourceSubURILengthBytes[0..NA-1] | uint16 | 附加资源SubURI路径片段的长度(包含终止符)。 | - |
AdditionalResourceSubURI[0..NA-1] | strUTF-8 | 附加资源的路径片段(规则同主资源SubURI)。 | - |
MajorSchemaVersion | ver32 | 主模式版本(标准PLDM版本格式)。 | 特殊值:0xFFFFFFFF (未版本化模式)。 |
MajorSchemaDictionaryLengthBytes | uint16 | 主模式字典数据长度。 | - |
MajorSchemaDictionarySignature | uint32 | 主模式字典的32位CRC签名(使用IEEE 802.3 CRC-32算法)。 | **算法:**多项式 0xEDB88320 ,LSB优先处理。 |
MajorSchemaNameLength | uint8 | 主模式名称长度(包含终止符)。 | - |
MajorSchemaName | strUTF-8 | 主模式名称(如Storage.v1_0_0 )。 | - |
OEMCount | uint16 | 关联的OEM厂商数量。 | - |
OEMNameLengthBytes[0..NO-1] | uint16 | 各OEM厂商名称的长度(包含终止符)。 | - |
OEMName[0..NO-1] | strUTF-8 | OEM厂商名称(如VendorX )。 | - |
-
路径构造规则
- SubURI:从父资源路径(PP)到当前资源路径(PR)的差值。
- 示例:若PP为
/Chassis/1/NetworkAdapters/1
,PR为/Chassis/1/NetworkAdapters/1/NetworkPorts
,则SubURI=NetworkPorts
。
- 示例:若PP为
- Settings资源:SubURI格式为
/settings
(仅当ContainingResourceID=EXTERNAL
时允许首斜杠)。
- SubURI:从父资源路径(PP)到当前资源路径(PR)的差值。
-
层次结构管理
- 根资源:
is_device_root=1
且ContainingResourceID=EXTERNAL
表示设备逻辑根。 - 集合资源:
is_collection=1
表示此资源包含多个子资源(如ProcessorCollection
)。
- 根资源:
-
签名与版本控制
- CRC-32签名:用于验证主模式字典数据的完整性。
- 模式版本:遵循PLDM版本格式(如
0x01020003
表示版本1.2.3)。
-
OEM扩展支持
- 允许关联多个OEM厂商名称,用于标识资源的自定义扩展来源。
二十六、Redfish Entity Association PDR 概述
用于定义Redfish资源的层次化拓扑关系,描述实体间的父子关联,支持设备组件在PLDM架构中的逻辑管理。其格式包含公共头部和以下特有字段:
字段定义
字段名 | 类型/格式 | 描述 | 特殊值/约束 |
---|---|---|---|
commonHeader | 公共头部(见28.1) | 包含 recordHandle , PDRHeaderVersion (0x01), PDRType (24), recordChangeNumber , dataLength 。 | - |
ContainingResourceID | uint32 | 父资源ID(定义当前容器资源的逻辑归属)。 | 特殊值:0x00000000 (EXTERNAL,表示顶层容器)0xFFFFFFFF (DSP0218保留)。 |
ProposedContainingResourceLengthBytes | uint16 | 建议父资源名称的长度(字节,仅当ContainingResourceID=EXTERNAL 时有效)。 | **约束:**若ContainingResourceID≠EXTERNAL ,此字段必须为1。 |
ProposedContainingResourceName | strUTF-8 | 建议父资源名称(格式为Namespace.EntityType ,如ChassisCollection.ChassisCollection )。 | **约束:**若ContainingResourceID≠EXTERNAL ,此字段为null 字节。 |
ContainedEntityCount | uint8 | 当前容器资源包含的子实体数量(即ContainedEntityResourceID 数组长度)。 | 示例:NC=3 表示包含3个子资源。 |
ContainedEntityResourceID[0..NC-1] | uint32 | 子资源ID(必须是同一设备Redfish Resource PDR中已定义的资源ID)。 | **规则:**所有子资源ID在同一设备内唯一。 |
-
层次结构构建
- 父资源:通过
ContainingResourceID
指向父资源(若为EXTERNAL
表示无父资源)。 - 子资源:通过
ContainedEntityResourceID
列表绑定子资源,形成树状拓扑。
- 父资源:通过
-
资源命名建议
ProposedContainingResourceName
:仅当容器为EXTERNAL
时生效,管理控制器(MC)可决定是否接受此命名建议。- 格式要求:遵循Redfish标准命名规则(如
Namespace.EntityType
)。
-
与Redfish Resource PDR的关系
- Redfish Resource PDR:定义资源本身的模式、路径及属性。
- Redfish Entity Association PDR:定义资源间的父子关系,共同构建完整的Redfish资源树。
-
唯一性规则
- 所有
ContainedEntityResourceID
必须指向同一设备内存在的Redfish Resource PDR中的有效ResourceID
。 - 同一容器资源(
ContainingResourceID
)下,子资源ID不可重复。
- 所有
二十七、Redfish Action PDR 概述
用于描述Redfish资源支持的操作(Action),如“重启”、“关机”等,支持动态调用。其格式包含公共头部和以下特有字段:
字段定义
字段名 | 类型/格式 | 描述 | 特殊值/约束 |
---|---|---|---|
commonHeader | 公共头部(见28.1) | 包含 recordHandle , PDRHeaderVersion (0x01), PDRType (25), recordChangeNumber , dataLength 。 | - |
ActionPDRIndex | uint8 | 当前PDR的零基索引(同一资源关联的多个Action PDR时用于排序)。 | 示例:0 表示首个Action PDR,1 表示第二个。 |
RelatedResourceCount | uint16 | 关联的Redfish资源数量(即RelatedResourceID 数组长度)。 | **规则:**若关联资源过多导致PDR超限,需拆分为多个PDR。 |
RelatedResourceID[0..NR-1] | uint32 | 关联的Redfish Resource PDR的ID(指向定义该Action的资源)。 | 范围:0x00000001 ~ 0xFFFFFFFE (禁止使用0x00000000 和0xFFFFFFFF )。 |
ActionCount | uint8 | 当前PDR定义的操作数量(即ActionName 和ActionPath 数组长度)。 | **规则:**若操作过多导致PDR超限,需拆分为多个PDR(优先按资源拆分)。 |
ActionNameLengthBytes[0..NA-1] | uint8 | 各操作名称的UTF-8字符串长度(包含终止符)。 | **示例:**名称"Reset" 的长度为6(含\0 )。 |
ActionName[0..NA-1] | strUTF-8 | 操作名称(不包含资源类型前缀,如Reset )。 | **规则:**与Redfish规范(DSP0266)定义的Action名称一致。 |
ActionPathLengthBytes[0..NA-1] | uint8 | 各操作路径的UTF-8字符串长度(包含终止符)。 | **示例:**路径"Actions/ComputerSystem.Reset" 的长度为27(含\0 )。 |
ActionPath[0..NA-1] | strUTF-8 | 操作在资源模式中的路径(如Actions/<QualifiedActionName> )。 | **格式:**非OEM操作路径遵循Actions/ResourceType.ActionName (如Actions/ComputerSystem.Reset )。 |
关键说明
-
操作路径规则
- 标准操作:路径格式为
Actions/<ResourceType>.<ActionName>
(如Actions/ComputerSystem.Reset
)。 - OEM操作:路径可自定义,但需符合厂商命名规则(如
Actions/Oem/VendorX.UpdateFirmware
)。
- 标准操作:路径格式为
-
拆分规则
- 按资源拆分:当关联资源过多时,优先按
RelatedResourceID
拆分为多个PDR。 - 按操作拆分:仅当单资源操作过多时,按
ActionCount
拆分。
- 按资源拆分:当关联资源过多时,优先按
-
索引与排序
ActionPDRIndex
用于同一资源关联的多个Action PDR的顺序管理(如资源支持10个操作,需拆分为两个PDR时,索引分别为0
和1
)。
-
与Redfish Resource PDR的关联
RelatedResourceID
必须指向有效的Redfish Resource PDR的ResourceID
。- 同一资源的所有Action PDR需通过
RelatedResourceID
和ActionPDRIndex
组合唯一标识。