]> Repositories - Adafruit_Blinka-hackapet.git/commitdiff
some initial work on adding platformdetect
authorBrennen Bearnes <bbearnes@gmail.com>
Mon, 10 Dec 2018 05:15:48 +0000 (22:15 -0700)
committerBrennen Bearnes <bbearnes@gmail.com>
Mon, 10 Dec 2018 05:15:48 +0000 (22:15 -0700)
This commit _definitely_ represents broken state.

setup.py
src/adafruit_blinka/agnostic/__init__.py
src/bitbangio.py
src/board.py
src/busio.py
src/microcontroller/pin.py
src/neopixel_write.py

index 5d8474fb41e826eae04fc7f6503ecc864b0ac5ac..faedc629a997b895869f9d9f76ef19c60aa07c1d 100755 (executable)
--- a/setup.py
+++ b/setup.py
@@ -34,6 +34,7 @@ setup(
     py_modules=['bitbangio', 'board', 'busio', 'digitalio', 'micropython', 'neopixel_write'],
     install_requires=[
         'Adafruit-GPIO',
     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'"
     ],
         "RPi.GPIO; platform_machine=='armv7l' or platform_machine=='armv6l'",
         "rpi_ws281x>=4.0.0; platform_machine=='armv7l' or platform_machine=='armv6l'"
     ],
index 1d93e6c9bdfe7f604784afc29fc30566c5c8c701..cbd967c3804836f0ed2d0d0575f6453f17bb4469 100755 (executable)
@@ -5,43 +5,15 @@
     common modules and operations, depending on platform support
 """
 import sys
     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
 
 # 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":
 
 implementation = sys.implementation.name
 if implementation == "micropython":
index 817bdbcd19eed760792074859eeef0f947a552cb..63265e3f7f81179a728b47a17fc8237393f3adc3 100755 (executable)
@@ -8,12 +8,14 @@ See `CircuitPython:bitbangio` in CircuitPython for more details.
 """
 
 from adafruit_blinka import Lockable, agnostic
 """
 
 from adafruit_blinka import Lockable, agnostic
+import adafruit_platformdetect.board as ap_board
 
 
 class I2C(Lockable):
     def __init__(self, scl, sda, frequency=400000):
 
 
 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):
         self.init(scl, sda, frequency)
 
     def init(self, scl, sda, frequency):
index d4e6be01c92bdca568135e7a25a95f6952cd4290..b343c80b94b687ee7a97a15cde446a1a025e8228 100755 (executable)
@@ -29,21 +29,29 @@ See `CircuitPython:board` in CircuitPython for more details.
 """
 import sys
 
 """
 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 *
     from adafruit_blinka.board.feather_huzzah import *
-elif board_id == "nodemcu":
+
+elif board_name == ap_board.NODEMCU:
     from adafruit_blinka.board.nodemcu import *
     from adafruit_blinka.board.nodemcu import *
-elif board_id == "pyboard":
+
+elif board_name == ap_board.PYBOARD:
     from adafruit_blinka.board.pyboard import *
     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 *
     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 *
     from adafruit_blinka.board.beaglebone_black import *
-elif board_id == "orangepipc":
+
+elif board_name == ap_board.ORANGEPI_PC:
     from adafruit_blinka.board.orangepipc import *
     from adafruit_blinka.board.orangepipc import *
+
 elif "sphinx" in sys.modules:
     pass
 elif "sphinx" in sys.modules:
     pass
+
 else:
     raise NotImplementedError("Board not supported")
 else:
     raise NotImplementedError("Board not supported")
index f82e4c3c3ad941d429100b1e84d37a36aba7e66a..cbcd50d6420acb29804dcfaba9d836eef7d20743 100755 (executable)
@@ -8,7 +8,16 @@ See `CircuitPython:busio` in CircuitPython for more details.
 """
 
 from adafruit_blinka import Enum, Lockable, agnostic
 """
 
 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):
 
 class I2C(Lockable):
     def __init__(self, scl, sda, frequency=400000):
@@ -16,7 +25,7 @@ class I2C(Lockable):
 
     def init(self, scl, sda, frequency):
         self.deinit()
 
     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
             from adafruit_blinka.microcontroller.generic_linux.i2c import I2C as _I2C
         else:
             from machine import I2C as _I2C
@@ -70,7 +79,7 @@ class I2C(Lockable):
 class SPI(Lockable):
     def __init__(self, clock, MOSI=None, MISO=None):
         self.deinit()
 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
             from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI
         else:
             from machine import SPI as _SPI
@@ -88,14 +97,14 @@ class SPI(Lockable):
                 format((clock, MOSI, MISO), spiPorts))
 
     def configure(self, baudrate=100000, polarity=0, phase=0, bits=8):
                 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
             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
             # 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:
             from adafruit_blinka.microcontroller.allwinner_h3.pin import Pin
             from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI
         else:
index 9ccd81f059da19b76c4d48032034bec4ae83b70a..94aeac0624711ece89ab836f0faafc14519dc337 100755 (executable)
@@ -1,21 +1,19 @@
 """Pins named after their chip name."""
 
 from adafruit_blinka import agnostic
 """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
 
 # 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 *
     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 *
     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:
 else:
-    raise NotImplementedError("Microcontroller not supported")
+    raise NotImplementedError("Board / microcontroller not supported: ", agnostic.board_name)
index d5cb7e06c2beef2fdcfaacb4b0d177e5a435ff6d..923ae2fa58cee3d179f9cc49d067e9ec9e1097c5 100644 (file)
@@ -9,9 +9,10 @@ See `CircuitPython:neopixel_write` in CircuitPython for more details.
 
 import sys
 
 
 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
     from adafruit_blinka.microcontroller.raspi_23 import neopixel as _neopixel
 elif "sphinx" in sys.modules:
     pass