Commit Graph

1225 Commits

Author SHA1 Message Date
poljar (Damir Jelić) 1a323dd887 scpi: Add function to fetch uint8_t.
This patch adds a function to read and parse a SCPI response which contains a
comma separated list of unsignet 8-bit integer numbers (e.g "1,0,64").

This is particularly useful if the instrument sends digital measurement data
in this format.
2013-12-03 15:10:01 +01:00
poljar (Damir Jelić) 8acbb89a1d scpi: Add function to get an array of floats.
This patch adds a function to read and parse a SCPI response which contains a
comma-separated list of floating-point numbers (e.g. "1.0e-5,2.0e-4,3.0e-3").

This is particularly useful if the instrument sends analog measurement
data in this format.
2013-12-03 15:10:01 +01:00
poljar (Damir Jelić) f5922adef5 scpi: Add a function to read and wait on a *OPC? reply.
The SCPI standard specifies the "*OPC?" command (Operation complete query) which
queries the instrument for its operative state. When all pending operations are
complete, the instrument responds with a "1".

Some manufacturers block before completing all operations and don't respond
with anything and some of them respond with a "0". This function handles both
cases uniformly.
2013-12-03 15:10:01 +01:00
poljar (Damir Jelić) d730f70e06 scpi: Add more functions (getting int/bool/float/double).
This patch adds helper functions to read an SCPI response and parse the response
as an integer, boolean, floating-point or double-precision floating-point number.
2013-12-03 15:10:01 +01:00
poljar (Damir Jelić) aa1e3b400b scpi: Add function to strictly parse bool strings.
This patch adds a function that is similar to sr_parse_boolstring but its
matching rules are more strict.
2013-12-03 15:10:00 +01:00
poljar (Damir Jelić) 7b9d732031 scpi: Add helper functions for SCPI communication.
The Standard Commands for Programmable Instruments (SCPI) defines a standard
for syntax and commands to use in controlling programmable test and measurement
devices.

SCPI documentation:
	http://www.ivifoundation.org/docs/scpi-99.pdf

This patch adds helper functions for sending SCPI commands, reading a SCPI
response and reading and parsing a SCPI "*IDN?" response.
2013-12-03 15:10:00 +01:00
Uwe Hermann 66a4357667 serial-dmm: No error message upon 0 new bytes. 2013-12-01 19:30:35 +01:00
Martin Ling 9647ce694b Use new libserialport blocking/nonblocking API calls. 2013-12-01 18:51:24 +01:00
Martin Ling b3916147a5 rigol-ds: Fix duplicated "LA" probe group. 2013-11-29 01:40:50 +00:00
Martin Ling ae67644fe5 Create & use new sr_usbtmc_dev_inst for Rigol DS driver. 2013-11-29 01:13:22 +00:00
Martin Ling babab6225b DS2000 sample memory capture patches from Mathias Grimmberger. 2013-11-29 00:57:55 +00:00
Martin Ling 355de5a110 Fix handling second channel on DS2000 series.
Patch from Mathias Grimmberger.
2013-11-29 00:55:21 +00:00
Martin Ling 6ff1394ed1 rigol-ds: brown paper bag, using timebases instead of vdivs. 2013-11-29 00:55:20 +00:00
Martin Ling 7cc1a55091 rigol-ds: fix calls to config_list with NULL sdi/devc. 2013-11-29 00:55:20 +00:00
Martin Ling bafd489094 rigol-ds: Add support for DS2xx2 series.
Based on patch by Mathias Grimmberger <mgri@zaphod.sax.de>.
2013-11-29 00:53:34 +00:00
Martin Ling 3086efdd73 Rename rigol-ds1xx2 driver to rigol-ds. 2013-11-29 00:50:59 +00:00
Uwe Hermann c4d85a4026 serial.c: Re-enable serial_read() error reporting.
libserialport now returns 0 (not SP_ERR_FAIL) as return value when a
non-blocking read would return EAGAIN.

This fixes bug #188.
2013-11-26 16:29:43 +01:00
Martin Ling 25b66c3c61 Use new libserialport opaque configuration structure. 2013-11-26 15:53:40 +01:00
Martin Ling 3182932d36 Use accessor for new libserialport opaque port structure. 2013-11-26 15:53:40 +01:00
Bert Vermeulen 79b9a237bd uni-t-dmm: Drop unnecessary DMM count. 2013-11-23 15:24:40 +01:00
Bert Vermeulen 5e1f7c890d uni-t-dmm: Add support for the Tenma 72-7745.
This is a rebadged UNI-T UT60E.
2013-11-23 12:50:33 +01:00
Uwe Hermann a147c7b416 hantek-dso: config_list(): Only SR_CONF_BUFFERSIZE needs sdi. 2013-11-22 22:31:24 +01:00
Uwe Hermann 7c07a1783e ols: config_list(): Handle SR_CONF_PATTERN_MODE.
SR_CONF_PATTERN_MODE was not handled in config_list(), yielding
non-working OLS support in PulseView (due to an assert), and a missing
pattern list in sigrok-cli's --show output.

This fixes bug #184.
2013-11-22 22:31:08 +01:00
Matthias Heidbrink f57924179d gmc_mh_1x_2x: Completed driver for Metrahit 1x/2x
This driver supports devices with “RS232“ interface (Metrahit 16I,
18S, Siemens B1105 tested, 29S incomplete).
2013-11-22 02:42:04 +01:00
Matthias Heidbrink a970522b6d serial: Allow 5 and 6 data bits. 2013-11-22 02:31:17 +01:00
Matthias Heidbrink 7b4edcb654 gmc_mh_1x_2x: Inital driver skeleton. 2013-11-22 02:31:17 +01:00
Martin Ling 13cd8197eb Update for libserialport v0.1 API. 2013-11-22 02:14:16 +01:00
Bert Vermeulen c4650aca12 Suppress compile warning 2013-11-20 22:06:01 +01:00
Uwe Hermann 61bab807f4 DT4000ZC/TP4000ZC: Force DTR=1 on the serial port.
This fixes the driver e.g. on NetBSD.
2013-11-20 00:42:08 +01:00
Uwe Hermann 4403c39fe4 ols: Always open serial port in nonblocking mode.
The scan() function was opening the port in non-blocking mode, the dev_open()
function however was not using the SERIAL_NONBLOCK flag. This led to hangs
in certain situations.

This fixes the OLS e.g. on NetBSD.
2013-11-19 23:22:46 +01:00
Uwe Hermann 1a54044299 serial.c: Minor cosmetic fix. 2013-11-19 20:09:59 +01:00
Martin Ling a82635f252 Use new sp_port_config fields. 2013-11-19 14:26:18 +01:00
Martin Ling e385e2ed90 serial: Use new sp_set_config instead of sp_set_params. 2013-11-19 14:26:18 +01:00
poljar (Damir Jelić) 066d42b1c8 serial: Fix leak in serial_open.
A new sp_port is created every time we call serial_open (sp_get_port_by_name
implicitly creates one for us), so free it every time we call serial_close.
2013-11-19 10:29:24 +01:00
poljar (Damir Jelić) 1130e4229b rigol-ds1xx2: Send a SR_DF_END packet before acquisition stop.
Without a SR_DF_END samples could be cached in the internal buffer of an output
module and never flushed, therefore they would be missing in the final output.

By sending a SR_DF_END packet we force the output to be flushed.
2013-11-15 17:00:07 +01:00
Uwe Hermann 449cc16bb2 serial.c: Temporary quickfix until a libserialport fix is done. 2013-11-15 12:23:09 +01:00
Uwe Hermann 26e0361cc6 uni-t-dmm: Drop unused packet_request callback. 2013-11-15 09:36:51 +01:00
Uwe Hermann c4f2dfd0f0 configure.ac: libserialport is optional.
Disable drivers that need serial port support if libserialport is not found.

Also, disable building various other serial port related code in that case.
2013-11-15 09:36:51 +01:00
Uwe Hermann 6a76efebc1 serial.c: Fix a few return values. 2013-11-14 23:48:28 +01:00
Uwe Hermann a0dfaa6c4c serial.c: Cosmetics, coding-style. 2013-11-14 23:48:28 +01:00
Martin Ling 0d4405ce5e Update for renamed libserialport header file. 2013-11-14 23:48:16 +01:00
Martin Ling c9bc57b6bc Update to new libserialport API. 2013-11-14 23:48:16 +01:00
Martin Ling a9bce5a561 Use libserialport for serial port access. 2013-11-14 23:48:16 +01:00
Bert Vermeulen 58f4336963 rigol-ds1xx2: Unbreak listing of _VDIV and _COUPLING 2013-11-08 01:03:19 +01:00
Bert Vermeulen 5f77dffc02 rigol-ds1xx2: Unbreak listing of SR_CONF_DEVICE_OPTIONS 2013-11-08 01:03:19 +01:00
Bert Vermeulen be60a9e4a9 rigol-ds1xx2: Better error reporting when probe groups are required 2013-11-08 01:03:19 +01:00
Bert Vermeulen 78bcc55afa rigol-ds1xx2: Minor coding style fixes 2013-11-08 01:03:19 +01:00
Bert Vermeulen d3c74a6fb0 probe_groups: API changes required to implement probe groups. 2013-11-08 01:03:18 +01:00
Bert Vermeulen ba358ffd83 rigol-ds1xx2: fix bitrot in device cleanup code 2013-11-08 01:03:18 +01:00
Bert Vermeulen e43fdd8d4f rigol-ds1xx2: Don't assume valid sdi 2013-11-08 01:03:18 +01:00
Bert Vermeulen 45311368de rigol-ds1xx2: Skip obsolete fields 2013-11-08 01:03:18 +01:00
Martin Ling f48e0249b4 rigol-ds1xx2: implement probe group specific options. 2013-11-08 01:03:17 +01:00
Martin Ling 3d3a601e80 rigol-ds1xx2: create probe groups. 2013-11-08 01:03:17 +01:00
Martin Ling 8f996b8948 probe_groups: API changes required to implement probe groups. 2013-11-08 01:03:16 +01:00
Dan Horák b775d753e3 rigol-ds1xx2: detect Rigol DS1xx2 with upgraded bandwith
The bandwith in Rigol DS1xx2D/E scopes can be upgraded to 150 MHz in software.
So detect also scopes with the upgraded bandwith.

using libsigrok-0.2.1 + this change + commit da970d24ec (required for newer kernels):

[dan@eagle sigrok]$ sigrok-cli --scan -d rigol-ds1xx2 -l 5
sr: libsigrok loglevel set to 5.
sr: Sanity-checking all drivers.
sr: Sanity-checking all input modules.
sr: Sanity-checking all output modules.
srd: libsigrokdecode loglevel set to 5.
sr: hwdriver: Initializing driver 'rigol-ds1xx2'.
sr: serial: Opening serial port '/dev/usbtmc0' (flags 1).
sr: serial: Opened serial port '/dev/usbtmc0' (fd 7).
sr: serial: Wrote 5/5 bytes (fd 7).
sr: serial: Closing serial port /dev/usbtmc0 (fd 7).
sr: rigol-ds1xx2: response: /dev/usbtmc0 [Rigol Technologies,DS1152D,DS1EU150XXXXXX,00.04.01.00.02]
sr: hwdriver: Scan of 'rigol-ds1xx2' found 1 devices.
The following devices were found:
rigol-ds1xx2 - Rigol Technologies DS1152D 00.04.01.00.02 with 18 probes: CH1 CH2 D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 D10 D11 D12 D13 D14 D15
2013-11-03 14:20:47 +01:00
Uwe Hermann 3a8cad9137 metex14: Handle a few missing cases for overflow. 2013-10-31 13:47:30 +01:00
Uwe Hermann 88f544f27e Add support for the Metex M-4650CR.
(the Voltcraft M-4650CR is a rebadged Metex M-4650CR)
2013-10-30 14:44:44 +01:00
Uwe Hermann 2b83d7fee1 Add support for the Voltcraft M-4650CR. 2013-10-30 14:44:44 +01:00
Uwe Hermann e790bd5cda norma-dmm: Minor cosmetics, coding-style, consistency fixes.
Also, add a missing "%" in an sr_err() and a missing parameter in
another sr_err().
2013-10-25 21:25:26 +02:00
Matthias Heidbrink f8e76e2e74 norma dmm: Implemented driver. 2013-10-25 21:25:26 +02:00
Matthias Heidbrink bfd48770fc norma dmm: Initial driver skeleton. 2013-10-25 21:25:26 +02:00
Matthias Heidbrink 50a9aba21b serial: Removed flag OPOST (turn off all output processing). 2013-10-25 19:11:15 +02:00
Matthias Heidbrink a510d55571 serial: Added flags CLOCAL (ignore modem status lines) and CREAD (start receiver). 2013-10-25 19:11:15 +02:00
Matthias Heidbrink 1b943b6d8b serial: Added flag IXANY (any char will restart) to XON/XOFF handshaking. 2013-10-25 19:11:14 +02:00
Sean Young 0c30b35fce saleae-logic16: claim device before using it
The kernel warns:

[ 7461.925685] usb 2-4: usbfs: process 11303 (sigrok-cli) did not claim interface 0 before use
2013-10-24 16:01:46 +01:00
Aurelien Jacobs 5542bee61b teleinfo: actual parser implementation 2013-10-24 15:41:11 +01:00
Aurelien Jacobs 8e796cb438 teleinfo: Initial driver skeleton. 2013-10-24 15:41:11 +01:00
Uwe Hermann c02dc3e261 metex14: Add support for pF (picofarad).
This is used on some Metex DMMs.
2013-10-23 18:41:13 +02:00
Uwe Hermann ee6cb5a417 metex14: Use case-insensitive string compares.
This allows some other DMMs to be supported that use e.g. "kOhm" vs.
"KOhm", and so on.
2013-10-23 18:07:54 +02:00
Uwe Hermann 1a807c13fc metex14: Support DMMs with slightly different protocol.
This adds support for DMMs with 5 digits in the protocol (instead of 4)
and some more whitespace variants.
2013-10-23 18:06:15 +02:00
Uwe Hermann 71f1302b4b metex14: Support DMMs with whitespace differences.
Most Metex DMMs use e.g. "  mV" as unit field, others use "mV  ",
though. Support these (and other) whitespace variants by stripping all
spaces and only comparing non-space characters.
2013-10-23 17:31:14 +02:00
Matthias Heidbrink b21d7eebe2 serial: Changed order of flags PARENB and PARODD in deletion to same order as in setting (cosmetic). 2013-10-18 16:58:33 +02:00
Aurelien Jacobs df6b0f99af ISO-TECH IDM103N: remove the useless -ser postfix 2013-10-13 14:54:54 +02:00
Aurelien Jacobs 94e9021b3e es519xx: correct initialization of es519xx_info structure 2013-10-13 14:54:54 +02:00
Uwe Hermann 93d719cde6 es519xx: Fix incorrect packet size, and a typo. 2013-10-07 00:36:18 +02:00
Uwe Hermann 72e1672fc9 es519xx: Cosmetics, coding style, minor fixes. 2013-10-07 00:36:18 +02:00
Aurelien Jacobs de737bfc11 add ISO-TECH IDM103N serial-dmm driver 2013-10-07 00:36:18 +02:00
Aurelien Jacobs c01bdebc57 add cyrustek es519xx generic protocol parser 2013-10-07 00:36:18 +02:00
Uwe Hermann 2f9376117c fx2lafw: Organize driver into api.c / protocol.[ch].
This now matches the naming conventions of the other drivers.
2013-10-06 22:28:45 +02:00
Daniel Thompson fbf07e0209 agilent-dmm: Fix SEGV during incomplete reply from meter.
If buf contains exactly the string "Agilent Technologies" (for example if
there are bugs in the timeout logic or serial driver causing the reply from
the meter to be abridged) then this code will SEGV. This is because tokens[1]
is NULL but only tokens[2] and tokens[3] (both of which are undefined) are
NULL checked.

Can be trivially corrected by NULL checking tokens[1] as well.

Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2013-10-04 13:30:49 +02:00
Daniel Thompson 5715e84fe3 serial: Only sleep when no characters are received.
g_usleep(XX) sleeps for *at least* XX microseconds but may sleep for
longers (on older kernels the sleep will typically be 10000us). Thus
byte receive loops containing an unconditional sleep will perform
very poorly (for example it causes the scan in agilent-dmm to timeout
prematurely).

Even on modern kernels serial_readline() has a 2ms sleep per byte which
means it will read at a maximum rate of half a character per millisecond
(~4800baud).

This is fixed by only sleeping when read() returns no data.

Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2013-09-26 14:57:37 +02:00
Uwe Hermann 45c0841b25 uni-t-ut32x: Shorten dev_list(). 2013-09-25 14:26:35 +02:00
Matt Ranostay 6ebe003985 ols: fixed demux mode disable noise filter
Demux flag wasn't getting set off if one non-demux sample was ran
beforehand.

Signed-off-by: Matt Ranostay <mranostay@gmail.com>
2013-09-07 20:17:16 +02:00
Matt Ranostay 6a53bde671 ols: Moved FLAG_FILTER to demux check
Demux mode was having filter mode set which it doesn't
support per FPGA demon core docs.

Signed-off-by: Matt Ranostay <mranostay@gmail.com>
2013-09-06 11:42:25 +02:00
Uwe Hermann e52bb9be83 Voltcraft VC-830: Fix diode mode handling.
This DMM is not using the standard bits in the FS9922 protocol/structure
to indicate the "volt" and "diode mode" flags. Instead, it only sets the
user-defined bit "z1" to indicate both "diode mode" and "volt".

This fixes #142.
2013-09-01 15:27:21 +02:00
Uwe Hermann a6ed50f405 es51922/fs9721/fs9922/metex14: Use diode MQFLAG.
This fixes #141.
2013-09-01 15:27:07 +02:00
Uwe Hermann 98494dc8a3 fs9922: Fix typo. 2013-09-01 13:41:13 +02:00
Uwe Hermann 045e9a9918 serial.c: Drop unneeded <glob.h>.
This is no longer used, and also it is not available on Android and thus
breaks cross-compilation for Android.

Thanks Marcus Comstedt <marcus@mc.pp.se> for reporting.
2013-08-30 16:35:56 +02:00
Matt Ranostay b1de040700 ols: fixed channel limit check
For demux mode we half the channels. Previous check method broke
the OLS randomly and but it in a bad state.

Signed-off-by: Matt Ranostay <mranostay@gmail.com>
2013-08-30 13:58:36 +02:00
Bert Vermeulen da970d24ec rigol-ds1xx2: newer Linux kernels have USBTMC in /sys/class/usbmisc 2013-08-30 13:57:45 +02:00
Matt Ranostay f51acd69d7 ols: combine demux samples
demux mode allows DDR sampling which disables group 2 & 3
and thus samples group 0 & 1 to sample on rising and falling of
the clock.

Signed-off-by: Matt Ranostay <mranostay@gmail.com>
2013-08-28 10:21:59 +02:00
Matt Ranostay 7b0a57fd1c ols: add swap channels feature
Allow channel groups to be swapped. This is useful
for demux at 200mhz with the unbuffered channels.

Signed-off-by: Matt Ranostay <mranostay@gmail.com>
2013-08-28 10:21:59 +02:00
Matt Ranostay de52409982 ols: Display noise filter flag
Show if noise filter is on. This is important to be
sure is off for demux mode.

Signed-off-by: Matt Ranostay <mranostay@gmail.com>
2013-08-28 10:21:59 +02:00
Bert Vermeulen 00d04d3b0e ols: Fix RLE count handling
The high bit of the sample, denoting this is a count, was not getting
properly cleared. This resulted in an inevitably negative count, and
corruption of the sample buffer before it was transferred to the
frontend.
2013-08-27 00:33:20 +02:00
Bert Vermeulen abb39e6b8c ols: Properly initialize entire single-sample buffer before start
The single sample buffer, up to 4 bytes long, was not getting initialized
on (every) acquisition start, only after the first full sample was in.
This caused the first sample to potentially hold garbage.
2013-08-26 23:42:09 +02:00
Matt Ranostay eb1b610b12 ols: add external clock support
Add external clock support that allows you to use the tracing
targets bus clock line for sampling.

Signed-off-by: Matt Ranostay <mranostay@gmail.com>
2013-08-26 10:28:45 +02:00
Matt Ranostay 967760a893 ols: add test mode support
ols allows both external and internal test patterns at ~20khz
which are helpful for unit tests and demos.

pattern=internal -> route pattern internally to all 32 pins
                      (input otherwise disabled)

pattern=external -> generates pattern on unbuffered pins 16:31
                      (which can be looped back to the buffered pins 0:15)

Signed-off-by: Matt Ranostay <mranostay@gmail.com>
2013-08-26 09:52:24 +02:00
Matt Ranostay 503133bb5f ols: fixed parallel stage triggers
Stage count was always getting incremented one more than
actual stages, and this caused a extra stage with zero'ed data
probe lines to have the start bit field.

Signed-off-by: Matt Ranostay <mranostay@gmail.com>
2013-08-26 09:48:41 +02:00
Uwe Hermann d0107565c1 saleae-logic16: Drop unneeded NUM_PROBES. 2013-08-21 11:41:21 +02:00
Uwe Hermann 87b537ced0 saleae-logic16: Shorten dev_list() implementation. 2013-08-21 11:37:40 +02:00