]> Repositories - Adafruit_Blinka-hackapet.git/blobdiff - src/adafruit_blinka/microcontroller/nxp_lpc4330/spi.py
fix pre-commit check fail
[Adafruit_Blinka-hackapet.git] / src / adafruit_blinka / microcontroller / nxp_lpc4330 / spi.py
index 37cc6c4aace1081ca481318b66142e09a3992db1..29f4734c7e7083c70a73a7ad5d14349476e8a133 100644 (file)
@@ -1,6 +1,10 @@
+# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries
+#
+# SPDX-License-Identifier: MIT
 """SPI Class for NXP LPC4330"""
 from greatfet import GreatFET
 
+
 class SPI:
     """Custom I2C Class for NXP LPC4330"""
 
@@ -10,6 +14,8 @@ class SPI:
         self._gf = GreatFET()
         self._frequency = None
         self.buffer_size = 255
+        self._mode = 0
+        self._spi = None
         self._presets = {
             204000: (100, 9),
             408000: (100, 4),
@@ -25,9 +31,9 @@ class SPI:
             34000000: (2, 2),
             51000000: (2, 1),
             102000000: (2, 0),
-       }
-        
-    # pylint: disable=too-many-arguments
+        }
+
+    # pylint: disable=too-many-arguments,unused-argument
     def init(
         self,
         baudrate=100000,
@@ -44,7 +50,7 @@ class SPI:
         polarity = int(polarity)
         phase = int(phase)
         self._mode = (polarity << 1) | phase
-        
+
         # Using API due to possible interface change
         self._spi = self._gf.apis.spi
         # Check baudrate against presets and adjust to the closest one
@@ -57,6 +63,7 @@ class SPI:
 
         # Set the polarity and phase (the "SPI mode").
         self._spi.set_clock_polarity_and_phase(self._mode)
+
     # pylint: enable=too-many-arguments
 
     def _find_closest_preset(self, target_frequency):
@@ -65,9 +72,10 @@ class SPI:
         to the found value
         """
         closest_preset = None
-        for frequency in self._presets:
-            preset = self._presets[frequency]
-            if self._frequency is None or abs(frequency - target_frequency) < abs(self._frequency - target_frequency):
+        for frequency, preset in self._presets.items():
+            if self._frequency is None or abs(frequency - target_frequency) < abs(
+                self._frequency - target_frequency
+            ):
                 self._frequency = frequency
                 closest_preset = preset
 
@@ -87,7 +95,7 @@ class SPI:
     def readinto(self, buf, start=0, end=None, write_value=0):
         """Read data from SPI and into the buffer"""
         end = end if end else len(buf)
-        result = self._transmit([], end - start)
+        result = self._transmit([write_value] * (end - start), end - start)
         for i, b in enumerate(result):
             buf[start + i] = b
 
@@ -104,8 +112,6 @@ class SPI:
         in_end = in_end if in_end else len(buffer_in)
 
         result = self._transmit(buffer_out[out_start:out_end], in_end - in_start)
-        for i, b in enumerate(result):
-            buf[start + i] = b
         for i, b in enumerate(result):
             buffer_in[in_start + i] = b
 
@@ -126,8 +132,8 @@ class SPI:
         # Transmit our data in chunks of the buffer size.
         while data_to_transmit:
             # Extract a single data chunk from the transmit buffer.
-            chunk = data_to_transmit[0:self.buffer_size]
-            del data_to_transmit[0:self.buffer_size]
+            chunk = data_to_transmit[0 : self.buffer_size]
+            del data_to_transmit[0 : self.buffer_size]
 
             # Finally, exchange the data.
             response = self._spi.clock_data(len(chunk), bytes(chunk))