MFRC522 cleanup and testing, in particular write operations
SHT40 High-Accuracy, Ultra-Low-Power, 16-bit Relative Humidity and Temperature Sensor
TMP117 High-Accuracy, Low-Power, Digital Temperature Sensor
Waveshare 7.5” e-ink display
Refactor / cleanup
Tidy up sampleapps with sub-packages as per diozero core (api, devices, motor, util, sbc, …)
Optimise GpioExpander when used for Software PWM output on multiple pins. Currently GpioExpander.setValues() will be invoked multiple times, once per pin, whereas a single call for multiple pins should be used instead. MultiplexedSoftwarePwmOutput?
Refactor DeviceFactory interfaces to use a default registration method and Supplier #132
SPI support for Arduino devices over Firmata
Introduce PrimitiveDevice and Device interfaces / classes (“.api” and “.device” packages respectively)
Ensure that all devices (“.devices” package) use composition rather then inheritance of PrimitiveDevice (“.api” package), i.e. LED, LDR, etc.
A device registry to provide info on all available PrimitiveDevices. Use the existing DeviceStates class for info on provisioned state
Additional interfaces representing generic physical behaviour, e.g. movement, acceleration, similar to existing MotorInterface, BarometerInterface, etc.
MMAP GPIO
Simplify MmapGpio implementation classes by extracting common behaviour into a base class
Add GPIO iomux mode mapping information in the board def file (in the list of supported device modes, e.g. PWM_OUTPUT(2)?)
Create common MmapGpioInterface sample app
1.4.1
MICS6814 CO/NH3/NO2 gas sensor
ServoTrim constructors
Bug fix for SSD1351
Jetson Nano & Libretech AML s905x
Fix for PCA9685 rounding errors
Fixes for Raspberry PI with kernel 6.6.x
1.4.0
Boards
Remove the need to add board provider classes - have a generic one that works off the detected System on a Chip (SoC)
Use uname -m / lscpu for board detection (LocalSystemInfo)
General
Reduce duplication of code in device / pin factory (PR #133)
#135 only call LocalSystemInfo when really necessary
#136 corrected defaults for servo SG90
Raspberry Pi 5 support
1.3.5
Tweaked cross compilation toolchain - switched to podman
Orange Pi 3 LTS - untested
Support for Rock 4 (Rockchip RK3399 SoC)
Allow for mapping automatically detected GPIO chips via the GPIO Chip label (Pi 3B) - #121
Bug fix to HD44780 LCDs connected via GPIO expansion boards (e.g. PCF8574) - #116
Docs build fix (updated the JTD branch)
Don’t initialise MCP23x17 pins to 0 - #88
Extracted common LcdInterface (thank you EAGrahamJr)
Improved accuracy of software PWM - required for servo control
Removed jitter in Software PWM output (thank you EAGrahamJr)
Active high flag in DebouncedDigitalInputDevice (#93)
Interface for setting arbitrary GPIO alt functions (#90) - MmapGpioInterface.setModeUnchecked
Corrected board definition file for Pi ZeroW2
Mock device factory provider
Refactor GenericLinuxArmBoardInfo to improve processing of the compatibility file and load DAC info
Bug fix to PCA9685.setDutyUs (#97)
1.3.3
Ordoid N2+ (thanks to btajuddin)
1.3.2
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)
I2C exceptions - throw an UnsupportedOperationException if the returned I2CFuncs indicate that the function isn’t support; remote I/O response aren’t retried
DebouncedDigitalInputDevice allows a device factory to be specified.
1.3.1
Fully removed dependency on Firmata4j + plus fixes to the built-in implementation