Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

linuxfs-pwm provider fixes for Pi5 operation. Default now pwmchip2, w… #339

Merged
merged 2 commits into from
Apr 8, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion pi4j-core/src/main/java/com/pi4j/io/pwm/PwmBase.java
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,9 @@ public Pwm initialize(Context context) throws InitializeException {
if(this.config.initialValue() != null){
try {
if(this.config.initialValue() <= 0){
this.off();
if(this.isOn()) {
this.off();
}
} else {
this.on(this.config.initialValue());
}
Expand Down
3 changes: 3 additions & 0 deletions pi4j-core/src/main/java/com/pi4j/util/Frequency.java
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,9 @@ public static float milliseconds(Number frequency){
*/
public static int getFrequencyFromNanos(Number nanoseconds){
int frequency;
if(nanoseconds.longValue() <= 0){
return(0);
}
long period = 1000000000; // NANOSECONDS PER SECOND;
frequency = Math.round(1000000000/nanoseconds.longValue());
return frequency;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,8 @@ public class LinuxPwm {
public static String DEFAULT_SYSTEM_PATH = "/sys/class/pwm";

/** Constant <code>DEFAULT_PWM_CHIP=0</code> */
public static int DEFAULT_PWM_CHIP = 0;
/** In Pi5 the chip is number 2 */
public static int DEFAULT_PWM_CHIP = 2;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Doesn't this mean, that it won't work on the Pi4 anymore? Shouldn't we be doing a check for the environment?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So yes. When franks Context update expose the machine type i can set the chip number correctly

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

test comment


protected final String systemPath;
protected final int chip;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -85,13 +85,18 @@ public Pwm initialize(Context context) throws InitializeException {
if(!pwm.isExported()) {
logger.trace("exporting PWM [" + this.config.address() + "]; " + pwm.getPwmPath());
pwm.export();
// Delay to allow the SSD to persist the new directory and device partitions
Thread.sleep(70);
} else{
logger.trace("PWM [" + this.config.address() + "] is already exported; " + pwm.getPwmPath());
}
} catch (java.io.IOException e) {
logger.error(e.getMessage(), e);
throw new InitializeException("Unable to export PWM [" + config.address() + "] @ <" + pwm.systemPath() + ">; " + e.getMessage(), e);
}
} catch (InterruptedException e) {
logger.error(e.getMessage(), e);
throw new InitializeException("Programmed delay failure, unable to export PWM [" + config.address() + "] @ <" + pwm.systemPath() + ">; " + e.getMessage(), e);
}

// [INITIALIZE STATE] initialize PWM pin state (via superclass impl)
super.initialize(context);
Expand Down Expand Up @@ -219,7 +224,9 @@ public Pwm shutdown(Context context) throws ShutdownException {
// otherwise ... un-export the GPIO pin from the Linux file system impl
try {
logger.trace("un-exporting PWM [" + this.config.address() + "]; " + pwm.getPwmPath());
pwm.unexport();
if(pwm.isExported()) {
pwm.unexport();
}
} catch (java.io.IOException e) {
logger.error(e.getMessage(), e);
throw new ShutdownException("Failed to UN-EXPORT PWM [" + config().address() + "] @ <" + pwm.systemPath() + ">; " + e.getMessage(), e);
Expand Down