]> Repositories - Adafruit_Blinka-hackapet.git/commitdiff
i2c
authorbrentru <brent@adafruit.com>
Tue, 21 May 2024 15:56:32 +0000 (11:56 -0400)
committerbrentru <brent@adafruit.com>
Tue, 21 May 2024 15:56:32 +0000 (11:56 -0400)
examples/generic_i2c.py [new file with mode: 0644]
src/adafruit_blinka/microcontroller/generic_agnostic_board/i2c.py [new file with mode: 0644]
src/busio.py

diff --git a/examples/generic_i2c.py b/examples/generic_i2c.py
new file mode 100644 (file)
index 0000000..2884d5f
--- /dev/null
@@ -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 (file)
index 0000000..a2cbc9c
--- /dev/null
@@ -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
index c9c2d4d00e0f66349ec5923b25852bcdad941566..08761c4c137b367d708655adf3365512bd3f4b3f 100644 (file)
@@ -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