From 407abd05e3f4fe164cf964605532716a452cc756 Mon Sep 17 00:00:00 2001 From: Randall Bohn Date: Thu, 28 Jan 2021 20:05:15 -0700 Subject: [PATCH 1/3] Support boards that don't have a fixed I2C bus. --- adafruit_seesaw/tftshield18.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/adafruit_seesaw/tftshield18.py b/adafruit_seesaw/tftshield18.py index 830abd1..bc45c83 100755 --- a/adafruit_seesaw/tftshield18.py +++ b/adafruit_seesaw/tftshield18.py @@ -66,7 +66,12 @@ class TFTShield18(Seesaw): # TypeError: unsupported operand type(s) for <<: 'int' and '_MockObject' _button_mask = 0xFF - def __init__(self, i2c_bus=board.I2C(), addr=0x2E): + def __init__(self, i2c_bus=None, addr=0x2E): + if i2c_bus == None: + if hasattr(board, "I2C"): + i2c_bus = board.I2C + else: + print("Warning: board has no default I2C bus.") super().__init__(i2c_bus, addr) self.pin_mode(_TFTSHIELD_RESET_PIN, self.OUTPUT) self.pin_mode_bulk(self._button_mask, self.INPUT_PULLUP) From 9eb5d8f2e4d79561af5c0c74ce111dae21320c5b Mon Sep 17 00:00:00 2001 From: Randall Bohn Date: Thu, 28 Jan 2021 21:43:56 -0700 Subject: [PATCH 2/3] Raise ValueError if I2C bus is not provided. Based on guidance from jepler. --- adafruit_seesaw/tftshield18.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/adafruit_seesaw/tftshield18.py b/adafruit_seesaw/tftshield18.py index bc45c83..6f3c05a 100755 --- a/adafruit_seesaw/tftshield18.py +++ b/adafruit_seesaw/tftshield18.py @@ -67,11 +67,11 @@ class TFTShield18(Seesaw): _button_mask = 0xFF def __init__(self, i2c_bus=None, addr=0x2E): - if i2c_bus == None: - if hasattr(board, "I2C"): - i2c_bus = board.I2C - else: - print("Warning: board has no default I2C bus.") + if i2c_bus is None: + try: + i2c_bus = board.I2C() + except AttributeError: + raise ValueError("Board has no default I2C bus.") super().__init__(i2c_bus, addr) self.pin_mode(_TFTSHIELD_RESET_PIN, self.OUTPUT) self.pin_mode_bulk(self._button_mask, self.INPUT_PULLUP) From b4e475fd63ae3ead6a4285d04696f713e03b812d Mon Sep 17 00:00:00 2001 From: Randall Bohn Date: Thu, 28 Jan 2021 21:51:16 -0700 Subject: [PATCH 3/3] Raise ValueError() from attributeError Suggested by pylint. TFTShield won't work without an i2c_bus, so fail with an informative message. --- adafruit_seesaw/tftshield18.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/adafruit_seesaw/tftshield18.py b/adafruit_seesaw/tftshield18.py index 6f3c05a..494ed57 100755 --- a/adafruit_seesaw/tftshield18.py +++ b/adafruit_seesaw/tftshield18.py @@ -70,8 +70,8 @@ def __init__(self, i2c_bus=None, addr=0x2E): if i2c_bus is None: try: i2c_bus = board.I2C() - except AttributeError: - raise ValueError("Board has no default I2C bus.") + except AttributeError as attrError: + raise ValueError("Board has no default I2C bus.") from attrError super().__init__(i2c_bus, addr) self.pin_mode(_TFTSHIELD_RESET_PIN, self.OUTPUT) self.pin_mode_bulk(self._button_mask, self.INPUT_PULLUP)