libgpiod v1.4.3 =============== Bug fixes: - relax gpiod_chip_open() for symbolic links libgpiod v1.4.2 =============== Bug fixes: - fix the major:minor number comparison between the device and sysfs - drop noexcept from direction() and active_state() in C++ bindings - fix a segfault when calling Line.request() in Python bindings libgpiod v1.4.1 =============== Bug fixes: - fix GCC8 warnings when building python bindings - fix a bug in gpioinfo where lines used by the kernel without any consumer string were reported as unused - fix a bug in line::event_get_fd() in C++ bindings where the exception wouldn't be throws in error cases due to a missing 'throw' keyword - fix a couple bugs in the test-suite - disable a failing assertion in the test-suite that stopped working after linux v5.2.7 libgpiod v1.4 ============= New features: - updated the testing framework to work with linux v5.1 in which the debugfs interface of the GPIO testing module changed in a backward incompatible way - factored out the code controlling the GPIO testing module into a separate shared library that may be reused by future testing executables for different language bindings - removed the --enable-install-tests build option and the make check target as they were redundant, subsequently tests are now installed as a normal program whenever they're enabled with --enable-tests Improvements: - removed unnecessary std::move calls from C++ bindings - added the explicit keyword to bool() operators in C++ bindings Bug fixes: - fix out of source build of man pages libgpiod v1.3 ============= New features: - the gpio-tools now have automatically generated (using help2man) man pages that are bundled with the release tarball - support a singular 'default_val' argument in Line.request() in python bindings - the test executable can now be installed to the bindir along with the gpio-tools and the testing framework will look for the binaries in standard locations if it's not run from the top source directory - gpiomon now supports line buffered output Improvements: - tweaks to the C API documentation - treewide unification of the naming of local variables - extended helptest in gpioset (explanation of the way the character device works aimed at reducing user confusion when a GPIO line reverts to its default value after gpioset exits) - the source directories have been rearranged and the src/ directory was dropped, lib/ and tools/ now live in the top source directory - minor coding style fixes in python bindings, ctxless functions and tools - automatically generated documentation is now removed by 'make clean' - all Makefiles now use top_builddir instead of relative paths - code shrink in configure.ac - add a brief section about API documentation to README Bug fixes: - fix a segfault causing bug in C++ bindings - make bitset_cmp::operator() const as this is required by C++17 - ignore 'remove' events from udev in the testing framework - don't segfault on num_lines = 0 in ctxless functions libgpiod v1.2 ============= New features: - new contextless event monitor that should replace the previous event loop which caused problems on hardware that doesn't allow to watch both rising and falling edge events - port gpiomon to the new event monitor - deprecate event loop routines Improvements: - many minor improvements and tweaks in the python module - new test cases for python bindings - add much more detailed documentation for python bindings - coding style improvements in gpio-tools - remove unicode characters from build scripts - improve the help text messages in gpio-tools - make gpiod_chip_open() and its variants verify that we're really trying to open a character device associated with a GPIO chip Bug fixes: - fix memory leaks in python bindings - fix a memory corruption bug in python bindings - fix the default_vals argument in line request implementation in python bindings - fix a compilation warning in python bindings - fix gpiod_Chip_find_lines() for nonexistent lines (python bindings) - add a missing include in C++ bindings examples - correctly display the version string in gpio-tools libgpiod v1.1 ============= New features: - add object-oriented C++ bindings - add object-oriented Python3 bindings - add several new helpers to the C API Improvements: - start using separate versioning schemes for API and ABI - use SPDX license identifiers and remove LGPL boilerplate - check for unexpanded macros in configure.ac Bug fixes: - include Doxyfile in the release tarball - fix the implicit-fallthrough warnings - make tests work together with gpio-mockup post v4.16 linux kernel - use reference counting for line file descriptors - correctly handle POLLNVAL when polling for events - fix the copyright notice in tools libgpiod v1.0 ============= NOTE: This is a major release - it breaks the API compatibility with the 0.x.y series. New features: - remove custom error handling in favor of errnos - merge the two separate interfaces for event requests and regular line requests - redesign the simple API - change the prefix of the high-level API from 'simple' to 'ctxless' (for contextless) which better reflects its purpose - redesign the iterator API - make use of prefixes more consistent - rename symbols all over the place - various minor tweaks - add support for pkg-config Improvements: - add a bunch of helpers for line requests - split the library code into multiple source files by functionality - re-enable a test case previously broken by a bug in the kernel Bug fixes: - correctly handle signal interrupts when polling in gpiod_simple_event_loop() - fix the linking order when building with static libraries - pass the correct consumer string to gpiod_simple_get_value_multiple() in gpioget - fix a line test case: don't use open-drain or open-source flags for input mode - fix the flags passed to ar in order to supress a build warning - set the last error code in gpiod_chip_open_by_label() to ENOENT if a chip can't be found - fix checking the kernel version in the test suite - fix various coding style issues - initialize the active low variable in gpiomon libgpiod v0.3 ============= New features: - gpiomon can now watch multiple lines at the same time and supports custom output formats which can be specified using the --format argument - testing framework can now test external programs: test cases for gpio-tools have been added Improvements: - improve error messages - improve README examples - configure script improvements Bug fixes: - use correct UAPI flags when requesting line events - capitalize 'GPIO' in error messages in gpioset, gpioget & gpiomon - tweak the error message on invalid arguments in gpiofind - don't ignore superfluous arguments and fix the displayed name for falling edge events in gpiomon libgpiod v0.2 ============= New features: - relicensed under LGPLv2.1 - implemented a unit testing framework together with a comprehensive set of test cases - added a non-closing variant of the gpiochip iterator and foreach macro [by Clemens Gruber] - added gpiod_chip_open_by_label() Improvements: - Makefiles & build commands have been reworked [by Thierry Reding] - documentation updates - code shrinkage here and there - coding style fixes - removed all designated initializers from the header for better standards compliance Bug fixes: - fix the return value of gpiod_simple_event_loop() - don't try to process docs if doxygen is not installed - pass the O_CLOEXEC flag to open() when opening the GPIO chip device file - include instead of in gpioset - fix a formatting issue in gpioinfo for chips with >100 GPIO lines - fix a bug when requesting both-edges event notifications - fix short options in gpiomon (short opt for --silent was missing) - correct the kernel headers requirements in README - include for struct timespec - include instead of - detect the version of strerror_r() libgpiod v0.1 ============= First version of libgpiod. It's currently possible to: - get and set the values of multiple GPIO lines with a single function call - monitor a GPIO line for events - enumerate all GPIO chips present in the system - enumerate all GPIO lines exposed by a chip - extract information about GPIO chips (label, name, number of lines) - extract information about GPIO lines (name, flags, state, user) Tools provided with the library are: - gpioget - read values from GPIO lines - gpioset - set values of GPIO lines - gpiodetect - list GPIO chips - gpioinfo - print info about GPIO lines exposed by a chip - gpiomon - monitor a GPIO line for events - gpiofind - find a GPIO line by name