Files
templates/tools/scope-decoders

Scope DSView decoder worker

Headless adapter for the DSView libsigrokdecode4DSL fork. Runs as an isolated process using the existing ARM DSView Python 3.11/GLib runtime. It does not start Qt, own the FPGA or modify output pins.

build_arm.py --help lists toolchain/sysroot/source/output arguments. Prepare the patched DSView sources and runtime sysroot using the board project's DSView build first. The script compiles the decoder library from source, not cached DSView objects. Deploy scope-decode-arm.elf and scope-decode beside dsview/. The wrapper configures Python and the shared SETProtocol library.

./scope-decode --catalog /path/to/decoders catalog.tsv
./scope-decode --decode /path/to/decoders result.tsv 1:uart config.ini capture.bin
python3 test_worker.py ./scope-decode /path/to/decoders

Snapshot: LDS1, three little-endian uint32 values (clock Hz, divider, count), then count bytes, bits D0-D7. Sample rate = clock / (divider + 1). Maximum 65536 samples. Config is INI, one section per decoder ID, e.g.:

[1:uart]
ch.rxtx=0
opt.baudrate=9600

Missing optional channels are disconnected. Mandatory channels must be mapped to D0-D7. The worker resolves protocol stacks, prefers direct logic producers, and passes options to each layer. It emits tab-separated D/C/O catalogue records, E import errors, and A annotation records with start/end samples, decoder, row, text. Module names and decoder IDs are intentionally distinct (e.g. 0-uart and 0:uart). Numeric DSView annotations are exported as hexadecimal text. Results retain up to 4096 annotations and explicitly report truncation.

Catalogue and options come from the installed decoders, not a hand-written list. The board UI must enforce a process timeout; the included integration uses 30 s. test_worker.py checks both DSView UART variants with known bytes and timestamps. This does not imply every protocol or electrical interface has been tested.

The adapter is GPL-2.0-or-later; linking with DSView's GPL-3.0-or-later decoder library produces a GPL-3.0-or-later executable. Retain DSView/libsigrokdecode and Python/runtime notices when redistributing the runtime.