]> sigrok.org Git - libsigrokdecode.git/commit
ieee488: introduce unified IEEE-488 decoder (supports GPIB and IEC)
authorGerhard Sittig <redacted>
Thu, 3 Oct 2019 02:38:01 +0000 (04:38 +0200)
committerUwe Hermann <redacted>
Fri, 6 Dec 2019 21:15:43 +0000 (22:15 +0100)
commit92ee3b2841960d3ac8ca736943cf23d73a41874e
treef77d1a2573ecdcad61159e37561e9e7b97e61ca5
parent0700c9030ea93742d47e78c1f74e206c77e906e4
ieee488: introduce unified IEEE-488 decoder (supports GPIB and IEC)

Introduce an 'ieee488' protocol decoder which handles both the 16 lines
parallel GPIB variant as well as the serial IEC bus variant. Which kind
of supersedes the 'gpib' and 'iec' decoders.

This implementation increases maintainability because only the extraction
of raw bytes from the parallel or serial bus is separate, and all GPIB
related command/address/data interpretation is shared. This decoder extends
the feature set of the previous versions: Visual annotations are more fine
grained (more classes, additional rows, various text lengths to maintain
usability during zoom). There is binary output for communicated data,
as well as Python output for stacked decoders. Consecutive runs of
talker data gets accumulated, and is made available in binary form as well
as text (with escapes for non-printables). The terse single-letter format
(character codes '0' to 'O' for addresses) is kept for compatibility for
those users who are accustomed to it. The implemented logic also copes
with captures of low samplerate, where edges happen to fall onto the same
sample number which at higher samplerates shall be perceived as distant
and should get processed in their respective order of appearance.

This implementation tracks the most recent configuration of "peers" (the
set of talkers and listeners). A future implementation might support the
isolation of a single conversation out of a busy chat on the bus.

Some optional support for Commodore peripherals is included (currently
limited to disk channels), while it's recommended to move this logic to
a stacked decoder if it grows more complex.
decoders/ieee488/__init__.py [new file with mode: 0644]
decoders/ieee488/pd.py [new file with mode: 0644]