From: brentru Date: Tue, 21 May 2024 15:56:32 +0000 (-0400) Subject: i2c X-Git-Tag: 8.39.2^2~9 X-Git-Url: https://git.ayoreis.com/Adafruit_Blinka-hackapet.git/commitdiff_plain/4ce7761a8b73ddc453ec6f64b35e73b33e43a3a2?ds=inline i2c --- diff --git a/examples/generic_i2c.py b/examples/generic_i2c.py new file mode 100644 index 0000000..2884d5f --- /dev/null +++ b/examples/generic_i2c.py @@ -0,0 +1,14 @@ +import pytest +import busio +from board import * + + +def test_i2c_scan_random(): + i2c = busio.I2C(SCL, SDA) + i2c.try_lock() + addr_list = i2c.scan() + assert len(addr_list) == 3 + for addr in addr_list: + assert addr >= 0x0 and addr <= 0x79 + i2c.unlock() + i2c.deinit() diff --git a/src/adafruit_blinka/microcontroller/generic_agnostic_board/i2c.py b/src/adafruit_blinka/microcontroller/generic_agnostic_board/i2c.py new file mode 100644 index 0000000..a2cbc9c --- /dev/null +++ b/src/adafruit_blinka/microcontroller/generic_agnostic_board/i2c.py @@ -0,0 +1,25 @@ +# SPDX-FileCopyrightText: 2024 Brent Rubell for Adafruit Industries +# +# SPDX-License-Identifier: MIT +"""I2C Class for Generic Agnostic Board""" +from random import randint +#from .generic_agnostic_board.pin import generic_agnostic_board + + +class I2C: + """Custom I2C Class for a Generic Agnostic Board""" + + def __init__(self, *, frequency=100000): + #self._generic_agnostic_board = generic_agnostic_board + self.freq = frequency + + @staticmethod + def scan(): + """Mocks an I2C scan and returns a list of 3 randomly generated + I2C addresses from 0x0 to 0x79. + """ + # Generate a list of 3 randomly generated addresses from 0x0 to 0x79 + address_list = [] + for _ in range(3): + address_list.append(randint(0x0, 0x79)) + return address_list diff --git a/src/busio.py b/src/busio.py index c9c2d4d..08761c4 100644 --- a/src/busio.py +++ b/src/busio.py @@ -9,6 +9,7 @@ See `CircuitPython:busio` in CircuitPython for more details. * Author(s): cefn """ +import os try: import threading except ImportError: @@ -53,6 +54,13 @@ class I2C(Lockable): self._i2c = _I2C(frequency=frequency) return + + if "BLINKA_FORCECHIP" in os.environ and os.environ["BLINKA_FORCEBOARD"] == "GENERIC_AGNOSTIC_BOARD": + from adafruit_blinka.microcontroller.generic_agnostic_board.i2c import I2C as _I2C + + self._i2c = _I2C(frequency=frequency) + return + if detector.board.greatfet_one: from adafruit_blinka.microcontroller.nxp_lpc4330.i2c import I2C as _I2C