This commit _definitely_ represents broken state.
py_modules=['bitbangio', 'board', 'busio', 'digitalio', 'micropython', 'neopixel_write'],
install_requires=[
'Adafruit-GPIO',
+ 'Adafruit-PlatformDetect',
"RPi.GPIO; platform_machine=='armv7l' or platform_machine=='armv6l'",
"rpi_ws281x>=4.0.0; platform_machine=='armv7l' or platform_machine=='armv6l'"
],
common modules and operations, depending on platform support
"""
import sys
+import adafruit_platformdetect
# We intentionally are patching into this namespace as module names so skip the name check.
# pylint: disable=invalid-name
-platform = sys.platform
-board_id = None
+detect = adafruit_platformdetect.PlatformDetect()
-if platform is not None:
- if platform == "esp8266": # TODO more conservative board-guessing
- board_id = "feather_huzzah"
- elif platform == "samd21":
- board_id = "feather_m0_express"
- elif platform == "pyboard":
- platform = "stm32"
- board_id = "pyboard"
- elif platform == "linux":
- import re
- # we're going to redo the Platform detection, this is a terrible hack
- # for now.
- try:
- # lets see if we're an armbian board
- for line in open("/etc/armbian-release", 'r'):
- #print(line)
- m = re.search('BOARD=(.*)', line)
- if m:
- board_id = m.group(1)
- except:
- from Adafruit_GPIO import Platform
- if Platform.platform_detect() == Platform.RASPBERRY_PI:
- if Platform.pi_version() == 1:
- board_id = "raspi_1"
- elif Platform.pi_version() == 2:
- board_id = "raspi_2"
- elif Platform.pi_version() == 3:
- board_id = "raspi_3"
- elif Platform.platform_detect() == Platform.BEAGLEBONE_BLACK:
- board_id = "beaglebone_black"
+board_name = detect.board.name()
+chip_name = detect.chip.name()
implementation = sys.implementation.name
if implementation == "micropython":
"""
from adafruit_blinka import Lockable, agnostic
+import adafruit_platformdetect.board as ap_board
class I2C(Lockable):
def __init__(self, scl, sda, frequency=400000):
- if agnostic.microcontroller == "stm32":
- raise NotImplementedError("No software I2C on {}".format(agnostic.board_id))
+ # TODO: This one is a bit questionable:
+ if agnostic.board_name == ap_board.PYBOARD:
+ raise NotImplementedError("No software I2C on {}".format(agnostic.board_name))
self.init(scl, sda, frequency)
def init(self, scl, sda, frequency):
"""
import sys
-from adafruit_blinka.agnostic import board_id
+from adafruit_blinka.agnostic import board_name
+import adafruit_platformdetect.board as ap_board
-if board_id == "feather_huzzah":
+if board_name == ap_board.FEATHER_HUZZAH:
from adafruit_blinka.board.feather_huzzah import *
-elif board_id == "nodemcu":
+
+elif board_name == ap_board.NODEMCU:
from adafruit_blinka.board.nodemcu import *
-elif board_id == "pyboard":
+
+elif board_name == ap_board.PYBOARD:
from adafruit_blinka.board.pyboard import *
-elif board_id == "raspi_2" or board_id == "raspi_3":
+
+elif board_name in ap_board.ANY_RASPBERRY_PI_2_OR_3:
from adafruit_blinka.board.raspi_23 import *
-elif board_id == "beaglebone_black":
+
+elif board_name == ap_board.BEAGLEBONE_BLACK:
from adafruit_blinka.board.beaglebone_black import *
-elif board_id == "orangepipc":
+
+elif board_name == ap_board.ORANGEPI_PC:
from adafruit_blinka.board.orangepipc import *
+
elif "sphinx" in sys.modules:
pass
+
else:
raise NotImplementedError("Board not supported")
"""
from adafruit_blinka import Enum, Lockable, agnostic
-from adafruit_blinka.agnostic import board_id
+from adafruit_blinka.agnostic import board_name
+import adafruit_platformdetect.board as ap_board
+
+SUPPORTED_BOARDS = (
+ ap_board.RASPBERRY_PI_2B,
+ ap_board.RASPBERRY_PI_3B,
+ ap_board.RASPBERRY_PI_3B_PLUS,
+ ap_board.BEAGLEBONE_BLACK,
+ ap_board.ORANGEPI_PC,
+)
class I2C(Lockable):
def __init__(self, scl, sda, frequency=400000):
def init(self, scl, sda, frequency):
self.deinit()
- if board_id in ("raspi_3", "raspi_2", "beaglebone_black", "orangepipc"):
+ if board_name in SUPPORTED_BOARDS:
from adafruit_blinka.microcontroller.generic_linux.i2c import I2C as _I2C
else:
from machine import I2C as _I2C
class SPI(Lockable):
def __init__(self, clock, MOSI=None, MISO=None):
self.deinit()
- if board_id in ("raspi_3", "raspi_2", "beaglebone_black", "orangepipc"):
+ if board_name in SUPPORTED_BOARDS:
from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI
else:
from machine import SPI as _SPI
format((clock, MOSI, MISO), spiPorts))
def configure(self, baudrate=100000, polarity=0, phase=0, bits=8):
- if board_id == "raspi_3" or board_id == "raspi_2":
+ if board_name in ap_board.ANY_RASPBERRY_PI_2_OR_3:
from adafruit_blinka.microcontroller.raspi_23.pin import Pin
from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI
- elif board_id == "beaglebone_black":
+ elif board_name == ap_board.BEAGLEBONE_BLACK:
# reuse the raspberry pi class as both boards use Linux spidev
from adafruit_blinka.microcontroller.beaglebone_black.pin import Pin
from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI
- elif board_id == "orangepipc":
+ elif board_name == ap_board.ORANGEPI_PC:
from adafruit_blinka.microcontroller.allwinner_h3.pin import Pin
from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI
else:
"""Pins named after their chip name."""
from adafruit_blinka import agnostic
+import adafruit_platformdetect.chip as ap_chip
# We intentionally are patching into this namespace so skip the wildcard check.
# pylint: disable=unused-wildcard-import,wildcard-import
-if agnostic.platform == "esp8266":
+if agnostic.chip_name == ap_chip.ESP8266:
from adafruit_blinka.microcontroller.esp8266.pin import *
-elif agnostic.platform == "stm32":
+elif agnostic.chip_name == ap_chip.STM32:
from adafruit_blinka.microcontroller.stm32.pin import *
-elif agnostic.platform == "linux":
- if agnostic.board_id == "raspi_3" or agnostic.board_id == "raspi_2":
- from adafruit_blinka.microcontroller.raspi_23.pin import *
- elif agnostic.board_id == "beaglebone_black":
- from adafruit_blinka.microcontroller.beaglebone_black.pin import *
- elif agnostic.board_id == "orangepipc":
- from adafruit_blinka.microcontroller.allwinner_h3.pin import *
- else:
- raise NotImplementedError("Board not supported: ", agnostic.board_id)
+elif agnostic.detect.any_raspberry_pi_or_3:
+ from adafruit_blinka.microcontroller.raspi_23.pin import *
+elif agnostic.detect.beaglebone_black:
+ from adafruit_blinka.microcontroller.beaglebone_black.pin import *
+elif agnostic.detect.orangepi_pc:
+ from adafruit_blinka.microcontroller.allwinner_h3.pin import *
else:
- raise NotImplementedError("Microcontroller not supported")
+ raise NotImplementedError("Board / microcontroller not supported: ", agnostic.board_name)
import sys
-from adafruit_blinka.agnostic import board_id
+from adafruit_blinka.agnostic import board_name
+import adafruit_platformdetect.board as ap_board
-if board_id == "raspi_2" or board_id == "raspi_3":
+if board_name in (ap_board.RASPBERRY_PI_2B, ap_board.RASPBERRY_PI_3B, ap_board.RASPBERRY_PI_B_PLUS):
from adafruit_blinka.microcontroller.raspi_23 import neopixel as _neopixel
elif "sphinx" in sys.modules:
pass