X-Git-Url: https://git.ayoreis.com/Adafruit_Blinka-hackapet.git/blobdiff_plain/a05866abcb60fe7b3d2198ed58e7f1deb82f8983..03548b64a8d7b407b4ae6464c5ffc551be8fc0be:/src/microcontroller/_pin.py diff --git a/src/microcontroller/_pin.py b/src/microcontroller/_pin.py new file mode 100644 index 0000000..0077cb0 --- /dev/null +++ b/src/microcontroller/_pin.py @@ -0,0 +1,32 @@ +# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries +# +# SPDX-License-Identifier: MIT +from adafruit_blinka import Enum +import microcontroller.pin + +class Pin(Enum): + """ + Identifies an IO pin on the microcontroller. + + They are fixed by the hardware so they cannot be constructed on demand. Instead, use board or + microcontroller.pin to reference the desired pin. + """ + + def __init__(self, pin_id): + """Identifier for pin, referencing platform-specific pin id""" + self.id = pin_id + + def __repr__(self): + # pylint: disable=import-outside-toplevel, cyclic-import + import board + + for key in dir(board): + if getattr(board, key) is self: + return "board.{}".format(key) + # pylint: enable=import-outside-toplevel, cyclic-import + + for key in dir(microcontroller.pin): + if getattr(microcontroller.pin, key) is self: + return "microcontroller.pin.{}".format(key) + return repr(self) +