* Author(s): cefn
"""
-class Enum(object):
+class Enum():
"""
Object supporting CircuitPython-style of static symbols
as seen with Direction.OUTPUT, Pull.UP
def __exit__(self, exc_type, exc_value, traceback):
self.deinit()
+ # pylint: disable=no-self-use
def deinit(self):
"""Free any hardware used by the object."""
- pass
+ return
+ # pylint: enable=no-self-use
class Lockable(ContextManaged):
# We intentionally are patching into this namespace as module names so skip the name check.
# pylint: disable=invalid-name
-detect = adafruit_platformdetect.PlatformDetect()
+# 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:
-board_name = detect.board.name()
-chip_name = detect.chip.name()
+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" or implementation == "cpython":
+elif implementation in ("circuitpython", "cpython"):
from time import sleep
class I2C(Lockable):
def __init__(self, scl, sda, frequency=400000):
# TODO: This one is a bit questionable:
- if agnostic.board_name == ap_board.PYBOARD:
- raise NotImplementedError("No software I2C on {}".format(agnostic.board_name))
+ if agnostic.board_id == ap_board.PYBOARD:
+ raise NotImplementedError("No software I2C on {}".format(agnostic.board_id))
self.init(scl, sda, frequency)
def init(self, scl, sda, frequency):
"""
import sys
-from adafruit_blinka.agnostic import board_name
+from adafruit_blinka.agnostic import board_id
import adafruit_platformdetect.board as ap_board
-if board_name == ap_board.FEATHER_HUZZAH:
+# pylint: disable=wildcard-import,unused-wildcard-import,ungrouped-imports
+
+if board_id == ap_board.FEATHER_HUZZAH:
from adafruit_blinka.board.feather_huzzah import *
-elif board_name == ap_board.NODEMCU:
+elif board_id == ap_board.NODEMCU:
from adafruit_blinka.board.nodemcu import *
-elif board_name == ap_board.PYBOARD:
+elif board_id == ap_board.PYBOARD:
from adafruit_blinka.board.pyboard import *
-elif board_name in ap_board.ANY_RASPBERRY_PI_2_OR_3:
+elif board_id in ap_board.ANY_RASPBERRY_PI_2_OR_3:
from adafruit_blinka.board.raspi_23 import *
-elif board_name == ap_board.BEAGLEBONE_BLACK:
+elif board_id == ap_board.BEAGLEBONE_BLACK:
from adafruit_blinka.board.beaglebone_black import *
-elif board_name == ap_board.ORANGEPI_PC:
+elif board_id == ap_board.ORANGEPI_PC:
from adafruit_blinka.board.orangepipc import *
elif "sphinx" in sys.modules:
"""
from adafruit_blinka import Enum, Lockable, agnostic
-from adafruit_blinka.agnostic import board_name
+from adafruit_blinka.agnostic import board_id
import adafruit_platformdetect.board as ap_board
EMBEDDED_LINUX_BOARDS = (
def init(self, scl, sda, frequency):
self.deinit()
- if board_name in EMBEDDED_LINUX_BOARDS:
+ if board_id in EMBEDDED_LINUX_BOARDS:
from adafruit_blinka.microcontroller.generic_linux.i2c import I2C as _I2C
else:
from machine import I2C as _I2C
self._i2c = _I2C(portId, mode=_I2C.MASTER, baudrate=frequency)
break
else:
- raise NotImplementedError("No Hardware I2C on (scl,sda)={}\nValid UART ports".format(
- (scl, sda), i2cPorts))
+ raise NotImplementedError(
+ "No Hardware I2C on (scl,sda)={}\nValid UART ports: {}".format((scl, sda), i2cPorts)
+ )
def deinit(self):
try:
class SPI(Lockable):
def __init__(self, clock, MOSI=None, MISO=None):
self.deinit()
- if board_name in EMBEDDED_LINUX_BOARDS:
+ if board_id in EMBEDDED_LINUX_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_name in ap_board.ANY_RASPBERRY_PI_2_OR_3:
+ if board_id in ap_board.ANY_RASPBERRY_PI_2_OR_3:
from adafruit_blinka.microcontroller.bcm283x.pin import Pin
from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI
- elif board_name == ap_board.BEAGLEBONE_BLACK:
+ elif board_id == ap_board.BEAGLEBONE_BLACK:
from adafruit_blinka.microcontroller.am335x.pin import Pin
from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI
- elif board_name == ap_board.ORANGEPI_PC:
+ elif board_id == 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:
if flow is not None: # default 0
raise NotImplementedError(
"Parameter '{}' unsupported on {}".format(
- "flow", agnostic.board))
+ "flow", agnostic.board_id))
# translate parity flag for Micropython
if parity is UART.Parity.ODD:
break
else:
raise NotImplementedError(
- "No Hardware UART on (tx,rx)={}\nValid UART ports".format(
- (tx, rx), uartPorts))
+ "No Hardware UART on (tx,rx)={}\nValid UART ports: {}".format((tx, rx), uartPorts)
+ )
def deinit(self):
self._uart = None
* Author(s): cefn
"""
-from adafruit_blinka.agnostic import board_id
-if board_id == "raspi_3" or board_id == "raspi_2":
+from adafruit_blinka.agnostic import board_id, detector
+
+# pylint: disable=ungrouped-imports,wrong-import-position
+
+if detector.board.any_raspberry_pi_2_or_3:
from adafruit_blinka.microcontroller.bcm283x.pin import Pin
-elif board_id == "beaglebone_black":
+elif detector.board.BEAGLEBONE_BLACK:
from adafruit_blinka.microcontroller.am335x.pin import Pin
-elif board_id == "orangepipc":
+elif detector.board.ORANGE_PI_PC:
from adafruit_blinka.microcontroller.allwinner_h3.pin import Pin
-elif board_id == "pyboard":
+elif detector.board.PYBOARD:
from machine import Pin
from adafruit_blinka import Enum, ContextManaged
self._pin.init(mode=Pin.IN, pull=Pin.PULL_DOWN)
else:
raise NotImplementedError("{} unsupported on {}".format(
- Pull.DOWN, boardId))
+ Pull.DOWN, board_id))
elif pul is None:
self._pin.init(mode=Pin.IN, pull=None)
else:
"""Microcontroller pins"""
from adafruit_blinka import Enum
-from adafruit_blinka.agnostic import board_id, platform
+from adafruit_blinka.agnostic import board_id, chip_id
+from adafruit_platformdetect import chip as ap_chip
class Pin(Enum):
"""Reference Pin object"""
return repr(self)
# We intentionally are patching into this namespace so skip the wildcard check.
-# pylint: disable=unused-wildcard-import,wildcard-import
+# pylint: disable=unused-wildcard-import,wildcard-import,ungrouped-imports
-if platform == "esp8266":
+if chip_id == ap_chip.ESP8266:
from adafruit_blinka.microcontroller.esp8266 import *
-elif platform == "stm32":
+elif chip_id == ap_chip.STM32:
from adafruit_blinka.microcontroller.stm32 import *
-elif platform == "linux":
- if board_id == "raspi_3" or board_id == "raspi_2":
- from adafruit_blinka.microcontroller.bcm283x import *
- elif board_id == "beaglebone_black":
- from adafruit_blinka.microcontroller.am335x import *
- elif board_id == "orangepipc":
- from adafruit_blinka.microcontroller.allwinner_h3 import *
- else:
- raise NotImplementedError("Board not supported:", board_id)
+elif chip_id == ap_chip.BCM2XXX:
+ from adafruit_blinka.microcontroller.bcm283x import *
+elif chip_id == ap_chip.AM33XX:
+ from adafruit_blinka.microcontroller.am335x import *
+elif chip_id == ap_chip.SUN8I:
+ from adafruit_blinka.microcontroller.allwinner_h3 import *
else:
- raise NotImplementedError("Platform not supported:", platform)
+ raise NotImplementedError("Microcontroller not supported:", chip_id)
"""Pins named after their chip name."""
-from adafruit_blinka import agnostic
+from adafruit_blinka.agnostic import chip_id
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.chip_name == ap_chip.ESP8266:
+# pylint: disable=unused-wildcard-import,wildcard-import,ungrouped-imports
+
+if chip_id == ap_chip.ESP8266:
from adafruit_blinka.microcontroller.esp8266.pin import *
-elif agnostic.chip_name == ap_chip.STM32:
+elif chip_id == ap_chip.STM32:
from adafruit_blinka.microcontroller.stm32.pin import *
-elif agnostic.detect.any_raspberry_pi_or_3:
+elif chip_id == ap_chip.BCM2XXX:
from adafruit_blinka.microcontroller.bcm283x.pin import *
-elif agnostic.detect.beaglebone_black:
+elif chip_id == ap_chip.AM33XX:
from adafruit_blinka.microcontroller.am335x.pin import *
-elif agnostic.detect.orangepi_pc:
+elif chip_id == ap_chip.SUN8I:
from adafruit_blinka.microcontroller.allwinner_h3.pin import *
else:
- raise NotImplementedError("Board / microcontroller not supported: ", agnostic.board_name)
+ raise NotImplementedError("Microcontroller not supported: ", chip_id)
import sys
-from adafruit_blinka.agnostic import board_name
-import adafruit_platformdetect.board as ap_board
+from adafruit_blinka.agnostic import detector
-if board_name in (ap_board.RASPBERRY_PI_2B, ap_board.RASPBERRY_PI_3B, ap_board.RASPBERRY_PI_B_PLUS):
+if detector.board.any_raspberry_pi:
from adafruit_blinka.microcontroller.bcm283x import neopixel as _neopixel
elif "sphinx" in sys.modules:
pass
-import sys
-from adafruit_blinka.agnostic import board_id
+from adafruit_blinka.agnostic import detector
-
-if board_id == "raspi_2" or board_id == "raspi_3":
- from adafruit_blinka.microcontroller.bcm283x.pulseio.PulseIn import PulseIn as PulseIn
+if detector.board.any_raspberry_pi_2_or_3:
+ from adafruit_blinka.microcontroller.bcm283x.pulseio.PulseIn import PulseIn