From b2c8e3abdb4ba748a0d1932a5a9413590a42b9b5 Mon Sep 17 00:00:00 2001 From: Tom Aarts Date: Thu, 18 Apr 2024 11:07:55 -0500 Subject: [PATCH] Depending upon i2c method called the device may not be selected on the bus and the operation will fail --- .../com/pi4j/plugin/linuxfs/provider/i2c/LinuxFsI2CBus.java | 3 --- .../plugin/linuxfs/provider/i2c/LinuxFsI2CProviderImpl.java | 2 -- 2 files changed, 5 deletions(-) diff --git a/plugins/pi4j-plugin-linuxfs/src/main/java/com/pi4j/plugin/linuxfs/provider/i2c/LinuxFsI2CBus.java b/plugins/pi4j-plugin-linuxfs/src/main/java/com/pi4j/plugin/linuxfs/provider/i2c/LinuxFsI2CBus.java index d3116b85..2f351d3b 100644 --- a/plugins/pi4j-plugin-linuxfs/src/main/java/com/pi4j/plugin/linuxfs/provider/i2c/LinuxFsI2CBus.java +++ b/plugins/pi4j-plugin-linuxfs/src/main/java/com/pi4j/plugin/linuxfs/provider/i2c/LinuxFsI2CBus.java @@ -79,9 +79,6 @@ protected void selectBusSlave(I2C i2c) throws IOException { */ public int executeIOCTL(final I2C i2c, long command, ByteBuffer data, IntBuffer offsets){ int rc = -1; - if (this.lastAddress != i2c.device()) { - this.lastAddress = i2c.device(); - } try { if (this.lock.tryLock() || this.lock.tryLock(this.lockAquireTimeout, this.lockAquireTimeoutUnit)) { diff --git a/plugins/pi4j-plugin-linuxfs/src/main/java/com/pi4j/plugin/linuxfs/provider/i2c/LinuxFsI2CProviderImpl.java b/plugins/pi4j-plugin-linuxfs/src/main/java/com/pi4j/plugin/linuxfs/provider/i2c/LinuxFsI2CProviderImpl.java index 4c8f1d4a..b5882818 100644 --- a/plugins/pi4j-plugin-linuxfs/src/main/java/com/pi4j/plugin/linuxfs/provider/i2c/LinuxFsI2CProviderImpl.java +++ b/plugins/pi4j-plugin-linuxfs/src/main/java/com/pi4j/plugin/linuxfs/provider/i2c/LinuxFsI2CProviderImpl.java @@ -63,8 +63,6 @@ public synchronized I2C create(I2CConfig config) { LinuxFsI2CBus i2CBus = this.i2CBusMap.computeIfAbsent(config.getBus(), busNr -> new LinuxFsI2CBus(config)); // create new I/O instance based on I/O config LinuxFsI2C i2C = new LinuxFsI2C(i2CBus, this, config); - // Workaround, needed if first LinuxFsI2C usage is ioctl (readRegister or writeRegister) - i2C.read(); this.context.registry().add(i2C); return i2C; }