]> sigrok.org Git - libsigrok.git/log
libsigrok.git
8 years agoNo need to check return value of libusb_get_device_descriptor().
Bert Vermeulen [Sat, 19 Sep 2015 15:59:54 +0000 (17:59 +0200)]
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.

8 years agoRemove unnecessary call to libusb_get_device_descriptor().
Bert Vermeulen [Sat, 19 Sep 2015 15:58:22 +0000 (17:58 +0200)]
Remove unnecessary call to libusb_get_device_descriptor().

8 years agoscpi-pps: cleaner rewriting of output regulation GVariant
Aurelien Jacobs [Sun, 20 Sep 2015 14:43:43 +0000 (16:43 +0200)]
scpi-pps: cleaner rewriting of output regulation GVariant

8 years agoscpi-pps: sr_scpi_get_string() is already called by scpi_cmd_resp()
Aurelien Jacobs [Sun, 20 Sep 2015 14:22:21 +0000 (16:22 +0200)]
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.

8 years agoscpi: add obviously missing else statements
Aurelien Jacobs [Sun, 20 Sep 2015 14:19:48 +0000 (16:19 +0200)]
scpi: add obviously missing else statements

8 years agoscpi: don't stop parsing table at command 0 which is a valid command
Aurelien Jacobs [Sun, 20 Sep 2015 14:18:18 +0000 (16:18 +0200)]
scpi: don't stop parsing table at command 0 which is a valid command

command 0 is SCPI_CMD_REMOTE

8 years agoscpi: scpi_cmd_resp() shouldn't return SR_OK without filling the gvar
Aurelien Jacobs [Sun, 20 Sep 2015 14:15:01 +0000 (16:15 +0200)]
scpi: scpi_cmd_resp() shouldn't return SR_OK without filling the gvar

scpi-pps at line 212 assumes that an SR_OK return means that the gvar
is valid, which leads to the following error:
** GLib:ERROR:/build/glib2.0-2.45.8/./glib/gvarianttypeinfo.c:184:g_variant_type_info_check: assertion failed: (0 <= index && index < 24)

8 years agoscpi/usbtmc: Support RL1 feature.
Bert Vermeulen [Thu, 17 Sep 2015 21:31:04 +0000 (23:31 +0200)]
scpi/usbtmc: Support RL1 feature.

This automatically locks out local controls when a USBTMC device is
opened, and returns local control on close.

8 years agobaylibre-acme: gpio: Don't set direction in get/set functions.
Bartosz Golaszewski [Wed, 16 Sep 2015 13:24:40 +0000 (15:24 +0200)]
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 <redacted>
8 years agobaylibre-acme: Add basic support for ACME revB.
Bartosz Golaszewski [Wed, 16 Sep 2015 12:18:11 +0000 (14:18 +0200)]
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 <redacted>
8 years agobaylibre-acme: Check for power-switch presence at probe's initialization.
Bartosz Golaszewski [Wed, 16 Sep 2015 11:30:54 +0000 (13:30 +0200)]
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 <redacted>
8 years agobaylibre-acme: Move enum channel_type to protocol.c.
Bartosz Golaszewski [Wed, 16 Sep 2015 08:55:42 +0000 (10:55 +0200)]
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 <redacted>
8 years agosysclk-lwla: Set USB device configuration
Daniel Elstner [Wed, 16 Sep 2015 20:35:13 +0000 (22:35 +0200)]
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.

8 years agosysclk-lwla: Clean up open/closed state handling
Daniel Elstner [Wed, 16 Sep 2015 19:31:42 +0000 (21:31 +0200)]
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.

8 years agosysclk-lwla: Streamline trigger setup logic
Daniel Elstner [Sun, 30 Aug 2015 16:20:41 +0000 (18:20 +0200)]
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.

8 years agofx2lafw, sysclk-lwla: Avoid g_stat()
Daniel Elstner [Wed, 16 Sep 2015 21:33:45 +0000 (23:33 +0200)]
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.

8 years agoconfigure: Check for numpy Python module
Daniel Elstner [Tue, 15 Sep 2015 16:26:51 +0000 (18:26 +0200)]
configure: Check for numpy Python module

This fixes bug #533.

8 years agolascar-el-usb: Fix copy-paste errors.
Uwe Hermann [Thu, 10 Sep 2015 16:52:15 +0000 (18:52 +0200)]
lascar-el-usb: Fix copy-paste errors.

8 years agoMakefile.am: Shorten ChangeLog target a bit.
Uwe Hermann [Mon, 14 Sep 2015 15:54:48 +0000 (17:54 +0200)]
Makefile.am: Shorten ChangeLog target a bit.

8 years agomotech-lps-30x: Fix blocking serial write timeout.
Uwe Hermann [Sun, 13 Sep 2015 22:01:18 +0000 (00:01 +0200)]
motech-lps-30x: Fix blocking serial write timeout.

This fixes bug #438.

8 years agonorma-dmm: Fix blocking serial write timeout.
Uwe Hermann [Sun, 13 Sep 2015 22:00:22 +0000 (00:00 +0200)]
norma-dmm: Fix blocking serial write timeout.

This fixes bug #434.

8 years agogmc-mh-1x-2x: Fix blocking serial write timeout.
Uwe Hermann [Sun, 13 Sep 2015 21:57:32 +0000 (23:57 +0200)]
gmc-mh-1x-2x: Fix blocking serial write timeout.

This fixes bug #432.

8 years agoconrad-digi-35-cpu: Fix blocking serial write timeout.
Uwe Hermann [Sun, 13 Sep 2015 21:55:22 +0000 (23:55 +0200)]
conrad-digi-35-cpu: Fix blocking serial write timeout.

This fixes bug #430.

8 years agobrymen-dmm: Fix blocking serial write timeout.
Uwe Hermann [Sun, 13 Sep 2015 21:53:55 +0000 (23:53 +0200)]
brymen-dmm: Fix blocking serial write timeout.

This fixes bug #427.

8 years agocenter-3xx: Fix blocking serial write timeout.
Uwe Hermann [Sun, 13 Sep 2015 21:48:09 +0000 (23:48 +0200)]
center-3xx: Fix blocking serial write timeout.

This fixes bug #428.

8 years agomic-985xx: Fix blocking serial write timeout.
Uwe Hermann [Sun, 13 Sep 2015 21:47:16 +0000 (23:47 +0200)]
mic-985xx: Fix blocking serial write timeout.

This fixes bug #433.

8 years agomanson-hcs-3xxx: Fix blocking serial write timeout.
Uwe Hermann [Sun, 13 Sep 2015 21:20:03 +0000 (23:20 +0200)]
manson-hcs-3xxx: Fix blocking serial write timeout.

This fixes bug #437.

8 years agotondaj-sl-814: Fix blocking serial write timeout.
Uwe Hermann [Sun, 13 Sep 2015 20:44:40 +0000 (22:44 +0200)]
tondaj-sl-814: Fix blocking serial write timeout.

This fixes bug #436.

8 years agoDrop obsolete SR_CONF_MEASURED_2ND_QUANTITY.
Uwe Hermann [Sun, 13 Sep 2015 19:43:17 +0000 (21:43 +0200)]
Drop obsolete SR_CONF_MEASURED_2ND_QUANTITY.

8 years agoclasses.cpp: Define _XOPEN_SOURCE for isascii()
Daniel Elstner [Sun, 13 Sep 2015 18:12:12 +0000 (20:12 +0200)]
classes.cpp: Define _XOPEN_SOURCE for isascii()

The GNU libstdc++ headers use isascii(), which is not part of any
POSIX standard. On BSD, this breaks the build. It is however part
of XOPEN, which on Linux is apparently enabled implicitly for C++.

This should fix #649.

8 years agoBuild: Move _POSIX_C_SOURCE definition to config.h
Daniel Elstner [Sun, 13 Sep 2015 16:35:28 +0000 (18:35 +0200)]
Build: Move _POSIX_C_SOURCE definition to config.h

Do not redefine it though when already set, so that it can be
overridden by the user, or indirectly by the compiler settings.

8 years agoBuild: Include <config.h> first in all source files
Daniel Elstner [Sun, 13 Sep 2015 16:22:17 +0000 (18:22 +0200)]
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.

8 years agolibsigrok-internal.h: Remove unused prototypes
Daniel Elstner [Fri, 11 Sep 2015 21:22:54 +0000 (23:22 +0200)]
libsigrok-internal.h: Remove unused prototypes

The sr_source_* prototypes are not used anywhere, so remove them.
Also get rid of the SERIAL_PARITY_* aliases for SP_PARITY_*.

8 years agoserial: Make serial device event sources more robust
Daniel Elstner [Fri, 11 Sep 2015 21:08:10 +0000 (23:08 +0200)]
serial: Make serial device event sources more robust

Disallow polling for input/error and output-ready events at the
same time, and ensure only a single FD event source is installed.
Also, do not leak if the FD event source is removed by means
other than calling serial_source_remove().

8 years agoFix two more format warnings uncovered by MinGW build
Daniel Elstner [Sun, 13 Sep 2015 13:39:04 +0000 (15:39 +0200)]
Fix two more format warnings uncovered by MinGW build

8 years agoBuild: Force ISO-conforming format syntax on MinGW
Daniel Elstner [Sun, 13 Sep 2015 13:07:54 +0000 (15:07 +0200)]
Build: Force ISO-conforming format syntax on MinGW

On MinGW, two implementations of printf() are available: either
the Microsoft native one or a standard-conforming replacement from
gnulib. Since we build in C99 mode, headers such as <inttypes.h>
already select the standard-conforming variant. However, MinGW's
GCC does not seem to know about this and assumes MS-style format
syntax by default, which triggers a lot of wrong warnings.

Thus, on MinGW, explicitly decorate sr_log() with the gnu_printf
format flavor attribute. Also use GLib's printf replacements in
the logging implementation to make sure we link to a conforming
printf on any platform, independently of the compiler flags.

This gets rid of the mistaken -Wformat warnings for sr_log(), but
does not cover functions such as g_strdup_printf() which do not
explicitly specify the gnu_printf flavor in the format attribute.
This can be overcome by adding "-D__printf__=__gnu_printf__" to
CPPFLAGS, but it would be inappropriate for libsigrok to define
this on its own.

8 years agolog: Bring back the "sr: " default log prefix
Daniel Elstner [Sun, 13 Sep 2015 10:32:03 +0000 (12:32 +0200)]
log: Bring back the "sr: " default log prefix

This got lost accidentally with the removal of the logdomain API.

8 years agolog: Remove sr_log_logdomain_{get,set} from the API
Daniel Elstner [Sun, 13 Sep 2015 09:58:44 +0000 (11:58 +0200)]
log: Remove sr_log_logdomain_{get,set} from the API

The confusingly named sr_log_logdomain_set() simply set a global
string prefixed to the log message by the default log callback.
This is pretty much useless, misleadingly named, and not used by
either sigrok-cli or PulseView.

8 years agoFix log varargs bugs indicated by -Wformat
Daniel Elstner [Sun, 13 Sep 2015 00:29:38 +0000 (02:29 +0200)]
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.

8 years agolog: Output timestamps at level SR_LOG_DBG too
Daniel Elstner [Sat, 12 Sep 2015 22:58:36 +0000 (00:58 +0200)]
log: Output timestamps at level SR_LOG_DBG too

SR_LOG_DBG and above are targeted at developers, so it makes sense
to extend timestamp output to that. Also sanitize the calculation
of the timestamp components a bit.

8 years agolog: Use generalized sr_log() to implement logging helpers
Daniel Elstner [Sat, 12 Sep 2015 20:41:22 +0000 (22:41 +0200)]
log: Use generalized sr_log() to implement logging helpers

Get rid of the specicialized sr_err(), sr_warn(), etc. functions.
Instead, define the logging helper macros in terms of sr_log(),
and remove the sr_log() helper macro so that no function is hidden
by a macro anymore.

Decorate sr_log() with G_GNUC_PRINTF to detect varargs errors. This
unearthed a gazillion warnings all over the place which will have
to be fixed.

Also convert the helper macros to ISO C99 __VA_ARGS__ style instead
of relying on a GNU C extension. Paste the log prefix directly into
the format string to make this work.

8 years agosession: Return immediately if there are no event sources
Daniel Elstner [Fri, 11 Sep 2015 17:15:55 +0000 (19:15 +0200)]
session: Return immediately if there are no event sources

Some drivers, such as zeroplus-logic-cube, run everything they do
right away in dev_acquisition_start(), never installing any event
sources. Handle that evilness by returning from sr_session_run()
immediately if there are no sources.

8 years agosession: Port to GLib main loop
Daniel Elstner [Thu, 10 Sep 2015 07:46:45 +0000 (09:46 +0200)]
session: Port to GLib main loop

Replace the custom session main loop with the GLib main loop.
This is phase one of the port, which leaves the session and
driver APIs unchanged while replacing the internals.

8 years agoserial: On Windows, include <windows.h> for HANDLE
Daniel Elstner [Thu, 10 Sep 2015 18:41:55 +0000 (20:41 +0200)]
serial: On Windows, include <windows.h> for HANDLE

8 years agosigrok.m4: Remove SR_PROG_MAKE_NO_PRINT_DIRECTORY
Daniel Elstner [Thu, 10 Sep 2015 17:38:10 +0000 (19:38 +0200)]
sigrok.m4: Remove SR_PROG_MAKE_NO_PRINT_DIRECTORY

8 years agoBuild: Use GNUMAKEFLAGS for --no-print-directory
Daniel Elstner [Thu, 10 Sep 2015 17:35:17 +0000 (19:35 +0200)]
Build: Use GNUMAKEFLAGS for --no-print-directory

8 years agohung-chang-dso-2100: Enable only if libieee1284 is available
Daniel Elstner [Thu, 10 Sep 2015 16:36:30 +0000 (18:36 +0200)]
hung-chang-dso-2100: Enable only if libieee1284 is available

8 years agohung-chang-dso-2100: Add driver
Daniel Glöckner [Mon, 7 Sep 2015 00:18:14 +0000 (02:18 +0200)]
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.

8 years agohung-chang-dso-2100: Initial driver skeleton.
Daniel Glöckner [Mon, 7 Sep 2015 00:18:13 +0000 (02:18 +0200)]
hung-chang-dso-2100: Initial driver skeleton.

8 years agoportability: Use g_strerror() in favor of strerror().
Uwe Hermann [Wed, 9 Sep 2015 07:16:58 +0000 (09:16 +0200)]
portability: Use g_strerror() in favor of strerror().

8 years agoportability: Use g_ascii_strcasecmp() in favor of strcasecmp().
Uwe Hermann [Wed, 9 Sep 2015 07:17:59 +0000 (09:17 +0200)]
portability: Use g_ascii_strcasecmp() in favor of strcasecmp().

This is more portable and guaranteed locale-independent.

8 years agoMakefile.am: Use @ORDER@ instead of |.
Uwe Hermann [Wed, 9 Sep 2015 06:21:01 +0000 (08:21 +0200)]
Makefile.am: Use @ORDER@ instead of |.

This is set to | (or left empty) by SR_PROG_MAKE_ORDER_ONLY for
portability reasons, since not all Make implementations support
order-only prerequisites.

8 years agoDon't rebuild Python or Java bindings unless C++ interface changes.
Martin Ling [Mon, 7 Sep 2015 11:32:05 +0000 (12:32 +0100)]
Don't rebuild Python or Java bindings unless C++ interface changes.

8 years agoFix #550 by allowing an empty trigger match list
Soeren Apel [Tue, 8 Sep 2015 17:09:54 +0000 (19:09 +0200)]
Fix #550 by allowing an empty trigger match list

1e7659609bddd40471faf9a8e81ee7554d77dce9 is related
to this change and required to fix #550 as well.

8 years agoDon't free trigger when destroying the session.
Bert Vermeulen [Tue, 8 Sep 2015 12:25:10 +0000 (14:25 +0200)]
Don't free trigger when destroying the session.

The trigger must be freed by the client.

8 years agoBuild: Show compiler versions in summary
Daniel Elstner [Tue, 8 Sep 2015 02:47:46 +0000 (04:47 +0200)]
Build: Show compiler versions in summary

8 years agosigrok.m4: Add SR_PROG_VERSION macro
Daniel Elstner [Tue, 8 Sep 2015 02:42:22 +0000 (04:42 +0200)]
sigrok.m4: Add SR_PROG_VERSION macro

8 years agosigrok.m4: Suppress make variable for ORDER
Daniel Elstner [Tue, 8 Sep 2015 02:10:44 +0000 (04:10 +0200)]
sigrok.m4: Suppress make variable for ORDER

8 years agoBuild: Fix restore of LIBS after temporary change
Daniel Elstner [Tue, 8 Sep 2015 02:02:04 +0000 (04:02 +0200)]
Build: Fix restore of LIBS after temporary change

8 years agosession: Compile USB-specific code only if available
Daniel Elstner [Mon, 7 Sep 2015 15:27:54 +0000 (17:27 +0200)]
session: Compile USB-specific code only if available

8 years agoBuild: Add configure check for libusb event-abstraction
Daniel Elstner [Mon, 7 Sep 2015 13:01:52 +0000 (15:01 +0200)]
Build: Add configure check for libusb event-abstraction

This is intended to make people notice when libusb is too old
for the new Windows code. However, this is not foolproof, since
the libusb version may be different at runtime.

8 years agoUSB: Handle live changes to the set of FDs to poll
Daniel Elstner [Mon, 7 Sep 2015 10:41:29 +0000 (12:41 +0200)]
USB: Handle live changes to the set of FDs to poll

Introduce new internal session API for changing the set of polled
file descriptors for an already installed event source. Use the
new API to apply changes to the USB poll FDs when requested to do
so by libusb. Doing so is necessary to make the generic USB code
work on Windows.

8 years agoUSB: On Windows, assume G_IO_IN for the event mask
Daniel Elstner [Mon, 7 Sep 2015 06:50:29 +0000 (08:50 +0200)]
USB: On Windows, assume G_IO_IN for the event mask

8 years agosession: More main loop debug output
Daniel Elstner [Mon, 7 Sep 2015 05:25:51 +0000 (07:25 +0200)]
session: More main loop debug output

8 years agoUSB: Remove Windows-specific event handling code
Daniel Elstner [Fri, 4 Sep 2015 21:47:08 +0000 (23:47 +0200)]
USB: Remove Windows-specific event handling code

For the generic code to work on Windows, a version of libusb
with the experimental event-abstraction changes is required.

8 years agosigrok.m4: Update serial
Daniel Elstner [Mon, 7 Sep 2015 21:57:03 +0000 (23:57 +0200)]
sigrok.m4: Update serial

8 years agoBuild: Use SR_PROG_MAKE_NO_PRINT_DIRECTORY
Daniel Elstner [Mon, 7 Sep 2015 21:38:52 +0000 (23:38 +0200)]
Build: Use SR_PROG_MAKE_NO_PRINT_DIRECTORY

8 years agosigrok.m4: Add SR_PROG_MAKE_NO_PRINT_DIRECTORY macro
Daniel Elstner [Mon, 7 Sep 2015 21:38:28 +0000 (23:38 +0200)]
sigrok.m4: Add SR_PROG_MAKE_NO_PRINT_DIRECTORY macro

8 years agoBuild: Show compiler and flags in configure summary
Daniel Elstner [Mon, 7 Sep 2015 20:32:13 +0000 (22:32 +0200)]
Build: Show compiler and flags in configure summary

8 years agoBuild: Use SR_PROG_MAKE_ORDER_ONLY
Daniel Elstner [Mon, 7 Sep 2015 20:28:14 +0000 (22:28 +0200)]
Build: Use SR_PROG_MAKE_ORDER_ONLY

As of now, the resulting substitution @ORDER@ is unused.

8 years agosigrok.m4: Add SR_PROG_MAKE_ORDER_ONLY macro
Daniel Elstner [Mon, 7 Sep 2015 20:24:44 +0000 (22:24 +0200)]
sigrok.m4: Add SR_PROG_MAKE_ORDER_ONLY macro

8 years agoBuild: Implement libieee1284 check via SR_ARG_OPT_CHECK
Daniel Elstner [Mon, 7 Sep 2015 19:49:17 +0000 (21:49 +0200)]
Build: Implement libieee1284 check via SR_ARG_OPT_CHECK

8 years agosigrok.m4: Add generic macro for optional dependencies
Daniel Elstner [Mon, 7 Sep 2015 19:18:50 +0000 (21:18 +0200)]
sigrok.m4: Add generic macro for optional dependencies

Provide SR_ARG_OPT_CHECK, a generalized variant of SRG_ARG_OPT_PKG
that can be used with custom check commands. Implement the latter
in terms of SR_ARG_OPT_CHECK.

8 years agoscpi: Fix incorrect serial_read_nonblocking call().
Martin Lederhilger [Mon, 7 Sep 2015 20:43:20 +0000 (22:43 +0200)]
scpi: Fix incorrect serial_read_nonblocking call().

There was a problem in scpi_serial.c in the scpi_serial_read_data()
function. Incoming data was written at the read position in the buffer,
although it should be written at the count position in the buffer.

8 years agodrivers: Match dummy FD passed to source add/remove
Daniel Elstner [Mon, 7 Sep 2015 12:33:30 +0000 (14:33 +0200)]
drivers: Match dummy FD passed to source add/remove

8 years agoUSB: Handle the case of a callback removing its event source
Daniel Elstner [Sat, 5 Sep 2015 01:56:16 +0000 (03:56 +0200)]
USB: Handle the case of a callback removing its event source

8 years agoUSB: On Windows, block to wait for libusb events
Daniel Elstner [Fri, 4 Sep 2015 16:51:55 +0000 (18:51 +0200)]
USB: On Windows, block to wait for libusb events

This is another attempt at getting the mess that is libusb event
handling on Windows under control. Until libusb makes its HANDLEs
available for polling, we have no choice but to block while waiting
for libusb events. Since we do not want to force drivers to deal
with multi-threading issues, that means we have to block in the
session main loop.

Fortunately, it turns out that our drivers aren't using multiple
event sources, so it is actually possible to block the main loop
without disrupting too much. This also gets rid of the USB thread
on Windows. Thankfully, libusb does not seem to care that we are
now calling libusb_handle_events_timeout_completed() twice per
iteration: first a blocking call (with timeout) in the callback
wrapper, followed by the non-blocking call in the driver-supplied
callback.

8 years agosession: Allow multiple poll FDs per event source
Daniel Elstner [Tue, 1 Sep 2015 01:36:03 +0000 (03:36 +0200)]
session: Allow multiple poll FDs per event source

Turns out that having one event source per libusb poll FD is
a bad idea. There is only a single callback for all poll FDs,
and libusb expects to be called only once per poll iteration,
no matter how many FDs triggered.

Also, they should all share the same timeout, which should get
reset on events from any polled FD. The new timeout handling made
this problem apparent, as it caused the callback to be invoked
multiple times on timeouts, once for each separate event source.

In order to fix this, change the implementation to allow for an
arbitrary number of poll FDs per event source. This number is
zero for timer FDs, one for normal I/O sources, and one or more
for libusb sources (Unix only).

Also, on Windows, do not get an additional timeout from libusb
in the event loop. This is only appropriate when polling the
libusb FDs directly, which we aren't doing on Windows.

8 years agosession: More poll spewing
Daniel Elstner [Mon, 31 Aug 2015 22:36:30 +0000 (00:36 +0200)]
session: More poll spewing

8 years agolog: Output time stamps at log level spew
Daniel Elstner [Mon, 31 Aug 2015 19:11:08 +0000 (21:11 +0200)]
log: Output time stamps at log level spew

8 years agodrivers: Use timer sources instead of polling stdin
Daniel Elstner [Mon, 31 Aug 2015 17:08:37 +0000 (19:08 +0200)]
drivers: Use timer sources instead of polling stdin

8 years agodemo: Use simple timer source instead of pipe
Daniel Elstner [Mon, 31 Aug 2015 01:55:41 +0000 (03:55 +0200)]
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.

8 years agosession: Add poll debug spew
Daniel Elstner [Mon, 31 Aug 2015 01:23:13 +0000 (03:23 +0200)]
session: Add poll debug spew

8 years agosession: Unify handling of I/O and timer sources
Daniel Elstner [Mon, 31 Aug 2015 00:35:57 +0000 (02:35 +0200)]
session: Unify handling of I/O and timer sources

Handle I/O sources and timer ("dummy") sources within the same
polling loop, so that both may be used together. Slightly change
the API to improve consistency: a timeout value of -1 now disables
the timeout, and 0 makes the source always time out immediately.
The "dummy" sources already behaved that way, although it wasn't
documented as such.

Make sure that I/O events are processed preferentially: Skip any
timeout callbacks if an I/O event occurred within the same poll
iteration. This applies to both timer/idle sources and timeouts
of I/O sources.

Do not create dummy GPollFDs for timer/idle sources. Instead,
split the sources array into an I/O section and a timer section,
and create corresponding GPollFDs only for the I/O section. Use
GArray to simplify the handling of the dynamic arrays.

8 years agosession: Properly accumulate event source timeouts
Daniel Elstner [Sun, 30 Aug 2015 19:43:30 +0000 (21:43 +0200)]
session: Properly accumulate event source timeouts

Keep track of when source timeouts are due and properly compare
against accumulated elapsed time between invocations. This prevents
sources with short timeouts from blocking other sources with longer
timeouts indefinitely.

8 years agosession: Do not expect meaningful errno on non-UNIX
Daniel Elstner [Sun, 30 Aug 2015 13:25:33 +0000 (15:25 +0200)]
session: Do not expect meaningful errno on non-UNIX

Looking at the g_poll() implementations for various systems, it
appears that on Windows the return value is 0 if the wait was
interrupted, and errno is never set. Also, the MacOS X wrapper
around select() does not clear revents on timeout.

To deal with these issues, check for EINTR only on Unices, and
assume revents to be invalid unless g_poll() returned a positive
value.

8 years agosession: Check for errors from g_poll()
Daniel Elstner [Sun, 30 Aug 2015 12:23:38 +0000 (14:23 +0200)]
session: Check for errors from g_poll()

If the call to g_poll() in sr_session_iteration() fails, report
the error back to the caller. Do not treat EINTR as error though.

Check for session abort only if a source callback was actually
invoked, or at least once if none of the callbacks are invoked.
Stop checking for abort if the session has already been stopped,
just in case a callback sets abort_session again.

Also change the documentation to match the actual behavior.

8 years agosession: Fix USB timeout handling
Daniel Elstner [Sun, 30 Aug 2015 10:20:03 +0000 (12:20 +0200)]
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.

8 years agoBuild: Fix installation of Python bindings
Daniel Elstner [Wed, 2 Sep 2015 12:07:06 +0000 (14:07 +0200)]
Build: Fix installation of Python bindings

Apparently setup.py install behaves differently when given
the --root option, so omit that if DESTDIR is empty.

Fixes #644.

8 years agopython: Fix the build for Python >= 3.
Uwe Hermann [Mon, 31 Aug 2015 19:08:08 +0000 (21:08 +0200)]
python: Fix the build for Python >= 3.

SWIG_init() returns void for Python 2.x and 'PyObject *' for Python 3.

Use an #if to handle both cases properly, otherwise the Python bindings
for either Python 2 or 3 will fail to build.

Python 3.x failure:

sigrok/core/classes_wrap.cpp: In function ‘PyObject* PyInit__classes()’:
sigrok/core/classes_wrap.cpp:59002:5: error: return-statement with no
value, in function returning ‘PyObject* {aka _object*}’ [-fpermissive]
     return;
     ^

Python 2.x failure:

In file included from /usr/include/dirent.h:244:0,
                 from /usr/include/glib-2.0/glib/gdir.h:32,
                 from /usr/include/glib-2.0/glib.h:45,
                 from /usr/include/pygobject-3.0/pygobject.h:7,
                 from sigrok/core/classes_wrap.cpp:3179:
sigrok/core/classes_wrap.cpp: In function ‘void init_classes()’:
sigrok/core/classes_wrap.cpp:59002:12: error: return-statement with a
value, in function returning 'void' [-fpermissive]
     return NULL;
            ^

8 years agoRemove SR_OK_CONTINUE.
Bert Vermeulen [Sun, 30 Aug 2015 19:15:02 +0000 (21:15 +0200)]
Remove SR_OK_CONTINUE.

This brings error reporting back to the usual: either return codes
are SR_OK (0) or they are < 1 indicating an error.

This fixes bug #633.

8 years agooutput/csv: Avoid using SR_OK_CONTINUE.
Bert Vermeulen [Sun, 30 Aug 2015 19:13:51 +0000 (21:13 +0200)]
output/csv: Avoid using SR_OK_CONTINUE.

8 years agoscpi: Avoid using SR_OK_CONTINUE.
Bert Vermeulen [Sun, 30 Aug 2015 18:30:32 +0000 (20:30 +0200)]
scpi: Avoid using SR_OK_CONTINUE.

8 years agoserial: Check event ptr before using.
Bert Vermeulen [Sun, 16 Aug 2015 18:03:10 +0000 (20:03 +0200)]
serial: Check event ptr before using.

This avoids a NULL dereference when called twice.

8 years agoConvert SR_CONF_MEASURED_QUANTITY to SR_T_MQ.
Bert Vermeulen [Sun, 16 Aug 2015 23:58:45 +0000 (01:58 +0200)]
Convert SR_CONF_MEASURED_QUANTITY to SR_T_MQ.

8 years agoderee-de5000: Drop SR_CONF_MEASURED_QUANTITY functionality.
Bert Vermeulen [Sat, 29 Aug 2015 21:01:02 +0000 (23:01 +0200)]
deree-de5000: Drop SR_CONF_MEASURED_QUANTITY functionality.

This was superfluous -- there is no need to be able to query the
last MQ(s) sent by the device, since they're already being sent
along with the measurements in analog packets.

Since there is also no way to change the MQ (that is done with the
buttons on the device), there is no need to even list the possible
MQs.

8 years agoChange SR_T_MQLIST to SR_T_MQ.
Bert Vermeulen [Sat, 29 Aug 2015 20:20:29 +0000 (22:20 +0200)]
Change SR_T_MQLIST to SR_T_MQ.

The need to make this a list no longer applies.

SR_T_MQ is thus a type consisting of a tuple with two elements: the first
item is the MQ (type G_VARIANT_TYPE_UINT32), and the second is the MQ
flags value (G_VARIANT_TYPE_UINT64).

8 years agoCheck for libieee1284
Daniel Glöckner [Thu, 27 Aug 2015 09:21:48 +0000 (11:21 +0200)]
Check for libieee1284

Will be needed by the Hung-Chang DSO-2100 driver.

8 years agosr_session_send: pass transformed packet to datafeed callbacks
Daniel Glöckner [Sat, 22 Aug 2015 15:39:39 +0000 (17:39 +0200)]
sr_session_send: pass transformed packet to datafeed callbacks

After the packet has been passed through the transformation modules,
the transformed data is in packet_in but the following code uses
the packet variable which still points to the original input.

This fixes bug #631.

8 years agohantek-dso: fix memory leak
Daniel Glöckner [Sat, 22 Aug 2015 16:00:30 +0000 (18:00 +0200)]
hantek-dso: fix memory leak

This fixes bug #632.