]> sigrok.org Git - libsigrokdecode.git/log
libsigrokdecode.git
7 years agoonewire_link: (Re-)convert to PD API version 3.
Uwe Hermann [Fri, 7 Apr 2017 06:09:56 +0000 (08:09 +0200)]
onewire_link: (Re-)convert to PD API version 3.

7 years agoonewire_link: Factor out some helper methods.
Uwe Hermann [Thu, 6 Apr 2017 17:27:37 +0000 (19:27 +0200)]
onewire_link: Factor out some helper methods.

This avoids some boilerplate in the decode() method itself.

7 years agoImplement new 1-Wire link decoder using time ranges
King Kévin [Sun, 26 Mar 2017 17:31:56 +0000 (19:31 +0200)]
Implement new 1-Wire link decoder using time ranges

Rewrite of the 1-Wire link decoder.

Existing outputs are kept and new warnings are added.

Instead of sampling at fixed user defined time, time ranges as
specified by the "Book of iButton Standards" are used.

The user does not have to tweak the timing values anymore.

Overdrive speed is detected automatically.

This fixes bugs #666 and #926.

7 years agoiec: Convert to PD API version 3
Marcus Comstedt [Fri, 31 Mar 2017 18:21:08 +0000 (20:21 +0200)]
iec: Convert to PD API version 3

7 years agoDon't show a harmless/confusing warning on stdout.
Uwe Hermann [Fri, 31 Mar 2017 17:18:19 +0000 (19:18 +0200)]
Don't show a harmless/confusing warning on stdout.

Some Python versions will lead to the following message on stdout currently:

  srd: Attribute Error: Failed to load decoder common: no 'Decoder' \
  attribute in imported module: 'module' object has no attribute 'Decoder'

This is a harmless (though confusing for users) warning, since "common"
is not an actual PD and it shouldn't be loaded as PD (it just has to
be present).

7 years agoeeprom24xx: add Xicor X24C02 variant
fenugrec [Mon, 20 Mar 2017 22:56:25 +0000 (18:56 -0400)]
eeprom24xx: add Xicor X24C02 variant

7 years agodali: Use a slightly better variable name.
Uwe Hermann [Sat, 18 Mar 2017 22:03:17 +0000 (23:03 +0100)]
dali: Use a slightly better variable name.

7 years agodsi: Use a slightly better variable name.
Uwe Hermann [Sat, 18 Mar 2017 22:01:56 +0000 (23:01 +0100)]
dsi: Use a slightly better variable name.

7 years agodsi: Small fix for the longname.
Uwe Hermann [Sat, 18 Mar 2017 21:58:41 +0000 (22:58 +0100)]
dsi: Small fix for the longname.

7 years agoAdd a DALI protocol decoder.
Jeremy Swanson [Thu, 16 Feb 2017 16:29:47 +0000 (16:29 +0000)]
Add a DALI protocol decoder.

7 years agoAdd a DSI protocol decoder.
Jeremy Swanson [Thu, 16 Feb 2017 16:29:47 +0000 (16:29 +0000)]
Add a DSI protocol decoder.

7 years agouart: Minor cosmetic changes.
Uwe Hermann [Wed, 15 Mar 2017 08:27:43 +0000 (09:27 +0100)]
uart: Minor cosmetic changes.

7 years agouart: Use consistent order of steps when processing samples
Gerhard Sittig [Tue, 14 Mar 2017 18:01:04 +0000 (19:01 +0100)]
uart: Use consistent order of steps when processing samples

Slightly rearrange some of the methods which are involved in UART frame
inspection. Use a consistent sequence of steps: Grab the signal's
current value, accumulate and process the information, emit respective
annotations, and advance to the next stage in the UART frame inspection.

7 years agouart: Remove redundant "reached bit" checks
Gerhard Sittig [Tue, 14 Mar 2017 18:15:31 +0000 (19:15 +0100)]
uart: Remove redundant "reached bit" checks

After the decode() method got adjusted to call wait() with custom made
conditions and to check .matched[] before inspecting samples, the check
whether a bit time's sample point was reached has become obsolete.

7 years agouart: Improve robustness of query API result processing
Gerhard Sittig [Tue, 14 Mar 2017 17:46:32 +0000 (18:46 +0100)]
uart: Improve robustness of query API result processing

Since either of the UART signals (RX, TX) is optional, and in the
absence of Decoder.wait() conditions that "will never match", we cannot
construct a constant layout. Instead we need to explicitly keep track of
which item in the list of wait conditions corresponds to which signal.

Once the index in the list of wait conditions is known, inspection of
samples can depend on the Decoder.matched[] attribute. Before this
change, redundant reached_bit() checks kept us from processing samples
that should not have been inspected. Tests pass before and after this
very commit.

7 years agouart: Reduce redundancy in sample inspection (state machine)
Gerhard Sittig [Tue, 14 Mar 2017 17:15:51 +0000 (18:15 +0100)]
uart: Reduce redundancy in sample inspection (state machine)

Factor out the logic which inspects samples that were provided by the
PD version 3 query API, and dispatches their processing depending on
the progress of UART frame inspection. "Unroll" a loop over the RX and
TX signals.

This commit replaces some complicated variable assignments by easier to
verify invocations.

7 years agouart: Convert to PD API version 3
Gerhard Sittig [Tue, 14 Mar 2017 17:00:06 +0000 (18:00 +0100)]
uart: Convert to PD API version 3

Adjust the UART protocol decoder, to make use of the query based API.
Have edges detected and unrelated samples skipped by common code.

This implementation keeps some redundancy in place (like checking for
having reached specific sample numbers, while the backend managed that
for us). This approach reduces the diff and shall simplify review.

Only some common checks in decode() were moved to the start of the
routine, outside of the sample inspection loop.

7 years agouart: Minor readability nit (position of start bit in calculation)
Gerhard Sittig [Tue, 14 Mar 2017 16:10:28 +0000 (17:10 +0100)]
uart: Minor readability nit (position of start bit in calculation)

Rephrase the bit slot index calculation for UART frames such that it
becomes more apparent whether a start bit is involved or whether an
array index needs adjustment due to Python range semantics.

This shall improve readability, and reduce the probability of off-by-one
errors during maintenance.

7 years agouart: Immediately skip reception of parity bits when not applicable
Gerhard Sittig [Tue, 14 Mar 2017 14:35:27 +0000 (15:35 +0100)]
uart: Immediately skip reception of parity bits when not applicable

When the UART frame does not contain a parity bit, then immediately
advance to reception of stop bits after all data bits were received.

This eliminates the necessity to run the parity check routine when
parity does not apply in the first place. Without this change, some
"dummy" sample needs to get inspected for correct operation of the
state machine.

7 years agouart: Remove an obsolete unused routine
Gerhard Sittig [Tue, 14 Mar 2017 14:33:07 +0000 (15:33 +0100)]
uart: Remove an obsolete unused routine

7 years agodecoder: terminate .wait() and .decode(), join threads for v3 instances
Gerhard Sittig [Sun, 5 Mar 2017 17:09:59 +0000 (18:09 +0100)]
decoder: terminate .wait() and .decode(), join threads for v3 instances

Add support to terminate blocking .wait() and .decode() method calls of
v3 decoder instances. This terminates the decoder thread's main routine
and allows to release associated resources. Cope with requested as well
as unexpected termination of decode() calls. Add debug messages to
thread related code paths.

Make sure to unblock the main thread which feeds the decoder thread.
This unbreaks situations where decoders e.g. throw "need samplerate to
decode" exceptions.

Drain Python errors which might remain from the most recent .decode()
execution, to not affect other code paths. This avoids an issue where
the creation of a new decoder instance fails in the presence of errors
from a previous run.

This fixes bug #902.

7 years agoconfigure summary: Show linker flags.
Uwe Hermann [Sun, 5 Mar 2017 16:05:06 +0000 (17:05 +0100)]
configure summary: Show linker flags.

7 years agoconfigure summary: Show whether shared/static build is enabled.
Uwe Hermann [Sun, 5 Mar 2017 16:04:38 +0000 (17:04 +0100)]
configure summary: Show whether shared/static build is enabled.

7 years agorgb_led_ws281x: Use self.samplenum.
Uwe Hermann [Sat, 4 Mar 2017 13:30:18 +0000 (14:30 +0100)]
rgb_led_ws281x: Use self.samplenum.

This is currently just a cosmetic change, but will make the conversion
to the PDv3 API slightly easier and more readable.

7 years agoDrop obsolete workarounds in PDs.
Uwe Hermann [Wed, 1 Mar 2017 23:03:16 +0000 (00:03 +0100)]
Drop obsolete workarounds in PDs.

Some PDs were using a temporary workaround for (as it turned out) a
refcounting issue that was fixed in 066fbafdc3ba734a73b5f7fcfa1dbae67ddebf8a.

7 years agosrd_decoder_load(): Drop dead code.
Uwe Hermann [Tue, 28 Feb 2017 08:04:55 +0000 (09:04 +0100)]
srd_decoder_load(): Drop dead code.

In 'except_out' the fail_txt variable is always non-NULL.

7 years agoFix memory leak in get_current_pinvalues()
Marcus Comstedt [Mon, 27 Feb 2017 21:33:17 +0000 (22:33 +0100)]
Fix memory leak in get_current_pinvalues()

The ownership of the tuple reference is transferred to the caller, so
the refcount should not be increased.

7 years agoMore refcounting fixes
Marcus Comstedt [Mon, 27 Feb 2017 21:24:23 +0000 (22:24 +0100)]
More refcounting fixes

PyList_SetItem steals a reference, so code calling that must either
transfer ownership or increase the refcount.

7 years agoinstance.c: Add a debug message for thread creation.
Uwe Hermann [Mon, 27 Feb 2017 07:42:44 +0000 (08:42 +0100)]
instance.c: Add a debug message for thread creation.

7 years agosrd_inst_decode(): Slightly more verbose error message.
Uwe Hermann [Sun, 26 Feb 2017 14:55:00 +0000 (15:55 +0100)]
srd_inst_decode(): Slightly more verbose error message.

7 years agoFix examples to show abs_end_samplenum as exclusive
Marcus Comstedt [Sun, 26 Feb 2017 12:10:06 +0000 (13:10 +0100)]
Fix examples to show abs_end_samplenum as exclusive

7 years agoReturn SRD_ERR_ARG from srd_inst_decode if samplenums are wrong
Marcus Comstedt [Sun, 26 Feb 2017 12:07:03 +0000 (13:07 +0100)]
Return SRD_ERR_ARG from srd_inst_decode if samplenums are wrong

This validates the requirements that
* abs_start_samplenum continues where the previous decode ended
* abs_end_samplenum is not lower than abs_start_samplenum

Failure to meet these requirements will make v3 decoders crash.

7 years agoFix refcounting bug in set_new_condition_list()
Marcus Comstedt [Sun, 26 Feb 2017 11:52:12 +0000 (12:52 +0100)]
Fix refcounting bug in set_new_condition_list()

py_conditionlist is an owned reference (it gets passed to Py_DecRef()
at the end), so we need to increment the refcount when assigning it
from the borrowed reference py_conds.

7 years agoinstance.c: fix a 'matched' vs 'matches' typo
Gerhard Sittig [Sun, 26 Feb 2017 08:16:36 +0000 (09:16 +0100)]
instance.c: fix a 'matched' vs 'matches' typo

The Decoder_wait() routine will populate the .matched attribute before
returning to the caller. The srd_inst_start() routine used to setup a
.matches attribute which is unexpected. Make both routines consistently
assign to 'matched' as that is what Python decoder implementations are
referencing.

7 years agoAdd an initial serial GPIB (IEC) decoder.
Marcus Comstedt [Wed, 15 Feb 2017 18:14:27 +0000 (19:14 +0100)]
Add an initial serial GPIB (IEC) decoder.

7 years agoClarify that {start,end,cur}_samplenum are absolute numbers.
Uwe Hermann [Tue, 21 Feb 2017 21:10:35 +0000 (22:10 +0100)]
Clarify that {start,end,cur}_samplenum are absolute numbers.

7 years agoinstance.c: Fix a compiler warning.
Uwe Hermann [Tue, 7 Feb 2017 09:40:29 +0000 (10:40 +0100)]
instance.c: Fix a compiler warning.

  ../instance.c: In function ‘srd_inst_find_by_id’:
  ../instance.c:485:3: warning: suggest parentheses around assignment used as truth value [-Wparentheses]
     if (di = srd_inst_find_by_id_stack(inst_id, tmp))
     ^~

7 years agoLook up instances by ID in the full stack
Karl Palsson [Mon, 28 Nov 2016 17:31:55 +0000 (17:31 +0000)]
Look up instances by ID in the full stack

srd_inst_find_by_id() previously only searched for instance IDs at the
bottom of any stacked decoders. Make it properly search all stacks,
just like srd_inst_find_by_obj() and more usefully when trying to
generate unique instance IDs.

No external API change, only the explicit behaviour of the API.

This fixes parts of bug #868.

Signed-off-by: Karl Palsson <redacted>
7 years agoSupport adding multiple instances of a decoder
Karl Palsson [Mon, 11 Apr 2016 15:25:42 +0000 (17:25 +0200)]
Support adding multiple instances of a decoder

srd_inst_new() used the decoder ID as the instance ID, preventing the use
of multiple instances of the same decoder in the same session. Simply
append a numerical suffix to later instances to allow more.

Required changes to cleanup to reliably free all memory. Valgrind checked.

This fixes parts of bug #868.

Based on original work by: Soeren Apel <redacted>
Signed-off-by: Karl Palsson <redacted>
7 years agoAdded intial ADF4350/1 decoder
Joel Holdsworth [Mon, 13 Feb 2017 04:44:19 +0000 (21:44 -0700)]
Added intial ADF4350/1 decoder

7 years agoz80: Convert to PD API version 3 (brute force)
Gerhard Sittig [Sun, 15 Jan 2017 10:26:19 +0000 (11:26 +0100)]
z80: Convert to PD API version 3 (brute force)

This implementation technically uses v3 API calls, but has yet to come
up with appropriate wait() conditions, to spend less time in the decoder
and have more tedious work done in the backend.

7 years agot55xx: Convert to PD API version 3
Gerhard Sittig [Sun, 15 Jan 2017 10:20:09 +0000 (11:20 +0100)]
t55xx: Convert to PD API version 3

7 years agosdcard_sd: Convert to PD API version 3
Gerhard Sittig [Sun, 15 Jan 2017 10:12:13 +0000 (11:12 +0100)]
sdcard_sd: Convert to PD API version 3

7 years agoqi: Convert to PD API version 3
Gerhard Sittig [Sun, 15 Jan 2017 10:09:45 +0000 (11:09 +0100)]
qi: Convert to PD API version 3

7 years agops2: Convert to PD API version 3
Gerhard Sittig [Sun, 15 Jan 2017 09:56:16 +0000 (10:56 +0100)]
ps2: Convert to PD API version 3

7 years agomdio: Convert to PD API version 3
Gerhard Sittig [Sun, 15 Jan 2017 09:50:46 +0000 (10:50 +0100)]
mdio: Convert to PD API version 3

7 years agoem4305: Convert to PD API version 3
Gerhard Sittig [Sun, 15 Jan 2017 09:48:44 +0000 (10:48 +0100)]
em4305: Convert to PD API version 3

7 years agoem4100: Convert to PD API version 3
Gerhard Sittig [Sun, 15 Jan 2017 09:44:19 +0000 (10:44 +0100)]
em4100: Convert to PD API version 3

7 years agolicense: remove FSF postal address from boiler plate license text
Gerhard Sittig [Thu, 20 Oct 2016 07:55:29 +0000 (09:55 +0200)]
license: remove FSF postal address from boiler plate license text

Remove the FSF postal address as it might change (it did in the past).
Reference the gnu.org website instead which is more stable.

7 years agoconfigure.ac: Also check for Python 3.6.
Uwe Hermann [Mon, 26 Dec 2016 22:28:58 +0000 (23:28 +0100)]
configure.ac: Also check for Python 3.6.

7 years agoavr_pdi: Don't pass self.samplenum (use it), simplify code.
Uwe Hermann [Mon, 26 Dec 2016 17:47:10 +0000 (18:47 +0100)]
avr_pdi: Don't pass self.samplenum (use it), simplify code.

7 years agoavr_pdi: Convert to PD API version 3.
Gerhard Sittig [Sun, 4 Dec 2016 20:08:51 +0000 (21:08 +0100)]
avr_pdi: Convert to PD API version 3.

Switch to the v3 decoder API: The decode() methods takes no arguments,
instead it calls wait() and has common code find edges on input signals.

7 years agoavr_pdi: introduce decoder for Atmel Program and Debug Interface
Gerhard Sittig [Sat, 12 Nov 2016 22:19:47 +0000 (23:19 +0100)]
avr_pdi: introduce decoder for Atmel Program and Debug Interface

Introduce a decoder for Atmel's proprietary programming and debugging
interface which got introduced with ATxmega chips. This implementation
supports the UART style physical (two wires PDI_CLK and PDI_DATA).

7 years agousb_power_delivery: Convert to PD API version 3.
Uwe Hermann [Fri, 26 Aug 2016 13:21:39 +0000 (15:21 +0200)]
usb_power_delivery: Convert to PD API version 3.

7 years agotlc5620: Convert to PD API version 3.
Uwe Hermann [Fri, 26 Aug 2016 13:21:08 +0000 (15:21 +0200)]
tlc5620: Convert to PD API version 3.

7 years agotiming: Convert to PD API version 3.
Uwe Hermann [Fri, 26 Aug 2016 13:21:03 +0000 (15:21 +0200)]
timing: Convert to PD API version 3.

7 years agoswd: Convert to PD API version 3.
Uwe Hermann [Fri, 26 Aug 2016 13:20:17 +0000 (15:20 +0200)]
swd: Convert to PD API version 3.

7 years agostepper_motor: Convert to PD API version 3.
Uwe Hermann [Fri, 26 Aug 2016 13:19:54 +0000 (15:19 +0200)]
stepper_motor: Convert to PD API version 3.

7 years agospdif: Convert to PD API version 3.
Uwe Hermann [Fri, 26 Aug 2016 13:19:21 +0000 (15:19 +0200)]
spdif: Convert to PD API version 3.

7 years agoparallel: Convert to PD API version 3.
Uwe Hermann [Fri, 26 Aug 2016 13:17:52 +0000 (15:17 +0200)]
parallel: Convert to PD API version 3.

7 years agoonewire_link: Convert to PD API version 3.
Uwe Hermann [Fri, 26 Aug 2016 13:16:48 +0000 (15:16 +0200)]
onewire_link: Convert to PD API version 3.

7 years agojtag: Convert to PD API version 3.
Uwe Hermann [Fri, 26 Aug 2016 13:15:12 +0000 (15:15 +0200)]
jtag: Convert to PD API version 3.

7 years agojitter: Convert to PD API version 3.
Uwe Hermann [Fri, 26 Aug 2016 13:14:40 +0000 (15:14 +0200)]
jitter: Convert to PD API version 3.

7 years agoir_nec: Convert to PD API version 3.
Uwe Hermann [Fri, 26 Aug 2016 13:14:29 +0000 (15:14 +0200)]
ir_nec: Convert to PD API version 3.

7 years agoi2s: Convert to PD API version 3.
Uwe Hermann [Fri, 26 Aug 2016 13:14:07 +0000 (15:14 +0200)]
i2s: Convert to PD API version 3.

7 years agoi2c: Convert to PD API version 3.
Uwe Hermann [Fri, 26 Aug 2016 13:13:49 +0000 (15:13 +0200)]
i2c: Convert to PD API version 3.

7 years agoguess_bitrate: Convert to PD API version 3.
Uwe Hermann [Fri, 26 Aug 2016 13:13:21 +0000 (15:13 +0200)]
guess_bitrate: Convert to PD API version 3.

7 years agodcf77: Convert to PD API version 3.
Uwe Hermann [Fri, 26 Aug 2016 13:12:53 +0000 (15:12 +0200)]
dcf77: Convert to PD API version 3.

7 years agoaud: Convert to PD API version 3.
Uwe Hermann [Fri, 26 Aug 2016 13:11:16 +0000 (15:11 +0200)]
aud: Convert to PD API version 3.

7 years agoam230x: Convert to PD API version 3.
Uwe Hermann [Fri, 26 Aug 2016 13:09:41 +0000 (15:09 +0200)]
am230x: Convert to PD API version 3.

7 years agoAdd support for the new query-based PD v3 decoder API.
Uwe Hermann [Fri, 26 Aug 2016 13:09:17 +0000 (15:09 +0200)]
Add support for the new query-based PD v3 decoder API.

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.

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, the amount of oversampling etc. etc.).

This is only the first set of (basic) performance improvements for
libsigrokdecode, there are various additional opportunities for further
changes to improve performance.

This changeset has been tested to survive a run of all the test-cases in
the sigrok-test repo without issues (for the converted PDs), however it is
not very well-tested yet, so there might be regressions that need to be
addressed.

7 years agorepo mgmt: git ignore compiled Python bytecode files
Gerhard Sittig [Sun, 20 Nov 2016 17:18:57 +0000 (18:18 +0100)]
repo mgmt: git ignore compiled Python bytecode files

7 years agobuild support: sort list of installed items, factor out pretty printer
Gerhard Sittig [Sun, 20 Nov 2016 15:51:47 +0000 (16:51 +0100)]
build support: sort list of installed items, factor out pretty printer

Alpha-sort the list of installed items, to support developers which scan
the list for newly added items. Factor out the logic which pretty prints
installed items while maintaining a maximum screen output line length.

7 years agovalgrind: free channels
Karl Palsson [Tue, 29 Nov 2016 14:01:22 +0000 (14:01 +0000)]
valgrind: free channels

Signed-off-by: Karl Palsson <redacted>
7 years agovalgrind: safely iterate lists
Karl Palsson [Fri, 25 Nov 2016 13:55:56 +0000 (13:55 +0000)]
valgrind: safely iterate lists

Old versions triggered valgrind errors as the API method to remove an
entry modifies the list that was being iterated.

Signed-off-by: Karl Palsson <redacted>
7 years agospiflash: Major refactoring and annotation improvements.
Uwe Hermann [Sun, 6 Nov 2016 19:14:43 +0000 (20:14 +0100)]
spiflash: Major refactoring and annotation improvements.

7 years agospiflash: Use OrderedDict for cmds, more readable annotation indices.
Uwe Hermann [Sun, 6 Nov 2016 17:16:57 +0000 (18:16 +0100)]
spiflash: Use OrderedDict for cmds, more readable annotation indices.

7 years agospiflash: Initial RDSR2 implementation (incomplete).
Uwe Hermann [Sun, 6 Nov 2016 16:55:13 +0000 (17:55 +0100)]
spiflash: Initial RDSR2 implementation (incomplete).

This is not entirely correct yet, will be fixed later.

7 years agospiflash: Implement WRSR command.
Uwe Hermann [Sun, 6 Nov 2016 16:49:28 +0000 (17:49 +0100)]
spiflash: Implement WRSR command.

7 years agospiflash: Add FIDELIX FM25Q32 metadata.
Uwe Hermann [Sun, 30 Oct 2016 10:28:38 +0000 (11:28 +0100)]
spiflash: Add FIDELIX FM25Q32 metadata.

7 years agospiflash: Remove hardcoded Macronix references.
Uwe Hermann [Mon, 24 Oct 2016 00:02:12 +0000 (02:02 +0200)]
spiflash: Remove hardcoded Macronix references.

7 years agospiflash: Implement Release Power-down / Device ID (0xAB) command.
Uwe Hermann [Sun, 23 Oct 2016 22:36:45 +0000 (00:36 +0200)]
spiflash: Implement Release Power-down / Device ID (0xAB) command.

This fixes bug #845.

7 years agops2: Add more detailed per-bit annotations.
Uwe Hermann [Fri, 4 Nov 2016 01:04:03 +0000 (02:04 +0100)]
ps2: Add more detailed per-bit annotations.

7 years agops2: Neither the clock nor the data pin is optional.
Uwe Hermann [Thu, 3 Nov 2016 23:19:51 +0000 (00:19 +0100)]
ps2: Neither the clock nor the data pin is optional.

7 years agoAdd initial version of PS/2 decoder
Daniel Schulte [Sun, 16 Oct 2016 09:51:24 +0000 (11:51 +0200)]
Add initial version of PS/2 decoder

7 years agoPrint error messages when decoders fail load time checks
Gerhard Sittig [Sun, 16 Oct 2016 16:25:29 +0000 (18:25 +0200)]
Print error messages when decoders fail load time checks

Several checks get applied when loading externally provided protocol
decoders. Print error messages when checks fail, so that developers can
better resolve issues.

The sequence of tests terminates upon the first failed check, while
decoders may suffer from several issues at the same time. This is
considered acceptable, as it reduces the commit's size and the code's
complexity. This commit only adds error messages, and does not change
logic/behaviour.

Failed API version checks result in two messages: One specific message
which reflects the decoder's version and what's supported by the loader,
and a generic message that the API version check has failed. This is
done to simplify the logic of a rarely used error code path.

This commit addresses libsigrokdecode Bug 704, and allows to identify
decoders from parallel installations of differing version.

This fixes bug #704.

Signed-off-by: Gerhard Sittig <redacted>
7 years ago.gitattributes: introduce git attributes for improved Python diffs
Gerhard Sittig [Sun, 16 Oct 2016 16:25:25 +0000 (18:25 +0200)]
.gitattributes: introduce git attributes for improved Python diffs

In the absence of respective instructions, git will use a rather generic
approach to generate diffs and patches. Introduce a git attributes file
which results in improved output for Python sources (i.e. all protocol
decoders).

Signed-off-by: Gerhard Sittig <redacted>
7 years agospi: Fix binary output for wordsizes > 8.
Uwe Hermann [Sun, 23 Oct 2016 19:01:08 +0000 (21:01 +0200)]
spi: Fix binary output for wordsizes > 8.

For wordsizes > 8, multiple bytes are used (big-endian).

This fixes bug #686.

7 years agouart: Default to hex format datavalue annotations.
Uwe Hermann [Sun, 23 Oct 2016 16:35:01 +0000 (18:35 +0200)]
uart: Default to hex format datavalue annotations.

This is in almost all cases what the user will want, only rarely ASCII
(the old default) will be the more natural fit.

7 years agouart: Emit 2 bytes for 9-bit UART binary output.
Uwe Hermann [Fri, 23 Sep 2016 20:19:57 +0000 (22:19 +0200)]
uart: Emit 2 bytes for 9-bit UART binary output.

For 5..8 data bits the binary output will be 1 byte, for 9 data bits
it will be 2 bytes (big-endian).

This fixes bug #708.

7 years agouart: skip frames with invalid start bits
Gerhard Sittig [Sun, 16 Oct 2016 16:26:18 +0000 (18:26 +0200)]
uart: skip frames with invalid start bits

When the start bit is not low at its sample point, then stop trying
to interpret the remaining frame -- it's already known to be invalid,
anyway.

Wait for the next start bit instead, assuming that either the falling
edge which started the inspection of the UART frame and its start bit
was a spurious glitch or that the captured signal does not communicate
at the decoder's configured bitrate.

Signed-off-by: Gerhard Sittig <redacted>
7 years agouart: rework text formatting of communicated data values, plus nits
Gerhard Sittig [Sun, 16 Oct 2016 16:25:28 +0000 (18:25 +0200)]
uart: rework text formatting of communicated data values, plus nits

Factor out the code which generates a textual representation for the
numeric values that were communicated via UART bit patterns. Make the
width of the output text depend on the number of bits in the UART frame
(five to nine) instead of assuming bytes of exactly eight bits.

Fix other minor issues while we are here: Nine bits result in a number
range of 0 to 511 (not 512). ASCII codes 30 and 31 are non-printables.
The previous implementation skipped a significant leading digit in the
octal representation.

Signed-off-by: Gerhard Sittig <redacted>
7 years agouart: minor nit, rename the "databyte" variable
Gerhard Sittig [Sun, 16 Oct 2016 16:25:27 +0000 (18:25 +0200)]
uart: minor nit, rename the "databyte" variable

Given the generic nature of UART communication and the supported range
for the data width, "byte" may be a misleading name for the numeric
value that gets communicated in five to nine data bits. Rename the
"databyte" variable to "datavalue".

Signed-off-by: Gerhard Sittig <redacted>
7 years agoAdd an initial GPIB decoder.
Rudolf Reuter [Wed, 12 Oct 2016 00:51:28 +0000 (02:51 +0200)]
Add an initial GPIB decoder.

7 years agomidi: Add missing copyright lines.
Uwe Hermann [Sat, 24 Sep 2016 12:04:05 +0000 (14:04 +0200)]
midi: Add missing copyright lines.

7 years agomidi: Random cosmetic cleanups.
Uwe Hermann [Sat, 24 Sep 2016 11:36:19 +0000 (13:36 +0200)]
midi: Random cosmetic cleanups.

7 years agomidi: Simplify some boolean tests.
Uwe Hermann [Sat, 24 Sep 2016 11:23:49 +0000 (13:23 +0200)]
midi: Simplify some boolean tests.

7 years agomidi: Use "is" or "is not" with None.
Uwe Hermann [Sat, 24 Sep 2016 11:20:39 +0000 (13:20 +0200)]
midi: Use "is" or "is not" with None.

7 years agousb_request: Use "is" or "is not" with None.
Uwe Hermann [Sat, 24 Sep 2016 11:20:16 +0000 (13:20 +0200)]
usb_request: Use "is" or "is not" with None.

7 years agomidi: Add support for complex MIDI message formats (inter-related).
Chris [Mon, 12 Sep 2016 01:14:44 +0000 (18:14 -0700)]
midi: Add support for complex MIDI message formats (inter-related).

 - 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