From 8096252cbff4053a0caa533274616651b5d8c540 Mon Sep 17 00:00:00 2001 From: codenio Date: Fri, 7 May 2021 15:45:16 +0530 Subject: [PATCH] Bugfix Channel Scan This Commit, - Fixes Bug with Channel scan - Adds tca9548a_channelscan.py example code for testing - Updates examples.rst --- adafruit_tca9548a.py | 6 +++++- docs/examples.rst | 9 +++++++++ examples/tca9548a_channelscan.py | 20 ++++++++++++++++++++ 3 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 examples/tca9548a_channelscan.py diff --git a/adafruit_tca9548a.py b/adafruit_tca9548a.py index b2b6338..ec8b27b 100644 --- a/adafruit_tca9548a.py +++ b/adafruit_tca9548a.py @@ -77,7 +77,11 @@ def writeto_then_readfrom(self, address, buffer_out, buffer_in, **kwargs): def scan(self): """Perform an I2C Device Scan""" - return self.tca.i2c.scan() + self.try_lock() + try: + return self.tca.i2c.scan() + finally: + self.unlock() class TCA9548A: diff --git a/docs/examples.rst b/docs/examples.rst index a9e9818..290ec02 100644 --- a/docs/examples.rst +++ b/docs/examples.rst @@ -6,3 +6,12 @@ Ensure your device works with this simple test. .. literalinclude:: ../examples/tca9548a_simpletest.py :caption: examples/tca9548a_simpletest.py :linenos: + +Channel Scan +------------- + +Ensure your device scans each channel of TCA9547A with Channel Scan. + +.. literalinclude:: ../examples/tca9548a_channelscan.py + :caption: examples/tca9548a_channelscan.py + :linenos: diff --git a/examples/tca9548a_channelscan.py b/examples/tca9548a_channelscan.py new file mode 100644 index 0000000..95f5771 --- /dev/null +++ b/examples/tca9548a_channelscan.py @@ -0,0 +1,20 @@ +# SPDX-FileCopyrightText: 2021 codenio (Aananth K) +# SPDX-License-Identifier: MIT + +# This example shows scanning of each TCA9548A channels. +import board +import busio +import adafruit_tca9548a + +# Create I2C bus as normal +i2c = busio.I2C(board.SCL, board.SDA) + +# Create the TCA9548A object and give it the I2C bus +tca = adafruit_tca9548a.TCA9548A(i2c) + +# Scan the Main I2C Channel present in your board +print("Scan of Main I2C Channel:{}".format([hex(i) for i in i2c.scan()])) + +# Scan Each TCA9548A channel +for i in range(8): + print("Scan of TCA[{}] Channel: {}".format(i, [hex(j) for j in tca[i].scan()]))