]> Repositories - Adafruit_Blinka-hackapet.git/blob - src/microcontroller/__init__.py
Added pre-commit support
[Adafruit_Blinka-hackapet.git] / src / microcontroller / __init__.py
1 # SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries
2 #
3 # SPDX-License-Identifier: MIT
4 """
5 `microcontroller` - Pin references and cpu functionality
6 ========================================================
7
8 * Author(s): Melissa LeBlanc-Williams
9 """
10
11 import sys
12 import time
13
14 from adafruit_platformdetect.constants import chips as ap_chip
15 from adafruit_blinka import Enum
16 from adafruit_blinka.agnostic import board_id, chip_id
17 import microcontroller.pin
18
19
20 def delay_us(delay):
21     """Sleep for delay usecs."""
22     time.sleep(delay / 1e6)
23
24
25 class Pin(Enum):
26     """
27     Identifies an IO pin on the microcontroller.
28
29     They are fixed by the hardware so they cannot be constructed on demand. Instead, use board or
30     microcontroller.pin to reference the desired pin.
31     """
32
33     def __init__(self, pin_id):
34         """Identifier for pin, referencing platform-specific pin id"""
35         self.id = pin_id
36
37     def __repr__(self):
38         # pylint: disable=import-outside-toplevel, cyclic-import
39         import board
40
41         for key in dir(board):
42             if getattr(board, key) is self:
43                 return "board.{}".format(key)
44         # pylint: enable=import-outside-toplevel, cyclic-import
45
46         for key in dir(microcontroller.pin):
47             if getattr(microcontroller.pin, key) is self:
48                 return "microcontroller.pin.{}".format(key)
49         return repr(self)
50
51
52 # We intentionally are patching into this namespace so skip the wildcard check.
53 # pylint: disable=unused-wildcard-import,wildcard-import,ungrouped-imports
54
55 if chip_id == ap_chip.ESP8266:
56     from adafruit_blinka.microcontroller.esp8266 import *
57 elif chip_id == ap_chip.STM32F405:
58     from adafruit_blinka.microcontroller.stm32.stm32f405 import *
59 elif chip_id == ap_chip.RP2040:
60     from adafruit_blinka.microcontroller.rp2040 import *
61 elif chip_id == ap_chip.BCM2XXX:
62     if board_id in [
63         "RASPBERRY_PI_4B",
64         "RASPBERRY_PI_400",
65         "RASPBERRY_PI_CM4",
66     ]:
67         from adafruit_blinka.microcontroller.bcm2711 import *
68     else:
69         from adafruit_blinka.microcontroller.bcm283x import *
70 elif chip_id == ap_chip.DRA74X:
71     from adafruit_blinka.microcontroller.dra74x import *
72 elif chip_id == ap_chip.AM33XX:
73     from adafruit_blinka.microcontroller.am335x import *
74 elif chip_id == ap_chip.JH71x0:
75     from adafruit_blinka.microcontroller.starfive.JH71x0 import *
76 elif chip_id == ap_chip.SUN8I:
77     from adafruit_blinka.microcontroller.allwinner.h3 import *
78 elif chip_id == ap_chip.H5:
79     from adafruit_blinka.microcontroller.allwinner.h5 import *
80 elif chip_id == ap_chip.H6:
81     from adafruit_blinka.microcontroller.allwinner.h6 import *
82 elif chip_id == ap_chip.H616:
83     from adafruit_blinka.microcontroller.allwinner.h616 import *
84 elif chip_id == ap_chip.SAMA5:
85     from adafruit_blinka.microcontroller.sama5 import *
86 elif chip_id == ap_chip.T210:
87     from adafruit_blinka.microcontroller.tegra.t210 import *
88 elif chip_id == ap_chip.T186:
89     from adafruit_blinka.microcontroller.tegra.t186 import *
90 elif chip_id == ap_chip.T194:
91     from adafruit_blinka.microcontroller.tegra.t194 import *
92 elif chip_id == ap_chip.S905:
93     from adafruit_blinka.microcontroller.amlogic.s905 import *
94 elif chip_id == ap_chip.S905X3:
95     from adafruit_blinka.microcontroller.amlogic.s905x3 import *
96 elif chip_id == ap_chip.S922X:
97     from adafruit_blinka.microcontroller.amlogic.s922x import *
98 elif chip_id == ap_chip.EXYNOS5422:
99     from adafruit_blinka.microcontroller.samsung.exynos5422 import *
100 elif chip_id == ap_chip.APQ8016:
101     from adafruit_blinka.microcontroller.snapdragon.apq8016 import *
102 elif chip_id == ap_chip.A64:
103     from adafruit_blinka.microcontroller.allwinner.a64 import *
104 elif chip_id == ap_chip.A33:
105     from adafruit_blinka.microcontroller.allwinner.a33 import *
106 elif chip_id == ap_chip.RK3308:
107     from adafruit_blinka.microcontroller.rockchip.rk3308 import *
108 elif chip_id == ap_chip.RK3399:
109     from adafruit_blinka.microcontroller.rockchip.rk3399 import *
110 elif chip_id == ap_chip.RK3328:
111     from adafruit_blinka.microcontroller.rockchip.rk3328 import *
112 elif chip_id == ap_chip.H3:
113     from adafruit_blinka.microcontroller.allwinner.h3 import *
114 elif chip_id == ap_chip.H5:
115     from adafruit_blinka.microcontroller.allwinner.h5 import *
116 elif chip_id == ap_chip.IMX8MX:
117     from adafruit_blinka.microcontroller.nxp_imx8m import *
118 elif chip_id == ap_chip.IMX6ULL:
119     from adafruit_blinka.microcontroller.nxp_imx6ull import *
120 elif chip_id == ap_chip.HFU540:
121     from adafruit_blinka.microcontroller.hfu540 import *
122 elif chip_id == ap_chip.BINHO:
123     from adafruit_blinka.microcontroller.nova import *
124 elif chip_id == ap_chip.LPC4330:
125     from adafruit_blinka.microcontroller.nxp_lpc4330 import *
126 elif chip_id == ap_chip.MCP2221:
127     from adafruit_blinka.microcontroller.mcp2221 import *
128 elif chip_id == ap_chip.MIPS24KC:
129     from adafruit_blinka.microcontroller.atheros.ar9331 import *
130 elif chip_id == ap_chip.MIPS24KEC:
131     from adafruit_blinka.microcontroller.mips24kec import *
132 elif chip_id == ap_chip.FT232H:
133     from adafruit_blinka.microcontroller.ftdi_mpsse.ft232h import *
134 elif chip_id == ap_chip.FT2232H:
135     from adafruit_blinka.microcontroller.ftdi_mpsse.ft2232h import *
136 elif chip_id == ap_chip.PENTIUM_N3710:
137     from adafruit_blinka.microcontroller.pentium.n3710 import *
138 elif chip_id == ap_chip.STM32MP157:
139     from adafruit_blinka.microcontroller.stm32.stm32mp157 import *
140 elif chip_id == ap_chip.MT8167:
141     from adafruit_blinka.microcontroller.mt8167 import *
142 elif chip_id == ap_chip.RP2040_U2IF:
143     from adafruit_blinka.microcontroller.rp2040_u2if import *
144 elif chip_id == ap_chip.GENERIC_X86:
145     print("WARNING: GENERIC_X86 is not fully supported. Some features may not work.")
146 elif "sphinx" in sys.modules:
147     pass
148 else:
149     raise NotImplementedError("Microcontroller not supported:", chip_id)