]> Repositories - Adafruit_Blinka-hackapet.git/blobdiff - src/adafruit_blinka/microcontroller/ftdi_mpsse/mpsse/pin.py
Added pre-commit support
[Adafruit_Blinka-hackapet.git] / src / adafruit_blinka / microcontroller / ftdi_mpsse / mpsse / pin.py
index 6a0ea938ffe3db0a79f5ff664bdc1c857c51a9a7..cf9316195cdffc6da0ca10f159c9f3b1fb776441 100644 (file)
@@ -1,5 +1,13 @@
+# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries
+#
+# SPDX-License-Identifier: MIT
 """MPSSE pin names"""
 
+from adafruit_blinka.microcontroller.ftdi_mpsse.mpsse.url import (
+    get_ft232h_url,
+    get_ft2232h_url,
+)
+
 
 class Pin:
     """A basic Pin class for use with FTDI MPSSEs."""
@@ -8,10 +16,13 @@ class Pin:
     OUT = 1
     LOW = 0
     HIGH = 1
+    PULL_NONE = 0
+    PULL_UP = 1
+    PULL_DOWN = 2
 
     mpsse_gpio = None
 
-    def __init__(self, pin_id=None, url="ftdi://ftdi:ft232h/1"):
+    def __init__(self, pin_id=None, interface_id=None):
         # setup GPIO controller if not done yet
         # use one provided by I2C as default
         if not Pin.mpsse_gpio:
@@ -21,7 +32,10 @@ class Pin:
             # pylint: enable=import-outside-toplevel
 
             i2c = I2cController()
-            i2c.configure(url)
+            if interface_id is None:
+                i2c.configure(get_ft232h_url())
+            else:
+                i2c.configure(get_ft2232h_url(interface_id))
             Pin.mpsse_gpio = i2c.get_gpio()
         # check if pin is valid
         if pin_id:
@@ -36,7 +50,7 @@ class Pin:
             raise RuntimeError("Can not init a None type pin.")
         # MPSSE does't have configurable internal pulls?
         if pull:
-            raise ValueError("Internal pull up/down not currently supported.")
+            raise NotImplementedError("Internal pull up/down not currently supported.")
         pin_mask = Pin.mpsse_gpio.pins | 1 << self.id
         current = Pin.mpsse_gpio.direction
         if mode == self.OUT:
@@ -63,4 +77,4 @@ class Pin:
             Pin.mpsse_gpio.write(current & Pin.mpsse_gpio.direction)
             return None
         # release the kraken
-        raise RuntimeError("Invalid value for pin")
\ No newline at end of file
+        raise RuntimeError("Invalid value for pin")