Easily view a charger's capabilities with PD Buddy Sink+Wye

A project log for PD Buddy Sink

Smart power jack for USB Power Delivery

Clara HobbsClara Hobbs 09/04/2017 at 20:480 Comments

Since firmware version 1.1, it's been possible to view the capabilities of a USB Power Delivery source using the PD Buddy Sink.  And since the PD Buddy Wye was released, it's been possible to view a standalone charger's capabilities by running the Sink in setup mode while connected to the charger.  But the way the GUI showed the capabilities was lacking: they were presented exactly the same as the console gives them!  Obviously this couldn't be the best way to show capabilities in a GUI, so I got to work on a new design.

---------- more ----------

The main screen for a Sink now shows the maximum power the charger is capable of supplying (termed "PD Power" by the standard).  It also shows a warning icon if the advertised capabilities appear to violate the Source Power Rules, which an unfortunately large number of chargers do.  To implement these features, I added a few new functions to the pd-buddy-python library.  One calculates the maximum power given from a list of PDOs, and the other carefully combs through the PDOs to see if any capability violates the Power Rules.  These seemed to be generally useful functions, so I added them to the library rather than just the GUI code.

When the user clicks the Source Capabilities line, the new Source Capabilities dialog appears.  It shows all the same information as before, but formatted in a much friendlier way.  The PD Power and warning icon (if applicable) are shown at the top, followed by all the extra information from the VSafe5V PDO.  Then all the PDOs are shown in a compact, scannable list.  If any of the Fixed PDOs have over-current capabilities, they are listed in full in the tooltip of an icon next to the current, so there's no need to check the standard for meanings of numbers.

Overall, I'm really happy with how this new dialog turned out.  I hope you like it as much as I do!