1 """Allows useful indirection to test Pin naming logic by switching platform in testing
 
   2     or provide bootstrapping logic for board identification where auto-detection is not
 
   3     feasible (e.g. multiple ESP8266 boards architecturally identical). Once runtime
 
   4     environment is established, can choose various routes to make available and re-export
 
   5     common modules and operations, depending on platform support
 
   9 # We intentionally are patching into this namespace as module names so skip the name check.
 
  10 # pylint: disable=invalid-name
 
  11 platform = sys.platform
 
  15 if platform is not None:
 
  16     if platform == "esp8266":  # TODO more conservative board-guessing
 
  17         board_id = "feather_huzzah"
 
  18     elif platform == "samd21":
 
  19         board_id = "feather_m0_express"
 
  20     elif platform == "pyboard":
 
  23     elif platform == "linux":
 
  25         # we're going to redo the Platform detection, this is a terrible hack
 
  28             # lets see if we're an armbian board
 
  29             for line in open("/etc/armbian-release", 'r'):
 
  31                 m = re.search('BOARD=(.*)', line)
 
  35             from Adafruit_GPIO import Platform
 
  36             if Platform.platform_detect() == Platform.RASPBERRY_PI:
 
  37                 if Platform.pi_version() == 1:
 
  39                 elif Platform.pi_version() == 2:
 
  41                 elif Platform.pi_version() == 3:
 
  43             elif Platform.platform_detect() == Platform.BEAGLEBONE_BLACK:
 
  44                 board_id = "beaglebone_black"
 
  46 implementation = sys.implementation.name
 
  47 if implementation == "micropython":
 
  48     from utime import sleep
 
  49 elif implementation == "circuitpython" or implementation == "cpython":
 
  50     from time import sleep