Release History Future Complete MAX30102 Tidy up ADS112C04 Tidy up IMU devices ST7735 / ST7789 displays Stepper motors Tidy up sampleapps with sub-packages as per diozero core (api, devices, motor, util, sbc, …) SPI support for Arduino devices over Firmata Waveshare 7.5” e-ink display Optimise GpioExpander when used for PWM output on multiple pins 1.3.2 (In progress) HD44780 cleanup - optimising use of GpioExpander interface plus added option to connect via GPIOs BBB - fix PWM module lookup for all PWM numbers Firmata scheduler support Garmin LIDAR Lite v4 VL6180 time of flight sensor Support multiple instances of remote device factories (pigpioJ, Firmata, gRPC) I2 C exceptions - throw an UnsupportedOperationException if the returned I2CFuncs indicate that the function isn’t support; remote I/O response aren’t retried 1.3.1 Fully removed dependency on Firmata4j + plus fixes to the built-in implementation Fix for SerialDevice shutdown Pi PWM - support use of PWM kernel module Switch from Apache Commons Math to Hipparchus (ref Hipparchus vs Apache Commons Math ) Servo - add as a first-class device type (as supported by PiconZero and Arduino) Added Diozero.getVersion Bug fix to DigitalOutputDevice when active low Support for output shift registers Support for 7-segment displays Added GPIO based LCD connection class Allow other serial connection parameters to be configured in Firmata adapter 1.3.0 I2 C read-write support with the pigpio provider (JNI and sockets) - pigpioj v2.5.9 I2 C read-write utility method Introduced diozero.util.Diozero as a more logical place for initialisation and shutdown utilities Replace all of the diozero-remote protocol variants with just gRPC Switch from Firmata4j to the Diozero Firmata implementation (to use the builtin serial library rather than java-native/JSSC) Add getGpioMode(gpio) and getGpioValue(gpio) to NativeDeviceFactoryInterface so that GpioReadAll works without mmap Add remote CPU temperature to NativeDeviceFactoryInterface and gRPC protocol 1.2.3 Use of BlockingQueue within GpioChip Support for Orange Pi Zero Plus and Orange Pi One Plus MFRC522 bug fix (#71) - allow antenna gain to be set prior to turning on the antenna Support for BME688 Improvements to SGP30 Moved DebouncedDigitalInputDevice out of sandpit 1.2.2 Docker based build system for system-utils-native Separate libraries for armv6 and armv7 DigitalOutputDevice: Renamed setValueUnsafe to just setValue - the unsafe was a legacy from when the class had synchronisation setOn/off no longer calls stopOnOffLoop - it is now the caller’s responsibility to do this MmapIntBuffer.intBuffer is no longer volatile, need to validate with an oscilloscope Use of ThreadLocalRandom rather than Random where possible Added a call to start() when reopening a device factory (#70) Bug-fix to NativeGpioInputDevice when setting pud value - line offset was being used rather than gpio (#70) Added diozero-bom 1.2.1 Tweaked mmap for 64-bit systems - map pointer was an int, changed to long mmap int buffer is volatile to ensure main memory is written DigitalOutputDevice on-off loop enhancements courtesy of Greg Flurry gpio chardev cleanup improvements Fixing DiozeroScheduler - pool size of 0 to allow safe shutdown 1.2.0 Moved all IMU devices out of diozero-core to diozero-imu-devices to remove dependency on commons-math3 (Quaternion) from diozero-core Removed deprecated methods in DigitalInputDevice and MmapIntBuffer and the deprecated class WaitableDigitalInputDevice Added BoardPinInfo getByPhysicalPin() Added AnalogOutputDevice Switched to non-daemon threads Changed DiozeroScheduler to only create a single (scheduled) thread pool - the cached thread pool was blocking the JVM from terminating for 60 seconds Improvements to DigitalOutputDevice on-off loops 1.1.9 Tweaks to native library cross compilation #68 bug-fix for I2 C on 64-bit systems Fix to SystemInformation coloured output with Jansi on armv6 1.1.8 Shutdown logic moved to DeviceFactoryHelper.shutdown Deprecated WaitableDigitalInputDevice and moved waitable logic up to AbstractDigitalInputDevice New Debounced DigitalInputDevice added to api.sandpit Added Builder to Button Use mmap (if available) when getting / setting GPIO values using built-in sysfs Ensure all nano timestamp values use CLOCK_MONOTONIC rather than CLOCK_REALTIME 1.1.7 Fixed system-utils-native library for aarch64 Added PWM setFrequency operation Detect RPi400 and CM4 1.1.6 Added operation to allow AutoCloseable interfaces to be automatically invoked on shutdown 1.1.5 Refactored the way that GPIO devices are provisioned internally - all now use PinInfo rather than a GPIO number DigitalInputDevices allow activeHigh to be overridden Fix for Raspberry Pi Zero W - now loads the correct boarddefs file, rather than the generic Raspberry Pi one Bugix for PwmOutputDevice cleanup 1.1.4 Bugfix for BME280 humidity reads - config registers need to be written to in the correct order Enhancements to ADS112C04 - support for input multiplexer configuration (differential reads) Renamed util.Event to util.EventLock Preview / sandpit introduction of a new generic FIFO event queue 1.1.3 Bugfix release - fix for I2 C retry logic GPIO event Epoch time is calculated from nano time 1.1.2 Bugfix release - fixes to GPIO I2 C retries 1.1.1 Changed whenPressed / whenReleased to receive nano time rather than epoch time 1.1.0 Changed whenPressed / whenReleased to receive epoch time; removed readBlocked, minReadChars and readTimeout from SerialDevice constructors 1.0.1 Minor bug fix to support Raspberry Pi 1 Model B Introduce readFully method for serial devices to read specified number of bytes before returning 1.0.0 Refactored package hierarchy to clearly distinguish between devices, API and SPI Documentation update - moved from readthedocs to GitHub pages 0.14 Serial devices gpiod character device incorporated Renamed the “sysfs” internal provider to built-in 0.13 Upgrade dependencies, minor bug fixes 0.12 Bug fix release - ws281x LED strips and analog input on BBB 0.11 New devices: BH1750 luminosity sensor, SSD1331 96x64 & SSD1351 128x128 65k colour OLEDs. Moved classes in com.diozero to com.diozero.devices. Changed the SPI interface from ByteBuffer to byte array. Added support for Particle Photon using the VoodooSpark Firmware. Flexible APIs for remotely accessing devices over a variety of protocols. Optimised GPIO input interrupt handling. Updated rpi_ws281x library. Experimental support for 433MHz receivers. I2 C detect capability. 0.10 Firmata I2 C. Improvements to MFRC522. SDL Joystick JNI wrapper library. MFRC522 fully supported (finally). Added support for MCP EEPROMs. I2 C SMBus implementation in the internal sysfs provider. 0.9 Native support for I2 C and SPI in the sysfs provider. Support for CHIP, BeagleBone Black and ASUS Tinker Board. Moved sysfs provider into diozero-core, use as the default provider. Preliminary support for devices that support the Firmata protocol (i.e. Arduino). 0.8 Added Analog Output device support (added for the PCF8591). Introduced Java based sysfs and jpi providers. Bug fix to I2CLcd. Added support for BME280. 0.7 Support for non-register based I2 C device read / write. 0.6 0.5 0.4 Bug fixes, experimental servo support. 0.3 API change - analogue to analog. 0.2