#
# SPDX-License-Identifier: MIT
"""I2C Class for MCP2221"""
+import random
from .fake_mcp2221 import mcp2221
def __init__(self, *, frequency=100000):
self._mcp2221 = mcp2221
- # self._mcp2221._i2c_configure(frequency)
-
- def scan(self):
- """Perform an I2C Device Scan"""
- # TODO: We need to fake an I2C scan here
- return self._mcp2221.i2c_scan()
-
- # pylint: disable=unused-argument
- def writeto(self, address, buffer, *, start=0, end=None, stop=True):
- """Write data from the buffer to an address"""
- #self._mcp2221.i2c_writeto(address, buffer, start=start, end=end)
-
- def readfrom_into(self, address, buffer, *, start=0, end=None, stop=True):
- """Read data from an address and into the buffer"""
- #self._mcp2221.i2c_readfrom_into(address, buffer, start=start, end=end)
-
- def writeto_then_readfrom(
- self,
- address,
- buffer_out,
- buffer_in,
- *,
- out_start=0,
- out_end=None,
- in_start=0,
- in_end=None,
- stop=False,
- ):
- """Write data from buffer_out to an address and then
- read data from an address and into buffer_in
+ self._freq = frequency
+
+ # pylint: disable=no-self-use
+ @staticmethod
+ def scan(self, address_list=None):
+ """Mocks an I2C scan.
+ If address_list is not provided, this function returns a
+ list of 3 randomly generated I2C addresses from 0x0 to 0x79.
+ For a stimulus-driven test: If address_list is provided,
+ this function returns the provided address_list.
"""
-
- """
- self._mcp2221.i2c_writeto_then_readfrom(
- address,
- buffer_out,
- buffer_in,
- out_start=out_start,
- out_end=out_end,
- in_start=in_start,
- in_end=in_end,
- )
- """
-
- # pylint: enable=unused-argument
\ No newline at end of file
+ if address_list is None:
+ # Generate a list of 3 randomly generated addresses from 0x0 to 0x79
+ address_list = []
+ for _ in range(3):
+ address_list.append(random.randint(0x0, 0x79))
+ return address_list
+ return address_list