libsigrok/src
Gerhard Sittig 8c5bd3d9c7 output/vcd: support analog data, more channels, minor cleanup
Extend and rephrase the VCD output module, to support mixed signal data,
support higher channel counts, and address other minor issues.

Increase the number of VCD identifiers which can get generated. Bump the
limit from 94 to 18346 channels. Prefer single letter names for backwards
compatibility for the first channels. Use two or three letter identifiers
as needed for higher channel counts.

Add support for analog channels, and carefully organize a queue such
that timestamps and their data only get written after input data for
_all_ channels was received from the session feed. Provide IEEE754
double precision values for maximum compatibility with other VCD aware
software, although sigrok internally passes analog data with single
precision. This makes potential later adjustment transparent to external
software.

Factor out and rephrase code while we are here. This implementation
avoids glib calls where they'd hurt performance. A local pool reduces
malloc() pressure to increase throughput. String manipulation is tuned
for simplicity and reduced cost. Special code paths were added to tune
the use cases where mixed signals are not involved (immediate write to
the output text, bypassing the output module's local queue).

An srzip input implementation detail still makes the VCD output consume
lots of memory during merge sort of channels' data. See bug #1566.

Other nits got addressed in bypassing: Adjust data types. Separate the
gathering of detail information and the construction of the VCD header
text to simplify review and future maintenance. Skip VCD identifiers for
disabled channels. Emit a final timestamp to flush the last sample, and
communicate the total capture length.

Update comments. Update the copyright for recent non-trivial changes.
2020-07-24 09:10:27 +02:00
..
bt bt/bt_bluez: Implement retry if rfcomm sockets are busy 2020-04-11 16:00:52 +02:00
dmm Doxygen: Properly mark a few symbols as private. 2020-03-25 20:10:24 +01:00
hardware fx2lafw: Use 1 as default for frame limit and reset num_frames 2020-07-13 23:07:56 +02:00
input input/vcd: rework VCD file import logic (vector, integer, real) 2020-07-24 09:10:27 +02:00
lcr lcr/vc4080: introduce LCR packet parser for Voltcraft 4080 (and PeakTech 2165) 2019-07-31 22:40:44 +02:00
modbus crc: Factor out CRC16 implementation from Modbus 2020-06-05 00:25:26 +02:00
output output/vcd: support analog data, more channels, minor cleanup 2020-07-24 09:10:27 +02:00
scale license: remove FSF postal address from boiler plate license text 2017-01-07 16:05:39 +01:00
scpi scpi_usbtmc_libusb: Retry if a Bulk-IN request starts with an empty packet 2020-06-25 00:03:24 +02:00
transform Doxygen: Properly mark a few symbols as private. 2020-03-25 20:10:24 +01:00
analog.c Doxygen: Fix various warnings. 2020-03-25 20:27:57 +01:00
backend.c build: prepare serial over Bluetooth, search for optional BlueZ lib 2019-06-02 20:39:02 +02:00
binary_helpers.c binary_helpers: Drop unnecessary malloc check. 2020-06-05 00:25:26 +02:00
conversion.c Doxygen: Fix various warnings. 2020-03-25 20:27:57 +01:00
crc.c src/crc.c: Add missing file. 2020-06-05 00:25:26 +02:00
device.c Doxygen: Fix various warnings. 2020-03-25 20:27:57 +01:00
driver_list_start.c drivers: Remove dependency on linker implementation specific behaviour 2017-09-02 17:06:37 +02:00
driver_list_stop.c drivers: Remove dependency on linker implementation specific behaviour 2017-09-02 17:06:37 +02:00
drivers.c Doxygen: Properly mark a few symbols as private. 2020-03-25 20:10:24 +01:00
error.c license: remove FSF postal address from boiler plate license text 2017-01-07 16:05:39 +01:00
ezusb.c drivers: Load firmware via new resource API 2015-10-01 15:44:55 +02:00
fallback.c serial: introduce more general "have serial comm" feature flag 2019-06-02 20:39:02 +02:00
hwdriver.c libsigrok.h: Add SR_MQ_ENERGY 2020-06-04 23:13:43 +02:00
libsigrok-internal.h input: introduce helper for buffered submission of sample data 2020-07-24 09:10:27 +02:00
log.c Add a new sr_log_callback_get() API call. 2018-08-30 19:11:30 +02:00
resource.c Doxygen: Fix various warnings. 2020-03-25 20:27:57 +01:00
scpi.h Doxygen: Properly mark a few symbols as private. 2020-03-25 20:10:24 +01:00
serial.c serial: accept bitrate only serialcomm= spec, default to 8n1 frames 2020-05-31 23:39:19 +02:00
serial_bt.c Doxygen: Properly mark a few symbols as private. 2020-03-25 20:10:24 +01:00
serial_hid.c Doxygen: Properly mark a few symbols as private. 2020-03-25 20:10:24 +01:00
serial_hid.h src/serial_hid.h: Include guard consistency fix. 2019-12-24 16:38:56 +01:00
serial_hid_bu86x.c Doxygen: Properly mark a few symbols as private. 2020-03-25 20:10:24 +01:00
serial_hid_ch9325.c Doxygen: Properly mark a few symbols as private. 2020-03-25 20:10:24 +01:00
serial_hid_cp2110.c Doxygen: Properly mark a few symbols as private. 2020-03-25 20:10:24 +01:00
serial_hid_victor.c Doxygen: Properly mark a few symbols as private. 2020-03-25 20:10:24 +01:00
serial_libsp.c Doxygen: Properly mark a few symbols as private. 2020-03-25 20:10:24 +01:00
session.c Fix compiler warnings related to -Wcast-function-type. 2020-05-02 17:01:39 +02:00
session_driver.c Fix various gcc 8 compiler warnings related to ARRAY_SIZE. 2018-10-06 19:13:39 +02:00
session_file.c Doxygen: Properly mark a few symbols as private. 2020-03-25 20:10:24 +01:00
soft-trigger.c Use std_session_send_df_trigger() where possible. 2020-04-08 23:21:39 +02:00
std.c std: avoid doube close 2020-06-24 23:20:41 +02:00
strutil.c strutil: introduce sr_atol_base() conversion helper (non-decimal) 2020-05-29 06:12:50 +02:00
sw_limits.c sw_limits: start msec timeout period only after start() call 2020-05-31 23:39:28 +02:00
trigger.c Doxygen: Properly mark a few symbols as private. 2020-03-25 20:10:24 +01:00
usb.c Fix compiler warnings related to -Wcast-function-type. 2020-05-02 17:01:39 +02:00
version.c license: remove FSF postal address from boiler plate license text 2017-01-07 16:05:39 +01:00