summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2018-01-13i2c: Drop obsolete 10bit slave address TODO.Uwe Hermann
Nobody has seen any such slave in the wild, yet. In the very unlikely case that someone actually sees or needs this, patches are welcome though (together with sample .sr files).
2018-01-03counter: make 'reset' signal polarity an optionGerhard Sittig
Allow configuration of the 'reset' signal polarity. Reset counters on either falling (default) or rising edges.
2018-01-03counter: Make "word reset" an explicit annotation class+row.Uwe Hermann
Also, add long and short annotation string versions.
2018-01-03Add a trivial "counter" decoderStefan Brüns
This decoder just counts the number of falling and/or rising edges. This is especially useful for diagnosing protocols with a clock signal or a fixed number of transitions per bit, e.g. pulse length coded. It also provides a divider, which can be used to e.g. count the number of words in I²C or SPI transfers.
2018-01-01parallel: implement consistent number formattingGerhard Sittig
Print all annotations for individual data bit items and for the de-multiplexed words in a consistent style with leading zeros and constant width. This shall lend itself better to quick navigation during visual inspection, as well as automatic processing.
2018-01-01parallel: unbreak and improve "word" de-multiplexingGerhard Sittig
The previous implementation prepared but never fully enabled the accumulation of several multi-bit items into words that span multiple bus cycles (think: address or data de-multiplexing on memory busses). Complete the accumulation, and fixup the end samplenumber for word annotations. Fixup the endianess logic (the condition was inverted). Rephrase calculation to be more Python idiomatic. Default to word size zero, and only emit word annotations for non-zero word size specs. This keeps the implementation backwards compatible and still passes the test suite. Default behaviour is most appropriate for interactive use in GUI environments, while automated processing will find consistent behaviour across all setups (non-multiplexed busses, and multiplexed busses with "words" that span one or multiple cycles).
2018-01-01parallel: cope with sparse input mappings, assume zero for not-connected pinsGerhard Sittig
Cope when users only provide e.g. input lines D0 and D2 to the parallel decoder. Assume that not-connected pins are "always zero". Rephrase the .decode() logic which determines .wait() conditions while we are here, to slightly unobfuscate the implementation. This fixes bug #1088.
2018-01-01parallel: address minor style nits, no change in behaviourGerhard Sittig
Remove the redundant .itemcount variable, which exactly corresponds to the length of the .items array. Arrange retrieval of options and their evaluation closer to each other for improved readability. Use common logic to construct "words" from several multi-bit "items". Arrange for endianess support by optionally reversing the array before traversal.
2018-01-01parallel: unify decode() code paths with and without clock signalGerhard Sittig
Instead of implementing two main loops for operation in the presence and in the absence of a clock line, use a common main loop which operates on pre-determined wait conditions.
2017-12-22usb_power_delivery: enforce check order for start-of-packet sequencesGerhard Sittig
The list of a dictionary's keys need not reproduce in identical order everywhere. Make sure to run all start-of-packet sequence checks in the decoder implementation in a specific order on each machine, such that annotations get emitted with identical content and in the same order for each execution of the decoder. This fixes the remaining part of bug #1090.
2017-12-22usb_power_delivery: fixup a Python style nit (dict lookup fallback)Gerhard Sittig
Use the dictionary's .get() method in combination with a default result parameter, instead of an explicit "k in dictvar" test and a conditional assignment.
2017-12-22usb_power_delivery: enforce numerical order of RDO/PDO flag annotationsGerhard Sittig
Annotations of the USB power delivery decoder contain multiple text fragments that correspond to several flags in bit fields. The Python runtime did not guarantee an order of emission and made the test suite fail. Sort the order in which RDO and PDO flags related text fragments get constructed and concatenated. Print text for higher bit positions first as this might feel more intuitive to users. This fixes part of bug #1090.
2017-12-22all decoders: introduce a reset() methodGerhard Sittig
Move initialization code of protocol decoders from the constructor to a new reset() helper method. The libsigrokdecode backend could run this method several times to clear the decoder's internal state, before new data from another acquisition gets fed to decode() calls.
2017-12-22ssi32: rename reset() helper methodGerhard Sittig
The ssi32 decoder implements a reset() method which clears internally accumulated data during decoding. Rename the method before all decoders will grow a new reset() method that will be used for a different purpose.
2017-12-22mrf24j40: rename reset() helper methodGerhard Sittig
The mrf24j40 decoder implements a reset() method which clears internally accumulated data during decoding. Rename the method before all decoders will grow a new reset() method that will be used for a different purpose.
2017-12-22ade77xx: rename reset() helper methodGerhard Sittig
The ade77xx decoder implements a reset() method which clears internally accumulated data during decoding. Rename the method before all decoders will grow a new reset() method that will be used for a different purpose.
2017-12-22sdcard_sd: remove unused .reset() methodGerhard Sittig
The decoder's .reset() method seems to partially implement constructor's assignments, but is not referenced anywhere. There is neither a direct call site in the remainder of pd.py which uses the "reset" name, and runtime computation only references "handle_*()" methods for commands and responses. Drop the unused .reset() method in the individual decoder before the introduction of a common .reset() method approach for all decoders.
2017-12-22am230x: rename reset() helper methodGerhard Sittig
The am230x decoder implements a reset() method which clears internal decoder state. Rename the method before all decoders will grow a new reset() method that will be used for a different purpose.
2017-12-22eeprom 24xx: rename reset() helper methodGerhard Sittig
2017-12-17ir_nec: Make timing margin relativeGrant Miller
This replaces the fixed timing margin with a percentage based tolerance to better allow for timing inaccuracies, especially for longer timings like the Leader and Repeat codes.
2017-12-09graycode: Move bitpack/bitunpack to common/.Uwe Hermann
2017-12-09Add a gray code and rotary encoder protocol decoder.Christoph Rackwitz
2017-12-09Add a morse code protocol decoder.Christoph Rackwitz
2017-12-09i2s: Fix unportable use of struct.packMarcus Comstedt
Using the format string 'I' with the default (implied) prefix '@' results in both word size and endianness being platform dependent. In this case standard size (32 bits) and little endianness is required, so the prefix '<' needs to be used.
2017-12-09maple_bus: Add helpers to make the call sites a bit shorter.Uwe Hermann
2017-12-09Add an initial Maple bus decoder.Marcus Comstedt
2017-11-11instance.c: Removed redundant variableJoel Holdsworth
2017-11-11configure.ac: Added AC_C_BIGENDIAN to autoconfJoel Holdsworth
This is needed so that WORDS_BIGENDIAN is defined on big-endian systems, which is needed by version.c .
2017-11-11i2s: Set file size to 4GbJoel Holdsworth
2017-11-11i2s: Make 32-bit wav filesJoel Holdsworth
2017-11-02ds243x: Add binary output for data read from EEPROMSoeren Apel
2017-11-02Rename ds2432 to ds243xSoeren Apel
2017-11-02ds2432: Adapt to allow for DS2433 as wellSoeren Apel
2017-10-19ds2432: Simplify MAC printing.Uwe Hermann
2017-10-19ds2432: Add a Maxim DS2432 protocol decoder.Kevin Redon
This fixes (parts of) bug #1019.
2017-09-22srd_init(): Print list of decoder search paths in debug output.Uwe Hermann
2017-09-06Clarify and improve channel map debug output.Uwe Hermann
2017-07-22usb_request: Remove code duplication, save end sample in central locationStefan Brüns
2017-07-22usb_request: Handle CONTROL transfer protocol stallsStefan Brüns
According to the USB 2.0 spec, 8.5.3.4, a protocol stall condition lasts until the next SETUP transfer. On reception of the SETUP, adjust the end sample accordingly, and flush the previous CONTROL transfer.
2017-07-06Fix a unit test.Uwe Hermann
Only try to acquire the GIL if the Python interpreter is actually initialized, otherwise there'll be a segfault.
2017-07-04can: introduce clock synchronization (simple implementation)Gerhard Sittig
Check for falling edges (i.e. changes to dominant state) between bits of a CAN frame, and adjust subsequent bit slots' sample points accordingly. This is a simple implementation which could get improved later. But it improves the decoder's reliability when the input signal's rate differs from the nominal rate. This fixes bug #990. Reported-By: PeterMortensen via IRC
2017-07-04can: rename 'bitpos' variableGerhard Sittig
Consistently use .sample_point for the member variable that corresponds to the 'sample_point' property. Use 'samplenum' in .get_sample_point() to reflect that the routine returns a sample number. This eliminates the 'bitpos' identifier which was used for two different things.
2017-06-30self.put(): Eliminate an unneeded malloc/free pair.Uwe Hermann
2017-06-30Acquire/release the Python GIL where needed to avoid threading issues.Uwe Hermann
With these additions, frontends can now call libsigrokdecode API functions from different threads without running into threading issues. The backend releases the GIL when it is performing tasks that might take a while and it doesn't need to run Python/C API calls during that time. This allows frontends to run multiple PD stacks (in multiple frontend threads) "at the same time" in a time-sharing, "interlocked" manner. Whenever one of the decoders is inside e.g. self.wait() it releases the GIL and thus allows other decoders to do some work in the mean time. The user-visible effect is that for use-cases such as running 3 different decoder stacks at the same time for an acquisition, the user will not have to wait for PD 1 to finish decoding, then wait for PD 2 to finish decoding, and only *then* being able to see annotations from PD 3. Instead, all three PDs will decode some chunks of data from time to time, thus the user is able to inspect annotations from all 3 PDs while the acquisition and decoding is still going on.
2017-06-21HACKING: Prefer git pull requests over mailing list patches.Uwe Hermann
Also, drop the reference to gitorious.org (no longer available).
2017-06-21pwm: Drop unused 'pins' variable.Uwe Hermann
2017-06-21ir_rc5: Rephrase open coded value for start bit 1Gerhard Sittig
Make obvious that the start bit's value is 1 in the IDLE stage.
2017-06-21lpc: Improve robustness when decoding unexpected input dataGerhard Sittig
The 'fields' table of state and descriptions is not fully populated, some slots are missing. Cope with lookup misses when unexpected input data is not found in the table. Use different error text in annotations for described but invalid states (the previous implementation used "reserved / invalid"), and for states that are not described in the table (introduce the "reserved / unknown" text for conditions that are not covered by the decoder implementation). The previous implementation missed the emission of some warnings. When a "reserved / invalid" description was found, the subsequent exact match for "reserved" failed and the warning was not emitted. Weaken the test to emit warnings for either description that has "reserved" in it, regardless of whether the text was found in the table or is not part of the table at all.
2017-06-21lpc: Nit, remove an unused variableGerhard Sittig
2017-06-21onewire_network: Fixup start samplenumber for annotationsGerhard Sittig
Annotations generated by the onewire_network decoder started where bit 1 began, while it should align with the start of bit 0.