]> sigrok.org Git - libsigrok.git/log
libsigrok.git
12 years agools: use new driver info_get() API call
Bert Vermeulen [Sun, 15 Jul 2012 01:52:57 +0000 (03:52 +0200)]
ols: use new driver info_get() API call

12 years agohantek-dso: use new driver info_get() API call
Bert Vermeulen [Sun, 15 Jul 2012 01:52:45 +0000 (03:52 +0200)]
hantek-dso: use new driver info_get() API call

12 years agodemo: use new driver info_get() API call
Bert Vermeulen [Sun, 15 Jul 2012 01:52:37 +0000 (03:52 +0200)]
demo: use new driver info_get() API call

12 years agochronovu-la8: use new driver info_get() API call
Bert Vermeulen [Sun, 15 Jul 2012 01:52:22 +0000 (03:52 +0200)]
chronovu-la8: use new driver info_get() API call

12 years agoasix-sigma: use new driver info_get() API call
Bert Vermeulen [Sun, 15 Jul 2012 01:52:04 +0000 (03:52 +0200)]
asix-sigma: use new driver info_get() API call

12 years agoasix-sigma: don't attempt to free static struct
Bert Vermeulen [Sat, 14 Jul 2012 14:14:01 +0000 (16:14 +0200)]
asix-sigma: don't attempt to free static struct

Added more debugging as well.

12 years agodemo: use new scan API
Bert Vermeulen [Sat, 14 Jul 2012 13:49:30 +0000 (15:49 +0200)]
demo: use new scan API

12 years agozeroplus-logic-cube: init and scan fixes
Bert Vermeulen [Sat, 14 Jul 2012 11:00:47 +0000 (13:00 +0200)]
zeroplus-logic-cube: init and scan fixes

libusb context needs to be initialized only once, not ever scan.
Every scan invalidates the last one, so clean up any previous run's
results first.

12 years agozeroplus-logic-cube: use new scan API
Bert Vermeulen [Sat, 14 Jul 2012 10:45:07 +0000 (12:45 +0200)]
zeroplus-logic-cube: use new scan API

12 years agohantek-dso: use new scan API
Bert Vermeulen [Sat, 14 Jul 2012 10:28:45 +0000 (12:28 +0200)]
hantek-dso: use new scan API

12 years agoasix-sigma: use new scan API + fixes
Bert Vermeulen [Sat, 14 Jul 2012 10:28:15 +0000 (12:28 +0200)]
asix-sigma: use new scan API + fixes

Now freeing FTDI context and driver-private context.

12 years agochronovu-la8: use new scan API + fixes
Bert Vermeulen [Sat, 14 Jul 2012 10:27:02 +0000 (12:27 +0200)]
chronovu-la8: use new scan API + fixes

Now freeing FTDI context and driver-private context.

12 years agohantek-dso: instance list fix
Bert Vermeulen [Fri, 13 Jul 2012 20:18:01 +0000 (22:18 +0200)]
hantek-dso: instance list fix

12 years agools: use new scan API
Bert Vermeulen [Fri, 13 Jul 2012 20:16:37 +0000 (22:16 +0200)]
ols: use new scan API

12 years agoasix-sigma: use driver struct-based device instance list
Bert Vermeulen [Fri, 13 Jul 2012 12:18:27 +0000 (14:18 +0200)]
asix-sigma: use driver struct-based device instance list

12 years agochronovu-la8: use driver struct-based device instance list
Bert Vermeulen [Fri, 13 Jul 2012 12:15:54 +0000 (14:15 +0200)]
chronovu-la8: use driver struct-based device instance list

12 years agodemo: use driver struct-based device instance list
Bert Vermeulen [Fri, 13 Jul 2012 11:47:27 +0000 (13:47 +0200)]
demo: use driver struct-based device instance list

12 years agozeroplus-logic-cube: use driver struct-based device instance list
Bert Vermeulen [Fri, 13 Jul 2012 11:43:41 +0000 (13:43 +0200)]
zeroplus-logic-cube: use driver struct-based device instance list

12 years agohantek-dso: use driver struct-based device instance list
Bert Vermeulen [Fri, 13 Jul 2012 11:37:35 +0000 (13:37 +0200)]
hantek-dso: use driver struct-based device instance list

12 years agools: use driver struct-based device instance list
Bert Vermeulen [Fri, 13 Jul 2012 11:26:30 +0000 (13:26 +0200)]
ols: use driver struct-based device instance list

12 years agogenericdmm: device scan fixes
Bert Vermeulen [Fri, 13 Jul 2012 00:37:17 +0000 (02:37 +0200)]
genericdmm: device scan fixes

12 years agogenericdmm: don't use deprecated hwcap_get_all() driver API call
Bert Vermeulen [Fri, 13 Jul 2012 00:34:58 +0000 (02:34 +0200)]
genericdmm: don't use deprecated hwcap_get_all() driver API call

12 years agogenericdmm: use new driver info_get() API call
Bert Vermeulen [Fri, 13 Jul 2012 00:34:10 +0000 (02:34 +0200)]
genericdmm: use new driver info_get() API call

12 years agofx2lafw: don't use deprecated hwcap_get_all() driver API call
Bert Vermeulen [Fri, 13 Jul 2012 00:31:16 +0000 (02:31 +0200)]
fx2lafw: don't use deprecated hwcap_get_all() driver API call

12 years agofx2lafw: device scan fixes
Bert Vermeulen [Fri, 13 Jul 2012 00:30:42 +0000 (02:30 +0200)]
fx2lafw: device scan fixes

12 years agofx2lafw: a device scan always invalidates any previous scans
Bert Vermeulen [Fri, 13 Jul 2012 00:30:09 +0000 (02:30 +0200)]
fx2lafw: a device scan always invalidates any previous scans

12 years agofx2lafw: use new driver info_get() API call
Bert Vermeulen [Fri, 13 Jul 2012 00:28:07 +0000 (02:28 +0200)]
fx2lafw: use new driver info_get() API call

12 years agosr: deprecate driver API call hwcap_get_all()
Bert Vermeulen [Fri, 13 Jul 2012 00:08:27 +0000 (02:08 +0200)]
sr: deprecate driver API call hwcap_get_all()

This is now handled with a call to info_get(SR_DI_HWCAPS). This brings
it in line with the new driver opts: info_get(SR_DI_HWOPTS).

12 years agosr: new sr_info_get() API call, wrapper for driver info_get()
Bert Vermeulen [Thu, 12 Jul 2012 20:41:57 +0000 (22:41 +0200)]
sr: new sr_info_get() API call, wrapper for driver info_get()

This will replace sr_dev_info_get(), the wrapper for driver dev_info_get()

12 years agosr: add new driver API call info_get()
Bert Vermeulen [Thu, 12 Jul 2012 19:34:30 +0000 (21:34 +0200)]
sr: add new driver API call info_get()

This will replace dev_info_get(), and will be used to fetch both
driver and device instance-specific information. The sr_dev_inst
argument is NULL in case of a driver info fetch. In line with the
libsigrok wrapper, this function returns an error code, using the
supplied void ** to return the requested data.

12 years agosr: add driver field to sr_dev_inst, to bring it on a par with sr_dev.
Bert Vermeulen [Thu, 12 Jul 2012 19:00:18 +0000 (21:00 +0200)]
sr: add driver field to sr_dev_inst, to bring it on a par with sr_dev.

12 years agosr: split driver options into separate list
Bert Vermeulen [Thu, 12 Jul 2012 18:54:45 +0000 (20:54 +0200)]
sr: split driver options into separate list

12 years agogenericdmm: use new scan API
Bert Vermeulen [Sun, 8 Jul 2012 21:49:04 +0000 (23:49 +0200)]
genericdmm: use new scan API

12 years agogenericdmm: more flexible device discovery
Bert Vermeulen [Sun, 8 Jul 2012 21:48:04 +0000 (23:48 +0200)]
genericdmm: more flexible device discovery

12 years agogenericdmm: use driver struct-based device instance list
Bert Vermeulen [Sun, 8 Jul 2012 21:33:48 +0000 (23:33 +0200)]
genericdmm: use driver struct-based device instance list

12 years agofx2lafw: use driver struct-based device instance list
Bert Vermeulen [Sun, 8 Jul 2012 17:07:38 +0000 (19:07 +0200)]
fx2lafw: use driver struct-based device instance list

12 years agofx2lafw: use new instance-based probe list
Bert Vermeulen [Sun, 8 Jul 2012 17:06:23 +0000 (19:06 +0200)]
fx2lafw: use new instance-based probe list

12 years agofx2lafw: use new init/scan API
Bert Vermeulen [Sun, 8 Jul 2012 17:03:36 +0000 (19:03 +0200)]
fx2lafw: use new init/scan API

12 years agosr: add GSList of instances to the driver struct
Bert Vermeulen [Sun, 8 Jul 2012 14:40:54 +0000 (16:40 +0200)]
sr: add GSList of instances to the driver struct

This gives the driver a private place to keep its instances, without
polluting the global namespace.

12 years agosr: add probe list to device instance
Bert Vermeulen [Sun, 8 Jul 2012 14:37:39 +0000 (16:37 +0200)]
sr: add probe list to device instance

There is no point in libsigrok copying probe lists around. The driver now
builds a list of probes according to the model device it found, and will
make that available to a frontend. The frontend thus has a reference of
what the driver has, including default names, and doesn't need libsigrok
to provide an unnecessary level of abstraction.

The sr_probe_new() library-private function is a helper for drivers.

12 years agosr: split driver init into init() and scan()
Bert Vermeulen [Sun, 8 Jul 2012 14:25:23 +0000 (16:25 +0200)]
sr: split driver init into init() and scan()

init() now only does whatever administrative stuff it needs (typically not
much), and returns an error code.

scan() can be called multiple times during the life of an application, and
returns a GSList of struct sr_dev_inst * of devices found during that scan.
The instances are a copy of the ones stored in the driver's own instance
list, to be freed by the caller with g_slist_free() only.

The scan() call can be passed a GSList of struct sr_hwopt *, to direct the
scanning.

12 years agosr: move SR_HWOPT into its own enum, and create struct sr_hwopt
Bert Vermeulen [Sun, 8 Jul 2012 12:56:54 +0000 (14:56 +0200)]
sr: move SR_HWOPT into its own enum, and create struct sr_hwopt

SR_HWOPT_* entries are driver options, not device instance parameters, so
they will never be mixed together.

Also, driver options are always passed in a GSList, where the data field
is a struct sr_hwopt.

12 years agogenericdmm: better subdriver API arguments
Bert Vermeulen [Sun, 8 Jul 2012 02:17:56 +0000 (04:17 +0200)]
genericdmm: better subdriver API arguments

12 years agogenericdmm/fs9922: no initialization needed
Bert Vermeulen [Sun, 8 Jul 2012 02:15:51 +0000 (04:15 +0200)]
genericdmm/fs9922: no initialization needed

12 years agogenericdmm: allow for default options in DMM profiles
Bert Vermeulen [Sun, 8 Jul 2012 02:09:55 +0000 (04:09 +0200)]
genericdmm: allow for default options in DMM profiles

Much better than the special-cased USB vid.pid

12 years agogenericdmm: use vid.pid as USB conn spec
Bert Vermeulen [Sun, 8 Jul 2012 02:01:04 +0000 (04:01 +0200)]
genericdmm: use vid.pid as USB conn spec

: is just too hard for the CLI

12 years agogenericdmm: fix header guard
Bert Vermeulen [Sun, 8 Jul 2012 01:59:58 +0000 (03:59 +0200)]
genericdmm: fix header guard

12 years agosr: add new driver API call: scan()
Bert Vermeulen [Thu, 5 Jul 2012 09:27:48 +0000 (11:27 +0200)]
sr: add new driver API call: scan()

This changes the semantics of the init() call as well. That now only
initializes the driver -- an administrative affair, no hardware gets
touched during this call. It returns a standard SR_OK or SR_ERR* code.

The scan() call does a discovery run for devices it knows, and returns
the number found. It can be called at any time.

12 years agosr: remove unused argument from hardware driver function init()
Bert Vermeulen [Tue, 3 Jul 2012 10:55:46 +0000 (12:55 +0200)]
sr: remove unused argument from hardware driver function init()

It was actually used in one way: the session file loaded abused it for
passing in the filename -- something it definitely wasn't intended for.
This now uses the proper way to pass arguments to a driver: the new
SR_HWCAP_SESSIONFILE.

The OLS driver could also use it as an indication of the serial port to
use instead of actively probing all serial ports on the system, but there
wasn't any frontend code that passed in such a parameter, making it
entirely useless. That will soon be handled differently with the new
scan() API call, regardless.

12 years agosr: fix gnuplot script for USBee DX and clones
Ivan Fedorov [Thu, 2 Aug 2012 21:31:36 +0000 (01:31 +0400)]
sr: fix gnuplot script for USBee DX and clones

 - Now channels order is right
 - Added 16bit version

12 years agosr: fx2lafw: Add 16bit support for USBee DX and clones
Ivan Fedorov [Thu, 2 Aug 2012 19:49:00 +0000 (23:49 +0400)]
sr: fx2lafw: Add 16bit support for USBee DX and clones

gnuplot script support only 8 channels

12 years agosr: add gnuplot script for USBee DX and clones
Ivan Fedorov [Tue, 31 Jul 2012 20:11:40 +0000 (00:11 +0400)]
sr: add gnuplot script for USBee DX and clones

12 years agosr: fx2lafw: Add basic support for USBee DX and clones
Ivan Fedorov [Tue, 31 Jul 2012 20:11:33 +0000 (00:11 +0400)]
sr: fx2lafw: Add basic support for USBee DX and clones

12 years agosr: always use uint64_t for samplerate
Bert Vermeulen [Sun, 29 Jul 2012 00:45:40 +0000 (02:45 +0200)]
sr: always use uint64_t for samplerate

12 years agosr: extra checks for properly handling driverless devices
Bert Vermeulen [Sun, 29 Jul 2012 00:15:34 +0000 (02:15 +0200)]
sr: extra checks for properly handling driverless devices

12 years agosr: fix struct sr_input for parameter passing
Bert Vermeulen [Sun, 29 Jul 2012 00:13:22 +0000 (02:13 +0200)]
sr: fix struct sr_input for parameter passing

12 years agoAllow setting samplerate when reading binary files
Tomaž Šolc [Wed, 4 Jul 2012 14:29:13 +0000 (16:29 +0200)]
Allow setting samplerate when reading binary files

I had a binary file that I needed to decode using UART decoder. UART
decoder needs to know the sample rate for the data, but currently it's
not possible to pass parameters to input formats and so the "binary"
file format always sets the samplerate to 0.

This patch adds the possibility to append a colon-separated list of
key=value options to the -I argument, in the same way -d supports it.
Also, it makes the "binary" format support the "samplerate" option.

I included the GHashTable containing input format options directly in
the sr_input struct. I'm not sure if that's the right way to do it. I
saw that -d uses a much more elaborate system with device capabilities
and typed options, but that seemed like an overkill for input formats.

12 years agosr: chronovu-la8: fix segfault on discovery
Bert Vermeulen [Mon, 23 Jul 2012 22:50:02 +0000 (00:50 +0200)]
sr: chronovu-la8: fix segfault on discovery

If the uninitialized value didn't happen to contain 0, and there
is no Chronovu LA8 connected, the la8_close() causes a segfault
in libftdi.

12 years agosr: la8: Support for newer USB VID/PID of the device.
Uwe Hermann [Sat, 14 Jul 2012 22:34:27 +0000 (00:34 +0200)]
sr: la8: Support for newer USB VID/PID of the device.

Thanks to Jerry Jacobs for the patch!

12 years agosr: la8: Drop useless cast.
Uwe Hermann [Thu, 12 Jul 2012 19:39:18 +0000 (21:39 +0200)]
sr: la8: Drop useless cast.

12 years agosr: Add sr_strerror() and sr_strerror_name().
Uwe Hermann [Thu, 12 Jul 2012 19:30:49 +0000 (21:30 +0200)]
sr: Add sr_strerror() and sr_strerror_name().

12 years agosr: session: Deprecate sr_session_halt()
Lars-Peter Clausen [Thu, 5 Jul 2012 19:15:09 +0000 (21:15 +0200)]
sr: session: Deprecate sr_session_halt()

sr_session_halt() in its current state is kind of useless and even dangerous.
All it will do is mark the session as not running, but wont signal the devices
to stop to capture data. This is not so much of a problem with the blocking
sr_session_run(), but once there is support for asynchronous data acquisition by
attaching the session sources to the applications mainloop sr_session_halt()
basically becomes a no-op. sr_session_stop() already does what needs to be done,
marking the session as not running and signal the devices to stop acquisition,
so make sr_session_halt() an alias for sr_session_stop() and deprecate its
usage.

Signed-off-by: Lars-Peter Clausen <redacted>
12 years agosr: session: Do not cleanup the driver state in sr_session_stop()
Lars-Peter Clausen [Thu, 5 Jul 2012 19:15:08 +0000 (21:15 +0200)]
sr: session: Do not cleanup the driver state in sr_session_stop()

By cleaning up the driver state all devices will become inaccessible, which
means that is neither possible to query any information from it (like sample
rate) and it is also not possible to restart data acquisition.

sr_session_save() tries to query the sample rate from the device, as a result
calling sr_session_save() after calling sr_session_stop() - which is for example
done by sigrok-cli - will cause a segfault. This patch resolves the issue.

Signed-off-by: Lars-Peter Clausen <redacted>
12 years agosr: session: Close a device when it is removed from a session
Lars-Peter Clausen [Thu, 5 Jul 2012 19:15:07 +0000 (21:15 +0200)]
sr: session: Close a device when it is removed from a session

A device is opened when it is added to a session, in the same fashion it should
be closed again when it is removed from a session.

Also remove all still attached devices from a session when the session is
destroyed.

Signed-off-by: Lars-Peter Clausen <redacted>
12 years agosr: Drop mastech-va18b, code will be in genericdmm.
Uwe Hermann [Wed, 11 Jul 2012 10:57:15 +0000 (12:57 +0200)]
sr: Drop mastech-va18b, code will be in genericdmm.

12 years agosr: fix conditional build for ezusb and serial helpers
Bert Vermeulen [Wed, 11 Jul 2012 10:36:13 +0000 (12:36 +0200)]
sr: fix conditional build for ezusb and serial helpers

12 years agosr: session: Moves sources to session struct
Lars-Peter Clausen [Fri, 6 Jul 2012 21:23:31 +0000 (23:23 +0200)]
sr: session: Moves sources to session struct

The sources really belong to the session, so move them into the session struct.

Signed-off-by: Lars-Peter Clausen <redacted>
12 years agosr: demodevice: Make read channel non-blocking
Lars-Peter Clausen [Fri, 6 Jul 2012 21:23:30 +0000 (23:23 +0200)]
sr: demodevice: Make read channel non-blocking

Both pipe channels are currently configured as blocking. We read from the pipe
in receive_data. Since the channel is configured as blocking we'll block in
receive_data until all data has been received. receive_data will be called from
the mainloop, so as consequence the mainloop will be blocked until the demo
device has finished sampling. This is not so much of a problem if we are
sampling in blocking mode (using sr_session_run()) and the demo device is the
only device in the session, but it will fail badly for all other configurations
(e.g. multiple devices or async sampling).

Signed-off-by: Lars-Peter Clausen <redacted>
12 years agosr: session: Realloc correct array for pollfds in _sr_session_source_remove
Lars-Peter Clausen [Fri, 6 Jul 2012 21:23:29 +0000 (23:23 +0200)]
sr: session: Realloc correct array for pollfds in _sr_session_source_remove

Commit 7149ad7c ("sr: session: Keep a global pollfd array") contained a small
copy paste error. This patch fixes it.

Signed-off-by: Lars-Peter Clausen <redacted>
12 years agosr: fx2lafw: Free transfers in reverse order
Lars-Peter Clausen [Thu, 5 Jul 2012 19:38:36 +0000 (21:38 +0200)]
sr: fx2lafw: Free transfers in reverse order

Free the USB transfers in the reverse order of which they were submitted. This
will avoid that while transfer 0 is cancelledd transfer 1 is started by the
host controller, and so on.

Reported-by: Peter Stuge <redacted>
Signed-off-by: Lars-Peter Clausen <redacted>
12 years agosr: Minor cosmetics.
Uwe Hermann [Wed, 4 Jul 2012 23:47:44 +0000 (01:47 +0200)]
sr: Minor cosmetics.

12 years agosr: session/demo: Remove Windows specific hack
Lars-Peter Clausen [Sat, 30 Jun 2012 18:54:45 +0000 (20:54 +0200)]
sr: session/demo: Remove Windows specific hack

The session and demo device code contain a hack to make the demo device work on
Windows. This was neccessary since polling on windows requires special handling
and we can not just pass in the raw fd to poll.

With the previous patches which added support for non-fd based event sources
this hack is no longer required. The patch moves the GIOChannels used by the
demo device to the demo device context and uses sr_session_source_add_channel
to register a source for the channels instead of using the raw pipe fds.

Signed-off-by: Lars-Peter Clausen <redacted>
12 years agosr: session: Add support for GPollFD or GIOChannel based sources
Lars-Peter Clausen [Sat, 30 Jun 2012 18:54:44 +0000 (20:54 +0200)]
sr: session: Add support for GPollFD or GIOChannel based sources

A raw file descriptor to poll on is not always available, this patch adds
support for adding a source for a GIOChannel or GPollFD.

Signed-off-by: Lars-Peter Clausen <redacted>
12 years agosr: session: Keep a global pollfd array
Lars-Peter Clausen [Sat, 30 Jun 2012 18:54:43 +0000 (20:54 +0200)]
sr: session: Keep a global pollfd array

Currently we keep a file descriptor for each source and construct a pollfd array
from these during each loop iteration in sr_session_run(). This patch modifies
the code to keep a global pollfd array which is only modified when a source is
added or removed. On one hand this gets rid of the constant constructing and
subsequent freeing of the pollfd array in sr_session_run(), on the other hand it
will allow us to implement support for non-fd based pollfds.

Signed-off-by: Lars-Peter Clausen <redacted>
12 years agosr: session: Use realloc to resize source array
Lars-Peter Clausen [Sat, 30 Jun 2012 18:54:42 +0000 (20:54 +0200)]
sr: session: Use realloc to resize source array

Use realloc to resize the source array when adding or removing a source. This
makes the code a bit smaller. In the remove function we now check whether the fd
is valid before doing anything else and if it is not simply do nothing. If it is
valid use memove to move the elements following the source one element down in
the array. Only after that has been done the array is re-allocated.

Signed-off-by: Lars-Peter Clausen <redacted>
12 years agosr: moved sigrok.h so libsigrok/libsigrok.h
Bert Vermeulen [Wed, 4 Jul 2012 22:55:07 +0000 (00:55 +0200)]
sr: moved sigrok.h so libsigrok/libsigrok.h

All frontends will have to include <libsigrok/libsigrok.h> from now on.
This header includes proto.h and version.h, both installed from the
distribution into $INCLUDE/libsigrok/ as well.

The only dynamically changed header is now version.h, which has both
libsigrok and libtool compile-time versions in it.

12 years agosr: demodevice: Reset sample limit when setting time limit and vice versa
Lars-Peter Clausen [Tue, 3 Jul 2012 21:59:12 +0000 (23:59 +0200)]
sr: demodevice: Reset sample limit when setting time limit and vice versa

Only one limit should be active at a time. Make sure that the sample limit is
disabled when a time limit is set and vice versa.

Signed-off-by: Lars-Peter Clausen <redacted>
12 years agosr: fx2lafw: Fix potential leaks in acquisition_start error paths
Lars-Peter Clausen [Tue, 3 Jul 2012 21:58:40 +0000 (23:58 +0200)]
sr: fx2lafw: Fix potential leaks in acquisition_start error paths

Call abort_acquisition if starting sampling fails in acquisition_start, this
will ensure that all already allocated resources are being freed again.

Signed-off-by: Lars-Peter Clausen <redacted>
12 years agosr: fx2lafw: Do not start a new acquisition if the old is still running
Lars-Peter Clausen [Tue, 3 Jul 2012 21:58:39 +0000 (23:58 +0200)]
sr: fx2lafw: Do not start a new acquisition if the old is still running

This may happen if the acquisition_start is called right after calling
acquisition_stop and not all transfers have been freed or on repeated calls to
acquisition_start. If it happens we'll enter an undefined state and all kind of
strange behavior may occur, so error out in such a case.

Signed-off-by: Lars-Peter Clausen <redacted>
12 years agosr: fx2lafw: Abort pending transfers when sampling is stopped
Lars-Peter Clausen [Tue, 3 Jul 2012 21:58:38 +0000 (23:58 +0200)]
sr: fx2lafw: Abort pending transfers when sampling is stopped

The recent reworks of the fx2lafw made sure that the total buffer size is large
enough hold 500ms of data. This was done to improve performance and stability.
That the timeout value for a transfer was also increased to over 500ms, a side
effect of this is that when sampling is stopped there will be a additional delay
of 500ms. This is because the driver waits for all transfers to be freed
before it sends a SR_DF_END packet. Once sampling has stopped this will only
happen once a transfer times out. This patch cancels all pending transfers when
sampling is stopped, this will cause them to be freed almost immediately and the
additional delay will disappear.

Also make sure, that if we know, that we just have received the last transfer to
not resubmit this transfer again.

Signed-off-by: Lars-Peter Clausen <redacted>
12 years agosr: add genericdmm driver
Bert Vermeulen [Sun, 1 Jul 2012 20:37:15 +0000 (22:37 +0200)]
sr: add genericdmm driver

12 years agosr: add HWCAP type SR_T_KEYVALUE (char **)
Bert Vermeulen [Sun, 1 Jul 2012 20:33:57 +0000 (22:33 +0200)]
sr: add HWCAP type SR_T_KEYVALUE (char **)

12 years agosr: use proper definitions for parity setting
Bert Vermeulen [Sun, 1 Jul 2012 20:31:31 +0000 (22:31 +0200)]
sr: use proper definitions for parity setting

ols driver fixed to use these as well.

12 years agofx2lafw: enable driver build by default
Bert Vermeulen [Sun, 1 Jul 2012 13:29:57 +0000 (15:29 +0200)]
fx2lafw: enable driver build by default

12 years agosr: Mastech VA18B: Partial protocol supports (WIP).
Uwe Hermann [Thu, 28 Jun 2012 20:57:03 +0000 (22:57 +0200)]
sr: Mastech VA18B: Partial protocol supports (WIP).

Disable the driver for now, as it's not usable for the general public, yet.

12 years agosr: hantek-dso: Fix copy-paste error.
Uwe Hermann [Wed, 27 Jun 2012 23:47:38 +0000 (01:47 +0200)]
sr: hantek-dso: Fix copy-paste error.

12 years agosr: fx2lafw: Move empty_transfer_count to device ctx
Lars-Peter Clausen [Mon, 25 Jun 2012 21:51:38 +0000 (23:51 +0200)]
sr: fx2lafw: Move empty_transfer_count to device ctx

If one device is failing it should not affect the transfers of other devices.

Signed-off-by: Lars-Peter Clausen <redacted>
12 years agosr: fx2lafw: Calculate buffer size and timeout based on sample rate
Lars-Peter Clausen [Mon, 25 Jun 2012 20:15:59 +0000 (22:15 +0200)]
sr: fx2lafw: Calculate buffer size and timeout based on sample rate

Currently timeout and buffer size are hard-coded in the fx2lafw driver which is
non-optimal if we want to get good results at both high and low sample rates.

The timeout is hard-coded to 40ms, which doesn't work well when sampling at
a low sample rate. E.g. at 20kHz filling all available buffer space alone takes
6 seconds. So naturally we'll see a lot of transfers timeout in this case.

The buffer size is hard-coded to 4096 bytes, which does not work well with high
sample rates. E.g. at 24MHz these 4096 bytes are enough space for 0.17ms of
data. The total buffer size is enough for about 5ms of data. Sooner or later the
application won't be able to resubmit a transfer within this time span and the
device will abort data acquisition. Usually this happens within the first few
seconds of sampling.

This patch adds a few new helper functions which calculate the buffer size and
timeout based on the current sample rate.

The buffer size is chosen to be large enough to hold about 10ms of data and it
also must be a multiple of 512 bytes since the firmware will send us the data
in 512 byte chunks.

The timeout is set to the time it would take to fill the whole available buffer
space plus a 25% headroom to accommodate for jitter. This is more than enough,
but there is no need to make the timeout a tight deadline, since it is only
meant as a last resort in case the device stops submitting data. And in this
case data acquisition will be aborted anyway.

The patch also limits the the number of transfers so that the total buffer
space is not much more of 500ms. This will ensure that we do not have to
wait too long when aborting data acquisition.

This patch also significantly reduces the number of context switches when
sampling at a higher sample rate. On my system for example the CPU load of
sigrok-cli when sampling at 24MHz goes down from ~25% to 3-4%.

Signed-off-by: Lars-Peter Clausen <redacted>
12 years agosr: fx2lafw: Handle the transfer's status
Lars-Peter Clausen [Sun, 24 Jun 2012 14:45:08 +0000 (16:45 +0200)]
sr: fx2lafw: Handle the transfer's status

While errors are usually already implicitly caught by looking at the packet
length field there is one error status which is worth special handling. If the
device has been removed there is not really a chance to recover from this error
so data acquisition can be stopped immediately.

Signed-off-by: Lars-Peter Clausen <redacted>
12 years agosr: fx2lafw: Avoid unnecessary alloc/free combo
Lars-Peter Clausen [Sun, 24 Jun 2012 10:19:09 +0000 (12:19 +0200)]
sr: fx2lafw: Avoid unnecessary alloc/free combo

In receive_transfer for each completed transfer a new buffer is allocated and
the old one is freed. We can avoid this by simply reusing the buffer for the
next transfer. This is possible if we only resubmit the transfer after all
processing on the data buffer has been done. A new buffer is only allocated if
the size of the old one is not 4096 bytes.

Signed-off-by: Lars-Peter Clausen <redacted>
12 years agosr: fx2lafw: Properly free transfer
Lars-Peter Clausen [Sun, 24 Jun 2012 10:08:59 +0000 (12:08 +0200)]
sr: fx2lafw: Properly free transfer

When freeing a transfer we also have to free the transfer buffer. We also have
to keep track of the number of allocated transfers and if the freed transfer was
the last one stop acquisition. This patch introduces a helper function which
takes care of all of this.

Signed-off-by: Lars-Peter Clausen <redacted>
12 years agosr: fx2lafw: Allocate header and packet struct on the stack
Lars-Peter Clausen [Sun, 24 Jun 2012 10:04:35 +0000 (12:04 +0200)]
sr: fx2lafw: Allocate header and packet struct on the stack

The header and packet struct are only used in the scope of this function and
they are freed at the end of it. Also these structs are rather small, so they
can safely be allocated on the stack. By doing so memory leaks on the error
paths are avoided.

Signed-off-by: Lars-Peter Clausen <redacted>
12 years agofx2lafw: Made libusb_claim_interface error messages more informative
Joel Holdsworth [Wed, 27 Jun 2012 20:39:26 +0000 (21:39 +0100)]
fx2lafw: Made libusb_claim_interface error messages more informative

12 years agohantek-dso: add profiles for all five models in the series
Bert Vermeulen [Wed, 27 Jun 2012 17:36:30 +0000 (19:36 +0200)]
hantek-dso: add profiles for all five models in the series

Also cleaned up profile struct, and use the new firmware filenames.

12 years agofx2lafw: fix broken firmware upload timeout
Bert Vermeulen [Tue, 26 Jun 2012 23:02:39 +0000 (01:02 +0200)]
fx2lafw: fix broken firmware upload timeout

Also corner case error init.

12 years agohantek-dso: get rid of broken GTV_TO_MSEC firmware upload timeout
Bert Vermeulen [Tue, 26 Jun 2012 22:55:15 +0000 (00:55 +0200)]
hantek-dso: get rid of broken GTV_TO_MSEC firmware upload timeout

12 years agohantek-dso: start sending the frame only from the trigger point
Bert Vermeulen [Tue, 26 Jun 2012 21:26:55 +0000 (23:26 +0200)]
hantek-dso: start sending the frame only from the trigger point

Samples received before the trigger point are stored. From the
trigger point on, every chunk received from the device is sent
up the session bus. After the device has finished sending, the
stored samples are transmitted.

12 years agosr: fx2lafw: Set correct unitsize for trigger buffer
Lars-Peter Clausen [Thu, 21 Jun 2012 17:54:29 +0000 (19:54 +0200)]
sr: fx2lafw: Set correct unitsize for trigger buffer

Commit 88b75eb719 ("fx2lafw: Added device caps and added support for wide
sampling") increased the size of the trigger buffer from 8 to 16 bit, but forgot
to adjust the unitsize logic packet which is used to send the contents of the
trigger buffer. This patch sets the unitsize to sizeof() of the trigger buffer.

Signed-off-by: Lars-Peter Clausen <redacted>
12 years agohantek-dso: fix triggerpoint conversion
Bert Vermeulen [Sun, 24 Jun 2012 16:57:37 +0000 (18:57 +0200)]
hantek-dso: fix triggerpoint conversion

12 years agosr: fx2lafw: Fix multistage trigger
Lars-Peter Clausen [Thu, 21 Jun 2012 08:30:38 +0000 (10:30 +0200)]
sr: fx2lafw: Fix multistage trigger

Multistage triggers currently do no work, because there is a return statement
in the middle of the trigger detector which will be hit as soon as the first
stage in a multistage trigger matches. This patch removes the return statement
so that the trigger detector can continue to try to match the next stage. In
order for this to work we also make sure that the trigger stage is only reset
if the current sample does not match.

Signed-off-by: Lars-Peter Clausen <redacted>