greatfet: first operational GreatFET One driver implementation This sigrok driver for the GreatFET One device as a logic analyzer is based on https://github.com/Qyriad/libsigrok and was massaged to use common infrastructure where appropriate, and adjust coding style to match the sigrok.org project's code base. This implementation supports the acquisition of 8 channels at rates up to 40.8MHz, and higher rates up to 204MHz for reduced channel counts. Soft triggers are not supported in this implementation, ideally common support would cover this more transparently in the future. Tested with v2021.2.1 firmware as available via 'pip install greatfet'. Support for 16 channels is prepared but disabled by default. Requires firmware support which is not officially available.
juntek-jds6600: implement device support, tested with Joy-IT JDS6600 Implement support for the essential signal generator part of the device, tested with a 60MHz Joy-IT JDS6600 model: Two channels, enable/disable, waveform, frequency, amplitude, offset, duty cycle selection, phase between channels. This version does not support external signals and frequency measurement nor counting. Upload/download of arbitrary waveforms could work from the serial communication's perspective, but sigrok lacks infrastructure/API for waveform exchange or communication of blobs. Tested with sigrok-cli and getters/setters. Quickly tested with SmuView.
tcp: check for poll(2) and select(2), workaround for shutdown(2) API The poll(2) API is not universally available. Check for its presence before referencing it. Fallback to select(2) in its absence. Check for the availability of select(2) as well. If neither is available, there is no (portable) way of checking a file descriptor's readability. The SHUT_RDWR identifier is not available in winsock. But a different symbol with identical meaning is available. Use it as a fallback. This amends commit fcab496c12b2 which introduced common TCP support.
devantech-eth008: first driver implementation, relay output only Implement common support code to communicate raw binary requests and responses over TCP sockets, and ETH008 specific requests to control up to 8 relays as well as getting the card's supply voltage. Other cards with differing channel counts, and with features beyond relay control, have not been available during creation of this driver. Their addition is prepared but untested. Password protection is not implemented, but outlined in developer comments.
make: move version suffix gathering from configure to compile time Check at configure time whether version control is available. Determine at configure time which branch is being worked on, and re-configure when the branch changes. Append "-git" to the package version when the source tree is not tagged at configure time. Get revision numbers and the dirty flag at compile time. Check whether the source code revision exactly matches a tag at compile time. Derive the version suffix from these details. Generate a git-version.h header file which only the version.c source file references. This embeds detailled version information into the library, where it is available at runtime for the library and for applications. And severely speeds up development iterations by avoiding full rebuilds of the whole library when a git commit happened. The dirty flag may either require a manual reconfiguration, or 'make version-clean', if that workspace state is not automatically picked up. Which is considered acceptable for now, because builds for distribution should always start with the configure phase anyway. This uncertainty could only get avoided at the cost of always creating the git-version.h header file in every build invocation. Which would be easy to achieve, but remains for a future commit. The approach was outlined by Martin Ling in 2018-09, see bug #1283. This implementation additionally handles out-of-source builds, uses positive logic for the header inclusion, and handles distribution builds from tarballs or other non-versioned sources (assumes an empty suffix then). Could also handle other sources of version details, or alternative VCS implementations, thus passes more variables than strictly necessary from configuration to compilation.
configure.ac: put spaces around version operators in pkg-config requires Putting a library name and its version as one bare word on the Requires: line without spaces around the operators makes application builds fail because the library isn't found. This amends commit b0b139d914b9.
configure.ac: glibmm check, add quotes to version string Add quotes where glibmm version requirements are concatenated while the strings contain ">=" relational operators. Avoid processing incomplete text, and the creation of undesired files in the build output. Amends commit ee9e086f1d6c.
icstation-usbrelay: Initial ICStation USBRelay driver. Implement support for several ICStation USBRelay models with 2, 4, and 8 channels. Allows to identify the cards after power-on, and subsequent relay control. IMPORTANT: An implementation detail in the vendor firmware prevents the host application from identifying the device after entering command mode. Identification will fail, and the identification request instead gets mistaken for another relay control request (turns on relays 1-4, 6, 8). A power cycle is required before the host application can reconnect to the device.
configure: Accept glibmm-2.68 as an alternative to glibmm-2.4 Check for both glibmm-2.4 as well as glibmm-2.68. Prefer the former when either is available, to remain backwards compatible. This unbreaks builds on OS X with homebrew where only glibmm-2.68 is available. Implementor's note: It's yet to get determined whether glibmm-2.68 is to get preferred, being the first stable release of that external dependency. https://gitlab.gnome.org/GNOME/glibmm/-/blob/2.68.2/NEWS The commit is phrased to simplify future adjustment of this preference. This commit is based on work that was Submitted-By: Fabrice Fontaine <redacted>
configure.ac: check for highest available C++17/C++14/C++11 standard There are external libraries (boost, glibmm) as well as platforms (Mac OSX 12) which "require" C++ language standards above 11. Detect the highest available standard which is supported by the compiler. Use a "have modern C++" variable to improve robustness and readability of the C++ language standard check.
configure.ac: consider libusb_os_handle absence non-fatal on Windows Keep checking for the libusb_os_handle data type's presence, but don't consider its absence on Windows fatal. Recent mainline libusb provides something similar to the event abstraction branch under the common API. Assume that it's the integrators' or packagers' responsibility to either use a recent library or a patched older library for sigrok builds. All other non-Windows platforms remain unaffected, the presence check never was fatal there. The data type check itself needs to remain in place because the usb.c source code adjusts to its presence.