每一条消息构造中都包含一个消息头,消息头是消息的开始,消息头包含有关消息和 PD 端口能力的基本信息,是由16位的数据组成。
1. Extended
消息头中15位为1时表明消息为扩展消息,设置为0时为控制消息或数据消息。
2. Number of data obiect(数据对象的数量)
消息头中的14...12位为消息头的数据对象的数量,消息位为0为控制消息,不为0时为数据消息,消息头中的15位扩展位和扩展消息的15位chunked位为1时,该位应当保留设置为0,消息长度有扩展消息头中的14-11位决定。
3. Message id
消息头中的9..11位为消息头的消息id,消息id是MessageIDCounter滚动生成的值,该值用来检测消息重复性。
4. Port power role(端口电源角色)
消息头的bit8如果是SOP时,也就是端口伙伴直接通讯时所代表的电源角色,为1时代表source,为0时代表sink。
5. Cable plug(电源插头)
消息头的bit5表示的是1位电缆插头字段应指示此消息是源自电缆插头还是VPD:
‧0b来自DFP或UFP的消息
‧1b来自电缆插头或VPD的消息
注意仅适用于SOP’和SOP’’。
6. Port Data Role (端口数据角色)
消息头的bit5如果是SOP时,也就是端口伙伴直接通讯时所代表的数据角色,为1时代表DFP,为0时代表UFP。
7. Specification Revision (规格修订)
消息头的bit5如果是SOP'/SOP''时,也就是电缆插头通讯时所代表的是规格修订。
• 00b –Revision 1.0
• 01b –Revision 2.0
• 10b – Revision 3.0
• 11b – Reserved, Shall Not be used
我理解的是一个端口的Revision为更低级时,端口对端口和端口对插头的Revision即为更低级。
8. Message Type(消息类型)
消息头中的0...4位为5位消息类型字段应指示正在发送的消息的类型。为了完全解码消息类型,首先检查数据对象数量字段以确定消息是控制消息还是数据消息。那么具体的消息类型以及解码在后面的文章里面会介绍。