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