Commit Graph

705 Commits

Author SHA1 Message Date
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