Merge branch 'main' into main
This commit is contained in:
commit
525262cd9a
5
.gitmodules
vendored
5
.gitmodules
vendored
@ -286,6 +286,9 @@
|
|||||||
[submodule "frozen/Adafruit_CircuitPython_FakeRequests"]
|
[submodule "frozen/Adafruit_CircuitPython_FakeRequests"]
|
||||||
path = frozen/Adafruit_CircuitPython_FakeRequests
|
path = frozen/Adafruit_CircuitPython_FakeRequests
|
||||||
url = https://github.com/adafruit/Adafruit_CircuitPython_FakeRequests.git
|
url = https://github.com/adafruit/Adafruit_CircuitPython_FakeRequests.git
|
||||||
|
[submodule "frozen/pew-pewpew-lcd"]
|
||||||
|
path = frozen/pew-pewpew-lcd
|
||||||
|
url = https://github.com/pypewpew/pew-pewpew-lcd.git
|
||||||
[submodule "ports/espressif/boards/mixgo_ce_udisk/cp_lib"]
|
[submodule "ports/espressif/boards/mixgo_ce_udisk/cp_lib"]
|
||||||
path = ports/espressif/boards/mixgo_ce_udisk/cp_lib
|
path = ports/espressif/boards/mixgo_ce_udisk/cp_lib
|
||||||
url = https://github.com/dahanzimin/circuitpython_lib.git
|
url = https://github.com/dahanzimin/circuitpython_lib.git
|
@ -9,16 +9,15 @@
|
|||||||
version: 2
|
version: 2
|
||||||
|
|
||||||
build:
|
build:
|
||||||
os: ubuntu-20.04
|
os: ubuntu-20.04
|
||||||
tools:
|
tools:
|
||||||
python: "3"
|
python: "3"
|
||||||
|
jobs:
|
||||||
submodules:
|
post_install:
|
||||||
include:
|
- python tools/ci_fetch_deps.py docs HEAD
|
||||||
- extmod/ulab
|
|
||||||
|
|
||||||
formats:
|
formats:
|
||||||
- pdf
|
- pdf
|
||||||
|
|
||||||
python:
|
python:
|
||||||
install:
|
install:
|
||||||
|
1
Makefile
1
Makefile
@ -61,6 +61,7 @@ TRANSLATE_SOURCES_EXC = -path "ports/*/build-*" \
|
|||||||
|
|
||||||
help:
|
help:
|
||||||
@echo "Please use \`make <target>' where <target> is one of"
|
@echo "Please use \`make <target>' where <target> is one of"
|
||||||
|
@echo " fetch-submodules to fetch dependencies from submodules, run this right after you clone the repo"
|
||||||
@echo " html to make standalone HTML files"
|
@echo " html to make standalone HTML files"
|
||||||
@echo " dirhtml to make HTML files named index.html in directories"
|
@echo " dirhtml to make HTML files named index.html in directories"
|
||||||
@echo " singlehtml to make a single large HTML file"
|
@echo " singlehtml to make a single large HTML file"
|
||||||
|
8
conf.py
8
conf.py
@ -53,9 +53,13 @@ subprocess.check_output(["make", "stubs"])
|
|||||||
modules_support_matrix = shared_bindings_matrix.support_matrix_by_board()
|
modules_support_matrix = shared_bindings_matrix.support_matrix_by_board()
|
||||||
modules_support_matrix_reverse = defaultdict(list)
|
modules_support_matrix_reverse = defaultdict(list)
|
||||||
for board, modules in modules_support_matrix.items():
|
for board, modules in modules_support_matrix.items():
|
||||||
for module in modules:
|
for module in modules[0]:
|
||||||
modules_support_matrix_reverse[module].append(board)
|
modules_support_matrix_reverse[module].append(board)
|
||||||
modules_support_matrix_reverse = dict((module, sorted(boards)) for module, boards in modules_support_matrix_reverse.items())
|
|
||||||
|
modules_support_matrix_reverse = dict(
|
||||||
|
(module, sorted(boards))
|
||||||
|
for module, boards in modules_support_matrix_reverse.items()
|
||||||
|
)
|
||||||
|
|
||||||
html_context = {
|
html_context = {
|
||||||
'support_matrix': modules_support_matrix,
|
'support_matrix': modules_support_matrix,
|
||||||
|
@ -57,6 +57,11 @@ bool vm_used_ble;
|
|||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
|
|
||||||
|
void bleio_user_reset() {
|
||||||
|
// HCI doesn't support the BLE workflow so just do a full reset.
|
||||||
|
bleio_reset();
|
||||||
|
}
|
||||||
|
|
||||||
// Turn off BLE on a reset or reload.
|
// Turn off BLE on a reset or reload.
|
||||||
void bleio_reset() {
|
void bleio_reset() {
|
||||||
// Create a UUID object for all CCCD's.
|
// Create a UUID object for all CCCD's.
|
||||||
|
@ -4,11 +4,18 @@
|
|||||||
All builtin functions and exceptions are described here. They are also
|
All builtin functions and exceptions are described here. They are also
|
||||||
available via ``builtins`` module.
|
available via ``builtins`` module.
|
||||||
|
|
||||||
|
For more information about built-ins, see the following CPython documentation:
|
||||||
|
|
||||||
|
* `Builtin CPython Functions <https://docs.python.org/3/library/functions.html>`_
|
||||||
|
* `Builtin CPython Exceptions <https://docs.python.org/3/library/exceptions.html>`_
|
||||||
|
* `Builtin CPython Constants <https://docs.python.org/3/library/constants.html>`_
|
||||||
|
|
||||||
|
.. note:: Not all of these functions, types, exceptions, and constants are turned
|
||||||
|
on in all CircuitPython ports, for space reasons.
|
||||||
|
|
||||||
Functions and types
|
Functions and types
|
||||||
-------------------
|
-------------------
|
||||||
|
|
||||||
Not all of these functions and types are turned on in all CircuitPython ports, for space reasons.
|
|
||||||
|
|
||||||
.. function:: abs()
|
.. function:: abs()
|
||||||
|
|
||||||
.. function:: all()
|
.. function:: all()
|
||||||
@ -160,46 +167,77 @@ Not all of these functions and types are turned on in all CircuitPython ports, f
|
|||||||
Exceptions
|
Exceptions
|
||||||
----------
|
----------
|
||||||
|
|
||||||
|
.. exception:: ArithmeticError
|
||||||
|
|
||||||
.. exception:: AssertionError
|
.. exception:: AssertionError
|
||||||
|
|
||||||
.. exception:: AttributeError
|
.. exception:: AttributeError
|
||||||
|
|
||||||
|
.. exception:: BaseException
|
||||||
|
|
||||||
|
.. exception:: BrokenPipeError
|
||||||
|
|
||||||
|
.. exception:: ConnectionError
|
||||||
|
|
||||||
|
.. exception:: EOFError
|
||||||
|
|
||||||
.. exception:: Exception
|
.. exception:: Exception
|
||||||
|
|
||||||
.. exception:: ImportError
|
.. exception:: ImportError
|
||||||
|
|
||||||
|
.. exception:: IndentationError
|
||||||
|
|
||||||
.. exception:: IndexError
|
.. exception:: IndexError
|
||||||
|
|
||||||
.. exception:: KeyboardInterrupt
|
.. exception:: KeyboardInterrupt
|
||||||
|
|
||||||
.. exception:: KeyError
|
.. exception:: KeyError
|
||||||
|
|
||||||
|
.. exception:: LookupError
|
||||||
|
|
||||||
.. exception:: MemoryError
|
.. exception:: MemoryError
|
||||||
|
|
||||||
|
.. exception:: MpyError
|
||||||
|
|
||||||
|
Not a part of the CPython standard library
|
||||||
|
|
||||||
.. exception:: NameError
|
.. exception:: NameError
|
||||||
|
|
||||||
.. exception:: NotImplementedError
|
.. exception:: NotImplementedError
|
||||||
|
|
||||||
.. exception:: OSError
|
.. exception:: OSError
|
||||||
|
|
||||||
|
.. exception:: OverflowError
|
||||||
|
|
||||||
.. exception:: RuntimeError
|
.. exception:: RuntimeError
|
||||||
|
|
||||||
.. exception:: ReloadException
|
.. exception:: ReloadException
|
||||||
|
|
||||||
`ReloadException` is used internally to deal with soft restarts.
|
`ReloadException` is used internally to deal with soft restarts.
|
||||||
|
|
||||||
|
Not a part of the CPython standard library
|
||||||
|
|
||||||
|
.. exception:: StopAsyncIteration
|
||||||
|
|
||||||
.. exception:: StopIteration
|
.. exception:: StopIteration
|
||||||
|
|
||||||
.. exception:: SyntaxError
|
.. exception:: SyntaxError
|
||||||
|
|
||||||
.. exception:: SystemExit
|
.. exception:: SystemExit
|
||||||
|
|
||||||
|see_cpython| :py:class:`cpython:SystemExit`.
|
.. exception:: TimeoutError
|
||||||
|
|
||||||
.. exception:: TypeError
|
.. exception:: TypeError
|
||||||
|
|
||||||
|see_cpython| :py:class:`cpython:TypeError`.
|
.. exception:: UnicodeError
|
||||||
|
|
||||||
.. exception:: ValueError
|
.. exception:: ValueError
|
||||||
|
|
||||||
.. exception:: ZeroDivisionError
|
.. exception:: ZeroDivisionError
|
||||||
|
|
||||||
|
Constants
|
||||||
|
---------
|
||||||
|
|
||||||
|
.. data:: Ellipsis
|
||||||
|
|
||||||
|
.. data:: NotImplemented
|
||||||
|
@ -62,9 +62,17 @@ additional_modules = {
|
|||||||
"fontio": "CIRCUITPY_DISPLAYIO",
|
"fontio": "CIRCUITPY_DISPLAYIO",
|
||||||
"terminalio": "CIRCUITPY_DISPLAYIO",
|
"terminalio": "CIRCUITPY_DISPLAYIO",
|
||||||
"adafruit_bus_device": "CIRCUITPY_BUSDEVICE",
|
"adafruit_bus_device": "CIRCUITPY_BUSDEVICE",
|
||||||
"adafruit_pixelbuf": "CIRCUITPY_PIXELBUF"
|
"adafruit_pixelbuf": "CIRCUITPY_PIXELBUF",
|
||||||
|
"usb": "CIRCUITPY_USB_HOST",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
frozen_excludes = ["examples", "docs", "tests", "utils", "conf.py", "setup.py"]
|
||||||
|
"""Files and dirs at the root of a frozen directory that should be ignored.
|
||||||
|
This is the same list as in the preprocess_frozen_modules script."""
|
||||||
|
|
||||||
|
repository_urls = {}
|
||||||
|
"""Cache of repository URLs for frozen modules."""
|
||||||
|
|
||||||
def get_circuitpython_root_dir():
|
def get_circuitpython_root_dir():
|
||||||
""" The path to the root './circuitpython' directory
|
""" The path to the root './circuitpython' directory
|
||||||
"""
|
"""
|
||||||
@ -162,6 +170,63 @@ def get_settings_from_makefile(port_dir, board_name):
|
|||||||
|
|
||||||
return settings
|
return settings
|
||||||
|
|
||||||
|
def get_repository_url(directory):
|
||||||
|
if directory in repository_urls:
|
||||||
|
return repository_urls[directory]
|
||||||
|
readme = None
|
||||||
|
for readme_path in (
|
||||||
|
os.path.join(directory, "README.rst"),
|
||||||
|
os.path.join(os.path.dirname(directory), "README.rst")
|
||||||
|
):
|
||||||
|
if os.path.exists(readme_path):
|
||||||
|
readme = readme_path
|
||||||
|
break
|
||||||
|
path = None
|
||||||
|
if readme:
|
||||||
|
with open(readme, "r") as fp:
|
||||||
|
for line in fp.readlines():
|
||||||
|
if m := re.match("\s+:target:\s+(http\S+(docs.circuitpython|readthedocs)\S+)\s*", line):
|
||||||
|
path = m.group(1)
|
||||||
|
break
|
||||||
|
if m := re.search("<(http[^>]+)>", line):
|
||||||
|
path = m.group(1)
|
||||||
|
break
|
||||||
|
if path is None:
|
||||||
|
contents = subprocess.run(
|
||||||
|
["git", "remote", "get-url", "origin"],
|
||||||
|
encoding="utf-8",
|
||||||
|
errors="replace",
|
||||||
|
stdout=subprocess.PIPE,
|
||||||
|
stderr=subprocess.PIPE,
|
||||||
|
cwd=directory
|
||||||
|
)
|
||||||
|
path = contents.stdout.strip()
|
||||||
|
repository_urls[directory] = path
|
||||||
|
return path
|
||||||
|
|
||||||
|
def frozen_modules_from_dirs(frozen_mpy_dirs):
|
||||||
|
"""
|
||||||
|
Go through the list of frozen directories and extract the python modules.
|
||||||
|
Paths are of the type:
|
||||||
|
$(TOP)/frozen/Adafruit_CircuitPython_CircuitPlayground
|
||||||
|
$(TOP)/frozen/circuitpython-stage/meowbit
|
||||||
|
Python modules are at the root of the path, and are python files or directories
|
||||||
|
containing python files. Except the ones in the frozen_excludes list.
|
||||||
|
"""
|
||||||
|
frozen_modules = []
|
||||||
|
for frozen_path in filter(lambda x: x, frozen_mpy_dirs.split(" ")):
|
||||||
|
source_dir = get_circuitpython_root_dir() / frozen_path[7:]
|
||||||
|
url_repository = get_repository_url(source_dir)
|
||||||
|
for sub in source_dir.glob("*"):
|
||||||
|
if sub.name in frozen_excludes:
|
||||||
|
continue
|
||||||
|
if sub.name.endswith(".py"):
|
||||||
|
frozen_modules.append((sub.name[:-3], url_repository))
|
||||||
|
continue
|
||||||
|
if next(sub.glob("**/*.py"), None): # tests if not empty
|
||||||
|
frozen_modules.append((sub.name, url_repository))
|
||||||
|
return frozen_modules
|
||||||
|
|
||||||
def lookup_setting(settings, key, default=''):
|
def lookup_setting(settings, key, default=''):
|
||||||
while True:
|
while True:
|
||||||
value = settings.get(key, default)
|
value = settings.get(key, default)
|
||||||
@ -207,8 +272,14 @@ def support_matrix_by_board(use_branded_name=True):
|
|||||||
board_modules.append(base[module]['name'])
|
board_modules.append(base[module]['name'])
|
||||||
board_modules.sort()
|
board_modules.sort()
|
||||||
|
|
||||||
|
frozen_modules = []
|
||||||
|
if "FROZEN_MPY_DIRS" in settings:
|
||||||
|
frozen_modules = frozen_modules_from_dirs(settings["FROZEN_MPY_DIRS"])
|
||||||
|
if frozen_modules:
|
||||||
|
frozen_modules.sort()
|
||||||
|
|
||||||
# generate alias boards too
|
# generate alias boards too
|
||||||
board_matrix = [(board_name, board_modules)]
|
board_matrix = [(board_name, (board_modules, frozen_modules))]
|
||||||
if entry.name in aliases_by_board:
|
if entry.name in aliases_by_board:
|
||||||
for alias in aliases_by_board[entry.name]:
|
for alias in aliases_by_board[entry.name]:
|
||||||
if use_branded_name:
|
if use_branded_name:
|
||||||
@ -216,7 +287,7 @@ def support_matrix_by_board(use_branded_name=True):
|
|||||||
alias = aliases_brand_names[alias]
|
alias = aliases_brand_names[alias]
|
||||||
else:
|
else:
|
||||||
alias = alias.replace("_"," ").title()
|
alias = alias.replace("_"," ").title()
|
||||||
board_matrix.append( (alias, board_modules) )
|
board_matrix.append( (alias, (board_modules, frozen_modules)) )
|
||||||
|
|
||||||
return board_matrix # this is now a list of (board,modules)
|
return board_matrix # this is now a list of (board,modules)
|
||||||
|
|
||||||
@ -225,7 +296,6 @@ def support_matrix_by_board(use_branded_name=True):
|
|||||||
# flatmap with comprehensions
|
# flatmap with comprehensions
|
||||||
boards = dict(sorted([board for matrix in mapped_exec for board in matrix]))
|
boards = dict(sorted([board for matrix in mapped_exec for board in matrix]))
|
||||||
|
|
||||||
# print(json.dumps(boards, indent=2))
|
|
||||||
return boards
|
return boards
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
17
docs/static/filter.css
vendored
17
docs/static/filter.css
vendored
@ -7,8 +7,21 @@
|
|||||||
right: 10px;
|
right: 10px;
|
||||||
top: 4px;
|
top: 4px;
|
||||||
}
|
}
|
||||||
.support-matrix-table .this_module code,
|
|
||||||
.support-matrix-table .this_module span {
|
.support-matrix-table .reference.external {
|
||||||
|
box-sizing: border-box;
|
||||||
|
font-weight: 700;
|
||||||
|
color: #404040;
|
||||||
|
font-family: "SFMono-Regular", Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", Courier, monospace;
|
||||||
|
padding: 2px 5px;
|
||||||
|
background: white;
|
||||||
|
border: 1px solid #e1e4e5;
|
||||||
|
font-size: 75%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.support-matrix-table .this_module,
|
||||||
|
.support-matrix-table .this_module.reference.external,
|
||||||
|
.support-matrix-table .this_module * {
|
||||||
background: black;
|
background: black;
|
||||||
color: white;
|
color: white;
|
||||||
}
|
}
|
||||||
|
4
docs/static/filter.js
vendored
4
docs/static/filter.js
vendored
@ -44,14 +44,14 @@ $(() => {
|
|||||||
var nvisible = 0;
|
var nvisible = 0;
|
||||||
$(".support-matrix-table tbody tr").each( (index,item) => {
|
$(".support-matrix-table tbody tr").each( (index,item) => {
|
||||||
var name = $(item).find("td:first-child p").html();
|
var name = $(item).find("td:first-child p").html();
|
||||||
var modules = $(item).find("a.reference.internal");
|
var modules = $(item).find("code, a.reference.external");
|
||||||
var matching_all = true;
|
var matching_all = true;
|
||||||
//
|
//
|
||||||
list_search.forEach((sstring) => {
|
list_search.forEach((sstring) => {
|
||||||
var matching = (sstring[0] == "-");
|
var matching = (sstring[0] == "-");
|
||||||
for(var modi = 0; modi < modules.length; ++modi) {
|
for(var modi = 0; modi < modules.length; ++modi) {
|
||||||
module = modules[modi];
|
module = modules[modi];
|
||||||
var mod_name = module.firstChild.firstChild.textContent;
|
var mod_name = module.firstChild.textContent;
|
||||||
if(sstring[0] == "-") {
|
if(sstring[0] == "-") {
|
||||||
if(mod_name.match(sstring.substr(1))) {
|
if(mod_name.match(sstring.substr(1))) {
|
||||||
matching = false;
|
matching = false;
|
||||||
|
@ -1 +1 @@
|
|||||||
Subproject commit 2dfd61a0d5ffc8048e72d24e5ecdac9a74bb2bc3
|
Subproject commit 3d1aab0daf63c3b4476f73cba39cf5da49e1e4aa
|
@ -1 +1 @@
|
|||||||
Subproject commit 742ac7c8fb52bb85d9fd367b60a7f80475d7ed14
|
Subproject commit 2d8310f19d1bdce817df13e807b409b5b057fc21
|
@ -1 +1 @@
|
|||||||
Subproject commit 5fdd62ab69fda70407644acc6f9b45681da9ef68
|
Subproject commit 850c3dc512f7feae1eaad20bdc1c5e4c63c92f08
|
1
frozen/pew-pewpew-lcd
Submodule
1
frozen/pew-pewpew-lcd
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit 837f3e5f16accae5b3677954921b5ddd517f0799
|
19
locale/ID.po
19
locale/ID.po
@ -113,6 +113,10 @@ msgstr "%q panjang harus >= 1"
|
|||||||
msgid "%q must be %d-%d"
|
msgid "%q must be %d-%d"
|
||||||
msgstr "%q harus %d-%d"
|
msgstr "%q harus %d-%d"
|
||||||
|
|
||||||
|
#: shared-bindings/displayio/Display.c
|
||||||
|
msgid "%q must be 1 when %q is True"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/argcheck.c shared-bindings/gifio/GifWriter.c
|
#: py/argcheck.c shared-bindings/gifio/GifWriter.c
|
||||||
msgid "%q must be <= %d"
|
msgid "%q must be <= %d"
|
||||||
msgstr "%q harus <= %d"
|
msgstr "%q harus <= %d"
|
||||||
@ -1768,6 +1772,10 @@ msgstr "Tidak ada pull-down pada pin; 1Mohm direkomendasikan"
|
|||||||
msgid "No space left on device"
|
msgid "No space left on device"
|
||||||
msgstr "Tidak ada ruang yang tersisa di perangkat"
|
msgstr "Tidak ada ruang yang tersisa di perangkat"
|
||||||
|
|
||||||
|
#: py/moduerrno.c
|
||||||
|
msgid "No such device"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/moduerrno.c
|
#: py/moduerrno.c
|
||||||
msgid "No such file/directory"
|
msgid "No such file/directory"
|
||||||
msgstr "Tidak ada file/direktori"
|
msgstr "Tidak ada file/direktori"
|
||||||
@ -1880,6 +1888,10 @@ msgstr ""
|
|||||||
msgid "Only one color can be transparent at a time"
|
msgid "Only one color can be transparent at a time"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: py/moduerrno.c
|
||||||
|
msgid "Operation not permitted"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: ports/espressif/bindings/espidf/__init__.c ports/espressif/esp_error.c
|
#: ports/espressif/bindings/espidf/__init__.c ports/espressif/esp_error.c
|
||||||
msgid "Operation or feature not supported"
|
msgid "Operation or feature not supported"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -2556,10 +2568,6 @@ msgstr "Tipe bus tampilan tidak didukung"
|
|||||||
msgid "Unsupported format"
|
msgid "Unsupported format"
|
||||||
msgstr "Format tidak didukung"
|
msgstr "Format tidak didukung"
|
||||||
|
|
||||||
#: py/moduerrno.c
|
|
||||||
msgid "Unsupported operation"
|
|
||||||
msgstr "Operasi yang tidak didukung"
|
|
||||||
|
|
||||||
#: ports/espressif/common-hal/dualbank/__init__.c
|
#: ports/espressif/common-hal/dualbank/__init__.c
|
||||||
msgid "Update Failed"
|
msgid "Update Failed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -4676,6 +4684,9 @@ msgstr "zi harus berjenis float"
|
|||||||
msgid "zi must be of shape (n_section, 2)"
|
msgid "zi must be of shape (n_section, 2)"
|
||||||
msgstr "Zi harus berbentuk (n_section, 2)"
|
msgstr "Zi harus berbentuk (n_section, 2)"
|
||||||
|
|
||||||
|
#~ msgid "Unsupported operation"
|
||||||
|
#~ msgstr "Operasi yang tidak didukung"
|
||||||
|
|
||||||
#~ msgid ""
|
#~ msgid ""
|
||||||
#~ "\n"
|
#~ "\n"
|
||||||
#~ "Code stopped by auto-reload.\n"
|
#~ "Code stopped by auto-reload.\n"
|
||||||
|
@ -107,6 +107,10 @@ msgstr ""
|
|||||||
msgid "%q must be %d-%d"
|
msgid "%q must be %d-%d"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: shared-bindings/displayio/Display.c
|
||||||
|
msgid "%q must be 1 when %q is True"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/argcheck.c shared-bindings/gifio/GifWriter.c
|
#: py/argcheck.c shared-bindings/gifio/GifWriter.c
|
||||||
msgid "%q must be <= %d"
|
msgid "%q must be <= %d"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -1749,6 +1753,10 @@ msgstr ""
|
|||||||
msgid "No space left on device"
|
msgid "No space left on device"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: py/moduerrno.c
|
||||||
|
msgid "No such device"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/moduerrno.c
|
#: py/moduerrno.c
|
||||||
msgid "No such file/directory"
|
msgid "No such file/directory"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -1856,6 +1864,10 @@ msgstr ""
|
|||||||
msgid "Only one color can be transparent at a time"
|
msgid "Only one color can be transparent at a time"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: py/moduerrno.c
|
||||||
|
msgid "Operation not permitted"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: ports/espressif/bindings/espidf/__init__.c ports/espressif/esp_error.c
|
#: ports/espressif/bindings/espidf/__init__.c ports/espressif/esp_error.c
|
||||||
msgid "Operation or feature not supported"
|
msgid "Operation or feature not supported"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -2521,10 +2533,6 @@ msgstr ""
|
|||||||
msgid "Unsupported format"
|
msgid "Unsupported format"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: py/moduerrno.c
|
|
||||||
msgid "Unsupported operation"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ports/espressif/common-hal/dualbank/__init__.c
|
#: ports/espressif/common-hal/dualbank/__init__.c
|
||||||
msgid "Update Failed"
|
msgid "Update Failed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
16
locale/cs.po
16
locale/cs.po
@ -112,6 +112,10 @@ msgstr "%q délka musí být >= 1"
|
|||||||
msgid "%q must be %d-%d"
|
msgid "%q must be %d-%d"
|
||||||
msgstr "%q musí být %d-%d"
|
msgstr "%q musí být %d-%d"
|
||||||
|
|
||||||
|
#: shared-bindings/displayio/Display.c
|
||||||
|
msgid "%q must be 1 when %q is True"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/argcheck.c shared-bindings/gifio/GifWriter.c
|
#: py/argcheck.c shared-bindings/gifio/GifWriter.c
|
||||||
msgid "%q must be <= %d"
|
msgid "%q must be <= %d"
|
||||||
msgstr "%q musí být <= %d"
|
msgstr "%q musí být <= %d"
|
||||||
@ -1756,6 +1760,10 @@ msgstr ""
|
|||||||
msgid "No space left on device"
|
msgid "No space left on device"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: py/moduerrno.c
|
||||||
|
msgid "No such device"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/moduerrno.c
|
#: py/moduerrno.c
|
||||||
msgid "No such file/directory"
|
msgid "No such file/directory"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -1863,6 +1871,10 @@ msgstr ""
|
|||||||
msgid "Only one color can be transparent at a time"
|
msgid "Only one color can be transparent at a time"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: py/moduerrno.c
|
||||||
|
msgid "Operation not permitted"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: ports/espressif/bindings/espidf/__init__.c ports/espressif/esp_error.c
|
#: ports/espressif/bindings/espidf/__init__.c ports/espressif/esp_error.c
|
||||||
msgid "Operation or feature not supported"
|
msgid "Operation or feature not supported"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -2530,10 +2542,6 @@ msgstr ""
|
|||||||
msgid "Unsupported format"
|
msgid "Unsupported format"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: py/moduerrno.c
|
|
||||||
msgid "Unsupported operation"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ports/espressif/common-hal/dualbank/__init__.c
|
#: ports/espressif/common-hal/dualbank/__init__.c
|
||||||
msgid "Update Failed"
|
msgid "Update Failed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -115,6 +115,10 @@ msgstr "%q Länge muss >= 1 sein"
|
|||||||
msgid "%q must be %d-%d"
|
msgid "%q must be %d-%d"
|
||||||
msgstr "%q muss %d-%d sein"
|
msgstr "%q muss %d-%d sein"
|
||||||
|
|
||||||
|
#: shared-bindings/displayio/Display.c
|
||||||
|
msgid "%q must be 1 when %q is True"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/argcheck.c shared-bindings/gifio/GifWriter.c
|
#: py/argcheck.c shared-bindings/gifio/GifWriter.c
|
||||||
msgid "%q must be <= %d"
|
msgid "%q must be <= %d"
|
||||||
msgstr "%q muss <= %d sein"
|
msgstr "%q muss <= %d sein"
|
||||||
@ -1776,6 +1780,10 @@ msgstr "Kein Pulldown-Widerstand am Pin; 1 MOhm wird vorgeschlagen"
|
|||||||
msgid "No space left on device"
|
msgid "No space left on device"
|
||||||
msgstr "Kein Speicherplatz mehr verfügbar auf dem Gerät"
|
msgstr "Kein Speicherplatz mehr verfügbar auf dem Gerät"
|
||||||
|
|
||||||
|
#: py/moduerrno.c
|
||||||
|
msgid "No such device"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/moduerrno.c
|
#: py/moduerrno.c
|
||||||
msgid "No such file/directory"
|
msgid "No such file/directory"
|
||||||
msgstr "Keine solche Datei/Verzeichnis"
|
msgstr "Keine solche Datei/Verzeichnis"
|
||||||
@ -1889,6 +1897,10 @@ msgstr "Nur eine alarm-time kann gesetzt werden."
|
|||||||
msgid "Only one color can be transparent at a time"
|
msgid "Only one color can be transparent at a time"
|
||||||
msgstr "Nur eine Farbe kann transparent sein zu einer Zeit"
|
msgstr "Nur eine Farbe kann transparent sein zu einer Zeit"
|
||||||
|
|
||||||
|
#: py/moduerrno.c
|
||||||
|
msgid "Operation not permitted"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: ports/espressif/bindings/espidf/__init__.c ports/espressif/esp_error.c
|
#: ports/espressif/bindings/espidf/__init__.c ports/espressif/esp_error.c
|
||||||
msgid "Operation or feature not supported"
|
msgid "Operation or feature not supported"
|
||||||
msgstr "Vorgang oder Funktion wird nicht unterstützt"
|
msgstr "Vorgang oder Funktion wird nicht unterstützt"
|
||||||
@ -2577,10 +2589,6 @@ msgstr "Nicht unterstützter display bus type"
|
|||||||
msgid "Unsupported format"
|
msgid "Unsupported format"
|
||||||
msgstr "Nicht unterstütztes Format"
|
msgstr "Nicht unterstütztes Format"
|
||||||
|
|
||||||
#: py/moduerrno.c
|
|
||||||
msgid "Unsupported operation"
|
|
||||||
msgstr "Nicht unterstützte Operation"
|
|
||||||
|
|
||||||
#: ports/espressif/common-hal/dualbank/__init__.c
|
#: ports/espressif/common-hal/dualbank/__init__.c
|
||||||
msgid "Update Failed"
|
msgid "Update Failed"
|
||||||
msgstr "Update fehlgeschlagen"
|
msgstr "Update fehlgeschlagen"
|
||||||
@ -4738,6 +4746,9 @@ msgstr "zi muss eine Gleitkommazahl sein"
|
|||||||
msgid "zi must be of shape (n_section, 2)"
|
msgid "zi must be of shape (n_section, 2)"
|
||||||
msgstr "zi muss die Form (n_section, 2) haben"
|
msgstr "zi muss die Form (n_section, 2) haben"
|
||||||
|
|
||||||
|
#~ msgid "Unsupported operation"
|
||||||
|
#~ msgstr "Nicht unterstützte Operation"
|
||||||
|
|
||||||
#~ msgid "divisor must be 4"
|
#~ msgid "divisor must be 4"
|
||||||
#~ msgstr "Teiler muss 4 sein"
|
#~ msgstr "Teiler muss 4 sein"
|
||||||
|
|
||||||
|
16
locale/el.po
16
locale/el.po
@ -107,6 +107,10 @@ msgstr ""
|
|||||||
msgid "%q must be %d-%d"
|
msgid "%q must be %d-%d"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: shared-bindings/displayio/Display.c
|
||||||
|
msgid "%q must be 1 when %q is True"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/argcheck.c shared-bindings/gifio/GifWriter.c
|
#: py/argcheck.c shared-bindings/gifio/GifWriter.c
|
||||||
msgid "%q must be <= %d"
|
msgid "%q must be <= %d"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -1749,6 +1753,10 @@ msgstr ""
|
|||||||
msgid "No space left on device"
|
msgid "No space left on device"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: py/moduerrno.c
|
||||||
|
msgid "No such device"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/moduerrno.c
|
#: py/moduerrno.c
|
||||||
msgid "No such file/directory"
|
msgid "No such file/directory"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -1856,6 +1864,10 @@ msgstr ""
|
|||||||
msgid "Only one color can be transparent at a time"
|
msgid "Only one color can be transparent at a time"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: py/moduerrno.c
|
||||||
|
msgid "Operation not permitted"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: ports/espressif/bindings/espidf/__init__.c ports/espressif/esp_error.c
|
#: ports/espressif/bindings/espidf/__init__.c ports/espressif/esp_error.c
|
||||||
msgid "Operation or feature not supported"
|
msgid "Operation or feature not supported"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -2521,10 +2533,6 @@ msgstr ""
|
|||||||
msgid "Unsupported format"
|
msgid "Unsupported format"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: py/moduerrno.c
|
|
||||||
msgid "Unsupported operation"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ports/espressif/common-hal/dualbank/__init__.c
|
#: ports/espressif/common-hal/dualbank/__init__.c
|
||||||
msgid "Update Failed"
|
msgid "Update Failed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -114,6 +114,10 @@ msgstr "%q length must be >= 1"
|
|||||||
msgid "%q must be %d-%d"
|
msgid "%q must be %d-%d"
|
||||||
msgstr "%q must be %d-%d"
|
msgstr "%q must be %d-%d"
|
||||||
|
|
||||||
|
#: shared-bindings/displayio/Display.c
|
||||||
|
msgid "%q must be 1 when %q is True"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/argcheck.c shared-bindings/gifio/GifWriter.c
|
#: py/argcheck.c shared-bindings/gifio/GifWriter.c
|
||||||
msgid "%q must be <= %d"
|
msgid "%q must be <= %d"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -1762,6 +1766,10 @@ msgstr "No pulldown on pin; 1Mohm recommended"
|
|||||||
msgid "No space left on device"
|
msgid "No space left on device"
|
||||||
msgstr "No space left on device"
|
msgstr "No space left on device"
|
||||||
|
|
||||||
|
#: py/moduerrno.c
|
||||||
|
msgid "No such device"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/moduerrno.c
|
#: py/moduerrno.c
|
||||||
msgid "No such file/directory"
|
msgid "No such file/directory"
|
||||||
msgstr "No such file/directory"
|
msgstr "No such file/directory"
|
||||||
@ -1873,6 +1881,10 @@ msgstr "Only one alarm.time alarm can be set."
|
|||||||
msgid "Only one color can be transparent at a time"
|
msgid "Only one color can be transparent at a time"
|
||||||
msgstr "Only one colour can be transparent at a time"
|
msgstr "Only one colour can be transparent at a time"
|
||||||
|
|
||||||
|
#: py/moduerrno.c
|
||||||
|
msgid "Operation not permitted"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: ports/espressif/bindings/espidf/__init__.c ports/espressif/esp_error.c
|
#: ports/espressif/bindings/espidf/__init__.c ports/espressif/esp_error.c
|
||||||
msgid "Operation or feature not supported"
|
msgid "Operation or feature not supported"
|
||||||
msgstr "Operation or feature not supported"
|
msgstr "Operation or feature not supported"
|
||||||
@ -2552,10 +2564,6 @@ msgstr "Unsupported display bus type"
|
|||||||
msgid "Unsupported format"
|
msgid "Unsupported format"
|
||||||
msgstr "Unsupported format"
|
msgstr "Unsupported format"
|
||||||
|
|
||||||
#: py/moduerrno.c
|
|
||||||
msgid "Unsupported operation"
|
|
||||||
msgstr "Unsupported operation"
|
|
||||||
|
|
||||||
#: ports/espressif/common-hal/dualbank/__init__.c
|
#: ports/espressif/common-hal/dualbank/__init__.c
|
||||||
msgid "Update Failed"
|
msgid "Update Failed"
|
||||||
msgstr "Update failed"
|
msgstr "Update failed"
|
||||||
@ -4677,6 +4685,9 @@ msgstr "zi must be of float type"
|
|||||||
msgid "zi must be of shape (n_section, 2)"
|
msgid "zi must be of shape (n_section, 2)"
|
||||||
msgstr "zi must be of shape (n_section, 2)"
|
msgstr "zi must be of shape (n_section, 2)"
|
||||||
|
|
||||||
|
#~ msgid "Unsupported operation"
|
||||||
|
#~ msgstr "Unsupported operation"
|
||||||
|
|
||||||
#~ msgid ""
|
#~ msgid ""
|
||||||
#~ "\n"
|
#~ "\n"
|
||||||
#~ "Code stopped by auto-reload.\n"
|
#~ "Code stopped by auto-reload.\n"
|
||||||
|
19
locale/es.po
19
locale/es.po
@ -116,6 +116,10 @@ msgstr ""
|
|||||||
msgid "%q must be %d-%d"
|
msgid "%q must be %d-%d"
|
||||||
msgstr "%q debe ser %d-%d"
|
msgstr "%q debe ser %d-%d"
|
||||||
|
|
||||||
|
#: shared-bindings/displayio/Display.c
|
||||||
|
msgid "%q must be 1 when %q is True"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/argcheck.c shared-bindings/gifio/GifWriter.c
|
#: py/argcheck.c shared-bindings/gifio/GifWriter.c
|
||||||
msgid "%q must be <= %d"
|
msgid "%q must be <= %d"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -1784,6 +1788,10 @@ msgstr "No hay pulldown en el pin; 1Mohm recomendado"
|
|||||||
msgid "No space left on device"
|
msgid "No space left on device"
|
||||||
msgstr "No queda espacio en el dispositivo"
|
msgstr "No queda espacio en el dispositivo"
|
||||||
|
|
||||||
|
#: py/moduerrno.c
|
||||||
|
msgid "No such device"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/moduerrno.c
|
#: py/moduerrno.c
|
||||||
msgid "No such file/directory"
|
msgid "No such file/directory"
|
||||||
msgstr "No existe el archivo/directorio"
|
msgstr "No existe el archivo/directorio"
|
||||||
@ -1897,6 +1905,10 @@ msgstr "Solamente una alarm.time puede ser configurada."
|
|||||||
msgid "Only one color can be transparent at a time"
|
msgid "Only one color can be transparent at a time"
|
||||||
msgstr "Solo un color puede ser transparente a la vez"
|
msgstr "Solo un color puede ser transparente a la vez"
|
||||||
|
|
||||||
|
#: py/moduerrno.c
|
||||||
|
msgid "Operation not permitted"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: ports/espressif/bindings/espidf/__init__.c ports/espressif/esp_error.c
|
#: ports/espressif/bindings/espidf/__init__.c ports/espressif/esp_error.c
|
||||||
msgid "Operation or feature not supported"
|
msgid "Operation or feature not supported"
|
||||||
msgstr "Operación no característica no soportada"
|
msgstr "Operación no característica no soportada"
|
||||||
@ -2583,10 +2595,6 @@ msgstr "Sin capacidad de bus tipo display"
|
|||||||
msgid "Unsupported format"
|
msgid "Unsupported format"
|
||||||
msgstr "Formato no soportado"
|
msgstr "Formato no soportado"
|
||||||
|
|
||||||
#: py/moduerrno.c
|
|
||||||
msgid "Unsupported operation"
|
|
||||||
msgstr "Operación no soportada"
|
|
||||||
|
|
||||||
#: ports/espressif/common-hal/dualbank/__init__.c
|
#: ports/espressif/common-hal/dualbank/__init__.c
|
||||||
msgid "Update Failed"
|
msgid "Update Failed"
|
||||||
msgstr "La actualización fallo"
|
msgstr "La actualización fallo"
|
||||||
@ -4724,6 +4732,9 @@ msgstr "zi debe ser de tipo flotante"
|
|||||||
msgid "zi must be of shape (n_section, 2)"
|
msgid "zi must be of shape (n_section, 2)"
|
||||||
msgstr "zi debe ser una forma (n_section,2)"
|
msgstr "zi debe ser una forma (n_section,2)"
|
||||||
|
|
||||||
|
#~ msgid "Unsupported operation"
|
||||||
|
#~ msgstr "Operación no soportada"
|
||||||
|
|
||||||
#~ msgid ""
|
#~ msgid ""
|
||||||
#~ "\n"
|
#~ "\n"
|
||||||
#~ "Code stopped by auto-reload.\n"
|
#~ "Code stopped by auto-reload.\n"
|
||||||
|
@ -108,6 +108,10 @@ msgstr ""
|
|||||||
msgid "%q must be %d-%d"
|
msgid "%q must be %d-%d"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: shared-bindings/displayio/Display.c
|
||||||
|
msgid "%q must be 1 when %q is True"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/argcheck.c shared-bindings/gifio/GifWriter.c
|
#: py/argcheck.c shared-bindings/gifio/GifWriter.c
|
||||||
msgid "%q must be <= %d"
|
msgid "%q must be <= %d"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -1764,6 +1768,10 @@ msgstr ""
|
|||||||
msgid "No space left on device"
|
msgid "No space left on device"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: py/moduerrno.c
|
||||||
|
msgid "No such device"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/moduerrno.c
|
#: py/moduerrno.c
|
||||||
msgid "No such file/directory"
|
msgid "No such file/directory"
|
||||||
msgstr "Walang file/directory"
|
msgstr "Walang file/directory"
|
||||||
@ -1874,6 +1882,10 @@ msgstr ""
|
|||||||
msgid "Only one color can be transparent at a time"
|
msgid "Only one color can be transparent at a time"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: py/moduerrno.c
|
||||||
|
msgid "Operation not permitted"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: ports/espressif/bindings/espidf/__init__.c ports/espressif/esp_error.c
|
#: ports/espressif/bindings/espidf/__init__.c ports/espressif/esp_error.c
|
||||||
msgid "Operation or feature not supported"
|
msgid "Operation or feature not supported"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -2543,10 +2555,6 @@ msgstr "Hindi supportadong tipo ng bitmap"
|
|||||||
msgid "Unsupported format"
|
msgid "Unsupported format"
|
||||||
msgstr "Hindi supportadong format"
|
msgstr "Hindi supportadong format"
|
||||||
|
|
||||||
#: py/moduerrno.c
|
|
||||||
msgid "Unsupported operation"
|
|
||||||
msgstr "Hindi sinusuportahang operasyon"
|
|
||||||
|
|
||||||
#: ports/espressif/common-hal/dualbank/__init__.c
|
#: ports/espressif/common-hal/dualbank/__init__.c
|
||||||
msgid "Update Failed"
|
msgid "Update Failed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -4687,6 +4695,9 @@ msgstr ""
|
|||||||
msgid "zi must be of shape (n_section, 2)"
|
msgid "zi must be of shape (n_section, 2)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "Unsupported operation"
|
||||||
|
#~ msgstr "Hindi sinusuportahang operasyon"
|
||||||
|
|
||||||
#~ msgid "Brightness must be between 0 and 255"
|
#~ msgid "Brightness must be between 0 and 255"
|
||||||
#~ msgstr "Ang liwanag ay dapat sa gitna ng 0 o 255"
|
#~ msgstr "Ang liwanag ay dapat sa gitna ng 0 o 255"
|
||||||
|
|
||||||
|
19
locale/fr.po
19
locale/fr.po
@ -116,6 +116,10 @@ msgstr "La longueur de %q doit être >= 1"
|
|||||||
msgid "%q must be %d-%d"
|
msgid "%q must be %d-%d"
|
||||||
msgstr "%q doit être %d-%d"
|
msgstr "%q doit être %d-%d"
|
||||||
|
|
||||||
|
#: shared-bindings/displayio/Display.c
|
||||||
|
msgid "%q must be 1 when %q is True"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/argcheck.c shared-bindings/gifio/GifWriter.c
|
#: py/argcheck.c shared-bindings/gifio/GifWriter.c
|
||||||
msgid "%q must be <= %d"
|
msgid "%q must be <= %d"
|
||||||
msgstr "%q doit être <= %d"
|
msgstr "%q doit être <= %d"
|
||||||
@ -1795,6 +1799,10 @@ msgstr "Pas de pulldown sur la broche ; 1Mohm recommandé"
|
|||||||
msgid "No space left on device"
|
msgid "No space left on device"
|
||||||
msgstr "Aucun espace libre sur le dispositif"
|
msgstr "Aucun espace libre sur le dispositif"
|
||||||
|
|
||||||
|
#: py/moduerrno.c
|
||||||
|
msgid "No such device"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/moduerrno.c
|
#: py/moduerrno.c
|
||||||
msgid "No such file/directory"
|
msgid "No such file/directory"
|
||||||
msgstr "Fichier/répertoire introuvable"
|
msgstr "Fichier/répertoire introuvable"
|
||||||
@ -1908,6 +1916,10 @@ msgstr "Seulement une alarme alarm.time peut être réglée."
|
|||||||
msgid "Only one color can be transparent at a time"
|
msgid "Only one color can be transparent at a time"
|
||||||
msgstr "Une seule couleur peut être transparente à la fois"
|
msgstr "Une seule couleur peut être transparente à la fois"
|
||||||
|
|
||||||
|
#: py/moduerrno.c
|
||||||
|
msgid "Operation not permitted"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: ports/espressif/bindings/espidf/__init__.c ports/espressif/esp_error.c
|
#: ports/espressif/bindings/espidf/__init__.c ports/espressif/esp_error.c
|
||||||
msgid "Operation or feature not supported"
|
msgid "Operation or feature not supported"
|
||||||
msgstr "Opération ou fonction non supportée"
|
msgstr "Opération ou fonction non supportée"
|
||||||
@ -2600,10 +2612,6 @@ msgstr "Type de bus d'affichage non supporté"
|
|||||||
msgid "Unsupported format"
|
msgid "Unsupported format"
|
||||||
msgstr "Format non supporté"
|
msgstr "Format non supporté"
|
||||||
|
|
||||||
#: py/moduerrno.c
|
|
||||||
msgid "Unsupported operation"
|
|
||||||
msgstr "Opération non supportée"
|
|
||||||
|
|
||||||
#: ports/espressif/common-hal/dualbank/__init__.c
|
#: ports/espressif/common-hal/dualbank/__init__.c
|
||||||
msgid "Update Failed"
|
msgid "Update Failed"
|
||||||
msgstr "Mise-à-jour échouée"
|
msgstr "Mise-à-jour échouée"
|
||||||
@ -4755,6 +4763,9 @@ msgstr "zi doit être de type float"
|
|||||||
msgid "zi must be of shape (n_section, 2)"
|
msgid "zi must be of shape (n_section, 2)"
|
||||||
msgstr "zi doit être de forme (n_section, 2)"
|
msgstr "zi doit être de forme (n_section, 2)"
|
||||||
|
|
||||||
|
#~ msgid "Unsupported operation"
|
||||||
|
#~ msgstr "Opération non supportée"
|
||||||
|
|
||||||
#~ msgid "divisor must be 4"
|
#~ msgid "divisor must be 4"
|
||||||
#~ msgstr "le diviseur doit être 4"
|
#~ msgstr "le diviseur doit être 4"
|
||||||
|
|
||||||
|
16
locale/hi.po
16
locale/hi.po
@ -107,6 +107,10 @@ msgstr ""
|
|||||||
msgid "%q must be %d-%d"
|
msgid "%q must be %d-%d"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: shared-bindings/displayio/Display.c
|
||||||
|
msgid "%q must be 1 when %q is True"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/argcheck.c shared-bindings/gifio/GifWriter.c
|
#: py/argcheck.c shared-bindings/gifio/GifWriter.c
|
||||||
msgid "%q must be <= %d"
|
msgid "%q must be <= %d"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -1749,6 +1753,10 @@ msgstr ""
|
|||||||
msgid "No space left on device"
|
msgid "No space left on device"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: py/moduerrno.c
|
||||||
|
msgid "No such device"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/moduerrno.c
|
#: py/moduerrno.c
|
||||||
msgid "No such file/directory"
|
msgid "No such file/directory"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -1856,6 +1864,10 @@ msgstr ""
|
|||||||
msgid "Only one color can be transparent at a time"
|
msgid "Only one color can be transparent at a time"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: py/moduerrno.c
|
||||||
|
msgid "Operation not permitted"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: ports/espressif/bindings/espidf/__init__.c ports/espressif/esp_error.c
|
#: ports/espressif/bindings/espidf/__init__.c ports/espressif/esp_error.c
|
||||||
msgid "Operation or feature not supported"
|
msgid "Operation or feature not supported"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -2521,10 +2533,6 @@ msgstr ""
|
|||||||
msgid "Unsupported format"
|
msgid "Unsupported format"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: py/moduerrno.c
|
|
||||||
msgid "Unsupported operation"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ports/espressif/common-hal/dualbank/__init__.c
|
#: ports/espressif/common-hal/dualbank/__init__.c
|
||||||
msgid "Update Failed"
|
msgid "Update Failed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -114,6 +114,10 @@ msgstr ""
|
|||||||
msgid "%q must be %d-%d"
|
msgid "%q must be %d-%d"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: shared-bindings/displayio/Display.c
|
||||||
|
msgid "%q must be 1 when %q is True"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/argcheck.c shared-bindings/gifio/GifWriter.c
|
#: py/argcheck.c shared-bindings/gifio/GifWriter.c
|
||||||
msgid "%q must be <= %d"
|
msgid "%q must be <= %d"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -1773,6 +1777,10 @@ msgstr ""
|
|||||||
msgid "No space left on device"
|
msgid "No space left on device"
|
||||||
msgstr "Non che spazio sul dispositivo"
|
msgstr "Non che spazio sul dispositivo"
|
||||||
|
|
||||||
|
#: py/moduerrno.c
|
||||||
|
msgid "No such device"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/moduerrno.c
|
#: py/moduerrno.c
|
||||||
msgid "No such file/directory"
|
msgid "No such file/directory"
|
||||||
msgstr "Nessun file/directory esistente"
|
msgstr "Nessun file/directory esistente"
|
||||||
@ -1884,6 +1892,10 @@ msgstr ""
|
|||||||
msgid "Only one color can be transparent at a time"
|
msgid "Only one color can be transparent at a time"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: py/moduerrno.c
|
||||||
|
msgid "Operation not permitted"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: ports/espressif/bindings/espidf/__init__.c ports/espressif/esp_error.c
|
#: ports/espressif/bindings/espidf/__init__.c ports/espressif/esp_error.c
|
||||||
msgid "Operation or feature not supported"
|
msgid "Operation or feature not supported"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -2560,10 +2572,6 @@ msgstr "tipo di bitmap non supportato"
|
|||||||
msgid "Unsupported format"
|
msgid "Unsupported format"
|
||||||
msgstr "Formato non supportato"
|
msgstr "Formato non supportato"
|
||||||
|
|
||||||
#: py/moduerrno.c
|
|
||||||
msgid "Unsupported operation"
|
|
||||||
msgstr "Operazione non supportata"
|
|
||||||
|
|
||||||
#: ports/espressif/common-hal/dualbank/__init__.c
|
#: ports/espressif/common-hal/dualbank/__init__.c
|
||||||
msgid "Update Failed"
|
msgid "Update Failed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -4707,6 +4715,9 @@ msgstr ""
|
|||||||
msgid "zi must be of shape (n_section, 2)"
|
msgid "zi must be of shape (n_section, 2)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "Unsupported operation"
|
||||||
|
#~ msgstr "Operazione non supportata"
|
||||||
|
|
||||||
#~ msgid ""
|
#~ msgid ""
|
||||||
#~ "\n"
|
#~ "\n"
|
||||||
#~ "Code stopped by auto-reload.\n"
|
#~ "Code stopped by auto-reload.\n"
|
||||||
|
19
locale/ja.po
19
locale/ja.po
@ -112,6 +112,10 @@ msgstr ""
|
|||||||
msgid "%q must be %d-%d"
|
msgid "%q must be %d-%d"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: shared-bindings/displayio/Display.c
|
||||||
|
msgid "%q must be 1 when %q is True"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/argcheck.c shared-bindings/gifio/GifWriter.c
|
#: py/argcheck.c shared-bindings/gifio/GifWriter.c
|
||||||
msgid "%q must be <= %d"
|
msgid "%q must be <= %d"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -1760,6 +1764,10 @@ msgstr "ピンにプルダウンがありません。1Mオーム推奨"
|
|||||||
msgid "No space left on device"
|
msgid "No space left on device"
|
||||||
msgstr "デバイスに空き容量が残っていません"
|
msgstr "デバイスに空き容量が残っていません"
|
||||||
|
|
||||||
|
#: py/moduerrno.c
|
||||||
|
msgid "No such device"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/moduerrno.c
|
#: py/moduerrno.c
|
||||||
msgid "No such file/directory"
|
msgid "No such file/directory"
|
||||||
msgstr "指定されたファイル/ディレクトリはありません"
|
msgstr "指定されたファイル/ディレクトリはありません"
|
||||||
@ -1869,6 +1877,10 @@ msgstr ""
|
|||||||
msgid "Only one color can be transparent at a time"
|
msgid "Only one color can be transparent at a time"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: py/moduerrno.c
|
||||||
|
msgid "Operation not permitted"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: ports/espressif/bindings/espidf/__init__.c ports/espressif/esp_error.c
|
#: ports/espressif/bindings/espidf/__init__.c ports/espressif/esp_error.c
|
||||||
msgid "Operation or feature not supported"
|
msgid "Operation or feature not supported"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -2536,10 +2548,6 @@ msgstr ""
|
|||||||
msgid "Unsupported format"
|
msgid "Unsupported format"
|
||||||
msgstr "非対応の形式"
|
msgstr "非対応の形式"
|
||||||
|
|
||||||
#: py/moduerrno.c
|
|
||||||
msgid "Unsupported operation"
|
|
||||||
msgstr "非対応の操作"
|
|
||||||
|
|
||||||
#: ports/espressif/common-hal/dualbank/__init__.c
|
#: ports/espressif/common-hal/dualbank/__init__.c
|
||||||
msgid "Update Failed"
|
msgid "Update Failed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -4663,6 +4671,9 @@ msgstr "ziはfloat値でなければなりません"
|
|||||||
msgid "zi must be of shape (n_section, 2)"
|
msgid "zi must be of shape (n_section, 2)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "Unsupported operation"
|
||||||
|
#~ msgstr "非対応の操作"
|
||||||
|
|
||||||
#~ msgid "Brightness must be between 0 and 255"
|
#~ msgid "Brightness must be between 0 and 255"
|
||||||
#~ msgstr "Brightnessは0から255の間でなければなりません"
|
#~ msgstr "Brightnessは0から255の間でなければなりません"
|
||||||
|
|
||||||
|
16
locale/ko.po
16
locale/ko.po
@ -108,6 +108,10 @@ msgstr ""
|
|||||||
msgid "%q must be %d-%d"
|
msgid "%q must be %d-%d"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: shared-bindings/displayio/Display.c
|
||||||
|
msgid "%q must be 1 when %q is True"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/argcheck.c shared-bindings/gifio/GifWriter.c
|
#: py/argcheck.c shared-bindings/gifio/GifWriter.c
|
||||||
msgid "%q must be <= %d"
|
msgid "%q must be <= %d"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -1752,6 +1756,10 @@ msgstr ""
|
|||||||
msgid "No space left on device"
|
msgid "No space left on device"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: py/moduerrno.c
|
||||||
|
msgid "No such device"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/moduerrno.c
|
#: py/moduerrno.c
|
||||||
msgid "No such file/directory"
|
msgid "No such file/directory"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -1859,6 +1867,10 @@ msgstr ""
|
|||||||
msgid "Only one color can be transparent at a time"
|
msgid "Only one color can be transparent at a time"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: py/moduerrno.c
|
||||||
|
msgid "Operation not permitted"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: ports/espressif/bindings/espidf/__init__.c ports/espressif/esp_error.c
|
#: ports/espressif/bindings/espidf/__init__.c ports/espressif/esp_error.c
|
||||||
msgid "Operation or feature not supported"
|
msgid "Operation or feature not supported"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -2525,10 +2537,6 @@ msgstr ""
|
|||||||
msgid "Unsupported format"
|
msgid "Unsupported format"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: py/moduerrno.c
|
|
||||||
msgid "Unsupported operation"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ports/espressif/common-hal/dualbank/__init__.c
|
#: ports/espressif/common-hal/dualbank/__init__.c
|
||||||
msgid "Update Failed"
|
msgid "Update Failed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
19
locale/nl.po
19
locale/nl.po
@ -110,6 +110,10 @@ msgstr ""
|
|||||||
msgid "%q must be %d-%d"
|
msgid "%q must be %d-%d"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: shared-bindings/displayio/Display.c
|
||||||
|
msgid "%q must be 1 when %q is True"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/argcheck.c shared-bindings/gifio/GifWriter.c
|
#: py/argcheck.c shared-bindings/gifio/GifWriter.c
|
||||||
msgid "%q must be <= %d"
|
msgid "%q must be <= %d"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -1761,6 +1765,10 @@ msgstr "Geen pulldown op pin; 1MOhm aangeraden"
|
|||||||
msgid "No space left on device"
|
msgid "No space left on device"
|
||||||
msgstr "Geen ruimte meer beschikbaar op apparaat"
|
msgstr "Geen ruimte meer beschikbaar op apparaat"
|
||||||
|
|
||||||
|
#: py/moduerrno.c
|
||||||
|
msgid "No such device"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/moduerrno.c
|
#: py/moduerrno.c
|
||||||
msgid "No such file/directory"
|
msgid "No such file/directory"
|
||||||
msgstr "Bestand/map bestaat niet"
|
msgstr "Bestand/map bestaat niet"
|
||||||
@ -1874,6 +1882,10 @@ msgstr "Slechts één alarm.time alarm kan worden ingesteld."
|
|||||||
msgid "Only one color can be transparent at a time"
|
msgid "Only one color can be transparent at a time"
|
||||||
msgstr "Er kan maar één kleur per keer transparant zijn"
|
msgstr "Er kan maar één kleur per keer transparant zijn"
|
||||||
|
|
||||||
|
#: py/moduerrno.c
|
||||||
|
msgid "Operation not permitted"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: ports/espressif/bindings/espidf/__init__.c ports/espressif/esp_error.c
|
#: ports/espressif/bindings/espidf/__init__.c ports/espressif/esp_error.c
|
||||||
msgid "Operation or feature not supported"
|
msgid "Operation or feature not supported"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -2549,10 +2561,6 @@ msgstr "Niet-ondersteund beeldscherm bus type"
|
|||||||
msgid "Unsupported format"
|
msgid "Unsupported format"
|
||||||
msgstr "Niet-ondersteunde format"
|
msgstr "Niet-ondersteunde format"
|
||||||
|
|
||||||
#: py/moduerrno.c
|
|
||||||
msgid "Unsupported operation"
|
|
||||||
msgstr "Niet-ondersteunde operatie"
|
|
||||||
|
|
||||||
#: ports/espressif/common-hal/dualbank/__init__.c
|
#: ports/espressif/common-hal/dualbank/__init__.c
|
||||||
msgid "Update Failed"
|
msgid "Update Failed"
|
||||||
msgstr "Update Mislukt"
|
msgstr "Update Mislukt"
|
||||||
@ -4683,6 +4691,9 @@ msgstr "zi moet van type float zijn"
|
|||||||
msgid "zi must be of shape (n_section, 2)"
|
msgid "zi must be of shape (n_section, 2)"
|
||||||
msgstr "zi moet vorm (n_section, 2) hebben"
|
msgstr "zi moet vorm (n_section, 2) hebben"
|
||||||
|
|
||||||
|
#~ msgid "Unsupported operation"
|
||||||
|
#~ msgstr "Niet-ondersteunde operatie"
|
||||||
|
|
||||||
#~ msgid "Brightness must be between 0 and 255"
|
#~ msgid "Brightness must be between 0 and 255"
|
||||||
#~ msgstr "Helderheid moet tussen de 0 en 255 liggen"
|
#~ msgstr "Helderheid moet tussen de 0 en 255 liggen"
|
||||||
|
|
||||||
|
19
locale/pl.po
19
locale/pl.po
@ -112,6 +112,10 @@ msgstr ""
|
|||||||
msgid "%q must be %d-%d"
|
msgid "%q must be %d-%d"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: shared-bindings/displayio/Display.c
|
||||||
|
msgid "%q must be 1 when %q is True"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/argcheck.c shared-bindings/gifio/GifWriter.c
|
#: py/argcheck.c shared-bindings/gifio/GifWriter.c
|
||||||
msgid "%q must be <= %d"
|
msgid "%q must be <= %d"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -1760,6 +1764,10 @@ msgstr ""
|
|||||||
msgid "No space left on device"
|
msgid "No space left on device"
|
||||||
msgstr "Brak miejsca"
|
msgstr "Brak miejsca"
|
||||||
|
|
||||||
|
#: py/moduerrno.c
|
||||||
|
msgid "No such device"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/moduerrno.c
|
#: py/moduerrno.c
|
||||||
msgid "No such file/directory"
|
msgid "No such file/directory"
|
||||||
msgstr "Brak pliku/katalogu"
|
msgstr "Brak pliku/katalogu"
|
||||||
@ -1867,6 +1875,10 @@ msgstr ""
|
|||||||
msgid "Only one color can be transparent at a time"
|
msgid "Only one color can be transparent at a time"
|
||||||
msgstr "W danym momencie przezroczysty może być tylko jeden kolor"
|
msgstr "W danym momencie przezroczysty może być tylko jeden kolor"
|
||||||
|
|
||||||
|
#: py/moduerrno.c
|
||||||
|
msgid "Operation not permitted"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: ports/espressif/bindings/espidf/__init__.c ports/espressif/esp_error.c
|
#: ports/espressif/bindings/espidf/__init__.c ports/espressif/esp_error.c
|
||||||
msgid "Operation or feature not supported"
|
msgid "Operation or feature not supported"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -2532,10 +2544,6 @@ msgstr "Zły typ magistrali wyświetlaczy"
|
|||||||
msgid "Unsupported format"
|
msgid "Unsupported format"
|
||||||
msgstr "Zły format"
|
msgstr "Zły format"
|
||||||
|
|
||||||
#: py/moduerrno.c
|
|
||||||
msgid "Unsupported operation"
|
|
||||||
msgstr "Zła operacja"
|
|
||||||
|
|
||||||
#: ports/espressif/common-hal/dualbank/__init__.c
|
#: ports/espressif/common-hal/dualbank/__init__.c
|
||||||
msgid "Update Failed"
|
msgid "Update Failed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -4654,6 +4662,9 @@ msgstr ""
|
|||||||
msgid "zi must be of shape (n_section, 2)"
|
msgid "zi must be of shape (n_section, 2)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "Unsupported operation"
|
||||||
|
#~ msgstr "Zła operacja"
|
||||||
|
|
||||||
#~ msgid "Brightness must be between 0 and 255"
|
#~ msgid "Brightness must be between 0 and 255"
|
||||||
#~ msgstr "Jasność musi być pomiędzy 0 a 255"
|
#~ msgstr "Jasność musi być pomiędzy 0 a 255"
|
||||||
|
|
||||||
|
@ -6,7 +6,7 @@ msgstr ""
|
|||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2021-01-04 12:55-0600\n"
|
"POT-Creation-Date: 2021-01-04 12:55-0600\n"
|
||||||
"PO-Revision-Date: 2022-05-08 16:37+0000\n"
|
"PO-Revision-Date: 2022-05-14 12:35+0000\n"
|
||||||
"Last-Translator: Wellington Terumi Uemura <wellingtonuemura@gmail.com>\n"
|
"Last-Translator: Wellington Terumi Uemura <wellingtonuemura@gmail.com>\n"
|
||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
"Language: pt_BR\n"
|
"Language: pt_BR\n"
|
||||||
@ -14,7 +14,7 @@ msgstr ""
|
|||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=n > 1;\n"
|
"Plural-Forms: nplurals=2; plural=n > 1;\n"
|
||||||
"X-Generator: Weblate 4.12.1\n"
|
"X-Generator: Weblate 4.13-dev\n"
|
||||||
|
|
||||||
#: main.c
|
#: main.c
|
||||||
msgid ""
|
msgid ""
|
||||||
@ -116,6 +116,10 @@ msgstr "o comprimento %q deve ser >=1"
|
|||||||
msgid "%q must be %d-%d"
|
msgid "%q must be %d-%d"
|
||||||
msgstr "o %q deve ser %d-%d"
|
msgstr "o %q deve ser %d-%d"
|
||||||
|
|
||||||
|
#: shared-bindings/displayio/Display.c
|
||||||
|
msgid "%q must be 1 when %q is True"
|
||||||
|
msgstr "%q deve ser 1 quando %q for verdadeiro"
|
||||||
|
|
||||||
#: py/argcheck.c shared-bindings/gifio/GifWriter.c
|
#: py/argcheck.c shared-bindings/gifio/GifWriter.c
|
||||||
msgid "%q must be <= %d"
|
msgid "%q must be <= %d"
|
||||||
msgstr "%q deve ser <= %d"
|
msgstr "%q deve ser <= %d"
|
||||||
@ -1790,6 +1794,10 @@ msgstr "Não há pulldown no pino; É recomendável utilizar um resistor de 1M o
|
|||||||
msgid "No space left on device"
|
msgid "No space left on device"
|
||||||
msgstr "Não resta espaço no dispositivo"
|
msgstr "Não resta espaço no dispositivo"
|
||||||
|
|
||||||
|
#: py/moduerrno.c
|
||||||
|
msgid "No such device"
|
||||||
|
msgstr "Não existe tal dispositivo"
|
||||||
|
|
||||||
#: py/moduerrno.c
|
#: py/moduerrno.c
|
||||||
msgid "No such file/directory"
|
msgid "No such file/directory"
|
||||||
msgstr "Este arquivo/diretório não existe"
|
msgstr "Este arquivo/diretório não existe"
|
||||||
@ -1902,6 +1910,10 @@ msgstr "Apenas um alarme alarm.time pode ser definido."
|
|||||||
msgid "Only one color can be transparent at a time"
|
msgid "Only one color can be transparent at a time"
|
||||||
msgstr "Apenas uma cor pode ser transparente de cada vez"
|
msgstr "Apenas uma cor pode ser transparente de cada vez"
|
||||||
|
|
||||||
|
#: py/moduerrno.c
|
||||||
|
msgid "Operation not permitted"
|
||||||
|
msgstr "A operação não é permitida"
|
||||||
|
|
||||||
#: ports/espressif/bindings/espidf/__init__.c ports/espressif/esp_error.c
|
#: ports/espressif/bindings/espidf/__init__.c ports/espressif/esp_error.c
|
||||||
msgid "Operation or feature not supported"
|
msgid "Operation or feature not supported"
|
||||||
msgstr "A operação ou o recurso não é suportado"
|
msgstr "A operação ou o recurso não é suportado"
|
||||||
@ -2596,10 +2608,6 @@ msgstr "Não há suporte para o tipo do display bus"
|
|||||||
msgid "Unsupported format"
|
msgid "Unsupported format"
|
||||||
msgstr "Formato não suportado"
|
msgstr "Formato não suportado"
|
||||||
|
|
||||||
#: py/moduerrno.c
|
|
||||||
msgid "Unsupported operation"
|
|
||||||
msgstr "Operação não suportada"
|
|
||||||
|
|
||||||
#: ports/espressif/common-hal/dualbank/__init__.c
|
#: ports/espressif/common-hal/dualbank/__init__.c
|
||||||
msgid "Update Failed"
|
msgid "Update Failed"
|
||||||
msgstr "A atualização falou"
|
msgstr "A atualização falou"
|
||||||
@ -4748,6 +4756,9 @@ msgstr "zi deve ser de um tipo float"
|
|||||||
msgid "zi must be of shape (n_section, 2)"
|
msgid "zi must be of shape (n_section, 2)"
|
||||||
msgstr "zi deve estar na forma (n_section, 2)"
|
msgstr "zi deve estar na forma (n_section, 2)"
|
||||||
|
|
||||||
|
#~ msgid "Unsupported operation"
|
||||||
|
#~ msgstr "Operação não suportada"
|
||||||
|
|
||||||
#~ msgid "divisor must be 4"
|
#~ msgid "divisor must be 4"
|
||||||
#~ msgstr "o divisor deve ser 4"
|
#~ msgstr "o divisor deve ser 4"
|
||||||
|
|
||||||
|
16
locale/ru.po
16
locale/ru.po
@ -115,6 +115,10 @@ msgstr "Длинна %q должна быть >= 1"
|
|||||||
msgid "%q must be %d-%d"
|
msgid "%q must be %d-%d"
|
||||||
msgstr "%q должен быть %d-%d"
|
msgstr "%q должен быть %d-%d"
|
||||||
|
|
||||||
|
#: shared-bindings/displayio/Display.c
|
||||||
|
msgid "%q must be 1 when %q is True"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/argcheck.c shared-bindings/gifio/GifWriter.c
|
#: py/argcheck.c shared-bindings/gifio/GifWriter.c
|
||||||
msgid "%q must be <= %d"
|
msgid "%q must be <= %d"
|
||||||
msgstr "%q должен быть <= %d"
|
msgstr "%q должен быть <= %d"
|
||||||
@ -1787,6 +1791,10 @@ msgstr "Отсутствует подтяжка к земле на пине; Р
|
|||||||
msgid "No space left on device"
|
msgid "No space left on device"
|
||||||
msgstr "На устройстве не осталось свободного места"
|
msgstr "На устройстве не осталось свободного места"
|
||||||
|
|
||||||
|
#: py/moduerrno.c
|
||||||
|
msgid "No such device"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/moduerrno.c
|
#: py/moduerrno.c
|
||||||
msgid "No such file/directory"
|
msgid "No such file/directory"
|
||||||
msgstr "Файл/директория не существует"
|
msgstr "Файл/директория не существует"
|
||||||
@ -1898,6 +1906,10 @@ msgstr ""
|
|||||||
msgid "Only one color can be transparent at a time"
|
msgid "Only one color can be transparent at a time"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: py/moduerrno.c
|
||||||
|
msgid "Operation not permitted"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: ports/espressif/bindings/espidf/__init__.c ports/espressif/esp_error.c
|
#: ports/espressif/bindings/espidf/__init__.c ports/espressif/esp_error.c
|
||||||
msgid "Operation or feature not supported"
|
msgid "Operation or feature not supported"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -2570,10 +2582,6 @@ msgstr ""
|
|||||||
msgid "Unsupported format"
|
msgid "Unsupported format"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: py/moduerrno.c
|
|
||||||
msgid "Unsupported operation"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ports/espressif/common-hal/dualbank/__init__.c
|
#: ports/espressif/common-hal/dualbank/__init__.c
|
||||||
msgid "Update Failed"
|
msgid "Update Failed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
25
locale/sv.po
25
locale/sv.po
@ -6,7 +6,7 @@ msgstr ""
|
|||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2021-01-04 12:55-0600\n"
|
"POT-Creation-Date: 2021-01-04 12:55-0600\n"
|
||||||
"PO-Revision-Date: 2022-04-26 15:40+0000\n"
|
"PO-Revision-Date: 2022-05-14 12:35+0000\n"
|
||||||
"Last-Translator: Jonny Bergdahl <jonny@bergdahl.it>\n"
|
"Last-Translator: Jonny Bergdahl <jonny@bergdahl.it>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
"Language: sv\n"
|
"Language: sv\n"
|
||||||
@ -14,7 +14,7 @@ msgstr ""
|
|||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||||
"X-Generator: Weblate 4.12.1-dev\n"
|
"X-Generator: Weblate 4.13-dev\n"
|
||||||
|
|
||||||
#: main.c
|
#: main.c
|
||||||
msgid ""
|
msgid ""
|
||||||
@ -115,6 +115,10 @@ msgstr "längden på %q måste vara >= 1"
|
|||||||
msgid "%q must be %d-%d"
|
msgid "%q must be %d-%d"
|
||||||
msgstr "%q måste vara %d-%d"
|
msgstr "%q måste vara %d-%d"
|
||||||
|
|
||||||
|
#: shared-bindings/displayio/Display.c
|
||||||
|
msgid "%q must be 1 when %q is True"
|
||||||
|
msgstr "%q måste vara 1 när %q är sann"
|
||||||
|
|
||||||
#: py/argcheck.c shared-bindings/gifio/GifWriter.c
|
#: py/argcheck.c shared-bindings/gifio/GifWriter.c
|
||||||
msgid "%q must be <= %d"
|
msgid "%q must be <= %d"
|
||||||
msgstr "%q måste vara <= %d"
|
msgstr "%q måste vara <= %d"
|
||||||
@ -1564,7 +1568,7 @@ msgstr "Datastorlek matchar inte"
|
|||||||
|
|
||||||
#: ports/raspberrypi/common-hal/rp2pio/StateMachine.c
|
#: ports/raspberrypi/common-hal/rp2pio/StateMachine.c
|
||||||
msgid "Mismatched swap flag"
|
msgid "Mismatched swap flag"
|
||||||
msgstr ""
|
msgstr "Felaktig swapflagga"
|
||||||
|
|
||||||
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/SPI.c
|
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/SPI.c
|
||||||
msgid "Missing MISO or MOSI Pin"
|
msgid "Missing MISO or MOSI Pin"
|
||||||
@ -1771,6 +1775,10 @@ msgstr "Ingen pulldown på pinnen; 1Mohm rekommenderas"
|
|||||||
msgid "No space left on device"
|
msgid "No space left on device"
|
||||||
msgstr "Inget utrymme kvar på enheten"
|
msgstr "Inget utrymme kvar på enheten"
|
||||||
|
|
||||||
|
#: py/moduerrno.c
|
||||||
|
msgid "No such device"
|
||||||
|
msgstr "Ingen sådan enhet"
|
||||||
|
|
||||||
#: py/moduerrno.c
|
#: py/moduerrno.c
|
||||||
msgid "No such file/directory"
|
msgid "No such file/directory"
|
||||||
msgstr "Ingen sådan fil/katalog"
|
msgstr "Ingen sådan fil/katalog"
|
||||||
@ -1883,6 +1891,10 @@ msgstr "Endast ett alarm.time kan ställas in."
|
|||||||
msgid "Only one color can be transparent at a time"
|
msgid "Only one color can be transparent at a time"
|
||||||
msgstr "Bara en färg kan vara genomskinlig i taget"
|
msgstr "Bara en färg kan vara genomskinlig i taget"
|
||||||
|
|
||||||
|
#: py/moduerrno.c
|
||||||
|
msgid "Operation not permitted"
|
||||||
|
msgstr "Åtgärden inte tillåten"
|
||||||
|
|
||||||
#: ports/espressif/bindings/espidf/__init__.c ports/espressif/esp_error.c
|
#: ports/espressif/bindings/espidf/__init__.c ports/espressif/esp_error.c
|
||||||
msgid "Operation or feature not supported"
|
msgid "Operation or feature not supported"
|
||||||
msgstr "Operation eller funktion stöds inte"
|
msgstr "Operation eller funktion stöds inte"
|
||||||
@ -2567,10 +2579,6 @@ msgstr "Busstyp för display stöds inte"
|
|||||||
msgid "Unsupported format"
|
msgid "Unsupported format"
|
||||||
msgstr "Formatet stöds inte"
|
msgstr "Formatet stöds inte"
|
||||||
|
|
||||||
#: py/moduerrno.c
|
|
||||||
msgid "Unsupported operation"
|
|
||||||
msgstr "Åtgärd som inte stöds"
|
|
||||||
|
|
||||||
#: ports/espressif/common-hal/dualbank/__init__.c
|
#: ports/espressif/common-hal/dualbank/__init__.c
|
||||||
msgid "Update Failed"
|
msgid "Update Failed"
|
||||||
msgstr "Uppdateringen misslyckades"
|
msgstr "Uppdateringen misslyckades"
|
||||||
@ -4705,6 +4713,9 @@ msgstr "zi måste vara av typ float"
|
|||||||
msgid "zi must be of shape (n_section, 2)"
|
msgid "zi must be of shape (n_section, 2)"
|
||||||
msgstr "zi måste vara i formen (n_section, 2)"
|
msgstr "zi måste vara i formen (n_section, 2)"
|
||||||
|
|
||||||
|
#~ msgid "Unsupported operation"
|
||||||
|
#~ msgstr "Åtgärd som inte stöds"
|
||||||
|
|
||||||
#~ msgid "divisor must be 4"
|
#~ msgid "divisor must be 4"
|
||||||
#~ msgstr "divisor måste vara 4"
|
#~ msgstr "divisor måste vara 4"
|
||||||
|
|
||||||
|
16
locale/tr.po
16
locale/tr.po
@ -119,6 +119,10 @@ msgstr "%q boyutu >=1 olmalıdır"
|
|||||||
msgid "%q must be %d-%d"
|
msgid "%q must be %d-%d"
|
||||||
msgstr "%q, %d-%d olmalıdır"
|
msgstr "%q, %d-%d olmalıdır"
|
||||||
|
|
||||||
|
#: shared-bindings/displayio/Display.c
|
||||||
|
msgid "%q must be 1 when %q is True"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/argcheck.c shared-bindings/gifio/GifWriter.c
|
#: py/argcheck.c shared-bindings/gifio/GifWriter.c
|
||||||
msgid "%q must be <= %d"
|
msgid "%q must be <= %d"
|
||||||
msgstr "%q <= %d olmalıdır"
|
msgstr "%q <= %d olmalıdır"
|
||||||
@ -1766,6 +1770,10 @@ msgstr ""
|
|||||||
msgid "No space left on device"
|
msgid "No space left on device"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: py/moduerrno.c
|
||||||
|
msgid "No such device"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/moduerrno.c
|
#: py/moduerrno.c
|
||||||
msgid "No such file/directory"
|
msgid "No such file/directory"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -1873,6 +1881,10 @@ msgstr ""
|
|||||||
msgid "Only one color can be transparent at a time"
|
msgid "Only one color can be transparent at a time"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: py/moduerrno.c
|
||||||
|
msgid "Operation not permitted"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: ports/espressif/bindings/espidf/__init__.c ports/espressif/esp_error.c
|
#: ports/espressif/bindings/espidf/__init__.c ports/espressif/esp_error.c
|
||||||
msgid "Operation or feature not supported"
|
msgid "Operation or feature not supported"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -2541,10 +2553,6 @@ msgstr ""
|
|||||||
msgid "Unsupported format"
|
msgid "Unsupported format"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: py/moduerrno.c
|
|
||||||
msgid "Unsupported operation"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ports/espressif/common-hal/dualbank/__init__.c
|
#: ports/espressif/common-hal/dualbank/__init__.c
|
||||||
msgid "Update Failed"
|
msgid "Update Failed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -118,6 +118,10 @@ msgstr "%q cháng dù bì xū >= 1"
|
|||||||
msgid "%q must be %d-%d"
|
msgid "%q must be %d-%d"
|
||||||
msgstr "%q bì xū wéi %d-%d"
|
msgstr "%q bì xū wéi %d-%d"
|
||||||
|
|
||||||
|
#: shared-bindings/displayio/Display.c
|
||||||
|
msgid "%q must be 1 when %q is True"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/argcheck.c shared-bindings/gifio/GifWriter.c
|
#: py/argcheck.c shared-bindings/gifio/GifWriter.c
|
||||||
msgid "%q must be <= %d"
|
msgid "%q must be <= %d"
|
||||||
msgstr "%q bì xū <= %d"
|
msgstr "%q bì xū <= %d"
|
||||||
@ -1784,6 +1788,10 @@ msgstr "Yǐn jiǎo shàng méiyǒu xiàlā; 1Mohm tuījiàn"
|
|||||||
msgid "No space left on device"
|
msgid "No space left on device"
|
||||||
msgstr "Shèbèi shàng méiyǒu kònggé"
|
msgstr "Shèbèi shàng méiyǒu kònggé"
|
||||||
|
|
||||||
|
#: py/moduerrno.c
|
||||||
|
msgid "No such device"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/moduerrno.c
|
#: py/moduerrno.c
|
||||||
msgid "No such file/directory"
|
msgid "No such file/directory"
|
||||||
msgstr "Méiyǒu cǐ lèi wénjiàn/mùlù"
|
msgstr "Méiyǒu cǐ lèi wénjiàn/mùlù"
|
||||||
@ -1896,6 +1904,10 @@ msgstr "zhǐ néng shè zhì yí gè bào jǐng."
|
|||||||
msgid "Only one color can be transparent at a time"
|
msgid "Only one color can be transparent at a time"
|
||||||
msgstr "Yīcì zhǐ néng yǒuyī zhǒng yánsè shì tòumíng de"
|
msgstr "Yīcì zhǐ néng yǒuyī zhǒng yánsè shì tòumíng de"
|
||||||
|
|
||||||
|
#: py/moduerrno.c
|
||||||
|
msgid "Operation not permitted"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: ports/espressif/bindings/espidf/__init__.c ports/espressif/esp_error.c
|
#: ports/espressif/bindings/espidf/__init__.c ports/espressif/esp_error.c
|
||||||
msgid "Operation or feature not supported"
|
msgid "Operation or feature not supported"
|
||||||
msgstr "bù zhī chí cāo zuò huò gōng néng"
|
msgstr "bù zhī chí cāo zuò huò gōng néng"
|
||||||
@ -2578,10 +2590,6 @@ msgstr "Bù zhīchí de gōnggòng qìchē lèixíng"
|
|||||||
msgid "Unsupported format"
|
msgid "Unsupported format"
|
||||||
msgstr "Bù zhīchí de géshì"
|
msgstr "Bù zhīchí de géshì"
|
||||||
|
|
||||||
#: py/moduerrno.c
|
|
||||||
msgid "Unsupported operation"
|
|
||||||
msgstr "Bù zhīchí de cāozuò"
|
|
||||||
|
|
||||||
#: ports/espressif/common-hal/dualbank/__init__.c
|
#: ports/espressif/common-hal/dualbank/__init__.c
|
||||||
msgid "Update Failed"
|
msgid "Update Failed"
|
||||||
msgstr "gēng xīn shī bài"
|
msgstr "gēng xīn shī bài"
|
||||||
@ -4717,6 +4725,9 @@ msgstr "zi bìxū wèi fú diǎn xíng"
|
|||||||
msgid "zi must be of shape (n_section, 2)"
|
msgid "zi must be of shape (n_section, 2)"
|
||||||
msgstr "zi bìxū jùyǒu xíngzhuàng (n_section,2)"
|
msgstr "zi bìxū jùyǒu xíngzhuàng (n_section,2)"
|
||||||
|
|
||||||
|
#~ msgid "Unsupported operation"
|
||||||
|
#~ msgstr "Bù zhīchí de cāozuò"
|
||||||
|
|
||||||
#~ msgid "divisor must be 4"
|
#~ msgid "divisor must be 4"
|
||||||
#~ msgstr "èr chóng zòu bì xū shì 4"
|
#~ msgstr "èr chóng zòu bì xū shì 4"
|
||||||
|
|
||||||
|
21
main.c
21
main.c
@ -277,10 +277,10 @@ STATIC void cleanup_after_vm(supervisor_allocation *heap, mp_obj_t exception) {
|
|||||||
memorymonitor_reset();
|
memorymonitor_reset();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
filesystem_flush();
|
// Disable user related BLE state that uses the micropython heap.
|
||||||
stop_mp();
|
#if CIRCUITPY_BLEIO
|
||||||
free_memory(heap);
|
bleio_user_reset();
|
||||||
supervisor_move_memory();
|
#endif
|
||||||
|
|
||||||
#if CIRCUITPY_CANIO
|
#if CIRCUITPY_CANIO
|
||||||
common_hal_canio_reset();
|
common_hal_canio_reset();
|
||||||
@ -297,6 +297,12 @@ STATIC void cleanup_after_vm(supervisor_allocation *heap, mp_obj_t exception) {
|
|||||||
#endif
|
#endif
|
||||||
reset_port();
|
reset_port();
|
||||||
reset_board();
|
reset_board();
|
||||||
|
|
||||||
|
// Free the heap last because other modules may reference heap memory and need to shut down.
|
||||||
|
filesystem_flush();
|
||||||
|
stop_mp();
|
||||||
|
free_memory(heap);
|
||||||
|
supervisor_move_memory();
|
||||||
}
|
}
|
||||||
|
|
||||||
STATIC void print_code_py_status_message(safe_mode_t safe_mode) {
|
STATIC void print_code_py_status_message(safe_mode_t safe_mode) {
|
||||||
@ -645,6 +651,12 @@ STATIC bool run_code_py(safe_mode_t safe_mode, bool first_run, bool *simulate_re
|
|||||||
|
|
||||||
// Done waiting, start the board back up.
|
// Done waiting, start the board back up.
|
||||||
|
|
||||||
|
// We delay resetting BLE until after the wait in case we're transferring
|
||||||
|
// more files over.
|
||||||
|
#if CIRCUITPY_BLEIO
|
||||||
|
bleio_reset();
|
||||||
|
#endif
|
||||||
|
|
||||||
// free code allocation if unused
|
// free code allocation if unused
|
||||||
if ((next_code_options & next_code_stickiness_situation) == 0) {
|
if ((next_code_options & next_code_stickiness_situation) == 0) {
|
||||||
free_memory(next_code_allocation);
|
free_memory(next_code_allocation);
|
||||||
@ -888,6 +900,7 @@ int __attribute__((used)) main(void) {
|
|||||||
serial_init();
|
serial_init();
|
||||||
|
|
||||||
#if CIRCUITPY_BLEIO
|
#if CIRCUITPY_BLEIO
|
||||||
|
bleio_reset();
|
||||||
supervisor_bluetooth_enable_workflow();
|
supervisor_bluetooth_enable_workflow();
|
||||||
supervisor_start_bluetooth();
|
supervisor_start_bluetooth();
|
||||||
#endif
|
#endif
|
||||||
|
@ -12,6 +12,7 @@ EXTERNAL_FLASH_DEVICES = "S25FL216K, GD25Q16C"
|
|||||||
# Turn off features and optimizations for displayio build to make room for additional frozen libs.
|
# Turn off features and optimizations for displayio build to make room for additional frozen libs.
|
||||||
LONGINT_IMPL = NONE
|
LONGINT_IMPL = NONE
|
||||||
CIRCUITPY_KEYPAD = 0
|
CIRCUITPY_KEYPAD = 0
|
||||||
|
CIRCUITPY_ONEWIREIO = 0
|
||||||
CIRCUITPY_PIXELBUF = 0
|
CIRCUITPY_PIXELBUF = 0
|
||||||
CIRCUITPY_ROTARYIO = 0
|
CIRCUITPY_ROTARYIO = 0
|
||||||
CIRCUITPY_RTC = 0
|
CIRCUITPY_RTC = 0
|
||||||
|
104
ports/atmel-samd/boards/pewpew_lcd/board.c
Normal file
104
ports/atmel-samd/boards/pewpew_lcd/board.c
Normal file
@ -0,0 +1,104 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of the MicroPython project, http://micropython.org/
|
||||||
|
*
|
||||||
|
* The MIT License (MIT)
|
||||||
|
*
|
||||||
|
* Copyright (c) 2017 Scott Shawcroft for Adafruit Industries
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in
|
||||||
|
* all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
* THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "supervisor/board.h"
|
||||||
|
|
||||||
|
#include "shared-bindings/board/__init__.h"
|
||||||
|
#include "shared-bindings/displayio/FourWire.h"
|
||||||
|
#include "shared-module/displayio/__init__.h"
|
||||||
|
#include "shared-module/displayio/mipi_constants.h"
|
||||||
|
#include "shared-bindings/busio/SPI.h"
|
||||||
|
|
||||||
|
displayio_fourwire_obj_t board_display_obj;
|
||||||
|
|
||||||
|
#define DELAY 0x80
|
||||||
|
|
||||||
|
uint8_t display_init_sequence[] = {
|
||||||
|
0xe2, 0, // reset
|
||||||
|
0x2f, 0, // power on
|
||||||
|
0x80, 0, // contrast 0
|
||||||
|
0xa4, 0, // display normal
|
||||||
|
0xaf, 0, // display on
|
||||||
|
0x40, 0, // start line 0
|
||||||
|
};
|
||||||
|
|
||||||
|
void board_init(void) {
|
||||||
|
busio_spi_obj_t *spi = &displays[0].fourwire_bus.inline_bus;
|
||||||
|
common_hal_busio_spi_construct(spi, &pin_PA23, &pin_PA22, NULL, false);
|
||||||
|
common_hal_busio_spi_never_reset(spi);
|
||||||
|
|
||||||
|
displayio_fourwire_obj_t *bus = &displays[0].fourwire_bus;
|
||||||
|
bus->base.type = &displayio_fourwire_type;
|
||||||
|
common_hal_displayio_fourwire_construct(bus,
|
||||||
|
spi,
|
||||||
|
NULL, // Command or data
|
||||||
|
&pin_PA19, // Chip select
|
||||||
|
&pin_PA18, // Reset
|
||||||
|
40000000LL, // Baudrate
|
||||||
|
0, // Polarity
|
||||||
|
0); // Phase
|
||||||
|
|
||||||
|
displayio_display_obj_t *display = &displays[0].display;
|
||||||
|
display->base.type = &displayio_display_type;
|
||||||
|
common_hal_displayio_display_construct(display,
|
||||||
|
bus,
|
||||||
|
96, // Width
|
||||||
|
68, // Height
|
||||||
|
0, // column start
|
||||||
|
0, // row start
|
||||||
|
180, // rotation
|
||||||
|
1, // Color depth
|
||||||
|
true, // grayscale
|
||||||
|
false, // pixels in byte share row. Only used with depth < 8
|
||||||
|
1, // bytes per cell. Only valid for depths < 8
|
||||||
|
false, // reverse_pixels_in_byte. Only valid for depths < 8
|
||||||
|
false, // reverse_pixels_in_word
|
||||||
|
0, // Set column command
|
||||||
|
0, // Set row command
|
||||||
|
0, // Write memory command
|
||||||
|
display_init_sequence,
|
||||||
|
sizeof(display_init_sequence),
|
||||||
|
NULL, // &pin_PA17, // brightness pin
|
||||||
|
NO_BRIGHTNESS_COMMAND,
|
||||||
|
0.0f, // brightness
|
||||||
|
false, // auto_brightness
|
||||||
|
false, // single_byte_bounds
|
||||||
|
true, // data as commands
|
||||||
|
true, // auto_refresh
|
||||||
|
2, // native_frames_per_second
|
||||||
|
true, // backlight_on_high
|
||||||
|
true); // SH1107_addressing
|
||||||
|
}
|
||||||
|
|
||||||
|
bool board_requests_safe_mode(void) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void reset_board(void) {
|
||||||
|
}
|
||||||
|
|
||||||
|
void board_deinit(void) {
|
||||||
|
}
|
16
ports/atmel-samd/boards/pewpew_lcd/mpconfigboard.h
Normal file
16
ports/atmel-samd/boards/pewpew_lcd/mpconfigboard.h
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
#define MICROPY_HW_BOARD_NAME "PewPew LCD"
|
||||||
|
#define MICROPY_HW_MCU_NAME "samd21e18"
|
||||||
|
|
||||||
|
#define MICROPY_PORT_A (0)
|
||||||
|
#define MICROPY_PORT_B (0)
|
||||||
|
#define MICROPY_PORT_C (0)
|
||||||
|
|
||||||
|
#define CIRCUITPY_INTERNAL_NVM_SIZE 0
|
||||||
|
#define CIRCUITPY_INTERNAL_FLASH_FILESYSTEM_SIZE (48 * 1024)
|
||||||
|
|
||||||
|
// USB is always used internally so skip the pin objects for it.
|
||||||
|
#define IGNORE_PIN_PA24 1
|
||||||
|
#define IGNORE_PIN_PA25 1
|
||||||
|
|
||||||
|
#define SAMD21_BOD33_LEVEL (6)
|
||||||
|
#define CIRCUITPY_REPL_LOGO (0)
|
57
ports/atmel-samd/boards/pewpew_lcd/mpconfigboard.mk
Normal file
57
ports/atmel-samd/boards/pewpew_lcd/mpconfigboard.mk
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
USB_VID = 0x1209
|
||||||
|
USB_PID = 0xD1B5
|
||||||
|
USB_PRODUCT = "PewPew LCD"
|
||||||
|
USB_MANUFACTURER = "Radomir Dopieralski"
|
||||||
|
|
||||||
|
CHIP_VARIANT = SAMD21E18A
|
||||||
|
CHIP_FAMILY = samd21
|
||||||
|
|
||||||
|
INTERNAL_FLASH_FILESYSTEM = 1
|
||||||
|
LONGINT_IMPL = NONE
|
||||||
|
|
||||||
|
CIRCUITPY_FULL_BUILD = 0
|
||||||
|
|
||||||
|
CIRCUITPY_DISPLAYIO = 1
|
||||||
|
CIRCUITPY_TOUCHIO = 1
|
||||||
|
CIRCUITPY_PWMIO = 1
|
||||||
|
CIRCUITPY_MATH = 0
|
||||||
|
|
||||||
|
CIRCUITPY_ANALOGIO = 0
|
||||||
|
CIRCUITPY_AUDIOBUSIO = 0
|
||||||
|
CIRCUITPY_AUDIOBUSIO_I2SOUT = 0
|
||||||
|
CIRCUITPY_AUDIOCORE = 0
|
||||||
|
CIRCUITPY_AUDIOIO = 0
|
||||||
|
CIRCUITPY_AUDIOMIXER = 0
|
||||||
|
CIRCUITPY_AUDIOMP3 = 0
|
||||||
|
CIRCUITPY_AUDIOPWMIO = 0
|
||||||
|
CIRCUITPY_BITBANG_APA102 = 0
|
||||||
|
CIRCUITPY_BITBANGIO = 0
|
||||||
|
CIRCUITPY_BITBANGIO = 0
|
||||||
|
CIRCUITPY_BITMAPTOOLS = 0
|
||||||
|
CIRCUITPY_BITMAPTOOLS = 0
|
||||||
|
CIRCUITPY_BLEIO = 0
|
||||||
|
CIRCUITPY_BUSDEVICE = 0
|
||||||
|
CIRCUITPY_FRAMEBUFFERIO = 0
|
||||||
|
CIRCUITPY_FREQUENCYIO = 0
|
||||||
|
CIRCUITPY_I2CPERIPHERAL = 0
|
||||||
|
CIRCUITPY_MSGPACK = 0
|
||||||
|
CIRCUITPY_NEOPIXEL_WRITE = 0
|
||||||
|
CIRCUITPY_NVM = 0
|
||||||
|
CIRCUITPY_PIXELBUF = 0
|
||||||
|
CIRCUITPY_PS2IO = 0
|
||||||
|
CIRCUITPY_PULSEIO = 0
|
||||||
|
CIRCUITPY_RGBMATRIX = 0
|
||||||
|
CIRCUITPY_ROTARYIO = 0
|
||||||
|
CIRCUITPY_ROTARYIO = 0
|
||||||
|
CIRCUITPY_RTC = 0
|
||||||
|
CIRCUITPY_SAMD = 0
|
||||||
|
CIRCUITPY_ULAB = 0
|
||||||
|
CIRCUITPY_USB_HID = 0
|
||||||
|
CIRCUITPY_USB_MIDI = 0
|
||||||
|
CIRCUITPY_USB_VENDOR = 0
|
||||||
|
CIRCUITPY_VECTORIO = 0
|
||||||
|
CIRCUITPY_RAINBOWIO = 0
|
||||||
|
|
||||||
|
CIRCUITPY_DISPLAY_FONT = $(TOP)/ports/atmel-samd/boards/ugame10/brutalist-6.bdf
|
||||||
|
OPTIMIZATION_FLAGS = -Os
|
||||||
|
FROZEN_MPY_DIRS += $(TOP)/frozen/pew-pewpew-lcd
|
28
ports/atmel-samd/boards/pewpew_lcd/pins.c
Normal file
28
ports/atmel-samd/boards/pewpew_lcd/pins.c
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
#include "shared-bindings/board/__init__.h"
|
||||||
|
#include "shared-module/displayio/__init__.h"
|
||||||
|
|
||||||
|
STATIC const mp_rom_map_elem_t board_global_dict_table[] = {
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR__SCK), MP_ROM_PTR(&pin_PA23) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR__MOSI), MP_ROM_PTR(&pin_PA22) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR__CS), MP_ROM_PTR(&pin_PA19) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR__RST), MP_ROM_PTR(&pin_PA18) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR__BL), MP_ROM_PTR(&pin_PA17) },
|
||||||
|
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR__UP), MP_ROM_PTR(&pin_PA03) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR__DOWN), MP_ROM_PTR(&pin_PA05) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR__LEFT), MP_ROM_PTR(&pin_PA04) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR__RIGHT), MP_ROM_PTR(&pin_PA02) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR__O), MP_ROM_PTR(&pin_PA06) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR__X), MP_ROM_PTR(&pin_PA07) },
|
||||||
|
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_P1), MP_ROM_PTR(&pin_PA30) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_P2), MP_ROM_PTR(&pin_PA31) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_P3), MP_ROM_PTR(&pin_PA08) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_P4), MP_ROM_PTR(&pin_PA09) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_P5), MP_ROM_PTR(&pin_PA10) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_P6), MP_ROM_PTR(&pin_PA11) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_P7), MP_ROM_PTR(&pin_PA14) },
|
||||||
|
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_DISPLAY), MP_ROM_PTR(&displays[0].display)}
|
||||||
|
};
|
||||||
|
MP_DEFINE_CONST_DICT(board_module_globals, board_global_dict_table);
|
@ -37,7 +37,7 @@
|
|||||||
{.scl = &pin_GPIO40, .sda = &pin_GPIO41}}
|
{.scl = &pin_GPIO40, .sda = &pin_GPIO41}}
|
||||||
|
|
||||||
#define CIRCUITPY_BOARD_SPI (1)
|
#define CIRCUITPY_BOARD_SPI (1)
|
||||||
#define CIRCUITPY_BOARD_SPI_PIN {{.clock = &pin_GPIO35, .mosi = &pin_GPIO34, .miso = &pin_GPIO36}}
|
#define CIRCUITPY_BOARD_SPI_PIN {{.clock = &pin_GPIO36, .mosi = &pin_GPIO35, .miso = &pin_GPIO37}}
|
||||||
|
|
||||||
#define CIRCUITPY_BOARD_UART (1)
|
#define CIRCUITPY_BOARD_UART (1)
|
||||||
#define CIRCUITPY_BOARD_UART_PIN {{.tx = &pin_GPIO5, .rx = &pin_GPIO16}}
|
#define CIRCUITPY_BOARD_UART_PIN {{.tx = &pin_GPIO5, .rx = &pin_GPIO16}}
|
||||||
|
@ -36,15 +36,15 @@ STATIC const mp_rom_map_elem_t board_module_globals_table[] = {
|
|||||||
{ MP_ROM_QSTR(MP_QSTR_A7), MP_ROM_PTR(&pin_GPIO16) },
|
{ MP_ROM_QSTR(MP_QSTR_A7), MP_ROM_PTR(&pin_GPIO16) },
|
||||||
{ MP_ROM_QSTR(MP_QSTR_D16), MP_ROM_PTR(&pin_GPIO16) },
|
{ MP_ROM_QSTR(MP_QSTR_D16), MP_ROM_PTR(&pin_GPIO16) },
|
||||||
|
|
||||||
{ MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_GPIO34) },
|
{ MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_GPIO35) },
|
||||||
{ MP_ROM_QSTR(MP_QSTR_D34), MP_ROM_PTR(&pin_GPIO34) },
|
|
||||||
|
|
||||||
{ MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_GPIO35) },
|
|
||||||
{ MP_ROM_QSTR(MP_QSTR_D35), MP_ROM_PTR(&pin_GPIO35) },
|
{ MP_ROM_QSTR(MP_QSTR_D35), MP_ROM_PTR(&pin_GPIO35) },
|
||||||
|
|
||||||
{ MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_GPIO36) },
|
{ MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_GPIO36) },
|
||||||
{ MP_ROM_QSTR(MP_QSTR_D36), MP_ROM_PTR(&pin_GPIO36) },
|
{ MP_ROM_QSTR(MP_QSTR_D36), MP_ROM_PTR(&pin_GPIO36) },
|
||||||
|
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_GPIO37) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D37), MP_ROM_PTR(&pin_GPIO37) },
|
||||||
|
|
||||||
{ MP_ROM_QSTR(MP_QSTR_NEOPIXEL_POWER), MP_ROM_PTR(&pin_GPIO38) },
|
{ MP_ROM_QSTR(MP_QSTR_NEOPIXEL_POWER), MP_ROM_PTR(&pin_GPIO38) },
|
||||||
{ MP_ROM_QSTR(MP_QSTR_NEOPIXEL), MP_ROM_PTR(&pin_GPIO39) },
|
{ MP_ROM_QSTR(MP_QSTR_NEOPIXEL), MP_ROM_PTR(&pin_GPIO39) },
|
||||||
|
|
||||||
|
49
ports/espressif/boards/cytron_maker_feather_aiot_s3/board.c
Normal file
49
ports/espressif/boards/cytron_maker_feather_aiot_s3/board.c
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of the MicroPython project, http://micropython.org/
|
||||||
|
*
|
||||||
|
* The MIT License (MIT)
|
||||||
|
*
|
||||||
|
* Copyright (c) 2022 Wai Weng for Cytron Technologies
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in
|
||||||
|
* all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
* THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "supervisor/board.h"
|
||||||
|
#include "mpconfigboard.h"
|
||||||
|
#include "shared-bindings/microcontroller/Pin.h"
|
||||||
|
#include "components/driver/include/driver/gpio.h"
|
||||||
|
#include "components/hal/include/hal/gpio_hal.h"
|
||||||
|
#include "common-hal/microcontroller/Pin.h"
|
||||||
|
|
||||||
|
void board_init(void) {
|
||||||
|
reset_board();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool board_requests_safe_mode(void) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void reset_board(void) {
|
||||||
|
// Turn on VP by default.
|
||||||
|
gpio_set_direction(38, GPIO_MODE_DEF_OUTPUT);
|
||||||
|
gpio_set_level(38, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
void board_deinit(void) {
|
||||||
|
}
|
@ -0,0 +1,45 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of the MicroPython project, http://micropython.org/
|
||||||
|
*
|
||||||
|
* The MIT License (MIT)
|
||||||
|
*
|
||||||
|
* Copyright (c) 2019 Scott Shawcroft for Adafruit Industries
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in
|
||||||
|
* all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
* THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Micropython setup
|
||||||
|
|
||||||
|
#define MICROPY_HW_BOARD_NAME "Cytron Maker Feather AIoT S3"
|
||||||
|
#define MICROPY_HW_MCU_NAME "ESP32S3"
|
||||||
|
|
||||||
|
#define MICROPY_HW_NEOPIXEL (&pin_GPIO46)
|
||||||
|
#define CIRCUITPY_STATUS_LED_POWER (&pin_GPIO13)
|
||||||
|
|
||||||
|
#define DEFAULT_I2C_BUS_SCL (&pin_GPIO41)
|
||||||
|
#define DEFAULT_I2C_BUS_SDA (&pin_GPIO42)
|
||||||
|
|
||||||
|
#define DEFAULT_SPI_BUS_SCK (&pin_GPIO6)
|
||||||
|
#define DEFAULT_SPI_BUS_MOSI (&pin_GPIO10)
|
||||||
|
#define DEFAULT_SPI_BUS_MISO (&pin_GPIO5)
|
||||||
|
|
||||||
|
#define DEFAULT_UART_BUS_RX (&pin_GPIO11)
|
||||||
|
#define DEFAULT_UART_BUS_TX (&pin_GPIO4)
|
||||||
|
|
||||||
|
#define DOUBLE_TAP_PIN (&pin_GPIO17)
|
@ -0,0 +1,20 @@
|
|||||||
|
USB_VID = 0x303A
|
||||||
|
USB_PID = 0x80F9
|
||||||
|
USB_PRODUCT = "Cytron Maker Feather AIoT S3"
|
||||||
|
USB_MANUFACTURER = "Cytron"
|
||||||
|
|
||||||
|
IDF_TARGET = esp32s3
|
||||||
|
|
||||||
|
INTERNAL_FLASH_FILESYSTEM = 1
|
||||||
|
LONGINT_IMPL = MPZ
|
||||||
|
|
||||||
|
# The default queue depth of 16 overflows on release builds,
|
||||||
|
# so increase it to 32.
|
||||||
|
CFLAGS += -DCFG_TUD_TASK_QUEUE_SZ=32
|
||||||
|
|
||||||
|
CIRCUITPY_ESP_FLASH_MODE=dio
|
||||||
|
CIRCUITPY_ESP_FLASH_FREQ=80m
|
||||||
|
CIRCUITPY_ESP_FLASH_SIZE=8MB
|
||||||
|
|
||||||
|
# Include these Python libraries in firmware.
|
||||||
|
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_NeoPixel
|
90
ports/espressif/boards/cytron_maker_feather_aiot_s3/pins.c
Normal file
90
ports/espressif/boards/cytron_maker_feather_aiot_s3/pins.c
Normal file
@ -0,0 +1,90 @@
|
|||||||
|
#include "shared-bindings/board/__init__.h"
|
||||||
|
|
||||||
|
STATIC const mp_rom_map_elem_t board_module_globals_table[] = {
|
||||||
|
CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS
|
||||||
|
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_BOOT0), MP_ROM_PTR(&pin_GPIO0) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_GPIO0) },
|
||||||
|
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_A3), MP_ROM_PTR(&pin_GPIO2) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D2), MP_ROM_PTR(&pin_GPIO2) },
|
||||||
|
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_BUTTON), MP_ROM_PTR(&pin_GPIO3) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D3), MP_ROM_PTR(&pin_GPIO3) },
|
||||||
|
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO4) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D4), MP_ROM_PTR(&pin_GPIO4) },
|
||||||
|
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_GPIO5) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D5), MP_ROM_PTR(&pin_GPIO5) },
|
||||||
|
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_GPIO6) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D6), MP_ROM_PTR(&pin_GPIO6) },
|
||||||
|
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_A4), MP_ROM_PTR(&pin_GPIO7) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D7), MP_ROM_PTR(&pin_GPIO7) },
|
||||||
|
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_A2), MP_ROM_PTR(&pin_GPIO8) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D8), MP_ROM_PTR(&pin_GPIO8) },
|
||||||
|
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_GPIO9) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D9), MP_ROM_PTR(&pin_GPIO9) },
|
||||||
|
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_GPIO10) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D10), MP_ROM_PTR(&pin_GPIO10) },
|
||||||
|
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_GPIO11) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D11), MP_ROM_PTR(&pin_GPIO11) },
|
||||||
|
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_A5), MP_ROM_PTR(&pin_GPIO12) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D12), MP_ROM_PTR(&pin_GPIO12) },
|
||||||
|
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_LED), MP_ROM_PTR(&pin_GPIO13) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D13), MP_ROM_PTR(&pin_GPIO13) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_L), MP_ROM_PTR(&pin_GPIO13) },
|
||||||
|
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_A1), MP_ROM_PTR(&pin_GPIO14) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D14), MP_ROM_PTR(&pin_GPIO14) },
|
||||||
|
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D15), MP_ROM_PTR(&pin_GPIO15) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D16), MP_ROM_PTR(&pin_GPIO16) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D17), MP_ROM_PTR(&pin_GPIO17) },
|
||||||
|
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_VIN), MP_ROM_PTR(&pin_GPIO18) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_VBATT), MP_ROM_PTR(&pin_GPIO18) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_VOLTAGE_MONITOR), MP_ROM_PTR(&pin_GPIO18) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D18), MP_ROM_PTR(&pin_GPIO18) },
|
||||||
|
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D21), MP_ROM_PTR(&pin_GPIO21) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D33), MP_ROM_PTR(&pin_GPIO33) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D34), MP_ROM_PTR(&pin_GPIO34) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D35), MP_ROM_PTR(&pin_GPIO35) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D36), MP_ROM_PTR(&pin_GPIO36) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D37), MP_ROM_PTR(&pin_GPIO37) },
|
||||||
|
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_VP_EN), MP_ROM_PTR(&pin_GPIO38) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D38), MP_ROM_PTR(&pin_GPIO38) },
|
||||||
|
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_BUZZER), MP_ROM_PTR(&pin_GPIO39) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D39), MP_ROM_PTR(&pin_GPIO39) },
|
||||||
|
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D40), MP_ROM_PTR(&pin_GPIO40) },
|
||||||
|
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D41), MP_ROM_PTR(&pin_GPIO41) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_GPIO41) },
|
||||||
|
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D42), MP_ROM_PTR(&pin_GPIO42) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO42) },
|
||||||
|
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D45), MP_ROM_PTR(&pin_GPIO45) },
|
||||||
|
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_RGB), MP_ROM_PTR(&pin_GPIO46) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_NEOPIXEL), MP_ROM_PTR(&pin_GPIO46) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D46), MP_ROM_PTR(&pin_GPIO46) },
|
||||||
|
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_STEMMA_I2C), MP_ROM_PTR(&board_i2c_obj) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_SPI), MP_ROM_PTR(&board_spi_obj) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_UART), MP_ROM_PTR(&board_uart_obj) }
|
||||||
|
};
|
||||||
|
MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table);
|
@ -0,0 +1,34 @@
|
|||||||
|
CONFIG_ESP32S3_SPIRAM_SUPPORT=y
|
||||||
|
#
|
||||||
|
# SPI RAM config
|
||||||
|
#
|
||||||
|
# CONFIG_SPIRAM_MODE_QUAD is not set
|
||||||
|
CONFIG_SPIRAM_MODE_OCT=y
|
||||||
|
# CONFIG_SPIRAM_TYPE_AUTO is not set
|
||||||
|
CONFIG_SPIRAM_TYPE_ESPPSRAM64=y
|
||||||
|
CONFIG_SPIRAM_SIZE=8388608
|
||||||
|
# end of SPI RAM config
|
||||||
|
|
||||||
|
CONFIG_DEFAULT_PSRAM_CLK_IO=30
|
||||||
|
#
|
||||||
|
# PSRAM Clock and CS IO for ESP32S3
|
||||||
|
#
|
||||||
|
CONFIG_DEFAULT_PSRAM_CS_IO=26
|
||||||
|
# end of PSRAM Clock and CS IO for ESP32S3
|
||||||
|
|
||||||
|
# CONFIG_SPIRAM_FETCH_INSTRUCTIONS is not set
|
||||||
|
# CONFIG_SPIRAM_RODATA is not set
|
||||||
|
CONFIG_SPIRAM_SPEED_80M=y
|
||||||
|
# CONFIG_SPIRAM_SPEED_40M is not set
|
||||||
|
CONFIG_SPIRAM=y
|
||||||
|
CONFIG_SPIRAM_BOOT_INIT=y
|
||||||
|
# CONFIG_SPIRAM_IGNORE_NOTFOUND is not set
|
||||||
|
CONFIG_SPIRAM_USE_MEMMAP=y
|
||||||
|
# CONFIG_SPIRAM_USE_CAPS_ALLOC is not set
|
||||||
|
# CONFIG_SPIRAM_USE_MALLOC is not set
|
||||||
|
CONFIG_SPIRAM_MEMTEST=y
|
||||||
|
#
|
||||||
|
# LWIP
|
||||||
|
#
|
||||||
|
CONFIG_LWIP_LOCAL_HOSTNAME="espressif-esp32s3"
|
||||||
|
# end of LWIP
|
17
ports/espressif/boards/lilygo_ttgo_t-oi-plus/board.c
Normal file
17
ports/espressif/boards/lilygo_ttgo_t-oi-plus/board.c
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
#include "shared-bindings/microcontroller/Pin.h"
|
||||||
|
#include "supervisor/board.h"
|
||||||
|
|
||||||
|
#include "components/driver/include/driver/gpio.h"
|
||||||
|
|
||||||
|
void board_init(void) {
|
||||||
|
}
|
||||||
|
|
||||||
|
bool board_requests_safe_mode(void) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void reset_board(void) {
|
||||||
|
}
|
||||||
|
|
||||||
|
void board_deinit(void) {
|
||||||
|
}
|
13
ports/espressif/boards/lilygo_ttgo_t-oi-plus/mpconfigboard.h
Normal file
13
ports/espressif/boards/lilygo_ttgo_t-oi-plus/mpconfigboard.h
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
// Define board
|
||||||
|
#define MICROPY_HW_BOARD_NAME "LILYGO TTGO T-OI PLUS"
|
||||||
|
#define MICROPY_HW_MCU_NAME "ESP32-C3"
|
||||||
|
|
||||||
|
#define MICROPY_HW_LED_STATUS (&pin_GPIO3)
|
||||||
|
|
||||||
|
// I2C
|
||||||
|
#define CIRCUITPY_BOARD_I2C (1)
|
||||||
|
#define CIRCUITPY_BOARD_I2C_PIN {{.scl = &pin_GPIO18, .sda = &pin_GPIO19}}
|
||||||
|
|
||||||
|
// UART
|
||||||
|
#define CIRCUITPY_BOARD_UART (1)
|
||||||
|
#define CIRCUITPY_BOARD_UART_PIN {{.tx = &pin_GPIO21, .rx = &pin_GPIO20}}
|
@ -0,0 +1,10 @@
|
|||||||
|
CIRCUITPY_CREATOR_ID = 0xC3C30000
|
||||||
|
CIRCUITPY_CREATION_ID = 0x00C30002
|
||||||
|
|
||||||
|
IDF_TARGET = esp32c3
|
||||||
|
|
||||||
|
INTERNAL_FLASH_FILESYSTEM = 1
|
||||||
|
|
||||||
|
CIRCUITPY_ESP_FLASH_MODE = dio
|
||||||
|
CIRCUITPY_ESP_FLASH_FREQ = 80m
|
||||||
|
CIRCUITPY_ESP_FLASH_SIZE = 4MB
|
29
ports/espressif/boards/lilygo_ttgo_t-oi-plus/pins.c
Normal file
29
ports/espressif/boards/lilygo_ttgo_t-oi-plus/pins.c
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
#include "shared-bindings/board/__init__.h"
|
||||||
|
|
||||||
|
STATIC const mp_rom_map_elem_t board_module_globals_table[] = {
|
||||||
|
CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_BATTERY), MP_ROM_PTR(&pin_GPIO2) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_VOLTAGE_MONITOR), MP_ROM_PTR(&pin_GPIO2) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_IO2), MP_ROM_PTR(&pin_GPIO2) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_IO8), MP_ROM_PTR(&pin_GPIO8) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_IO9), MP_ROM_PTR(&pin_GPIO9) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_GPIO20) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_IO20), MP_ROM_PTR(&pin_GPIO20) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO21) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_IO21), MP_ROM_PTR(&pin_GPIO21) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_LED), MP_ROM_PTR(&pin_GPIO3) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_IO3), MP_ROM_PTR(&pin_GPIO3) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO19) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_IO19), MP_ROM_PTR(&pin_GPIO19) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_GPIO18) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_IO18), MP_ROM_PTR(&pin_GPIO18) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_IO4), MP_ROM_PTR(&pin_GPIO4) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_IO5), MP_ROM_PTR(&pin_GPIO5) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_IO6), MP_ROM_PTR(&pin_GPIO6) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_IO7), MP_ROM_PTR(&pin_GPIO7) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_IO10), MP_ROM_PTR(&pin_GPIO10) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_UART), MP_ROM_PTR(&board_uart_obj) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_STEMMA_I2C), MP_ROM_PTR(&board_i2c_obj) },
|
||||||
|
};
|
||||||
|
MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table);
|
5
ports/espressif/boards/lilygo_ttgo_t-oi-plus/sdkconfig
Normal file
5
ports/espressif/boards/lilygo_ttgo_t-oi-plus/sdkconfig
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
#
|
||||||
|
# LWIP
|
||||||
|
#
|
||||||
|
CONFIG_LWIP_LOCAL_HOSTNAME="LILYGO TTGO T-OI PLUS"
|
||||||
|
# end of LWIP
|
@ -574,6 +574,9 @@ void common_hal_bleio_adapter_start_advertising(bleio_adapter_obj_t *self, bool
|
|||||||
}
|
}
|
||||||
|
|
||||||
void common_hal_bleio_adapter_stop_advertising(bleio_adapter_obj_t *self) {
|
void common_hal_bleio_adapter_stop_advertising(bleio_adapter_obj_t *self) {
|
||||||
|
if (!common_hal_bleio_adapter_get_advertising(self)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
int err_code = ble_gap_ext_adv_stop(0);
|
int err_code = ble_gap_ext_adv_stop(0);
|
||||||
self->user_advertising = false;
|
self->user_advertising = false;
|
||||||
|
|
||||||
|
@ -42,6 +42,17 @@
|
|||||||
// #include "common-hal/_bleio/bonding.h"
|
// #include "common-hal/_bleio/bonding.h"
|
||||||
#include "common-hal/_bleio/ble_events.h"
|
#include "common-hal/_bleio/ble_events.h"
|
||||||
|
|
||||||
|
void bleio_user_reset() {
|
||||||
|
// Stop any user scanning or advertising.
|
||||||
|
common_hal_bleio_adapter_stop_scan(&common_hal_bleio_adapter_obj);
|
||||||
|
common_hal_bleio_adapter_stop_advertising(&common_hal_bleio_adapter_obj);
|
||||||
|
|
||||||
|
ble_event_remove_heap_handlers();
|
||||||
|
|
||||||
|
// Maybe start advertising the BLE workflow.
|
||||||
|
supervisor_bluetooth_background();
|
||||||
|
}
|
||||||
|
|
||||||
// Turn off BLE on a reset or reload.
|
// Turn off BLE on a reset or reload.
|
||||||
void bleio_reset() {
|
void bleio_reset() {
|
||||||
// Set this explicitly to save data.
|
// Set this explicitly to save data.
|
||||||
|
@ -31,6 +31,7 @@
|
|||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
|
#include "py/gc.h"
|
||||||
#include "py/misc.h"
|
#include "py/misc.h"
|
||||||
#include "py/mpstate.h"
|
#include "py/mpstate.h"
|
||||||
#include "py/runtime.h"
|
#include "py/runtime.h"
|
||||||
@ -44,6 +45,17 @@ void ble_event_reset(void) {
|
|||||||
MP_STATE_VM(ble_event_handler_entries) = NULL;
|
MP_STATE_VM(ble_event_handler_entries) = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ble_event_remove_heap_handlers(void) {
|
||||||
|
ble_event_handler_entry_t *it = MP_STATE_VM(ble_event_handler_entries);
|
||||||
|
while (it != NULL) {
|
||||||
|
// If the param is on the heap, then delete the handler.
|
||||||
|
if (HEAP_PTR(it->param)) {
|
||||||
|
ble_event_remove_handler(it->func, it->param);
|
||||||
|
}
|
||||||
|
it = it->next;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void ble_event_add_handler_entry(ble_event_handler_entry_t *entry,
|
void ble_event_add_handler_entry(ble_event_handler_entry_t *entry,
|
||||||
ble_gap_event_fn *func, void *param) {
|
ble_gap_event_fn *func, void *param) {
|
||||||
ble_event_handler_entry_t *it = MP_STATE_VM(ble_event_handler_entries);
|
ble_event_handler_entry_t *it = MP_STATE_VM(ble_event_handler_entries);
|
||||||
|
@ -40,6 +40,7 @@ typedef struct ble_event_handler_entry {
|
|||||||
} ble_event_handler_entry_t;
|
} ble_event_handler_entry_t;
|
||||||
|
|
||||||
void ble_event_reset(void);
|
void ble_event_reset(void);
|
||||||
|
void ble_event_remove_heap_handlers(void);
|
||||||
void ble_event_add_handler(ble_gap_event_fn *func, void *param);
|
void ble_event_add_handler(ble_gap_event_fn *func, void *param);
|
||||||
void ble_event_remove_handler(ble_gap_event_fn *func, void *param);
|
void ble_event_remove_handler(ble_gap_event_fn *func, void *param);
|
||||||
|
|
||||||
|
@ -283,10 +283,6 @@ void reset_port(void) {
|
|||||||
watchdog_reset();
|
watchdog_reset();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if CIRCUITPY_BLEIO
|
|
||||||
bleio_reset();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if CIRCUITPY_WIFI
|
#if CIRCUITPY_WIFI
|
||||||
wifi_reset();
|
wifi_reset();
|
||||||
#endif
|
#endif
|
||||||
|
@ -35,6 +35,7 @@
|
|||||||
#include "nrf_sdm.h"
|
#include "nrf_sdm.h"
|
||||||
#include "nrf_soc.h"
|
#include "nrf_soc.h"
|
||||||
#include "nrfx_power.h"
|
#include "nrfx_power.h"
|
||||||
|
#include "py/gc.h"
|
||||||
#include "py/misc.h"
|
#include "py/misc.h"
|
||||||
#include "py/mpstate.h"
|
#include "py/mpstate.h"
|
||||||
|
|
||||||
@ -56,6 +57,17 @@ void ble_drv_reset() {
|
|||||||
sd_flash_operation_status = SD_FLASH_OPERATION_DONE;
|
sd_flash_operation_status = SD_FLASH_OPERATION_DONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ble_drv_remove_heap_handlers(void) {
|
||||||
|
ble_drv_evt_handler_entry_t *it = MP_STATE_VM(ble_drv_evt_handler_entries);
|
||||||
|
while (it != NULL) {
|
||||||
|
// If the param is on the heap, then delete the handler.
|
||||||
|
if (HEAP_PTR(it->param)) {
|
||||||
|
ble_drv_remove_event_handler(it->func, it->param);
|
||||||
|
}
|
||||||
|
it = it->next;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void ble_drv_add_event_handler_entry(ble_drv_evt_handler_entry_t *entry, ble_drv_evt_handler_t func, void *param) {
|
void ble_drv_add_event_handler_entry(ble_drv_evt_handler_entry_t *entry, ble_drv_evt_handler_t func, void *param) {
|
||||||
ble_drv_evt_handler_entry_t *it = MP_STATE_VM(ble_drv_evt_handler_entries);
|
ble_drv_evt_handler_entry_t *it = MP_STATE_VM(ble_drv_evt_handler_entries);
|
||||||
while (it != NULL) {
|
while (it != NULL) {
|
||||||
|
@ -67,6 +67,7 @@ typedef struct ble_drv_evt_handler_entry {
|
|||||||
} ble_drv_evt_handler_entry_t;
|
} ble_drv_evt_handler_entry_t;
|
||||||
|
|
||||||
void ble_drv_reset(void);
|
void ble_drv_reset(void);
|
||||||
|
void ble_drv_remove_heap_handlers(void);
|
||||||
void ble_drv_add_event_handler(ble_drv_evt_handler_t func, void *param);
|
void ble_drv_add_event_handler(ble_drv_evt_handler_t func, void *param);
|
||||||
void ble_drv_remove_event_handler(ble_drv_evt_handler_t func, void *param);
|
void ble_drv_remove_event_handler(ble_drv_evt_handler_t func, void *param);
|
||||||
|
|
||||||
|
@ -380,9 +380,11 @@ mp_int_t common_hal_bleio_packet_buffer_write(bleio_packet_buffer_obj_t *self, c
|
|||||||
!mp_hal_is_interrupted()) {
|
!mp_hal_is_interrupted()) {
|
||||||
RUN_BACKGROUND_TASKS;
|
RUN_BACKGROUND_TASKS;
|
||||||
}
|
}
|
||||||
|
if (mp_hal_is_interrupted()) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (self->conn_handle == BLE_CONN_HANDLE_INVALID ||
|
if (self->conn_handle == BLE_CONN_HANDLE_INVALID) {
|
||||||
mp_hal_is_interrupted()) {
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -94,6 +94,17 @@ void check_sec_status(uint8_t sec_status) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void bleio_user_reset() {
|
||||||
|
// Stop any user scanning or advertising.
|
||||||
|
common_hal_bleio_adapter_stop_scan(&common_hal_bleio_adapter_obj);
|
||||||
|
common_hal_bleio_adapter_stop_advertising(&common_hal_bleio_adapter_obj);
|
||||||
|
|
||||||
|
ble_drv_remove_heap_handlers();
|
||||||
|
|
||||||
|
// Maybe start advertising the BLE workflow.
|
||||||
|
supervisor_bluetooth_background();
|
||||||
|
}
|
||||||
|
|
||||||
// Turn off BLE on a reset or reload.
|
// Turn off BLE on a reset or reload.
|
||||||
void bleio_reset() {
|
void bleio_reset() {
|
||||||
// Set this explicitly to save data.
|
// Set this explicitly to save data.
|
||||||
|
@ -246,10 +246,6 @@ void reset_port(void) {
|
|||||||
|
|
||||||
timers_reset();
|
timers_reset();
|
||||||
|
|
||||||
#if CIRCUITPY_BLEIO
|
|
||||||
bleio_reset();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if CIRCUITPY_WATCHDOG
|
#if CIRCUITPY_WATCHDOG
|
||||||
watchdog_reset();
|
watchdog_reset();
|
||||||
#endif
|
#endif
|
||||||
|
@ -30,7 +30,14 @@
|
|||||||
#include "bindings/rp2pio/StateMachine.h"
|
#include "bindings/rp2pio/StateMachine.h"
|
||||||
#include "bindings/rp2pio/__init__.h"
|
#include "bindings/rp2pio/__init__.h"
|
||||||
|
|
||||||
//| """Hardware interface to RP2 series' programmable IO (PIO) peripheral."""
|
//| """Hardware interface to RP2 series' programmable IO (PIO) peripheral.
|
||||||
|
//|
|
||||||
|
//| .. note:: This module is intended to be used with the `adafruit_pioasm library
|
||||||
|
//| <https://github.com/adafruit/Adafruit_CircuitPython_PIOASM>`_. For an
|
||||||
|
//| introduction and guide to working with PIO in CircuitPython, see `this
|
||||||
|
//| Learn guide <https://learn.adafruit.com/intro-to-rp2040-pio-with-circuitpython>`_.
|
||||||
|
//|
|
||||||
|
//| """
|
||||||
//|
|
//|
|
||||||
|
|
||||||
//| def pins_are_sequential(pins: List[microcontroller.Pin]) -> bool:
|
//| def pins_are_sequential(pins: List[microcontroller.Pin]) -> bool:
|
||||||
|
45
ports/raspberrypi/boards/zrichard_rp2.65-f/board.c
Normal file
45
ports/raspberrypi/boards/zrichard_rp2.65-f/board.c
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of the MicroPython project, http://micropython.org/
|
||||||
|
*
|
||||||
|
* The MIT License (MIT)
|
||||||
|
*
|
||||||
|
* Copyright (c) 2021 Scott Shawcroft for Adafruit Industries
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in
|
||||||
|
* all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
* THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "supervisor/board.h"
|
||||||
|
#include "shared-bindings/microcontroller/Pin.h"
|
||||||
|
#include "src/rp2_common/hardware_gpio/include/hardware/gpio.h"
|
||||||
|
#include "supervisor/shared/board.h"
|
||||||
|
|
||||||
|
void board_init(void) {
|
||||||
|
}
|
||||||
|
|
||||||
|
bool board_requests_safe_mode(void) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void reset_board(void) {
|
||||||
|
// turn off any left over LED
|
||||||
|
board_reset_user_neopixels(&pin_GPIO25, 62);
|
||||||
|
}
|
||||||
|
|
||||||
|
void board_deinit(void) {
|
||||||
|
}
|
@ -0,0 +1,4 @@
|
|||||||
|
#define MICROPY_HW_BOARD_NAME "RP2.65-F"
|
||||||
|
#define MICROPY_HW_MCU_NAME "rp2040"
|
||||||
|
|
||||||
|
#define MICROPY_HW_NEOPIXEL (&pin_GPIO25)
|
17
ports/raspberrypi/boards/zrichard_rp2.65-f/mpconfigboard.mk
Normal file
17
ports/raspberrypi/boards/zrichard_rp2.65-f/mpconfigboard.mk
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
# pid.codes ZR
|
||||||
|
USB_VID = 0x1209
|
||||||
|
USB_PID = 0x5a52
|
||||||
|
|
||||||
|
USB_PRODUCT = "RP2.65-F"
|
||||||
|
USB_MANUFACTURER = "ZRichard"
|
||||||
|
|
||||||
|
CHIP_VARIANT = RP2040
|
||||||
|
CHIP_FAMILY = rp2
|
||||||
|
|
||||||
|
EXTERNAL_FLASH_DEVICES = "W25Q64JVxQ,W25Q128JVxQ"
|
||||||
|
|
||||||
|
CIRCUITPY__EVE = 1
|
||||||
|
|
||||||
|
|
||||||
|
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_NeoPixel
|
||||||
|
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_MIDI
|
@ -0,0 +1,4 @@
|
|||||||
|
// Put board-specific pico-sdk definitions here. This file must exist.
|
||||||
|
|
||||||
|
// Allow extra time for xosc to start.
|
||||||
|
#define PICO_XOSC_STARTUP_DELAY_MULTIPLIER 64
|
32
ports/raspberrypi/boards/zrichard_rp2.65-f/pins.c
Normal file
32
ports/raspberrypi/boards/zrichard_rp2.65-f/pins.c
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
#include "shared-bindings/board/__init__.h"
|
||||||
|
|
||||||
|
STATIC const mp_rom_map_elem_t board_module_globals_table[] = {
|
||||||
|
CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS
|
||||||
|
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_ROW0), MP_ROM_PTR(&pin_GPIO0) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_COL0), MP_ROM_PTR(&pin_GPIO1) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_ROW1), MP_ROM_PTR(&pin_GPIO2) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_COL1), MP_ROM_PTR(&pin_GPIO3) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_ROW2), MP_ROM_PTR(&pin_GPIO4) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_COL2), MP_ROM_PTR(&pin_GPIO5) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_ROW3), MP_ROM_PTR(&pin_GPIO6) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_COL3), MP_ROM_PTR(&pin_GPIO7) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_ROW4), MP_ROM_PTR(&pin_GPIO8) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_COL4), MP_ROM_PTR(&pin_GPIO9) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_ROW5), MP_ROM_PTR(&pin_GPIO10) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_COL5), MP_ROM_PTR(&pin_GPIO11) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_ROW6), MP_ROM_PTR(&pin_GPIO12) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_COL6), MP_ROM_PTR(&pin_GPIO13) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_ROW7), MP_ROM_PTR(&pin_GPIO14) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_COL7), MP_ROM_PTR(&pin_GPIO15) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_ROW8), MP_ROM_PTR(&pin_GPIO16) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_ROW9), MP_ROM_PTR(&pin_GPIO17) },
|
||||||
|
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_LED), MP_ROM_PTR(&pin_GPIO25) },
|
||||||
|
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_RV1), MP_ROM_PTR(&pin_GPIO27) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_RV2), MP_ROM_PTR(&pin_GPIO28) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_RV3), MP_ROM_PTR(&pin_GPIO29) },
|
||||||
|
|
||||||
|
};
|
||||||
|
MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table);
|
@ -14,6 +14,7 @@ EXTERNAL_FLASH_DEVICES = GD25Q16C
|
|||||||
CIRCUITPY_NVM = 1
|
CIRCUITPY_NVM = 1
|
||||||
CIRCUITPY_BITMAPTOOLS = 0
|
CIRCUITPY_BITMAPTOOLS = 0
|
||||||
CIRCUITPY_BLEIO_HCI = 0
|
CIRCUITPY_BLEIO_HCI = 0
|
||||||
|
CIRCUITPY_ONEWIREIO = 0
|
||||||
CIRCUITPY_ZLIB = 0
|
CIRCUITPY_ZLIB = 0
|
||||||
|
|
||||||
MCU_SERIES = F4
|
MCU_SERIES = F4
|
||||||
|
9
py/gc.h
9
py/gc.h
@ -35,11 +35,16 @@
|
|||||||
#define WORDS_PER_BLOCK ((MICROPY_BYTES_PER_GC_BLOCK) / MP_BYTES_PER_OBJ_WORD)
|
#define WORDS_PER_BLOCK ((MICROPY_BYTES_PER_GC_BLOCK) / MP_BYTES_PER_OBJ_WORD)
|
||||||
#define BYTES_PER_BLOCK (MICROPY_BYTES_PER_GC_BLOCK)
|
#define BYTES_PER_BLOCK (MICROPY_BYTES_PER_GC_BLOCK)
|
||||||
|
|
||||||
|
#define HEAP_PTR(ptr) ( \
|
||||||
|
MP_STATE_MEM(gc_pool_start) != 0 /* Not on the heap if it isn't inited */ \
|
||||||
|
&& ptr >= (void *)MP_STATE_MEM(gc_pool_start) /* must be above start of pool */ \
|
||||||
|
&& ptr < (void *)MP_STATE_MEM(gc_pool_end) /* must be below end of pool */ \
|
||||||
|
)
|
||||||
|
|
||||||
// ptr should be of type void*
|
// ptr should be of type void*
|
||||||
#define VERIFY_PTR(ptr) ( \
|
#define VERIFY_PTR(ptr) ( \
|
||||||
((uintptr_t)(ptr) & (BYTES_PER_BLOCK - 1)) == 0 /* must be aligned on a block */ \
|
((uintptr_t)(ptr) & (BYTES_PER_BLOCK - 1)) == 0 /* must be aligned on a block */ \
|
||||||
&& ptr >= (void *)MP_STATE_MEM(gc_pool_start) /* must be above start of pool */ \
|
&& HEAP_PTR(ptr) \
|
||||||
&& ptr < (void *)MP_STATE_MEM(gc_pool_end) /* must be below end of pool */ \
|
|
||||||
)
|
)
|
||||||
|
|
||||||
void gc_init(void *start, void *end);
|
void gc_init(void *start, void *end);
|
||||||
|
@ -140,7 +140,7 @@ const char *mp_common_errno_to_str(mp_obj_t errno_val, char *buf, size_t len) {
|
|||||||
const compressed_string_t *desc = NULL;
|
const compressed_string_t *desc = NULL;
|
||||||
switch (MP_OBJ_SMALL_INT_VALUE(errno_val)) {
|
switch (MP_OBJ_SMALL_INT_VALUE(errno_val)) {
|
||||||
case EPERM:
|
case EPERM:
|
||||||
desc = MP_ERROR_TEXT("Permission denied");
|
desc = MP_ERROR_TEXT("Operation not permitted");
|
||||||
break;
|
break;
|
||||||
case ENOENT:
|
case ENOENT:
|
||||||
desc = MP_ERROR_TEXT("No such file/directory");
|
desc = MP_ERROR_TEXT("No such file/directory");
|
||||||
@ -155,7 +155,7 @@ const char *mp_common_errno_to_str(mp_obj_t errno_val, char *buf, size_t len) {
|
|||||||
desc = MP_ERROR_TEXT("File exists");
|
desc = MP_ERROR_TEXT("File exists");
|
||||||
break;
|
break;
|
||||||
case ENODEV:
|
case ENODEV:
|
||||||
desc = MP_ERROR_TEXT("Unsupported operation");
|
desc = MP_ERROR_TEXT("No such device");
|
||||||
break;
|
break;
|
||||||
case EINVAL:
|
case EINVAL:
|
||||||
desc = MP_ERROR_TEXT("Invalid argument");
|
desc = MP_ERROR_TEXT("Invalid argument");
|
||||||
|
@ -54,6 +54,11 @@ extern const mp_obj_type_t mp_type_bleio_BluetoothError;
|
|||||||
extern const mp_obj_type_t mp_type_bleio_RoleError;
|
extern const mp_obj_type_t mp_type_bleio_RoleError;
|
||||||
extern const mp_obj_type_t mp_type_bleio_SecurityError;
|
extern const mp_obj_type_t mp_type_bleio_SecurityError;
|
||||||
|
|
||||||
|
// Resets all user created BLE state in preparation for the heap disappearing.
|
||||||
|
// It will maintain BLE workflow and connections.
|
||||||
|
void bleio_user_reset(void);
|
||||||
|
|
||||||
|
// Completely resets the BLE stack including BLE connections.
|
||||||
void bleio_reset(void);
|
void bleio_reset(void);
|
||||||
|
|
||||||
extern mp_obj_t bleio_set_adapter(mp_obj_t adapter_obj);
|
extern mp_obj_t bleio_set_adapter(mp_obj_t adapter_obj);
|
||||||
|
@ -55,6 +55,9 @@
|
|||||||
//|
|
//|
|
||||||
//| For both light sleep and deep sleep, if CircuitPython is connected to a host computer,
|
//| For both light sleep and deep sleep, if CircuitPython is connected to a host computer,
|
||||||
//| maintaining the connection takes priority and power consumption may not be reduced.
|
//| maintaining the connection takes priority and power consumption may not be reduced.
|
||||||
|
//|
|
||||||
|
//| For more information about working with alarms and light/deep sleep in CircuitPython,
|
||||||
|
//| see `this Learn guide <https://learn.adafruit.com/deep-sleep-with-circuitpython>`_.
|
||||||
//| """
|
//| """
|
||||||
|
|
||||||
//| sleep_memory: SleepMemory
|
//| sleep_memory: SleepMemory
|
||||||
|
@ -59,12 +59,11 @@
|
|||||||
//| :py:meth:`~analogio.AnalogIn.deinit` the hardware. The last step is optional
|
//| :py:meth:`~analogio.AnalogIn.deinit` the hardware. The last step is optional
|
||||||
//| because CircuitPython will do it automatically after the program finishes.
|
//| because CircuitPython will do it automatically after the program finishes.
|
||||||
//|
|
//|
|
||||||
//| For the essentials of `analogio`, see the CircuitPython Essentials
|
//| For the essentials of `analogio`, see the `CircuitPython Essentials
|
||||||
//| Learn guide:
|
//| Learn guide <https://learn.adafruit.com/circuitpython-essentials/circuitpython-analog-in>`_
|
||||||
//| https://learn.adafruit.com/circuitpython-essentials/circuitpython-analog-in
|
|
||||||
//|
|
//|
|
||||||
//| For more information on using `analogio`, see this additional Learn guide:
|
//| For more information on using `analogio`, see `this additional Learn guide
|
||||||
//| https://learn.adafruit.com/circuitpython-basics-analog-inputs-and-outputs
|
//| <https://learn.adafruit.com/circuitpython-basics-analog-inputs-and-outputs>`_
|
||||||
//| """
|
//| """
|
||||||
//|
|
//|
|
||||||
|
|
||||||
|
@ -31,7 +31,12 @@
|
|||||||
|
|
||||||
#include "shared-bindings/audiomp3/MP3Decoder.h"
|
#include "shared-bindings/audiomp3/MP3Decoder.h"
|
||||||
|
|
||||||
//| """Support for MP3-compressed audio files"""
|
//| """Support for MP3-compressed audio files
|
||||||
|
//|
|
||||||
|
//| For more infomration about working with MP3 files in CircuitPython,
|
||||||
|
//| see `this CircuitPython Essentials Learn guide page
|
||||||
|
//| <https://learn.adafruit.com/circuitpython-essentials/circuitpython-mp3-audio>`_.
|
||||||
|
//| """
|
||||||
//|
|
//|
|
||||||
|
|
||||||
STATIC const mp_rom_map_elem_t audiomp3_module_globals_table[] = {
|
STATIC const mp_rom_map_elem_t audiomp3_module_globals_table[] = {
|
||||||
|
@ -43,7 +43,13 @@
|
|||||||
#include "extmod/vfs_posix.h"
|
#include "extmod/vfs_posix.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//| """Collection of bitmap manipulation tools"""
|
//| """Collection of bitmap manipulation tools
|
||||||
|
//|
|
||||||
|
//| .. note:: If you're looking for information about displaying bitmaps on
|
||||||
|
//| screens in CircuitPython, see `this Learn guide
|
||||||
|
//| <https://learn.adafruit.com/circuitpython-display-support-using-displayio>`_
|
||||||
|
//| for information about using the :py:mod:`displayio` module.
|
||||||
|
//| """
|
||||||
//|
|
//|
|
||||||
|
|
||||||
STATIC int16_t validate_point(mp_obj_t point, int16_t default_value) {
|
STATIC int16_t validate_point(mp_obj_t point, int16_t default_value) {
|
||||||
|
@ -47,9 +47,9 @@
|
|||||||
//| the default pins and settings. For more information about serial communcication
|
//| the default pins and settings. For more information about serial communcication
|
||||||
//| in CircuitPython, see the :mod:`busio`.
|
//| in CircuitPython, see the :mod:`busio`.
|
||||||
//|
|
//|
|
||||||
//| For more information regarding the typical usage of :py:mod:`board`, refer to the CircuitPython
|
//| For more information regarding the typical usage of :py:mod:`board`, refer to the `CircuitPython
|
||||||
//| Essentials Learn guide:
|
//| Essentials Learn guide
|
||||||
//| https://learn.adafruit.com/circuitpython-essentials/circuitpython-pins-and-modules
|
//| <https://learn.adafruit.com/circuitpython-essentials/circuitpython-pins-and-modules>`_
|
||||||
//|
|
//|
|
||||||
//| .. warning:: The board module varies by board. The APIs documented here may or may not be
|
//| .. warning:: The board module varies by board. The APIs documented here may or may not be
|
||||||
//| available on a specific board."""
|
//| available on a specific board."""
|
||||||
|
@ -73,12 +73,11 @@
|
|||||||
//| led.value = False
|
//| led.value = False
|
||||||
//| time.sleep(0.1)
|
//| time.sleep(0.1)
|
||||||
//|
|
//|
|
||||||
//| For the essentials of `digitalio`, see the CircuitPython Essentials
|
//| For the essentials of `digitalio`, see the `CircuitPython Essentials
|
||||||
//| Learn guide:
|
//| Learn guide <https://learn.adafruit.com/circuitpython-essentials/circuitpython-digital-in-out>`_
|
||||||
//| https://learn.adafruit.com/circuitpython-essentials/circuitpython-digital-in-out
|
|
||||||
//|
|
//|
|
||||||
//| For more information on using `digitalio`, see this additional Learn guide:
|
//| For more information on using `digitalio`, see `this additional Learn guide
|
||||||
//| https://learn.adafruit.com/circuitpython-digital-inputs-and-outputs
|
//| <https://learn.adafruit.com/circuitpython-digital-inputs-and-outputs>`_
|
||||||
//| """
|
//| """
|
||||||
|
|
||||||
STATIC const mp_rom_map_elem_t digitalio_module_globals_table[] = {
|
STATIC const mp_rom_map_elem_t digitalio_module_globals_table[] = {
|
||||||
|
@ -170,14 +170,20 @@ STATIC mp_obj_t displayio_display_make_new(const mp_obj_type_t *type, size_t n_a
|
|||||||
mp_raise_ValueError(translate("Display rotation must be in 90 degree increments"));
|
mp_raise_ValueError(translate("Display rotation must be in 90 degree increments"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const bool sh1107_addressing = args[ARG_SH1107_addressing].u_bool;
|
||||||
|
const mp_int_t color_depth = args[ARG_color_depth].u_int;
|
||||||
|
if (sh1107_addressing && color_depth != 1) {
|
||||||
|
mp_raise_ValueError_varg(translate("%q must be 1 when %q is True"), MP_QSTR_color_depth, MP_QSTR_SH1107_addressing);
|
||||||
|
}
|
||||||
|
|
||||||
primary_display_t *disp = allocate_display_or_raise();
|
primary_display_t *disp = allocate_display_or_raise();
|
||||||
displayio_display_obj_t *self = &disp->display;
|
displayio_display_obj_t *self = &disp->display;
|
||||||
;
|
|
||||||
self->base.type = &displayio_display_type;
|
self->base.type = &displayio_display_type;
|
||||||
common_hal_displayio_display_construct(
|
common_hal_displayio_display_construct(
|
||||||
self,
|
self,
|
||||||
display_bus, args[ARG_width].u_int, args[ARG_height].u_int, args[ARG_colstart].u_int, args[ARG_rowstart].u_int, rotation,
|
display_bus, args[ARG_width].u_int, args[ARG_height].u_int, args[ARG_colstart].u_int, args[ARG_rowstart].u_int, rotation,
|
||||||
args[ARG_color_depth].u_int, args[ARG_grayscale].u_bool,
|
color_depth, args[ARG_grayscale].u_bool,
|
||||||
args[ARG_pixels_in_byte_share_row].u_bool,
|
args[ARG_pixels_in_byte_share_row].u_bool,
|
||||||
args[ARG_bytes_per_cell].u_bool,
|
args[ARG_bytes_per_cell].u_bool,
|
||||||
args[ARG_reverse_pixels_in_byte].u_bool,
|
args[ARG_reverse_pixels_in_byte].u_bool,
|
||||||
@ -194,7 +200,7 @@ STATIC mp_obj_t displayio_display_make_new(const mp_obj_type_t *type, size_t n_a
|
|||||||
args[ARG_auto_refresh].u_bool,
|
args[ARG_auto_refresh].u_bool,
|
||||||
args[ARG_native_frames_per_second].u_int,
|
args[ARG_native_frames_per_second].u_int,
|
||||||
args[ARG_backlight_on_high].u_bool,
|
args[ARG_backlight_on_high].u_bool,
|
||||||
args[ARG_SH1107_addressing].u_bool
|
sh1107_addressing
|
||||||
);
|
);
|
||||||
|
|
||||||
return self;
|
return self;
|
||||||
|
@ -51,9 +51,9 @@
|
|||||||
//| The `displayio` module contains classes to manage display output
|
//| The `displayio` module contains classes to manage display output
|
||||||
//| including synchronizing with refresh rates and partial updating.
|
//| including synchronizing with refresh rates and partial updating.
|
||||||
//|
|
//|
|
||||||
//| For more a more thorugh explanation and guide for using `displayio`, please
|
//| For more a more thorough explanation and guide for using `displayio`, please
|
||||||
//| refer to this Learn guide:
|
//| refer to `this Learn guide
|
||||||
//| https://learn.adafruit.com/circuitpython-display-support-using-displayio
|
//| <https://learn.adafruit.com/circuitpython-display-support-using-displayio>`_.
|
||||||
//| """
|
//| """
|
||||||
//|
|
//|
|
||||||
|
|
||||||
|
@ -33,7 +33,15 @@
|
|||||||
#include "shared-bindings/fontio/BuiltinFont.h"
|
#include "shared-bindings/fontio/BuiltinFont.h"
|
||||||
#include "shared-bindings/fontio/Glyph.h"
|
#include "shared-bindings/fontio/Glyph.h"
|
||||||
|
|
||||||
//| """Core font related data structures"""
|
//| """Core font related data structures
|
||||||
|
//|
|
||||||
|
//| .. note:: This module is intended only for low-level usage. For working with
|
||||||
|
//| fonts in CircuitPython see the `adafruit_bitmap_font library
|
||||||
|
//| <https://github.com/adafruit/Adafruit_CircuitPython_Bitmap_Font>`_.
|
||||||
|
//| For information on creating custom fonts for use in CircuitPython, see
|
||||||
|
//| `this Learn guide <https://learn.adafruit.com/custom-fonts-for-pyportal-circuitpython-display>`_
|
||||||
|
//|
|
||||||
|
//| """
|
||||||
//|
|
//|
|
||||||
|
|
||||||
STATIC const mp_rom_map_elem_t fontio_module_globals_table[] = {
|
STATIC const mp_rom_map_elem_t fontio_module_globals_table[] = {
|
||||||
|
@ -43,8 +43,9 @@
|
|||||||
|
|
||||||
//| """Pin references and cpu functionality
|
//| """Pin references and cpu functionality
|
||||||
//|
|
//|
|
||||||
//| The `microcontroller` module defines the pins from the perspective of the
|
//| The `microcontroller` module defines the pins and other bare-metal hardware
|
||||||
//| microcontroller. See :py:mod:`board` for board-specific pin mappings."""
|
//| from the perspective of the microcontroller. See :py:mod:`board` for
|
||||||
|
//| board-specific pin mappings."""
|
||||||
//|
|
//|
|
||||||
//| from nvm import ByteArray
|
//| from nvm import ByteArray
|
||||||
//| from watchdog import WatchDogTimer
|
//| from watchdog import WatchDogTimer
|
||||||
|
@ -95,13 +95,13 @@ STATIC void check_for_deinit(digitalio_digitalinout_obj_t *self) {
|
|||||||
//|
|
//|
|
||||||
//| .. note::
|
//| .. note::
|
||||||
//|
|
//|
|
||||||
//| This library is typically not used by user level code.
|
//| This module is typically not used by user level code.
|
||||||
//|
|
//|
|
||||||
//| For more information on actually using NeoPixels, refer to the CircuitPython
|
//| For more information on actually using NeoPixels, refer to the `CircuitPython
|
||||||
//| Essentials Learn guide: https://learn.adafruit.com/circuitpython-essentials/circuitpython-neopixel
|
//| Essentials Learn guide <https://learn.adafruit.com/circuitpython-essentials/circuitpython-neopixel>`_
|
||||||
//|
|
//|
|
||||||
//| For a much more thorough guide about using NeoPixels, refer to the Adadfruit NeoPixel Überguide:
|
//| For a much more thorough guide about using NeoPixels, refer to the `Adafruit NeoPixel Überguide
|
||||||
//| https://learn.adafruit.com/adafruit-neopixel-uberguide
|
//| <https://learn.adafruit.com/adafruit-neopixel-uberguide>`_.
|
||||||
//|
|
//|
|
||||||
//| """
|
//| """
|
||||||
//|
|
//|
|
||||||
|
@ -59,9 +59,8 @@
|
|||||||
//| hardware after program completion. Use ``deinit()`` or a ``with`` statement
|
//| hardware after program completion. Use ``deinit()`` or a ``with`` statement
|
||||||
//| to do it yourself.
|
//| to do it yourself.
|
||||||
//|
|
//|
|
||||||
//| For the essentials of `pwmio`, see the CircuitPython Essentials
|
//| For the essentials of `pwmio`, see the `CircuitPython Essentials
|
||||||
//| Learn guide:
|
//| Learn guide <https://learn.adafruit.com/circuitpython-essentials/circuitpython-pwm>`_.
|
||||||
//| https://learn.adafruit.com/circuitpython-essentials/circuitpython-pwm
|
|
||||||
//| """
|
//| """
|
||||||
//|
|
//|
|
||||||
|
|
||||||
|
@ -31,9 +31,15 @@
|
|||||||
#include "py/obj.h"
|
#include "py/obj.h"
|
||||||
#include "py/enum.h"
|
#include "py/enum.h"
|
||||||
|
|
||||||
//| """`qrio` module.
|
//| """Low-level QR code decoding
|
||||||
//|
|
//|
|
||||||
//| Provides the `QRDecoder` object."""
|
//| Provides the `QRDecoder` object used for decoding QR codes. For more
|
||||||
|
//| information about working with QR codes, see
|
||||||
|
//| `this Learn guide <https://learn.adafruit.com/scan-qr-codes-with-circuitpython>`_.
|
||||||
|
//|
|
||||||
|
//| .. note:: This module only handles decoding QR codes. If you are looking
|
||||||
|
//| to generate a QR code, use the
|
||||||
|
//| `adafruit_miniqr library <https://github.com/adafruit/Adafruit_CircuitPython_miniQR>`_"""
|
||||||
//|
|
//|
|
||||||
|
|
||||||
STATIC const mp_rom_map_elem_t qrio_module_globals_table[] = {
|
STATIC const mp_rom_map_elem_t qrio_module_globals_table[] = {
|
||||||
|
@ -42,9 +42,9 @@
|
|||||||
//| CircuitPython does not have an OS, so this module provides this functionality
|
//| CircuitPython does not have an OS, so this module provides this functionality
|
||||||
//| directly.
|
//| directly.
|
||||||
|
|
||||||
//| For more information regarding using the `storage` module, refer to the CircuitPython
|
//| For more information regarding using the `storage` module, refer to the `CircuitPython
|
||||||
//| Essentials Learn guide:
|
//| Essentials Learn guide
|
||||||
//| https://learn.adafruit.com/circuitpython-essentials/circuitpython-storage
|
//| <https://learn.adafruit.com/circuitpython-essentials/circuitpython-storage>`_.
|
||||||
//| """
|
//| """
|
||||||
//|
|
//|
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@ Module Support Matrix - Which Modules Are Available on Which Boards
|
|||||||
===================================================================
|
===================================================================
|
||||||
|
|
||||||
The following table lists the available built-in modules for each CircuitPython
|
The following table lists the available built-in modules for each CircuitPython
|
||||||
capable board.
|
capable board, as well as each :term:`frozen module` included on it.
|
||||||
|
|
||||||
.. raw:: html
|
.. raw:: html
|
||||||
|
|
||||||
@ -21,6 +21,14 @@ capable board.
|
|||||||
{% for key, value in support_matrix|dictsort %}
|
{% for key, value in support_matrix|dictsort %}
|
||||||
{{ '.. _' ~ key|replace(" ", "-") ~ ':' }}
|
{{ '.. _' ~ key|replace(" ", "-") ~ ':' }}
|
||||||
* - {{ key }}
|
* - {{ key }}
|
||||||
- {{ ':py:mod:`' ~ value|join("`, :py:mod:`") ~ '`' }}
|
- {{ ':py:mod:`' ~ value[0]|join("`, :py:mod:`") ~ '`' }}
|
||||||
|
|
||||||
|
{% for module in value[1] %}\
|
||||||
|
{% if loop.index == 1 %}**Frozen Modules:** {% endif %}\
|
||||||
|
{% if loop.index > 1 %}, {% endif %}\
|
||||||
|
{% if module[1] %}{{ '`' ~ module[0] ~ ' <' ~ module[1] ~ '>`__' }}\
|
||||||
|
{% else %}{{ '`' ~ module[0] ~ ' <#>`__' }}\
|
||||||
|
{% endif %}\
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
@ -38,7 +38,12 @@
|
|||||||
//| """Displays text in a TileGrid
|
//| """Displays text in a TileGrid
|
||||||
//|
|
//|
|
||||||
//| The `terminalio` module contains classes to display a character stream on a display. The built
|
//| The `terminalio` module contains classes to display a character stream on a display. The built
|
||||||
//| in font is available as ``terminalio.FONT``."""
|
//| in font is available as ``terminalio.FONT``.
|
||||||
|
//|
|
||||||
|
//| .. note:: This module does not give access to the
|
||||||
|
//| `REPL <https://learn.adafruit.com/welcome-to-circuitpython/interacting-with-the-serial-console>`_.
|
||||||
|
//|
|
||||||
|
//| """
|
||||||
//|
|
//|
|
||||||
//| FONT: fontio.BuiltinFont
|
//| FONT: fontio.BuiltinFont
|
||||||
//| """The built in font"""
|
//| """The built in font"""
|
||||||
|
@ -78,6 +78,7 @@ vectorio_draw_protocol_impl_t vectorio_vector_shape_draw_protocol_impl = {
|
|||||||
.draw_update_transform = (draw_update_transform_fun)vectorio_vector_shape_update_transform,
|
.draw_update_transform = (draw_update_transform_fun)vectorio_vector_shape_update_transform,
|
||||||
.draw_finish_refresh = (draw_finish_refresh_fun)vectorio_vector_shape_finish_refresh,
|
.draw_finish_refresh = (draw_finish_refresh_fun)vectorio_vector_shape_finish_refresh,
|
||||||
.draw_get_refresh_areas = (draw_get_refresh_areas_fun)vectorio_vector_shape_get_refresh_areas,
|
.draw_get_refresh_areas = (draw_get_refresh_areas_fun)vectorio_vector_shape_get_refresh_areas,
|
||||||
|
.draw_set_dirty = (draw_set_dirty_fun)common_hal_vectorio_vector_shape_set_dirty,
|
||||||
};
|
};
|
||||||
|
|
||||||
// Stub checker does not approve of these shared properties.
|
// Stub checker does not approve of these shared properties.
|
||||||
|
@ -17,6 +17,7 @@ typedef bool (*draw_fill_area_fun)(mp_obj_t draw_protocol_self, const _displayio
|
|||||||
typedef bool (*draw_get_dirty_area_fun)(mp_obj_t draw_protocol_self, displayio_area_t *current_dirty_area);
|
typedef bool (*draw_get_dirty_area_fun)(mp_obj_t draw_protocol_self, displayio_area_t *current_dirty_area);
|
||||||
typedef void (*draw_update_transform_fun)(mp_obj_t draw_protocol_self, displayio_buffer_transform_t *group_transform);
|
typedef void (*draw_update_transform_fun)(mp_obj_t draw_protocol_self, displayio_buffer_transform_t *group_transform);
|
||||||
typedef void (*draw_finish_refresh_fun)(mp_obj_t draw_protocol_self);
|
typedef void (*draw_finish_refresh_fun)(mp_obj_t draw_protocol_self);
|
||||||
|
typedef void (*draw_set_dirty_fun)(mp_obj_t draw_protocol_self);
|
||||||
typedef displayio_area_t *(*draw_get_refresh_areas_fun)(mp_obj_t draw_protocol_self, displayio_area_t *tail);
|
typedef displayio_area_t *(*draw_get_refresh_areas_fun)(mp_obj_t draw_protocol_self, displayio_area_t *tail);
|
||||||
|
|
||||||
typedef struct _vectorio_draw_protocol_impl_t {
|
typedef struct _vectorio_draw_protocol_impl_t {
|
||||||
@ -25,6 +26,7 @@ typedef struct _vectorio_draw_protocol_impl_t {
|
|||||||
draw_update_transform_fun draw_update_transform;
|
draw_update_transform_fun draw_update_transform;
|
||||||
draw_finish_refresh_fun draw_finish_refresh;
|
draw_finish_refresh_fun draw_finish_refresh;
|
||||||
draw_get_refresh_areas_fun draw_get_refresh_areas;
|
draw_get_refresh_areas_fun draw_get_refresh_areas;
|
||||||
|
draw_set_dirty_fun draw_set_dirty;
|
||||||
} vectorio_draw_protocol_impl_t;
|
} vectorio_draw_protocol_impl_t;
|
||||||
|
|
||||||
// Draw protocol
|
// Draw protocol
|
||||||
|
@ -74,7 +74,7 @@ void common_hal_displayio_display_construct(displayio_display_obj_t *self,
|
|||||||
self->first_manual_refresh = !auto_refresh;
|
self->first_manual_refresh = !auto_refresh;
|
||||||
self->data_as_commands = data_as_commands;
|
self->data_as_commands = data_as_commands;
|
||||||
self->backlight_on_high = backlight_on_high;
|
self->backlight_on_high = backlight_on_high;
|
||||||
self->SH1107_addressing = SH1107_addressing;
|
self->SH1107_addressing = SH1107_addressing && color_depth == 1;
|
||||||
|
|
||||||
self->native_frames_per_second = native_frames_per_second;
|
self->native_frames_per_second = native_frames_per_second;
|
||||||
self->native_ms_per_frame = 1000 / native_frames_per_second;
|
self->native_ms_per_frame = 1000 / native_frames_per_second;
|
||||||
|
@ -66,6 +66,14 @@ void common_hal_displayio_group_set_hidden(displayio_group_t *self, bool hidden)
|
|||||||
displayio_group_set_hidden_by_parent(layer, hidden);
|
displayio_group_set_hidden_by_parent(layer, hidden);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
#if CIRCUITPY_VECTORIO
|
||||||
|
const vectorio_draw_protocol_t *draw_protocol = mp_proto_get(MP_QSTR_protocol_draw, self->members->items[i]);
|
||||||
|
if (draw_protocol != NULL) {
|
||||||
|
layer = draw_protocol->draw_get_protocol_self(self->members->items[i]);
|
||||||
|
draw_protocol->draw_protocol_impl->draw_set_dirty(layer);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -92,6 +100,14 @@ void displayio_group_set_hidden_by_parent(displayio_group_t *self, bool hidden)
|
|||||||
displayio_group_set_hidden_by_parent(layer, hidden);
|
displayio_group_set_hidden_by_parent(layer, hidden);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
#if CIRCUITPY_VECTORIO
|
||||||
|
const vectorio_draw_protocol_t *draw_protocol = mp_proto_get(MP_QSTR_protocol_draw, self->members->items[i]);
|
||||||
|
if (draw_protocol != NULL) {
|
||||||
|
layer = draw_protocol->draw_get_protocol_self(self->members->items[i]);
|
||||||
|
draw_protocol->draw_protocol_impl->draw_set_dirty(layer);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -358,33 +374,35 @@ void displayio_group_construct(displayio_group_t *self, mp_obj_list_t *members,
|
|||||||
bool displayio_group_fill_area(displayio_group_t *self, const _displayio_colorspace_t *colorspace, const displayio_area_t *area, uint32_t *mask, uint32_t *buffer) {
|
bool displayio_group_fill_area(displayio_group_t *self, const _displayio_colorspace_t *colorspace, const displayio_area_t *area, uint32_t *mask, uint32_t *buffer) {
|
||||||
// Track if any of the layers finishes filling in the given area. We can ignore any remaining
|
// Track if any of the layers finishes filling in the given area. We can ignore any remaining
|
||||||
// layers at that point.
|
// layers at that point.
|
||||||
for (int32_t i = self->members->len - 1; i >= 0; i--) {
|
if (self->hidden == false) {
|
||||||
mp_obj_t layer;
|
for (int32_t i = self->members->len - 1; i >= 0; i--) {
|
||||||
#if CIRCUITPY_VECTORIO
|
mp_obj_t layer;
|
||||||
const vectorio_draw_protocol_t *draw_protocol = mp_proto_get(MP_QSTR_protocol_draw, self->members->items[i]);
|
#if CIRCUITPY_VECTORIO
|
||||||
if (draw_protocol != NULL) {
|
const vectorio_draw_protocol_t *draw_protocol = mp_proto_get(MP_QSTR_protocol_draw, self->members->items[i]);
|
||||||
layer = draw_protocol->draw_get_protocol_self(self->members->items[i]);
|
if (draw_protocol != NULL) {
|
||||||
if (draw_protocol->draw_protocol_impl->draw_fill_area(layer, colorspace, area, mask, buffer)) {
|
layer = draw_protocol->draw_get_protocol_self(self->members->items[i]);
|
||||||
return true;
|
if (draw_protocol->draw_protocol_impl->draw_fill_area(layer, colorspace, area, mask, buffer)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
continue;
|
#endif
|
||||||
}
|
layer = mp_obj_cast_to_native_base(
|
||||||
#endif
|
self->members->items[i], &displayio_tilegrid_type);
|
||||||
layer = mp_obj_cast_to_native_base(
|
if (layer != MP_OBJ_NULL) {
|
||||||
self->members->items[i], &displayio_tilegrid_type);
|
if (displayio_tilegrid_fill_area(layer, colorspace, area, mask, buffer)) {
|
||||||
if (layer != MP_OBJ_NULL) {
|
return true;
|
||||||
if (displayio_tilegrid_fill_area(layer, colorspace, area, mask, buffer)) {
|
}
|
||||||
return true;
|
continue;
|
||||||
}
|
}
|
||||||
continue;
|
layer = mp_obj_cast_to_native_base(
|
||||||
}
|
self->members->items[i], &displayio_group_type);
|
||||||
layer = mp_obj_cast_to_native_base(
|
if (layer != MP_OBJ_NULL) {
|
||||||
self->members->items[i], &displayio_group_type);
|
if (displayio_group_fill_area(layer, colorspace, area, mask, buffer)) {
|
||||||
if (layer != MP_OBJ_NULL) {
|
return true;
|
||||||
if (displayio_group_fill_area(layer, colorspace, area, mask, buffer)) {
|
}
|
||||||
return true;
|
continue;
|
||||||
}
|
}
|
||||||
continue;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
@ -325,7 +325,6 @@ STATIC uint8_t _process_write(const uint8_t *raw_buf, size_t command_len) {
|
|||||||
if (chunk_size == 0) {
|
if (chunk_size == 0) {
|
||||||
// Don't reload until everything is written out of the packet buffer.
|
// Don't reload until everything is written out of the packet buffer.
|
||||||
common_hal_bleio_packet_buffer_flush(&_transfer_packet_buffer);
|
common_hal_bleio_packet_buffer_flush(&_transfer_packet_buffer);
|
||||||
autoreload_trigger();
|
|
||||||
return ANY_COMMAND;
|
return ANY_COMMAND;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -382,7 +381,6 @@ STATIC uint8_t _process_write_data(const uint8_t *raw_buf, size_t command_len) {
|
|||||||
#endif
|
#endif
|
||||||
// Don't reload until everything is written out of the packet buffer.
|
// Don't reload until everything is written out of the packet buffer.
|
||||||
common_hal_bleio_packet_buffer_flush(&_transfer_packet_buffer);
|
common_hal_bleio_packet_buffer_flush(&_transfer_packet_buffer);
|
||||||
autoreload_trigger();
|
|
||||||
return ANY_COMMAND;
|
return ANY_COMMAND;
|
||||||
}
|
}
|
||||||
return WRITE_DATA;
|
return WRITE_DATA;
|
||||||
@ -463,7 +461,6 @@ STATIC uint8_t _process_delete(const uint8_t *raw_buf, size_t command_len) {
|
|||||||
if (result == FR_OK) {
|
if (result == FR_OK) {
|
||||||
// Don't reload until everything is written out of the packet buffer.
|
// Don't reload until everything is written out of the packet buffer.
|
||||||
common_hal_bleio_packet_buffer_flush(&_transfer_packet_buffer);
|
common_hal_bleio_packet_buffer_flush(&_transfer_packet_buffer);
|
||||||
autoreload_trigger();
|
|
||||||
}
|
}
|
||||||
return ANY_COMMAND;
|
return ANY_COMMAND;
|
||||||
}
|
}
|
||||||
@ -517,7 +514,6 @@ STATIC uint8_t _process_mkdir(const uint8_t *raw_buf, size_t command_len) {
|
|||||||
if (result == FR_OK) {
|
if (result == FR_OK) {
|
||||||
// Don't reload until everything is written out of the packet buffer.
|
// Don't reload until everything is written out of the packet buffer.
|
||||||
common_hal_bleio_packet_buffer_flush(&_transfer_packet_buffer);
|
common_hal_bleio_packet_buffer_flush(&_transfer_packet_buffer);
|
||||||
autoreload_trigger();
|
|
||||||
}
|
}
|
||||||
return ANY_COMMAND;
|
return ANY_COMMAND;
|
||||||
}
|
}
|
||||||
@ -664,7 +660,6 @@ STATIC uint8_t _process_move(const uint8_t *raw_buf, size_t command_len) {
|
|||||||
if (result == FR_OK) {
|
if (result == FR_OK) {
|
||||||
// Don't reload until everything is written out of the packet buffer.
|
// Don't reload until everything is written out of the packet buffer.
|
||||||
common_hal_bleio_packet_buffer_flush(&_transfer_packet_buffer);
|
common_hal_bleio_packet_buffer_flush(&_transfer_packet_buffer);
|
||||||
autoreload_trigger();
|
|
||||||
}
|
}
|
||||||
return ANY_COMMAND;
|
return ANY_COMMAND;
|
||||||
}
|
}
|
||||||
@ -740,6 +735,14 @@ void supervisor_bluetooth_file_transfer_background(void) {
|
|||||||
}
|
}
|
||||||
if (next_command == ANY_COMMAND) {
|
if (next_command == ANY_COMMAND) {
|
||||||
autoreload_resume(AUTORELOAD_SUSPEND_BLE);
|
autoreload_resume(AUTORELOAD_SUSPEND_BLE);
|
||||||
|
// Trigger a reload if the command may have mutated the file system.
|
||||||
|
if (current_state == WRITE ||
|
||||||
|
current_state == WRITE_DATA ||
|
||||||
|
current_state == DELETE ||
|
||||||
|
current_state == MKDIR ||
|
||||||
|
current_state == MOVE) {
|
||||||
|
autoreload_trigger();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
running = false;
|
running = false;
|
||||||
|
@ -13,14 +13,15 @@ import base64
|
|||||||
from datetime import date
|
from datetime import date
|
||||||
from sh.contrib import git
|
from sh.contrib import git
|
||||||
|
|
||||||
sys.path.append("../docs")
|
|
||||||
import shared_bindings_matrix
|
|
||||||
|
|
||||||
sys.path.append("adabot")
|
sys.path.append("adabot")
|
||||||
import adabot.github_requests as github
|
import adabot.github_requests as github
|
||||||
|
|
||||||
from shared_bindings_matrix import SUPPORTED_PORTS
|
sys.path.append("../docs")
|
||||||
from shared_bindings_matrix import aliases_by_board
|
from shared_bindings_matrix import (
|
||||||
|
SUPPORTED_PORTS,
|
||||||
|
aliases_by_board,
|
||||||
|
support_matrix_by_board,
|
||||||
|
)
|
||||||
|
|
||||||
BIN = ("bin",)
|
BIN = ("bin",)
|
||||||
UF2 = ("uf2",)
|
UF2 = ("uf2",)
|
||||||
@ -75,6 +76,7 @@ extension_by_board = {
|
|||||||
"espressif_esp32c3_devkitm_1_n4": BIN,
|
"espressif_esp32c3_devkitm_1_n4": BIN,
|
||||||
"lilygo_ttgo_t-01c3": BIN,
|
"lilygo_ttgo_t-01c3": BIN,
|
||||||
"microdev_micro_c3": BIN,
|
"microdev_micro_c3": BIN,
|
||||||
|
"lilygo_ttgo_t-oi-plus": BIN,
|
||||||
# broadcom
|
# broadcom
|
||||||
"raspberrypi_zero": KERNEL_IMG,
|
"raspberrypi_zero": KERNEL_IMG,
|
||||||
"raspberrypi_zero_w": KERNEL_IMG,
|
"raspberrypi_zero_w": KERNEL_IMG,
|
||||||
@ -124,20 +126,11 @@ def get_board_mapping():
|
|||||||
extensions = extension_by_port[port]
|
extensions = extension_by_port[port]
|
||||||
extensions = extension_by_board.get(board_path.name, extensions)
|
extensions = extension_by_board.get(board_path.name, extensions)
|
||||||
aliases = aliases_by_board.get(board_path.name, [])
|
aliases = aliases_by_board.get(board_path.name, [])
|
||||||
frozen_libraries = []
|
|
||||||
with open(os.path.join(board_path, "mpconfigboard.mk")) as mpconfig:
|
|
||||||
frozen_lines = [
|
|
||||||
line for line in mpconfig if line.startswith("FROZEN_MPY_DIRS")
|
|
||||||
]
|
|
||||||
frozen_libraries.extend(
|
|
||||||
[line[line.rfind("/") + 1 :].strip() for line in frozen_lines]
|
|
||||||
)
|
|
||||||
boards[board_id] = {
|
boards[board_id] = {
|
||||||
"port": port,
|
"port": port,
|
||||||
"extensions": extensions,
|
"extensions": extensions,
|
||||||
"download_count": 0,
|
"download_count": 0,
|
||||||
"aliases": aliases,
|
"aliases": aliases,
|
||||||
"frozen_libraries": frozen_libraries,
|
|
||||||
}
|
}
|
||||||
for alias in aliases:
|
for alias in aliases:
|
||||||
boards[alias] = {
|
boards[alias] = {
|
||||||
@ -284,7 +277,7 @@ def generate_download_info():
|
|||||||
|
|
||||||
languages = get_languages()
|
languages = get_languages()
|
||||||
|
|
||||||
support_matrix = shared_bindings_matrix.support_matrix_by_board(use_branded_name=False)
|
support_matrix = support_matrix_by_board(use_branded_name=False)
|
||||||
|
|
||||||
new_stable = "-" not in new_tag
|
new_stable = "-" not in new_tag
|
||||||
|
|
||||||
@ -321,10 +314,10 @@ def generate_download_info():
|
|||||||
new_version = {
|
new_version = {
|
||||||
"stable": new_stable,
|
"stable": new_stable,
|
||||||
"version": new_tag,
|
"version": new_tag,
|
||||||
"modules": support_matrix[alias],
|
"modules": support_matrix[alias][0],
|
||||||
"languages": languages,
|
"languages": languages,
|
||||||
"extensions": board_info["extensions"],
|
"extensions": board_info["extensions"],
|
||||||
"frozen_libraries": board_info["frozen_libraries"],
|
"frozen_libraries": [frozen[0] for frozen in support_matrix[alias][1]],
|
||||||
}
|
}
|
||||||
current_info[alias]["downloads"] = alias_info["download_count"]
|
current_info[alias]["downloads"] = alias_info["download_count"]
|
||||||
current_info[alias]["versions"].append(new_version)
|
current_info[alias]["versions"].append(new_version)
|
||||||
|
@ -68,14 +68,15 @@ submodules = []
|
|||||||
if target == "test":
|
if target == "test":
|
||||||
submodules = ["extmod/", "lib/", "tools/", "extmod/ulab", "lib/berkeley-db-1.xx"]
|
submodules = ["extmod/", "lib/", "tools/", "extmod/ulab", "lib/berkeley-db-1.xx"]
|
||||||
elif target == "docs":
|
elif target == "docs":
|
||||||
submodules = ["extmod/ulab/"]
|
# used in .readthedocs.yml to generate RTD
|
||||||
|
submodules = ["extmod/ulab/", "frozen/"]
|
||||||
elif target == "mpy-cross-mac":
|
elif target == "mpy-cross-mac":
|
||||||
submodules = ["tools/"] # for huffman
|
submodules = ["tools/"] # for huffman
|
||||||
elif target == "windows":
|
elif target == "windows":
|
||||||
# This builds one board from a number of ports so fill out a bunch of submodules
|
# This builds one board from a number of ports so fill out a bunch of submodules
|
||||||
submodules = ["extmod/", "lib/", "tools/", "ports/", "data/nvm.toml/"]
|
submodules = ["extmod/", "lib/", "tools/", "ports/", "data/nvm.toml/"]
|
||||||
elif target == "website":
|
elif target == "website":
|
||||||
submodules = ["tools/adabot/"]
|
submodules = ["tools/adabot/", "frozen/"]
|
||||||
else:
|
else:
|
||||||
p = list(pathlib.Path(".").glob(f"ports/*/boards/{target}/mpconfigboard.mk"))
|
p = list(pathlib.Path(".").glob(f"ports/*/boards/{target}/mpconfigboard.mk"))
|
||||||
if not p:
|
if not p:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user