Bump this project to Java 25 and Pi4J 4 so it can be used on Raspberry Pi 5 - #497
Open
FDelporte wants to merge 6 commits into
Open
Bump this project to Java 25 and Pi4J 4 so it can be used on Raspberry Pi 5#497FDelporte wants to merge 6 commits into
FDelporte wants to merge 6 commits into
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
This PR updates Pi4Micronaut to target modern Raspberry Pi 5 GPIO support by upgrading to Pi4J 4.x (FFM provider) and Java 25, replacing the prior pigpio-based approach and aligning documentation/examples accordingly.
Changes:
- Upgrade build/tooling to Java 25, Gradle 9.6.1, Micronaut 5.0.2, and Shadow plugin 9.6.1.
- Switch Pi4J setup to auto-detected FFM providers and update GPIO/PWM/SPI configuration usage (
bcm,channel) plus related docs/examples. - Adjust PWM usage/tests to match updated Pi4J API expectations (integer duty-cycle/speed).
Reviewed changes
Copilot reviewed 44 out of 45 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| README.md | Updates project note to state Pi 5 support via Pi4J 4.x + FFM. |
| pi4micronaut-utils/src/test/java/com/opensourcewithslu/outputdevices/ServoMotorHelperTest.java | Updates servo PWM assertions to use rounded integer duty cycle. |
| pi4micronaut-utils/src/test/java/com/opensourcewithslu/outputdevices/MotorHelperTest.java | Updates motor PWM assertions to integer speed. |
| pi4micronaut-utils/src/test/java/com/opensourcewithslu/mock/MockDigitalInput.java | Adapts mock to updated Pi4J DigitalInput interface surface. |
| pi4micronaut-utils/src/test/java/com/opensourcewithslu/inputdevices/RFidHelperTest.java | Updates SPI config mocking for Pi4J 4.x style accessors (partially). |
| pi4micronaut-utils/src/main/java/com/opensourcewithslu/utilities/Pi4JMultiPinFactory.java | Migrates multi-pin builders from address(...) to bcm(...) / channel(...). |
| pi4micronaut-utils/src/main/java/com/opensourcewithslu/utilities/Pi4JFactory.java | Switches to Pi4J.newAutoContext() and updates builder fields to bcm/channel. |
| pi4micronaut-utils/src/main/java/com/opensourcewithslu/outputdevices/ServoMotorHelper.java | Switches servo PWM output to rounded integer duty cycle. |
| pi4micronaut-utils/src/main/java/com/opensourcewithslu/outputdevices/MotorHelper.java | Switches motor PWM output to rounded integer speed. |
| pi4micronaut-utils/src/main/java/com/opensourcewithslu/inputdevices/RFidHelper.java | Migrates SPI channel accessor; baud accessor remains old-style. |
| pi4micronaut-utils/src/docs/asciidoc/Introduction/howToUsePi4Micronaut.adoc | Updates sample provider IDs to FFM equivalents. |
| pi4micronaut-utils/src/docs/asciidoc/Introduction/buildAndRun.adoc | Removes pigpio installation step; documents gpiochip access requirement. |
| pi4micronaut-utils/src/docs/asciidoc/introduction.adoc | Updates introduction text to reflect Pi4J 4.x FFM + gpiochip approach. |
| pi4micronaut-utils/src/docs/asciidoc/components/outputComponents/servomotor.adoc | Updates PWM provider to ffm-pwm. |
| pi4micronaut-utils/src/docs/asciidoc/components/outputComponents/rgbLed.adoc | Updates multi-PWM provider to ffm-pwm. |
| pi4micronaut-utils/src/docs/asciidoc/components/outputComponents/passivebuzzer.adoc | Updates PWM provider to ffm-pwm. |
| pi4micronaut-utils/src/docs/asciidoc/components/outputComponents/motor.adoc | Updates PWM and digital-output providers to FFM variants. |
| pi4micronaut-utils/src/docs/asciidoc/components/outputComponents/led.adoc | Updates digital-output provider to ffm-digital-output. |
| pi4micronaut-utils/src/docs/asciidoc/components/outputComponents/fourDigitSevenSegment.adoc | Updates digital-output provider to ffm-digital-output. |
| pi4micronaut-utils/src/docs/asciidoc/components/outputComponents/fan.adoc | Updates PWM provider to ffm-pwm. |
| pi4micronaut-utils/src/docs/asciidoc/components/outputComponents/activebuzzer.adoc | Updates PWM provider to ffm-pwm. |
| pi4micronaut-utils/src/docs/asciidoc/components/inputComponents/ultraSonicSensor.adoc | Updates digital input/output providers to FFM variants. |
| pi4micronaut-utils/src/docs/asciidoc/components/inputComponents/touchSwitch.adoc | Updates digital input/output providers to FFM variants. |
| pi4micronaut-utils/src/docs/asciidoc/components/inputComponents/tiltSwitch.adoc | Updates digital input/output providers to FFM variants. |
| pi4micronaut-utils/src/docs/asciidoc/components/inputComponents/speedSensor.adoc | Updates digital-input provider to ffm-digital-input. |
| pi4micronaut-utils/src/docs/asciidoc/components/inputComponents/slideSwitch.adoc | Updates digital-input provider to ffm-digital-input. |
| pi4micronaut-utils/src/docs/asciidoc/components/inputComponents/rotaryEncoder.adoc | Updates multi digital-input provider to ffm-digital-input. |
| pi4micronaut-utils/src/docs/asciidoc/components/inputComponents/reedSwitch.adoc | Updates digital input/output providers to FFM variants. |
| pi4micronaut-utils/src/docs/asciidoc/components/inputComponents/pushButton.adoc | Updates digital input/output providers to FFM variants. |
| pi4micronaut-utils/src/docs/asciidoc/components/inputComponents/pirSensor.adoc | Updates digital-input provider to ffm-digital-input. |
| pi4micronaut-utils/src/docs/asciidoc/components/inputComponents/photoresistorSensor.adoc | Updates digital input/output providers to FFM variants. |
| pi4micronaut-utils/src/docs/asciidoc/components/inputComponents/microSwitch.adoc | Updates digital input/output providers to FFM variants. |
| pi4micronaut-utils/src/docs/asciidoc/components/inputComponents/IRObstacleAvoidance.adoc | Updates digital-input provider to ffm-digital-input. |
| pi4micronaut-utils/src/docs/asciidoc/components/commun_WithHardware/pwm.adoc | Updates PWM provider references to ffm-*. |
| pi4micronaut-utils/src/docs/asciidoc/components/commun_WithHardware/digitalOutput.adoc | Updates digital-output provider references to ffm-digital-output. |
| pi4micronaut-utils/src/docs/asciidoc/components/commun_WithHardware/digitalInput.adoc | Updates digital-input provider references to ffm-digital-input. |
| pi4micronaut-utils/src/docs/asciidoc/components/commun_WithHardware.adoc | Updates high-level description from pigpio to FFM + gpiochip. |
| pi4micronaut-utils/build.gradle | Bumps Micronaut/Pi4J versions and sets Java compatibility to 25. |
| gradle/wrapper/gradle-wrapper.properties | Updates Gradle wrapper to 9.6.1. |
| components/src/main/resources/application.yml | Updates provider IDs throughout sample configuration to FFM variants. |
| components/build.gradle | Bumps plugin versions, sets Java 25, and adjusts test task behavior. |
| build.gradle | Bumps shared plugin versions (Micronaut + Shadow). |
| .github/workflows/javadoc-gh-pages.yml | Updates CI JDK to 25 for Javadoc publishing. |
| .github/workflows/github-actions.yml | Updates CI JDK to 25. |
| .github/workflows/build-reusable.yml | Updates CI JDK to 25 across reusable workflow jobs. |
Comments suppressed due to low confidence (1)
pi4micronaut-utils/src/main/java/com/opensourcewithslu/inputdevices/RFidHelper.java:42
- Same issue as the other constructor:
SpiConfigshould usebaud()instead ofgetBaud()when targeting Pi4J 4.x (you already migratedgetAddress()tochannel()).
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Signed-off-by: Frank Delporte <frank@webtechie.be>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The current README of this project mentions it can't be used on a Raspberry Pi because of Pi4J V2 limitations. But that problem has been solved already some time ago in V3. But... V4 based on Java 25 and the FFM API is even better and makes this usable on other brands of single-board computers. See https://www.pi4j.com/sbc/
This pull request bumps this project to Java 25 and Pi4J V4 but still needs to be validated on real hardware. Can this be done by one of the Pi4Micronaut maintainers, please?