]> Repositories - Adafruit_Blinka-hackapet.git/blobdiff - src/adafruit_blinka/microcontroller/fake_mcp2221/pin.py
Merge pull request #809 from makermelissa/main
[Adafruit_Blinka-hackapet.git] / src / adafruit_blinka / microcontroller / fake_mcp2221 / pin.py
index e2cb40f8972cfd70d0e3d54d676e99e1634bf0ba..f522a39e8ac9e223094e62902e2a2212ad7926bd 100644 (file)
@@ -3,7 +3,6 @@
 # SPDX-License-Identifier: MIT
 """fake_mcp2221 pin names"""
 import random
-from .fake_mcp2221 import mcp2221
 
 
 class Pin:
@@ -21,28 +20,31 @@ class Pin:
     def __init__(self, pin_id=None):
         self.id = pin_id
         self._mode = None
-        self._prv_val = None
+        self._prv_val = False
 
     def init(self, mode=IN, pull=None):
         """Initialize the Pin"""
         if self.id is None:
             raise RuntimeError("Can not init a None type pin.")
         if pull is not None:
-            raise NotImplementedError("Internal pullups and pulldowns not supported on the MCP2221")
+            raise NotImplementedError("Internal pullups and pulldowns not supported")
         if mode in (Pin.IN, Pin.OUT):
             # All pins can do GPIO
-            pass
+            # mcp2221.gp_set_mode(self.id, mcp2221.GP_GPIO)
+            # mcp2221.gpio_set_direction(self.id, mode)
+            self._mode = mode
         elif mode == Pin.ADC:
             # ADC only available on these pins
             if self.id not in (1, 2, 3):
                 raise ValueError("Pin does not have ADC capabilities")
-            pass
-            # Do nothing
+            # mcp2221.gp_set_mode(self.id, mcp2221.GP_ALT0)
+            # mcp2221.adc_configure()
         elif mode == Pin.DAC:
             # DAC only available on these pins
             if self.id not in (2, 3):
                 raise ValueError("Pin does not have DAC capabilities")
-            pass
+            # mcp2221.gp_set_mode(self.id, mcp2221.GP_ALT1)
+            # mcp2221.dac_configure()
         else:
             raise ValueError("Incorrect pin mode: {}".format(mode))
         self._mode = mode
@@ -53,13 +55,8 @@ class Pin:
         if self._mode in (Pin.IN, Pin.OUT):
             # digital read
             if val is None:
-                # The value returned will toggle between True and False
-                # and will be True on the first digital read
-                # TODO: Behavior needs to be tested
-                if self._prv_val == None or False:
-                    self._prv_val = True
-                else:
-                    self._prv_val = False
+                # The returned value toggles between True and false
+                self._prv_val = not self._prv_val
                 return self._prv_val
             # digital write
             if val in (Pin.LOW, Pin.HIGH):
@@ -95,4 +92,4 @@ G2 = Pin(2)
 G3 = Pin(3)
 
 SCL = Pin()
-SDA = Pin()
\ No newline at end of file
+SDA = Pin()