In a power delivery system, the source port supplies power over VBUS and is most commonly a Host or Hub DFP downstream port. The sink port consumes power from VBUS and is most commonly a Device. There are some devices that are capable of operating as either a Source or a Sink, and these are called Dual-Role power devices.
In a PD system, the Source can provide various types of power, such as fixed supply (e.g. 5V, 9V), variable power supply, and battery. The Source will describe its power capabilities by sending a Source_Capabilities Message during power negotiation.
For example, the figure below illustrates that a Source can provide four types of power: 5V, 9V, variable power, and battery. It describes its capabilities by sending Source_Capabilities message on the CC pin.
A capabilities message has at least one PDO (Power Data Object) for vSafe5V for backwards compatibility with legacy VBUS ports. The vSafe5V fixed supply object is always the first object.
The corresponding message with 4 power data objects is shown below. The first Data Object describes the fixed 5V power, the second one is for the fixed 9V power, the third one is for the variable power, and the last one is for the battery.
After receiving the Source_Capabilities Message, the Sink should send a Request Message to make a request for power.
The Request Message returns one and only one Sink Request Data Object to identify the PDO (Power Data Object) being requested. The index value in the Object Position field of the request message indicates which object in the Source_Capabilities Message is being requested. The value 1 always indicates the 5V Fixed Supply PDO, as it is the first object following the Source_Capabilities Message Header, the number 2 refers to the next PDO, and so forth.
For example, the received Source_Capabilities Message includes a Fixed Supply PDO described as above that offers 9V@1.5A. If the Sink wants 9V@1.5A, the index value in the Object position field of the request message should be 2.
After receiving the request from Sink, the Source evaluates and accepts the request with an Accept Message and then transitions to the new power level. Finally, it informs the Sink by sending a PS_RDY Message. At this time, the Sink will start using the new power level.