* v2.5.0 - 11/02/2025 * MMIO * Add `read64()` and `write64()` APIs. * SPI * Add `spi_transfer_advanced()` API for transferring multiple messages, with optional deselect between messages, deselect delay, and word delay. * GPIO * Add open configuration, getters, and setters for event clock. * Add open configuration, getters, and setters for debounce period. * LED * Add getter and setter for trigger. * Add `led_get_triggers_entry()` and `led_get_triggers_count()` APIs for querying triggers list. * Build * Add shared library target to Makefile. * Use . for shared library SONAME under CMake. * v2.4.3 - 02/28/2025 * Fix memory safety with some older `strerror_r()` implementations in error formatters for all modules. * Build * Fix character device GPIO support tests in Makefile for alternate shells and older versions of make. * Fix cross-compilation in Makefile from Windows. * Fix CMake minimum required version. * Add CMake package generation. * Contributors * Ryan Barnett, @rjbarnet - ec31b39 * javalikescript, @javalikescript - 024a25d * HopeCollector, @HopeCollector - aca6815, b5e53e6 * v2.4.2 - 07/05/2023 * GPIO * Fix building under Linux kernel headers missing realtime event timestamp support in the gpio-cdev v2 ABI. * v2.4.1 - 04/21/2023 * GPIO * Fix realtime timestamp reporting for line events in gpio-cdev v2 implementation. * v2.4.0 - 03/31/2023 * GPIO * Add support for gpio-cdev v2 ABI. * v2.3.1 - 01/05/2021 * SPI * Fix compilation error and unused variable/parameter warnings when building under Linux kernel headers without 32-bit SPI mode flags support. * Contributors * Ryan Barnett, @rjbarnet - 708f7fe, 21c1b7a * v2.3.0 - 12/16/2020 * MMIO * Add advanced open function with device path for use with alternate memory character devices (e.g. `/dev/gpiomem`). * SPI * Add getter and setter for 32-bit extra flags. * Add advanced open function with 32-bit extra flags. * Build * Enable unused parameter warning. * Contributors * Rémy Dziemiaszko, @remdzi - b8adb42 * v2.2.5 - 11/19/2020 * GPIO * Add direction checks for improved error reporting to `gpio_write()`, `gpio_read_event()`, and `gpio_poll()` for character device GPIOs. * Improve string handling in `gpio_open()` and in getters for sysfs and character device GPIOs. * LED * Improve string handling in `led_open()` and `led_name()`. * Build * Add default optimization to CFLAGS in Makefile. * Add debug and release CFLAGS to CMakeLists.txt. * v2.2.4 - 09/11/2020 * Fix future spurious close caused by uncleared handle state after an error during open in GPIO, I2C, SPI, Serial, and MMIO modules. * v2.2.3 - 09/03/2020 * GPIO * Disable character device GPIO support when building with older Linux kernel headers missing line event support in the gpio-cdev ABI. * SPI * Fix formatted bits per word truncation in `spi_tostring()`. * Build * Add test for character device GPIO support in Linux kernel headers to Makefile. * Contributors * Fabrice Fontaine, @ffontaine - 5b81b89 * v2.2.2 - 07/24/2020 * GPIO * Add conditional compilation of character device GPIO support to allow build under older Linux kernel headers. * Increase feature test macro version to fix missing definition warnings. * Build * Fix directory paths for pkg-config pc file generation and installation under CMake. * Fix COMMIT_ID identification when building within a parent git repository under CMake. * Add CMake build option for tests. * Contributors * oficsu, @oficsu - 80bc63d * Ryan Barnett, @rjbarnet - ea1e0da, 05262e6, 50fcd0a * Fabrice Fontaine, @ffontaine - caadb46 * v2.2.1 - 05/31/2020 * GPIO * Add feature test macro for POLLRDNORM flag to fix build with uClibc. * Fix argument name in prototype for `gpio_set_bias()`. * Contributors * Joris Offouga, @jorisoffouga - cfc722e * v2.2.0 - 05/29/2020 * GPIO * Add `gpio_poll_multiple()` function. * Add getter for line consumer label. * Add getters and setters for line bias, line drive, and inverted properties. * Add advanced open functions with additional properties for character device GPIOs. * Only unexport GPIO in `gpio_close()` if exported in `gpio_open_sysfs()` for sysfs GPIOs. * Add retry loop to direction write after export to accommodate delayed udev permission rule application in `gpio_open_sysfs()` for sysfs GPIOs. * Improve wording and fix typos in documentation. * Serial * Add getters and setters for vmin and vtime termios settings. * Add support for termios timeout with `serial_read()`. * Improve wording in documentation. * Build * Add CMake build support. * Add pkg-config pc file generation. * Contributors * Joris Offouga, @jorisoffouga - 952e1e9, 671e618 * v2.1.0 - 01/07/2020 * Add LED module. * Add PWM module. * Clean up internal string handling in SPI and GPIO modules. * v2.0.1 - 10/08/2019 * Initialize handle state in new functions of all modules. * Fix performance of blocking read in `serial_read()`. * Return error on unexpected empty read in `serial_read()`, which may be caused by a serial port disconnect. * Improve formatting of `spi_tostring()`. * Fix typo in GPIO module documentation. * Fix cross-compilation support in Makefile to allow override of CC variable. * v2.0.0 - 09/30/2019 * Add support for character device GPIOs (`gpio-cdev`) to the GPIO module. * Remove support for preserve direction in `gpio_open()`. * Remove problematic dummy read with sysfs GPIOs from `gpio_poll()`. * Unexport sysfs GPIOs in `gpio_close()`. * Migrate to opaque handles with new/free functions in all modules. * Simplify error codes for MMIO, I2C, and Serial modules. * Fix typos in GPIO module documentation. * Update tests with running hints for Raspberry Pi 3. * Improve cross-compilation support in Makefile. * Contributors * longsky, @wangqiang1588 - d880ef7 * jhlim, @johlim - 742d983 * v1.1.3 - 04/28/2018 * Fix data's most significant bit getting stripped when opening a serial port with parity enabled in `serial_open_advanced()`. * Contributors * Ryan Barnett, @rjbarnet - 537eeac * v1.1.2 - 04/01/2018 * Add handling for delayed pin directory export on some platforms in `gpio_open()`. * Fix supported functions query for 64-bit in `i2c_open()`. * Add support for building with C++. * Contributors * Jared Bents, @jmbents - 304faf4 * Ryan Barnett, @rjbarnet - 82ebb4f * v1.1.1 - 04/25/2017 * Fix blocking `gpio_poll()` for some platforms. * Add library version macros and functions. * Contributors * Михаил Корнилов, @iTiky - 0643fe9 * v1.1.0 - 09/27/2016 * Add support for preserving pin direction to `gpio_open()`. * Fix enabling input parity check in `serial_set_parity()`. * Fix enabling hardware flow control in `serial_set_rtscts()`. * Include missing header to fix build with musl libc. * Omit unsupported serial baudrates to fix build on SPARC. * Contributors * Thomas Petazzoni - 27a9552, 114c715 * v1.0.3 - 05/25/2015 * Fix portability of serial baud rate set/get with termios-provided baud rate functions. * Fix unlikely bug in `spi_tostring()` formatting. * Clean up integer argument signedness in serial API. * v1.0.2 - 01/31/2015 * Fix `gpio_supports_interrupts()` so it does not return an error if interrupts are not supported. * Fix `errno` preservation in a few error paths, mostly in the open functions. * v1.0.1 - 12/26/2014 * Improve Makefile. * Fix _BSD_SOURCE compilation warnings. * v1.0.0 - 05/15/2014 * Initial release.