]> sigrok.org Git - libsigrok.git/log
libsigrok.git
5 years agooutput: fixup trigger marker position in ascii/bits/hex output modules
Gerhard Sittig [Wed, 27 Jun 2018 21:57:45 +0000 (23:57 +0200)]
output: fixup trigger marker position in ascii/bits/hex output modules

Adjust the calculation of the '^' marker's position in T: lines of the
-O ascii/bits/hex output modules such that it matches the sample data
lines' layout. Add comments which discuss the motivation of the marker
position's calculation, which differs among each of those modules.

Strictly speaking -O bits was already correct. But I chose to adjust and
comment the logic such that multiple output modules follow a common
pattern. If performance is an issue, the bits.c change might be worth
reverting.

This commit fixes bug #1238.

5 years agostd: Improve prototypes of some functions.
Uwe Hermann [Sun, 27 May 2018 19:14:37 +0000 (21:14 +0200)]
std: Improve prototypes of some functions.

5 years agorigol-ds: Add initial Agilent MSO7034A support.
Uwe Hermann [Fri, 22 Jun 2018 20:37:10 +0000 (22:37 +0200)]
rigol-ds: Add initial Agilent MSO7034A support.

Digital channels (and various other features) are not yet supported.

5 years agorigol-ds: Improve a log message.
Uwe Hermann [Thu, 31 May 2018 17:17:52 +0000 (19:17 +0200)]
rigol-ds: Improve a log message.

5 years agosiglent-sds: Drop currently unused switch/case.
Uwe Hermann [Wed, 21 Feb 2018 21:57:59 +0000 (22:57 +0100)]
siglent-sds: Drop currently unused switch/case.

5 years agosiglent_sds_channel_start(): Use ternary operator to shorten code.
Uwe Hermann [Wed, 21 Feb 2018 20:36:58 +0000 (21:36 +0100)]
siglent_sds_channel_start(): Use ternary operator to shorten code.

5 years agorigol-ds: Add missing "return SR_ERR".
Uwe Hermann [Fri, 22 Jun 2018 08:53:03 +0000 (10:53 +0200)]
rigol-ds: Add missing "return SR_ERR".

5 years agosiglent-sds: Fixed samplerate and memory depth calculation
marchelh [Mon, 5 Mar 2018 16:10:56 +0000 (17:10 +0100)]
siglent-sds: Fixed samplerate and memory depth calculation

5 years agosiglent-sds: Fix, USB connection problem partially solved, bug #1130
marchelh [Sun, 4 Mar 2018 12:27:19 +0000 (13:27 +0100)]
siglent-sds: Fix, USB connection problem partially solved, bug #1130

5 years agoudev: Add rule for Rigol DS4000 series devices.
Uwe Hermann [Thu, 21 Jun 2018 23:13:22 +0000 (01:13 +0200)]
udev: Add rule for Rigol DS4000 series devices.

5 years agorigol-ds: Initial patch for Rigol DS4000 support
Valentin Ochs [Thu, 24 May 2018 20:30:05 +0000 (22:30 +0200)]
rigol-ds: Initial patch for Rigol DS4000 support

This fixes bug #1208.

5 years agorigol-ds: Rename the CHANINFO macro and comment it
Valentin Ochs [Thu, 24 May 2018 20:59:52 +0000 (22:59 +0200)]
rigol-ds: Rename the CHANINFO macro and comment it

5 years agorigol-ds: Store trigger sources and their number for each model
Valentin Ochs [Thu, 24 May 2018 20:55:18 +0000 (22:55 +0200)]
rigol-ds: Store trigger sources and their number for each model

Store trigger sources and their number for each model when it is probed
and use that.

This fixes bug #299.

5 years agotests: Expand test_analog_unit_to_string unit test.
Uwe Hermann [Tue, 19 Jun 2018 05:22:12 +0000 (07:22 +0200)]
tests: Expand test_analog_unit_to_string unit test.

5 years agotests: Fix test_analog_unit_to_string unit test.
Uwe Hermann [Tue, 19 Jun 2018 05:03:29 +0000 (07:03 +0200)]
tests: Fix test_analog_unit_to_string unit test.

The loop body was never executed.

5 years agoserial-dmm: Fix Voltcraft VC-96 sorting.
Uwe Hermann [Mon, 18 Jun 2018 14:16:27 +0000 (16:16 +0200)]
serial-dmm: Fix Voltcraft VC-96 sorting.

5 years agodmm/vc96: Drop some obsolete debug output.
Uwe Hermann [Mon, 18 Jun 2018 14:07:18 +0000 (16:07 +0200)]
dmm/vc96: Drop some obsolete debug output.

5 years agoAdd support for the Voltcraft VC-96 DMM.
Matthias Schulz [Sun, 10 Jun 2018 18:25:32 +0000 (20:25 +0200)]
Add support for the Voltcraft VC-96 DMM.

5 years agodtm0660: Do not apply the exponent twice on the value
Adrian Stratulat [Fri, 15 Jun 2018 13:39:15 +0000 (16:39 +0300)]
dtm0660: Do not apply the exponent twice on the value

This fixes bug #1236.

5 years agoFix: Bug #1188 DSLogic triggering
Joerg Alpers [Sun, 3 Jun 2018 10:23:16 +0000 (12:23 +0200)]
Fix: Bug #1188 DSLogic triggering

5 years agofluke-45: Add initial driver implementation.
JohnCh [Sat, 9 Sep 2017 16:31:15 +0000 (17:31 +0100)]
fluke-45: Add initial driver implementation.

5 years agofluke-45: Initial driver skeleton.
JohnCh [Sat, 9 Sep 2017 16:31:15 +0000 (17:31 +0100)]
fluke-45: Initial driver skeleton.

5 years agogwinstek-gpd: Fix sr_dev_driver struct.
Uwe Hermann [Thu, 14 Jun 2018 22:18:22 +0000 (00:18 +0200)]
gwinstek-gpd: Fix sr_dev_driver struct.

5 years agogwinstek-gpd: Avoid some unnecessary assignments.
Uwe Hermann [Thu, 14 Jun 2018 20:20:57 +0000 (22:20 +0200)]
gwinstek-gpd: Avoid some unnecessary assignments.

5 years agogwinstek-gpd: Drop some unneeded debug logs.
Uwe Hermann [Thu, 14 Jun 2018 20:05:03 +0000 (22:05 +0200)]
gwinstek-gpd: Drop some unneeded debug logs.

5 years agogwinstek-gpd: Initial implementation.
Bastian Schmitz [Fri, 2 Feb 2018 16:45:32 +0000 (17:45 +0100)]
gwinstek-gpd: Initial implementation.

5 years agowav: Don't assume CHUNK_SIZE >= total_samples
Soeren Apel [Tue, 5 Jun 2018 14:53:59 +0000 (16:53 +0200)]
wav: Don't assume CHUNK_SIZE >= total_samples

5 years agohantek-4032l: Minor cosmetic fix.
Uwe Hermann [Tue, 5 Jun 2018 22:01:04 +0000 (00:01 +0200)]
hantek-4032l: Minor cosmetic fix.

5 years agohantek-4032l: Rename 'devc->buffer' to 'devc->buf'.
Uwe Hermann [Tue, 5 Jun 2018 21:58:57 +0000 (23:58 +0200)]
hantek-4032l: Rename 'devc->buffer' to 'devc->buf'.

This is shorter and also avoids confusion with transfer->buffer.

5 years agohantek-4032l: Rename number_samples to num_samples.
Uwe Hermann [Tue, 5 Jun 2018 21:56:30 +0000 (23:56 +0200)]
hantek-4032l: Rename number_samples to num_samples.

5 years agohantek-4032l: Use MIN() where possible.
Uwe Hermann [Tue, 5 Jun 2018 21:55:23 +0000 (23:55 +0200)]
hantek-4032l: Use MIN() where possible.

5 years agohantek-4032l: Simplify some config_get/_set parts.
Uwe Hermann [Tue, 5 Jun 2018 21:43:23 +0000 (23:43 +0200)]
hantek-4032l: Simplify some config_get/_set parts.

Also, drop some unneeded checks.

5 years agohantek-4032l: config_set(): Simplify SR_CONF_CAPTURE_RATIO case.
Uwe Hermann [Tue, 5 Jun 2018 21:14:51 +0000 (23:14 +0200)]
hantek-4032l: config_set(): Simplify SR_CONF_CAPTURE_RATIO case.

The sr_config_set() wrapper already checks the value.

5 years agohantek-4032l: Drop some unneeded malloc checks.
Uwe Hermann [Tue, 5 Jun 2018 21:02:58 +0000 (23:02 +0200)]
hantek-4032l: Drop some unneeded malloc checks.

As per guidelines in HACKING.

5 years agohantek-4032l: Reduce indentation level a bit.
Uwe Hermann [Tue, 5 Jun 2018 20:59:29 +0000 (22:59 +0200)]
hantek-4032l: Reduce indentation level a bit.

5 years agozketech-ebd-usb: Fix a compiler warning.
Uwe Hermann [Tue, 5 Jun 2018 17:40:46 +0000 (19:40 +0200)]
zketech-ebd-usb: Fix a compiler warning.

5 years agohantek-4032l: Add support for external clocks.
Andrej Valek [Mon, 28 May 2018 17:51:29 +0000 (19:51 +0200)]
hantek-4032l: Add support for external clocks.

These options are NOT available for FPGA version 0.

- add option to select edge type

Signed-off-by: Andrej Valek <redacted>
5 years agoAdd SR_CONF_EXTERNAL_CLOCK_SOURCE key.
Andrej Valek [Mon, 28 May 2018 17:51:29 +0000 (19:51 +0200)]
Add SR_CONF_EXTERNAL_CLOCK_SOURCE key.

Signed-off-by: Andrej Valek <redacted>
5 years agohantek-4032l: Separate threshold channels.
Andrej Valek [Tue, 22 May 2018 20:33:12 +0000 (22:33 +0200)]
hantek-4032l: Separate threshold channels.

Split global threshold into channels A and B.

Signed-off-by: Andrej Valek <redacted>
5 years agohantek-4032l: Set new pwm threshold handling.
Andrej Valek [Tue, 22 May 2018 20:33:12 +0000 (22:33 +0200)]
hantek-4032l: Set new pwm threshold handling.

Calculate threshold values from <-6.0;6.0> range.

Signed-off-by: Andrej Valek <redacted>
5 years agohantek-4032l: Implement trigger handling.
Andrej Valek [Mon, 30 Apr 2018 18:00:11 +0000 (20:00 +0200)]
hantek-4032l: Implement trigger handling.

Send trigger position to upper layer.

Signed-off-by: Andrej Valek <redacted>
5 years agohantek-4032l: Set maximum samples size to 64MB.
Andrej Valek [Mon, 30 Apr 2018 13:29:17 +0000 (15:29 +0200)]
hantek-4032l: Set maximum samples size to 64MB.

Signed-off-by: Andrej Valek <redacted>
5 years agohantek-4032l: Increase speed of data getting.
Andrej Valek [Sun, 29 Apr 2018 21:20:51 +0000 (23:20 +0200)]
hantek-4032l: Increase speed of data getting.

- add support for multiple transfers.
 - set nummber of samples to 1 for FPGA FW version 0
- increase size of data transfer buffer to 2kB.

Signed-off-by: Andrej Valek <redacted>
5 years agohantek-4032l: Separate USB receive callbacks.
Andrej Valek [Sun, 29 Apr 2018 20:38:47 +0000 (22:38 +0200)]
hantek-4032l: Separate USB receive callbacks.

Callback for data transfer is separated from status. This change will be
used for better data transfer sending/receiving. Cast signal, that trigger
has been captured was moved into state: H4032L_STATUS_FIRST_TRANSFER.

Signed-off-by: Andrej Valek <redacted>
5 years agohantek-4032l: Get FGPA version.
Andrej Valek [Sun, 29 Apr 2018 20:15:12 +0000 (22:15 +0200)]
hantek-4032l: Get FGPA version.

- get FPGA version in dev_open
 - enable some features only for newer FPGA
- decrease printing number of message of FPGA version

Signed-off-by: Andrej Valek <redacted>
5 years agohantek-4032l: Unify style.
Andrej Valek [Sun, 29 Apr 2018 20:07:09 +0000 (22:07 +0200)]
hantek-4032l: Unify style.

Signed-off-by: Andrej Valek <redacted>
5 years agoFix #1167 by not creating sigrok channels twice
Soeren Apel [Sun, 3 Jun 2018 14:50:27 +0000 (16:50 +0200)]
Fix #1167 by not creating sigrok channels twice

Also fixes a similar bug in the analog_raw input module that prevented
it from resetting properly - it freed its resources by calling cleanup().

5 years agoinput/logicport: remove obsolete reset/cleanup assignments
Gerhard Sittig [Sun, 3 Jun 2018 16:32:29 +0000 (18:32 +0200)]
input/logicport: remove obsolete reset/cleanup assignments

The in->buf truncation is done by common backend logic. The module's
cleanup() does zero out inc, which obsoletes the flag assignments.

5 years agoinput/logicport: don't re-create channels after input module reset
Gerhard Sittig [Sun, 3 Jun 2018 08:31:17 +0000 (10:31 +0200)]
input/logicport: don't re-create channels after input module reset

Split the creation of channels and groups as well as the creation of the
session feed buffer into separate routines. Re-allocate the buffer after
reset but do not re-create the channels and groups.

This implementation assumes that after reset() of the input module, the
very same set of channels (including their order, names and enabled
state, as well as group membership) results from processing the
subsequently fed file content. Reading rather different configurations
from the same input file by means of repeated reset and re-read may not
work as expected.

5 years agoinput/logicport: silence a non-fatal glib runtime assertion
Gerhard Sittig [Sun, 3 Jun 2018 06:37:10 +0000 (08:37 +0200)]
input/logicport: silence a non-fatal glib runtime assertion

Explicitly check GString pointers for validity before calling glib
routines that would access string content. This silences an assertion
error for a non-fatal runtime condition:

(process:17044): GLib-CRITICAL **: g_string_free: assertion 'string != NULL' failed

5 years agoinput: clear sdi_ready flag and receive() buffer in common code
Gerhard Sittig [Sun, 3 Jun 2018 06:05:43 +0000 (08:05 +0200)]
input: clear sdi_ready flag and receive() buffer in common code

Rephrase common input reset logic such that additional common code can
execute after the individual module's reset callback. No behaviour has
changed, the module's reset callback still is optional, and identical
log output gets emitted.

Do clear the sdi_ready flag in the common sr_input_reset() routine, so
that all input modules will parse header information again before
processing sample data when subsequent calls receive new file content.
Void the input module's receive() buffer from common reset code. This
unbreaks the feature of re-reading previously consumed input files.

Extend comments in the common reset and free code paths, which involve
the modules' reset and cleanup routines, which interact in non-trivial
ways. Discuss the responsibilities of common and individual routines, to
remain aware during maintenance.

5 years agohantek-6xxx: Drop some unused variables.
Uwe Hermann [Sat, 2 Jun 2018 21:23:55 +0000 (23:23 +0200)]
hantek-6xxx: Drop some unused variables.

5 years agohantek-6xxx: FIFO sampling
Sergey Alirzaev [Thu, 31 May 2018 16:04:34 +0000 (19:04 +0300)]
hantek-6xxx: FIFO sampling

It doesn't buffer all the samples before sending them out anymore.

This fixes bug #1214.

5 years agoscpi-pps: Rigol DP71x: Make OVP/OCP threshold listable.
Uwe Hermann [Fri, 1 Jun 2018 13:09:40 +0000 (15:09 +0200)]
scpi-pps: Rigol DP71x: Make OVP/OCP threshold listable.

5 years agoscpi: Use locale independent sr_vsnprintf_ascii() and sr_vsprintf_ascii() functions.
Frank Stettner [Sun, 11 Feb 2018 15:01:51 +0000 (16:01 +0100)]
scpi: Use locale independent sr_vsnprintf_ascii() and sr_vsprintf_ascii() functions.

5 years agotests: Tests for the locale independent sr_vsprintf_ascii() function.
Frank Stettner [Sun, 11 Feb 2018 15:00:19 +0000 (16:00 +0100)]
tests: Tests for the locale independent sr_vsprintf_ascii() function.

5 years agostrutil: Locale independent sprintf() and vsprintf() functions
Frank Stettner [Sun, 11 Feb 2018 14:59:26 +0000 (15:59 +0100)]
strutil: Locale independent sprintf() and vsprintf() functions

5 years agoscpi-pps: Add listable OVP/OCP threshold for HP 66xxx and prepared all other
Frank Stettner [Thu, 7 Dec 2017 11:59:24 +0000 (12:59 +0100)]
scpi-pps: Add listable OVP/OCP threshold for HP 66xxx and prepared all other

5 years agoscpi-pps: Add HP 6631B, HP 66332A, HP 6633B and HP 6634B power supplies
Frank Stettner [Thu, 7 Dec 2017 11:36:53 +0000 (12:36 +0100)]
scpi-pps: Add HP 6631B, HP 66332A, HP 6633B and HP 6634B power supplies

5 years agoscpi-pps: Add missing functionality for the HP 6632B power supply.
Frank Stettner [Thu, 7 Dec 2017 11:17:58 +0000 (12:17 +0100)]
scpi-pps: Add missing functionality for the HP 6632B power supply.

5 years agoscpi-pps: Reimplemention of switching channel groups (PSU channels)
Frank Stettner [Sat, 9 Dec 2017 18:45:02 +0000 (19:45 +0100)]
scpi-pps: Reimplemention of switching channel groups (PSU channels)

Acquisition won't work correctly in a multi-threaded environment, when
config_set() and config_get() are called with a channel group.
The channel switching itself has moved to scpi/scpi.c, to be able to
handle switching in a thread safe way.

5 years agoscpi-pps: Use thread safe SCPI functions, return float not double.
Frank Stettner [Sat, 11 Nov 2017 17:20:07 +0000 (18:20 +0100)]
scpi-pps: Use thread safe SCPI functions, return float not double.

Use of the thread safe SCPI functions, so no write+read operation is
interruped.

Also return float values instead of double value in acquisition mode.
This is related to bug #779.

5 years agoscpi: Synchronize read, write and write+read operations.
Frank Stettner [Sat, 11 Nov 2017 15:29:55 +0000 (16:29 +0100)]
scpi: Synchronize read, write and write+read operations.

This ensures that SCPI read/write/write+read operations are thread safe.
F.e.: If a write operation expects a return value (in other words: a
read operation), it is not allowed to be interrupted by another write
operation.

To simplify things, the SCPI helper functions are moved from
scpi/helpers.c to scpi/scpi.c and also are renamed to fit the naming
scheme.

libgpib in particular will abort the program execution in case of
concurrent operations.

5 years agoscpi.c: Drop an unneeded log message.
Uwe Hermann [Thu, 31 May 2018 18:53:31 +0000 (20:53 +0200)]
scpi.c: Drop an unneeded log message.

The IDN string is already logged by sr_scpi_get_string().

5 years agoscpi_serial.c: Improve an error message.
Uwe Hermann [Thu, 31 May 2018 18:44:33 +0000 (20:44 +0200)]
scpi_serial.c: Improve an error message.

5 years agoscpi_serial.c: Drop an unneeded log message.
Uwe Hermann [Thu, 31 May 2018 18:26:50 +0000 (20:26 +0200)]
scpi_serial.c: Drop an unneeded log message.

The number of bytes read is already logged by the serial backend:

  sr: [00:00.072857] scpi_serial: Read 1 bytes into buffer.
  sr: [00:00.073884] serial: Read 1/2008 bytes.
  sr: [00:00.073900] scpi_serial: Read 1 bytes into buffer.
  sr: [00:00.074896] serial: Read 1/2007 bytes.
  sr: [00:00.074905] scpi_serial: Read 1 bytes into buffer.
  sr: [00:00.075949] serial: Read 1/2006 bytes.

5 years agoscpi-pps: Add support for the Rigol DP711/DP712.
Uwe Hermann [Thu, 31 May 2018 17:26:50 +0000 (19:26 +0200)]
scpi-pps: Add support for the Rigol DP711/DP712.

5 years agoinput/chronovu_la8: claim responsibility for LA16 files, devel comments
Gerhard Sittig [Fri, 25 May 2018 17:13:11 +0000 (19:13 +0200)]
input/chronovu_la8: claim responsibility for LA16 files, devel comments

The chronovu_la8 input module is capable of handling either file type,
generated by LA8 or LA16 vendor software. Automatic detection is not
available, but user provided channel counts work fine.

Adjust the input module's name and description, and claim support for
.kdt as well as .kd1 files.

Add developer notes on implementation details, the file content's
constraints, and potential future adjustment.

5 years agoinput/chronovu_la8: only send data to the session, don't send the header
Gerhard Sittig [Sun, 13 May 2018 10:28:07 +0000 (12:28 +0200)]
input/chronovu_la8: only send data to the session, don't send the header

The file format is funny, a data part is leading (fixed size) and a
"header" part follows. The previous implementation sent the header part
to the session, too, pretending it was part of the data. This change
limits the number of samples that get sent to the session.

Comment on the file layout and header fields while we are here. This
information got lost in commit 02e24c0ce0d8 when the input module got
converted from do-it-yourself file operations to having intrinsic
handler routines invoked from common logic which handles the file.

5 years agoinput/logicport: unobfuscate 64-bit-clean bit mask literals
Gerhard Sittig [Mon, 21 May 2018 18:08:14 +0000 (20:08 +0200)]
input/logicport: unobfuscate 64-bit-clean bit mask literals

Prefer the more portable UINT64_C() macro over the UL suffix when a
literal needs to span "more than 31 bit positions". Adjust other
locations for consistency across the source file.

5 years agoinput/trace32_ad: fix potential buffer overflow for unexpected input data
Gerhard Sittig [Mon, 21 May 2018 17:55:58 +0000 (19:55 +0200)]
input/trace32_ad: fix potential buffer overflow for unexpected input data

Commit 8c4bff1d25e1 introduced a routine which prints what mostly should
be text, and avoids non-printable characters. This implementation used an
incorrect format string, which could result in data getting written past
the end of a buffer. Fix the format string.

5 years agohwdriver.c: Fix two scan-build warnings.
Uwe Hermann [Sat, 19 May 2018 20:04:22 +0000 (22:04 +0200)]
hwdriver.c: Fix two scan-build warnings.

  src/hwdriver.c: In function ‘log_key’:
  src/hwdriver.c:648:13: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
    opstr = op == SR_CONF_GET ? "get" : op == SR_CONF_SET ? "set" : "list";
               ^~
  src/hwdriver.c: In function ‘check_key’:
  src/hwdriver.c:681:13: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
    opstr = op == SR_CONF_GET ? "get" : op == SR_CONF_SET ? "set" : "list";
               ^~

5 years agosiglent-sds: Fix multiple scan-build warnings.
Uwe Hermann [Sat, 19 May 2018 19:58:10 +0000 (21:58 +0200)]
siglent-sds: Fix multiple scan-build warnings.

  src/hardware/siglent-sds/api.c:596:3: warning: Argument to g_free() is the address of a global variable, which is not memory allocated by malloc()
                  g_free(cmd);
                  ^~~~~~~~~~~
  src/hardware/siglent-sds/api.c:641:3: warning: Argument to g_free() is the address of a global variable, which is not memory allocated by malloc()
                  g_free(cmd);
                  ^~~~~~~~~~~

5 years agolecroy-xstream: Fix a potential memory leak.
Uwe Hermann [Sat, 19 May 2018 19:56:07 +0000 (21:56 +0200)]
lecroy-xstream: Fix a potential memory leak.

Reported by scan-build:

  src/hardware/lecroy-xstream/protocol.c:680:12: warning: Potential leak of memory pointed to by 'analog.data'
                                  return SR_ERR;
                                         ^~~~~~

5 years agohameg-hmo: Fix two potential memory leaks.
Uwe Hermann [Sat, 19 May 2018 19:54:15 +0000 (21:54 +0200)]
hameg-hmo: Fix two potential memory leaks.

Reported by scan-build:

  src/hardware/hameg-hmo/api.c:533:12: warning: Potential leak of memory pointed to by 'pod_enabled'
                                  return SR_ERR;
                                         ^~~~~~

5 years agoinput/logicport: Fix outdated format_match().
Uwe Hermann [Sat, 19 May 2018 19:51:12 +0000 (21:51 +0200)]
input/logicport: Fix outdated format_match().

Reported by scan-build:

  src/input/logicport.c:1186:18: warning: initialization from incompatible pointer type [-Wincompatible-pointer-types]
    .format_match = format_match,
                    ^~~~~~~~~~~~

5 years agobindings: wrap sr_input_scan_file() in the C++ language binding
Gerhard Sittig [Sun, 13 May 2018 06:56:09 +0000 (08:56 +0200)]
bindings: wrap sr_input_scan_file() in the C++ language binding

Allow C++ applications to have the input format automatically detected,
and get a corresponding InputFormat instance. This makes the format match
logic available to PulseView.

5 years agoinput: provide accessor routine for (struct sr_input *)->module
Gerhard Sittig [Sun, 13 May 2018 06:54:48 +0000 (08:54 +0200)]
input: provide accessor routine for (struct sr_input *)->module

Add a public API routine which allows applications to query the
sr_input_module from an sr_input.

5 years agoinput/trace32_ad: data type nits, log verbosity in header parsing
Gerhard Sittig [Sat, 12 May 2018 16:09:31 +0000 (18:09 +0200)]
input/trace32_ad: data type nits, log verbosity in header parsing

Log determined header format when parsing trace32 file headers. Keep
another log message during regular processing, but silence it during
format match.

Use more appropriate data types for local and instance variables. Adjust
format strings accordingly.

5 years agoinput/trace32_ad: rephrase the header parse logic
Gerhard Sittig [Sat, 12 May 2018 15:53:42 +0000 (17:53 +0200)]
input/trace32_ad: rephrase the header parse logic

There were several issues with the previous implementation of the logic
which parses trace32 input files: A string comparison was inverted, and
compared a seven character literal to a five character copy of the input.
One more character was trimmed before CTRL-Z (the CP/M EOF), which often
is SPACE in input files, but might be excessive on other input files.

Replace a DIY character search while we are here. Use symbolic names for
special characters. Factor out a test and memory release, to simplify
error code paths in the remaining logic. Extend comments.

5 years agoinput/trace32_ad: silence format match logging, improve robustness
Gerhard Sittig [Sat, 12 May 2018 15:38:33 +0000 (17:38 +0200)]
input/trace32_ad: silence format match logging, improve robustness

There is not much point in log messages about format mismatch in the
auto detect phase, where each module gets queried in turn and most are
supposed to not match.

Do not print non-printable characters in log messages. Those could occur
in the format detection phase, or in the regular processing of input
files that either are unexpected or invalid (or is there a binary header
format variant even?).

5 years agoinput/chronovu_la8: address file size data type nits
Gerhard Sittig [Sat, 12 May 2018 12:20:44 +0000 (14:20 +0200)]
input/chronovu_la8: address file size data type nits

Although the file format handled by this input module appears to be of
fixed size (8MiB plus 5 more bytes), it's more reliable to use a data
type for the file size that is larger than "an int". Although off_t
would be most portable, use uint64_t to match the code which passes the
parameter to the input module.

5 years agoinput: pass larger buffer to auto format detection
Gerhard Sittig [Sat, 12 May 2018 09:39:38 +0000 (11:39 +0200)]
input: pass larger buffer to auto format detection

The previous implementation already was inconsistent (used to allocate
255 bytes and claimed that 128 bytes were sufficient). While existing
formats already required more than a few bytes of input (regular VCD
files' header sections exceed 255 bytes length).

Increase the buffer size that gets passed to input modules' match
method. Use 4MiB for consistency with other locations. Do not enforce a
minimum size, as there are valid input files which are shorter than 128
bytes. Auto-detection failed on those.

This addresses part of bug #1200.

5 years agoinput: add confidence (detection strength) to format_match()
Gerhard Sittig [Sat, 12 May 2018 09:25:36 +0000 (11:25 +0200)]
input: add confidence (detection strength) to format_match()

When users don't specify the input format, applications can try to have
the format auto-detected. Some of the tests were weak and could result
in false positives.

Add a 'confidence' parameter to the input modules' format_match()
method. Claim high confidence (1) for those formats which can check
magic strings or the presence of essential keywords (vcd, wav). Claim
medium confidence (10) for those formats which happened to mis-detect
inputs in the past (trace32_ad). Claim weak confidence (100) for those
formats which totally lack reliable conditions and rather guess than
detect (chronovu_la8).

Prefer the best match in public scan routines. Return at most one module
to callers even if multiple modules matched, to keep the current API.

This addresses part of bug #1200.

5 years agoinput/logicport: Drop some unneeded allocation checks.
Uwe Hermann [Thu, 17 May 2018 19:09:48 +0000 (21:09 +0200)]
input/logicport: Drop some unneeded allocation checks.

5 years agoinput/logicport: introduce input module for LogicPort File (*.lpf)
Gerhard Sittig [Tue, 24 Apr 2018 21:25:25 +0000 (23:25 +0200)]
input/logicport: introduce input module for LogicPort File (*.lpf)

Implement an input module for .lpf files, the "LogicPort File" format of
the Intronix LA1034 vendor software. This version supports wires with
enabled and inverted state, compressed samples, signal names, signal
groups (but not multiple assignment), and automatic format detection.

The logic which determines whether "the file header" was completely
received, and sample data can get sent to the session, implements an
assumption in the absence of a better and more reliable condition.

Invalid input gets rejected, but diagnostics is rather limited. Since
all channels get to be the member of a channel group, either specified
by the user in the input file, or arranged for in the input module, the
"missing separator" part of bug 1186 has become obsolete.

5 years agolibsigrok.h: Fix multiple compiler warnings (-Wshift-overflow=2).
Uwe Hermann [Wed, 16 May 2018 21:20:40 +0000 (23:20 +0200)]
libsigrok.h: Fix multiple compiler warnings (-Wshift-overflow=2).

  ../include/libsigrok/libsigrok.h:653:19: warning: result of ‘1 << 31’ requires 33 bits to represent, but ‘int’ only has 32 bits [-Wshift-overflow=]
    SR_CONF_GET = (1 << 31),
                     ^~

[...]

5 years agosr_analog_to_float(): Fix multiple compiler warnings (-Wshadow).
Uwe Hermann [Wed, 16 May 2018 20:49:22 +0000 (22:49 +0200)]
sr_analog_to_float(): Fix multiple compiler warnings (-Wshadow).

  src/analog.c:205:23: warning: declaration of ‘i’ shadows a previous local [-Wshadow]
       for (unsigned int i = 0; i < count; i++) {
                         ^
  src/analog.c:178:18: note: shadowed declaration is here
    unsigned int b, i, count;
                    ^
[...]

5 years agosr_analog_to_float(): Fix a compiler warning (-Wshadow).
Uwe Hermann [Wed, 16 May 2018 20:46:34 +0000 (22:46 +0200)]
sr_analog_to_float(): Fix a compiler warning (-Wshadow).

  src/analog.c: In function ‘sr_analog_to_float’:
  src/analog.c:194:9: warning: declaration of ‘offset’ shadows a previous local [-Wshadow]
   float offset = analog->encoding->offset.p / (float)analog->encoding->offset.q;
         ^~~~~~
  src/analog.c:177:8: note: shadowed declaration is here
  float offset;
        ^~~~~~

5 years agodemo: optionally accept frame limit spec at scan time
Gerhard Sittig [Thu, 3 May 2018 19:51:46 +0000 (21:51 +0200)]
demo: optionally accept frame limit spec at scan time

Allow developers to specify the (default) number of frames at compile
time (default to "off" as before). Accept the frame limit spec at scan()
time as well. This is useful when applications don't run config_set() at
runtime.

Tested with:
$ pulseview -d demo:logic_channels=0:analog_channels=1:limit_frames=4

5 years agodemo: make frame generation (and maximum frame count) a runtime option
Gerhard Sittig [Thu, 3 May 2018 19:26:07 +0000 (21:26 +0200)]
demo: make frame generation (and maximum frame count) a runtime option

The previous implementation supported the generation of frames as a
compile time option. This change lets users adjust the feature at
runtime.

In the absence of a frame count limit no frame begin/end markers get
sent (the default behaviour of the previous implementation). When a
frame count limit is specified, the respective number of frames gets
sent and acquisition stops.

The fixed amount of 1000 samples per frame is an arbitrary choice. This
compile time option is easily adjusted in the source code.

5 years agodemo: introduce graycode generator mode
Gerhard Sittig [Sun, 13 May 2018 17:45:46 +0000 (19:45 +0200)]
demo: introduce graycode generator mode

Introduce support for the "graycode" logic pattern. Generate up to
64 bits of graycode output (all logic lines, no repetition, not limited
by the generator's internal pattern buffer). The implementation was
tested with 16 channels.

5 years agodemo: add convenient bit mask for "all logic channels"
Gerhard Sittig [Sun, 13 May 2018 17:40:00 +0000 (19:40 +0200)]
demo: add convenient bit mask for "all logic channels"

Keep a context variable around with a bit mask for all logic channels.
This is convenient in setup and generation routines, to avoid garbage
in unassigned bit positions of session feed packets.

5 years agodemo: data type nits in the device context (enum, unsigned int)
Gerhard Sittig [Sun, 13 May 2018 17:27:51 +0000 (19:27 +0200)]
demo: data type nits in the device context (enum, unsigned int)

Move the declaration of codes for pattern types before the declaration
of the context container such that the latter can reference the former.
Add 'int' to an unsigned variable that omitted the base type.

6 years agoinput/trace32_ad: silence format errors during input format match
Gerhard Sittig [Tue, 24 Apr 2018 21:28:41 +0000 (23:28 +0200)]
input/trace32_ad: silence format errors during input format match

When auto-detection tries to find the input module that can handle a
file, unexpected input format should be considered non-fatal. Only emit
error messages when process_header() got invoked from process_buffer()
after initialization. Emit debug messages in early stages where no input
module context exists yet.

6 years agodreamsourcelab-dslogic: Properly set initial voltage threshold.
Uwe Hermann [Sat, 28 Apr 2018 21:39:59 +0000 (23:39 +0200)]
dreamsourcelab-dslogic: Properly set initial voltage threshold.

The initial voltage threshold in dev_open() was being set to a
default value in the devc->cur_threshold variable but not actually set
in the device itself.

Patch by Jörg Alpers <redacted>, thanks a lot!

6 years agodmm/ms8250d: Fix two log messages.
Uwe Hermann [Thu, 26 Apr 2018 22:06:58 +0000 (00:06 +0200)]
dmm/ms8250d: Fix two log messages.

6 years agoAdd support for the MASTECH MS8250D multimeter
Mandl [Thu, 12 Apr 2018 19:09:20 +0000 (21:09 +0200)]
Add support for the MASTECH MS8250D multimeter

6 years agohantek-4032l: Emit FPGA version log message.
Uwe Hermann [Tue, 24 Apr 2018 19:06:16 +0000 (21:06 +0200)]
hantek-4032l: Emit FPGA version log message.

6 years agosoft-trigger: Fix an issue causing triggers to not work.
Uwe Hermann [Tue, 24 Apr 2018 06:55:36 +0000 (08:55 +0200)]
soft-trigger: Fix an issue causing triggers to not work.