From 23022a5a7f608efc604100ec3c811d6e80f6b6fa Mon Sep 17 00:00:00 2001 From: Jeff Epler Date: Wed, 29 Dec 2021 14:33:45 -0600 Subject: [PATCH 01/14] Add, use tools/describe script This isn't intended to make any overt behavioral change, but there is a slight one in the value of CP_VERSION that will be used during CI, because it will now include `--always --match "..."`, so there could be a change to the uploaded name of the mpy-cross artifacts on s3. --- .github/workflows/build.yml | 16 +++++++++------- .github/workflows/create_website_pr.yml | 4 +++- .github/workflows/ports_windows.yml | 4 ++-- conf.py | 5 ++++- py/makeversionhdr.py | 14 +++++--------- tools/describe | 2 ++ 6 files changed, 25 insertions(+), 20 deletions(-) create mode 100755 tools/describe diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 38d86bae0f..8714958065 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -38,8 +38,8 @@ jobs: run: python tools/ci_fetch_deps.py test ${{ github.sha }} - name: CircuitPython version run: | - git describe --dirty --tags || git log --parents HEAD~4.. - echo >>$GITHUB_ENV CP_VERSION=$(git describe --dirty --tags) + tools/describe || git log --parents HEAD~4.. + echo >>$GITHUB_ENV CP_VERSION=$(tools/describe) - name: Install dependencies run: | sudo apt-get update @@ -144,8 +144,8 @@ jobs: run: python tools/ci_fetch_deps.py mpy-cross-mac ${{ github.sha }} - name: CircuitPython version run: | - git describe --dirty --tags - echo >>$GITHUB_ENV CP_VERSION=$(git describe --dirty --tags) + tools/describe || git log --parents HEAD~4.. + echo >>$GITHUB_ENV CP_VERSION=$(tools/describe) - name: Install dependencies run: | brew install gettext @@ -200,8 +200,8 @@ jobs: run: python tools/ci_fetch_deps.py docs ${{ github.sha }} - name: CircuitPython version run: | - git describe --dirty --tags - echo >>$GITHUB_ENV CP_VERSION=$(git describe --dirty --tags) + tools/describe || git log --parents HEAD~4.. + echo >>$GITHUB_ENV CP_VERSION=$(tools/describe) - name: Set up Python 3 uses: actions/setup-python@v2 with: @@ -375,7 +375,9 @@ jobs: - name: Get CP deps run: python tools/ci_fetch_deps.py ${{ matrix.board }} ${{ github.sha }} - name: CircuitPython version - run: git describe --dirty --tags + run: | + tools/describe || git log --parents HEAD~4.. + echo >>$GITHUB_ENV CP_VERSION=$(tools/describe) - uses: actions/cache@v2 name: Fetch IDF tool cache id: idf-cache diff --git a/.github/workflows/create_website_pr.yml b/.github/workflows/create_website_pr.yml index dc987f0989..2f171fe054 100644 --- a/.github/workflows/create_website_pr.yml +++ b/.github/workflows/create_website_pr.yml @@ -34,7 +34,9 @@ jobs: gcc --version python3 --version - name: CircuitPython version - run: git describe --dirty --tags + run: | + tools/describe || git log --parents HEAD~4.. + echo >>$GITHUB_ENV CP_VERSION=$(tools/describe) - name: Website run: python3 build_board_info.py working-directory: tools diff --git a/.github/workflows/ports_windows.yml b/.github/workflows/ports_windows.yml index 6339746066..5651735cec 100644 --- a/.github/workflows/ports_windows.yml +++ b/.github/workflows/ports_windows.yml @@ -73,8 +73,8 @@ jobs: run: python tools/ci_fetch_deps.py windows ${{ github.sha }} - name: CircuitPython version run: | - git describe --dirty --tags - echo >>$GITHUB_ENV CP_VERSION=$(git describe --dirty --tags) + tools/describe || git log --parents HEAD~4.. + echo >>$GITHUB_ENV CP_VERSION=$(tools/describe) - name: build mpy-cross run: make -j2 -C mpy-cross diff --git a/conf.py b/conf.py index fd92a3cc93..e4c29fb88c 100644 --- a/conf.py +++ b/conf.py @@ -24,12 +24,15 @@ import subprocess import sys import urllib.parse import time +import pathlib from collections import defaultdict from sphinx.transforms import SphinxTransform from docutils import nodes from sphinx import addnodes +tools_describe = (pathlib.Path(__file__).parent / "tools/describe").str() + # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. @@ -129,7 +132,7 @@ copyright = f'2014-{current_date.tm_year}, MicroPython & CircuitPython contribut final_version = "" git_describe = subprocess.run( - ["git", "describe", "--dirty", "--tags"], + [tools_describe], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, encoding="utf-8" diff --git a/py/makeversionhdr.py b/py/makeversionhdr.py index 12eaa3d3f1..da6f7c9f59 100644 --- a/py/makeversionhdr.py +++ b/py/makeversionhdr.py @@ -1,29 +1,25 @@ """ Generate header file with macros defining MicroPython version info. -This script works with Python 2.6, 2.7, 3.3 and 3.4. +This script works with Python 3.7 and newer """ from __future__ import print_function import sys import os +import pathlib import datetime import subprocess +tools_describe = str(pathlib.Path(__file__).parent.parent / "tools/describe") + def get_version_info_from_git(): - # Python 2.6 doesn't have check_output, so check for that - try: - subprocess.check_output - subprocess.check_call - except AttributeError: - return None - # Note: git describe doesn't work if no tag is available try: git_tag = subprocess.check_output( - ["git", "describe", "--tags", "--dirty", "--always", "--match", "[1-9].*"], + [tools_describe], stderr=subprocess.STDOUT, universal_newlines=True, ).strip() diff --git a/tools/describe b/tools/describe new file mode 100755 index 0000000000..c4dcf8bb9d --- /dev/null +++ b/tools/describe @@ -0,0 +1,2 @@ +#!/bin/sh +git describe --dirty --tags --always --match "[1-9].*" From 4a23742100d958d7dc53f0b89b3b93c6447276c9 Mon Sep 17 00:00:00 2001 From: Jeff Epler Date: Tue, 4 Jan 2022 11:14:26 -0600 Subject: [PATCH 02/14] Use the first-parent heuristic for describing the version --- tools/describe | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/describe b/tools/describe index c4dcf8bb9d..becdc1e5bd 100755 --- a/tools/describe +++ b/tools/describe @@ -1,2 +1,2 @@ #!/bin/sh -git describe --dirty --tags --always --match "[1-9].*" +git describe --first-parent --dirty --tags --always --match "[1-9].*" From adfa6ef0192063f704f95e0652c729e4998e1302 Mon Sep 17 00:00:00 2001 From: Jeff Epler Date: Sun, 13 Feb 2022 10:56:42 -0600 Subject: [PATCH 03/14] Fix all natmod tests to run on x64 My testing sequence is ``` git clean -dxf examples arch=x64; make -C examples/natmod/features1 ARCH=$arch && make -C examples/natmod/features2 ARCH=$arch && make -C examples/natmod/btree ARCH=$arch && make -C examples/natmod/framebuf ARCH=$arch && make -C examples/natmod/uheapq ARCH=$arch && make -C examples/natmod/urandom ARCH=$arch && make -C examples/natmod/ure ARCH=$arch && make -C examples/natmod/uzlib ARCH=$arch (cd tests && ./run-natmodtests.py "$@" extmod/{btree*,framebuf*,uheapq*,ure*,uzlib*}.py) ``` --- .github/workflows/build.yml | 13 +++++++++++++ examples/natmod/btree/btree_c.c | 23 ++++++++++++----------- examples/natmod/framebuf/framebuf.c | 5 +++-- examples/natmod/uzlib/uzlib.c | 9 +++++++-- extmod/modbtree.c | 2 +- extmod/modframebuf.c | 2 +- extmod/moduzlib.c | 2 +- py/dynruntime.h | 3 +-- requirements-dev.txt | 3 +++ tests/run-natmodtests.py | 7 ++++--- 10 files changed, 46 insertions(+), 23 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b6feaafdca..3c556337e8 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -77,6 +77,19 @@ jobs: - name: Native mpy Tests run: MICROPY_CPYTHON3=python3.8 MICROPY_MICROPYTHON=../ports/unix/micropython-coverage ./run-tests.py -j1 --mpy-cross-flags='-mcache-lookup-bc' --via-mpy --emit native -d basics float micropython working-directory: tests + - name: Build native modules + run: | + make -C examples/natmod/features1 + make -C examples/natmod/features2 + make -C examples/natmod/btree + make -C examples/natmod/framebuf + make -C examples/natmod/uheapq + make -C examples/natmod/urandom + make -C examples/natmod/ure + make -C examples/natmod/uzlib + - name: Test native modules + run: MICROPY_CPYTHON3=python3.8 MICROPY_MICROPYTHON=../ports/unix/micropython-coverage ./run-natmodtests.py extmod/{btree*,framebuf*,uheapq*,ure*,uzlib*}.py + working-directory: tests - name: Build mpy-cross.static-aarch64 run: make -C mpy-cross -j2 -f Makefile.static-aarch64 - uses: actions/upload-artifact@v2 diff --git a/examples/natmod/btree/btree_c.c b/examples/natmod/btree/btree_c.c index 5e8a34ac40..b44b7bb300 100644 --- a/examples/natmod/btree/btree_c.c +++ b/examples/natmod/btree/btree_c.c @@ -18,7 +18,7 @@ void *memmove(void *dest, const void *src, size_t n) { } void *malloc(size_t n) { - void *ptr = m_malloc(n); + void *ptr = m_malloc(n, false); return ptr; } void *realloc(void *ptr, size_t n) { @@ -26,7 +26,7 @@ void *realloc(void *ptr, size_t n) { return NULL; } void *calloc(size_t n, size_t m) { - void *ptr = m_malloc(n * m); + void *ptr = m_malloc(n * m, false); // memory already cleared by conservative GC return ptr; } @@ -51,7 +51,7 @@ int *__errno (void) ssize_t mp_stream_posix_write(void *stream, const void *buf, size_t len) { mp_obj_base_t* o = stream; - const mp_stream_p_t *stream_p = o->type->protocol; + const mp_stream_p_t *stream_p = o->type->ext[0].protocol; mp_uint_t out_sz = stream_p->write(MP_OBJ_FROM_PTR(stream), buf, len, &native_errno); if (out_sz == MP_STREAM_ERROR) { return -1; @@ -62,7 +62,7 @@ ssize_t mp_stream_posix_write(void *stream, const void *buf, size_t len) { ssize_t mp_stream_posix_read(void *stream, void *buf, size_t len) { mp_obj_base_t* o = stream; - const mp_stream_p_t *stream_p = o->type->protocol; + const mp_stream_p_t *stream_p = o->type->ext[0].protocol; mp_uint_t out_sz = stream_p->read(MP_OBJ_FROM_PTR(stream), buf, len, &native_errno); if (out_sz == MP_STREAM_ERROR) { return -1; @@ -73,7 +73,7 @@ ssize_t mp_stream_posix_read(void *stream, void *buf, size_t len) { off_t mp_stream_posix_lseek(void *stream, off_t offset, int whence) { const mp_obj_base_t* o = stream; - const mp_stream_p_t *stream_p = o->type->protocol; + const mp_stream_p_t *stream_p = o->type->ext[0].protocol; struct mp_stream_seek_t seek_s; seek_s.offset = offset; seek_s.whence = whence; @@ -86,7 +86,7 @@ off_t mp_stream_posix_lseek(void *stream, off_t offset, int whence) { int mp_stream_posix_fsync(void *stream) { mp_obj_base_t* o = stream; - const mp_stream_p_t *stream_p = o->type->protocol; + const mp_stream_p_t *stream_p = o->type->ext[0].protocol; mp_uint_t res = stream_p->ioctl(MP_OBJ_FROM_PTR(stream), MP_STREAM_FLUSH, 0, &native_errno); if (res == MP_STREAM_ERROR) { return -1; @@ -94,7 +94,7 @@ int mp_stream_posix_fsync(void *stream) { return res; } -mp_obj_type_t btree_type; +mp_obj_full_type_t btree_type; #include "extmod/modbtree.c" @@ -123,12 +123,13 @@ mp_obj_t mpy_init(mp_obj_fun_bc_t *self, size_t n_args, size_t n_kw, mp_obj_t *a MP_DYNRUNTIME_INIT_ENTRY btree_type.base.type = (void*)&mp_fun_table.type_type; + btree_type.flags = MP_TYPE_FLAG_EXTENDED; btree_type.name = MP_QSTR_btree; btree_type.print = btree_print; - btree_type.getiter = btree_getiter; - btree_type.iternext = btree_iternext; - btree_type.binary_op = btree_binary_op; - btree_type.subscr = btree_subscr; + btree_type.ext[0].getiter = btree_getiter; + btree_type.ext[0].iternext = btree_iternext; + btree_type.ext[0].binary_op = btree_binary_op; + btree_type.ext[0].subscr = btree_subscr; btree_locals_dict_table[0] = (mp_map_elem_t){ MP_OBJ_NEW_QSTR(MP_QSTR_close), MP_OBJ_FROM_PTR(&btree_close_obj) }; btree_locals_dict_table[1] = (mp_map_elem_t){ MP_OBJ_NEW_QSTR(MP_QSTR_flush), MP_OBJ_FROM_PTR(&btree_flush_obj) }; btree_locals_dict_table[2] = (mp_map_elem_t){ MP_OBJ_NEW_QSTR(MP_QSTR_get), MP_OBJ_FROM_PTR(&btree_get_obj) }; diff --git a/examples/natmod/framebuf/framebuf.c b/examples/natmod/framebuf/framebuf.c index 8d488cffd6..4497ab3318 100644 --- a/examples/natmod/framebuf/framebuf.c +++ b/examples/natmod/framebuf/framebuf.c @@ -8,7 +8,7 @@ void *memset(void *s, int c, size_t n) { } #endif -mp_obj_type_t mp_type_framebuf; +mp_obj_full_type_t mp_type_framebuf; #include "extmod/modframebuf.c" @@ -19,9 +19,10 @@ mp_obj_t mpy_init(mp_obj_fun_bc_t *self, size_t n_args, size_t n_kw, mp_obj_t *a MP_DYNRUNTIME_INIT_ENTRY mp_type_framebuf.base.type = (void*)&mp_type_type; + mp_type_framebuf.flags = MP_TYPE_FLAG_EXTENDED; mp_type_framebuf.name = MP_QSTR_FrameBuffer; mp_type_framebuf.make_new = framebuf_make_new; - mp_type_framebuf.buffer_p.get_buffer = framebuf_get_buffer; + mp_type_framebuf.ext[0].buffer_p.get_buffer = framebuf_get_buffer; framebuf_locals_dict_table[0] = (mp_map_elem_t){ MP_OBJ_NEW_QSTR(MP_QSTR_fill), MP_OBJ_FROM_PTR(&framebuf_fill_obj) }; framebuf_locals_dict_table[1] = (mp_map_elem_t){ MP_OBJ_NEW_QSTR(MP_QSTR_fill_rect), MP_OBJ_FROM_PTR(&framebuf_fill_rect_obj) }; framebuf_locals_dict_table[2] = (mp_map_elem_t){ MP_OBJ_NEW_QSTR(MP_QSTR_pixel), MP_OBJ_FROM_PTR(&framebuf_pixel_obj) }; diff --git a/examples/natmod/uzlib/uzlib.c b/examples/natmod/uzlib/uzlib.c index 99b3691761..6df9944d6a 100644 --- a/examples/natmod/uzlib/uzlib.c +++ b/examples/natmod/uzlib/uzlib.c @@ -8,7 +8,8 @@ void *memset(void *s, int c, size_t n) { } #endif -mp_obj_type_t decompio_type; +mp_obj_full_type_t decompio_type; +mp_stream_p_t decompio_stream_p; #include "extmod/moduzlib.c" @@ -18,10 +19,14 @@ STATIC MP_DEFINE_CONST_DICT(decompio_locals_dict, decompio_locals_dict_table); mp_obj_t mpy_init(mp_obj_fun_bc_t *self, size_t n_args, size_t n_kw, mp_obj_t *args) { MP_DYNRUNTIME_INIT_ENTRY + decompio_stream_p.name = MP_QSTR_protocol_stream; + decompio_stream_p.read = decompio_read; + decompio_type.base.type = mp_fun_table.type_type; + decompio_type.flags = MP_TYPE_FLAG_EXTENDED; decompio_type.name = MP_QSTR_DecompIO; decompio_type.make_new = decompio_make_new; - decompio_type.protocol = &decompio_stream_p; + decompio_type.ext[0].protocol = &decompio_stream_p; decompio_locals_dict_table[0] = (mp_map_elem_t){ MP_OBJ_NEW_QSTR(MP_QSTR_read), MP_OBJ_FROM_PTR(&mp_stream_read_obj) }; decompio_locals_dict_table[1] = (mp_map_elem_t){ MP_OBJ_NEW_QSTR(MP_QSTR_readinto), MP_OBJ_FROM_PTR(&mp_stream_readinto_obj) }; decompio_locals_dict_table[2] = (mp_map_elem_t){ MP_OBJ_NEW_QSTR(MP_QSTR_readline), MP_OBJ_FROM_PTR(&mp_stream_unbuffered_readline_obj) }; diff --git a/extmod/modbtree.c b/extmod/modbtree.c index 25bafaaee4..5f4b4696b4 100644 --- a/extmod/modbtree.c +++ b/extmod/modbtree.c @@ -47,7 +47,7 @@ void __dbpanic(DB *db) { STATIC mp_obj_btree_t *btree_new(DB *db, mp_obj_t stream) { mp_obj_btree_t *o = m_new_obj(mp_obj_btree_t); - o->base.type = &btree_type; + o->base.type = (mp_obj_type_t *)&btree_type; o->stream = stream; o->db = db; o->start_key = mp_const_none; diff --git a/extmod/modframebuf.c b/extmod/modframebuf.c index fa07b69522..a90f00c347 100644 --- a/extmod/modframebuf.c +++ b/extmod/modframebuf.c @@ -622,7 +622,7 @@ STATIC const mp_obj_type_t mp_type_framebuf = { // this factory function is provided for backwards compatibility with old FrameBuffer1 class STATIC mp_obj_t legacy_framebuffer1(size_t n_args, const mp_obj_t *args) { mp_obj_framebuf_t *o = m_new_obj(mp_obj_framebuf_t); - o->base.type = &mp_type_framebuf; + o->base.type = (mp_obj_type_t *)&mp_type_framebuf; mp_buffer_info_t bufinfo; mp_get_buffer_raise(args[0], &bufinfo, MP_BUFFER_WRITE); diff --git a/extmod/moduzlib.c b/extmod/moduzlib.c index 7f2dad476f..b1eeac934b 100644 --- a/extmod/moduzlib.c +++ b/extmod/moduzlib.c @@ -114,12 +114,12 @@ STATIC const mp_rom_map_elem_t decompio_locals_dict_table[] = { STATIC MP_DEFINE_CONST_DICT(decompio_locals_dict, decompio_locals_dict_table); #endif +#if !MICROPY_ENABLE_DYNRUNTIME STATIC const mp_stream_p_t decompio_stream_p = { MP_PROTO_IMPLEMENT(MP_QSTR_protocol_stream) .read = decompio_read, }; -#if !MICROPY_ENABLE_DYNRUNTIME STATIC const mp_obj_type_t decompio_type = { { &mp_type_type }, .flags = MP_TYPE_FLAG_EXTENDED, diff --git a/py/dynruntime.h b/py/dynruntime.h index 0a7eb20397..608cdec097 100644 --- a/py/dynruntime.h +++ b/py/dynruntime.h @@ -141,8 +141,7 @@ static inline mp_obj_t mp_obj_cast_to_native_base_dyn(mp_obj_t self_in, mp_const if (MP_OBJ_FROM_PTR(self_type) == native_type) { return self_in; } - mp_parent_t parent = mp_type_get_parent_slot(self_type); - if (parent != native_type) { + if (self_type->parent != native_type) { // The self_in object is not a direct descendant of native_type, so fail the cast. // This is a very simple version of mp_obj_is_subclass_fast that could be improved. return MP_OBJ_NULL; diff --git a/requirements-dev.txt b/requirements-dev.txt index a57794ce1a..eb21bc208b 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -21,3 +21,6 @@ black # for combining the Nordic SoftDevice with CircuitPython intelhex + +# for building & testing natmods +pyelftools diff --git a/tests/run-natmodtests.py b/tests/run-natmodtests.py index f88ca0b788..a957fbb6b6 100755 --- a/tests/run-natmodtests.py +++ b/tests/run-natmodtests.py @@ -9,9 +9,6 @@ import subprocess import sys import argparse -sys.path.append("../tools") -import pyboard - # Paths for host executables CPYTHON3 = os.getenv("MICROPY_CPYTHON3", "python3") MICROPYTHON = os.getenv("MICROPY_MICROPYTHON", "../ports/unix/micropython-coverage") @@ -178,6 +175,10 @@ def main(): target_truth = TargetSubprocess([CPYTHON3]) if args.pyboard: + global pyboard + sys.path.append("../tools") + import pyboard + target = TargetPyboard(pyboard.Pyboard(args.device)) else: target = TargetSubprocess([MICROPYTHON]) From 7b12ce0973b1a8ee04fa35b1bd9eb7eb0b484e51 Mon Sep 17 00:00:00 2001 From: Clay Date: Mon, 14 Feb 2022 06:07:17 +0000 Subject: [PATCH 04/14] Translated using Weblate (Russian) Currently translated at 38.2% (400 of 1047 strings) Translation: CircuitPython/main Translate-URL: https://hosted.weblate.org/projects/circuitpython/main/ru/ --- locale/ru.po | 162 +++++++++++++++++++++++++-------------------------- 1 file changed, 78 insertions(+), 84 deletions(-) diff --git a/locale/ru.po b/locale/ru.po index 5f6550785e..73e8e2c329 100644 --- a/locale/ru.po +++ b/locale/ru.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2021-12-04 12:51+0000\n" +"PO-Revision-Date: 2022-02-14 18:08+0000\n" "Last-Translator: Clay \n" "Language-Team: none\n" "Language: ru\n" @@ -16,7 +16,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" -"X-Generator: Weblate 4.10-dev\n" +"X-Generator: Weblate 4.11-dev\n" #: main.c msgid "" @@ -77,12 +77,10 @@ msgid "" msgstr "%d адресные пины, %d rgb пины и %d плитки указывают высоту %d а не %d" #: shared-bindings/microcontroller/Pin.c -#, fuzzy msgid "%q and %q contain duplicate pins" msgstr "%q и %q содержат пины-дупликаты" #: shared-bindings/microcontroller/Pin.c -#, fuzzy msgid "%q contains duplicate pins" msgstr "%q содержит пины-дупликаты" @@ -439,7 +437,7 @@ msgstr "Все каналы событий синхронизации уже и #: shared-bindings/pwmio/PWMOut.c msgid "All timers for this pin are in use" -msgstr "Все таймеры для этого Пина уже используются" +msgstr "Все таймеры для этого пина уже используются" #: ports/atmel-samd/common-hal/_pew/PewPew.c #: ports/atmel-samd/common-hal/audioio/AudioOut.c @@ -702,12 +700,12 @@ msgstr "Сигнал из глубокого сна может подавать msgid "Can only alarm on one low pin while others alarm high from deep sleep." msgstr "" "Сигнал из глубокого сна может подаваться по низкому уровню только на одном " -"выводе, пока остальные сигналят по высокому уровню." +"пане, пока остальные подают сигнал по высокому уровню." #: ports/espressif/common-hal/alarm/pin/PinAlarm.c msgid "Can only alarm on two low pins from deep sleep." msgstr "" -"Сигнал из глубокого сна может подаваться только на двух выводах по низкому " +"Сигнал из глубокого сна может подаваться только на двух пинах по низкому " "уровню." #: ports/nrf/common-hal/_bleio/Characteristic.c @@ -748,16 +746,16 @@ msgstr "" #: ports/atmel-samd/common-hal/audioio/AudioOut.c msgid "Cannot output both channels on the same pin" -msgstr "Невозможно вывести оба канала на один вывод" +msgstr "Невозможно вывести оба канала на один пин" #: ports/espressif/common-hal/alarm/pin/PinAlarm.c msgid "Cannot pull on input-only pin." msgstr "" -"Невозможно установить подтяжку на выводе, предназначенном только для ввода." +"Невозможно установить подтяжку на пине, предназначенном только для ввода." #: shared-module/bitbangio/SPI.c msgid "Cannot read without MISO pin." -msgstr "Считывание невозможно без вывода MISO." +msgstr "Считывание невозможно без пина MISO." #: shared-bindings/audiobusio/PDMIn.c msgid "Cannot record to a file" @@ -792,7 +790,7 @@ msgstr "Срез субкласса невозможен" #: shared-module/bitbangio/SPI.c msgid "Cannot transfer without MOSI and MISO pins." -msgstr "Передача данных невозможна без выводов MOSI и MISO." +msgstr "Передача данных невозможна без пинов MOSI и MISO." #: shared-bindings/pwmio/PWMOut.c msgid "Cannot vary frequency on a timer that is already in use" @@ -801,11 +799,11 @@ msgstr "Невозможно изменить частоту на таймере #: ports/espressif/common-hal/alarm/pin/PinAlarm.c #: ports/nrf/common-hal/alarm/pin/PinAlarm.c msgid "Cannot wake on pin edge. Only level." -msgstr "Невозможно проснуться по pin edge. Только по уровню." +msgstr "Невозможно проснуться по спаду/росту на пине. Только по уровню." #: shared-module/bitbangio/SPI.c msgid "Cannot write without MOSI pin." -msgstr "Запись невозможна без вывода MOSI." +msgstr "Запись невозможна без пина MOSI." #: shared-bindings/_bleio/CharacteristicBuffer.c msgid "CharacteristicBuffer writing not provided" @@ -821,7 +819,7 @@ msgstr "CircuitPython не смог выделить heap." #: shared-module/bitbangio/SPI.c msgid "Clock pin init failed." -msgstr "Не удалось инициализировать тактовый вывод." +msgstr "Не удалось инициализировать пин Clock." #: shared-module/bitbangio/I2C.c msgid "Clock stretch too long" @@ -930,7 +928,7 @@ msgstr "ЦАП уже используется" #: ports/atmel-samd/common-hal/paralleldisplay/ParallelBus.c #: ports/nrf/common-hal/paralleldisplay/ParallelBus.c msgid "Data 0 pin must be byte aligned" -msgstr "Вывод data 0 должен быть выровнен по байтам" +msgstr "Пин data 0 должен быть байтово выровнен" #: shared-module/audiocore/WaveFile.c msgid "Data chunk must follow fmt chunk" @@ -949,7 +947,8 @@ msgstr "Данные слишком велики для пакета объяв #: ports/stm/common-hal/alarm/pin/PinAlarm.c msgid "Deep sleep pins must use a rising edge with pulldown" msgstr "" -"Выводы глубокого сна должны использовать rising edge с подтяжкой к земле" +"Выводы глубокого сна должны использовать сигнал по возрастанию с подтяжкой к " +"земле" #: shared-bindings/audiobusio/PDMIn.c msgid "Destination capacity is smaller than destination_length." @@ -961,7 +960,7 @@ msgstr "Устройство используется" #: ports/cxd56/common-hal/digitalio/DigitalInOut.c msgid "DigitalInOut not supported on given pin" -msgstr "DigitalInOut не поддерживается на данном выводе" +msgstr "DigitalInOut не поддерживается на данном пине" #: shared-bindings/displayio/Display.c #: shared-bindings/framebufferio/FramebufferDisplay.c @@ -975,7 +974,6 @@ msgid "Display rotation must be in 90 degree increments" msgstr "Поворот дисплея должен осуществляться с шагом 90 градусов" #: shared-bindings/digitalio/DigitalInOut.c -#, fuzzy msgid "Drive mode not used when direction is input." msgstr "Drive mode не используется, когда направление является входным." @@ -1173,11 +1171,11 @@ msgstr "" #: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/canio/CAN.c #: ports/stm/common-hal/sdioio/SDCard.c msgid "Hardware busy, try alternative pins" -msgstr "Оборудование занято, попробуйте использовать другие выводы" +msgstr "Оборудование занято, попробуйте использовать другие пины" #: ports/mimxrt10xx/common-hal/busio/UART.c ports/stm/common-hal/busio/UART.c msgid "Hardware in use, try alternative pins" -msgstr "Оборудование используется, попробуйте использовать другие выводы" +msgstr "Оборудование используется, попробуйте использовать другие пины" #: shared-bindings/wifi/Radio.c msgid "Hostname must be between 1 and 253 characters" @@ -1227,13 +1225,12 @@ msgstr "Неверный размер программы инициализац #: ports/raspberrypi/common-hal/rp2pio/StateMachine.c msgid "Initial set pin direction conflicts with initial out pin direction" msgstr "" -"Начальное направление вывода set конфликтует с начальным направлением вывода " -"out" +"Начальное направление пина set конфликтует с начальным направлением пина out" #: ports/raspberrypi/common-hal/rp2pio/StateMachine.c msgid "Initial set pin state conflicts with initial out pin state" msgstr "" -"Начальное состояние вывода set конфликтует с начальным состоянием вывода out" +"Начальное состояние пина set конфликтует с начальным состоянием пина out" #: ports/espressif/common-hal/watchdog/WatchDogTimer.c msgid "Initialization failed due to lack of memory" @@ -1256,20 +1253,19 @@ msgstr "Ошибка ввода/вывода" #, c-format msgid "Instruction %d shifts in more bits than pin count" msgstr "" -"Инструкция %d вводит (shifts in) большее количество бит, чем количество " -"выводов" +"Инструкция %d вводит (shifts in) большее количество бит, чем количество пинов" #: ports/raspberrypi/common-hal/rp2pio/StateMachine.c #, c-format msgid "Instruction %d shifts out more bits than pin count" msgstr "" "Инструкция %d выводит (shifts out) большее количество бит, чем количество " -"выводов" +"пинов" #: ports/raspberrypi/common-hal/rp2pio/StateMachine.c #, c-format msgid "Instruction %d uses extra pin" -msgstr "Инструкция %d использует дополнительный вывод" +msgstr "Инструкция %d использует дополнительный пин" #: ports/raspberrypi/common-hal/rp2pio/StateMachine.c #, c-format @@ -1285,7 +1281,6 @@ msgid "Insufficient encryption" msgstr "Недостаточное шифрование" #: ports/espressif/common-hal/wifi/Radio.c -#, fuzzy msgid "Interface must be started" msgstr "Интерфейс должен быть запущен" @@ -1315,13 +1310,13 @@ msgstr "Недопустимый %q" #: ports/atmel-samd/common-hal/imagecapture/ParallelImageCapture.c #: ports/mimxrt10xx/common-hal/busio/UART.c msgid "Invalid %q pin" -msgstr "Недопустимый вывод %q" +msgstr "Недопустимый пин %q" #: ports/stm/common-hal/busio/I2C.c ports/stm/common-hal/busio/SPI.c #: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/canio/CAN.c #: ports/stm/common-hal/sdioio/SDCard.c msgid "Invalid %q pin selection" -msgstr "Неверный выбор вывода %q" +msgstr "Неверный выбор пина %q" #: ports/stm/common-hal/analogio/AnalogIn.c msgid "Invalid ADC Unit value" @@ -1347,7 +1342,7 @@ msgstr "Неверный BSSID" #: ports/espressif/common-hal/analogio/AnalogOut.c #: ports/stm/common-hal/analogio/AnalogOut.c msgid "Invalid DAC pin supplied" -msgstr "Передан неверный вывод ЦАП" +msgstr "Передан неверный пин ЦАП" #: shared-bindings/wifi/Radio.c msgid "Invalid MAC address" @@ -1368,7 +1363,7 @@ msgstr "Недопустимая частота ШИМ" #: ports/espressif/common-hal/analogio/AnalogIn.c msgid "Invalid Pin" -msgstr "Неверный вывод" +msgstr "Неверный пин" #: ports/espressif/bindings/espidf/__init__.c #: ports/espressif/common-hal/busio/I2C.c @@ -1450,15 +1445,15 @@ msgstr "Неверная фаза" #: ports/nrf/common-hal/alarm/pin/PinAlarm.c shared-bindings/pwmio/PWMOut.c #: shared-module/rgbmatrix/RGBMatrix.c msgid "Invalid pin" -msgstr "Недопустимый вывод" +msgstr "Недопустимый пин" #: ports/atmel-samd/common-hal/audioio/AudioOut.c msgid "Invalid pin for left channel" -msgstr "Недопустимый вывод для левого канала" +msgstr "Недопустимый пин для левого канала" #: ports/atmel-samd/common-hal/audioio/AudioOut.c msgid "Invalid pin for right channel" -msgstr "Недопустимый вывод для правого канала" +msgstr "Недопустимый пин для правого канала" #: ports/atmel-samd/common-hal/busio/I2C.c #: ports/atmel-samd/common-hal/busio/SPI.c @@ -1478,7 +1473,7 @@ msgstr "Недопустимый вывод для правого канала" #: ports/raspberrypi/common-hal/busio/UART.c shared-bindings/busio/SPI.c #: shared-bindings/busio/UART.c msgid "Invalid pins" -msgstr "Недопустимые выводы" +msgstr "Недопустимые пины" #: shared-bindings/bitbangio/SPI.c shared-bindings/busio/SPI.c #: shared-bindings/displayio/FourWire.c @@ -1552,11 +1547,11 @@ msgstr "MAC адрес был недействительным" #: shared-module/bitbangio/SPI.c msgid "MISO pin init failed." -msgstr "Не удалось инициализировать вывод MISO." +msgstr "Не удалось инициализировать пин MISO." #: shared-module/bitbangio/SPI.c msgid "MOSI pin init failed." -msgstr "Не удалось инициализировать вывод MOSI." +msgstr "Не удалось инициализировать пин MOSI." #: shared-bindings/is31fl3741/IS31FL3741.c msgid "Mapping must be a tuple" @@ -1577,44 +1572,42 @@ msgstr "Задержка включения микрофона должна бы #: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/SPI.c msgid "Missing MISO or MOSI Pin" -msgstr "Отсутствует вывод MISO или MOSI" +msgstr "Отсутствует пин MISO или MOSI" #: ports/raspberrypi/common-hal/rp2pio/StateMachine.c #, c-format msgid "Missing first_in_pin. Instruction %d reads pin(s)" -msgstr "Отсутствует first_in_pin. Инструкция %d читает состояние вывода (-ов)" +msgstr "Отсутствует first_in_pin. Инструкция %d читает состояние пина (-ов)" #: ports/raspberrypi/common-hal/rp2pio/StateMachine.c #, c-format msgid "Missing first_in_pin. Instruction %d shifts in from pin(s)" -msgstr "" -"Отсутствует first_out_pin. Инструкция %d вводит (shifts out) на вывод(ы)" +msgstr "Отсутствует first_out_pin. Инструкция %d вводит (shifts out) на пин(ы)" #: ports/raspberrypi/common-hal/rp2pio/StateMachine.c -#, fuzzy, c-format +#, c-format msgid "Missing first_in_pin. Instruction %d waits based on pin" -msgstr "Отсутствует first_in_pin. Инструкция %d ожидает на основе вывода" +msgstr "Отсутствует first_in_pin. Инструкция %d ожидает на основе пина" #: ports/raspberrypi/common-hal/rp2pio/StateMachine.c #, c-format msgid "Missing first_out_pin. Instruction %d shifts out to pin(s)" -msgstr "" -"Отсутствует first_out_pin. Инструкция %d выводит (shifts out) на вывод(ы)" +msgstr "Отсутствует first_out_pin. Инструкция %d выводит (shifts out) на пин(ы)" #: ports/raspberrypi/common-hal/rp2pio/StateMachine.c -#, fuzzy, c-format +#, c-format msgid "Missing first_out_pin. Instruction %d writes pin(s)" -msgstr "Отсутствует first_out_pin. Инструкция %d записывает вывод(ы)" +msgstr "Отсутствует first_out_pin. Инструкция %d записывает пин(ы)" #: ports/raspberrypi/common-hal/rp2pio/StateMachine.c #, c-format msgid "Missing first_set_pin. Instruction %d sets pin(s)" -msgstr "Отсутствует first_set_pin. Инструкция %d устанавливает вывод(ы)" +msgstr "Отсутствует first_set_pin. Инструкция %d устанавливает пин(ы)" #: ports/raspberrypi/common-hal/rp2pio/StateMachine.c #, c-format msgid "Missing jmp_pin. Instruction %d jumps on pin" -msgstr "Отсутствует jmp_pin. Инструкция %d перепрыгивает на вывод" +msgstr "Отсутствует jmp_pin. Инструкция %d перепрыгивает на пин" #: shared-module/usb_hid/Device.c #, c-format @@ -1627,12 +1620,12 @@ msgstr "Должен быть субклассом %q." #: ports/mimxrt10xx/common-hal/busio/SPI.c shared-bindings/busio/SPI.c msgid "Must provide MISO or MOSI pin" -msgstr "Вывод MISO или MOSI должен быть предоставлен" +msgstr "Пин MISO или MOSI должен быть предоставлен" #: shared-bindings/rgbmatrix/RGBMatrix.c #, c-format msgid "Must use a multiple of 6 rgb pins, not %d" -msgstr "Количество используемых rgb-контактов должно быть кратно 6, а не %d." +msgstr "Количество используемых rgb-пинов должно быть кратно 6, а не %d" #: supervisor/shared/safe_mode.c msgid "NLR jump failed. Likely memory corruption." @@ -1678,26 +1671,26 @@ msgstr "" #: ports/espressif/common-hal/busio/SPI.c #: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/SPI.c msgid "No MISO Pin" -msgstr "Нет вывода MISO" +msgstr "Нет пина MISO" #: ports/espressif/common-hal/busio/SPI.c #: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/SPI.c msgid "No MOSI Pin" -msgstr "Нет вывода MOSI" +msgstr "Нет пина MOSI" #: ports/atmel-samd/common-hal/busio/UART.c #: ports/espressif/common-hal/busio/UART.c #: ports/mimxrt10xx/common-hal/busio/UART.c ports/nrf/common-hal/busio/UART.c #: ports/raspberrypi/common-hal/busio/UART.c ports/stm/common-hal/busio/UART.c msgid "No RX pin" -msgstr "Нет вывода RX" +msgstr "Нет пина RX" #: ports/atmel-samd/common-hal/busio/UART.c #: ports/espressif/common-hal/busio/UART.c #: ports/mimxrt10xx/common-hal/busio/UART.c ports/nrf/common-hal/busio/UART.c #: ports/raspberrypi/common-hal/busio/UART.c ports/stm/common-hal/busio/UART.c msgid "No TX pin" -msgstr "Нет вывода TX" +msgstr "Нет пина TX" #: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c msgid "No available clocks" @@ -1725,13 +1718,13 @@ msgstr "Отсутствует аппаратный генератор случ #: ports/atmel-samd/common-hal/ps2io/Ps2.c msgid "No hardware support on clk pin" -msgstr "Отсутствует аппаратная поддержка вывода clk" +msgstr "Отсутствует аппаратная поддержка пина clk" #: ports/atmel-samd/common-hal/alarm/pin/PinAlarm.c #: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c #: ports/atmel-samd/common-hal/pulseio/PulseIn.c msgid "No hardware support on pin" -msgstr "Отсутствует аппаратная поддержка на выводе" +msgstr "Отсутствует аппаратная поддержка на пине" #: ports/raspberrypi/common-hal/rp2pio/StateMachine.c msgid "No in in program" @@ -1766,14 +1759,13 @@ msgstr "В программе отсутствует вывод" #: ports/espressif/common-hal/busio/I2C.c #: ports/mimxrt10xx/common-hal/busio/I2C.c ports/nrf/common-hal/busio/I2C.c #: ports/raspberrypi/common-hal/busio/I2C.c -#, fuzzy msgid "No pull up found on SDA or SCL; check your wiring" msgstr "" "Подтяжка на выводах SDA или SCL не обнаружена; проверь схему подключения" #: shared-module/touchio/TouchIn.c msgid "No pulldown on pin; 1Mohm recommended" -msgstr "Отсутствует подтяжка к земле на выводе; Рекомендуется 1 Мегаом" +msgstr "Отсутствует подтяжка к земле на пине; Рекомендуется 1 Мегаом" #: py/moduerrno.c msgid "No space left on device" @@ -1811,7 +1803,6 @@ msgid "Not playing" msgstr "Не играет" #: shared-bindings/_bleio/__init__.c -#, fuzzy msgid "Not settable" msgstr "Не устанавливается" @@ -1833,7 +1824,6 @@ msgstr "" #: ports/atmel-samd/common-hal/audiobusio/PDMIn.c #: ports/raspberrypi/common-hal/audiobusio/PDMIn.c -#, fuzzy msgid "Only 8 or 16 bit mono with " msgstr "Только 8- или 16-битное моно с " @@ -1846,12 +1836,12 @@ msgid "Only IPv4 sockets supported" msgstr "Поддерживаются только сокеты IPv4" #: shared-module/displayio/OnDiskBitmap.c -#, fuzzy, c-format +#, c-format msgid "" "Only Windows format, uncompressed BMP supported: given header size is %d" msgstr "" "Поддерживается только формат Windows, несжатый BMP: заданный размер " -"заголовка - %d." +"заголовка - %d" #: shared-bindings/_bleio/Adapter.c msgid "Only connectable advertisements can be directed" @@ -1954,15 +1944,15 @@ msgstr "" #: ports/atmel-samd/common-hal/alarm/pin/PinAlarm.c #: ports/stm/common-hal/alarm/pin/PinAlarm.c msgid "Pin cannot wake from Deep Sleep" -msgstr "" +msgstr "Пин не может вывести из глубокого сна" #: ports/raspberrypi/bindings/rp2pio/StateMachine.c msgid "Pin count must be at least 1" -msgstr "" +msgstr "Количество пинов должно быть не менее 1" #: ports/raspberrypi/common-hal/rp2pio/StateMachine.c msgid "Pin count too large" -msgstr "" +msgstr "Слишком большое количество пинов" #: ports/atmel-samd/common-hal/analogio/AnalogIn.c #: ports/cxd56/common-hal/analogio/AnalogIn.c @@ -1972,25 +1962,25 @@ msgstr "" #: ports/raspberrypi/common-hal/analogio/AnalogIn.c #: ports/stm/common-hal/analogio/AnalogIn.c msgid "Pin does not have ADC capabilities" -msgstr "" +msgstr "Пин не имеет возможности АЦП" #: ports/stm/common-hal/alarm/pin/PinAlarm.c #: ports/stm/common-hal/pulseio/PulseIn.c msgid "Pin interrupt already in use" -msgstr "" +msgstr "Прерывание пина уже используется" #: shared-bindings/adafruit_bus_device/spi_device/SPIDevice.c #: shared-bindings/digitalio/DigitalInOut.c msgid "Pin is input only" -msgstr "" +msgstr "Пин является только входом" #: ports/raspberrypi/common-hal/countio/Counter.c msgid "Pin must be on PWM Channel B" -msgstr "" +msgstr "Пин должен быть на канале ШИМ B" #: ports/atmel-samd/common-hal/countio/Counter.c msgid "Pin must support hardware interrupts" -msgstr "" +msgstr "Пин должен поддерживать аппаратные прерывания" #: shared-bindings/rgbmatrix/RGBMatrix.c #, c-format @@ -1999,18 +1989,21 @@ msgid "" "bytes. If this cannot be avoided, pass allow_inefficient=True to the " "constructor" msgstr "" +"Pinout использует %d байт на элемент, что потребляет больше, чем идеальные " +"%d байт. Если этого нельзя избежать, передайте allow_inefficient=True в " +"конструктор" #: ports/raspberrypi/common-hal/imagecapture/ParallelImageCapture.c msgid "Pins must be sequential" -msgstr "" +msgstr "Пины должны быть последовательными" #: ports/raspberrypi/common-hal/rotaryio/IncrementalEncoder.c msgid "Pins must be sequential GPIO pins" -msgstr "" +msgstr "Пины должны быть последовательными выводами GPIO" #: ports/raspberrypi/common-hal/audiopwmio/PWMAudioOut.c msgid "Pins must share PWM slice" -msgstr "" +msgstr "Пины должны иметь общий срез ШИМ" #: py/builtinhelp.c msgid "Plus any modules on the filesystem\n" @@ -2203,7 +2196,7 @@ msgstr "" #: ports/raspberrypi/bindings/rp2pio/StateMachine.c msgid "Set pin count must be between 1 and 5" -msgstr "" +msgstr "Число Set пинов должно быть от 1 до 5" #: ports/raspberrypi/bindings/rp2pio/StateMachine.c msgid "Side set pin count must be between 1 and 5" @@ -2239,7 +2232,7 @@ msgstr "" #: shared-bindings/paralleldisplay/ParallelBus.c msgid "Specify exactly one of data0 or data_pins" -msgstr "" +msgstr "Укажите точно один из data0 или data_pins" #: extmod/modure.c msgid "Splitting with sub-captures" @@ -2263,7 +2256,7 @@ msgstr "" #: ports/mimxrt10xx/common-hal/busio/UART.c ports/stm/common-hal/busio/UART.c msgid "Supply at least one UART pin" -msgstr "" +msgstr "Предоставьте хотяб один пин UART" #: shared-bindings/alarm/time/TimeAlarm.c msgid "Supply one of monotonic_time or epoch_time" @@ -2291,7 +2284,7 @@ msgstr "" #: shared-bindings/rgbmatrix/RGBMatrix.c msgid "The length of rgb_pins must be 6, 12, 18, 24, or 30" -msgstr "" +msgstr "Длина rgb_pins должна быть 6, 12, 18, 24 или 30" #: supervisor/shared/safe_mode.c msgid "" @@ -2325,6 +2318,8 @@ msgid "" "This microcontroller only supports data0=, not data_pins=, because it " "requires contiguous pins." msgstr "" +"Этот микроконтроллер поддерживает только data0=, а не data_pins=, поскольку " +"для него требуются смежные выводы." #: shared-bindings/displayio/TileGrid.c msgid "Tile height must exactly divide bitmap height" @@ -3106,7 +3101,7 @@ msgstr "" #: ports/atmel-samd/common-hal/imagecapture/ParallelImageCapture.c #, c-format msgid "data pin #%d in use" -msgstr "" +msgstr "data-пин #%d уже используется" #: extmod/ulab/code/ndarray.c msgid "data type not understood" @@ -3825,7 +3820,7 @@ msgstr "" #: shared-bindings/displayio/FourWire.c shared-bindings/displayio/I2CDisplay.c #: shared-bindings/paralleldisplay/ParallelBus.c msgid "no reset pin available" -msgstr "" +msgstr "нет доступного контакта сброса" #: shared-module/sdcardio/SDCard.c msgid "no response from SD card" @@ -4202,12 +4197,12 @@ msgstr "" #: shared-bindings/rgbmatrix/RGBMatrix.c #, c-format msgid "rgb_pins[%d] duplicates another pin assignment" -msgstr "" +msgstr "rgb_pins[%d] дублирует другое назначение пинов" #: shared-bindings/rgbmatrix/RGBMatrix.c #, c-format msgid "rgb_pins[%d] is not on the same port as clock" -msgstr "" +msgstr "rgb_pins[%d] не находится на том же порту, что и clock" #: extmod/ulab/code/numpy/numerical.c msgid "roll argument must be an ndarray" @@ -4685,7 +4680,6 @@ msgid "zi must be an ndarray" msgstr "" #: extmod/ulab/code/scipy/signal/signal.c -#, fuzzy msgid "zi must be of float type" msgstr "zi должно быть типа float" From 54918e6bbcefe52a1ba2ec98f51dc9a6683c7931 Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Mon, 14 Feb 2022 19:08:53 +0100 Subject: [PATCH 05/14] Update translation files Updated by "Update PO files to match POT (msgmerge)" hook in Weblate. Translation: CircuitPython/main Translate-URL: https://hosted.weblate.org/projects/circuitpython/main/ --- locale/ID.po | 4 ++++ locale/cs.po | 4 ++++ locale/de_DE.po | 4 ++++ locale/el.po | 4 ++++ locale/en_GB.po | 4 ++++ locale/es.po | 4 ++++ locale/fil.po | 4 ++++ locale/fr.po | 4 ++++ locale/hi.po | 4 ++++ locale/it_IT.po | 4 ++++ locale/ja.po | 4 ++++ locale/ko.po | 4 ++++ locale/nl.po | 4 ++++ locale/pl.po | 4 ++++ locale/pt_BR.po | 4 ++++ locale/ru.po | 7 ++++++- locale/sv.po | 4 ++++ locale/tr.po | 4 ++++ locale/zh_Latn_pinyin.po | 4 ++++ 19 files changed, 78 insertions(+), 1 deletion(-) diff --git a/locale/ID.po b/locale/ID.po index 90116102e4..e6b4c317a6 100644 --- a/locale/ID.po +++ b/locale/ID.po @@ -3667,6 +3667,10 @@ msgstr "" msgid "matrix is not positive definite" msgstr "" +#: shared-bindings/wifi/Radio.c +msgid "max_connections must be between 0 and 10" +msgstr "" + #: ports/espressif/common-hal/_bleio/Descriptor.c #: ports/nrf/common-hal/_bleio/Characteristic.c #: ports/nrf/common-hal/_bleio/Descriptor.c diff --git a/locale/cs.po b/locale/cs.po index 1184c89e7a..147bae8b34 100644 --- a/locale/cs.po +++ b/locale/cs.po @@ -3641,6 +3641,10 @@ msgstr "" msgid "matrix is not positive definite" msgstr "" +#: shared-bindings/wifi/Radio.c +msgid "max_connections must be between 0 and 10" +msgstr "" + #: ports/espressif/common-hal/_bleio/Descriptor.c #: ports/nrf/common-hal/_bleio/Characteristic.c #: ports/nrf/common-hal/_bleio/Descriptor.c diff --git a/locale/de_DE.po b/locale/de_DE.po index 038f51e35c..da459084fd 100644 --- a/locale/de_DE.po +++ b/locale/de_DE.po @@ -3692,6 +3692,10 @@ msgstr "Mathe-Domain-Fehler" msgid "matrix is not positive definite" msgstr "Matrix ist nicht positiv definitiv" +#: shared-bindings/wifi/Radio.c +msgid "max_connections must be between 0 and 10" +msgstr "" + #: ports/espressif/common-hal/_bleio/Descriptor.c #: ports/nrf/common-hal/_bleio/Characteristic.c #: ports/nrf/common-hal/_bleio/Descriptor.c diff --git a/locale/el.po b/locale/el.po index 408d191637..7880ed60ed 100644 --- a/locale/el.po +++ b/locale/el.po @@ -3630,6 +3630,10 @@ msgstr "" msgid "matrix is not positive definite" msgstr "" +#: shared-bindings/wifi/Radio.c +msgid "max_connections must be between 0 and 10" +msgstr "" + #: ports/espressif/common-hal/_bleio/Descriptor.c #: ports/nrf/common-hal/_bleio/Characteristic.c #: ports/nrf/common-hal/_bleio/Descriptor.c diff --git a/locale/en_GB.po b/locale/en_GB.po index 12a86cbaec..b0f3e37e84 100644 --- a/locale/en_GB.po +++ b/locale/en_GB.po @@ -3667,6 +3667,10 @@ msgstr "math domain error" msgid "matrix is not positive definite" msgstr "matrix is not positive definite" +#: shared-bindings/wifi/Radio.c +msgid "max_connections must be between 0 and 10" +msgstr "" + #: ports/espressif/common-hal/_bleio/Descriptor.c #: ports/nrf/common-hal/_bleio/Characteristic.c #: ports/nrf/common-hal/_bleio/Descriptor.c diff --git a/locale/es.po b/locale/es.po index 49ea676dc3..fcccc1e450 100644 --- a/locale/es.po +++ b/locale/es.po @@ -3709,6 +3709,10 @@ msgstr "error de dominio matemático" msgid "matrix is not positive definite" msgstr "matrix no es definida positiva" +#: shared-bindings/wifi/Radio.c +msgid "max_connections must be between 0 and 10" +msgstr "" + #: ports/espressif/common-hal/_bleio/Descriptor.c #: ports/nrf/common-hal/_bleio/Characteristic.c #: ports/nrf/common-hal/_bleio/Descriptor.c diff --git a/locale/fil.po b/locale/fil.po index 9d7cc79925..e1e7335b2d 100644 --- a/locale/fil.po +++ b/locale/fil.po @@ -3669,6 +3669,10 @@ msgstr "may pagkakamali sa math domain" msgid "matrix is not positive definite" msgstr "" +#: shared-bindings/wifi/Radio.c +msgid "max_connections must be between 0 and 10" +msgstr "" + #: ports/espressif/common-hal/_bleio/Descriptor.c #: ports/nrf/common-hal/_bleio/Characteristic.c #: ports/nrf/common-hal/_bleio/Descriptor.c diff --git a/locale/fr.po b/locale/fr.po index 97080c0994..d8fce7f12a 100644 --- a/locale/fr.po +++ b/locale/fr.po @@ -3739,6 +3739,10 @@ msgstr "erreur de domaine math" msgid "matrix is not positive definite" msgstr "la matrice n'est pas définie positive" +#: shared-bindings/wifi/Radio.c +msgid "max_connections must be between 0 and 10" +msgstr "" + #: ports/espressif/common-hal/_bleio/Descriptor.c #: ports/nrf/common-hal/_bleio/Characteristic.c #: ports/nrf/common-hal/_bleio/Descriptor.c diff --git a/locale/hi.po b/locale/hi.po index 321059f654..4cd4f2f121 100644 --- a/locale/hi.po +++ b/locale/hi.po @@ -3630,6 +3630,10 @@ msgstr "" msgid "matrix is not positive definite" msgstr "" +#: shared-bindings/wifi/Radio.c +msgid "max_connections must be between 0 and 10" +msgstr "" + #: ports/espressif/common-hal/_bleio/Descriptor.c #: ports/nrf/common-hal/_bleio/Characteristic.c #: ports/nrf/common-hal/_bleio/Descriptor.c diff --git a/locale/it_IT.po b/locale/it_IT.po index 52db6d4879..0e34f99191 100644 --- a/locale/it_IT.po +++ b/locale/it_IT.po @@ -3687,6 +3687,10 @@ msgstr "errore di dominio matematico" msgid "matrix is not positive definite" msgstr "" +#: shared-bindings/wifi/Radio.c +msgid "max_connections must be between 0 and 10" +msgstr "" + #: ports/espressif/common-hal/_bleio/Descriptor.c #: ports/nrf/common-hal/_bleio/Characteristic.c #: ports/nrf/common-hal/_bleio/Descriptor.c diff --git a/locale/ja.po b/locale/ja.po index 78f1b5f98a..b601fcee64 100644 --- a/locale/ja.po +++ b/locale/ja.po @@ -3650,6 +3650,10 @@ msgstr "定義域エラー" msgid "matrix is not positive definite" msgstr "正定値行列ではありません" +#: shared-bindings/wifi/Radio.c +msgid "max_connections must be between 0 and 10" +msgstr "" + #: ports/espressif/common-hal/_bleio/Descriptor.c #: ports/nrf/common-hal/_bleio/Characteristic.c #: ports/nrf/common-hal/_bleio/Descriptor.c diff --git a/locale/ko.po b/locale/ko.po index 0660739cc5..73cff73d06 100644 --- a/locale/ko.po +++ b/locale/ko.po @@ -3634,6 +3634,10 @@ msgstr "" msgid "matrix is not positive definite" msgstr "" +#: shared-bindings/wifi/Radio.c +msgid "max_connections must be between 0 and 10" +msgstr "" + #: ports/espressif/common-hal/_bleio/Descriptor.c #: ports/nrf/common-hal/_bleio/Characteristic.c #: ports/nrf/common-hal/_bleio/Descriptor.c diff --git a/locale/nl.po b/locale/nl.po index 8a16d938d6..e36bf3ef36 100644 --- a/locale/nl.po +++ b/locale/nl.po @@ -3670,6 +3670,10 @@ msgstr "fout in het wiskundig domein (math domain error)" msgid "matrix is not positive definite" msgstr "matrix is niet positief-definiet" +#: shared-bindings/wifi/Radio.c +msgid "max_connections must be between 0 and 10" +msgstr "" + #: ports/espressif/common-hal/_bleio/Descriptor.c #: ports/nrf/common-hal/_bleio/Characteristic.c #: ports/nrf/common-hal/_bleio/Descriptor.c diff --git a/locale/pl.po b/locale/pl.po index f38972e0c1..1c3ab4eacc 100644 --- a/locale/pl.po +++ b/locale/pl.po @@ -3642,6 +3642,10 @@ msgstr "błąd domeny" msgid "matrix is not positive definite" msgstr "" +#: shared-bindings/wifi/Radio.c +msgid "max_connections must be between 0 and 10" +msgstr "" + #: ports/espressif/common-hal/_bleio/Descriptor.c #: ports/nrf/common-hal/_bleio/Characteristic.c #: ports/nrf/common-hal/_bleio/Descriptor.c diff --git a/locale/pt_BR.po b/locale/pt_BR.po index 140bc5701b..f2c4a80697 100644 --- a/locale/pt_BR.po +++ b/locale/pt_BR.po @@ -3727,6 +3727,10 @@ msgstr "erro de domínio matemático" msgid "matrix is not positive definite" msgstr "a matriz não é definitiva positiva" +#: shared-bindings/wifi/Radio.c +msgid "max_connections must be between 0 and 10" +msgstr "" + #: ports/espressif/common-hal/_bleio/Descriptor.c #: ports/nrf/common-hal/_bleio/Characteristic.c #: ports/nrf/common-hal/_bleio/Descriptor.c diff --git a/locale/ru.po b/locale/ru.po index 73e8e2c329..3163b17212 100644 --- a/locale/ru.po +++ b/locale/ru.po @@ -1592,7 +1592,8 @@ msgstr "Отсутствует first_in_pin. Инструкция %d ожида #: ports/raspberrypi/common-hal/rp2pio/StateMachine.c #, c-format msgid "Missing first_out_pin. Instruction %d shifts out to pin(s)" -msgstr "Отсутствует first_out_pin. Инструкция %d выводит (shifts out) на пин(ы)" +msgstr "" +"Отсутствует first_out_pin. Инструкция %d выводит (shifts out) на пин(ы)" #: ports/raspberrypi/common-hal/rp2pio/StateMachine.c #, c-format @@ -3680,6 +3681,10 @@ msgstr "" msgid "matrix is not positive definite" msgstr "" +#: shared-bindings/wifi/Radio.c +msgid "max_connections must be between 0 and 10" +msgstr "" + #: ports/espressif/common-hal/_bleio/Descriptor.c #: ports/nrf/common-hal/_bleio/Characteristic.c #: ports/nrf/common-hal/_bleio/Descriptor.c diff --git a/locale/sv.po b/locale/sv.po index c0d70a5a60..80638af4d0 100644 --- a/locale/sv.po +++ b/locale/sv.po @@ -3690,6 +3690,10 @@ msgstr "matematikdomänfel" msgid "matrix is not positive definite" msgstr "matrisen är inte positiv bestämd" +#: shared-bindings/wifi/Radio.c +msgid "max_connections must be between 0 and 10" +msgstr "" + #: ports/espressif/common-hal/_bleio/Descriptor.c #: ports/nrf/common-hal/_bleio/Characteristic.c #: ports/nrf/common-hal/_bleio/Descriptor.c diff --git a/locale/tr.po b/locale/tr.po index 3912ec89f6..3c395bf68c 100644 --- a/locale/tr.po +++ b/locale/tr.po @@ -3648,6 +3648,10 @@ msgstr "" msgid "matrix is not positive definite" msgstr "" +#: shared-bindings/wifi/Radio.c +msgid "max_connections must be between 0 and 10" +msgstr "" + #: ports/espressif/common-hal/_bleio/Descriptor.c #: ports/nrf/common-hal/_bleio/Characteristic.c #: ports/nrf/common-hal/_bleio/Descriptor.c diff --git a/locale/zh_Latn_pinyin.po b/locale/zh_Latn_pinyin.po index 37a210c55c..34f5a7a69a 100644 --- a/locale/zh_Latn_pinyin.po +++ b/locale/zh_Latn_pinyin.po @@ -3701,6 +3701,10 @@ msgstr "shùxué yù cuòwù" msgid "matrix is not positive definite" msgstr "jǔzhèn bùshì zhèngdìng de" +#: shared-bindings/wifi/Radio.c +msgid "max_connections must be between 0 and 10" +msgstr "" + #: ports/espressif/common-hal/_bleio/Descriptor.c #: ports/nrf/common-hal/_bleio/Characteristic.c #: ports/nrf/common-hal/_bleio/Descriptor.c From ca5095c94bc31323738a7eb016e4e2d7af91ab6b Mon Sep 17 00:00:00 2001 From: Michael Himing Date: Thu, 10 Feb 2022 15:41:34 +1100 Subject: [PATCH 06/14] Add AI thinker esp32c3s 2M --- ports/espressif/Makefile | 15 ++-- .../boards/ai_thinker_esp32-c3s-2m/board.c | 47 ++++++++++++ .../ai_thinker_esp32-c3s-2m/mpconfigboard.h | 47 ++++++++++++ .../ai_thinker_esp32-c3s-2m/mpconfigboard.mk | 10 +++ .../boards/ai_thinker_esp32-c3s-2m/pins.c | 72 +++++++++++++++++++ .../boards/ai_thinker_esp32-c3s-2m/sdkconfig | 5 ++ .../esp-idf-config/partitions-2MB-no-uf2.csv | 7 ++ .../sdkconfig-2MB-no-uf2.defaults | 18 +++++ 8 files changed, 217 insertions(+), 4 deletions(-) create mode 100644 ports/espressif/boards/ai_thinker_esp32-c3s-2m/board.c create mode 100644 ports/espressif/boards/ai_thinker_esp32-c3s-2m/mpconfigboard.h create mode 100644 ports/espressif/boards/ai_thinker_esp32-c3s-2m/mpconfigboard.mk create mode 100644 ports/espressif/boards/ai_thinker_esp32-c3s-2m/pins.c create mode 100644 ports/espressif/boards/ai_thinker_esp32-c3s-2m/sdkconfig create mode 100644 ports/espressif/esp-idf-config/partitions-2MB-no-uf2.csv create mode 100644 ports/espressif/esp-idf-config/sdkconfig-2MB-no-uf2.defaults diff --git a/ports/espressif/Makefile b/ports/espressif/Makefile index d95812ad63..64e0bd0a8d 100644 --- a/ports/espressif/Makefile +++ b/ports/espressif/Makefile @@ -307,7 +307,14 @@ $(BUILD)/esp-idf: $(Q)$(MKDIR) -p $@ TARGET_SDKCONFIG = esp-idf-config/sdkconfig-$(IDF_TARGET).defaults -FLASH_SDKCONFIG = esp-idf-config/sdkconfig-$(CIRCUITPY_ESP_FLASH_SIZE).defaults + +UF2_BOOTLOADER ?= $(if $(filter $(IDF_TARGET),esp32s2 esp32s3),1) +ifeq ($(UF2_BOOTLOADER), 1) + FLASH_SDKCONFIG = esp-idf-config/sdkconfig-$(CIRCUITPY_ESP_FLASH_SIZE).defaults +else + FLASH_SDKCONFIG = esp-idf-config/sdkconfig-$(CIRCUITPY_ESP_FLASH_SIZE)-no-uf2.defaults +endif + ifeq ($(DEBUG), 1) DEBUG_SDKCONFIG = esp-idf-config/sdkconfig-debug.defaults else @@ -388,10 +395,10 @@ FLASH_FLAGS = --flash_mode $(CIRCUITPY_ESP_FLASH_MODE) --flash_freq $(CIRCUITPY_ ESPTOOL_FLAGS ?= --before=default_reset --after=no_reset -ifeq ($(IDF_TARGET),esp32c3) -all: $(BUILD)/firmware.bin -else +ifeq ($(UF2_BOOTLOADER),1) all: $(BUILD)/firmware.bin $(BUILD)/firmware.uf2 +else +all: $(BUILD)/firmware.bin endif .PHONY: esp-idf-stamp diff --git a/ports/espressif/boards/ai_thinker_esp32-c3s-2m/board.c b/ports/espressif/boards/ai_thinker_esp32-c3s-2m/board.c new file mode 100644 index 0000000000..f9cb98aa8f --- /dev/null +++ b/ports/espressif/boards/ai_thinker_esp32-c3s-2m/board.c @@ -0,0 +1,47 @@ +/* + * This file is part of the MicroPython project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2021 microDev + * Copyright (c) 2021 skieast/Bruce Segal + * + * 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 "shared-bindings/microcontroller/Pin.h" +#include "supervisor/board.h" + +void board_init(void) { + // Debug UART + #ifdef DEBUG + common_hal_never_reset_pin(&pin_GPIO20); + common_hal_never_reset_pin(&pin_GPIO21); + #endif +} + +bool board_requests_safe_mode(void) { + return false; +} + +void reset_board(void) { +} + +void board_deinit(void) { +} diff --git a/ports/espressif/boards/ai_thinker_esp32-c3s-2m/mpconfigboard.h b/ports/espressif/boards/ai_thinker_esp32-c3s-2m/mpconfigboard.h new file mode 100644 index 0000000000..36a0125ca4 --- /dev/null +++ b/ports/espressif/boards/ai_thinker_esp32-c3s-2m/mpconfigboard.h @@ -0,0 +1,47 @@ +/* + * This file is part of the MicroPython project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2021 microDev + * Copyright (c) 2021 skieast/Bruce Segal + * + * 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. + */ + +// Board setup +#define MICROPY_HW_BOARD_NAME "AITHinker ESP32-C3S_Kit_2M" +#define MICROPY_HW_MCU_NAME "ESP32-C3" + +// Status LED +#define MICROPY_HW_LED_STATUS (&pin_GPIO19) + +// Default bus pins +#define DEFAULT_UART_BUS_RX (&pin_GPIO20) +#define DEFAULT_UART_BUS_TX (&pin_GPIO21) + +// Serial over UART +#define DEBUG_UART_RX DEFAULT_UART_BUS_RX +#define DEBUG_UART_TX DEFAULT_UART_BUS_TX + +// For entering safe mode +#define CIRCUITPY_BOOT_BUTTON (&pin_GPIO9) + +// Explanation of how a user got into safe mode +#define BOARD_USER_SAFE_MODE_ACTION translate("pressing boot button at start up.\n") diff --git a/ports/espressif/boards/ai_thinker_esp32-c3s-2m/mpconfigboard.mk b/ports/espressif/boards/ai_thinker_esp32-c3s-2m/mpconfigboard.mk new file mode 100644 index 0000000000..6d7a58ea5c --- /dev/null +++ b/ports/espressif/boards/ai_thinker_esp32-c3s-2m/mpconfigboard.mk @@ -0,0 +1,10 @@ +CIRCUITPY_CREATOR_ID = 0x70010001 +CIRCUITPY_CREATION_ID = 0x00100001 + +IDF_TARGET = esp32c3 + +INTERNAL_FLASH_FILESYSTEM = 1 + +CIRCUITPY_ESP_FLASH_MODE=dio +CIRCUITPY_ESP_FLASH_FREQ=80m +CIRCUITPY_ESP_FLASH_SIZE=2MB diff --git a/ports/espressif/boards/ai_thinker_esp32-c3s-2m/pins.c b/ports/espressif/boards/ai_thinker_esp32-c3s-2m/pins.c new file mode 100644 index 0000000000..37e9373202 --- /dev/null +++ b/ports/espressif/boards/ai_thinker_esp32-c3s-2m/pins.c @@ -0,0 +1,72 @@ +/* + * This file is part of the MicroPython project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2021 microDev + * Copyright (c) 2021 skieast/Bruce Segal + * + * 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 "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_IO0), MP_ROM_PTR(&pin_GPIO0) }, + { MP_ROM_QSTR(MP_QSTR_IO1), MP_ROM_PTR(&pin_GPIO1) }, + { MP_ROM_QSTR(MP_QSTR_IO2), MP_ROM_PTR(&pin_GPIO2) }, + { MP_ROM_QSTR(MP_QSTR_IO3), MP_ROM_PTR(&pin_GPIO3) }, + { 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_IO8), MP_ROM_PTR(&pin_GPIO8) }, + { MP_ROM_QSTR(MP_QSTR_IO9), MP_ROM_PTR(&pin_GPIO9) }, + { MP_ROM_QSTR(MP_QSTR_IO10), MP_ROM_PTR(&pin_GPIO10) }, + { MP_ROM_QSTR(MP_QSTR_IO11), MP_ROM_PTR(&pin_GPIO11) }, + { MP_ROM_QSTR(MP_QSTR_IO12), MP_ROM_PTR(&pin_GPIO12) }, + { MP_ROM_QSTR(MP_QSTR_IO13), MP_ROM_PTR(&pin_GPIO13) }, + { MP_ROM_QSTR(MP_QSTR_IO14), MP_ROM_PTR(&pin_GPIO14) }, + { MP_ROM_QSTR(MP_QSTR_IO15), MP_ROM_PTR(&pin_GPIO15) }, + { MP_ROM_QSTR(MP_QSTR_IO16), MP_ROM_PTR(&pin_GPIO16) }, + { MP_ROM_QSTR(MP_QSTR_IO17), MP_ROM_PTR(&pin_GPIO17) }, + { MP_ROM_QSTR(MP_QSTR_IO18), MP_ROM_PTR(&pin_GPIO18) }, + { MP_ROM_QSTR(MP_QSTR_IO19), MP_ROM_PTR(&pin_GPIO19) }, + { MP_ROM_QSTR(MP_QSTR_IO20), MP_ROM_PTR(&pin_GPIO20) }, + { MP_ROM_QSTR(MP_QSTR_IO21), MP_ROM_PTR(&pin_GPIO21) }, + + { MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_GPIO20) }, + { MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO21) }, + + { MP_ROM_QSTR(MP_QSTR_ADC), MP_ROM_PTR(&pin_GPIO0) }, + { MP_ROM_QSTR(MP_QSTR_LED), MP_ROM_PTR(&pin_GPIO18) }, + { MP_ROM_QSTR(MP_QSTR_LED_YELLOW), MP_ROM_PTR(&pin_GPIO18) }, + { MP_ROM_QSTR(MP_QSTR_LED_WHITE), MP_ROM_PTR(&pin_GPIO19) }, + { MP_ROM_QSTR(MP_QSTR_LED_RED), MP_ROM_PTR(&pin_GPIO3) }, + { MP_ROM_QSTR(MP_QSTR_LED_GREEN), MP_ROM_PTR(&pin_GPIO4) }, + { MP_ROM_QSTR(MP_QSTR_LED_BLUE), MP_ROM_PTR(&pin_GPIO5) }, + { MP_ROM_QSTR(MP_QSTR_BUTTON), MP_ROM_PTR(&pin_GPIO9) }, + + { MP_ROM_QSTR(MP_QSTR_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); diff --git a/ports/espressif/boards/ai_thinker_esp32-c3s-2m/sdkconfig b/ports/espressif/boards/ai_thinker_esp32-c3s-2m/sdkconfig new file mode 100644 index 0000000000..60d8719596 --- /dev/null +++ b/ports/espressif/boards/ai_thinker_esp32-c3s-2m/sdkconfig @@ -0,0 +1,5 @@ +# +# LWIP +# +CONFIG_LWIP_LOCAL_HOSTNAME="AIThinker-ESP32C3S-2M" +# end of LWIP diff --git a/ports/espressif/esp-idf-config/partitions-2MB-no-uf2.csv b/ports/espressif/esp-idf-config/partitions-2MB-no-uf2.csv new file mode 100644 index 0000000000..869e7ac86e --- /dev/null +++ b/ports/espressif/esp-idf-config/partitions-2MB-no-uf2.csv @@ -0,0 +1,7 @@ +# ESP-IDF Partition Table +# Name, Type, SubType, Offset, Size, Flags +# bootloader.bin,, 0x1000, 32K +# partition table,, 0x8000, 4K +nvs, data, nvs, 0x9000, 20K, +app, app, factory, 0x10000, 1408K, +user_fs, data, fat, 0x170000, 576K, diff --git a/ports/espressif/esp-idf-config/sdkconfig-2MB-no-uf2.defaults b/ports/espressif/esp-idf-config/sdkconfig-2MB-no-uf2.defaults new file mode 100644 index 0000000000..7c4c4baddd --- /dev/null +++ b/ports/espressif/esp-idf-config/sdkconfig-2MB-no-uf2.defaults @@ -0,0 +1,18 @@ +# +# Serial flasher config +# +# CONFIG_ESPTOOLPY_FLASHSIZE_1MB is not set +CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y +# CONFIG_ESPTOOLPY_FLASHSIZE_4MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_8MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_16MB is not set +CONFIG_ESPTOOLPY_FLASHSIZE="2MB" +CONFIG_ESPTOOLPY_FLASHSIZE_DETECT=y +# end of Serial flasher config + +CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="esp-idf-config/partitions-2MB-no-uf2.csv" +# +# Partition Table +# +CONFIG_PARTITION_TABLE_FILENAME="esp-idf-config/partitions-2MB-no-uf2.csv" +# end of Partition Table From 90e94dc4855f48bfd45fef3c139023f98b1b7100 Mon Sep 17 00:00:00 2001 From: Michael Himing Date: Tue, 15 Feb 2022 08:41:42 +1100 Subject: [PATCH 07/14] Make ai_thinker_esp32-c3s-2m .bin only --- tools/build_board_info.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/build_board_info.py b/tools/build_board_info.py index 9058c733ab..364bcefe7b 100755 --- a/tools/build_board_info.py +++ b/tools/build_board_info.py @@ -70,6 +70,7 @@ extension_by_board = { "meowbit_v121": UF2, # esp32c3 "ai_thinker_esp32-c3s": BIN, + "ai_thinker_esp32-c3s-2m": BIN, "espressif_esp32c3_devkitm_1_n4": BIN, "microdev_micro_c3": BIN, # broadcom From 11bbe48edea330c09612efbdd48452e81a94f585 Mon Sep 17 00:00:00 2001 From: Michael Himing Date: Tue, 15 Feb 2022 08:42:15 +1100 Subject: [PATCH 08/14] Espressif: add partitions-4MB-no-uf2 --- .../esp-idf-config/partitions-4MB-no-uf2.csv | 7 +++++++ .../sdkconfig-4MB-no-uf2.defaults | 18 ++++++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 ports/espressif/esp-idf-config/partitions-4MB-no-uf2.csv create mode 100644 ports/espressif/esp-idf-config/sdkconfig-4MB-no-uf2.defaults diff --git a/ports/espressif/esp-idf-config/partitions-4MB-no-uf2.csv b/ports/espressif/esp-idf-config/partitions-4MB-no-uf2.csv new file mode 100644 index 0000000000..90bf05ce39 --- /dev/null +++ b/ports/espressif/esp-idf-config/partitions-4MB-no-uf2.csv @@ -0,0 +1,7 @@ +# ESP-IDF Partition Table +# Name, Type, SubType, Offset, Size, Flags +# bootloader.bin,, 0x1000, 32K +# partition table,, 0x8000, 4K +nvs, data, nvs, 0x9000, 20K, +app, app, factory, 0x10000, 2048K, +user_fs, data, fat, 0x210000, 1984K, diff --git a/ports/espressif/esp-idf-config/sdkconfig-4MB-no-uf2.defaults b/ports/espressif/esp-idf-config/sdkconfig-4MB-no-uf2.defaults new file mode 100644 index 0000000000..2325a67296 --- /dev/null +++ b/ports/espressif/esp-idf-config/sdkconfig-4MB-no-uf2.defaults @@ -0,0 +1,18 @@ +# +# Serial flasher config +# +# CONFIG_ESPTOOLPY_FLASHSIZE_1MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_2MB is not set +CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y +# CONFIG_ESPTOOLPY_FLASHSIZE_8MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_16MB is not set +CONFIG_ESPTOOLPY_FLASHSIZE="4MB" +CONFIG_ESPTOOLPY_FLASHSIZE_DETECT=y +# end of Serial flasher config + +CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="esp-idf-config/partitions-4MB-no-uf2.csv" +# +# Partition Table +# +CONFIG_PARTITION_TABLE_FILENAME="esp-idf-config/partitions-4MB-no-uf2.csv" +# end of Partition Table From c4c7a6ff62491626d312891d27b1c73c126434f4 Mon Sep 17 00:00:00 2001 From: Jeff Epler Date: Mon, 14 Feb 2022 16:58:29 -0600 Subject: [PATCH 09/14] use describe program during building stubs Closes: #5793 --- setup.py-stubs | 1 + 1 file changed, 1 insertion(+) diff --git a/setup.py-stubs b/setup.py-stubs index 3604ee973e..b09c47f739 100644 --- a/setup.py-stubs +++ b/setup.py-stubs @@ -43,6 +43,7 @@ setup( "root": "..", "relative_to": __file__, "local_scheme": local_scheme, + "git_describe_command": "tools/describe", }, zip_safe=False, ) From 65af10cd2338ffa60ce5335d76357f85f877b80a Mon Sep 17 00:00:00 2001 From: Scott Shawcroft Date: Mon, 14 Feb 2022 16:19:56 -0800 Subject: [PATCH 10/14] Tweak I2C and TFT power pin defaults This should set the power to on by default without preventing the user code from repeatedly using it. Fixes #5903 --- .../boards/adafruit_feather_esp32s2/board.c | 5 +---- .../boards/adafruit_feather_esp32s2_tft/board.c | 14 ++++++++++---- ports/espressif/common-hal/microcontroller/Pin.c | 4 ++++ ports/espressif/common-hal/microcontroller/Pin.h | 2 ++ 4 files changed, 17 insertions(+), 8 deletions(-) diff --git a/ports/espressif/boards/adafruit_feather_esp32s2/board.c b/ports/espressif/boards/adafruit_feather_esp32s2/board.c index 8918870a8e..1be9000b3a 100644 --- a/ports/espressif/boards/adafruit_feather_esp32s2/board.c +++ b/ports/espressif/boards/adafruit_feather_esp32s2/board.c @@ -32,10 +32,7 @@ #include "common-hal/microcontroller/Pin.h" void board_init(void) { - // Turn on I2C - common_hal_never_reset_pin(&pin_GPIO7); - gpio_set_direction(7, GPIO_MODE_DEF_OUTPUT); - gpio_set_level(7, false); + reset_board(); } bool board_requests_safe_mode(void) { diff --git a/ports/espressif/boards/adafruit_feather_esp32s2_tft/board.c b/ports/espressif/boards/adafruit_feather_esp32s2_tft/board.c index ce1aa4ae98..f25a2a99a8 100644 --- a/ports/espressif/boards/adafruit_feather_esp32s2_tft/board.c +++ b/ports/espressif/boards/adafruit_feather_esp32s2_tft/board.c @@ -71,12 +71,13 @@ uint8_t display_init_sequence[] = { void board_init(void) { - // I2C/TFT power pin + // Never reset the I2C/TFT power pin because doing so will reset the display. + // Instead, on reset set the default value and free the pin for user use. + // Relying on the normal pin reset would briefly float/pull the pin that + // could lead to a power brownout. common_hal_never_reset_pin(&pin_GPIO21); - // Turn on TFT and I2C - gpio_set_direction(21, GPIO_MODE_DEF_OUTPUT); - gpio_set_level(21, true); + reset_board(); busio_spi_obj_t *spi = common_hal_board_create_spi(0); displayio_fourwire_obj_t *bus = &displays[0].fourwire_bus; @@ -138,8 +139,13 @@ bool board_requests_safe_mode(void) { } void reset_board(void) { + // Turn on TFT and I2C + gpio_set_direction(21, GPIO_MODE_DEF_OUTPUT); + gpio_set_level(21, true); + free_pin_number(21); } void board_deinit(void) { + // TODO: Should we turn off the display when asleep? } diff --git a/ports/espressif/common-hal/microcontroller/Pin.c b/ports/espressif/common-hal/microcontroller/Pin.c index 1683ea6acc..1ea187c795 100644 --- a/ports/espressif/common-hal/microcontroller/Pin.c +++ b/ports/espressif/common-hal/microcontroller/Pin.c @@ -133,6 +133,10 @@ void claim_pin(const mcu_pin_obj_t *pin) { in_use[pin->number / 32] |= (1 << (pin->number % 32)); } +void free_pin_number(gpio_num_t pin_number) { + in_use[pin_number / 32] &= ~(1 << (pin_number % 32)); +} + void common_hal_mcu_pin_claim(const mcu_pin_obj_t *pin) { claim_pin(pin); } diff --git a/ports/espressif/common-hal/microcontroller/Pin.h b/ports/espressif/common-hal/microcontroller/Pin.h index 1a5e66997f..c6db223bb2 100644 --- a/ports/espressif/common-hal/microcontroller/Pin.h +++ b/ports/espressif/common-hal/microcontroller/Pin.h @@ -39,6 +39,8 @@ void common_hal_reset_pin(const mcu_pin_obj_t *pin); void common_hal_never_reset_pin(const mcu_pin_obj_t *pin); void claim_pin(const mcu_pin_obj_t *pin); void claim_pin_number(gpio_num_t pin_number); +// Free the pin without resetting it. +void free_pin_number(gpio_num_t pin_number); bool pin_number_is_free(gpio_num_t pin_number); void never_reset_pin_number(gpio_num_t pin_number); From 8c2e3f9a898e95c25b9f77dbe97333a7ea58425f Mon Sep 17 00:00:00 2001 From: Jonny Bergdahl Date: Mon, 14 Feb 2022 18:51:16 +0000 Subject: [PATCH 11/14] Translated using Weblate (Swedish) Currently translated at 100.0% (1048 of 1048 strings) Translation: CircuitPython/main Translate-URL: https://hosted.weblate.org/projects/circuitpython/main/sv/ --- locale/sv.po | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/locale/sv.po b/locale/sv.po index 80638af4d0..444438600f 100644 --- a/locale/sv.po +++ b/locale/sv.po @@ -6,7 +6,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-01-04 12:55-0600\n" -"PO-Revision-Date: 2022-02-11 10:58+0000\n" +"PO-Revision-Date: 2022-02-15 03:38+0000\n" "Last-Translator: Jonny Bergdahl \n" "Language-Team: LANGUAGE \n" "Language: sv\n" @@ -3692,7 +3692,7 @@ msgstr "matrisen är inte positiv bestämd" #: shared-bindings/wifi/Radio.c msgid "max_connections must be between 0 and 10" -msgstr "" +msgstr "max_connections måste vara mellan 0 och 10" #: ports/espressif/common-hal/_bleio/Descriptor.c #: ports/nrf/common-hal/_bleio/Characteristic.c From 27f2c450ba4b2d37a130bdaa1f934e5fd247552c Mon Sep 17 00:00:00 2001 From: Jeff Epler Date: Tue, 15 Feb 2022 09:06:27 -0600 Subject: [PATCH 12/14] fix finding the describe script during the doc build --- conf.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf.py b/conf.py index e4c29fb88c..7818d78917 100644 --- a/conf.py +++ b/conf.py @@ -31,7 +31,7 @@ from sphinx.transforms import SphinxTransform from docutils import nodes from sphinx import addnodes -tools_describe = (pathlib.Path(__file__).parent / "tools/describe").str() +tools_describe = str(pathlib.Path(__file__).parent / "tools/describe") # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the From c8bda89f68aad5f11a5290784e0433f8334f4135 Mon Sep 17 00:00:00 2001 From: Wellington Terumi Uemura Date: Tue, 15 Feb 2022 10:59:07 +0000 Subject: [PATCH 13/14] Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (1048 of 1048 strings) Translation: CircuitPython/main Translate-URL: https://hosted.weblate.org/projects/circuitpython/main/pt_BR/ --- locale/pt_BR.po | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/locale/pt_BR.po b/locale/pt_BR.po index f2c4a80697..4bc237038b 100644 --- a/locale/pt_BR.po +++ b/locale/pt_BR.po @@ -6,7 +6,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-01-04 12:55-0600\n" -"PO-Revision-Date: 2022-02-11 10:58+0000\n" +"PO-Revision-Date: 2022-02-15 18:42+0000\n" "Last-Translator: Wellington Terumi Uemura \n" "Language-Team: \n" "Language: pt_BR\n" @@ -3729,7 +3729,7 @@ msgstr "a matriz não é definitiva positiva" #: shared-bindings/wifi/Radio.c msgid "max_connections must be between 0 and 10" -msgstr "" +msgstr "max_connections deve estar entre 0 e 10" #: ports/espressif/common-hal/_bleio/Descriptor.c #: ports/nrf/common-hal/_bleio/Characteristic.c From 860f7931d510246256a6c1b3d90844033d120505 Mon Sep 17 00:00:00 2001 From: Jeff Epler Date: Tue, 15 Feb 2022 14:08:28 -0600 Subject: [PATCH 14/14] Fix case of compress_max_bits >8 --- supervisor/shared/translate.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/supervisor/shared/translate.c b/supervisor/shared/translate.c index a14fa5c728..674df7579a 100644 --- a/supervisor/shared/translate.c +++ b/supervisor/shared/translate.c @@ -87,11 +87,11 @@ STATIC int put_utf8(char *buf, int u) { } uint16_t decompress_length(const compressed_string_t *compressed) { - if (compress_max_length_bits <= 8) { - return 1 + (compressed->data >> (8 - compress_max_length_bits)); - } else { - return 1 + ((compressed->data * 256 + compressed->tail[0]) >> (16 - compress_max_length_bits)); - } + #if (compress_max_length_bits <= 8) + return 1 + (compressed->data >> (8 - compress_max_length_bits)); + #else + return 1 + ((compressed->data * 256 + compressed->tail[0]) >> (16 - compress_max_length_bits)); + #endif } char *decompress(const compressed_string_t *compressed, char *decompressed) {