The following Packet Templates can be used in Basic or High Level commands as data containers. All of these messages are inherited from the PD_Packet packet template except those that are used as containers for Data Objects.
PD_MessageHeader
Revision 2.0
Packet PD_MessageHeader: PD_Packet
{
MessageType: 4 = 0
Reserved1: 1 = 0
PortDataRole_Reserved2: 1 = 0
SpecificationRevision: 2 = 1
PortPowerRole_CablePlug: 1 = 0
MessageId: 3 = 0
NumberOfDataObjects: 3 = 0
Reserved2: 1 = 0
}
Revision 3.0
Packet PD_MessageHeader: PD_Packet
{
MessageType: 5 = 0
PortDataRole_Reserved2: 1 = 0
SpecificationRevision: 2 = 2
PortPowerRole_CablePlug: 1 = 0
MessageId: 3 = 0
NumberOfDataObjects: 3 = 0
Extended: 1 = 0
}
PD_ControlMessage
Packet PD_ControlMessage: PD_Packet
{
: PD_MessageHeader
}
PD_GoodCrcMessage
Packet PD_GoodCrcMessage: PD_ControlMessage
{
MessageType = PD_MESSAGE_TYPE_GOODCRC
}
PD_GotoMinMessage
Packet PD_GotoMinMessage: PD_ControlMessage
{
MessageType = PD_MESSAGE_TYPE_GOTO_MIN
}
PD_AcceptMessage
Packet PD_AcceptMessage: PD_ControlMessage
{
MessageType = PD_MESSAGE_TYPE_ACCEPT
}
PD_RejectMessage
Packet PD_RejectMessage: PD_ControlMessage
{
MessageType = PD_MESSAGE_TYPE_REJECT
}
PD_PingMessage
Packet PD_PingMessage: PD_ControlMessage
{
MessageType = PD_MESSAGE_TYPE_PING
}
PD_PsRdyMessage
Packet PD_PsRdyMessage: PD_ContrlMessage
{
MessageType = PD_MESSAGE_TYPE_PS_RDY
}
PD_GetSourceCapMessage
Packet PD_GetSourceCapMessage: PD_ControlMessage
{
MessageType = PD_MESSAGE_TYPE_GET_SOURCE_CAP
}
PD_GetSinkCapMessage
Packet PD_GetSinkCapMessage: PD_ControlMessage
{
MessageType = PD_MESSAGE_TYPE_GET_SINK_CAP
}
PD_DataRoleSwapMessage
Packet PD_DataRoleSwapMessage: PD_ControlMessage
{
MessageType = PD_MESSAGE_TYPE_DR_SWAP
}
PD_PowerRoleSwapMessage
Packet PD_PowerRoleSwapMessage: PD_ControlMessage
{
MessageType = PD_MESSAGE_TYPE_PR_SWAP
}
PD_VConnSwapMessage
Packet PD_VconnSwapMessage: PD_ControlMessage
{
MessageType = PD_MESSAGE_TYPE_VCONN_SWAP
}
PD_WaitMessage
Packet PD_WaitMessage: PD_ControlMessage
{
MessageType = PD_MESSAGE_TYPE_WAIT
}
PD_SoftResetMessage
Packet PD_SoftResetMessage: PD_ControlMessage
{
MessageType = PD_MESSAGE_TYPE_SOFT_RESET
}
PD_DataResetMessage
Packet PD_DataResetMessage: PD_ControlMessage
{
MessageType = PD_MESSAGE_TYPE_DATA_RESET
}
PD_DataResetCompleteMessage
Packet PD_DataResetCompleteMessage: PD_ControlMessage
{
MessageType = PD_MESSAGE_TYPE_DATA_RESET_COMPLETE
}
PD_NotSupportedMsg
Packet PD_NotSupportedMsg: PD_ControlMessage
{
MessageType = PD_MESSAGE_TYPE_NOT_SUPPORTED
}
PD_GetSourceCapExtendedMsg
Packet PD_GetSourceCapExtendedMsg: PD_ControlMessage
{
MessageType = PD_MESSAGE_TYPE_GET_SRC_CAP_EXT
}
PD_GetStatusMsg
Packet PD_GetStatusMsg: PD_ControlMessage
{
MessageType = PD_MESSAGE_TYPE_GET_STATUS
}
PD_FRSwapMsg
Packet PD_FRSwapMsg: PD_ControlMessage
{
MessageType = PD_MESSAGE_TYPE_FR_SWAP
}
PD_GetPPSStatusMsg
Packet PD_GetPPSStatusMsg: PD_ControlMessage
{
MessageType = PD_MESSAGE_TYPE_GET_PPS_STATUS
}
PD_GetCountryCodesMsg
Packet PD_GetCountryCodesMsg: PD_ControlMessage
{
MessageType = PD_MESSAGE_TYPE_GET_COUNTRY_CODES
}
PD_GetSinkCapExtendedMsg
Packet PD_GetSinkCapExtendedMsg: PD_ControlMessage
{
MessageType = PD_MESSAGE_TYPE_GET_SNK_CAP_EXT
}
PD_SourceCapabilitiesMessage
Packet PD_SourceCapabilitiesMessage: PD_ControlMessage
{
MessageType = 1
PortPowerRole_CablePlug = 1
NumberOfDataObjects = 0
SourceCapabilitiesData : *
* This field can contain one or more (up-to 7 according to the PD Spec) PDOs.
Available PDO templates are:
PD_PowerDataObjectFixedSupply_Source
PD_PDOFixedSupplyNotVSafe5V_Source
PD_PowerDataObjectVariableSupply_Source
PD_PowerDataObjectBatterySupply_Source
PD_PowerDataObjectPPS_Source
PD_SPRPowerDataObjectAVS
}
PD_PowerDataObjectFixedSupply_Source
Packet PD_PowerDataObjectFixedSupply_Source: PD_PowerDataObject
{
MaxCurrent_10mAUnits : 10 = 100
Voltage_50mVUnits : 10 = 100
PeakCurrent : 2 = 0
Reserved : 1 = 0
EPRModeCapable : 1 = 0
UnchunkedExtMsgSupported : 1 = 1
DualRoleData : 1 = 0
UsbCommunicationsCapable : 1 = 0
UnconstrainedPower : 1 = 1
UsbSuspendSupported : 1 = 0
DualRolePower : 1 = 0
PowerDataType : 2 = 0
}
PD_PDOFixedSupplyNotVSafe5V_Source
Packet PD_PDOFixedSupplyNotVSafe5V_Source: PD_PowerDataObject
{
MaxCurrent_10mAUnits : 10 = 0
Voltage_50mVUnits : 10 = 0
PeakCurrent : 2 = 0
Reserved : 8 = 0
PowerDataType : 2 = 0
}
PD_PowerDataObjectVariableSupply_Source
Packet PD_PowerDataObjectVariableSupply_Source: PD_PowerDataObject
{
MaxCurrent_10mAUnits : 10 = 0
MinVoltage_50mVUnits : 10 = 0
MaxVoltage_50mVUnits : 10 = 0
PowerDataType : 2 = 2
}
PD_PowerDataObjectBatterySupply_Source
Packet PD_PowerDataObjectBatterySupply_Source: PD_PowerDataObject
{
MaxAllowablePower_250mWUnits : 10 = 0
MinVoltage_50mVUnits : 10 = 0
MaxVoltage_50mVUnits : 10 = 0
PowerDataType : 2 = 1
}
PD_PowerDataObjectPPS_Source
Packet PD_PowerDataObjectPPS_Source: PD_PowerDataObject
{
MaxCurrent_50mAUnits : 7 = 0
PPS_Rsvd_1 : 1 = 0
MinVoltage_100mVUnits : 8 = 0
PPS_Rsvd_2 : 1 = 0
MaxVoltage_100mVUnits : 8 = 0
PPS_Rsvd_3 : 2 = 0
PPSPowerLimited : 1 = 0
APDOType : 2 = 0
PowerDataType : 2 = 3
}
PD_SPRPowerDataObjectAVS
Packet PD_SPRPowerDataObjectAVS: PD_PowerDataObject
{
MaxCurrent9To15VRange_10mAUnits : 10 = 0
MaxCurrent15To20VRange_10mAUnits : 10 = 0
SPRAVS_Rsvd_1 : 6 = 0
PeakCurrent : 2 = 0
APDOType : 2 = 2
PowerDataType : 2 = 3
}
PD_SinkCapabilitiesMessage
Packet PD_SinkCapabilitiesMessage: PD_ControlMessage
{
MessageType = 4
PortPowerRole_CablePlug = 0
NumberOfDataObjects = 1
SinkCapabilitiesData : *
* This field can contain one or more (up to 7, according to the PD Spec) PDOs.
Available PDO templates are:
PD_PowerDataObjectFixedSupply_Sink
PD_PowerDataObjectVariableSupply_Sink
PD_PowerDataObjectBatterySupply_Sink
PD_PowerDataObjectPPS_Sink
PD_SPRPowerDataObjectAVS
}
PD_PowerDataObjectFixedSupply_Sink
Packet PD_PowerDataObjectFixedSupply_Sink: PD_PowerDataObject
{
OperationalCurrent_10mAUnits : 10 = 100
Voltage_50mVUnits : 10 = 100
Reserved : 3 = 0
FRSwapTypeCCurrent : 2 = 0
DualRoleData : 1 = 0
UsbCommunicationsCapable : 1 = 0
UnconstrainedPower : 1 = 1
HigherCapability : 1 = 0
DualRolePower : 1 = 0
PowerDataType : 2 = 0
}
PD_PDOFixedSupplyNotVSafe5V_Sink
Packet PD_ PDOFixedSupplyNotVSafe5V_Sink: PD_PowerDataObject
{
OperationalCurrent_10mAUnits : 10 = 100
Voltage_50mVUnits : 10 = 100
Reserved : 10 = 0
PowerDataType : 2 = 0
}
PD_PowerDataObjectVariableSupply_Sink
Packet PD_PowerDataObjectVariableSupply_Sink: PD_PowerDataObject
{
OperationalCurrent_10mAUnits : 10 = 0
MinVoltage_50mVUnits : 10 = 0
MaxVoltage_50mVUnits : 10 = 0
PowerDataType : 2 = 2
}
PD_PowerDataObjectBatterySupply_Sink
Packet PD_PowerDataObjectBatterySupply_Sink: PD_PowerDataObject
{
OperationalPower_250mWUnits : 10 = 0
MinVoltage_50mVUnits : 10 = 0
MaxVoltage_50mVUnits : 10 = 0
PowerDataType : 2 = 1
}
PD_PowerDataObjectPPS_Sink
Packet PD_PowerDataObjectPPS_Sink: PD_PowerDataObject
{
MaxCurrent_50mAUnits : 7 = 0
PPS_Rsvd_1 : 1 = 0
MinVoltage_100mVUnits : 8 = 0
PPS_Rsvd_2 : 1 = 0
MaxVoltage_100mVUnits : 8 = 0
PPS_Rsvd_3 : 3 = 0
APDOType : 2 = 0
PowerDataType : 2 = 3
}
PD_SPRPowerDataObjectAVS
Refer to PD_SPRPowerDataObjectAVS.
PD_RequestPacket
Packet PD_RequestPacket: PD_MessageHeader
{
MessageType = 2
NumberOfDataObjects = 1
Data : 32 = 0x00
This field can contain only one RDO packet variables.
Available RDO templates are:
PD_RequestDataObject_Fixed_Variable_NoGiveBack
PD_RequestDataObject_Fixed_Variable_GiveBack
PD_RequestDataObject_Battery_NoGiveBack
PD_RequestDataObject_Battery_GiveBack
PD_ProgrammableRDO
}
PD_RequestDataObjectCommon
Packet PD_RequestDataObjectCommon
{
Rsvd1 : 2 = 0
EPRModeCapable : 1 = 0
UnchunkedExtMsgSupported : 1 = 1
NoUsbSuspend : 1 = 0
UsbCommunicationsCapable : 1 = 0
CapabilityMismatch : 1 = 0
GiveBackFlag : 1 = 0
ObjectPosition : 4 = 1
}
PD_RequestDataObject_Fixed_Variable_NoGiveBack
Packet PD_RequestDataObject_Fixed_Variable_NoGiveBack: PD_RequestData
{
MaxOperatingCurrent_10mAUnits : 10 = 0
OperatingCurrent_10mAUnits : 10 = 0
: PD_RequestDataObjectCommon
}
PD_RequestDataObject_Fixed_Variable_GiveBack
Packet PD_RequestDataObject_Fixed_Variable_GiveBack: PD_RequestData
{
MinOperatingCurrent_10mAUnits : 10 = 0
OperatingCurrent_10mAUnits : 10 = 0
: PD_RequestDataObjectCommon
GiveBackFlag = 1
}
PD_RequestDataObject_Battery_NoGiveBack
Packet PD_RequestDataObject_Battery_NoGiveBack: PD_RequestData
{
MaxOperatingPower_250mWUnits : 10 = 0
OperatingPower_250mWUnits : 10 = 0
: PD_RequestDataObjectCommon
}
PD_RequestDataObject_Battery_GiveBack
Packet PD_RequestDataObject_Battery_GiveBack: PD_RequestData
{
MinOperatingPower_250mWUnits : 10 = 0
OperatingPower_250mWUnits : 10 = 0
: PD_RequestDataObjectCommon
GiveBackFlag = 1
}
PD_ProgrammableRDO
Packet PD_ProgrammableRDO: PD_RequestData
{
OperatingCurrent_50mAUnits : 7 = 0
PRDO_Rsvd_1 : 2 = 0
OutputVoltage_20mVUnits : 11 = 0
: PD_RequestDataObjectCommon
}
PD_BISTMessage
Packet PD_BISTMessage: PD_ControlMessage
{
MessageType = 3
NumberOfDataObjects = 1
: PD_BISTDataObject
TestData *
}
PD_BISTDataObject
Packet PD_BISTDataObject
{
Reserved : 28 = 0x00
BISTRequestType : 4 = BIST_REQUEST_CARRIER_MODE
}
PD_BISTCarrierModeMessage
Packet PD_BISTCarrierModeMessage: PD_BISTMessage
{
}
PD_BISTTestDataMessage
Packet PD_BISTTestDataMessage: PD_BISTMessage
{
NumberOfDataObjects = 7
BISTRequestType = BIST_REQUEST_TEST_DATA
TestData =
{ AA AA AA AA
AA AA AA AA
AA AA AA AA
AA AA AA AA
AA AA AA AA
AA AA AA AA }
Maximum 192 bytes
Should be a multiple of 32b
}
PD_BISTSharedCapacityTestModeEntry
Packet PD_BISTSharedTestModeEntry: PD_BISTMessage
{
BISTRequestType = BIST_REQUEST_SHARED_TEST_MODE_ENTRY
}
PD_BISTSharedCapacityTestModeExit
Packet PD_BISTSharedTestModeExit: PD_BISTMessage
{
BISTRequestType = BIST_REQUEST_SHARED_TEST_MODE_EXIT
}
PD_BatteryStatusMsg
Packet PD_BatteryStatusMsg: PD_ControlMessage
{
MessageType = 5
NumberOfDataObjects = 1
: PD_BatteryStatusDataObject
}
PD_BatteryStatusDataObject
Packet PD_BatteryStatusDataObject
{
Reserved_1 : 8 = 0x00
InvalidBatteryReference : 1 = 0x00
BatteryIsPresent : 1 = 0x00
BatteryChargingStatus : 2 = 0x00
Reserved_2 : 4 = 0x00
BatteryPC_100mWHUnits : 16 = 0xFFFF
}
PD_AlertMsg
Packet PD_AlertMsg: PD_ControlMessage
{
MessageType = 6
NumberOfDataObjects = 1
: PD_AlertDataObject
}
PD_AlertDataObject
Packet PD_AlertDataObject
{
ExtendedAlertEventType : 4 = 0x00
Reserved_1 : 12 = 0x00
HotSwappableBatteries : 4 = 0x00
FixedBatteries : 4 = 0x00
Reserved_2 : 1 = 0x00
BatteryStatusChange : 1 = 0x00
OverCurProtection : 1 = 0x00
OverTempProtection : 1 = 0x00
OperatingConditionChange : 1 = 0x00
SourceInputChange : 1 = 0x00
OverVoltageProtection : 1 = 0x00
ExtendedAlertEvent : 1 = 0x00
}
PD_GetCountryInfoMsg
Packet PD_GetCountryInfoMsg: PD_ControlMessage
{
MessageType = 7
NumberOfDataObjects = 1
: PD_GetCountryInfoDO
}
PD_GetCountryInfoDO
Packet PD_GetCountryInfoDO
{
GetCountryInfoDO_Rsvd_1 : 16 = 0x00
Alpha2CountryCode2ndChar : 8 = 0x00
Alpha2CountryCode1stChar : 8 = 0x00
}
PD_EnterUSB_Message
Packet PD_EnterUSB_Message: PD_ControlMessage
{
MessageType = 8
NumberOfDataObjects = 1
: PD_EnterUSBDataObject
}
PD_EnterUSBDataObject
Packet PD_EnterUSBDataObject
{
Reserved_1 : 13 = 0x00
HostPresent : 1 = PD_FALSE
TBTSupport : 1 = PD_FALSE
DPSupport : 1 = PD_FALSE
PCIeSupport : 1 = PD_FALSE
CableCurrent : 2 = PD_CABLECURRENT_VBUS_NOT_SUPP
CableType : 2 = PD_CABLETYPE_PASSIVE
CableSpeed : 3 = PD_CABLESPEED_USB2_NO_SSP
Reserved_2 : 1 = 0x00
USB3DRD : 1 = PD_FALSE
USB4DRD : 1 = PD_FALSE
Reserved_3 : 1 = 0x00
USBMode : 3 = PD_USBMODE_USB2
Reserved_4 : 1 = 0x00
}
PD_VDM_Unstructured_Header
Packet PD_VDM_Unstructured_Header: PD_ControlMessage
{
MessageType = 15
NumberOfDataObjects = 0x01
VDMCustom : 15 = 0x00
VDMType : 1 = PD_VDM_TYPE_UNSTRUCTURED_VDM
VDMSVID : 16 = 0x00
}
The following example demonstrates how to send an Unstructured VDM containing two VDOs:
# Define VDO1 fields
packet VDO1Type
{
Field1: 2 = 0x03
Field2: 10 = 0xfff
Field3: 20 = 0xffffff
}
local $vdo1_var = VDO1Type
# Create an unstructured VDM packet with two VDOs
local $unstructured_vdm = PD_VDM_Unstructured_Header
{
# Number of VDOs + 1
NumberOfDataObjects = 0x03
# Vendor SVID
VDMSVID = 0xABCD
# Optional Packet variable
VDO1: 32 = $vdo1_var
# Optional value
VDO2: 32 = 0x11111111
}
# Send VDM packet with default settings
local $SendSettings = PD_SendPacketSettings
call PD_SendPacket($unstructured_vdm, $SendSettings)
# To receive probable response packet
local $ReceiveSettings = PD_ReceivePacketSettings
call PD_ReceivePacket($ReceiveSettings)
PD_VDM_Structured_Header
Packet PD_VDM_Structured_Header: PD_ControlMessage
{
MessageType = 15
NumberOfDataObjects = 0x01
VDMCommand : 5 = PD_VDM_COMMAND_RESERVED_0
VDMReserved1 : 1 = 0x00
VDMCommandType : 2 = PD_VDM_COMMAND_TYPE_REQ
VDMObjectPosition : 3 = 0x00
VDMReserved2 : 2 = 0x00
VDMStructuredVdmVersion : 2 = PD_VDM_STRUCTURED_VERSION_2
VDMType : 1 = PD_VDM_TYPE_STRUCTURED_VDM
VDMSVID : 16 = 0x00
}
PD_VDM_Discover_Identity_Message
Packet PD_VDM_Discover_Identity_Message: PD_VDM_Structured_Header
{
VDMCommand = PD_VDM_COMMAND_DISCOVER_IDENTITY
VDMSVID = PD_VDM_SID
}
PD_VDM_Discover_Identity_Response
Packet PD_VDM_Discover_Identity_Response: PD_VDM_Discover_Identity_Message
{
VDMCommandType = PD_VDM_COMMAND_TYPE_RESPONDER_ACK
VDOs : *
#This field can contain up-to 6 VDOs, but should contain at least 3 VDOs (according to PD Spec). Available VDO themplates are:
PD_VDM_Discover_Identity_ID_Header_VDO,
PD_VDM_Discover_Identity_Cert_Stat_VDO,
PD_VDM_Discover_Identity_Product_VDO,
PD_VDM_Discover_Identity_Cable_VDO (Rev 2.0 only),
PD_DiscoverId_DFP_VDO (Rev 3.0 only),
PD_DiscoverId_UFP_1_VDO (Rev 3.0 only),
PD_DiscoverId_UFP_2_VDO (Rev 3.0 only),
PD_DiscoverIdPassiveCableVdo (Rev 3.0 only),
PD_DiscoverIdActiveCableVdo_1 (Rev 3.0 only),
PD_DiscoverIdActiveCableVdo_2 (Rev 3.0 only),
PD_VDM_Discover_Identity_Alternate_Mode_Adapter_VDO,
PD_DiscoverIdVConnPoweredDeviceVdo (Rev 3.0 only)
}
PD_VDM_Discover_Identity_ID_Header_VDO
Revision 2.0
Packet PD_VDM_Discover_Identity_ID_Header_VDO: PD_DiscoverIdentity_VDO
{
IDHeaderVDO_USBVendorID : 16 = 0x05FF #LeCroy ID
IDHeaderVDO_Reserved : 10 = 0x00
IDHeaderVDO_ModalOperationSupported : 1 = 0x00
IDHeaderVDO_ProductType : 3 = PD_VDM_ID_HEADER_VDO_PRODUCT_TYPE_UNDEFINED
IDHeaderVDO_DataCapableAsUSBDevice : 1 = 0x00
IDHeaderVDO_DataCapableAsUSBHost : 1 = 0x00
}
Revision 3.0
Packet PD_VDM_Discover_Identity_ID_Header_VDO: PD_DiscoverIdentity_VDO
{
USBVendorID : 16 = 0x05FF #LeCroy ID
Reserved : 5 = 0x00
ConnectorType : 2 = PD_CABLE_CONNECTOR_TYPE_TYPEC_RECEPTACLES
ProductType_DFP : 3 = PD_PRODUCT_TYPE_UNDEFINED
ModalOperationSupported : 1 = 0x00
ProductType_UFP_Cable : 3 = PD_PRODUCT_TYPE_UNDEFINED
DataCapableAsUSBDevice : 1 = 0x00
DataCapableAsUSBHost : 1 = 0x00
}
PD_VDM_Discover_Identity_Cert_Stat_VDO
Packet PD_VDM_Discover_Identity_Cert_Stat_VDO: PD_DiscoverIdentity_VDO
{
CertStatVDO_XID : 32 = 0x00
}
PD_VDM_Discover_Identity_Product_VDO
Packet PD_VDM_Discover_Identity_Product_VDO: PD_DiscoverIdentity_VDO
{
ProductVDO_BCDDevice : 16 = 0x00
ProductVDO_USBProductId : 16 = 0x00
}
PD_VDM_Discover_Identity_Cable_VDO
Only applicable to Power Delivery Rev 2.
Packet PD_VDM_Discover_Identity_Cable_VDO: PD_DiscoverIdentity_VDO
{
CableVDO_USBSuperSpeedSignalingSupport : 3 = PD_CABLE_USB31_GEN1_SIGNALING
CableVDO_SOPDPrimeControllerPresent : 1 = 0x00
CableVDO_VBusThroughCable : 1 = 0x00
CableVDO_VBusCurrentHandlingCapability : 2 = PD_CABLE_CUR_HANDLING_CAP_3A
CableVDO_SSRX2DirectionalitySupport : 1 = 0x00
CableVDO_SSRX1DirectionalitySupport : 1 = 0x00
CableVDO_SSTX2DirectionalitySupport : 1 = 0x00
CableVDO_SSTX1DirectionalitySupport : 1 = 0x00
CableVDO_CableTerminationType : 2 = 0x00
CableVDO_CableLatency : 4 = PD_CABLE_LATENCY_MAX_10ns
CableVDO_Rsvd_2 : 1 = 0x00
CableVDO_TypeCPlugToTypeA_B_C_Captive : 2 = PD_CABLE_TYPEC_TO_TYPEC
CableVDO_Reserved : 4 = 0x00
CableVDO_FirmwareVersion : 4 = 0x00
CableVDO_HardwareVersion : 4 = 0x00
}
PD_VDM_DiscoverIdentity_UFP1_VDO
Packet PD_VDM_DiscoverIdentity_UFP1_VDO: PD_DiscoverIdentity_VDO
{
USBHighestSpeed : 3 = PD_USB_HIGHEST_SPEED_USB20_ONLY
AlternateModes : 3 = PD_SUPP_ALTERNATE_MODE
Reserved_1 : 18 = 0x00
DeviceCapability : 4 = PD_DEV_CAP_USB20
Reserved_2 : 1 = 0x00
UFPVDOVersion : 3 = PD_UFP_VDO_VERSION_1_0
}
PD_VDM_DiscoverIdentity_UFP2_VDO
Packet PD_VDM_DiscoverIdentity_UFP2_VDO: PD_DiscoverIdentity_VDO
{
USB3MaxPower : 7 = 0x00
USB3MinPower : 7 = 0x00
Reserved_1 : 2 = 0x00
USB4MaxPower : 7 = 0x00
USB4MinPower : 7 = 0x00
Reserved_2 : 2 = 0x00
}
PD_VDM_DiscoverIdentity_DFP_VDO
Packet PD_VDM_DiscoverIdentity_DFP_VDO: PD_DiscoverIdentity_VDO
{
PortNumber : 5 = 0x00
Reserved_1 : 19 = 0x00
HostCapability : 3 = PD_HOST_CAP_USB20
Reserved_2 : 2 = 0x00
DFPVDOVersion : 3 = PD_DFP_VDO_VERSION_1_0
}
PD_DiscoverIdPassiveCableVdo
Packet PD_DiscoverIdPassiveCableVdo: PD_VDM_Discover_Identity_Cable_VDO
{
USBHighestSpeed : 3 = PD_USB_HIGHEST_SPEED_USB32_GEN1
Reserved_1 : 2 = 0x00
VBusCurHandlingCap : 2 = PD_CABLE_CUR_HANDLING_CAP_3A
Reserved_2 : 2 = 0x00
MaxVBusVoltage : 2 = PD_CABLE_MAX_VBUS_20V
CableTerminationType : 2 = PD_CABLE_VCONN_NOT_REQUIRED
CableLatency : 4 = PD_CABLE_LATENCY_MAX_10ns
EPRModeCapable : 1 = 0x00
TypeCtoTypeC_Captive : 2 = PD_CABLE_TYPEC_TO_TYPEC
Reserved_3 : 1 = 0x00
Version : 3 = PD_CABLE_PASSIVE_VDO_VERSION_1
FirmwareVersion : 4 = 0x00
HardwareVersion : 4 = 0x00
}
PD_DiscoverIdActiveCableVdo_1
Pcket PD_DiscoverIdActiveCableVdo_1: PD_VDM_Discover_Identity_Cable_VDO
{
USBHighestSpeed : 3 = PD_USB_HIGHEST_SPEED_USB32_GEN1
SOPDoublePrimeController : 1 = 0x00
VBusThrough : 1 = 0x01
VBusCurHandlingCap : 2 = PD_CABLE_CUR_HANDLING_CAP_3A
SBUType : 1 = PD_CABLE_PASSIVE_SBU
SBUSupported : 1 = PD_FALSE
MaxVBusVoltage : 2 = PD_CABLE_MAX_VBUS_20V
CableTerminationType : 2 = PD_CABLE_TERM_ACTIVE_ACTIVE
CableLatency : 4 = PD_CABLE_LATENCY_MAX_10ns
EPRModeCapable : 1 = 0x00
ConnectorType : 2 = PD_CABLE_TYPEC_TO_TYPEC
Reserved_1 : 1 = 0x00
Version : 3 = PD_CABLE_ACTIVE_VDO_VERSION_1_3
FirmwareVersion : 4 = 0x00
HardwareVersion : 4 = 0x00
}
PD_DiscoverIdActiveCableVdo_2
Packet PD_DiscoverIdActiveCableVdo_2: PD_VDM_Discover_Identity_Cable_VDO
{
USBGen : 1 = PD_CABLE_ACTIVE_USB_GEN1
USB4AsymModeSupported : 1 = PD_FALSE
OpticallyIsolatedActCbl : 1 = PD_FALSE
USBLanesSupported : 1 = PD_CABLE_ACTIVE_SS_ONE_LANE
USB32Supported : 1 = PD_FALSE
USB2Supported : 1 = PD_FALSE
USB2HubHopsConsumed : 2 = 0x00
USB4Supported : 1 = PD_FALSE
ActiveElement : 1 = PD_CABLE_ACTIVE_REDRIVER
PhysicalConnection : 1 = PD_CABLE_ACTIVE_PHYSICAL_CONN_COPPER
U3ToU0TransMode : 1 = PD_CABLE_ACTIVE_U3_TO_U0_DIRECT
U3CLdPower : 3 = PD_CABLE_ACTIVE_U3POWER_GR_THAN_10mW
Reserved_3 : 1 = 0x00
ShutdownTemperature : 8 = 0x00
MaxOperatingTemperature : 8 = 0x00
}
PD_VDM_Discover_Identity_Alternate_Mode_Adapter_VDO
Revision 2.0
Packet PD_VDM_Discover_Identity_Alternate_Mode_Adapter_VDO: PD_DiscoverIdentity_VDO
{
AMDVDO_USBSuperSpeedSignalingSupport : 3 = 0x01
AMDVDO_VBusRequired : 1 = 0x00
AMDVDO_VConnRequired : 1 = 0x00
AMDVDO_VConnPower : 3 = 0x00
AMDVDO_SSRX2DirectionalitySupport : 1 = 0x00
AMDVDO_SSRX1DirectionalitySupport : 1 = 0x00
AMDVDO_SSTX2DirectionalitySupport : 1 = 0x00
AMDVDO_SSTX1DirectionalitySupport : 1 = 0x00
AMDVDO_Reserved : 12 = 0x00
AMDVDO_FirmwareVersion : 4 = 0x00
AMDVDO_HardwareVersion : 4 = 0x00
}
Revision 3.0
Packet PD_VDM_Discover_Identity_Alternate_Mode_Adapter_VDO: PD_DiscoverIdentity_VDO
{
USBHighestSpeed : 3 = PD_AMA_USB_HIGHEST_SPEED_USB20_ONLY
VBusRequired : 1 = 0x00
VConnRequired : 1 = 0x00
VConnPower : 3 = PD_AMA_VCONN_POWER_1
Reserved : 13 = 0x00
Version : 3 = PD_AMA_VDO_VERSION_1
FirmwareVersion : 4 = 0x00
HardwareVersion : 4 = 0x00
}
PD_DiscoverIdVConnPoweredDeviceVdo
Packet PD_DiscoverIdVConnPoweredDeviceVdo: PD_DiscoverIdentity_VDO
{
ChargeThroughSupport : 1 = 0x00
GroundImpedance_1mOUnits : 6 = 0x00
VBUSImpedance_2mOUnits : 6 = 0x00
VPD_Rsvd_1 : 1 = 0x00
ChargeThroughCurrentSupport : 1 = PD_VPD_CHARGE_THROUGH_CURRENT_SUPP_3A
MaxVbusVoltage : 2 = PD_VPD_MAX_VBUS_20V
VPD_Rsvd_2 : 4 = 0x00
VDOVersion : 3 = PD_VPD_VDO_VERSION_1
FirmwareVersion : 4 = 0x00
HWVersion : 4 = 0x00
}
PD_VDM_Discover_Svids_Message
Packet PD_VDM_Discover_Svids_Message: PD_VDM_Structured_Header
{
VDMCommand = PD_VDM_COMMAND_DISCOVER_SVIDS
VDMSVID = PD_VDM_SID
}
PD_VDM_Discover_Svids_Response
Discover_SVIDs_Responder_VDO
Packet Discover_SVIDs_Responder_VDO: PD_Generic_VDO
{
SVID1 : 16 = 0x00
SVID2 : 16 = 0x00
}
PD_VDM_Discover_Modes_Message
Packet PD_VDM_Discover_Modes_Message: PD_VDM_Structured_Header
{
VDMCommand = PD_VDM_COMMAND_DISCOVER_MODES
VDMSVID = PD_VDM_SID
}
PD_VDM_Discover_Modes_Response
Packet PD_VDM_Discover_Modes_Response: PD_VDM_Discover_Modes_Message
{
VDMCommandType = PD_VDM_COMMAND_TYPE_RESPONDER_ACK
DiscoverModes : *
*This field should contain one or more VDOs(modes).
Each Mode can be a PD_VDO packet variable that has 32bits data length
}
PD_VDO
Packet PD_VDO: PD_Generic_VDO
{
Data : 32
}
PD_VDM_DisplayPort_DiscoverMode_Vdo
Packet PD_VDM_DisplayPort_DiscoverMode_Vdo: PD_Generic_VDO
{
PortCapability : 2 = PD_DISPLAYPORT_UFPD_CAPABLE
Signaling : 4 = 0x01
ReceptacleIndication : 1 = 0x00
Usb2SignalingNotUsed : 1 = 0x01
DFPDPinAssignmentSupported : 8 = 0x00
UFPDPinAssignmentSupported : 8 = 0x00
Reserved_DMV : 6 = 0x00
DPAMVersion : 2 = 0x00
}
PD_VDM_Enter_Mode_Message
Packet PD_VDM_Enter_Mode_Message: PD_VDM_Structured_Header
{
VDMCommand = PD_VDM_COMMAND_ENTER_MODE
VDMSVID = PD_VDM_SID
VDO : *
* This field may contain one VDO.
* The VDO can be a PD_VDO packet variable with 32bits data length
}
PD_VDM_Enter_Mode_Response
Packet PD_VDM_Enter_Mode_Response: PD_VDM_Structured_Header
{
VDMCommand = PD_VDM_COMMAND_ENTER_MODE
VDMSVID = PD_VDM_SID
VDMCommandType = PD_VDM_COMMAND_TYPE_RESPONDER_ACK
}
PD_VDM_Exit_Mode_Message
Packet PD_VDM_Exit_Mode_Message: PD_VDM_Structured_Header
{
VDMCommand = PD_VDM_COMMAND_EXIT_MODE
VDMSVID = PD_VDM_SID
}
PD_VDM_Exit_Mode_Response
Packet PD_VDM_Exit_Mode_Response: PD_VDM_Exit_Mode_Message
{
VDMCommandType = PD_VDM_COMMAND_TYPE_RESPONDER_ACK
}
PD_VDM_Attention_Message
Packet PD_VDM_Attention_Message: PD_VDM_Structured_Header
{
VDMCommand = PD_VDM_COMMAND_ATTENTION
VDMSVID = PD_VDM_SID
VDO : *
* This field may contain one VDO.
*The VDO can be a PD_VDO packet variable with 32bits data length
}
PD_VDM_DisplayPort_UpdateStatus_Message
Packet PD_VDM_DisplayPort_UpdateStatus_Message: PD_VDM_Structured_Header
{
NumberOfDataObjects = 0x02
VDMCommand = PD_VDM_COMMAND_DISPLAYPORT_STATUS_UPDATE
VDMSVID = PD_DISPLAY_PORT_SVID
StatusVdo : 32 = 0x00 *
* Contains only one VDO of PD_VDM_DisplayPort_Status_VDO type
}
PD_VDM_DisplayPort_Status_VDO
Packet PD_VDM_DisplayPort_Status_VDO: PD_Generic_VDO
{
DFPD_UFPD_Connected : 2 = PD_DISPLAYPORT_DISCONNECTED
PowerLow : 1 = 0x00
AdaptorEnabled : 1 = 0x00
MultiFunctionPreferred : 1 = 0x00
UsbConfigurationRequest : 1 = 0x00
ExitDisplayModeRequest : 1 = 0x00
HPD_State : 1 = 0x00
IRQ_HPD : 1 = 0x00
NO_DPAM_SUSPEND : 1 = 0x00
Reserved_DPS_1 : 22 = 0x00
}
PD_VDM_DisplayPort_UpdateStatus_Response
Packet PD_VDM_DisplayPort_UpdateStatus_Response: PD_VDM_Structured_Header
{
NumberOfDataObjects = 0x02
VDMCommand = PD_VDM_COMMAND_DISPLAYPORT_STATUS_UPDATE
VDMCommandType = PD_VDM_COMMAND_TYPE_RESPONDER_ACK
VDMSVID = PD_DISPLAY_PORT_SVID
StatusVdo : 32 = 0x00 *
* Contains only one VDO of PD_VDM_DisplayPort_Configure_VDO type
}
PD_VDM_DisplayPort_Configure_Message
Packet PD_VDM_DisplayPort_Configure_Message: PD_VDM_Structured_Header
{
NumberOfDataObjects = 0x02
VDMCommand = PD_VDM_COMMAND_DISPLAYPORT_CONFIGURE
VDMSVID = PD_DISPLAY_PORT_SVID
ConfigureVdo : 32 = 0x00 *
* Contains only one VDO of PD_VDM_DisplayPort_Configure_VDO type
}
PD_VDM_DisplayPort_Configure_VDO
Packet PD_VDM_DisplayPort_Configure_VDO: PD_Generic_VDO
{
SelectConfiguration : 2 = PD_DISPLAYPORT_CONFIGURATION_USB
Signaling : 4 = 0x00
Reserved_DPC_1 : 2 = 0x00
UFPU_PinAssignment : 8 = 0x00
Reserved_DPC_2 : 10 = 0x00
CableUHBR13p5Support : 1 = 0x00
Reserved_DPC_3 : 1 = 0x00
CableType : 2 = 0x00
DPAMVersion : 2 = 0x00
}
PD_VDM_DisplayPort_Configure_Response
Packet PD_VDM_DisplayPort_Configure_Response: PD_VDM_Structured_Header
{
VDMCommand = PD_VDM_COMMAND_DISPLAYPORT_CONFIGURE
VDMCommandType = PD_VDM_COMMAND_TYPE_RESPONDER_ACK
VDMSVID = PD_DISPLAY_PORT_SVID
}
PD_ExtendedMsgHeader
Packet PD_ExtendedMsgHeader: PD_Packet
{
DataSize : 9 = 0x00
Reserved : 1 = 0x00
RequestChunk : 1 = 0x00
ChunkNumber : 4 = 0x00
Chunked : 1 = 0x00
}
PD_ExtMsgHeaders
Packet PD_ExtMsgHeaders: PD_Packet
{
: PD_MessageHeader
: PD_ExtendedMsgHeader
Extended = 1
}
PD_SourceCapExtendedMsg
Packet PD_SourceCapExtendedMsg: PD_ExtMsgHeaders
{
MessageType = 1
DataSize = PD_SCEDB_DATA_SIZE
: PD_SourceCapExtDataBlock
}
PD_SourceCapExtDataBlock
Packet PD_SourceCapExtDataBlock
{
VendorId : 16 = 0x00
ProductId : 16 = 0x00
XId : 32 = 0x00
FirmwareVersion : 8 = 0x00
HardwareVersion : 8 = 0x00
LoadStep : 2 = 0x00
IOC : 1 = 0x00
Reserved_1 : 5 = 0x00
HoldupTime : 8 = 0x00
LPSCompliant : 1 = 0x00
PS1Compliant : 1 = 0x00
PS2Compliant : 1 = 0x00
Reserved_2 : 5 = 0x00
LowTouchCurEPS : 1 = 0x00
GroundPinSupport : 1 = 0x00
GrndPinForProtectiveEarth : 1 = 0x00
Reserved_3 : 5 = 0x00
PeakCur1_PercentOverload : 5 = 0x00
PeakCur1_OverloadPeriod : 6 = 0x00
PeakCur1_DutyCycle : 4 = 0x00
PeakCur1_VbusVoltageDroop : 1 = 0x00
PeakCur2_PercentOverload : 5 = 0x00
PeakCur2_OverloadPeriod : 6 = 0x00
PeakCur2_DutyCycle : 4 = 0x00
PeakCur2_VbusVoltageDroop : 1 = 0x00
PeakCur3_PercentOverload : 5 = 0x00
PeakCur3_OverloadPeriod : 6 = 0x00
PeakCur3_DutyCycle : 4 = 0x00
PeakCur3_VbusVoltageDroop : 1 = 0x00
TouchTemp : 8 = 0x00
ExternalSupplyIsPresent : 1 = 0x00
ExternalSupplyCondition : 1 = 0x00
InternalBatteryIsPresent : 1 = 0x00
Reserved_4 : 5 = 0x00
NumberOfFixedBatteries : 4 = 0x00
NumberOfHotSwappableBatterySlots : 4 = 0x00
SourcePDP : 7 = 0x00
Reserved_5 : 1 = 0x00
EPRSourcePDP : 8 = 0x00
}
PD_StatusMsg
Packet PD_StatusMsg: PD_ExtMsgHeaders
{
MessageType = 2
DataSize = PD_SOP_SDB_DATA_SIZE
: PD_StatusDataBlock
}
PD_StatusDataBlock
Packet PD_StatusDataBlock
{
InternalTemp : 8 = 0x00
PresentInput_Rsvd_1 : 1 = 0x00
ExternalPowerIsPresent : 1 = 0x00
ExternalPower_AC_DC : 1 = 0x00
InternalPowerBattery : 1 = 0x00
InternalPowerNonBattery : 1 = 0x00
PresentInput_Rsvd_1_2 : 3 = 0x00
FixedBattery : 4 = 0x00
HotSwappableBattery : 4 = 0x00
EventFlags_Rsvd_1 : 1 = 0x00
OverCurProtectionEvent : 1 = 0x00
OverTempProtectionEvent : 1 = 0x00
OverVoltProtection : 1 = 0x00
OperatingModeFlag : 1 = 0x00
EventFlags_Rsvd_2 : 3 = 0x00
TempStatus_Rsvd_1 : 1 = 0x00
TemperatureStatus : 2 = PD_TEMP_STATUS_NORMAL
TempStatus_Rsvd_2 : 5 = 0x00
PowerStatus_Rsvd_1 : 1 = 0x00
PowLimited_CableCurrent : 1 = PD_FALSE
PowLimited_InsuffPower : 1 = PD_FALSE
PowLimited_InsuffExtPower : 1 = PD_FALSE
PowLimited_EventFlagsSet : 1 = PD_FALSE
PowLimited_Temperature : 1 = PD_FALSE
PowerStatus_Rsvd_2 : 2 = 0x00
PowerStateChange_NewState : 3 = 0x00
PowerStateChange_NewStateIndicator : 3 = 0x00
PowerStateChange_Rsvd_1 : 2 = 0x00
}
PD_StatusMsg_Cable
Packet PD_StatusMsg_Cable: PD_ExtMsgHeaders
{
MessageType = 2
DataSize = PD_SOPP_SDB_DATA_SIZE
: PD_StatusDataBlock_Cable
}
PD_StatusDataBlock_Cable
Packet PD_StatusDataBlock_Cable
{
InternalTemp : 8 = 0x00
ThermalShutdown : 1 = PD_FALSE
Rsvd : 7 = 0x00
}
PD_GetBatteryCapMsg
Packet PD_GetBatteryCapMsg: PD_ExtMsgHeaders
{
MessageType = 3
DataSize = PD_GBCDB_DATA_SIZE
: PD_GetBatteryCapDataBlock
}
PD_GetBatteryCapDataBlock
Packet PD_GetBatteryCapDataBlock
{
BatteryCapRef : 8 = 0x00
}
PD_GetBatteryStatusMsg
Packet PD_GetBatteryStatusMsg: PD_ExtMsgHeaders
{
MessageType = 4
DataSize = PD_GBSDB_DATA_SIZE
: PD_GetBatteryStatusDataBlock
}
PD_GetBatteryStatusDataBlock
Packet PD_GetBatteryStatusDataBlock
{
BatteryStatusRef : 8 = 0x00
}
PD_BatteryCapabilitiesMsg
Packet PD_BatteryCapabilitiesMsg: PD_ExtMsgHeaders
{
MessageType = 5
DataSize = PD_BCDB_DATA_SIZE
: PD_BatteryCapDataBlock
}
PD_BatteryCapDataBlock
Packet PD_BatteryCapDataBlock
{
VendorId : 16 = 0x00
ProductId : 16 = 0x00
DesignCap_100mWHUnits : 16 = 0x00
LastFullChargeCap_100mWHUnits : 16 = 0x00
InvalidBatteryRef : 1 = 0x00
BCDB_Rsvd_1 : 7 = 0x00
}
PD_GetManufacturerInfoMsg
Packet PD_GetManufacturerInfoMsg: PD_ExtMsgHeaders
{
MessageType = 6
DataSize = PD_GMIDB_DATA_SIZE
: PD_GetManufacturerInfoDataBlock
}
PD_GetManufacturerInfoDataBlock
Packet PD_GetManufacturerInfoDataBlock
{
Target : 8 = PD_MANINFO_TARGET_PORT_CABLE
ManufacturerInfoRef : 8 = 0x00
}
PD_ManufacturerInfoMsg
Packet PD_ManufacturerInfoMsg: PD_ExtMsgHeaders
{
MessageType = 7
DataSize = PD_MIDB_DATA_SIZE
: PD_ManufacturerInfoDataBlock
}
PD_ManufacturerInfoDataBlock
Packet PD_ManufacturerInfoDataBlock
{
VendorId : 16 = 0x00
ProductId : 16 = 0x00
ManufacturerString : *
* Can be initialized using a byte stream (max is 176b)
}
PD_SecurityRequestMsg
Packet PD_SecurityRequestMsg: PD_ExtMsgHeaders
{
MessageType = 8
DataSize = PD_SRQDB_DATA_SIZE
SecurityRequestDB : *
* Can contain only one Security Request Data Block.
Available SRDB templates are:
PD_SRQDB_GetDigests
PD_SRQDB_GetCertificate
PD_SRQDB_Challenge
}
PD_SecurityDBHeader
Packet PD_SecurityDBHeader
{
AuthProtocolVersion : 8 = PD_AUTH_PROT_VER_1
AuthMessageType : 8 = 0x00
AuthParam1 : 8 = 0x00
AuthParam2 : 8 = 0x00
}
PD_SecurityRequestDB
Packet PD_SecurityRequestDB: PD_SecurityDBHeader
{
}
PD_SRQDB_GetDigests
Packet PD_SRQDB_GetDigests: PD_SecurityRequestDB
{
AuthMessageType = PD_AUTH_TYPE_GET_DIGESTS
}
PD_SRQDB_GetCertificate
Packet PD_SRQDB_GetCertificate: PD_SecurityRequestDB
{
AuthMessageType = PD_AUTH_TYPE_GET_CERTIFICATE
Offset : 16 = 0x00
Length : 16 = 0x00
}
PD_SRQDB_Challenge
Packet PD_SRQDB_Challenge: PD_SecurityRequestDB
{
AuthMessageType = PD_AUTH_TYPE_GET_CHALLENGE
Nonce : 256 = { 00 00 00 00 }
}
PD_SecurityResponseMsg
Packet PD_SecurityResponseMsg: PD_ExtMsgHeaders
{
MessageType = 9
DataSize = PD_SRPDB_DATA_SIZE
SecurityResponseDB : *
* Can contain only one Security Response Data Block.
Available SRPDB types are:
PD_SRPDB_Digests
PD_SRPDB_Certificate
PD_SRPDB_ChallengeAuth
PD_SRPDB_Error
}
PD_SecurityResponseDB
Packet PD_SecurityResponseDB: PD_SecurityDBHeader
{
}
PD_SRPDB_Digests
Packet PD_SRPDB_Digests: PD_SecurityResponseDB
{
AuthMessageType = PD_AUTH_TYPE_DIGESTS
AuthParam1 = 0x01
DigestArray : *
* Max len is 256 bytes, each digest is 32 bytes.
Packet variables of PD_Security_Digest type can be assigned to this field.
}
PD_Security_Digest
Packet PD_Security_Digest
{
Digest : 256 = 0x00
}
PD_SRPDB_Certificate
Packet PD_SRPDB_Certificate: PD_SecurityResponseDB
{
AuthMessageType = PD_AUTH_TYPE_CERTIFICATE
Certificate : *
* Can be initialized using a byte stream.
}
PD_SRPDB_ChallengeAuth
Packet PD_SRPDB_ChallengeAuth: PD_SecurityResponseDB
{
AuthMessageType = PD_AUTH_TYPE_CHALLENGE_AUTH
MinProtVer : 8 = 0x00
MaxProtVer : 8 = 0x00
Capabilities : 8 = 0x01
Rsvd : 8 = 0x00
CertChainHash : 256 = { 00 00 00 00 }
Salt : 256 = { 00 00 00 00 }
ContextHash : 256 = { 00 00 00 00 }
Signature : 512 = { 00 00 00 00 }
}
PD_SRPDB_Error
Packet PD_SRPDB_Error: PD_SecurityResponseDB
{
AuthMessageType = PD_AUTH_TYPE_ERROR
}
PD_PPSStatusMsg
Packet PD_PPSStatusMsg: PD_ExtMsgHeaders
{
MessageType = 12
DataSize = PD_PPSSDB_DATA_SIZE
: PD_PPSStatusDataBlock
}
PD_PPSStatusDataBlock
Packet PD_PPSStatusDataBlock
{
OutputVoltage_20mVUnits : 16 = 0xFFFF
OutputCurrent_50mAUnits : 8 = 0xFF
PPSSDB_Rsvd_1 : 1 = 0x00
PresentTemperatureFlag : 2 = 0x01
OperatingModeFlag : 1 = 0x00
PPSSDB_Rsvd_2 : 4 = 0x00
}
PD_CountryInfoMsg
Packet PD_CountryInfoMsg: PD_ExtMsgHeaders
{
MessageType = 13
DataSize = PD_CIDB_DATA_SIZE
: PD_CountryInfoDataBlock
}
PD_CountryInfoDataBlock
Packet PD_CountryInfoDataBlock
{
: CountryCode
CIDB_Rsvd_1 : 16 = 0x00
CountrySpecificData : *
* Byte stream data. Max length is 256 bytes
}
PD_CountryCodesMsg
Packet PD_CountryCodesMsg: PD_ExtMsgHeaders
{
MessageType = 14
DataSize = PD_CCDB_DATA_SIZE
: PD_CountryCodesDataBlock
}
PD_CountryCodesDataBlock
Packet PD_CountryCodesDataBlock
{
NumberOfCountryCodes : 16 = 0x01
: CountryCode
CountryCodes : *
* Should be multiple of 16bits.
Max len is 256 bytes.
Each CountryCode is 2 bytes.
Each CountryCode can be assigned using the CountryCode packet variable.
}
CountryCode
Packet CountryCode
{
Alpha2CountryCode1stChar : 8 = 0x00
Alpha2CountryCode2ndChar : 8 = 0x00
}
PD_SinkCapExtendedMsg
Packet PD_SinkCapExtendedMsg: PD_ExtMsgHeaders
{
MessageType = 15
DataSize = PD_SKEDB_DATA_SIZE
: PD_SinkCapExtDataBlock
}
PD_SinkCapExtDataBlock
Packet PD_SinkCapExtDataBlock
{
VendorId : 16 = 0x00
ProductId : 16 = 0x00
XId : 32 = 0x00
FirmwareVersion : 8 = 0x00
HardwareVersion : 8 = 0x00
SKEDBVersion : 8 = PD_SKEDB_VERSION_1
LoadStep : 2 = PD_SKEDB_LOADSTEP_150mA_PER_uS
LoadStep_Rsvd : 6 = 0x00
OverLoad_10PercentUnits : 5 = 0x00
OverloadPeriod_20mSUnits : 6 = 0x00
DutyCycle_5PercentUnits : 4 = 0x00
TolerateVBusDroop : 1 = 0x00
RequiresLPSSource : 1 = 0x00
RequiresPS1Source : 1 = 0x00
RequiresPS2Source : 1 = 0x00
Compliance_Rsvd : 5 = 0x00
TouchTemp : 8 = PD_SKEDB_TOUCHTEMP_DEFAULT
NumberOfFixedBatteries : 4 = 0x00
NumberOfHotSwappableSlots : 4 = 0x00
PPSChargingSupported : 1 = 0x00
VBusPowered : 1 = 0x01
MainsPowered : 1 = 0x00
BatteryPowered : 1 = 0x00
BatteryEssentiallyUnlimited : 1 = 0x00
AVSSupport : 1 = 0x00
SinkModes_Rsvd : 2 = 0x00
SinkMinPDP : 7 = 0x00
SinkMinPDP_Rsvd : 1 = 0x00
SinkOperationalPDP : 7 = 0x00
SinkOperationalPDP_Rsvd : 1 = 0x00
SinkMaxPDP : 7 = 0x00
SinkMaxPDP_Rsvd : 1 = 0x00
EPRSinkMinPDP : 8 = 0x00
EPRSinkOperationalPDP : 8 = 0x00
EPRSinkMaxPDP : 8 = 0x00
}
PD_GetSourceInfoMsg
Packet PD_GetSourceInfoMsg: PD_ControlMessage
{
MessageType = PD_MESSAGE_TYPE_GET_SOURCE_INFO
}
PD_GetRevisionMsg
Packet PD_GetRevisionMsg: PD_ControlMessage
{
MessageType = PD_MESSAGE_TYPE_GET_REVISION
}
PD_EPRModePacket
Packet PD_EPRModePacket: PD_MessageHeader
{
MessageType = 10
NumberOfDataObjects = 1
: PD_EPRModeData
}
PD_EPRModeData
Packet PD_EPRModeData
{
Rsvd : 16 = 0
Data : 8 = 0
Action : 8 = 0
}
PD_ExtendedCtrlMsg
Packet PD_ExtendedCtrlMsg: PD_ExtMsgHeaders
{
MessageType = 16
DataSize = 2
: PD_ExtControlDataBlock
}
PD_ExtControlDataBlock
Packet PD_ExtControlDataBlock
{
type : 8 = 0x00
data : 8 = 0x00
}
PD_GetEPRSourceCapMsg
Packet PD_GetEPRSourceCapMsg: PD_ExtendedCtrlMsg
{
type = 1
data = 0
}
PD_GetEPRSinkCapMsg
Packet PD_GetEPRSinkCapMsg: PD_ExtendedCtrlMsg
{
type = 2
data = 0
}
PD_EPRKeepAliveMsg
Packet PD_GetEPRKeepAliveMsg: PD_ExtendedCtrlMsg
{
type = 3
data = 0
}
PD_EPRKeepAliveAckMsg
Packet PD_GetEPRKeepAliveAckMsg: PD_ExtendedCtrlMsg
{
type = 4
data = 0
}
PD_EPRSourceCapabilitiesMessage
Packet PD_EPRSourceCapabilitiesMessage: PD_ExtendedCtrlMsg
{
MessageType = 17
DataSize = 0
EPRSourceCapabilitiesData : *
* This field holds SPR and EPR PDOs.
SPR PDO types that can assign to this field are:
PD_PowerDataObjectFixedSupply_Source
PD_PDOFixedSupplyNotVSafe5V_Source
PD_PowerDataObjectVariableSupply_Source
PD_PowerDataObjectBatterySupply_Source
PD_PowerDataObjectPPS_Source
PD_SPRPowerDataObjectAVS
EPR PDO types that can assign to this field are:
PD_PowerDataObjectFixedSupply_Source
PD_EPRPowerDataObjectAVS
}
PD_EPRPowerDataObjectAVS
Packet PD_EPRPowerDataObjectAVS: PD_PowerDataObject
{
PDP_1WUnits : 8 = 0
MinVoltage_100mVUnits : 8 = 0
AVS_Rsvd_1 : 1 = 0
MaxVoltage_100mVUnits : 9 = 0
PeakCurrent : 2 = 0
APDOType : 2 = 1
PowerDataType : 2 = 3
}
PD_EPRSinkCapabilitiesMessage
Packet PD_EPRSinkCapabilitiesMessage: PD_ExtendedCtrlMsg
{
MessageType = 18
DataSize = 0
EPRSinkCapabilitiesData : *
* This field holds SPR and EPR PDOs.
SPR PDO types that can assign to this field are:
PD_PowerDataObjectFixedSupply_Sink
PD_PowerDataObjectVariableSupply_Sink
PD_PowerDataObjectBatterySupply_Sink
PD_PowerDataObjectPPS_Sink
PD_SPRPowerDataObjectAVS
EPR PDO types that can assign to this field are:
PD_PowerDataObjectFixedSupply_Sink
PD_EPRPowerDataObjectAVS
}
PD_EPRRequestPacket
Packet PD_EPRRequestPacket: PD_MessageHeader
{
MessageType = 9
NumberOfDataObjects = 2
RDO : 32 = 0x00
This field can contain only one RDO packet variable.
Available RDO templates are:
PD_RequestDataObject_Fixed_Variable_NoGiveBack
PD_RequestDataObject_Fixed_Variable_GiveBack
PD_RequestDataObject_Battery_NoGiveBack
PD_RequestDataObject_Battery_GiveBack
PD_ProgrammableRDO
PDO : 32 = 0x00
This field is the selected PDO in the SourceCapabilities packet
}