# SPDX-License-Identifier: MIT
"""fake_mcp2221 pin names"""
import random
-from .fake_mcp2221 import mcp2221
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
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):
G3 = Pin(3)
SCL = Pin()
-SDA = Pin()
\ No newline at end of file
+SDA = Pin()