Commit Graph

802 Commits

Author SHA1 Message Date
Uwe Hermann 0a1f7b09b3 Prefer postfix-increment for consistency across the code-base.
Only when there are technical reasons use prefix-increment.
2015-12-26 14:37:33 +01:00
Uwe Hermann a078d3ec52 korad-kaxxxxp: Add workaround for a Korad KA3005P issue.
In some situations, the reply to the *IDN? command contains an
additional trailing 0x01 byte for unknown reasons.

This issue seems to be reproducible by changing the voltage using the knobs
on the device, then turning on the output and turning it off again.

The next korad-kaxxxxp scan() operation would contain the trailing 0x01
byte, which would lead to the detection of the device in libsigrok no
longer working until the next power-cycle.

Work around this issue by treating both the ID string with and without
the trailing 0x01 byte as valid.
2015-12-25 23:29:35 +01:00
Uwe Hermann ae9ca5b1df korad-kaxxxxp: Add support for the Velleman PS3005D. 2015-12-24 01:19:11 +01:00
Daniel Elstner 1d80e1c641 sysclk-lwla: Use static array for LWLA1034 init sequence
Just as in the LWLA1016 initialization, make use of a static array
for the constant part of the LWLA1034 capture setup sequence.
2015-12-22 23:42:36 +01:00
Daniel Elstner e35a459248 sysclk-lwla: Attempt initialization three times
This is a desperate measure to improve the success rate of device
initialization even after it got into a bad state. Combine this
with a reduced USB timeout (1 second) so that if it fails, it fails
quickly. Also ignore USB errors from the initial dummy read of the
device test ID.
2015-12-22 16:09:39 +01:00
Daniel Elstner 04f2428354 sysclk-lwla: Use static array for init sequence 2015-12-22 16:09:39 +01:00
Daniel Elstner 786485772f sysclk-lwla: Work around short transfer quirk
Detect whether the FX2 firmware of the LWLA device exhibits the
short transfer bug. If so, work around the problem by limiting
reads to at most 64 bytes at a time. This slows down the memory
read after acquisition quite noticably, but makes the device
usable even in adverse conditions.
2015-12-22 16:09:39 +01:00
Daniel Elstner 940805ce7d sysclk-lwla: Skip unused registers in status poll
Reduce the number of long registers read in bulk during status
polling from 10 to 5. The LWLA1034 driver used to do that already
in an earlier iteration, which was then changed to be more like
the original vendor software. The reason for bringing it back now
is that it reduces the response size to 40 bytes, which works
around the spurious 64 byte limit bug in the FX2 firmware of the
LWLA devices.
2015-12-22 16:09:39 +01:00
Daniel Elstner ef7df53d36 sysclk-lwla: Declare model_info structs as extern
This fixes bug 714.
2015-12-22 16:08:18 +01:00
Daniel Elstner fc6cbfce2b sysclk-lwla: Close USB handle on drain error 2015-12-21 17:56:52 +01:00
Daniel Elstner 407b6e2cff sysclk-lwla: Various cosmetic improvements 2015-12-21 17:56:52 +01:00
Tilman Sauerbeck c7b17bcba3 lecroy-logicstudio: Initial driver implementation.
This supports both 8 and 16 channel modes with samplerates up to
500 MHz. Voltage thresholds are currently fixed at 1.58V.
2015-12-04 10:35:04 +01:00
Hannu Vuolasaho 8abdf0066e korad-kaxxxxp: Workaround for Korad device bug
The sixth character from ISET? is read and discarded. If the device is
turned off and on again, this won't be there and causes 10 ms delay in
every ISET? Luckily, this value isn't queried that often. To get the
sixth byte, the *IDN? command has to be issued before ISET?.
2015-12-01 10:46:51 +01:00
Hannu Vuolasaho bcf9384d3d korad-kaxxxxp: Fix typo in Korad driver device enum 2015-12-01 10:46:40 +01:00
Uwe Hermann b3cfc6e98e Make all sizeof() consistently use parenthesis. 2015-11-29 00:23:53 +01:00
Daniel Elstner 09ffac33b7 sysclk-lwla: Simplify trigger mask generation 2015-11-28 23:27:45 +01:00
Daniel Elstner 93ed0241aa sysclk-lwla: Drain pending replies on initialization
When opening the device, drain any pending data from the USB
buffers so that the device won't get stuck on crashes etc.
2015-11-28 23:27:45 +01:00
Daniel Elstner 567674b4f8 sysclk-lwla: Remove double USB set configuration
This was a pointless attempt to make the reset hiccups go away.
It didn't help, the problem must be something else.
2015-11-27 21:26:13 +01:00
Daniel Elstner 7ed808179f sysclk-lwla: Cut down on size_t overuse
Do not use size_t for values whose width is defined by the device,
not the host. Also don't use size_t for simple indices with known
small range, unless type compatibility considerations apply.
2015-11-27 15:07:56 +01:00
Daniel Elstner 43af7604d0 sysclk-lwla: Fix copy'n'paste mistake in comment 2015-11-27 03:19:43 +01:00
Uwe Hermann 9e9dba7b41 Use the ALLZERO macro in more places. 2015-11-27 00:55:09 +01:00
Hannu Vuolasaho 2c5bdf1bbd Support for Korad KA3005P 2015-11-27 00:54:07 +01:00
Uwe Hermann 16fc7ee29f korad-kdxxxxp: Rename driver to korad-kaxxxxp.
This matches the supported / supportable devices better.
2015-11-27 00:54:07 +01:00
Daniel Elstner be64f90b53 sysclk-lwla: Implement support for LWLA1016
Refactor the sysclk-lwla driver to separate the generic logic from
the model-specific implementation. Based on this, implement support
for the SysClk LWLA1016 device.
2015-11-26 21:44:31 +01:00
Daniel Elstner ce19d4c615 sysclk-lwla: Remove global driver instance pointer
Obtain the sr_dev_driver pointer from the device instance so that
the remaining references to the global di pointer can be removed.
2015-11-26 21:44:31 +01:00
Matthieu Gaillet d79244dc34 serial-dmm: Add support for Velleman DVM4100 & PeakTech 3415.
(both are using the new dtm0660 DMM parser)
2015-11-15 23:54:37 +01:00
Uwe Hermann 382bea8250 chronovu-la: Add missing libusb dependencies.
The chronovu-la driver now uses libusb (in addition to libftdi), so add
a missing <libusb.h> #include and libusb dependency in configure.ac.
2015-11-15 16:20:07 +01:00
Uwe Hermann 67f890d5bb chronovu-la: Properly handle multiple devices.
The driver should now be able to cope with e.g. multiple ChronoVu LA8
and/or ChronoVu LA16 devices being connected to the same PC.

It now also provides the serial number and connection ID, which can be
used by frontends to differentiate multiple devices.

Also improve the scanopts / drvopts / devopts lists handling.

This fixes bug #504.
2015-11-09 01:54:41 +01:00
Uwe Hermann d0f1fa0758 asix-sigma: Drop unneeded asix_sigma_driver_info.
This is not needed, but also causes linker issues on some platforms.
2015-11-08 19:11:25 +01:00
Uwe Hermann 2c24077466 Constify a lot more items.
This fixes various compiler warnings when -Wdiscarded-qualifiers is used.
2015-11-08 19:11:25 +01:00
jry 3ba56876b4 asix-sigma: Split into api.c and protocol.[ch] modules. 2015-11-05 21:26:39 +01:00
Daniel Elstner 8105e82913 openbench-logic-sniffer: Avoid recreating event source
With the current driver API and the corresponding session event
handling, it is not possible to destroy and then re-create an
event source with the same key within the same main loop iteration.

The next generation driver API will fix this problem. But for now,
just change the driver to make do without that sort of thing. Also
increase the I/O timeout to 100 ms to be safer in the event of all
kind of delays the OS environment may induce.

This fixes bug #678.
2015-11-01 19:38:40 +01:00
Daniel Elstner 58cc125b0f sysclk-lwla: Read full 64 bit of capture duration field
Evaluate all 64 bit of the duration field in the capture status
record. Although unlikely in practical use, due to compression
it is possible for the duration in ms to exceed 32 bit.
2015-10-31 10:19:51 +01:00
Daniel Elstner 30f34dbdf0 sysclk-lwla: Define constants for long registers 2015-10-31 01:39:03 +01:00
Daniel Elstner 586ff70a21 sysclk-lwla: Clarify use of SRAM control registers
Assign more meaningful names to things and introduce new constants.
2015-10-31 01:11:31 +01:00
Daniel Elstner e1172cf847 sysclk-lwla: Read test word twice during initialization
During initialization of the LWLA1034, read the 64-bit test word
twice and verify the result of the second read only. This better
matches what the original vendor software does.
2015-10-30 12:51:16 +01:00
Daniel Elstner 3a322bbc3b sysclk-lwla: Clarify function of registers 10B0 to 10BC
Apparently, these four registers form an interface for indirect
access to another internal 64 bit wide memory. This is likely the
same memory as that accessed by the bulk transfer commands 7 and 8.
2015-10-30 12:51:16 +01:00
Uwe Hermann 9e5366df4f korad-kdxxxxp: Minor cosmetics and consistency changes. 2015-10-29 18:51:09 +01:00
Hannu Vuolasaho c40ed60f27 Over voltage and current protection support
Developed against Velleman LABPS3005D and seems to work.
2015-10-29 18:43:09 +01:00
Hannu Vuolasaho b16d975a5c Support for regulation status and fix for mysterious M
Added support for SR_CONF_REGULATION which returns value for CH1
Also VELLEMAN LABPS3005D (only device currently supported) sends single
'M' character in beginning of return value, which is specially discarded.
2015-10-29 18:43:09 +01:00
Martin Ling a00106b7f8 scpi: Move closing of discovered devices to sr_scpi_scan_resource(). 2015-10-25 22:40:35 +01:00
Martin Ling b7b873cea3 rigol-ds: After successfully finding a device, close it properly. 2015-10-24 22:50:37 +02:00
Tilman Sauerbeck a5c38703ee drivers: Fix behaviour when trying to set an invalid capture ratio.
Trying to configure an invalid capture ratio would reset the
previously configured value. Instead, we should just reject the
new value and keep the original one.
2015-10-24 21:10:29 +02:00
Uwe Hermann 087c4d59c0 fx2lafw: Drop obsolete macro usage. 2015-10-24 20:55:40 +02:00
Uwe Hermann 3e91de2bd6 fx2lafw: Add the official fx2lafw sigrok VID/PID pairs.
As supported by sigrok-firmware-fx2lafw >= 0.1.3:

 - 1D50:608C: fx2lafw-sigrok-fx2-8ch.fw

 - 1D50:608D: fx2lafw-sigrok-fx2-16ch.fw
2015-10-22 19:19:40 +02:00
Uwe Hermann edb691fced SR_DF_ANALOG2 and sr_datafeed_analog2 renames.
Rename SR_DF_ANALOG2 to SR_DF_ANALOG, and 'struct sr_datafeed_analog2'
to 'struct sr_datafeed_analog'.
2015-10-20 23:32:45 +02:00
Uwe Hermann 5faebab290 SR_DF_ANALOG_OLD and sr_datafeed_analog_old renames.
Rename SR_DF_ANALOG to SR_DF_ANALOG_OLD, and 'struct sr_datafeed_analog'
to 'struct sr_datafeed_analog_old'.
2015-10-20 23:32:45 +02:00
Uwe Hermann 0a4549ff18 Add support for the Tenma 77-7732 multimeter. 2015-10-17 00:11:32 +02:00
Uwe Hermann 20f9f1fbaa Add support for the Tenma 77-9380A multimeter. 2015-10-17 00:11:32 +02:00
Daniel Elstner ef2bcf114f korad-kdxxxxp: Use PRIi64 format for int64_t 2015-10-16 21:28:07 +02:00
Karl Palsson b1cadcfbef drivers: Add support for Tenma 72-7730 multimeter
Tested with a 72-7730 device.

Signed-off-by: Karl Palsson <karlp@remake.is>
2015-10-14 17:00:30 +02:00
Hannu Vuolasaho d708304275 Initial driver for Korad KDxxxxP (Velleman LABPS3005D)
With this driver it is possible to set voltage target and current
limit. Also enabling and disabling the output is possible.

Analog output sends read back values from output. If output is
disabled analog outputs 0.00.

In protocol.c there is a g_usleep() call. This gives almost
every time enough time for PSU to parse and process input.

Multichannel devices aren't supported.
2015-10-13 23:18:49 +02:00
Hannu Vuolasaho e75ee7de25 korad-kdxxxxp: Initial driver skeleton. 2015-10-13 23:15:33 +02:00
Bartosz Golaszewski a7da85f529 baylibre-acme: Fix EEPROM fields endianness.
Use RB32 instead of RL32 since integer types in probe EEPROM are in network
byte order.

Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
2015-10-09 15:52:28 +02:00
Bartosz Golaszewski 4c3a4bca32 baylibre-acme: Read EEPROM contents into buffer before processing.
Instead of using a non-standard packed attribute, read the contents of the
probe EEPROM into a buffer and then process it using the R* macros.

Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
2015-10-09 14:55:14 +02:00
Bartosz Golaszewski 453a0c2ece baylibre-acme: Use fixed-size integer types in struct probe_eeprom.
Standard integer types may differ in size on different targets. Use fixed-size
types instead.

Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
2015-10-09 14:55:14 +02:00
Daniel Elstner 8e2d6c9db7 drivers: Load firmware via new resource API 2015-10-01 15:44:55 +02:00
Martin Lederhilger b11afbb142 gwinstek-gds-800: Initial driver implementation. 2015-09-30 19:54:58 +02:00
Martin Lederhilger 7c198f968b gwinstek-gds-800: Initial driver skeleton. 2015-09-30 19:22:27 +02:00
Uwe Hermann 6e799d0799 manson-hcs-3xxx: Fix use-after-free and memory leaks.
Thanks to Hannu Vuolasaho for the report!
2015-09-25 12:19:08 +02:00
Uwe Hermann e57057aee7 Fix a few "value never read" scan-build warnings.
This fixes parts of bug #423.

The list of fixed warnings:

src/output/srzip.c:285:3: warning: Value stored to 'ret' is never read
                ret = zip_append(o, logic->data, logic->unitsize, logic->length);
                ^     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/scpi/scpi.c:610:2: warning: Value stored to 'ret' is never read
        ret = SR_OK;
        ^     ~~~~~
src/scpi/scpi.c:667:2: warning: Value stored to 'ret' is never read
        ret = SR_OK;
        ^     ~~~~~
src/dmm/vc870.c:410:2: warning: Value stored to 'info_local' is never read
        info_local = (struct vc870_info *)info;
        ^            ~~~~~~~~~~~~~~~~~~~~~~~~~
src/hardware/conrad-digi-35-cpu/api.c:130:2: warning: Value stored to 'ret' is never read
        ret = SR_OK;
        ^     ~~~~~
src/hardware/fx2lafw/api.c:658:2: warning: Value stored to 'timeout' is never read
        timeout = fx2lafw_get_timeout(devc);
        ^         ~~~~~~~~~~~~~~~~~~~~~~~~~
src/hardware/gmc-mh-1x-2x/protocol.c:941:3: warning: Value stored to 'retc' is never read
                retc = SR_ERR_ARG;
                ^      ~~~~~~~~~~
src/hardware/gmc-mh-1x-2x/api.c:168:2: warning: Value stored to 'model' is never read
        model = METRAHIT_NONE;
        ^       ~~~~~~~~~~~~~
src/hardware/ikalogic-scanalogic2/api.c:325:2: warning: Value stored to 'ret' is never read
        ret = SR_OK;
        ^     ~~~~~
src/hardware/openbench-logic-sniffer/api.c:185:3: warning: Value stored to 'devc' is never read
                devc = sdi->priv;
                ^      ~~~~~~~~~
src/hardware/rigol-ds/api.c:813:3: warning: Value stored to 'devc' is never read
                devc = sdi->priv;
                ^      ~~~~~~~~~
src/hardware/scpi-pps/api.c:405:2: warning: Value stored to 'ret' is never read
        ret = SR_OK;
        ^     ~~~~~
src/hardware/yokogawa-dlm/api.c:239:2: warning: Value stored to 'ret' is never read
        ret = SR_ERR_NA;
        ^     ~~~~~~~~~
2015-09-25 12:02:42 +02:00
Daniel Elstner 36cbd69e12 demo: Strictly round up the number of samples to send
This avoids getting stuck when the time limit is less than
half of the sampling interval.
2015-09-22 16:12:01 +02:00
Daniel Elstner 98c01fe127 demo: Increase timer interval to 100 ms
Timer intervals shorter than about 100 ms are unnecessarily taxing
on system resources. Also, on systems like Windows the smallest
resolvable time unit without using high precision timers is about
15 ms. Regular timer intervals should be well above that value to
avoid being dominated by noise and round-off.
2015-09-22 11:17:27 +02:00
Daniel Elstner a49a320dea demo: Fix continuous mode and honor time limit
Also deal more gracefully with changes to the samplerate while
running.
2015-09-22 11:17:27 +02:00
Bert Vermeulen de285cce11 scpi/usbtmc: Implement Rigol DS1000 workaround on any firmware version.
Firmware versions starting with 00.02.04 apparently cause the in and out
bulk endpoints to end up in a HALT state. This is likely related to the
larger transfer size quirk implemented in the Linux kernel for the Rigol
DS1000: this USBTMC implementation does not have that workaround.

Instead, if the firmware version is >= 00.02.04, both endpoints have the HALT
condition cleared on device close.

This fixes bug #354.
2015-09-22 10:56:58 +02:00
Bert Vermeulen 2a8f2d41ad No need to check return value of libusb_get_device_descriptor().
Since libusb 1.0.16 this is guaranteed to always succeed.

This fixes bug #658.
2015-09-21 00:25:40 +02:00
Bert Vermeulen 8de8551b88 Remove unnecessary call to libusb_get_device_descriptor(). 2015-09-21 00:16:42 +02:00
Aurelien Jacobs 069d9f25d9 scpi-pps: cleaner rewriting of output regulation GVariant 2015-09-20 16:43:43 +02:00
Aurelien Jacobs d66c93ccda scpi-pps: sr_scpi_get_string() is already called by scpi_cmd_resp()
This double call was causing the following error:
sr: scpi_usbtmc: USBTMC bulk in transfer error: LIBUSB_ERROR_TIMEOUT.
2015-09-20 16:22:21 +02:00
Bartosz Golaszewski b41bbfdbe2 baylibre-acme: gpio: Don't set direction in get/set functions.
GPIO direction should be set once right after exporting. There's no need
to reset it again - in fact it's a bug which causes the probe to be reset
every time the value is read/set and gives incorrect results when reading
the GPIO values with direction == 'in'.

Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
2015-09-18 19:52:39 +02:00
Bartosz Golaszewski 4678bdb607 baylibre-acme: Add basic support for ACME revB.
Revision B of ACME hardware introduces probes with on-board at24cs02
EEPROM. Extend the ACME driver to support reading the contents of
the EEPROM via linux' sysfs interface.

Also: make the driver be able to tell the difference between revisions,
add new GPIO layout and set the shunt resistance for revB at probe
registration.

Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
2015-09-18 19:52:38 +02:00
Bartosz Golaszewski 8f1961209b baylibre-acme: Check for power-switch presence at probe's initialization.
Only perform a single check at initialization time to see if the probe is
equipped with a power-switch. This is done in preparation for revision B
support which has this kind of information encoded in EEPROM.

Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
2015-09-18 19:52:38 +02:00
Bartosz Golaszewski 133016f6ab baylibre-acme: Move enum channel_type to protocol.c.
This enum is private and only used within protocol.c. Don't expose it
in protocol.h.

Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
2015-09-18 19:52:38 +02:00
Daniel Elstner ad6181e25e sysclk-lwla: Set USB device configuration
After opening the USB device, set the device configuration to 1.
Actually, do it twice, just as the vendor driver seems to do. This
is supposed to trigger a lightweight reset of the device.

Originally, I omitted this reset sequence from the sigrok driver
because it simply did not work at all for me. However, it does seem
to work now, so that may have been a problem in libusb or the kernel
which is now fixed.

With some luck, this change may finally fix #327.
2015-09-16 23:37:58 +02:00
Daniel Elstner c81069b337 sysclk-lwla: Clean up open/closed state handling
Use states SR_ST_ACTIVE and SR_ST_INACTIVE to indicate that the
device is open or closed, respectively. Do not use any of the
other state values. Improve the robustness of the open and close
methods in face of errors. Introduce a separate flag to indicate
that a running acquisition should be canceled.
2015-09-16 23:37:58 +02:00
Daniel Elstner 225d3cb0c5 sysclk-lwla: Streamline trigger setup logic
Prepare the trigger masks at config_commit() time, so that the
trigger setup can be validated before starting an acquisition.
Accordingly, do actually report validation errors back to the
caller.
2015-09-16 23:37:58 +02:00
Daniel Elstner 2a09aac268 fx2lafw, sysclk-lwla: Avoid g_stat()
It turns out that g_stat() breaks apart when using 64 bit stat on
32-bit systems. Since the actual type of GStatBuf is decided when
glib/gstdio.h is included, it is thus possible for GLib itself to
be compiled with a different type than user code.

Ouch. Unfortunately going back to plain stat() also means that we
lose Unicode filename support on Windows.
2015-09-16 23:33:45 +02:00
Uwe Hermann 9851d35b0a lascar-el-usb: Fix copy-paste errors. 2015-09-15 11:20:57 +02:00
Uwe Hermann 1a65c5e86f motech-lps-30x: Fix blocking serial write timeout.
This fixes bug #438.
2015-09-14 00:10:25 +02:00
Uwe Hermann d545c81c96 norma-dmm: Fix blocking serial write timeout.
This fixes bug #434.
2015-09-14 00:10:24 +02:00
Uwe Hermann 936b1c00e8 gmc-mh-1x-2x: Fix blocking serial write timeout.
This fixes bug #432.
2015-09-14 00:10:24 +02:00
Uwe Hermann 8b9eb639b2 conrad-digi-35-cpu: Fix blocking serial write timeout.
This fixes bug #430.
2015-09-13 23:55:22 +02:00
Uwe Hermann b9ed8eabfd brymen-dmm: Fix blocking serial write timeout.
This fixes bug #427.
2015-09-13 23:53:55 +02:00
Uwe Hermann 84d328ac98 center-3xx: Fix blocking serial write timeout.
This fixes bug #428.
2015-09-13 23:48:09 +02:00
Uwe Hermann 5360d6d706 mic-985xx: Fix blocking serial write timeout.
This fixes bug #433.
2015-09-13 23:47:16 +02:00
Uwe Hermann 896e1a45e0 manson-hcs-3xxx: Fix blocking serial write timeout.
This fixes bug #437.
2015-09-13 23:22:21 +02:00
Uwe Hermann 32c45845f7 tondaj-sl-814: Fix blocking serial write timeout.
This fixes bug #436.
2015-09-13 23:21:04 +02:00
Daniel Elstner 6ec6c43b47 Build: Include <config.h> first in all source files
Since Autoconf places some important feature flags only into the
configuration header, it is necessary to include it globally to
guarantee a consistent build.
2015-09-13 18:54:46 +02:00
Daniel Elstner 0c536bcd00 Fix two more format warnings uncovered by MinGW build 2015-09-13 15:39:04 +02:00
Daniel Elstner 6433156c32 Fix log varargs bugs indicated by -Wformat
A few of these were pretty serious, like missing arguments,
passing integers where a string was expected, and so on.
In some places, change the types used by the code rather than
just the format strings.
2015-09-13 02:29:38 +02:00
Daniel Glöckner c940446918 hung-chang-dso-2100: Add driver
The Hung-Chang DSO-2100 is a parallel port PC oscilloscope sold back
in 1999 under brand names like Protek and Voltcraft.

This inital version of the driver has the following limitations:

 - Hardcoded calibration values. All parameters are set to 50%.
 - No support for auto triggering
 - No support for TV sync trigger modes
 - No support for the "scroll acquisition" mode

In scroll acquisition mode the device behaves more like a multimeter
and reports the current voltage of a probe on request. While in this
mode the sample rate is limited by the parallel port interface, it is
the only way to capture both channels at the same time (well, sort of).

Calibration would need auto triggering. The calibration values are very
temperature dependent and the device takes literally hours to reach its
final temperature. Every vdiv setting needs its own set of calibration
values. Without hardware modifications, the calibration settings wear
of in less than a second while waiting for a trigger because the
capacitors storing those values are not recharged in state 0x21.
2015-09-10 14:42:12 +02:00
Daniel Glöckner 05ac4a9828 hung-chang-dso-2100: Initial driver skeleton. 2015-09-10 14:42:12 +02:00
Uwe Hermann 7237e91262 portability: Use g_strerror() in favor of strerror(). 2015-09-09 15:20:10 +02:00
Uwe Hermann 34577da641 portability: Use g_ascii_strcasecmp() in favor of strcasecmp().
This is more portable and guaranteed locale-independent.
2015-09-09 15:20:10 +02:00
Daniel Elstner dd7a4a71ca drivers: Match dummy FD passed to source add/remove 2015-09-07 14:33:30 +02:00
Daniel Elstner c650d3ecbf drivers: Use timer sources instead of polling stdin 2015-09-03 19:37:09 +02:00
Daniel Elstner 027bf07796 demo: Use simple timer source instead of pipe
Get rid of the Unix pipe and the GIOChannel wrapping it. Instead,
install a simple timer event source with the appropriate timeout.
2015-09-03 19:37:09 +02:00
Daniel Elstner 89efe06460 session: Fix USB timeout handling
In sr_session_iteration(), remove the inverted evaluation of the
block parameter if a USB source is present. This stops the deluge
of USB event callbacks due to the timeout always being zero.

Also, just for cleanliness, initialize the revents member of each
GPollFD instance to zero.
2015-09-03 19:37:09 +02:00
Daniel Glöckner 1e6b5b9303 hantek-dso: fix memory leak
This fixes bug #632.
2015-08-30 18:53:21 +02:00
Daniel Glöckner 96127d0fea lascar-el-usb: fix memory leak
This fixes bug #630.
2015-08-30 18:51:18 +02:00
Uwe Hermann 607dcdeae1 kern-scale: Add initial driver contents.
This currently supports (and is tested on) the KERN EW 6200-2NM,
other models will be added later.
2015-08-28 11:59:31 +02:00
Uwe Hermann 9380ec2f05 kern-scale: Initial driver skeleton. 2015-08-28 11:43:04 +02:00
Bert Vermeulen 9c24d16a1d Make sr_next_enabled_channel() from scpi-pps available library-wide. 2015-08-25 19:13:17 +02:00
Bert Vermeulen 91ef511db2 scpi: Make helper functions from scpi-pps available library-wide. 2015-08-25 19:13:17 +02:00
Bert Vermeulen 5a1afc0907 scpi: Move SCPI-related definitions to separate header file. 2015-08-25 19:13:16 +02:00
Daniel Elstner c1aae90038 Build: Set local include directories in Makefile.am
Move the include flags for files in the source tree from
configure.ac to Makefile.am where they belong.  Also use
AM_CPPFLAGS instead of CFLAGS/CXXFLAGS to make sure the
files in the build/source tree are always picked up first.

Also, remove the include/libsigrok sub-directory from the
search path, thereby making the <libsigrok/> prefix mandatory
when building libsigrok itself.  This matches the convention
already imposed on users of the library.
2015-08-16 18:28:12 +02:00
Aurelien Jacobs 6d930b4159 brymen-bm86x: add some error checking 2015-08-15 17:23:28 +02:00
Uwe Hermann c442ffda0f Various minor cosmetics and consistency fixes. 2015-08-15 17:19:57 +02:00
Uwe Hermann dff0a89435 Doxygen consistency fixes (@foo instead of \foo). 2015-08-15 17:19:42 +02:00
Uwe Hermann 8d5228015d Various errno/strerror() related fixes.
- Don't #include <errno.h> in files that don't actually need it.

 - Don't use strerror() on error codes from functions that don't set
   errno. Replace strerror() with sr_strerror() for libsigrok functions.
2015-08-15 17:19:42 +02:00
Hubert CHAUMETTE 6c7d80afca libsigrok: demo: close pipes on dev_acquisition_stop()
Fixes a bug where new acquisition failes due to leftover pipes from
previous acquisitions:
	sr: demo: dev_acquisition_start: pipe() failed
Indeed, PulseView had 2024 pipes opened. With this fix, it stabilizes at
33 with sampling thread active.

Signed-off-by: Hubert CHAUMETTE <hchaumette@baylibre.com>
2015-08-01 00:02:56 +02:00
Uwe Hermann a394bd2813 ols: Don't #include <libserialport.h> directly.
The driver is not using sp_* calls directly, so no need to #include
the header file.
2015-07-25 16:59:04 +02:00
Uwe Hermann 338143ea03 Convert a few more occurrences of d->priv to d->context. 2015-07-10 18:19:24 +02:00
Soeren Apel 41812aca43 Fix #442 by renaming sr_dev_driver.priv to .context 2015-07-10 01:22:15 +02:00
Uwe Hermann c11a1e6122 fx2lafw: Use the USB_INTERFACE #define. 2015-07-10 01:22:15 +02:00
Uwe Hermann dc2903bbdb fx2lafw: Fix segfault wrt libusb_detach_kernel_driver().
Move the libusb_detach_kernel_driver() call after the code that
sets the usb->devhdl pointer, otherwise it'll be NULL and result
in a segfault.

  #0  libusb_kernel_driver_active (dev=0x0, interface_number=0) at libusb/core.c:1711
  #1  dev_open (sdi=0x12d99f0) at src/hardware/fx2lafw/api.c:374
  [...]

Tested on a device with the default Cypress VID/PID and one with
the Saleae Logic VID/PID, both works fine.
2015-07-10 01:05:54 +02:00
Soeren Apel 39e4517759 fx2lafw: Fix #445 by detaching the kernel driver (if any)
This avoids the need to run "rmmod usbtest" on Linux for devices
with the standard Cypress FX2 USB VID/PID (04b4:8613).
2015-07-10 01:03:54 +02:00
Daniel King 536141ff49 Demo: Fix #314 by always honoring sample limit changes 2015-07-09 20:22:51 +02:00
Soeren Apel e2b99f04d8 Fix #505 by providing a separate property list for the analog group 2015-07-09 20:22:51 +02:00
Soeren Apel 815e3cb83e Fix #574 by setting up the transfer first, then starting acquisition 2015-07-06 12:16:10 +02:00
Bartosz Golaszewski d586a7f4bd baylibre-acme: Remove unnecessary close().
The timerfd descriptor is closed automatically by
g_io_channel_shutdown(). No need to close it manually.

Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
2015-07-01 12:30:09 +02:00
Bartosz Golaszewski 7a1a3a36a9 baylibre-acme: Use SR_HZ_TO_NS() when configuring the timerfd.
Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
2015-07-01 10:47:38 +02:00
Bartosz Golaszewski 7e5a048ff2 baylibre-acme: Add a workaround for slow data acquisition.
At high sampling rates and maximum channels we are not able to acquire
samples fast enough, even though frontends still think that samples
arrive on time. This causes visible shifts in frontend plots.

To compensate for the delay introduce the following workaround: check
if we are late (if any clock events have been missed) and resend the
last frame n times (n == number of missed clock events).

Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
2015-07-01 00:03:58 +02:00
Daniel Lezcano a0648b1a12 baylibre-acme: Use timerfd instead of a fake pipe.
Currently baylibre-acme uses a fake pipe as the input channel required by
libsigrok API and calls sleep() in the data acquisition callback to create
intervals between measurements.

Switch to a more elegant approach: use Linux' timerfd and set a periodic
timer equal to the sampling rate. Then read the data every time the timer
expires.

Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
2015-07-01 00:00:33 +02:00
Bartosz Golaszewski f9b0ab6b2d baylibre-acme: Close sysfs files after stopping the acquisition.
Add a missing call to dev_acquisition_close() in dev_acquisition_stop().

Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
2015-06-29 16:07:59 +02:00
Daniel Lezcano 4e88b86cc8 baylibre-acme: Optimize reading of values from sysfs.
Opening a file has a cost (security, allocation, syscalls). The
read_sample() function always does an open/read/close sequence.

In order to optimize that, let's open the file at the moment the
acquisition starts, close it when the acquisition stops and make
read_sample() only lseek() to the beginning of the file and read
the value.

Signed-off-by: Daniel Lezcano <daniel.lezcano@free.fr>
Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
2015-06-29 16:07:52 +02:00
Daniel Elstner fe473123ba sysclk-lwla: Do not create channels in reverse order
This was originally done as an optimization in combination with a list
reversal which has since been removed from the code.  Thus, un-reverse
the channels so that the UI lists them in the correct order again.
2015-06-27 23:56:37 +02:00
Uwe Hermann a93086528e yokogawa-dlm: Minor cosmetics, consistency fixes, typos. 2015-06-23 00:46:45 +02:00
Soeren Apel 49f49cb55e yokogawa-dlm: Return correct value for SR_CONF_HDIV 2015-06-23 00:15:56 +02:00
Soeren Apel 2dcf82e9cb yokogawa-dlm: Remove dlm_setup_channels() 2015-06-23 00:15:56 +02:00
Soeren Apel c65a021c05 yokogawa-dlm: Introduce config_channel_set() 2015-06-23 00:15:56 +02:00
Soeren Apel f3c60fb6af yokogawa-dlm: Config get/set/list handler updates 2015-06-23 00:15:56 +02:00
Soeren Apel f77afcf0aa yokogawa-dlm: Fix number of digital groups 2015-06-23 00:15:56 +02:00
Soeren Apel 6fd78a9fd0 yokogawa-dlm: Prevent duplicate channel index 2015-06-23 00:15:56 +02:00
Soeren Apel 7048bb1f35 yokogawa-dlm: Add support for the DL9000 series 2015-06-23 00:15:56 +02:00
Daniel Gröber b7c53d48a8 fx2lafw: Add DSLogic Pro and DSCope firmware loading support 2015-06-22 17:14:00 +02:00
Carl-Fredrik Sundström 65e0036635 dslogic: Fix incorrect samplerate setting. 2015-06-22 16:54:39 +02:00
Alexandru Gagniuc 9a5185c736 scpi-pps: Chroma 62000P: Get capabilities from device name
The Chroma 62000P series comes in various models with different
current and voltage capabilities. These are encoded in the *IDN
string, so just get them from there, rather than needing a profile
for every model.
2015-06-16 13:04:24 +02:00
Alexandru Gagniuc 5281993e0a scpi-pps: Add profile for Chroma 62024P-80-60 DC Source 2015-06-16 13:04:24 +02:00
Uwe Hermann 84ab9da11f saleae-logic16: Emit debug info of which bitstream is used. 2015-06-11 18:35:40 +02:00
Marcus Comstedt c868139629 saleae-logic16: Support new bitstream version 1.3 with renumbered registers 2015-06-11 18:35:40 +02:00
Uwe Hermann da005885c8 scpi: Update names of a few *_OUTPUT_* items. 2015-06-07 20:58:46 +02:00
Aurelien Jacobs ffb580cf73 Actual implementation for the maynuo-m97 driver. 2015-06-07 20:15:08 +02:00
Aurelien Jacobs e1ccfb1910 maynuo-m97: Initial driver skeleton. 2015-06-07 20:15:08 +02:00
Aurelien Jacobs 7a0b98b544 Rename SR_CONF_OUTPUT_* to SR_CONF_*.
All those options are currently applied only to power-supplies
but they could apply as well to electronic loads, except for the
fact that electronic loads channels are called inputs and not
outputs.
Also when you think about an SMU (or any kind of 4-quadrants
power-supply), their channels can both source and sink current,
so they can be considered as input as much as output.
Those SR_CONF_* are thus renamed so that they can be used in all
those situations.
2015-05-12 13:22:34 +02:00
Aurelien Jacobs c1603f4574 scpi-pps: don't fail acquisition start for devices with no CMD_SELECT_CHANNEL
For devices such as the HP 6632B the following invocation was failing due to
scpi_cmd(sdi, SCPI_CMD_SELECT_CHANNEL, ...) returning SR_OK_CONTINUE.

./sigrok-cli -d scpi-pps:conn=/dev/ttyUSB0:serialcomm=9600/8n1 --continuous
sr: session: sr_session_start: could not start an acquisition (not enough data to decide error status yet)
Failed to start session.
2015-05-09 23:06:10 +02:00
Aurelien Jacobs bbc42811d0 Use G_PI instead of defining our own version of PI. 2015-05-09 22:52:24 +02:00
Uwe Hermann 562a34908e scpi-pps: Minor cleanups. 2015-05-07 03:15:35 +02:00
Uwe Hermann c80cf3e02e scpi-pps: Fix a compiler warning.
CC       src/hardware/scpi-pps/profiles.lo
  src/hardware/scpi-pps/profiles.c:67:2: warning: missing initializer
  for field 'frequency' of 'const struct channel_spec'
  [-Wmissing-field-initializers]
    { "1", { 0, 60, 0.0001 }, { 0, 25, 0.1 } },
    ^
  In file included from src/hardware/scpi-pps/profiles.c:24:0:
  src/hardware/scpi-pps/protocol.h:106:8: note: 'frequency' declared
  here
    float frequency[3];
          ^
2015-05-07 02:59:28 +02:00
Uwe Hermann 8cb5affe00 scpi-pps: Make some more items static. 2015-05-07 02:49:59 +02:00
Alexandru Gagniuc 5c9e56c95b spci-pps: Add profile for Agilent N5767A DC source 2015-05-07 02:09:09 +02:00
Alexandru Gagniuc 6c0c9dd257 spci-pps/profiles: Support frequency control in Chroma 61604 2015-05-06 19:41:46 +02:00
Alexandru Gagniuc 4264f1c03b scpi-pps: Add infrastructure for controlling output frequency
This patch only adds the needed infrastructure to control output
frequency in the same manner as output voltage or current limit. This
does require a new field in the channel_spec struct, for the sake of
symmetry.
2015-05-06 19:41:46 +02:00
Alexandru Gagniuc e8686e3ae3 asix-sigma: Avoid use of variable length arrays
This was only done once in sigma_write_register().
2015-05-01 13:42:25 +02:00
Alexandru Gagniuc 4ee1e2f35f spci-pps: Add profile for Chroma 61604 AC Source
Only the capabilities which map directly to SCPI commands supported by
sigrok are implemented at this time. This is sufficient to control
the most often used functionality of this AC source
2015-04-29 22:59:56 +02:00
Aurelien Jacobs 76372c5a9c Define our own constant for PI.
M_PI is not defined in the C standard nor in POSIX, it is a
non-standard GNU extension.
2015-04-28 22:07:03 +02:00
Aurelien Jacobs ba464a1217 strcasecmp() is defined in strings.h. 2015-04-28 22:07:01 +02:00
Uwe Hermann 17dda6c5d4 ols: Whitespace fixes. 2015-04-17 17:45:07 +02:00
Bartosz Golaszewski 192d37e728 baylibre-acme: Add a missing return value check.
Check the return value of sr_gpio_setval_export() in bl_acme_set_power_off()
and return an appropriate error if the call fails.

Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
2015-04-17 16:42:36 +02:00
Bartosz Golaszewski 09d217a40a Revert "baylibre-acme: Fix a compiler warning."
This reverts commit 4cd97e5ad7.

We should actually check the return value of sr_gpio_setval_export().

Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
2015-04-17 16:42:36 +02:00
Uwe Hermann 55462b8ba9 windows: Fix various compiler warnings.
Add LIBUSB_CALL where needed to avoid warnings such as the following:

  In file included from src/hardware/hantek-dso/api.c:34:0:
  src/hardware/hantek-dso/dso.h:212:13:
  note: expected 'libusb_transfer_cb_fn' but argument is of type 'void (*)(struct libusb_transfer *)'
   SR_PRIV int dso_get_channeldata(const struct sr_dev_inst *sdi,
               ^
2015-04-12 19:28:36 +02:00
Uwe Hermann 4cd97e5ad7 baylibre-acme: Fix a compiler warning.
CC       src/hardware/baylibre-acme/protocol.lo
  ../src/hardware/baylibre-acme/protocol.c: In function 'bl_acme_set_power_off':
  ../src/hardware/baylibre-acme/protocol.c:417:6: warning: variable 'val' set but not used [-Wunused-but-set-variable]
    int val;
        ^
2015-04-12 17:26:48 +02:00
Bartosz Golaszewski 7c91c22a31 baylibre-acme: Set update_interval when modifing samplerate.
Both ina2xx and tmp401 linux drivers used by baylibre-acme expose
the standard hwmon update_interval attribute, which affects the internal
update interval of the chip.

When setting samplerate for data acquisition try to modify this
attribute accordingly.

Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
2015-04-12 17:16:32 +02:00
Bartosz Golaszewski 1fe04eb8d6 baylibre-acme: Dynamically check per probe config options.
PROBE_FACTOR and POWER_OFF options are advertised for all ACME probes
(channel groups) regardless of whether they actually have given capability.

Check these options in config_list() at runtime and only advertise them
for probes which support them.

Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
2015-04-12 17:16:32 +02:00
Uwe Hermann b65630f78d uni-t-dmm: Add a missing NULL (fixes a crash on Android).
This caused an non-terminated driver list, which lead to a crash
on Android (at least on ARM).
2015-04-09 23:13:30 +02:00
Uwe Hermann d93c14707e dslogic: Fix FPGA bitstream upload. 2015-04-09 20:04:32 +02:00
Uwe Hermann 4df5739a9f dslogic: Add #defines for timeouts and delays. 2015-04-09 20:04:32 +02:00
Uwe Hermann eac0c61327 rigol-ds: Drop unneeded check of g_strdup_printf() result. 2015-04-08 19:14:05 +02:00
Uwe Hermann 07962655ec link-mso: Eliminate unneeded NUM_CHANNELS. 2015-04-07 02:02:43 +02:00
Uwe Hermann 0f26276329 fx2lafw: Use libusb_error_name() for reporting transfer status. 2015-04-03 21:05:02 +02:00
Uwe Hermann 07ffa5b315 Replace some magic numbers with a #define. 2015-04-01 00:23:25 +02:00
Uwe Hermann dc89faeace Reduce unnecessarily high indentation level in some places. 2015-04-01 00:23:25 +02:00
Uwe Hermann 2ea67fc9bf Minor cosmetics and consistency fixes. 2015-04-01 00:23:25 +02:00
Uwe Hermann b1f8310376 Don't check g_free() arguments for NULL.
The g_free() call is guaranteed to not segfault when NULL is passed.
2015-04-01 00:23:25 +02:00
Uwe Hermann e742b88f9a cem-dt-885x: Add a missing break statement. 2015-04-01 00:23:25 +02:00
Uwe Hermann 72d69b7cd1 zeroplus: Add a missing break statement.
This fixes a bug when trying to trigger on a channel being 0/low.
2015-04-01 00:23:24 +02:00
Uwe Hermann 2cca921d91 Fix a typo in a for loop (wrong variable). 2015-04-01 00:23:24 +02:00
Uwe Hermann ce3ecb7049 sysclk-lwla: Use ARRAY_SIZE instead of G_N_ELEMENTS.
Both do exactly the same, but we consistently use ARRAY_SIZE
in the rest of the code-base.
2015-03-26 23:53:52 +01:00
Martin Ling f05406117d uni-t-dmm: Declare each meter type in only one place. 2015-03-26 23:52:06 +01:00
Uwe Hermann 515ab0889e Various #include file cosmetic fixes.
Generally include system headers before local headers, unless there's
a technical reason to use another order.
2015-03-24 19:30:16 +01:00
Uwe Hermann 98fec29ecb Various NULL-check consistency fixes. 2015-03-24 19:30:16 +01:00
Uwe Hermann a95f142e88 Some more g_try_*alloc() fixes.
As per documented rules in HACKING, we don't check "small" allocations.
2015-03-24 19:30:16 +01:00
Uwe Hermann 1a46cc62e2 Improve readability and clarity of some numbers. 2015-03-24 19:30:16 +01:00
Uwe Hermann f3f19d1131 Fix a bunch of typos. 2015-03-24 18:01:18 +01:00
Uwe Hermann 8249889dfa demo: Fix SR_CONF_DEVICE_OPTIONS variant type. 2015-03-22 02:15:31 +01:00
Uwe Hermann 0f34cb4723 Channel names consistency fixes and simplifications. 2015-03-22 02:15:30 +01:00
Uwe Hermann db24496ac8 Remove unneeded #endif comments. 2015-03-22 02:15:30 +01:00
Uwe Hermann 93b118da4f Consistency and whitespace fixes for switch statements. 2015-03-22 02:15:30 +01:00
Uwe Hermann d0148a506e Make memset() invocations consistent across all files. 2015-03-22 02:15:30 +01:00
Uwe Hermann 0c5f2abc66 Random whitespace and other minor fixes. 2015-03-22 02:15:30 +01:00
Uwe Hermann dcd438ee35 Simplify a few config_set() callbacks.
Also, extended logging and random whitespace fixes.
2015-03-22 02:15:30 +01:00
Uwe Hermann 329733d92c Constify a few arrays and variables. 2015-03-21 20:30:53 +01:00
Uwe Hermann 53cda65a6b Remove unneeded explicit array size specification. 2015-03-21 19:40:19 +01:00
Uwe Hermann 1beccaed46 Various minor whitespace fixes. 2015-03-21 19:28:54 +01:00
Uwe Hermann e8be616955 tondaj-sl-814: Add missing SR_PRIV. 2015-03-21 19:01:10 +01:00
Uwe Hermann 145d794fac serial-dmm: Use g_malloc()/g_free(). 2015-03-21 18:46:00 +01:00
Uwe Hermann 1a8639164e Minor cosmetics, cleanups. 2015-03-21 18:28:02 +01:00
Uwe Hermann 8852eb75d1 serial-dmm: Drop obsolete extern declaration. 2015-03-21 13:17:51 +01:00
Martin Ling bcbef5ed70 serial-dmm: Declare each meter type in only one place. 2015-03-21 13:13:34 +01:00
Martin Ling 4f840ce965 Pass driver struct pointer to driver callbacks.
This lays the groundwork for subdrivers to share callbacks without
needing a separate wrapper function for each subdriver.
2015-03-21 13:09:40 +01:00
Martin Ling 702f42e8eb rigol-ds: Add DS1000Z series support.
Tested on an MSO1104Z with firmware 00.04.02.SP4.

The analog channels are captured correctly. For the MSO series, with digital
channels, there are two outstanding issues:

1. Logic data is retrieved per-channel, one byte per sample, with the value
   in the LSB of each byte. The current datafeed logic format doesn't allow
   this format to be passed on directly. I suggest we resolve that rather than
   making the driver buffer and interleave the data.

   As stands, the code will retrieve data for all channels and pass it onto
   the datafeed with unitsize=1. Channel D0 can used correctly if selected
   alone. For other channels, data is passed to the frontend but the API does
   not provide a way to associate it with the correct channel.

2. Channels CH3 and CH4 are multiplexed with D0-7 and D8-15 respectively, so
   enabling these is mutually exclusive. We don't currently have a way to
   express this constraint to the frontend.
2015-03-21 01:55:55 +01:00
Uwe Hermann c36f78f772 Add initial Voltcraft VC-870 support.
There are a few details that have yet to be implemented or
reverse engineered and tested.
2015-03-20 21:27:04 +01:00
Bartosz Golaszewski 350b8b07f0 baylibre-acme: Fix a double free in bl_acme_set_shunt().
Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
2015-03-20 16:54:02 +01:00
Martin Ling cfcdf57677 scpi-pps: Add profile for Rigol DP821A. 2015-03-20 15:33:49 +01:00
Martin Ling 7d4f1741e3 scpi-pps: Initialise sdi with status SR_ST_INACTIVE.
Without this change a segfault occurs at exit after scan, because
dev_close() is called and the device is believed to be open.
2015-03-20 15:33:49 +01:00
Martin Ling 40c2c9159c rigol-ds: Fix broken channel group check in config_list(). 2015-03-19 23:01:50 +00:00
Martin Ling f579d08bc5 rigol-ds: Data source is a device option, not per channel group. 2015-03-19 23:01:50 +00:00
Martin Ling 98bfc4741f rigol-ds: Use sr_scpi_get_bool(). 2015-03-19 23:01:50 +00:00
Martin Ling bff16ba817 rigol-ds: Fix double free.
std_dev_clear() frees all channel groups, so this one is not required.
2015-03-19 23:01:50 +00:00
Martin Ling 16aca7661b rigol-ds: Fix wrong channel group malloc size. 2015-03-19 23:01:50 +00:00
Martin Ling 5e23fcab88 Simplify channel creation.
We always follow sr_channel_new() with a call to add the channel to the sdi.
Tidy up a bit by adding this functionality to sr_channel_new() instead.
2015-03-19 21:37:33 +00:00
Uwe Hermann bc49777251 fx2lafw: Replace obsoleted strncmp() calls.
The fixed lengths for strncmp() can no longer be used since strings of
various lengths can be passed to match_manuf_prod(). Use strcmp() instead.
2015-03-19 18:25:55 +01:00
eightdot 6fcf3f0a22 Various fixes/updates to make the driver compile.
This patchset was originally done by eightdot <gituser@eightdot.eu> by
manually forward-porting parts of the changes done by Bert Vermeulen (see
previous commits), but then heavily modified by Uwe Hermann to be based on
top off the (git-)rebased patches from Bert Vermeulen instead.

Note: This initial DSLogic code is *not* yet in a working or usable
state. It should be considered as a basis for further work only, for now.
2015-03-19 18:25:55 +01:00
Bert Vermeulen b9d530920f fx2lafw: Basic acquisition support for DSLogic. 2015-03-19 18:25:55 +01:00
Bert Vermeulen a7d7f93c1b fx2lafw: scan/firmware support for DSLogic. 2015-03-19 18:25:55 +01:00
Uwe Hermann f7ab2f231a ols: Fix a compiler warning (unused variable).
CC       src/hardware/openbench-logic-sniffer/api.lo
  ../src/hardware/openbench-logic-sniffer/api.c: In function 'scan':
  ../src/hardware/openbench-logic-sniffer/api.c:103:10: warning: unused
  variable 'probefd' [-Wunused-variable]
    GPollFD probefd;
            ^
2015-03-13 19:12:47 +01:00
Uwe Hermann ed936ccc7c ols: Fix detection and acquisition on Windows.
Use the more portable sp_input_waiting() instead of g_poll() with FDs.
Thanks to Martin Ling for the hints. This is tested on Linux and Win7
using an OLS; scanning for the device and starting an acquisition works.

Also, add some more debug output.

This fixes bug #562.
2015-03-13 18:08:49 +01:00
Bartosz Golaszewski 5fabeeac6a baylibre-acme: correctly handle channel group options
Split device options into general and channel group settings, and
adjust config_list() callback appropriately.

Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
2015-03-11 18:23:41 +01:00
Martin Ling bf622e6d00 Rename SR_CONF_NUM_TIMEBASE to SR_CONF_NUM_HDIV. 2015-03-02 12:24:12 +01:00
Martin Ling f3cde30904 ut372: Initial sub-driver skeleton. 2015-03-01 22:30:57 +00:00
Baruch Even 2cb63065f5 serial-dmm: Add MASTECH MS8250B as a supported DMM.
It is an alias and uses the FS9721 driver.
2015-02-27 15:10:19 +01:00
Uwe Hermann d9c3331d12 asix-sigma: Use the more portable g_usleep(). 2015-02-26 11:15:02 +01:00
Bartosz Golaszewski 380ee96fdf baylibre-acme: don't report ACME as detected if no probes are present
Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
2015-02-20 11:22:26 +01:00
Uwe Hermann 3d14ce49e4 baylibre-acme: Fix vendor/device name. 2015-02-17 17:03:41 +01:00
Uwe Hermann d258022db0 baylibre-acme: Drop unneeded comment.
There's indeed no g_fclose() unfortunately. The g_*() wrappers for file
handling are mainly there to deal with portability issues in file names
(encoding, character sets, etc) on different platforms.
2015-02-16 01:57:35 +01:00
Uwe Hermann 3452785431 baylibre-acme: Fix a compiler warning.
Use PRIu64 to avoid the following compiler warning:

    CC       src/hardware/baylibre-acme/gpio.lo
  protocol.c: In function 'bl_acme_set_shunt':
  protocol.c:341:2: warning: format '%llu' expects argument of type 'long long unsigned int', but argument 3 has type 'uint64_t' [-Wformat=]
    g_fprintf(fd, "%llu\n", MOHM_TO_UOHM(shunt));
    ^
2015-02-16 01:57:35 +01:00
Uwe Hermann 391e23a97f baylibre-acme: Minor coding-style, cosmetics. 2015-02-16 01:57:35 +01:00
Bartosz Golaszewski 740ad48ac8 baylibre-acme: Add support for SR_CONF_POWER_OFF.
Allow to remotely cut the power at ACME probe level.

Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
2015-02-16 01:20:08 +01:00
Bartosz Golaszewski 289eebd7ca baylibre-acme: Add Linux-specific GPIO helpers.
These functions allow to export, read and set GPIOs using Linux
sysfs interface.

Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
2015-02-16 01:20:08 +01:00
Bartosz Golaszewski 61f2b7f74c baylibre-acme: Add support for probe factor setting.
Implement support for SR_CONF_PROBE_FACTOR setting in BayLibre ACME
driver. Given the channel-group parameter this allows to set the
shunt resistance for each probe.

Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
2015-02-16 01:20:08 +01:00
Bartosz Golaszewski 6b80b80dcf baylibre-acme: Driver implementation.
Implement basic functionalities for baylibre-acme. Add support
for common config options, device detection and sample reading.

Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
2015-02-16 01:20:07 +01:00
Bartosz Golaszewski dfaee1de17 baylibre-acme: Initial driver skeleton.
Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
2015-02-16 01:20:07 +01:00
Aurelien Jacobs 96cb7faac3 rigol-ds: fix the smallest supported vdiv for the DS2000 series. 2015-02-15 21:15:27 +01:00
Aurelien Jacobs 81b85663f3 rigol-ds: return the actual hardware num_vdiv and vdiv list. 2015-02-15 21:15:21 +01:00
Aurelien Jacobs c33ff3771b rigol-ds: fix search for the closest vdiv.
We try to find the smallest diff by comparing each diff with
the previously known smallest diff, so initially, this smallest diff
should be INFINITY so that we are sure to find a smaller one.

This fixes the following exception:
sr: rigol-ds: Negative vdiv index: -1.
Caught exception: not applicable
2015-02-15 21:15:04 +01:00
Uwe Hermann f44f7e61a3 rigol-ds: Add missing "break" statements. 2015-02-14 19:32:25 +01:00
Uwe Hermann d50725e012 rigol-ds: Add missing 20/50/100V vdiv entries.
These are available on e.g. Rigol DS1102E (or "upgraded" DS1052E).

Without this, if one of the channels happens to have been set to
one of the missing vdiv settings frontends (e.g. PulseView) will
have some trouble using the scope:

  sr: hwdriver: sr_config_get(): key 30012 (vdiv) sdi 0x11bcb70 cg CH1
  sr: rigol-ds: Negative vdiv index: -1.
  std::exception
2015-02-14 19:32:15 +01:00
Uwe Hermann e1b5b7e735 rigol-ds: Add more debug output. 2015-02-14 18:34:04 +01:00
Aurelien Jacobs d5c4144e2c rigol-ds: handle full word trigger slope in config_get().
Some scope can return POSITIVE/NEGATIVE instead of POS/NEG,
so accept this as well.

This closes bug #558.
2015-02-13 16:37:24 +01:00
Aurelien Jacobs b0c9d1d1c2 rigol-ds: SR_CONF_TRIGGER_SLOPE is actually listable. 2015-02-12 17:58:32 +01:00
Daniel Elstner 57ba5f3d56 sysclk-lwla: Widen constant to 64 bit before shifting
(lwla_convert_trigger): Fix trigger mask computation bug introduced
by recent change:  Widen constant to 64 bit before shifting so that
channel nunmbers beyond 32 are processed correctly.
2015-01-31 21:09:01 +01:00
Bartosz Golaszewski 7a8a1aba37 demo: implement averaging support
Add support for averaging and avg_samples option to the demo device.

Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
2015-01-25 18:00:42 +01:00
Mathias Katzer f62f595bfc hameg-hmo: Fix double-free issue. 2015-01-11 01:43:12 +01:00
Mathias Katzer a1b61e6e04 hameg-hmo: Set SR_CONF_GET | SR_CONF_SET for frame limit.
Reading analog data from an HMO1024 (Firmware 04.527) failed because the
frame limit could not be set.
2015-01-11 01:43:12 +01:00
Bert Vermeulen 974fb0fffa saleae-logic16: Show libusb transfer status name instead of code. 2014-11-28 00:21:56 +01:00
Uwe Hermann a11e10ec91 saleae-logic16: Change two errors into warnings.
Related to #466, convert two more sanity checks from errors into warnings.
This may allow more devices to work with libsigrok.
2014-11-27 23:22:05 +01:00
Bert Vermeulen 5cfcab6603 saleae-logic16: Clearer error message. 2014-11-27 01:01:13 +01:00
Aurelien Jacobs e743a47d6d beaglelogic: Add SR_CONF_CAPTURE_RATIO support. 2014-11-25 22:13:36 +01:00
Aurelien Jacobs 5a971f66a3 saleae-logic16: Add SR_CONF_CAPTURE_RATIO support. 2014-11-25 22:13:36 +01:00
Aurelien Jacobs 7bfcb25cf1 fx2lafw: Add SR_CONF_CAPTURE_RATIO support. 2014-11-25 16:56:34 +01:00
Aurelien Jacobs fe5a735553 soft-trigger: Add support for pre-triggering. 2014-11-25 16:56:34 +01:00
Uwe Hermann b6085eb179 manson-hcs-3xxx: Fix incorrect SR_CONF_SCAN_OPTIONS handling.
The SR_CONF_SCAN_OPTIONS key must be listable with or without sdi,
otherwise the device will not be detected by frontends.
2014-11-23 21:13:16 +01:00
Tim Hatch cd3c4df35a saleae-logic16: Downgrade error during capture to a message.
Some clone doesn't set this to the exact same value, and both bits in 0x48 are
marked as unknown at
http://sigrok.org/wiki/Saleae_Logic16/Firmware#FPGA_variables

This fixes bug #466.
2014-11-23 13:47:45 +01:00
Uwe Hermann 91219afc75 Use g_malloc0() consistently, simplify error handling.
Use g_malloc0() for small allocations and assume they always
succeed. Simplify error handling in a few places accordingly.

Don't always sanity-check parameters for non-public (SR_PRIV)
functions, we require the developers to invoke them correctly.
This allows further error handling simplifications.
2014-11-22 17:02:57 +01:00
Uwe Hermann c368e6f3d2 Don't check sr_channel_new() return value (always succeeds).
We now use g_malloc0() for the allocation and assume the allocation
will always succeed, thus sr_channel_new() will always return a
valid new channel.
2014-11-21 12:10:05 +01:00
Uwe Hermann f57d8ffe66 Consistently use g_malloc0() for allocating devc.
We assume the allocation will always succeed, hence no need for
checking the returned value.
2014-11-21 12:09:01 +01:00
Uwe Hermann aac29cc192 Eliminate sr_dev_inst_new(). 2014-11-21 02:01:36 +01:00
Aurelien Jacobs cf0280fa1b yokogawa-dlm: Publish driver options. 2014-11-19 23:54:01 +01:00
Aurelien Jacobs 413f1944d1 motech-lps-30x: Publish driver options. 2014-11-19 23:53:35 +01:00
Aurelien Jacobs f3ba3c119c manson-hcs-3xxx: Publish driver options. 2014-11-19 23:53:10 +01:00
Aurelien Jacobs 6ec3ef9b92 hameg-hmo: Publish driver options. 2014-11-19 23:52:51 +01:00
Uwe Hermann e07edc83d6 mic-985xx: Correctly report SR_CONF_THERMOMETER/_HYGROMETER.
Some models only log temperature, others log temperature and humidity
(so they need different drvopts).
2014-11-18 23:43:38 +01:00
Uwe Hermann 20a7cd07c9 mic-985xx: Drop unneeded #define. 2014-11-18 23:26:10 +01:00
Uwe Hermann d6e1e6c4e1 mic-985xx: Publish driver options. 2014-11-18 23:26:10 +01:00
Uwe Hermann 489c338884 center-3xx: Drop unneeded #define. 2014-11-18 23:20:09 +01:00
Uwe Hermann 6685e9a6b3 center-3xx: Publish driver options. 2014-11-18 23:20:09 +01:00
Bert Vermeulen 5c868fef43 Revert "victor-dmm: Set spec digits to 3, matching the display."
This reverts commit 28b4243493.
2014-11-18 18:10:19 +01:00
Bert Vermeulen 63ea6141b6 ols: Publish driver options. 2014-11-18 17:41:36 +01:00
Bert Vermeulen f9dada0b60 agilent-dmm: Now really fix driver options. 2014-11-18 17:31:58 +01:00
Bert Vermeulen 42a47a9a4b appa-55ii: Publish driver options. 2014-11-18 16:50:47 +01:00
Bert Vermeulen 5ecd9049e5 hantek-dso: Fix driver options. 2014-11-18 16:46:39 +01:00
Bert Vermeulen 1f889afd61 atten-pps3xxx: Fix driver options. 2014-11-18 16:44:58 +01:00
Bert Vermeulen 023c73ae05 cem-dt-885x: Fix driver options. 2014-11-18 16:44:14 +01:00
Bert Vermeulen 9d9cf1c4b9 scpi-pps: Fix driver options. 2014-11-18 16:44:14 +01:00
Bert Vermeulen 2ff11e50a5 asix-sigma: Fix driver options. 2014-11-18 16:30:47 +01:00
Bert Vermeulen 1e4a7cace2 demo: Fix driver options. 2014-11-18 15:39:46 +01:00
Bert Vermeulen ff6b76a145 fx2lafw: Publish driver options. 2014-11-18 15:35:30 +01:00
Bert Vermeulen ce4bd05256 agilent-dmm: Publish driver options. 2014-11-18 15:34:52 +01:00
Bert Vermeulen 5533392828 victor-dmm: Publish driver options. 2014-11-18 14:34:02 +01:00
Bert Vermeulen 28b4243493 victor-dmm: Set spec digits to 3, matching the display. 2014-11-18 00:24:08 +01:00
Aurelien Jacobs 41caa31909 Add a sr_analog_init() API to initialize sr_datafeed_analog2 struct.
It fills the fields with reasonable default values that should suit
most of the drivers. Drivers are obviously free to override the fields
they want after initializing.
2014-11-17 22:04:24 +01:00
Aurelien Jacobs 62f155f0c7 demo: Fix analog output at low samplerate. 2014-11-17 13:39:53 +01:00
Aurelien Jacobs 3772c04990 demo: Fix square pattern output shorter than other patterns. 2014-11-17 13:39:53 +01:00
Bert Vermeulen 4b664cd6ce demo: Use allocation for model string. 2014-11-14 11:37:11 +01:00
Uwe Hermann 676877f6ce mic-985xx: Convert to use SR_DF_ANALOG2. 2014-11-13 22:51:39 +01:00
Uwe Hermann a84a26d98a victor-dmm: Convert to use SR_DF_ANALOG2. 2014-11-13 22:51:39 +01:00
Uwe Hermann 0af636bed9 Change sr_dev_inst_new() to take no parameters.
Change all callers to set the fields manually as needed.
2014-11-12 17:18:46 +01:00
Uwe Hermann 6508992d04 Brymen BM25x: Drop unneeded _ser/_SER suffix.
There's only one cable for this DMM, thus there's no need for a
_ser/_SER suffix or for specifying the cable name.
2014-11-02 16:40:40 +01:00
Uffe Jakobsen bce75f947d ols: Fix a serial port related issue on FreeBSD.
Add sp_drain() to ensure bytes have actually been transmitted
over the wire.

This fixes bug #414.
2014-11-01 19:44:36 +01:00
Uwe Hermann aab4b8cb70 fx2lafw: Fix wide (16bit) sampling case.
This fixes bug #373.
2014-10-29 22:46:57 +01:00
Bert Vermeulen e3594306a9 zeroplus-logic-cube: Add support for AKIP-9101.
Thanks to Nikita Nazarenko for the patch.
2014-10-29 13:26:57 +01:00
Bert Vermeulen 933defaa03 hantek-dso: Fix driver/global/channel group config keys.
This was way behind and did not yet support channel groups.
2014-10-27 17:09:57 +01:00
Bert Vermeulen e7ba5a994b asix-sigma: Publish driver options. 2014-10-27 17:09:47 +01:00
Bert Vermeulen a258204e00 scpi-pps: Publish driver options. 2014-10-27 17:09:47 +01:00
Bert Vermeulen 390795c099 demo: Rearrange driver and device options. 2014-10-27 17:09:47 +01:00
Bert Vermeulen d7125bfa1e cem-dt-885x: Publish driver options. 2014-10-27 17:09:47 +01:00
Bert Vermeulen d6fa8ace94 atten-pps3xxx: Publish driver options. 2014-10-27 17:09:47 +01:00
Uwe Hermann 8769478c07 Add support for the UNI-T UT71x series (aka Voltcraft VC-920/940/960).
Tested on the Voltcraft VC-920 and VC-940 (both UT-D02 and UT-D04
cables), but it should work for all devices in this series without
any changes.
2014-10-25 17:14:30 +02:00
Bert Vermeulen cf49d66bc6 hantek-dso: Properly zero out MQ flags. 2014-10-22 22:19:41 +02:00
Bert Vermeulen c3eadb0760 scpi-pps: Add support for Fluke/Philips PM2800 series. 2014-10-18 23:21:37 +02:00
Bert Vermeulen c1d56d2013 scpi-pps: Move non-standard data type processing to SCPI parser. 2014-10-18 23:21:37 +02:00
Bert Vermeulen 4a471029c2 scpi-pps: Add channel probe facility to scan.
If the number and specs of the device's channels are not static, i.e.
need to be probed, this facility is needed.

Initially this will be used for the Philips PM2800 series, where only
the model returned by *IDN? is needed. However this could also be used
to do actual discovery with vendor-specific SCPI commands.
2014-10-18 23:21:37 +02:00
Soeren Apel d1314831e4 yokogawa-dlm: Populate sdi->serial_num and sdi->version 2014-10-17 03:02:52 +02:00
Soeren Apel b3fccc851b rigol-ds: Populate sdi->serial_num 2014-10-17 03:02:52 +02:00
Soeren Apel b33db61c48 hameg-hmo: Populate sdi->serial_num 2014-10-17 03:02:52 +02:00
Soeren Apel d08667c53b scpi-pps: Populate sdi->serial_num and fix hw_info mem leak 2014-10-17 03:02:52 +02:00
Soeren Apel 0699ccdd92 sysclk-lwla: Let the sdi getter populate sdi->connection_id
This fixes bug #441.
2014-10-17 03:02:52 +02:00
Soeren Apel c962d07cba ikalogic-scanalogic2: Let the sdi getter popuplage sdi->connection_id
This fixes bug #440.
2014-10-17 03:02:52 +02:00
Bert Vermeulen 984e4b0db8 scpi-pps: Start acquisition on the first enabled channel. 2014-10-17 03:00:55 +02:00
Bert Vermeulen 624503ae90 scpi-pps: Optimize channel selection.
This avoids sending a channel selection command to the device if
the channel we're working on is already on the same underlying
output channel.
2014-10-17 03:00:05 +02:00
Bert Vermeulen ee2860ee11 scpi-pps: Disable beeper during session.
At least the Rigol DP800 series trigger the beeper when changing
channels remotely. Which gets rather annoying when doing acquisition
on three channels as fast as you can.
2014-10-16 15:24:27 +02:00
Bert Vermeulen bf48ccebee scpi-pps: Properly clean up acquisition session. 2014-10-16 14:55:56 +02:00
Bert Vermeulen 60475cd788 scpi-pps: Use only standard SCPI for Rigol DP800 series. 2014-10-16 13:23:21 +02:00
Bert Vermeulen ca95e90fb3 Use SR_CONF_OUTPUT_VOLTAGE_TARGET and _CURRENT_LIMIT.
These describe them better; the two are fundamentally different
things to set.
2014-10-15 12:03:00 +02:00
Bert Vermeulen 53a81803e4 scpi-pps: Split boolean set options into enable/disable.
This makes it easier to support devices that need something else
than "ON" or "OFF".
2014-10-13 12:50:28 +02:00
Janne Huttunen b50891952d Add driver for DER EE DE-5000 LCR meter.
Add a driver for the DER EE DE-5000 LCR meter. This meter is based on
the Cyrustek ES51919/ES51920 chipset and communicates with the host
computer via an optional connectivity kit.

The kit uses an optoisolated unidirectional link to connect to the
meter and an USB cable on the host side. Internally the connection is
using the FTDI FT232R USB UART chip i.e. from the host computer point
of view the meter is connected into an RS-232 serial port.

This driver implements just a thin shim layer for registering the
driver and uses the es51919 module for all the actual work.
2014-10-13 00:56:11 +02:00
Bert Vermeulen f4d3a4fb9a ols: Fix serial port timeout. 2014-10-08 03:00:47 +02:00
Bert Vermeulen 9e6d9bee2a colead-slm: Fix serial port timeout. 2014-10-08 02:23:20 +02:00
Bert Vermeulen 2eb1612d46 atten-pps3xxx: Use serial_timeout(). 2014-10-06 12:12:13 +02:00
Bert Vermeulen 945cfd4fdd atten-pps3xxx: Fix serial port timeout. 2014-10-05 12:29:28 +02:00
Bert Vermeulen 204014007f fluke-dmm: Fix blocking serial write timeout. 2014-10-04 10:39:11 +02:00
Bert Vermeulen 95779b43b8 agilent-dmm: Fix blocking serial write timeout. 2014-10-04 10:39:11 +02:00
Martin Ling eead278242 Add a timeout parameter to blocking serial calls.
Set this new parameter to 0 (no timeout) at every call site. This is
consistent with previous behaviour, so cannot cause any regressions.

Waiting forever for a serial operation is clearly always wrong. Without
specific knowledge of each device and driver however, I can't choose
appropriate timeouts for each call. The maintainers of these drivers
will need to do so, and also add appropriate handling of timeouts.

When this commit is merged, a bug should be entered for each driver
that is touched by it.
2014-10-02 22:06:16 +02:00
Bert Vermeulen 7ce59a3133 Avoid serial_write_blocking() warnings. 2014-10-02 16:01:27 +02:00
Martin Ling 081c214eac Fix similar broken error handling on several serial calls. 2014-10-02 15:57:02 +02:00
Bert Vermeulen 7f22cd9554 kecheng-kc-330b: Fix missing time/frequency weighting. 2014-10-02 15:06:36 +02:00
Bert Vermeulen 8219214ff0 hantek-dso: Code cleanup.
This cleans up a warning generated by clang's static analyzer.
2014-10-02 15:03:18 +02:00
Bert Vermeulen 385cb66058 demo: Code cleanup.
This cleans up a warning generated by clang's static analyzer.
2014-10-02 15:02:14 +02:00
Bert Vermeulen f4d0020ec6 fluke-dmm: Code cleanup.
This cleans up a warning generated by clang's static analyzer.
2014-10-02 15:00:37 +02:00
Bert Vermeulen 65c8d48f14 chronovu-la8: Code cleanup.
This cleans up a warning generated by clang's static analyzer.
2014-10-02 14:58:57 +02:00
Bert Vermeulen 382cb19f29 asix-sigma: Trigger code cleanup.
This cleans up a warning generated by clang's static analyzer.
2014-10-02 14:53:20 +02:00
Bert Vermeulen 90486ba835 agilent-dmm: Code cleanup.
This cleans up a warning generated by clang's static analyzer.
2014-10-02 14:11:35 +02:00
Soeren Apel 66c91e2509 Removal of sdi->index, step 8: fix victor-dmm 2014-09-30 01:42:58 +02:00
Soeren Apel bde9fbd197 Removal of sdi->index, step 7: fix testo 2014-09-30 01:42:58 +02:00
Soeren Apel c79d4444fe Removal of sdi->index, step 6: fix sysclk-lwla 2014-09-30 01:42:58 +02:00
Soeren Apel 65340dd5df Removal of sdi->index, step 5: fix ikalogic-scanalogic2 2014-09-30 01:42:58 +02:00
Soeren Apel aed4ad0bea Removal of sdi->index, step 4: fix trivial sr_dev_inst_new() calls 2014-09-30 01:42:58 +02:00
Soeren Apel ce7d3578e3 saleae-logic16: Use physical USB connection instead of sdi->index 2014-09-30 01:42:58 +02:00
Soeren Apel 71580ef1f3 Remove sdi->index from openbench-logic-sniffer and pipistrello-ols 2014-09-30 01:42:58 +02:00
Soeren Apel 395206f460 hantek-dso: Use physical USB connection instead of sdi->index 2014-09-30 01:42:58 +02:00
Soeren Apel ee4f9bb1bd zeroplus-logic-cube: Use physical USB connection instead of sdi->index 2014-09-30 01:42:58 +02:00
Soeren Apel 5e2c86eb31 fx2lafw: Use physical USB connection instead of sdi->index
Previously, sdi->index was used to tell several identical fx2lafw-compatible
devices apart. This was a bit of a hack, so this patch makes it use physical
device connections instead. They're guaranteed to remain the same even if
the USB device reconnects.
2014-09-27 12:49:44 +02:00
Martin Ling 7ef93fb09f tondaj-sl-814: Remove SERIAL_NONBLOCK flag.
All calls in the driver are now explicitly (non)blocking.
2014-09-24 23:30:32 +02:00
Martin Ling 539a85596f tondaj-sl-814: Mark serial read/write calls as blocking.
These calls are executed from an event handler and were previously nonblocking,
but they have no partial read/write handling. The code is already marked TODO
for improvement.
2014-09-24 23:30:32 +02:00
Martin Ling 47d98603e7 tondaj-sl-814: Mark serial read call as nonblocking.
This call was already nonblocking since the driver opens the port with the
SERIAL_NONBLOCK flag. Partial reads are handled.
2014-09-24 23:30:31 +02:00
Martin Ling 9333691aaf teleinfo: Mark serial read as nonblocking, remove SERIAL_NONBLOCK flag.
This call was already nonblocking due to the flag.
2014-09-24 23:30:31 +02:00
Martin Ling 4ded59eef0 openbench-logic-sniffer: Remove SERIAL_NONBLOCK flag.
All calls in this driver are already explicitly (non)blocking.
2014-09-24 23:30:31 +02:00
Martin Ling d12ef776d3 norma-dmm: Remove SERIAL_NONBLOCK flag.
All calls in the driver are now explicitly (non)blocking.
2014-09-24 23:30:31 +02:00
Martin Ling 92714255b3 norma-dmm: Make serial write call block.
This call is executed from an event handler and was previously nonblocking,
but has no partial write handling. It sends a short packet so should be OK
to block, most likely the output buffer will be empty anyway.
2014-09-24 23:30:31 +02:00
Martin Ling 8849f45ad7 norma-dmm: Make write call block.
This call was previously nonblocking, but has no partial write handling.
It is called in the scan where it is free to block.
2014-09-24 23:30:31 +02:00
Martin Ling 32950cc071 norma-dmm: Mark serial read call as nonblocking.
This call was already nonblocking since the driver opens the port with the
SERIAL_NONBLOCK flag. It only reads one byte, and a zero result is handled
appropriately.
2014-09-24 23:30:31 +02:00
Martin Ling 5b980134c5 motech-lps-30x: Remove SERIAL_NONBLOCK.
All calls in the driver are now explicitly (non)blocking.
2014-09-24 23:30:31 +02:00
Martin Ling 856dccb7a6 motech-lps-30x: Make serial write call block.
This call was previously explicitly nonblocking, but has no partial write
handling. It sends a short packet so should be OK to block, most likely the
output buffer will be empty anyway.
2014-09-24 23:30:31 +02:00
Martin Ling e050124095 motech-lps-30x: Mark serial read call as nonblocking.
This call was already nonblocking since the driver opens the port with the
SERIAL_NONBLOCK flag. It only reads one byte, and a zero result is handled
appropriately.
2014-09-24 23:30:31 +02:00
Martin Ling 51056d61ec mic-985xx: Remove SERIAL_NONBLOCK call.
All calls in the driver are now explicitly (non)blocking.
2014-09-24 23:30:31 +02:00
Martin Ling 3e2373247c mic-985xx: Make serial write call block.
This call is executed from an event handler and was previously nonblocking,
but has no partial write handling. It sends a short packet so should be OK
to block, most likely the output buffer will be empty anyway.
2014-09-24 23:30:31 +02:00
Martin Ling 98842e53eb mic-985xx: Mark serial read as nonblocking.
This call was already nonblocking since the driver opens the port with the
SERIAL_NONBLOCK flag. Partial reads are handled.
2014-09-24 23:30:31 +02:00
Martin Ling e13e354f89 gmc-mh-1x-2x: Remove SERIAL_NONBLOCK flag.
All calls in the driver are now explicitly (non)blocking.
2014-09-24 23:30:31 +02:00
Martin Ling 612db3c44b gmc-mh-1x-2x: Make serial write calls block.
These calls are executed from an event handler and were previously nonblocking,
but have no partial write handling. They send short packets so should be OK to
block, most likely the output buffer will be empty anyway.

Fix error handling for some: serial_write can return any negative error code.
2014-09-24 23:30:30 +02:00
Martin Ling e1960467ce gmc-mh-1x-2x: Make serial write call block, and fix error handling.
This call was previously nonblocking, but there is no handling of partial
writes. It is called from config_set where it is free to block.

Also fix error handling: serial_write can return any negative error code,
not just -1.
2014-09-24 23:30:30 +02:00
Martin Ling 4a0eda2b70 gmc-mh-1x-2x: Mark serial read calls as nonblocking.
These calls were already nonblocking since the driver opens the port with the
SERIAL_NONBLOCK flag. They only read one byte. A return value of zero is not
handled, but should not occur in theory due to the G_IO_IN check. It might be
good to add handling of a zero return anyway, since I'm not sure if this is
always accurate.
2014-09-24 23:30:30 +02:00
Martin Ling 0714a010cc gmc-mh-1x-2x: Mark serial read call as nonblocking.
This call was already nonblocking since the driver opens the port with the
SERIAL_NONBLOCK flag. It only reads one byte, and a zero result is handled
appropriately.
2014-09-24 23:30:30 +02:00
Martin Ling bb27c76513 fluke-dmm: Make serial write calls block, and fix error handling.
These calls are executed from an event handler and were previously nonblocking,
but have no partial write handling. They send short packets so should be OK to
block, most likely the output buffer will be empty anyway.

Also fix error handling for these calls, which seems to have been retained from
previous direct usage of write() to a serial port fd.
2014-09-24 23:30:30 +02:00
Martin Ling 50276118ca fluke-dmm: Make serial write calls block, and fix error handling.
These calls were previously nonblocking, but have no partial write handling.
They are made from scan and acquisition_start contexts where they are free
to block.

Remove the SERIAL_NONBLOCK at open, which only applied during scan, since all
calls in the scan are now explicitly blocking.

Also fix error handling for these calls, which appears to have been kept
from a previous direct usage of write() on a serial port fd.
2014-09-24 23:30:30 +02:00
Martin Ling 707fa85ad5 fluke-dmm: Mark serial read call as nonblocking.
This call was already nonblocking since the driver opens the port with the
SERIAL_NONBLOCK flag. Only one byte is read. The case of 0 being returned
is not handled, but the call is only made if G_IO_IN occurred so in theory,
there should be a byte available. It might be wise to add handling for a
return of 0 nonetheless, as I'm not sure if this is always accurate.
2014-09-24 23:30:23 +02:00
Martin Ling 55e32714f9 conrad-digi-35-cpu: Make serial write call block.
This call was previously nonblocking, but there is no partial write handling.
It is only called from config_set so it is free to block.
2014-09-24 23:30:01 +02:00
Martin Ling 0ac161bba0 conrad-digi-35-cpu: Remove SERIAL_NONBLOCK flag from open at scan time.
This open call is only made to check access, the port is closed immediately
afterwards. The flag therefore has no effect.
2014-09-24 23:30:01 +02:00
Martin Ling c9fc06d7f0 colead-slm: Mark serial read calls as nonblocking.
This is an odd one. These calls are made from a receive handler so should not
block, and appear to be setup correctly to handle partial reads or no data
available. However, the driver was not opening the port with SERIAL_NONBLOCK
so these calls would have been blocking. Make them nonblocking.
2014-09-24 23:30:01 +02:00
Martin Ling 258a23134d center-3xx: Remove SERIAL_NONBLOCK flag.
All serial calls in this driver are now explicitly (non)blocking.
2014-09-24 23:30:00 +02:00
Martin Ling c1da74fc0a center-3xx: Make serial write call block.
This call is executed from an event handler and was previously nonblocking,
but has no partial write handling. It sends a short packet so should be OK
to block, most likely the output buffer will be empty anyway.
2014-09-24 23:30:00 +02:00
Martin Ling 3582ce8a01 center-3xx: Mark serial read call as nonblocking.
This call was already nonblocking because the driver opens the port with the
SERIAL_NONBLOCK flag. Partial reads are handled.
2014-09-24 23:30:00 +02:00
Martin Ling d7b269da8f cem-dt-885x: Mark serial access as nonblocking, remove SERIAL_NONBLOCK flag.
These calls were already nonblocking since this driver opened the port with
the SERIAL_NONBLOCK flag. Having marked them as such, we can remove the flag.

Also remove an unnecessary reopen of the port to change its blocking status.
2014-09-24 23:30:00 +02:00
Martin Ling ca4266a02f brymen-dmm: Remove SERIAL_NONBLOCK flag.
All serial read/write calls in the driver are now explicitly (non)blocking.
2014-09-24 23:30:00 +02:00
Martin Ling 776313d997 brymen-dmm: Make serial write call block.
This call is executed from an event handler and was previously nonblocking,
but has no partial write handling. It sends a short packet so should be OK
to block, most likely the output buffer will be empty anyway.
2014-09-24 23:30:00 +02:00
Martin Ling 44be13b1f8 brymen-dmm: Mark serial read calls as nonblocking.
The driver opens the port with SERIAL_NONBLOCK so these were already
nonblocking, and are handled appropriately.
2014-09-24 23:30:00 +02:00
Martin Ling 5305266a28 atten-pps3xxx: Remove SERIAL_NONBLOCK.
All serial read/write calls in the driver are now explicitly (non)blocking.
2014-09-24 23:30:00 +02:00
Martin Ling c3116bc311 atten-pps3xxx: Make serial write call block.
This call is executed from an event handler and was previously nonblocking,
but has no partial write handling. It sends a short packet so should be OK
to block, most likely the output buffer will be empty anyway.
2014-09-24 23:30:00 +02:00
Martin Ling e7b4103697 atten-pps3xxx: Make serial write call block in scan.
This is called at scan time so free to block. There is no partial write
handling and a response is expected afterwards. This should therefore be a
blocking call.
2014-09-24 23:30:00 +02:00
Martin Ling 25dd083128 appa-55ii: Mark serial read nonblocking and remove SERIAL_NONBLOCK.
This is the only read/write call in the driver. It is already non-blocking
and is handled appropriately.
2014-09-24 23:29:49 +02:00
Martin Ling 64c536be52 aglient-dmm: Remove SERIAL_NONBLOCK flag.
All serial calls in this driver are now explicitly (non)blocking.
2014-09-24 23:18:21 +02:00
Martin Ling a5053ddd21 agilent-dmm: Make serial write call block in send.
This call is executed from an event handler context was previously
nonblocking, however there is no handling for a partial write.

The output buffer is unlikely to be full and the commands to be sent
are short, so it should be OK to make this a blocking call.
2014-09-24 23:18:21 +02:00
Martin Ling 485b9ae34d agilent-dmm: Make serial write call block in scan.
This call is executed at scan time so is free to block. There is no
handling for a partial write and a response is expected immediately
afterwards. It should therefore be a blocking call.
2014-09-24 23:18:21 +02:00
Martin Ling e0b781a45b agilent-dmm: Mark serial read call as nonblocking.
This driver opens the port with the SERIAL_NONBLOCK flag, so this call is
already a nonblocking one, and is handled appropriately.
2014-09-24 23:18:21 +02:00
Martin Ling 2e360339f9 serial-dmm: Remove SERIAL_NONBLOCK flag.
All serial read/write calls in this driver are now explicitly
nonblocking so there is no need for this flag.
2014-09-24 23:18:20 +02:00
Martin Ling 4277ac349c serial-dmm: Mark serial read/write calls as nonblocking.
This driver opens the port with the SERIAL_NONBLOCK flag so these calls were
already non-blocking.
2014-09-24 23:18:20 +02:00
Martin Ling 02bd1d0298 colead-slm: Mark serial write call as blocking.
This driver opens the port without the SERIAL_NONBLOCK flag,
so this call was already blocking.
2014-09-24 23:18:20 +02:00
Martin Ling bbff0fe0d2 manson-hcs-3xxx: Mark serial read call as blocking.
This driver opens the port without the SERIAL_NONBLOCK flag, so this call is
already a blocking one.
2014-09-24 23:18:20 +02:00
Bert Vermeulen f12d997948 demo: Fix pattern mode and amplitude option publishing. 2014-09-23 22:40:47 +02:00
Bert Vermeulen 9a10ce65d6 colead-slm: Properly check acquisition sample limit. 2014-09-23 22:27:34 +02:00
Uwe Hermann af945a6625 Typos and consistency fixes. 2014-09-19 01:03:32 +02:00
Bert Vermeulen d4ccb6bd8f yokogawa-dlm: Don't implement dummy scan options. 2014-09-17 17:41:41 +02:00
Bert Vermeulen 5827f61b64 Publish config key capabilities.
Every driver now publishes its device option config keys, i.e. the
list fetched with sr_config_list(SR_CONF_DEVICE_OPTIONS), with a
set of flags indicating which methods are implemented by the driver
for that key.

The config keys are OR'ed with any combination of SR_CONF_GET,
SR_CONF_SET and SR_CONF_LIST. These are defined as the high bits
of the uint32_t config key. Clients can OR config keys with
SR_CONF_MASK to strip out these bits. This mask will be kept up to
date if other bits are added to the capabilities list; clients MUST
therefore use SR_CONF_MASK for this.

Some keys don't have capability bits added, such as the informative
device type keys (SR_CONF_MULTIMETER, SR_CONF_OSCILLOSCOPE, ...) and
SR_CONF_CONTINUOUS.

Scan options do not have capabilities bits.
2014-09-17 15:36:11 +02:00
Bert Vermeulen 138589b02e beaglelogic: Add missing scan options, and cleanup. 2014-09-16 23:51:38 +02:00
Bert Vermeulen a0e0bb4149 Consistently use 'scanopts' variable across all drivers. 2014-09-16 22:19:02 +02:00
Bert Vermeulen f254bc4bba Consistently use 'devopts' variable across all drivers. 2014-09-16 22:11:39 +02:00
Bert Vermeulen 584560f142 Change type of SR_CONF keys to uint32_t. 2014-09-16 21:22:41 +02:00
Bert Vermeulen bfc8679937 scpi-pps: Clean up HP 6632B profile. 2014-09-09 13:24:30 +02:00
Bert Vermeulen 331f56543a scpi-pps: Fix compile warning. 2014-09-08 23:31:54 +02:00
Bert Vermeulen fdedbfcdef scpi-pps: Fix config_set checks. 2014-09-08 23:30:21 +02:00
Aurelien Jacobs effb9dd1c2 rigol-ds: replace some magic numbers by appropriate constant or variable
This fixes bug #406.
2014-09-08 12:58:30 +02:00