]> sigrok.org Git - libsigrokdecode.git/commit
decoder: internal 'always false' term, handle invalid skip and channel
authorGerhard Sittig <redacted>
Sun, 24 Nov 2019 08:52:42 +0000 (09:52 +0100)
committerUwe Hermann <redacted>
Sun, 24 Nov 2019 19:41:54 +0000 (20:41 +0100)
commit1cb40e1077894db4c92cfa01b285e28b202cce6f
tree9322b633d4c97ca51672dc44f440350a0f0b6aa2
parent3f6cc6ddd99b790c9d527a64b41055f57501e414
decoder: internal 'always false' term, handle invalid skip and channel

Introduce an "always false" type for .wait() terms. Map invalid counts
of skip conditions (zero or negative numbers) as well as invalid channel
references for level/edge conditions to this type which never matches.
Keep this "always false" term type an internal detail of the common
support code.

This is most robust and least intrusive at the same time, it keeps the
existing API, and simplifies the implementation of Python decoders for
rare edge cases (optional input signals or optional features, handling
of initial samples at the very start of a capture).

This commit passes sample counts internally in a signed data type. This
is essential for proper operation, and the loss of one bit out of 64
shall not be considered a severe limitation.

This fixes bug #1444.
instance.c
libsigrokdecode-internal.h
type_decoder.c
util.c