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()]))