Python library for working with the PD Buddy Sink Serial Console Configuration Interface
Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.
Clara Hobbs 6f55afad6d Bump version number to 0.5.1 6 år sedan
pdbuddy Improve Sink testing script 6 år sedan
test_pdbuddy Add power rule testing for PPS APDOs 6 år sedan
.gitignore Initial commit 7 år sedan
LICENSE Added a simple PD Buddy Sink configuration library 7 år sedan
README.rst Bump version number to 0.5.0 6 år sedan
setup.py Bump version number to 0.5.1 6 år sedan

README.rst

pd-buddy-python
===============

Python library for working with the PD Buddy Sink Serial Console
Configuration Interface

Features
--------

- Provides a Pythonic interface to the PD Buddy Sink shell commands
- Configuration is represented as a SinkConfig object
- SinkConfig objects can be manipulated locally and written to the
device with one method call
- Allows control of whether or not the output is enabled
- Provides a Pythonic interface for reading advertised PDOs
- Provides functions for testing if the power supply follows the Power Rules
- Includes a script for testing if a PD Buddy Sink is correctly functioning

Examples
--------

Open the first PD Buddy Sink device and read its configuration
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

::

>>> import pdbuddy
>>> pdbs = pdbuddy.Sink(list(pdbuddy.Sink.get_devices())[0])
>>> pdbs.get_cfg()
SinkConfig(status=<SinkStatus.VALID: 2>, flags=<SinkFlags.NONE: 0>, v=5000, vmin=None, vmax=None, i=3000, idim=<SinkDimension.CURRENT: 1>)
>>> print(pdbs.get_cfg())
status: valid
flags: (none)
v: 5.000 V
i: 3.00 A

Locally manipulate a SinkConfig object
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

::

>>> cfg = pdbs.get_cfg()
>>> cfg = cfg._replace(v=20000, i=2250)
>>> cfg = cfg._replace(flags=cfg.flags | pdbuddy.SinkFlags.GIVEBACK)
>>> cfg
SinkConfig(status=<SinkStatus.VALID: 2>, flags=<SinkFlags.GIVEBACK: 1>, v=20000, vmin=None, vmax=None, i=2250, idim=<SinkDimension.CURRENT: 1>)

Write the SinkConfig object to flash
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

::

>>> pdbs.set_tmpcfg(cfg)
>>> pdbs.write()
>>> pdbs.get_cfg()
SinkConfig(status=<SinkStatus.VALID: 2>, flags=<SinkFlags.GIVEBACK: 1>, v=20000, vmin=None, vmax=None, i=2250, idim=<SinkDimension.CURRENT: 1>)

Requirements
------------

- Python 2.7, >= 3.3
- pySerial >= 3.0
- aenum >= 2.0 (if using Python < 3.6)

Testing
-------

To run the unit tests, run::

$ python setup.py test

This will test the Sink class only if a PD Buddy Sink is plugged in and in
setup mode, so make sure that's the case if you're testing any changes to the
Sink class. Also, make sure the Status LED is blinking quickly when the tests
are run, since that's the only real way to test the ``identify`` command. Be
aware that the Sink's configuration will get clobbered by the tests.