Commit Graph

29 Commits

Author SHA1 Message Date
Janne Huttunen 6bcb3ee876 Add protocol decoder for Cyrustek ES51919 LCR meter chip.
Add a protocol decoder for the Cyrustek ES51919 LCR meter chip.
This chipset (together with ES51920 front-end) is supposedly used
by multiple different portable LCR meters including at least
DER EE DE-5000, Yihua V&A VA520, Mastech MS5308, Uni-T UT612,
CEM DT-9935 and various OEM rebadges of them.

The communication protocol seems to be implemented on the Cyrustek
chip itself so all the different models are expected to use the
same protocol if they implement a host connection. Unfortunately
the protocol is not available in the public documentation of the
chipset, so this implementation is based on reverse engineering it
from traffic captures.

The actual connection between the meter and the host computer may be
different from meter to meter even when based on the same chip. This
module implements a decoder for the protocol and some common helper
functions for interfacing with the meter via an RS-232 serial port.
2014-10-13 00:56:11 +02:00
Aurelien Jacobs 76bc5f6376 usb: Simplify usb_get_port_path() and fix writing into a const char *. 2014-10-12 19:36:11 +02:00
Bert Vermeulen c5cfc735e5 serial: Add serial_timeout().
This calculates a proper timeout value for blocking writes on the
given serial port, for the given number of bytes. Timeout is based
on a fixed 10ms OS overhead, baud rate, data bits and stop bits.
2014-10-06 12:10:25 +02:00
Martin Ling 9092e66888 Add a configurable read timeout to blocking SCPI reads, default 1s. 2014-10-03 13:40:41 +02:00
Martin Ling eead278242 Add a timeout parameter to blocking serial calls.
Set this new parameter to 0 (no timeout) at every call site. This is
consistent with previous behaviour, so cannot cause any regressions.

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

When this commit is merged, a bug should be entered for each driver
that is touched by it.
2014-10-02 22:06:16 +02:00
Bert Vermeulen 753793eff5 Clean up internal input API docs. 2014-09-30 01:49:58 +02:00
Bert Vermeulen d5cc282ff8 input: sr_input_free() is now a void function.
Its backend, input_module.cleanup(), is now also a void function.
2014-09-30 01:49:58 +02:00
Bert Vermeulen 7066fd4660 input: Add sr_input_end().
This signifies to the module instance no more input will come. This
will cause the module to process any data it may have buffered. The
SR_DF_END packet will also typically be sent at this time.
2014-09-30 01:49:58 +02:00
Bert Vermeulen d018181331 input: Add sdi_ready flag to struct sr_input.
When an input module instance has received enough input to fully
populate the struct sr_dev_inst, sdi_ready is set to TRUE and its
receive() method returns immediately. Any remaining received data
is buffered until the next time the function is called.
2014-09-30 01:49:58 +02:00
Soeren Apel 1b9e567b08 Removal of sdi->index, step 1: remove it from headers and helper funcs 2014-09-30 01:42:58 +02:00
Bert Vermeulen 8143cfdc90 Add sr_packet_copy/_free functions.
These will be used to make a copy of a packet on the session bus,
valid for the duration of the device instance that generated it.
2014-09-26 01:35:02 +02:00
Martin Ling 98edee7926 serial: Eliminate serial_read(), serial_write() and SERIAL_NONBLOCK. 2014-09-24 23:30:32 +02:00
Soeren Apel db156e5409 Add usb_get_port_path() helper function
There is currently no way to uniquely identify USB devices in
libsigrok. It uses the "bus.address" scheme which is only
constant as long as the device remains attached to the bus.
In order to allow USB device persistence in PulseView, devices
need to provide a unique identifier even in absence of a
serial number. This function is the first step as it provides
the ability to query the physical location of a USB device.
2014-09-24 00:40:03 +02:00
Uwe Hermann af945a6625 Typos and consistency fixes. 2014-09-19 01:03:32 +02:00
Bert Vermeulen 584560f142 Change type of SR_CONF keys to uint32_t. 2014-09-16 21:22:41 +02:00
Martin Ling 13fef1ed24 hwdriver: Validate types of GVariants passed by user. 2014-09-14 04:47:12 +01:00
Bert Vermeulen 4f979115a4 input: sr_input_scan_*() now return a status code.
SR_OK: a match was found.
SR_ERR: no match.
SR_ERR_DATA: a match was found but the module cannot handle the input.
SR_OK_CONTINUE: some module didn't have enough data to be sure.
2014-08-28 00:22:13 +02:00
Bert Vermeulen 5bf0dd6aff Add RB16S and RB32S (signed) macros.
Also note signedness of all the endian macros.
2014-08-26 22:45:38 +02:00
Bert Vermeulen d65fcbcd41 input: Fix internal API docs. 2014-08-26 01:55:41 +02:00
Bert Vermeulen 20e8882106 input: Frontends don't need to see SR_INPUT_META_*. 2014-08-26 01:55:41 +02:00
Bert Vermeulen 17bfaca62a input: Introduce new input module API.
This is a work in progress.
2014-08-26 01:55:41 +02:00
Bert Vermeulen d514d35dab input: make sr_input{_module} opaque to clients. 2014-08-26 01:55:41 +02:00
Bert Vermeulen 1685c27619 Avoid warnings on all-zero static struct entries. 2014-08-26 01:48:27 +02:00
Bert Vermeulen af7d656d37 output: Constify module options. 2014-08-15 20:24:00 +02:00
Bert Vermeulen 950043c30e output: Modules can keep track of option resources without wrapper help. 2014-08-02 19:20:00 +02:00
Janne Huttunen a24c3f4a89 Implement Brymen BM25x series as a serial DMM.
The Brymen BM25x series supports the BC-20X that is an opto-isolated
serial cable. The link seems to be unidirectional i.e. when activated
the DMM periodically sends updates to the host while the host cannot
control the DMM in any way.

The protocol is documented in "6000-count-digital-multimeters-r1.pdf"
that is available from the manufacturer. Every 15 byte packet consists
of a bitmap where the bits correspond to segments or symbols on the
LCD display i.e. the DMM essentially sends the contents of its screen
to the host in every update. This driver then decodes the measured
quantity, unit and its value from the bitmap.
2014-08-01 20:31:26 +02:00
Bert Vermeulen d686c5ec46 output: Rename instance private storage pointer to priv.
This makes it consistent with other libsigrok fields used for this purpose.
2014-07-28 16:02:21 +02:00
Bert Vermeulen a755b0e122 output: Finish output module API wrappers.
The sr_output and sr_output_module structs are now no longer accessible
from the client.
2014-07-26 03:57:17 +02:00
Bert Vermeulen 155b680da4 Reorganize project tree. 2014-07-22 18:19:29 +02:00
Renamed from libsigrok-internal.h (Browse further)