So the basic USB PD sequence is
- Source: Source_Capabilities { 5V3A, other possible capabilities}
- Sink: Request { 5V1.5A }
- Source: Accept
- Source: PS_Rdy
I spent the entire day trying to work out why the source (my laptop) didnโt like my Accept message. It was bitwise identical to what I saw other hardware sending, so I didnโt understand why it disliked it. I added all sorts of debug logging to track it down.
The problem turned out to be that my stack was too slow, on account of all of the debug logging. A good old embedded systems classic.