1 """SPI Classes for RP2040s with u2if firmware"""
 
   2 from .rp2040_u2if import rp2040_u2if
 
   4 # pylint: disable=protected-access, no-self-use
 
   6     """SPI Base Class for RP2040 u2if"""
 
  10     def __init__(self, index, *, baudrate=100000):
 
  12         self._frequency = baudrate
 
  13         rp2040_u2if.spi_set_port(self._index)
 
  14         rp2040_u2if.spi_configure(self._frequency)
 
  16     # pylint: disable=too-many-arguments,unused-argument
 
  28         """Initialize the Port"""
 
  29         self._frequency = baudrate
 
  30         rp2040_u2if.spi_set_port(self._index)
 
  31         rp2040_u2if.spi_configure(self._frequency)
 
  33     # pylint: enable=too-many-arguments
 
  37         """Return the current frequency"""
 
  38         return self._frequency
 
  40     def write(self, buf, start=0, end=None):
 
  41         """Write data from the buffer to SPI"""
 
  42         rp2040_u2if.spi_write(buf, start=start, end=end)
 
  44     def readinto(self, buf, start=0, end=None, write_value=0):
 
  45         """Read data from SPI and into the buffer"""
 
  46         rp2040_u2if.spi_readinto(buf, start=start, end=end, write_value=write_value)
 
  48     # pylint: disable=too-many-arguments
 
  50         self, buffer_out, buffer_in, out_start=0, out_end=None, in_start=0, in_end=None
 
  52         """Perform a half-duplex write from buffer_out and then
 
  53         read data into buffer_in
 
  55         rp2040_u2if.spi_write_readinto(
 
  64     # pylint: enable=too-many-arguments
 
  68     """SPI Class for Pico u2if"""
 
  70     def __init__(self, clock, *, baudrate=100000):
 
  77             raise ValueError("No SPI port on specified pin.")
 
  78         super().__init__(index, baudrate=baudrate)
 
  81 class SPI_Feather(SPI):
 
  82     """SPI Class for Feather u2if"""
 
  84     def __init__(self, clock, *, baudrate=100000):
 
  89             raise ValueError("No SPI port on specified pin.")
 
  90         super().__init__(index, baudrate=baudrate)
 
  94     """SPI Class for QT Py u2if"""
 
  96     def __init__(self, clock, *, baudrate=100000):
 
 101             raise ValueError("No SPI port on specified pin.")
 
 102         super().__init__(index, baudrate=baudrate)
 
 105 class SPI_ItsyBitsy(SPI):
 
 106     """SPI Class for ItsyBitsy u2if"""
 
 108     def __init__(self, clock, *, baudrate=100000):
 
 113             raise ValueError("No SPI port on specified pin.")
 
 114         super().__init__(index, baudrate=baudrate)
 
 117 class SPI_MacroPad(SPI):
 
 118     """SPI Class for MacroPad u2if"""
 
 120     def __init__(self, clock, *, baudrate=100000):
 
 125             raise ValueError("No SPI port on specified pin.")
 
 126         super().__init__(index, baudrate=baudrate)