+# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries
+#
+# SPDX-License-Identifier: MIT
"""Allows useful indirection to test Pin naming logic by switching platform in testing
or provide bootstrapping logic for board identification where auto-detection is not
feasible (e.g. multiple ESP8266 boards architecturally identical). Once runtime
environment is established, can choose various routes to make available and re-export
common modules and operations, depending on platform support
"""
-import gc
import sys
-gc.collect()
+import adafruit_platformdetect
-try:
- microcontroller = sys.platform
-except:
- microcontroller = None
+# We intentionally are patching into this namespace as module names so skip the name check.
+# pylint: disable=invalid-name
-board = None
-if microcontroller is not None:
- if microcontroller == "esp8266": # TODO more conservative board-guessing
- board = "feather_huzzah"
- elif microcontroller == "samd21":
- board = "feather_m0_express"
- elif microcontroller == "pyboard":
- microcontroller = "stm32"
- board = "pyboard"
+# We'll define board and chip id values in agnostic rather than accessing
+# detector directly elsewhere, just in case additional indirection is necessary
+# at some later point:
+
+detector = adafruit_platformdetect.Detector()
+chip_id = detector.chip.id
+board_id = detector.board.id
implementation = sys.implementation.name
if implementation == "micropython":
from utime import sleep
-elif implementation == "circuitpython":
+elif implementation in ("circuitpython", "cpython"):
from time import sleep
-gc.collect()