1. Ben Bass
  2. pylibftdi


pylibftdi / CHANGES.txt

pylibftdi changes

* Optimisation on accessing port property when direction is set to ALL_OUTPUTS
  - don't bother reading the pins first. Makes ``port`` identical to ``latch``
  in this case.


* API changes
    * Device() parameter 'interface' has been renamed to 'interface_select',
      as it wasn't clear what this meant. Symbolic constants 'INTERFACE_ANY',
      'INTERFACE_A'/B/C/D are provided in the pylibftdi package namespace.
    * Device() parameter 'buffer_size' has been renamed to 'chunk_size' because
      there isn't any buffering going on, so it was potentially misleading.
    * new 'latch' property on BitBangDevices reflects current state of output
      latch, for better defined behaviour on read-modify-write operations on
      mixed-direction ports.
* fixed the bit_server example; run as
      python -m pylibftdi.examples.bit_server
* docstring clean-ups
* BitBangDevice now reads device pin state on startup, so read/rmw operations
  across process runs now work as expected; for example previously running::

      >>> from pylibftdi import BitBangDevice
      >>> d = BitBangDevice()
      >>> d.port = 1
      >>> ^D

      # restart interpreter

      >>> from pylibftdi import BitBangDevice
      >>> d = BitBangDevice()
      >>> d.port |= 2

  would have cleared D0, but now keeps it high (so d.port == 3)
* setup.py will now use setuptools/distribute if installed, allowing the
  'develop' target.

* lots more documentation, cleaned up, on readthedocs. Still in progress though.
* Experimental support for multi-device interfaces ``Device(interface=1)``

 * include examples subpackage
 * ensure examples work under Python3
 * 'python -m pylibftdi.examples.led_flash' should now work and pulse D0

 * maintenance build to fix installation issues
 * USB_VID_LIST/USB_PID_LIST exposed directly as pylibftdi attributes

 * support for FT232H via iteration over lists USB_VID_LIST/USB_PID_LIST in
   driver.py (FT232H uses different PID)
 * support for 'buffering' - i.e. chunking reads and writes to allow
   interruption (i.e. KeyboardInterrupt) in what could otherwise be a very long
   uninterruptable extension code call.
 * reset device to serial mode on open() (previously could be left in bitbang mode)
 * moved docs -> /doc
 * moved pylibftdi/tests -> /tests - makes python -m unittest discover etc work better
 * removed legacy support for Driver() to acting as a Device()
 * API for Bus class now requires .device rather than .driver (this still needs
   improving at some point)

 * improved and extended tests
 * made a start on some Sphinx-based documentation
 * fixed long-standing issue with input from a BitBangDevice
 * allow the PID/VID to be changed
 * add new examples
   - basic web server to toggle / read IO bits
   - magic_candle.py - example of using input and output together
   - pin_read.py - read and match values on device pins
 * All of this needs some tidying, but it fixes some key issues and has been unreleased too long.

 * fix issue with bitbang following API changes in 0.8
 * add tests for bitbang mode
 * refactor tests; fix text-based tests in Python3
 * slight refactor Device() to improve testability (_read and _write methods)

 * added some unit tests
 * API changes:
    * when opening a device with a device_id parameter, this will now check
      against both serial number and (if that fails), the device description.
      Opening by device type (under the same proviso that an arbitrary device
      will be selected if multiple matching devices are attached as when no
      device_id is given) is frequently easier than matching by serial number.
    * added flush(), flush_input() and flush_output() operations. This is
      modelled after the pySerial API providing separate flush operations, and
      gets the Device API closer to that of files.
    * increased file-API compatibility, with line-oriented methods and iteration

 * support multiple attached devices
 * API changes:
    * separation between driver and device. Generally, now use Device() /
      BitBangDevice() rather than Driver / BitBangDriver(), though older code
      _should_ still work via some shims (though with Deprecation warnings).
    * first parameter in Device() and BitBangDevice() is a device ID - the serial
      number string of the target device.
    * open() is generally no longer required on Devices. This is to more closely
      model the file() API.

 * same source now works on both Python2.6+ and Python3.

 * fix various bugs found by pyflakes
 * improve module organisation, while providing interface compatibility

 * fix release issue

 * fixed embarrassing bug which caused things not to work on Linux 
   (is now find_library('ftdi') instead of find_library('libftdi'))
 * lots of error checking, new FtdiError exception. Before it just
   tended to segfault if things weren't just-so.
 * get_error() is now get_error_string().  It's still early enough
   to change the API, and if I thought it was get_error_string
   multiple times when I wrote the error checking code, it probably
   should be the more natural thing.

 * added some examples
 * new Bus class in pylibftdi (though it probably belongs somewhere else)
 * first release on PyPI

 * fixed various bugs
 * added ftdi_fn and set_baudrate functions in Driver class
 * changed interface in BitBangDriver to direction/port properties
   rather than overriding the read/write functions, which are therefore
   still available as in the Driver class.

 * first release. Tested with libftdi 0.18 on Mac OS X 10.6 and Linux
   (stock EEEPC 701 Xandros Linux, Ubuntu 10.04)