+"""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()
+
+try:
+ microcontroller = sys.platform
+except:
+ microcontroller = None
+
+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"
+
+implementation = sys.implementation.name
+if implementation == "micropython":
+ from utime import sleep
+elif implementation == "circuitpython":
+ from time import sleep
+gc.collect()