SQ50 patches for libsigrok
Go to file
Gerhard Sittig d7a4dad881 rdtech-dps: layer separation between API and protocol, style nits
The existing power supply driver for Riden DPS/DPH devices unfortunately
duplicated intimate details of modbus communication and register layout
including interpretation of raw register values across several source
files. Do separate the physical transport and the register layout and
register fields interpretation layers. This brings the driver in line
with the usual api.c and protocol.c arrangement of responsibilities, and
prepares the future addition of other similar devices.

Address a few style nits while we are here. Include <config.h> in all
source files, and alpha-sort include directives. Address minor data type
nits. Reduce indentation in code paths. Propagate more error codes.
Update comments which lagged behind the code, adjust grammer (eliminate
"actual" false friends). Eliminate a few magic numbers and redundancies,
switch to the more recent endianess aware byte stream reader API where
beneficial, to eliminate redundant offset math.

Other nits seem to have gone unnoticed before: The indices of all sigrok
channels were identical (all zero). Signed print formats were used for
unsigned data.

This implementation compiles, but wasn't runtime tested due to lack of
hardware. A rough estimate of transfer volume and transport throughput
suggests that the 10ms cycle time no longer can be kept, may end up
around 25ms (40 cycles per second). This can get avoided by adding more
code to tell the configuration requests, the acquisition start, and the
measurements grabbing during acquisition apart. It's assumed though that
the 10ms glib poll interval did not translate to such fast measurement
gathering. The firmware may typically provide data at lower rates anyway.

The generic source code may look overly complicated or redundant at
first glance, but compilers' generated code will greatly get optimized.
Simplified maintenance because of reduced cognitive load is considered
more important.
2021-04-25 12:10:22 +02:00
bindings Amend #119 to use vector instead of tuple 2021-03-28 23:17:17 +02:00
contrib udev: Add Rigol DG800 and DG900 series VID/PID. 2020-10-04 13:00:28 +02:00
include/libsigrok Add device type SR_CONF_MULTIPLEXER. 2021-04-24 16:47:06 +02:00
m4 build: Replace AX_CXX_COMPILE_STDCXX_11 with latest AX_CXX_COMPILE_STDCXX 2016-05-14 00:36:43 +02:00
src rdtech-dps: layer separation between API and protocol, style nits 2021-04-25 12:10:22 +02:00
tests tests: extend endianess conversion tests to also cover the 48bit writer 2021-03-16 21:26:35 +01:00
.gitignore gitignore nano and vim swap files 2017-07-04 12:18:03 +02:00
AUTHORS autotools: Don't use "foreign" option. 2013-03-17 13:15:56 +01:00
COPYING sr/srd: Move some files to their resp. dirs. 2011-12-30 11:14:05 +01:00
ChangeLog build: Make ChangeLog generation distcheck-safe 2015-11-07 21:51:40 +01:00
Doxyfile Doxyfile: Predefine HAVE_SERIAL_COMM for serial docs. 2020-03-25 19:38:19 +01:00
Doxyfile_internal Doxyfile_internal: Fix various settings and paths. 2020-03-25 19:38:48 +01:00
HACKING Doxygen: Properly mark a few symbols as private. 2020-03-25 20:10:24 +01:00
Makefile.am hp-59306a: Initial driver skeleton. 2021-04-24 16:47:06 +02:00
NEWS Consistently use the "Sysclk" spelling everywhere. 2019-04-24 18:23:41 +02:00
README configure: Add optional TI-RPC dependency, unbreak VXI communication. 2020-10-09 18:50:58 +02:00
README.devices doc: update README.devices for Meterman 38XR (RS232 button) 2021-01-05 18:17:45 +01:00
autogen.sh Build: Reduce autogen.sh to a trivial stub 2015-08-24 20:13:42 +02:00
configure.ac hp-59306a: Initial driver skeleton. 2021-04-24 16:47:06 +02:00
libsigrok.pc.in Update the pkg-config (.pc) entry for libsigrok. 2019-07-26 00:10:35 +02:00

README

-------------------------------------------------------------------------------
README
-------------------------------------------------------------------------------

The sigrok project aims at creating a portable, cross-platform,
Free/Libre/Open-Source signal analysis software suite that supports various
device types (such as logic analyzers, oscilloscopes, multimeters, and more).

libsigrok is a shared library written in C which provides the basic API
for talking to hardware and reading/writing the acquired data into various
input/output file formats.


Status
------

libsigrok is in a usable state and has had official tarball releases.

While the API can change from release to release, this will always be
properly documented and reflected in the package version number and
in the shared library / libtool / .so-file version numbers.

However, there are _NO_ guarantees at all for stable APIs in git snapshots!
Distro packagers should only use released tarballs (no git snapshots).


Requirements
------------

Requirements for the C library:

 - git (only needed when building from git)
 - gcc (>= 4.0) or clang
 - make
 - autoconf >= 2.63 (only needed when building from git)
 - automake >= 1.11 (only needed when building from git)
 - libtool (only needed when building from git)
 - pkg-config >= 0.22
 - libglib >= 2.32.0
 - libzip >= 0.10
 - libtirpc (optional, used by VXI, fallback when glibc >= 2.26)
 - libserialport >= 0.1.1 (optional, used by some drivers)
 - librevisa >= 0.0.20130412 (optional, used by some drivers)
 - libusb-1.0 >= 1.0.16 (optional, used by some drivers)
 - hidapi >= 0.8.0 (optional, used for some HID based "serial cables")
 - bluez/libbluetooth >= 4.0 (optional, used for Bluetooth/BLE communication)
 - libftdi1 >= 1.0 (optional, used by some drivers)
 - libgpib (optional, used by some drivers)
 - libieee1284 (optional, used by some drivers)
 - libgio >= 2.32.0 (optional, used by some drivers)
 - check >= 0.9.4 (optional, only needed to run unit tests)
 - doxygen (optional, only needed for the C API docs)
 - graphviz (optional, only needed for the C API docs)

Requirements for the C++ bindings:

 - libsigrok >= 0.4.0 (the libsigrok C library, see above)
 - A C++ compiler with C++11 support (-std=c++11 option), e.g.
   - g++ (>= 4.8.1)
   - clang++ (>= 3.3)
 - autoconf-archive (only needed when building from git)
 - doxygen (required for building the bindings, not only for C++ API docs!)
 - graphviz (optional, only needed for the C++ API docs)
 - Python (2 or 3) executable (development files are not needed)
 - glibmm-2.4 (>= 2.32.0)

Requirements for the Python bindings:

 - libsigrokcxx >= 0.4.0 (the libsigrok C++ bindings, see above)
 - Python >= 2.7 or Python >= 3 (including development files!)
 - Python setuptools (for Python 2 or 3)
 - pygobject >= 3.0.0 (for Python 2 or 3), a.k.a python-gi
 - numpy (for Python 2 or 3)
 - SWIG >= 2.0.0
 - doxygen (optional, only needed for the Python API docs)
 - graphviz (optional, only needed for the Python API docs)
 - doxypy (optional, only needed for the Python API docs)

Requirements for the Ruby bindings:

 - libsigrokcxx >= 0.4.0 (the libsigrok C++ bindings, see above)
 - Ruby >= 2.5.0 (including development files!)
 - SWIG >= 3.0.8
 - YARD (optional, only needed for the Ruby API docs)

Requirements for the Java bindings:

 - libsigrokcxx >= 0.4.0 (the libsigrok C++ bindings, see above)
 - SWIG >= 2.0.0
 - Java JDK (for JNI includes and the javac/jar binaries)
 - doxygen (optional, only needed for the Java API docs)
 - graphviz (optional, only needed for the Java API docs)


Building and installing
-----------------------

In order to get the libsigrok source code and build it, run:

 $ git clone git://sigrok.org/libsigrok
 $ cd libsigrok
 $ ./autogen.sh
 $ ./configure
 $ make

For installing libsigrok:

 $ make install

See INSTALL or the following wiki page for more (OS-specific) instructions:

 http://sigrok.org/wiki/Building

Please also check the following wiki page in case you encounter any issues:

 http://sigrok.org/wiki/Building#FAQ


Device-specific issues
----------------------

Please check README.devices for some notes and hints about device- or
driver-specific issues to be aware of.


Firmware
--------

Some devices supported by libsigrok need a firmware to be uploaded before the
device can be used. See README.devices for details.


Copyright and license
---------------------

libsigrok is licensed under the terms of the GNU General Public License
(GPL), version 3 or later.

While some individual source code files are licensed under the GPLv2+, and
some files are licensed under the GPLv3+, this doesn't change the fact that
the library as a whole is licensed under the terms of the GPLv3+.

Please see the individual source files for the full list of copyright holders.


Mailing list
------------

 https://lists.sourceforge.net/lists/listinfo/sigrok-devel


IRC
---

You can find the sigrok developers in the #sigrok IRC channel on Freenode.


Website
-------

 http://sigrok.org/wiki/Libsigrok