diff --git a/plugins/pi4j-plugin-linuxfs/src/main/java/com/pi4j/plugin/linuxfs/provider/i2c/LinuxFsI2C.java b/plugins/pi4j-plugin-linuxfs/src/main/java/com/pi4j/plugin/linuxfs/provider/i2c/LinuxFsI2C.java index be69ef1d..42341e46 100644 --- a/plugins/pi4j-plugin-linuxfs/src/main/java/com/pi4j/plugin/linuxfs/provider/i2c/LinuxFsI2C.java +++ b/plugins/pi4j-plugin-linuxfs/src/main/java/com/pi4j/plugin/linuxfs/provider/i2c/LinuxFsI2C.java @@ -325,10 +325,16 @@ public int readRegister(byte[] register, byte[] buffer, int offset, int length) */ @Override public int writeReadRegisterWord(int register, int word) { - return this.i2CBus.execute(this, file -> { - writeRegisterWord(register, word); - return readRegisterWord(register); - }); + byte reg[] = new byte[3]; + reg[0] = (byte) (register & 0xff); + reg[1] = (byte) (word & 0xff); + reg[2] = (byte) ((word >> 8) & 0xff); + byte buff[] = new byte[2]; + + int rCode = this.readRegister(reg, buff, 0, buff.length); + word = (buff[1] << 8) | buff[0]; + return word; + } @Override