0.5.0 (2017-06-12) ------------------ 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: - ade77xx Poly phase multifunction energy metering IC protocol - adf435x Wideband synthesizer with integrated VCO - aud Renesas/Hitachi Advanced User Debugger (AUD) protocol - avr_pdi Atmel proprietary interface for the ATxmega MCU - dali DALI lighting control protocol - dsi DSI lighting control protocol - dmx512 Professional lighting control protocol - eeprom93xx 93xx series Microwire EEPROM protocol (bug #931) - em4305 EM4205/EM4305 100-150kHz RFID protocol - gpib IEEE-488 GPIB / HPIB protocol - iec Commodore serial IEEE-488 (IEC) bus protocol - microwire 3-wire, half-duplex, synchronous serial bus (bug #931) - ps2 PS/2 keyboard/mouse interface - rgb_led_ws281x RGB LED string protocol (WS281x) - ssi32 Synchronous Serial Interface (32bit) protocol - t55xx T55xx 100-150kHz RFID protocol - wiegand Wiegand interface for electronic entry systems * Add support for the new query-based PD v3 decoder API. - Decoders using PD v3 API can benefit from both readability improvements as well as performance improvements. Up to 10x speedup has been measured in some situations (depends a lot on the decoder, the amount of data, the amount of edges in the signals, and the amount of oversampling). - The majority of all decoders have been converted to PD API v3. - For the time being, both APIs (2 and 3) will remain supported until all decoders have been converted to API version 3. Then, support for API version 2 will be dropped. * Add support for specifying the (assumed) initial pin states before the first sample that is being decoded. This can be set to 0/low, 1/high, or to "use the same value as in the first sample". * Add support for adding multiple instances of a decoder (bug #868). * Introduce a decoders/common facility for code shared between PDs (bug #804). * Supply metadata to all stacked decoders, not just low-level ones (bug #664). * Various Doxygen/documentation improvements. * Factor out a srd_decoder_apiver() internal helper function. * srd_inst_decode(): Return SRD_ERR_ARG if unitsize is 0. * Print error messages when decoders fail load time checks (bug #704). * Fix multiple valgrind warnings (memory leaks and such). * Build system: Sort PD list alphabetically in "make install". * mdio: - Replace PD with a new implementation that also supports Clause 22 and 45. - Improve annotations slightly. * xfp: - Move various constants to common/plugtrx for reusability purposes. * sdcard_{sd,spi}: - Move various constants to common/sdcard for reusability purposes. * usb_request: - Drop hardcoded samplerate (workaround for the fixed bug #664). * spiflash: - Handle CS# transitions, allow variable-length transfers. - Handle "Fast Read Dual I/O" commands. - Add a "format" decoder option. - Implement Release Power-down / Device ID (0xAB) command (bug #845). - Remove hardcoded Macronix references. - Add initial FIDELIX FM25Q32 metadata/support. - Implement WRSR, RDSR2 commands. - Various annotation improvements. * timing: - Add frequency and averaging support. - Disable averaging feature if it's set to zero. - Add edge-edge mode and delta calculation. * midi: - Decode note names and percussion names (e.g. 'G2', 'Tambourine'). - Decode instrument names and drum_kit names (e.g. 'GS Orchestra Kit'). - Handle Polyphonic Pressure / Aftertouch (message 0xAn). - Handle Program Change (message 0xCn). - Handle Channel Pressure / Aftertouch (message 0xDn). - Handle Channel Mode (message 0xBn mm where mm is 120 through 127). - Handle System Common messages (message 0xF1 through 0xF6), including full time code decoding. - SysEx decoding now decodes the 1-3 byte manufacturer field, payload is now displayed as hex. - 'undefined' fields now display the value (e.g. 'undefined 0xf4'). - Add 'MSB' and 'LSB' to many control_functions entries. - Fix "trapped in state X" bug with handle_channel_msg_generic(), though this might be dead code. - Fix bug in sysex_manufacturer_ids; 1-byte manufacturers were not tuples due to missing comma. - Fix bug in SysEx state machine; 0xF7 now sent to handle_sysex_msg(). - Annotations: Provide multiple string versions (shorter and longer ones). - chromatic_notes in list.py was off by 1 octave. - Handle "Running Status" where status byte can be omitted. - SysEx message can be terminated by status byte, not just EOX. - Handle SysReal messages that interrupt in-progress message transmission. - Identify and print garbage / truncated data. - Add 2 new annotations: text-sysreal-verbose and text-error. * usb_power_delivery: - Drop problematic exception in us2samples() function (bug #758). * uart: - Fix a bug in the output for stacked PDs (when there's RX/TX overlap). - Various output formatting improvements (e.g. for ASCII and octal). - Skip frames with invalid start bits. - Emit 2 bytes for 9-bit UART binary output (bug #708). - Default to hex format datavalue annotations. * spi: - Fix binary output for wordsizes > 8 (bug #686). * sdcard_sd: - Don't try to decode commands that are not yet supported. - Always show CMD argument in hex. - Fix incorrect CMD8 annotations. * can: - Add warnings for various invalid bits and fields. - Skip stuff bit inspection where not applicable (bug #656). * eeprom24xx: - Add Xicor X24C02 support. * onewire_link: - Replace PD with a new, improved implementation (bugs #666, #926). - Overdrive speed is now detected automatically. - Some no longer needed decoder options have been dropped. * Various decoders: - Fix some incorrect PD license metadata fields. - Fix typos, whitespace issues and random other cosmetics in some PDs. - Use consistent __init__() format across all PDs. - Move some duplicated code snippets/lists to decoders/common. * Rename the maxim_ds28ea00 decoder to ds28ea00. * Show library versions in the debug output. * configure: Also check for Python 3.6. * configure summary: Show build type (static/shared) and linker flags. * Remove FSF postal address from boiler plate license text. * HACKING: Update URL to Linux kernel coding style. 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-" 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.