Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/develop' into feature/#406
Browse files Browse the repository at this point in the history
  • Loading branch information
Frank Delporte committed Nov 16, 2024
2 parents 7dc929a + 3961664 commit 4785c28
Show file tree
Hide file tree
Showing 25 changed files with 83 additions and 31 deletions.
12 changes: 12 additions & 0 deletions config/checkstyle/checkstyle.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<?xml version="1.0"?>
<!DOCTYPE module PUBLIC
"-//Checkstyle//DTD Checkstyle Configuration 1.3//EN"
"https://checkstyle.org/dtds/configuration_1_3.dtd">

<module name="Checker">
<module name="TreeWalker">
<module name="UnusedImports"/>
<module name="RedundantImport"/>
<module name="IllegalImport"/> <!-- defaults to sun.* packages -->
</module>
</module>
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,6 @@
* #L%
*/

import java.io.IOException;

/**
* <p>PiGpio_Servo interface.</p>
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,10 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.File;
import java.util.Arrays;
import java.util.Objects;
import java.util.Scanner;

import static com.pi4j.library.pigpio.PiGpioConst.PI_IF_DISABLE_FIFO;
import static com.pi4j.library.pigpio.PiGpioConst.PI_IF_DISABLE_SOCK;
Expand All @@ -49,6 +51,8 @@
public class PiGpioNativeImpl extends PiGpioBase implements PiGpio {
protected Logger logger = LoggerFactory.getLogger(this.getClass());

private int SPI_BUFFSIZ = 4096;

private static final PiGpioNativeImpl instance;
static {
instance = new PiGpioNativeImpl();
Expand Down Expand Up @@ -105,6 +109,16 @@ public int gpioInitialise() {
result = PIGPIO.gpioInitialise();
validateResult(result);

try {
Scanner scanner = new Scanner(new File("/sys/module/spidev/parameters/bufsiz"));
if (scanner.hasNextInt()) {
SPI_BUFFSIZ = scanner.nextInt();
}
logger.trace("[INITIALIZE] -> SPI_BUFFSIZ={}", SPI_BUFFSIZ);
} catch (Exception e) {
logger.error(e.getMessage(), e);
}

// initialization successful
this.initialized = true;
logger.debug("[INITIALIZE] -- INITIALIZED SUCCESSFULLY");
Expand Down Expand Up @@ -240,7 +254,7 @@ public void gpioSetMode(int pin, PiGpioMode mode) {
validateReady();
validatePin(pin);
int result = PIGPIO.gpioSetMode(pin, mode.value());
logger.trace("[GPIO::MODE-SET] <- PIN: {}; MODE={}({}); SUCCESS={}", mode.name(), mode.value(), (result>=0));
logger.trace("[GPIO::MODE-SET] <- PIN: {}; MODE={}({}); SUCCESS={}", pin, mode.name(), mode.value(), (result>=0));
validateResult(result); // Returns 0 if OK, otherwise PI_BAD_GPIO or PI_BAD_PUD.
}

Expand Down Expand Up @@ -1454,8 +1468,16 @@ public int spiWrite(int handle, byte[] data, int offset, int length) {
Objects.checkFromIndexSize(offset, length, data.length);
validateHandle(handle);
// write data array to SPI bus/channel
int result = PIGPIO.spiWrite(handle, data, offset, length);
logger.trace("[SPI::WRITE] <- HANDLE={}; SUCCESS={}", handle, (result>=0));
int result = 0;
byte[] someData = Arrays.copyOfRange(data, offset, length);
int start = 0;
while (start < someData.length) {
int end = Math.min(someData.length, start + SPI_BUFFSIZ);
byte[] chunk = Arrays.copyOfRange(someData, start, end);
result += PIGPIO.spiWrite(handle, chunk, 0, chunk.length );
logger.trace("[SPI::WRITE] <- HANDLE={}; SUCCESS={}", handle, (result>=0));
start += SPI_BUFFSIZ;
}
validateResult(result, false);
return result;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@
import com.pi4j.context.Context;
import com.pi4j.io.gpio.digital.DigitalConfig;
import com.pi4j.io.gpio.digital.DigitalConfigBuilder;
import com.pi4j.io.gpio.digital.DigitalOutputConfigBuilder;
import com.pi4j.io.gpio.digital.DigitalState;
import com.pi4j.io.impl.IOAddressConfigBuilderBase;

Expand Down
26 changes: 24 additions & 2 deletions pi4j-core/src/main/java/com/pi4j/io/i2c/I2C.java
Original file line number Diff line number Diff line change
Expand Up @@ -131,11 +131,33 @@ default int writeRead(byte[] writeBuffer, byte[] readBuffer) {
*/
default int writeRead(byte[] writeBuffer, int writeSize, int writeOffset, byte[] readBuffer, int readSize,
int readOffset) {

// Check bounds for writeBuffer
if (writeOffset < 0) {
throw new IndexOutOfBoundsException("Write offset cannot be negative!");
}
if (writeOffset + writeSize > writeBuffer.length) {
throw new IndexOutOfBoundsException(
String.format("Write operation out of bounds. Write buffer length is %d. Yet write offset + size is=%d",
writeBuffer.length, writeOffset + writeSize));
}

// Check bounds for readBuffer
if (readOffset < 0) {
throw new IndexOutOfBoundsException("Read offset cannot be negative!");
}
if (readOffset + readSize > readBuffer.length) {
throw new IndexOutOfBoundsException(
String.format("Read operation out of bounds. Read buffer length is %d. Yet read offset + size is=%d",
readBuffer.length, readOffset + readSize));
}

return execute(() -> {
int written = write(writeBuffer, writeOffset, writeSize);
if (written != writeOffset)
if (written != writeSize) {
throw new IllegalStateException(
"Expected to write " + writeOffset + " bytes but only wrote " + written + " bytes");
"Expected to write " + writeSize + " bytes but only wrote " + written + " bytes");
}
return read(readBuffer, readOffset, readSize);
});
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@

import com.pi4j.Pi4J;
import com.pi4j.context.Context;
import com.pi4j.exception.Pi4JException;
import com.pi4j.test.provider.TestI2CProvider;
import com.pi4j.test.provider.TestPwmProvider;
import com.pi4j.test.provider.TestSerialProvider;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package com.pi4j.plugin.gpiod.provider.gpio.digital;


import com.pi4j.boardinfo.util.BoardInfoHelper;
import com.pi4j.context.Context;
import com.pi4j.exception.InitializeException;
import com.pi4j.exception.ShutdownException;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@
* #L%
*/

import com.pi4j.boardinfo.util.BoardInfoHelper;
import com.pi4j.context.Context;
import com.pi4j.exception.InitializeException;
import com.pi4j.exception.ShutdownException;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@
*/


import com.pi4j.boardinfo.util.BoardInfoHelper;
import com.pi4j.context.Context;
import com.pi4j.exception.ShutdownException;
import com.pi4j.io.i2c.I2C;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@
* #L%
*/

import com.pi4j.io.exception.IOAlreadyExistsException;
import com.pi4j.io.gpio.analog.AnalogInput;
import com.pi4j.io.gpio.analog.AnalogInputConfig;
import com.pi4j.io.gpio.analog.AnalogInputProviderBase;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@
* #L%
*/

import com.pi4j.io.exception.IOAlreadyExistsException;
import com.pi4j.io.gpio.analog.AnalogOutput;
import com.pi4j.io.gpio.analog.AnalogOutputConfig;
import com.pi4j.io.gpio.analog.AnalogOutputProviderBase;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@
* #L%
*/

import com.pi4j.io.exception.IOAlreadyExistsException;
import com.pi4j.io.gpio.digital.DigitalInput;
import com.pi4j.io.gpio.digital.DigitalInputConfig;
import com.pi4j.io.gpio.digital.DigitalInputProviderBase;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@
* #L%
*/

import com.pi4j.io.exception.IOAlreadyExistsException;
import com.pi4j.io.gpio.digital.DigitalOutput;
import com.pi4j.io.gpio.digital.DigitalOutputConfig;
import com.pi4j.io.gpio.digital.DigitalOutputProviderBase;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@
* #L%
*/

import com.pi4j.io.exception.IOAlreadyExistsException;
import com.pi4j.io.i2c.I2C;
import com.pi4j.io.i2c.I2CConfig;
import com.pi4j.io.i2c.I2CProviderBase;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@
* #L%
*/

import com.pi4j.io.exception.IOAlreadyExistsException;
import com.pi4j.io.pwm.Pwm;
import com.pi4j.io.pwm.PwmConfig;
import com.pi4j.io.pwm.PwmProviderBase;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@
* #L%
*/

import com.pi4j.io.exception.IOAlreadyExistsException;
import com.pi4j.io.serial.Serial;
import com.pi4j.io.serial.SerialConfig;
import com.pi4j.io.serial.SerialProviderBase;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@
* #L%
*/

import com.pi4j.io.exception.IOAlreadyExistsException;
import com.pi4j.io.spi.Spi;
import com.pi4j.io.spi.SpiConfig;
import com.pi4j.io.spi.SpiProviderBase;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,6 @@
import com.pi4j.library.pigpio.PiGpio;
import com.pi4j.library.pigpio.PiGpioMode;

import java.io.IOException;

/**
* <p>PiGpioSerial class.</p>
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@
* #L%
*/

import com.pi4j.io.exception.IOAlreadyExistsException;
import com.pi4j.io.gpio.digital.DigitalInput;
import com.pi4j.io.gpio.digital.DigitalInputConfig;
import com.pi4j.io.gpio.digital.DigitalInputProviderBase;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@
* #L%
*/

import com.pi4j.io.exception.IOAlreadyExistsException;
import com.pi4j.io.gpio.digital.DigitalOutput;
import com.pi4j.io.gpio.digital.DigitalOutputConfig;
import com.pi4j.io.gpio.digital.DigitalOutputProviderBase;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@
* #L%
*/

import com.pi4j.io.exception.IOAlreadyExistsException;
import com.pi4j.io.i2c.I2C;
import com.pi4j.io.i2c.I2CConfig;
import com.pi4j.io.i2c.I2CProviderBase;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@
* #L%
*/

import com.pi4j.io.exception.IOAlreadyExistsException;
import com.pi4j.io.pwm.Pwm;
import com.pi4j.io.pwm.PwmConfig;
import com.pi4j.io.pwm.PwmProviderBase;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@
* #L%
*/

import com.pi4j.io.exception.IOAlreadyExistsException;
import com.pi4j.io.serial.Serial;
import com.pi4j.io.serial.SerialConfig;
import com.pi4j.io.serial.SerialProviderBase;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@
* #L%
*/

import com.pi4j.io.exception.IOAlreadyExistsException;
import com.pi4j.io.spi.Spi;
import com.pi4j.io.spi.SpiConfig;
import com.pi4j.io.spi.SpiProviderBase;
Expand Down
25 changes: 22 additions & 3 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -274,10 +274,10 @@
<maven-antrun-plugin.version>3.1.0</maven-antrun-plugin.version>
<maven-assembly-plugin.version>3.3.0</maven-assembly-plugin.version>
<maven-bundle-plugin.version>5.1.2</maven-bundle-plugin.version>
<maven-compiler-plugin.version>3.8.1</maven-compiler-plugin.version>
<maven-compiler-plugin.version>3.13.0</maven-compiler-plugin.version>
<maven-dependency-plugin.version>3.1.2</maven-dependency-plugin.version>
<maven-gpg-plugin.version>3.2.1</maven-gpg-plugin.version>
<maven-jar-plugin.version>3.2.0</maven-jar-plugin.version>
<maven-jar-plugin.version>3.4.2</maven-jar-plugin.version>
<maven-javadoc-plugin.version>3.2.0</maven-javadoc-plugin.version>
<maven-release-plugin.version>3.0.0-M4</maven-release-plugin.version>
<maven-resource-plugin.version>3.2.0</maven-resource-plugin.version>
Expand Down Expand Up @@ -668,7 +668,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>3.0.0-M2</version>
<version>3.5.0</version>
</plugin>

<!-- Deploy to Maven plugin -->
Expand Down Expand Up @@ -759,6 +759,25 @@
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>3.5.0</version>
<executions>
<execution>
<id>checkstyle-check</id>
<goals>
<goal>check</goal>
</goals>
<phase>validate</phase>
</execution>
</executions>
<configuration>
<failsOnError>true</failsOnError>
<configLocation>config/checkstyle/checkstyle.xml</configLocation>
<excludes>**/module-info.java</excludes>
</configuration>
</plugin>
</plugins>
</build>
Expand Down

0 comments on commit 4785c28

Please sign in to comment.