0.4.0 (2016-01-29)
------------------

Note: This release DOES change the libsigrokdecode public C API. This
means it is NOT backwards-compatible and frontends will need updates.

 * New supported protocol decoders:
   - adns5020       Bidirectional command and data over an SPI-like protocol
   - am230x         Aosong AM230x/DHTxx/RHTxx humidity/temperature sensor
   - arm_etmv3      Decode ETM instruction trace packets
   - arm_itm        Trace data from Cortex-M / ARMv7m ITM module
   - arm_tpiu       Filter TPIU formatted trace data into separate streams
   - eeprom24xx     24xx series I²C EEPROM protocol
   - em4100         EM4100 100-150kHz RFID protocol
   - jitter         Retrieves the timing jitter between two digital signals
   - max7219        8-digit LED display driver
   - mdio           Half-duplex sync serial bus for MII management (MAC/PHY)
   - modbus         Modbus RTU protocol for industrial applications
   - mrf24j40       IEEE 802.15.4 2.4 GHz RF tranceiver chip
   - nrf24l01       2.4GHz transceiver chip
   - pwm            Analog level encoded in duty cycle percentage
   - qi             Async serial protocol for Qi charger receivers
   - rfm12          HopeRF RFM12 wireless transceiver control protocol
   - sdcard_sd      Secure Digital card (SD mode) low-level protocol
   - spdif          Serial bus for connecting digital audio devices
   - stepper_motor  Absolute position and movement speed from step/dir
   - swd            Two-wire protocol for debug access to ARM CPUs
   - tca6408a       Texas Instruments TCA6408A 8-bit I²C I/O expander
   - timing         Calculate time between edges
   - usb_power_delivery USB Power Delivery protocol
   - usb_request    USB (low-speed and full-speed) transaction/request protocol
 * The 'mx25lxx05d' decoder was renamed to 'spiflash' and made more generic.
 * arm_itm:
   - Use objdump instead of addr2line (bug #564).
 * can:
   - Emit bit value annotations.
   - Improve stuff bit annotation placement.
 * ds1307:
   - Emit per-bit annotations for registers.
   - Add more annotation classes (and annotation rows).
   - Handle register 0x07 (control register).
   - Handle SRAM register accesses.
   - Correctly handle address wrap-around.
   - Warn about (and ignore) non-DS1307 traffic.
 * edid:
   - Handle more EDID structure sections.
   - Add annotation rows.
 * jitter:
   - Avoid Unicode string literals (bug #569).
 * jtag:
   - Fix/enable OUT_PYTHON output.
   - Add more annotations, fix a SHIFT-IR/-DR issue.
 * jtag_stm32:
   - Fix incorrect handling of registers.
   - Decode more fields, improve IDCODE handling.
   - Decode IDCODE contents as strings (not just hex values).
 * midi:
   - Fix two incorrect sample numbers.
   - Update for a change (emit databyte/bits at the same time) in the uart PD.
 * mrf24j40:
   - Fix a register address typo.
 * nunchuk:
   - Fix inverted button press logic.
 * pan1321:
   - Update for a change (emit databyte/bits at the same time) in the uart PD.
 * onewire_link:
   - Fix a bug when the samplerate is too low for the PD (bug #357).
 * parallel:
   - Enforce that at least one pin must be provided.
 * pwm:
   - Avoid Unicode string literals (bug #569).
 * spi:
   - OUT_PYTHON docs: Fix order of MISO/MOSI data items.
   - Tell stacked decoders about missing CS# signal.
   - Add binary output facilities for MISO/MOSI (bug #424).
   - Don't decode data lines if CS# isn't asserted (bug #559).
   - Add a 'TRANSFER' output type.
 * spiflash:
   - Implement FAST READ command.
   - Add a 'chip' option in preparation for supporting more devices.
   - Fix incorrect 'inputs' field.
 * tlc5620:
   - Fix incorrect DAC selection decode, add more annotations.
   - Only decode the last 11 bits, ignore the rest.
   - Properly handle LOAD and LDAC based operations.
   - Handle the case of less than 11 bits in a command.
   - Add options for per-DAC Vref, show voltages.
 * uart:
   - Add signal inversion options 'invert_tx' and 'invert_rx'.
   - Emit databyte and bits list at the same time to simplify stacked PDs.
   - Improve sample positions at high data rates.
   - Handle framing errors better.
   - Performance-optimize handling of samples when TX and RX are both idle.
 * usb_packet:
   - Fix incorrect DATA*/MDATA handling (bug #623).
   - Handle invalid packets more gracefully (bug #186).
   - Calculate and check CRC5/CRC16.
   - Handle errors from usb_signalling.
   - Handle PREamble transmissions.
 * usb_request:
   - Handle transmission timeouts.
   - Handle PREamble transmissions.
 * usb_signalling:
   - Track USB symbol width to compensate frequency errors.
   - Detect bit stuffing errors.
   - Handle symbol errors in EOP state.
   - Use explicit positions for packet start/end (avoids glitches).
   - Decode RESET and Keep-Alive signalling conditions.
   - Add option to automatically set signalling speed.
   - Fix SOP detection after an error condition.
   - Add signalling states needed after LS PREamble PID.
   - Detect PREamble PID.
 * Drop the PD testing framework. It's in the 'sigrok-test' repository now
   (and is not meant for "end users" or distro packages anyway; it's a pure
   developer tool/system). This also fixes some PD test related build issues.
 * Makefile.am: Use libtool's -no-undefined option (fixes MinGW shared build).
 * Support loading decoders stored in ZIP files.
 * Updated build requirements:
   - libglib >= 2.28.0
   - Drop obsolete (optional) dependencies: python3-coverage, libsigrok.
 * README: Use clearer descriptions for the dependencies.
 * Remove all references to the obsolete sigrok-commits mailing list.
 * Fix incorrect doxygen comment for srd_decoder_list() function (bug #378).
 * configure.ac:
   - Fix a shell portability issue ("==" vs. "=").
   - Use AM_CFLAGS instead of CFLAGS.
   - Only link the 'check' library into the unit tests (not the lib).
 * Unit tests:
   - Fix out-of-tree build.
 * libsigrokdecode.pc (pkg-config) file:
   - Fix an issue related to the Python lib dependencies.
   - Publish decodersdir variable.
 * Add "-git-<hash>" suffix to development version numbers.
 * Pass unitsize per sample chunk (bug #352).
 * Modernize the whole autotools setup.
 * Build with _POSIX_C_SOURCE=200112L per default.
 * Build: Show CC and CFLAGS in configuration summary.
 * Also look for decoders in XDG data directories.
 * Restrict Python code to stable ABI subset (PEP 384).
 * Fix various memory leaks.
 * Fix an issue with PDs not being properly removed upon unload.
 * Don't let Python override signal handlers (bug #461).
 * configure: Also check for Python 3.5 (bug #739).

0.3.0 (2014-05-06)
------------------

Note: This release DOES change the libsigrokdecode public C API. This
means it is NOT backwards-compatible and frontends will need updates.

 * New supported protocol decoders:
   - guess_bitrate  Guess the bitrate/baudrate of a signal
   - ir_nec         NEC infrared remote control protocol
   - ir_rc5         RC-5 infrared remote control protocol
   - midi           Musical Instrument Digital Interface
   - parallel       Parallel synchronous bus decoder
   - rgb_led_spi    RGB LED string decoder (SPI)
   - xfp            10 Gigabit Small Form Factor Pluggable Module
   - z80            Zilog Z80 microprocessor disassembly
 * Add support for annotation rows, i.e. groups of annotation classes that
   are supposed to be displayed on the same GUI "row" together.
 * Add support for the new OUTPUT_BINARY feature, which allows PDs to output
   decoded data in various file formats (for loading and further processing
   in other tools, or for direct live piping into other tools).
 * Add support for the OUTPUT_META output type. This is used by PDs for
   reporting various data points to the frontends, allowing them to perform
   various post-processing and statistics tasks on them (e.g. simple counts,
   average/mean values, min/max values, and so on).
 * The OUTPUT_PROTO output type is now called OUTPUT_PYTHON.
 * All protocol decoders:
   - Bump the 'api_version' field of all decoders to 2. They are no longer
     compatible (and cannot be used with) older libsigrokdecode versions.
   - Updates to emit proper annotation classes, annotation sample numbers,
     and annotation rows for GUI usage (bugs #146, #148, #150, #151, #154,
     #155, #162, #147, #163, #168, #156, #309, and #344).
   - Longer and shorter annotations are now supplied for GUI usage (frontends
     can for example always show the longest annotation per zoom-level).
   - Extensive protocol information has been moved from the PDs to the wiki.
     Example: http://sigrok.org/wiki/Protocol_decoder:Uart
   - Use correct I²C / I²S names in user-visible texts (not I2C/I2S).
 * dcf77:
   - Fix a bug in the handling of DCF77 bit 0.
   - Drop handling of the 'PON' pin, this is not DCF77 related (bug #153).
   - Fix the data parity check (bug #157).
 * i2c:
   - Fix corner case that can yield issues when using triggers on LAs.
   - Drop unneeded 'addressing' option.
   - Output bit-exact annotations and data for use by stacked PDs.
 * i2s:
   - Add OUTPUT_BINARY support for dumping the decoded data in WAV format.
 * lpc:
   - Various fixes to make the PD work better (or at all).
   - Fix the handling of optional channels.
   - Make the RESET# pin optional.
 * onewire_link:
   - Split 'reset' and 'presence' annotations.
 * pan1321:
   - Support the JSEC, JPRO, JAAC, and JSDA commands.
   - Various internal fixes and improvements.
 * parallel:
   - Fix internal use of the obsolete 'metadata' parameter (bug #202).
 * rtc8564:
   - Properly handle register 0x06 (weekday) and the 'century' bit.
 * sdcard_spi:
   - Emit bit-exact annotations for the register fields that need them.
   - Fix a Python issue with duplicate keys in a dict (bug #191).
 * spi:
   - Either MISO or MOSI can be optional now, but not both (bug #175).
   - The CS# pin is optional now. If the pin is supplied, it is honored
     (decoding only happens when the pin is asserted). Otherwise decoding will
     use every CLK edge, regardless of CS# state or CS# existence (bug #152).
   - Rename the 'SCK' pin to the more common 'CLK'.
   - Output bit-exact annotations and data for use by stacked PDs.
   - Fix a bug occurring when only MOSI (but not MISO) was supplied.
 * transitioncounter:
   - Drop the obsolete 'transitioncounter' dummy protocol decoder.
 * uart:
   - Fix corner case that can yield issues when using triggers on LAs.
   - Use 'T' for stop bits and 'P' for parity bits (shortest annotations).
   - Add a data format selection option.
   - Annotations for RX and TX are now emitted in different annotation rows.
   - Either the RX or TX signal can be optional now (but not both).
   - Fix incorrectly displayed characters (bug #201).
   - Add support for OUTPUT_BINARY output for RX, TX, or both.
   - Output bit-exact annotations and data for use by stacked PDs.
 * uart_dump:
   - Drop the obsolete 'uart_dump' decoder (the feature is now included
     in the 'uart' protocol decoder itself via OUTPUT_BINARY).
 * usb_packet:
   - The 'usb_protocol' decoder has been renamed to 'usb_packet'.
   - Various bugfixes and decoding improvements.
 * usb_signalling:
   - Fix decoding of individual bits, sample in the middle of bits (bug #158).
 * libsigrokdecode API changes overview:
   - Add srd_session_new(), srd_session_destroy(), and a session context.
   - Add srd_session_metadata_set().
   - The name 'probe' has been renamed to 'channel' everywhere.
   - The lib no longer defineѕ names with _t suffix (POSIX reserved).
   - Drop the obsolete SRD_MAX_NUM_PROBES.
   - Add the SRD_CONF_SAMPLERATE config key.
   - Please see the Doxygen API documentation for further details.
 * Protocol decoder API:
   - Metadata is passed to PDs at runtime now (not at decoder start).
     PDs now have a new optional metadata() method to receive it.
   - Output types are now registered via Decoder.register(), not Decoder.add().
   - The report() method is now obsolete. This kind of information will be
     passed to the frontends via the OUTPUT_META output type, allowing the
     frontends to perform various post-processing and statistics tasks.
   - PDs can now define BINARY_OUTPUT types via the 'binary' tuple.
   - PDs can now define annotation rows via the 'annotation_rows' tuple.
   - PD options are now a tuple of dicts. Each option is a dict containing
     the keys 'id', 'desc', 'def', and 'values'. Valid option types are
     UTF-8 strings, integers, and floats (bugs #254, #306, #317, #165).
   - Channels, optional channels, and annotations are now tuples (not lists).
   - Only load PDs of API version 2, all other versions are incompatible.
 * srd_inst_channel_set_all(): Report an error if not all channels required
   by the respective protocol decoder have been supplied.
 * Remove some internal limitations to max. 64 channels (bug #120).
 * Add a unit test suite framework for libsigrokdecode ('make check').
 * Add a protocol decoder test-suite framework for developers (tests/pdtest).
 * Various bugfixes:
   - srd_inst_option_set(): Properly return an error on exceptions.
   - srd_inst_option_set(): Fix setting of instance options, caused by class
     variable clobbering or releasing borrowed references (bugs #170, #174).
   - srd_decoder_load(): Error out upon invalid module names (bug #176).
   - srd_decoder_load(): Don't try to load an already loaded PD twice.
   - srd_decoder_load_all(): Avoid issues without prior srd_init() (bug #178).
   - srd_decoder_doc_get(): Fix an issue in the unit test suite (bug #179).
   - srd_pd_output_callback_add(): Honor cb_data value (bug #143).
   - Fix issues with PDs not getting the samplerate (bugs #97, #132, #166).
   - Don't incorrectly decrease a borrowed reference (bug #177).
   - Fix various memory leaks and segfault conditions.
 * Build system:
    - Use pkg-config (not python3-config) to check for Python libs.
      This enables (better) libsigrokdecode cross-compile support.
    - PDs no longer have an extra Makefile.am, and 'make install' now
      happens via a Python script.
    - configure: Clearly mark required and optional libs.
    - Fix an issue with DESTDIR support (bug #215).
    - Add the HACKING file to the tarball.
 * Updated or new build-time and runtime requirements:
   - Python >= 3.2 (required)
   - check >= 0.9.4 (optional, only needed for the libsigrokdecode testsuite)
   - libsigrok >= 0.3.0 (optional, only needed for the developer PD testsuite)
   - python3-coverage (optional, only needed for the developer PD testsuite)
 * New 'make install'-time requirement:
   - Python >= 3.2 (required)

0.2.0 (2013-05-04)
------------------

Note: This release DOES change the libsigrokdecode public C API. This
means it is NOT backwards-compatible and frontends will need updates.

 * New supported protocol decoders:
   - Dallas DS1307 RTC
 * Library: Decoders now expose their options via the GSList *options field
   in struct srd_decoder.
 * API related changes:
   - Various API documentation fixes.
   - srd_decoder_list() now returns 'const GSList *' instead of 'GSList *'.
   - Added new srd_strerror() and srd_strerror_name() API calls.
 * Added support for optional probes for PDs.

0.1.1 (2013-01-27)
------------------

Note: This release does NOT change the libsigrokdecode public C API. This
means existing libsigrokdecode frontends should not require any changes.
However, individual PDs and their output changed, which may require
some adaptations on the user's side in some cases.

 * New supported protocol decoders:
   - avr_isp              AVR In-System Programming
   - can                  Controller Area Network
   - jtag                 Joint Test Action Group (IEEE 1149.1)
   - jtag_stm32           Joint Test Action Group / ST STM32
   - lm75                 National LM75
   - lpc                  Low-Pin-Count
   - maxim_ds28ea00       Maxim DS28EA00 1-Wire digital thermometer
   - onewire_link         1-Wire serial communication bus (link layer)
   - onewire_network      1-Wire serial communication bus (network layer)
   - sdcard_spi           Secure Digital card (SPI mode)
   - tlc5620              Texas Instruments TLC5620
   - uart_dump            UART dump
 * i2cfilter: Now outputs 'i2c' packets instead of just data bytes, so
   other PDs can stack on top of it. It filters by I2C slave address.
 * edid: Now takes 'i2c' packets as input.
 * pan1321:
   - Various bugfixes to make the PD actually work.
   - Now features 'Text (short)' and 'Text (verbose)' outputs.
 * usb:
   - The PD is split into 'usb_signalling' and 'usb_protocol' (stacked on top).
   - Various bugfixes to make the PD work (better).
   - The DP/DM probes were swapped, this is now fixed.
   - Preliminary support for USB low-speed (in addition to full-speed).
 * mlx90614: Minor bugfixes.
 * dcf77:
    - Major bugfix, this PD was not working correctly at all.
    - Handle PON signal.
 * nunchuk: Complete rewrite, works (better) now.
 * spi: Update docs, send CS# change packets, change output API slightly.
   If you have a PD which stacks on top of SPI, it'll need to be adapted.
   The PDs that ship with libsigrokdecode are updated already.
 * mx25lxx05d:
   - Implement support for the READ, RDSR, and PP commands.
   - Decode status register bits.
   - Fix SE command handling.
   - Fix inverted SRWD bit handling.
 * Various smaller style and consistency changes in code and PD descriptions.
 * Fix the build with Homebrew on Mac OS X.
 * Performance improvements in some PDs.
 * Documentation: Update website and git URLs.
 * pkg-config file: Small fix to improve behaviour on Windows with cmake.
 * All PD implementation files are now named 'pd.py' consistently.
 * configure script:
   - Also check for python3.3-config in addition to python-config and others.
   - Add missing -fvisibility=hidden to default CFLAGS.
   - Fix CFLAGS handling (configure.ac amends CFLAGS, doesn't overwrite now).
 * The minimum required glib version is 2.24.0 now.
 * We now ship a standard INSTALL file which documents the 'configure' options.

0.1.0 (2012-04-17)
------------------

 * Initial release.