Pi4J / pi4j-v2

Pi4J Version 2.0
Apache License 2.0
273 stars 57 forks source link

MockSpi.transfer() doesn't allow the tester to provide mock data #298

Closed MMMMMNG closed 2 months ago

MMMMMNG commented 1 year ago

https://github.com/Pi4J/pi4j-v2/blob/8d8f1574f926dfd2961356cf015dcbd58e50664e/plugins/pi4j-plugin-mock/src/main/java/com/pi4j/plugin/mock/provider/spi/MockSpi.java#L84

The current implementation of MockSpi.transfer() doesn't read or write to the data buffer. That makes it impossible for the tester to provide mock data. For reference, the current implementation:

    @Override
    public int transfer(byte[] write, int writeOffset, byte[] read, int readOffset, int numberOfBytes) {
        int readIndex = readOffset;
        // simply just echo out the write data back to the read buffer            <<<<<<<<<<-- that's the problem -MNG
        for(int n = writeOffset; n < numberOfBytes - writeOffset; n++){
            read[readIndex] = write[n];
            readIndex++;
        }
        // return number of byte returned
        return readIndex - readOffset;
    }