From c5b4d061ad0d22a947f4b3c362826f388642ba2f Mon Sep 17 00:00:00 2001 From: iabdalkader Date: Fri, 6 Oct 2023 19:19:10 +0200 Subject: [PATCH] scripts/libraries: Add machine extension module. --- scripts/libraries/machine.py | 37 +++++++++++++++++++ src/omv/boards/ARDUINO_GIGA/manifest.py | 3 +- .../ARDUINO_NANO_RP2040_CONNECT/manifest.py | 1 + .../boards/ARDUINO_NICLA_VISION/manifest.py | 1 + .../boards/ARDUINO_PORTENTA_H7/manifest.py | 5 ++- src/omv/boards/OPENMV2/manifest.py | 1 + src/omv/boards/OPENMV3/manifest.py | 1 + src/omv/boards/OPENMV4/manifest.py | 25 ++++++++++--- src/omv/boards/OPENMV4P/manifest.py | 25 ++++++++++--- src/omv/boards/OPENMV4_PRO/manifest.py | 26 ++++++++++--- src/omv/boards/OPENMVPT/manifest.py | 26 ++++++++++--- src/omv/boards/OPENMV_RT1060/manifest.py | 6 ++- src/omv/boards/PICO/manifest.py | 1 + .../arduino_nano_33_ble_sense/manifest.py | 1 + 14 files changed, 134 insertions(+), 25 deletions(-) create mode 100644 scripts/libraries/machine.py diff --git a/scripts/libraries/machine.py b/scripts/libraries/machine.py new file mode 100644 index 000000000..3c4d2540e --- /dev/null +++ b/scripts/libraries/machine.py @@ -0,0 +1,37 @@ +# This file is part of the OpenMV project. +# +# Copyright (c) 2023 Ibrahim Abdelkader +# Copyright (c) 2023 Kwabena W. Agyeman +# +# This work is licensed under the MIT license, see the file LICENSE for details. +# +# This is an extension to the machine module. Add any machine-related +# modules here, and freeze this module in the board's manifest, and those +# modules will be importable from machine. + +from umachine import * +import os + + +class LED: + def __init__(self, pin_name): + self.pin = Pin(pin_name, Pin.OUT) + board = self.boardname() + if board in []: + # All boards have inverted LEDs, add ones that don't here. + self.inverted = False + else: + self.inverted = True + + def boardname(self): + # Currently the most portable way to get a board name. + return os.uname().machine.split("with")[0] + + def on(self): + self.pin(not self.inverted) + + def off(self): + self.pin(self.inverted) + + def toggle(self): + self.pin(not self.pin()) diff --git a/src/omv/boards/ARDUINO_GIGA/manifest.py b/src/omv/boards/ARDUINO_GIGA/manifest.py index bd831d36e..b4bafa38f 100644 --- a/src/omv/boards/ARDUINO_GIGA/manifest.py +++ b/src/omv/boards/ARDUINO_GIGA/manifest.py @@ -7,6 +7,8 @@ require("neopixel") freeze ("$(OMV_LIB_DIR)/", "modbus.py") freeze ("$(OMV_LIB_DIR)/", "pid.py") freeze ("$(OMV_LIB_DIR)/", "gt911.py") +freeze ("$(OMV_LIB_DIR)/", "machine.py") +freeze ("$(OMV_LIB_DIR)/", "display.py") # Networking require("ntptime") @@ -15,7 +17,6 @@ freeze ("$(OMV_LIB_DIR)/", "rpc.py") freeze ("$(OMV_LIB_DIR)/", "rtsp.py") freeze ("$(OMV_LIB_DIR)/", "mqtt.py") freeze ("$(OMV_LIB_DIR)/", "urequests.py") -freeze ("$(OMV_LIB_DIR)/", "display.py") # Utils require("time") diff --git a/src/omv/boards/ARDUINO_NANO_RP2040_CONNECT/manifest.py b/src/omv/boards/ARDUINO_NANO_RP2040_CONNECT/manifest.py index 671b15585..b1f5e2227 100644 --- a/src/omv/boards/ARDUINO_NANO_RP2040_CONNECT/manifest.py +++ b/src/omv/boards/ARDUINO_NANO_RP2040_CONNECT/manifest.py @@ -8,6 +8,7 @@ require("onewire") require("ds18x20") require("dht") require("neopixel") +freeze ("$(OMV_LIB_DIR)/", "machine.py") # Networking require("ntptime") diff --git a/src/omv/boards/ARDUINO_NICLA_VISION/manifest.py b/src/omv/boards/ARDUINO_NICLA_VISION/manifest.py index d6a11fdbd..91b247fd8 100644 --- a/src/omv/boards/ARDUINO_NICLA_VISION/manifest.py +++ b/src/omv/boards/ARDUINO_NICLA_VISION/manifest.py @@ -10,6 +10,7 @@ require("neopixel") freeze ("$(OMV_LIB_DIR)/", "modbus.py") freeze ("$(OMV_LIB_DIR)/", "pid.py") freeze ("$(OMV_LIB_DIR)/", "vl53l1x.py") +freeze ("$(OMV_LIB_DIR)/", "machine.py") # Networking require("ntptime") diff --git a/src/omv/boards/ARDUINO_PORTENTA_H7/manifest.py b/src/omv/boards/ARDUINO_PORTENTA_H7/manifest.py index 83c21832c..aa6e5549c 100644 --- a/src/omv/boards/ARDUINO_PORTENTA_H7/manifest.py +++ b/src/omv/boards/ARDUINO_PORTENTA_H7/manifest.py @@ -5,13 +5,14 @@ require("onewire") require("ds18x20") require("dht") require("neopixel") +freeze ("$(OMV_LIB_DIR)/", "modbus.py") +freeze ("$(OMV_LIB_DIR)/", "pid.py") freeze ("$(OMV_LIB_DIR)/", "lora.py") freeze ("$(OMV_LIB_DIR)/", "ssd1306.py") freeze ("$(OMV_LIB_DIR)/", "tb6612.py") freeze ("$(OMV_LIB_DIR)/", "vl53l1x.py") freeze ("$(OMV_LIB_DIR)/", "bno055.py") -freeze ("$(OMV_LIB_DIR)/", "modbus.py") -freeze ("$(OMV_LIB_DIR)/", "pid.py") +freeze ("$(OMV_LIB_DIR)/", "machine.py") # Networking require("ntptime") diff --git a/src/omv/boards/OPENMV2/manifest.py b/src/omv/boards/OPENMV2/manifest.py index 38dddc1af..407a15716 100644 --- a/src/omv/boards/OPENMV2/manifest.py +++ b/src/omv/boards/OPENMV2/manifest.py @@ -9,3 +9,4 @@ freeze ("$(OMV_LIB_DIR)/", "rtsp.py") freeze ("$(OMV_LIB_DIR)/", "ssd1306.py") freeze ("$(OMV_LIB_DIR)/", "tb6612.py") freeze ("$(OMV_LIB_DIR)/", "vl53l1x.py") +freeze ("$(OMV_LIB_DIR)/", "machine.py") diff --git a/src/omv/boards/OPENMV3/manifest.py b/src/omv/boards/OPENMV3/manifest.py index 38dddc1af..407a15716 100644 --- a/src/omv/boards/OPENMV3/manifest.py +++ b/src/omv/boards/OPENMV3/manifest.py @@ -9,3 +9,4 @@ freeze ("$(OMV_LIB_DIR)/", "rtsp.py") freeze ("$(OMV_LIB_DIR)/", "ssd1306.py") freeze ("$(OMV_LIB_DIR)/", "tb6612.py") freeze ("$(OMV_LIB_DIR)/", "vl53l1x.py") +freeze ("$(OMV_LIB_DIR)/", "machine.py") diff --git a/src/omv/boards/OPENMV4/manifest.py b/src/omv/boards/OPENMV4/manifest.py index 1cf809b5a..3ae7aa433 100644 --- a/src/omv/boards/OPENMV4/manifest.py +++ b/src/omv/boards/OPENMV4/manifest.py @@ -1,12 +1,27 @@ include("$(MPY_DIR)/extmod/uasyncio") -freeze ("$(OMV_LIB_DIR)/", "bno055.py") + +# Drivers +require("onewire") +require("ds18x20") +require("dht") +require("neopixel") freeze ("$(OMV_LIB_DIR)/", "modbus.py") -freeze ("$(OMV_LIB_DIR)/", "mqtt.py") -freeze ("$(OMV_LIB_DIR)/", "mutex.py") freeze ("$(OMV_LIB_DIR)/", "pid.py") -freeze ("$(OMV_LIB_DIR)/", "rpc.py") -freeze ("$(OMV_LIB_DIR)/", "rtsp.py") +freeze ("$(OMV_LIB_DIR)/", "bno055.py") freeze ("$(OMV_LIB_DIR)/", "ssd1306.py") freeze ("$(OMV_LIB_DIR)/", "tb6612.py") freeze ("$(OMV_LIB_DIR)/", "vl53l1x.py") +freeze ("$(OMV_LIB_DIR)/", "machine.py") + +# Networking +require("ntptime") +require("webrepl") +freeze ("$(OMV_LIB_DIR)/", "rpc.py") +freeze ("$(OMV_LIB_DIR)/", "rtsp.py") +freeze ("$(OMV_LIB_DIR)/", "mqtt.py") freeze ("$(OMV_LIB_DIR)/", "urequests.py") + +# Utils +require("time") +require("logging") +freeze ("$(OMV_LIB_DIR)/", "mutex.py") diff --git a/src/omv/boards/OPENMV4P/manifest.py b/src/omv/boards/OPENMV4P/manifest.py index 1cf809b5a..3ae7aa433 100644 --- a/src/omv/boards/OPENMV4P/manifest.py +++ b/src/omv/boards/OPENMV4P/manifest.py @@ -1,12 +1,27 @@ include("$(MPY_DIR)/extmod/uasyncio") -freeze ("$(OMV_LIB_DIR)/", "bno055.py") + +# Drivers +require("onewire") +require("ds18x20") +require("dht") +require("neopixel") freeze ("$(OMV_LIB_DIR)/", "modbus.py") -freeze ("$(OMV_LIB_DIR)/", "mqtt.py") -freeze ("$(OMV_LIB_DIR)/", "mutex.py") freeze ("$(OMV_LIB_DIR)/", "pid.py") -freeze ("$(OMV_LIB_DIR)/", "rpc.py") -freeze ("$(OMV_LIB_DIR)/", "rtsp.py") +freeze ("$(OMV_LIB_DIR)/", "bno055.py") freeze ("$(OMV_LIB_DIR)/", "ssd1306.py") freeze ("$(OMV_LIB_DIR)/", "tb6612.py") freeze ("$(OMV_LIB_DIR)/", "vl53l1x.py") +freeze ("$(OMV_LIB_DIR)/", "machine.py") + +# Networking +require("ntptime") +require("webrepl") +freeze ("$(OMV_LIB_DIR)/", "rpc.py") +freeze ("$(OMV_LIB_DIR)/", "rtsp.py") +freeze ("$(OMV_LIB_DIR)/", "mqtt.py") freeze ("$(OMV_LIB_DIR)/", "urequests.py") + +# Utils +require("time") +require("logging") +freeze ("$(OMV_LIB_DIR)/", "mutex.py") diff --git a/src/omv/boards/OPENMV4_PRO/manifest.py b/src/omv/boards/OPENMV4_PRO/manifest.py index e94bba213..3ae7aa433 100644 --- a/src/omv/boards/OPENMV4_PRO/manifest.py +++ b/src/omv/boards/OPENMV4_PRO/manifest.py @@ -1,13 +1,27 @@ include("$(MPY_DIR)/extmod/uasyncio") -freeze ("$(OMV_LIB_DIR)/", "bno055.py") + +# Drivers +require("onewire") +require("ds18x20") +require("dht") +require("neopixel") freeze ("$(OMV_LIB_DIR)/", "modbus.py") -freeze ("$(OMV_LIB_DIR)/", "mqtt.py") -freeze ("$(OMV_LIB_DIR)/", "mutex.py") freeze ("$(OMV_LIB_DIR)/", "pid.py") -freeze ("$(OMV_LIB_DIR)/", "rpc.py") -freeze ("$(OMV_LIB_DIR)/", "rtsp.py") +freeze ("$(OMV_LIB_DIR)/", "bno055.py") freeze ("$(OMV_LIB_DIR)/", "ssd1306.py") freeze ("$(OMV_LIB_DIR)/", "tb6612.py") freeze ("$(OMV_LIB_DIR)/", "vl53l1x.py") +freeze ("$(OMV_LIB_DIR)/", "machine.py") + +# Networking +require("ntptime") +require("webrepl") +freeze ("$(OMV_LIB_DIR)/", "rpc.py") +freeze ("$(OMV_LIB_DIR)/", "rtsp.py") +freeze ("$(OMV_LIB_DIR)/", "mqtt.py") freeze ("$(OMV_LIB_DIR)/", "urequests.py") -freeze ("$(OMV_LIB_DIR)/", "uping.py") + +# Utils +require("time") +require("logging") +freeze ("$(OMV_LIB_DIR)/", "mutex.py") diff --git a/src/omv/boards/OPENMVPT/manifest.py b/src/omv/boards/OPENMVPT/manifest.py index 38dddc1af..3ae7aa433 100644 --- a/src/omv/boards/OPENMVPT/manifest.py +++ b/src/omv/boards/OPENMVPT/manifest.py @@ -1,11 +1,27 @@ include("$(MPY_DIR)/extmod/uasyncio") -freeze ("$(OMV_LIB_DIR)/", "bno055.py") + +# Drivers +require("onewire") +require("ds18x20") +require("dht") +require("neopixel") freeze ("$(OMV_LIB_DIR)/", "modbus.py") -freeze ("$(OMV_LIB_DIR)/", "mqtt.py") -freeze ("$(OMV_LIB_DIR)/", "mutex.py") freeze ("$(OMV_LIB_DIR)/", "pid.py") -freeze ("$(OMV_LIB_DIR)/", "rpc.py") -freeze ("$(OMV_LIB_DIR)/", "rtsp.py") +freeze ("$(OMV_LIB_DIR)/", "bno055.py") freeze ("$(OMV_LIB_DIR)/", "ssd1306.py") freeze ("$(OMV_LIB_DIR)/", "tb6612.py") freeze ("$(OMV_LIB_DIR)/", "vl53l1x.py") +freeze ("$(OMV_LIB_DIR)/", "machine.py") + +# Networking +require("ntptime") +require("webrepl") +freeze ("$(OMV_LIB_DIR)/", "rpc.py") +freeze ("$(OMV_LIB_DIR)/", "rtsp.py") +freeze ("$(OMV_LIB_DIR)/", "mqtt.py") +freeze ("$(OMV_LIB_DIR)/", "urequests.py") + +# Utils +require("time") +require("logging") +freeze ("$(OMV_LIB_DIR)/", "mutex.py") diff --git a/src/omv/boards/OPENMV_RT1060/manifest.py b/src/omv/boards/OPENMV_RT1060/manifest.py index 85b678037..a4c1dd7df 100644 --- a/src/omv/boards/OPENMV_RT1060/manifest.py +++ b/src/omv/boards/OPENMV_RT1060/manifest.py @@ -5,9 +5,13 @@ require("onewire") require("ds18x20") require("dht") require("neopixel") -freeze ("$(OMV_LIB_DIR)/", "lora.py") freeze ("$(OMV_LIB_DIR)/", "modbus.py") freeze ("$(OMV_LIB_DIR)/", "pid.py") +freeze ("$(OMV_LIB_DIR)/", "bno055.py") +freeze ("$(OMV_LIB_DIR)/", "ssd1306.py") +freeze ("$(OMV_LIB_DIR)/", "tb6612.py") +freeze ("$(OMV_LIB_DIR)/", "vl53l1x.py") +freeze ("$(OMV_LIB_DIR)/", "machine.py") # Networking require("ntptime") diff --git a/src/omv/boards/PICO/manifest.py b/src/omv/boards/PICO/manifest.py index 0eb0e634f..68d75e3a8 100644 --- a/src/omv/boards/PICO/manifest.py +++ b/src/omv/boards/PICO/manifest.py @@ -9,6 +9,7 @@ require("onewire") require("ds18x20") require("dht") require("neopixel") +freeze ("$(OMV_LIB_DIR)/", "machine.py") # Utils require("time") diff --git a/src/omv/boards/arduino_nano_33_ble_sense/manifest.py b/src/omv/boards/arduino_nano_33_ble_sense/manifest.py index 10a2c0d3e..e58c88d3f 100644 --- a/src/omv/boards/arduino_nano_33_ble_sense/manifest.py +++ b/src/omv/boards/arduino_nano_33_ble_sense/manifest.py @@ -12,6 +12,7 @@ require("dht") require("neopixel") freeze("$(BOARD_DIR)/modules/", "imu.py") freeze("$(OMV_LIB_DIR)/apds9960/apds9960") +freeze ("$(OMV_LIB_DIR)/", "machine.py") # Utils require("time")