Commit Graph

1260 Commits

Author SHA1 Message Date
Bert Vermeulen 7b78b2f78f hantek-dso: use per-device firmware filenames 2013-04-02 14:20:29 +02:00
Uwe Hermann 3ebce226a2 s/sr_config_make/sr_config_new/.
This matches the naming of other/similar functions better.
2013-03-23 14:16:00 +01:00
Uwe Hermann 333bf022e3 rigol-ds1xx2: Use ARRAY_SIZE. 2013-03-23 14:14:58 +01:00
Alexandru Gagniuc 3864648bb6 serial-dmm: Add support for RadioShack 22-805
Protocol-wise, this is identical to the 22-168, except that it communicates at
600 baud instead of 1200 baud.
2013-03-20 20:36:56 -05:00
Uwe Hermann cc840ab618 serial.c: FreeBSD and OpenBSD don't have OFILL either. 2013-03-17 15:07:50 +01:00
Bert Vermeulen 8e77bc20b9 lascar-el-usb: push samplerate before data log 2013-03-16 21:52:02 +01:00
Bert Vermeulen 361d15110c lascar-el-usb: support for SR_CONF_DATALOG 2013-03-11 16:37:02 +01:00
Bert Vermeulen 9857276261 ols: use ptr to int dereference for SR_T_BOOL
This mad ptr to int casting has to go.
2013-03-11 16:37:02 +01:00
Bert Vermeulen 2474d87e8c demo: sync get/set options 2013-03-03 21:21:08 +01:00
lelazary 365f04d61f mso-19: Initial analog probe support (unfinished).
- Added the analog probe (unfinished).

 - Reset trigger to state to 0 before capture, just incase the scope is in
   the middle of a capture.
2013-03-03 17:59:06 +01:00
lelazary 5952553f56 mso-19: Fixed warning. 2013-03-03 17:58:46 +01:00
Uwe Hermann ff17e6ba50 mic985xx: Add missing memset(). 2013-02-11 18:23:17 +01:00
Uwe Hermann 6f3e5335ad mic-985xx: Add support for the MIC 98581.
This device only supports temperature measurements, no humidity.
2013-02-11 16:53:28 +01:00
Bert Vermeulen be6db330f8 hantek-dso: minor fixes 2013-02-10 17:06:56 +01:00
Bert Vermeulen 8421ffa44d asix-sigma: don't try to free static storage 2013-02-10 17:06:56 +01:00
Uwe Hermann cd2f0fe22c Add/use std_hw_dev_acquisition_stop_serial(). 2013-02-08 23:32:45 +01:00
Uwe Hermann 17548571cc zeroplus: Only report supported samplerates.
The currently supported model LAP-C(16032) doesn't support the
samplerates 150MHz and 200MHz which some of the other models have.

Thus, do not report these samplerates to the frontends. E.g. sigrok-cli
should not show them via --show and GUIs should not list them in their
"Samplerates" drop-down.
2013-02-08 23:19:50 +01:00
Uwe Hermann e495a676eb zeroplus: Cosmetics, small fixes, drop unneeded stuff. 2013-02-08 23:19:50 +01:00
Uwe Hermann 58c5f2ed17 zeroplus: Split into api.c and protocol.c. 2013-02-08 21:53:50 +01:00
Uwe Hermann 3e9b7f9c77 Rename session_dev_id to cb_data everywhere.
We use 'cb_data' in all drivers these days, make the few remaining ones
that use 'session_dev_id' consistent.
2013-02-07 11:26:02 +01:00
Uwe Hermann 6fab7b8f53 Driver struct cleanups.
- Explicitly list .config_get in all drivers for consistency, and set it
   to NULL if unused (whether or not a driver implements it is optional).

 - List all 'struct sr_dev_driver' entries in the same order in all drivers.

 - Move the check whether .config_set/.config_list exist (i.e., are non-NULL)
   into sanity_check_all_drivers().
2013-02-07 10:58:35 +01:00
Uwe Hermann 4afdfd4628 Add and use std_session_send_df_header().
This is a small helper function which sends the SR_DF_HEADER packet that
drivers usually emit in their hw_dev_acquisition_start() API callback.
It simplifies and shortens the hw_dev_acquisition_start() functions
quite a bit.

It also simplifies the input modules which send an SR_DF_HEADER packet, too.

This patch also automatically removes some unneeded malloc/free in some
drivers for the 'packet' and 'header' structs used for SR_DF_HEADER.
2013-02-07 10:46:28 +01:00
Uwe Hermann 961009b0c4 hw_dev_close(): Move common checks to wrapper.
Check the relevant arguments for != NULL before calling the actual
driver-specific function, so that the driver can safely assume those
arguments are non-NULL. This removes the need to duplicate these
checks in every driver.
2013-02-05 18:46:33 +01:00
Uwe Hermann 0e94d524c1 Shorten/simplify hw_dev_list() implementations. 2013-02-05 18:27:05 +01:00
Uwe Hermann 7c8a9e1e0f serial-dmm: Drop unneeded g_try_malloc0(). 2013-02-02 12:34:25 +01:00
Uwe Hermann c5d6f5cc1c brymen-dmm: Cosmetics, coding-style, consistency.
Also, name the driver "brymen-bm857" in preparation to doing "subdrivers"
for other Brymen models later (similar to serial-dmm).
2013-02-02 12:07:45 +01:00
Uwe Hermann 943e94f567 brymen-dmm: Use std_hw_init(). 2013-02-02 11:19:27 +01:00
Alexandru Gagniuc 601fb67cc4 brymen-dmm: Add support for Brymen BM857
This patch might also work for a number of other Brymen models
-- 859(a), 867, 869---
including their respective rebadges from Greenlee, Extech, and Amprobe.

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
2013-02-02 11:19:27 +01:00
Alexandru Gagniuc 20cbc7854d brymen-dmm: Initial driver skeleton. 2013-02-02 11:19:27 +01:00
Uwe Hermann 0cd8e23140 Initial driver implementation for MIC 98583.
This is a USB/serial (Prolific) based temperature and humidity logger.
2013-02-02 11:13:45 +01:00
Uwe Hermann 7ec5b54955 mic-985xx: Initial driver skeleton. 2013-02-01 23:52:57 +01:00
Uwe Hermann 6d1161142d zeroplus: Use message logging helpers. 2013-02-01 00:24:40 +01:00
Uwe Hermann d3b38ad389 Drivers: Explicitly list sr_samplerates fields.
This makes it a bit easier to understand which value means what, just
from looking at the driver code.
2013-01-29 12:56:02 +01:00
Uwe Hermann 063e7aef6d Factor out common hw_init() driver code.
Most drivers do pretty much the same things in their hw_init()
right now, so factor out that code to std_hw_init() in std.c.
2013-01-29 12:56:02 +01:00
Uwe Hermann 4b97c74e0b sr_driver_scan(): Improve checks.
Check the relevant arguments for != NULL before calling the actual
driver-specific function, so that the driver can safely assume those
arguments are non-NULL. This removes the need to duplicate these
checks in every driver.

Also, do some minor whitespace and consistency improvements.
2013-01-29 12:56:02 +01:00
Uwe Hermann c0eea11c45 sr_driver_init(): Improve checks.
Check the relevant arguments for != NULL before calling the actual
driver-specific function, so that the driver can safely assume those
arguments are non-NULL. This removes the need to duplicate these
checks in every driver.

Also, change one SR_ERR to the more correct SR_ERR_MALLOC, and assign
sr_ctx in the rigol-ds1xx2's hw_init() function, like all the other
drivers do.
2013-01-29 12:56:02 +01:00
Uwe Hermann cbc6f3b253 hantek-dso: Use message logging helpers. 2013-01-29 12:56:02 +01:00
Uwe Hermann 7d4abe5a77 serial.c: NetBSD doesn't have OFILL. 2013-01-27 01:23:01 +01:00
Bert Vermeulen 6a4710fac2 drivers: Trim unused config_get() calls
None of the driver config_get/set/list calls are required.
2013-01-25 16:05:48 +01:00
Bert Vermeulen 0d485e30c6 Deprecate SR_DI_HWOPTS.
This is replaced by SR_CONF_SCAN_OPTIONS.
2013-01-25 15:09:20 +01:00
Bert Vermeulen 9a6517d14b Deprecate SR_DI_HWCAPS.
This is replaced by SR_CONF_DEVICE_OPTIONS.
2013-01-25 15:01:49 +01:00
Bert Vermeulen c50277a6ec Deprecate SR_DI_TRIGGER_TYPES.
This is replaced by SR_CONF_TRIGGER_TYPE.
2013-01-25 11:52:27 +01:00
Bert Vermeulen 328bafabd4 Deprecate SR_DI_TRIGGER_SOURCES.
This is replaced by SR_CONF_TRIGGER_SOURCE.
2013-01-25 11:25:32 +01:00
Bert Vermeulen 41f5bd09b0 Deprecate SR_DI_TIMEBASES.
This is replaced by SR_CONF_TIMEBASE.
2013-01-25 11:22:20 +01:00
Bert Vermeulen 6e1fbcc41b Deprecate SR_DI_FILTERS.
This is replaced by SR_CONF_FILTER.
2013-01-25 11:19:12 +01:00
Bert Vermeulen e4f2b2adc1 Deprecate SR_DI_VDIVS.
This is replaced by SR_CONF_VDIV.
2013-01-25 11:13:49 +01:00
Bert Vermeulen 2a7b113d13 Deprecate SR_DI_COUPLING.
This is replaced by SR_CONF_COUPLING.
2013-01-25 11:04:27 +01:00
Bert Vermeulen 6d1ceffa95 Deprecate SR_DI_BUFFERSIZES.
This is replaced by SR_CONF_BUFFERSIZE.
2013-01-25 10:58:37 +01:00
Bert Vermeulen dd96ea9879 Deprecate SR_DI_PATTERNS.
This is replaced by SR_CONF_PATTERN_MODE.
2013-01-25 03:38:44 +01:00
Bert Vermeulen 123e131383 Deprecate SR_DI_CUR_SAMPLERATE.
This is replaced by SR_CONF_SAMPLERATE.
2013-01-25 03:17:36 +01:00
Bert Vermeulen fbec8bd2f3 deprecate SR_DI_SAMPLERATES
This is replaced by a call to config_list() with id SR_CONF_SAMPLERATE.
2013-01-25 02:39:58 +01:00
Bert Vermeulen a1c743fc51 drivers: implement config_list() 2013-01-25 02:37:26 +01:00
Bert Vermeulen 035a1078fd drivers: rename and reorganize config get/set
The driver API calls info_get() and dev_config_set() have been renamed
to config_get() and config_set(), respectively.
2013-01-24 19:19:09 +01:00
Bert Vermeulen 69e19dd769 Always interleave analog data with all enabled probes.
The new "probes" field in sr_datafeed_analog contains a copy
of all enabled struct sr_probe.
2013-01-23 03:40:44 +01:00
Bert Vermeulen b1a051544d serial: more serial processing flags to turn off 2013-01-23 02:32:58 +01:00
Bert Vermeulen 431ec7ca4a uni-t-dmm: use new sr_config struct 2013-01-21 23:40:09 +01:00
Bert Vermeulen 1953564a96 Rename SR_HWOPT_* and SR_HWCAP_* to SR_CONF_* 2013-01-21 23:32:50 +01:00
Bert Vermeulen d8e3685c47 free USB config descriptor after use 2013-01-21 23:32:49 +01:00
Bert Vermeulen 1987b8d63e drivers: use new sr_config struct
Sending an SR_DF_META packet at the start of every stream is not
mandatory; the frontend should ask for what it needs, and any extra
information the driver wants to send will come in due time.
2013-01-21 23:32:49 +01:00
Uwe Hermann 86c02e6554 serial.c: Fix copy-paste error.
Thanks Bert Vermeulen for reporting.
2013-01-21 01:47:30 +01:00
Uwe Hermann 9d8fde40c3 uni-t-dmm: Quickfix for UNI-T UT61D.
This is a temporary fix only, since a major rework of uni-t-dmm is being
done at the moment, soon to be merged.
2013-01-21 01:45:02 +01:00
Uwe Hermann 5edc02c77c Add missing "ULL" suffixes.
These numbers are larger than 32bit, mark them as ULL to avoid compile
failures on 32bit systems.
2013-01-20 20:39:18 +01:00
Uwe Hermann 73365eaed0 uni-t-dmm: Expose hwopts. 2013-01-20 19:57:04 +01:00
Uwe Hermann 388f9d3e25 uni-t-dmm: Fix scanning, properly use new sr_usb_find(). 2013-01-20 19:55:33 +01:00
Uwe Hermann 4ebd48b352 Remove non-error hw_info_get() messages.
Currently hw_info_get() can receive requests for entries (info_id) that
the specific driver doesn't support. That is (right now) a valid
use-case and not an error (might change later, though).

Thus, for now, don't output messages for such requests at all (certainly
not as sr_err() where they show up in e.g. sigrok-cli output per default).
2013-01-20 18:48:02 +01:00
Uwe Hermann b97cbca6c9 serial.c: OpenBSD doesn't have B460800. 2013-01-19 15:55:22 +01:00
Uwe Hermann 3d6de074a4 alsa: Silence ALSA scanning process.
Errors while opening or configuring ALSA devices during scan for devices
should not be shown by default (i.e., no sr_err() usage). Non-working
or non-accessible devices (due to permissions or other reasons) will
simply not show up in frontends. Use sr_dbg() instead of sr_err().
2013-01-16 00:02:24 +01:00
Bert Vermeulen 6b8d6f93bb Get rid of obsolete SR_DI_NUM_PROBES and SR_DI_PROBE_NAMES.
Frontends should use the probe list in the device's sr_dev_inst
to get this information.
2013-01-15 17:42:23 +01:00
Bert Vermeulen 512bb890df rigol-ds1xx2: More selective Rigol DS1xx2 scan
Patch submitted by Martin Ling.
2013-01-13 22:42:21 +01:00
Alexandru Gagniuc cbc80f8f8a fx2lafw: Say if chip is old FX2 or FX2LP
Look at the extracted REVID, and print out if it is an FX2 (non-LP), or FX2LP.

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
2013-01-08 03:44:36 +01:00
Uwe Hermann a24e9d0484 link-mso19: Use more portable g_htons().
Not all systems provide <arpa/inet.h> and/or htons(). Use portable and
always available g_htons() from glib instead.
2013-01-08 03:13:45 +01:00
Uwe Hermann 753d722f34 link-mso19: Fix a bunch of compiler warnings. 2013-01-08 03:13:14 +01:00
Uwe Hermann 00b44ccb8b link-mso19: Fix white-space, cosmetics, coding-style.
Fix the bare minumum of whitespace/indentation/coding-style via
automatic 'indent' run, followed by some minor manual fixes.
Some more fixes and cleanups might follow later.
2013-01-08 03:13:08 +01:00
Uwe Hermann f48cef7897 link-mso19: Fix (C) lines.
Bring back the original (C) lines from before the split into api.c
and protocol.[ch].

Add "Copyright (C) 2013 Lior Elazary <lelazary@yahoo.com>" since there
were nontrivial changes to those files.
2013-01-08 02:30:40 +01:00
lelazary eb913174ab Added limit samples Eveything seems to work find up to 1024 samples 2013-01-08 01:00:14 +01:00
lelazary 087a9161ff Rewrote the trigger config. Added trigger position and trigger slope 2013-01-08 01:00:14 +01:00
lelazary 5a24e89ca4 Eveything seems to work now except for triggers. 2013-01-08 01:00:14 +01:00
lelazary 4db2aaffe7 More cleanup. Communication with mso19 is working, but its not triggering. Need to check why. 2013-01-08 01:00:13 +01:00
lelazary 26ddb5baca Added flow control to serial configuration to support xon/xoff for link-mso19 2013-01-08 01:00:13 +01:00
lelazary 4b719338cc Added missing mso functions 2013-01-08 01:00:13 +01:00
lelazary def5c35c4c Removing the old link-mso19 files and changing makefile 2013-01-08 01:00:13 +01:00
lelazary df92e5cf6b Rewrote the link-mso19.c into api and protocol. Still need to test and cleanup some more 2013-01-08 01:00:13 +01:00
Uwe Hermann 29d957ceae rigol-ds1xx2: Cosmetics, whitespace. 2013-01-03 19:04:11 +01:00
Martin Ling fb6e5ba8c7 rigol-ds1xx2: Autoprobe for usbtmc devices on Linux. 2013-01-03 18:41:29 +01:00
Martin Ling 4e108ace13 rigol-ds1xx2: Fix setting trigger parameters. 2013-01-03 18:41:29 +01:00
Martin Ling 542843f76f rigol-ds1xx2: Assorted parameter setting fixes. 2013-01-03 18:41:29 +01:00
Martin Ling e0b7d23ce8 rigol-ds1xx2: First working version.
Currently hardcoded to use /dev/usbtmc1. Analog data readout works.
2013-01-03 18:41:29 +01:00
Martin Ling f4816ac6cc rigol-ds1xx2: Initial driver skeleton. 2013-01-03 18:41:28 +01:00
Uwe Hermann aeabd30820 ols: Implement SR_DI_HWOPTS. 2013-01-03 02:15:27 +01:00
Uwe Hermann 986fde755d serial-dmm: Add UNI-T UT61E support (UT-D02 cable). 2013-01-03 01:13:57 +01:00
Uwe Hermann fe0c0b98c6 Add Cyrustek ES51922 DMM chip parser. 2013-01-03 01:13:06 +01:00
Uwe Hermann 21d3d4ee87 alsa: Add some more samplerates.
Add some more samplerates that seem to be supported by some devices
(found via random grepping of alsa and kernel sources).
2013-01-01 00:37:18 +01:00
Uwe Hermann a1b9a9bf44 alsa: Add missing % for PRIu64. 2013-01-01 00:37:17 +01:00
Uwe Hermann 52ba6e05d5 alsa: Improved error reporting. 2013-01-01 00:37:17 +01:00
Uwe Hermann 721ecf3d97 alsa: Cosmetics, coding style, typos. 2013-01-01 00:37:17 +01:00
Alexandru Gagniuc 65faa197ae alsa: Find supported samplerates during device scan
Since we are using the 'hw' interface of ALSA, we don't have the luxury of
samplerate conversion, given by the 'plughw' interface. If we try to set a
samplerate that is not supported, ALSA will just throw an error.

We can test for the supported samplerates, and create a list of supported
samplerates, then limit the selection to only those values. The frontend can
query the list of supported samplerates.

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
2013-01-01 00:37:17 +01:00
Alexandru Gagniuc 729850c9e7 alsa: Fix sample acquisition and send normalized values
The alsa driver requested signed 16-bit integers from ALSA, but casted them to
to an unsigned 16bit before finally casting them to a float. The end result was
that half of the wave would be clipped off.
We also requested data in little endian format. ALSA can be instructed to send
data with the correct endianness for the platform, without needing to worry
about what that is.

This patch attempts three points, which, together, fix the acquisition:
1) Request data from ALSA without specifying endianness; ALSA will handle the
endianness.
2) Simplify the int16_t to float loop by using straightforward indexes.
3) Normalize every value before sending it on the session bus.

NOTE: If testing with PulseView, it will appear as if sigrok is sending all
zeroes. sigrok is sending correct data, but since the data is normalized,
PulseView will incorrectly plot it as a straight line.

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
2013-01-01 00:37:17 +01:00
Alexandru Gagniuc 6944b2d02f alsa: Scan all soundcards and create a sigrok device per input
The alsa driver only works with device "default". This limits the driver's
scope to whatever device ALSA deems to be "default". It is desirable to have
access to all ALSA devices from sigrok.

Change the alsa device scan so that:
Each alsa device (not alsa card) gets its own sigrok device
For example,
    hw:1,0 == sigrok device 0
    hw:1,1 == sigrok device 1
    hw:2,0 == sigrok device 2
    hw:2,1 == sigrok device 3
    hw:2,2 == sigrok device 4
    [...]

We don't currently look at alsa subdevices. We only use subdevice 0.
Every input device will have its own channels (left, right, etc). Each of
those channels gets mapped to a different sigrok probe. A device with 4
channels will have 4 probes from sigrok's perspective.

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
2013-01-01 00:37:17 +01:00
Alexandru Gagniuc 0d6ff10394 alsa: Do not use snd_pcm_hw_params_set_rate_near()
snd_pcm_hw_params_set_rate_near() will try to use the samplerate closest to the
given value, potentially starting the acquisition with a different samplerate
than the one specified.

Instead, use snd_pcm_hw_params_set_rate(). It will return an error if the
samplerate is not supported by the hardware, which is arguably better than
collecting data with a different samplerate than the one specified.

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
2013-01-01 00:37:17 +01:00
Alexandru Gagniuc cbc8cbd8bb rs9lcd: Add missing 'break;'
A break was missing for "case MODE_AMP_WIDTH:" in sr_rs9lcd_parse().

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
2012-12-31 22:26:43 +01:00
Uwe Hermann f4abaa9f6b asix-sigma: Fix two compiler warnings.
asix-sigma.c:648:9: warning: 'ret' may be used uninitialized in this
function [-Wmaybe-uninitialized]

asix-sigma.c:1337:20: warning: 'triggerselect' may be used uninitialized
in this function [-Wmaybe-uninitialized]
2012-12-31 21:21:39 +01:00
Uwe Hermann 6375e1c3eb victor-dmm: Fix compiler warning.
protocol.c:106:10: warning: 'factor' may be used uninitialized in this
function [-Wmaybe-uninitialized]
2012-12-31 21:03:45 +01:00
Uwe Hermann f057272cac nexus-osciprime: Fix compiler warning.
protocol.c:26:46: warning: unused parameter 'fd' [-Wunused-parameter]
2012-12-31 21:02:14 +01:00
Uwe Hermann 811155da46 uni-t-dmm: Fix compiler warning.
protocol.c:84:5: warning: 'ret' may be used uninitialized in this
function [-Wmaybe-uninitialized]
2012-12-31 21:01:53 +01:00
Uwe Hermann 6e9d545cf4 rs9lcd: Fix compiler warning.
rs9lcd.c:289:19: warning: 'rawval' may be used uninitialized in this
function [-Wmaybe-uninitialized]
2012-12-31 20:58:14 +01:00
Bert Vermeulen 9116262931 add USBTMC device search helper 2012-12-30 01:44:58 +01:00
Bert Vermeulen 80bc663296 tondaj-sl-814: remove unneeded debugging 2012-12-29 11:19:19 +01:00
Uwe Hermann 2239728c43 ols: Add missing 'extern'. 2012-12-28 17:13:20 +01:00
Uwe Hermann 1476661970 serial-dmm: Rename VOLTCRAFT_VC820 to VOLTCRAFT_VC820_SER.
This matches the _ser suffix of the other functions/variables for this
device ("ser" denotes that it is used with the serial UNI-T UT-D02 cable
as opposed the USB/HID based cables which are handled by the uni-t-dmm driver).

But more importantly, the _SER suffix for the enum value will prevent
name clashes later, when the uni-t-dmm driver gets a VOLTCRAFT_VC820 enum.

Do the same for VOLTCRAFT_VC840.
2012-12-26 02:11:00 +01:00
Uwe Hermann 35e199da50 Fix limit_samples check in various drivers.
Check whether a sample limit was actually set (> 0) before checking if
that sample limit is reached. This also fixes continuous acquisition mode
for drivers which have that.
2012-12-26 02:11:00 +01:00
Uwe Hermann 7869340103 Shorten probe_names[] arrays everywhere.
Also, NULL-terminate all of them.
2012-12-26 00:16:07 +01:00
Bert Vermeulen df36acb36a nexus-osciprime: suppress warnings 2012-12-26 00:02:58 +01:00
Alexandru Gagniuc f9b9bd632f serial-dmm: Handle time-limited acquisition
Implement SR_HWCAP_LIMIT_MSEC capability, to allow acquisition to automatically
stop after a specified amount of time.

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
2012-12-25 23:55:42 +01:00
Alexandru Gagniuc 47eda193b2 rs9lcd: Fix segfault with unusual modes.
Some unusual modes required re-parsing the value. Instead of assigning the
re-parsed value to *floatval, it was reassigned directly to *analog->data;
however, analog->data is not initialized at this point, causing a segfault.
This situation was created when moving the radioshack-dmm code to serial-dmm,
with the segfault not being observed at that time.

Do not write directly to analog->data, but instead use the intermediate
variable rawval.

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
2012-12-25 23:43:30 +01:00
Alexandru Gagniuc 0853d5e627 rs9lcd: Convenience fixes
Convert bit masks from hardcoded hex values to bit shifts. For example 0x80
becomes (1 << 7). This also fixes a typo error in the definition of INFO_DIODE.

Add comments explaining that some case values in sr_rs9lcd_parse() are meant to
fall through without a 'break;', and explain some of the unusual modes.

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
2012-12-25 23:43:02 +01:00
Bert Vermeulen 523dfc2497 nexus-osciprime: basic scanning functionality
Unfortunately the device doesn't have an EEPROM on board at all, and so
initially enumerates with the default Cypress FX2 VID:PID (04b4:8613).
Since we already support using plain FX2* as basic logic analyzers using
the fx2lafw firmware, we cannot support that same VID:PID for the
OsciPrime. Therefore a USB conn is required for the initial scan.

However, once the firmware is uploaded the device re-enumerates as
04b4:1004, which we do detect for scanning automatically.

Thus, the OsciPrime driver requires one scan with conn parameter to get
the firmware uploaded, but it will then keep working until powered off.
2012-12-25 19:09:12 +01:00
Bert Vermeulen 35a078bce5 nexus-osciprime: Initial driver skeleton. 2012-12-24 20:55:23 +01:00
Bert Vermeulen 2f1e5c7cb7 fluke-dmm: Properly handle continuous mode
Same bug+fix as commit d55c89f523
2012-12-24 20:27:45 +01:00
Uwe Hermann dc890b8f9f asix-sigma: Quickfix for an ASIX SIGMA issue.
It's not entirely clear whether this is the right fix, but we're merging
it for now, pending later review.

See also: http://sigrok.org/bugzilla/show_bug.cgi?id=26
2012-12-24 16:57:55 +01:00
Joel Holdsworth b36e715395 fx2lafw: Tidied probe_names 2012-12-24 13:53:58 +01:00
Uwe Hermann 0aba65da9f ols: Split into api.c and protocol.[ch].
Also, drop various no longer needed #include files.
2012-12-24 13:44:52 +01:00
Uwe Hermann a567547e20 ols: Use logging helper macro. 2012-12-24 13:21:12 +01:00
Bert Vermeulen 11fb7110f4 fluke-dmm: 190 series scopemeter support
199B only for now.
2012-12-24 11:22:01 +01:00
Bert Vermeulen 4cea0ff7fe fluke-dmm: parser cleanup 2012-12-24 11:22:01 +01:00
Bert Vermeulen 9fa0968027 fluke-dmm: adapt scanner to accomodate 190 series scopemeters 2012-12-24 11:22:01 +01:00
Bert Vermeulen d4b11de09a fluke-dmm: make poll timeout configurable
Defaulted to 1s before, but a simple "QM" command on a 199B in scope
mode takes 1.7s to come through.
2012-12-24 11:22:01 +01:00
Bert Vermeulen d92faf6cac serial: more debug cleanup 2012-12-24 11:22:01 +01:00
Bert Vermeulen 49aaa0bc68 serial: get rid of overly verbose spew
It just made spew-level logging unusable; the way sigrok async comms work
guarantees most of it was a false error.
2012-12-24 11:22:01 +01:00
Alexandru Gagniuc 9cd9f6b71c alsa: Split into api.c and protocol.c
This is the driver model agreed upon for all drivers.

As a result of the split, a devc->num_probes field had to be added in order to
reduce the interdependence between api.c and protocol.c .

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
2012-12-23 17:25:37 +01:00
Alexandru Gagniuc d55c89f523 serial-dmm: Properly handle continuous mode
serial-dmm does not check if a sample limit is actually in place before deciding
to stop acquisition. Since the sample limit is set at 0 by default, operating
in continuous mode will cause acquisition to stop before even sending the first
sample.

Check to make sure we actually are in a sample-limited mode before stopping for
this reason.

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
2012-12-23 16:55:10 +01:00
Uwe Hermann 0254651dcb alsa: Update to latest APIs/conventions.
The alsa driver was out of date wrt APIs and libsigrok conventions in
general, and wasn't compiling.

This fixes the compile and updates it to _basically_ work with the current
state of analog support in libsigrok.

This is not finished/full support for ALSA analog sampling yet, though,
various TODOs remain that will be addressed later.
2012-12-20 14:42:15 +01:00
Uwe Hermann 16d6e56d12 hardware/agilent-dmm/Makefile.am: Fix typo. 2012-12-18 02:25:17 +01:00
Alexandru Gagniuc 4f9bf9a202 chronovu-la8: Fix memory leak in hw_scan
Hardware scanning creates an ftdi_context before attempting to locate devices
based on PID/VID. If no devices are detected, execution jumps to cleanup. The
context is freed with free(), instead of ftdi_free().

We cannot assume that the libftdi context is stored in a contiguous memory
region, and thus cannot use a simple free. Case in point, this situation is
identified by valgrind as a "definitely lost" memory leak.

Use ftdi_free() instead of a simple free() in hw_scan(). Valgrind no longer
complains about a memory leak in this area.

clear_instances() does not need any modification, as it correctly uses
ftdi_free().

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
2012-12-18 02:08:36 +01:00
Uwe Hermann c0bf69c29b fx2lafw: Fix int64_t printing. 2012-12-18 01:30:34 +01:00
Uwe Hermann b99457f09c fx2lafw: Various cosmetics, typo fixes, etc. 2012-12-18 01:26:58 +01:00
Uwe Hermann a873c5940c Consistently use 'di' as variable name.
Use 'di' consistently in all drivers as the name for a local, static
pointer to the respective driver's 'struct sr_dev_driver'.
2012-12-18 00:52:39 +01:00
Alexandru Gagniuc 443a14d81f fx2lafw: Print device failed to renumerate error
commit 378abfeac6 tried to solve a bug where
the fx2lafw driver would print "Device came back" even if a timeout had occured.

It solved that issue, but inadvertently introduced a new bug:
"Device came back" would be printed even if no firmware upload was performed.
This is counterintuitive, as the device is only reset when a firmware upload is
performed.

There are three cases:
i)   Firmware upload was successful
ii)  Firmware upload failed
iii) Firmware upload was NOT needed

Each case warrants a separate message from the driver. Print the
following messages depending on the outcome:

i)   "Device came back"
ii)  "Device failed to renumerate"
iii) "Firmware upload was not needed."

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
2012-12-18 00:48:56 +01:00
Alexandru Gagniuc f427daefb0 fx2lafw: Use DRIVER_LOG_DOMAIN for log messages
Use the new DRIVER_LOG_DOMAIN mechanism, where explicitly writing
the driver name in the message string is no longer required.

Thus:

- sr_err("fx2lafw: Something bad happened.");

becomes:

+ sr_err("Something bad happened.");

In either case, the log output is the same.

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
2012-12-17 12:26:10 -06:00
Uwe Hermann 006dbe5587 serial_stream_detect(): Drop unneeded sr_spew(). 2012-12-17 14:21:12 +01:00
Uwe Hermann 54d1122187 serial-dmm: Add Voltcraft VC-840 (UT-D02) support.
This works with the UNI-T UT-D02 (RS232) cable. For the USB/HID
based cable (UNI-T UT-D04), the uni-t-dmm driver must be used.

Note: This is untested, but should work just fine for all settings, with
the possible exception of temperature (testers needed!)
2012-12-17 14:21:12 +01:00
Uwe Hermann 40830061eb serial-dmm: Add Voltcraft VC-820 (UT-D02) support.
This works with the UNI-T UT-D02 (RS232) cable. For the USB/HID
based cable (UNI-T UT-D04), the uni-t-dmm driver must be used.
2012-12-17 14:21:12 +01:00
Uwe Hermann 16b7b79005 serial-dmm: Eliminate unneeded "subdriver" field.
Just use the 'int dmm' + wrapper method that is used for all other
functions which need this information. There is no real need to
special-case the hw_dev_acquisition_start() API call here.
2012-12-17 14:21:12 +01:00
Uwe Hermann 22f5419235 serial-dmm: Cosmetics, documentation fixes. 2012-12-17 14:21:12 +01:00
Bert Vermeulen 6aed917b13 lascar-el-usb: fix sample limit parameter 2012-12-16 23:06:15 +01:00
Bert Vermeulen 6787f4049a lascar-el-usb: support for EL-USB-2* 2012-12-16 18:48:20 +01:00
Bert Vermeulen 7f00750ca4 lascar-el-usb: properly submit CO concentration as a PPM value 2012-12-15 22:49:40 +01:00
Bert Vermeulen b0c95747e1 lascar-el-usb: add config saver 2012-12-15 22:34:40 +01:00
Bert Vermeulen b6506d5e03 lascar-el-usb: EL-USB-CO300 support
Works the same way as the EL-USB-CO, but with the more sensitive sensor,
so should work out of the box.
2012-12-15 11:15:30 +01:00
Bert Vermeulen 4f3bd685e6 add MQ/units for carbon monoxide concentration 2012-12-15 10:50:22 +01:00
Bert Vermeulen 6aa1eb4ea3 lascar-el-usb: generic EL-USB support + EL-USB-CO support 2012-12-15 04:07:25 +01:00
Bert Vermeulen c5f1a021b8 usb: strip overly verbose debugging 2012-12-15 04:07:25 +01:00
Bert Vermeulen 9ec7ff94ed victor-dmm: free in the right order 2012-12-15 04:07:25 +01:00
Bert Vermeulen e7f378fd1a usb: strip useless code 2012-12-15 04:07:25 +01:00
Alexandru Gagniuc e7ed87a469 serial-dmm: Use dummy info struct for rs9lcd parser
The rs9lcd parser, which is used for the RadioShack 22-812 does not use its
*info parameter, and therefore did not have a rs9lcd_info struct declared.

With recent re-factoring of the receive data callbacks, it became necessary to
pass a struct pointer. This made the RECV_DATA macro look like:

- RECV_DATA(RADIOSHACK_22_812, metex14)

giving the wrong impression that the RadioShack 22-182 uses the
metex14 protocol, which is not the case.

Create a dummy rs9lcd_info struct, and correctly identify the parser
as rs9lcd in the RECV_DATA macro:

+ RECV_DATA(RADIOSHACK_22_812, rs9lcd)

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
2012-12-13 23:16:34 +01:00
Alexandru Gagniuc c69049091e libsigrok.h: Don't store subdriver in sr_dev_driver
Not all drivers use subdrivers. The only reason the subdriver field was
introduced was to accomodate the model of serial-dmm.

The sr_dev_driver struct is available to the frontend. Exposing the subdriver
field creates the problem of exposing knowledge of libsigrok's internal driver
layout, even though the drivers are designed to be a flat list to the frontend.

Store the subdriver in the dev_context struct of serial-dmm.

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
2012-12-13 23:16:34 +01:00
Alexandru Gagniuc d128bf12b2 serial-dmm: Remove global sr_dev_driver *di alias
The global *di alias was used to keep track of the driver context.
It caused issues with trying to use several subdrivers at once, so
its use was obsoleted.

The correct context is preserved through different mechanisms, either
the *sdi pointer, or wrappers which pass the correct context.

The *di alias is no longer used, so remove it.

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
2012-12-13 23:16:34 +01:00
Alexandru Gagniuc 3098b3902d serial-dmm: Simplify wrapper layout
Wrappers for hw_init, hw_cleanup, clear_instances, and hw_scan are needed for
each subdriver due to the nature of serial-dmm. These wrappers are implemented
as macros, in order to reduce the number of lines of code.

For each of those functions, we have a separate wrapper list, then we connect
them together in a first-class driver using a DRV macro, and yet another list
(the DRV list).

Instead of declaring those wrappers in separate lists, include them in the DRV
macro. This approach reduces the number of macro lists from five to just one.

From the perspective of adding a new subdriver, this also greatly reduces the
number of places needed to hook in a new device.

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
2012-12-13 23:16:34 +01:00
Uwe Hermann fd9b2b865a serial-dmm: Add per-driver clear_instances() wrappers. 2012-12-13 01:54:13 +01:00
Uwe Hermann 0c23677d0b serial-dmm: Add per-driver hw_cleanup() wrappers. 2012-12-13 01:47:02 +01:00
Uwe Hermann ca4b130943 serial-dmm: Add per-driver hw_dev_list() wrappers. 2012-12-13 01:41:34 +01:00
Uwe Hermann ea4c6c2311 serial-dmm: Add per-driver hw_scan() wrappers. 2012-12-13 01:34:21 +01:00
Uwe Hermann dccfe01586 serial-dmm: Use a macro for receive_data() wrappers. 2012-12-13 01:34:21 +01:00
Uwe Hermann f1437c6814 serial-dmm: Use a macro for driver struct simplification. 2012-12-13 01:34:21 +01:00
Uwe Hermann 06b7a8af7e serial-dmm: Simplify code a bit.
Store/use the receive_data() function and a pointer to the driver struct
in the dmms[] array. Use a ".subdriver" entry in the driver struct.
Use a macro to simplify hw_init() wrappers.
2012-12-13 01:30:43 +01:00
Alexandru Gagniuc 5b389efcfe serial-dmm: Avoid duplicate symbol error
Declare dmm_info dmms as extern in protocol.h to prevent duplicate
symbol error from the linker.

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
2012-12-13 01:00:06 +01:00
Joel Holdsworth 378abfeac6 fx2lafw: Don't say "Device came back" when it didn't 2012-12-06 22:40:00 +01:00
Alexandru Gagniuc 26be4ebef3 serial-dmm: Fix segfault when no device is used
di was initialized as NULL. If no device covered by this driver
is used, di remains NULL. This causes a segmentation fault when
calling clear_instances().

Check for di being NULL.

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
2012-12-06 00:21:45 +01:00
Peter Stuge 1740429d70 hardware: A few further USB error message fixups 2012-12-05 01:34:15 +01:00
Peter Stuge d4928d7102 hardware: Call libusb_error_name() in all USB-related error messages 2012-12-05 01:14:44 +01:00
Bert Vermeulen 851d5b2274 lascar-el-usb: add scanning functionality 2012-12-04 23:58:26 +01:00
Bert Vermeulen 7ae6a75826 usb: sr_usb_find() uses standardized connection string to find a USB device 2012-12-04 23:25:11 +01:00
Alexandru Gagniuc d458a0ac29 ezusb: Use DRIVER_LOG_DOMAIN for debug output
Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
2012-12-04 13:31:49 -06:00
Alexandru Gagniuc f428493435 tondaj-sl-814: Fix unused parameter warning
Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
2012-12-03 19:39:58 -06:00
Peter Stuge d4abb463a7 hardware: Make USB drivers use the libusb_context in struct sr_context 2012-12-03 12:07:40 +01:00
Peter Stuge 1ebe4b4e69 hw_init(): Save struct sr_context * parameter in struct drv_context 2012-12-03 12:07:40 +01:00
Peter Stuge 34f06b903e Add a struct sr_context * parameter to hw_init() 2012-12-03 12:07:40 +01:00
Peter Stuge 73496bb571 alsa: Remove unused and unprovided hw_init() parameter `devname' 2012-12-03 12:07:40 +01:00
Bert Vermeulen 46697e38b2 lascar-el-usb: Initial driver skeleton. 2012-12-03 03:53:44 +01:00
Uwe Hermann 162b735218 Remove some radioshack-dmm leftovers. 2012-12-02 22:22:07 +01:00
Alexandru Gagniuc ea088bb693 serial.c: Be more verbose about failing to parse parameter string
Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
2012-12-02 22:22:07 +01:00
Alexandru Gagniuc 21829e6708 radioshack-dmm: Integrate into serial-dmm
Use the infrastructure of serial-dmm to handle the RadioShack 22-812,
and completely remove radioshack-dmm.

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
2012-12-02 22:22:07 +01:00
Alexandru Gagniuc 05f134abc2 radioshack-dmm: Separate protocol parser from driver
Move the parsing part of radioshack-dmm into a separate protocol
parser, following the model from hardware/common/dmm.

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
2012-12-02 22:18:22 +01:00
Alexandru Gagniuc ae95ffebfa radioshack-dmm: Fix opening of serial port.
During scan the serial port is opened with SERIAL_RDONLY | SERIAL_NONBLOCK,
which works fine, but when acquisition starts, it is opened only with
SERIAL_RDONLY. On Linux, if cdc_acm can make a claim to the USB to serial
converter, opening the port will fail.

Open port with SERIAL_RDONLY | SERIAL_NONBLOCK.

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
2012-12-02 21:48:17 +01:00
Alexandru Gagniuc d5ce233fe1 serial-dmm: Add RadioShack 22-168 support.
Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
2012-12-02 17:38:05 +01:00
Uwe Hermann eebb606762 demo: Add missing dev_clear() API call. 2012-12-02 17:21:13 +01:00
Uwe Hermann 3a18cf625e serial-dmm: Drop accidentally committed file. 2012-12-02 16:11:42 +01:00
Alexandru Gagniuc 3b20367381 demo: Do not use a separate thread for generating data
We already have an event-based mechanism in place. Using a thread just
adds unneeded complexity, especially for a driver designed not for
performance, but for providing a testbed to frontends.
Generate the data in the event handler, not in a separate thread.

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
2012-12-02 16:08:03 +01:00
Uwe Hermann d4bd66a0c7 serial-dmm: Add PCE PCE-DM32 support. 2012-12-02 14:28:29 +01:00
Uwe Hermann a376ffea49 serial-dmm: Add PeakTech 4370 support. 2012-12-02 14:22:51 +01:00
Uwe Hermann a53da08254 serial-dmm: Add Metex M-3640D support. 2012-12-02 14:22:51 +01:00
Uwe Hermann 9871215c83 metex14: Add dB mode and hFE mode support.
This is found e.g. on the Metex M-3640D DMM.
2012-12-02 14:22:51 +01:00
Uwe Hermann 6dca2f16ee serial-dmm: Add V&A VA18B support. 2012-12-02 14:22:51 +01:00
Uwe Hermann 5887c9cc1a serial-dmm: Add MASTECH MAS345 support. 2012-12-02 14:22:51 +01:00
Uwe Hermann f0ac4929d3 serial-dmm: Add PeakTech 3410 support. 2012-12-02 14:22:51 +01:00
Uwe Hermann ce3777ada9 serial-dmm: Add Metex ME-31 support. 2012-12-02 14:22:46 +01:00
Uwe Hermann f086b83011 serial-dmm: Add Digitek DT4000ZC support. 2012-12-02 14:21:19 +01:00
Uwe Hermann e90cf076aa metex14: Add sr_metex14_packet_request(). 2012-12-02 14:21:18 +01:00
Uwe Hermann 8f46911e42 metex14: Fix 'is_ol' handling.
Thanks to Bert Vermeulen for the reminder.
2012-12-02 14:21:18 +01:00
Alexandru Gagniuc 2477fb9569 metex14: Parse microamp (uA) values.
Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
2012-12-02 14:21:18 +01:00
Alexandru Gagniuc 3ebc9b59a2 metex14: Fix parsing of measurement flags.
strcmp(buf + 9, "  mA") does not work because buf is CR-terminated,
while "  mA" is NUL-terminated.

Drop ambiguities arising from the termination of the strings, and
only compare the characters we care about, using strncmp().

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
2012-12-02 14:21:18 +01:00
Alexandru Gagniuc e82d7dbc20 metex14: Print contents of received packet.
The packet is an ASCII string. We can simply print the raw packet data.

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
2012-12-02 14:21:18 +01:00
Alexandru Gagniuc 76b55dfa8a metex14: Fix parsing of spaces.
When the parser found a space, it treated it as an invalid digit
and discarded the whole packet. This behavior was incorrect on
2000 count devices, where the first digit can be sent as a space
rather than a '0'.

Convert spaces to '0' and parse them as usual.

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
2012-12-02 14:21:18 +01:00
Uwe Hermann 21a7f2692e Rename tekpower-dmm to serial-dmm.
This is now a generic driver for multiple DMM "subdrivers" that use simple
serial port protocols.
2012-12-02 14:21:18 +01:00
Uwe Hermann 729b01f988 tekpower-dmm: Generalize & first-class TP4000ZC driver.
Prepare the tekpower-dmm driver to be able to support various simple
serial port based DMMs.

Also, make a 'tekpower-tp4000zc' "first-class" driver which is currently
the only user of this generic driver.
2012-12-02 14:21:18 +01:00
Uwe Hermann 1fbab46626 metex14: Pass 'info' as a void pointer.
This is done so that the function prototype of all sr_*_parse() DMM
functions is the same, which will be needed later.
2012-12-02 14:21:17 +01:00
Uwe Hermann 93357bc3ce fs9721: Pass 'info' as a void pointer.
This is done so that the function prototype of all sr_*_parse() DMM
functions is the same, which will be needed later.
2012-12-02 14:21:17 +01:00
Uwe Hermann d84fc9cb3b tekpower-dmm: Drop unneeded g_try_malloc(). 2012-12-02 14:21:17 +01:00
Uwe Hermann 5ddb0cc7d4 serial: Don't hardcode parity and stop bits on Windows. 2012-12-02 14:10:27 +01:00
Uwe Hermann 5ae35c29a7 serial: Full baudrate support on Windows/MinGW. 2012-12-02 13:56:13 +01:00
Uwe Hermann 39e5d79826 serial: RTS/DTR support on Windows/MinGW. 2012-12-02 13:41:49 +01:00
Uwe Hermann a54dd31e38 serial: Use OS-independent flags for serial port opening.
Add SERIAL_RDWR, SERIAL_RDONLY, and SERIAL_NONBLOCK (for now), which are
mapped to the respective OS-specific mechanism in serial_open().
2012-12-02 12:45:54 +01:00
Uwe Hermann 0f84cda05d serial: Fix Windows build. 2012-12-01 22:34:53 +01:00
Alexandru Gagniuc c216d62307 demo: Properly stop acquisition after reaching our sample quota
The demo driver was using sr_session_source_add_channel() to add
a poll source, but was relying on sr_session_run_poll() to call
sr_session_source_remove(). This, coupled with the design of the
driver caused errors once the samples were collected.

The error stream was most likely related to failing to properly close
one of the channels.

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
2012-12-01 22:00:16 +01:00
Alexandru Gagniuc 49145a63c7 demo: Be more verbose about starting/stopping acquisition
This is the first step in fixing the demo driver: figuring out what is
being called and what is not _and_ have it show up in the logs.

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
2012-12-01 22:00:15 +01:00
Bert Vermeulen 71caaad46b serial: allow for extra rts and dtr options in conn string
Options in addition to the usual "9600/8n1" syntax start with a
slash, and take the form of key=value, where different options are
also separated by slashes. For example:

	"9600/8n1/rts=0/dtr=1"

This sets RTS low and DTR high.
2012-11-27 00:55:08 +01:00
Uwe Hermann 700dcd5caa serial: Initial code for setting DTR/RTS.
Currently disabled until option parsing is in place.
2012-11-26 17:01:15 +01:00
Alexandru Gagniuc 9047358761 radioshack-dmm: Be more verbose with packet checks
Add sr_spew() messages to state why the packet was found to be invalid.

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
2012-11-21 19:33:55 -06:00
Alexandru Gagniuc 2ecc5d432f radioshack-dmm: Check for valid mode before calculating checksum
The packet mode byte is akin to a signature. If that is invalid, there's
no point in calculating the checksum, so check the mode first.

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
2012-11-21 19:30:26 -06:00
Alexandru Gagniuc 54be7c005e radioshack-dmm: Improve serial detection
For device detection, use serial_stream_detect() instead of
serial_readline() + custom logic.

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
2012-11-21 19:19:58 -06:00
Alexandru Gagniuc 551c3d8ce3 serial.c: Sanitize serial_stream_detect
Print the timeout in miliseconds, not microseconds.
Only calculate elapsed time once oer loop.

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
2012-11-21 19:18:21 -06:00
Uwe Hermann ac913e5c35 Add Metex 14-byte ASCII protocol parser. 2012-11-17 22:27:54 +01:00
Bert Vermeulen 90165efe55 ols: if no serial port specified, this driver is not used. 2012-11-16 15:26:47 +01:00
Uwe Hermann 766456be1c Move serial_stream_detect() to serial.c. 2012-11-14 18:40:07 +01:00
Uwe Hermann 4da1a800df serial: Compile-fix for Windows/MinGW. 2012-11-14 18:20:13 +01:00
Uwe Hermann 6bef68a7e1 tekpower-dmm: Cosmetics. 2012-11-14 18:13:56 +01:00
Alexandru Gagniuc 2546b05c80 tekpower-dmm: Improve serial detection.
Serial detection was using serial_readline, which stripped carriage
return from the packets. This made for a very unreliable detection
mechanism.

Switch to a timeout-based detection mechanism that parses the data
as it comes in. This also allows us to stop parsing once we found
our first valid packet.

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
2012-11-14 18:13:56 +01:00
Uwe Hermann bda8fc98b1 Drop obsolete genericdmm driver. 2012-11-14 15:26:11 +01:00
Bert Vermeulen d35afa87c9 tekpower-dmm: use new serial API 2012-11-12 12:50:42 +01:00
Bert Vermeulen 401476daaf radioshack-dmm: use new serial API 2012-11-12 12:41:10 +01:00
Bert Vermeulen 19ee7dff78 tondaj-sl-814: use new serial API 2012-11-12 03:00:32 +01:00
Bert Vermeulen f306ca61f6 colead-slm: use new serial API 2012-11-12 02:54:10 +01:00
Bert Vermeulen 109a3ba413 agilent-dmm: use new serial API 2012-11-12 02:25:37 +01:00
Bert Vermeulen 58d03f034f fluke-dmm: use new serial API 2012-11-12 02:25:17 +01:00
Bert Vermeulen 530f201eb8 ols: use new serial API 2012-11-12 02:24:47 +01:00
Bert Vermeulen 299bdb249e serial: revamp internal API
The only thing to get passed around now is the struct sr_serial_dev_inst
pointer. This should make things more portable as well.
2012-11-12 00:27:17 +01:00
Uwe Hermann de6e0eca95 sigma/la8/demo: s/SR_PROBE_ANALOG/SR_PROBE_LOGIC/. 2012-11-11 19:40:14 +01:00
Uwe Hermann 472bbb464b alsa: Use message logging helpers. 2012-11-11 18:14:17 +01:00
Uwe Hermann 64d33dc28e All drivers: Drop unneeded comments. 2012-11-11 18:09:11 +01:00
Uwe Hermann fa7730623a victor-dmm: Cosmetics. 2012-11-11 18:09:11 +01:00
Bert Vermeulen 5df7b20156 serial: avoid Cyrillic conversion specifiers 2012-11-11 03:27:51 +01:00
Bert Vermeulen fe1c50fba6 ols: fix device discovery 2012-11-11 03:12:10 +01:00
Alexandru Gagniuc a99e0d2a0c ols: Do not randomly probe serial ports
ols driver used to probe a series of available serial ports obtained
by regexp matching of common serial port names.
There are a number of problems with this approach:
1. It will probe all serial devices, including devices that do not
like to be probed, potentially causing them to act up.
2. It will try to probe serial ports which may already be opened in
other applications for other purposes.
3. It assumes the naming of the serial ports is set in stone, and
creates an unnecessary OS-specific list.
4. It produces unnecessary debug output even when an OLS device is
not connected.
5. etc...

Do not implicitly probe serial ports. Only probe the port specified
by the frontend, if any; otherwise, just quit.
Also get rid of all functionality in serial.c which was designed
specifically for random probing.

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
2012-11-11 03:12:10 +01:00
Uwe Hermann 56eb9f95ba link-mso19: Use message logging helpers. 2012-11-10 19:42:37 +01:00
Uwe Hermann 92bcedf6e8 demo: Use message logging helpers. 2012-11-10 19:42:37 +01:00
Uwe Hermann e98b7f1be0 hantek-dso: Use message logging helpers. 2012-11-10 19:42:37 +01:00
Uwe Hermann 47f4f073e0 asix-sigma: Use message logging helpers. 2012-11-10 19:42:37 +01:00
Uwe Hermann 936e27f197 radioshack-dmm: Use new file naming conventions. 2012-11-10 19:42:37 +01:00
Uwe Hermann 4e172b8f8d radioshack-dmm: Move some stuff out of .h file.
Most of the enums and #defines are not needed in multiple files, just
put them in the respective .c file where they're used.
2012-11-10 19:42:37 +01:00
Uwe Hermann ba6383f855 radioshack-dmm: Cosmetics, coding-style, cleanups.
Also, drop some uneeded code and simplify some parts.
2012-11-10 19:41:21 +01:00
Uwe Hermann 302c4b5ab5 serial: Deduplicate log messages a bit. 2012-11-10 01:45:51 +01:00
Uwe Hermann c073af80f8 Add initial Tondaj SL-814 protocol handling. 2012-11-10 01:45:51 +01:00
Uwe Hermann aa2af32432 tondaj-sl-814: Initial driver skeleton. 2012-11-10 01:01:28 +01:00
Bert Vermeulen 63f7cb9791 agilent-dmm: use standard serial_readline() 2012-11-07 01:25:10 +01:00
Bert Vermeulen 318dd53c70 serial_readline() now terminates on and strips CR and/or LF 2012-11-07 01:24:23 +01:00
Bert Vermeulen b87f8504dc g_get_monotonic_time() takes a signed int64 2012-11-07 01:23:24 +01:00
Bert Vermeulen 74ac7d7f73 agilent-dmm: no need to specify a serialcomm scan parameter
It's always 9600/8n1 anyway.
2012-11-07 00:46:30 +01:00
Bert Vermeulen 33e8a3c525 chronovu-la8: not a bug if an unused driver gets asked to clean up 2012-11-07 00:39:46 +01:00
Bert Vermeulen ff94568366 victor-dmm: add protocol decoder 2012-11-06 19:37:33 +01:00
Bert Vermeulen 642e9d623c more deconstifying sr_dev_inst for dev_acquisition_stop() 2012-11-06 19:32:53 +01:00
Bert Vermeulen 7a36037546 victor-dmm: add basic USB driver skeleton 2012-11-06 15:16:22 +01:00
Bert Vermeulen 69b07d14db allow for intermediate stage in stopping acquisition
In the case of USB drivers, a driver's dev_acquisition_stop() cannot
simply remove its fd sources from the session and close its devices:
a USB transfer might still be underway, and it needs to be finished
(and its memory freed) properly.

An sr_dev_inst->status value is added: SR_ST_STOPPING, which should
be set when the driver's dev_acquisition_stop() is called, and acts
as a marker for the USB event handler to wind up its operations.

In order for dev_acquisition_stop() to be able to set the sdi status,
however, it needs to be unconstified.
2012-11-06 15:16:22 +01:00
Bert Vermeulen ac3898d2d0 victor-dmm: Initial driver skeleton. 2012-11-06 15:16:22 +01:00
Toshiaki Yoshida 0ab0cb942f zeroplus-logic-cube: Fix samplerate and trigger
- Default to 1MHz.
   The default sample rate is the lowest frequency (100Hz),
   but it takes a very long time until 128K memory is full.

 - Fix the 1MHz setting.

 - Use samplerate list.

 - Fix 10MHz frequency.

 - Fix trigger.

 - Change the size of memory according to the number of samples.

 - Add pre-trigger (capture ratio) setting.

 - Fix the first acquisition after power on.
2012-11-05 11:46:58 +01:00
Uwe Hermann 41d9427f27 uni-t-dmm: Use new USB helper functions. 2012-11-03 00:03:01 +01:00
Uwe Hermann 0c632d36be genericdmm: Factor out USB functions.
Move sr_usb_connect() and sr_usb_open() to hardware/common/usb.c in a
slightly more generic form and add more error checks and logging.

Let genericdmm use the new/moved functions.
2012-11-03 00:02:56 +01:00
Bert Vermeulen 538ac9a91e colead-slm: fix sloppy driver context handling 2012-11-02 20:44:34 +01:00
Uwe Hermann 83e3c368c6 serial: Output successful open and the FD. 2012-11-02 18:49:00 +01:00
Uwe Hermann 20af610683 serial: Fix two segfaults. 2012-11-02 18:45:37 +01:00
Uwe Hermann c485db908a serial: Fix some sr_err() items. 2012-11-02 18:35:30 +01:00
Uwe Hermann 43d8eaf601 genericdmm: Drop left-over entry. 2012-11-02 18:16:58 +01:00
Uwe Hermann 441b80035e genericdmm: Drop some dead code. 2012-11-02 18:05:18 +01:00
Uwe Hermann b19f4622b6 serial: More error-checking & logging, add baudrates.
This mostly affects the non-Windows code so far, the rest will follow.
2012-11-02 18:02:20 +01:00
Uwe Hermann d7c776b9ff serial: Add missing "break"s.
This would otherwise cause bugs when e.g. asking for 2 stopbits.
2012-11-02 15:57:21 +01:00
Bert Vermeulen a8d09e1326 colead-slm: SL-5868P support 2012-11-02 15:24:30 +01:00
Bert Vermeulen 4d729ddcaf colead-slm: Initial driver skeleton. 2012-11-02 15:24:30 +01:00
Uwe Hermann 8c1adf3738 Rework FS9721 parser.
Merge parts of the tekpower-dmm code (the chip of the TekPower
TP4000ZC seems to be an FS9721_LP3 too) and rework parts of the functions.

Adapt the tekpower-dmm and uni-t-dmm code accordingly.
2012-11-02 01:09:58 +01:00
Alexandru Gagniuc be5c1d3b52 tekpower-dmm: Use generic fs9721 parser
Replace the parser with the fs9721 parser, which is just an adapted
version of this parser.

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
2012-11-02 00:50:56 +01:00
Uwe Hermann 886a52b6fb Return SR_ERR_MALLOC upon allocation errors.
Add some TODOs.
2012-10-30 20:25:54 +01:00
Uwe Hermann 6f22a8ef2c Factor out serial_readline() to serial.c.
Only one (slightly different) variant remains in agilent-dmm, this will
be merged soon too, though.
2012-10-30 19:59:21 +01:00
Uwe Hermann 2980cc2494 genericdmm/victor-dmm: Use message logging helpers. 2012-10-30 19:43:46 +01:00
Uwe Hermann dccbd0ede0 radioshack-dmm: Use message logging helpers. 2012-10-30 19:43:45 +01:00
Uwe Hermann 38d326e879 agilent-dmm: Use message logging helpers. 2012-10-30 19:35:35 +01:00
Uwe Hermann 31d84da3a2 fluke-dmm: Use message logging helpers. 2012-10-30 19:28:37 +01:00
Uwe Hermann 6ac5f8922e uni-t-dmm: Simplify subdriver setup.
So far, it seems we can make this work with just hw_init() needing to
be subdriver-specific (it will point 'di' to the respective per-subdriver
entry), the rest of the API functions can then use a strcmp() on di->name to
learn which subdriver they belong to.
2012-10-30 14:23:05 +01:00
Uwe Hermann fdbcb86dba Draft: Make UT61D and VC-820 "first-class" drivers.
The 'uni-t-dmm' driver/directory will not appear as a "driver" to
frontends anymore, it's just an internal thing.

The frontends will see a uni-t-ut61d and voltcraft-vc820 driver now,
with the correct names and parsers etc. attached to them.

This is not fully finished yet, but it's a start (and works mostly):

  $ sigrok-cli -D
  The following devices were found:
  UNI-T UT61D with 1 probe: P1
  Voltcraft VC-820 with 1 probe: P1

  $ sigrok-cli --driver voltcraft-vc820 -D
  The following devices were found:
  Voltcraft VC-820 with 1 probe: P1

  $ sigrok-cli --driver uni-t-ut61d -D
  The following devices were found:
  UNI-T UT61D with 1 probe: P1

  # Now attaching a UNI-T UT61D device via USB.

  $ sigrok-cli --driver uni-t-ut61d --samples 3 -O analog
  P1: -0.017800 V DC
  P1: -0.017600 V DC
  P1: -0.017700 V DC

  # Now attaching a Voltcraft VC-820 device via USB instead.

  $ sigrok-cli --driver voltcraft-vc820 --samples 3 -O analog
  P1: -0.319200 V DC
  P1: -0.319300 V DC
  P1: -0.319300 V DC
2012-10-30 13:11:27 +01:00
Bert Vermeulen 4ca378df88 don't use deprecated g_thread_init/_create 2012-10-29 22:10:05 +01:00
Uwe Hermann 015f1508ad uni-t-dmm: Voltcraft VC-820 draft support.
This is commented out so far, will be implemented properly soon.
2012-10-29 15:20:17 +01:00
Uwe Hermann 6c701476ad Add protocol parser for FS9721_LP3/FS9721B.
The Fortune Semiconductor FS9721_LP3 and FS9721B/Q100 DMM chips are very
similar and the protocol looks identical.

Tested on a Voltcraft VC-820 (FS9721_LP3) with the uni-t-dmm driver
(needs some small changes, tbd).
2012-10-29 15:17:17 +01:00
Bert Vermeulen a28dac0a73 fluke-dmm: code cleanup 2012-10-29 11:54:20 +01:00
Bert Vermeulen 2c04dede20 Fluke 287/289: support for dBu/dBV measurement units 2012-10-29 11:50:34 +01:00
Uwe Hermann 79081ec80c Initial support for UNI-T DMMs.
This is not yet fully finished, but works for most use-cases.

Tested with a UNI-T UT61D using the UT-D04 USB/HID cable (new version).
2012-10-27 23:17:30 +02:00
Uwe Hermann 45e080b60b la8: Rename driver.[ch] to protocol.[ch]. 2012-10-27 22:36:34 +02:00
Uwe Hermann f3a35908ef la8: Adapt to new driver conventions. 2012-10-27 22:36:19 +02:00
Uwe Hermann bbabddbd64 tekpower-dmm: Cosmetics, coding-style, consistency fixes. 2012-10-27 22:25:04 +02:00
Alexandru Gagniuc 7dc55d930f Add support for the TekPower TP4000ZC DMM.
Also known as Digitek DT4000ZC.

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
2012-10-27 22:25:04 +02:00
Uwe Hermann 545f978639 config.h usage cleanups.
- Drop config.h #include from files that don't actually use any of
   its contents (at the moment).

 - Add comment for those that do need it.
2012-10-24 00:41:21 +02:00
Bert Vermeulen 589a10135a clean up autoconf/autobuild scripts 2012-10-22 01:48:39 +02:00
Alexandru Gagniuc 7c41dc4774 radioshack-dmm: Implement support for "LOGIC" mode
LOGIC mode sends the following data:
     V < 0 : actual voltage
0 <= V < 1 : LOW
1 <= V < 2 : actual voltage
2 <= V     : HIGH

We follow the same idea, and set our unit to BOOLEAN for the crazy
case (HIGH or LOW).

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
2012-10-20 23:03:51 +02:00
Alexandru Gagniuc 0f70830194 libsigrok: (Trivial) Add support for 2400 baud
Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
2012-10-20 23:02:14 +02:00
Bert Vermeulen fe31f8b9f9 fluke-dmm: add support for Fluke 187 2012-10-16 23:33:54 +02:00
Alexandru Gagniuc be8dbf3ab2 radioshack-dmm: (Trivial) Convenience fixes
While testing the new radioshack-dmm driver with pulseview, I found
a few inconvenients.

1. Print an info message when a port is probed, and when a device is
found. This makes it easy to tell if and where the driver is looking.

2. num_samples was not reset after the first aquisition, so the
second aquisition would quit right away. Reset num_samples at start
of a new aquisition.

3. There's no need to  open the serial port RW, so change O_RDWR to
O_RDONLY when opening the port.

These changes are too trivial to split into different patches.

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
2012-10-16 11:16:41 +02:00
Bert Vermeulen 7b0a85c81c radioshack-dmm: build fixes 2012-10-15 18:25:48 +02:00
Alexandru Gagniuc d375b3c3ec radioshack-dmm: Add support for Radioshack 22-812 DMM
Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
2012-10-15 17:32:58 +02:00
Alexandru Gagniuc e8e9dcdd70 serial: (Trivial) add support for 4800 baud
Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
2012-10-15 17:32:58 +02:00
Uwe Hermann a2e222d24f sr: struct drv_context is global now. 2012-09-27 23:29:33 +02:00
Bert Vermeulen d38d2ef0ce fluke-dmm: support for all basic 287 functionality 2012-09-25 19:53:05 +02:00
Bert Vermeulen f46a36ad80 fluke-dmm: definitely use CR as line terminator 2012-09-25 19:53:05 +02:00
Bert Vermeulen acd29accb3 fluke-dmm: add Fluke 287 to supported list 2012-09-25 19:53:05 +02:00
Bert Vermeulen fb9d3bf9cc sr: always turn off ICRNL on serial ports
It does rather screw with protocols that use CR.
2012-09-25 19:53:05 +02:00
Bert Vermeulen d3f8f1415c fluke-dmm: flesh out the driver API 2012-09-25 19:53:05 +02:00
Bert Vermeulen 4129832014 fluke-dmm: auto-discover serial bitrate if not provided 2012-09-25 19:53:05 +02:00
Bert Vermeulen bc41e012e6 fluke-dmm: don't log anything if no conn params given 2012-09-25 19:53:05 +02:00
Bert Vermeulen fb480d578e fluke-dmm: fix discovery 2012-09-25 19:53:05 +02:00
Bert Vermeulen 5c51e09868 sr: turn off canonical mode and echo ion serial ports by default 2012-09-25 19:53:05 +02:00
Bert Vermeulen e7edd64f45 fluke-dmm: build fixes 2012-09-25 19:53:05 +02:00
Bert Vermeulen 4f958423d1 fluke-dmm: basic scan functionality 2012-09-25 19:53:05 +02:00
Bert Vermeulen 883a2e9e71 fluke-dmm: initial driver skeleton 2012-09-25 19:53:05 +02:00
Bert Vermeulen c2016fa0eb agilent-dmm: don't log anything if no conn params given 2012-09-17 00:00:27 +02:00
Bert Vermeulen e9022f596d sr: make struct drv_context global 2012-09-11 21:27:26 +02:00
Bert Vermeulen f5cfe894ec fx2lafw: use default libusb context 2012-09-11 21:20:50 +02:00
Bert Vermeulen 19b0cce312 hantek-dso: use default libusb context 2012-09-11 21:16:16 +02:00
Bert Vermeulen b186aa78b8 agilent-dmm: fix model identifiers 2012-09-10 21:27:50 +02:00
Bert Vermeulen 8c0152f29b agilent-dmm: tentative support for all U123x and U125x models
Only tested on U1233A, but it just might work.

The U125x protocol decoding only supports voltage, current, resistance,
capacitance and diode measurements for now.
2012-09-10 01:00:48 +02:00
Bert Vermeulen a4394fb3d9 agilent-dmm: code cleanup
This should make it easier to support other Agilent U12xx models
2012-09-10 00:13:26 +02:00
Bert Vermeulen e066c32a25 agilent-dmm: fix AC/DC mode detection 2012-09-09 22:49:07 +02:00
Bert Vermeulen f2e86bbfa6 agilent-dmm: make parser deal with input better 2012-09-09 22:48:22 +02:00
Bert Vermeulen 81599cc55b agilent-dmm: remove IDN check at 1Hz, we just don't need it.
Some debug message cleanup.
2012-09-08 14:53:49 +02:00
Bert Vermeulen e6b021f377 agilent-dmm: support for submodes 2012-09-08 03:06:45 +02:00
Bert Vermeulen 69a7402490 genericdmm/victor-70c: fix resistance and frequency measurements 2012-09-08 02:28:41 +02:00
Bert Vermeulen c0d93341cb generic-dmm: cosmetics 2012-09-02 15:42:56 +02:00
Bert Vermeulen f6b8ffa6c0 genericdmm/victor-70c: warn if detaching kernel driver fails 2012-09-02 15:42:56 +02:00
Bert Vermeulen e93cdf428c sr: mostly finished Agilent DMM driver 2012-09-02 15:42:56 +02:00
Bert Vermeulen 792fc68658 serial: add serial_set_paramstr() 2012-09-02 15:42:56 +02:00
Bert Vermeulen f38b9763fa serial: fix flow control setting 2012-09-02 15:42:56 +02:00
Bert Vermeulen 6a6e23abf5 serial: set speed in both directions 2012-09-02 15:42:56 +02:00
Bert Vermeulen 6ac0db19f3 sr: add new agilent-dmm driver (Agilent U12xxA multimeters) 2012-09-02 15:42:56 +02:00
Bert Vermeulen b84c13d700 genericdmm: Victor 70C multimeter support 2012-08-18 16:23:08 +02:00
Bert Vermeulen 3c6ce226de genericdmm: finish basic USB support 2012-08-18 16:23:08 +02:00
Bert Vermeulen 811deee4af sr/drivers: add API calls sr_dev_inst_list() and sr_dev_inst_clear()
These are used to list the device instances currently known to the driver,
and clear that list.

Drivers that don't necessarily clear their list of instances on every scan,
such as genericdmm, need to provide these to the frontend to keep instance
management sane.
2012-08-06 00:59:25 +02:00
Bert Vermeulen 014359e329 sr/drivers: obsolete SR_HWCAP_PROBECONFIG
Since probes now live in a struct sr_dev_inst owned by the driver, it
already knows about them. Instead of a frontend telling the driver to
configure probes, all driver now do this just before starting acquisition.
2012-08-05 18:56:12 +02:00
Bert Vermeulen fabe59b326 sr: drivers using sr_usb_dev_inst_new() must free it properly as well
sr_usb_dev_inst_free() doesn't really do anything, but it might one
day.
2012-08-04 12:21:02 +02:00
Bert Vermeulen 228b2cccaf asix-sigma: fix double free 2012-08-03 14:19:00 +02:00
Bert Vermeulen 8012ae1e3b chronovu-la8: fix double free 2012-08-03 14:18:02 +02:00
Bert Vermeulen afc8831938 chronovu-la8: code cleanup 2012-08-03 14:06:52 +02:00
Bert Vermeulen 7021f98596 chronovu-la8: remove session source when done 2012-08-03 11:29:01 +02:00
Bert Vermeulen 503c4afbb4 asix-sigma: remove session source when done 2012-08-03 11:29:01 +02:00
Bert Vermeulen 7fd3e85961 demo: remove sources from session when done 2012-08-03 11:29:01 +02:00
Bert Vermeulen a3508e33f9 hantek-dso: remove sources from session when done 2012-08-03 11:29:01 +02:00
Bert Vermeulen 26bf9d56c0 ols: remove serial source from session when done 2012-08-03 11:29:01 +02:00
Bert Vermeulen 310e9e9be4 zeroplus: use driver-private storage for instances 2012-08-03 11:29:00 +02:00
Bert Vermeulen fefc4b858e ols: use driver-private storage for instances 2012-08-03 11:29:00 +02:00
Bert Vermeulen 301a5e4c4a genericdmm: use driver-private storage for instances 2012-08-03 11:29:00 +02:00
Bert Vermeulen b4750a3a93 demo: use driver-private storage for instances 2012-08-03 11:29:00 +02:00
Bert Vermeulen b9636cf4dc fx2lafw: minor cleanup 2012-08-03 11:29:00 +02:00
Bert Vermeulen cf1ebd5446 chronovu-la8: don't try to clean up unless we've initialized 2012-08-03 11:29:00 +02:00
Bert Vermeulen b32503cccd asix-sigma: properly init driver-private storage 2012-08-03 11:29:00 +02:00
Bert Vermeulen 1644fb2473 chronovu-la8: use driver-private storage for instances 2012-08-03 11:29:00 +02:00
Bert Vermeulen 0e1357e896 asix-sigma: use driver-private storage for instances 2012-08-03 11:29:00 +02:00
Bert Vermeulen dc9dbe949a fx2lafw: use driver-private storage for instances and libusb_context 2012-08-03 11:29:00 +02:00
Bert Vermeulen 269971ddce hantek-dso: use driver-private storage for instances and libusb_context 2012-08-03 11:29:00 +02:00
Bert Vermeulen 6f57fd9694 sr: remove obsolete SR_DI_INST 2012-08-03 11:29:00 +02:00
Bert Vermeulen 87ca93c504 sr/drivers: add proper probe list to instances of all drivers 2012-08-03 11:29:00 +02:00
Bert Vermeulen b35c829306 sr/drivers: fix off-by-one if frontend-initiated probe configuration 2012-08-03 11:29:00 +02:00
Bert Vermeulen 9e90dcba9c sr/drivers: remove driver API call dev_status_get()
It's obsolete: no frontend ever used it, and neither did libsigrok.
The sdi->status field is only used internally by some drivers, and
should probably be moved to the driver-specific context structs.
2012-08-03 11:27:31 +02:00
Bert Vermeulen 5d9ed643e9 ols: change driver dev_acquisition_start/_stop calls to use sdi
...yeah, forgot OLS.
2012-08-03 11:27:31 +02:00
Bert Vermeulen c4a1de59f8 genericdmm: cosmetic change 2012-08-03 11:27:31 +02:00
Bert Vermeulen 3f848bb7a9 zeroplus: comment out 32-probe models for now 2012-08-03 11:27:31 +02:00
Bert Vermeulen 428edbe13d zeroplus-logic-cube: fix scan to correctly find model 2012-08-03 11:27:31 +02:00
Bert Vermeulen 3ffb6964a1 sr/drivers: change driver dev_acquisition_start/_stop calls to use sdi 2012-08-03 11:27:31 +02:00
Bert Vermeulen 25a0f108f4 sr/drivers: change driver dev_open/dev_close calls to use sdi 2012-08-03 11:27:31 +02:00
Bert Vermeulen 6f4b1868e8 sr/drivers: use sr_dev_inst instead of device index for dev_config_set()
All driver API calls using device index as a parameter will instead use a
const struct sr_dev_inst.
2012-08-03 10:27:39 +02:00
Bert Vermeulen 9c4311c524 chronovu-la8: adjust to multi-vid/pid patch 2012-08-03 10:27:39 +02:00
Bert Vermeulen 444adea232 zeroplus-logic-cube: don't use deprecated hwcap_get_all() driver API call 2012-08-03 10:27:39 +02:00
Bert Vermeulen 2ca4465b3d ols: don't use deprecated hwcap_get_all() driver API call 2012-08-03 10:27:39 +02:00
Bert Vermeulen 2ce9f04629 hantek-dso: don't use deprecated hwcap_get_all() driver API call 2012-08-03 10:27:39 +02:00
Bert Vermeulen cbd798f400 fx2lafw: don't use deprecated hwcap_get_all() driver API call 2012-08-03 10:27:39 +02:00
Bert Vermeulen 46c7a4daa7 demo: don't use deprecated hwcap_get_all() driver API call 2012-08-03 10:27:39 +02:00
Bert Vermeulen 7566601c21 chronovu-la8: don't use deprecated hwcap_get_all() driver API call 2012-08-03 10:27:39 +02:00
Bert Vermeulen b2b5445c30 asix-sigma: don't use deprecated hwcap_get_all() driver API call 2012-08-03 10:27:39 +02:00
Bert Vermeulen 2efc5948b6 ols: scan fix 2012-08-03 10:27:39 +02:00
Bert Vermeulen b0c8d7ac7f hantek-dso: scan/info_get fixes 2012-08-03 10:27:39 +02:00
Bert Vermeulen 7dfcf010a0 demo: scan/info_get fixes 2012-08-03 10:27:39 +02:00
Bert Vermeulen cfe8a84dd7 chronovu-la8: scan/info_get fixes 2012-08-03 10:27:39 +02:00
Bert Vermeulen d7bbecfdb9 asix-sigma: scan/info_get fixes 2012-08-03 10:27:39 +02:00
Bert Vermeulen 626409abfb zeroplus-logic-cube: use new driver info_get() API call 2012-08-03 10:27:38 +02:00
Bert Vermeulen dddfb3dbf0 ols: use new driver info_get() API call 2012-08-03 10:27:38 +02:00
Bert Vermeulen 0b79bcbb9d hantek-dso: use new driver info_get() API call 2012-08-03 10:27:38 +02:00
Bert Vermeulen dfb0fa1a66 demo: use new driver info_get() API call 2012-08-03 10:27:38 +02:00
Bert Vermeulen 6a2761fd99 chronovu-la8: use new driver info_get() API call 2012-08-03 10:27:38 +02:00
Bert Vermeulen 4147960558 asix-sigma: use new driver info_get() API call 2012-08-03 10:27:38 +02:00
Bert Vermeulen eec944c5b8 asix-sigma: don't attempt to free static struct
Added more debugging as well.
2012-08-03 10:27:38 +02:00
Bert Vermeulen 067d07166b demo: use new scan API 2012-08-03 10:27:38 +02:00
Bert Vermeulen 7da6f9d54a 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.
2012-08-03 10:27:38 +02:00
Bert Vermeulen 4ca3898445 zeroplus-logic-cube: use new scan API 2012-08-03 10:27:38 +02:00
Bert Vermeulen 39cfdd75f9 hantek-dso: use new scan API 2012-08-03 10:27:38 +02:00
Bert Vermeulen 0448d11097 asix-sigma: use new scan API + fixes
Now freeing FTDI context and driver-private context.
2012-08-03 10:27:38 +02:00
Bert Vermeulen c4f3ed4bb0 chronovu-la8: use new scan API + fixes
Now freeing FTDI context and driver-private context.
2012-08-03 10:27:38 +02:00
Bert Vermeulen f8c617cf4c hantek-dso: instance list fix 2012-08-03 10:27:38 +02:00
Bert Vermeulen 10e5cbede8 ols: use new scan API 2012-08-03 10:27:38 +02:00
Bert Vermeulen ed300b9f6a asix-sigma: use driver struct-based device instance list 2012-08-03 10:27:38 +02:00
Bert Vermeulen 765ef2f725 chronovu-la8: use driver struct-based device instance list 2012-08-03 10:27:38 +02:00
Bert Vermeulen dcf03d6dbd demo: use driver struct-based device instance list 2012-08-03 10:27:38 +02:00
Bert Vermeulen 3275654708 zeroplus-logic-cube: use driver struct-based device instance list 2012-08-03 10:27:38 +02:00
Bert Vermeulen 982947f7a2 hantek-dso: use driver struct-based device instance list 2012-08-03 10:27:38 +02:00
Bert Vermeulen e5e81856b4 ols: use driver struct-based device instance list 2012-08-03 10:27:38 +02:00
Bert Vermeulen d6db79a48c genericdmm: device scan fixes 2012-08-03 10:27:38 +02:00
Bert Vermeulen f1a14ea7ab genericdmm: don't use deprecated hwcap_get_all() driver API call 2012-08-03 10:27:37 +02:00
Bert Vermeulen 6910bf6bf6 genericdmm: use new driver info_get() API call 2012-08-03 10:27:37 +02:00
Bert Vermeulen a27999e657 fx2lafw: don't use deprecated hwcap_get_all() driver API call 2012-08-03 10:27:37 +02:00
Bert Vermeulen c5e82ca5e3 fx2lafw: device scan fixes 2012-08-03 10:27:37 +02:00
Bert Vermeulen f69b47f0f8 fx2lafw: a device scan always invalidates any previous scans 2012-08-03 10:27:37 +02:00
Bert Vermeulen 6e9339aae2 fx2lafw: use new driver info_get() API call 2012-08-03 10:27:37 +02:00
Bert Vermeulen 3a0fe4023d genericdmm: use new scan API 2012-08-03 10:27:37 +02:00
Bert Vermeulen bbb40871c8 genericdmm: more flexible device discovery 2012-08-03 10:27:37 +02:00
Bert Vermeulen 75337758d8 genericdmm: use driver struct-based device instance list 2012-08-03 10:27:37 +02:00
Bert Vermeulen a8cc8e44b9 fx2lafw: use driver struct-based device instance list 2012-08-03 10:27:37 +02:00
Bert Vermeulen 06717a8a60 fx2lafw: use new instance-based probe list 2012-08-03 10:27:37 +02:00
Bert Vermeulen 3a7a22cb07 fx2lafw: use new init/scan API 2012-08-03 10:27:37 +02:00
Bert Vermeulen 633b2fac75 genericdmm: better subdriver API arguments 2012-08-03 10:27:37 +02:00
Bert Vermeulen 1ef445b3d6 genericdmm/fs9922: no initialization needed 2012-08-03 10:27:36 +02:00
Bert Vermeulen 7fc754a0db genericdmm: allow for default options in DMM profiles
Much better than the special-cased USB vid.pid
2012-08-03 10:27:36 +02:00
Bert Vermeulen 7356a55db8 genericdmm: use vid.pid as USB conn spec
: is just too hard for the CLI
2012-08-03 10:27:36 +02:00
Bert Vermeulen db1352007d genericdmm: fix header guard 2012-08-03 10:27:36 +02:00
Bert Vermeulen 61136ea603 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.
2012-08-03 10:27:36 +02:00
Bert Vermeulen 40dda2c3a5 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.
2012-08-03 10:27:36 +02:00
Ivan Fedorov 0e8d0e24d0 sr: fx2lafw: Add 16bit support for USBee DX and clones
gnuplot script support only 8 channels
2012-08-03 00:25:37 +02:00
Ivan Fedorov c9166745f2 sr: fx2lafw: Add basic support for USBee DX and clones 2012-08-01 00:12:00 +04:00
Bert Vermeulen d67b663e21 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.
2012-07-24 00:53:01 +02:00
Uwe Hermann 74e5f12d3d sr: la8: Support for newer USB VID/PID of the device.
Thanks to Jerry Jacobs for the patch!
2012-07-15 00:34:27 +02:00
Uwe Hermann 43be303c84 sr: la8: Drop useless cast. 2012-07-12 23:23:13 +02:00
Uwe Hermann 615183ea16 sr: Drop mastech-va18b, code will be in genericdmm. 2012-07-11 12:57:15 +02:00
Bert Vermeulen 28b9dd1861 sr: fix conditional build for ezusb and serial helpers 2012-07-11 12:36:49 +02:00
Lars-Peter Clausen e6e8f8e053 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 <lars@metafoo.de>
2012-07-10 20:13:31 +02:00
Lars-Peter Clausen e7d087bf0e 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 <peter@stuge.se>
Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
2012-07-08 21:39:30 +02:00
Lars-Peter Clausen 249ae2be8f 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 <lars@metafoo.de>
2012-07-05 01:41:01 +02:00
Bert Vermeulen 45c59c8bdd 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.
2012-07-05 01:17:28 +02:00
Lars-Peter Clausen 8489264f1e 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 <lars@metafoo.de>
2012-07-04 01:11:50 +02:00
Lars-Peter Clausen 25f5d66a77 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 <lars@metafoo.de>
2012-07-04 01:11:50 +02:00
Lars-Peter Clausen c03f045004 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 <lars@metafoo.de>
2012-07-04 01:11:50 +02:00
Lars-Peter Clausen 0caa1ef0cb 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 <lars@metafoo.de>
2012-07-04 01:11:50 +02:00
Bert Vermeulen ca3d84cca1 sr: add genericdmm driver 2012-07-01 22:37:15 +02:00
Bert Vermeulen f8c1fcda46 sr: use proper definitions for parity setting
ols driver fixed to use these as well.
2012-07-01 22:31:31 +02:00
Uwe Hermann 163f0523f6 sr: Mastech VA18B: Partial protocol supports (WIP).
Disable the driver for now, as it's not usable for the general public, yet.
2012-06-28 22:57:03 +02:00
Uwe Hermann 99f5d45ecc sr: hantek-dso: Fix copy-paste error. 2012-06-28 01:47:38 +02:00
Lars-Peter Clausen 2769eed991 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 <lars@metafoo.de>
2012-06-28 00:40:52 +02:00
Lars-Peter Clausen 5af666a94e 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 <lars@metafoo.de>
2012-06-28 00:40:52 +02:00
Lars-Peter Clausen 7ce737a77c 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 <lars@metafoo.de>
2012-06-28 00:40:52 +02:00
Lars-Peter Clausen 17dff8a1e6 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 <lars@metafoo.de>
2012-06-28 00:40:51 +02:00
Lars-Peter Clausen f855de7575 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 <lars@metafoo.de>
2012-06-28 00:40:51 +02:00
Lars-Peter Clausen bd47acabe3 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 <lars@metafoo.de>
2012-06-28 00:40:51 +02:00