Skip to content

Commit c584303

Browse files
committed
Fix missing bus lock/unlocks in CircuitPython
Also fix old `cls` references, should be `self`
1 parent ad36328 commit c584303

File tree

1 file changed

+17
-3
lines changed

1 file changed

+17
-3
lines changed

qwiic_i2c/circuitpy_i2c.py

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -291,6 +291,9 @@ def write_block(self, address, commandCode, value):
291291
return self.writeBlock(address, commandCode, value)
292292

293293
def isDeviceConnected(self, devAddress):
294+
if not self.i2cbus.try_lock():
295+
raise Exception("Unable to lock I2C bus")
296+
294297
isConnected = False
295298
try:
296299
# Try to write nothing to the device
@@ -306,10 +309,10 @@ def isDeviceConnected(self, devAddress):
306309
return isConnected
307310

308311
def is_device_connected(self, devAddress):
309-
return cls.isDeviceConnected(devAddress)
312+
return self.isDeviceConnected(devAddress)
310313

311314
def ping(self, devAddress):
312-
return cls.isDeviceConnected(devAddress)
315+
return self.isDeviceConnected(devAddress)
313316

314317
#-----------------------------------------------------------------------
315318
# scan()
@@ -318,4 +321,15 @@ def ping(self, devAddress):
318321
#
319322
def scan(self):
320323
""" Returns a list of addresses for the devices connected to the I2C bus."""
321-
return self.i2cbus.scan()
324+
if not self.i2cbus.try_lock():
325+
raise Exception("Unable to lock I2C bus")
326+
327+
try:
328+
devices = self.i2cbus.scan()
329+
except Exception as e:
330+
self.i2cbus.unlock()
331+
raise e
332+
else:
333+
self.i2cbus.unlock()
334+
335+
return devices

0 commit comments

Comments
 (0)