diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 22365d0f41..65f61ebb5f 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -52,5 +52,3 @@ TimeoutError: Clock stretch too long - -Removing [this](url) line resolves the issue. diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 1a74173751..18bcb67c23 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -38,7 +38,7 @@ jobs: sudo apt-get update sudo apt-get install -y eatmydata sudo eatmydata apt-get install -y gettext librsvg2-bin mingw-w64 latexmk texlive-fonts-recommended texlive-latex-recommended texlive-latex-extra - pip install requests sh click setuptools cpp-coveralls "Sphinx<4" sphinx-rtd-theme recommonmark sphinx-autoapi sphinxcontrib-svg2pdfconverter polib pyyaml astroid isort black awscli mypy + pip install -r requirements-dev.txt - name: Versions run: | gcc --version @@ -132,15 +132,6 @@ jobs: env: GITHUB_CONTEXT: ${{ toJson(github) }} run: echo "$GITHUB_CONTEXT" - - name: Install dependencies - run: | - brew install gettext - echo >>$GITHUB_PATH /usr/local/opt/gettext/bin - - name: Versions - run: | - gcc --version - python3 --version - msgfmt --version - uses: actions/checkout@v2.2.0 with: submodules: true @@ -150,6 +141,15 @@ jobs: run: | git describe --dirty --tags echo >>$GITHUB_ENV CP_VERSION=$(git describe --dirty --tags) + - name: Install dependencies + run: | + brew install gettext + echo >>$GITHUB_PATH /usr/local/opt/gettext/bin + - name: Versions + run: | + gcc --version + python3 --version + msgfmt --version - name: Build mpy-cross run: make -C mpy-cross -j2 - uses: actions/upload-artifact@v2 @@ -178,6 +178,7 @@ jobs: - "TG-Watch" - "adafruit_feather_rp2040" - "adafruit_itsybitsy_rp2040" + - "adafruit_qtpy_rp2040" - "aloriumtech_evo_m51" - "aramcon_badge_2019" - "arduino_mkr1300" @@ -189,6 +190,7 @@ jobs: - "bastble" - "bdmicro_vina_d21" - "bdmicro_vina_d51" + - "bdmicro_vina_d51_pcb7" - "bless_dev_board_multi_sensor" - "blm_badge" - "capablerobot_usbhub" @@ -238,6 +240,7 @@ jobs: - "hallowing_m0_express" - "hallowing_m4_express" - "hiibot_bluefi" + - "huntercat_nfc" - "ikigaisense_vita" - "imxrt1010_evk" - "imxrt1020_evk" @@ -299,7 +302,6 @@ jobs: - "pyruler" - "qtpy_m0" - "qtpy_m0_haxpress" - - "qtpy_rp2040" - "raspberry_pi_pico" - "raytac_mdbt50q-db-40" - "robohatmm1_m4" @@ -308,6 +310,7 @@ jobs: - "same54_xplained" - "seeeduino_wio_terminal" - "seeeduino_xiao" + - "sensebox_mcu" - "serpente" - "shirtty" - "silicognition-m4-shim" @@ -355,10 +358,15 @@ jobs: uses: actions/setup-python@v1 with: python-version: 3.8 + - uses: actions/checkout@v2.2.0 + with: + submodules: true + fetch-depth: 0 + - run: git fetch --recurse-submodules=no https://github.com/adafruit/circuitpython refs/tags/*:refs/tags/* - name: Install deps run: | sudo apt-get install -y gettext - pip install requests sh click setuptools awscli + pip install -r requirements-dev.txt wget --no-verbose https://adafruit-circuit-python.s3.amazonaws.com/gcc-arm-none-eabi-10-2020-q4-major-x86_64-linux.tar.bz2 sudo tar -C /usr --strip-components=1 -xaf gcc-arm-none-eabi-10-2020-q4-major-x86_64-linux.tar.bz2 - name: Versions @@ -366,11 +374,6 @@ jobs: gcc --version arm-none-eabi-gcc --version python3 --version - - uses: actions/checkout@v2.2.0 - with: - submodules: true - fetch-depth: 0 - - run: git fetch --recurse-submodules=no https://github.com/adafruit/circuitpython refs/tags/*:refs/tags/* - name: mpy-cross run: make -C mpy-cross -j2 - name: build @@ -404,6 +407,11 @@ jobs: uses: actions/setup-python@v1 with: python-version: 3.8 + - uses: actions/checkout@v2.2.0 + with: + submodules: true + fetch-depth: 0 + - run: git fetch --recurse-submodules=no https://github.com/adafruit/circuitpython refs/tags/*:refs/tags/* - name: Install deps run: | sudo apt-get install -y gettext @@ -415,11 +423,6 @@ jobs: gcc --version riscv64-unknown-elf-gcc --version python3 --version - - uses: actions/checkout@v2.2.0 - with: - submodules: true - fetch-depth: 0 - - run: git fetch --recurse-submodules=no https://github.com/adafruit/circuitpython refs/tags/*:refs/tags/* - name: mpy-cross run: make -C mpy-cross -j2 - name: build @@ -450,6 +453,7 @@ jobs: - "adafruit_funhouse" - "adafruit_magtag_2.9_grayscale" - "adafruit_metro_esp32s2" + - "artisense_rd00" - "electroniccats_bastwifi" - "espressif_kaluga_1" - "espressif_saola_1_wroom" @@ -500,7 +504,7 @@ jobs: - name: Install CircuitPython deps run: | source $IDF_PATH/export.sh - pip install requests sh click setuptools awscli + pip install -r requirements-dev.txt sudo apt-get install -y gettext ninja-build env: IDF_PATH: ${{ github.workspace }}/ports/esp32s2/esp-idf diff --git a/.github/workflows/create_website_pr.yml b/.github/workflows/create_website_pr.yml index c8aca30e4a..97c543da0d 100644 --- a/.github/workflows/create_website_pr.yml +++ b/.github/workflows/create_website_pr.yml @@ -16,21 +16,21 @@ jobs: env: GITHUB_CONTEXT: ${{ toJson(github) }} run: echo "$GITHUB_CONTEXT" + - uses: actions/checkout@v2.2.0 + with: + submodules: true + fetch-depth: 0 - name: Set up Python 3.8 uses: actions/setup-python@v1 with: python-version: 3.8 - name: Install deps run: | - pip install requests sh click + pip install -r requirements-dev.txt - name: Versions run: | gcc --version python3 --version - - uses: actions/checkout@v2.2.0 - with: - submodules: true - fetch-depth: 0 - run: git fetch --recurse-submodules=no https://github.com/adafruit/circuitpython refs/tags/*:refs/tags/* - name: CircuitPython version run: git describe --dirty --tags diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml index 894e28c0fe..65d5feb68e 100644 --- a/.github/workflows/pre-commit.yml +++ b/.github/workflows/pre-commit.yml @@ -18,7 +18,7 @@ jobs: run: | sudo apt-add-repository -y -u ppa:pybricks/ppa sudo apt-get install -y black gettext uncrustify - pip3 install polib + pip3 install -r requirements-dev.txt - name: Populate selected submodules run: git submodule update --init extmod/ulab - name: Set PY diff --git a/.gitmodules b/.gitmodules index 99de2c9186..52abb02a99 100644 --- a/.gitmodules +++ b/.gitmodules @@ -173,4 +173,8 @@ url = https://github.com/adafruit/Adafruit_CircuitPython_LC709203F [submodule "ports/raspberrypi/sdk"] path = ports/raspberrypi/sdk - url = https://github.com/raspberrypi/pico-sdk.git + url = https://github.com/adafruit/pico-sdk.git +[submodule "data/nvm.toml"] + path = data/nvm.toml + url = https://github.com/adafruit/nvm.toml.git + branch = main diff --git a/conf.py b/conf.py index 10bd0d9ce0..44f86f6361 100644 --- a/conf.py +++ b/conf.py @@ -154,6 +154,7 @@ exclude_patterns = ["**/build*", ".env", ".venv", ".direnv", + "data", "docs/autoapi", "docs/README.md", "drivers", @@ -283,7 +284,7 @@ html_static_path = ['docs/static'] # Add any extra paths that contain custom files (such as robots.txt or # .htaccess) here, relative to this directory. These files are copied # directly to the root of the documentation. -html_extra_path = ["docs/robots.txt"] +#html_extra_path = [] # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, # using the given strftime format. diff --git a/data/nvm.toml b/data/nvm.toml new file mode 160000 index 0000000000..9b4a5241d8 --- /dev/null +++ b/data/nvm.toml @@ -0,0 +1 @@ +Subproject commit 9b4a5241d8c3310b31a7925a4f2160743890a2e4 diff --git a/docs/robots.txt b/docs/robots.txt deleted file mode 100644 index ad3189d42c..0000000000 --- a/docs/robots.txt +++ /dev/null @@ -1,6 +0,0 @@ -User-agent: * -Allow: /*/latest/ -Allow: /en/latest/ # Fallback for bots that don't understand wildcards -Allow: /*/6.0.x/ -Allow: /en/6.0.x/ # Fallback for bots that don't understand wildcards -Disallow: / diff --git a/docs/shared_bindings_matrix.py b/docs/shared_bindings_matrix.py index e62b1d2186..e87769f06c 100644 --- a/docs/shared_bindings_matrix.py +++ b/docs/shared_bindings_matrix.py @@ -32,6 +32,39 @@ from concurrent.futures import ThreadPoolExecutor SUPPORTED_PORTS = ['atmel-samd', 'cxd56', 'esp32s2', 'litex', 'mimxrt10xx', 'nrf', 'raspberrypi', 'stm'] +aliases_by_board = { + "circuitplayground_express": [ + "circuitplayground_express_4h", + "circuitplayground_express_digikey_pycon2019", + ], + "pybadge": ["edgebadge"], + "pyportal": ["pyportal_pynt"], + "gemma_m0": ["gemma_m0_pycon2018"], + "pewpew10": ["pewpew13"], +} + +aliases_brand_names = { + "circuitplayground_express_4h": + "Adafruit Circuit Playground Express 4-H", + "circuitplayground_express_digikey_pycon2019": + "Circuit Playground Express Digi-Key PyCon 2019", + "edgebadge": + "Adafruit EdgeBadge", + "pyportal_pynt": + "Adafruit PyPortal Pynt", + "gemma_m0_pycon2018": + "Adafruit Gemma M0 PyCon 2018", + "pewpew13": + "PewPew 13", +} + +additional_modules = { + "fontio": "CIRCUITPY_DISPLAYIO", + "terminalio": "CIRCUITPY_DISPLAYIO", + # "socket": "CIRCUITPY_NETWORK", + "adafruit_bus_device": "CIRCUITPY_BUSDEVICE", +} + def get_circuitpython_root_dir(): """ The path to the root './circuitpython' directory """ @@ -71,8 +104,11 @@ def build_module_map(): full_build = False for module in modules: full_name = module - search_name = module.lstrip("_") - re_pattern = "CIRCUITPY_{}\s*\??=\s*(.+)".format(search_name.upper()) + if module in additional_modules: + search_identifier = additional_modules[module] + else: + search_identifier = 'CIRCUITPY_'+module.lstrip("_").upper() + re_pattern = f"{re.escape(search_identifier)}\s*\??=\s*(.+)" find_config = re.findall(re_pattern, configs) if not find_config: continue @@ -84,11 +120,12 @@ def build_module_map(): else: default_val = "None" - base[search_name] = { + base[module] = { "name": full_name, "full_build": str(full_build), "default_value": default_val, - "excluded": {} + "excluded": {}, + "key": search_identifier, } return base @@ -164,14 +201,28 @@ def support_matrix_by_board(use_branded_name=True): board_modules = [] for module in base: - key = f'CIRCUITPY_{module.upper()}' + key = base[module]['key'] if int(lookup_setting(settings, key, '0')): board_modules.append(base[module]['name']) + board_modules.sort() - return (board_name, sorted(board_modules)) + # generate alias boards too + board_matrix = [(board_name, board_modules)] + if entry.name in aliases_by_board: + for alias in aliases_by_board[entry.name]: + if use_branded_name: + if alias in aliases_brand_names: + alias = aliases_brand_names[alias] + else: + alias = alias.replace("_"," ").title() + board_matrix.append( (alias, board_modules) ) + + return board_matrix # this is now a list of (board,modules) executor = ThreadPoolExecutor(max_workers=os.cpu_count()) - boards = dict(sorted(executor.map(support_matrix, all_ports_all_boards()))) + mapped_exec = executor.map(support_matrix, all_ports_all_boards()) + # flatmap with comprehensions + boards = dict(sorted([board for matrix in mapped_exec for board in matrix])) #print(json.dumps(boards, indent=2)) return boards diff --git a/extmod/modure.c b/extmod/modure.c index e9aff9b270..0238c196b6 100644 --- a/extmod/modure.c +++ b/extmod/modure.c @@ -18,7 +18,9 @@ #include "re1.5/re1.5.h" +#if CIRCUITPY_RE_DEBUG #define FLAG_DEBUG 0x1000 +#endif typedef struct _mp_obj_re_t { mp_obj_base_t base; @@ -401,18 +403,24 @@ STATIC mp_obj_t mod_re_compile(size_t n_args, const mp_obj_t *args) { } mp_obj_re_t *o = m_new_obj_var(mp_obj_re_t, char, size); o->base.type = &re_type; + #if CIRCUITPY_RE_DEBUG int flags = 0; if (n_args > 1) { flags = mp_obj_get_int(args[1]); } + #else + (void)n_args; + #endif int error = re1_5_compilecode(&o->re, re_str); if (error != 0) { error: mp_raise_ValueError(translate("Error in regex")); } + #if CIRCUITPY_RE_DEBUG if (flags & FLAG_DEBUG) { re1_5_dumpcode(&o->re); } + #endif return MP_OBJ_FROM_PTR(o); } MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_re_compile_obj, 1, 2, mod_re_compile); @@ -456,7 +464,9 @@ STATIC const mp_rom_map_elem_t mp_module_re_globals_table[] = { #if MICROPY_PY_URE_SUB { MP_ROM_QSTR(MP_QSTR_sub), MP_ROM_PTR(&mod_re_sub_obj) }, #endif + #if CIRCUITPY_RE_DEBUG { MP_ROM_QSTR(MP_QSTR_DEBUG), MP_ROM_INT(FLAG_DEBUG) }, + #endif }; STATIC MP_DEFINE_CONST_DICT(mp_module_re_globals, mp_module_re_globals_table); @@ -471,7 +481,9 @@ const mp_obj_module_t mp_module_ure = { #define re1_5_fatal(x) assert(!x) #include "re1.5/compilecode.c" +#if CIRCUITPY_RE_DEBUG #include "re1.5/dumpcode.c" +#endif #include "re1.5/recursiveloop.c" #include "re1.5/charclass.c" diff --git a/extmod/re1.5/compilecode.c b/extmod/re1.5/compilecode.c index 01d3d14988..81c0bceef7 100644 --- a/extmod/re1.5/compilecode.c +++ b/extmod/re1.5/compilecode.c @@ -8,9 +8,9 @@ ((code ? memmove(code + at + num, code + at, pc - at) : 0), pc += num) #define REL(at, to) (to - at - 2) #define EMIT(at, byte) (code ? (code[at] = byte) : (at)) +#define EMIT_CHECKED(at, byte) (_emit_checked(at, code, byte, &err)) #define PC (prog->bytelen) - static char unescape(char c) { switch (c) { case 'a': @@ -33,9 +33,17 @@ static char unescape(char c) { } +static void _emit_checked(int at, char *code, int val, bool *err) { + *err |= val != (int8_t)val; + if (code) { + code[at] = val; + } +} + static const char *_compilecode(const char *re, ByteProg *prog, int sizecode) { char *code = sizecode ? NULL : prog->insts; + bool err = false; int start = PC; int term = PC; int alt_label = 0; @@ -96,7 +104,7 @@ static const char *_compilecode(const char *re, ByteProg *prog, int sizecode) EMIT(PC++, *re); } } - EMIT(term + 1, cnt); + EMIT_CHECKED(term + 1, cnt); break; } case '(': { @@ -107,7 +115,7 @@ static const char *_compilecode(const char *re, ByteProg *prog, int sizecode) if (capture) { sub = ++prog->sub; EMIT(PC++, Save); - EMIT(PC++, 2 * sub); + EMIT_CHECKED(PC++, 2 * sub); prog->len++; } else { re += 2; @@ -118,7 +126,7 @@ static const char *_compilecode(const char *re, ByteProg *prog, int sizecode) if (capture) { EMIT(PC++, Save); - EMIT(PC++, 2 * sub + 1); + EMIT_CHECKED(PC++, 2 * sub + 1); prog->len++; } @@ -133,7 +141,7 @@ static const char *_compilecode(const char *re, ByteProg *prog, int sizecode) } else { EMIT(term, Split); } - EMIT(term + 1, REL(term, PC)); + EMIT_CHECKED(term + 1, REL(term, PC)); prog->len++; term = PC; break; @@ -141,7 +149,7 @@ static const char *_compilecode(const char *re, ByteProg *prog, int sizecode) if (PC == term) return NULL; // nothing to repeat INSERT_CODE(term, 2, PC); EMIT(PC, Jmp); - EMIT(PC + 1, REL(PC, term)); + EMIT_CHECKED(PC + 1, REL(PC, term)); PC += 2; if (re[1] == '?') { EMIT(term, RSplit); @@ -149,7 +157,7 @@ static const char *_compilecode(const char *re, ByteProg *prog, int sizecode) } else { EMIT(term, Split); } - EMIT(term + 1, REL(term, PC)); + EMIT_CHECKED(term + 1, REL(term, PC)); prog->len += 2; term = PC; break; @@ -161,20 +169,20 @@ static const char *_compilecode(const char *re, ByteProg *prog, int sizecode) } else { EMIT(PC, RSplit); } - EMIT(PC + 1, REL(PC, term)); + EMIT_CHECKED(PC + 1, REL(PC, term)); PC += 2; prog->len++; term = PC; break; case '|': if (alt_label) { - EMIT(alt_label, REL(alt_label, PC) + 1); + EMIT_CHECKED(alt_label, REL(alt_label, PC) + 1); } INSERT_CODE(start, 2, PC); EMIT(PC++, Jmp); alt_label = PC++; EMIT(start, Split); - EMIT(start + 1, REL(start, PC)); + EMIT_CHECKED(start + 1, REL(start, PC)); prog->len += 2; term = PC; break; @@ -192,9 +200,9 @@ static const char *_compilecode(const char *re, ByteProg *prog, int sizecode) } if (alt_label) { - EMIT(alt_label, REL(alt_label, PC) + 1); + EMIT_CHECKED(alt_label, REL(alt_label, PC) + 1); } - return re; + return err ? NULL : re; } int re1_5_sizecode(const char *re) diff --git a/extmod/ulab b/extmod/ulab index b64fa6d4c7..ef65415b55 160000 --- a/extmod/ulab +++ b/extmod/ulab @@ -1 +1 @@ -Subproject commit b64fa6d4c73287edef9ccf09cfd6ec5009f9628b +Subproject commit ef65415b5503ae71cc0a9064197f2e3fa5365d74 diff --git a/lib/tinyusb b/lib/tinyusb index 2adb7e7193..ab4d30fd6b 160000 --- a/lib/tinyusb +++ b/lib/tinyusb @@ -1 +1 @@ -Subproject commit 2adb7e719316b12c53a907153cfa0056db1abd70 +Subproject commit ab4d30fd6bca02c73eb9b4ff82db0b2b0f403344 diff --git a/locale/ID.po b/locale/ID.po index 495c1337b8..52065664d2 100644 --- a/locale/ID.po +++ b/locale/ID.po @@ -6,15 +6,15 @@ 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: 2021-01-15 19:49+0000\n" -"Last-Translator: oon arfiandwi \n" +"PO-Revision-Date: 2021-04-07 12:23+0000\n" +"Last-Translator: Reza Almanda \n" "Language-Team: LANGUAGE \n" "Language: ID\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 4.5-dev\n" +"X-Generator: Weblate 4.6-dev\n" #: main.c msgid "" @@ -29,6 +29,8 @@ msgid "" "\n" "Code stopped by auto-reload.\n" msgstr "" +"\n" +"Kode berhenti oleh auto-reload.\n" #: supervisor/shared/safe_mode.c msgid "" @@ -416,6 +418,10 @@ msgstr "AnalogOut hanya 16 bit. Nilai harus kurang dari 65536." msgid "AnalogOut not supported on given pin" msgstr "pin yang dipakai tidak mendukung AnalogOut" +#: ports/stm/common-hal/audiopwmio/PWMAudioOut.c +msgid "Another PWMAudioOut is already active" +msgstr "" + #: ports/atmel-samd/common-hal/pulseio/PulseOut.c #: ports/cxd56/common-hal/pulseio/PulseOut.c msgid "Another send is already active" @@ -439,8 +445,8 @@ msgid "Attempt to allocate %d blocks" msgstr "" #: supervisor/shared/safe_mode.c -msgid "Attempted heap allocation when MicroPython VM not running." -msgstr "Mencoba alokasi heap ketika MicroPython VM tidak berjalan." +msgid "Attempted heap allocation when VM not running." +msgstr "" #: shared-bindings/wifi/Radio.c msgid "Authentication failure" @@ -532,6 +538,7 @@ msgid "Buffer is too small" msgstr "Buffer terlalu kecil" #: ports/nrf/common-hal/audiopwmio/PWMAudioOut.c +#: ports/stm/common-hal/audiopwmio/PWMAudioOut.c #, c-format msgid "Buffer length %d too big. It must be less than %d" msgstr "Panjang buffer %d terlalu besar. Itu harus kurang dari %d" @@ -847,9 +854,8 @@ msgid "Data chunk must follow fmt chunk" msgstr "Potongan data harus mengikuti fmt chunk" #: ports/nrf/common-hal/_bleio/Adapter.c -#, fuzzy msgid "Data too large for advertisement packet" -msgstr "Tidak bisa menyesuaikan data ke dalam paket advertisment" +msgstr "Data terlalu besar untuk paket advertisment" #: shared-bindings/audiobusio/PDMIn.c msgid "Destination capacity is smaller than destination_length." @@ -948,11 +954,11 @@ msgstr "Diharapkan tuple dengan panjang %d, didapatkan %d" msgid "Extended advertisements with scan response not supported." msgstr "Penyebaran yang diperluas dengan respon pindai tidak didukung." -#: extmod/ulab/code/fft/fft.c +#: extmod/ulab/code/numpy/fft/fft_tools.c msgid "FFT is defined for ndarrays only" msgstr "FFT didefinisikan hanya untuk ndarrays" -#: extmod/ulab/code/fft/fft.c +#: extmod/ulab/code/numpy/fft/fft_tools.c msgid "FFT is implemented for linear arrays only" msgstr "" @@ -965,9 +971,9 @@ msgid "Failed sending command." msgstr "Gagal mengirim perintah." #: ports/nrf/sd_mutex.c -#, fuzzy, c-format +#, c-format msgid "Failed to acquire mutex, err 0x%04x" -msgstr "Gagal untuk mendapatkan mutex, status: 0x%08lX" +msgstr "Gagal memperoleh mutex, err 0x%04x" #: ports/mimxrt10xx/common-hal/busio/UART.c ports/nrf/common-hal/busio/UART.c #: ports/raspberrypi/common-hal/busio/UART.c @@ -993,6 +999,10 @@ msgstr "" msgid "Failed to allocate wifi scan memory" msgstr "" +#: ports/stm/common-hal/audiopwmio/PWMAudioOut.c +msgid "Failed to buffer the sample" +msgstr "" + #: ports/nrf/common-hal/_bleio/Adapter.c msgid "Failed to connect: internal error" msgstr "Gagal terhubung: kesalahan internal" @@ -1010,14 +1020,18 @@ msgid "Failed to parse MP3 file" msgstr "Gagal mengurai file MP3" #: ports/nrf/sd_mutex.c -#, fuzzy, c-format +#, c-format msgid "Failed to release mutex, err 0x%04x" -msgstr "Gagal untuk melepaskan mutex, status: 0x%08lX" +msgstr "Gagal melepaskan mutex, err 0x%04x" #: supervisor/shared/safe_mode.c msgid "Failed to write internal flash." msgstr "Gagal menulis flash internal." +#: supervisor/shared/safe_mode.c +msgid "Fatal error." +msgstr "" + #: py/moduerrno.c msgid "File exists" msgstr "File sudah ada" @@ -1192,6 +1206,7 @@ msgstr "" #: ports/atmel-samd/common-hal/audiobusio/I2SOut.c #: ports/atmel-samd/common-hal/audiobusio/PDMIn.c +#: ports/mimxrt10xx/common-hal/busio/UART.c msgid "Invalid %q pin" msgstr "%q pada tidak valid" @@ -1219,7 +1234,9 @@ msgid "Invalid DAC pin supplied" msgstr "Pin DAC yang diberikan tidak valid" #: ports/atmel-samd/common-hal/pwmio/PWMOut.c -#: ports/cxd56/common-hal/pwmio/PWMOut.c ports/nrf/common-hal/pwmio/PWMOut.c +#: ports/cxd56/common-hal/pwmio/PWMOut.c +#: ports/mimxrt10xx/common-hal/pwmio/PWMOut.c +#: ports/nrf/common-hal/pwmio/PWMOut.c #: ports/raspberrypi/common-hal/pwmio/PWMOut.c shared-bindings/pwmio/PWMOut.c msgid "Invalid PWM frequency" msgstr "Frekuensi PWM tidak valid" @@ -1407,14 +1424,6 @@ msgstr "Nilai x maksimum ketika dicerminkan adalah %d" msgid "Messages limited to 8 bytes" msgstr "" -#: supervisor/shared/safe_mode.c -msgid "MicroPython NLR jump failed. Likely memory corruption." -msgstr "Lompatan NLR MicroPython gagal. Kemungkinan kerusakan memori." - -#: supervisor/shared/safe_mode.c -msgid "MicroPython fatal error." -msgstr "Kesalahan fatal MicroPython." - #: shared-bindings/audiobusio/PDMIn.c msgid "Microphone startup delay must be in range 0.0 to 1.0" msgstr "Penundaan mulai mikrofon harus dalam kisaran 0,0 hingga 1,0" @@ -1466,6 +1475,10 @@ msgstr "Harus menyediakan pin MISO atau MOSI" msgid "Must use a multiple of 6 rgb pins, not %d" msgstr "Harus menggunakan kelipatan 6 pin rgb, bukan %d" +#: supervisor/shared/safe_mode.c +msgid "NLR jump failed. Likely memory corruption." +msgstr "" + #: ports/esp32s2/common-hal/nvm/ByteArray.c msgid "NVS Error" msgstr "" @@ -1599,8 +1612,12 @@ msgid "No timer available" msgstr "Penghitung waktu tidak tersedia" #: supervisor/shared/safe_mode.c -msgid "Nordic Soft Device failure assertion." -msgstr "Pernyataan kegagalan Perangkat Lunak Nordic." +msgid "Nordic system firmware failure assertion." +msgstr "" + +#: ports/nrf/common-hal/_bleio/__init__.c +msgid "Nordic system firmware out of memory" +msgstr "" #: shared-bindings/ipaddress/IPv4Address.c shared-bindings/ipaddress/__init__.c msgid "Not a valid IP string" @@ -1608,9 +1625,8 @@ msgstr "" #: ports/nrf/common-hal/_bleio/__init__.c #: shared-bindings/_bleio/CharacteristicBuffer.c -#, fuzzy msgid "Not connected" -msgstr "Tidak dapat menyambungkan ke AP" +msgstr "Tidak terhubung" #: shared-bindings/audiobusio/I2SOut.c shared-bindings/audioio/AudioOut.c #: shared-bindings/audiopwmio/PWMAudioOut.c @@ -1619,7 +1635,7 @@ msgstr "Tidak berfungsi" #: main.c msgid "Not running saved code.\n" -msgstr "" +msgstr "Tidak menjalankan kode yang disimpan.\n" #: shared-bindings/_bleio/__init__.c msgid "Not settable" @@ -1831,6 +1847,8 @@ msgstr "Buffer awalan harus ada di heap" #: main.c msgid "Press any key to enter the REPL. Use CTRL-D to reload.\n" msgstr "" +"Tekan sembarang tombol untuk masuk ke REPL. Tekan CTRL-D untuk memuat " +"ulang.\n" #: main.c msgid "Pretending to deep sleep until alarm, CTRL-C or file write.\n" @@ -1909,10 +1927,9 @@ msgstr "Baca-saja" msgid "Read-only filesystem" msgstr "sistem file (filesystem) bersifat Read-only" -#: shared-module/bitmaptools/__init__.c shared-module/displayio/Bitmap.c -#, fuzzy +#: shared-module/displayio/Bitmap.c msgid "Read-only object" -msgstr "sistem file (filesystem) bersifat Read-only" +msgstr "Objek Read-only" #: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c msgid "Received response was invalid" @@ -1985,14 +2002,6 @@ msgstr "Nilai sampel terlalu tinggi. Nilai harus kurang dari %d" msgid "Scan already in progess. Stop with stop_scan." msgstr "Pindai sudah dalam proses. Hentikan dengan stop_scan." -#: ports/mimxrt10xx/common-hal/busio/UART.c -msgid "Selected CTS pin not valid" -msgstr "Pin CTS yang dipilih tidak valid" - -#: ports/mimxrt10xx/common-hal/busio/UART.c -msgid "Selected RTS pin not valid" -msgstr "Pin RTS yang dipilih tidak valid" - #: ports/atmel-samd/common-hal/audiobusio/I2SOut.c #: ports/atmel-samd/common-hal/audiobusio/PDMIn.c msgid "Serializer in use" @@ -2277,8 +2286,8 @@ msgstr "Kesalahan keamanan tidak dikenal: 0x%04x" #: ports/nrf/common-hal/_bleio/__init__.c #, c-format -msgid "Unknown soft device error: %04x" -msgstr "Kesalahan perangkat lunak tidak dikenal: %04x" +msgid "Unknown system firmware error: %04x" +msgstr "" #: shared-bindings/_pixelbuf/PixelBuf.c #, c-format @@ -2300,9 +2309,8 @@ msgid "Unsupported baudrate" msgstr "Baudrate tidak didukung" #: shared-module/displayio/display_core.c -#, fuzzy msgid "Unsupported display bus type" -msgstr "Baudrate tidak didukung" +msgstr "Tipe bus tampilan tidak didukung" #: shared-module/audiocore/WaveFile.c msgid "Unsupported format" @@ -2440,11 +2448,11 @@ msgstr "alamatnya kosong" msgid "arg is an empty sequence" msgstr "arg berisi urutan kosong" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "argsort argument must be an ndarray" msgstr "Argumen argsort harus berupa ndarray" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "argsort is not implemented for flattened arrays" msgstr "" @@ -2452,10 +2460,6 @@ msgstr "" msgid "argument has wrong type" msgstr "argumen memiliki tipe yang salah" -#: extmod/ulab/code/linalg/linalg.c -msgid "argument must be ndarray" -msgstr "" - #: py/argcheck.c shared-bindings/_stage/__init__.c #: shared-bindings/digitalio/DigitalInOut.c shared-bindings/gamepad/GamePad.c msgid "argument num/types mismatch" @@ -2465,7 +2469,8 @@ msgstr "argumen num/types tidak cocok" msgid "argument should be a '%q' not a '%q'" msgstr "argumen harus berupa '%q' bukan '%q'" -#: extmod/ulab/code/linalg/linalg.c extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c +#: extmod/ulab/code/numpy/transform/transform.c msgid "arguments must be ndarrays" msgstr "argumen harus berupa ndarrays" @@ -2478,11 +2483,11 @@ msgstr "" msgid "array/bytes required on right side" msgstr "diperlukan array/byte di sisi kanan" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "attempt to get (arg)min/(arg)max of empty sequence" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "attempt to get argmin/argmax of an empty sequence" msgstr "berusaha mendapatkan argmin/argmax dari urutan kosong" @@ -2490,15 +2495,15 @@ msgstr "berusaha mendapatkan argmin/argmax dari urutan kosong" msgid "attributes not supported yet" msgstr "atribut belum didukung" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "axis is out of bounds" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c extmod/ulab/code/ulab_tools.c msgid "axis must be None, or an integer" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "axis too long" msgstr "" @@ -2534,7 +2539,7 @@ msgstr "" msgid "branch not in range" msgstr "" -#: extmod/ulab/code/ulab_create.c +#: extmod/ulab/code/ulab_create.c extmod/ulab/code/utils/utils.c msgid "buffer is smaller than requested size" msgstr "" @@ -2542,14 +2547,13 @@ msgstr "" msgid "buffer must be a bytes-like object" msgstr "" -#: extmod/ulab/code/ulab_create.c +#: extmod/ulab/code/ulab_create.c extmod/ulab/code/utils/utils.c msgid "buffer size must be a multiple of element size" msgstr "" #: shared-module/struct/__init__.c -#, fuzzy msgid "buffer size must match format" -msgstr "buffers harus mempunyai panjang yang sama" +msgstr "ukuran buffer harus sesuai dengan format" #: shared-bindings/bitbangio/SPI.c shared-bindings/busio/SPI.c msgid "buffer slices must be of equal length" @@ -2800,19 +2804,19 @@ msgstr "" msgid "conversion to object" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/numpy/filter/filter.c msgid "convolve arguments must be linear arrays" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/numpy/filter/filter.c msgid "convolve arguments must be ndarrays" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/numpy/filter/filter.c msgid "convolve arguments must not be empty" msgstr "" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "could not invert Vandermonde matrix" msgstr "" @@ -2820,15 +2824,15 @@ msgstr "" msgid "couldn't determine SD card version" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "cross is defined for 1D arrays of length 3" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "data must be iterable" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "data must be of equal length" msgstr "" @@ -2865,15 +2869,15 @@ msgstr "" msgid "dict update sequence has wrong length" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "diff argument must be an ndarray" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "differentiation order out of range" msgstr "" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/transform/transform.c msgid "dimensions do not match" msgstr "" @@ -2992,11 +2996,11 @@ msgstr "" msgid "filesystem must provide mount method" msgstr "" -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "first argument must be a callable" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "first argument must be a function" msgstr "" @@ -3004,11 +3008,7 @@ msgstr "" msgid "first argument must be a tuple of ndarrays" msgstr "" -#: extmod/ulab/code/ndarray.c -msgid "first argument must be an iterable" -msgstr "" - -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "first argument must be an ndarray" msgstr "" @@ -3020,7 +3020,7 @@ msgstr "" msgid "flattening order must be either 'C', or 'F'" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "flip argument must be an ndarray" msgstr "" @@ -3053,7 +3053,7 @@ msgstr "fungsi diharapkan setidaknya %d argumen, hanya mendapatkan %d" msgid "function got multiple values for argument '%q'" msgstr "fungsi mendapatkan nilai ganda untuk argumen '%q'" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "function has the same sign at the ends of interval" msgstr "" @@ -3128,7 +3128,7 @@ msgstr "lapisan (padding) tidak benar" msgid "index is out of bounds" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c extmod/ulab/code/ulab_tools.c #: ports/esp32s2/common-hal/pulseio/PulseIn.c py/obj.c #: shared-bindings/bitmaptools/__init__.c msgid "index out of range" @@ -3142,7 +3142,7 @@ msgstr "" msgid "indices must be integers, slices, or Boolean lists" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "initial values must be iterable" msgstr "" @@ -3162,7 +3162,7 @@ msgstr "" msgid "input argument must be an integer, a tuple, or a list" msgstr "" -#: extmod/ulab/code/fft/fft.c +#: extmod/ulab/code/numpy/fft/fft_tools.c msgid "input array length must be power of 2" msgstr "" @@ -3170,15 +3170,15 @@ msgstr "" msgid "input arrays are not compatible" msgstr "" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "input data must be an iterable" msgstr "" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/linalg/linalg.c msgid "input matrix is asymmetric" msgstr "" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/linalg/linalg.c msgid "input matrix is singular" msgstr "" @@ -3194,23 +3194,23 @@ msgstr "" msgid "input must be an ndarray" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "input must be one-dimensional" msgstr "" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/ulab_tools.c msgid "input must be square matrix" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "input must be tuple, list, range, or ndarray" msgstr "" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "input vectors must be of equal length" msgstr "" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "inputs are not iterable" msgstr "" @@ -3222,7 +3222,7 @@ msgstr "" msgid "integer required" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/numpy/approx/approx.c msgid "interp is defined for 1D arrays of equal length" msgstr "" @@ -3244,6 +3244,10 @@ msgstr "" msgid "invalid cert" msgstr "cert tidak valid" +#: py/compile.c +msgid "invalid decorator" +msgstr "" + #: extmod/uos_dupterm.c msgid "invalid dupterm index" msgstr "indeks dupterm tidak valid" @@ -3311,11 +3315,7 @@ msgstr "" msgid "issubclass() arg 2 must be a class or a tuple of classes" msgstr "" -#: extmod/ulab/code/ndarray.c -msgid "iterables are not of the same length" -msgstr "" - -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/linalg/linalg.c msgid "iterations did not converge" msgstr "" @@ -3383,7 +3383,7 @@ msgstr "" msgid "math domain error" msgstr "" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/linalg/linalg.c msgid "matrix is not positive definite" msgstr "" @@ -3405,15 +3405,15 @@ msgstr "" msgid "maximum recursion depth exceeded" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "maxiter must be > 0" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "maxiter should be > 0" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "median argument must be an ndarray" msgstr "" @@ -3434,7 +3434,7 @@ msgstr "" msgid "module not found" msgstr "modul tidak ditemukan" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "more degrees of freedom than data points" msgstr "" @@ -3552,10 +3552,6 @@ msgstr "" msgid "non-zero timeout must be >= interval" msgstr "" -#: extmod/ulab/code/linalg/linalg.c -msgid "norm is defined for 1D and 2D arrays" -msgstr "" - #: shared-bindings/_bleio/UUID.c msgid "not a 128-bit UUID" msgstr "" @@ -3624,7 +3620,7 @@ msgstr "" msgid "odd-length string" msgstr "panjang data string memiliki keganjilan (odd-length)" -#: extmod/ulab/code/ulab_create.c +#: extmod/ulab/code/ulab_create.c extmod/ulab/code/utils/utils.c msgid "offset is too large" msgstr "" @@ -3654,8 +3650,8 @@ msgstr "" msgid "only slices with step=1 (aka None) are supported" msgstr "" -#: extmod/ulab/code/compare/compare.c extmod/ulab/code/ndarray.c -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/ndarray.c extmod/ulab/code/numpy/compare/compare.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "operands could not be broadcast together" msgstr "" @@ -3663,7 +3659,7 @@ msgstr "" msgid "operation is implemented for 1D Boolean arrays only" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "operation is not implemented on ndarrays" msgstr "" @@ -3680,6 +3676,14 @@ msgstr "" msgid "ord() expected a character, but string of length %d found" msgstr "" +#: extmod/ulab/code/utils/utils.c +msgid "out array is too small" +msgstr "" + +#: extmod/ulab/code/utils/utils.c +msgid "out must be a float dense array" +msgstr "" + #: shared-bindings/displayio/Bitmap.c msgid "out of range of source" msgstr "" @@ -3808,7 +3812,7 @@ msgstr "antrian meluap (overflow)" msgid "raw f-strings are not implemented" msgstr "" -#: extmod/ulab/code/fft/fft.c +#: extmod/ulab/code/numpy/fft/fft_tools.c msgid "real and imaginary parts must be of equal length" msgstr "" @@ -3843,7 +3847,7 @@ msgstr "" msgid "rgb_pins[%d] is not on the same port as clock" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "roll argument must be an ndarray" msgstr "" @@ -3890,7 +3894,7 @@ msgstr "" msgid "single '}' encountered in format string" msgstr "" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/ulab_tools.c msgid "size is defined for ndarrays only" msgstr "" @@ -3914,19 +3918,19 @@ msgstr "" msgid "soft reboot\n" msgstr "memulai ulang software(soft reboot)\n" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "sort argument must be an ndarray" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "sos array must be of shape (n_section, 6)" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "sos[:, 3] should be all ones" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "sosfilt requires iterable arguments" msgstr "" @@ -4017,9 +4021,8 @@ msgid "timeout must be < 655.35 secs" msgstr "" #: shared-bindings/_bleio/CharacteristicBuffer.c -#, fuzzy msgid "timeout must be >= 0.0" -msgstr "bits harus memilki nilai 8" +msgstr "waktu habis harus >= 0,0" #: shared-module/sdcardio/SDCard.c msgid "timeout waiting for v1 card" @@ -4041,7 +4044,7 @@ msgstr "" msgid "too many arguments provided with the given format" msgstr "" -#: extmod/ulab/code/ulab_create.c +#: extmod/ulab/code/ndarray.c extmod/ulab/code/ulab_create.c msgid "too many dimensions" msgstr "" @@ -4054,11 +4057,11 @@ msgstr "" msgid "too many values to unpack (expected %d)" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/numpy/approx/approx.c msgid "trapz is defined for 1D arrays" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/numpy/approx/approx.c msgid "trapz is defined for 1D arrays of equal length" msgstr "" @@ -4229,21 +4232,22 @@ msgstr "" msgid "window must be <= interval" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "wrong axis index" -msgstr "" +msgstr "indeks sumbu salah" #: extmod/ulab/code/ulab_create.c msgid "wrong axis specified" -msgstr "" +msgstr "sumbu yang ditentukan salah" -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/numpy/compare/compare.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "wrong input type" -msgstr "" +msgstr "tipe input salah" #: extmod/ulab/code/ulab_create.c py/objstr.c msgid "wrong number of arguments" -msgstr "" +msgstr "jumlah argumen salah" #: py/runtime.c msgid "wrong number of values to unpack" @@ -4253,7 +4257,7 @@ msgstr "" msgid "wrong operand type" msgstr "" -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "wrong output type" msgstr "" @@ -4277,18 +4281,39 @@ msgstr "" msgid "zero step" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "zi must be an ndarray" -msgstr "" +msgstr "zi harus ndarray" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "zi must be of float type" -msgstr "" +msgstr "zi harus berjenis float" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "zi must be of shape (n_section, 2)" msgstr "" +#~ msgid "Attempted heap allocation when MicroPython VM not running." +#~ msgstr "Mencoba alokasi heap ketika MicroPython VM tidak berjalan." + +#~ msgid "MicroPython NLR jump failed. Likely memory corruption." +#~ msgstr "Lompatan NLR MicroPython gagal. Kemungkinan kerusakan memori." + +#~ msgid "MicroPython fatal error." +#~ msgstr "Kesalahan fatal MicroPython." + +#~ msgid "Nordic Soft Device failure assertion." +#~ msgstr "Pernyataan kegagalan Perangkat Lunak Nordic." + +#~ msgid "Unknown soft device error: %04x" +#~ msgstr "Kesalahan perangkat lunak tidak dikenal: %04x" + +#~ msgid "Selected CTS pin not valid" +#~ msgstr "Pin CTS yang dipilih tidak valid" + +#~ msgid "Selected RTS pin not valid" +#~ msgstr "Pin RTS yang dipilih tidak valid" + #~ msgid "Could not initialize channel" #~ msgstr "Tidak dapat menginisialisasi kanal" diff --git a/locale/circuitpython.pot b/locale/circuitpython.pot index 9148569ecd..54a9a072bd 100644 --- a/locale/circuitpython.pot +++ b/locale/circuitpython.pot @@ -411,6 +411,10 @@ msgstr "" msgid "AnalogOut not supported on given pin" msgstr "" +#: ports/stm/common-hal/audiopwmio/PWMAudioOut.c +msgid "Another PWMAudioOut is already active" +msgstr "" + #: ports/atmel-samd/common-hal/pulseio/PulseOut.c #: ports/cxd56/common-hal/pulseio/PulseOut.c msgid "Another send is already active" @@ -434,7 +438,7 @@ msgid "Attempt to allocate %d blocks" msgstr "" #: supervisor/shared/safe_mode.c -msgid "Attempted heap allocation when MicroPython VM not running." +msgid "Attempted heap allocation when VM not running." msgstr "" #: shared-bindings/wifi/Radio.c @@ -525,6 +529,7 @@ msgid "Buffer is too small" msgstr "" #: ports/nrf/common-hal/audiopwmio/PWMAudioOut.c +#: ports/stm/common-hal/audiopwmio/PWMAudioOut.c #, c-format msgid "Buffer length %d too big. It must be less than %d" msgstr "" @@ -929,11 +934,11 @@ msgstr "" msgid "Extended advertisements with scan response not supported." msgstr "" -#: extmod/ulab/code/fft/fft.c +#: extmod/ulab/code/numpy/fft/fft_tools.c msgid "FFT is defined for ndarrays only" msgstr "" -#: extmod/ulab/code/fft/fft.c +#: extmod/ulab/code/numpy/fft/fft_tools.c msgid "FFT is implemented for linear arrays only" msgstr "" @@ -974,6 +979,10 @@ msgstr "" msgid "Failed to allocate wifi scan memory" msgstr "" +#: ports/stm/common-hal/audiopwmio/PWMAudioOut.c +msgid "Failed to buffer the sample" +msgstr "" + #: ports/nrf/common-hal/_bleio/Adapter.c msgid "Failed to connect: internal error" msgstr "" @@ -999,6 +1008,10 @@ msgstr "" msgid "Failed to write internal flash." msgstr "" +#: supervisor/shared/safe_mode.c +msgid "Fatal error." +msgstr "" + #: py/moduerrno.c msgid "File exists" msgstr "" @@ -1171,6 +1184,7 @@ msgstr "" #: ports/atmel-samd/common-hal/audiobusio/I2SOut.c #: ports/atmel-samd/common-hal/audiobusio/PDMIn.c +#: ports/mimxrt10xx/common-hal/busio/UART.c msgid "Invalid %q pin" msgstr "" @@ -1198,7 +1212,9 @@ msgid "Invalid DAC pin supplied" msgstr "" #: ports/atmel-samd/common-hal/pwmio/PWMOut.c -#: ports/cxd56/common-hal/pwmio/PWMOut.c ports/nrf/common-hal/pwmio/PWMOut.c +#: ports/cxd56/common-hal/pwmio/PWMOut.c +#: ports/mimxrt10xx/common-hal/pwmio/PWMOut.c +#: ports/nrf/common-hal/pwmio/PWMOut.c #: ports/raspberrypi/common-hal/pwmio/PWMOut.c shared-bindings/pwmio/PWMOut.c msgid "Invalid PWM frequency" msgstr "" @@ -1386,14 +1402,6 @@ msgstr "" msgid "Messages limited to 8 bytes" msgstr "" -#: supervisor/shared/safe_mode.c -msgid "MicroPython NLR jump failed. Likely memory corruption." -msgstr "" - -#: supervisor/shared/safe_mode.c -msgid "MicroPython fatal error." -msgstr "" - #: shared-bindings/audiobusio/PDMIn.c msgid "Microphone startup delay must be in range 0.0 to 1.0" msgstr "" @@ -1445,6 +1453,10 @@ msgstr "" msgid "Must use a multiple of 6 rgb pins, not %d" msgstr "" +#: supervisor/shared/safe_mode.c +msgid "NLR jump failed. Likely memory corruption." +msgstr "" + #: ports/esp32s2/common-hal/nvm/ByteArray.c msgid "NVS Error" msgstr "" @@ -1578,7 +1590,11 @@ msgid "No timer available" msgstr "" #: supervisor/shared/safe_mode.c -msgid "Nordic Soft Device failure assertion." +msgid "Nordic system firmware failure assertion." +msgstr "" + +#: ports/nrf/common-hal/_bleio/__init__.c +msgid "Nordic system firmware out of memory" msgstr "" #: shared-bindings/ipaddress/IPv4Address.c shared-bindings/ipaddress/__init__.c @@ -1877,7 +1893,7 @@ msgstr "" msgid "Read-only filesystem" msgstr "" -#: shared-module/bitmaptools/__init__.c shared-module/displayio/Bitmap.c +#: shared-module/displayio/Bitmap.c msgid "Read-only object" msgstr "" @@ -1952,14 +1968,6 @@ msgstr "" msgid "Scan already in progess. Stop with stop_scan." msgstr "" -#: ports/mimxrt10xx/common-hal/busio/UART.c -msgid "Selected CTS pin not valid" -msgstr "" - -#: ports/mimxrt10xx/common-hal/busio/UART.c -msgid "Selected RTS pin not valid" -msgstr "" - #: ports/atmel-samd/common-hal/audiobusio/I2SOut.c #: ports/atmel-samd/common-hal/audiobusio/PDMIn.c msgid "Serializer in use" @@ -2236,7 +2244,7 @@ msgstr "" #: ports/nrf/common-hal/_bleio/__init__.c #, c-format -msgid "Unknown soft device error: %04x" +msgid "Unknown system firmware error: %04x" msgstr "" #: shared-bindings/_pixelbuf/PixelBuf.c @@ -2390,11 +2398,11 @@ msgstr "" msgid "arg is an empty sequence" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "argsort argument must be an ndarray" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "argsort is not implemented for flattened arrays" msgstr "" @@ -2402,10 +2410,6 @@ msgstr "" msgid "argument has wrong type" msgstr "" -#: extmod/ulab/code/linalg/linalg.c -msgid "argument must be ndarray" -msgstr "" - #: py/argcheck.c shared-bindings/_stage/__init__.c #: shared-bindings/digitalio/DigitalInOut.c shared-bindings/gamepad/GamePad.c msgid "argument num/types mismatch" @@ -2415,7 +2419,8 @@ msgstr "" msgid "argument should be a '%q' not a '%q'" msgstr "" -#: extmod/ulab/code/linalg/linalg.c extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c +#: extmod/ulab/code/numpy/transform/transform.c msgid "arguments must be ndarrays" msgstr "" @@ -2428,11 +2433,11 @@ msgstr "" msgid "array/bytes required on right side" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "attempt to get (arg)min/(arg)max of empty sequence" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "attempt to get argmin/argmax of an empty sequence" msgstr "" @@ -2440,15 +2445,15 @@ msgstr "" msgid "attributes not supported yet" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "axis is out of bounds" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c extmod/ulab/code/ulab_tools.c msgid "axis must be None, or an integer" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "axis too long" msgstr "" @@ -2484,7 +2489,7 @@ msgstr "" msgid "branch not in range" msgstr "" -#: extmod/ulab/code/ulab_create.c +#: extmod/ulab/code/ulab_create.c extmod/ulab/code/utils/utils.c msgid "buffer is smaller than requested size" msgstr "" @@ -2492,7 +2497,7 @@ msgstr "" msgid "buffer must be a bytes-like object" msgstr "" -#: extmod/ulab/code/ulab_create.c +#: extmod/ulab/code/ulab_create.c extmod/ulab/code/utils/utils.c msgid "buffer size must be a multiple of element size" msgstr "" @@ -2749,19 +2754,19 @@ msgstr "" msgid "conversion to object" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/numpy/filter/filter.c msgid "convolve arguments must be linear arrays" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/numpy/filter/filter.c msgid "convolve arguments must be ndarrays" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/numpy/filter/filter.c msgid "convolve arguments must not be empty" msgstr "" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "could not invert Vandermonde matrix" msgstr "" @@ -2769,15 +2774,15 @@ msgstr "" msgid "couldn't determine SD card version" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "cross is defined for 1D arrays of length 3" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "data must be iterable" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "data must be of equal length" msgstr "" @@ -2814,15 +2819,15 @@ msgstr "" msgid "dict update sequence has wrong length" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "diff argument must be an ndarray" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "differentiation order out of range" msgstr "" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/transform/transform.c msgid "dimensions do not match" msgstr "" @@ -2941,11 +2946,11 @@ msgstr "" msgid "filesystem must provide mount method" msgstr "" -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "first argument must be a callable" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "first argument must be a function" msgstr "" @@ -2953,11 +2958,7 @@ msgstr "" msgid "first argument must be a tuple of ndarrays" msgstr "" -#: extmod/ulab/code/ndarray.c -msgid "first argument must be an iterable" -msgstr "" - -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "first argument must be an ndarray" msgstr "" @@ -2969,7 +2970,7 @@ msgstr "" msgid "flattening order must be either 'C', or 'F'" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "flip argument must be an ndarray" msgstr "" @@ -3002,7 +3003,7 @@ msgstr "" msgid "function got multiple values for argument '%q'" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "function has the same sign at the ends of interval" msgstr "" @@ -3077,7 +3078,7 @@ msgstr "" msgid "index is out of bounds" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c extmod/ulab/code/ulab_tools.c #: ports/esp32s2/common-hal/pulseio/PulseIn.c py/obj.c #: shared-bindings/bitmaptools/__init__.c msgid "index out of range" @@ -3091,7 +3092,7 @@ msgstr "" msgid "indices must be integers, slices, or Boolean lists" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "initial values must be iterable" msgstr "" @@ -3111,7 +3112,7 @@ msgstr "" msgid "input argument must be an integer, a tuple, or a list" msgstr "" -#: extmod/ulab/code/fft/fft.c +#: extmod/ulab/code/numpy/fft/fft_tools.c msgid "input array length must be power of 2" msgstr "" @@ -3119,15 +3120,15 @@ msgstr "" msgid "input arrays are not compatible" msgstr "" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "input data must be an iterable" msgstr "" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/linalg/linalg.c msgid "input matrix is asymmetric" msgstr "" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/linalg/linalg.c msgid "input matrix is singular" msgstr "" @@ -3143,23 +3144,23 @@ msgstr "" msgid "input must be an ndarray" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "input must be one-dimensional" msgstr "" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/ulab_tools.c msgid "input must be square matrix" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "input must be tuple, list, range, or ndarray" msgstr "" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "input vectors must be of equal length" msgstr "" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "inputs are not iterable" msgstr "" @@ -3171,7 +3172,7 @@ msgstr "" msgid "integer required" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/numpy/approx/approx.c msgid "interp is defined for 1D arrays of equal length" msgstr "" @@ -3193,6 +3194,10 @@ msgstr "" msgid "invalid cert" msgstr "" +#: py/compile.c +msgid "invalid decorator" +msgstr "" + #: extmod/uos_dupterm.c msgid "invalid dupterm index" msgstr "" @@ -3260,11 +3265,7 @@ msgstr "" msgid "issubclass() arg 2 must be a class or a tuple of classes" msgstr "" -#: extmod/ulab/code/ndarray.c -msgid "iterables are not of the same length" -msgstr "" - -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/linalg/linalg.c msgid "iterations did not converge" msgstr "" @@ -3332,7 +3333,7 @@ msgstr "" msgid "math domain error" msgstr "" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/linalg/linalg.c msgid "matrix is not positive definite" msgstr "" @@ -3354,15 +3355,15 @@ msgstr "" msgid "maximum recursion depth exceeded" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "maxiter must be > 0" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "maxiter should be > 0" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "median argument must be an ndarray" msgstr "" @@ -3383,7 +3384,7 @@ msgstr "" msgid "module not found" msgstr "" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "more degrees of freedom than data points" msgstr "" @@ -3501,10 +3502,6 @@ msgstr "" msgid "non-zero timeout must be >= interval" msgstr "" -#: extmod/ulab/code/linalg/linalg.c -msgid "norm is defined for 1D and 2D arrays" -msgstr "" - #: shared-bindings/_bleio/UUID.c msgid "not a 128-bit UUID" msgstr "" @@ -3573,7 +3570,7 @@ msgstr "" msgid "odd-length string" msgstr "" -#: extmod/ulab/code/ulab_create.c +#: extmod/ulab/code/ulab_create.c extmod/ulab/code/utils/utils.c msgid "offset is too large" msgstr "" @@ -3602,8 +3599,8 @@ msgstr "" msgid "only slices with step=1 (aka None) are supported" msgstr "" -#: extmod/ulab/code/compare/compare.c extmod/ulab/code/ndarray.c -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/ndarray.c extmod/ulab/code/numpy/compare/compare.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "operands could not be broadcast together" msgstr "" @@ -3611,7 +3608,7 @@ msgstr "" msgid "operation is implemented for 1D Boolean arrays only" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "operation is not implemented on ndarrays" msgstr "" @@ -3628,6 +3625,14 @@ msgstr "" msgid "ord() expected a character, but string of length %d found" msgstr "" +#: extmod/ulab/code/utils/utils.c +msgid "out array is too small" +msgstr "" + +#: extmod/ulab/code/utils/utils.c +msgid "out must be a float dense array" +msgstr "" + #: shared-bindings/displayio/Bitmap.c msgid "out of range of source" msgstr "" @@ -3756,7 +3761,7 @@ msgstr "" msgid "raw f-strings are not implemented" msgstr "" -#: extmod/ulab/code/fft/fft.c +#: extmod/ulab/code/numpy/fft/fft_tools.c msgid "real and imaginary parts must be of equal length" msgstr "" @@ -3791,7 +3796,7 @@ msgstr "" msgid "rgb_pins[%d] is not on the same port as clock" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "roll argument must be an ndarray" msgstr "" @@ -3838,7 +3843,7 @@ msgstr "" msgid "single '}' encountered in format string" msgstr "" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/ulab_tools.c msgid "size is defined for ndarrays only" msgstr "" @@ -3862,19 +3867,19 @@ msgstr "" msgid "soft reboot\n" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "sort argument must be an ndarray" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "sos array must be of shape (n_section, 6)" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "sos[:, 3] should be all ones" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "sosfilt requires iterable arguments" msgstr "" @@ -3988,7 +3993,7 @@ msgstr "" msgid "too many arguments provided with the given format" msgstr "" -#: extmod/ulab/code/ulab_create.c +#: extmod/ulab/code/ndarray.c extmod/ulab/code/ulab_create.c msgid "too many dimensions" msgstr "" @@ -4001,11 +4006,11 @@ msgstr "" msgid "too many values to unpack (expected %d)" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/numpy/approx/approx.c msgid "trapz is defined for 1D arrays" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/numpy/approx/approx.c msgid "trapz is defined for 1D arrays of equal length" msgstr "" @@ -4176,7 +4181,7 @@ msgstr "" msgid "window must be <= interval" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "wrong axis index" msgstr "" @@ -4184,7 +4189,8 @@ msgstr "" msgid "wrong axis specified" msgstr "" -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/numpy/compare/compare.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "wrong input type" msgstr "" @@ -4200,7 +4206,7 @@ msgstr "" msgid "wrong operand type" msgstr "" -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "wrong output type" msgstr "" @@ -4224,14 +4230,14 @@ msgstr "" msgid "zero step" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "zi must be an ndarray" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "zi must be of float type" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "zi must be of shape (n_section, 2)" msgstr "" diff --git a/locale/cs.po b/locale/cs.po index cd9b848f4c..475a6a2004 100644 --- a/locale/cs.po +++ b/locale/cs.po @@ -414,6 +414,10 @@ msgstr "" msgid "AnalogOut not supported on given pin" msgstr "" +#: ports/stm/common-hal/audiopwmio/PWMAudioOut.c +msgid "Another PWMAudioOut is already active" +msgstr "" + #: ports/atmel-samd/common-hal/pulseio/PulseOut.c #: ports/cxd56/common-hal/pulseio/PulseOut.c msgid "Another send is already active" @@ -437,7 +441,7 @@ msgid "Attempt to allocate %d blocks" msgstr "" #: supervisor/shared/safe_mode.c -msgid "Attempted heap allocation when MicroPython VM not running." +msgid "Attempted heap allocation when VM not running." msgstr "" #: shared-bindings/wifi/Radio.c @@ -528,6 +532,7 @@ msgid "Buffer is too small" msgstr "" #: ports/nrf/common-hal/audiopwmio/PWMAudioOut.c +#: ports/stm/common-hal/audiopwmio/PWMAudioOut.c #, c-format msgid "Buffer length %d too big. It must be less than %d" msgstr "" @@ -932,11 +937,11 @@ msgstr "" msgid "Extended advertisements with scan response not supported." msgstr "" -#: extmod/ulab/code/fft/fft.c +#: extmod/ulab/code/numpy/fft/fft_tools.c msgid "FFT is defined for ndarrays only" msgstr "" -#: extmod/ulab/code/fft/fft.c +#: extmod/ulab/code/numpy/fft/fft_tools.c msgid "FFT is implemented for linear arrays only" msgstr "" @@ -977,6 +982,10 @@ msgstr "" msgid "Failed to allocate wifi scan memory" msgstr "" +#: ports/stm/common-hal/audiopwmio/PWMAudioOut.c +msgid "Failed to buffer the sample" +msgstr "" + #: ports/nrf/common-hal/_bleio/Adapter.c msgid "Failed to connect: internal error" msgstr "" @@ -1002,6 +1011,10 @@ msgstr "" msgid "Failed to write internal flash." msgstr "" +#: supervisor/shared/safe_mode.c +msgid "Fatal error." +msgstr "" + #: py/moduerrno.c msgid "File exists" msgstr "" @@ -1174,6 +1187,7 @@ msgstr "" #: ports/atmel-samd/common-hal/audiobusio/I2SOut.c #: ports/atmel-samd/common-hal/audiobusio/PDMIn.c +#: ports/mimxrt10xx/common-hal/busio/UART.c msgid "Invalid %q pin" msgstr "" @@ -1201,7 +1215,9 @@ msgid "Invalid DAC pin supplied" msgstr "" #: ports/atmel-samd/common-hal/pwmio/PWMOut.c -#: ports/cxd56/common-hal/pwmio/PWMOut.c ports/nrf/common-hal/pwmio/PWMOut.c +#: ports/cxd56/common-hal/pwmio/PWMOut.c +#: ports/mimxrt10xx/common-hal/pwmio/PWMOut.c +#: ports/nrf/common-hal/pwmio/PWMOut.c #: ports/raspberrypi/common-hal/pwmio/PWMOut.c shared-bindings/pwmio/PWMOut.c msgid "Invalid PWM frequency" msgstr "" @@ -1389,14 +1405,6 @@ msgstr "" msgid "Messages limited to 8 bytes" msgstr "" -#: supervisor/shared/safe_mode.c -msgid "MicroPython NLR jump failed. Likely memory corruption." -msgstr "" - -#: supervisor/shared/safe_mode.c -msgid "MicroPython fatal error." -msgstr "" - #: shared-bindings/audiobusio/PDMIn.c msgid "Microphone startup delay must be in range 0.0 to 1.0" msgstr "" @@ -1448,6 +1456,10 @@ msgstr "" msgid "Must use a multiple of 6 rgb pins, not %d" msgstr "" +#: supervisor/shared/safe_mode.c +msgid "NLR jump failed. Likely memory corruption." +msgstr "" + #: ports/esp32s2/common-hal/nvm/ByteArray.c msgid "NVS Error" msgstr "" @@ -1581,7 +1593,11 @@ msgid "No timer available" msgstr "" #: supervisor/shared/safe_mode.c -msgid "Nordic Soft Device failure assertion." +msgid "Nordic system firmware failure assertion." +msgstr "" + +#: ports/nrf/common-hal/_bleio/__init__.c +msgid "Nordic system firmware out of memory" msgstr "" #: shared-bindings/ipaddress/IPv4Address.c shared-bindings/ipaddress/__init__.c @@ -1880,7 +1896,7 @@ msgstr "" msgid "Read-only filesystem" msgstr "" -#: shared-module/bitmaptools/__init__.c shared-module/displayio/Bitmap.c +#: shared-module/displayio/Bitmap.c msgid "Read-only object" msgstr "" @@ -1955,14 +1971,6 @@ msgstr "" msgid "Scan already in progess. Stop with stop_scan." msgstr "" -#: ports/mimxrt10xx/common-hal/busio/UART.c -msgid "Selected CTS pin not valid" -msgstr "" - -#: ports/mimxrt10xx/common-hal/busio/UART.c -msgid "Selected RTS pin not valid" -msgstr "" - #: ports/atmel-samd/common-hal/audiobusio/I2SOut.c #: ports/atmel-samd/common-hal/audiobusio/PDMIn.c msgid "Serializer in use" @@ -2239,7 +2247,7 @@ msgstr "" #: ports/nrf/common-hal/_bleio/__init__.c #, c-format -msgid "Unknown soft device error: %04x" +msgid "Unknown system firmware error: %04x" msgstr "" #: shared-bindings/_pixelbuf/PixelBuf.c @@ -2393,11 +2401,11 @@ msgstr "" msgid "arg is an empty sequence" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "argsort argument must be an ndarray" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "argsort is not implemented for flattened arrays" msgstr "" @@ -2405,10 +2413,6 @@ msgstr "" msgid "argument has wrong type" msgstr "" -#: extmod/ulab/code/linalg/linalg.c -msgid "argument must be ndarray" -msgstr "" - #: py/argcheck.c shared-bindings/_stage/__init__.c #: shared-bindings/digitalio/DigitalInOut.c shared-bindings/gamepad/GamePad.c msgid "argument num/types mismatch" @@ -2418,7 +2422,8 @@ msgstr "" msgid "argument should be a '%q' not a '%q'" msgstr "" -#: extmod/ulab/code/linalg/linalg.c extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c +#: extmod/ulab/code/numpy/transform/transform.c msgid "arguments must be ndarrays" msgstr "" @@ -2431,11 +2436,11 @@ msgstr "" msgid "array/bytes required on right side" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "attempt to get (arg)min/(arg)max of empty sequence" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "attempt to get argmin/argmax of an empty sequence" msgstr "" @@ -2443,15 +2448,15 @@ msgstr "" msgid "attributes not supported yet" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "axis is out of bounds" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c extmod/ulab/code/ulab_tools.c msgid "axis must be None, or an integer" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "axis too long" msgstr "" @@ -2487,7 +2492,7 @@ msgstr "" msgid "branch not in range" msgstr "" -#: extmod/ulab/code/ulab_create.c +#: extmod/ulab/code/ulab_create.c extmod/ulab/code/utils/utils.c msgid "buffer is smaller than requested size" msgstr "" @@ -2495,7 +2500,7 @@ msgstr "" msgid "buffer must be a bytes-like object" msgstr "" -#: extmod/ulab/code/ulab_create.c +#: extmod/ulab/code/ulab_create.c extmod/ulab/code/utils/utils.c msgid "buffer size must be a multiple of element size" msgstr "" @@ -2752,19 +2757,19 @@ msgstr "" msgid "conversion to object" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/numpy/filter/filter.c msgid "convolve arguments must be linear arrays" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/numpy/filter/filter.c msgid "convolve arguments must be ndarrays" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/numpy/filter/filter.c msgid "convolve arguments must not be empty" msgstr "" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "could not invert Vandermonde matrix" msgstr "" @@ -2772,15 +2777,15 @@ msgstr "" msgid "couldn't determine SD card version" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "cross is defined for 1D arrays of length 3" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "data must be iterable" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "data must be of equal length" msgstr "" @@ -2817,15 +2822,15 @@ msgstr "" msgid "dict update sequence has wrong length" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "diff argument must be an ndarray" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "differentiation order out of range" msgstr "" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/transform/transform.c msgid "dimensions do not match" msgstr "" @@ -2944,11 +2949,11 @@ msgstr "" msgid "filesystem must provide mount method" msgstr "" -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "first argument must be a callable" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "first argument must be a function" msgstr "" @@ -2956,11 +2961,7 @@ msgstr "" msgid "first argument must be a tuple of ndarrays" msgstr "" -#: extmod/ulab/code/ndarray.c -msgid "first argument must be an iterable" -msgstr "" - -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "first argument must be an ndarray" msgstr "" @@ -2972,7 +2973,7 @@ msgstr "" msgid "flattening order must be either 'C', or 'F'" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "flip argument must be an ndarray" msgstr "" @@ -3005,7 +3006,7 @@ msgstr "" msgid "function got multiple values for argument '%q'" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "function has the same sign at the ends of interval" msgstr "" @@ -3080,7 +3081,7 @@ msgstr "" msgid "index is out of bounds" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c extmod/ulab/code/ulab_tools.c #: ports/esp32s2/common-hal/pulseio/PulseIn.c py/obj.c #: shared-bindings/bitmaptools/__init__.c msgid "index out of range" @@ -3094,7 +3095,7 @@ msgstr "" msgid "indices must be integers, slices, or Boolean lists" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "initial values must be iterable" msgstr "" @@ -3114,7 +3115,7 @@ msgstr "" msgid "input argument must be an integer, a tuple, or a list" msgstr "" -#: extmod/ulab/code/fft/fft.c +#: extmod/ulab/code/numpy/fft/fft_tools.c msgid "input array length must be power of 2" msgstr "" @@ -3122,15 +3123,15 @@ msgstr "" msgid "input arrays are not compatible" msgstr "" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "input data must be an iterable" msgstr "" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/linalg/linalg.c msgid "input matrix is asymmetric" msgstr "" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/linalg/linalg.c msgid "input matrix is singular" msgstr "" @@ -3146,23 +3147,23 @@ msgstr "" msgid "input must be an ndarray" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "input must be one-dimensional" msgstr "" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/ulab_tools.c msgid "input must be square matrix" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "input must be tuple, list, range, or ndarray" msgstr "" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "input vectors must be of equal length" msgstr "" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "inputs are not iterable" msgstr "" @@ -3174,7 +3175,7 @@ msgstr "" msgid "integer required" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/numpy/approx/approx.c msgid "interp is defined for 1D arrays of equal length" msgstr "" @@ -3196,6 +3197,10 @@ msgstr "" msgid "invalid cert" msgstr "" +#: py/compile.c +msgid "invalid decorator" +msgstr "" + #: extmod/uos_dupterm.c msgid "invalid dupterm index" msgstr "" @@ -3263,11 +3268,7 @@ msgstr "" msgid "issubclass() arg 2 must be a class or a tuple of classes" msgstr "" -#: extmod/ulab/code/ndarray.c -msgid "iterables are not of the same length" -msgstr "" - -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/linalg/linalg.c msgid "iterations did not converge" msgstr "" @@ -3335,7 +3336,7 @@ msgstr "" msgid "math domain error" msgstr "" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/linalg/linalg.c msgid "matrix is not positive definite" msgstr "" @@ -3357,15 +3358,15 @@ msgstr "" msgid "maximum recursion depth exceeded" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "maxiter must be > 0" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "maxiter should be > 0" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "median argument must be an ndarray" msgstr "" @@ -3386,7 +3387,7 @@ msgstr "" msgid "module not found" msgstr "" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "more degrees of freedom than data points" msgstr "" @@ -3504,10 +3505,6 @@ msgstr "" msgid "non-zero timeout must be >= interval" msgstr "" -#: extmod/ulab/code/linalg/linalg.c -msgid "norm is defined for 1D and 2D arrays" -msgstr "" - #: shared-bindings/_bleio/UUID.c msgid "not a 128-bit UUID" msgstr "" @@ -3576,7 +3573,7 @@ msgstr "" msgid "odd-length string" msgstr "" -#: extmod/ulab/code/ulab_create.c +#: extmod/ulab/code/ulab_create.c extmod/ulab/code/utils/utils.c msgid "offset is too large" msgstr "" @@ -3605,8 +3602,8 @@ msgstr "" msgid "only slices with step=1 (aka None) are supported" msgstr "" -#: extmod/ulab/code/compare/compare.c extmod/ulab/code/ndarray.c -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/ndarray.c extmod/ulab/code/numpy/compare/compare.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "operands could not be broadcast together" msgstr "" @@ -3614,7 +3611,7 @@ msgstr "" msgid "operation is implemented for 1D Boolean arrays only" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "operation is not implemented on ndarrays" msgstr "" @@ -3631,6 +3628,14 @@ msgstr "" msgid "ord() expected a character, but string of length %d found" msgstr "" +#: extmod/ulab/code/utils/utils.c +msgid "out array is too small" +msgstr "" + +#: extmod/ulab/code/utils/utils.c +msgid "out must be a float dense array" +msgstr "" + #: shared-bindings/displayio/Bitmap.c msgid "out of range of source" msgstr "" @@ -3759,7 +3764,7 @@ msgstr "" msgid "raw f-strings are not implemented" msgstr "" -#: extmod/ulab/code/fft/fft.c +#: extmod/ulab/code/numpy/fft/fft_tools.c msgid "real and imaginary parts must be of equal length" msgstr "" @@ -3794,7 +3799,7 @@ msgstr "" msgid "rgb_pins[%d] is not on the same port as clock" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "roll argument must be an ndarray" msgstr "" @@ -3841,7 +3846,7 @@ msgstr "" msgid "single '}' encountered in format string" msgstr "" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/ulab_tools.c msgid "size is defined for ndarrays only" msgstr "" @@ -3865,19 +3870,19 @@ msgstr "" msgid "soft reboot\n" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "sort argument must be an ndarray" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "sos array must be of shape (n_section, 6)" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "sos[:, 3] should be all ones" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "sosfilt requires iterable arguments" msgstr "" @@ -3991,7 +3996,7 @@ msgstr "" msgid "too many arguments provided with the given format" msgstr "" -#: extmod/ulab/code/ulab_create.c +#: extmod/ulab/code/ndarray.c extmod/ulab/code/ulab_create.c msgid "too many dimensions" msgstr "" @@ -4004,11 +4009,11 @@ msgstr "" msgid "too many values to unpack (expected %d)" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/numpy/approx/approx.c msgid "trapz is defined for 1D arrays" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/numpy/approx/approx.c msgid "trapz is defined for 1D arrays of equal length" msgstr "" @@ -4179,7 +4184,7 @@ msgstr "" msgid "window must be <= interval" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "wrong axis index" msgstr "" @@ -4187,7 +4192,8 @@ msgstr "" msgid "wrong axis specified" msgstr "" -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/numpy/compare/compare.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "wrong input type" msgstr "" @@ -4203,7 +4209,7 @@ msgstr "" msgid "wrong operand type" msgstr "" -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "wrong output type" msgstr "" @@ -4227,15 +4233,15 @@ msgstr "" msgid "zero step" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "zi must be an ndarray" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "zi must be of float type" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "zi must be of shape (n_section, 2)" msgstr "" diff --git a/locale/de_DE.po b/locale/de_DE.po index 4c1eca799a..69c6fefe8b 100644 --- a/locale/de_DE.po +++ b/locale/de_DE.po @@ -420,6 +420,10 @@ msgstr "AnalogOut kann nur 16 Bit. Der Wert muss unter 65536 liegen." msgid "AnalogOut not supported on given pin" msgstr "AnalogOut ist an diesem Pin nicht unterstützt" +#: ports/stm/common-hal/audiopwmio/PWMAudioOut.c +msgid "Another PWMAudioOut is already active" +msgstr "" + #: ports/atmel-samd/common-hal/pulseio/PulseOut.c #: ports/cxd56/common-hal/pulseio/PulseOut.c msgid "Another send is already active" @@ -443,10 +447,8 @@ msgid "Attempt to allocate %d blocks" msgstr "Versuche %d Blöcke zu allokieren" #: supervisor/shared/safe_mode.c -msgid "Attempted heap allocation when MicroPython VM not running." +msgid "Attempted heap allocation when VM not running." msgstr "" -"Versuch einer Heap Reservierung, wenn die MicroPython-VM nicht ausgeführt " -"wird." #: shared-bindings/wifi/Radio.c msgid "Authentication failure" @@ -538,6 +540,7 @@ msgid "Buffer is too small" msgstr "Der Puffer ist zu klein" #: ports/nrf/common-hal/audiopwmio/PWMAudioOut.c +#: ports/stm/common-hal/audiopwmio/PWMAudioOut.c #, c-format msgid "Buffer length %d too big. It must be less than %d" msgstr "Die Pufferlänge %d ist zu groß. Sie muss kleiner als %d sein" @@ -950,11 +953,11 @@ msgid "Extended advertisements with scan response not supported." msgstr "" "Erweiterte Werbung (advertising) mit Scanantwort wird nicht unterstützt." -#: extmod/ulab/code/fft/fft.c +#: extmod/ulab/code/numpy/fft/fft_tools.c msgid "FFT is defined for ndarrays only" msgstr "FFT ist nur für ndarrays definiert" -#: extmod/ulab/code/fft/fft.c +#: extmod/ulab/code/numpy/fft/fft_tools.c msgid "FFT is implemented for linear arrays only" msgstr "FFT ist nur für lineare Arrays implementiert" @@ -995,6 +998,10 @@ msgstr "Zuweisung des Wifi Speichers ist fehlgeschlagen" msgid "Failed to allocate wifi scan memory" msgstr "Zuweisung des Wifi Scan Speichers ist fehlgeschlagen" +#: ports/stm/common-hal/audiopwmio/PWMAudioOut.c +msgid "Failed to buffer the sample" +msgstr "" + #: ports/nrf/common-hal/_bleio/Adapter.c msgid "Failed to connect: internal error" msgstr "Verbindung fehlgeschlagen: interner Fehler" @@ -1020,6 +1027,10 @@ msgstr "Mutex konnte nicht freigegeben werden. Status: 0x%04x" msgid "Failed to write internal flash." msgstr "Interner Flash konnte nicht geschrieben werden." +#: supervisor/shared/safe_mode.c +msgid "Fatal error." +msgstr "" + #: py/moduerrno.c msgid "File exists" msgstr "Datei existiert" @@ -1196,6 +1207,7 @@ msgstr "Ungültiger %q" #: ports/atmel-samd/common-hal/audiobusio/I2SOut.c #: ports/atmel-samd/common-hal/audiobusio/PDMIn.c +#: ports/mimxrt10xx/common-hal/busio/UART.c msgid "Invalid %q pin" msgstr "Ungültiger %q Pin" @@ -1223,7 +1235,9 @@ msgid "Invalid DAC pin supplied" msgstr "Ungültiger DAC-Pin angegeben" #: ports/atmel-samd/common-hal/pwmio/PWMOut.c -#: ports/cxd56/common-hal/pwmio/PWMOut.c ports/nrf/common-hal/pwmio/PWMOut.c +#: ports/cxd56/common-hal/pwmio/PWMOut.c +#: ports/mimxrt10xx/common-hal/pwmio/PWMOut.c +#: ports/nrf/common-hal/pwmio/PWMOut.c #: ports/raspberrypi/common-hal/pwmio/PWMOut.c shared-bindings/pwmio/PWMOut.c msgid "Invalid PWM frequency" msgstr "Ungültige PWM Frequenz" @@ -1411,15 +1425,6 @@ msgstr "Maximaler x-Wert beim Spiegeln ist %d" msgid "Messages limited to 8 bytes" msgstr "" -#: supervisor/shared/safe_mode.c -msgid "MicroPython NLR jump failed. Likely memory corruption." -msgstr "" -"MicroPython NLR-Sprung fehlgeschlagen. Wahrscheinlich Speicherbeschädigung." - -#: supervisor/shared/safe_mode.c -msgid "MicroPython fatal error." -msgstr "Schwerwiegender MicroPython-Fehler." - #: shared-bindings/audiobusio/PDMIn.c msgid "Microphone startup delay must be in range 0.0 to 1.0" msgstr "" @@ -1472,6 +1477,10 @@ msgstr "Muss MISO- oder MOSI-Pin bereitstellen" msgid "Must use a multiple of 6 rgb pins, not %d" msgstr "Muss ein Vielfaches von 6 RGB-Pins verwenden, nicht %d" +#: supervisor/shared/safe_mode.c +msgid "NLR jump failed. Likely memory corruption." +msgstr "" + #: ports/esp32s2/common-hal/nvm/ByteArray.c msgid "NVS Error" msgstr "" @@ -1605,8 +1614,12 @@ msgid "No timer available" msgstr "Kein Timer verfügbar" #: supervisor/shared/safe_mode.c -msgid "Nordic Soft Device failure assertion." -msgstr "Fehlerbehauptung für Nordic Soft Device." +msgid "Nordic system firmware failure assertion." +msgstr "" + +#: ports/nrf/common-hal/_bleio/__init__.c +msgid "Nordic system firmware out of memory" +msgstr "" #: shared-bindings/ipaddress/IPv4Address.c shared-bindings/ipaddress/__init__.c msgid "Not a valid IP string" @@ -1915,7 +1928,7 @@ msgstr "Nur lesen möglich, da Schreibgeschützt" msgid "Read-only filesystem" msgstr "Schreibgeschützte Dateisystem" -#: shared-module/bitmaptools/__init__.c shared-module/displayio/Bitmap.c +#: shared-module/displayio/Bitmap.c msgid "Read-only object" msgstr "Schreibgeschützte Objekt" @@ -1990,14 +2003,6 @@ msgstr "Abtastrate zu hoch. Wert muss unter %d liegen" msgid "Scan already in progess. Stop with stop_scan." msgstr "Scannen Sie bereits in Bearbeitung. Stoppen Sie mit stop_scan." -#: ports/mimxrt10xx/common-hal/busio/UART.c -msgid "Selected CTS pin not valid" -msgstr "Ausgewählter CTS-Pin ungültig" - -#: ports/mimxrt10xx/common-hal/busio/UART.c -msgid "Selected RTS pin not valid" -msgstr "Ausgewählter RTS-Pin ungültig" - #: ports/atmel-samd/common-hal/audiobusio/I2SOut.c #: ports/atmel-samd/common-hal/audiobusio/PDMIn.c msgid "Serializer in use" @@ -2288,8 +2293,8 @@ msgstr "Unbekannter Sicherheitsfehler: 0x%04x" #: ports/nrf/common-hal/_bleio/__init__.c #, c-format -msgid "Unknown soft device error: %04x" -msgstr "Unbekannter Soft Device-Fehler: %04x" +msgid "Unknown system firmware error: %04x" +msgstr "" #: shared-bindings/_pixelbuf/PixelBuf.c #, c-format @@ -2457,11 +2462,11 @@ msgstr "adresses ist leer" msgid "arg is an empty sequence" msgstr "arg ist eine leere Sequenz" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "argsort argument must be an ndarray" msgstr "Das Argument argsort muss ein ndarray sein" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "argsort is not implemented for flattened arrays" msgstr "" @@ -2469,10 +2474,6 @@ msgstr "" msgid "argument has wrong type" msgstr "Argument hat falschen Typ" -#: extmod/ulab/code/linalg/linalg.c -msgid "argument must be ndarray" -msgstr "Argument muss ein ndarray sein" - #: py/argcheck.c shared-bindings/_stage/__init__.c #: shared-bindings/digitalio/DigitalInOut.c shared-bindings/gamepad/GamePad.c msgid "argument num/types mismatch" @@ -2482,7 +2483,8 @@ msgstr "Anzahl/Typen der Argumente passen nicht" msgid "argument should be a '%q' not a '%q'" msgstr "Argument sollte '%q' sein, nicht '%q'" -#: extmod/ulab/code/linalg/linalg.c extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c +#: extmod/ulab/code/numpy/transform/transform.c msgid "arguments must be ndarrays" msgstr "Argumente müssen ndarrays sein" @@ -2495,11 +2497,11 @@ msgstr "" msgid "array/bytes required on right side" msgstr "Array/Bytes auf der rechten Seite erforderlich" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "attempt to get (arg)min/(arg)max of empty sequence" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "attempt to get argmin/argmax of an empty sequence" msgstr "Sie haben versucht argmin/argmax von einer leeren Sequenz zu bekommen" @@ -2507,15 +2509,15 @@ msgstr "Sie haben versucht argmin/argmax von einer leeren Sequenz zu bekommen" msgid "attributes not supported yet" msgstr "Attribute werden noch nicht unterstützt" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "axis is out of bounds" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c extmod/ulab/code/ulab_tools.c msgid "axis must be None, or an integer" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "axis too long" msgstr "" @@ -2551,7 +2553,7 @@ msgstr "Es müssen 8 oder 16 bits_per_sample sein" msgid "branch not in range" msgstr "Zweig ist außerhalb der Reichweite" -#: extmod/ulab/code/ulab_create.c +#: extmod/ulab/code/ulab_create.c extmod/ulab/code/utils/utils.c msgid "buffer is smaller than requested size" msgstr "" @@ -2559,7 +2561,7 @@ msgstr "" msgid "buffer must be a bytes-like object" msgstr "Puffer muss ein bytes-artiges Objekt sein" -#: extmod/ulab/code/ulab_create.c +#: extmod/ulab/code/ulab_create.c extmod/ulab/code/utils/utils.c msgid "buffer size must be a multiple of element size" msgstr "" @@ -2826,19 +2828,19 @@ msgstr "constant muss ein integer sein" msgid "conversion to object" msgstr "Umwandlung zu Objekt" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/numpy/filter/filter.c msgid "convolve arguments must be linear arrays" msgstr "Convolve-Argumente müssen lineare Arrays sein" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/numpy/filter/filter.c msgid "convolve arguments must be ndarrays" msgstr "Convolve-Argumente müssen ndarrays sein" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/numpy/filter/filter.c msgid "convolve arguments must not be empty" msgstr "Convolve Argumente dürfen nicht leer sein" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "could not invert Vandermonde matrix" msgstr "Vandermonde-Matrix konnte nicht invertiert werden" @@ -2846,15 +2848,15 @@ msgstr "Vandermonde-Matrix konnte nicht invertiert werden" msgid "couldn't determine SD card version" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "cross is defined for 1D arrays of length 3" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "data must be iterable" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "data must be of equal length" msgstr "" @@ -2893,15 +2895,15 @@ msgstr "destination_length muss ein int >= 0 sein" msgid "dict update sequence has wrong length" msgstr "Die Wörterbuch-Aktualisierungssequenz hat eine falsche Länge" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "diff argument must be an ndarray" msgstr "diff Argument muss ein ndarray sein" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "differentiation order out of range" msgstr "" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/transform/transform.c msgid "dimensions do not match" msgstr "" @@ -3020,11 +3022,11 @@ msgstr "Die Datei muss eine im Byte-Modus geöffnete Datei sein" msgid "filesystem must provide mount method" msgstr "Das Dateisystem muss eine Mount-Methode bereitstellen" -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "first argument must be a callable" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "first argument must be a function" msgstr "" @@ -3032,11 +3034,7 @@ msgstr "" msgid "first argument must be a tuple of ndarrays" msgstr "" -#: extmod/ulab/code/ndarray.c -msgid "first argument must be an iterable" -msgstr "Das erste Argument muss iterierbar sein" - -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "first argument must be an ndarray" msgstr "Das erste Argument muss ein Ndarray sein" @@ -3048,7 +3046,7 @@ msgstr "Das erste Argument für super() muss type sein" msgid "flattening order must be either 'C', or 'F'" msgstr "Die Abflachungsreihenfolge muss entweder \"C\" oder \"F\" sein" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "flip argument must be an ndarray" msgstr "Das Flip-Argument muss ein Ndarray sein" @@ -3081,7 +3079,7 @@ msgstr "Funktion erwartet maximal %d Argumente, aber hat %d erhalten" msgid "function got multiple values for argument '%q'" msgstr "Funktion hat mehrere Werte für Argument '%q'" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "function has the same sign at the ends of interval" msgstr "" @@ -3158,7 +3156,7 @@ msgstr "padding ist inkorrekt" msgid "index is out of bounds" msgstr "Index ist außerhalb der Grenzen" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c extmod/ulab/code/ulab_tools.c #: ports/esp32s2/common-hal/pulseio/PulseIn.c py/obj.c #: shared-bindings/bitmaptools/__init__.c msgid "index out of range" @@ -3172,7 +3170,7 @@ msgstr "Indizes müssen Integer sein" msgid "indices must be integers, slices, or Boolean lists" msgstr "Indizes müssen Integer, Slices oder Boolesche Listen sein" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "initial values must be iterable" msgstr "Ausgangswerte müssen iterierbar sein" @@ -3192,7 +3190,7 @@ msgstr "" msgid "input argument must be an integer, a tuple, or a list" msgstr "" -#: extmod/ulab/code/fft/fft.c +#: extmod/ulab/code/numpy/fft/fft_tools.c msgid "input array length must be power of 2" msgstr "Die Länge des Eingabearrays muss eine Potenz von 2 sein" @@ -3200,15 +3198,15 @@ msgstr "Die Länge des Eingabearrays muss eine Potenz von 2 sein" msgid "input arrays are not compatible" msgstr "" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "input data must be an iterable" msgstr "Eingabedaten müssen iterierbar sein" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/linalg/linalg.c msgid "input matrix is asymmetric" msgstr "Eingabematrix ist asymmetrisch" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/linalg/linalg.c msgid "input matrix is singular" msgstr "Eingabematrix ist singulär" @@ -3224,23 +3222,23 @@ msgstr "" msgid "input must be an ndarray" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "input must be one-dimensional" msgstr "" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/ulab_tools.c msgid "input must be square matrix" msgstr "Die Eingabe muss eine quadratische Matrix sein" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "input must be tuple, list, range, or ndarray" msgstr "Die Eingabe muss Tupel, Liste, Bereich oder Ndarray sein" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "input vectors must be of equal length" msgstr "Eingabevektoren müssen gleich lang sein" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "inputs are not iterable" msgstr "" @@ -3252,7 +3250,7 @@ msgstr "int() arg 2 muss >= 2 und <= 36 sein" msgid "integer required" msgstr "integer erforderlich" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/numpy/approx/approx.c msgid "interp is defined for 1D arrays of equal length" msgstr "" @@ -3274,6 +3272,10 @@ msgstr "" msgid "invalid cert" msgstr "ungültiges cert" +#: py/compile.c +msgid "invalid decorator" +msgstr "" + #: extmod/uos_dupterm.c msgid "invalid dupterm index" msgstr "ungültiger dupterm index" @@ -3341,11 +3343,7 @@ msgstr "issubclass() arg 1 muss eine Klasse sein" msgid "issubclass() arg 2 must be a class or a tuple of classes" msgstr "issubclass() arg 2 muss eine Klasse oder ein Tupel von Klassen sein" -#: extmod/ulab/code/ndarray.c -msgid "iterables are not of the same length" -msgstr "iterables sind nicht gleich lang" - -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/linalg/linalg.c msgid "iterations did not converge" msgstr "Iterationen sind nicht konvergiert (converged)" @@ -3419,7 +3417,7 @@ msgstr "map buffer zu klein" msgid "math domain error" msgstr "Mathe-Domain-Fehler" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/linalg/linalg.c msgid "matrix is not positive definite" msgstr "Matrix ist nicht positiv definitiv" @@ -3441,15 +3439,15 @@ msgstr "" msgid "maximum recursion depth exceeded" msgstr "maximale Rekursionstiefe überschritten" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "maxiter must be > 0" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "maxiter should be > 0" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "median argument must be an ndarray" msgstr "" @@ -3470,7 +3468,7 @@ msgstr "" msgid "module not found" msgstr "Modul nicht gefunden" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "more degrees of freedom than data points" msgstr "mehr Freiheitsgrade als Datenpunkte" @@ -3588,10 +3586,6 @@ msgstr "" msgid "non-zero timeout must be >= interval" msgstr "" -#: extmod/ulab/code/linalg/linalg.c -msgid "norm is defined for 1D and 2D arrays" -msgstr "" - #: shared-bindings/_bleio/UUID.c msgid "not a 128-bit UUID" msgstr "keine 128-bit UUID" @@ -3661,7 +3655,7 @@ msgstr "Objekt mit Pufferprotokoll (buffer protocol) erforderlich" msgid "odd-length string" msgstr "String mit ungerader Länge" -#: extmod/ulab/code/ulab_create.c +#: extmod/ulab/code/ulab_create.c extmod/ulab/code/utils/utils.c msgid "offset is too large" msgstr "" @@ -3691,8 +3685,8 @@ msgid "only slices with step=1 (aka None) are supported" msgstr "" "Es werden nur Slices mit Schritt = 1 (auch bekannt als None) unterstützt" -#: extmod/ulab/code/compare/compare.c extmod/ulab/code/ndarray.c -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/ndarray.c extmod/ulab/code/numpy/compare/compare.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "operands could not be broadcast together" msgstr "Operanden konnten nicht zusammen gesendet werden" @@ -3700,7 +3694,7 @@ msgstr "Operanden konnten nicht zusammen gesendet werden" msgid "operation is implemented for 1D Boolean arrays only" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "operation is not implemented on ndarrays" msgstr "Die Operation ist für ndarrays nicht implementiert" @@ -3719,6 +3713,14 @@ msgstr "" "ord() erwartet einen Buchstaben(char) aber es wurde ein String mit Länge %d " "gefunden" +#: extmod/ulab/code/utils/utils.c +msgid "out array is too small" +msgstr "" + +#: extmod/ulab/code/utils/utils.c +msgid "out must be a float dense array" +msgstr "" + #: shared-bindings/displayio/Bitmap.c msgid "out of range of source" msgstr "Außerhalb des Bereichs der Quelle" @@ -3847,7 +3849,7 @@ msgstr "Warteschlangenüberlauf" msgid "raw f-strings are not implemented" msgstr "rohe F-Strings sind nicht implementiert" -#: extmod/ulab/code/fft/fft.c +#: extmod/ulab/code/numpy/fft/fft_tools.c msgid "real and imaginary parts must be of equal length" msgstr "Real- und Imaginärteile müssen gleich lang sein" @@ -3882,7 +3884,7 @@ msgstr "rgb_pins[%d] dupliziert eine andere Pinbelegung" msgid "rgb_pins[%d] is not on the same port as clock" msgstr "rgb_pins [%d] befindet sich nicht am selben Port wie clock" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "roll argument must be an ndarray" msgstr "" @@ -3931,7 +3933,7 @@ msgstr "Vorzeichen mit ganzzahligem Formatbezeichner 'c' nicht erlaubt" msgid "single '}' encountered in format string" msgstr "einzelne '}' in Formatierungs-String gefunden" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/ulab_tools.c msgid "size is defined for ndarrays only" msgstr "Größe ist nur für ndarrays definiert" @@ -3955,19 +3957,19 @@ msgstr "small int Überlauf" msgid "soft reboot\n" msgstr "weicher reboot\n" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "sort argument must be an ndarray" msgstr "sortierungs Argument muss ein ndarray sein" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "sos array must be of shape (n_section, 6)" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "sos[:, 3] should be all ones" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "sosfilt requires iterable arguments" msgstr "" @@ -4082,7 +4084,7 @@ msgstr "" msgid "too many arguments provided with the given format" msgstr "zu viele Argumente mit dem angegebenen Format" -#: extmod/ulab/code/ulab_create.c +#: extmod/ulab/code/ndarray.c extmod/ulab/code/ulab_create.c msgid "too many dimensions" msgstr "" @@ -4095,11 +4097,11 @@ msgstr "zu viele Indizes" msgid "too many values to unpack (expected %d)" msgstr "zu viele Werte zum Auspacken (erwartet %d)" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/numpy/approx/approx.c msgid "trapz is defined for 1D arrays" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/numpy/approx/approx.c msgid "trapz is defined for 1D arrays of equal length" msgstr "" @@ -4274,7 +4276,7 @@ msgstr "" msgid "window must be <= interval" msgstr "Fenster muss <= Intervall sein" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "wrong axis index" msgstr "" @@ -4282,7 +4284,8 @@ msgstr "" msgid "wrong axis specified" msgstr "" -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/numpy/compare/compare.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "wrong input type" msgstr "falscher Eingabetyp" @@ -4298,7 +4301,7 @@ msgstr "falsche Anzahl zu entpackender Werte" msgid "wrong operand type" msgstr "falscher Operandentyp" -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "wrong output type" msgstr "Falscher Ausgabetyp" @@ -4322,18 +4325,58 @@ msgstr "y Wert außerhalb der Grenzen" msgid "zero step" msgstr "Nullschritt" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "zi must be an ndarray" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "zi must be of float type" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "zi must be of shape (n_section, 2)" msgstr "" +#~ msgid "Attempted heap allocation when MicroPython VM not running." +#~ msgstr "" +#~ "Versuch einer Heap Reservierung, wenn die MicroPython-VM nicht ausgeführt " +#~ "wird." + +#~ msgid "MicroPython NLR jump failed. Likely memory corruption." +#~ msgstr "" +#~ "MicroPython NLR-Sprung fehlgeschlagen. Wahrscheinlich " +#~ "Speicherbeschädigung." + +#~ msgid "MicroPython fatal error." +#~ msgstr "Schwerwiegender MicroPython-Fehler." + +#~ msgid "argument must be ndarray" +#~ msgstr "Argument muss ein ndarray sein" + +#~ msgid "matrix dimensions do not match" +#~ msgstr "Matrix Dimensionen stimmen nicht überein" + +#~ msgid "vectors must have same lengths" +#~ msgstr "Vektoren müssen die selbe Länge haben" + +#~ msgid "Nordic Soft Device failure assertion." +#~ msgstr "Fehlerbehauptung für Nordic Soft Device." + +#~ msgid "Unknown soft device error: %04x" +#~ msgstr "Unbekannter Soft Device-Fehler: %04x" + +#~ msgid "first argument must be an iterable" +#~ msgstr "Das erste Argument muss iterierbar sein" + +#~ msgid "iterables are not of the same length" +#~ msgstr "iterables sind nicht gleich lang" + +#~ msgid "Selected CTS pin not valid" +#~ msgstr "Ausgewählter CTS-Pin ungültig" + +#~ msgid "Selected RTS pin not valid" +#~ msgstr "Ausgewählter RTS-Pin ungültig" + #~ msgid "Could not initialize channel" #~ msgstr "Kanal konnte nicht initialisiert werden" @@ -4349,12 +4392,6 @@ msgstr "" #~ msgid "No more timers available on this pin." #~ msgstr "An diesem Pin sind keine Timer mehr verfügbar." -#~ msgid "matrix dimensions do not match" -#~ msgstr "Matrix Dimensionen stimmen nicht überein" - -#~ msgid "vectors must have same lengths" -#~ msgstr "Vektoren müssen die selbe Länge haben" - #~ msgid "Group full" #~ msgstr "Gruppe voll" diff --git a/locale/el.po b/locale/el.po index 969817d348..8d80f4e60e 100644 --- a/locale/el.po +++ b/locale/el.po @@ -411,6 +411,10 @@ msgstr "" msgid "AnalogOut not supported on given pin" msgstr "" +#: ports/stm/common-hal/audiopwmio/PWMAudioOut.c +msgid "Another PWMAudioOut is already active" +msgstr "" + #: ports/atmel-samd/common-hal/pulseio/PulseOut.c #: ports/cxd56/common-hal/pulseio/PulseOut.c msgid "Another send is already active" @@ -434,7 +438,7 @@ msgid "Attempt to allocate %d blocks" msgstr "" #: supervisor/shared/safe_mode.c -msgid "Attempted heap allocation when MicroPython VM not running." +msgid "Attempted heap allocation when VM not running." msgstr "" #: shared-bindings/wifi/Radio.c @@ -525,6 +529,7 @@ msgid "Buffer is too small" msgstr "" #: ports/nrf/common-hal/audiopwmio/PWMAudioOut.c +#: ports/stm/common-hal/audiopwmio/PWMAudioOut.c #, c-format msgid "Buffer length %d too big. It must be less than %d" msgstr "" @@ -929,11 +934,11 @@ msgstr "" msgid "Extended advertisements with scan response not supported." msgstr "" -#: extmod/ulab/code/fft/fft.c +#: extmod/ulab/code/numpy/fft/fft_tools.c msgid "FFT is defined for ndarrays only" msgstr "" -#: extmod/ulab/code/fft/fft.c +#: extmod/ulab/code/numpy/fft/fft_tools.c msgid "FFT is implemented for linear arrays only" msgstr "" @@ -974,6 +979,10 @@ msgstr "" msgid "Failed to allocate wifi scan memory" msgstr "" +#: ports/stm/common-hal/audiopwmio/PWMAudioOut.c +msgid "Failed to buffer the sample" +msgstr "" + #: ports/nrf/common-hal/_bleio/Adapter.c msgid "Failed to connect: internal error" msgstr "" @@ -999,6 +1008,10 @@ msgstr "" msgid "Failed to write internal flash." msgstr "" +#: supervisor/shared/safe_mode.c +msgid "Fatal error." +msgstr "" + #: py/moduerrno.c msgid "File exists" msgstr "" @@ -1171,6 +1184,7 @@ msgstr "" #: ports/atmel-samd/common-hal/audiobusio/I2SOut.c #: ports/atmel-samd/common-hal/audiobusio/PDMIn.c +#: ports/mimxrt10xx/common-hal/busio/UART.c msgid "Invalid %q pin" msgstr "" @@ -1198,7 +1212,9 @@ msgid "Invalid DAC pin supplied" msgstr "" #: ports/atmel-samd/common-hal/pwmio/PWMOut.c -#: ports/cxd56/common-hal/pwmio/PWMOut.c ports/nrf/common-hal/pwmio/PWMOut.c +#: ports/cxd56/common-hal/pwmio/PWMOut.c +#: ports/mimxrt10xx/common-hal/pwmio/PWMOut.c +#: ports/nrf/common-hal/pwmio/PWMOut.c #: ports/raspberrypi/common-hal/pwmio/PWMOut.c shared-bindings/pwmio/PWMOut.c msgid "Invalid PWM frequency" msgstr "" @@ -1386,14 +1402,6 @@ msgstr "" msgid "Messages limited to 8 bytes" msgstr "" -#: supervisor/shared/safe_mode.c -msgid "MicroPython NLR jump failed. Likely memory corruption." -msgstr "" - -#: supervisor/shared/safe_mode.c -msgid "MicroPython fatal error." -msgstr "" - #: shared-bindings/audiobusio/PDMIn.c msgid "Microphone startup delay must be in range 0.0 to 1.0" msgstr "" @@ -1445,6 +1453,10 @@ msgstr "" msgid "Must use a multiple of 6 rgb pins, not %d" msgstr "" +#: supervisor/shared/safe_mode.c +msgid "NLR jump failed. Likely memory corruption." +msgstr "" + #: ports/esp32s2/common-hal/nvm/ByteArray.c msgid "NVS Error" msgstr "" @@ -1578,7 +1590,11 @@ msgid "No timer available" msgstr "" #: supervisor/shared/safe_mode.c -msgid "Nordic Soft Device failure assertion." +msgid "Nordic system firmware failure assertion." +msgstr "" + +#: ports/nrf/common-hal/_bleio/__init__.c +msgid "Nordic system firmware out of memory" msgstr "" #: shared-bindings/ipaddress/IPv4Address.c shared-bindings/ipaddress/__init__.c @@ -1877,7 +1893,7 @@ msgstr "" msgid "Read-only filesystem" msgstr "" -#: shared-module/bitmaptools/__init__.c shared-module/displayio/Bitmap.c +#: shared-module/displayio/Bitmap.c msgid "Read-only object" msgstr "" @@ -1952,14 +1968,6 @@ msgstr "" msgid "Scan already in progess. Stop with stop_scan." msgstr "" -#: ports/mimxrt10xx/common-hal/busio/UART.c -msgid "Selected CTS pin not valid" -msgstr "" - -#: ports/mimxrt10xx/common-hal/busio/UART.c -msgid "Selected RTS pin not valid" -msgstr "" - #: ports/atmel-samd/common-hal/audiobusio/I2SOut.c #: ports/atmel-samd/common-hal/audiobusio/PDMIn.c msgid "Serializer in use" @@ -2236,7 +2244,7 @@ msgstr "" #: ports/nrf/common-hal/_bleio/__init__.c #, c-format -msgid "Unknown soft device error: %04x" +msgid "Unknown system firmware error: %04x" msgstr "" #: shared-bindings/_pixelbuf/PixelBuf.c @@ -2390,11 +2398,11 @@ msgstr "" msgid "arg is an empty sequence" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "argsort argument must be an ndarray" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "argsort is not implemented for flattened arrays" msgstr "" @@ -2402,10 +2410,6 @@ msgstr "" msgid "argument has wrong type" msgstr "" -#: extmod/ulab/code/linalg/linalg.c -msgid "argument must be ndarray" -msgstr "" - #: py/argcheck.c shared-bindings/_stage/__init__.c #: shared-bindings/digitalio/DigitalInOut.c shared-bindings/gamepad/GamePad.c msgid "argument num/types mismatch" @@ -2415,7 +2419,8 @@ msgstr "" msgid "argument should be a '%q' not a '%q'" msgstr "" -#: extmod/ulab/code/linalg/linalg.c extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c +#: extmod/ulab/code/numpy/transform/transform.c msgid "arguments must be ndarrays" msgstr "" @@ -2428,11 +2433,11 @@ msgstr "" msgid "array/bytes required on right side" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "attempt to get (arg)min/(arg)max of empty sequence" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "attempt to get argmin/argmax of an empty sequence" msgstr "" @@ -2440,15 +2445,15 @@ msgstr "" msgid "attributes not supported yet" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "axis is out of bounds" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c extmod/ulab/code/ulab_tools.c msgid "axis must be None, or an integer" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "axis too long" msgstr "" @@ -2484,7 +2489,7 @@ msgstr "" msgid "branch not in range" msgstr "" -#: extmod/ulab/code/ulab_create.c +#: extmod/ulab/code/ulab_create.c extmod/ulab/code/utils/utils.c msgid "buffer is smaller than requested size" msgstr "" @@ -2492,7 +2497,7 @@ msgstr "" msgid "buffer must be a bytes-like object" msgstr "" -#: extmod/ulab/code/ulab_create.c +#: extmod/ulab/code/ulab_create.c extmod/ulab/code/utils/utils.c msgid "buffer size must be a multiple of element size" msgstr "" @@ -2749,19 +2754,19 @@ msgstr "" msgid "conversion to object" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/numpy/filter/filter.c msgid "convolve arguments must be linear arrays" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/numpy/filter/filter.c msgid "convolve arguments must be ndarrays" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/numpy/filter/filter.c msgid "convolve arguments must not be empty" msgstr "" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "could not invert Vandermonde matrix" msgstr "" @@ -2769,15 +2774,15 @@ msgstr "" msgid "couldn't determine SD card version" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "cross is defined for 1D arrays of length 3" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "data must be iterable" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "data must be of equal length" msgstr "" @@ -2814,15 +2819,15 @@ msgstr "" msgid "dict update sequence has wrong length" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "diff argument must be an ndarray" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "differentiation order out of range" msgstr "" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/transform/transform.c msgid "dimensions do not match" msgstr "" @@ -2941,11 +2946,11 @@ msgstr "" msgid "filesystem must provide mount method" msgstr "" -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "first argument must be a callable" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "first argument must be a function" msgstr "" @@ -2953,11 +2958,7 @@ msgstr "" msgid "first argument must be a tuple of ndarrays" msgstr "" -#: extmod/ulab/code/ndarray.c -msgid "first argument must be an iterable" -msgstr "" - -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "first argument must be an ndarray" msgstr "" @@ -2969,7 +2970,7 @@ msgstr "" msgid "flattening order must be either 'C', or 'F'" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "flip argument must be an ndarray" msgstr "" @@ -3002,7 +3003,7 @@ msgstr "" msgid "function got multiple values for argument '%q'" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "function has the same sign at the ends of interval" msgstr "" @@ -3077,7 +3078,7 @@ msgstr "" msgid "index is out of bounds" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c extmod/ulab/code/ulab_tools.c #: ports/esp32s2/common-hal/pulseio/PulseIn.c py/obj.c #: shared-bindings/bitmaptools/__init__.c msgid "index out of range" @@ -3091,7 +3092,7 @@ msgstr "" msgid "indices must be integers, slices, or Boolean lists" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "initial values must be iterable" msgstr "" @@ -3111,7 +3112,7 @@ msgstr "" msgid "input argument must be an integer, a tuple, or a list" msgstr "" -#: extmod/ulab/code/fft/fft.c +#: extmod/ulab/code/numpy/fft/fft_tools.c msgid "input array length must be power of 2" msgstr "" @@ -3119,15 +3120,15 @@ msgstr "" msgid "input arrays are not compatible" msgstr "" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "input data must be an iterable" msgstr "" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/linalg/linalg.c msgid "input matrix is asymmetric" msgstr "" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/linalg/linalg.c msgid "input matrix is singular" msgstr "" @@ -3143,23 +3144,23 @@ msgstr "" msgid "input must be an ndarray" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "input must be one-dimensional" msgstr "" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/ulab_tools.c msgid "input must be square matrix" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "input must be tuple, list, range, or ndarray" msgstr "" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "input vectors must be of equal length" msgstr "" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "inputs are not iterable" msgstr "" @@ -3171,7 +3172,7 @@ msgstr "" msgid "integer required" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/numpy/approx/approx.c msgid "interp is defined for 1D arrays of equal length" msgstr "" @@ -3193,6 +3194,10 @@ msgstr "" msgid "invalid cert" msgstr "" +#: py/compile.c +msgid "invalid decorator" +msgstr "" + #: extmod/uos_dupterm.c msgid "invalid dupterm index" msgstr "" @@ -3260,11 +3265,7 @@ msgstr "" msgid "issubclass() arg 2 must be a class or a tuple of classes" msgstr "" -#: extmod/ulab/code/ndarray.c -msgid "iterables are not of the same length" -msgstr "" - -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/linalg/linalg.c msgid "iterations did not converge" msgstr "" @@ -3332,7 +3333,7 @@ msgstr "" msgid "math domain error" msgstr "" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/linalg/linalg.c msgid "matrix is not positive definite" msgstr "" @@ -3354,15 +3355,15 @@ msgstr "" msgid "maximum recursion depth exceeded" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "maxiter must be > 0" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "maxiter should be > 0" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "median argument must be an ndarray" msgstr "" @@ -3383,7 +3384,7 @@ msgstr "" msgid "module not found" msgstr "" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "more degrees of freedom than data points" msgstr "" @@ -3501,10 +3502,6 @@ msgstr "" msgid "non-zero timeout must be >= interval" msgstr "" -#: extmod/ulab/code/linalg/linalg.c -msgid "norm is defined for 1D and 2D arrays" -msgstr "" - #: shared-bindings/_bleio/UUID.c msgid "not a 128-bit UUID" msgstr "" @@ -3573,7 +3570,7 @@ msgstr "" msgid "odd-length string" msgstr "" -#: extmod/ulab/code/ulab_create.c +#: extmod/ulab/code/ulab_create.c extmod/ulab/code/utils/utils.c msgid "offset is too large" msgstr "" @@ -3602,8 +3599,8 @@ msgstr "" msgid "only slices with step=1 (aka None) are supported" msgstr "" -#: extmod/ulab/code/compare/compare.c extmod/ulab/code/ndarray.c -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/ndarray.c extmod/ulab/code/numpy/compare/compare.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "operands could not be broadcast together" msgstr "" @@ -3611,7 +3608,7 @@ msgstr "" msgid "operation is implemented for 1D Boolean arrays only" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "operation is not implemented on ndarrays" msgstr "" @@ -3628,6 +3625,14 @@ msgstr "" msgid "ord() expected a character, but string of length %d found" msgstr "" +#: extmod/ulab/code/utils/utils.c +msgid "out array is too small" +msgstr "" + +#: extmod/ulab/code/utils/utils.c +msgid "out must be a float dense array" +msgstr "" + #: shared-bindings/displayio/Bitmap.c msgid "out of range of source" msgstr "" @@ -3756,7 +3761,7 @@ msgstr "" msgid "raw f-strings are not implemented" msgstr "" -#: extmod/ulab/code/fft/fft.c +#: extmod/ulab/code/numpy/fft/fft_tools.c msgid "real and imaginary parts must be of equal length" msgstr "" @@ -3791,7 +3796,7 @@ msgstr "" msgid "rgb_pins[%d] is not on the same port as clock" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "roll argument must be an ndarray" msgstr "" @@ -3838,7 +3843,7 @@ msgstr "" msgid "single '}' encountered in format string" msgstr "" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/ulab_tools.c msgid "size is defined for ndarrays only" msgstr "" @@ -3862,19 +3867,19 @@ msgstr "" msgid "soft reboot\n" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "sort argument must be an ndarray" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "sos array must be of shape (n_section, 6)" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "sos[:, 3] should be all ones" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "sosfilt requires iterable arguments" msgstr "" @@ -3988,7 +3993,7 @@ msgstr "" msgid "too many arguments provided with the given format" msgstr "" -#: extmod/ulab/code/ulab_create.c +#: extmod/ulab/code/ndarray.c extmod/ulab/code/ulab_create.c msgid "too many dimensions" msgstr "" @@ -4001,11 +4006,11 @@ msgstr "" msgid "too many values to unpack (expected %d)" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/numpy/approx/approx.c msgid "trapz is defined for 1D arrays" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/numpy/approx/approx.c msgid "trapz is defined for 1D arrays of equal length" msgstr "" @@ -4176,7 +4181,7 @@ msgstr "" msgid "window must be <= interval" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "wrong axis index" msgstr "" @@ -4184,7 +4189,8 @@ msgstr "" msgid "wrong axis specified" msgstr "" -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/numpy/compare/compare.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "wrong input type" msgstr "" @@ -4200,7 +4206,7 @@ msgstr "" msgid "wrong operand type" msgstr "" -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "wrong output type" msgstr "" @@ -4224,14 +4230,14 @@ msgstr "" msgid "zero step" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "zi must be an ndarray" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "zi must be of float type" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "zi must be of shape (n_section, 2)" msgstr "" diff --git a/locale/en_GB.po b/locale/en_GB.po index 0e9d28fd89..1899eba465 100644 --- a/locale/en_GB.po +++ b/locale/en_GB.po @@ -7,25 +7,31 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: Automatically generated\n" +"PO-Revision-Date: 2021-04-11 01:30+0000\n" +"Last-Translator: Hugo Dahl \n" "Language-Team: none\n" "Language: en_GB\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.6-dev\n" #: main.c msgid "" "\n" "Code done running.\n" msgstr "" +"\n" +"Code done running.\n" #: main.c msgid "" "\n" "Code stopped by auto-reload.\n" msgstr "" +"\n" +"Code stopped by auto-reload.\n" #: supervisor/shared/safe_mode.c msgid "" @@ -33,41 +39,45 @@ msgid "" "Please file an issue with the contents of your CIRCUITPY drive at \n" "https://github.com/adafruit/circuitpython/issues\n" msgstr "" +"\n" +"Please file an issue with the contents of your CIRCUITPY drive at \n" +"https://github.com/adafruit/circuitpython/issues\n" #: py/obj.c msgid " File \"%q\"" -msgstr "" +msgstr " File \"%q\"" #: py/obj.c msgid " File \"%q\", line %d" -msgstr "" +msgstr " File \"%q\", line %d" #: py/builtinhelp.c msgid " is of type %q\n" -msgstr "" +msgstr " is of type %q\n" #: main.c msgid " output:\n" -msgstr "" +msgstr " output:\n" #: py/objstr.c #, c-format msgid "%%c requires int or char" -msgstr "" +msgstr "%%c requires int or char" #: shared-bindings/rgbmatrix/RGBMatrix.c #, c-format msgid "" "%d address pins, %d rgb pins and %d tiles indicate a height of %d, not %d" msgstr "" +"%d address pins, %d rgb pins and %d tiles indicate a height of %d, not %d" #: ports/atmel-samd/common-hal/sdioio/SDCard.c msgid "%q failure: %d" -msgstr "" +msgstr "%q failure: %d" #: shared-bindings/microcontroller/Pin.c msgid "%q in use" -msgstr "" +msgstr "%q in use" #: extmod/moductypes.c ports/atmel-samd/common-hal/pulseio/PulseIn.c #: ports/cxd56/common-hal/pulseio/PulseIn.c @@ -76,19 +86,19 @@ msgstr "" #: ports/stm/common-hal/pulseio/PulseIn.c py/obj.c py/objstr.c #: py/objstrunicode.c msgid "%q index out of range" -msgstr "" +msgstr "%q index out of range" #: py/obj.c msgid "%q indices must be integers, not %q" -msgstr "" +msgstr "%q indices must be integers, not %q" #: shared-bindings/vectorio/Polygon.c msgid "%q list must be a list" -msgstr "" +msgstr "%q list must be a list" #: shared-bindings/memorymonitor/AllocationAlarm.c msgid "%q must be >= 0" -msgstr "" +msgstr "%q must be >= 0" #: shared-bindings/_bleio/CharacteristicBuffer.c #: shared-bindings/_bleio/PacketBuffer.c shared-bindings/displayio/Group.c @@ -96,266 +106,266 @@ msgstr "" #: shared-bindings/memorymonitor/AllocationAlarm.c #: shared-bindings/vectorio/Circle.c shared-bindings/vectorio/Rectangle.c msgid "%q must be >= 1" -msgstr "" +msgstr "%q must be >= 1" #: shared-module/vectorio/Polygon.c msgid "%q must be a tuple of length 2" -msgstr "" +msgstr "%q must be a tuple of length 2" #: ports/raspberrypi/common-hal/rp2pio/StateMachine.c #: shared-bindings/canio/Match.c msgid "%q out of range" -msgstr "" +msgstr "%q out of range" #: ports/atmel-samd/common-hal/microcontroller/Pin.c msgid "%q pin invalid" -msgstr "" +msgstr "%q pin invalid" #: shared-bindings/fontio/BuiltinFont.c msgid "%q should be an int" -msgstr "" +msgstr "%q should be an int" #: py/bc.c py/objnamedtuple.c msgid "%q() takes %d positional arguments but %d were given" -msgstr "" +msgstr "%q() takes %d positional arguments but %d were given" #: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c #, c-format msgid "%s error 0x%x" -msgstr "" +msgstr "%s error 0x%x" #: py/argcheck.c msgid "'%q' argument required" -msgstr "" +msgstr "'%q' argument required" #: py/runtime.c msgid "'%q' object cannot assign attribute '%q'" -msgstr "" +msgstr "'%q' object cannot assign attribute '%q'" #: py/proto.c msgid "'%q' object does not support '%q'" -msgstr "" +msgstr "'%q' object does not support '%q'" #: py/obj.c msgid "'%q' object does not support item assignment" -msgstr "" +msgstr "'%q' object does not support item assignment" #: py/obj.c msgid "'%q' object does not support item deletion" -msgstr "" +msgstr "'%q' object does not support item deletion" #: py/runtime.c msgid "'%q' object has no attribute '%q'" -msgstr "" +msgstr "'%q' object has no attribute '%q'" #: py/runtime.c msgid "'%q' object is not an iterator" -msgstr "" +msgstr "'%q' object is not an iterator" #: py/objtype.c py/runtime.c msgid "'%q' object is not callable" -msgstr "" +msgstr "'%q' object is not callable" #: py/runtime.c msgid "'%q' object is not iterable" -msgstr "" +msgstr "'%q' object is not iterable" #: py/obj.c msgid "'%q' object is not subscriptable" -msgstr "" +msgstr "'%q' object is not subscriptable" #: py/emitinlinethumb.c py/emitinlinextensa.c #, c-format msgid "'%s' expects a label" -msgstr "" +msgstr "'%s' expects a label" #: py/emitinlinethumb.c py/emitinlinextensa.c #, c-format msgid "'%s' expects a register" -msgstr "" +msgstr "'%s' expects a register" #: py/emitinlinethumb.c #, c-format msgid "'%s' expects a special register" -msgstr "" +msgstr "'%s' expects a special register" #: py/emitinlinethumb.c #, c-format msgid "'%s' expects an FPU register" -msgstr "" +msgstr "'%s' expects an FPU register" #: py/emitinlinethumb.c #, c-format msgid "'%s' expects an address of the form [a, b]" -msgstr "" +msgstr "'%s' expects an address of the form [a, b]" #: py/emitinlinethumb.c py/emitinlinextensa.c #, c-format msgid "'%s' expects an integer" -msgstr "" +msgstr "'%s' expects an integer" #: py/emitinlinethumb.c #, c-format msgid "'%s' expects at most r%d" -msgstr "" +msgstr "'%s' expects at most r%d" #: py/emitinlinethumb.c #, c-format msgid "'%s' expects {r0, r1, ...}" -msgstr "" +msgstr "'%s' expects {r0, r1, ...}" #: py/emitinlinextensa.c #, c-format msgid "'%s' integer %d is not within range %d..%d" -msgstr "" +msgstr "'%s' integer %d is not within range %d..%d" #: py/emitinlinethumb.c #, c-format msgid "'%s' integer 0x%x does not fit in mask 0x%x" -msgstr "" +msgstr "'%s' integer 0x%x does not fit in mask 0x%x" #: py/objstr.c msgid "'=' alignment not allowed in string format specifier" -msgstr "" +msgstr "'=' alignment not allowed in string format specifier" #: shared-module/struct/__init__.c msgid "'S' and 'O' are not supported format types" -msgstr "" +msgstr "'S' and 'O' are not supported format types" #: py/compile.c msgid "'align' requires 1 argument" -msgstr "" +msgstr "'align' requires 1 argument" #: py/compile.c msgid "'await' outside function" -msgstr "" +msgstr "'await' outside function" #: py/compile.c msgid "'await', 'async for' or 'async with' outside async function" -msgstr "" +msgstr "'await', 'async for' or 'async with' outside async function" #: py/compile.c msgid "'break' outside loop" -msgstr "" +msgstr "'break' outside loop" #: py/compile.c msgid "'continue' outside loop" -msgstr "" +msgstr "'continue' outside loop" #: py/objgenerator.c msgid "'coroutine' object is not an iterator" -msgstr "" +msgstr "'coroutine' object is not an iterator" #: py/compile.c msgid "'data' requires at least 2 arguments" -msgstr "" +msgstr "'data' requires at least 2 arguments" #: py/compile.c msgid "'data' requires integer arguments" -msgstr "" +msgstr "'data' requires integer arguments" #: py/compile.c msgid "'label' requires 1 argument" -msgstr "" +msgstr "'label' requires 1 argument" #: py/compile.c msgid "'return' outside function" -msgstr "" +msgstr "'return' outside function" #: py/compile.c msgid "'yield from' inside async function" -msgstr "" +msgstr "'yield from' inside async function" #: py/compile.c msgid "'yield' outside function" -msgstr "" +msgstr "'yield' outside function" #: py/compile.c msgid "*x must be assignment target" -msgstr "" +msgstr "*x must be assignment target" #: py/obj.c msgid ", in %q\n" -msgstr "" +msgstr ", in %q\n" #: py/objcomplex.c msgid "0.0 to a complex power" -msgstr "" +msgstr "0.0 to a complex power" #: py/modbuiltins.c msgid "3-arg pow() not supported" -msgstr "" +msgstr "3-arg pow() not supported" #: shared-module/msgpack/__init__.c msgid "64 bit types" -msgstr "" +msgstr "64 bit types" #: ports/atmel-samd/common-hal/countio/Counter.c #: ports/atmel-samd/common-hal/rotaryio/IncrementalEncoder.c msgid "A hardware interrupt channel is already in use" -msgstr "" +msgstr "A hardware interrupt channel is already in use" #: ports/esp32s2/common-hal/analogio/AnalogIn.c msgid "ADC2 is being used by WiFi" -msgstr "" +msgstr "ADC2 is being used by WiFi" #: shared-bindings/_bleio/Address.c shared-bindings/ipaddress/IPv4Address.c #, c-format msgid "Address must be %d bytes long" -msgstr "" +msgstr "Address must be %d bytes long" #: shared-bindings/_bleio/Address.c msgid "Address type out of range" -msgstr "" +msgstr "Address type out of range" #: ports/esp32s2/common-hal/canio/CAN.c msgid "All CAN peripherals are in use" -msgstr "" +msgstr "All CAN peripherals are in use" #: ports/esp32s2/common-hal/busio/I2C.c ports/nrf/common-hal/busio/I2C.c msgid "All I2C peripherals are in use" -msgstr "" +msgstr "All I2C peripherals are in use" #: ports/esp32s2/common-hal/countio/Counter.c #: ports/esp32s2/common-hal/frequencyio/FrequencyIn.c #: ports/esp32s2/common-hal/rotaryio/IncrementalEncoder.c msgid "All PCNT units in use" -msgstr "" +msgstr "All PCNT units in use" #: ports/atmel-samd/common-hal/canio/Listener.c #: ports/esp32s2/common-hal/canio/Listener.c #: ports/stm/common-hal/canio/Listener.c msgid "All RX FIFOs in use" -msgstr "" +msgstr "All RX FIFOs in use" #: ports/esp32s2/common-hal/busio/SPI.c ports/nrf/common-hal/busio/SPI.c msgid "All SPI peripherals are in use" -msgstr "" +msgstr "All SPI peripherals are in use" #: ports/esp32s2/common-hal/busio/UART.c ports/nrf/common-hal/busio/UART.c #: ports/raspberrypi/common-hal/busio/UART.c msgid "All UART peripherals are in use" -msgstr "" +msgstr "All UART peripherals are in use" #: shared-bindings/pwmio/PWMOut.c msgid "All channels in use" -msgstr "" +msgstr "All channels in use" #: ports/atmel-samd/common-hal/audioio/AudioOut.c msgid "All event channels in use" -msgstr "" +msgstr "All event channels in use" #: ports/raspberrypi/common-hal/rp2pio/StateMachine.c msgid "All state machines in use" -msgstr "" +msgstr "All state machines in use" #: ports/atmel-samd/audio_dma.c ports/atmel-samd/common-hal/audiobusio/PDMIn.c msgid "All sync event channels in use" -msgstr "" +msgstr "All sync event channels in use" #: shared-bindings/pwmio/PWMOut.c msgid "All timers for this pin are in use" -msgstr "" +msgstr "All timers for this pin are in use" #: ports/atmel-samd/common-hal/_pew/PewPew.c #: ports/atmel-samd/common-hal/audioio/AudioOut.c @@ -372,183 +382,190 @@ msgstr "" #: ports/raspberrypi/common-hal/audiopwmio/PWMAudioOut.c #: ports/stm/peripherals/timers.c shared-bindings/pwmio/PWMOut.c msgid "All timers in use" -msgstr "" +msgstr "All timers in use" #: ports/nrf/common-hal/_bleio/Adapter.c msgid "Already advertising." -msgstr "" +msgstr "Already advertising." #: ports/atmel-samd/common-hal/canio/Listener.c msgid "Already have all-matches listener" -msgstr "" +msgstr "Already have all-matches listener" #: shared-module/memorymonitor/AllocationAlarm.c #: shared-module/memorymonitor/AllocationSize.c msgid "Already running" -msgstr "" +msgstr "Already running" #: ports/esp32s2/common-hal/wifi/Radio.c msgid "Already scanning for wifi networks" -msgstr "" +msgstr "Already scanning for WiFi networks" #: ports/cxd56/common-hal/analogio/AnalogIn.c msgid "AnalogIn not supported on given pin" -msgstr "" +msgstr "AnalogIn not supported on given pin" #: ports/cxd56/common-hal/analogio/AnalogOut.c #: ports/mimxrt10xx/common-hal/analogio/AnalogOut.c #: ports/nrf/common-hal/analogio/AnalogOut.c #: ports/raspberrypi/common-hal/analogio/AnalogOut.c msgid "AnalogOut functionality not supported" -msgstr "" +msgstr "AnalogOut functionality not supported" #: shared-bindings/analogio/AnalogOut.c msgid "AnalogOut is only 16 bits. Value must be less than 65536." -msgstr "" +msgstr "AnalogOut is only 16 bits. Value must be less than 65536." #: ports/atmel-samd/common-hal/analogio/AnalogOut.c msgid "AnalogOut not supported on given pin" +msgstr "AnalogOut not supported on given pin" + +#: ports/stm/common-hal/audiopwmio/PWMAudioOut.c +msgid "Another PWMAudioOut is already active" msgstr "" #: ports/atmel-samd/common-hal/pulseio/PulseOut.c #: ports/cxd56/common-hal/pulseio/PulseOut.c msgid "Another send is already active" -msgstr "" +msgstr "Another send is already active" #: shared-bindings/pulseio/PulseOut.c msgid "Array must contain halfwords (type 'H')" -msgstr "" +msgstr "Array must contain halfwords (type 'H')" #: shared-bindings/alarm/SleepMemory.c shared-bindings/nvm/ByteArray.c msgid "Array values should be single bytes." -msgstr "" +msgstr "Array values should be single bytes." #: shared-bindings/microcontroller/Pin.c msgid "At most %d %q may be specified (not %d)" -msgstr "" +msgstr "At most %d %q may be specified (not %d)" #: shared-module/memorymonitor/AllocationAlarm.c #, c-format msgid "Attempt to allocate %d blocks" -msgstr "" +msgstr "Attempt to allocate %d blocks" #: supervisor/shared/safe_mode.c -msgid "Attempted heap allocation when MicroPython VM not running." +msgid "Attempted heap allocation when VM not running." msgstr "" #: shared-bindings/wifi/Radio.c msgid "Authentication failure" -msgstr "" +msgstr "Authentication failure" #: main.c msgid "Auto-reload is off.\n" -msgstr "" +msgstr "Auto-reload is off.\n" #: main.c msgid "" "Auto-reload is on. Simply save files over USB to run them or enter REPL to " "disable.\n" msgstr "" +"Auto-reload is on. Simply save files over USB to run them or enter REPL to " +"disable.\n" #: ports/esp32s2/common-hal/canio/CAN.c msgid "Baudrate not supported by peripheral" -msgstr "" +msgstr "Baudrate not supported by peripheral" #: shared-module/displayio/Display.c #: shared-module/framebufferio/FramebufferDisplay.c msgid "Below minimum frame rate" -msgstr "" +msgstr "Below minimum frame rate" #: ports/raspberrypi/common-hal/audiobusio/I2SOut.c msgid "Bit clock and word select must be sequential pins" -msgstr "" +msgstr "Bit clock and word select must be sequential pins" #: ports/atmel-samd/common-hal/audiobusio/I2SOut.c msgid "Bit clock and word select must share a clock unit" -msgstr "" +msgstr "Bit clock and word select must share a clock unit" #: shared-bindings/rgbmatrix/RGBMatrix.c #, c-format msgid "Bit depth must be from 1 to 6 inclusive, not %d" -msgstr "" +msgstr "Bit depth must be from 1 to 6 inclusive, not %d" #: shared-bindings/audiobusio/PDMIn.c msgid "Bit depth must be multiple of 8." -msgstr "" +msgstr "Bit depth must be multiple of 8." #: ports/mimxrt10xx/common-hal/busio/UART.c msgid "Both RX and TX required for flow control" -msgstr "" +msgstr "Both RX and TX required for flow control" #: ports/atmel-samd/common-hal/rotaryio/IncrementalEncoder.c msgid "Both pins must support hardware interrupts" -msgstr "" +msgstr "Both pins must support hardware interrupts" #: shared-bindings/displayio/Display.c #: shared-bindings/framebufferio/FramebufferDisplay.c #: shared-bindings/rgbmatrix/RGBMatrix.c msgid "Brightness must be 0-1.0" -msgstr "" +msgstr "Brightness must be 0-1.0" #: shared-bindings/supervisor/__init__.c msgid "Brightness must be between 0 and 255" -msgstr "" +msgstr "Brightness must be between 0 and 255" #: shared-bindings/displayio/Display.c #: shared-bindings/framebufferio/FramebufferDisplay.c msgid "Brightness not adjustable" -msgstr "" +msgstr "Brightness not adjustable" #: shared-bindings/_bleio/UUID.c #, c-format msgid "Buffer + offset too small %d %d %d" -msgstr "" +msgstr "Buffer + offset too small %d %d %d" #: ports/raspberrypi/bindings/rp2pio/StateMachine.c msgid "Buffer elements must be 4 bytes long or less" -msgstr "" +msgstr "Buffer elements must be 4 bytes long or less" #: shared-module/usb_hid/Device.c #, c-format msgid "Buffer incorrect size. Should be %d bytes." -msgstr "" +msgstr "Buffer incorrect size. Should be %d bytes." #: shared-bindings/displayio/Display.c #: shared-bindings/framebufferio/FramebufferDisplay.c msgid "Buffer is not a bytearray." -msgstr "" +msgstr "Buffer is not a bytearray." #: ports/cxd56/common-hal/camera/Camera.c shared-bindings/displayio/Display.c #: shared-bindings/framebufferio/FramebufferDisplay.c msgid "Buffer is too small" -msgstr "" +msgstr "Buffer is too small" #: ports/nrf/common-hal/audiopwmio/PWMAudioOut.c +#: ports/stm/common-hal/audiopwmio/PWMAudioOut.c #, c-format msgid "Buffer length %d too big. It must be less than %d" -msgstr "" +msgstr "Buffer length %d too big. It must be less than %d" #: ports/atmel-samd/common-hal/sdioio/SDCard.c #: ports/cxd56/common-hal/sdioio/SDCard.c shared-module/sdcardio/SDCard.c msgid "Buffer length must be a multiple of 512" -msgstr "" +msgstr "Buffer length must be a multiple of 512" #: ports/stm/common-hal/sdioio/SDCard.c msgid "Buffer must be a multiple of 512 bytes" -msgstr "" +msgstr "Buffer must be a multiple of 512 bytes" #: shared-bindings/bitbangio/I2C.c shared-bindings/busio/I2C.c msgid "Buffer must be at least length 1" -msgstr "" +msgstr "Buffer must be at least length 1" #: ports/nrf/common-hal/_bleio/PacketBuffer.c msgid "Buffer too large and unable to allocate" -msgstr "" +msgstr "Buffer too large and unable to allocate" #: shared-bindings/_bleio/PacketBuffer.c #, c-format msgid "Buffer too short by %d bytes" -msgstr "" +msgstr "Buffer too short by %d bytes" #: ports/atmel-samd/common-hal/displayio/ParallelBus.c #: ports/esp32s2/common-hal/displayio/ParallelBus.c @@ -556,330 +573,334 @@ msgstr "" #: ports/raspberrypi/common-hal/displayio/ParallelBus.c #, c-format msgid "Bus pin %d is already in use" -msgstr "" +msgstr "Bus pin %d is already in use" #: shared-bindings/_bleio/UUID.c msgid "Byte buffer must be 16 bytes." -msgstr "" +msgstr "Byte buffer must be 16 bytes." #: shared-bindings/alarm/SleepMemory.c shared-bindings/nvm/ByteArray.c msgid "Bytes must be between 0 and 255." -msgstr "" +msgstr "Bytes must be between 0 and 255." #: shared-bindings/aesio/aes.c msgid "CBC blocks must be multiples of 16 bytes" -msgstr "" +msgstr "CBC blocks must be multiples of 16 bytes" #: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c msgid "CRC or checksum was invalid" -msgstr "" +msgstr "CRC or checksum was invalid" #: py/objtype.c msgid "Call super().__init__() before accessing native object." -msgstr "" +msgstr "Call super().__init__() before accessing native object." #: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c msgid "Can only alarm on RTC IO from deep sleep." -msgstr "" +msgstr "Can only alarm on RTC IO from deep sleep." #: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c msgid "Can only alarm on one low pin while others alarm high from deep sleep." -msgstr "" +msgstr "Can only alarm on one low pin while others alarm high from deep sleep." #: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c msgid "Can only alarm on two low pins from deep sleep." -msgstr "" +msgstr "Can only alarm on two low pins from deep sleep." #: ports/nrf/common-hal/_bleio/Characteristic.c msgid "Can't set CCCD on local Characteristic" -msgstr "" +msgstr "Can't set CCCD on local Characteristic" #: shared-bindings/_bleio/Adapter.c msgid "Cannot create a new Adapter; use _bleio.adapter;" -msgstr "" +msgstr "Cannot create a new Adapter; use _bleio.adapter;" #: shared-bindings/displayio/Bitmap.c #: shared-bindings/memorymonitor/AllocationSize.c #: shared-bindings/pulseio/PulseIn.c msgid "Cannot delete values" -msgstr "" +msgstr "Cannot delete values" #: ports/atmel-samd/common-hal/digitalio/DigitalInOut.c #: ports/mimxrt10xx/common-hal/digitalio/DigitalInOut.c #: ports/nrf/common-hal/digitalio/DigitalInOut.c #: ports/raspberrypi/common-hal/digitalio/DigitalInOut.c msgid "Cannot get pull while in output mode" -msgstr "" +msgstr "Cannot get pull while in output mode" #: ports/nrf/common-hal/microcontroller/Processor.c msgid "Cannot get temperature" -msgstr "" +msgstr "Cannot get temperature" #: shared-bindings/_bleio/Adapter.c msgid "Cannot have scan responses for extended, connectable advertisements." -msgstr "" +msgstr "Cannot have scan responses for extended, connectable advertisements." #: ports/atmel-samd/common-hal/audioio/AudioOut.c msgid "Cannot output both channels on the same pin" -msgstr "" +msgstr "Cannot output both channels on the same pin" #: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c msgid "Cannot pull on input-only pin." -msgstr "" +msgstr "Cannot pull on input-only pin." #: shared-module/bitbangio/SPI.c msgid "Cannot read without MISO pin." -msgstr "" +msgstr "Cannot read without MISO pin." #: shared-bindings/audiobusio/PDMIn.c msgid "Cannot record to a file" -msgstr "" +msgstr "Cannot record to a file" #: shared-module/storage/__init__.c msgid "Cannot remount '/' when USB is active." -msgstr "" +msgstr "Cannot remount '/' when USB is active." #: ports/atmel-samd/common-hal/microcontroller/__init__.c #: ports/cxd56/common-hal/microcontroller/__init__.c #: ports/mimxrt10xx/common-hal/microcontroller/__init__.c msgid "Cannot reset into bootloader because no bootloader is present." -msgstr "" +msgstr "Cannot reset into bootloader because no bootloader is present." #: ports/esp32s2/common-hal/socketpool/Socket.c msgid "Cannot set socket options" -msgstr "" +msgstr "Cannot set socket options" #: shared-bindings/digitalio/DigitalInOut.c msgid "Cannot set value when direction is input." -msgstr "" +msgstr "Cannot set value when direction is input." #: ports/esp32s2/common-hal/busio/UART.c #: ports/mimxrt10xx/common-hal/busio/UART.c msgid "Cannot specify RTS or CTS in RS485 mode" -msgstr "" +msgstr "Cannot specify RTS or CTS in RS485 mode" #: py/objslice.c msgid "Cannot subclass slice" -msgstr "" +msgstr "Cannot subclass slice" #: shared-module/bitbangio/SPI.c msgid "Cannot transfer without MOSI and MISO pins." -msgstr "" +msgstr "Cannot transfer without MOSI and MISO pins." #: extmod/moductypes.c msgid "Cannot unambiguously get sizeof scalar" -msgstr "" +msgstr "Cannot unambiguously get sizeof scalar" #: shared-bindings/pwmio/PWMOut.c msgid "Cannot vary frequency on a timer that is already in use" -msgstr "" +msgstr "Cannot vary frequency on a timer that is already in use" #: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c msgid "Cannot wake on pin edge. Only level." -msgstr "" +msgstr "Cannot wake on pin edge. Only level." #: shared-module/bitbangio/SPI.c msgid "Cannot write without MOSI pin." -msgstr "" +msgstr "Cannot write without MOSI pin." #: shared-bindings/_bleio/CharacteristicBuffer.c msgid "CharacteristicBuffer writing not provided" -msgstr "" +msgstr "CharacteristicBuffer writing not provided" #: supervisor/shared/safe_mode.c msgid "CircuitPython core code crashed hard. Whoops!\n" -msgstr "" +msgstr "CircuitPython core code crashed hard. Crikey!\n" #: supervisor/shared/safe_mode.c msgid "" "CircuitPython is in safe mode because you pressed the reset button during " "boot. Press again to exit safe mode.\n" msgstr "" +"CircuitPython is in safe mode because you pressed the reset button during " +"boot. Press again to exit safe mode.\n" #: supervisor/shared/safe_mode.c msgid "CircuitPython was unable to allocate the heap.\n" -msgstr "" +msgstr "CircuitPython was unable to allocate the heap.\n" #: shared-module/bitbangio/SPI.c msgid "Clock pin init failed." -msgstr "" +msgstr "Clock pin init failed." #: shared-module/bitbangio/I2C.c msgid "Clock stretch too long" -msgstr "" +msgstr "Clock stretch too long" #: ports/atmel-samd/common-hal/audiobusio/I2SOut.c msgid "Clock unit in use" -msgstr "" +msgstr "Clock unit in use" #: shared-bindings/_pew/PewPew.c msgid "Column entry must be digitalio.DigitalInOut" -msgstr "" +msgstr "Column entry must be digitalio.DigitalInOut" #: shared-bindings/displayio/FourWire.c shared-bindings/displayio/I2CDisplay.c #: shared-bindings/displayio/ParallelBus.c msgid "Command must be an int between 0 and 255" -msgstr "" +msgstr "Command must be an int between 0 and 255" #: shared-bindings/_bleio/Connection.c msgid "" "Connection has been disconnected and can no longer be used. Create a new " "connection." msgstr "" +"Connection has been disconnected and can no longer be used. Create a new " +"connection." #: py/persistentcode.c msgid "Corrupt .mpy file" -msgstr "" +msgstr "Corrupt .mpy file" #: py/emitglue.c msgid "Corrupt raw code" -msgstr "" +msgstr "Corrupt raw code" #: ports/cxd56/common-hal/camera/Camera.c msgid "Could not initialize Camera" -msgstr "" +msgstr "Could not initialise camera" #: ports/cxd56/common-hal/gnss/GNSS.c msgid "Could not initialize GNSS" -msgstr "" +msgstr "Could not initialise GNSS" #: ports/cxd56/common-hal/sdioio/SDCard.c msgid "Could not initialize SDCard" -msgstr "" +msgstr "Could not initialise SDCard" #: ports/atmel-samd/common-hal/busio/UART.c ports/cxd56/common-hal/busio/UART.c #: ports/esp32s2/common-hal/busio/UART.c msgid "Could not initialize UART" -msgstr "" +msgstr "Could not initialise UART" #: ports/stm/common-hal/pwmio/PWMOut.c msgid "Could not re-init channel" -msgstr "" +msgstr "Could not reinit channel" #: ports/stm/common-hal/pwmio/PWMOut.c msgid "Could not re-init timer" -msgstr "" +msgstr "Could not reinit timer" #: ports/stm/common-hal/pwmio/PWMOut.c msgid "Could not restart PWM" -msgstr "" +msgstr "Could not restart PWM" #: ports/esp32s2/common-hal/neopixel_write/__init__.c msgid "Could not retrieve clock" -msgstr "" +msgstr "Could not retrieve clock" #: shared-bindings/_bleio/Adapter.c msgid "Could not set address" -msgstr "" +msgstr "Could not set address" #: shared-bindings/pwmio/PWMOut.c msgid "Could not start PWM" -msgstr "" +msgstr "Could not start PWM" #: ports/stm/common-hal/busio/UART.c msgid "Could not start interrupt, RX busy" -msgstr "" +msgstr "Could not start interrupt, RX busy" #: shared-module/audiomp3/MP3Decoder.c msgid "Couldn't allocate decoder" -msgstr "" +msgstr "Couldn't allocate decoder" #: shared-module/audiocore/WaveFile.c shared-module/audiomixer/Mixer.c #: shared-module/audiomp3/MP3Decoder.c msgid "Couldn't allocate first buffer" -msgstr "" +msgstr "Couldn't allocate first buffer" #: shared-module/audiomp3/MP3Decoder.c msgid "Couldn't allocate input buffer" -msgstr "" +msgstr "Couldn't allocate input buffer" #: shared-module/audiocore/WaveFile.c shared-module/audiomixer/Mixer.c #: shared-module/audiomp3/MP3Decoder.c msgid "Couldn't allocate second buffer" -msgstr "" +msgstr "Couldn't allocate second buffer" #: supervisor/shared/safe_mode.c msgid "Crash into the HardFault_Handler." -msgstr "" +msgstr "Crash into the HardFault_Handler." #: ports/stm/common-hal/analogio/AnalogOut.c msgid "DAC Channel Init Error" -msgstr "" +msgstr "DAC channel init error" #: ports/stm/common-hal/analogio/AnalogOut.c msgid "DAC Device Init Error" -msgstr "" +msgstr "DAC device init error" #: ports/atmel-samd/common-hal/audioio/AudioOut.c msgid "DAC already in use" -msgstr "" +msgstr "DAC already in use" #: ports/atmel-samd/common-hal/displayio/ParallelBus.c #: ports/nrf/common-hal/displayio/ParallelBus.c msgid "Data 0 pin must be byte aligned" -msgstr "" +msgstr "Data 0 pin must be byte aligned" #: ports/esp32s2/common-hal/displayio/ParallelBus.c msgid "Data 0 pin must be byte aligned." -msgstr "" +msgstr "Data 0 pin must be byte aligned." #: shared-module/audiocore/WaveFile.c msgid "Data chunk must follow fmt chunk" -msgstr "" +msgstr "Data chunk must follow fmt chunk" #: ports/nrf/common-hal/_bleio/Adapter.c msgid "Data too large for advertisement packet" -msgstr "" +msgstr "Data too large for advertisement packet" #: shared-bindings/audiobusio/PDMIn.c msgid "Destination capacity is smaller than destination_length." -msgstr "" +msgstr "Destination capacity is smaller than destination_length." #: ports/nrf/common-hal/audiobusio/I2SOut.c msgid "Device in use" -msgstr "" +msgstr "Device in use" #: ports/cxd56/common-hal/digitalio/DigitalInOut.c msgid "DigitalInOut not supported on given pin" -msgstr "" +msgstr "DigitalInOut not supported on given pin" #: shared-bindings/displayio/Display.c #: shared-bindings/framebufferio/FramebufferDisplay.c msgid "Display must have a 16 bit colorspace." -msgstr "" +msgstr "Display must have a 16 bit colourspace." #: shared-bindings/displayio/Display.c #: shared-bindings/displayio/EPaperDisplay.c #: shared-bindings/framebufferio/FramebufferDisplay.c msgid "Display rotation must be in 90 degree increments" -msgstr "" +msgstr "Display rotation must be in 90 degree increments" #: shared-bindings/digitalio/DigitalInOut.c msgid "Drive mode not used when direction is input." -msgstr "" +msgstr "Drive mode not used when direction is input." #: shared-bindings/aesio/aes.c msgid "ECB only operates on 16 bytes at a time" -msgstr "" +msgstr "ECB only operates on 16 bytes at a time" #: ports/esp32s2/common-hal/busio/SPI.c ports/esp32s2/common-hal/canio/CAN.c msgid "ESP-IDF memory allocation failed" -msgstr "" +msgstr "ESP-IDF memory allocation failed" #: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c #: ports/atmel-samd/common-hal/ps2io/Ps2.c #: ports/atmel-samd/common-hal/pulseio/PulseIn.c #: ports/cxd56/common-hal/pulseio/PulseIn.c msgid "EXTINT channel already in use" -msgstr "" +msgstr "EXTINT channel already in use" #: extmod/modure.c msgid "Error in regex" -msgstr "" +msgstr "Error in regex" #: shared-bindings/socketpool/Socket.c shared-bindings/ssl/SSLSocket.c msgid "Error: Failure to bind" -msgstr "" +msgstr "Error: Failure to bind" #: ports/raspberrypi/bindings/rp2pio/StateMachine.c py/enum.c #: shared-bindings/_bleio/__init__.c shared-bindings/aesio/aes.c @@ -887,72 +908,72 @@ msgstr "" #: shared-bindings/neopixel_write/__init__.c #: shared-bindings/terminalio/Terminal.c msgid "Expected a %q" -msgstr "" +msgstr "Expected a %q" #: shared-bindings/_bleio/CharacteristicBuffer.c #: shared-bindings/_bleio/Descriptor.c shared-bindings/_bleio/PacketBuffer.c msgid "Expected a Characteristic" -msgstr "" +msgstr "Expected a Characteristic" #: shared-bindings/_bleio/Adapter.c msgid "Expected a DigitalInOut" -msgstr "" +msgstr "Expected a DigitalInOut" #: shared-bindings/_bleio/Characteristic.c msgid "Expected a Service" -msgstr "" +msgstr "Expected a service" #: shared-bindings/_bleio/Adapter.c msgid "Expected a UART" -msgstr "" +msgstr "Expected a UART" #: shared-bindings/_bleio/Characteristic.c shared-bindings/_bleio/Descriptor.c #: shared-bindings/_bleio/Service.c msgid "Expected a UUID" -msgstr "" +msgstr "Expected a UUID" #: shared-bindings/_bleio/Adapter.c msgid "Expected an Address" -msgstr "" +msgstr "Expected an address" #: shared-bindings/alarm/__init__.c msgid "Expected an alarm" -msgstr "" +msgstr "Expected an alarm" #: shared-module/_pixelbuf/PixelBuf.c #, c-format msgid "Expected tuple of length %d, got %d" -msgstr "" +msgstr "Expected tuple of length %d, got %d" #: ports/nrf/common-hal/_bleio/Adapter.c msgid "Extended advertisements with scan response not supported." -msgstr "" +msgstr "Extended advertisements with scan response not supported." -#: extmod/ulab/code/fft/fft.c +#: extmod/ulab/code/numpy/fft/fft_tools.c msgid "FFT is defined for ndarrays only" -msgstr "" +msgstr "FFT is defined for ndarrays only" -#: extmod/ulab/code/fft/fft.c +#: extmod/ulab/code/numpy/fft/fft_tools.c msgid "FFT is implemented for linear arrays only" -msgstr "" +msgstr "FFT is implemented for linear arrays only" #: ports/esp32s2/common-hal/ssl/SSLSocket.c msgid "Failed SSL handshake" -msgstr "" +msgstr "Failed SSL handshake" #: shared-bindings/ps2io/Ps2.c msgid "Failed sending command." -msgstr "" +msgstr "Failed sending command." #: ports/nrf/sd_mutex.c #, c-format msgid "Failed to acquire mutex, err 0x%04x" -msgstr "" +msgstr "Failed to acquire mutex, err 0x%04x" #: ports/mimxrt10xx/common-hal/busio/UART.c ports/nrf/common-hal/busio/UART.c #: ports/raspberrypi/common-hal/busio/UART.c msgid "Failed to allocate RX buffer" -msgstr "" +msgstr "Failed to allocate RX buffer" #: ports/atmel-samd/common-hal/busio/UART.c #: ports/atmel-samd/common-hal/pulseio/PulseIn.c @@ -963,304 +984,317 @@ msgstr "" #: ports/stm/common-hal/pulseio/PulseIn.c #, c-format msgid "Failed to allocate RX buffer of %d bytes" -msgstr "" +msgstr "Failed to allocate RX buffer of %d bytes" #: ports/esp32s2/common-hal/wifi/__init__.c msgid "Failed to allocate Wifi memory" -msgstr "" +msgstr "Failed to allocate WiFi memory" #: ports/esp32s2/common-hal/wifi/ScannedNetworks.c msgid "Failed to allocate wifi scan memory" +msgstr "Failed to allocate WiFi scan memory" + +#: ports/stm/common-hal/audiopwmio/PWMAudioOut.c +msgid "Failed to buffer the sample" msgstr "" #: ports/nrf/common-hal/_bleio/Adapter.c msgid "Failed to connect: internal error" -msgstr "" +msgstr "Failed to connect: internal error" #: ports/nrf/common-hal/_bleio/Adapter.c msgid "Failed to connect: timeout" -msgstr "" +msgstr "Failed to connect: timeout" #: ports/esp32s2/common-hal/wifi/__init__.c msgid "Failed to init wifi" -msgstr "" +msgstr "Failed to init WiFi" #: shared-module/audiomp3/MP3Decoder.c msgid "Failed to parse MP3 file" -msgstr "" +msgstr "Failed to parse MP3 file" #: ports/nrf/sd_mutex.c #, c-format msgid "Failed to release mutex, err 0x%04x" -msgstr "" +msgstr "Failed to release mutex, err 0x%04x" #: supervisor/shared/safe_mode.c msgid "Failed to write internal flash." +msgstr "Failed to write internal flash." + +#: supervisor/shared/safe_mode.c +msgid "Fatal error." msgstr "" #: py/moduerrno.c msgid "File exists" -msgstr "" +msgstr "File exists" #: ports/atmel-samd/common-hal/canio/Listener.c #: ports/esp32s2/common-hal/canio/Listener.c #: ports/stm/common-hal/canio/Listener.c msgid "Filters too complex" -msgstr "" +msgstr "Filters too complex" #: ports/esp32s2/common-hal/dualbank/__init__.c msgid "Firmware image is invalid" -msgstr "" +msgstr "Firmware image is invalid" #: ports/cxd56/common-hal/camera/Camera.c msgid "Format not supported" -msgstr "" +msgstr "Format not supported" #: shared-module/framebufferio/FramebufferDisplay.c #, c-format msgid "Framebuffer requires %d bytes" -msgstr "" +msgstr "Framebuffer requires %d bytes" #: shared-bindings/pwmio/PWMOut.c msgid "Frequency must match existing PWMOut using this timer" -msgstr "" +msgstr "Frequency must match existing PWMOut using this timer" #: shared-bindings/bitbangio/I2C.c shared-bindings/bitbangio/SPI.c #: shared-bindings/busio/I2C.c shared-bindings/busio/SPI.c msgid "Function requires lock" -msgstr "" +msgstr "Function requires lock" #: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c msgid "Generic Failure" -msgstr "" +msgstr "Generic Failure" #: shared-bindings/displayio/Display.c #: shared-bindings/displayio/EPaperDisplay.c #: shared-bindings/framebufferio/FramebufferDisplay.c msgid "Group already used" -msgstr "" +msgstr "Group already used" #: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/I2C.c #: 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 "Hardware busy, try alternative pins" #: ports/mimxrt10xx/common-hal/busio/UART.c ports/stm/common-hal/busio/UART.c msgid "Hardware in use, try alternative pins" -msgstr "" +msgstr "Hardware in use, try alternative pins" #: shared-bindings/wifi/Radio.c msgid "Hostname must be between 1 and 253 characters" -msgstr "" +msgstr "Hostname must be between 1 and 253 characters" #: extmod/vfs_posix_file.c py/objstringio.c msgid "I/O operation on closed file" -msgstr "" +msgstr "I/O operation on closed file" #: ports/stm/common-hal/busio/I2C.c msgid "I2C Init Error" -msgstr "" +msgstr "I2C init error" #: ports/raspberrypi/common-hal/busio/I2C.c msgid "I2C peripheral in use" -msgstr "" +msgstr "I2C peripheral in use" #: shared-bindings/audiobusio/I2SOut.c msgid "I2SOut not available" -msgstr "" +msgstr "I2SOut not available" #: ports/esp32s2/common-hal/alarm/pin/__init__.c msgid "IOs 0, 2 & 4 do not support internal pullup in sleep" -msgstr "" +msgstr "IOs 0, 2 & 4 do not support internal pullup in sleep" #: shared-bindings/aesio/aes.c #, c-format msgid "IV must be %d bytes long" -msgstr "" +msgstr "IV must be %d bytes long" #: ports/raspberrypi/bindings/rp2pio/StateMachine.c msgid "In-buffer elements must be <= 4 bytes long" -msgstr "" +msgstr "In-buffer elements must be <= 4 bytes long" #: py/persistentcode.c msgid "" "Incompatible .mpy file. Please update all .mpy files. See http://adafru.it/" "mpy-update for more info." msgstr "" +"Incompatible .mpy file. Please update all .mpy files. See https://adafru.it/" +"mpy-update for more info." #: shared-bindings/_pew/PewPew.c msgid "Incorrect buffer size" -msgstr "" +msgstr "Incorrect buffer size" #: ports/raspberrypi/bindings/rp2pio/StateMachine.c msgid "Init program size invalid" -msgstr "" +msgstr "Init program size invalid" #: ports/raspberrypi/common-hal/rp2pio/StateMachine.c msgid "Initial set pin direction conflicts with initial out pin direction" -msgstr "" +msgstr "Initial set pin direction conflicts with initial out pin direction" #: ports/raspberrypi/common-hal/rp2pio/StateMachine.c msgid "Initial set pin state conflicts with initial out pin state" -msgstr "" +msgstr "Initial set pin state conflicts with initial out pin state" #: ports/esp32s2/common-hal/watchdog/WatchDogTimer.c msgid "Initialization failed due to lack of memory" -msgstr "" +msgstr "Initialisation failed due to lack of memory" #: shared-bindings/bitops/__init__.c #, c-format msgid "Input buffer length (%d) must be a multiple of the strand count (%d)" -msgstr "" +msgstr "Input buffer length (%d) must be a multiple of the strand count (%d)" #: ports/atmel-samd/common-hal/pulseio/PulseIn.c msgid "Input taking too long" -msgstr "" +msgstr "Input taking too long" #: ports/esp32s2/common-hal/neopixel_write/__init__.c py/moduerrno.c msgid "Input/output error" -msgstr "" +msgstr "Input/output error" #: ports/raspberrypi/common-hal/rp2pio/StateMachine.c #, c-format msgid "Instruction %d jumps on pin" -msgstr "" +msgstr "Instruction %d jumps on pin" #: ports/raspberrypi/common-hal/rp2pio/StateMachine.c #, c-format msgid "Instruction %d shifts in more bits than pin count" -msgstr "" +msgstr "Instruction %d shifts in more bits than pin count" #: ports/raspberrypi/common-hal/rp2pio/StateMachine.c #, c-format msgid "Instruction %d shifts out more bits than pin count" -msgstr "" +msgstr "Instruction %d shifts out more bits than pin count" #: ports/raspberrypi/common-hal/rp2pio/StateMachine.c #, c-format msgid "Instruction %d uses extra pin" -msgstr "" +msgstr "Instruction %d uses extra pin" #: ports/raspberrypi/common-hal/rp2pio/StateMachine.c #, c-format msgid "Instruction %d waits on input outside of count" -msgstr "" +msgstr "Instruction %d waits on input outside of count" #: ports/nrf/common-hal/_bleio/__init__.c msgid "Insufficient authentication" -msgstr "" +msgstr "Insufficient authentication" #: ports/nrf/common-hal/_bleio/__init__.c msgid "Insufficient encryption" -msgstr "" +msgstr "Insufficient encryption" #: ports/stm/common-hal/busio/UART.c msgid "Internal define error" -msgstr "" +msgstr "Internal define error" #: shared-module/rgbmatrix/RGBMatrix.c #, c-format msgid "Internal error #%d" -msgstr "" +msgstr "Internal error #%d" #: shared-bindings/sdioio/SDCard.c msgid "Invalid %q" -msgstr "" +msgstr "Invalid %q" #: ports/atmel-samd/common-hal/audiobusio/I2SOut.c #: ports/atmel-samd/common-hal/audiobusio/PDMIn.c +#: ports/mimxrt10xx/common-hal/busio/UART.c msgid "Invalid %q pin" -msgstr "" +msgstr "Invalid %q pin" #: 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 "" +msgstr "Invalid %q pin selection" #: ports/stm/common-hal/analogio/AnalogIn.c msgid "Invalid ADC Unit value" -msgstr "" +msgstr "Invalid ADC unit value" #: shared-module/displayio/OnDiskBitmap.c msgid "Invalid BMP file" -msgstr "" +msgstr "Invalid BMP file" #: shared-bindings/wifi/Radio.c msgid "Invalid BSSID" -msgstr "" +msgstr "Invalid BSSID" #: ports/esp32s2/common-hal/analogio/AnalogOut.c #: ports/stm/common-hal/analogio/AnalogOut.c msgid "Invalid DAC pin supplied" -msgstr "" +msgstr "Invalid DAC pin supplied" #: ports/atmel-samd/common-hal/pwmio/PWMOut.c -#: ports/cxd56/common-hal/pwmio/PWMOut.c ports/nrf/common-hal/pwmio/PWMOut.c +#: ports/cxd56/common-hal/pwmio/PWMOut.c +#: ports/mimxrt10xx/common-hal/pwmio/PWMOut.c +#: ports/nrf/common-hal/pwmio/PWMOut.c #: ports/raspberrypi/common-hal/pwmio/PWMOut.c shared-bindings/pwmio/PWMOut.c msgid "Invalid PWM frequency" -msgstr "" +msgstr "Invalid PWM frequency" #: ports/esp32s2/common-hal/analogio/AnalogIn.c msgid "Invalid Pin" -msgstr "" +msgstr "Invalid pin" #: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c #: py/moduerrno.c shared-module/rgbmatrix/RGBMatrix.c msgid "Invalid argument" -msgstr "" +msgstr "Invalid argument" #: shared-module/displayio/Bitmap.c msgid "Invalid bits per value" -msgstr "" +msgstr "Invalid bits per value" #: ports/nrf/common-hal/busio/UART.c ports/raspberrypi/common-hal/busio/UART.c #: ports/stm/common-hal/busio/UART.c msgid "Invalid buffer size" -msgstr "" +msgstr "Invalid buffer size" #: shared-bindings/_pixelbuf/PixelBuf.c msgid "Invalid byteorder string" -msgstr "" +msgstr "Invalid byteorder string" #: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c #: ports/esp32s2/common-hal/frequencyio/FrequencyIn.c msgid "Invalid capture period. Valid range: 1 - 500" -msgstr "" +msgstr "Invalid capture period. Valid range: 1 - 500" #: shared-bindings/audiomixer/Mixer.c msgid "Invalid channel count" -msgstr "" +msgstr "Invalid channel count" #: shared-bindings/digitalio/DigitalInOut.c msgid "Invalid direction." -msgstr "" +msgstr "Invalid direction." #: shared-module/audiocore/WaveFile.c msgid "Invalid file" -msgstr "" +msgstr "Invalid file" #: shared-module/audiocore/WaveFile.c msgid "Invalid format chunk size" -msgstr "" +msgstr "Invalid format chunk size" #: ports/esp32s2/common-hal/busio/I2C.c ports/esp32s2/common-hal/pwmio/PWMOut.c msgid "Invalid frequency" -msgstr "" +msgstr "Invalid frequency" #: supervisor/shared/safe_mode.c msgid "Invalid memory access." -msgstr "" +msgstr "Invalid memory access." #: shared-bindings/bitbangio/SPI.c shared-bindings/busio/SPI.c msgid "Invalid number of bits" -msgstr "" +msgstr "Invalid number of bits" #: shared-bindings/bitbangio/SPI.c shared-bindings/busio/SPI.c #: shared-bindings/displayio/FourWire.c msgid "Invalid phase" -msgstr "" +msgstr "Invalid phase" #: ports/atmel-samd/common-hal/audioio/AudioOut.c #: ports/atmel-samd/common-hal/touchio/TouchIn.c @@ -1268,15 +1302,15 @@ msgstr "" #: ports/esp32s2/common-hal/touchio/TouchIn.c shared-bindings/pwmio/PWMOut.c #: shared-module/rgbmatrix/RGBMatrix.c msgid "Invalid pin" -msgstr "" +msgstr "Invalid pin" #: ports/atmel-samd/common-hal/audioio/AudioOut.c msgid "Invalid pin for left channel" -msgstr "" +msgstr "Invalid pin for left channel" #: ports/atmel-samd/common-hal/audioio/AudioOut.c msgid "Invalid pin for right channel" -msgstr "" +msgstr "Invalid pin for right channel" #: ports/atmel-samd/common-hal/busio/I2C.c #: ports/atmel-samd/common-hal/busio/SPI.c @@ -1292,343 +1326,345 @@ msgstr "" #: ports/raspberrypi/common-hal/busio/SPI.c #: ports/raspberrypi/common-hal/busio/UART.c msgid "Invalid pins" -msgstr "" +msgstr "Invalid pins" #: shared-bindings/bitbangio/SPI.c shared-bindings/busio/SPI.c #: shared-bindings/displayio/FourWire.c msgid "Invalid polarity" -msgstr "" +msgstr "Invalid polarity" #: shared-bindings/_bleio/Characteristic.c msgid "Invalid properties" -msgstr "" +msgstr "Invalid properties" #: shared-bindings/microcontroller/__init__.c msgid "Invalid run mode." -msgstr "" +msgstr "Invalid run mode." #: shared-module/_bleio/Attribute.c msgid "Invalid security_mode" -msgstr "" +msgstr "Invalid security_mode" #: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c msgid "Invalid size" -msgstr "" +msgstr "Invalid size" #: ports/esp32s2/common-hal/ssl/SSLContext.c msgid "Invalid socket for TLS" -msgstr "" +msgstr "Invalid socket for TLS" #: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c msgid "Invalid state" -msgstr "" +msgstr "Invalid state" #: shared-bindings/audiomixer/Mixer.c msgid "Invalid voice" -msgstr "" +msgstr "Invalid voice" #: shared-bindings/audiomixer/Mixer.c msgid "Invalid voice count" -msgstr "" +msgstr "Invalid voice count" #: shared-module/audiocore/WaveFile.c msgid "Invalid wave file" -msgstr "" +msgstr "Invalid wave file" #: 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 "Invalid word/bit length" -msgstr "" +msgstr "Invalid word/bit length" #: shared-bindings/aesio/aes.c msgid "Key must be 16, 24, or 32 bytes long" -msgstr "" +msgstr "Key must be 16, 24, or 32 bytes long" #: py/compile.c msgid "LHS of keyword arg must be an id" -msgstr "" +msgstr "LHS of keyword arg must be an id" #: shared-module/displayio/Group.c msgid "Layer already in a group." -msgstr "" +msgstr "Layer already in a group." #: shared-module/displayio/Group.c msgid "Layer must be a Group or TileGrid subclass." -msgstr "" +msgstr "Layer must be a Group or TileGrid subclass." #: py/objslice.c msgid "Length must be an int" -msgstr "" +msgstr "Length must be an int" #: py/objslice.c msgid "Length must be non-negative" -msgstr "" +msgstr "Length must be non-negative" #: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c msgid "MAC address was invalid" -msgstr "" +msgstr "MAC address was invalid" #: shared-module/bitbangio/SPI.c msgid "MISO pin init failed." -msgstr "" +msgstr "MISO pin init failed." #: shared-module/bitbangio/SPI.c msgid "MOSI pin init failed." -msgstr "" +msgstr "MOSI pin init failed." #: shared-module/displayio/Shape.c #, c-format msgid "Maximum x value when mirrored is %d" -msgstr "" +msgstr "Maximum x value when mirrored is %d" #: shared-bindings/canio/Message.c msgid "Messages limited to 8 bytes" -msgstr "" - -#: supervisor/shared/safe_mode.c -msgid "MicroPython NLR jump failed. Likely memory corruption." -msgstr "" - -#: supervisor/shared/safe_mode.c -msgid "MicroPython fatal error." -msgstr "" +msgstr "Messages limited to 8 bytes" #: shared-bindings/audiobusio/PDMIn.c msgid "Microphone startup delay must be in range 0.0 to 1.0" -msgstr "" +msgstr "Microphone startup delay must be in range 0.0 to 1.0" #: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/SPI.c msgid "Missing MISO or MOSI Pin" -msgstr "" +msgstr "Missing MISO or MOSI pin" #: ports/raspberrypi/common-hal/rp2pio/StateMachine.c #, c-format msgid "Missing first_in_pin. Instruction %d reads pin(s)" -msgstr "" +msgstr "Missing first_in_pin. Instruction %d reads pin(s)" #: ports/raspberrypi/common-hal/rp2pio/StateMachine.c #, c-format msgid "Missing first_in_pin. Instruction %d shifts in from pin(s)" -msgstr "" +msgstr "Missing first_in_pin. Instruction %d shifts in from pin(s)" #: ports/raspberrypi/common-hal/rp2pio/StateMachine.c #, c-format msgid "Missing first_in_pin. Instruction %d waits based on pin" -msgstr "" +msgstr "Missing first_in_pin. Instruction %d waits based on pin" #: ports/raspberrypi/common-hal/rp2pio/StateMachine.c #, c-format msgid "Missing first_out_pin. Instruction %d shifts out to pin(s)" -msgstr "" +msgstr "Missing first_out_pin. Instruction %d shifts out to pin(s)" #: ports/raspberrypi/common-hal/rp2pio/StateMachine.c #, c-format msgid "Missing first_out_pin. Instruction %d writes pin(s)" -msgstr "" +msgstr "Missing first_out_pin. Instruction %d writes pin(s)" #: ports/raspberrypi/common-hal/rp2pio/StateMachine.c #, c-format msgid "Missing first_set_pin. Instruction %d sets pin(s)" -msgstr "" +msgstr "Missing first_set_pin. Instruction %d sets pin(s)" #: shared-bindings/displayio/Group.c msgid "Must be a %q subclass." -msgstr "" +msgstr "Must be a %q subclass." #: ports/mimxrt10xx/common-hal/busio/SPI.c shared-bindings/busio/SPI.c msgid "Must provide MISO or MOSI pin" -msgstr "" +msgstr "Must provide MISO or MOSI pin" #: shared-bindings/rgbmatrix/RGBMatrix.c #, c-format msgid "Must use a multiple of 6 rgb pins, not %d" +msgstr "Must use a multiple of 6 rgb pins, not %d" + +#: supervisor/shared/safe_mode.c +msgid "NLR jump failed. Likely memory corruption." msgstr "" #: ports/esp32s2/common-hal/nvm/ByteArray.c msgid "NVS Error" -msgstr "" +msgstr "NVS Error" #: py/parse.c msgid "Name too long" -msgstr "" +msgstr "Name too long" #: ports/nrf/common-hal/_bleio/Characteristic.c msgid "No CCCD for this Characteristic" -msgstr "" +msgstr "No CCCD for this Characteristic" #: ports/atmel-samd/common-hal/analogio/AnalogOut.c #: ports/stm/common-hal/analogio/AnalogOut.c msgid "No DAC on chip" -msgstr "" +msgstr "No DAC on chip" #: ports/atmel-samd/common-hal/audiobusio/I2SOut.c #: ports/atmel-samd/common-hal/audioio/AudioOut.c #: ports/raspberrypi/common-hal/audiobusio/I2SOut.c #: ports/raspberrypi/common-hal/audiopwmio/PWMAudioOut.c msgid "No DMA channel found" -msgstr "" +msgstr "No DMA channel found" #: ports/raspberrypi/common-hal/audiopwmio/PWMAudioOut.c msgid "No DMA pacing timer found" -msgstr "" +msgstr "No DMA pacing timer found" #: shared-module/adafruit_bus_device/I2CDevice.c #, c-format msgid "No I2C device at address: %x" -msgstr "" +msgstr "No I2C device at address: %x" #: ports/esp32s2/common-hal/busio/SPI.c ports/mimxrt10xx/common-hal/busio/SPI.c #: ports/stm/common-hal/busio/SPI.c msgid "No MISO Pin" -msgstr "" +msgstr "No MISO pin" #: ports/esp32s2/common-hal/busio/SPI.c ports/mimxrt10xx/common-hal/busio/SPI.c #: ports/stm/common-hal/busio/SPI.c msgid "No MOSI Pin" -msgstr "" +msgstr "No MOSI pin" #: ports/atmel-samd/common-hal/busio/UART.c #: ports/esp32s2/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 "" +msgstr "No RX pin" #: ports/atmel-samd/common-hal/busio/UART.c #: ports/esp32s2/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 "" +msgstr "No TX pin" #: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c msgid "No available clocks" -msgstr "" +msgstr "No available clocks" #: shared-bindings/_bleio/PacketBuffer.c msgid "No connection: length cannot be determined" -msgstr "" +msgstr "No connection: length cannot be determined" #: shared-bindings/board/__init__.c msgid "No default %q bus" -msgstr "" +msgstr "No default %q bus" #: ports/atmel-samd/common-hal/touchio/TouchIn.c msgid "No free GCLKs" -msgstr "" +msgstr "No free GCLKs" #: shared-bindings/os/__init__.c msgid "No hardware random available" -msgstr "" +msgstr "No hardware random available" #: ports/atmel-samd/common-hal/ps2io/Ps2.c msgid "No hardware support on clk pin" -msgstr "" +msgstr "No hardware support on clk pin" #: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c #: ports/atmel-samd/common-hal/pulseio/PulseIn.c msgid "No hardware support on pin" -msgstr "" +msgstr "No hardware support on pin" #: ports/raspberrypi/common-hal/rp2pio/StateMachine.c msgid "No in in program" -msgstr "" +msgstr "No in in program" #: ports/raspberrypi/common-hal/rp2pio/StateMachine.c msgid "No in or out in program" -msgstr "" +msgstr "No in or out in program" #: shared-bindings/aesio/aes.c msgid "No key was specified" -msgstr "" +msgstr "No key was specified" #: shared-bindings/time/__init__.c msgid "No long integer support" -msgstr "" +msgstr "No long integer support" #: shared-bindings/wifi/Radio.c msgid "No network with that ssid" -msgstr "" +msgstr "No network with that ssid" #: ports/raspberrypi/common-hal/rp2pio/StateMachine.c msgid "No out in program" -msgstr "" +msgstr "No out in program" #: ports/atmel-samd/common-hal/busio/I2C.c ports/esp32s2/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 msgid "No pull up found on SDA or SCL; check your wiring" -msgstr "" +msgstr "No pull up found on SDA or SCL; check your wiring" #: shared-module/touchio/TouchIn.c msgid "No pulldown on pin; 1Mohm recommended" -msgstr "" +msgstr "No pulldown on pin; 1Mohm recommended" #: py/moduerrno.c msgid "No space left on device" -msgstr "" +msgstr "No space left on device" #: py/moduerrno.c msgid "No such file/directory" -msgstr "" +msgstr "No such file/directory" #: shared-module/rgbmatrix/RGBMatrix.c msgid "No timer available" -msgstr "" +msgstr "No timer available" #: supervisor/shared/safe_mode.c -msgid "Nordic Soft Device failure assertion." +msgid "Nordic system firmware failure assertion." +msgstr "" + +#: ports/nrf/common-hal/_bleio/__init__.c +msgid "Nordic system firmware out of memory" msgstr "" #: shared-bindings/ipaddress/IPv4Address.c shared-bindings/ipaddress/__init__.c msgid "Not a valid IP string" -msgstr "" +msgstr "Not a valid IP string" #: ports/nrf/common-hal/_bleio/__init__.c #: shared-bindings/_bleio/CharacteristicBuffer.c msgid "Not connected" -msgstr "" +msgstr "Not connected" #: shared-bindings/audiobusio/I2SOut.c shared-bindings/audioio/AudioOut.c #: shared-bindings/audiopwmio/PWMAudioOut.c msgid "Not playing" -msgstr "" +msgstr "Not playing" #: main.c msgid "Not running saved code.\n" -msgstr "" +msgstr "Not running saved code.\n" #: shared-bindings/_bleio/__init__.c msgid "Not settable" -msgstr "" +msgstr "Not settable" #: shared-bindings/util.c msgid "" "Object has been deinitialized and can no longer be used. Create a new object." msgstr "" +"Object has been deinitialised and can no longer be used. Create a new object." #: ports/nrf/common-hal/busio/UART.c msgid "Odd parity is not supported" -msgstr "" +msgstr "Odd parity is not supported" #: ports/atmel-samd/common-hal/audiobusio/PDMIn.c #: ports/raspberrypi/common-hal/audiobusio/PDMIn.c msgid "Only 8 or 16 bit mono with " -msgstr "" +msgstr "Only 8 or 16 bit mono with " #: ports/esp32s2/common-hal/wifi/__init__.c msgid "Only IPv4 addresses supported" -msgstr "" +msgstr "Only IPv4 addresses supported" #: ports/esp32s2/common-hal/socketpool/SocketPool.c msgid "Only IPv4 sockets supported" -msgstr "" +msgstr "Only IPv4 sockets supported" #: shared-module/displayio/OnDiskBitmap.c #, c-format msgid "" "Only Windows format, uncompressed BMP supported: given header size is %d" msgstr "" +"Only Windows format, uncompressed BMP supported: given header size is %d" #: shared-module/displayio/OnDiskBitmap.c #, c-format @@ -1636,94 +1672,98 @@ msgid "" "Only monochrome, indexed 4bpp or 8bpp, and 16bpp or greater BMPs supported: " "%d bpp given" msgstr "" +"Only monochrome, indexed 4bpp or 8bpp, and 16bpp or greater BMPs supported: " +"%d bpp given" #: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c msgid "Only one TouchAlarm can be set in deep sleep." -msgstr "" +msgstr "Only one TouchAlarm can be set in deep sleep." #: ports/esp32s2/common-hal/alarm/time/TimeAlarm.c msgid "Only one alarm.time alarm can be set." -msgstr "" +msgstr "Only one alarm.time alarm can be set." #: shared-module/displayio/ColorConverter.c msgid "Only one color can be transparent at a time" -msgstr "" +msgstr "Only one colour can be transparent at a time" #: shared-bindings/ipaddress/__init__.c msgid "Only raw int supported for ip" -msgstr "" +msgstr "Only raw int supported for ip" #: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c msgid "Operation or feature not supported" -msgstr "" +msgstr "Operation or feature not supported" #: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c msgid "Operation timed out" -msgstr "" +msgstr "Operation timed out" #: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c msgid "Out of memory" -msgstr "" +msgstr "Out of memory" #: ports/esp32s2/common-hal/socketpool/SocketPool.c msgid "Out of sockets" -msgstr "" +msgstr "Out of sockets" #: ports/raspberrypi/bindings/rp2pio/StateMachine.c msgid "Out-buffer elements must be <= 4 bytes long" -msgstr "" +msgstr "Out-buffer elements must be <= 4 bytes long" #: shared-bindings/bitops/__init__.c #, c-format msgid "Output buffer must be at least %d bytes" -msgstr "" +msgstr "Output buffer must be at least %d bytes" #: shared-bindings/audiobusio/PDMIn.c msgid "Oversample must be multiple of 8." -msgstr "" +msgstr "Oversample must be multiple of 8." #: shared-bindings/audiobusio/PDMIn.c msgid "PDMIn not available" -msgstr "" +msgstr "PDMIn not available" #: shared-bindings/pwmio/PWMOut.c msgid "" "PWM duty_cycle must be between 0 and 65535 inclusive (16 bit resolution)" msgstr "" +"PWM duty_cycle must be between 0 and 65535 inclusive (16 bit resolution)" #: shared-bindings/pwmio/PWMOut.c msgid "" "PWM frequency not writable when variable_frequency is False on construction." msgstr "" +"PWM frequency not writable when variable_frequency is False on construction." #: ports/raspberrypi/common-hal/countio/Counter.c msgid "PWM slice already in use" -msgstr "" +msgstr "PWM slice already in use" #: ports/raspberrypi/common-hal/countio/Counter.c msgid "PWM slice channel A already in use" -msgstr "" +msgstr "PWM slice channel A already in use" #: ports/mimxrt10xx/common-hal/displayio/ParallelBus.c #: ports/stm/common-hal/displayio/ParallelBus.c msgid "ParallelBus not yet supported" -msgstr "" +msgstr "ParallelBus not yet supported" #: ports/esp32s2/common-hal/audiobusio/__init__.c msgid "Peripheral in use" -msgstr "" +msgstr "Peripheral in use" #: py/moduerrno.c msgid "Permission denied" -msgstr "" +msgstr "Permission denied" #: ports/raspberrypi/bindings/rp2pio/StateMachine.c msgid "Pin count must be at least 1" -msgstr "" +msgstr "Pin count must be at least 1" #: ports/raspberrypi/common-hal/rp2pio/StateMachine.c msgid "Pin count too large" -msgstr "" +msgstr "Pin count too large" #: ports/atmel-samd/common-hal/analogio/AnalogIn.c #: ports/cxd56/common-hal/analogio/AnalogIn.c @@ -1733,24 +1773,24 @@ msgstr "" #: ports/raspberrypi/common-hal/analogio/AnalogIn.c #: ports/stm/common-hal/analogio/AnalogIn.c msgid "Pin does not have ADC capabilities" -msgstr "" +msgstr "Pin does not have ADC capabilities" #: shared-bindings/adafruit_bus_device/SPIDevice.c #: shared-bindings/digitalio/DigitalInOut.c msgid "Pin is input only" -msgstr "" +msgstr "Pin is input only" #: ports/raspberrypi/common-hal/countio/Counter.c msgid "Pin must be on PWM Channel B" -msgstr "" +msgstr "Pin must be on PWM Channel B" #: ports/atmel-samd/common-hal/countio/Counter.c msgid "Pin must support hardware interrupts" -msgstr "" +msgstr "Pin must support hardware interrupts" #: ports/stm/common-hal/pulseio/PulseIn.c msgid "Pin number already reserved by EXTI" -msgstr "" +msgstr "Pin number already reserved by EXTI" #: shared-bindings/rgbmatrix/RGBMatrix.c #, c-format @@ -1759,28 +1799,33 @@ msgid "" "bytes. If this cannot be avoided, pass allow_inefficient=True to the " "constructor" msgstr "" +"Pinout uses %d bytes per element, which consumes more than the ideal %d " +"bytes. If this cannot be avoided, pass allow_inefficient=True to the " +"constructor" #: ports/raspberrypi/common-hal/rotaryio/IncrementalEncoder.c msgid "Pins must be sequential" -msgstr "" +msgstr "Pins must be sequential" #: ports/raspberrypi/common-hal/audiopwmio/PWMAudioOut.c msgid "Pins must share PWM slice" -msgstr "" +msgstr "Pins must share PWM slice" #: py/builtinhelp.c msgid "Plus any modules on the filesystem\n" -msgstr "" +msgstr "Plus any modules on the filesystem\n" #: shared-module/vectorio/Polygon.c msgid "Polygon needs at least 3 points" -msgstr "" +msgstr "Polygon needs at least 3 points" #: ports/esp32s2/common-hal/pulseio/PulseOut.c msgid "" "Port does not accept PWM carrier. Pass a pin, frequency and duty cycle " "instead" msgstr "" +"Port does not accept PWM carrier. Pass a pin, frequency and duty cycle " +"instead" #: ports/atmel-samd/common-hal/pulseio/PulseOut.c #: ports/cxd56/common-hal/pulseio/PulseOut.c @@ -1790,266 +1835,264 @@ msgid "" "Port does not accept pins or frequency. Construct and pass a PWMOut Carrier " "instead" msgstr "" +"Port does not accept pins or frequency. Construct and pass a PWMOut Carrier " +"instead" #: shared-bindings/_bleio/Adapter.c msgid "Prefix buffer must be on the heap" -msgstr "" +msgstr "Prefix buffer must be on the heap" #: main.c msgid "Press any key to enter the REPL. Use CTRL-D to reload.\n" -msgstr "" +msgstr "Press any key to enter the REPL. Use CTRL-D to reload.\n" #: main.c msgid "Pretending to deep sleep until alarm, CTRL-C or file write.\n" -msgstr "" +msgstr "Pretending to deep sleep until alarm, CTRL-C or file write.\n" #: ports/raspberrypi/common-hal/rp2pio/StateMachine.c msgid "Program does IN without loading ISR" -msgstr "" +msgstr "Program does IN without loading ISR" #: ports/raspberrypi/common-hal/rp2pio/StateMachine.c msgid "Program does OUT without loading OSR" -msgstr "" +msgstr "Program does OUT without loading OSR" #: ports/raspberrypi/bindings/rp2pio/StateMachine.c msgid "Program must contain at least one 16-bit instruction." -msgstr "" +msgstr "Program must contain at least one 16-bit instruction." #: ports/raspberrypi/bindings/rp2pio/StateMachine.c msgid "Program size invalid" -msgstr "" +msgstr "Program size invalid" #: ports/raspberrypi/bindings/rp2pio/StateMachine.c msgid "Program too large" -msgstr "" +msgstr "Program too large" #: shared-bindings/digitalio/DigitalInOut.c msgid "Pull not used when direction is output." -msgstr "" +msgstr "Pull not used when direction is output." #: ports/raspberrypi/common-hal/watchdog/WatchDogTimer.c msgid "RAISE mode is not implemented" -msgstr "" +msgstr "RAISE mode is not implemented" #: ports/stm/common-hal/os/__init__.c msgid "RNG DeInit Error" -msgstr "" +msgstr "RNG deinit Error" #: ports/stm/common-hal/os/__init__.c msgid "RNG Init Error" -msgstr "" +msgstr "RNG init Error" #: ports/nrf/common-hal/busio/UART.c ports/raspberrypi/common-hal/busio/UART.c msgid "RS485 Not yet supported on this device" -msgstr "" +msgstr "RS485 not yet supported on this device" #: ports/esp32s2/common-hal/busio/UART.c #: ports/mimxrt10xx/common-hal/busio/UART.c msgid "RS485 inversion specified when not in RS485 mode" -msgstr "" +msgstr "RS485 inversion specified when not in RS485 mode" #: ports/cxd56/common-hal/rtc/RTC.c ports/esp32s2/common-hal/rtc/RTC.c #: ports/mimxrt10xx/common-hal/rtc/RTC.c ports/nrf/common-hal/rtc/RTC.c #: ports/raspberrypi/common-hal/rtc/RTC.c msgid "RTC calibration is not supported on this board" -msgstr "" +msgstr "RTC calibration is not supported on this board" #: shared-bindings/alarm/time/TimeAlarm.c shared-bindings/time/__init__.c msgid "RTC is not supported on this board" -msgstr "" +msgstr "RTC is not supported on this board" #: ports/atmel-samd/common-hal/busio/UART.c ports/cxd56/common-hal/busio/UART.c #: ports/stm/common-hal/busio/UART.c msgid "RTS/CTS/RS485 Not yet supported on this device" -msgstr "" +msgstr "RTS/CTS/RS485 not yet supported on this device" #: ports/stm/common-hal/os/__init__.c msgid "Random number generation error" -msgstr "" +msgstr "Random number generation error" #: shared-bindings/memorymonitor/AllocationSize.c #: shared-bindings/pulseio/PulseIn.c msgid "Read-only" -msgstr "" +msgstr "Read-only" #: extmod/vfs_fat.c py/moduerrno.c msgid "Read-only filesystem" -msgstr "" +msgstr "Read-only filesystem" -#: shared-module/bitmaptools/__init__.c shared-module/displayio/Bitmap.c +#: shared-module/displayio/Bitmap.c msgid "Read-only object" -msgstr "" +msgstr "Read-only object" #: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c msgid "Received response was invalid" -msgstr "" +msgstr "Received response was invalid" #: shared-bindings/displayio/EPaperDisplay.c msgid "Refresh too soon" -msgstr "" +msgstr "Refresh too soon" #: shared-bindings/canio/RemoteTransmissionRequest.c msgid "RemoteTransmissionRequests limited to 8 bytes" -msgstr "" +msgstr "RemoteTransmissionRequests limited to 8 bytes" #: shared-bindings/aesio/aes.c msgid "Requested AES mode is unsupported" -msgstr "" +msgstr "Requested AES mode is unsupported" #: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c msgid "Requested resource not found" -msgstr "" +msgstr "Requested resource not found" #: ports/atmel-samd/common-hal/audioio/AudioOut.c msgid "Right channel unsupported" -msgstr "" +msgstr "Right channel unsupported" #: shared-bindings/_pew/PewPew.c msgid "Row entry must be digitalio.DigitalInOut" -msgstr "" +msgstr "Row entry must be digitalio. DigitalInOut" #: main.c msgid "Running in safe mode! " -msgstr "" +msgstr "Running in safe mode! " #: shared-module/sdcardio/SDCard.c msgid "SD card CSD format not supported" -msgstr "" +msgstr "SD card CSD format not supported" #: ports/stm/common-hal/sdioio/SDCard.c #, c-format msgid "SDIO GetCardInfo Error %d" -msgstr "" +msgstr "SDIO GetCardInfo error %d" #: ports/stm/common-hal/sdioio/SDCard.c #, c-format msgid "SDIO Init Error %d" -msgstr "" +msgstr "SDIO init error %d" #: ports/stm/common-hal/busio/SPI.c msgid "SPI Init Error" -msgstr "" +msgstr "SPI init error" #: ports/stm/common-hal/busio/SPI.c msgid "SPI Re-initialization error" -msgstr "" +msgstr "SPI reinitialisation error" #: ports/raspberrypi/common-hal/busio/SPI.c msgid "SPI peripheral in use" -msgstr "" +msgstr "SPI peripheral in use" #: shared-bindings/audiomixer/Mixer.c msgid "Sample rate must be positive" -msgstr "" +msgstr "Sample rate must be positive" #: ports/atmel-samd/common-hal/audioio/AudioOut.c #, c-format msgid "Sample rate too high. It must be less than %d" -msgstr "" +msgstr "Sample rate too high. It must be less than %d" #: ports/nrf/common-hal/_bleio/Adapter.c msgid "Scan already in progess. Stop with stop_scan." -msgstr "" - -#: ports/mimxrt10xx/common-hal/busio/UART.c -msgid "Selected CTS pin not valid" -msgstr "" - -#: ports/mimxrt10xx/common-hal/busio/UART.c -msgid "Selected RTS pin not valid" -msgstr "" +msgstr "Scan already in progess. Stop with stop_scan." #: ports/atmel-samd/common-hal/audiobusio/I2SOut.c #: ports/atmel-samd/common-hal/audiobusio/PDMIn.c msgid "Serializer in use" -msgstr "" +msgstr "Serialiser in use" #: shared-bindings/ssl/SSLContext.c msgid "Server side context cannot have hostname" -msgstr "" +msgstr "Server side context cannot have hostname" #: ports/raspberrypi/bindings/rp2pio/StateMachine.c msgid "Set pin count must be between 1 and 5" -msgstr "" +msgstr "Set pin count must be between 1 and 5" #: ports/raspberrypi/bindings/rp2pio/StateMachine.c msgid "Side set pin count must be between 1 and 5" -msgstr "" +msgstr "Side set pin count must be between 1 and 5" #: ports/cxd56/common-hal/camera/Camera.c msgid "Size not supported" -msgstr "" +msgstr "Size not supported" #: shared-bindings/alarm/SleepMemory.c shared-bindings/nvm/ByteArray.c msgid "Slice and value different lengths." -msgstr "" +msgstr "Slice and value different lengths." #: shared-bindings/displayio/Bitmap.c shared-bindings/displayio/Group.c #: shared-bindings/displayio/TileGrid.c #: shared-bindings/memorymonitor/AllocationSize.c #: shared-bindings/pulseio/PulseIn.c msgid "Slices not supported" -msgstr "" +msgstr "Slices not supported" #: ports/esp32s2/common-hal/socketpool/SocketPool.c msgid "SocketPool can only be used with wifi.radio" -msgstr "" +msgstr "SocketPool can only be used with wifi.radio" #: shared-bindings/aesio/aes.c msgid "Source and destination buffers must be the same length" -msgstr "" +msgstr "Source and destination buffers must be the same length" #: extmod/modure.c msgid "Splitting with sub-captures" -msgstr "" +msgstr "Splitting with sub-captures" #: shared-bindings/supervisor/__init__.c msgid "Stack size must be at least 256" -msgstr "" +msgstr "Stack size must be at least 256" #: ports/raspberrypi/common-hal/audiopwmio/PWMAudioOut.c msgid "Stereo left must be on PWM channel A" -msgstr "" +msgstr "Stereo left must be on PWM channel A" #: ports/raspberrypi/common-hal/audiopwmio/PWMAudioOut.c msgid "Stereo right must be on PWM channel B" -msgstr "" +msgstr "Stereo right must be on PWM channel B" #: shared-bindings/multiterminal/__init__.c msgid "Stream missing readinto() or write() method." -msgstr "" +msgstr "Stream missing readinto() or write() method." #: ports/mimxrt10xx/common-hal/busio/UART.c ports/stm/common-hal/busio/UART.c msgid "Supply at least one UART pin" -msgstr "" +msgstr "Supply at least one UART pin" #: shared-bindings/alarm/time/TimeAlarm.c msgid "Supply one of monotonic_time or epoch_time" -msgstr "" +msgstr "Supply one of monotonic_time or epoch_time" #: shared-bindings/gnss/GNSS.c msgid "System entry must be gnss.SatelliteSystem" -msgstr "" +msgstr "System entry must be gnss.SatelliteSystem" #: ports/stm/common-hal/microcontroller/Processor.c msgid "Temperature read timed out" -msgstr "" +msgstr "Temperature read timed out" #: supervisor/shared/safe_mode.c msgid "" "The CircuitPython heap was corrupted because the stack was too small.\n" "Please increase the stack size if you know how, or if not:" msgstr "" +"The CircuitPython heap was corrupted because the stack was too small.\n" +"Please increase the stack size if you know how, or if not:" #: supervisor/shared/safe_mode.c msgid "" "The `microcontroller` module was used to boot into safe mode. Press reset to " "exit safe mode.\n" msgstr "" +"The `microcontroller` module was used to boot into safe mode. Press reset to " +"exit safe mode.\n" #: shared-bindings/rgbmatrix/RGBMatrix.c msgid "The length of rgb_pins must be 6, 12, 18, 24, or 30" -msgstr "" +msgstr "The length of rgb_pins must be 6, 12, 18, 24, or 30" #: supervisor/shared/safe_mode.c msgid "" @@ -2057,270 +2100,275 @@ msgid "" "enough power for the whole circuit and press reset (after ejecting " "CIRCUITPY).\n" msgstr "" +"The microcontroller's power dipped. Make sure your power supply provides\n" +"enough power for the whole circuit and press reset (after ejecting " +"CIRCUITPY).\n" #: shared-module/audiomixer/MixerVoice.c msgid "The sample's bits_per_sample does not match the mixer's" -msgstr "" +msgstr "The sample's bits_per_sample does not match the mixer's" #: shared-module/audiomixer/MixerVoice.c msgid "The sample's channel count does not match the mixer's" -msgstr "" +msgstr "The sample's channel count does not match the mixer's" #: shared-module/audiomixer/MixerVoice.c msgid "The sample's sample rate does not match the mixer's" -msgstr "" +msgstr "The sample's sample rate does not match the mixer's" #: shared-module/audiomixer/MixerVoice.c msgid "The sample's signedness does not match the mixer's" -msgstr "" +msgstr "The sample's signedness does not match the mixer's" #: shared-bindings/displayio/TileGrid.c msgid "Tile height must exactly divide bitmap height" -msgstr "" +msgstr "Tile height must exactly divide bitmap height" #: shared-bindings/displayio/TileGrid.c shared-module/displayio/TileGrid.c msgid "Tile index out of bounds" -msgstr "" +msgstr "Tile index out of bounds" #: shared-bindings/displayio/TileGrid.c msgid "Tile value out of bounds" -msgstr "" +msgstr "Tile value out of bounds" #: shared-bindings/displayio/TileGrid.c msgid "Tile width must exactly divide bitmap width" -msgstr "" +msgstr "Tile width must exactly divide bitmap width" #: shared-bindings/alarm/time/TimeAlarm.c msgid "Time is in the past." -msgstr "" +msgstr "Time is in the past." #: ports/nrf/common-hal/_bleio/Adapter.c #, c-format msgid "Timeout is too long: Maximum timeout length is %d seconds" -msgstr "" +msgstr "Timeout is too long: Maximum timeout length is %d seconds" #: supervisor/shared/safe_mode.c msgid "To exit, please reset the board without " -msgstr "" +msgstr "To exit, please reset the board without " #: ports/atmel-samd/common-hal/audiobusio/I2SOut.c #: ports/raspberrypi/common-hal/audiobusio/I2SOut.c msgid "Too many channels in sample." -msgstr "" +msgstr "Too many channels in sample." #: shared-module/displayio/__init__.c msgid "Too many display busses" -msgstr "" +msgstr "Too many display busses" #: shared-module/displayio/__init__.c msgid "Too many displays" -msgstr "" +msgstr "Too many displays" #: ports/nrf/common-hal/_bleio/PacketBuffer.c msgid "Total data to write is larger than outgoing_packet_length" -msgstr "" +msgstr "Total data to write is larger than outgoing_packet_length" #: py/obj.c msgid "Traceback (most recent call last):\n" -msgstr "" +msgstr "Traceback (most recent call last):\n" #: shared-bindings/time/__init__.c msgid "Tuple or struct_time argument required" -msgstr "" +msgstr "Tuple or struct_time argument required" #: ports/stm/common-hal/busio/UART.c msgid "UART Buffer allocation error" -msgstr "" +msgstr "UART buffer allocation error" #: ports/stm/common-hal/busio/UART.c msgid "UART De-init error" -msgstr "" +msgstr "UART deinit error" #: ports/stm/common-hal/busio/UART.c msgid "UART Init Error" -msgstr "" +msgstr "UART init Error" #: ports/stm/common-hal/busio/UART.c msgid "UART Re-init error" -msgstr "" +msgstr "UART reinit error" #: ports/stm/common-hal/busio/UART.c msgid "UART write error" -msgstr "" +msgstr "UART write error" #: shared-module/usb_hid/Device.c msgid "USB Busy" -msgstr "" +msgstr "USB busy" #: shared-module/usb_hid/Device.c msgid "USB Error" -msgstr "" +msgstr "USB error" #: shared-bindings/_bleio/UUID.c msgid "UUID integer value must be 0-0xffff" -msgstr "" +msgstr "UUID integer value must be 0-0xffff" #: shared-bindings/_bleio/UUID.c msgid "UUID string not 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'" -msgstr "" +msgstr "UUID string not 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'" #: shared-bindings/_bleio/UUID.c msgid "UUID value is not str, int or byte buffer" -msgstr "" +msgstr "UUID value is not str, int or byte buffer" #: ports/atmel-samd/common-hal/audiobusio/I2SOut.c #: ports/atmel-samd/common-hal/audioio/AudioOut.c #: ports/raspberrypi/common-hal/audiobusio/I2SOut.c #: ports/raspberrypi/common-hal/audiopwmio/PWMAudioOut.c msgid "Unable to allocate buffers for signed conversion" -msgstr "" +msgstr "Unable to allocate buffers for signed conversion" #: ports/esp32s2/common-hal/busio/I2C.c msgid "Unable to create lock" -msgstr "" +msgstr "Unable to create lock" #: shared-module/displayio/I2CDisplay.c #, c-format msgid "Unable to find I2C Display at %x" -msgstr "" +msgstr "Unable to find I2C display at %x" #: ports/atmel-samd/common-hal/audiobusio/I2SOut.c #: ports/atmel-samd/common-hal/audiobusio/PDMIn.c msgid "Unable to find free GCLK" -msgstr "" +msgstr "Unable to find free GCLK" #: py/parse.c msgid "Unable to init parser" -msgstr "" +msgstr "Unable to init parser" #: shared-module/displayio/OnDiskBitmap.c msgid "Unable to read color palette data" -msgstr "" +msgstr "Unable to read colour palette data" #: shared-bindings/nvm/ByteArray.c msgid "Unable to write to nvm." -msgstr "" +msgstr "Unable to write to nvm." #: shared-bindings/alarm/SleepMemory.c msgid "Unable to write to sleep_memory." -msgstr "" +msgstr "Unable to write to sleep_memory." #: ports/nrf/common-hal/_bleio/UUID.c msgid "Unexpected nrfx uuid type" -msgstr "" +msgstr "Unexpected nrfx uuid type" #: ports/esp32s2/common-hal/ssl/SSLSocket.c #, c-format msgid "Unhandled ESP TLS error %d %d %x %d" -msgstr "" +msgstr "Unhandled ESP TLS error %d %d %x %d" #: shared-bindings/wifi/Radio.c #, c-format msgid "Unknown failure %d" -msgstr "" +msgstr "Unknown failure %d" #: ports/nrf/common-hal/_bleio/__init__.c #, c-format msgid "Unknown gatt error: 0x%04x" -msgstr "" +msgstr "Unknown gatt error: 0x%04x" #: supervisor/shared/safe_mode.c msgid "Unknown reason." -msgstr "" +msgstr "Unknown reason." #: ports/nrf/common-hal/_bleio/__init__.c #, c-format msgid "Unknown security error: 0x%04x" -msgstr "" +msgstr "Unknown security error: 0x%04x" #: ports/nrf/common-hal/_bleio/__init__.c #, c-format -msgid "Unknown soft device error: %04x" +msgid "Unknown system firmware error: %04x" msgstr "" #: shared-bindings/_pixelbuf/PixelBuf.c #, c-format msgid "Unmatched number of items on RHS (expected %d, got %d)." -msgstr "" +msgstr "Unmatched number of items on RHS (expected %d, got %d)." #: ports/nrf/common-hal/_bleio/__init__.c msgid "" "Unspecified issue. Can be that the pairing prompt on the other device was " "declined or ignored." msgstr "" +"Unspecified issue. Can be that the pairing prompt on the other device was " +"declined or ignored." #: ports/atmel-samd/common-hal/busio/I2C.c ports/cxd56/common-hal/busio/I2C.c #: ports/esp32s2/common-hal/busio/UART.c #: ports/raspberrypi/common-hal/busio/I2C.c ports/stm/common-hal/busio/I2C.c msgid "Unsupported baudrate" -msgstr "" +msgstr "Unsupported baudrate" #: shared-module/displayio/display_core.c msgid "Unsupported display bus type" -msgstr "" +msgstr "Unsupported display bus type" #: shared-module/audiocore/WaveFile.c msgid "Unsupported format" -msgstr "" +msgstr "Unsupported format" #: ports/raspberrypi/common-hal/pulseio/PulseOut.c py/moduerrno.c msgid "Unsupported operation" -msgstr "" +msgstr "Unsupported operation" #: shared-bindings/digitalio/DigitalInOut.c msgid "Unsupported pull value." -msgstr "" +msgstr "Unsupported pull value." #: ports/esp32s2/common-hal/dualbank/__init__.c msgid "Update Failed" -msgstr "" +msgstr "Update failed" #: ports/nrf/common-hal/_bleio/Characteristic.c #: ports/nrf/common-hal/_bleio/Descriptor.c msgid "Value length != required fixed length" -msgstr "" +msgstr "Value length != required fixed length" #: ports/nrf/common-hal/_bleio/Characteristic.c #: ports/nrf/common-hal/_bleio/Descriptor.c msgid "Value length > max_length" -msgstr "" +msgstr "Value length > max_length" #: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c msgid "Version was invalid" -msgstr "" +msgstr "Version was invalid" #: py/emitnative.c msgid "Viper functions don't currently support more than 4 arguments" -msgstr "" +msgstr "Viper functions don't currently support more than 4 arguments" #: ports/stm/common-hal/microcontroller/Processor.c msgid "Voltage read timed out" -msgstr "" +msgstr "Voltage read timed out" #: main.c msgid "WARNING: Your code filename has two extensions\n" -msgstr "" +msgstr "WARNING: Your code filename has two extensions\n" #: ports/nrf/common-hal/watchdog/WatchDogTimer.c #: ports/raspberrypi/common-hal/watchdog/WatchDogTimer.c msgid "WatchDogTimer cannot be deinitialized once mode is set to RESET" -msgstr "" +msgstr "WatchDogTimer cannot be deinitialised once mode is set to RESET" #: shared-bindings/watchdog/WatchDogTimer.c msgid "WatchDogTimer is not currently running" -msgstr "" +msgstr "WatchDogTimer is not currently running" #: shared-bindings/watchdog/WatchDogTimer.c msgid "WatchDogTimer.mode cannot be changed once set to WatchDogMode.RESET" -msgstr "" +msgstr "WatchDogTimer.mode cannot be changed once set to WatchDogMode.RESET" #: shared-bindings/watchdog/WatchDogTimer.c msgid "WatchDogTimer.timeout must be greater than 0" -msgstr "" +msgstr "WatchDogTimer.timeout must be greater than 0" #: supervisor/shared/safe_mode.c msgid "Watchdog timer expired." -msgstr "" +msgstr "WatchDog timer expired." #: py/builtinhelp.c #, c-format @@ -2331,1358 +2379,1364 @@ msgid "" "\n" "To list built-in modules please do `help(\"modules\")`.\n" msgstr "" +"Welcome to Adafruit CircuitPython %s!\n" +"\n" +"Please visit learn.adafruit.com/category/circuitpython for project guides.\n" +"\n" +"To list built-in modules please do `help(\"modules\")`.\n" #: shared-bindings/wifi/Radio.c msgid "WiFi password must be between 8 and 63 characters" -msgstr "" +msgstr "WiFi password must be between 8 and 63 characters" #: main.c msgid "Woken up by alarm.\n" -msgstr "" +msgstr "Woken up by alarm.\n" #: ports/nrf/common-hal/_bleio/PacketBuffer.c msgid "Writes not supported on Characteristic" -msgstr "" +msgstr "Writes not supported on Characteristic" #: supervisor/shared/safe_mode.c msgid "You are in safe mode: something unanticipated happened.\n" -msgstr "" +msgstr "You are in safe mode: something unanticipated happened.\n" #: supervisor/shared/safe_mode.c msgid "You requested starting safe mode by " -msgstr "" +msgstr "You requested starting safe mode by " #: py/objtype.c msgid "__init__() should return None" -msgstr "" +msgstr "__init__() should return None" #: py/objtype.c msgid "__init__() should return None, not '%q'" -msgstr "" +msgstr "__init__() should return None, not '%q'" #: py/objobject.c msgid "__new__ arg must be a user-type" -msgstr "" +msgstr "__new__ arg must be a user-type" #: extmod/modubinascii.c extmod/moduhashlib.c py/objarray.c msgid "a bytes-like object is required" -msgstr "" +msgstr "a bytes-like object is required" #: lib/embed/abort_.c msgid "abort() called" -msgstr "" +msgstr "abort() called" #: extmod/machine_mem.c #, c-format msgid "address %08x is not aligned to %d bytes" -msgstr "" +msgstr "address %08x is not aligned to %d bytes" #: shared-bindings/i2cperipheral/I2CPeripheral.c msgid "address out of bounds" -msgstr "" +msgstr "address out of bounds" #: shared-bindings/i2cperipheral/I2CPeripheral.c msgid "addresses is empty" -msgstr "" +msgstr "addresses is empty" #: py/modbuiltins.c msgid "arg is an empty sequence" -msgstr "" +msgstr "arg is an empty sequence" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "argsort argument must be an ndarray" -msgstr "" +msgstr "argsort argument must be an ndarray" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "argsort is not implemented for flattened arrays" -msgstr "" +msgstr "argsort is not implemented for flattened arrays" #: py/runtime.c msgid "argument has wrong type" -msgstr "" - -#: extmod/ulab/code/linalg/linalg.c -msgid "argument must be ndarray" -msgstr "" +msgstr "argument has wrong type" #: py/argcheck.c shared-bindings/_stage/__init__.c #: shared-bindings/digitalio/DigitalInOut.c shared-bindings/gamepad/GamePad.c msgid "argument num/types mismatch" -msgstr "" +msgstr "argument num/types mismatch" #: py/runtime.c msgid "argument should be a '%q' not a '%q'" -msgstr "" +msgstr "argument should be a '%q' not a '%q'" -#: extmod/ulab/code/linalg/linalg.c extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c +#: extmod/ulab/code/numpy/transform/transform.c msgid "arguments must be ndarrays" -msgstr "" +msgstr "arguments must be ndarrays" #: extmod/ulab/code/ndarray.c msgid "array and index length must be equal" -msgstr "" +msgstr "array and index length must be equal" #: py/objarray.c shared-bindings/alarm/SleepMemory.c #: shared-bindings/nvm/ByteArray.c msgid "array/bytes required on right side" -msgstr "" +msgstr "array/bytes required on right side" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "attempt to get (arg)min/(arg)max of empty sequence" -msgstr "" +msgstr "attempt to get (arg)min/(arg)max of empty sequence" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "attempt to get argmin/argmax of an empty sequence" -msgstr "" +msgstr "attempt to get argmin/argmax of an empty sequence" #: py/objstr.c msgid "attributes not supported yet" -msgstr "" +msgstr "attributes not supported yet" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "axis is out of bounds" -msgstr "" +msgstr "axis is out of bounds" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c extmod/ulab/code/ulab_tools.c msgid "axis must be None, or an integer" -msgstr "" +msgstr "axis must be None, or an integer" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "axis too long" -msgstr "" +msgstr "axis too long" #: py/builtinevex.c msgid "bad compile mode" -msgstr "" +msgstr "bad compile mode" #: py/objstr.c msgid "bad conversion specifier" -msgstr "" +msgstr "bad conversion specifier" #: py/objstr.c msgid "bad format string" -msgstr "" +msgstr "bad format string" #: py/binary.c py/objarray.c msgid "bad typecode" -msgstr "" +msgstr "bad typecode" #: py/emitnative.c msgid "binary op %q not implemented" -msgstr "" +msgstr "binary op %q not implemented" #: shared-bindings/busio/UART.c msgid "bits must be in range 5 to 9" -msgstr "" +msgstr "bits must be in range 5 to 9" #: shared-bindings/audiomixer/Mixer.c msgid "bits_per_sample must be 8 or 16" -msgstr "" +msgstr "bits_per_sample must be 8 or 16" #: py/emitinlinethumb.c msgid "branch not in range" -msgstr "" +msgstr "Branch not in range" -#: extmod/ulab/code/ulab_create.c +#: extmod/ulab/code/ulab_create.c extmod/ulab/code/utils/utils.c msgid "buffer is smaller than requested size" -msgstr "" +msgstr "Buffer is smaller than requested size" #: shared-bindings/audiocore/RawSample.c msgid "buffer must be a bytes-like object" -msgstr "" +msgstr "Buffer must be a bytes-like object" -#: extmod/ulab/code/ulab_create.c +#: extmod/ulab/code/ulab_create.c extmod/ulab/code/utils/utils.c msgid "buffer size must be a multiple of element size" -msgstr "" +msgstr "Buffer size must be a multiple of element size" #: shared-module/struct/__init__.c msgid "buffer size must match format" -msgstr "" +msgstr "Buffer size must match format" #: shared-bindings/bitbangio/SPI.c shared-bindings/busio/SPI.c msgid "buffer slices must be of equal length" -msgstr "" +msgstr "Buffer slices must be of equal length" #: py/modstruct.c shared-bindings/struct/__init__.c #: shared-module/struct/__init__.c msgid "buffer too small" -msgstr "" +msgstr "Buffer too small" #: shared-bindings/socketpool/Socket.c shared-bindings/ssl/SSLSocket.c msgid "buffer too small for requested bytes" -msgstr "" +msgstr "Buffer too small for requested bytes" #: shared-bindings/_pew/PewPew.c msgid "buttons must be digitalio.DigitalInOut" -msgstr "" +msgstr "Buttons must be digitalio.DigitalInOut" #: py/vm.c msgid "byte code not implemented" -msgstr "" +msgstr "Byte code not implemented" #: shared-bindings/_pixelbuf/PixelBuf.c msgid "byteorder is not a string" -msgstr "" +msgstr "Byteorder is not a string" #: ports/atmel-samd/common-hal/busio/UART.c #: ports/esp32s2/common-hal/busio/UART.c msgid "bytes > 8 bits not supported" -msgstr "" +msgstr "Bytes > 8 bits not supported" #: py/objarray.c msgid "bytes length not a multiple of item size" -msgstr "" +msgstr "Bytes length not a multiple of item size" #: py/objstr.c msgid "bytes value out of range" -msgstr "" +msgstr "Bytes value out of range" #: ports/atmel-samd/bindings/samd/Clock.c ports/atmel-samd/common-hal/rtc/RTC.c msgid "calibration is out of range" -msgstr "" +msgstr "Calibration is out of range" #: ports/atmel-samd/bindings/samd/Clock.c msgid "calibration is read only" -msgstr "" +msgstr "Calibration is read only" #: ports/atmel-samd/common-hal/rtc/RTC.c msgid "calibration value out of range +/-127" -msgstr "" +msgstr "Calibration value out of range +/-127" #: py/emitinlinethumb.c msgid "can only have up to 4 parameters to Thumb assembly" -msgstr "" +msgstr "Can only have up to 4 parameters to thumb assembly" #: py/emitinlinextensa.c msgid "can only have up to 4 parameters to Xtensa assembly" -msgstr "" +msgstr "Can only have up to 4 parameters to xtensa assembly" #: py/persistentcode.c msgid "can only save bytecode" -msgstr "" +msgstr "Can only save bytecode" #: py/objtype.c msgid "can't add special method to already-subclassed class" -msgstr "" +msgstr "Can't add special method to already-subclassed class" #: py/compile.c msgid "can't assign to expression" -msgstr "" +msgstr "Can't assign to expression" #: py/obj.c py/objint.c shared-bindings/i2cperipheral/I2CPeripheral.c #: shared-module/_pixelbuf/PixelBuf.c msgid "can't convert %q to %q" -msgstr "" +msgstr "Can't convert %q to %q" #: py/objstr.c msgid "can't convert '%q' object to %q implicitly" -msgstr "" +msgstr "Can't convert '%q' object to %q implicitly" #: py/obj.c msgid "can't convert to %q" -msgstr "" +msgstr "Can't convert to %q" #: py/objstr.c msgid "can't convert to str implicitly" -msgstr "" +msgstr "Can't convert to str implicitly" #: py/compile.c msgid "can't declare nonlocal in outer code" -msgstr "" +msgstr "Can't declare nonlocal in outer code" #: py/compile.c msgid "can't delete expression" -msgstr "" +msgstr "Can't delete expression" #: py/emitnative.c msgid "can't do binary op between '%q' and '%q'" -msgstr "" +msgstr "Can't do binary op between '%q' and '%q'" #: py/objcomplex.c msgid "can't do truncated division of a complex number" -msgstr "" +msgstr "Can't do truncated division of a complex number" #: py/compile.c msgid "can't have multiple **x" -msgstr "" +msgstr "can't have multiple **x" #: py/compile.c msgid "can't have multiple *x" -msgstr "" +msgstr "can't have multiple *x" #: py/emitnative.c msgid "can't implicitly convert '%q' to 'bool'" -msgstr "" +msgstr "can't implicitly convert '%q' to 'bool'" #: py/emitnative.c msgid "can't load from '%q'" -msgstr "" +msgstr "can't load from '%q'" #: py/emitnative.c msgid "can't load with '%q' index" -msgstr "" +msgstr "can't load with '%q' index" #: py/objgenerator.c msgid "can't pend throw to just-started generator" -msgstr "" +msgstr "can't pend throw to just-started generator" #: py/objgenerator.c msgid "can't send non-None value to a just-started generator" -msgstr "" +msgstr "can't send non-None value to a just-started generator" #: shared-module/sdcardio/SDCard.c msgid "can't set 512 block size" -msgstr "" +msgstr "can't set 512 block size" #: py/objnamedtuple.c msgid "can't set attribute" -msgstr "" +msgstr "can't set attribute" #: py/emitnative.c msgid "can't store '%q'" -msgstr "" +msgstr "can't store '%q'" #: py/emitnative.c msgid "can't store to '%q'" -msgstr "" +msgstr "can't store to '%q'" #: py/emitnative.c msgid "can't store with '%q' index" -msgstr "" +msgstr "Can't store with '%q' index" #: py/objstr.c msgid "" "can't switch from automatic field numbering to manual field specification" msgstr "" +"can't switch from automatic field numbering to manual field specification" #: py/objstr.c msgid "" "can't switch from manual field specification to automatic field numbering" msgstr "" +"can't switch from manual field specification to automatic field numbering" #: extmod/ulab/code/ndarray_operators.c msgid "cannot cast output with casting rule" -msgstr "" +msgstr "can't cast output with casting rule" #: py/objtype.c msgid "cannot create '%q' instances" -msgstr "" +msgstr "can't create '%q' instances" #: py/objtype.c msgid "cannot create instance" -msgstr "" +msgstr "can't create instance" #: py/runtime.c msgid "cannot import name %q" -msgstr "" +msgstr "can't import name %q" #: py/builtinimport.c msgid "cannot perform relative import" -msgstr "" +msgstr "can't perform relative import" #: py/emitnative.c msgid "casting" -msgstr "" +msgstr "casting" #: shared-bindings/_stage/Text.c msgid "chars buffer too small" -msgstr "" +msgstr "chars buffer too small" #: py/modbuiltins.c msgid "chr() arg not in range(0x110000)" -msgstr "" +msgstr "chr() arg not in range(0x110000)" #: py/modbuiltins.c msgid "chr() arg not in range(256)" -msgstr "" +msgstr "chr() arg not in range(256)" #: shared-module/vectorio/Circle.c msgid "circle can only be registered in one parent" -msgstr "" +msgstr "circle can only be registered in one parent" #: shared-bindings/bitmaptools/__init__.c msgid "clip point must be (x,y) tuple" -msgstr "" +msgstr "clip point must be (x,y) tuple" #: shared-bindings/msgpack/ExtType.c msgid "code outside range 0~127" -msgstr "" +msgstr "code outside range 0~127" #: shared-bindings/displayio/Palette.c msgid "color buffer must be 3 bytes (RGB) or 4 bytes (RGB + pad byte)" -msgstr "" +msgstr "colour buffer must be 3 bytes (RGB) or 4 bytes (RGB + pad byte)" #: shared-bindings/displayio/Palette.c msgid "color buffer must be a buffer, tuple, list, or int" -msgstr "" +msgstr "colour buffer must be a buffer, tuple, list, or int" #: shared-bindings/displayio/Palette.c msgid "color buffer must be a bytearray or array of type 'b' or 'B'" -msgstr "" +msgstr "colour buffer must be a bytearray or array of type 'b' or 'B'" #: shared-bindings/displayio/Palette.c msgid "color must be between 0x000000 and 0xffffff" -msgstr "" +msgstr "colour must be between 0x000000 and 0xffffff" #: shared-bindings/displayio/ColorConverter.c msgid "color should be an int" -msgstr "" +msgstr "colour should be an int" #: py/objcomplex.c msgid "complex division by zero" -msgstr "" +msgstr "complex division by zero" #: py/objfloat.c py/parsenum.c msgid "complex values not supported" -msgstr "" +msgstr "complex values not supported" #: extmod/moduzlib.c msgid "compression header" -msgstr "" +msgstr "compression header" #: py/parse.c msgid "constant must be an integer" -msgstr "" +msgstr "constant must be an integer" #: py/emitnative.c msgid "conversion to object" -msgstr "" +msgstr "conversion to object" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/numpy/filter/filter.c msgid "convolve arguments must be linear arrays" -msgstr "" +msgstr "convolve arguments must be linear arrays" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/numpy/filter/filter.c msgid "convolve arguments must be ndarrays" -msgstr "" +msgstr "convolve arguments must be ndarrays" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/numpy/filter/filter.c msgid "convolve arguments must not be empty" -msgstr "" +msgstr "convolve arguments must not be empty" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "could not invert Vandermonde matrix" -msgstr "" +msgstr "could not invert Vandermonde matrix" #: shared-module/sdcardio/SDCard.c msgid "couldn't determine SD card version" -msgstr "" +msgstr "couldn't determine SD card version" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "cross is defined for 1D arrays of length 3" -msgstr "" +msgstr "cross is defined for 1D arrays of length 3" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "data must be iterable" -msgstr "" +msgstr "cata must be iterable" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "data must be of equal length" -msgstr "" +msgstr "cata must be of equal length" #: extmod/ulab/code/ndarray.c msgid "data type not understood" -msgstr "" +msgstr "cata type not understood" #: py/parsenum.c msgid "decimal numbers not supported" -msgstr "" +msgstr "cecimal numbers not supported" #: py/compile.c msgid "default 'except' must be last" -msgstr "" +msgstr "default 'except' must be last" #: shared-bindings/msgpack/__init__.c msgid "default is not a function" -msgstr "" +msgstr "default is not a function" #: shared-bindings/audiobusio/PDMIn.c msgid "" "destination buffer must be a bytearray or array of type 'B' for bit_depth = 8" msgstr "" +"destination buffer must be a bytearray or array of type 'B' for bit_depth = 8" #: shared-bindings/audiobusio/PDMIn.c msgid "destination buffer must be an array of type 'H' for bit_depth = 16" -msgstr "" +msgstr "destination buffer must be an array of type 'H' for bit_depth = 16" #: shared-bindings/audiobusio/PDMIn.c msgid "destination_length must be an int >= 0" -msgstr "" +msgstr "destination_length must be an int >= 0" #: py/objdict.c msgid "dict update sequence has wrong length" -msgstr "" +msgstr "dict update sequence has wrong length" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "diff argument must be an ndarray" -msgstr "" +msgstr "diff argument must be an ndarray" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "differentiation order out of range" -msgstr "" +msgstr "differentiation order out of range" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/transform/transform.c msgid "dimensions do not match" -msgstr "" +msgstr "dimensions do not match" #: py/modmath.c py/objfloat.c py/objint_longlong.c py/objint_mpz.c py/runtime.c #: shared-bindings/math/__init__.c msgid "division by zero" -msgstr "" +msgstr "division by zero" #: py/objdeque.c msgid "empty" -msgstr "" +msgstr "empty" #: extmod/moduheapq.c extmod/modutimeq.c msgid "empty heap" -msgstr "" +msgstr "empty heap" #: py/objstr.c msgid "empty separator" -msgstr "" +msgstr "empty separator" #: shared-bindings/random/__init__.c msgid "empty sequence" -msgstr "" +msgstr "empty sequence" #: py/objstr.c msgid "end of format while looking for conversion specifier" -msgstr "" +msgstr "end of format while looking for conversion specifier" #: shared-bindings/displayio/Shape.c msgid "end_x should be an int" -msgstr "" +msgstr "end_x should be an int" #: shared-bindings/alarm/time/TimeAlarm.c msgid "epoch_time not supported on this board" -msgstr "" +msgstr "epoch_time not supported on this board" #: ports/nrf/common-hal/busio/UART.c #, c-format msgid "error = 0x%08lX" -msgstr "" +msgstr "error = 0x%08lX" #: py/runtime.c msgid "exceptions must derive from BaseException" -msgstr "" +msgstr "exceptions must derive from BaseException" #: shared-bindings/canio/CAN.c msgid "expected '%q' but got '%q'" -msgstr "" +msgstr "expected '%q' but got '%q'" #: shared-bindings/canio/CAN.c msgid "expected '%q' or '%q' but got '%q'" -msgstr "" +msgstr "expected '%q' or '%q' but got '%q'" #: py/objstr.c msgid "expected ':' after format specifier" -msgstr "" +msgstr "expected ':' after format specifier" #: py/obj.c msgid "expected tuple/list" -msgstr "" +msgstr "expected tuple/list" #: py/modthread.c msgid "expecting a dict for keyword args" -msgstr "" +msgstr "expecting a dict for keyword args" #: py/compile.c msgid "expecting an assembler instruction" -msgstr "" +msgstr "expecting an assembler instruction" #: py/compile.c msgid "expecting just a value for set" -msgstr "" +msgstr "expecting just a value for set" #: py/compile.c msgid "expecting key:value for dict" -msgstr "" +msgstr "expecting key:value for dict" #: shared-bindings/msgpack/__init__.c msgid "ext_hook is not a function" -msgstr "" +msgstr "ext_hook is not a function" #: py/argcheck.c msgid "extra keyword arguments given" -msgstr "" +msgstr "extra keyword arguments given" #: py/argcheck.c msgid "extra positional arguments given" -msgstr "" +msgstr "extra positional arguments given" #: py/parse.c msgid "f-string expression part cannot include a '#'" -msgstr "" +msgstr "f-string expression part cannot include a '#'" #: py/parse.c msgid "f-string expression part cannot include a backslash" -msgstr "" +msgstr "f-string expression part cannot include a backslash" #: py/parse.c msgid "f-string: empty expression not allowed" -msgstr "" +msgstr "f-string: empty expression not allowed" #: py/parse.c msgid "f-string: expecting '}'" -msgstr "" +msgstr "f-string: expecting '}'" #: py/parse.c msgid "f-string: single '}' is not allowed" -msgstr "" +msgstr "f-string: single '}' is not allowed" #: shared-bindings/audiocore/WaveFile.c shared-bindings/audiomp3/MP3Decoder.c #: shared-bindings/displayio/OnDiskBitmap.c msgid "file must be a file opened in byte mode" -msgstr "" +msgstr "file must be a file opened in byte mode" #: shared-bindings/storage/__init__.c msgid "filesystem must provide mount method" -msgstr "" +msgstr "filesystem must provide mount method" -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "first argument must be a callable" -msgstr "" +msgstr "first argument must be a callable" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "first argument must be a function" -msgstr "" +msgstr "first argument must be a function" #: extmod/ulab/code/ulab_create.c msgid "first argument must be a tuple of ndarrays" -msgstr "" +msgstr "first argument must be a tuple of ndarrays" -#: extmod/ulab/code/ndarray.c -msgid "first argument must be an iterable" -msgstr "" - -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "first argument must be an ndarray" -msgstr "" +msgstr "first argument must be an ndarray" #: py/objtype.c msgid "first argument to super() must be type" -msgstr "" +msgstr "first argument to super() must be type" #: extmod/ulab/code/ndarray.c msgid "flattening order must be either 'C', or 'F'" -msgstr "" +msgstr "flattening order must be either 'C', or 'F'" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "flip argument must be an ndarray" -msgstr "" +msgstr "flip argument must be an ndarray" #: py/objint.c msgid "float too big" -msgstr "" +msgstr "float too big" #: shared-bindings/_stage/Text.c msgid "font must be 2048 bytes long" -msgstr "" +msgstr "font must be 2048 bytes long" #: py/objstr.c msgid "format requires a dict" -msgstr "" +msgstr "format requires a dict" #: py/objdeque.c msgid "full" -msgstr "" +msgstr "full" #: py/argcheck.c msgid "function does not take keyword arguments" -msgstr "" +msgstr "function does not take keyword arguments" #: py/argcheck.c #, c-format msgid "function expected at most %d arguments, got %d" -msgstr "" +msgstr "function expected at most %d arguments, got %d" #: py/bc.c py/objnamedtuple.c msgid "function got multiple values for argument '%q'" -msgstr "" +msgstr "function got multiple values for argument '%q'" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "function has the same sign at the ends of interval" -msgstr "" +msgstr "function has the same sign at the ends of interval" #: extmod/ulab/code/ndarray.c msgid "function is defined for ndarrays only" -msgstr "" +msgstr "function is defined for ndarrays only" #: py/argcheck.c #, c-format msgid "function missing %d required positional arguments" -msgstr "" +msgstr "function missing %d required positional arguments" #: py/bc.c msgid "function missing keyword-only argument" -msgstr "" +msgstr "function missing keyword-only argument" #: py/bc.c msgid "function missing required keyword argument '%q'" -msgstr "" +msgstr "function missing required keyword argument '%q'" #: py/bc.c #, c-format msgid "function missing required positional argument #%d" -msgstr "" +msgstr "function missing required positional argument #%d" #: py/argcheck.c py/bc.c py/objnamedtuple.c shared-bindings/time/__init__.c #, c-format msgid "function takes %d positional arguments but %d were given" -msgstr "" +msgstr "function takes %d positional arguments but %d were given" #: shared-bindings/time/__init__.c msgid "function takes exactly 9 arguments" -msgstr "" +msgstr "function takes exactly 9 arguments" #: py/objgenerator.c msgid "generator already executing" -msgstr "" +msgstr "generator already executing" #: py/objgenerator.c msgid "generator ignored GeneratorExit" -msgstr "" +msgstr "generator ignored GeneratorExit" #: shared-bindings/_stage/Layer.c msgid "graphic must be 2048 bytes long" -msgstr "" +msgstr "graphic must be 2048 bytes long" #: extmod/moduheapq.c msgid "heap must be a list" -msgstr "" +msgstr "heap must be a list" #: py/compile.c msgid "identifier redefined as global" -msgstr "" +msgstr "identifier redefined as global" #: py/compile.c msgid "identifier redefined as nonlocal" -msgstr "" +msgstr "identifier redefined as nonlocal" #: py/objstr.c msgid "incomplete format" -msgstr "" +msgstr "incomplete format" #: py/objstr.c msgid "incomplete format key" -msgstr "" +msgstr "incomplete format key" #: extmod/modubinascii.c msgid "incorrect padding" -msgstr "" +msgstr "incorrect padding" #: extmod/ulab/code/ndarray.c msgid "index is out of bounds" -msgstr "" +msgstr "index is out of bounds" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c extmod/ulab/code/ulab_tools.c #: ports/esp32s2/common-hal/pulseio/PulseIn.c py/obj.c #: shared-bindings/bitmaptools/__init__.c msgid "index out of range" -msgstr "" +msgstr "index out of range" #: py/obj.c msgid "indices must be integers" -msgstr "" +msgstr "indices must be integers" #: extmod/ulab/code/ndarray.c msgid "indices must be integers, slices, or Boolean lists" -msgstr "" +msgstr "indices must be integers, slices, or Boolean lists" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "initial values must be iterable" -msgstr "" +msgstr "initial values must be iterable" #: shared-bindings/_bleio/Characteristic.c shared-bindings/_bleio/Descriptor.c msgid "initial_value length is wrong" -msgstr "" +msgstr "initial_value length is wrong" #: py/compile.c msgid "inline assembler must be a function" -msgstr "" +msgstr "inline assembler must be a function" #: extmod/ulab/code/ndarray.c msgid "input and output shapes are not compatible" -msgstr "" +msgstr "input and output shapes are not compatible" #: extmod/ulab/code/ulab_create.c msgid "input argument must be an integer, a tuple, or a list" -msgstr "" +msgstr "input argument must be an integer, a tuple, or a list" -#: extmod/ulab/code/fft/fft.c +#: extmod/ulab/code/numpy/fft/fft_tools.c msgid "input array length must be power of 2" -msgstr "" +msgstr "input array length must be power of 2" #: extmod/ulab/code/ulab_create.c msgid "input arrays are not compatible" -msgstr "" +msgstr "input arrays are not compatible" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "input data must be an iterable" -msgstr "" +msgstr "input data must be an iterable" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/linalg/linalg.c msgid "input matrix is asymmetric" -msgstr "" +msgstr "input matrix is asymmetric" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/linalg/linalg.c msgid "input matrix is singular" -msgstr "" +msgstr "input matrix is singular" #: extmod/ulab/code/user/user.c msgid "input must be a dense ndarray" -msgstr "" +msgstr "input must be a dense ndarray" #: extmod/ulab/code/ulab_create.c msgid "input must be a tensor of rank 2" -msgstr "" +msgstr "input must be a tensor of rank 2" #: extmod/ulab/code/ulab_create.c extmod/ulab/code/user/user.c msgid "input must be an ndarray" -msgstr "" +msgstr "input must be an ndarray" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "input must be one-dimensional" -msgstr "" +msgstr "input must be one-dimensional" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/ulab_tools.c msgid "input must be square matrix" -msgstr "" +msgstr "input must be square matrix" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "input must be tuple, list, range, or ndarray" -msgstr "" +msgstr "input must be tuple, list, range, or ndarray" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "input vectors must be of equal length" -msgstr "" +msgstr "input vectors must be of equal length" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "inputs are not iterable" -msgstr "" +msgstr "inputs are not iterable" #: py/parsenum.c msgid "int() arg 2 must be >= 2 and <= 36" -msgstr "" +msgstr "int() arg 2 must be >= 2 and <= 36" #: py/objstr.c msgid "integer required" -msgstr "" +msgstr "integer required" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/numpy/approx/approx.c msgid "interp is defined for 1D arrays of equal length" -msgstr "" +msgstr "interp is defined for 1D arrays of equal length" #: shared-bindings/_bleio/Adapter.c #, c-format msgid "interval must be in range %s-%s" -msgstr "" +msgstr "interval must be in range %s-%s" #: lib/netutils/netutils.c msgid "invalid arguments" -msgstr "" +msgstr "invalid arguments" #: shared-bindings/bitmaptools/__init__.c #, c-format msgid "invalid bits_per_pixel %d, must be, 1, 4, 8, 16, 24, or 32" -msgstr "" +msgstr "invalid bits_per_pixel %d, must be, 1, 4, 8, 16, 24, or 32" #: extmod/modussl_axtls.c msgid "invalid cert" +msgstr "invalid cert" + +#: py/compile.c +msgid "invalid decorator" msgstr "" #: extmod/uos_dupterm.c msgid "invalid dupterm index" -msgstr "" +msgstr "invalid dupterm index" #: shared-bindings/bitmaptools/__init__.c #, c-format msgid "invalid element size %d for bits_per_pixel %d\n" -msgstr "" +msgstr "invalid element size %d for bits_per_pixel %d\n" #: shared-bindings/bitmaptools/__init__.c #, c-format msgid "invalid element_size %d, must be, 1, 2, or 4" -msgstr "" +msgstr "invalid element_size %d, must be, 1, 2, or 4" #: extmod/modframebuf.c msgid "invalid format" -msgstr "" +msgstr "invalid format" #: py/objstr.c msgid "invalid format specifier" -msgstr "" +msgstr "invalid format specifier" #: shared-bindings/wifi/Radio.c msgid "invalid hostname" -msgstr "" +msgstr "invalid hostname" #: extmod/modussl_axtls.c msgid "invalid key" -msgstr "" +msgstr "invalid key" #: py/compile.c +#, fuzzy msgid "invalid micropython decorator" -msgstr "" +msgstr "invalid CircuitPython decorator" #: shared-bindings/random/__init__.c msgid "invalid step" -msgstr "" +msgstr "invalid step" #: py/compile.c py/parse.c msgid "invalid syntax" -msgstr "" +msgstr "invalid syntax" #: py/parsenum.c msgid "invalid syntax for integer" -msgstr "" +msgstr "invalid syntax for integer" #: py/parsenum.c #, c-format msgid "invalid syntax for integer with base %d" -msgstr "" +msgstr "invalid syntax for integer with base %d" #: py/parsenum.c msgid "invalid syntax for number" -msgstr "" +msgstr "invalid syntax for number" #: ports/esp32s2/common-hal/alarm/pin/__init__.c msgid "io must be rtc io" -msgstr "" +msgstr "io must be rtc io" #: py/objtype.c msgid "issubclass() arg 1 must be a class" -msgstr "" +msgstr "issubclass() arg 1 must be a class" #: py/objtype.c msgid "issubclass() arg 2 must be a class or a tuple of classes" -msgstr "" +msgstr "issubclass() arg 2 must be a class or a tuple of classes" -#: extmod/ulab/code/ndarray.c -msgid "iterables are not of the same length" -msgstr "" - -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/linalg/linalg.c msgid "iterations did not converge" -msgstr "" +msgstr "iterations did not converge" #: py/objstr.c msgid "join expects a list of str/bytes objects consistent with self object" -msgstr "" +msgstr "join expects a list of str/bytes objects consistent with self object" #: py/argcheck.c msgid "keyword argument(s) not yet implemented - use normal args instead" -msgstr "" +msgstr "keyword argument(s) not yet implemented - use normal args instead" #: py/bc.c msgid "keywords must be strings" -msgstr "" +msgstr "keywords must be strings" #: py/emitinlinethumb.c py/emitinlinextensa.c msgid "label '%q' not defined" -msgstr "" +msgstr "label '%q' not defined" #: py/compile.c msgid "label redefined" -msgstr "" +msgstr "label redefined" #: py/stream.c msgid "length argument not allowed for this type" -msgstr "" +msgstr "length argument not allowed for this type" #: shared-bindings/audiomixer/MixerVoice.c msgid "level must be between 0 and 1" -msgstr "" +msgstr "level must be between 0 and 1" #: py/objarray.c msgid "lhs and rhs should be compatible" -msgstr "" +msgstr "lhs and rhs should be compatible" #: py/emitnative.c msgid "local '%q' has type '%q' but source is '%q'" -msgstr "" +msgstr "local '%q' has type '%q' but source is '%q'" #: py/emitnative.c msgid "local '%q' used before type known" -msgstr "" +msgstr "local '%q' used before type known" #: py/vm.c msgid "local variable referenced before assignment" -msgstr "" +msgstr "local variable referenced before assignment" #: py/objint.c msgid "long int not supported in this build" -msgstr "" +msgstr "long int not supported in this build" #: ports/esp32s2/common-hal/canio/CAN.c msgid "loopback + silent mode not supported by peripheral" -msgstr "" +msgstr "loopback + silent mode not supported by peripheral" #: py/parse.c msgid "malformed f-string" -msgstr "" +msgstr "malformed f-string" #: shared-bindings/_stage/Layer.c msgid "map buffer too small" -msgstr "" +msgstr "map buffer too small" #: py/modmath.c shared-bindings/math/__init__.c msgid "math domain error" -msgstr "" +msgstr "math domain error" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/linalg/linalg.c msgid "matrix is not positive definite" -msgstr "" +msgstr "matrix is not positive definite" #: ports/nrf/common-hal/_bleio/Characteristic.c #: ports/nrf/common-hal/_bleio/Descriptor.c #, c-format msgid "max_length must be 0-%d when fixed_length is %s" -msgstr "" +msgstr "max_length must be 0-%d when fixed_length is %s" #: shared-bindings/_bleio/Characteristic.c shared-bindings/_bleio/Descriptor.c msgid "max_length must be >= 0" -msgstr "" +msgstr "max_length must be >= 0" #: extmod/ulab/code/ndarray.c msgid "maximum number of dimensions is 4" -msgstr "" +msgstr "maximum number of dimensions is 4" #: py/runtime.c msgid "maximum recursion depth exceeded" -msgstr "" +msgstr "maximum recursion depth exceeded" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "maxiter must be > 0" -msgstr "" +msgstr "maxiter must be > 0" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "maxiter should be > 0" -msgstr "" +msgstr "maxiter should be > 0" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "median argument must be an ndarray" -msgstr "" +msgstr "median argument must be an ndarray" #: py/runtime.c #, c-format msgid "memory allocation failed, allocating %u bytes" -msgstr "" +msgstr "memory allocation failed, allocating %u bytes" #: py/runtime.c msgid "memory allocation failed, heap is locked" -msgstr "" +msgstr "memory allocation failed, heap is locked" #: py/objarray.c msgid "memoryview: length is not a multiple of itemsize" -msgstr "" +msgstr "memoryview: length is not a multiple of itemsize" #: py/builtinimport.c msgid "module not found" -msgstr "" +msgstr "module not found" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "more degrees of freedom than data points" -msgstr "" +msgstr "more degrees of freedom than data points" #: py/compile.c msgid "multiple *x in assignment" -msgstr "" +msgstr "multiple *x in assignment" #: py/objtype.c msgid "multiple bases have instance lay-out conflict" -msgstr "" +msgstr "multiple bases have instance lay-out conflict" #: py/objtype.c msgid "multiple inheritance not supported" -msgstr "" +msgstr "multiple inheritance not supported" #: py/emitnative.c msgid "must raise an object" -msgstr "" +msgstr "must raise an object" #: py/modbuiltins.c msgid "must use keyword argument for key function" -msgstr "" +msgstr "must use keyword argument for key function" #: py/runtime.c msgid "name '%q' is not defined" -msgstr "" +msgstr "name '%q' is not defined" #: py/runtime.c msgid "name not defined" -msgstr "" +msgstr "name not defined" #: py/compile.c msgid "name reused for argument" -msgstr "" +msgstr "name reused for argument" #: py/emitnative.c msgid "native yield" -msgstr "" +msgstr "native yield" #: py/runtime.c #, c-format msgid "need more than %d values to unpack" -msgstr "" +msgstr "need more than %d values to unpack" #: py/objint_longlong.c py/objint_mpz.c py/runtime.c msgid "negative power with no float support" -msgstr "" +msgstr "negative power with no float support" #: py/objint_mpz.c py/runtime.c msgid "negative shift count" -msgstr "" +msgstr "negative shift count" #: shared-module/sdcardio/SDCard.c msgid "no SD card" -msgstr "" +msgstr "no SD card" #: py/vm.c msgid "no active exception to reraise" -msgstr "" +msgstr "no active exception to reraise" #: shared-bindings/socket/__init__.c shared-module/network/__init__.c msgid "no available NIC" -msgstr "" +msgstr "no available NIC" #: py/compile.c msgid "no binding for nonlocal found" -msgstr "" +msgstr "no binding for nonlocal found" #: shared-module/msgpack/__init__.c msgid "no default packer" -msgstr "" +msgstr "no default packer" #: py/builtinimport.c msgid "no module named '%q'" -msgstr "" +msgstr "no module named '%q'" #: shared-bindings/displayio/FourWire.c shared-bindings/displayio/I2CDisplay.c #: shared-bindings/displayio/ParallelBus.c msgid "no reset pin available" -msgstr "" +msgstr "no reset pin available" #: shared-module/sdcardio/SDCard.c msgid "no response from SD card" -msgstr "" +msgstr "no response from SD card" #: py/runtime.c msgid "no such attribute" -msgstr "" +msgstr "no such attribute" #: ports/nrf/common-hal/_bleio/Connection.c msgid "non-UUID found in service_uuids_whitelist" -msgstr "" +msgstr "non-UUID found in service_uuids_whitelist" #: py/compile.c msgid "non-default argument follows default argument" -msgstr "" +msgstr "non-default argument follows default argument" #: extmod/modubinascii.c msgid "non-hex digit found" -msgstr "" +msgstr "non-hex digit found" #: py/compile.c msgid "non-keyword arg after */**" -msgstr "" +msgstr "non-keyword arg after */**" #: py/compile.c msgid "non-keyword arg after keyword arg" -msgstr "" +msgstr "non-keyword arg after keyword arg" #: ports/nrf/common-hal/_bleio/Adapter.c msgid "non-zero timeout must be > 0.01" -msgstr "" +msgstr "non-zero timeout must be > 0.01" #: shared-bindings/_bleio/Adapter.c msgid "non-zero timeout must be >= interval" -msgstr "" - -#: extmod/ulab/code/linalg/linalg.c -msgid "norm is defined for 1D and 2D arrays" -msgstr "" +msgstr "non-zero timeout must be >= interval" #: shared-bindings/_bleio/UUID.c msgid "not a 128-bit UUID" -msgstr "" +msgstr "not a 128-bit UUID" #: py/objstr.c msgid "not all arguments converted during string formatting" -msgstr "" +msgstr "not all arguments converted during string formatting" #: py/objstr.c msgid "not enough arguments for format string" -msgstr "" +msgstr "not enough arguments for format string" #: extmod/ulab/code/ulab_create.c msgid "number of points must be at least 2" -msgstr "" +msgstr "number of points must be at least 2" #: py/builtinhelp.c msgid "object " -msgstr "" +msgstr "object " #: py/obj.c msgid "object '%q' is not a tuple or list" -msgstr "" +msgstr "object '%q' is not a tuple or list" #: py/obj.c msgid "object does not support item assignment" -msgstr "" +msgstr "object does not support item assignment" #: py/obj.c msgid "object does not support item deletion" -msgstr "" +msgstr "object does not support item deletion" #: py/obj.c msgid "object has no len" -msgstr "" +msgstr "object has no len" #: py/obj.c msgid "object is not subscriptable" -msgstr "" +msgstr "object is not subscriptable" #: py/runtime.c msgid "object not an iterator" -msgstr "" +msgstr "object not an iterator" #: py/objtype.c py/runtime.c msgid "object not callable" -msgstr "" +msgstr "object not callable" #: py/sequence.c shared-bindings/displayio/Group.c msgid "object not in sequence" -msgstr "" +msgstr "object not in sequence" #: py/runtime.c msgid "object not iterable" -msgstr "" +msgstr "object not iterable" #: py/obj.c msgid "object of type '%q' has no len()" -msgstr "" +msgstr "object of type '%q' has no len()" #: py/obj.c msgid "object with buffer protocol required" -msgstr "" +msgstr "object with buffer protocol required" #: extmod/modubinascii.c msgid "odd-length string" -msgstr "" +msgstr "odd-length string" -#: extmod/ulab/code/ulab_create.c +#: extmod/ulab/code/ulab_create.c extmod/ulab/code/utils/utils.c msgid "offset is too large" -msgstr "" +msgstr "offset is too large" #: shared-bindings/dualbank/__init__.c msgid "offset must be >= 0" -msgstr "" +msgstr "offset must be >= 0" #: extmod/ulab/code/ulab_create.c msgid "offset must be non-negative and no greater than buffer length" -msgstr "" +msgstr "offset must be non-negative and not greater than buffer length" #: py/objstr.c py/objstrunicode.c msgid "offset out of bounds" -msgstr "" +msgstr "offset out of bounds" #: ports/nrf/common-hal/audiobusio/PDMIn.c msgid "only bit_depth=16 is supported" -msgstr "" +msgstr "only bit_depth=16 is supported" #: ports/nrf/common-hal/audiobusio/PDMIn.c msgid "only sample_rate=16000 is supported" -msgstr "" +msgstr "only sample_rate=16000 is supported" #: py/objarray.c py/objstr.c py/objstrunicode.c py/objtuple.c #: shared-bindings/alarm/SleepMemory.c shared-bindings/nvm/ByteArray.c msgid "only slices with step=1 (aka None) are supported" -msgstr "" +msgstr "only slices with step=1 (aka None) are supported" -#: extmod/ulab/code/compare/compare.c extmod/ulab/code/ndarray.c -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/ndarray.c extmod/ulab/code/numpy/compare/compare.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "operands could not be broadcast together" -msgstr "" +msgstr "operands could not be broadcast together" #: extmod/ulab/code/ndarray.c msgid "operation is implemented for 1D Boolean arrays only" -msgstr "" +msgstr "operation is implemented for 1D Boolean arrays only" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "operation is not implemented on ndarrays" -msgstr "" +msgstr "operation is not implemented on ndarrays" #: extmod/ulab/code/ndarray.c msgid "operation is not supported for given type" -msgstr "" +msgstr "operation is not supported for given type" #: py/modbuiltins.c msgid "ord expects a character" -msgstr "" +msgstr "ord expects a character" #: py/modbuiltins.c #, c-format msgid "ord() expected a character, but string of length %d found" +msgstr "ord() expected a character, but string of length %d found" + +#: extmod/ulab/code/utils/utils.c +msgid "out array is too small" +msgstr "" + +#: extmod/ulab/code/utils/utils.c +msgid "out must be a float dense array" msgstr "" #: shared-bindings/displayio/Bitmap.c msgid "out of range of source" -msgstr "" +msgstr "out of range of source" #: shared-bindings/bitmaptools/__init__.c shared-bindings/displayio/Bitmap.c msgid "out of range of target" -msgstr "" +msgstr "out of range of target" #: py/objint_mpz.c msgid "overflow converting long int to machine word" -msgstr "" +msgstr "overflow converting long int to machine word" #: py/modstruct.c #, c-format msgid "pack expected %d items for packing (got %d)" -msgstr "" +msgstr "pack expected %d items for packing (got %d)" #: shared-bindings/_stage/Layer.c shared-bindings/_stage/Text.c msgid "palette must be 32 bytes long" -msgstr "" +msgstr "palette must be 32 bytes long" #: shared-bindings/displayio/Palette.c msgid "palette_index should be an int" -msgstr "" +msgstr "palette_index should be an int" #: py/compile.c msgid "parameter annotation must be an identifier" -msgstr "" +msgstr "parameter annotation must be an identifier" #: py/emitinlinextensa.c msgid "parameters must be registers in sequence a2 to a5" -msgstr "" +msgstr "parameters must be registers in sequence a2 to a5" #: py/emitinlinethumb.c msgid "parameters must be registers in sequence r0 to r3" -msgstr "" +msgstr "parameters must be registers in sequence r0 to r3" #: shared-bindings/bitmaptools/__init__.c shared-bindings/displayio/Bitmap.c msgid "pixel coordinates out of bounds" -msgstr "" +msgstr "pixel coordinates out of bounds" #: shared-bindings/displayio/Bitmap.c msgid "pixel value requires too many bits" -msgstr "" +msgstr "pixel value requires too many bits" #: shared-bindings/displayio/TileGrid.c shared-bindings/vectorio/VectorShape.c msgid "pixel_shader must be displayio.Palette or displayio.ColorConverter" -msgstr "" +msgstr "pixel_shader must be displayio.Palette or displayio.ColorConverter" #: shared-module/vectorio/Polygon.c msgid "polygon can only be registered in one parent" -msgstr "" +msgstr "polygon can only be registered in one parent" #: ports/esp32s2/common-hal/pulseio/PulseIn.c msgid "pop from an empty PulseIn" -msgstr "" +msgstr "pop from an empty PulseIn" #: ports/atmel-samd/common-hal/pulseio/PulseIn.c #: ports/cxd56/common-hal/pulseio/PulseIn.c @@ -3691,19 +3745,19 @@ msgstr "" #: ports/stm/common-hal/pulseio/PulseIn.c py/objdict.c py/objlist.c py/objset.c #: shared-bindings/ps2io/Ps2.c msgid "pop from empty %q" -msgstr "" +msgstr "pop from empty %q" #: shared-bindings/socketpool/Socket.c shared-bindings/ssl/SSLSocket.c msgid "port must be >= 0" -msgstr "" +msgstr "port must be >= 0" #: py/objint_mpz.c msgid "pow() 3rd argument cannot be 0" -msgstr "" +msgstr "pow() 3rd argument cannot be 0" #: py/objint_mpz.c msgid "pow() with 3 arguments requires integers" -msgstr "" +msgstr "pow() with 3 arguments requires integers" #: ports/esp32s2/boards/adafruit_feather_esp32s2_nopsram/mpconfigboard.h #: ports/esp32s2/boards/adafruit_feather_esp32s2_tftback_nopsram/mpconfigboard.h @@ -3725,7 +3779,7 @@ msgstr "" #: ports/esp32s2/boards/unexpectedmaker_feathers2_prerelease/mpconfigboard.h #: ports/esp32s2/boards/unexpectedmaker_tinys2/mpconfigboard.h msgid "pressing boot button at start up.\n" -msgstr "" +msgstr "pressing boot button at start up.\n" #: ports/atmel-samd/boards/circuitplayground_express/mpconfigboard.h #: ports/atmel-samd/boards/circuitplayground_express_crickit/mpconfigboard.h @@ -3733,504 +3787,541 @@ msgstr "" #: ports/atmel-samd/boards/escornabot_makech/mpconfigboard.h #: ports/atmel-samd/boards/meowmeow/mpconfigboard.h msgid "pressing both buttons at start up.\n" -msgstr "" +msgstr "pressing both buttons at start up.\n" #: ports/raspberrypi/common-hal/rp2pio/StateMachine.c msgid "pull masks conflict with direction masks" -msgstr "" +msgstr "pull masks conflict with direction masks" #: ports/raspberrypi/bindings/rp2pio/StateMachine.c msgid "pull_threshold must be between 1 and 32" -msgstr "" +msgstr "pull_threshold must be between 1 and 32" #: ports/raspberrypi/bindings/rp2pio/StateMachine.c msgid "push_threshold must be between 1 and 32" -msgstr "" +msgstr "push_threshold must be between 1 and 32" #: extmod/modutimeq.c msgid "queue overflow" -msgstr "" +msgstr "queue overflow" #: py/parse.c msgid "raw f-strings are not implemented" -msgstr "" +msgstr "raw f-strings are not implemented" -#: extmod/ulab/code/fft/fft.c +#: extmod/ulab/code/numpy/fft/fft_tools.c msgid "real and imaginary parts must be of equal length" -msgstr "" +msgstr "real and imaginary parts must be of equal length" #: py/builtinimport.c msgid "relative import" -msgstr "" +msgstr "relative import" #: py/obj.c #, c-format msgid "requested length %d but object has length %d" -msgstr "" +msgstr "requested length %d but object has length %d" #: extmod/ulab/code/ndarray_operators.c msgid "results cannot be cast to specified type" -msgstr "" +msgstr "results cannot be cast to specified type" #: py/compile.c msgid "return annotation must be an identifier" -msgstr "" +msgstr "return annotation must be an identifier" #: py/emitnative.c msgid "return expected '%q' but got '%q'" -msgstr "" +msgstr "return expected '%q' but got '%q'" #: shared-bindings/rgbmatrix/RGBMatrix.c #, c-format msgid "rgb_pins[%d] duplicates another pin assignment" -msgstr "" +msgstr "rgb_pins[%d] duplicates another pin assignment" #: shared-bindings/rgbmatrix/RGBMatrix.c #, c-format msgid "rgb_pins[%d] is not on the same port as clock" -msgstr "" +msgstr "rgb_pins[%d] is not on the same port as clock" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "roll argument must be an ndarray" -msgstr "" +msgstr "roll argument must be an ndarray" #: py/objstr.c msgid "rsplit(None,n)" -msgstr "" +msgstr "rsplit(None,n)" #: shared-bindings/audiocore/RawSample.c msgid "" "sample_source buffer must be a bytearray or array of type 'h', 'H', 'b' or " "'B'" msgstr "" +"sample_source buffer must be a bytearray or array of type 'h', 'H', 'b' or " +"'B'" #: ports/atmel-samd/common-hal/audiobusio/PDMIn.c #: ports/raspberrypi/common-hal/audiobusio/PDMIn.c msgid "sampling rate out of range" -msgstr "" +msgstr "sampling rate out of range" #: py/modmicropython.c msgid "schedule stack full" -msgstr "" +msgstr "schedule stack full" #: lib/utils/pyexec.c py/builtinimport.c msgid "script compilation not supported" -msgstr "" +msgstr "script compilation not supported" #: extmod/ulab/code/ndarray.c msgid "shape must be a tuple" -msgstr "" +msgstr "shape must be a tuple" #: shared-module/msgpack/__init__.c msgid "short read" -msgstr "" +msgstr "short read" #: py/objstr.c msgid "sign not allowed in string format specifier" -msgstr "" +msgstr "sign not allowed in string format specifier" #: py/objstr.c msgid "sign not allowed with integer format specifier 'c'" -msgstr "" +msgstr "sign not allowed with integer format specifier 'c'" #: py/objstr.c msgid "single '}' encountered in format string" -msgstr "" +msgstr "single '}' encountered in format string" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/ulab_tools.c msgid "size is defined for ndarrays only" -msgstr "" +msgstr "size is defined for ndarrays only" #: shared-bindings/time/__init__.c msgid "sleep length must be non-negative" -msgstr "" +msgstr "sleep length must be non-negative" #: extmod/ulab/code/ndarray.c msgid "slice step can't be zero" -msgstr "" +msgstr "slice step can't be zero" #: py/objslice.c py/sequence.c msgid "slice step cannot be zero" -msgstr "" +msgstr "slice step cannot be zero" #: py/objint.c py/sequence.c msgid "small int overflow" -msgstr "" +msgstr "small int overflow" #: main.c msgid "soft reboot\n" -msgstr "" +msgstr "soft reboot\n" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "sort argument must be an ndarray" -msgstr "" +msgstr "sort argument must be an ndarray" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "sos array must be of shape (n_section, 6)" -msgstr "" +msgstr "sos array must be of shape (n_section, 6)" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "sos[:, 3] should be all ones" -msgstr "" +msgstr "sos[:, 3] should be all ones" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "sosfilt requires iterable arguments" -msgstr "" +msgstr "sosfilt requires iterable arguments" #: shared-bindings/bitmaptools/__init__.c shared-bindings/displayio/Bitmap.c msgid "source palette too large" -msgstr "" +msgstr "source palette too large" #: py/objstr.c msgid "start/end indices" -msgstr "" +msgstr "start/end indices" #: shared-bindings/displayio/Shape.c msgid "start_x should be an int" -msgstr "" +msgstr "start_x should be an int" #: shared-bindings/random/__init__.c msgid "step must be non-zero" -msgstr "" +msgstr "step must be non-zero" #: shared-bindings/busio/UART.c msgid "stop must be 1 or 2" -msgstr "" +msgstr "stop must be 1 or 2" #: shared-bindings/random/__init__.c msgid "stop not reachable from start" -msgstr "" +msgstr "stop not reachable from start" #: py/stream.c msgid "stream operation not supported" -msgstr "" +msgstr "stream operation not supported" #: py/objstrunicode.c msgid "string indices must be integers, not %q" -msgstr "" +msgstr "string indices must be integers, not %q" #: py/stream.c msgid "string not supported; use bytes or bytearray" -msgstr "" +msgstr "string not supported; use bytes or bytearray" #: extmod/moductypes.c msgid "struct: cannot index" -msgstr "" +msgstr "struct: cannot index" #: extmod/moductypes.c msgid "struct: no fields" -msgstr "" +msgstr "struct: no fields" #: py/objarray.c py/objstr.c msgid "substring not found" -msgstr "" +msgstr "substring not found" #: py/compile.c msgid "super() can't find self" -msgstr "" +msgstr "super() can't find self" #: extmod/modujson.c msgid "syntax error in JSON" -msgstr "" +msgstr "syntax error in JSON" #: extmod/moductypes.c msgid "syntax error in uctypes descriptor" -msgstr "" +msgstr "syntax error in uctypes descriptor" #: shared-bindings/touchio/TouchIn.c msgid "threshold must be in the range 0-65536" -msgstr "" +msgstr "threshold must be in the range 0-65536" #: shared-bindings/rgbmatrix/RGBMatrix.c msgid "tile must be greater than zero" -msgstr "" +msgstr "tile must be greater than zero" #: shared-bindings/time/__init__.c msgid "time.struct_time() takes a 9-sequence" -msgstr "" +msgstr "time.struct_time() takes a 9-sequence" #: ports/esp32s2/common-hal/watchdog/WatchDogTimer.c #: ports/nrf/common-hal/watchdog/WatchDogTimer.c #: ports/raspberrypi/common-hal/watchdog/WatchDogTimer.c msgid "timeout duration exceeded the maximum supported value" -msgstr "" +msgstr "timeout duration exceeded the maximum supported value" #: shared-bindings/busio/UART.c msgid "timeout must be 0.0-100.0 seconds" -msgstr "" +msgstr "timeout must be 0.0-100.0 seconds" #: ports/nrf/common-hal/_bleio/Adapter.c msgid "timeout must be < 655.35 secs" -msgstr "" +msgstr "timeout must be < 655.35 secs" #: shared-bindings/_bleio/CharacteristicBuffer.c msgid "timeout must be >= 0.0" -msgstr "" +msgstr "timeout must be >= 0.0" #: shared-module/sdcardio/SDCard.c msgid "timeout waiting for v1 card" -msgstr "" +msgstr "timeout waiting for v1 card" #: shared-module/sdcardio/SDCard.c msgid "timeout waiting for v2 card" -msgstr "" +msgstr "timeout waiting for v2 card" #: shared-bindings/time/__init__.c msgid "timestamp out of range for platform time_t" -msgstr "" +msgstr "timestamp out of range for platform time_t" #: extmod/ulab/code/ndarray.c msgid "tobytes can be invoked for dense arrays only" -msgstr "" +msgstr "tobytes can be invoked for dense arrays only" #: shared-module/struct/__init__.c msgid "too many arguments provided with the given format" -msgstr "" +msgstr "too many arguments provided with the given format" -#: extmod/ulab/code/ulab_create.c +#: extmod/ulab/code/ndarray.c extmod/ulab/code/ulab_create.c msgid "too many dimensions" -msgstr "" +msgstr "too many dimensions" #: extmod/ulab/code/ndarray.c msgid "too many indices" -msgstr "" +msgstr "too many indices" #: py/runtime.c #, c-format msgid "too many values to unpack (expected %d)" -msgstr "" +msgstr "too many values to unpack (expected %d)" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/numpy/approx/approx.c msgid "trapz is defined for 1D arrays" -msgstr "" +msgstr "trapz is defined for 1D arrays" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/numpy/approx/approx.c msgid "trapz is defined for 1D arrays of equal length" -msgstr "" +msgstr "trapz is defined for 1D arrays of equal length" #: ports/esp32s2/common-hal/alarm/pin/__init__.c msgid "trigger level must be 0 or 1" -msgstr "" +msgstr "trigger level must be 0 or 1" #: py/obj.c msgid "tuple/list has wrong length" -msgstr "" +msgstr "tuple/list has wrong length" #: ports/esp32s2/common-hal/canio/CAN.c #, c-format msgid "twai_driver_install returned esp-idf error #%d" -msgstr "" +msgstr "twai_driver_install returned esp-idf error #%d" #: ports/esp32s2/common-hal/canio/CAN.c #, c-format msgid "twai_start returned esp-idf error #%d" -msgstr "" +msgstr "twai_start returned esp-idf error #%d" #: ports/atmel-samd/common-hal/busio/UART.c #: ports/esp32s2/common-hal/busio/UART.c ports/nrf/common-hal/busio/UART.c #: shared-bindings/busio/UART.c shared-bindings/canio/CAN.c msgid "tx and rx cannot both be None" -msgstr "" +msgstr "tx and rx cannot both be None" #: py/objtype.c msgid "type '%q' is not an acceptable base type" -msgstr "" +msgstr "type '%q' is not an acceptable base type" #: py/objtype.c msgid "type is not an acceptable base type" -msgstr "" +msgstr "type is not an acceptable base type" #: py/runtime.c msgid "type object '%q' has no attribute '%q'" -msgstr "" +msgstr "type object '%q' has no attribute '%q'" #: py/objgenerator.c msgid "type object 'generator' has no attribute '__await__'" -msgstr "" +msgstr "type object 'generator' has no attribute '__await__'" #: py/objtype.c msgid "type takes 1 or 3 arguments" -msgstr "" +msgstr "type takes 1 or 3 arguments" #: py/objint_longlong.c msgid "ulonglong too large" -msgstr "" +msgstr "ulonglong too large" #: py/emitnative.c msgid "unary op %q not implemented" -msgstr "" +msgstr "unary op %q not implemented" #: py/parse.c msgid "unexpected indent" -msgstr "" +msgstr "unexpected indent" #: py/bc.c msgid "unexpected keyword argument" -msgstr "" +msgstr "unexpected keyword argument" #: py/bc.c py/objnamedtuple.c msgid "unexpected keyword argument '%q'" -msgstr "" +msgstr "unexpected keyword argument '%q'" #: py/lexer.c msgid "unicode name escapes" -msgstr "" +msgstr "unicode name escapes" #: py/parse.c msgid "unindent does not match any outer indentation level" -msgstr "" +msgstr "unindent does not match any outer indentation level" #: py/objstr.c #, c-format msgid "unknown conversion specifier %c" -msgstr "" +msgstr "unknown conversion specifier %c" #: py/objstr.c msgid "unknown format code '%c' for object of type '%q'" -msgstr "" +msgstr "unknown format code '%c' for object of type '%q'" #: py/compile.c msgid "unknown type" -msgstr "" +msgstr "unknown type" #: py/emitnative.c msgid "unknown type '%q'" -msgstr "" +msgstr "unknown type '%q'" #: py/objstr.c msgid "unmatched '{' in format" -msgstr "" +msgstr "unmatched '{' in format" #: py/objtype.c py/runtime.c msgid "unreadable attribute" -msgstr "" +msgstr "unreadable attribute" #: shared-bindings/displayio/TileGrid.c shared-bindings/vectorio/VectorShape.c #: shared-module/vectorio/Polygon.c msgid "unsupported %q type" -msgstr "" +msgstr "unsupported %q type" #: py/emitinlinethumb.c #, c-format msgid "unsupported Thumb instruction '%s' with %d arguments" -msgstr "" +msgstr "unsupported Thumb instruction '%s' with %d arguments" #: py/emitinlinextensa.c #, c-format msgid "unsupported Xtensa instruction '%s' with %d arguments" -msgstr "" +msgstr "unsupported Xtensa instruction '%s' with %d arguments" #: py/objstr.c #, c-format msgid "unsupported format character '%c' (0x%x) at index %d" -msgstr "" +msgstr "unsupported format character '%c' (0x%x) at index %d" #: py/runtime.c msgid "unsupported type for %q: '%q'" -msgstr "" +msgstr "unsupported type for %q: '%q'" #: py/runtime.c msgid "unsupported type for operator" -msgstr "" +msgstr "unsupported type for operator" #: py/runtime.c msgid "unsupported types for %q: '%q', '%q'" -msgstr "" +msgstr "unsupported types for %q: '%q', '%q'" #: py/objint.c #, c-format msgid "value must fit in %d byte(s)" -msgstr "" +msgstr "value must fit in %d byte(s)" #: shared-bindings/displayio/Bitmap.c msgid "value_count must be > 0" -msgstr "" +msgstr "value_count must be > 0" #: ports/esp32s2/common-hal/alarm/pin/__init__.c msgid "wakeup conflict" -msgstr "" +msgstr "wakeup conflict" #: ports/esp32s2/common-hal/watchdog/WatchDogTimer.c msgid "watchdog not initialized" -msgstr "" +msgstr "WatchDog not initialised" #: shared-bindings/watchdog/WatchDogTimer.c msgid "watchdog timeout must be greater than 0" -msgstr "" +msgstr "WatchDog timeout must be greater than 0" #: shared-bindings/bitops/__init__.c #, c-format msgid "width must be from 2 to 8 (inclusive), not %d" -msgstr "" +msgstr "width must be from 2 to 8 (inclusive), not %d" #: shared-bindings/rgbmatrix/RGBMatrix.c msgid "width must be greater than zero" -msgstr "" +msgstr "width must be greater than zero" #: ports/esp32s2/common-hal/wifi/Radio.c msgid "wifi is not enabled" -msgstr "" +msgstr "WiFi is not enabled" #: shared-bindings/_bleio/Adapter.c msgid "window must be <= interval" -msgstr "" +msgstr "window must be <= interval" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "wrong axis index" -msgstr "" +msgstr "wrong axis index" #: extmod/ulab/code/ulab_create.c msgid "wrong axis specified" -msgstr "" +msgstr "wrong axis specified" -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/numpy/compare/compare.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "wrong input type" -msgstr "" +msgstr "wrong input type" #: extmod/ulab/code/ulab_create.c py/objstr.c msgid "wrong number of arguments" -msgstr "" +msgstr "wrong number of arguments" #: py/runtime.c msgid "wrong number of values to unpack" -msgstr "" +msgstr "wrong number of values to unpack" #: extmod/ulab/code/ndarray.c msgid "wrong operand type" -msgstr "" +msgstr "wrong operand type" -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "wrong output type" -msgstr "" +msgstr "wrong output type" #: shared-module/displayio/Shape.c msgid "x value out of bounds" -msgstr "" +msgstr "x value out of bounds" #: ports/esp32s2/common-hal/audiobusio/__init__.c msgid "xTaskCreate failed" -msgstr "" +msgstr "xTaskCreate failed" #: shared-bindings/displayio/Shape.c msgid "y should be an int" -msgstr "" +msgstr "y should be an int" #: shared-module/displayio/Shape.c msgid "y value out of bounds" -msgstr "" +msgstr "y value out of bounds" #: py/objrange.c msgid "zero step" -msgstr "" +msgstr "zero step" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "zi must be an ndarray" -msgstr "" +msgstr "zi must be an ndarray" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "zi must be of float type" -msgstr "" +msgstr "zi must be of float type" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "zi must be of shape (n_section, 2)" -msgstr "" +msgstr "zi must be of shape (n_section, 2)" + +#~ msgid "Attempted heap allocation when MicroPython VM not running." +#~ msgstr "Attempted heap allocation when MicroPython VM not running." + +#~ msgid "MicroPython NLR jump failed. Likely memory corruption." +#~ msgstr "MicroPython NLR jump failed. Likely memory corruption." + +#, fuzzy +#~ msgid "MicroPython fatal error." +#~ msgstr "CircuitPython fatal error." + +#~ msgid "argument must be ndarray" +#~ msgstr "argument must be ndarray" + +#~ msgid "norm is defined for 1D and 2D arrays" +#~ msgstr "norm is defined for 1D and 2D arrays" + +#~ msgid "Nordic Soft Device failure assertion." +#~ msgstr "Nordic Soft Device failure assertion." + +#~ msgid "Unknown soft device error: %04x" +#~ msgstr "Unknown soft device error: %04x" + +#~ msgid "first argument must be an iterable" +#~ msgstr "first argument must be an iterable" + +#~ msgid "iterables are not of the same length" +#~ msgstr "iterables are not of the same length" + +#~ msgid "Selected CTS pin not valid" +#~ msgstr "Selected CTS pin not valid" + +#~ msgid "Selected RTS pin not valid" +#~ msgstr "Selected RTS pin not valid" diff --git a/locale/es.po b/locale/es.po index c51351075f..dca1a5a216 100644 --- a/locale/es.po +++ b/locale/es.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-01-04 12:55-0600\n" -"PO-Revision-Date: 2021-03-21 21:29+0000\n" +"PO-Revision-Date: 2021-04-09 19:26+0000\n" "Last-Translator: Jose David M \n" "Language-Team: \n" "Language: es\n" @@ -16,7 +16,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.5.2-dev\n" +"X-Generator: Weblate 4.6-dev\n" #: main.c msgid "" @@ -424,6 +424,10 @@ msgstr "AnalogOut es solo de 16 bits. El valor debe ser menor que 65536." msgid "AnalogOut not supported on given pin" msgstr "El pin proporcionado no soporta AnalogOut" +#: ports/stm/common-hal/audiopwmio/PWMAudioOut.c +msgid "Another PWMAudioOut is already active" +msgstr "Otra salida PWMAudioOut esta ya activada" + #: ports/atmel-samd/common-hal/pulseio/PulseOut.c #: ports/cxd56/common-hal/pulseio/PulseOut.c msgid "Another send is already active" @@ -447,10 +451,8 @@ msgid "Attempt to allocate %d blocks" msgstr "Tratando de localizar %d bloques" #: supervisor/shared/safe_mode.c -msgid "Attempted heap allocation when MicroPython VM not running." +msgid "Attempted heap allocation when VM not running." msgstr "" -"Se intentó asignación del montículo, sin que la VM de MicroPython esté " -"ejecutando." #: shared-bindings/wifi/Radio.c msgid "Authentication failure" @@ -543,6 +545,7 @@ msgid "Buffer is too small" msgstr "El buffer es muy pequeño" #: ports/nrf/common-hal/audiopwmio/PWMAudioOut.c +#: ports/stm/common-hal/audiopwmio/PWMAudioOut.c #, c-format msgid "Buffer length %d too big. It must be less than %d" msgstr "Longitud del buffer %d es demasiado grande. Tiene que ser menor a %d" @@ -955,11 +958,11 @@ msgstr "Se esperaba un tuple de %d, se obtuvo %d" msgid "Extended advertisements with scan response not supported." msgstr "No se admiten anuncios extendidos con respuesta de escaneo." -#: extmod/ulab/code/fft/fft.c +#: extmod/ulab/code/numpy/fft/fft_tools.c msgid "FFT is defined for ndarrays only" msgstr "FFT se define solo para ndarrays" -#: extmod/ulab/code/fft/fft.c +#: extmod/ulab/code/numpy/fft/fft_tools.c msgid "FFT is implemented for linear arrays only" msgstr "FFT solo esta implementado para arrays lineales" @@ -1000,6 +1003,10 @@ msgstr "Fallo al tomar memoria Wifi" msgid "Failed to allocate wifi scan memory" msgstr "Fallo al tomar memoria para búsqueda wifi" +#: ports/stm/common-hal/audiopwmio/PWMAudioOut.c +msgid "Failed to buffer the sample" +msgstr "Fallo al hacer el búfer de la muestra" + #: ports/nrf/common-hal/_bleio/Adapter.c msgid "Failed to connect: internal error" msgstr "Error al conectar: error interno" @@ -1025,6 +1032,10 @@ msgstr "No se puede liberar el mutex, err 0x%04x" msgid "Failed to write internal flash." msgstr "Error al escribir el flash interno." +#: supervisor/shared/safe_mode.c +msgid "Fatal error." +msgstr "" + #: py/moduerrno.c msgid "File exists" msgstr "El archivo ya existe" @@ -1207,6 +1218,7 @@ msgstr "%q inválido" #: ports/atmel-samd/common-hal/audiobusio/I2SOut.c #: ports/atmel-samd/common-hal/audiobusio/PDMIn.c +#: ports/mimxrt10xx/common-hal/busio/UART.c msgid "Invalid %q pin" msgstr "Pin %q inválido" @@ -1234,7 +1246,9 @@ msgid "Invalid DAC pin supplied" msgstr "Pin suministrado inválido para DAC" #: ports/atmel-samd/common-hal/pwmio/PWMOut.c -#: ports/cxd56/common-hal/pwmio/PWMOut.c ports/nrf/common-hal/pwmio/PWMOut.c +#: ports/cxd56/common-hal/pwmio/PWMOut.c +#: ports/mimxrt10xx/common-hal/pwmio/PWMOut.c +#: ports/nrf/common-hal/pwmio/PWMOut.c #: ports/raspberrypi/common-hal/pwmio/PWMOut.c shared-bindings/pwmio/PWMOut.c msgid "Invalid PWM frequency" msgstr "Frecuencia PWM inválida" @@ -1422,14 +1436,6 @@ msgstr "Valor máximo de x cuando se refleja es %d" msgid "Messages limited to 8 bytes" msgstr "Mensajes limitados a 8 bytes" -#: supervisor/shared/safe_mode.c -msgid "MicroPython NLR jump failed. Likely memory corruption." -msgstr "MicroPython NLR jump falló. Probable corrupción de la memoria." - -#: supervisor/shared/safe_mode.c -msgid "MicroPython fatal error." -msgstr "Error fatal de MicroPython." - #: shared-bindings/audiobusio/PDMIn.c msgid "Microphone startup delay must be in range 0.0 to 1.0" msgstr "Micrófono demora de inicio debe estar en el rango 0.0 a 1.0" @@ -1485,6 +1491,10 @@ msgstr "Debe proporcionar un pin MISO o MOSI" msgid "Must use a multiple of 6 rgb pins, not %d" msgstr "Debe usar un múltiplo de 6 pines rgb, no %d" +#: supervisor/shared/safe_mode.c +msgid "NLR jump failed. Likely memory corruption." +msgstr "" + #: ports/esp32s2/common-hal/nvm/ByteArray.c msgid "NVS Error" msgstr "Error NVS" @@ -1618,8 +1628,12 @@ msgid "No timer available" msgstr "No hay temporizador disponible" #: supervisor/shared/safe_mode.c -msgid "Nordic Soft Device failure assertion." -msgstr "Fallo de aserción de dispositivo Nordic Soft." +msgid "Nordic system firmware failure assertion." +msgstr "Falla en la aserción del firmware del dispositivo Nordic." + +#: ports/nrf/common-hal/_bleio/__init__.c +msgid "Nordic system firmware out of memory" +msgstr "El firmware del sistema Nordic no tiene memoria" #: shared-bindings/ipaddress/IPv4Address.c shared-bindings/ipaddress/__init__.c msgid "Not a valid IP string" @@ -1935,7 +1949,7 @@ msgstr "Solo-lectura" msgid "Read-only filesystem" msgstr "Sistema de archivos de solo-Lectura" -#: shared-module/bitmaptools/__init__.c shared-module/displayio/Bitmap.c +#: shared-module/displayio/Bitmap.c msgid "Read-only object" msgstr "Objeto de solo-lectura" @@ -2010,14 +2024,6 @@ msgstr "Frecuencia de muestreo demasiado alta. Debe ser menor a %d" msgid "Scan already in progess. Stop with stop_scan." msgstr "Escaneo en progreso. Usa stop_scan para detener." -#: ports/mimxrt10xx/common-hal/busio/UART.c -msgid "Selected CTS pin not valid" -msgstr "Pin CTS seleccionado no válido" - -#: ports/mimxrt10xx/common-hal/busio/UART.c -msgid "Selected RTS pin not valid" -msgstr "Pin RTS seleccionado no válido" - #: ports/atmel-samd/common-hal/audiobusio/I2SOut.c #: ports/atmel-samd/common-hal/audiobusio/PDMIn.c msgid "Serializer in use" @@ -2305,8 +2311,8 @@ msgstr "Error de seguridad desconocido: 0x%04x" #: ports/nrf/common-hal/_bleio/__init__.c #, c-format -msgid "Unknown soft device error: %04x" -msgstr "Error leve desconocido en dispositivo: %04x" +msgid "Unknown system firmware error: %04x" +msgstr "Error desconocido en el firmware sistema: %04x" #: shared-bindings/_pixelbuf/PixelBuf.c #, c-format @@ -2470,11 +2476,11 @@ msgstr "addresses esta vacío" msgid "arg is an empty sequence" msgstr "argumento es una secuencia vacía" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "argsort argument must be an ndarray" msgstr "El argumento para argsort debe ser un ndarray" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "argsort is not implemented for flattened arrays" msgstr "El argot no está implementado para arrays aplanados" @@ -2482,10 +2488,6 @@ msgstr "El argot no está implementado para arrays aplanados" msgid "argument has wrong type" msgstr "el argumento tiene un tipo erroneo" -#: extmod/ulab/code/linalg/linalg.c -msgid "argument must be ndarray" -msgstr "argumento debe ser ndarray" - #: py/argcheck.c shared-bindings/_stage/__init__.c #: shared-bindings/digitalio/DigitalInOut.c shared-bindings/gamepad/GamePad.c msgid "argument num/types mismatch" @@ -2495,7 +2497,8 @@ msgstr "argumento número/tipos no coinciden" msgid "argument should be a '%q' not a '%q'" msgstr "argumento deberia ser un '%q' no un '%q'" -#: extmod/ulab/code/linalg/linalg.c extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c +#: extmod/ulab/code/numpy/transform/transform.c msgid "arguments must be ndarrays" msgstr "argumentos deben ser ndarrays" @@ -2508,11 +2511,11 @@ msgstr "Longitud del array e índice tienen que ser iguales" msgid "array/bytes required on right side" msgstr "array/bytes requeridos en el lado derecho" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "attempt to get (arg)min/(arg)max of empty sequence" msgstr "Intendo de obteber (arg)min/(arg)max de secuencia vacía" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "attempt to get argmin/argmax of an empty sequence" msgstr "intento de obtener argmin/argmax de una secuencia vacía" @@ -2520,15 +2523,15 @@ msgstr "intento de obtener argmin/argmax de una secuencia vacía" msgid "attributes not supported yet" msgstr "atributos aún no soportados" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "axis is out of bounds" msgstr "Eje está fuera de sus límites" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c extmod/ulab/code/ulab_tools.c msgid "axis must be None, or an integer" msgstr "Eje tiene que ser None, o un entero" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "axis too long" msgstr "Eje demasiado largo" @@ -2564,7 +2567,7 @@ msgstr "bits_per_sample debe ser 8 ó 16" msgid "branch not in range" msgstr "la rama no está dentro del rango" -#: extmod/ulab/code/ulab_create.c +#: extmod/ulab/code/ulab_create.c extmod/ulab/code/utils/utils.c msgid "buffer is smaller than requested size" msgstr "El buffer es mas pequeño que el requerido" @@ -2572,7 +2575,7 @@ msgstr "El buffer es mas pequeño que el requerido" msgid "buffer must be a bytes-like object" msgstr "buffer debe de ser un objeto bytes-like" -#: extmod/ulab/code/ulab_create.c +#: extmod/ulab/code/ulab_create.c extmod/ulab/code/utils/utils.c msgid "buffer size must be a multiple of element size" msgstr "El tamaño del buffer debe ser un múltiplo del tamaño del elemento" @@ -2834,19 +2837,19 @@ msgstr "constant debe ser un entero" msgid "conversion to object" msgstr "conversión a objeto" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/numpy/filter/filter.c msgid "convolve arguments must be linear arrays" msgstr "los argumentos para convolve deben ser arreglos lineares" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/numpy/filter/filter.c msgid "convolve arguments must be ndarrays" msgstr "los argumentos para convolve deben ser ndarrays" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/numpy/filter/filter.c msgid "convolve arguments must not be empty" msgstr "los argumentos para convolve no deben estar vacíos" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "could not invert Vandermonde matrix" msgstr "no se pudo invertir la matriz de Vandermonde" @@ -2854,15 +2857,15 @@ msgstr "no se pudo invertir la matriz de Vandermonde" msgid "couldn't determine SD card version" msgstr "no se pudo determinar la versión de la tarjeta SD" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "cross is defined for 1D arrays of length 3" msgstr "Cruce está definido para un array 1D de longitud 3" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "data must be iterable" msgstr "los datos deben permitir iteración" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "data must be of equal length" msgstr "los datos deben ser de igual tamaño" @@ -2901,15 +2904,15 @@ msgstr "destination_length debe ser un int >= 0" msgid "dict update sequence has wrong length" msgstr "la secuencia de actualizacion del dict tiene una longitud incorrecta" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "diff argument must be an ndarray" msgstr "El argumento diff debe ser un ndarray" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "differentiation order out of range" msgstr "Orden de diferenciación fuera de rango" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/transform/transform.c msgid "dimensions do not match" msgstr "las dimensiones no concuerdan" @@ -3028,11 +3031,11 @@ msgstr "el archivo deberia ser una archivo abierto en modo byte" msgid "filesystem must provide mount method" msgstr "sistema de archivos debe proporcionar método de montaje" -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "first argument must be a callable" msgstr "se debe poder llamar al primer argumento" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "first argument must be a function" msgstr "el primer argumento debe ser una función" @@ -3040,11 +3043,7 @@ msgstr "el primer argumento debe ser una función" msgid "first argument must be a tuple of ndarrays" msgstr "Primer argumento tiene que ser una tupla de ndarrays" -#: extmod/ulab/code/ndarray.c -msgid "first argument must be an iterable" -msgstr "el primer argumento debe ser un iterable" - -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "first argument must be an ndarray" msgstr "el primer argumento debe ser ndarray" @@ -3056,7 +3055,7 @@ msgstr "primer argumento para super() debe ser de tipo" msgid "flattening order must be either 'C', or 'F'" msgstr "el orden de aplanamiento debe ser 'C' o 'F'" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "flip argument must be an ndarray" msgstr "el argumento invertido debe ser un ndarray" @@ -3089,7 +3088,7 @@ msgstr "la función esperaba minimo %d argumentos, tiene %d" msgid "function got multiple values for argument '%q'" msgstr "la función tiene múltiples valores para el argumento '%q'" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "function has the same sign at the ends of interval" msgstr "la función tiene el mismo signo a extremos del intervalo" @@ -3164,7 +3163,7 @@ msgstr "relleno (padding) incorrecto" msgid "index is out of bounds" msgstr "el índice está fuera de límites" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c extmod/ulab/code/ulab_tools.c #: ports/esp32s2/common-hal/pulseio/PulseIn.c py/obj.c #: shared-bindings/bitmaptools/__init__.c msgid "index out of range" @@ -3178,7 +3177,7 @@ msgstr "indices deben ser enteros" msgid "indices must be integers, slices, or Boolean lists" msgstr "los índices deben ser enteros, particiones o listas de booleanos" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "initial values must be iterable" msgstr "los valores iniciales deben permitir iteración" @@ -3198,7 +3197,7 @@ msgstr "Formas de entrada y salida no son compactibles" msgid "input argument must be an integer, a tuple, or a list" msgstr "argumento de entrada debe ser un entero, una tupla o una lista" -#: extmod/ulab/code/fft/fft.c +#: extmod/ulab/code/numpy/fft/fft_tools.c msgid "input array length must be power of 2" msgstr "el tamaño del arreglo de entrada debe ser potencia de 2" @@ -3206,15 +3205,15 @@ msgstr "el tamaño del arreglo de entrada debe ser potencia de 2" msgid "input arrays are not compatible" msgstr "Arrays de entrada no son compactibles" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "input data must be an iterable" msgstr "los datos de entrada deben ser iterables" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/linalg/linalg.c msgid "input matrix is asymmetric" msgstr "la matriz de entrada es asimétrica" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/linalg/linalg.c msgid "input matrix is singular" msgstr "la matriz de entrada es singular" @@ -3230,23 +3229,23 @@ msgstr "Entrada tiene que ser un tensor de rango 2" msgid "input must be an ndarray" msgstr "Entrada tiene que ser un ndarray" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "input must be one-dimensional" msgstr "Entrada tiene que ser unidimensional" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/ulab_tools.c msgid "input must be square matrix" msgstr "la entrada debe ser una matriz cuadrada" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "input must be tuple, list, range, or ndarray" msgstr "la entrada debe ser una tupla, lista, rango o ndarray" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "input vectors must be of equal length" msgstr "los vectores de entrada deben ser de igual tamaño" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "inputs are not iterable" msgstr "Entradas no son iterables" @@ -3258,7 +3257,7 @@ msgstr "int() arg 2 debe ser >= 2 y <= 36" msgid "integer required" msgstr "Entero requerido" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/numpy/approx/approx.c msgid "interp is defined for 1D arrays of equal length" msgstr "interp está definido para arreglos de 1D del mismo tamaño" @@ -3280,6 +3279,10 @@ msgstr "los bits_per_pixel %d no son validos, deben ser 1, 4, 8, 16, 24 o 32" msgid "invalid cert" msgstr "certificado inválido" +#: py/compile.c +msgid "invalid decorator" +msgstr "" + #: extmod/uos_dupterm.c msgid "invalid dupterm index" msgstr "index dupterm inválido" @@ -3347,11 +3350,7 @@ msgstr "issubclass() arg 1 debe ser una clase" msgid "issubclass() arg 2 must be a class or a tuple of classes" msgstr "issubclass() arg 2 debe ser una clase o tuple de clases" -#: extmod/ulab/code/ndarray.c -msgid "iterables are not of the same length" -msgstr "los iterables no son del mismo tamaño" - -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/linalg/linalg.c msgid "iterations did not converge" msgstr "las iteraciones no convergen" @@ -3422,7 +3421,7 @@ msgstr "map buffer muy pequeño" msgid "math domain error" msgstr "error de dominio matemático" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/linalg/linalg.c msgid "matrix is not positive definite" msgstr "matrix no es definida positiva" @@ -3444,15 +3443,15 @@ msgstr "Máximo número de dimensiones es 4" msgid "maximum recursion depth exceeded" msgstr "profundidad máxima de recursión excedida" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "maxiter must be > 0" msgstr "maxiter tiene que ser > 0" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "maxiter should be > 0" msgstr "maxiter debe ser > 0" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "median argument must be an ndarray" msgstr "argumento median debe ser una matriz ndarray" @@ -3474,7 +3473,7 @@ msgstr "" msgid "module not found" msgstr "módulo no encontrado" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "more degrees of freedom than data points" msgstr "más grados de libertad que los puntos de datos" @@ -3594,10 +3593,6 @@ msgstr "el tiempo de espera non-zero deber ser > 0.01" msgid "non-zero timeout must be >= interval" msgstr "el tiempo de espera non-zero debe ser >= intervalo" -#: extmod/ulab/code/linalg/linalg.c -msgid "norm is defined for 1D and 2D arrays" -msgstr "norma está definida para arrays 1D y 2D" - #: shared-bindings/_bleio/UUID.c msgid "not a 128-bit UUID" msgstr "no es 128-bit UUID" @@ -3667,7 +3662,7 @@ msgstr "objeto con protocolo de buffer requerido" msgid "odd-length string" msgstr "string de longitud impar" -#: extmod/ulab/code/ulab_create.c +#: extmod/ulab/code/ulab_create.c extmod/ulab/code/utils/utils.c msgid "offset is too large" msgstr "offset es demasiado grande" @@ -3696,8 +3691,8 @@ msgstr "solo se admite sample_rate=16000" msgid "only slices with step=1 (aka None) are supported" msgstr "solo se admiten segmentos con step=1 (alias None)" -#: extmod/ulab/code/compare/compare.c extmod/ulab/code/ndarray.c -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/ndarray.c extmod/ulab/code/numpy/compare/compare.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "operands could not be broadcast together" msgstr "los operandos no se pueden transmitir juntos" @@ -3705,7 +3700,7 @@ msgstr "los operandos no se pueden transmitir juntos" msgid "operation is implemented for 1D Boolean arrays only" msgstr "operación solo está implementada para arrays booleanos de 1D" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "operation is not implemented on ndarrays" msgstr "la operación no está implementada para ndarrays" @@ -3722,6 +3717,14 @@ msgstr "ord espera un carácter" msgid "ord() expected a character, but string of length %d found" msgstr "ord() espera un carácter, pero encontró un string de longitud %d" +#: extmod/ulab/code/utils/utils.c +msgid "out array is too small" +msgstr "La matriz de salida es demasiado pequeña" + +#: extmod/ulab/code/utils/utils.c +msgid "out must be a float dense array" +msgstr "la matriz de salida debe ser densa de números float" + #: shared-bindings/displayio/Bitmap.c msgid "out of range of source" msgstr "fuera de rango de fuente" @@ -3850,7 +3853,7 @@ msgstr "desbordamiento de cola(queue)" msgid "raw f-strings are not implemented" msgstr "no está implementado cadenas-f sin procesar" -#: extmod/ulab/code/fft/fft.c +#: extmod/ulab/code/numpy/fft/fft_tools.c msgid "real and imaginary parts must be of equal length" msgstr "las partes reales e imaginarias deben ser de igual longitud" @@ -3885,7 +3888,7 @@ msgstr "rgb_pins[%d] duplica otra asignación de pin" msgid "rgb_pins[%d] is not on the same port as clock" msgstr "rgb_pins[%d] no está en el mismo puerto que el reloj" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "roll argument must be an ndarray" msgstr "Argumento enrolado tiene que ser un ndarray" @@ -3934,7 +3937,7 @@ msgstr "signo no permitido con el especificador integer format 'c'" msgid "single '}' encountered in format string" msgstr "un solo '}' encontrado en format string" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/ulab_tools.c msgid "size is defined for ndarrays only" msgstr "el tamaño se define solo para ndarrays" @@ -3958,19 +3961,19 @@ msgstr "pequeño int desbordamiento" msgid "soft reboot\n" msgstr "reinicio suave\n" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "sort argument must be an ndarray" msgstr "argumento de ordenado debe ser un ndarray" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "sos array must be of shape (n_section, 6)" msgstr "el arreglo sos debe de forma (n_section, 6)" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "sos[:, 3] should be all ones" msgstr "sos[:, 3] deberían ser todos unos" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "sosfilt requires iterable arguments" msgstr "sosfilt requiere argumentos iterables" @@ -4085,7 +4088,7 @@ msgstr "tobytes solo pueden ser invocados por arrays densos" msgid "too many arguments provided with the given format" msgstr "demasiados argumentos provistos con el formato dado" -#: extmod/ulab/code/ulab_create.c +#: extmod/ulab/code/ndarray.c extmod/ulab/code/ulab_create.c msgid "too many dimensions" msgstr "demasiadas dimensiones" @@ -4098,11 +4101,11 @@ msgstr "demasiados índices" msgid "too many values to unpack (expected %d)" msgstr "demasiados valores para descomprimir (%d esperado)" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/numpy/approx/approx.c msgid "trapz is defined for 1D arrays" msgstr "trapz esta definido para matrices 1D" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/numpy/approx/approx.c msgid "trapz is defined for 1D arrays of equal length" msgstr "trapz está definido para arreglos 1D de igual tamaño" @@ -4273,7 +4276,7 @@ msgstr "wifi no esta habilitado" msgid "window must be <= interval" msgstr "la ventana debe ser <= intervalo" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "wrong axis index" msgstr "indice de eje erróneo" @@ -4281,7 +4284,8 @@ msgstr "indice de eje erróneo" msgid "wrong axis specified" msgstr "eje especificado erróneo" -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/numpy/compare/compare.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "wrong input type" msgstr "tipo de entrada incorrecta" @@ -4297,7 +4301,7 @@ msgstr "numero erroneo de valores a descomprimir" msgid "wrong operand type" msgstr "tipo de operando incorrecto" -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "wrong output type" msgstr "tipo de salida incorrecta" @@ -4321,18 +4325,62 @@ msgstr "valor y fuera de límites" msgid "zero step" msgstr "paso cero" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "zi must be an ndarray" msgstr "zi debe ser un ndarray" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "zi must be of float type" msgstr "zi debe ser de tipo flotante" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "zi must be of shape (n_section, 2)" msgstr "zi debe ser una forma (n_section,2)" +#~ msgid "Attempted heap allocation when MicroPython VM not running." +#~ msgstr "" +#~ "Se intentó asignación del montículo, sin que la VM de MicroPython esté " +#~ "ejecutando." + +#~ msgid "MicroPython NLR jump failed. Likely memory corruption." +#~ msgstr "MicroPython NLR jump falló. Probable corrupción de la memoria." + +#~ msgid "MicroPython fatal error." +#~ msgstr "Error fatal de MicroPython." + +#~ msgid "argument must be ndarray" +#~ msgstr "argumento debe ser ndarray" + +#~ msgid "matrix dimensions do not match" +#~ msgstr "las dimensiones de la matriz no coinciden" + +#~ msgid "norm is defined for 1D and 2D arrays" +#~ msgstr "norma está definida para arrays 1D y 2D" + +#~ msgid "vectors must have same lengths" +#~ msgstr "los vectores deben tener el mismo tamaño" + +#~ msgid "Nordic Soft Device failure assertion." +#~ msgstr "Fallo de aserción de dispositivo Nordic Soft." + +#~ msgid "Nordic soft device out of memory" +#~ msgstr "El firmaware del sistema no tiene memoria" + +#~ msgid "Unknown soft device error: %04x" +#~ msgstr "Error leve desconocido en dispositivo: %04x" + +#~ msgid "first argument must be an iterable" +#~ msgstr "el primer argumento debe ser un iterable" + +#~ msgid "iterables are not of the same length" +#~ msgstr "los iterables no son del mismo tamaño" + +#~ msgid "Selected CTS pin not valid" +#~ msgstr "Pin CTS seleccionado no válido" + +#~ msgid "Selected RTS pin not valid" +#~ msgstr "Pin RTS seleccionado no válido" + #~ msgid "Could not initialize channel" #~ msgstr "No se pudo inicializar el canal" @@ -4361,12 +4409,6 @@ msgstr "zi debe ser una forma (n_section,2)" #~ "El temporizador es utilizado para uso interno - declare los pines para " #~ "PWM más temprano en el programa" -#~ msgid "matrix dimensions do not match" -#~ msgstr "las dimensiones de la matriz no coinciden" - -#~ msgid "vectors must have same lengths" -#~ msgstr "los vectores deben tener el mismo tamaño" - #~ msgid "Group full" #~ msgstr "Group lleno" diff --git a/locale/fil.po b/locale/fil.po index 7310108c8a..7b4320efdf 100644 --- a/locale/fil.po +++ b/locale/fil.po @@ -414,6 +414,10 @@ msgstr "AnalogOut ay 16 bits. Value ay dapat hindi hihigit pa sa 65536." msgid "AnalogOut not supported on given pin" msgstr "Hindi supportado ang AnalogOut sa ibinigay na pin" +#: ports/stm/common-hal/audiopwmio/PWMAudioOut.c +msgid "Another PWMAudioOut is already active" +msgstr "" + #: ports/atmel-samd/common-hal/pulseio/PulseOut.c #: ports/cxd56/common-hal/pulseio/PulseOut.c msgid "Another send is already active" @@ -437,7 +441,7 @@ msgid "Attempt to allocate %d blocks" msgstr "" #: supervisor/shared/safe_mode.c -msgid "Attempted heap allocation when MicroPython VM not running." +msgid "Attempted heap allocation when VM not running." msgstr "" #: shared-bindings/wifi/Radio.c @@ -530,6 +534,7 @@ msgid "Buffer is too small" msgstr "" #: ports/nrf/common-hal/audiopwmio/PWMAudioOut.c +#: ports/stm/common-hal/audiopwmio/PWMAudioOut.c #, c-format msgid "Buffer length %d too big. It must be less than %d" msgstr "" @@ -942,11 +947,11 @@ msgstr "" msgid "Extended advertisements with scan response not supported." msgstr "" -#: extmod/ulab/code/fft/fft.c +#: extmod/ulab/code/numpy/fft/fft_tools.c msgid "FFT is defined for ndarrays only" msgstr "" -#: extmod/ulab/code/fft/fft.c +#: extmod/ulab/code/numpy/fft/fft_tools.c msgid "FFT is implemented for linear arrays only" msgstr "" @@ -987,6 +992,10 @@ msgstr "" msgid "Failed to allocate wifi scan memory" msgstr "" +#: ports/stm/common-hal/audiopwmio/PWMAudioOut.c +msgid "Failed to buffer the sample" +msgstr "" + #: ports/nrf/common-hal/_bleio/Adapter.c msgid "Failed to connect: internal error" msgstr "" @@ -1012,6 +1021,10 @@ msgstr "Nabigo sa pagrelease ng mutex, status: 0x%08lX" msgid "Failed to write internal flash." msgstr "" +#: supervisor/shared/safe_mode.c +msgid "Fatal error." +msgstr "" + #: py/moduerrno.c msgid "File exists" msgstr "Mayroong file" @@ -1186,6 +1199,7 @@ msgstr "" #: ports/atmel-samd/common-hal/audiobusio/I2SOut.c #: ports/atmel-samd/common-hal/audiobusio/PDMIn.c +#: ports/mimxrt10xx/common-hal/busio/UART.c msgid "Invalid %q pin" msgstr "Mali ang %q pin" @@ -1213,7 +1227,9 @@ msgid "Invalid DAC pin supplied" msgstr "" #: ports/atmel-samd/common-hal/pwmio/PWMOut.c -#: ports/cxd56/common-hal/pwmio/PWMOut.c ports/nrf/common-hal/pwmio/PWMOut.c +#: ports/cxd56/common-hal/pwmio/PWMOut.c +#: ports/mimxrt10xx/common-hal/pwmio/PWMOut.c +#: ports/nrf/common-hal/pwmio/PWMOut.c #: ports/raspberrypi/common-hal/pwmio/PWMOut.c shared-bindings/pwmio/PWMOut.c msgid "Invalid PWM frequency" msgstr "Mali ang PWM frequency" @@ -1401,14 +1417,6 @@ msgstr "" msgid "Messages limited to 8 bytes" msgstr "" -#: supervisor/shared/safe_mode.c -msgid "MicroPython NLR jump failed. Likely memory corruption." -msgstr "" - -#: supervisor/shared/safe_mode.c -msgid "MicroPython fatal error." -msgstr "" - #: shared-bindings/audiobusio/PDMIn.c msgid "Microphone startup delay must be in range 0.0 to 1.0" msgstr "Ang delay ng startup ng mikropono ay dapat na nasa 0.0 hanggang 1.0" @@ -1460,6 +1468,10 @@ msgstr "" msgid "Must use a multiple of 6 rgb pins, not %d" msgstr "" +#: supervisor/shared/safe_mode.c +msgid "NLR jump failed. Likely memory corruption." +msgstr "" + #: ports/esp32s2/common-hal/nvm/ByteArray.c msgid "NVS Error" msgstr "" @@ -1593,7 +1605,11 @@ msgid "No timer available" msgstr "" #: supervisor/shared/safe_mode.c -msgid "Nordic Soft Device failure assertion." +msgid "Nordic system firmware failure assertion." +msgstr "" + +#: ports/nrf/common-hal/_bleio/__init__.c +msgid "Nordic system firmware out of memory" msgstr "" #: shared-bindings/ipaddress/IPv4Address.c shared-bindings/ipaddress/__init__.c @@ -1896,7 +1912,7 @@ msgstr "Basahin-lamang" msgid "Read-only filesystem" msgstr "Basahin-lamang mode" -#: shared-module/bitmaptools/__init__.c shared-module/displayio/Bitmap.c +#: shared-module/displayio/Bitmap.c #, fuzzy msgid "Read-only object" msgstr "Basahin-lamang" @@ -1972,14 +1988,6 @@ msgstr "Sample rate ay masyadong mataas. Ito ay dapat hindi hiigit sa %d" msgid "Scan already in progess. Stop with stop_scan." msgstr "" -#: ports/mimxrt10xx/common-hal/busio/UART.c -msgid "Selected CTS pin not valid" -msgstr "" - -#: ports/mimxrt10xx/common-hal/busio/UART.c -msgid "Selected RTS pin not valid" -msgstr "" - #: ports/atmel-samd/common-hal/audiobusio/I2SOut.c #: ports/atmel-samd/common-hal/audiobusio/PDMIn.c msgid "Serializer in use" @@ -2257,7 +2265,7 @@ msgstr "" #: ports/nrf/common-hal/_bleio/__init__.c #, c-format -msgid "Unknown soft device error: %04x" +msgid "Unknown system firmware error: %04x" msgstr "" #: shared-bindings/_pixelbuf/PixelBuf.c @@ -2420,11 +2428,11 @@ msgstr "walang laman ang address" msgid "arg is an empty sequence" msgstr "arg ay walang laman na sequence" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "argsort argument must be an ndarray" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "argsort is not implemented for flattened arrays" msgstr "" @@ -2432,10 +2440,6 @@ msgstr "" msgid "argument has wrong type" msgstr "may maling type ang argument" -#: extmod/ulab/code/linalg/linalg.c -msgid "argument must be ndarray" -msgstr "" - #: py/argcheck.c shared-bindings/_stage/__init__.c #: shared-bindings/digitalio/DigitalInOut.c shared-bindings/gamepad/GamePad.c msgid "argument num/types mismatch" @@ -2445,7 +2449,8 @@ msgstr "hindi tugma ang argument num/types" msgid "argument should be a '%q' not a '%q'" msgstr "argument ay dapat na '%q' hindi '%q'" -#: extmod/ulab/code/linalg/linalg.c extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c +#: extmod/ulab/code/numpy/transform/transform.c msgid "arguments must be ndarrays" msgstr "" @@ -2458,11 +2463,11 @@ msgstr "" msgid "array/bytes required on right side" msgstr "array/bytes kinakailangan sa kanang bahagi" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "attempt to get (arg)min/(arg)max of empty sequence" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "attempt to get argmin/argmax of an empty sequence" msgstr "" @@ -2470,15 +2475,15 @@ msgstr "" msgid "attributes not supported yet" msgstr "attributes hindi sinusuportahan" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "axis is out of bounds" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c extmod/ulab/code/ulab_tools.c msgid "axis must be None, or an integer" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "axis too long" msgstr "" @@ -2514,7 +2519,7 @@ msgstr "bits_per_sample ay dapat 8 o 16" msgid "branch not in range" msgstr "branch wala sa range" -#: extmod/ulab/code/ulab_create.c +#: extmod/ulab/code/ulab_create.c extmod/ulab/code/utils/utils.c msgid "buffer is smaller than requested size" msgstr "" @@ -2522,7 +2527,7 @@ msgstr "" msgid "buffer must be a bytes-like object" msgstr "buffer ay dapat bytes-like object" -#: extmod/ulab/code/ulab_create.c +#: extmod/ulab/code/ulab_create.c extmod/ulab/code/utils/utils.c msgid "buffer size must be a multiple of element size" msgstr "" @@ -2786,19 +2791,19 @@ msgstr "constant ay dapat na integer" msgid "conversion to object" msgstr "kombersyon to object" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/numpy/filter/filter.c msgid "convolve arguments must be linear arrays" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/numpy/filter/filter.c msgid "convolve arguments must be ndarrays" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/numpy/filter/filter.c msgid "convolve arguments must not be empty" msgstr "" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "could not invert Vandermonde matrix" msgstr "" @@ -2806,15 +2811,15 @@ msgstr "" msgid "couldn't determine SD card version" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "cross is defined for 1D arrays of length 3" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "data must be iterable" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "data must be of equal length" msgstr "" @@ -2855,15 +2860,15 @@ msgstr "ang destination_length ay dapat na isang int >= 0" msgid "dict update sequence has wrong length" msgstr "may mali sa haba ng dict update sequence" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "diff argument must be an ndarray" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "differentiation order out of range" msgstr "" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/transform/transform.c msgid "dimensions do not match" msgstr "" @@ -2983,11 +2988,11 @@ msgstr "file ay dapat buksan sa byte mode" msgid "filesystem must provide mount method" msgstr "ang filesystem dapat mag bigay ng mount method" -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "first argument must be a callable" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "first argument must be a function" msgstr "" @@ -2995,11 +3000,7 @@ msgstr "" msgid "first argument must be a tuple of ndarrays" msgstr "" -#: extmod/ulab/code/ndarray.c -msgid "first argument must be an iterable" -msgstr "" - -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "first argument must be an ndarray" msgstr "" @@ -3011,7 +3012,7 @@ msgstr "unang argument ng super() ay dapat type" msgid "flattening order must be either 'C', or 'F'" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "flip argument must be an ndarray" msgstr "" @@ -3044,7 +3045,7 @@ msgstr "function na inaasahang %d ang argumento, ngunit %d ang nakuha" msgid "function got multiple values for argument '%q'" msgstr "ang function ay nakakuha ng maraming values para sa argument '%q'" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "function has the same sign at the ends of interval" msgstr "" @@ -3120,7 +3121,7 @@ msgstr "mali ang padding" msgid "index is out of bounds" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c extmod/ulab/code/ulab_tools.c #: ports/esp32s2/common-hal/pulseio/PulseIn.c py/obj.c #: shared-bindings/bitmaptools/__init__.c msgid "index out of range" @@ -3134,7 +3135,7 @@ msgstr "ang mga indeks ay dapat na integer" msgid "indices must be integers, slices, or Boolean lists" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "initial values must be iterable" msgstr "" @@ -3154,7 +3155,7 @@ msgstr "" msgid "input argument must be an integer, a tuple, or a list" msgstr "" -#: extmod/ulab/code/fft/fft.c +#: extmod/ulab/code/numpy/fft/fft_tools.c msgid "input array length must be power of 2" msgstr "" @@ -3162,15 +3163,15 @@ msgstr "" msgid "input arrays are not compatible" msgstr "" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "input data must be an iterable" msgstr "" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/linalg/linalg.c msgid "input matrix is asymmetric" msgstr "" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/linalg/linalg.c msgid "input matrix is singular" msgstr "" @@ -3186,23 +3187,23 @@ msgstr "" msgid "input must be an ndarray" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "input must be one-dimensional" msgstr "" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/ulab_tools.c msgid "input must be square matrix" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "input must be tuple, list, range, or ndarray" msgstr "" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "input vectors must be of equal length" msgstr "" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "inputs are not iterable" msgstr "" @@ -3214,7 +3215,7 @@ msgstr "int() arg 2 ay dapat >=2 at <= 36" msgid "integer required" msgstr "kailangan ng int" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/numpy/approx/approx.c msgid "interp is defined for 1D arrays of equal length" msgstr "" @@ -3236,6 +3237,10 @@ msgstr "" msgid "invalid cert" msgstr "mali ang cert" +#: py/compile.c +msgid "invalid decorator" +msgstr "" + #: extmod/uos_dupterm.c msgid "invalid dupterm index" msgstr "mali ang dupterm index" @@ -3303,11 +3308,7 @@ msgstr "issubclass() arg 1 ay dapat na class" msgid "issubclass() arg 2 must be a class or a tuple of classes" msgstr "issubclass() arg 2 ay dapat na class o tuple ng classes" -#: extmod/ulab/code/ndarray.c -msgid "iterables are not of the same length" -msgstr "" - -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/linalg/linalg.c msgid "iterations did not converge" msgstr "" @@ -3379,7 +3380,7 @@ msgstr "masyadong maliit ang buffer map" msgid "math domain error" msgstr "may pagkakamali sa math domain" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/linalg/linalg.c msgid "matrix is not positive definite" msgstr "" @@ -3401,15 +3402,15 @@ msgstr "" msgid "maximum recursion depth exceeded" msgstr "lumagpas ang maximum recursion depth" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "maxiter must be > 0" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "maxiter should be > 0" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "median argument must be an ndarray" msgstr "" @@ -3430,7 +3431,7 @@ msgstr "" msgid "module not found" msgstr "module hindi nakita" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "more degrees of freedom than data points" msgstr "" @@ -3548,10 +3549,6 @@ msgstr "" msgid "non-zero timeout must be >= interval" msgstr "" -#: extmod/ulab/code/linalg/linalg.c -msgid "norm is defined for 1D and 2D arrays" -msgstr "" - #: shared-bindings/_bleio/UUID.c msgid "not a 128-bit UUID" msgstr "" @@ -3620,7 +3617,7 @@ msgstr "object na may buffer protocol kinakailangan" msgid "odd-length string" msgstr "odd-length string" -#: extmod/ulab/code/ulab_create.c +#: extmod/ulab/code/ulab_create.c extmod/ulab/code/utils/utils.c msgid "offset is too large" msgstr "" @@ -3650,8 +3647,8 @@ msgstr "" msgid "only slices with step=1 (aka None) are supported" msgstr "ang mga slices lamang na may hakbang = 1 (aka None) ang sinusuportahan" -#: extmod/ulab/code/compare/compare.c extmod/ulab/code/ndarray.c -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/ndarray.c extmod/ulab/code/numpy/compare/compare.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "operands could not be broadcast together" msgstr "" @@ -3659,7 +3656,7 @@ msgstr "" msgid "operation is implemented for 1D Boolean arrays only" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "operation is not implemented on ndarrays" msgstr "" @@ -3676,6 +3673,14 @@ msgstr "ord umaasa ng character" msgid "ord() expected a character, but string of length %d found" msgstr "ord() umaasa ng character pero string ng %d haba ang nakita" +#: extmod/ulab/code/utils/utils.c +msgid "out array is too small" +msgstr "" + +#: extmod/ulab/code/utils/utils.c +msgid "out must be a float dense array" +msgstr "" + #: shared-bindings/displayio/Bitmap.c msgid "out of range of source" msgstr "" @@ -3805,7 +3810,7 @@ msgstr "puno na ang pila (overflow)" msgid "raw f-strings are not implemented" msgstr "" -#: extmod/ulab/code/fft/fft.c +#: extmod/ulab/code/numpy/fft/fft_tools.c msgid "real and imaginary parts must be of equal length" msgstr "" @@ -3840,7 +3845,7 @@ msgstr "" msgid "rgb_pins[%d] is not on the same port as clock" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "roll argument must be an ndarray" msgstr "" @@ -3889,7 +3894,7 @@ msgstr "sign hindi maari sa integer format specifier 'c'" msgid "single '}' encountered in format string" msgstr "isang '}' nasalubong sa format string" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/ulab_tools.c msgid "size is defined for ndarrays only" msgstr "" @@ -3913,19 +3918,19 @@ msgstr "small int overflow" msgid "soft reboot\n" msgstr "malambot na reboot\n" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "sort argument must be an ndarray" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "sos array must be of shape (n_section, 6)" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "sos[:, 3] should be all ones" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "sosfilt requires iterable arguments" msgstr "" @@ -4041,7 +4046,7 @@ msgstr "" msgid "too many arguments provided with the given format" msgstr "masyadong maraming mga argumento na ibinigay sa ibinigay na format" -#: extmod/ulab/code/ulab_create.c +#: extmod/ulab/code/ndarray.c extmod/ulab/code/ulab_create.c msgid "too many dimensions" msgstr "" @@ -4054,11 +4059,11 @@ msgstr "" msgid "too many values to unpack (expected %d)" msgstr "masyadong maraming values para i-unpact (umaasa ng %d)" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/numpy/approx/approx.c msgid "trapz is defined for 1D arrays" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/numpy/approx/approx.c msgid "trapz is defined for 1D arrays of equal length" msgstr "" @@ -4229,7 +4234,7 @@ msgstr "" msgid "window must be <= interval" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "wrong axis index" msgstr "" @@ -4237,7 +4242,8 @@ msgstr "" msgid "wrong axis specified" msgstr "" -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/numpy/compare/compare.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "wrong input type" msgstr "" @@ -4253,7 +4259,7 @@ msgstr "maling number ng value na i-unpack" msgid "wrong operand type" msgstr "" -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "wrong output type" msgstr "" @@ -4279,15 +4285,15 @@ msgstr "wala sa sakop ang address" msgid "zero step" msgstr "zero step" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "zi must be an ndarray" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "zi must be of float type" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "zi must be of shape (n_section, 2)" msgstr "" diff --git a/locale/fr.po b/locale/fr.po index 301c0bc958..dbc5a70283 100644 --- a/locale/fr.po +++ b/locale/fr.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: 0.1\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-01-04 12:55-0600\n" -"PO-Revision-Date: 2021-03-21 21:29+0000\n" +"PO-Revision-Date: 2021-04-11 01:30+0000\n" "Last-Translator: Hugo Dahl \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 4.5.2-dev\n" +"X-Generator: Weblate 4.6-dev\n" #: main.c msgid "" @@ -424,6 +424,10 @@ msgstr "" msgid "AnalogOut not supported on given pin" msgstr "'AnalogOut' n'est pas supporté sur la broche indiquée" +#: ports/stm/common-hal/audiopwmio/PWMAudioOut.c +msgid "Another PWMAudioOut is already active" +msgstr "Un autre PWMAudioOut est déjà actif" + #: ports/atmel-samd/common-hal/pulseio/PulseOut.c #: ports/cxd56/common-hal/pulseio/PulseOut.c msgid "Another send is already active" @@ -431,11 +435,11 @@ msgstr "Un autre envoi est déjà actif" #: shared-bindings/pulseio/PulseOut.c msgid "Array must contain halfwords (type 'H')" -msgstr "Le tableau doit contenir des demi-mots (type 'H')" +msgstr "La matrice doit contenir des demi-mots (type 'H')" #: shared-bindings/alarm/SleepMemory.c shared-bindings/nvm/ByteArray.c msgid "Array values should be single bytes." -msgstr "Les valeurs du tableau doivent être des octets singuliers." +msgstr "Les valeurs de la matrice doivent être des octets singuliers." #: shared-bindings/microcontroller/Pin.c msgid "At most %d %q may be specified (not %d)" @@ -447,10 +451,8 @@ msgid "Attempt to allocate %d blocks" msgstr "Tentative d'allocation de %d blocs" #: supervisor/shared/safe_mode.c -msgid "Attempted heap allocation when MicroPython VM not running." +msgid "Attempted heap allocation when VM not running." msgstr "" -"Tentative d'allocation de segments lorsque la machine virtuelle MicroPython " -"n'est pas en cours d'exécution." #: shared-bindings/wifi/Radio.c msgid "Authentication failure" @@ -542,6 +544,7 @@ msgid "Buffer is too small" msgstr "Le tampon est trop petit" #: ports/nrf/common-hal/audiopwmio/PWMAudioOut.c +#: ports/stm/common-hal/audiopwmio/PWMAudioOut.c #, c-format msgid "Buffer length %d too big. It must be less than %d" msgstr "La longueur du tampon %d est trop grande. Il doit être inférieur à %d" @@ -962,13 +965,13 @@ msgid "Extended advertisements with scan response not supported." msgstr "" "Les avertissement étendues avec analyse de réponse ne sont pas supportées." -#: extmod/ulab/code/fft/fft.c +#: extmod/ulab/code/numpy/fft/fft_tools.c msgid "FFT is defined for ndarrays only" msgstr "La FFT est définie uniquement pour les ndarrays" -#: extmod/ulab/code/fft/fft.c +#: extmod/ulab/code/numpy/fft/fft_tools.c msgid "FFT is implemented for linear arrays only" -msgstr "FFT n'est implémenté que pour les tableaux linéaires" +msgstr "FFT n'est implémenté que pour les matrices linéaires" #: ports/esp32s2/common-hal/ssl/SSLSocket.c msgid "Failed SSL handshake" @@ -1007,6 +1010,10 @@ msgstr "Impossible d’allouer la mémoire pour Wifi" msgid "Failed to allocate wifi scan memory" msgstr "Impossible d'allouer la mémoire pour le scan wifi" +#: ports/stm/common-hal/audiopwmio/PWMAudioOut.c +msgid "Failed to buffer the sample" +msgstr "Échec du tamponage de l'échantillon" + #: ports/nrf/common-hal/_bleio/Adapter.c msgid "Failed to connect: internal error" msgstr "Impossible de se connecter : erreur interne" @@ -1032,6 +1039,10 @@ msgstr "Impossible de libérer mutex, err 0x%04x" msgid "Failed to write internal flash." msgstr "Échec de l'écriture vers flash interne." +#: supervisor/shared/safe_mode.c +msgid "Fatal error." +msgstr "" + #: py/moduerrno.c msgid "File exists" msgstr "Le fichier existe" @@ -1217,6 +1228,7 @@ msgstr "%q invalide" #: ports/atmel-samd/common-hal/audiobusio/I2SOut.c #: ports/atmel-samd/common-hal/audiobusio/PDMIn.c +#: ports/mimxrt10xx/common-hal/busio/UART.c msgid "Invalid %q pin" msgstr "Broche invalide pour '%q'" @@ -1244,7 +1256,9 @@ msgid "Invalid DAC pin supplied" msgstr "Broche DAC non valide fournie" #: ports/atmel-samd/common-hal/pwmio/PWMOut.c -#: ports/cxd56/common-hal/pwmio/PWMOut.c ports/nrf/common-hal/pwmio/PWMOut.c +#: ports/cxd56/common-hal/pwmio/PWMOut.c +#: ports/mimxrt10xx/common-hal/pwmio/PWMOut.c +#: ports/nrf/common-hal/pwmio/PWMOut.c #: ports/raspberrypi/common-hal/pwmio/PWMOut.c shared-bindings/pwmio/PWMOut.c msgid "Invalid PWM frequency" msgstr "Fréquence de PWM invalide" @@ -1432,14 +1446,6 @@ msgstr "La valeur maximale de x est %d lors d'une opération miroir" msgid "Messages limited to 8 bytes" msgstr "Messages limités à 8 octets" -#: supervisor/shared/safe_mode.c -msgid "MicroPython NLR jump failed. Likely memory corruption." -msgstr "Échec du saut MicroPython NLR. Corruption de la mémoire probable." - -#: supervisor/shared/safe_mode.c -msgid "MicroPython fatal error." -msgstr "Erreur fatale MicroPython." - #: shared-bindings/audiobusio/PDMIn.c msgid "Microphone startup delay must be in range 0.0 to 1.0" msgstr "Le délais au démarrage du micro doit être entre 0.0 et 1.0" @@ -1493,6 +1499,10 @@ msgstr "Doit fournir une broche MISO ou MOSI" msgid "Must use a multiple of 6 rgb pins, not %d" msgstr "Doit utiliser un multiple de 6 broches RVB, pas %d" +#: supervisor/shared/safe_mode.c +msgid "NLR jump failed. Likely memory corruption." +msgstr "" + #: ports/esp32s2/common-hal/nvm/ByteArray.c msgid "NVS Error" msgstr "Erreur NVS" @@ -1626,8 +1636,12 @@ msgid "No timer available" msgstr "Aucun minuteur disponible" #: supervisor/shared/safe_mode.c -msgid "Nordic Soft Device failure assertion." -msgstr "Affirmation de défaillance du Nordic Soft Device." +msgid "Nordic system firmware failure assertion." +msgstr "Assertion échouée du logiciel systême Nordic." + +#: ports/nrf/common-hal/_bleio/__init__.c +msgid "Nordic system firmware out of memory" +msgstr "Logiciel systême Nordic hors de mémoire" #: shared-bindings/ipaddress/IPv4Address.c shared-bindings/ipaddress/__init__.c msgid "Not a valid IP string" @@ -1945,7 +1959,7 @@ msgstr "Lecture seule" msgid "Read-only filesystem" msgstr "Système de fichier en lecture seule" -#: shared-module/bitmaptools/__init__.c shared-module/displayio/Bitmap.c +#: shared-module/displayio/Bitmap.c msgid "Read-only object" msgstr "Objet en lecture seule" @@ -2020,14 +2034,6 @@ msgstr "Taux d'échantillonage trop élevé. Doit être inférieur à %d" msgid "Scan already in progess. Stop with stop_scan." msgstr "Scan déjà en cours. Arrêtez avec stop_scan." -#: ports/mimxrt10xx/common-hal/busio/UART.c -msgid "Selected CTS pin not valid" -msgstr "La broche CTS sélectionnée n'est pas valide" - -#: ports/mimxrt10xx/common-hal/busio/UART.c -msgid "Selected RTS pin not valid" -msgstr "La broche RTS sélectionnée n'est pas valide" - #: ports/atmel-samd/common-hal/audiobusio/I2SOut.c #: ports/atmel-samd/common-hal/audiobusio/PDMIn.c msgid "Serializer in use" @@ -2317,8 +2323,8 @@ msgstr "Erreur de sécurité inconnue : 0x%04x" #: ports/nrf/common-hal/_bleio/__init__.c #, c-format -msgid "Unknown soft device error: %04x" -msgstr "Erreur de périphérique logiciel inconnue : %04x" +msgid "Unknown system firmware error: %04x" +msgstr "Faute inconnue du logiciel systême : %04x" #: shared-bindings/_pixelbuf/PixelBuf.c #, c-format @@ -2484,22 +2490,18 @@ msgstr "adresses vides" msgid "arg is an empty sequence" msgstr "l'argument est une séquence vide" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "argsort argument must be an ndarray" -msgstr "L'argument argsort doit être un ndarray" +msgstr "Le paramêtre argsort doit être un ndarray" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "argsort is not implemented for flattened arrays" -msgstr "argsort n'est pas mis en œuvre pour les tableaux aplatis" +msgstr "argsort n'est pas mis en œuvre pour les matrices aplatis" #: py/runtime.c msgid "argument has wrong type" msgstr "l'argument est d'un mauvais type" -#: extmod/ulab/code/linalg/linalg.c -msgid "argument must be ndarray" -msgstr "l'argument doit être un ndarray" - #: py/argcheck.c shared-bindings/_stage/__init__.c #: shared-bindings/digitalio/DigitalInOut.c shared-bindings/gamepad/GamePad.c msgid "argument num/types mismatch" @@ -2509,24 +2511,25 @@ msgstr "Nombre/types de paramètres ne correspondent pas" msgid "argument should be a '%q' not a '%q'" msgstr "le paramètre devrait être un(e) '%q', pas '%q'" -#: extmod/ulab/code/linalg/linalg.c extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c +#: extmod/ulab/code/numpy/transform/transform.c msgid "arguments must be ndarrays" msgstr "les paramètres doivent être des ndarrays" #: extmod/ulab/code/ndarray.c msgid "array and index length must be equal" -msgstr "la longueur du tableau et de l'index doivent être égaux" +msgstr "la taille de la matrice et de l'index doivent être égaux" #: py/objarray.c shared-bindings/alarm/SleepMemory.c #: shared-bindings/nvm/ByteArray.c msgid "array/bytes required on right side" -msgstr "tableau/octets requis à droite" +msgstr "matrice/octets requis à la droite" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "attempt to get (arg)min/(arg)max of empty sequence" msgstr "tentative d’obtenir (arg)min/(arg)max d'une séquence vide" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "attempt to get argmin/argmax of an empty sequence" msgstr "tenter d'obtenir argmin / argmax d'une séquence vide" @@ -2534,15 +2537,15 @@ msgstr "tenter d'obtenir argmin / argmax d'une séquence vide" msgid "attributes not supported yet" msgstr "attribut pas encore supporté" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "axis is out of bounds" msgstr "axis est hors limites" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c extmod/ulab/code/ulab_tools.c msgid "axis must be None, or an integer" msgstr "axis doit être None ou un entier" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "axis too long" msgstr "axis trop long" @@ -2578,7 +2581,7 @@ msgstr "'bits_per_sample' doivent être 8 ou 16" msgid "branch not in range" msgstr "branche hors-bornes" -#: extmod/ulab/code/ulab_create.c +#: extmod/ulab/code/ulab_create.c extmod/ulab/code/utils/utils.c msgid "buffer is smaller than requested size" msgstr "tampon est plus petit que la taille demandée" @@ -2586,7 +2589,7 @@ msgstr "tampon est plus petit que la taille demandée" msgid "buffer must be a bytes-like object" msgstr "le tampon doit être un objet bytes-like" -#: extmod/ulab/code/ulab_create.c +#: extmod/ulab/code/ulab_create.c extmod/ulab/code/utils/utils.c msgid "buffer size must be a multiple of element size" msgstr "taille du tampon doit être un multiple de la taille de l'élement" @@ -2823,8 +2826,7 @@ msgstr "" #: shared-bindings/displayio/Palette.c msgid "color buffer must be a bytearray or array of type 'b' or 'B'" -msgstr "" -"le tampon de couleur doit être un bytearray ou un tableau de type 'b' ou 'B'" +msgstr "tampon color doit être un bytearray ou une matrice de type 'b' ou 'B'" #: shared-bindings/displayio/Palette.c msgid "color must be between 0x000000 and 0xffffff" @@ -2854,19 +2856,19 @@ msgstr "constante doit être un entier" msgid "conversion to object" msgstr "conversion en objet" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/numpy/filter/filter.c msgid "convolve arguments must be linear arrays" -msgstr "les arguments convolve doivent être des tableaux linéaires" +msgstr "les paramêtres pour convolve doivent être des matrices linéaires" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/numpy/filter/filter.c msgid "convolve arguments must be ndarrays" -msgstr "les arguments convolve doivent être des ndarrays" +msgstr "les paramêtres pour convolve doivent être des ndarrays" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/numpy/filter/filter.c msgid "convolve arguments must not be empty" msgstr "les arguments convolve ne doivent pas être vides" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "could not invert Vandermonde matrix" msgstr "n'a pas pu inverser la matrice Vandermonde" @@ -2874,15 +2876,15 @@ msgstr "n'a pas pu inverser la matrice Vandermonde" msgid "couldn't determine SD card version" msgstr "impossible de déterminer la version de la carte SD" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "cross is defined for 1D arrays of length 3" -msgstr "cross est défini pour les tableaux 1D de longueur 3" +msgstr "cross est défini pour les matrices 1D de longueur 3" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "data must be iterable" msgstr "les données doivent être les objets iterables" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "data must be of equal length" msgstr "les données doivent être de longueur égale" @@ -2906,12 +2908,13 @@ msgstr "default n'est pas une fonction" msgid "" "destination buffer must be a bytearray or array of type 'B' for bit_depth = 8" msgstr "" -"le tampon de destination doit être un tableau de type 'B' pour bit_depth = 8" +"le tampon de destination doit être une matrice de type 'B' pour bit_depth = 8" #: shared-bindings/audiobusio/PDMIn.c msgid "destination buffer must be an array of type 'H' for bit_depth = 16" msgstr "" -"le tampon de destination doit être un tableau de type 'H' pour bit_depth = 16" +"le tampon de destination doit être une matrice de type 'H' pour bit_depth = " +"16" #: shared-bindings/audiobusio/PDMIn.c msgid "destination_length must be an int >= 0" @@ -2921,15 +2924,15 @@ msgstr "destination_length doit être un entier >= 0" msgid "dict update sequence has wrong length" msgstr "la séquence de mise à jour de dict a une mauvaise longueur" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "diff argument must be an ndarray" -msgstr "l'argument diff doit être un ndarray" +msgstr "le paramêtre diff doit être un ndarray" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "differentiation order out of range" msgstr "differentiation order hors de portée" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/transform/transform.c msgid "dimensions do not match" msgstr "les dimensions ne correspondent pas" @@ -3050,25 +3053,21 @@ msgstr "le fichier doit être un fichier ouvert en mode 'byte'" msgid "filesystem must provide mount method" msgstr "le system de fichier doit fournir une méthode 'mount'" -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "first argument must be a callable" msgstr "le premier argument doit être un appelable" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "first argument must be a function" msgstr "le premier argument doit être une fonction" #: extmod/ulab/code/ulab_create.c msgid "first argument must be a tuple of ndarrays" -msgstr "le premier argument doit être un tuple de ndarrays" +msgstr "le premier paramêtre doit être un tuple de ndarrays" -#: extmod/ulab/code/ndarray.c -msgid "first argument must be an iterable" -msgstr "le premier argument doit être un itérable" - -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "first argument must be an ndarray" -msgstr "le premier argument doit être un ndarray" +msgstr "le premier paramêtre doit être un ndarray" #: py/objtype.c msgid "first argument to super() must be type" @@ -3078,9 +3077,9 @@ msgstr "le premier argument de super() doit être un type" msgid "flattening order must be either 'C', or 'F'" msgstr "l'ordre d'aplatissement doit être «C» ou «F»" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "flip argument must be an ndarray" -msgstr "l'argument flip doit être un ndarray" +msgstr "le paramêtre flip doit être un ndarray" #: py/objint.c msgid "float too big" @@ -3111,13 +3110,13 @@ msgstr "la fonction attendait au plus %d arguments, reçu %d" msgid "function got multiple values for argument '%q'" msgstr "la fonction a reçu plusieurs valeurs pour l'argument '%q'" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "function has the same sign at the ends of interval" msgstr "la fonction a le même signe aux extrémités de l’intervalle" #: extmod/ulab/code/ndarray.c msgid "function is defined for ndarrays only" -msgstr "La fonction n'est définie que pour les ndarrays" +msgstr "fonction définie que pour les ndarrays" #: py/argcheck.c #, c-format @@ -3186,7 +3185,7 @@ msgstr "espacement incorrect" msgid "index is out of bounds" msgstr "l'index est hors limites" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c extmod/ulab/code/ulab_tools.c #: ports/esp32s2/common-hal/pulseio/PulseIn.c py/obj.c #: shared-bindings/bitmaptools/__init__.c msgid "index out of range" @@ -3201,7 +3200,7 @@ msgid "indices must be integers, slices, or Boolean lists" msgstr "" "les indices doivent être des entiers, des tranches ou des listes booléennes" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "initial values must be iterable" msgstr "les valeurs initiales doivent être itérables" @@ -3221,29 +3220,29 @@ msgstr "les formes d'entrée et de sortie ne sont pas compatibles" msgid "input argument must be an integer, a tuple, or a list" msgstr "Paramètre entrant doit être un chiffre entier, un tuple, ou une liste" -#: extmod/ulab/code/fft/fft.c +#: extmod/ulab/code/numpy/fft/fft_tools.c msgid "input array length must be power of 2" -msgstr "la longueur du tableau d'entrée doit être une puissance de 2" +msgstr "longueur de la matrice d'entrée doit être une puissance de 2" #: extmod/ulab/code/ulab_create.c msgid "input arrays are not compatible" -msgstr "les tableaux d'entrée ne sont pas compatibles" +msgstr "les matrices d'entrée ne sont pas compatibles" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "input data must be an iterable" msgstr "les données d'entrée doivent être un itérable" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/linalg/linalg.c msgid "input matrix is asymmetric" msgstr "la matrice d'entrée est asymétrique" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/linalg/linalg.c msgid "input matrix is singular" msgstr "la matrice d'entrée est singulière" #: extmod/ulab/code/user/user.c msgid "input must be a dense ndarray" -msgstr "l'entrée doit être un tableau dense" +msgstr "l'entrée doit être un ndarray dense" #: extmod/ulab/code/ulab_create.c msgid "input must be a tensor of rank 2" @@ -3253,23 +3252,23 @@ msgstr "l'entrée doit être un tenseur de rang 2" msgid "input must be an ndarray" msgstr "l'entrée doit être un ndarray" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "input must be one-dimensional" msgstr "l'entrée doit être uni-dimensionelle" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/ulab_tools.c msgid "input must be square matrix" msgstr "l'entrée doit être une matrice carrée" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "input must be tuple, list, range, or ndarray" msgstr "l'entrée 'input' doit être tuple, list, range ou ndarray" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "input vectors must be of equal length" msgstr "les vecteurs d'entrée doivent être de longueur égale" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "inputs are not iterable" msgstr "les entrées ne sont pas itérables" @@ -3281,9 +3280,9 @@ msgstr "l'argument 2 de int() doit être >=2 et <=36" msgid "integer required" msgstr "entier requis" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/numpy/approx/approx.c msgid "interp is defined for 1D arrays of equal length" -msgstr "interp est défini pour les tableaux 1D de longueur égale" +msgstr "interp est défini pour les matrices 1D de longueur égale" #: shared-bindings/_bleio/Adapter.c #, c-format @@ -3303,6 +3302,10 @@ msgstr "bits_per_pixel %d est invalid, doit être 1, 4, 8, 16, 24 ou 32" msgid "invalid cert" msgstr "certificat invalide" +#: py/compile.c +msgid "invalid decorator" +msgstr "" + #: extmod/uos_dupterm.c msgid "invalid dupterm index" msgstr "index invalide pour dupterm" @@ -3371,11 +3374,7 @@ msgid "issubclass() arg 2 must be a class or a tuple of classes" msgstr "" "l'argument 2 de issubclass() doit être une classe ou un tuple de classes" -#: extmod/ulab/code/ndarray.c -msgid "iterables are not of the same length" -msgstr "les itérables ne sont pas de la même longueur" - -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/linalg/linalg.c msgid "iterations did not converge" msgstr "les itérations n'ont pas convergé" @@ -3446,7 +3445,7 @@ msgstr "tampon trop petit" msgid "math domain error" msgstr "erreur de domaine math" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/linalg/linalg.c msgid "matrix is not positive definite" msgstr "la matrice n'est pas définie positive" @@ -3468,15 +3467,15 @@ msgstr "nombre maximal de dimensions est 4" msgid "maximum recursion depth exceeded" msgstr "profondeur maximale de récursivité dépassée" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "maxiter must be > 0" msgstr "maxiter doit être > 0" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "maxiter should be > 0" msgstr "maxiter devrait être > 0" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "median argument must be an ndarray" msgstr "Paramètre pour median doit être un ndarray" @@ -3497,7 +3496,7 @@ msgstr "memoryview: length n'est pas un multiple de itemsize" msgid "module not found" msgstr "module introuvable" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "more degrees of freedom than data points" msgstr "plus de degrés de liberté que de points de données" @@ -3616,10 +3615,6 @@ msgstr "le délai non-zéro doit être > 0.01" msgid "non-zero timeout must be >= interval" msgstr "le délai non-zéro doit être >= interval" -#: extmod/ulab/code/linalg/linalg.c -msgid "norm is defined for 1D and 2D arrays" -msgstr "norm est défini pour des tableaux 1D et 2D" - #: shared-bindings/_bleio/UUID.c msgid "not a 128-bit UUID" msgstr "n'est pas un UUID 128 bits" @@ -3689,7 +3684,7 @@ msgstr "un objet avec un protocole de tampon est nécessaire" msgid "odd-length string" msgstr "chaîne de longueur impaire" -#: extmod/ulab/code/ulab_create.c +#: extmod/ulab/code/ulab_create.c extmod/ulab/code/utils/utils.c msgid "offset is too large" msgstr "offset est trop large" @@ -3718,18 +3713,18 @@ msgstr "seul sample_rate = 16000 est pris en charge" msgid "only slices with step=1 (aka None) are supported" msgstr "seules les tranches avec 'step=1' (cad None) sont supportées" -#: extmod/ulab/code/compare/compare.c extmod/ulab/code/ndarray.c -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/ndarray.c extmod/ulab/code/numpy/compare/compare.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "operands could not be broadcast together" msgstr "les opérandes ne pouvaient pas être diffusés ensemble" #: extmod/ulab/code/ndarray.c msgid "operation is implemented for 1D Boolean arrays only" -msgstr "opération implémentée que pour des tableaux 1D booléennes" +msgstr "opération implémentée que pour les matrices 1D booléennes" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "operation is not implemented on ndarrays" -msgstr "l'opération n'est pas implémentée sur les ndarrays" +msgstr "l'opération n'est pas implémentée pour les ndarrays" #: extmod/ulab/code/ndarray.c msgid "operation is not supported for given type" @@ -3746,6 +3741,14 @@ msgstr "" "ord() attend un caractère mais une chaîne de caractère de longueur %d a été " "trouvée" +#: extmod/ulab/code/utils/utils.c +msgid "out array is too small" +msgstr "matrice de sortie est trop petite" + +#: extmod/ulab/code/utils/utils.c +msgid "out must be a float dense array" +msgstr "la matrice sortante doit être de type float" + #: shared-bindings/displayio/Bitmap.c msgid "out of range of source" msgstr "dépassement des bornes de source" @@ -3875,7 +3878,7 @@ msgstr "dépassement de file" msgid "raw f-strings are not implemented" msgstr "les chaînes f brutes ne sont pas implémentées" -#: extmod/ulab/code/fft/fft.c +#: extmod/ulab/code/numpy/fft/fft_tools.c msgid "real and imaginary parts must be of equal length" msgstr "les parties réelles et imaginaires doivent être de longueur égale" @@ -3910,7 +3913,7 @@ msgstr "rgb_pins[%d] duplique une autre affectation de broches" msgid "rgb_pins[%d] is not on the same port as clock" msgstr "rgb_pins[%d] n'est pas sur le même port que l'horloge" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "roll argument must be an ndarray" msgstr "paramêtre roll doit être un ndarray" @@ -3923,8 +3926,8 @@ msgid "" "sample_source buffer must be a bytearray or array of type 'h', 'H', 'b' or " "'B'" msgstr "" -"le tampon de sample_source doit être un bytearray ou un tableau de type " -"'h','H', 'b' ou 'B'" +"tampon sample_source doit être un bytearray ou une matrice de type 'h', 'H', " +"'b' ou 'B'" #: ports/atmel-samd/common-hal/audiobusio/PDMIn.c #: ports/raspberrypi/common-hal/audiobusio/PDMIn.c @@ -3959,9 +3962,9 @@ msgstr "signe non autorisé avec la spéc. de format d'entier 'c'" msgid "single '}' encountered in format string" msgstr "'}' seule rencontrée dans une chaîne de format" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/ulab_tools.c msgid "size is defined for ndarrays only" -msgstr "la taille est définie pour les ndarrays uniquement" +msgstr "la taille n'est définie que pour les ndarrays" #: shared-bindings/time/__init__.c msgid "sleep length must be non-negative" @@ -3983,19 +3986,19 @@ msgstr "dépassement de capacité d'un entier court" msgid "soft reboot\n" msgstr "redémarrage logiciel\n" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "sort argument must be an ndarray" -msgstr "l'argument de «sort» doit être un ndarray" +msgstr "le paramètre de «sort» doit être un ndarray" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "sos array must be of shape (n_section, 6)" -msgstr "le tableau sos doit être de forme (n_section, 6)" +msgstr "la matrice sos doit être de forme (n_section, 6)" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "sos[:, 3] should be all ones" msgstr "sos[:, 3] doivent tous être à un" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "sosfilt requires iterable arguments" msgstr "sosfilt nécessite des argument itératifs" @@ -4034,7 +4037,7 @@ msgstr "les indices d'une chaîne doivent être des entiers, pas %q" #: py/stream.c msgid "string not supported; use bytes or bytearray" msgstr "" -"chaîne de carac. non supportée ; utilisez des bytes ou un tableau de bytes" +"chaîne de carac. non supportée; utilisez des bytes ou une matrice de bytes" #: extmod/moductypes.c msgid "struct: cannot index" @@ -4104,13 +4107,13 @@ msgstr "timestamp hors bornes pour 'time_t' de la plateforme" #: extmod/ulab/code/ndarray.c msgid "tobytes can be invoked for dense arrays only" -msgstr "tobytes ne peut être appelé que pour des tableaux dense" +msgstr "tobytes ne peut être appelée que pour des matrices dense" #: shared-module/struct/__init__.c msgid "too many arguments provided with the given format" msgstr "trop d'arguments fournis avec ce format" -#: extmod/ulab/code/ulab_create.c +#: extmod/ulab/code/ndarray.c extmod/ulab/code/ulab_create.c msgid "too many dimensions" msgstr "Trop de dimensions" @@ -4123,13 +4126,13 @@ msgstr "trop d'indices" msgid "too many values to unpack (expected %d)" msgstr "trop de valeur à dégrouper (%d attendues)" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/numpy/approx/approx.c msgid "trapz is defined for 1D arrays" -msgstr "trapz est défini pour tableaux à une dimension" +msgstr "trapz est définie pour matrices à une dimension" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/numpy/approx/approx.c msgid "trapz is defined for 1D arrays of equal length" -msgstr "trapz n'est défini que pour des tableaux 1D de longueur égale" +msgstr "trapz n'est défini que pour des matrices 1D de longueur égales" #: ports/esp32s2/common-hal/alarm/pin/__init__.c msgid "trigger level must be 0 or 1" @@ -4298,7 +4301,7 @@ msgstr "wifi n’est pas activé" msgid "window must be <= interval" msgstr "la fenêtre (window) doit être <= intervalle (interval)" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "wrong axis index" msgstr "index d'axe incorrecte" @@ -4306,7 +4309,8 @@ msgstr "index d'axe incorrecte" msgid "wrong axis specified" msgstr "axe incorrecte spécifiée" -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/numpy/compare/compare.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "wrong input type" msgstr "type d'entrée incorrect" @@ -4322,7 +4326,7 @@ msgstr "mauvais nombre de valeurs à dégrouper" msgid "wrong operand type" msgstr "type d'opérande incorrect" -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "wrong output type" msgstr "type de sortie incorrect" @@ -4346,18 +4350,62 @@ msgstr "valeur y hors limites" msgid "zero step" msgstr "'step' nul" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "zi must be an ndarray" -msgstr "zi doit être ndarray" +msgstr "zi doit être un ndarray" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "zi must be of float type" msgstr "zi doit être de type float" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "zi must be of shape (n_section, 2)" msgstr "zi doit être de forme (n_section, 2)" +#~ msgid "Attempted heap allocation when MicroPython VM not running." +#~ msgstr "" +#~ "Tentative d'allocation de segments lorsque la machine virtuelle " +#~ "MicroPython n'est pas en cours d'exécution." + +#~ msgid "MicroPython NLR jump failed. Likely memory corruption." +#~ msgstr "Échec du saut MicroPython NLR. Corruption de la mémoire probable." + +#~ msgid "MicroPython fatal error." +#~ msgstr "Erreur fatale MicroPython." + +#~ msgid "argument must be ndarray" +#~ msgstr "l'argument doit être un ndarray" + +#~ msgid "matrix dimensions do not match" +#~ msgstr "les dimensions de la matrice ne correspondent pas" + +#~ msgid "norm is defined for 1D and 2D arrays" +#~ msgstr "norm est défini pour des tableaux 1D et 2D" + +#~ msgid "vectors must have same lengths" +#~ msgstr "les vecteurs doivent avoir la même longueur" + +#~ msgid "Nordic Soft Device failure assertion." +#~ msgstr "Affirmation de défaillance du Nordic Soft Device." + +#~ msgid "Nordic soft device out of memory" +#~ msgstr "Appareil logiciel Nordic hors de mémoire" + +#~ msgid "Unknown soft device error: %04x" +#~ msgstr "Erreur de périphérique logiciel inconnue : %04x" + +#~ msgid "first argument must be an iterable" +#~ msgstr "le premier argument doit être un itérable" + +#~ msgid "iterables are not of the same length" +#~ msgstr "les itérables ne sont pas de la même longueur" + +#~ msgid "Selected CTS pin not valid" +#~ msgstr "La broche CTS sélectionnée n'est pas valide" + +#~ msgid "Selected RTS pin not valid" +#~ msgstr "La broche RTS sélectionnée n'est pas valide" + #~ msgid "Could not initialize channel" #~ msgstr "Impossible d'initialiser le canal" @@ -4386,12 +4434,6 @@ msgstr "zi doit être de forme (n_section, 2)" #~ "Le minuteur est reservé pour un usage interne - déclarez la broche PWM " #~ "plus tôt dans le programme" -#~ msgid "matrix dimensions do not match" -#~ msgstr "les dimensions de la matrice ne correspondent pas" - -#~ msgid "vectors must have same lengths" -#~ msgstr "les vecteurs doivent avoir la même longueur" - #~ msgid "Group full" #~ msgstr "Groupe plein" diff --git a/locale/hi.po b/locale/hi.po index 91233d0eff..d32db7071d 100644 --- a/locale/hi.po +++ b/locale/hi.po @@ -411,6 +411,10 @@ msgstr "" msgid "AnalogOut not supported on given pin" msgstr "" +#: ports/stm/common-hal/audiopwmio/PWMAudioOut.c +msgid "Another PWMAudioOut is already active" +msgstr "" + #: ports/atmel-samd/common-hal/pulseio/PulseOut.c #: ports/cxd56/common-hal/pulseio/PulseOut.c msgid "Another send is already active" @@ -434,7 +438,7 @@ msgid "Attempt to allocate %d blocks" msgstr "" #: supervisor/shared/safe_mode.c -msgid "Attempted heap allocation when MicroPython VM not running." +msgid "Attempted heap allocation when VM not running." msgstr "" #: shared-bindings/wifi/Radio.c @@ -525,6 +529,7 @@ msgid "Buffer is too small" msgstr "" #: ports/nrf/common-hal/audiopwmio/PWMAudioOut.c +#: ports/stm/common-hal/audiopwmio/PWMAudioOut.c #, c-format msgid "Buffer length %d too big. It must be less than %d" msgstr "" @@ -929,11 +934,11 @@ msgstr "" msgid "Extended advertisements with scan response not supported." msgstr "" -#: extmod/ulab/code/fft/fft.c +#: extmod/ulab/code/numpy/fft/fft_tools.c msgid "FFT is defined for ndarrays only" msgstr "" -#: extmod/ulab/code/fft/fft.c +#: extmod/ulab/code/numpy/fft/fft_tools.c msgid "FFT is implemented for linear arrays only" msgstr "" @@ -974,6 +979,10 @@ msgstr "" msgid "Failed to allocate wifi scan memory" msgstr "" +#: ports/stm/common-hal/audiopwmio/PWMAudioOut.c +msgid "Failed to buffer the sample" +msgstr "" + #: ports/nrf/common-hal/_bleio/Adapter.c msgid "Failed to connect: internal error" msgstr "" @@ -999,6 +1008,10 @@ msgstr "" msgid "Failed to write internal flash." msgstr "" +#: supervisor/shared/safe_mode.c +msgid "Fatal error." +msgstr "" + #: py/moduerrno.c msgid "File exists" msgstr "" @@ -1171,6 +1184,7 @@ msgstr "" #: ports/atmel-samd/common-hal/audiobusio/I2SOut.c #: ports/atmel-samd/common-hal/audiobusio/PDMIn.c +#: ports/mimxrt10xx/common-hal/busio/UART.c msgid "Invalid %q pin" msgstr "" @@ -1198,7 +1212,9 @@ msgid "Invalid DAC pin supplied" msgstr "" #: ports/atmel-samd/common-hal/pwmio/PWMOut.c -#: ports/cxd56/common-hal/pwmio/PWMOut.c ports/nrf/common-hal/pwmio/PWMOut.c +#: ports/cxd56/common-hal/pwmio/PWMOut.c +#: ports/mimxrt10xx/common-hal/pwmio/PWMOut.c +#: ports/nrf/common-hal/pwmio/PWMOut.c #: ports/raspberrypi/common-hal/pwmio/PWMOut.c shared-bindings/pwmio/PWMOut.c msgid "Invalid PWM frequency" msgstr "" @@ -1386,14 +1402,6 @@ msgstr "" msgid "Messages limited to 8 bytes" msgstr "" -#: supervisor/shared/safe_mode.c -msgid "MicroPython NLR jump failed. Likely memory corruption." -msgstr "" - -#: supervisor/shared/safe_mode.c -msgid "MicroPython fatal error." -msgstr "" - #: shared-bindings/audiobusio/PDMIn.c msgid "Microphone startup delay must be in range 0.0 to 1.0" msgstr "" @@ -1445,6 +1453,10 @@ msgstr "" msgid "Must use a multiple of 6 rgb pins, not %d" msgstr "" +#: supervisor/shared/safe_mode.c +msgid "NLR jump failed. Likely memory corruption." +msgstr "" + #: ports/esp32s2/common-hal/nvm/ByteArray.c msgid "NVS Error" msgstr "" @@ -1578,7 +1590,11 @@ msgid "No timer available" msgstr "" #: supervisor/shared/safe_mode.c -msgid "Nordic Soft Device failure assertion." +msgid "Nordic system firmware failure assertion." +msgstr "" + +#: ports/nrf/common-hal/_bleio/__init__.c +msgid "Nordic system firmware out of memory" msgstr "" #: shared-bindings/ipaddress/IPv4Address.c shared-bindings/ipaddress/__init__.c @@ -1877,7 +1893,7 @@ msgstr "" msgid "Read-only filesystem" msgstr "" -#: shared-module/bitmaptools/__init__.c shared-module/displayio/Bitmap.c +#: shared-module/displayio/Bitmap.c msgid "Read-only object" msgstr "" @@ -1952,14 +1968,6 @@ msgstr "" msgid "Scan already in progess. Stop with stop_scan." msgstr "" -#: ports/mimxrt10xx/common-hal/busio/UART.c -msgid "Selected CTS pin not valid" -msgstr "" - -#: ports/mimxrt10xx/common-hal/busio/UART.c -msgid "Selected RTS pin not valid" -msgstr "" - #: ports/atmel-samd/common-hal/audiobusio/I2SOut.c #: ports/atmel-samd/common-hal/audiobusio/PDMIn.c msgid "Serializer in use" @@ -2236,7 +2244,7 @@ msgstr "" #: ports/nrf/common-hal/_bleio/__init__.c #, c-format -msgid "Unknown soft device error: %04x" +msgid "Unknown system firmware error: %04x" msgstr "" #: shared-bindings/_pixelbuf/PixelBuf.c @@ -2390,11 +2398,11 @@ msgstr "" msgid "arg is an empty sequence" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "argsort argument must be an ndarray" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "argsort is not implemented for flattened arrays" msgstr "" @@ -2402,10 +2410,6 @@ msgstr "" msgid "argument has wrong type" msgstr "" -#: extmod/ulab/code/linalg/linalg.c -msgid "argument must be ndarray" -msgstr "" - #: py/argcheck.c shared-bindings/_stage/__init__.c #: shared-bindings/digitalio/DigitalInOut.c shared-bindings/gamepad/GamePad.c msgid "argument num/types mismatch" @@ -2415,7 +2419,8 @@ msgstr "" msgid "argument should be a '%q' not a '%q'" msgstr "" -#: extmod/ulab/code/linalg/linalg.c extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c +#: extmod/ulab/code/numpy/transform/transform.c msgid "arguments must be ndarrays" msgstr "" @@ -2428,11 +2433,11 @@ msgstr "" msgid "array/bytes required on right side" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "attempt to get (arg)min/(arg)max of empty sequence" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "attempt to get argmin/argmax of an empty sequence" msgstr "" @@ -2440,15 +2445,15 @@ msgstr "" msgid "attributes not supported yet" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "axis is out of bounds" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c extmod/ulab/code/ulab_tools.c msgid "axis must be None, or an integer" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "axis too long" msgstr "" @@ -2484,7 +2489,7 @@ msgstr "" msgid "branch not in range" msgstr "" -#: extmod/ulab/code/ulab_create.c +#: extmod/ulab/code/ulab_create.c extmod/ulab/code/utils/utils.c msgid "buffer is smaller than requested size" msgstr "" @@ -2492,7 +2497,7 @@ msgstr "" msgid "buffer must be a bytes-like object" msgstr "" -#: extmod/ulab/code/ulab_create.c +#: extmod/ulab/code/ulab_create.c extmod/ulab/code/utils/utils.c msgid "buffer size must be a multiple of element size" msgstr "" @@ -2749,19 +2754,19 @@ msgstr "" msgid "conversion to object" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/numpy/filter/filter.c msgid "convolve arguments must be linear arrays" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/numpy/filter/filter.c msgid "convolve arguments must be ndarrays" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/numpy/filter/filter.c msgid "convolve arguments must not be empty" msgstr "" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "could not invert Vandermonde matrix" msgstr "" @@ -2769,15 +2774,15 @@ msgstr "" msgid "couldn't determine SD card version" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "cross is defined for 1D arrays of length 3" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "data must be iterable" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "data must be of equal length" msgstr "" @@ -2814,15 +2819,15 @@ msgstr "" msgid "dict update sequence has wrong length" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "diff argument must be an ndarray" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "differentiation order out of range" msgstr "" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/transform/transform.c msgid "dimensions do not match" msgstr "" @@ -2941,11 +2946,11 @@ msgstr "" msgid "filesystem must provide mount method" msgstr "" -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "first argument must be a callable" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "first argument must be a function" msgstr "" @@ -2953,11 +2958,7 @@ msgstr "" msgid "first argument must be a tuple of ndarrays" msgstr "" -#: extmod/ulab/code/ndarray.c -msgid "first argument must be an iterable" -msgstr "" - -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "first argument must be an ndarray" msgstr "" @@ -2969,7 +2970,7 @@ msgstr "" msgid "flattening order must be either 'C', or 'F'" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "flip argument must be an ndarray" msgstr "" @@ -3002,7 +3003,7 @@ msgstr "" msgid "function got multiple values for argument '%q'" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "function has the same sign at the ends of interval" msgstr "" @@ -3077,7 +3078,7 @@ msgstr "" msgid "index is out of bounds" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c extmod/ulab/code/ulab_tools.c #: ports/esp32s2/common-hal/pulseio/PulseIn.c py/obj.c #: shared-bindings/bitmaptools/__init__.c msgid "index out of range" @@ -3091,7 +3092,7 @@ msgstr "" msgid "indices must be integers, slices, or Boolean lists" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "initial values must be iterable" msgstr "" @@ -3111,7 +3112,7 @@ msgstr "" msgid "input argument must be an integer, a tuple, or a list" msgstr "" -#: extmod/ulab/code/fft/fft.c +#: extmod/ulab/code/numpy/fft/fft_tools.c msgid "input array length must be power of 2" msgstr "" @@ -3119,15 +3120,15 @@ msgstr "" msgid "input arrays are not compatible" msgstr "" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "input data must be an iterable" msgstr "" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/linalg/linalg.c msgid "input matrix is asymmetric" msgstr "" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/linalg/linalg.c msgid "input matrix is singular" msgstr "" @@ -3143,23 +3144,23 @@ msgstr "" msgid "input must be an ndarray" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "input must be one-dimensional" msgstr "" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/ulab_tools.c msgid "input must be square matrix" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "input must be tuple, list, range, or ndarray" msgstr "" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "input vectors must be of equal length" msgstr "" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "inputs are not iterable" msgstr "" @@ -3171,7 +3172,7 @@ msgstr "" msgid "integer required" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/numpy/approx/approx.c msgid "interp is defined for 1D arrays of equal length" msgstr "" @@ -3193,6 +3194,10 @@ msgstr "" msgid "invalid cert" msgstr "" +#: py/compile.c +msgid "invalid decorator" +msgstr "" + #: extmod/uos_dupterm.c msgid "invalid dupterm index" msgstr "" @@ -3260,11 +3265,7 @@ msgstr "" msgid "issubclass() arg 2 must be a class or a tuple of classes" msgstr "" -#: extmod/ulab/code/ndarray.c -msgid "iterables are not of the same length" -msgstr "" - -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/linalg/linalg.c msgid "iterations did not converge" msgstr "" @@ -3332,7 +3333,7 @@ msgstr "" msgid "math domain error" msgstr "" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/linalg/linalg.c msgid "matrix is not positive definite" msgstr "" @@ -3354,15 +3355,15 @@ msgstr "" msgid "maximum recursion depth exceeded" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "maxiter must be > 0" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "maxiter should be > 0" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "median argument must be an ndarray" msgstr "" @@ -3383,7 +3384,7 @@ msgstr "" msgid "module not found" msgstr "" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "more degrees of freedom than data points" msgstr "" @@ -3501,10 +3502,6 @@ msgstr "" msgid "non-zero timeout must be >= interval" msgstr "" -#: extmod/ulab/code/linalg/linalg.c -msgid "norm is defined for 1D and 2D arrays" -msgstr "" - #: shared-bindings/_bleio/UUID.c msgid "not a 128-bit UUID" msgstr "" @@ -3573,7 +3570,7 @@ msgstr "" msgid "odd-length string" msgstr "" -#: extmod/ulab/code/ulab_create.c +#: extmod/ulab/code/ulab_create.c extmod/ulab/code/utils/utils.c msgid "offset is too large" msgstr "" @@ -3602,8 +3599,8 @@ msgstr "" msgid "only slices with step=1 (aka None) are supported" msgstr "" -#: extmod/ulab/code/compare/compare.c extmod/ulab/code/ndarray.c -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/ndarray.c extmod/ulab/code/numpy/compare/compare.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "operands could not be broadcast together" msgstr "" @@ -3611,7 +3608,7 @@ msgstr "" msgid "operation is implemented for 1D Boolean arrays only" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "operation is not implemented on ndarrays" msgstr "" @@ -3628,6 +3625,14 @@ msgstr "" msgid "ord() expected a character, but string of length %d found" msgstr "" +#: extmod/ulab/code/utils/utils.c +msgid "out array is too small" +msgstr "" + +#: extmod/ulab/code/utils/utils.c +msgid "out must be a float dense array" +msgstr "" + #: shared-bindings/displayio/Bitmap.c msgid "out of range of source" msgstr "" @@ -3756,7 +3761,7 @@ msgstr "" msgid "raw f-strings are not implemented" msgstr "" -#: extmod/ulab/code/fft/fft.c +#: extmod/ulab/code/numpy/fft/fft_tools.c msgid "real and imaginary parts must be of equal length" msgstr "" @@ -3791,7 +3796,7 @@ msgstr "" msgid "rgb_pins[%d] is not on the same port as clock" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "roll argument must be an ndarray" msgstr "" @@ -3838,7 +3843,7 @@ msgstr "" msgid "single '}' encountered in format string" msgstr "" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/ulab_tools.c msgid "size is defined for ndarrays only" msgstr "" @@ -3862,19 +3867,19 @@ msgstr "" msgid "soft reboot\n" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "sort argument must be an ndarray" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "sos array must be of shape (n_section, 6)" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "sos[:, 3] should be all ones" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "sosfilt requires iterable arguments" msgstr "" @@ -3988,7 +3993,7 @@ msgstr "" msgid "too many arguments provided with the given format" msgstr "" -#: extmod/ulab/code/ulab_create.c +#: extmod/ulab/code/ndarray.c extmod/ulab/code/ulab_create.c msgid "too many dimensions" msgstr "" @@ -4001,11 +4006,11 @@ msgstr "" msgid "too many values to unpack (expected %d)" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/numpy/approx/approx.c msgid "trapz is defined for 1D arrays" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/numpy/approx/approx.c msgid "trapz is defined for 1D arrays of equal length" msgstr "" @@ -4176,7 +4181,7 @@ msgstr "" msgid "window must be <= interval" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "wrong axis index" msgstr "" @@ -4184,7 +4189,8 @@ msgstr "" msgid "wrong axis specified" msgstr "" -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/numpy/compare/compare.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "wrong input type" msgstr "" @@ -4200,7 +4206,7 @@ msgstr "" msgid "wrong operand type" msgstr "" -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "wrong output type" msgstr "" @@ -4224,14 +4230,14 @@ msgstr "" msgid "zero step" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "zi must be an ndarray" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "zi must be of float type" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "zi must be of shape (n_section, 2)" msgstr "" diff --git a/locale/it_IT.po b/locale/it_IT.po index 66f45c615a..a9bd3eafca 100644 --- a/locale/it_IT.po +++ b/locale/it_IT.po @@ -423,6 +423,10 @@ msgstr "AnalogOut ha solo 16 bit. Il valore deve essere meno di 65536." msgid "AnalogOut not supported on given pin" msgstr "AnalogOut non supportato sul pin scelto" +#: ports/stm/common-hal/audiopwmio/PWMAudioOut.c +msgid "Another PWMAudioOut is already active" +msgstr "" + #: ports/atmel-samd/common-hal/pulseio/PulseOut.c #: ports/cxd56/common-hal/pulseio/PulseOut.c msgid "Another send is already active" @@ -446,8 +450,8 @@ msgid "Attempt to allocate %d blocks" msgstr "Provo ad allocare %d blocchi" #: supervisor/shared/safe_mode.c -msgid "Attempted heap allocation when MicroPython VM not running." -msgstr "Provo l'allocazione quando MicroPython VM non è attivo." +msgid "Attempted heap allocation when VM not running." +msgstr "" #: shared-bindings/wifi/Radio.c msgid "Authentication failure" @@ -540,6 +544,7 @@ msgid "Buffer is too small" msgstr "Buffer troppo piccolo" #: ports/nrf/common-hal/audiopwmio/PWMAudioOut.c +#: ports/stm/common-hal/audiopwmio/PWMAudioOut.c #, c-format msgid "Buffer length %d too big. It must be less than %d" msgstr "Lunghezza Buffer %d troppo grande. Deve essere meno di %d" @@ -951,11 +956,11 @@ msgstr "" msgid "Extended advertisements with scan response not supported." msgstr "" -#: extmod/ulab/code/fft/fft.c +#: extmod/ulab/code/numpy/fft/fft_tools.c msgid "FFT is defined for ndarrays only" msgstr "" -#: extmod/ulab/code/fft/fft.c +#: extmod/ulab/code/numpy/fft/fft_tools.c msgid "FFT is implemented for linear arrays only" msgstr "" @@ -996,6 +1001,10 @@ msgstr "" msgid "Failed to allocate wifi scan memory" msgstr "" +#: ports/stm/common-hal/audiopwmio/PWMAudioOut.c +msgid "Failed to buffer the sample" +msgstr "" + #: ports/nrf/common-hal/_bleio/Adapter.c msgid "Failed to connect: internal error" msgstr "" @@ -1021,6 +1030,10 @@ msgstr "Impossibile rilasciare il mutex, err 0x%04x" msgid "Failed to write internal flash." msgstr "" +#: supervisor/shared/safe_mode.c +msgid "Fatal error." +msgstr "" + #: py/moduerrno.c msgid "File exists" msgstr "File esistente" @@ -1195,6 +1208,7 @@ msgstr "" #: ports/atmel-samd/common-hal/audiobusio/I2SOut.c #: ports/atmel-samd/common-hal/audiobusio/PDMIn.c +#: ports/mimxrt10xx/common-hal/busio/UART.c msgid "Invalid %q pin" msgstr "Pin %q non valido" @@ -1222,7 +1236,9 @@ msgid "Invalid DAC pin supplied" msgstr "" #: ports/atmel-samd/common-hal/pwmio/PWMOut.c -#: ports/cxd56/common-hal/pwmio/PWMOut.c ports/nrf/common-hal/pwmio/PWMOut.c +#: ports/cxd56/common-hal/pwmio/PWMOut.c +#: ports/mimxrt10xx/common-hal/pwmio/PWMOut.c +#: ports/nrf/common-hal/pwmio/PWMOut.c #: ports/raspberrypi/common-hal/pwmio/PWMOut.c shared-bindings/pwmio/PWMOut.c msgid "Invalid PWM frequency" msgstr "Frequenza PWM non valida" @@ -1413,14 +1429,6 @@ msgstr "Valore massimo di x quando rispachiato è %d" msgid "Messages limited to 8 bytes" msgstr "" -#: supervisor/shared/safe_mode.c -msgid "MicroPython NLR jump failed. Likely memory corruption." -msgstr "" - -#: supervisor/shared/safe_mode.c -msgid "MicroPython fatal error." -msgstr "" - #: shared-bindings/audiobusio/PDMIn.c msgid "Microphone startup delay must be in range 0.0 to 1.0" msgstr "" @@ -1473,6 +1481,10 @@ msgstr "" msgid "Must use a multiple of 6 rgb pins, not %d" msgstr "" +#: supervisor/shared/safe_mode.c +msgid "NLR jump failed. Likely memory corruption." +msgstr "" + #: ports/esp32s2/common-hal/nvm/ByteArray.c msgid "NVS Error" msgstr "" @@ -1606,7 +1618,11 @@ msgid "No timer available" msgstr "" #: supervisor/shared/safe_mode.c -msgid "Nordic Soft Device failure assertion." +msgid "Nordic system firmware failure assertion." +msgstr "" + +#: ports/nrf/common-hal/_bleio/__init__.c +msgid "Nordic system firmware out of memory" msgstr "" #: shared-bindings/ipaddress/IPv4Address.c shared-bindings/ipaddress/__init__.c @@ -1915,7 +1931,7 @@ msgstr "Sola lettura" msgid "Read-only filesystem" msgstr "Filesystem in sola lettura" -#: shared-module/bitmaptools/__init__.c shared-module/displayio/Bitmap.c +#: shared-module/displayio/Bitmap.c #, fuzzy msgid "Read-only object" msgstr "Sola lettura" @@ -1993,14 +2009,6 @@ msgstr "" msgid "Scan already in progess. Stop with stop_scan." msgstr "" -#: ports/mimxrt10xx/common-hal/busio/UART.c -msgid "Selected CTS pin not valid" -msgstr "" - -#: ports/mimxrt10xx/common-hal/busio/UART.c -msgid "Selected RTS pin not valid" -msgstr "" - #: ports/atmel-samd/common-hal/audiobusio/I2SOut.c #: ports/atmel-samd/common-hal/audiobusio/PDMIn.c msgid "Serializer in use" @@ -2278,7 +2286,7 @@ msgstr "" #: ports/nrf/common-hal/_bleio/__init__.c #, c-format -msgid "Unknown soft device error: %04x" +msgid "Unknown system firmware error: %04x" msgstr "" #: shared-bindings/_pixelbuf/PixelBuf.c @@ -2433,11 +2441,11 @@ msgstr "gli indirizzi sono vuoti" msgid "arg is an empty sequence" msgstr "l'argomento è una sequenza vuota" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "argsort argument must be an ndarray" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "argsort is not implemented for flattened arrays" msgstr "" @@ -2445,10 +2453,6 @@ msgstr "" msgid "argument has wrong type" msgstr "il tipo dell'argomento è errato" -#: extmod/ulab/code/linalg/linalg.c -msgid "argument must be ndarray" -msgstr "" - #: py/argcheck.c shared-bindings/_stage/__init__.c #: shared-bindings/digitalio/DigitalInOut.c shared-bindings/gamepad/GamePad.c msgid "argument num/types mismatch" @@ -2458,7 +2462,8 @@ msgstr "discrepanza di numero/tipo di argomenti" msgid "argument should be a '%q' not a '%q'" msgstr "l'argomento dovrebbe essere un '%q' e non un '%q'" -#: extmod/ulab/code/linalg/linalg.c extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c +#: extmod/ulab/code/numpy/transform/transform.c msgid "arguments must be ndarrays" msgstr "" @@ -2471,11 +2476,11 @@ msgstr "" msgid "array/bytes required on right side" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "attempt to get (arg)min/(arg)max of empty sequence" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "attempt to get argmin/argmax of an empty sequence" msgstr "" @@ -2483,15 +2488,15 @@ msgstr "" msgid "attributes not supported yet" msgstr "attributi non ancora supportati" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "axis is out of bounds" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c extmod/ulab/code/ulab_tools.c msgid "axis must be None, or an integer" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "axis too long" msgstr "" @@ -2529,7 +2534,7 @@ msgstr "i bit devono essere 7, 8 o 9" msgid "branch not in range" msgstr "argomento di chr() non è in range(256)" -#: extmod/ulab/code/ulab_create.c +#: extmod/ulab/code/ulab_create.c extmod/ulab/code/utils/utils.c msgid "buffer is smaller than requested size" msgstr "" @@ -2537,7 +2542,7 @@ msgstr "" msgid "buffer must be a bytes-like object" msgstr "" -#: extmod/ulab/code/ulab_create.c +#: extmod/ulab/code/ulab_create.c extmod/ulab/code/utils/utils.c msgid "buffer size must be a multiple of element size" msgstr "" @@ -2798,19 +2803,19 @@ msgstr "la costante deve essere un intero" msgid "conversion to object" msgstr "conversione in oggetto" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/numpy/filter/filter.c msgid "convolve arguments must be linear arrays" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/numpy/filter/filter.c msgid "convolve arguments must be ndarrays" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/numpy/filter/filter.c msgid "convolve arguments must not be empty" msgstr "" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "could not invert Vandermonde matrix" msgstr "" @@ -2818,15 +2823,15 @@ msgstr "" msgid "couldn't determine SD card version" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "cross is defined for 1D arrays of length 3" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "data must be iterable" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "data must be of equal length" msgstr "" @@ -2866,15 +2871,15 @@ msgstr "destination_length deve essere un int >= 0" msgid "dict update sequence has wrong length" msgstr "sequanza di aggiornamento del dizionario ha la lunghezza errata" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "diff argument must be an ndarray" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "differentiation order out of range" msgstr "" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/transform/transform.c msgid "dimensions do not match" msgstr "" @@ -2994,11 +2999,11 @@ msgstr "" msgid "filesystem must provide mount method" msgstr "il filesystem deve fornire un metodo di mount" -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "first argument must be a callable" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "first argument must be a function" msgstr "" @@ -3006,11 +3011,7 @@ msgstr "" msgid "first argument must be a tuple of ndarrays" msgstr "" -#: extmod/ulab/code/ndarray.c -msgid "first argument must be an iterable" -msgstr "" - -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "first argument must be an ndarray" msgstr "" @@ -3022,7 +3023,7 @@ msgstr "" msgid "flattening order must be either 'C', or 'F'" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "flip argument must be an ndarray" msgstr "" @@ -3055,7 +3056,7 @@ msgstr "la funzione prevede al massimo %d argmoneti, ma ne ha ricevuti %d" msgid "function got multiple values for argument '%q'" msgstr "la funzione ha ricevuto valori multipli per l'argomento '%q'" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "function has the same sign at the ends of interval" msgstr "" @@ -3131,7 +3132,7 @@ msgstr "padding incorretto" msgid "index is out of bounds" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c extmod/ulab/code/ulab_tools.c #: ports/esp32s2/common-hal/pulseio/PulseIn.c py/obj.c #: shared-bindings/bitmaptools/__init__.c msgid "index out of range" @@ -3145,7 +3146,7 @@ msgstr "gli indici devono essere interi" msgid "indices must be integers, slices, or Boolean lists" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "initial values must be iterable" msgstr "" @@ -3165,7 +3166,7 @@ msgstr "" msgid "input argument must be an integer, a tuple, or a list" msgstr "" -#: extmod/ulab/code/fft/fft.c +#: extmod/ulab/code/numpy/fft/fft_tools.c msgid "input array length must be power of 2" msgstr "" @@ -3173,15 +3174,15 @@ msgstr "" msgid "input arrays are not compatible" msgstr "" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "input data must be an iterable" msgstr "" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/linalg/linalg.c msgid "input matrix is asymmetric" msgstr "" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/linalg/linalg.c msgid "input matrix is singular" msgstr "" @@ -3197,23 +3198,23 @@ msgstr "" msgid "input must be an ndarray" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "input must be one-dimensional" msgstr "" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/ulab_tools.c msgid "input must be square matrix" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "input must be tuple, list, range, or ndarray" msgstr "" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "input vectors must be of equal length" msgstr "" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "inputs are not iterable" msgstr "" @@ -3225,7 +3226,7 @@ msgstr "il secondo argomanto di int() deve essere >= 2 e <= 36" msgid "integer required" msgstr "intero richiesto" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/numpy/approx/approx.c msgid "interp is defined for 1D arrays of equal length" msgstr "" @@ -3247,6 +3248,10 @@ msgstr "" msgid "invalid cert" msgstr "certificato non valido" +#: py/compile.c +msgid "invalid decorator" +msgstr "" + #: extmod/uos_dupterm.c msgid "invalid dupterm index" msgstr "indice dupterm non valido" @@ -3316,11 +3321,7 @@ msgstr "" "il secondo argomento di issubclass() deve essere una classe o una tupla di " "classi" -#: extmod/ulab/code/ndarray.c -msgid "iterables are not of the same length" -msgstr "" - -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/linalg/linalg.c msgid "iterations did not converge" msgstr "" @@ -3391,7 +3392,7 @@ msgstr "map buffer troppo piccolo" msgid "math domain error" msgstr "errore di dominio matematico" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/linalg/linalg.c msgid "matrix is not positive definite" msgstr "" @@ -3413,15 +3414,15 @@ msgstr "" msgid "maximum recursion depth exceeded" msgstr "profondità massima di ricorsione superata" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "maxiter must be > 0" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "maxiter should be > 0" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "median argument must be an ndarray" msgstr "" @@ -3442,7 +3443,7 @@ msgstr "" msgid "module not found" msgstr "modulo non trovato" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "more degrees of freedom than data points" msgstr "" @@ -3561,10 +3562,6 @@ msgstr "" msgid "non-zero timeout must be >= interval" msgstr "" -#: extmod/ulab/code/linalg/linalg.c -msgid "norm is defined for 1D and 2D arrays" -msgstr "" - #: shared-bindings/_bleio/UUID.c msgid "not a 128-bit UUID" msgstr "" @@ -3635,7 +3632,7 @@ msgstr "" msgid "odd-length string" msgstr "stringa di lunghezza dispari" -#: extmod/ulab/code/ulab_create.c +#: extmod/ulab/code/ulab_create.c extmod/ulab/code/utils/utils.c msgid "offset is too large" msgstr "" @@ -3665,8 +3662,8 @@ msgstr "" msgid "only slices with step=1 (aka None) are supported" msgstr "solo slice con step=1 (aka None) sono supportate" -#: extmod/ulab/code/compare/compare.c extmod/ulab/code/ndarray.c -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/ndarray.c extmod/ulab/code/numpy/compare/compare.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "operands could not be broadcast together" msgstr "" @@ -3674,7 +3671,7 @@ msgstr "" msgid "operation is implemented for 1D Boolean arrays only" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "operation is not implemented on ndarrays" msgstr "" @@ -3692,6 +3689,14 @@ msgid "ord() expected a character, but string of length %d found" msgstr "" "ord() aspettava un carattere, ma ha ricevuto una stringa di lunghezza %d" +#: extmod/ulab/code/utils/utils.c +msgid "out array is too small" +msgstr "" + +#: extmod/ulab/code/utils/utils.c +msgid "out must be a float dense array" +msgstr "" + #: shared-bindings/displayio/Bitmap.c msgid "out of range of source" msgstr "" @@ -3822,7 +3827,7 @@ msgstr "overflow della coda" msgid "raw f-strings are not implemented" msgstr "" -#: extmod/ulab/code/fft/fft.c +#: extmod/ulab/code/numpy/fft/fft_tools.c msgid "real and imaginary parts must be of equal length" msgstr "" @@ -3857,7 +3862,7 @@ msgstr "" msgid "rgb_pins[%d] is not on the same port as clock" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "roll argument must be an ndarray" msgstr "" @@ -3906,7 +3911,7 @@ msgstr "segno non permesso nello spcificatore di formato 'c' della stringa" msgid "single '}' encountered in format string" msgstr "'}' singolo presente nella stringa di formattazione" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/ulab_tools.c msgid "size is defined for ndarrays only" msgstr "" @@ -3930,19 +3935,19 @@ msgstr "small int overflow" msgid "soft reboot\n" msgstr "soft reboot\n" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "sort argument must be an ndarray" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "sos array must be of shape (n_section, 6)" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "sos[:, 3] should be all ones" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "sosfilt requires iterable arguments" msgstr "" @@ -4058,7 +4063,7 @@ msgstr "" msgid "too many arguments provided with the given format" msgstr "troppi argomenti forniti con il formato specificato" -#: extmod/ulab/code/ulab_create.c +#: extmod/ulab/code/ndarray.c extmod/ulab/code/ulab_create.c msgid "too many dimensions" msgstr "" @@ -4071,11 +4076,11 @@ msgstr "" msgid "too many values to unpack (expected %d)" msgstr "troppi valori da scompattare (%d attesi)" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/numpy/approx/approx.c msgid "trapz is defined for 1D arrays" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/numpy/approx/approx.c msgid "trapz is defined for 1D arrays of equal length" msgstr "" @@ -4246,7 +4251,7 @@ msgstr "" msgid "window must be <= interval" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "wrong axis index" msgstr "" @@ -4254,7 +4259,8 @@ msgstr "" msgid "wrong axis specified" msgstr "" -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/numpy/compare/compare.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "wrong input type" msgstr "" @@ -4270,7 +4276,7 @@ msgstr "numero di valori da scompattare non corretto" msgid "wrong operand type" msgstr "" -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "wrong output type" msgstr "" @@ -4296,18 +4302,21 @@ msgstr "indirizzo fuori limite" msgid "zero step" msgstr "zero step" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "zi must be an ndarray" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "zi must be of float type" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "zi must be of shape (n_section, 2)" msgstr "" +#~ msgid "Attempted heap allocation when MicroPython VM not running." +#~ msgstr "Provo l'allocazione quando MicroPython VM non è attivo." + #~ msgid "Group full" #~ msgstr "Gruppo pieno" diff --git a/locale/ja.po b/locale/ja.po index 1a1a2d7bec..e988170557 100644 --- a/locale/ja.po +++ b/locale/ja.po @@ -416,6 +416,10 @@ msgstr "AnalogOutは16ビットです。値は65536以下でなければなり msgid "AnalogOut not supported on given pin" msgstr "指定のピンはAnalogOutに対応していません" +#: ports/stm/common-hal/audiopwmio/PWMAudioOut.c +msgid "Another PWMAudioOut is already active" +msgstr "" + #: ports/atmel-samd/common-hal/pulseio/PulseOut.c #: ports/cxd56/common-hal/pulseio/PulseOut.c msgid "Another send is already active" @@ -439,8 +443,8 @@ msgid "Attempt to allocate %d blocks" msgstr "%d個のブロックの確保を試みました" #: supervisor/shared/safe_mode.c -msgid "Attempted heap allocation when MicroPython VM not running." -msgstr "MicroPython VMの非実行時にヒープ確保を試みました" +msgid "Attempted heap allocation when VM not running." +msgstr "" #: shared-bindings/wifi/Radio.c msgid "Authentication failure" @@ -532,6 +536,7 @@ msgid "Buffer is too small" msgstr "バッファが小さすぎます" #: ports/nrf/common-hal/audiopwmio/PWMAudioOut.c +#: ports/stm/common-hal/audiopwmio/PWMAudioOut.c #, c-format msgid "Buffer length %d too big. It must be less than %d" msgstr "バッファ長%dは大きすぎます。%d以下でなければなりません" @@ -940,11 +945,11 @@ msgstr "" msgid "Extended advertisements with scan response not supported." msgstr "" -#: extmod/ulab/code/fft/fft.c +#: extmod/ulab/code/numpy/fft/fft_tools.c msgid "FFT is defined for ndarrays only" msgstr "FFTはndarrayでのみ使えます" -#: extmod/ulab/code/fft/fft.c +#: extmod/ulab/code/numpy/fft/fft_tools.c msgid "FFT is implemented for linear arrays only" msgstr "" @@ -985,6 +990,10 @@ msgstr "Wi-Fiのメモリの確保に失敗" msgid "Failed to allocate wifi scan memory" msgstr "" +#: ports/stm/common-hal/audiopwmio/PWMAudioOut.c +msgid "Failed to buffer the sample" +msgstr "" + #: ports/nrf/common-hal/_bleio/Adapter.c msgid "Failed to connect: internal error" msgstr "接続失敗: 内部エラー" @@ -1010,6 +1019,10 @@ msgstr "ミューテックスの開放に失敗。エラー 0x%04x" msgid "Failed to write internal flash." msgstr "内部フラッシュ書き込みに失敗" +#: supervisor/shared/safe_mode.c +msgid "Fatal error." +msgstr "" + #: py/moduerrno.c msgid "File exists" msgstr "ファイルが存在します" @@ -1184,6 +1197,7 @@ msgstr "不正な %q" #: ports/atmel-samd/common-hal/audiobusio/I2SOut.c #: ports/atmel-samd/common-hal/audiobusio/PDMIn.c +#: ports/mimxrt10xx/common-hal/busio/UART.c msgid "Invalid %q pin" msgstr "不正な%qピン" @@ -1211,7 +1225,9 @@ msgid "Invalid DAC pin supplied" msgstr "不正なDACピンが与えられました" #: ports/atmel-samd/common-hal/pwmio/PWMOut.c -#: ports/cxd56/common-hal/pwmio/PWMOut.c ports/nrf/common-hal/pwmio/PWMOut.c +#: ports/cxd56/common-hal/pwmio/PWMOut.c +#: ports/mimxrt10xx/common-hal/pwmio/PWMOut.c +#: ports/nrf/common-hal/pwmio/PWMOut.c #: ports/raspberrypi/common-hal/pwmio/PWMOut.c shared-bindings/pwmio/PWMOut.c msgid "Invalid PWM frequency" msgstr "無効なPWM周波数" @@ -1399,14 +1415,6 @@ msgstr "" msgid "Messages limited to 8 bytes" msgstr "" -#: supervisor/shared/safe_mode.c -msgid "MicroPython NLR jump failed. Likely memory corruption." -msgstr "MicroPython NLRジャンプ失敗。メモリ破壊の可能性あり" - -#: supervisor/shared/safe_mode.c -msgid "MicroPython fatal error." -msgstr "MicroPython致命的エラー" - #: shared-bindings/audiobusio/PDMIn.c msgid "Microphone startup delay must be in range 0.0 to 1.0" msgstr "マイクのスタートアップディレイは 0.0 から 1.0 の間でなければなりません" @@ -1458,6 +1466,10 @@ msgstr "MISOピンまたはMOSIピンが必要" msgid "Must use a multiple of 6 rgb pins, not %d" msgstr "%d個でなく6の倍数個のrgbピンを使ってください" +#: supervisor/shared/safe_mode.c +msgid "NLR jump failed. Likely memory corruption." +msgstr "" + #: ports/esp32s2/common-hal/nvm/ByteArray.c msgid "NVS Error" msgstr "" @@ -1591,7 +1603,11 @@ msgid "No timer available" msgstr "利用できるタイマーなし" #: supervisor/shared/safe_mode.c -msgid "Nordic Soft Device failure assertion." +msgid "Nordic system firmware failure assertion." +msgstr "" + +#: ports/nrf/common-hal/_bleio/__init__.c +msgid "Nordic system firmware out of memory" msgstr "" #: shared-bindings/ipaddress/IPv4Address.c shared-bindings/ipaddress/__init__.c @@ -1893,7 +1909,7 @@ msgstr "読み込み専用" msgid "Read-only filesystem" msgstr "読み込み専用のファイルシステム" -#: shared-module/bitmaptools/__init__.c shared-module/displayio/Bitmap.c +#: shared-module/displayio/Bitmap.c msgid "Read-only object" msgstr "読み込み専用のオブジェクト" @@ -1968,14 +1984,6 @@ msgstr "サンプルレートは%d以下でなければなりません" msgid "Scan already in progess. Stop with stop_scan." msgstr "既にスキャン進行中。stop_scanで停止してください" -#: ports/mimxrt10xx/common-hal/busio/UART.c -msgid "Selected CTS pin not valid" -msgstr "選択されたCTSピンが不正" - -#: ports/mimxrt10xx/common-hal/busio/UART.c -msgid "Selected RTS pin not valid" -msgstr "選択されたRTSピンが正しくありません" - #: ports/atmel-samd/common-hal/audiobusio/I2SOut.c #: ports/atmel-samd/common-hal/audiobusio/PDMIn.c msgid "Serializer in use" @@ -2259,8 +2267,8 @@ msgstr "不明なセキュリティエラー: 0x%04x" #: ports/nrf/common-hal/_bleio/__init__.c #, c-format -msgid "Unknown soft device error: %04x" -msgstr "不明なソフトデバイスエラー: %04x" +msgid "Unknown system firmware error: %04x" +msgstr "" #: shared-bindings/_pixelbuf/PixelBuf.c #, c-format @@ -2413,11 +2421,11 @@ msgstr "" msgid "arg is an empty sequence" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "argsort argument must be an ndarray" msgstr "argsortの引数はndarrayでなければなりません" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "argsort is not implemented for flattened arrays" msgstr "" @@ -2425,10 +2433,6 @@ msgstr "" msgid "argument has wrong type" msgstr "" -#: extmod/ulab/code/linalg/linalg.c -msgid "argument must be ndarray" -msgstr "引数はndarrayでなければなりません" - #: py/argcheck.c shared-bindings/_stage/__init__.c #: shared-bindings/digitalio/DigitalInOut.c shared-bindings/gamepad/GamePad.c msgid "argument num/types mismatch" @@ -2438,7 +2442,8 @@ msgstr "" msgid "argument should be a '%q' not a '%q'" msgstr "引数には '%q' が必要('%q' ではなく)" -#: extmod/ulab/code/linalg/linalg.c extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c +#: extmod/ulab/code/numpy/transform/transform.c msgid "arguments must be ndarrays" msgstr "引数はndarrayでなければなりません" @@ -2451,11 +2456,11 @@ msgstr "" msgid "array/bytes required on right side" msgstr "右辺にはarray/bytesが必要" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "attempt to get (arg)min/(arg)max of empty sequence" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "attempt to get argmin/argmax of an empty sequence" msgstr "" @@ -2463,15 +2468,15 @@ msgstr "" msgid "attributes not supported yet" msgstr "属性は未対応です" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "axis is out of bounds" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c extmod/ulab/code/ulab_tools.c msgid "axis must be None, or an integer" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "axis too long" msgstr "" @@ -2507,7 +2512,7 @@ msgstr "bits_per_sampleは8または16でなければなりません" msgid "branch not in range" msgstr "" -#: extmod/ulab/code/ulab_create.c +#: extmod/ulab/code/ulab_create.c extmod/ulab/code/utils/utils.c msgid "buffer is smaller than requested size" msgstr "" @@ -2515,7 +2520,7 @@ msgstr "" msgid "buffer must be a bytes-like object" msgstr "バッファはbytes-likeオブジェクトでなければなりません" -#: extmod/ulab/code/ulab_create.c +#: extmod/ulab/code/ulab_create.c extmod/ulab/code/utils/utils.c msgid "buffer size must be a multiple of element size" msgstr "" @@ -2774,19 +2779,19 @@ msgstr "定数は整数でなければなりません" msgid "conversion to object" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/numpy/filter/filter.c msgid "convolve arguments must be linear arrays" msgstr "convolve引数には1次元arrayが必要" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/numpy/filter/filter.c msgid "convolve arguments must be ndarrays" msgstr "convolve引数はndarrayでなければなりません" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/numpy/filter/filter.c msgid "convolve arguments must not be empty" msgstr "" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "could not invert Vandermonde matrix" msgstr "ヴァンデルモンド行列の逆行列を求められません" @@ -2794,15 +2799,15 @@ msgstr "ヴァンデルモンド行列の逆行列を求められません" msgid "couldn't determine SD card version" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "cross is defined for 1D arrays of length 3" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "data must be iterable" msgstr "dataはイテレート可能でなければなりません" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "data must be of equal length" msgstr "dataは同じ長さでなければなりません" @@ -2841,15 +2846,15 @@ msgstr "desitination_lengthは正の整数でなければなりません" msgid "dict update sequence has wrong length" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "diff argument must be an ndarray" msgstr "引数はndarrayでなければなりません" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "differentiation order out of range" msgstr "" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/transform/transform.c msgid "dimensions do not match" msgstr "" @@ -2968,11 +2973,11 @@ msgstr "fileはバイトモードで開かれたファイルでなければな msgid "filesystem must provide mount method" msgstr "filesystemはmountメソッドを提供しなければなりません" -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "first argument must be a callable" msgstr "1つ目の引数は呼び出し可能でなければなりません" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "first argument must be a function" msgstr "1つ目の引数は関数でなければなりません" @@ -2980,11 +2985,7 @@ msgstr "1つ目の引数は関数でなければなりません" msgid "first argument must be a tuple of ndarrays" msgstr "" -#: extmod/ulab/code/ndarray.c -msgid "first argument must be an iterable" -msgstr "1つ目の引数はイテレート可能でなければなりません" - -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "first argument must be an ndarray" msgstr "1つ目の引数はndarrayでなければなりません" @@ -2996,7 +2997,7 @@ msgstr "superの第1引数は型でなければなりません" msgid "flattening order must be either 'C', or 'F'" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "flip argument must be an ndarray" msgstr "flipの引数はndarrayでなければなりません" @@ -3029,7 +3030,7 @@ msgstr "" msgid "function got multiple values for argument '%q'" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "function has the same sign at the ends of interval" msgstr "" @@ -3104,7 +3105,7 @@ msgstr "" msgid "index is out of bounds" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c extmod/ulab/code/ulab_tools.c #: ports/esp32s2/common-hal/pulseio/PulseIn.c py/obj.c #: shared-bindings/bitmaptools/__init__.c msgid "index out of range" @@ -3119,7 +3120,7 @@ msgid "indices must be integers, slices, or Boolean lists" msgstr "" "インデクスは、整数、スライス、boolのリストのいずれかでなければなりません" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "initial values must be iterable" msgstr "" @@ -3139,7 +3140,7 @@ msgstr "" msgid "input argument must be an integer, a tuple, or a list" msgstr "" -#: extmod/ulab/code/fft/fft.c +#: extmod/ulab/code/numpy/fft/fft_tools.c msgid "input array length must be power of 2" msgstr "入力array長は2の累乗でなければなりません" @@ -3147,15 +3148,15 @@ msgstr "入力array長は2の累乗でなければなりません" msgid "input arrays are not compatible" msgstr "" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "input data must be an iterable" msgstr "" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/linalg/linalg.c msgid "input matrix is asymmetric" msgstr "入力行列が非対称" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/linalg/linalg.c msgid "input matrix is singular" msgstr "入力が非正則行列" @@ -3171,23 +3172,23 @@ msgstr "" msgid "input must be an ndarray" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "input must be one-dimensional" msgstr "" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/ulab_tools.c msgid "input must be square matrix" msgstr "入力は正方行列でなければなりません" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "input must be tuple, list, range, or ndarray" msgstr "入力はtuple, list, range, ndarrayでなければなりません" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "input vectors must be of equal length" msgstr "" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "inputs are not iterable" msgstr "" @@ -3199,7 +3200,7 @@ msgstr "int()の第2引数は2以上36以下でなければなりません" msgid "integer required" msgstr "整数が必要" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/numpy/approx/approx.c msgid "interp is defined for 1D arrays of equal length" msgstr "" @@ -3221,6 +3222,10 @@ msgstr "" msgid "invalid cert" msgstr "不正な証明書" +#: py/compile.c +msgid "invalid decorator" +msgstr "" + #: extmod/uos_dupterm.c msgid "invalid dupterm index" msgstr "不正なduptermインデクス" @@ -3288,11 +3293,7 @@ msgstr "issubclass()の第1引数はクラスでなければなりません" msgid "issubclass() arg 2 must be a class or a tuple of classes" msgstr "issubclass()の第2引数はクラスかクラスのタプルでなければなりません" -#: extmod/ulab/code/ndarray.c -msgid "iterables are not of the same length" -msgstr "iterableが同じ長さではありません" - -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/linalg/linalg.c msgid "iterations did not converge" msgstr "収束しません" @@ -3360,7 +3361,7 @@ msgstr "" msgid "math domain error" msgstr "定義域エラー" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/linalg/linalg.c msgid "matrix is not positive definite" msgstr "正定値行列ではありません" @@ -3382,15 +3383,15 @@ msgstr "" msgid "maximum recursion depth exceeded" msgstr "最大の再帰深度を超えました" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "maxiter must be > 0" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "maxiter should be > 0" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "median argument must be an ndarray" msgstr "" @@ -3411,7 +3412,7 @@ msgstr "" msgid "module not found" msgstr "モジュールが見つかりません" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "more degrees of freedom than data points" msgstr "" @@ -3529,10 +3530,6 @@ msgstr "" msgid "non-zero timeout must be >= interval" msgstr "" -#: extmod/ulab/code/linalg/linalg.c -msgid "norm is defined for 1D and 2D arrays" -msgstr "" - #: shared-bindings/_bleio/UUID.c msgid "not a 128-bit UUID" msgstr "128ビットのUUIDではありません" @@ -3601,7 +3598,7 @@ msgstr "" msgid "odd-length string" msgstr "奇数長の文字列" -#: extmod/ulab/code/ulab_create.c +#: extmod/ulab/code/ulab_create.c extmod/ulab/code/utils/utils.c msgid "offset is too large" msgstr "" @@ -3630,8 +3627,8 @@ msgstr "" msgid "only slices with step=1 (aka None) are supported" msgstr "" -#: extmod/ulab/code/compare/compare.c extmod/ulab/code/ndarray.c -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/ndarray.c extmod/ulab/code/numpy/compare/compare.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "operands could not be broadcast together" msgstr "" @@ -3639,7 +3636,7 @@ msgstr "" msgid "operation is implemented for 1D Boolean arrays only" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "operation is not implemented on ndarrays" msgstr "この演算はndarray上で実装されていません" @@ -3656,6 +3653,14 @@ msgstr "ord()は1文字を受け取ります" msgid "ord() expected a character, but string of length %d found" msgstr "ord()は1文字を要求しますが、長さ %d の文字列が与えられました" +#: extmod/ulab/code/utils/utils.c +msgid "out array is too small" +msgstr "" + +#: extmod/ulab/code/utils/utils.c +msgid "out must be a float dense array" +msgstr "" + #: shared-bindings/displayio/Bitmap.c msgid "out of range of source" msgstr "ソースが範囲外" @@ -3786,7 +3791,7 @@ msgstr "キューがオーバーフローしました" msgid "raw f-strings are not implemented" msgstr "raw f-文字列は実装されていません" -#: extmod/ulab/code/fft/fft.c +#: extmod/ulab/code/numpy/fft/fft_tools.c msgid "real and imaginary parts must be of equal length" msgstr "実数部と虚数部は同じ長さでなければなりません" @@ -3821,7 +3826,7 @@ msgstr "" msgid "rgb_pins[%d] is not on the same port as clock" msgstr "rgb_pins[%d]はクロックと同じポートではありません" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "roll argument must be an ndarray" msgstr "" @@ -3869,7 +3874,7 @@ msgstr "整数フォーマット指定子'c'で符号は使えません" msgid "single '}' encountered in format string" msgstr "文字列フォーマット中に孤立した '}' があります" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/ulab_tools.c msgid "size is defined for ndarrays only" msgstr "" @@ -3893,19 +3898,19 @@ msgstr "small int オーバーフロー" msgid "soft reboot\n" msgstr "ソフトリブート\n" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "sort argument must be an ndarray" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "sos array must be of shape (n_section, 6)" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "sos[:, 3] should be all ones" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "sosfilt requires iterable arguments" msgstr "" @@ -4019,7 +4024,7 @@ msgstr "" msgid "too many arguments provided with the given format" msgstr "指定された書式に対して引数が多すぎます" -#: extmod/ulab/code/ulab_create.c +#: extmod/ulab/code/ndarray.c extmod/ulab/code/ulab_create.c msgid "too many dimensions" msgstr "" @@ -4032,11 +4037,11 @@ msgstr "インデクスが多すぎます" msgid "too many values to unpack (expected %d)" msgstr "アンパックする値が多すぎます (%d個を期待)" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/numpy/approx/approx.c msgid "trapz is defined for 1D arrays" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/numpy/approx/approx.c msgid "trapz is defined for 1D arrays of equal length" msgstr "trapzは同じ長さの1次元arrayに対して定義されています" @@ -4207,7 +4212,7 @@ msgstr "" msgid "window must be <= interval" msgstr "windowはinterval以下でなければなりません" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "wrong axis index" msgstr "" @@ -4215,7 +4220,8 @@ msgstr "" msgid "wrong axis specified" msgstr "" -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/numpy/compare/compare.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "wrong input type" msgstr "" @@ -4231,7 +4237,7 @@ msgstr "アンパックする値の個数が不正です" msgid "wrong operand type" msgstr "" -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "wrong output type" msgstr "" @@ -4255,18 +4261,48 @@ msgstr "yが範囲外" msgid "zero step" msgstr "ステップが0" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "zi must be an ndarray" msgstr "ziはndarrayでなければなりません" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "zi must be of float type" msgstr "ziはfloat値でなければなりません" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "zi must be of shape (n_section, 2)" msgstr "" +#~ msgid "Attempted heap allocation when MicroPython VM not running." +#~ msgstr "MicroPython VMの非実行時にヒープ確保を試みました" + +#~ msgid "MicroPython NLR jump failed. Likely memory corruption." +#~ msgstr "MicroPython NLRジャンプ失敗。メモリ破壊の可能性あり" + +#~ msgid "MicroPython fatal error." +#~ msgstr "MicroPython致命的エラー" + +#~ msgid "argument must be ndarray" +#~ msgstr "引数はndarrayでなければなりません" + +#~ msgid "matrix dimensions do not match" +#~ msgstr "行列の次元が一致しません" + +#~ msgid "Unknown soft device error: %04x" +#~ msgstr "不明なソフトデバイスエラー: %04x" + +#~ msgid "first argument must be an iterable" +#~ msgstr "1つ目の引数はイテレート可能でなければなりません" + +#~ msgid "iterables are not of the same length" +#~ msgstr "iterableが同じ長さではありません" + +#~ msgid "Selected CTS pin not valid" +#~ msgstr "選択されたCTSピンが不正" + +#~ msgid "Selected RTS pin not valid" +#~ msgstr "選択されたRTSピンが正しくありません" + #~ msgid "Could not initialize channel" #~ msgstr "チャネルを初期化できません" @@ -4288,9 +4324,6 @@ msgstr "" #~ msgid "No more timers available on this pin." #~ msgstr "このピンには使えるタイマーがもうありません" -#~ msgid "matrix dimensions do not match" -#~ msgstr "行列の次元が一致しません" - #~ msgid "Group full" #~ msgstr "グループが一杯" diff --git a/locale/ko.po b/locale/ko.po index fd945991ec..0d6806d2ce 100644 --- a/locale/ko.po +++ b/locale/ko.po @@ -412,6 +412,10 @@ msgstr "" msgid "AnalogOut not supported on given pin" msgstr "" +#: ports/stm/common-hal/audiopwmio/PWMAudioOut.c +msgid "Another PWMAudioOut is already active" +msgstr "" + #: ports/atmel-samd/common-hal/pulseio/PulseOut.c #: ports/cxd56/common-hal/pulseio/PulseOut.c msgid "Another send is already active" @@ -435,7 +439,7 @@ msgid "Attempt to allocate %d blocks" msgstr "" #: supervisor/shared/safe_mode.c -msgid "Attempted heap allocation when MicroPython VM not running." +msgid "Attempted heap allocation when VM not running." msgstr "" #: shared-bindings/wifi/Radio.c @@ -528,6 +532,7 @@ msgid "Buffer is too small" msgstr "" #: ports/nrf/common-hal/audiopwmio/PWMAudioOut.c +#: ports/stm/common-hal/audiopwmio/PWMAudioOut.c #, c-format msgid "Buffer length %d too big. It must be less than %d" msgstr "" @@ -932,11 +937,11 @@ msgstr "" msgid "Extended advertisements with scan response not supported." msgstr "" -#: extmod/ulab/code/fft/fft.c +#: extmod/ulab/code/numpy/fft/fft_tools.c msgid "FFT is defined for ndarrays only" msgstr "" -#: extmod/ulab/code/fft/fft.c +#: extmod/ulab/code/numpy/fft/fft_tools.c msgid "FFT is implemented for linear arrays only" msgstr "" @@ -977,6 +982,10 @@ msgstr "" msgid "Failed to allocate wifi scan memory" msgstr "" +#: ports/stm/common-hal/audiopwmio/PWMAudioOut.c +msgid "Failed to buffer the sample" +msgstr "" + #: ports/nrf/common-hal/_bleio/Adapter.c msgid "Failed to connect: internal error" msgstr "" @@ -1002,6 +1011,10 @@ msgstr "" msgid "Failed to write internal flash." msgstr "" +#: supervisor/shared/safe_mode.c +msgid "Fatal error." +msgstr "" + #: py/moduerrno.c msgid "File exists" msgstr "" @@ -1174,6 +1187,7 @@ msgstr "" #: ports/atmel-samd/common-hal/audiobusio/I2SOut.c #: ports/atmel-samd/common-hal/audiobusio/PDMIn.c +#: ports/mimxrt10xx/common-hal/busio/UART.c msgid "Invalid %q pin" msgstr "" @@ -1201,7 +1215,9 @@ msgid "Invalid DAC pin supplied" msgstr "" #: ports/atmel-samd/common-hal/pwmio/PWMOut.c -#: ports/cxd56/common-hal/pwmio/PWMOut.c ports/nrf/common-hal/pwmio/PWMOut.c +#: ports/cxd56/common-hal/pwmio/PWMOut.c +#: ports/mimxrt10xx/common-hal/pwmio/PWMOut.c +#: ports/nrf/common-hal/pwmio/PWMOut.c #: ports/raspberrypi/common-hal/pwmio/PWMOut.c shared-bindings/pwmio/PWMOut.c msgid "Invalid PWM frequency" msgstr "" @@ -1389,14 +1405,6 @@ msgstr "" msgid "Messages limited to 8 bytes" msgstr "" -#: supervisor/shared/safe_mode.c -msgid "MicroPython NLR jump failed. Likely memory corruption." -msgstr "" - -#: supervisor/shared/safe_mode.c -msgid "MicroPython fatal error." -msgstr "" - #: shared-bindings/audiobusio/PDMIn.c msgid "Microphone startup delay must be in range 0.0 to 1.0" msgstr "" @@ -1448,6 +1456,10 @@ msgstr "" msgid "Must use a multiple of 6 rgb pins, not %d" msgstr "" +#: supervisor/shared/safe_mode.c +msgid "NLR jump failed. Likely memory corruption." +msgstr "" + #: ports/esp32s2/common-hal/nvm/ByteArray.c msgid "NVS Error" msgstr "" @@ -1581,7 +1593,11 @@ msgid "No timer available" msgstr "" #: supervisor/shared/safe_mode.c -msgid "Nordic Soft Device failure assertion." +msgid "Nordic system firmware failure assertion." +msgstr "" + +#: ports/nrf/common-hal/_bleio/__init__.c +msgid "Nordic system firmware out of memory" msgstr "" #: shared-bindings/ipaddress/IPv4Address.c shared-bindings/ipaddress/__init__.c @@ -1880,7 +1896,7 @@ msgstr "" msgid "Read-only filesystem" msgstr "" -#: shared-module/bitmaptools/__init__.c shared-module/displayio/Bitmap.c +#: shared-module/displayio/Bitmap.c msgid "Read-only object" msgstr "" @@ -1955,14 +1971,6 @@ msgstr "" msgid "Scan already in progess. Stop with stop_scan." msgstr "" -#: ports/mimxrt10xx/common-hal/busio/UART.c -msgid "Selected CTS pin not valid" -msgstr "" - -#: ports/mimxrt10xx/common-hal/busio/UART.c -msgid "Selected RTS pin not valid" -msgstr "" - #: ports/atmel-samd/common-hal/audiobusio/I2SOut.c #: ports/atmel-samd/common-hal/audiobusio/PDMIn.c msgid "Serializer in use" @@ -2240,7 +2248,7 @@ msgstr "" #: ports/nrf/common-hal/_bleio/__init__.c #, c-format -msgid "Unknown soft device error: %04x" +msgid "Unknown system firmware error: %04x" msgstr "" #: shared-bindings/_pixelbuf/PixelBuf.c @@ -2394,11 +2402,11 @@ msgstr "" msgid "arg is an empty sequence" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "argsort argument must be an ndarray" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "argsort is not implemented for flattened arrays" msgstr "" @@ -2406,10 +2414,6 @@ msgstr "" msgid "argument has wrong type" msgstr "" -#: extmod/ulab/code/linalg/linalg.c -msgid "argument must be ndarray" -msgstr "" - #: py/argcheck.c shared-bindings/_stage/__init__.c #: shared-bindings/digitalio/DigitalInOut.c shared-bindings/gamepad/GamePad.c msgid "argument num/types mismatch" @@ -2419,7 +2423,8 @@ msgstr "" msgid "argument should be a '%q' not a '%q'" msgstr "" -#: extmod/ulab/code/linalg/linalg.c extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c +#: extmod/ulab/code/numpy/transform/transform.c msgid "arguments must be ndarrays" msgstr "" @@ -2432,11 +2437,11 @@ msgstr "" msgid "array/bytes required on right side" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "attempt to get (arg)min/(arg)max of empty sequence" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "attempt to get argmin/argmax of an empty sequence" msgstr "" @@ -2444,15 +2449,15 @@ msgstr "" msgid "attributes not supported yet" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "axis is out of bounds" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c extmod/ulab/code/ulab_tools.c msgid "axis must be None, or an integer" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "axis too long" msgstr "" @@ -2488,7 +2493,7 @@ msgstr "bits_per_sample은 8 또는 16이어야합니다." msgid "branch not in range" msgstr "" -#: extmod/ulab/code/ulab_create.c +#: extmod/ulab/code/ulab_create.c extmod/ulab/code/utils/utils.c msgid "buffer is smaller than requested size" msgstr "" @@ -2496,7 +2501,7 @@ msgstr "" msgid "buffer must be a bytes-like object" msgstr "" -#: extmod/ulab/code/ulab_create.c +#: extmod/ulab/code/ulab_create.c extmod/ulab/code/utils/utils.c msgid "buffer size must be a multiple of element size" msgstr "" @@ -2753,19 +2758,19 @@ msgstr "" msgid "conversion to object" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/numpy/filter/filter.c msgid "convolve arguments must be linear arrays" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/numpy/filter/filter.c msgid "convolve arguments must be ndarrays" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/numpy/filter/filter.c msgid "convolve arguments must not be empty" msgstr "" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "could not invert Vandermonde matrix" msgstr "" @@ -2773,15 +2778,15 @@ msgstr "" msgid "couldn't determine SD card version" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "cross is defined for 1D arrays of length 3" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "data must be iterable" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "data must be of equal length" msgstr "" @@ -2818,15 +2823,15 @@ msgstr "" msgid "dict update sequence has wrong length" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "diff argument must be an ndarray" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "differentiation order out of range" msgstr "" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/transform/transform.c msgid "dimensions do not match" msgstr "" @@ -2945,11 +2950,11 @@ msgstr "" msgid "filesystem must provide mount method" msgstr "" -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "first argument must be a callable" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "first argument must be a function" msgstr "" @@ -2957,11 +2962,7 @@ msgstr "" msgid "first argument must be a tuple of ndarrays" msgstr "" -#: extmod/ulab/code/ndarray.c -msgid "first argument must be an iterable" -msgstr "" - -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "first argument must be an ndarray" msgstr "" @@ -2973,7 +2974,7 @@ msgstr "" msgid "flattening order must be either 'C', or 'F'" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "flip argument must be an ndarray" msgstr "" @@ -3006,7 +3007,7 @@ msgstr "" msgid "function got multiple values for argument '%q'" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "function has the same sign at the ends of interval" msgstr "" @@ -3081,7 +3082,7 @@ msgstr "" msgid "index is out of bounds" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c extmod/ulab/code/ulab_tools.c #: ports/esp32s2/common-hal/pulseio/PulseIn.c py/obj.c #: shared-bindings/bitmaptools/__init__.c msgid "index out of range" @@ -3095,7 +3096,7 @@ msgstr "" msgid "indices must be integers, slices, or Boolean lists" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "initial values must be iterable" msgstr "" @@ -3115,7 +3116,7 @@ msgstr "" msgid "input argument must be an integer, a tuple, or a list" msgstr "" -#: extmod/ulab/code/fft/fft.c +#: extmod/ulab/code/numpy/fft/fft_tools.c msgid "input array length must be power of 2" msgstr "" @@ -3123,15 +3124,15 @@ msgstr "" msgid "input arrays are not compatible" msgstr "" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "input data must be an iterable" msgstr "" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/linalg/linalg.c msgid "input matrix is asymmetric" msgstr "" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/linalg/linalg.c msgid "input matrix is singular" msgstr "" @@ -3147,23 +3148,23 @@ msgstr "" msgid "input must be an ndarray" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "input must be one-dimensional" msgstr "" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/ulab_tools.c msgid "input must be square matrix" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "input must be tuple, list, range, or ndarray" msgstr "" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "input vectors must be of equal length" msgstr "" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "inputs are not iterable" msgstr "" @@ -3175,7 +3176,7 @@ msgstr "" msgid "integer required" msgstr "정수가 필요합니다" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/numpy/approx/approx.c msgid "interp is defined for 1D arrays of equal length" msgstr "" @@ -3197,6 +3198,10 @@ msgstr "" msgid "invalid cert" msgstr "cert가 유효하지 않습니다" +#: py/compile.c +msgid "invalid decorator" +msgstr "" + #: extmod/uos_dupterm.c msgid "invalid dupterm index" msgstr "Dupterm index가 유효하지 않습니다" @@ -3264,11 +3269,7 @@ msgstr "" msgid "issubclass() arg 2 must be a class or a tuple of classes" msgstr "" -#: extmod/ulab/code/ndarray.c -msgid "iterables are not of the same length" -msgstr "" - -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/linalg/linalg.c msgid "iterations did not converge" msgstr "" @@ -3336,7 +3337,7 @@ msgstr "" msgid "math domain error" msgstr "" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/linalg/linalg.c msgid "matrix is not positive definite" msgstr "" @@ -3358,15 +3359,15 @@ msgstr "" msgid "maximum recursion depth exceeded" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "maxiter must be > 0" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "maxiter should be > 0" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "median argument must be an ndarray" msgstr "" @@ -3387,7 +3388,7 @@ msgstr "" msgid "module not found" msgstr "" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "more degrees of freedom than data points" msgstr "" @@ -3505,10 +3506,6 @@ msgstr "" msgid "non-zero timeout must be >= interval" msgstr "" -#: extmod/ulab/code/linalg/linalg.c -msgid "norm is defined for 1D and 2D arrays" -msgstr "" - #: shared-bindings/_bleio/UUID.c msgid "not a 128-bit UUID" msgstr "" @@ -3577,7 +3574,7 @@ msgstr "" msgid "odd-length string" msgstr "" -#: extmod/ulab/code/ulab_create.c +#: extmod/ulab/code/ulab_create.c extmod/ulab/code/utils/utils.c msgid "offset is too large" msgstr "" @@ -3606,8 +3603,8 @@ msgstr "" msgid "only slices with step=1 (aka None) are supported" msgstr "" -#: extmod/ulab/code/compare/compare.c extmod/ulab/code/ndarray.c -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/ndarray.c extmod/ulab/code/numpy/compare/compare.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "operands could not be broadcast together" msgstr "" @@ -3615,7 +3612,7 @@ msgstr "" msgid "operation is implemented for 1D Boolean arrays only" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "operation is not implemented on ndarrays" msgstr "" @@ -3632,6 +3629,14 @@ msgstr "" msgid "ord() expected a character, but string of length %d found" msgstr "" +#: extmod/ulab/code/utils/utils.c +msgid "out array is too small" +msgstr "" + +#: extmod/ulab/code/utils/utils.c +msgid "out must be a float dense array" +msgstr "" + #: shared-bindings/displayio/Bitmap.c msgid "out of range of source" msgstr "" @@ -3760,7 +3765,7 @@ msgstr "" msgid "raw f-strings are not implemented" msgstr "" -#: extmod/ulab/code/fft/fft.c +#: extmod/ulab/code/numpy/fft/fft_tools.c msgid "real and imaginary parts must be of equal length" msgstr "" @@ -3795,7 +3800,7 @@ msgstr "" msgid "rgb_pins[%d] is not on the same port as clock" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "roll argument must be an ndarray" msgstr "" @@ -3842,7 +3847,7 @@ msgstr "" msgid "single '}' encountered in format string" msgstr "" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/ulab_tools.c msgid "size is defined for ndarrays only" msgstr "" @@ -3866,19 +3871,19 @@ msgstr "" msgid "soft reboot\n" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "sort argument must be an ndarray" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "sos array must be of shape (n_section, 6)" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "sos[:, 3] should be all ones" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "sosfilt requires iterable arguments" msgstr "" @@ -3992,7 +3997,7 @@ msgstr "" msgid "too many arguments provided with the given format" msgstr "" -#: extmod/ulab/code/ulab_create.c +#: extmod/ulab/code/ndarray.c extmod/ulab/code/ulab_create.c msgid "too many dimensions" msgstr "" @@ -4005,11 +4010,11 @@ msgstr "" msgid "too many values to unpack (expected %d)" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/numpy/approx/approx.c msgid "trapz is defined for 1D arrays" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/numpy/approx/approx.c msgid "trapz is defined for 1D arrays of equal length" msgstr "" @@ -4180,7 +4185,7 @@ msgstr "" msgid "window must be <= interval" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "wrong axis index" msgstr "" @@ -4188,7 +4193,8 @@ msgstr "" msgid "wrong axis specified" msgstr "" -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/numpy/compare/compare.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "wrong input type" msgstr "" @@ -4204,7 +4210,7 @@ msgstr "" msgid "wrong operand type" msgstr "" -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "wrong output type" msgstr "" @@ -4228,15 +4234,15 @@ msgstr "" msgid "zero step" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "zi must be an ndarray" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "zi must be of float type" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "zi must be of shape (n_section, 2)" msgstr "" diff --git a/locale/nl.po b/locale/nl.po index 4eca409ee4..23b1eefe52 100644 --- a/locale/nl.po +++ b/locale/nl.po @@ -414,6 +414,10 @@ msgstr "AnalogOut is slechts 16 bits. Waarde moet minder dan 65536 zijn." msgid "AnalogOut not supported on given pin" msgstr "AnalogOut niet ondersteund door gegeven pin" +#: ports/stm/common-hal/audiopwmio/PWMAudioOut.c +msgid "Another PWMAudioOut is already active" +msgstr "" + #: ports/atmel-samd/common-hal/pulseio/PulseOut.c #: ports/cxd56/common-hal/pulseio/PulseOut.c msgid "Another send is already active" @@ -437,8 +441,8 @@ msgid "Attempt to allocate %d blocks" msgstr "Poging om %d blokken toe te wijzen" #: supervisor/shared/safe_mode.c -msgid "Attempted heap allocation when MicroPython VM not running." -msgstr "heap allocatie geprobeerd terwijl MicroPython VM niet draait." +msgid "Attempted heap allocation when VM not running." +msgstr "" #: shared-bindings/wifi/Radio.c msgid "Authentication failure" @@ -530,6 +534,7 @@ msgid "Buffer is too small" msgstr "Buffer is te klein" #: ports/nrf/common-hal/audiopwmio/PWMAudioOut.c +#: ports/stm/common-hal/audiopwmio/PWMAudioOut.c #, c-format msgid "Buffer length %d too big. It must be less than %d" msgstr "Buffer lengte %d te groot. Het moet kleiner zijn dan %d" @@ -940,11 +945,11 @@ msgstr "Verwachtte een tuple met lengte %d, maar kreeg %d" msgid "Extended advertisements with scan response not supported." msgstr "Extended advertisements met scan antwoord niet ondersteund." -#: extmod/ulab/code/fft/fft.c +#: extmod/ulab/code/numpy/fft/fft_tools.c msgid "FFT is defined for ndarrays only" msgstr "FFT alleen voor ndarrays gedefineerd" -#: extmod/ulab/code/fft/fft.c +#: extmod/ulab/code/numpy/fft/fft_tools.c msgid "FFT is implemented for linear arrays only" msgstr "FFT is alleen geïmplementeerd voor lineaire arrays" @@ -985,6 +990,10 @@ msgstr "Kon WiFi geheugen niet toewijzen" msgid "Failed to allocate wifi scan memory" msgstr "Kon WiFi scan geheugen niet toewijzen" +#: ports/stm/common-hal/audiopwmio/PWMAudioOut.c +msgid "Failed to buffer the sample" +msgstr "" + #: ports/nrf/common-hal/_bleio/Adapter.c msgid "Failed to connect: internal error" msgstr "Verbinding mislukt: interne fout" @@ -1010,6 +1019,10 @@ msgstr "Mislukt mutex los te laten, err 0x%04x" msgid "Failed to write internal flash." msgstr "Schrijven naar interne flash mislukt." +#: supervisor/shared/safe_mode.c +msgid "Fatal error." +msgstr "" + #: py/moduerrno.c msgid "File exists" msgstr "Bestand bestaat" @@ -1185,6 +1198,7 @@ msgstr "Ongeldige %q" #: ports/atmel-samd/common-hal/audiobusio/I2SOut.c #: ports/atmel-samd/common-hal/audiobusio/PDMIn.c +#: ports/mimxrt10xx/common-hal/busio/UART.c msgid "Invalid %q pin" msgstr "Ongeldige %q pin" @@ -1212,7 +1226,9 @@ msgid "Invalid DAC pin supplied" msgstr "Ongeldige DAC pin opgegeven" #: ports/atmel-samd/common-hal/pwmio/PWMOut.c -#: ports/cxd56/common-hal/pwmio/PWMOut.c ports/nrf/common-hal/pwmio/PWMOut.c +#: ports/cxd56/common-hal/pwmio/PWMOut.c +#: ports/mimxrt10xx/common-hal/pwmio/PWMOut.c +#: ports/nrf/common-hal/pwmio/PWMOut.c #: ports/raspberrypi/common-hal/pwmio/PWMOut.c shared-bindings/pwmio/PWMOut.c msgid "Invalid PWM frequency" msgstr "Ongeldige PWM frequentie" @@ -1400,14 +1416,6 @@ msgstr "Maximale x waarde indien gespiegeld is %d" msgid "Messages limited to 8 bytes" msgstr "Berichten zijn beperkt tot 8 bytes" -#: supervisor/shared/safe_mode.c -msgid "MicroPython NLR jump failed. Likely memory corruption." -msgstr "MicroPython NLR sprong mislukt. Waarschijnlijk geheugen corruptie." - -#: supervisor/shared/safe_mode.c -msgid "MicroPython fatal error." -msgstr "MicroPython fatale fout." - #: shared-bindings/audiobusio/PDMIn.c msgid "Microphone startup delay must be in range 0.0 to 1.0" msgstr "Microfoon opstart vertraging moet in bereik van 0.0 tot 1.0 zijn" @@ -1459,6 +1467,10 @@ msgstr "MISO of MOSI moeten worden gegeven" msgid "Must use a multiple of 6 rgb pins, not %d" msgstr "Een meervoud van 6 rgb pinnen moet worden gebruikt, niet %d" +#: supervisor/shared/safe_mode.c +msgid "NLR jump failed. Likely memory corruption." +msgstr "" + #: ports/esp32s2/common-hal/nvm/ByteArray.c msgid "NVS Error" msgstr "NVS-fout" @@ -1592,8 +1604,12 @@ msgid "No timer available" msgstr "Geen timer beschikbaar" #: supervisor/shared/safe_mode.c -msgid "Nordic Soft Device failure assertion." -msgstr "Nordic Soft Device assertion mislukt." +msgid "Nordic system firmware failure assertion." +msgstr "" + +#: ports/nrf/common-hal/_bleio/__init__.c +msgid "Nordic system firmware out of memory" +msgstr "" #: shared-bindings/ipaddress/IPv4Address.c shared-bindings/ipaddress/__init__.c msgid "Not a valid IP string" @@ -1909,7 +1925,7 @@ msgstr "Alleen-lezen" msgid "Read-only filesystem" msgstr "Alleen-lezen bestandssysteem" -#: shared-module/bitmaptools/__init__.c shared-module/displayio/Bitmap.c +#: shared-module/displayio/Bitmap.c msgid "Read-only object" msgstr "Alleen-lezen object" @@ -1984,14 +2000,6 @@ msgstr "Sample rate is te hoog. Moet minder dan %d zijn" msgid "Scan already in progess. Stop with stop_scan." msgstr "Scan wordt al uitvoerd. Stop met stop_scan." -#: ports/mimxrt10xx/common-hal/busio/UART.c -msgid "Selected CTS pin not valid" -msgstr "Geselecteerde CTS pin niet geldig" - -#: ports/mimxrt10xx/common-hal/busio/UART.c -msgid "Selected RTS pin not valid" -msgstr "Geselecteerde RTS pin niet geldig" - #: ports/atmel-samd/common-hal/audiobusio/I2SOut.c #: ports/atmel-samd/common-hal/audiobusio/PDMIn.c msgid "Serializer in use" @@ -2276,8 +2284,8 @@ msgstr "Onbekende veiligheidsfout: 0x%04x" #: ports/nrf/common-hal/_bleio/__init__.c #, c-format -msgid "Unknown soft device error: %04x" -msgstr "Onbekende soft device fout: %04x" +msgid "Unknown system firmware error: %04x" +msgstr "" #: shared-bindings/_pixelbuf/PixelBuf.c #, c-format @@ -2441,11 +2449,11 @@ msgstr "adressen zijn leeg" msgid "arg is an empty sequence" msgstr "arg is een lege sequentie" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "argsort argument must be an ndarray" msgstr "argsort argument moet een ndarray zijn" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "argsort is not implemented for flattened arrays" msgstr "argsort wordt niet geïmplementeerd voor vlakke arrays" @@ -2453,10 +2461,6 @@ msgstr "argsort wordt niet geïmplementeerd voor vlakke arrays" msgid "argument has wrong type" msgstr "argument heeft onjuist type" -#: extmod/ulab/code/linalg/linalg.c -msgid "argument must be ndarray" -msgstr "argument moet ndarray zijn" - #: py/argcheck.c shared-bindings/_stage/__init__.c #: shared-bindings/digitalio/DigitalInOut.c shared-bindings/gamepad/GamePad.c msgid "argument num/types mismatch" @@ -2466,7 +2470,8 @@ msgstr "argument num/typen komen niet overeen" msgid "argument should be a '%q' not a '%q'" msgstr "argument moet een '%q' zijn en niet een '%q'" -#: extmod/ulab/code/linalg/linalg.c extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c +#: extmod/ulab/code/numpy/transform/transform.c msgid "arguments must be ndarrays" msgstr "argumenten moeten ndarrays zijn" @@ -2479,11 +2484,11 @@ msgstr "array en indexlengte moeten gelijk zijn" msgid "array/bytes required on right side" msgstr "array/bytes vereist aan de rechterkant" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "attempt to get (arg)min/(arg)max of empty sequence" msgstr "verzoek om (arg)min.(arg)max te krijgen van lege reeks" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "attempt to get argmin/argmax of an empty sequence" msgstr "poging om argmin/argmax van een lege sequentie te krijgen" @@ -2491,15 +2496,15 @@ msgstr "poging om argmin/argmax van een lege sequentie te krijgen" msgid "attributes not supported yet" msgstr "attributen nog niet ondersteund" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "axis is out of bounds" msgstr "as is buiten bereik" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c extmod/ulab/code/ulab_tools.c msgid "axis must be None, or an integer" msgstr "as moet None of een integer zijn" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "axis too long" msgstr "as te lang" @@ -2535,7 +2540,7 @@ msgstr "bits_per_sample moet 8 of 16 zijn" msgid "branch not in range" msgstr "pad (branch) niet binnen bereik" -#: extmod/ulab/code/ulab_create.c +#: extmod/ulab/code/ulab_create.c extmod/ulab/code/utils/utils.c msgid "buffer is smaller than requested size" msgstr "" @@ -2543,7 +2548,7 @@ msgstr "" msgid "buffer must be a bytes-like object" msgstr "buffer moet een byte-achtig object zijn" -#: extmod/ulab/code/ulab_create.c +#: extmod/ulab/code/ulab_create.c extmod/ulab/code/utils/utils.c msgid "buffer size must be a multiple of element size" msgstr "" @@ -2802,19 +2807,19 @@ msgstr "constant moet een integer zijn" msgid "conversion to object" msgstr "conversie naar object" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/numpy/filter/filter.c msgid "convolve arguments must be linear arrays" msgstr "convolutie argumenten moeten lineaire arrays zijn" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/numpy/filter/filter.c msgid "convolve arguments must be ndarrays" msgstr "convolutie argumenten moeten ndarrays zijn" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/numpy/filter/filter.c msgid "convolve arguments must not be empty" msgstr "convolutie argumenten mogen niet leeg zijn" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "could not invert Vandermonde matrix" msgstr "kon de Vandermonde matrix niet omkeren" @@ -2822,15 +2827,15 @@ msgstr "kon de Vandermonde matrix niet omkeren" msgid "couldn't determine SD card version" msgstr "kon SD kaart versie niet bepalen" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "cross is defined for 1D arrays of length 3" msgstr "kruis wordt gedefinieerd voor 1D-arrays van lengte 3" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "data must be iterable" msgstr "data moet itereerbaar zijn" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "data must be of equal length" msgstr "data moet van gelijke lengte zijn" @@ -2869,15 +2874,15 @@ msgstr "destination_lengte moest een int groter dan of gelijk zijn aan 0 zijn" msgid "dict update sequence has wrong length" msgstr "dict update sequence heeft de verkeerde lengte" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "diff argument must be an ndarray" msgstr "diff argument moet een ndarray zijn" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "differentiation order out of range" msgstr "differentiatievolgorde buiten bereik" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/transform/transform.c msgid "dimensions do not match" msgstr "" @@ -2996,11 +3001,11 @@ msgstr "bestand moet een bestand zijn geopend in byte modus" msgid "filesystem must provide mount method" msgstr "bestandssysteem moet een mount methode bieden" -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "first argument must be a callable" msgstr "eerste argument moet een aanroepbare (callable) zijn" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "first argument must be a function" msgstr "eerste argument moet een functie zijn" @@ -3008,11 +3013,7 @@ msgstr "eerste argument moet een functie zijn" msgid "first argument must be a tuple of ndarrays" msgstr "eerste argument moet een tupel van ndarrays zijn" -#: extmod/ulab/code/ndarray.c -msgid "first argument must be an iterable" -msgstr "eerst argument moet een iterabel zijn" - -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "first argument must be an ndarray" msgstr "eerst argument moet een ndarray zijn" @@ -3024,7 +3025,7 @@ msgstr "eerste argument voor super() moet een type zijn" msgid "flattening order must be either 'C', or 'F'" msgstr "De afvlakkingsvolgorde moet ofwel \"C\", ofwel \"F\" zijn" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "flip argument must be an ndarray" msgstr "flip argumenten moeten een ndarray zijn" @@ -3057,7 +3058,7 @@ msgstr "functie verwachtte op zijn meest %d argumenten, maar kreeg %d" msgid "function got multiple values for argument '%q'" msgstr "functie kreeg meedere waarden voor argument '%q'" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "function has the same sign at the ends of interval" msgstr "functie heeft hetzelfde teken aan beide uiteinden van het interval" @@ -3133,7 +3134,7 @@ msgstr "vulling (padding) is onjuist" msgid "index is out of bounds" msgstr "index is buiten bereik" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c extmod/ulab/code/ulab_tools.c #: ports/esp32s2/common-hal/pulseio/PulseIn.c py/obj.c #: shared-bindings/bitmaptools/__init__.c msgid "index out of range" @@ -3147,7 +3148,7 @@ msgstr "indices moeten integers zijn" msgid "indices must be integers, slices, or Boolean lists" msgstr "indices moeten integers, segmenten (slices) of Boolean lijsten zijn" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "initial values must be iterable" msgstr "oorspronkelijke waarden moeten itereerbaar zijn" @@ -3167,7 +3168,7 @@ msgstr "in- en uitvoervormen zijn niet compatibel" msgid "input argument must be an integer, a tuple, or a list" msgstr "" -#: extmod/ulab/code/fft/fft.c +#: extmod/ulab/code/numpy/fft/fft_tools.c msgid "input array length must be power of 2" msgstr "invoer array lengte moet een macht van 2 zijn" @@ -3175,15 +3176,15 @@ msgstr "invoer array lengte moet een macht van 2 zijn" msgid "input arrays are not compatible" msgstr "input arrays zijn niet compatibel" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "input data must be an iterable" msgstr "invoerdata moet itereerbaar zijn" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/linalg/linalg.c msgid "input matrix is asymmetric" msgstr "invoermatrix is asymmetrisch" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/linalg/linalg.c msgid "input matrix is singular" msgstr "invoermatrix is singulier" @@ -3199,23 +3200,23 @@ msgstr "invoer moet een tensor van rang 2 zijn" msgid "input must be an ndarray" msgstr "invoer moet een ndarray zijn" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "input must be one-dimensional" msgstr "invoer moet eendimensionaal zijn" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/ulab_tools.c msgid "input must be square matrix" msgstr "invoer moet een vierkante matrix zijn" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "input must be tuple, list, range, or ndarray" msgstr "invoer moet een tuple, lijst, bereik of ndarray zijn" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "input vectors must be of equal length" msgstr "invoervectors moeten van gelijke lengte zijn" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "inputs are not iterable" msgstr "invoer is niet itereerbaar" @@ -3227,7 +3228,7 @@ msgstr "int() argument 2 moet >=2 en <= 36 zijn" msgid "integer required" msgstr "integer vereist" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/numpy/approx/approx.c msgid "interp is defined for 1D arrays of equal length" msgstr "interp is gedefinieerd voor eendimensionale arrays van gelijke lengte" @@ -3249,6 +3250,10 @@ msgstr "" msgid "invalid cert" msgstr "ongeldig certificaat" +#: py/compile.c +msgid "invalid decorator" +msgstr "" + #: extmod/uos_dupterm.c msgid "invalid dupterm index" msgstr "ongeldige dupterm index" @@ -3316,11 +3321,7 @@ msgstr "issubclass() argument 1 moet een klasse zijn" msgid "issubclass() arg 2 must be a class or a tuple of classes" msgstr "issubclass() argument 2 moet een klasse of tuple van klassen zijn" -#: extmod/ulab/code/ndarray.c -msgid "iterables are not of the same length" -msgstr "itereerbare objecten hebben niet dezelfde lengte" - -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/linalg/linalg.c msgid "iterations did not converge" msgstr "itereerbare objecten convergeren niet" @@ -3391,7 +3392,7 @@ msgstr "map buffer te klein" msgid "math domain error" msgstr "fout in het wiskundig domein (math domain error)" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/linalg/linalg.c msgid "matrix is not positive definite" msgstr "matrix is niet positief-definiet" @@ -3413,15 +3414,15 @@ msgstr "maximaal aantal dimensies is 4" msgid "maximum recursion depth exceeded" msgstr "maximale recursiediepte overschreden" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "maxiter must be > 0" msgstr "maxiter moet groter dan 0 zijn" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "maxiter should be > 0" msgstr "maxiter moet groter dan 0 zijn" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "median argument must be an ndarray" msgstr "" @@ -3442,7 +3443,7 @@ msgstr "" msgid "module not found" msgstr "module niet gevonden" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "more degrees of freedom than data points" msgstr "meer vrijheidsgraden dan datapunten" @@ -3560,10 +3561,6 @@ msgstr "" msgid "non-zero timeout must be >= interval" msgstr "" -#: extmod/ulab/code/linalg/linalg.c -msgid "norm is defined for 1D and 2D arrays" -msgstr "norm is gedefinieerd voor 1D en 2D arrays" - #: shared-bindings/_bleio/UUID.c msgid "not a 128-bit UUID" msgstr "geen 128-bit UUID" @@ -3632,7 +3629,7 @@ msgstr "object met buffer protocol vereist" msgid "odd-length string" msgstr "string met oneven lengte" -#: extmod/ulab/code/ulab_create.c +#: extmod/ulab/code/ulab_create.c extmod/ulab/code/utils/utils.c msgid "offset is too large" msgstr "compensatie is te groot" @@ -3661,8 +3658,8 @@ msgstr "alleen sample_rate=16000 wordt ondersteund" msgid "only slices with step=1 (aka None) are supported" msgstr "alleen segmenten met step=1 (ook wel None) worden ondersteund" -#: extmod/ulab/code/compare/compare.c extmod/ulab/code/ndarray.c -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/ndarray.c extmod/ulab/code/numpy/compare/compare.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "operands could not be broadcast together" msgstr "operands konden niet samen verzonden worden" @@ -3670,7 +3667,7 @@ msgstr "operands konden niet samen verzonden worden" msgid "operation is implemented for 1D Boolean arrays only" msgstr "operatie is alleen geïmplementeerd voor 1D Booleaanse arrays" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "operation is not implemented on ndarrays" msgstr "bewerking is voor ndarrays niet geïmplementeerd" @@ -3687,6 +3684,14 @@ msgstr "ord verwacht een teken (char)" msgid "ord() expected a character, but string of length %d found" msgstr "ord() verwacht een teken (char) maar vond een string van lengte %d" +#: extmod/ulab/code/utils/utils.c +msgid "out array is too small" +msgstr "" + +#: extmod/ulab/code/utils/utils.c +msgid "out must be a float dense array" +msgstr "" + #: shared-bindings/displayio/Bitmap.c msgid "out of range of source" msgstr "buiten bereik van bron" @@ -3816,7 +3821,7 @@ msgstr "wachtrij overloop" msgid "raw f-strings are not implemented" msgstr "ruwe f-strings zijn niet geïmplementeerd" -#: extmod/ulab/code/fft/fft.c +#: extmod/ulab/code/numpy/fft/fft_tools.c msgid "real and imaginary parts must be of equal length" msgstr "reëel en imaginair deel moeten gelijke lengte hebben" @@ -3851,7 +3856,7 @@ msgstr "rgb_pins[%d] is hetzelfde als een andere pintoewijzing" msgid "rgb_pins[%d] is not on the same port as clock" msgstr "rgb_pins[%d] bevindt zich niet op dezelfde poort als klok" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "roll argument must be an ndarray" msgstr "roll argument moet een ndarray zijn" @@ -3900,7 +3905,7 @@ msgstr "teken niet toegestaan bij integer formaatspecificatie 'c'" msgid "single '}' encountered in format string" msgstr "enkele '}' aangetroffen in formaat tekenreeks (string)" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/ulab_tools.c msgid "size is defined for ndarrays only" msgstr "omvang is alleen voor ndarrays gedefinieerd" @@ -3924,19 +3929,19 @@ msgstr "small int overloop" msgid "soft reboot\n" msgstr "zachte herstart\n" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "sort argument must be an ndarray" msgstr "sorteerargument moet een ndarray zijn" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "sos array must be of shape (n_section, 6)" msgstr "sos array moet vorm (n_section, 6) hebben" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "sos[:, 3] should be all ones" msgstr "sos[:, 3] moeten allemaal 1 zijn" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "sosfilt requires iterable arguments" msgstr "sosfilt vereist itereerbare argumenten" @@ -4050,7 +4055,7 @@ msgstr "tobytes kunnen alleen ingeroepen worden voor gesloten arrays" msgid "too many arguments provided with the given format" msgstr "te veel argumenten opgegeven bij dit formaat" -#: extmod/ulab/code/ulab_create.c +#: extmod/ulab/code/ndarray.c extmod/ulab/code/ulab_create.c msgid "too many dimensions" msgstr "" @@ -4063,11 +4068,11 @@ msgstr "te veel indices" msgid "too many values to unpack (expected %d)" msgstr "te veel waarden om uit te pakken (%d verwacht)" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/numpy/approx/approx.c msgid "trapz is defined for 1D arrays" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/numpy/approx/approx.c msgid "trapz is defined for 1D arrays of equal length" msgstr "trapz is gedefinieerd voor eendimensionale arrays van gelijke lengte" @@ -4238,7 +4243,7 @@ msgstr "" msgid "window must be <= interval" msgstr "window moet <= interval zijn" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "wrong axis index" msgstr "foute index voor as" @@ -4246,7 +4251,8 @@ msgstr "foute index voor as" msgid "wrong axis specified" msgstr "onjuiste as gespecificeerd" -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/numpy/compare/compare.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "wrong input type" msgstr "onjuist invoertype" @@ -4262,7 +4268,7 @@ msgstr "verkeerd aantal waarden om uit te pakken" msgid "wrong operand type" msgstr "verkeerd operandtype" -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "wrong output type" msgstr "onjuist uitvoer type" @@ -4286,18 +4292,57 @@ msgstr "y-waarde buiten bereik" msgid "zero step" msgstr "nul-stap" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "zi must be an ndarray" msgstr "zi moet een ndarray zijn" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "zi must be of float type" msgstr "zi moet van type float zijn" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "zi must be of shape (n_section, 2)" msgstr "zi moet vorm (n_section, 2) hebben" +#~ msgid "Attempted heap allocation when MicroPython VM not running." +#~ msgstr "heap allocatie geprobeerd terwijl MicroPython VM niet draait." + +#~ msgid "MicroPython NLR jump failed. Likely memory corruption." +#~ msgstr "MicroPython NLR sprong mislukt. Waarschijnlijk geheugen corruptie." + +#~ msgid "MicroPython fatal error." +#~ msgstr "MicroPython fatale fout." + +#~ msgid "argument must be ndarray" +#~ msgstr "argument moet ndarray zijn" + +#~ msgid "matrix dimensions do not match" +#~ msgstr "matrix afmetingen komen niet overeen" + +#~ msgid "norm is defined for 1D and 2D arrays" +#~ msgstr "norm is gedefinieerd voor 1D en 2D arrays" + +#~ msgid "vectors must have same lengths" +#~ msgstr "vectoren moeten van gelijke lengte zijn" + +#~ msgid "Nordic Soft Device failure assertion." +#~ msgstr "Nordic Soft Device assertion mislukt." + +#~ msgid "Unknown soft device error: %04x" +#~ msgstr "Onbekende soft device fout: %04x" + +#~ msgid "first argument must be an iterable" +#~ msgstr "eerst argument moet een iterabel zijn" + +#~ msgid "iterables are not of the same length" +#~ msgstr "itereerbare objecten hebben niet dezelfde lengte" + +#~ msgid "Selected CTS pin not valid" +#~ msgstr "Geselecteerde CTS pin niet geldig" + +#~ msgid "Selected RTS pin not valid" +#~ msgstr "Geselecteerde RTS pin niet geldig" + #~ msgid "Could not initialize channel" #~ msgstr "Kan kanaal niet initialiseren" @@ -4326,12 +4371,6 @@ msgstr "zi moet vorm (n_section, 2) hebben" #~ "Timer is gereserveerd voor intern gebruik - wijs PWM pins eerder in het " #~ "programma toe" -#~ msgid "matrix dimensions do not match" -#~ msgstr "matrix afmetingen komen niet overeen" - -#~ msgid "vectors must have same lengths" -#~ msgstr "vectoren moeten van gelijke lengte zijn" - #~ msgid "Group full" #~ msgstr "Groep is vol" diff --git a/locale/pl.po b/locale/pl.po index 73b167ebfc..bcdc056fdf 100644 --- a/locale/pl.po +++ b/locale/pl.po @@ -416,6 +416,10 @@ msgstr "AnalogOut ma 16 bitów. Wartość musi być mniejsza od 65536." msgid "AnalogOut not supported on given pin" msgstr "AnalogOut niewspierany na tej nóżce" +#: ports/stm/common-hal/audiopwmio/PWMAudioOut.c +msgid "Another PWMAudioOut is already active" +msgstr "" + #: ports/atmel-samd/common-hal/pulseio/PulseOut.c #: ports/cxd56/common-hal/pulseio/PulseOut.c msgid "Another send is already active" @@ -439,8 +443,8 @@ msgid "Attempt to allocate %d blocks" msgstr "Próba przydzielenia %d bloków" #: supervisor/shared/safe_mode.c -msgid "Attempted heap allocation when MicroPython VM not running." -msgstr "Próba przydziału sterty, gdy MicroPython VM nie działa." +msgid "Attempted heap allocation when VM not running." +msgstr "" #: shared-bindings/wifi/Radio.c msgid "Authentication failure" @@ -532,6 +536,7 @@ msgid "Buffer is too small" msgstr "Bufor jest za mały" #: ports/nrf/common-hal/audiopwmio/PWMAudioOut.c +#: ports/stm/common-hal/audiopwmio/PWMAudioOut.c #, c-format msgid "Buffer length %d too big. It must be less than %d" msgstr "Długość %d bufora jest za duża. Musi być mniejsza niż %d" @@ -940,11 +945,11 @@ msgstr "Oczekiwano krotkę długości %d, otrzymano %d" msgid "Extended advertisements with scan response not supported." msgstr "" -#: extmod/ulab/code/fft/fft.c +#: extmod/ulab/code/numpy/fft/fft_tools.c msgid "FFT is defined for ndarrays only" msgstr "" -#: extmod/ulab/code/fft/fft.c +#: extmod/ulab/code/numpy/fft/fft_tools.c msgid "FFT is implemented for linear arrays only" msgstr "" @@ -985,6 +990,10 @@ msgstr "" msgid "Failed to allocate wifi scan memory" msgstr "" +#: ports/stm/common-hal/audiopwmio/PWMAudioOut.c +msgid "Failed to buffer the sample" +msgstr "" + #: ports/nrf/common-hal/_bleio/Adapter.c msgid "Failed to connect: internal error" msgstr "Nie udało się połączyć: błąd wewnętrzny" @@ -1010,6 +1019,10 @@ msgstr "Nie udało się zwolnić blokady, błąd 0x%04x" msgid "Failed to write internal flash." msgstr "Nie udało się zapisać wewnętrznej pamięci flash." +#: supervisor/shared/safe_mode.c +msgid "Fatal error." +msgstr "" + #: py/moduerrno.c msgid "File exists" msgstr "Plik istnieje" @@ -1184,6 +1197,7 @@ msgstr "Nieprawidłowe %q" #: ports/atmel-samd/common-hal/audiobusio/I2SOut.c #: ports/atmel-samd/common-hal/audiobusio/PDMIn.c +#: ports/mimxrt10xx/common-hal/busio/UART.c msgid "Invalid %q pin" msgstr "Zła nóżka %q" @@ -1211,7 +1225,9 @@ msgid "Invalid DAC pin supplied" msgstr "" #: ports/atmel-samd/common-hal/pwmio/PWMOut.c -#: ports/cxd56/common-hal/pwmio/PWMOut.c ports/nrf/common-hal/pwmio/PWMOut.c +#: ports/cxd56/common-hal/pwmio/PWMOut.c +#: ports/mimxrt10xx/common-hal/pwmio/PWMOut.c +#: ports/nrf/common-hal/pwmio/PWMOut.c #: ports/raspberrypi/common-hal/pwmio/PWMOut.c shared-bindings/pwmio/PWMOut.c msgid "Invalid PWM frequency" msgstr "Zła częstotliwość PWM" @@ -1399,15 +1415,6 @@ msgstr "Największa wartość x przy odwróceniu to %d" msgid "Messages limited to 8 bytes" msgstr "Wiadomości ograniczone do 8 bajtów" -#: supervisor/shared/safe_mode.c -msgid "MicroPython NLR jump failed. Likely memory corruption." -msgstr "" -"Skok MicroRython NLR nie powiódł się. Prawdopodobne uszkodzenie pamięci." - -#: supervisor/shared/safe_mode.c -msgid "MicroPython fatal error." -msgstr "Błąd krytyczny MicroPython." - #: shared-bindings/audiobusio/PDMIn.c msgid "Microphone startup delay must be in range 0.0 to 1.0" msgstr "Opóźnienie włączenia mikrofonu musi być w zakresie od 0.0 do 1.0" @@ -1459,6 +1466,10 @@ msgstr "Należy podać pin MISO lub MOSI" msgid "Must use a multiple of 6 rgb pins, not %d" msgstr "" +#: supervisor/shared/safe_mode.c +msgid "NLR jump failed. Likely memory corruption." +msgstr "" + #: ports/esp32s2/common-hal/nvm/ByteArray.c msgid "NVS Error" msgstr "" @@ -1592,7 +1603,11 @@ msgid "No timer available" msgstr "Brak dostępnego timera" #: supervisor/shared/safe_mode.c -msgid "Nordic Soft Device failure assertion." +msgid "Nordic system firmware failure assertion." +msgstr "" + +#: ports/nrf/common-hal/_bleio/__init__.c +msgid "Nordic system firmware out of memory" msgstr "" #: shared-bindings/ipaddress/IPv4Address.c shared-bindings/ipaddress/__init__.c @@ -1891,7 +1906,7 @@ msgstr "Tylko do odczytu" msgid "Read-only filesystem" msgstr "System plików tylko do odczytu" -#: shared-module/bitmaptools/__init__.c shared-module/displayio/Bitmap.c +#: shared-module/displayio/Bitmap.c msgid "Read-only object" msgstr "Obiekt tylko do odczytu" @@ -1966,14 +1981,6 @@ msgstr "Zbyt wysoka częstotliwość próbkowania. Musi być mniejsza niż %d" msgid "Scan already in progess. Stop with stop_scan." msgstr "Skanuj już w toku. Zatrzymaj za pomocą stop_scan." -#: ports/mimxrt10xx/common-hal/busio/UART.c -msgid "Selected CTS pin not valid" -msgstr "Wybrany pin CTS jest nieprawidłowy" - -#: ports/mimxrt10xx/common-hal/busio/UART.c -msgid "Selected RTS pin not valid" -msgstr "Wybrany pin RTS jest nieprawidłowy" - #: ports/atmel-samd/common-hal/audiobusio/I2SOut.c #: ports/atmel-samd/common-hal/audiobusio/PDMIn.c msgid "Serializer in use" @@ -2250,7 +2257,7 @@ msgstr "" #: ports/nrf/common-hal/_bleio/__init__.c #, c-format -msgid "Unknown soft device error: %04x" +msgid "Unknown system firmware error: %04x" msgstr "" #: shared-bindings/_pixelbuf/PixelBuf.c @@ -2410,11 +2417,11 @@ msgstr "adres jest pusty" msgid "arg is an empty sequence" msgstr "arg jest puste" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "argsort argument must be an ndarray" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "argsort is not implemented for flattened arrays" msgstr "" @@ -2422,10 +2429,6 @@ msgstr "" msgid "argument has wrong type" msgstr "argument ma zły typ" -#: extmod/ulab/code/linalg/linalg.c -msgid "argument must be ndarray" -msgstr "" - #: py/argcheck.c shared-bindings/_stage/__init__.c #: shared-bindings/digitalio/DigitalInOut.c shared-bindings/gamepad/GamePad.c msgid "argument num/types mismatch" @@ -2435,7 +2438,8 @@ msgstr "zła liczba lub typ argumentów" msgid "argument should be a '%q' not a '%q'" msgstr "argument powinien być '%q' a nie '%q'" -#: extmod/ulab/code/linalg/linalg.c extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c +#: extmod/ulab/code/numpy/transform/transform.c msgid "arguments must be ndarrays" msgstr "" @@ -2448,11 +2452,11 @@ msgstr "" msgid "array/bytes required on right side" msgstr "tablica/bytes wymagane po prawej stronie" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "attempt to get (arg)min/(arg)max of empty sequence" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "attempt to get argmin/argmax of an empty sequence" msgstr "" @@ -2460,15 +2464,15 @@ msgstr "" msgid "attributes not supported yet" msgstr "atrybuty nie są jeszcze obsługiwane" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "axis is out of bounds" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c extmod/ulab/code/ulab_tools.c msgid "axis must be None, or an integer" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "axis too long" msgstr "" @@ -2504,7 +2508,7 @@ msgstr "bits_per_sample musi być 8 lub 16" msgid "branch not in range" msgstr "skok poza zakres" -#: extmod/ulab/code/ulab_create.c +#: extmod/ulab/code/ulab_create.c extmod/ulab/code/utils/utils.c msgid "buffer is smaller than requested size" msgstr "" @@ -2512,7 +2516,7 @@ msgstr "" msgid "buffer must be a bytes-like object" msgstr "bufor mysi być typu bytes" -#: extmod/ulab/code/ulab_create.c +#: extmod/ulab/code/ulab_create.c extmod/ulab/code/utils/utils.c msgid "buffer size must be a multiple of element size" msgstr "" @@ -2769,19 +2773,19 @@ msgstr "stała musi być liczbą całkowitą" msgid "conversion to object" msgstr "konwersja do obiektu" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/numpy/filter/filter.c msgid "convolve arguments must be linear arrays" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/numpy/filter/filter.c msgid "convolve arguments must be ndarrays" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/numpy/filter/filter.c msgid "convolve arguments must not be empty" msgstr "" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "could not invert Vandermonde matrix" msgstr "" @@ -2789,15 +2793,15 @@ msgstr "" msgid "couldn't determine SD card version" msgstr "nie można określić wersji karty SD" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "cross is defined for 1D arrays of length 3" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "data must be iterable" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "data must be of equal length" msgstr "" @@ -2835,15 +2839,15 @@ msgstr "destination_length musi być nieujemną liczbą całkowitą" msgid "dict update sequence has wrong length" msgstr "sekwencja ma złą długość" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "diff argument must be an ndarray" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "differentiation order out of range" msgstr "" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/transform/transform.c msgid "dimensions do not match" msgstr "" @@ -2962,11 +2966,11 @@ msgstr "file musi być otwarte w trybie bajtowym" msgid "filesystem must provide mount method" msgstr "system plików musi mieć metodę mount" -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "first argument must be a callable" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "first argument must be a function" msgstr "pierwszy argument musi być funkcją" @@ -2974,11 +2978,7 @@ msgstr "pierwszy argument musi być funkcją" msgid "first argument must be a tuple of ndarrays" msgstr "" -#: extmod/ulab/code/ndarray.c -msgid "first argument must be an iterable" -msgstr "pierwszy argument musi być iterowalny" - -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "first argument must be an ndarray" msgstr "" @@ -2990,7 +2990,7 @@ msgstr "pierwszy argument super() musi być typem" msgid "flattening order must be either 'C', or 'F'" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "flip argument must be an ndarray" msgstr "" @@ -3023,7 +3023,7 @@ msgstr "funkcja bierze najwyżej %d argumentów, jest %d" msgid "function got multiple values for argument '%q'" msgstr "funkcja dostała wiele wartości dla argumentu '%q'" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "function has the same sign at the ends of interval" msgstr "" @@ -3098,7 +3098,7 @@ msgstr "złe wypełnienie" msgid "index is out of bounds" msgstr "indeks jest poza zakresem" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c extmod/ulab/code/ulab_tools.c #: ports/esp32s2/common-hal/pulseio/PulseIn.c py/obj.c #: shared-bindings/bitmaptools/__init__.c msgid "index out of range" @@ -3112,7 +3112,7 @@ msgstr "indeksy muszą być całkowite" msgid "indices must be integers, slices, or Boolean lists" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "initial values must be iterable" msgstr "wartości początkowe muszą być iterowalne" @@ -3132,7 +3132,7 @@ msgstr "" msgid "input argument must be an integer, a tuple, or a list" msgstr "" -#: extmod/ulab/code/fft/fft.c +#: extmod/ulab/code/numpy/fft/fft_tools.c msgid "input array length must be power of 2" msgstr "długość tablicy wejściowej musi być potęgą 2" @@ -3140,15 +3140,15 @@ msgstr "długość tablicy wejściowej musi być potęgą 2" msgid "input arrays are not compatible" msgstr "" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "input data must be an iterable" msgstr "" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/linalg/linalg.c msgid "input matrix is asymmetric" msgstr "" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/linalg/linalg.c msgid "input matrix is singular" msgstr "" @@ -3164,23 +3164,23 @@ msgstr "" msgid "input must be an ndarray" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "input must be one-dimensional" msgstr "" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/ulab_tools.c msgid "input must be square matrix" msgstr "wejście musi być macierzą kwadratową" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "input must be tuple, list, range, or ndarray" msgstr "" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "input vectors must be of equal length" msgstr "wektory wejściowe muszą być równej długości" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "inputs are not iterable" msgstr "" @@ -3192,7 +3192,7 @@ msgstr "argument 2 do int() busi być pomiędzy 2 a 36" msgid "integer required" msgstr "wymagana liczba całkowita" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/numpy/approx/approx.c msgid "interp is defined for 1D arrays of equal length" msgstr "" @@ -3214,6 +3214,10 @@ msgstr "" msgid "invalid cert" msgstr "zły ceryfikat" +#: py/compile.c +msgid "invalid decorator" +msgstr "" + #: extmod/uos_dupterm.c msgid "invalid dupterm index" msgstr "zły indeks dupterm" @@ -3281,11 +3285,7 @@ msgstr "argument 1 dla issubclass() musi być klasą" msgid "issubclass() arg 2 must be a class or a tuple of classes" msgstr "argument 2 dla issubclass() musi być klasą lub krotką klas" -#: extmod/ulab/code/ndarray.c -msgid "iterables are not of the same length" -msgstr "" - -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/linalg/linalg.c msgid "iterations did not converge" msgstr "" @@ -3353,7 +3353,7 @@ msgstr "bufor mapy zbyt mały" msgid "math domain error" msgstr "błąd domeny" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/linalg/linalg.c msgid "matrix is not positive definite" msgstr "" @@ -3375,15 +3375,15 @@ msgstr "" msgid "maximum recursion depth exceeded" msgstr "przekroczono dozwoloną głębokość rekurencji" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "maxiter must be > 0" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "maxiter should be > 0" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "median argument must be an ndarray" msgstr "" @@ -3404,7 +3404,7 @@ msgstr "" msgid "module not found" msgstr "brak modułu" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "more degrees of freedom than data points" msgstr "" @@ -3522,10 +3522,6 @@ msgstr "" msgid "non-zero timeout must be >= interval" msgstr "" -#: extmod/ulab/code/linalg/linalg.c -msgid "norm is defined for 1D and 2D arrays" -msgstr "" - #: shared-bindings/_bleio/UUID.c msgid "not a 128-bit UUID" msgstr "to nie jest 128-bitowy UUID" @@ -3594,7 +3590,7 @@ msgstr "wymagany obiekt z protokołem buforu" msgid "odd-length string" msgstr "łańcuch o nieparzystej długości" -#: extmod/ulab/code/ulab_create.c +#: extmod/ulab/code/ulab_create.c extmod/ulab/code/utils/utils.c msgid "offset is too large" msgstr "" @@ -3623,8 +3619,8 @@ msgstr "obsługiwane jest tylko sample_rate=16000" msgid "only slices with step=1 (aka None) are supported" msgstr "tylko fragmenty ze step=1 (lub None) są wspierane" -#: extmod/ulab/code/compare/compare.c extmod/ulab/code/ndarray.c -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/ndarray.c extmod/ulab/code/numpy/compare/compare.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "operands could not be broadcast together" msgstr "operandy nie mogły być rozgłaszane razem" @@ -3632,7 +3628,7 @@ msgstr "operandy nie mogły być rozgłaszane razem" msgid "operation is implemented for 1D Boolean arrays only" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "operation is not implemented on ndarrays" msgstr "" @@ -3649,6 +3645,14 @@ msgstr "ord oczekuje znaku" msgid "ord() expected a character, but string of length %d found" msgstr "ord() oczekuje znaku, a jest łańcuch od długości %d" +#: extmod/ulab/code/utils/utils.c +msgid "out array is too small" +msgstr "" + +#: extmod/ulab/code/utils/utils.c +msgid "out must be a float dense array" +msgstr "" + #: shared-bindings/displayio/Bitmap.c msgid "out of range of source" msgstr "" @@ -3778,7 +3782,7 @@ msgstr "przepełnienie kolejki" msgid "raw f-strings are not implemented" msgstr "" -#: extmod/ulab/code/fft/fft.c +#: extmod/ulab/code/numpy/fft/fft_tools.c msgid "real and imaginary parts must be of equal length" msgstr "rzeczywiste i urojone części muszą mieć jednakową długość" @@ -3813,7 +3817,7 @@ msgstr "" msgid "rgb_pins[%d] is not on the same port as clock" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "roll argument must be an ndarray" msgstr "" @@ -3861,7 +3865,7 @@ msgstr "znak jest niedopuszczalny w specyfikacji 'c'" msgid "single '}' encountered in format string" msgstr "pojedynczy '}' w specyfikacji formatu" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/ulab_tools.c msgid "size is defined for ndarrays only" msgstr "" @@ -3885,19 +3889,19 @@ msgstr "przepełnienie small int" msgid "soft reboot\n" msgstr "programowy reset\n" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "sort argument must be an ndarray" msgstr "argument sort musi być ndarray" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "sos array must be of shape (n_section, 6)" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "sos[:, 3] should be all ones" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "sosfilt requires iterable arguments" msgstr "" @@ -4011,7 +4015,7 @@ msgstr "" msgid "too many arguments provided with the given format" msgstr "zbyt wiele argumentów podanych dla tego formatu" -#: extmod/ulab/code/ulab_create.c +#: extmod/ulab/code/ndarray.c extmod/ulab/code/ulab_create.c msgid "too many dimensions" msgstr "" @@ -4024,11 +4028,11 @@ msgstr "zbyt wiele indeksów" msgid "too many values to unpack (expected %d)" msgstr "zbyt wiele wartości do rozpakowania (oczekiwano %d)" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/numpy/approx/approx.c msgid "trapz is defined for 1D arrays" msgstr "" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/numpy/approx/approx.c msgid "trapz is defined for 1D arrays of equal length" msgstr "" @@ -4199,7 +4203,7 @@ msgstr "" msgid "window must be <= interval" msgstr "" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "wrong axis index" msgstr "" @@ -4207,7 +4211,8 @@ msgstr "" msgid "wrong axis specified" msgstr "" -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/numpy/compare/compare.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "wrong input type" msgstr "nieprawidłowy typ wejścia" @@ -4223,7 +4228,7 @@ msgstr "zła liczba wartości do rozpakowania" msgid "wrong operand type" msgstr "zły typ operandu" -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "wrong output type" msgstr "nieprawidłowy typ wyjścia" @@ -4247,18 +4252,40 @@ msgstr "y poza zakresem" msgid "zero step" msgstr "zerowy krok" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "zi must be an ndarray" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "zi must be of float type" msgstr "" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "zi must be of shape (n_section, 2)" msgstr "" +#~ msgid "Attempted heap allocation when MicroPython VM not running." +#~ msgstr "Próba przydziału sterty, gdy MicroPython VM nie działa." + +#~ msgid "MicroPython NLR jump failed. Likely memory corruption." +#~ msgstr "" +#~ "Skok MicroRython NLR nie powiódł się. Prawdopodobne uszkodzenie pamięci." + +#~ msgid "MicroPython fatal error." +#~ msgstr "Błąd krytyczny MicroPython." + +#~ msgid "vectors must have same lengths" +#~ msgstr "wektory muszą mieć identyczną długość" + +#~ msgid "first argument must be an iterable" +#~ msgstr "pierwszy argument musi być iterowalny" + +#~ msgid "Selected CTS pin not valid" +#~ msgstr "Wybrany pin CTS jest nieprawidłowy" + +#~ msgid "Selected RTS pin not valid" +#~ msgstr "Wybrany pin RTS jest nieprawidłowy" + #~ msgid "Could not initialize channel" #~ msgstr "Nie można zainicjować kanału" @@ -4274,9 +4301,6 @@ msgstr "" #~ msgid "No more channels available" #~ msgstr "Brak dostępnych kanałów" -#~ msgid "vectors must have same lengths" -#~ msgstr "wektory muszą mieć identyczną długość" - #~ msgid "Group full" #~ msgstr "Grupa pełna" diff --git a/locale/pt_BR.po b/locale/pt_BR.po index 27ec357aea..a65fbad3a3 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: 2021-03-21 21:29+0000\n" +"PO-Revision-Date: 2021-04-07 12:23+0000\n" "Last-Translator: Wellington Terumi Uemura \n" "Language-Team: \n" "Language: pt_BR\n" @@ -14,7 +14,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 4.5.2-dev\n" +"X-Generator: Weblate 4.6-dev\n" #: main.c msgid "" @@ -424,6 +424,10 @@ msgstr "O AnalogOut é de apenas 16 bits. O valor deve ser menor que 65536." msgid "AnalogOut not supported on given pin" msgstr "Saída analógica não suportada no pino fornecido" +#: ports/stm/common-hal/audiopwmio/PWMAudioOut.c +msgid "Another PWMAudioOut is already active" +msgstr "Um outro PWMAudioOut já está ativo" + #: ports/atmel-samd/common-hal/pulseio/PulseOut.c #: ports/cxd56/common-hal/pulseio/PulseOut.c msgid "Another send is already active" @@ -447,10 +451,8 @@ msgid "Attempt to allocate %d blocks" msgstr "Tentativa de alocar %d blocos" #: supervisor/shared/safe_mode.c -msgid "Attempted heap allocation when MicroPython VM not running." +msgid "Attempted heap allocation when VM not running." msgstr "" -"A tentativa da área de alocação dinâmica de variáveis (heap) quando o " -"MicroPython VM não está em execução." #: shared-bindings/wifi/Radio.c msgid "Authentication failure" @@ -544,6 +546,7 @@ msgid "Buffer is too small" msgstr "O buffer é muito pequeno" #: ports/nrf/common-hal/audiopwmio/PWMAudioOut.c +#: ports/stm/common-hal/audiopwmio/PWMAudioOut.c #, c-format msgid "Buffer length %d too big. It must be less than %d" msgstr "O tamanho do buffer %d é muito grande. Deve ser menor que %d" @@ -958,11 +961,11 @@ msgstr "Tupla esperada com comprimento %d, obteve %d" msgid "Extended advertisements with scan response not supported." msgstr "Anúncios estendidos não compatíveis com a resposta da varredura." -#: extmod/ulab/code/fft/fft.c +#: extmod/ulab/code/numpy/fft/fft_tools.c msgid "FFT is defined for ndarrays only" msgstr "O FFT é definido apenas para ndarrays" -#: extmod/ulab/code/fft/fft.c +#: extmod/ulab/code/numpy/fft/fft_tools.c msgid "FFT is implemented for linear arrays only" msgstr "O FFT é implementado apenas para matrizes lineares" @@ -1003,6 +1006,10 @@ msgstr "Houve uma falha na alocação da memória do Wifi" msgid "Failed to allocate wifi scan memory" msgstr "Houve uma falha na alocação da memória para a varredura do Wifi" +#: ports/stm/common-hal/audiopwmio/PWMAudioOut.c +msgid "Failed to buffer the sample" +msgstr "Houve uma falha ao fazer uma memória prévia (buffer) da amostra" + #: ports/nrf/common-hal/_bleio/Adapter.c msgid "Failed to connect: internal error" msgstr "Falha ao conectar: erro interno" @@ -1028,6 +1035,10 @@ msgstr "Houve uma falha ao liberar o mutex, err 0x%04x" msgid "Failed to write internal flash." msgstr "Falha ao gravar o flash interno." +#: supervisor/shared/safe_mode.c +msgid "Fatal error." +msgstr "" + #: py/moduerrno.c msgid "File exists" msgstr "Arquivo já existe" @@ -1209,6 +1220,7 @@ msgstr "%q Inválido" #: ports/atmel-samd/common-hal/audiobusio/I2SOut.c #: ports/atmel-samd/common-hal/audiobusio/PDMIn.c +#: ports/mimxrt10xx/common-hal/busio/UART.c msgid "Invalid %q pin" msgstr "Pino do %q inválido" @@ -1236,7 +1248,9 @@ msgid "Invalid DAC pin supplied" msgstr "O pino DAC informado é inválido" #: ports/atmel-samd/common-hal/pwmio/PWMOut.c -#: ports/cxd56/common-hal/pwmio/PWMOut.c ports/nrf/common-hal/pwmio/PWMOut.c +#: ports/cxd56/common-hal/pwmio/PWMOut.c +#: ports/mimxrt10xx/common-hal/pwmio/PWMOut.c +#: ports/nrf/common-hal/pwmio/PWMOut.c #: ports/raspberrypi/common-hal/pwmio/PWMOut.c shared-bindings/pwmio/PWMOut.c msgid "Invalid PWM frequency" msgstr "Frequência PWM inválida" @@ -1424,14 +1438,6 @@ msgstr "O valor máximo de x quando espelhado é %d" msgid "Messages limited to 8 bytes" msgstr "As mensagens estão limitadas a 8 bytes" -#: supervisor/shared/safe_mode.c -msgid "MicroPython NLR jump failed. Likely memory corruption." -msgstr "O salto do MicroPython NLR falhou. Possível corrupção de memória." - -#: supervisor/shared/safe_mode.c -msgid "MicroPython fatal error." -msgstr "Houve um erro fatal do MicroPython." - #: shared-bindings/audiobusio/PDMIn.c msgid "Microphone startup delay must be in range 0.0 to 1.0" msgstr "O atraso na inicialização do microfone deve estar entre 0,0 e 1,0" @@ -1483,6 +1489,10 @@ msgstr "Deve informar os pinos MISO ou MOSI" msgid "Must use a multiple of 6 rgb pins, not %d" msgstr "Deve utilizar um múltiplo de 6 pinos rgb, não %d" +#: supervisor/shared/safe_mode.c +msgid "NLR jump failed. Likely memory corruption." +msgstr "" + #: ports/esp32s2/common-hal/nvm/ByteArray.c msgid "NVS Error" msgstr "Erro NVS" @@ -1618,8 +1628,12 @@ msgid "No timer available" msgstr "Não há um temporizador disponível" #: supervisor/shared/safe_mode.c -msgid "Nordic Soft Device failure assertion." -msgstr "Declaração de falha do dispositivo Nordic Soft." +msgid "Nordic system firmware failure assertion." +msgstr "Declaração de falha do firmware do sistema nórdico." + +#: ports/nrf/common-hal/_bleio/__init__.c +msgid "Nordic system firmware out of memory" +msgstr "O firmware do sistema nórdico está sem memória" #: shared-bindings/ipaddress/IPv4Address.c shared-bindings/ipaddress/__init__.c msgid "Not a valid IP string" @@ -1938,7 +1952,7 @@ msgstr "Somente leitura" msgid "Read-only filesystem" msgstr "Sistema de arquivos somente leitura" -#: shared-module/bitmaptools/__init__.c shared-module/displayio/Bitmap.c +#: shared-module/displayio/Bitmap.c msgid "Read-only object" msgstr "Objeto de leitura apenas" @@ -2013,14 +2027,6 @@ msgstr "Taxa de amostragem muito alta. Deve ser menor que %d" msgid "Scan already in progess. Stop with stop_scan." msgstr "O escaneamento já está em andamento. Interrompa com stop_scan." -#: ports/mimxrt10xx/common-hal/busio/UART.c -msgid "Selected CTS pin not valid" -msgstr "O pino CTS selecionado é inválido" - -#: ports/mimxrt10xx/common-hal/busio/UART.c -msgid "Selected RTS pin not valid" -msgstr "O pino RTS selecionado é inválido" - #: ports/atmel-samd/common-hal/audiobusio/I2SOut.c #: ports/atmel-samd/common-hal/audiobusio/PDMIn.c msgid "Serializer in use" @@ -2310,8 +2316,8 @@ msgstr "Erro de segurança desconhecido: 0x%04x" #: ports/nrf/common-hal/_bleio/__init__.c #, c-format -msgid "Unknown soft device error: %04x" -msgstr "Erro desconhecido do dispositivo de soft: %04x" +msgid "Unknown system firmware error: %04x" +msgstr "Erro desconhecido do firmware: %04x" #: shared-bindings/_pixelbuf/PixelBuf.c #, c-format @@ -2476,11 +2482,11 @@ msgstr "os endereços estão vazios" msgid "arg is an empty sequence" msgstr "o arg é uma sequência vazia" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "argsort argument must be an ndarray" msgstr "O argumento argsort deve ser um ndarray" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "argsort is not implemented for flattened arrays" msgstr "argsort não é implementado para matrizes achatadas" @@ -2488,10 +2494,6 @@ msgstr "argsort não é implementado para matrizes achatadas" msgid "argument has wrong type" msgstr "argumento tem tipo errado" -#: extmod/ulab/code/linalg/linalg.c -msgid "argument must be ndarray" -msgstr "o argumento deve ser ndarray" - #: py/argcheck.c shared-bindings/_stage/__init__.c #: shared-bindings/digitalio/DigitalInOut.c shared-bindings/gamepad/GamePad.c msgid "argument num/types mismatch" @@ -2501,7 +2503,8 @@ msgstr "o argumento num/tipos não combinam" msgid "argument should be a '%q' not a '%q'" msgstr "o argumento deve ser um '%q' e não um '%q'" -#: extmod/ulab/code/linalg/linalg.c extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c +#: extmod/ulab/code/numpy/transform/transform.c msgid "arguments must be ndarrays" msgstr "os argumentos devem ser ndarrays" @@ -2514,11 +2517,11 @@ msgstr "a matriz e comprimento do índice devem ser iguais" msgid "array/bytes required on right side" msgstr "matriz/bytes são necessários no lado direito" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "attempt to get (arg)min/(arg)max of empty sequence" msgstr "tentativa de obter (arg)min/(arg)max da sequência vazia" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "attempt to get argmin/argmax of an empty sequence" msgstr "tente obter argmin/argmax de uma sequência vazia" @@ -2526,15 +2529,15 @@ msgstr "tente obter argmin/argmax de uma sequência vazia" msgid "attributes not supported yet" msgstr "atributos ainda não suportados" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "axis is out of bounds" msgstr "o eixo está fora dos limites" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c extmod/ulab/code/ulab_tools.c msgid "axis must be None, or an integer" msgstr "eixo deve ser Nenhum ou um número inteiro" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "axis too long" msgstr "o eixo é muito longo" @@ -2570,7 +2573,7 @@ msgstr "bits_per_sample deve ser 8 ou 16" msgid "branch not in range" msgstr "ramo fora do alcance" -#: extmod/ulab/code/ulab_create.c +#: extmod/ulab/code/ulab_create.c extmod/ulab/code/utils/utils.c msgid "buffer is smaller than requested size" msgstr "o tamanho do buffer é menor do que o tamanho que foi solicitado" @@ -2578,7 +2581,7 @@ msgstr "o tamanho do buffer é menor do que o tamanho que foi solicitado" msgid "buffer must be a bytes-like object" msgstr "o buffer deve ser um objeto como bytes" -#: extmod/ulab/code/ulab_create.c +#: extmod/ulab/code/ulab_create.c extmod/ulab/code/utils/utils.c msgid "buffer size must be a multiple of element size" msgstr "o tamanho do buffer deve ser um múltiplo do tamanho do elemento" @@ -2841,19 +2844,19 @@ msgstr "constante deve ser um inteiro" msgid "conversion to object" msgstr "conversão para o objeto" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/numpy/filter/filter.c msgid "convolve arguments must be linear arrays" msgstr "os argumentos convolutivos devem ser matrizes lineares" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/numpy/filter/filter.c msgid "convolve arguments must be ndarrays" msgstr "os argumentos convolutivos devem ser ndarrays" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/numpy/filter/filter.c msgid "convolve arguments must not be empty" msgstr "os argumentos convolutivos não devem estar vazios" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "could not invert Vandermonde matrix" msgstr "não foi possível inverter a matriz Vandermonde" @@ -2861,15 +2864,15 @@ msgstr "não foi possível inverter a matriz Vandermonde" msgid "couldn't determine SD card version" msgstr "não foi possível determinar a versão do cartão SD" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "cross is defined for 1D arrays of length 3" msgstr "a cruz é definida para matrizes 1D de comprimento 3" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "data must be iterable" msgstr "os dados devem ser iteráveis" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "data must be of equal length" msgstr "os dados devem ser de igual comprimento" @@ -2909,15 +2912,15 @@ msgstr "destination_length deve ser um int >= 0" msgid "dict update sequence has wrong length" msgstr "sequência da atualização dict tem o comprimento errado" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "diff argument must be an ndarray" msgstr "O argumento diff deve ser um ndarray" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "differentiation order out of range" msgstr "ordem de diferenciação fora do alcance" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/transform/transform.c msgid "dimensions do not match" msgstr "as dimensões não coincidem" @@ -3036,11 +3039,11 @@ msgstr "o arquivo deve ser um arquivo aberto no modo byte" msgid "filesystem must provide mount method" msgstr "sistema de arquivos deve fornecer método de montagem" -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "first argument must be a callable" msgstr "o primeiro argumento deve ser chamável" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "first argument must be a function" msgstr "o primeiro argumento deve ser uma função" @@ -3048,11 +3051,7 @@ msgstr "o primeiro argumento deve ser uma função" msgid "first argument must be a tuple of ndarrays" msgstr "o primeiro argumento deve ser um tuple de ndarrays" -#: extmod/ulab/code/ndarray.c -msgid "first argument must be an iterable" -msgstr "o primeiro argumento deve ser um iterável" - -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "first argument must be an ndarray" msgstr "o primeiro argumento deve ser um ndarray" @@ -3064,7 +3063,7 @@ msgstr "o primeiro argumento para super() deve ser um tipo" msgid "flattening order must be either 'C', or 'F'" msgstr "a ordem do nivelamento deve ser 'C' ou 'F'" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "flip argument must be an ndarray" msgstr "o argumento flip deve ser um ndarray" @@ -3097,7 +3096,7 @@ msgstr "função esperada na maioria dos %d argumentos, obteve %d" msgid "function got multiple values for argument '%q'" msgstr "A função obteve vários valores para o argumento '%q'" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "function has the same sign at the ends of interval" msgstr "a função tem o mesmo sinal nas extremidades do intervalo" @@ -3172,7 +3171,7 @@ msgstr "preenchimento incorreto" msgid "index is out of bounds" msgstr "o índice está fora dos limites" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c extmod/ulab/code/ulab_tools.c #: ports/esp32s2/common-hal/pulseio/PulseIn.c py/obj.c #: shared-bindings/bitmaptools/__init__.c msgid "index out of range" @@ -3186,7 +3185,7 @@ msgstr "os índices devem ser inteiros" msgid "indices must be integers, slices, or Boolean lists" msgstr "os índices devem ser números inteiros, fatias ou listas booleanas" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "initial values must be iterable" msgstr "os valores iniciais devem ser iteráveis" @@ -3207,7 +3206,7 @@ msgid "input argument must be an integer, a tuple, or a list" msgstr "" "argumento da entrada deve ser um número inteiro, uma tupla ou uma lista" -#: extmod/ulab/code/fft/fft.c +#: extmod/ulab/code/numpy/fft/fft_tools.c msgid "input array length must be power of 2" msgstr "comprimento da matriz da entrada deve ter potência de 2" @@ -3215,15 +3214,15 @@ msgstr "comprimento da matriz da entrada deve ter potência de 2" msgid "input arrays are not compatible" msgstr "as matrizes da entrada não são compatíveis" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "input data must be an iterable" msgstr "os dados da entrada devem ser iteráveis" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/linalg/linalg.c msgid "input matrix is asymmetric" msgstr "a matriz da entrada é assimétrica" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/linalg/linalg.c msgid "input matrix is singular" msgstr "a matriz da entrada é singular" @@ -3239,23 +3238,23 @@ msgstr "a entrada dos dados deve ser um tensor de nível 2" msgid "input must be an ndarray" msgstr "a entrada deve ser um ndarray" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "input must be one-dimensional" msgstr "a entrada deve ser unidimensional" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/ulab_tools.c msgid "input must be square matrix" msgstr "a entrada deve ser uma matriz quadrada" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "input must be tuple, list, range, or ndarray" msgstr "A entrada deve ser tupla, lista, intervalo ou matriz" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "input vectors must be of equal length" msgstr "os vetores da entrada devem ter o mesmo comprimento" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "inputs are not iterable" msgstr "as entradas não são iteráveis" @@ -3267,7 +3266,7 @@ msgstr "int() arg 2 deve ser >= 2 e <= 36" msgid "integer required" msgstr "inteiro requerido" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/numpy/approx/approx.c msgid "interp is defined for 1D arrays of equal length" msgstr "o interp é definido para matrizes 1D de igual comprimento" @@ -3289,6 +3288,10 @@ msgstr "bits_per_pixel %d é inválido, deve ser, 1, 4, 8, 16, 24, ou 32" msgid "invalid cert" msgstr "certificado inválido" +#: py/compile.c +msgid "invalid decorator" +msgstr "" + #: extmod/uos_dupterm.c msgid "invalid dupterm index" msgstr "Índice de dupterm inválido" @@ -3356,11 +3359,7 @@ msgstr "issubclass() arg 1 deve ser uma classe" msgid "issubclass() arg 2 must be a class or a tuple of classes" msgstr "issubclass() arg 2 deve ser uma classe ou uma tupla de classes" -#: extmod/ulab/code/ndarray.c -msgid "iterables are not of the same length" -msgstr "os iteráveis não têm o mesmo comprimento" - -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/linalg/linalg.c msgid "iterations did not converge" msgstr "as iterações não convergiram" @@ -3431,7 +3430,7 @@ msgstr "o mapa do buffer é muito pequeno" msgid "math domain error" msgstr "erro de domínio matemático" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/linalg/linalg.c msgid "matrix is not positive definite" msgstr "a matriz não é definitiva positiva" @@ -3453,15 +3452,15 @@ msgstr "O número máximo de dimensões são 4" msgid "maximum recursion depth exceeded" msgstr "a recursão máxima da profundidade foi excedida" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "maxiter must be > 0" msgstr "maxiter deve ser > 0" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "maxiter should be > 0" msgstr "maxiter pode ser > 0" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "median argument must be an ndarray" msgstr "o argumento mediano deve ser um ndarray" @@ -3484,7 +3483,7 @@ msgstr "memoryview: o comprimento não é um múltiplo do tamanho dos itens" msgid "module not found" msgstr "o módulo não foi encontrado" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "more degrees of freedom than data points" msgstr "mais graus de liberdade do que pontos de dados" @@ -3602,10 +3601,6 @@ msgstr "o tempo limite não zero deve ser > 0.01" msgid "non-zero timeout must be >= interval" msgstr "o tempo limite não zero deve ser >= intervalo" -#: extmod/ulab/code/linalg/linalg.c -msgid "norm is defined for 1D and 2D arrays" -msgstr "a norma é definida para matrizes 1D e 2D" - #: shared-bindings/_bleio/UUID.c msgid "not a 128-bit UUID" msgstr "não é um UUID com 128 bits" @@ -3674,7 +3669,7 @@ msgstr "é necessário objeto com protocolo do buffer" msgid "odd-length string" msgstr "sequência com comprimento ímpar" -#: extmod/ulab/code/ulab_create.c +#: extmod/ulab/code/ulab_create.c extmod/ulab/code/utils/utils.c msgid "offset is too large" msgstr "o offset é muito grande" @@ -3704,8 +3699,8 @@ msgid "only slices with step=1 (aka None) are supported" msgstr "" "apenas fatias com a etapa=1 (também conhecida como Nenhuma) são compatíveis" -#: extmod/ulab/code/compare/compare.c extmod/ulab/code/ndarray.c -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/ndarray.c extmod/ulab/code/numpy/compare/compare.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "operands could not be broadcast together" msgstr "os operandos não puderam ser transmitidos juntos" @@ -3713,7 +3708,7 @@ msgstr "os operandos não puderam ser transmitidos juntos" msgid "operation is implemented for 1D Boolean arrays only" msgstr "A operação é implementada apenas para matrizes booleanas 1D" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "operation is not implemented on ndarrays" msgstr "a operação não foi implementada nos ndarrays" @@ -3732,6 +3727,14 @@ msgstr "" "o ord() esperava um caractere, porém a sequência do comprimento %d foi " "encontrada" +#: extmod/ulab/code/utils/utils.c +msgid "out array is too small" +msgstr "a matriz externa é muito pequena" + +#: extmod/ulab/code/utils/utils.c +msgid "out must be a float dense array" +msgstr "deve ser uma matriz densa flutuante" + #: shared-bindings/displayio/Bitmap.c msgid "out of range of source" msgstr "fora do alcance da fonte" @@ -3862,7 +3865,7 @@ msgstr "estouro de fila" msgid "raw f-strings are not implemented" msgstr "o f-strings bruto não estão implementados" -#: extmod/ulab/code/fft/fft.c +#: extmod/ulab/code/numpy/fft/fft_tools.c msgid "real and imaginary parts must be of equal length" msgstr "partes reais e imaginárias devem ter o mesmo comprimento" @@ -3897,7 +3900,7 @@ msgstr "rgb_pins[%d] duplica outra atribuição dos pinos" msgid "rgb_pins[%d] is not on the same port as clock" msgstr "rgb_pins[%d] não está na mesma porta que o clock" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "roll argument must be an ndarray" msgstr "argumento de enrolar deve ser um ndarray" @@ -3946,7 +3949,7 @@ msgstr "sinal não permitido com o especificador no formato inteiro 'c'" msgid "single '}' encountered in format string" msgstr "único '}' encontrado na string do formato" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/ulab_tools.c msgid "size is defined for ndarrays only" msgstr "o tamanho é definido apenas para os ndarrays" @@ -3970,19 +3973,19 @@ msgstr "transbordamento int pequeno" msgid "soft reboot\n" msgstr "reinicialização soft\n" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "sort argument must be an ndarray" msgstr "o argumento da classificação deve ser um ndarray" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "sos array must be of shape (n_section, 6)" msgstr "o sos da matriz deve estar na forma (n_section, 6)" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "sos[:, 3] should be all ones" msgstr "sos[:, 3] deve ser um em todos" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "sosfilt requires iterable arguments" msgstr "o sosfilt requer que os argumentos sejam iteráveis" @@ -4096,7 +4099,7 @@ msgstr "os tobytes podem ser invocados apenas nas matrizes densas" msgid "too many arguments provided with the given format" msgstr "Muitos argumentos fornecidos com o formato dado" -#: extmod/ulab/code/ulab_create.c +#: extmod/ulab/code/ndarray.c extmod/ulab/code/ulab_create.c msgid "too many dimensions" msgstr "dimensões demais" @@ -4109,11 +4112,11 @@ msgstr "índices demais" msgid "too many values to unpack (expected %d)" msgstr "valores demais para descompactar (esperado %d)" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/numpy/approx/approx.c msgid "trapz is defined for 1D arrays" msgstr "Trapz está definido para arrays 1D" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/numpy/approx/approx.c msgid "trapz is defined for 1D arrays of equal length" msgstr "o trapz está definido para 1D arrays de igual tamanho" @@ -4284,7 +4287,7 @@ msgstr "o wifi não está ativo" msgid "window must be <= interval" msgstr "a janela deve ser <= intervalo" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "wrong axis index" msgstr "índice do eixo errado" @@ -4292,7 +4295,8 @@ msgstr "índice do eixo errado" msgid "wrong axis specified" msgstr "um eixo errado foi definido" -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/numpy/compare/compare.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "wrong input type" msgstr "tipo da entrada incorreta" @@ -4308,7 +4312,7 @@ msgstr "quantidade incorreta dos valores para descompressão" msgid "wrong operand type" msgstr "tipo do operando errado" -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "wrong output type" msgstr "tipo da saída incorreta" @@ -4332,18 +4336,62 @@ msgstr "o valor y está fora dos limites" msgid "zero step" msgstr "passo zero" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "zi must be an ndarray" msgstr "zi deve ser um ndarray" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "zi must be of float type" msgstr "zi deve ser de um tipo float" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "zi must be of shape (n_section, 2)" msgstr "zi deve estar na forma (n_section, 2)" +#~ msgid "Attempted heap allocation when MicroPython VM not running." +#~ msgstr "" +#~ "A tentativa da área de alocação dinâmica de variáveis (heap) quando o " +#~ "MicroPython VM não está em execução." + +#~ msgid "MicroPython NLR jump failed. Likely memory corruption." +#~ msgstr "O salto do MicroPython NLR falhou. Possível corrupção de memória." + +#~ msgid "MicroPython fatal error." +#~ msgstr "Houve um erro fatal do MicroPython." + +#~ msgid "argument must be ndarray" +#~ msgstr "o argumento deve ser ndarray" + +#~ msgid "matrix dimensions do not match" +#~ msgstr "as dimensões da matriz não coincidem" + +#~ msgid "norm is defined for 1D and 2D arrays" +#~ msgstr "a norma é definida para matrizes 1D e 2D" + +#~ msgid "vectors must have same lengths" +#~ msgstr "os vetores devem ter os mesmos comprimentos" + +#~ msgid "Nordic Soft Device failure assertion." +#~ msgstr "Declaração de falha do dispositivo Nordic Soft." + +#~ msgid "Nordic soft device out of memory" +#~ msgstr "O soft do dispositivo nórdico está sem memória" + +#~ msgid "Unknown soft device error: %04x" +#~ msgstr "Erro desconhecido do dispositivo de soft: %04x" + +#~ msgid "first argument must be an iterable" +#~ msgstr "o primeiro argumento deve ser um iterável" + +#~ msgid "iterables are not of the same length" +#~ msgstr "os iteráveis não têm o mesmo comprimento" + +#~ msgid "Selected CTS pin not valid" +#~ msgstr "O pino CTS selecionado é inválido" + +#~ msgid "Selected RTS pin not valid" +#~ msgstr "O pino RTS selecionado é inválido" + #~ msgid "Could not initialize channel" #~ msgstr "Não foi possível inicializar o canal" @@ -4372,12 +4420,6 @@ msgstr "zi deve estar na forma (n_section, 2)" #~ "O temporizador foi reservado para uso interno - declare os pinos PWM no " #~ "início do programa" -#~ msgid "matrix dimensions do not match" -#~ msgstr "as dimensões da matriz não coincidem" - -#~ msgid "vectors must have same lengths" -#~ msgstr "os vetores devem ter os mesmos comprimentos" - #~ msgid "Group full" #~ msgstr "Grupo cheio" diff --git a/locale/sv.po b/locale/sv.po index 61cb7b4319..8a2d554547 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: 2021-03-19 20:36+0000\n" +"PO-Revision-Date: 2021-04-06 14:41+0000\n" "Last-Translator: Jonny Bergdahl \n" "Language-Team: LANGUAGE \n" "Language: sv\n" @@ -14,7 +14,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.5.2-dev\n" +"X-Generator: Weblate 4.6-dev\n" #: main.c msgid "" @@ -419,6 +419,10 @@ msgstr "AnalogOut hanterar bara 16 bitar. Värdet måste vara mindre än 65536." msgid "AnalogOut not supported on given pin" msgstr "AnalogOut stöds inte på angiven pinne" +#: ports/stm/common-hal/audiopwmio/PWMAudioOut.c +msgid "Another PWMAudioOut is already active" +msgstr "En annan PWMAudioOut är redan aktiv" + #: ports/atmel-samd/common-hal/pulseio/PulseOut.c #: ports/cxd56/common-hal/pulseio/PulseOut.c msgid "Another send is already active" @@ -442,8 +446,8 @@ msgid "Attempt to allocate %d blocks" msgstr "Försök att tilldela %d block" #: supervisor/shared/safe_mode.c -msgid "Attempted heap allocation when MicroPython VM not running." -msgstr "Försökte tilldela heap när MicroPython VM inte körs." +msgid "Attempted heap allocation when VM not running." +msgstr "" #: shared-bindings/wifi/Radio.c msgid "Authentication failure" @@ -535,6 +539,7 @@ msgid "Buffer is too small" msgstr "Bufferten är för liten" #: ports/nrf/common-hal/audiopwmio/PWMAudioOut.c +#: ports/stm/common-hal/audiopwmio/PWMAudioOut.c #, c-format msgid "Buffer length %d too big. It must be less than %d" msgstr "Buffertlängd %d för stor. Den måste vara mindre än %d" @@ -946,11 +951,11 @@ msgstr "Förväntad tupel med längd %d, fick %d" msgid "Extended advertisements with scan response not supported." msgstr "Utökad annonsering i kombination med skanningssvar stöds inte." -#: extmod/ulab/code/fft/fft.c +#: extmod/ulab/code/numpy/fft/fft_tools.c msgid "FFT is defined for ndarrays only" msgstr "FFT är enbart definierade för ndarrays" -#: extmod/ulab/code/fft/fft.c +#: extmod/ulab/code/numpy/fft/fft_tools.c msgid "FFT is implemented for linear arrays only" msgstr "FTT är enbart implementerad för linjära matriser" @@ -991,6 +996,10 @@ msgstr "Det gick inte att allokera WiFi-minne" msgid "Failed to allocate wifi scan memory" msgstr "Det gick inte att allokera minne för WiFi-scanning" +#: ports/stm/common-hal/audiopwmio/PWMAudioOut.c +msgid "Failed to buffer the sample" +msgstr "Det gick inte att buffra samplingen" + #: ports/nrf/common-hal/_bleio/Adapter.c msgid "Failed to connect: internal error" msgstr "Det gick inte att ansluta: internt fel" @@ -1016,6 +1025,10 @@ msgstr "Det gick inte att frigöra mutex, fel 0x%04x" msgid "Failed to write internal flash." msgstr "Det gick inte att skriva till intern flash." +#: supervisor/shared/safe_mode.c +msgid "Fatal error." +msgstr "" + #: py/moduerrno.c msgid "File exists" msgstr "Filen finns redan" @@ -1192,6 +1205,7 @@ msgstr "Ogiltig %q" #: ports/atmel-samd/common-hal/audiobusio/I2SOut.c #: ports/atmel-samd/common-hal/audiobusio/PDMIn.c +#: ports/mimxrt10xx/common-hal/busio/UART.c msgid "Invalid %q pin" msgstr "Ogiltig %q-pinne" @@ -1219,7 +1233,9 @@ msgid "Invalid DAC pin supplied" msgstr "Ogiltig DAC-pinne angiven" #: ports/atmel-samd/common-hal/pwmio/PWMOut.c -#: ports/cxd56/common-hal/pwmio/PWMOut.c ports/nrf/common-hal/pwmio/PWMOut.c +#: ports/cxd56/common-hal/pwmio/PWMOut.c +#: ports/mimxrt10xx/common-hal/pwmio/PWMOut.c +#: ports/nrf/common-hal/pwmio/PWMOut.c #: ports/raspberrypi/common-hal/pwmio/PWMOut.c shared-bindings/pwmio/PWMOut.c msgid "Invalid PWM frequency" msgstr "Ogiltig PWM-frekvens" @@ -1407,14 +1423,6 @@ msgstr "Maximum x-värde vid spegling är %d" msgid "Messages limited to 8 bytes" msgstr "Meddelanden begränsad till 8 byte" -#: supervisor/shared/safe_mode.c -msgid "MicroPython NLR jump failed. Likely memory corruption." -msgstr "MicroPython NLR jump misslyckades. Troligen korrupt minne." - -#: supervisor/shared/safe_mode.c -msgid "MicroPython fatal error." -msgstr "MicroPython fatalt fel." - #: shared-bindings/audiobusio/PDMIn.c msgid "Microphone startup delay must be in range 0.0 to 1.0" msgstr "" @@ -1467,6 +1475,10 @@ msgstr "Måste ange MISO- eller MOSI-pinne" msgid "Must use a multiple of 6 rgb pins, not %d" msgstr "Måste använda ett multipel av 6 rgb-pinnar, inte %d" +#: supervisor/shared/safe_mode.c +msgid "NLR jump failed. Likely memory corruption." +msgstr "" + #: ports/esp32s2/common-hal/nvm/ByteArray.c msgid "NVS Error" msgstr "NVS-fel" @@ -1600,8 +1612,12 @@ msgid "No timer available" msgstr "Ingen timer tillgänglig" #: supervisor/shared/safe_mode.c -msgid "Nordic Soft Device failure assertion." -msgstr "Påståendet om Nordic Soft Device-fel." +msgid "Nordic system firmware failure assertion." +msgstr "Felaktigt tillstånd i Nordic systemfirmware." + +#: ports/nrf/common-hal/_bleio/__init__.c +msgid "Nordic system firmware out of memory" +msgstr "Nordic systemfirmware fick slut på minne" #: shared-bindings/ipaddress/IPv4Address.c shared-bindings/ipaddress/__init__.c msgid "Not a valid IP string" @@ -1915,7 +1931,7 @@ msgstr "Skrivskyddad" msgid "Read-only filesystem" msgstr "Skrivskyddat filsystem" -#: shared-module/bitmaptools/__init__.c shared-module/displayio/Bitmap.c +#: shared-module/displayio/Bitmap.c msgid "Read-only object" msgstr "Skrivskyddat objekt" @@ -1990,14 +2006,6 @@ msgstr "Samplingsfrekvensen är för hög. Den måste vara mindre än %d" msgid "Scan already in progess. Stop with stop_scan." msgstr "Skanning pågår redan. Avsluta med stop_scan." -#: ports/mimxrt10xx/common-hal/busio/UART.c -msgid "Selected CTS pin not valid" -msgstr "Vald CTS-pinne är inte giltig" - -#: ports/mimxrt10xx/common-hal/busio/UART.c -msgid "Selected RTS pin not valid" -msgstr "Vald CTS-pinne är inte giltig" - #: ports/atmel-samd/common-hal/audiobusio/I2SOut.c #: ports/atmel-samd/common-hal/audiobusio/PDMIn.c msgid "Serializer in use" @@ -2282,8 +2290,8 @@ msgstr "Okänt säkerhetsfel: 0x%04x" #: ports/nrf/common-hal/_bleio/__init__.c #, c-format -msgid "Unknown soft device error: %04x" -msgstr "Okänt mjukvarufel: %04x" +msgid "Unknown system firmware error: %04x" +msgstr "Okänt systemfirmwarefel: %04x" #: shared-bindings/_pixelbuf/PixelBuf.c #, c-format @@ -2444,11 +2452,11 @@ msgstr "adresserna är tomma" msgid "arg is an empty sequence" msgstr "arg är en tom sekvens" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "argsort argument must be an ndarray" msgstr "argumentet argsort måste vara en ndarray" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "argsort is not implemented for flattened arrays" msgstr "argsort är inte implementerad för tillplattade matriser" @@ -2456,10 +2464,6 @@ msgstr "argsort är inte implementerad för tillplattade matriser" msgid "argument has wrong type" msgstr "argumentet har fel typ" -#: extmod/ulab/code/linalg/linalg.c -msgid "argument must be ndarray" -msgstr "argument måste vara ndarray" - #: py/argcheck.c shared-bindings/_stage/__init__.c #: shared-bindings/digitalio/DigitalInOut.c shared-bindings/gamepad/GamePad.c msgid "argument num/types mismatch" @@ -2469,7 +2473,8 @@ msgstr "argument antal/typ matchar inte" msgid "argument should be a '%q' not a '%q'" msgstr "argumentet skall vara en '%q', inte en '%q'" -#: extmod/ulab/code/linalg/linalg.c extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c +#: extmod/ulab/code/numpy/transform/transform.c msgid "arguments must be ndarrays" msgstr "argumenten måste vara ndarray" @@ -2482,11 +2487,11 @@ msgstr "array och indexlängd måste vara lika" msgid "array/bytes required on right side" msgstr "array/bytes krävs på höger sida" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "attempt to get (arg)min/(arg)max of empty sequence" msgstr "försök att läsa (arg)min/(arg)max av tom sekvens" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "attempt to get argmin/argmax of an empty sequence" msgstr "försök att få argmin/argmax för en tom sekvens" @@ -2494,15 +2499,15 @@ msgstr "försök att få argmin/argmax för en tom sekvens" msgid "attributes not supported yet" msgstr "attribut stöds inte än" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "axis is out of bounds" msgstr "axis är utanför gränsen" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c extmod/ulab/code/ulab_tools.c msgid "axis must be None, or an integer" msgstr "axis måste vara None eller ett heltal" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "axis too long" msgstr "axis för lång" @@ -2538,7 +2543,7 @@ msgstr "bits_per_sample måste vara 8 eller 16" msgid "branch not in range" msgstr "branch utanför räckvidd" -#: extmod/ulab/code/ulab_create.c +#: extmod/ulab/code/ulab_create.c extmod/ulab/code/utils/utils.c msgid "buffer is smaller than requested size" msgstr "bufferten är mindre än begärd storlek" @@ -2546,7 +2551,7 @@ msgstr "bufferten är mindre än begärd storlek" msgid "buffer must be a bytes-like object" msgstr "buffer måste vara en byte-liknande objekt" -#: extmod/ulab/code/ulab_create.c +#: extmod/ulab/code/ulab_create.c extmod/ulab/code/utils/utils.c msgid "buffer size must be a multiple of element size" msgstr "buffertstorlek måste vara en multipel av elementstorlek" @@ -2805,19 +2810,19 @@ msgstr "konstant måste vara ett heltal" msgid "conversion to object" msgstr "konvertering till objekt" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/numpy/filter/filter.c msgid "convolve arguments must be linear arrays" msgstr "Argumenten convolve måste vara linjära matriser" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/numpy/filter/filter.c msgid "convolve arguments must be ndarrays" msgstr "Argumenten convolve måste vara ndarray:er" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/numpy/filter/filter.c msgid "convolve arguments must not be empty" msgstr "Argumenten convolve kan inte vara tomma" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "could not invert Vandermonde matrix" msgstr "kan inte invertera Vandermonde-matris" @@ -2825,15 +2830,15 @@ msgstr "kan inte invertera Vandermonde-matris" msgid "couldn't determine SD card version" msgstr "kan inte avgöra SD-kortversion" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "cross is defined for 1D arrays of length 3" msgstr "cross är definierad för 1D-matriser med längd 3" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "data must be iterable" msgstr "data måste vara itererbar" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "data must be of equal length" msgstr "data måste vara av samma längd" @@ -2873,15 +2878,15 @@ msgstr "destination_length måste vara ett heltal >= 0" msgid "dict update sequence has wrong length" msgstr "uppdateringssekvensen för dict har fel längd" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "diff argument must be an ndarray" msgstr "argumentet diff måste vara en ndarray" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "differentiation order out of range" msgstr "differentieringsordning utanför intervallet" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/transform/transform.c msgid "dimensions do not match" msgstr "dimensioner matchar inte" @@ -3000,11 +3005,11 @@ msgstr "filen måste vara en fil som öppnats i byte-läge" msgid "filesystem must provide mount method" msgstr "filsystemet måste tillhandahålla mount-metod" -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "first argument must be a callable" msgstr "första argumentet måste vara en callable" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "first argument must be a function" msgstr "första argumentet måste vara en funktion" @@ -3012,11 +3017,7 @@ msgstr "första argumentet måste vara en funktion" msgid "first argument must be a tuple of ndarrays" msgstr "första argumentet måste vara en tupel av ndarray" -#: extmod/ulab/code/ndarray.c -msgid "first argument must be an iterable" -msgstr "första argumentet måste vara en iterable" - -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "first argument must be an ndarray" msgstr "första argumentet måste vara en ndarray" @@ -3028,7 +3029,7 @@ msgstr "första argumentet till super() måste vara typ" msgid "flattening order must be either 'C', or 'F'" msgstr "förenklingsordningen måste vara antingen \"C\" eller \"F\"" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "flip argument must be an ndarray" msgstr "Argumentet flip måste vara en ndarray" @@ -3061,7 +3062,7 @@ msgstr "funktionen förväntar som mest %d argument, fick %d" msgid "function got multiple values for argument '%q'" msgstr "funktionen fick flera värden för argumentet '%q'" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "function has the same sign at the ends of interval" msgstr "funktionen har samma teckenvärden vid slutet av intervall" @@ -3136,7 +3137,7 @@ msgstr "felaktig utfyllnad" msgid "index is out of bounds" msgstr "index är utanför gränserna" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c extmod/ulab/code/ulab_tools.c #: ports/esp32s2/common-hal/pulseio/PulseIn.c py/obj.c #: shared-bindings/bitmaptools/__init__.c msgid "index out of range" @@ -3150,7 +3151,7 @@ msgstr "index måste vara heltal" msgid "indices must be integers, slices, or Boolean lists" msgstr "index måste vara heltal, slices, eller Boolean-listor" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "initial values must be iterable" msgstr "initialvärden måste vara iterable" @@ -3170,7 +3171,7 @@ msgstr "indata- och utdataformer är inte kompatibla" msgid "input argument must be an integer, a tuple, or a list" msgstr "indataargument måste vara integer, en tuple eller list" -#: extmod/ulab/code/fft/fft.c +#: extmod/ulab/code/numpy/fft/fft_tools.c msgid "input array length must be power of 2" msgstr "indataarraylängden måste vara en multipel av 2" @@ -3178,15 +3179,15 @@ msgstr "indataarraylängden måste vara en multipel av 2" msgid "input arrays are not compatible" msgstr "indatamatriser är inte kompatibla" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "input data must be an iterable" msgstr "indata måste vara en iterable" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/linalg/linalg.c msgid "input matrix is asymmetric" msgstr "indatamatrisen är asymmetrisk" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/linalg/linalg.c msgid "input matrix is singular" msgstr "indatamatrisen är singulär" @@ -3202,23 +3203,23 @@ msgstr "indata måste vara en tensor av rank 2" msgid "input must be an ndarray" msgstr "indata måste vara en ndarray" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "input must be one-dimensional" msgstr "indata måste vara endimensionell" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/ulab_tools.c msgid "input must be square matrix" msgstr "indata måste vara kvadratmatris" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "input must be tuple, list, range, or ndarray" msgstr "indata måste vara tupel, lista, range, eller ndarray" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "input vectors must be of equal length" msgstr "indatavektorer måste ha samma längd" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "inputs are not iterable" msgstr "indata är inte iterbara" @@ -3230,7 +3231,7 @@ msgstr "int() arg 2 måste vara >= 2 och <= 36" msgid "integer required" msgstr "heltal krävs" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/numpy/approx/approx.c msgid "interp is defined for 1D arrays of equal length" msgstr "interp är definierad för 1D-matriser med samma längd" @@ -3252,6 +3253,10 @@ msgstr "ogiltig bits_per_pixel %d, måste vara 1, 4, 8, 16, 24 eller 32" msgid "invalid cert" msgstr "ogiltigt certifikat" +#: py/compile.c +msgid "invalid decorator" +msgstr "" + #: extmod/uos_dupterm.c msgid "invalid dupterm index" msgstr "ogiltigt dupterm index" @@ -3319,11 +3324,7 @@ msgstr "issubclass() arg 1 måste vara en klass" msgid "issubclass() arg 2 must be a class or a tuple of classes" msgstr "issubclass() arg 2 måste vara en klass eller en tupel av klasser" -#: extmod/ulab/code/ndarray.c -msgid "iterables are not of the same length" -msgstr "iterables är inte av samma längd" - -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/linalg/linalg.c msgid "iterations did not converge" msgstr "iterations konvergerar inte" @@ -3394,7 +3395,7 @@ msgstr "map-buffert för liten" msgid "math domain error" msgstr "matematikdomänfel" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/linalg/linalg.c msgid "matrix is not positive definite" msgstr "matrisen är inte positiv bestämd" @@ -3416,15 +3417,15 @@ msgstr "maximalt antal dimensioner är 4" msgid "maximum recursion depth exceeded" msgstr "maximal rekursionsdjup överskriden" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "maxiter must be > 0" msgstr "maxiter måste vara > 0" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "maxiter should be > 0" msgstr "maxiter bör vara > 0" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "median argument must be an ndarray" msgstr "argumentet median måste vara en ndarray" @@ -3445,7 +3446,7 @@ msgstr "memoryview: längden är inte en multipel av itemsize" msgid "module not found" msgstr "modulen hittades inte" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "more degrees of freedom than data points" msgstr "fler frihetsgrader än datapunkter" @@ -3563,10 +3564,6 @@ msgstr "Icke-noll timeout måste vara > 0.01" msgid "non-zero timeout must be >= interval" msgstr "Icke-noll timeout måste vara >= intervall" -#: extmod/ulab/code/linalg/linalg.c -msgid "norm is defined for 1D and 2D arrays" -msgstr "norm är definierad för 1D- och 2D-matriser" - #: shared-bindings/_bleio/UUID.c msgid "not a 128-bit UUID" msgstr "inte en 128-bitars UUID" @@ -3635,7 +3632,7 @@ msgstr "objekt med buffertprotokoll krävs" msgid "odd-length string" msgstr "sträng har udda längd" -#: extmod/ulab/code/ulab_create.c +#: extmod/ulab/code/ulab_create.c extmod/ulab/code/utils/utils.c msgid "offset is too large" msgstr "offset är för stor" @@ -3664,8 +3661,8 @@ msgstr "enbart sample_rate=16000 stöds" msgid "only slices with step=1 (aka None) are supported" msgstr "endast segment med steg=1 (aka Ingen) stöds" -#: extmod/ulab/code/compare/compare.c extmod/ulab/code/ndarray.c -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/ndarray.c extmod/ulab/code/numpy/compare/compare.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "operands could not be broadcast together" msgstr "operander kan inte sändas tillsammans" @@ -3673,7 +3670,7 @@ msgstr "operander kan inte sändas tillsammans" msgid "operation is implemented for 1D Boolean arrays only" msgstr "operationen är enbart implementerad för 1D Boolean-matriser" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "operation is not implemented on ndarrays" msgstr "åtgärden är inte implementerad för ndarray:er" @@ -3690,6 +3687,14 @@ msgstr "ord förväntar sig ett tecken" msgid "ord() expected a character, but string of length %d found" msgstr "ord() förväntade sig ett tecken, men en sträng med längden %d hittades" +#: extmod/ulab/code/utils/utils.c +msgid "out array is too small" +msgstr "matrisen för out är för liten" + +#: extmod/ulab/code/utils/utils.c +msgid "out must be a float dense array" +msgstr "out måste vara en float dense array" + #: shared-bindings/displayio/Bitmap.c msgid "out of range of source" msgstr "utanför räckvidd för source" @@ -3819,7 +3824,7 @@ msgstr "köstorlek överskreds" msgid "raw f-strings are not implemented" msgstr "råa f-strängar inte implementerade" -#: extmod/ulab/code/fft/fft.c +#: extmod/ulab/code/numpy/fft/fft_tools.c msgid "real and imaginary parts must be of equal length" msgstr "verkliga och imaginära delar måste ha samma längd" @@ -3854,7 +3859,7 @@ msgstr "rgb_pins[%d] duplicerar en annan pinntilldelning" msgid "rgb_pins[%d] is not on the same port as clock" msgstr "rgb_pins[%d] är inte på samma port som en klocka" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "roll argument must be an ndarray" msgstr "argumentet roll måste vara en ndarray" @@ -3903,7 +3908,7 @@ msgstr "tecken tillåts inte med heltalsformatspecificeraren 'c'" msgid "single '}' encountered in format string" msgstr "Enkelt '}' påträffades i formatsträngen" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/ulab_tools.c msgid "size is defined for ndarrays only" msgstr "storlek är enbart definierad ndarrays" @@ -3927,19 +3932,19 @@ msgstr "värdet för small int överskreds" msgid "soft reboot\n" msgstr "mjuk omstart\n" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "sort argument must be an ndarray" msgstr "argumentet sort måste vara en ndarray" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "sos array must be of shape (n_section, 6)" msgstr "sos array måste ha form (n_section, 6)" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "sos[:, 3] should be all ones" msgstr "sos[:, 3] måste vara ettor" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "sosfilt requires iterable arguments" msgstr "sosfilt kräver iterable argument" @@ -4053,7 +4058,7 @@ msgstr "tobyte kan enbart anropas för täta matriser" msgid "too many arguments provided with the given format" msgstr "för många argument för det givna formatet" -#: extmod/ulab/code/ulab_create.c +#: extmod/ulab/code/ndarray.c extmod/ulab/code/ulab_create.c msgid "too many dimensions" msgstr "för många dimensioner" @@ -4066,11 +4071,11 @@ msgstr "för många index" msgid "too many values to unpack (expected %d)" msgstr "för många värden att packa upp (förväntat %d)" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/numpy/approx/approx.c msgid "trapz is defined for 1D arrays" msgstr "trapz är definierat för 1D-matriser" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/numpy/approx/approx.c msgid "trapz is defined for 1D arrays of equal length" msgstr "trapz är definierad för 1D-matriser med samma längd" @@ -4241,7 +4246,7 @@ msgstr "wifi är inte aktiverat" msgid "window must be <= interval" msgstr "window måste vara <= interval" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "wrong axis index" msgstr "fel axelindex" @@ -4249,7 +4254,8 @@ msgstr "fel axelindex" msgid "wrong axis specified" msgstr "fel axel angiven" -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/numpy/compare/compare.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "wrong input type" msgstr "fel indatatyp" @@ -4265,7 +4271,7 @@ msgstr "fel antal värden för att packa upp" msgid "wrong operand type" msgstr "fel operandtyp" -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "wrong output type" msgstr "fel utdatatyp" @@ -4289,18 +4295,60 @@ msgstr "y-värde utanför intervall" msgid "zero step" msgstr "noll steg" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "zi must be an ndarray" msgstr "zi måste vara en ndarray" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "zi must be of float type" msgstr "zi måste vara av typ float" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "zi must be of shape (n_section, 2)" msgstr "zi måste vara i formen (n_section, 2)" +#~ msgid "Attempted heap allocation when MicroPython VM not running." +#~ msgstr "Försökte tilldela heap när MicroPython VM inte körs." + +#~ msgid "MicroPython NLR jump failed. Likely memory corruption." +#~ msgstr "MicroPython NLR jump misslyckades. Troligen korrupt minne." + +#~ msgid "MicroPython fatal error." +#~ msgstr "MicroPython fatalt fel." + +#~ msgid "argument must be ndarray" +#~ msgstr "argument måste vara ndarray" + +#~ msgid "matrix dimensions do not match" +#~ msgstr "matrisdimensioner matchar inte" + +#~ msgid "norm is defined for 1D and 2D arrays" +#~ msgstr "norm är definierad för 1D- och 2D-matriser" + +#~ msgid "vectors must have same lengths" +#~ msgstr "vektorer måste ha samma längd" + +#~ msgid "Nordic Soft Device failure assertion." +#~ msgstr "Påståendet om Nordic Soft Device-fel." + +#~ msgid "Nordic soft device out of memory" +#~ msgstr "Nordic soft-enheten har slut på minne" + +#~ msgid "Unknown soft device error: %04x" +#~ msgstr "Okänt mjukvarufel: %04x" + +#~ msgid "first argument must be an iterable" +#~ msgstr "första argumentet måste vara en iterable" + +#~ msgid "iterables are not of the same length" +#~ msgstr "iterables är inte av samma längd" + +#~ msgid "Selected CTS pin not valid" +#~ msgstr "Vald CTS-pinne är inte giltig" + +#~ msgid "Selected RTS pin not valid" +#~ msgstr "Vald CTS-pinne är inte giltig" + #~ msgid "Could not initialize channel" #~ msgstr "Det gick inte att initiera kanalen" @@ -4329,12 +4377,6 @@ msgstr "zi måste vara i formen (n_section, 2)" #~ "Timern är reserverad för internt bruk - deklarera PWM-pinne tidigare i " #~ "programmet" -#~ msgid "matrix dimensions do not match" -#~ msgstr "matrisdimensioner matchar inte" - -#~ msgid "vectors must have same lengths" -#~ msgstr "vektorer måste ha samma längd" - #~ msgid "Group full" #~ msgstr "Gruppen är full" diff --git a/locale/zh_Latn_pinyin.po b/locale/zh_Latn_pinyin.po index 9e18ff3edc..fdcb46771c 100644 --- a/locale/zh_Latn_pinyin.po +++ b/locale/zh_Latn_pinyin.po @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: circuitpython-cn\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-01-04 12:55-0600\n" -"PO-Revision-Date: 2021-03-16 00:47+0000\n" +"PO-Revision-Date: 2021-03-29 08:26+0000\n" "Last-Translator: hexthat \n" "Language-Team: Chinese Hanyu Pinyin\n" "Language: zh_Latn_pinyin\n" @@ -15,7 +15,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 4.5.2-dev\n" +"X-Generator: Weblate 4.6-dev\n" #: main.c msgid "" @@ -350,7 +350,7 @@ msgstr "Suǒyǒu UART wàiwéi zhèngzài shǐyòng" #: shared-bindings/pwmio/PWMOut.c msgid "All channels in use" -msgstr "" +msgstr "suǒ yǒu shǐ yòng de tōng dào" #: ports/atmel-samd/common-hal/audioio/AudioOut.c msgid "All event channels in use" @@ -421,6 +421,10 @@ msgstr "AnalogOut jǐn wèi 16 wèi. Zhí bìxū xiǎoyú 65536." msgid "AnalogOut not supported on given pin" msgstr "Wèi zhīchí zhǐdìng de yǐn jiǎo AnalogOut" +#: ports/stm/common-hal/audiopwmio/PWMAudioOut.c +msgid "Another PWMAudioOut is already active" +msgstr "" + #: ports/atmel-samd/common-hal/pulseio/PulseOut.c #: ports/cxd56/common-hal/pulseio/PulseOut.c msgid "Another send is already active" @@ -444,8 +448,8 @@ msgid "Attempt to allocate %d blocks" msgstr "cháng shì fēn pèi %d kuài" #: supervisor/shared/safe_mode.c -msgid "Attempted heap allocation when MicroPython VM not running." -msgstr "MicroPython VM zài wèi yùnxíng shí chángshì fēnpèi duī." +msgid "Attempted heap allocation when VM not running." +msgstr "" #: shared-bindings/wifi/Radio.c msgid "Authentication failure" @@ -537,6 +541,7 @@ msgid "Buffer is too small" msgstr "Huǎnchōng qū tài xiǎo" #: ports/nrf/common-hal/audiopwmio/PWMAudioOut.c +#: ports/stm/common-hal/audiopwmio/PWMAudioOut.c #, c-format msgid "Buffer length %d too big. It must be less than %d" msgstr "Huǎnchōng qū chángdù%d tài dà. Tā bìxū xiǎoyú%d" @@ -945,11 +950,11 @@ msgstr "Qīwàng de chángdù wèi %d de yuán zǔ, dédào %d" msgid "Extended advertisements with scan response not supported." msgstr "Bù zhīchí dài yǒu sǎomiáo xiǎngyìng de kuòzhǎn guǎngbò." -#: extmod/ulab/code/fft/fft.c +#: extmod/ulab/code/numpy/fft/fft_tools.c msgid "FFT is defined for ndarrays only" msgstr "FFT jǐn wéi ndarrays dìng yì" -#: extmod/ulab/code/fft/fft.c +#: extmod/ulab/code/numpy/fft/fft_tools.c msgid "FFT is implemented for linear arrays only" msgstr "FFT jǐn shì yòng yú xiàn xìng zhèn liè" @@ -990,6 +995,10 @@ msgstr "Wúfǎ fēnpèi Wifi nèicún" msgid "Failed to allocate wifi scan memory" msgstr "Wúfǎ fēnpèi wifi sǎomiáo nèicún" +#: ports/stm/common-hal/audiopwmio/PWMAudioOut.c +msgid "Failed to buffer the sample" +msgstr "" + #: ports/nrf/common-hal/_bleio/Adapter.c msgid "Failed to connect: internal error" msgstr "Liánjiē shībài: Nèibù cuòwù" @@ -1015,6 +1024,10 @@ msgstr "Wúfǎ shìfàng mutex, err 0x%04x" msgid "Failed to write internal flash." msgstr "Wúfǎ xiě rù nèibù shǎncún." +#: supervisor/shared/safe_mode.c +msgid "Fatal error." +msgstr "" + #: py/moduerrno.c msgid "File exists" msgstr "Wénjiàn cúnzài" @@ -1194,6 +1207,7 @@ msgstr "wú xiào %q" #: ports/atmel-samd/common-hal/audiobusio/I2SOut.c #: ports/atmel-samd/common-hal/audiobusio/PDMIn.c +#: ports/mimxrt10xx/common-hal/busio/UART.c msgid "Invalid %q pin" msgstr "Wúxiào de %q yǐn jiǎo" @@ -1221,7 +1235,9 @@ msgid "Invalid DAC pin supplied" msgstr "Tí gōng liǎo wúxiào de DAC yǐn jiǎo" #: ports/atmel-samd/common-hal/pwmio/PWMOut.c -#: ports/cxd56/common-hal/pwmio/PWMOut.c ports/nrf/common-hal/pwmio/PWMOut.c +#: ports/cxd56/common-hal/pwmio/PWMOut.c +#: ports/mimxrt10xx/common-hal/pwmio/PWMOut.c +#: ports/nrf/common-hal/pwmio/PWMOut.c #: ports/raspberrypi/common-hal/pwmio/PWMOut.c shared-bindings/pwmio/PWMOut.c msgid "Invalid PWM frequency" msgstr "Wúxiào de PWM pínlǜ" @@ -1409,14 +1425,6 @@ msgstr "Jìngxiàng shí de zuìdà X zhí wèi%d" msgid "Messages limited to 8 bytes" msgstr "Yóujiàn xiànzhì wèi 8 gè zì jié" -#: supervisor/shared/safe_mode.c -msgid "MicroPython NLR jump failed. Likely memory corruption." -msgstr "MicroPython NLR tiào zhuǎn shībài. Kěnéng shì nèicún sǔnhuài." - -#: supervisor/shared/safe_mode.c -msgid "MicroPython fatal error." -msgstr "MicroPython zhìmìng cuòwù." - #: shared-bindings/audiobusio/PDMIn.c msgid "Microphone startup delay must be in range 0.0 to 1.0" msgstr "Màikèfēng qǐdòng yánchí bìxū zài 0.0 Dào 1.0 De fànwéi nèi" @@ -1469,6 +1477,10 @@ msgstr "Bìxū tígōng MISO huò MOSI yǐn jiǎo" msgid "Must use a multiple of 6 rgb pins, not %d" msgstr "bì xū shǐ yòng 6 RGB yǐn jiǎo de bèi shù, ér bù shì %d" +#: supervisor/shared/safe_mode.c +msgid "NLR jump failed. Likely memory corruption." +msgstr "" + #: ports/esp32s2/common-hal/nvm/ByteArray.c msgid "NVS Error" msgstr "NVS cuò wù" @@ -1602,8 +1614,12 @@ msgid "No timer available" msgstr "Méiyǒu jìshí qì" #: supervisor/shared/safe_mode.c -msgid "Nordic Soft Device failure assertion." -msgstr "Nordic ruǎn shèbèi gùzhàng shēngmíng." +msgid "Nordic system firmware failure assertion." +msgstr "" + +#: ports/nrf/common-hal/_bleio/__init__.c +msgid "Nordic system firmware out of memory" +msgstr "" #: shared-bindings/ipaddress/IPv4Address.c shared-bindings/ipaddress/__init__.c msgid "Not a valid IP string" @@ -1913,7 +1929,7 @@ msgstr "Zhǐ dú" msgid "Read-only filesystem" msgstr "Zhǐ dú wénjiàn xìtǒng" -#: shared-module/bitmaptools/__init__.c shared-module/displayio/Bitmap.c +#: shared-module/displayio/Bitmap.c msgid "Read-only object" msgstr "Zhǐ dú duìxiàng" @@ -1988,14 +2004,6 @@ msgstr "Cǎiyàng lǜ tài gāo. Tā bìxū xiǎoyú %d" msgid "Scan already in progess. Stop with stop_scan." msgstr "Zhèngzài jìn háng sǎomiáo. Shǐyòng stop_scan tíngzhǐ." -#: ports/mimxrt10xx/common-hal/busio/UART.c -msgid "Selected CTS pin not valid" -msgstr "Suǒ xuǎn de CTS yǐn jiǎo wúxiào" - -#: ports/mimxrt10xx/common-hal/busio/UART.c -msgid "Selected RTS pin not valid" -msgstr "Suǒ xuǎn de RTS yǐn jiǎo wúxiào" - #: ports/atmel-samd/common-hal/audiobusio/I2SOut.c #: ports/atmel-samd/common-hal/audiobusio/PDMIn.c msgid "Serializer in use" @@ -2279,8 +2287,8 @@ msgstr "Wèizhī de ānquán cuòwù: 0x%04x" #: ports/nrf/common-hal/_bleio/__init__.c #, c-format -msgid "Unknown soft device error: %04x" -msgstr "Wèizhī de ruǎn shèbèi cuòwù: %04x" +msgid "Unknown system firmware error: %04x" +msgstr "" #: shared-bindings/_pixelbuf/PixelBuf.c #, c-format @@ -2442,11 +2450,11 @@ msgstr "dìzhǐ wèi kōng" msgid "arg is an empty sequence" msgstr "cānshù shì yīgè kōng de xùliè" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "argsort argument must be an ndarray" msgstr "argsort cānshù bìxū shì ndarray" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "argsort is not implemented for flattened arrays" msgstr "wèi wéi pīn hé shù zǔ shí xiàn argsort" @@ -2454,10 +2462,6 @@ msgstr "wèi wéi pīn hé shù zǔ shí xiàn argsort" msgid "argument has wrong type" msgstr "cānshù lèixíng cuòwù" -#: extmod/ulab/code/linalg/linalg.c -msgid "argument must be ndarray" -msgstr "Cānshù bìxū shì ndarray" - #: py/argcheck.c shared-bindings/_stage/__init__.c #: shared-bindings/digitalio/DigitalInOut.c shared-bindings/gamepad/GamePad.c msgid "argument num/types mismatch" @@ -2467,7 +2471,8 @@ msgstr "cānshù biānhào/lèixíng bù pǐpèi" msgid "argument should be a '%q' not a '%q'" msgstr "cānshù yīnggāi shì '%q', 'bùshì '%q'" -#: extmod/ulab/code/linalg/linalg.c extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c +#: extmod/ulab/code/numpy/transform/transform.c msgid "arguments must be ndarrays" msgstr "cānshù bìxū shì ndarrays" @@ -2480,11 +2485,11 @@ msgstr "shù zǔ hé suǒ yǐn cháng dù bì xū xiāng děng" msgid "array/bytes required on right side" msgstr "yòu cè xūyào shùzǔ/zì jié" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "attempt to get (arg)min/(arg)max of empty sequence" msgstr "cháng shì huò qǔ (arg) zuì xiǎo zhí /(arg) zuì dà kōng xù liè" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "attempt to get argmin/argmax of an empty sequence" msgstr "chángshì huòqǔ kōng xùliè de argmin/ argmax" @@ -2492,15 +2497,15 @@ msgstr "chángshì huòqǔ kōng xùliè de argmin/ argmax" msgid "attributes not supported yet" msgstr "shǔxìng shàngwèi zhīchí" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "axis is out of bounds" msgstr "zhóu chāo chū biān jiè" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c extmod/ulab/code/ulab_tools.c msgid "axis must be None, or an integer" msgstr "zhóu bì xū wéi \" wú \" huò zhěng shù" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "axis too long" msgstr "zhóu tài cháng" @@ -2536,7 +2541,7 @@ msgstr "měi jiàn yàngběn bìxū wèi 8 huò 16" msgid "branch not in range" msgstr "fēnzhī bùzài fànwéi nèi" -#: extmod/ulab/code/ulab_create.c +#: extmod/ulab/code/ulab_create.c extmod/ulab/code/utils/utils.c msgid "buffer is smaller than requested size" msgstr "huǎn chōng qū xiǎo yú qǐng qiú de dà xiǎo" @@ -2544,7 +2549,7 @@ msgstr "huǎn chōng qū xiǎo yú qǐng qiú de dà xiǎo" msgid "buffer must be a bytes-like object" msgstr "huǎnchōng qū bìxū shì zì jié lèi duìxiàng" -#: extmod/ulab/code/ulab_create.c +#: extmod/ulab/code/ulab_create.c extmod/ulab/code/utils/utils.c msgid "buffer size must be a multiple of element size" msgstr "huǎn chōng qū dà xiǎo bì xū shì yuán sù dà xiǎo de bèi shù" @@ -2805,19 +2810,19 @@ msgstr "chángshù bìxū shì yīgè zhěngshù" msgid "conversion to object" msgstr "zhuǎnhuàn wèi duìxiàng" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/numpy/filter/filter.c msgid "convolve arguments must be linear arrays" msgstr "juàn jī cānshù bìxū shì xiànxìng shùzǔ" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/numpy/filter/filter.c msgid "convolve arguments must be ndarrays" msgstr "juàn jī cānshù bìxū shì ndarrays" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/numpy/filter/filter.c msgid "convolve arguments must not be empty" msgstr "juàn jī cān shǔ bùnéng wéi kōng" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "could not invert Vandermonde matrix" msgstr "wúfǎ fǎn zhuǎn fàndéméng dé jǔzhèn" @@ -2825,15 +2830,15 @@ msgstr "wúfǎ fǎn zhuǎn fàndéméng dé jǔzhèn" msgid "couldn't determine SD card version" msgstr "wúfǎ quèdìng SD kǎ bǎnběn" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "cross is defined for 1D arrays of length 3" msgstr "duì yú cháng dù wéi 3 de 1D shù zǔ dìng yì cross" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "data must be iterable" msgstr "shùjù bìxū shì kě diédài de" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "data must be of equal length" msgstr "shùjù chángdù bìxū xiāngděng" @@ -2872,17 +2877,17 @@ msgstr "mùbiāo chángdù bìxū shì > = 0 de zhěngshù" msgid "dict update sequence has wrong length" msgstr "yǔfǎ gēngxīn xùliè de chángdù cuòwù" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "diff argument must be an ndarray" msgstr "bùtóng de cānshù bìxū shì ndarray" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "differentiation order out of range" msgstr "chā yì shùn xù fàn wéi" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/transform/transform.c msgid "dimensions do not match" -msgstr "" +msgstr "chǐ cùn bù pǐ pèi" #: py/modmath.c py/objfloat.c py/objint_longlong.c py/objint_mpz.c py/runtime.c #: shared-bindings/math/__init__.c @@ -2999,11 +3004,11 @@ msgstr "wénjiàn bìxū shì zài zì jié móshì xià dǎkāi de wénjiàn" msgid "filesystem must provide mount method" msgstr "wénjiàn xìtǒng bìxū tígōng guà zài fāngfǎ" -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "first argument must be a callable" msgstr "dì yī gè cānshù bìxū shì kě tiáo yòng de" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "first argument must be a function" msgstr "dì yīgè cānshù bìxū shì yī gè hánshù" @@ -3011,11 +3016,7 @@ msgstr "dì yīgè cānshù bìxū shì yī gè hánshù" msgid "first argument must be a tuple of ndarrays" msgstr "dì yī gè cān shù bì xū shì yí gè yuán zǔ ndarrays" -#: extmod/ulab/code/ndarray.c -msgid "first argument must be an iterable" -msgstr "dì yī gè cānshù bìxū shì kě diédài de" - -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "first argument must be an ndarray" msgstr "dì yī gè cānshù bìxū shì ndarray" @@ -3027,7 +3028,7 @@ msgstr "chāojí () de dì yī gè cānshù bìxū shì lèixíng" msgid "flattening order must be either 'C', or 'F'" msgstr "īnhé shùnxù bìxū wèi 'C' huò 'F'" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "flip argument must be an ndarray" msgstr "fānzhuǎn shēn shù bìxū shì ndarray" @@ -3060,7 +3061,7 @@ msgstr "hánshù yùjì zuìduō %d cānshù, huòdé %d" msgid "function got multiple values for argument '%q'" msgstr "hánshù huòdé cānshù '%q' de duōchóng zhí" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "function has the same sign at the ends of interval" msgstr "hánshù zài jiàngé mòwěi jùyǒu xiāngtóng de fúhào" @@ -3135,7 +3136,7 @@ msgstr "bù zhèngquè de tiánchōng" msgid "index is out of bounds" msgstr "suǒyǐn chāochū fànwéi" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c extmod/ulab/code/ulab_tools.c #: ports/esp32s2/common-hal/pulseio/PulseIn.c py/obj.c #: shared-bindings/bitmaptools/__init__.c msgid "index out of range" @@ -3149,7 +3150,7 @@ msgstr "suǒyǐn bìxū shì zhěngshù" msgid "indices must be integers, slices, or Boolean lists" msgstr "suǒyǐn bìxū shì zhěngshù, qiēpiàn huò bù'ěr zhí lièbiǎo" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "initial values must be iterable" msgstr "chūshǐ zhí bìxū shì kě diédài de" @@ -3169,7 +3170,7 @@ msgstr "shū rù hé shū chū xíng zhuàng bù jiān róng" msgid "input argument must be an integer, a tuple, or a list" msgstr "shū rù cān shù bì xū shì zhěng shù, yuán zǔ huò liè biǎo" -#: extmod/ulab/code/fft/fft.c +#: extmod/ulab/code/numpy/fft/fft_tools.c msgid "input array length must be power of 2" msgstr "shūrù shùzǔ de chángdù bìxū shì 2 de mì" @@ -3177,15 +3178,15 @@ msgstr "shūrù shùzǔ de chángdù bìxū shì 2 de mì" msgid "input arrays are not compatible" msgstr "shū rù shù zǔ bù jiān róng" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "input data must be an iterable" msgstr "shūrù shùjù bìxū shì kě diédài de" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/linalg/linalg.c msgid "input matrix is asymmetric" msgstr "shūrù jǔzhèn bù duìchèn" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/linalg/linalg.c msgid "input matrix is singular" msgstr "shūrù jǔzhèn shì qíyì de" @@ -3201,23 +3202,23 @@ msgstr "shū rù bì xū shì děng jí 2 de zhāng liàng" msgid "input must be an ndarray" msgstr "shū rù bì xū shì ndarray" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "input must be one-dimensional" msgstr "shū rù bì xū shì yì wéi de" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/ulab_tools.c msgid "input must be square matrix" msgstr "shūrù bìxū wèi fāng jǔzhèn" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "input must be tuple, list, range, or ndarray" msgstr "shūrù bìxū shì yuán zǔ, lièbiǎo, fànwéi huò ndarray" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "input vectors must be of equal length" msgstr "shūrù xiàngliàng de chángdù bìxū xiāngděng" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "inputs are not iterable" msgstr "shū rù bù kě yí dòng" @@ -3229,7 +3230,7 @@ msgstr "zhěngshù() cānshù 2 bìxū > = 2 qiě <= 36" msgid "integer required" msgstr "xūyào zhěngshù" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/numpy/approx/approx.c msgid "interp is defined for 1D arrays of equal length" msgstr "interp shì wèi děng zhǎng de 1D shùzǔ dìngyì de" @@ -3245,12 +3246,16 @@ msgstr "wúxiào de cānshù" #: shared-bindings/bitmaptools/__init__.c #, c-format msgid "invalid bits_per_pixel %d, must be, 1, 4, 8, 16, 24, or 32" -msgstr "" +msgstr "wú xiào bits_per_pixel %d, bì xū shì, 1, 4, 8, 16, 24, huò 32" #: extmod/modussl_axtls.c msgid "invalid cert" msgstr "zhèngshū wúxiào" +#: py/compile.c +msgid "invalid decorator" +msgstr "" + #: extmod/uos_dupterm.c msgid "invalid dupterm index" msgstr "dupterm suǒyǐn wúxiào" @@ -3258,12 +3263,12 @@ msgstr "dupterm suǒyǐn wúxiào" #: shared-bindings/bitmaptools/__init__.c #, c-format msgid "invalid element size %d for bits_per_pixel %d\n" -msgstr "" +msgstr "wú xiào yuán jiàn dà xiǎo %d wéi bits_per_pixel %d\n" #: shared-bindings/bitmaptools/__init__.c #, c-format msgid "invalid element_size %d, must be, 1, 2, or 4" -msgstr "" +msgstr "wú xiào element_size %d, bì xū shì, 1, 2, huò 4" #: extmod/modframebuf.c msgid "invalid format" @@ -3318,11 +3323,7 @@ msgstr "issubclass() cānshù 1 bìxū shì yīgè lèi" msgid "issubclass() arg 2 must be a class or a tuple of classes" msgstr "issubclass() cānshù 2 bìxū shì lèi de lèi huò yuán zǔ" -#: extmod/ulab/code/ndarray.c -msgid "iterables are not of the same length" -msgstr "kě diédài xiàng de chángdù bùtóng" - -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/linalg/linalg.c msgid "iterations did not converge" msgstr "diédài méiyǒu shōuliǎn" @@ -3391,7 +3392,7 @@ msgstr "dìtú huǎnchōng qū tài xiǎo" msgid "math domain error" msgstr "shùxué yù cuòwù" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/numpy/linalg/linalg.c msgid "matrix is not positive definite" msgstr "jǔzhèn bùshì zhèngdìng de" @@ -3413,15 +3414,15 @@ msgstr "zuì dà chǐ cùn shù wéi 4" msgid "maximum recursion depth exceeded" msgstr "chāochū zuìdà dìguī shēndù" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "maxiter must be > 0" msgstr "maxiter bì xū > 0" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/scipy/optimize/optimize.c msgid "maxiter should be > 0" msgstr "maxiter yìng wéi > 0" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "median argument must be an ndarray" msgstr "zhōng wèi shù cān shù bì xū shì ndarray" @@ -3442,7 +3443,7 @@ msgstr "nèi cún shì tú: cháng dù bú shì xiàng mù huà de bèi shù" msgid "module not found" msgstr "zhǎo bù dào mókuài" -#: extmod/ulab/code/poly/poly.c +#: extmod/ulab/code/numpy/poly/poly.c msgid "more degrees of freedom than data points" msgstr "bǐ shùjù diǎn gèng duō de zìyóu dù" @@ -3560,10 +3561,6 @@ msgstr "fēi líng chāo shí bì xū > 0.01" msgid "non-zero timeout must be >= interval" msgstr "fēi líng chāo shí bì xū wéi >= jiàn gé" -#: extmod/ulab/code/linalg/linalg.c -msgid "norm is defined for 1D and 2D arrays" -msgstr "wéi 1D hé 2D shù zǔ dìng yì guī fàn" - #: shared-bindings/_bleio/UUID.c msgid "not a 128-bit UUID" msgstr "bùshì 128 wèi UUID" @@ -3632,7 +3629,7 @@ msgstr "xūyào huǎnchōng qū xiéyì de duìxiàng" msgid "odd-length string" msgstr "jīshù zìfú chuàn" -#: extmod/ulab/code/ulab_create.c +#: extmod/ulab/code/ulab_create.c extmod/ulab/code/utils/utils.c msgid "offset is too large" msgstr "piān yí tài dà" @@ -3661,8 +3658,8 @@ msgstr "Jǐn zhīchí cǎiyàng lǜ = 16000" msgid "only slices with step=1 (aka None) are supported" msgstr "jǐn zhīchí bù zhǎng = 1(jí wú) de qiēpiàn" -#: extmod/ulab/code/compare/compare.c extmod/ulab/code/ndarray.c -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/ndarray.c extmod/ulab/code/numpy/compare/compare.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "operands could not be broadcast together" msgstr "cāozuò shǔ bùnéng yīqǐ guǎngbò" @@ -3670,7 +3667,7 @@ msgstr "cāozuò shǔ bùnéng yīqǐ guǎngbò" msgid "operation is implemented for 1D Boolean arrays only" msgstr "jǐn duì 1D bù ěr shù zǔ shí xiàn cāo zuò" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "operation is not implemented on ndarrays" msgstr "cāozuò wèi zài ndarrays shàng shíxiàn" @@ -3687,6 +3684,14 @@ msgstr "ord yùqí zìfú" msgid "ord() expected a character, but string of length %d found" msgstr "ord() yùqí zìfú, dàn chángdù zìfú chuàn %d" +#: extmod/ulab/code/utils/utils.c +msgid "out array is too small" +msgstr "" + +#: extmod/ulab/code/utils/utils.c +msgid "out must be a float dense array" +msgstr "" + #: shared-bindings/displayio/Bitmap.c msgid "out of range of source" msgstr "yuán fàn wéi wài" @@ -3815,7 +3820,7 @@ msgstr "duìliè yìchū" msgid "raw f-strings are not implemented" msgstr "wèi zhíxíng yuánshǐ f-strings" -#: extmod/ulab/code/fft/fft.c +#: extmod/ulab/code/numpy/fft/fft_tools.c msgid "real and imaginary parts must be of equal length" msgstr "shí bù hé xū bù bìxū děng zhǎng" @@ -3850,7 +3855,7 @@ msgstr "rgb_pins[%d] fùzhì lìng yīgè yǐn jiǎo fēnpèi" msgid "rgb_pins[%d] is not on the same port as clock" msgstr "rgb_pins[%d] yǔ shízhōng bùzài tóng yīgè duānkǒu shàng" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "roll argument must be an ndarray" msgstr "gǔn dòng cān shù bì xū shì ndarray" @@ -3899,7 +3904,7 @@ msgstr "zhěngshù géshì shuōmíng fú 'c' bù yǔnxǔ shǐyòng fúhào" msgid "single '}' encountered in format string" msgstr "zài géshì zìfú chuàn zhōng yù dào de dāngè '}'" -#: extmod/ulab/code/linalg/linalg.c +#: extmod/ulab/code/ulab_tools.c msgid "size is defined for ndarrays only" msgstr "dàxiǎo jǐn wèi ndarrays dìngyì" @@ -3923,19 +3928,19 @@ msgstr "xiǎo zhěngshù yìchū" msgid "soft reboot\n" msgstr "ruǎn chóngqǐ\n" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "sort argument must be an ndarray" msgstr "páixù cānshù bìxū shì ndarray" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "sos array must be of shape (n_section, 6)" msgstr "sos shùzǔ de xíngzhuàng bìxū wèi (n_section, 6)" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "sos[:, 3] should be all ones" msgstr "sos [:, 3] yīnggāi quán shì" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "sosfilt requires iterable arguments" msgstr "sosfilt xūyào diédài cānshù" @@ -4049,7 +4054,7 @@ msgstr "tobytes zhǐ néng duì mì jí shù zǔ diào yòng" msgid "too many arguments provided with the given format" msgstr "tígōng jǐ dìng géshì de cānshù tài duō" -#: extmod/ulab/code/ulab_create.c +#: extmod/ulab/code/ndarray.c extmod/ulab/code/ulab_create.c msgid "too many dimensions" msgstr "chǐ cùn tài duō" @@ -4062,11 +4067,11 @@ msgstr "suǒyǐn tài duō" msgid "too many values to unpack (expected %d)" msgstr "dǎkāi tài duō zhí (yùqí %d)" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/numpy/approx/approx.c msgid "trapz is defined for 1D arrays" msgstr "wéi 1D shù zǔ dìng yì xiàn jǐng" -#: extmod/ulab/code/approx/approx.c +#: extmod/ulab/code/numpy/approx/approx.c msgid "trapz is defined for 1D arrays of equal length" msgstr "Trapz shì wèi děng zhǎng de 1D shùzǔ dìngyì de" @@ -4237,7 +4242,7 @@ msgstr "wèi qǐ yòng WIFI" msgid "window must be <= interval" msgstr "Chuāngkǒu bìxū shì <= jiàngé" -#: extmod/ulab/code/numerical/numerical.c +#: extmod/ulab/code/numpy/numerical/numerical.c msgid "wrong axis index" msgstr "cuò wù de zhóu suǒ yǐn" @@ -4245,7 +4250,8 @@ msgstr "cuò wù de zhóu suǒ yǐn" msgid "wrong axis specified" msgstr "zhǐ dìng de zhóu cuò wù" -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/numpy/compare/compare.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "wrong input type" msgstr "shūrù lèixíng cuòwù" @@ -4261,7 +4267,7 @@ msgstr "wúfǎ jiě bāo de zhí shù" msgid "wrong operand type" msgstr "cuòwù de cāozuò shù lèixíng" -#: extmod/ulab/code/vector/vectorise.c +#: extmod/ulab/code/numpy/vector/vector.c msgid "wrong output type" msgstr "cuòwù de shūchū lèixíng" @@ -4285,18 +4291,57 @@ msgstr "y zhí chāochū biānjiè" msgid "zero step" msgstr "líng bù" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "zi must be an ndarray" msgstr "zi bìxū shì ndarray" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "zi must be of float type" msgstr "zi bìxū wèi fú diǎn xíng" -#: extmod/ulab/code/filter/filter.c +#: extmod/ulab/code/scipy/signal/signal.c msgid "zi must be of shape (n_section, 2)" msgstr "zi bìxū jùyǒu xíngzhuàng (n_section,2)" +#~ msgid "Attempted heap allocation when MicroPython VM not running." +#~ msgstr "MicroPython VM zài wèi yùnxíng shí chángshì fēnpèi duī." + +#~ msgid "MicroPython NLR jump failed. Likely memory corruption." +#~ msgstr "MicroPython NLR tiào zhuǎn shībài. Kěnéng shì nèicún sǔnhuài." + +#~ msgid "MicroPython fatal error." +#~ msgstr "MicroPython zhìmìng cuòwù." + +#~ msgid "argument must be ndarray" +#~ msgstr "Cānshù bìxū shì ndarray" + +#~ msgid "matrix dimensions do not match" +#~ msgstr "jǔzhèn chǐcùn bù pǐpèi" + +#~ msgid "norm is defined for 1D and 2D arrays" +#~ msgstr "wéi 1D hé 2D shù zǔ dìng yì guī fàn" + +#~ msgid "vectors must have same lengths" +#~ msgstr "xiàngliàng bìxū jùyǒu xiāngtóng de chángdù" + +#~ msgid "Nordic Soft Device failure assertion." +#~ msgstr "Nordic ruǎn shèbèi gùzhàng shēngmíng." + +#~ msgid "Unknown soft device error: %04x" +#~ msgstr "Wèizhī de ruǎn shèbèi cuòwù: %04x" + +#~ msgid "first argument must be an iterable" +#~ msgstr "dì yī gè cānshù bìxū shì kě diédài de" + +#~ msgid "iterables are not of the same length" +#~ msgstr "kě diédài xiàng de chángdù bùtóng" + +#~ msgid "Selected CTS pin not valid" +#~ msgstr "Suǒ xuǎn de CTS yǐn jiǎo wúxiào" + +#~ msgid "Selected RTS pin not valid" +#~ msgstr "Suǒ xuǎn de RTS yǐn jiǎo wúxiào" + #~ msgid "Could not initialize channel" #~ msgstr "Wúfǎ chūshǐhuà píndào" @@ -4325,12 +4370,6 @@ msgstr "zi bìxū jùyǒu xíngzhuàng (n_section,2)" #~ "Dìngshí qì bǎoliú gōng nèibù shǐyòng-zài chéngxù de qiánmiàn shēngmíng " #~ "PWM yǐn jiǎo" -#~ msgid "matrix dimensions do not match" -#~ msgstr "jǔzhèn chǐcùn bù pǐpèi" - -#~ msgid "vectors must have same lengths" -#~ msgstr "xiàngliàng bìxū jùyǒu xiāngtóng de chángdù" - #~ msgid "Group full" #~ msgstr "Fēnzǔ yǐ mǎn" diff --git a/main.c b/main.c index 7df6e293aa..1e828a1aa7 100755 --- a/main.c +++ b/main.c @@ -161,7 +161,7 @@ STATIC void start_mp(supervisor_allocation* heap) { #if CIRCUITPY_ALARM // Record which alarm woke us up, if any. An object may be created so the heap must be functional. - alarm_save_wake_alarm(); + shared_alarm_save_wake_alarm(); // Reset alarm module only after we retrieved the wakeup alarm. alarm_reset(); #endif @@ -305,8 +305,6 @@ STATIC bool run_code_py(safe_mode_t safe_mode) { } #endif - // TODO: on deep sleep, make sure display is refreshed before sleeping (for e-ink). - cleanup_after_vm(heap); if (result.return_code & PYEXEC_FORCED_EXIT) { @@ -329,12 +327,12 @@ STATIC bool run_code_py(safe_mode_t safe_mode) { rgb_status_animation_t animation; prep_rgb_status_animation(&result, found_main, safe_mode, &animation); - bool asleep = false; + bool fake_sleeping = false; while (true) { RUN_BACKGROUND_TASKS; if (reload_requested) { #if CIRCUITPY_ALARM - if (asleep) { + if (fake_sleeping) { board_init(); } #endif @@ -345,7 +343,7 @@ STATIC bool run_code_py(safe_mode_t safe_mode) { if (serial_connected() && serial_bytes_available()) { #if CIRCUITPY_ALARM - if (asleep) { + if (fake_sleeping) { board_init(); } #endif @@ -361,7 +359,7 @@ STATIC bool run_code_py(safe_mode_t safe_mode) { // an alarm alerts faster than our USB delay or if we pretended to deep // sleep. #if CIRCUITPY_ALARM - if (asleep && alarm_woken_from_sleep()) { + if (fake_sleeping && common_hal_alarm_woken_from_sleep()) { serial_write_compressed(translate("Woken up by alarm.\n")); board_init(); supervisor_set_run_reason(RUN_REASON_STARTUP); @@ -400,20 +398,15 @@ STATIC bool run_code_py(safe_mode_t safe_mode) { if (result.return_code & PYEXEC_DEEP_SLEEP) { // Make sure we have been awake long enough for USB to connect (enumeration delay). int64_t connecting_delay_ticks = CIRCUITPY_USB_CONNECTED_SLEEP_DELAY * 1024 - port_get_raw_ticks(NULL); - if (connecting_delay_ticks > 0) { - // Set when we've waited long enough so that we wake up from the - // port_idle_until_interrupt below and loop around to the real deep - // sleep in the else clause. - port_interrupt_after_ticks(connecting_delay_ticks); - // Deep sleep if we're not connected to a host. - } else if (!asleep) { - asleep = true; + // Until it's safe to decide whether we're real/fake sleeping, just run the RGB + if (connecting_delay_ticks < 0 && !fake_sleeping) { + fake_sleeping = true; new_status_color(BLACK); board_deinit(); if (!supervisor_workflow_active()) { // Enter true deep sleep. When we wake up we'll be back at the // top of main(), not in this loop. - alarm_enter_deep_sleep(); + common_hal_alarm_enter_deep_sleep(); // Does not return. } else { serial_write_compressed(translate("Pretending to deep sleep until alarm, CTRL-C or file write.\n")); @@ -422,7 +415,7 @@ STATIC bool run_code_py(safe_mode_t safe_mode) { } #endif - if (!asleep) { + if (!fake_sleeping) { tick_rgb_status_animation(&animation); } else { // This waits until a pretend deep sleep alarm occurs. They are set @@ -430,7 +423,11 @@ STATIC bool run_code_py(safe_mode_t safe_mode) { // it may also return due to another interrupt, that's why we check // for deep sleep alarms above. If it wasn't a deep sleep alarm, // then we'll idle here again. - port_idle_until_interrupt(); + #if CIRCUITPY_ALARM + common_hal_alarm_pretending_deep_sleep(); + #else + port_idle_until_interrupt(); + #endif } } } diff --git a/ports/atmel-samd/boards/8086_commander/mpconfigboard.mk b/ports/atmel-samd/boards/8086_commander/mpconfigboard.mk index dc56219fe1..c7918ad05c 100644 --- a/ports/atmel-samd/boards/8086_commander/mpconfigboard.mk +++ b/ports/atmel-samd/boards/8086_commander/mpconfigboard.mk @@ -7,7 +7,7 @@ CHIP_VARIANT = SAMD21G18A CHIP_FAMILY = samd21 SPI_FLASH_FILESYSTEM = 1 -EXTERNAL_FLASH_DEVICES = "W25Q128JV_SQ" +EXTERNAL_FLASH_DEVICES = "W25Q128JVxQ" LONGINT_IMPL = NONE CIRCUITPY_FULL_BUILD = 0 diff --git a/ports/atmel-samd/boards/bdmicro_vina_d51/board.c b/ports/atmel-samd/boards/bdmicro_vina_d51/board.c index bb6ad8bc0d..7af05ba45a 100644 --- a/ports/atmel-samd/boards/bdmicro_vina_d51/board.c +++ b/ports/atmel-samd/boards/bdmicro_vina_d51/board.c @@ -26,17 +26,9 @@ #include "supervisor/board.h" #include "mpconfigboard.h" +#include "hal/include/hal_gpio.h" void board_init(void) { - // struct port_config pin_conf; - // port_get_config_defaults(&pin_conf); - // - // pin_conf.direction = PORT_PIN_DIR_OUTPUT; - // port_pin_set_config(MICROPY_HW_LED_TX, &pin_conf); - // port_pin_set_output_level(MICROPY_HW_LED_TX, true); - // - // port_pin_set_config(MICROPY_HW_LED_RX, &pin_conf); - // port_pin_set_output_level(MICROPY_HW_LED_RX, true); } bool board_requests_safe_mode(void) { diff --git a/ports/atmel-samd/boards/bdmicro_vina_d51/mpconfigboard.h b/ports/atmel-samd/boards/bdmicro_vina_d51/mpconfigboard.h index 8b015df05e..24d78b8ed1 100644 --- a/ports/atmel-samd/boards/bdmicro_vina_d51/mpconfigboard.h +++ b/ports/atmel-samd/boards/bdmicro_vina_d51/mpconfigboard.h @@ -1,3 +1,6 @@ +// More than one revision of this board is available. +// This board specifies PCB Revision 10 + #define MICROPY_HW_BOARD_NAME "BDMICRO VINA-D51" #define MICROPY_HW_MCU_NAME "samd51n20" @@ -12,13 +15,13 @@ #define BOARD_HAS_CRYSTAL 1 -#define DEFAULT_I2C_BUS_SCL (&pin_PA16) -#define DEFAULT_I2C_BUS_SDA (&pin_PA17) -#define DEFAULT_UART_BUS_RX (&pin_PB20) +#define DEFAULT_I2C_BUS_SCL (&pin_PA12) +#define DEFAULT_I2C_BUS_SDA (&pin_PA13) #define DEFAULT_UART_BUS_TX (&pin_PB21) +#define DEFAULT_UART_BUS_RX (&pin_PB20) +#define DEFAULT_SPI_BUS_SCK (&pin_PC28) #define DEFAULT_SPI_BUS_MISO (&pin_PB23) #define DEFAULT_SPI_BUS_MOSI (&pin_PC27) -#define DEFAULT_SPI_BUS_SCK (&pin_PC28) #define MICROPY_HW_LED_STATUS (&pin_PA23) #define MICROPY_HW_LED_RX (&pin_PC05) #define MICROPY_HW_LED_TX (&pin_PC06) diff --git a/ports/atmel-samd/boards/bdmicro_vina_d51/mpconfigboard.mk b/ports/atmel-samd/boards/bdmicro_vina_d51/mpconfigboard.mk index de350f7ab0..13487413f4 100644 --- a/ports/atmel-samd/boards/bdmicro_vina_d51/mpconfigboard.mk +++ b/ports/atmel-samd/boards/bdmicro_vina_d51/mpconfigboard.mk @@ -1,5 +1,8 @@ +# More than one revision of this board is available. +# This board specifies PCB Revision 10 + USB_VID = 0x31e2 -USB_PID = 0x2011 +USB_PID = 0x2021 USB_PRODUCT = "VINA-D51" USB_MANUFACTURER = "BDMICRO LLC" diff --git a/ports/atmel-samd/boards/bdmicro_vina_d51/pins.c b/ports/atmel-samd/boards/bdmicro_vina_d51/pins.c index 8eeab8a9a5..e7595d9789 100644 --- a/ports/atmel-samd/boards/bdmicro_vina_d51/pins.c +++ b/ports/atmel-samd/boards/bdmicro_vina_d51/pins.c @@ -1,3 +1,6 @@ +// More than one revision of this board is available. +// This board specifies PCB Revision 10 + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_global_dict_table[] = { @@ -13,6 +16,42 @@ STATIC const mp_rom_map_elem_t board_global_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_A7), MP_ROM_PTR(&pin_PB04) }, { MP_ROM_QSTR(MP_QSTR_A8), MP_ROM_PTR(&pin_PB05) }, { MP_ROM_QSTR(MP_QSTR_A9), MP_ROM_PTR(&pin_PB06) }, + { MP_ROM_QSTR(MP_QSTR_AUX_1), MP_ROM_PTR(&pin_PA17) }, + { MP_ROM_QSTR(MP_QSTR_AUX_UART_TX), MP_ROM_PTR(&pin_PA17) }, + { MP_ROM_QSTR(MP_QSTR_AUX_SPI_MOSI), MP_ROM_PTR(&pin_PA17) }, + { MP_ROM_QSTR(MP_QSTR_AUX_I2C_SDA), MP_ROM_PTR(&pin_PA17) }, + { MP_ROM_QSTR(MP_QSTR_ATW01_MOSI), MP_ROM_PTR(&pin_PA17) }, + { MP_ROM_QSTR(MP_QSTR_ESP01_TX), MP_ROM_PTR(&pin_PA17) }, + { MP_ROM_QSTR(MP_QSTR_AUX_10), MP_ROM_PTR(&pin_PC01) }, + { MP_ROM_QSTR(MP_QSTR_ATW01_IRQ), MP_ROM_PTR(&pin_PC01) }, + { MP_ROM_QSTR(MP_QSTR_AUX_11), MP_ROM_PTR(&pin_PC10) }, + { MP_ROM_QSTR(MP_QSTR_ATW01_GPIO_3), MP_ROM_PTR(&pin_PC10) }, + { MP_ROM_QSTR(MP_QSTR_AUX_12), MP_ROM_PTR(&pin_PC11) }, + { MP_ROM_QSTR(MP_QSTR_ATW01_GPIO_1), MP_ROM_PTR(&pin_PC11) }, + { MP_ROM_QSTR(MP_QSTR_AUX_3), MP_ROM_PTR(&pin_PA18) }, + { MP_ROM_QSTR(MP_QSTR_AUX_UART_RTS), MP_ROM_PTR(&pin_PA18) }, + { MP_ROM_QSTR(MP_QSTR_AUX_SPI_SS), MP_ROM_PTR(&pin_PA18) }, + { MP_ROM_QSTR(MP_QSTR_ATW01_SS), MP_ROM_PTR(&pin_PA18) }, + { MP_ROM_QSTR(MP_QSTR_ESP01_GPIO0), MP_ROM_PTR(&pin_PA18) }, + { MP_ROM_QSTR(MP_QSTR_AUX_4), MP_ROM_PTR(&pin_PC14) }, + { MP_ROM_QSTR(MP_QSTR_ATW01_RESET), MP_ROM_PTR(&pin_PC14) }, + { MP_ROM_QSTR(MP_QSTR_ESP01_RESET), MP_ROM_PTR(&pin_PC14) }, + { MP_ROM_QSTR(MP_QSTR_AUX_5), MP_ROM_PTR(&pin_PA19) }, + { MP_ROM_QSTR(MP_QSTR_AUX_UART_CTS), MP_ROM_PTR(&pin_PA19) }, + { MP_ROM_QSTR(MP_QSTR_AUX_SPI_MISO), MP_ROM_PTR(&pin_PA19) }, + { MP_ROM_QSTR(MP_QSTR_ATW01_MISO), MP_ROM_PTR(&pin_PA19) }, + { MP_ROM_QSTR(MP_QSTR_ESP01_GPIO2), MP_ROM_PTR(&pin_PA19) }, + { MP_ROM_QSTR(MP_QSTR_AUX_6), MP_ROM_PTR(&pin_PC15) }, + { MP_ROM_QSTR(MP_QSTR_ATW01_EN), MP_ROM_PTR(&pin_PC15) }, + { MP_ROM_QSTR(MP_QSTR_ESP01_CH_PD), MP_ROM_PTR(&pin_PC15) }, + { MP_ROM_QSTR(MP_QSTR_AUX_8), MP_ROM_PTR(&pin_PA16) }, + { MP_ROM_QSTR(MP_QSTR_AUX_UART_RX), MP_ROM_PTR(&pin_PA16) }, + { MP_ROM_QSTR(MP_QSTR_AUX_SPI_SCK), MP_ROM_PTR(&pin_PA16) }, + { MP_ROM_QSTR(MP_QSTR_AUX_I2C_SCL), MP_ROM_PTR(&pin_PA16) }, + { MP_ROM_QSTR(MP_QSTR_ATW01_SCK), MP_ROM_PTR(&pin_PA16) }, + { MP_ROM_QSTR(MP_QSTR_ESP01_RX), MP_ROM_PTR(&pin_PA16) }, + { MP_ROM_QSTR(MP_QSTR_AUX_9), MP_ROM_PTR(&pin_PA27) }, + { MP_ROM_QSTR(MP_QSTR_ATW01_WAKE), MP_ROM_PTR(&pin_PA27) }, { MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_PB31) }, { MP_ROM_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_PC16) }, { MP_ROM_QSTR(MP_QSTR_D10), MP_ROM_PTR(&pin_PC13) }, @@ -30,26 +69,10 @@ STATIC const mp_rom_map_elem_t board_global_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_D9), MP_ROM_PTR(&pin_PC12) }, { MP_ROM_QSTR(MP_QSTR_DAC0), MP_ROM_PTR(&pin_PA02) }, { MP_ROM_QSTR(MP_QSTR_DAC1), MP_ROM_PTR(&pin_PA05) }, - { MP_ROM_QSTR(MP_QSTR_ESP01_EN), MP_ROM_PTR(&pin_PC15) }, - { MP_ROM_QSTR(MP_QSTR_E5), MP_ROM_PTR(&pin_PC15) }, - { MP_ROM_QSTR(MP_QSTR_ESP01_GPIO0), MP_ROM_PTR(&pin_PA18) }, - { MP_ROM_QSTR(MP_QSTR_E3), MP_ROM_PTR(&pin_PA18) }, - { MP_ROM_QSTR(MP_QSTR_ESP01_GPIO2), MP_ROM_PTR(&pin_PA19) }, - { MP_ROM_QSTR(MP_QSTR_E4), MP_ROM_PTR(&pin_PA19) }, - { MP_ROM_QSTR(MP_QSTR_ESP01_RESET), MP_ROM_PTR(&pin_PC14) }, - { MP_ROM_QSTR(MP_QSTR_E6), MP_ROM_PTR(&pin_PC14) }, - { MP_ROM_QSTR(MP_QSTR_ESP01_RX), MP_ROM_PTR(&pin_PA12) }, - { MP_ROM_QSTR(MP_QSTR_UART3_RX), MP_ROM_PTR(&pin_PA12) }, - { MP_ROM_QSTR(MP_QSTR_I2C3_SCL), MP_ROM_PTR(&pin_PA12) }, - { MP_ROM_QSTR(MP_QSTR_E2), MP_ROM_PTR(&pin_PA12) }, - { MP_ROM_QSTR(MP_QSTR_ESP01_TX), MP_ROM_PTR(&pin_PA13) }, - { MP_ROM_QSTR(MP_QSTR_UART3_TX), MP_ROM_PTR(&pin_PA13) }, - { MP_ROM_QSTR(MP_QSTR_I2C3_SDA), MP_ROM_PTR(&pin_PA13) }, - { MP_ROM_QSTR(MP_QSTR_E1), MP_ROM_PTR(&pin_PA13) }, - { MP_ROM_QSTR(MP_QSTR_I2C1_SCL), MP_ROM_PTR(&pin_PA16) }, - { MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_PA16) }, - { MP_ROM_QSTR(MP_QSTR_I2C1_SDA), MP_ROM_PTR(&pin_PA17) }, - { MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_PA17) }, + { MP_ROM_QSTR(MP_QSTR_I2C1_SCL), MP_ROM_PTR(&pin_PA12) }, + { MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_PA12) }, + { MP_ROM_QSTR(MP_QSTR_I2C1_SDA), MP_ROM_PTR(&pin_PA13) }, + { MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_PA13) }, { MP_ROM_QSTR(MP_QSTR_I2S_FS_0), MP_ROM_PTR(&pin_PA20) }, { MP_ROM_QSTR(MP_QSTR_I2S_MCK_0), MP_ROM_PTR(&pin_PB17) }, { MP_ROM_QSTR(MP_QSTR_I2S_SCK_0), MP_ROM_PTR(&pin_PB16) }, @@ -65,13 +88,13 @@ STATIC const mp_rom_map_elem_t board_global_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_RS485_RX), MP_ROM_PTR(&pin_PB03) }, { MP_ROM_QSTR(MP_QSTR_RS485_TE), MP_ROM_PTR(&pin_PB00) }, { MP_ROM_QSTR(MP_QSTR_RS485_TX), MP_ROM_PTR(&pin_PB02) }, - { MP_ROM_QSTR(MP_QSTR_SPI_MISO), MP_ROM_PTR(&pin_PB23) }, + { MP_ROM_QSTR(MP_QSTR_SPI1_MISO), MP_ROM_PTR(&pin_PB23) }, { MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_PB23) }, - { MP_ROM_QSTR(MP_QSTR_SPI_MOSI), MP_ROM_PTR(&pin_PC27) }, + { MP_ROM_QSTR(MP_QSTR_SPI1_MOSI), MP_ROM_PTR(&pin_PC27) }, { MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_PC27) }, - { MP_ROM_QSTR(MP_QSTR_SPI_SCK), MP_ROM_PTR(&pin_PC28) }, + { MP_ROM_QSTR(MP_QSTR_SPI1_SCK), MP_ROM_PTR(&pin_PC28) }, { MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_PC28) }, - { MP_ROM_QSTR(MP_QSTR_SPI_SS), MP_ROM_PTR(&pin_PB22) }, + { MP_ROM_QSTR(MP_QSTR_SPI1_SS), MP_ROM_PTR(&pin_PB22) }, { MP_ROM_QSTR(MP_QSTR_SS), MP_ROM_PTR(&pin_PB22) }, { MP_ROM_QSTR(MP_QSTR_UART1_CTS), MP_ROM_PTR(&pin_PC25) }, { MP_ROM_QSTR(MP_QSTR_UART1_RTS), MP_ROM_PTR(&pin_PC24) }, diff --git a/ports/atmel-samd/boards/bdmicro_vina_d51_pcb7/board.c b/ports/atmel-samd/boards/bdmicro_vina_d51_pcb7/board.c new file mode 100644 index 0000000000..bb6ad8bc0d --- /dev/null +++ b/ports/atmel-samd/boards/bdmicro_vina_d51_pcb7/board.c @@ -0,0 +1,47 @@ +/* + * 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 "mpconfigboard.h" + +void board_init(void) { + // struct port_config pin_conf; + // port_get_config_defaults(&pin_conf); + // + // pin_conf.direction = PORT_PIN_DIR_OUTPUT; + // port_pin_set_config(MICROPY_HW_LED_TX, &pin_conf); + // port_pin_set_output_level(MICROPY_HW_LED_TX, true); + // + // port_pin_set_config(MICROPY_HW_LED_RX, &pin_conf); + // port_pin_set_output_level(MICROPY_HW_LED_RX, true); +} + +bool board_requests_safe_mode(void) { + return false; +} + +void reset_board(void) { +} diff --git a/ports/atmel-samd/boards/bdmicro_vina_d51_pcb7/mpconfigboard.h b/ports/atmel-samd/boards/bdmicro_vina_d51_pcb7/mpconfigboard.h new file mode 100644 index 0000000000..8b015df05e --- /dev/null +++ b/ports/atmel-samd/boards/bdmicro_vina_d51_pcb7/mpconfigboard.h @@ -0,0 +1,28 @@ +#define MICROPY_HW_BOARD_NAME "BDMICRO VINA-D51" +#define MICROPY_HW_MCU_NAME "samd51n20" + +#define CIRCUITPY_MCU_FAMILY samd51 + +// These are pins not to reset. +// Don't reset QSPI data pins +#define MICROPY_PORT_A (PORT_PA08 | PORT_PA09 | PORT_PA10 | PORT_PA11) +#define MICROPY_PORT_B (PORT_PB10 | PORT_PB11) +#define MICROPY_PORT_C (0) +#define MICROPY_PORT_D (0) + +#define BOARD_HAS_CRYSTAL 1 + +#define DEFAULT_I2C_BUS_SCL (&pin_PA16) +#define DEFAULT_I2C_BUS_SDA (&pin_PA17) +#define DEFAULT_UART_BUS_RX (&pin_PB20) +#define DEFAULT_UART_BUS_TX (&pin_PB21) +#define DEFAULT_SPI_BUS_MISO (&pin_PB23) +#define DEFAULT_SPI_BUS_MOSI (&pin_PC27) +#define DEFAULT_SPI_BUS_SCK (&pin_PC28) +#define MICROPY_HW_LED_STATUS (&pin_PA23) +#define MICROPY_HW_LED_RX (&pin_PC05) +#define MICROPY_HW_LED_TX (&pin_PC06) + +// USB is always used internally so skip the pin objects for it. +#define IGNORE_PIN_PA24 1 +#define IGNORE_PIN_PA25 1 diff --git a/ports/atmel-samd/boards/bdmicro_vina_d51_pcb7/mpconfigboard.mk b/ports/atmel-samd/boards/bdmicro_vina_d51_pcb7/mpconfigboard.mk new file mode 100644 index 0000000000..de350f7ab0 --- /dev/null +++ b/ports/atmel-samd/boards/bdmicro_vina_d51_pcb7/mpconfigboard.mk @@ -0,0 +1,11 @@ +USB_VID = 0x31e2 +USB_PID = 0x2011 +USB_PRODUCT = "VINA-D51" +USB_MANUFACTURER = "BDMICRO LLC" + +CHIP_VARIANT = SAMD51N20A +CHIP_FAMILY = samd51 + +QSPI_FLASH_FILESYSTEM = 1 +EXTERNAL_FLASH_DEVICES = "MX25L51245G","GD25S512MD" +LONGINT_IMPL = MPZ diff --git a/ports/atmel-samd/boards/bdmicro_vina_d51_pcb7/pins.c b/ports/atmel-samd/boards/bdmicro_vina_d51_pcb7/pins.c new file mode 100644 index 0000000000..8eeab8a9a5 --- /dev/null +++ b/ports/atmel-samd/boards/bdmicro_vina_d51_pcb7/pins.c @@ -0,0 +1,90 @@ +#include "shared-bindings/board/__init__.h" + +STATIC const mp_rom_map_elem_t board_global_dict_table[] = { + { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_PA04) }, + { MP_ROM_QSTR(MP_QSTR_A1), MP_ROM_PTR(&pin_PA06) }, + { MP_ROM_QSTR(MP_QSTR_A10), MP_ROM_PTR(&pin_PB07) }, + { MP_ROM_QSTR(MP_QSTR_A11), MP_ROM_PTR(&pin_PC00) }, + { MP_ROM_QSTR(MP_QSTR_A2), MP_ROM_PTR(&pin_PA07) }, + { MP_ROM_QSTR(MP_QSTR_A3), MP_ROM_PTR(&pin_PB08) }, + { MP_ROM_QSTR(MP_QSTR_A4), MP_ROM_PTR(&pin_PB09) }, + { MP_ROM_QSTR(MP_QSTR_A5), MP_ROM_PTR(&pin_PC02) }, + { MP_ROM_QSTR(MP_QSTR_A6), MP_ROM_PTR(&pin_PC03) }, + { MP_ROM_QSTR(MP_QSTR_A7), MP_ROM_PTR(&pin_PB04) }, + { MP_ROM_QSTR(MP_QSTR_A8), MP_ROM_PTR(&pin_PB05) }, + { MP_ROM_QSTR(MP_QSTR_A9), MP_ROM_PTR(&pin_PB06) }, + { MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_PB31) }, + { MP_ROM_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_PC16) }, + { MP_ROM_QSTR(MP_QSTR_D10), MP_ROM_PTR(&pin_PC13) }, + { MP_ROM_QSTR(MP_QSTR_D11), MP_ROM_PTR(&pin_PA14) }, + { MP_ROM_QSTR(MP_QSTR_D12), MP_ROM_PTR(&pin_PA15) }, + { MP_ROM_QSTR(MP_QSTR_D13), MP_ROM_PTR(&pin_PB12) }, + { MP_ROM_QSTR(MP_QSTR_D14), MP_ROM_PTR(&pin_PB13) }, + { MP_ROM_QSTR(MP_QSTR_D2), MP_ROM_PTR(&pin_PC17) }, + { MP_ROM_QSTR(MP_QSTR_D3), MP_ROM_PTR(&pin_PC18) }, + { MP_ROM_QSTR(MP_QSTR_D4), MP_ROM_PTR(&pin_PC19) }, + { MP_ROM_QSTR(MP_QSTR_D5), MP_ROM_PTR(&pin_PC20) }, + { MP_ROM_QSTR(MP_QSTR_D6), MP_ROM_PTR(&pin_PC21) }, + { MP_ROM_QSTR(MP_QSTR_D7), MP_ROM_PTR(&pin_PB18) }, + { MP_ROM_QSTR(MP_QSTR_D8), MP_ROM_PTR(&pin_PB19) }, + { MP_ROM_QSTR(MP_QSTR_D9), MP_ROM_PTR(&pin_PC12) }, + { MP_ROM_QSTR(MP_QSTR_DAC0), MP_ROM_PTR(&pin_PA02) }, + { MP_ROM_QSTR(MP_QSTR_DAC1), MP_ROM_PTR(&pin_PA05) }, + { MP_ROM_QSTR(MP_QSTR_ESP01_EN), MP_ROM_PTR(&pin_PC15) }, + { MP_ROM_QSTR(MP_QSTR_E5), MP_ROM_PTR(&pin_PC15) }, + { MP_ROM_QSTR(MP_QSTR_ESP01_GPIO0), MP_ROM_PTR(&pin_PA18) }, + { MP_ROM_QSTR(MP_QSTR_E3), MP_ROM_PTR(&pin_PA18) }, + { MP_ROM_QSTR(MP_QSTR_ESP01_GPIO2), MP_ROM_PTR(&pin_PA19) }, + { MP_ROM_QSTR(MP_QSTR_E4), MP_ROM_PTR(&pin_PA19) }, + { MP_ROM_QSTR(MP_QSTR_ESP01_RESET), MP_ROM_PTR(&pin_PC14) }, + { MP_ROM_QSTR(MP_QSTR_E6), MP_ROM_PTR(&pin_PC14) }, + { MP_ROM_QSTR(MP_QSTR_ESP01_RX), MP_ROM_PTR(&pin_PA12) }, + { MP_ROM_QSTR(MP_QSTR_UART3_RX), MP_ROM_PTR(&pin_PA12) }, + { MP_ROM_QSTR(MP_QSTR_I2C3_SCL), MP_ROM_PTR(&pin_PA12) }, + { MP_ROM_QSTR(MP_QSTR_E2), MP_ROM_PTR(&pin_PA12) }, + { MP_ROM_QSTR(MP_QSTR_ESP01_TX), MP_ROM_PTR(&pin_PA13) }, + { MP_ROM_QSTR(MP_QSTR_UART3_TX), MP_ROM_PTR(&pin_PA13) }, + { MP_ROM_QSTR(MP_QSTR_I2C3_SDA), MP_ROM_PTR(&pin_PA13) }, + { MP_ROM_QSTR(MP_QSTR_E1), MP_ROM_PTR(&pin_PA13) }, + { MP_ROM_QSTR(MP_QSTR_I2C1_SCL), MP_ROM_PTR(&pin_PA16) }, + { MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_PA16) }, + { MP_ROM_QSTR(MP_QSTR_I2C1_SDA), MP_ROM_PTR(&pin_PA17) }, + { MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_PA17) }, + { MP_ROM_QSTR(MP_QSTR_I2S_FS_0), MP_ROM_PTR(&pin_PA20) }, + { MP_ROM_QSTR(MP_QSTR_I2S_MCK_0), MP_ROM_PTR(&pin_PB17) }, + { MP_ROM_QSTR(MP_QSTR_I2S_SCK_0), MP_ROM_PTR(&pin_PB16) }, + { MP_ROM_QSTR(MP_QSTR_I2S_SDI), MP_ROM_PTR(&pin_PA22) }, + { MP_ROM_QSTR(MP_QSTR_I2S_SDO), MP_ROM_PTR(&pin_PA21) }, + { MP_ROM_QSTR(MP_QSTR_LED_B), MP_ROM_PTR(&pin_PA23) }, + { MP_ROM_QSTR(MP_QSTR_LED_STATUS), MP_ROM_PTR(&pin_PA23) }, + { MP_ROM_QSTR(MP_QSTR_LED_G), MP_ROM_PTR(&pin_PB15) }, + { MP_ROM_QSTR(MP_QSTR_LED_R), MP_ROM_PTR(&pin_PB14) }, + { MP_ROM_QSTR(MP_QSTR_LED_RX), MP_ROM_PTR(&pin_PC05) }, + { MP_ROM_QSTR(MP_QSTR_LED_TX), MP_ROM_PTR(&pin_PC06) }, + { MP_ROM_QSTR(MP_QSTR_RS485_RE), MP_ROM_PTR(&pin_PB01) }, + { MP_ROM_QSTR(MP_QSTR_RS485_RX), MP_ROM_PTR(&pin_PB03) }, + { MP_ROM_QSTR(MP_QSTR_RS485_TE), MP_ROM_PTR(&pin_PB00) }, + { MP_ROM_QSTR(MP_QSTR_RS485_TX), MP_ROM_PTR(&pin_PB02) }, + { MP_ROM_QSTR(MP_QSTR_SPI_MISO), MP_ROM_PTR(&pin_PB23) }, + { MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_PB23) }, + { MP_ROM_QSTR(MP_QSTR_SPI_MOSI), MP_ROM_PTR(&pin_PC27) }, + { MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_PC27) }, + { MP_ROM_QSTR(MP_QSTR_SPI_SCK), MP_ROM_PTR(&pin_PC28) }, + { MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_PC28) }, + { MP_ROM_QSTR(MP_QSTR_SPI_SS), MP_ROM_PTR(&pin_PB22) }, + { MP_ROM_QSTR(MP_QSTR_SS), MP_ROM_PTR(&pin_PB22) }, + { MP_ROM_QSTR(MP_QSTR_UART1_CTS), MP_ROM_PTR(&pin_PC25) }, + { MP_ROM_QSTR(MP_QSTR_UART1_RTS), MP_ROM_PTR(&pin_PC24) }, + { MP_ROM_QSTR(MP_QSTR_UART1_RX), MP_ROM_PTR(&pin_PB24) }, + { MP_ROM_QSTR(MP_QSTR_UART1_TX), MP_ROM_PTR(&pin_PB25) }, + { MP_ROM_QSTR(MP_QSTR_UART2_RX), MP_ROM_PTR(&pin_PB20) }, + { MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_PB20) }, + { MP_ROM_QSTR(MP_QSTR_I2C2_SCL), MP_ROM_PTR(&pin_PB20) }, + { MP_ROM_QSTR(MP_QSTR_UART2_TX), MP_ROM_PTR(&pin_PB21) }, + { MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_PB21) }, + { MP_ROM_QSTR(MP_QSTR_I2C2_SDA), MP_ROM_PTR(&pin_PB21) }, + { 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_global_dict_table); diff --git a/ports/atmel-samd/boards/capablerobot_usbhub/mpconfigboard.mk b/ports/atmel-samd/boards/capablerobot_usbhub/mpconfigboard.mk index 9417c23025..42d302b087 100644 --- a/ports/atmel-samd/boards/capablerobot_usbhub/mpconfigboard.mk +++ b/ports/atmel-samd/boards/capablerobot_usbhub/mpconfigboard.mk @@ -7,7 +7,7 @@ CHIP_VARIANT = SAMD51G19A CHIP_FAMILY = samd51 QSPI_FLASH_FILESYSTEM = 1 -EXTERNAL_FLASH_DEVICES = "GD25Q16C, W25Q16JV_IQ" +EXTERNAL_FLASH_DEVICES = "GD25Q16C, W25Q16JVxQ" LONGINT_IMPL = MPZ # No I2S on SAMD51G diff --git a/ports/atmel-samd/boards/circuitbrains_basic_m0/mpconfigboard.mk b/ports/atmel-samd/boards/circuitbrains_basic_m0/mpconfigboard.mk index e01e5ca4d5..870edb06ee 100755 --- a/ports/atmel-samd/boards/circuitbrains_basic_m0/mpconfigboard.mk +++ b/ports/atmel-samd/boards/circuitbrains_basic_m0/mpconfigboard.mk @@ -7,7 +7,7 @@ CHIP_VARIANT = SAMD21E18A CHIP_FAMILY = samd21 SPI_FLASH_FILESYSTEM = 1 -EXTERNAL_FLASH_DEVICES = "W25Q32JV_IQ" +EXTERNAL_FLASH_DEVICES = "W25Q32JVxQ" LONGINT_IMPL = MPZ CIRCUITPY_BITBANGIO = 0 diff --git a/ports/atmel-samd/boards/circuitbrains_deluxe_m4/mpconfigboard.mk b/ports/atmel-samd/boards/circuitbrains_deluxe_m4/mpconfigboard.mk index 40b5815ede..a96326c3b1 100755 --- a/ports/atmel-samd/boards/circuitbrains_deluxe_m4/mpconfigboard.mk +++ b/ports/atmel-samd/boards/circuitbrains_deluxe_m4/mpconfigboard.mk @@ -7,7 +7,7 @@ CHIP_VARIANT = SAMD51J19A CHIP_FAMILY = samd51 QSPI_FLASH_FILESYSTEM = 1 -EXTERNAL_FLASH_DEVICES = "W25Q64JV_IQ, S25FL064L" +EXTERNAL_FLASH_DEVICES = "W25Q64JVxQ, S25FL064L" LONGINT_IMPL = MPZ CIRCUITPY_PS2IO = 1 diff --git a/ports/atmel-samd/boards/cp32-m4/mpconfigboard.mk b/ports/atmel-samd/boards/cp32-m4/mpconfigboard.mk index 9f54bd1182..dfdde0dbb0 100644 --- a/ports/atmel-samd/boards/cp32-m4/mpconfigboard.mk +++ b/ports/atmel-samd/boards/cp32-m4/mpconfigboard.mk @@ -7,7 +7,7 @@ CHIP_VARIANT = SAMD51J20A CHIP_FAMILY = samd51 QSPI_FLASH_FILESYSTEM = 1 -EXTERNAL_FLASH_DEVICES = "W25Q128JV_PM" +EXTERNAL_FLASH_DEVICES = "W25Q128JVxM" # No I2S on SAMD51G. CIRCUITPY_AUDIOBUSIO = 0 diff --git a/ports/atmel-samd/boards/datalore_ip_m4/mpconfigboard.mk b/ports/atmel-samd/boards/datalore_ip_m4/mpconfigboard.mk index 13e0f75c7c..b07f86c160 100644 --- a/ports/atmel-samd/boards/datalore_ip_m4/mpconfigboard.mk +++ b/ports/atmel-samd/boards/datalore_ip_m4/mpconfigboard.mk @@ -7,5 +7,5 @@ CHIP_VARIANT = SAMD51J19A CHIP_FAMILY = samd51 QSPI_FLASH_FILESYSTEM = 1 -EXTERNAL_FLASH_DEVICES = "GD25Q16C, W25Q16JV_IQ, W25Q16JV_IM" +EXTERNAL_FLASH_DEVICES = "GD25Q16C, W25Q16JVxQ, W25Q16JVxM" LONGINT_IMPL = MPZ diff --git a/ports/atmel-samd/boards/grandcentral_m4_express/mpconfigboard.mk b/ports/atmel-samd/boards/grandcentral_m4_express/mpconfigboard.mk index cd43dd4d67..88c6e9bf16 100644 --- a/ports/atmel-samd/boards/grandcentral_m4_express/mpconfigboard.mk +++ b/ports/atmel-samd/boards/grandcentral_m4_express/mpconfigboard.mk @@ -7,7 +7,7 @@ CHIP_VARIANT = SAMD51P20A CHIP_FAMILY = samd51 QSPI_FLASH_FILESYSTEM = 1 -EXTERNAL_FLASH_DEVICES = "W25Q64JV_IQ, GD25Q64C" +EXTERNAL_FLASH_DEVICES = "W25Q64JVxQ, GD25Q64C" LONGINT_IMPL = MPZ CIRCUITPY_SDIOIO = 1 diff --git a/ports/atmel-samd/boards/hallowing_m0_express/mpconfigboard.mk b/ports/atmel-samd/boards/hallowing_m0_express/mpconfigboard.mk index 4661a7acd0..8c51315429 100644 --- a/ports/atmel-samd/boards/hallowing_m0_express/mpconfigboard.mk +++ b/ports/atmel-samd/boards/hallowing_m0_express/mpconfigboard.mk @@ -7,7 +7,7 @@ CHIP_VARIANT = SAMD21G18A CHIP_FAMILY = samd21 SPI_FLASH_FILESYSTEM = 1 -EXTERNAL_FLASH_DEVICES = "W25Q64JV_IQ, GD25Q64C" +EXTERNAL_FLASH_DEVICES = "W25Q64JVxQ, GD25Q64C" LONGINT_IMPL = NONE # To keep the build small diff --git a/ports/atmel-samd/boards/huntercat_nfc/board.c b/ports/atmel-samd/boards/huntercat_nfc/board.c new file mode 100644 index 0000000000..84960e73cf --- /dev/null +++ b/ports/atmel-samd/boards/huntercat_nfc/board.c @@ -0,0 +1,37 @@ +/* + * 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" + +void board_init(void) { +} + +bool board_requests_safe_mode(void) { + return false; +} + +void reset_board(void) { +} diff --git a/ports/atmel-samd/boards/huntercat_nfc/mpconfigboard.h b/ports/atmel-samd/boards/huntercat_nfc/mpconfigboard.h new file mode 100644 index 0000000000..3be98beb38 --- /dev/null +++ b/ports/atmel-samd/boards/huntercat_nfc/mpconfigboard.h @@ -0,0 +1,53 @@ +#define MICROPY_HW_BOARD_NAME "Electronic Cats Hunter Cat NFC" +#define MICROPY_HW_MCU_NAME "samd21e18" + +#define MICROPY_HW_LED_STATUS (&pin_PA00) + +#define SPI_FLASH_MOSI_PIN &pin_PA18 +#define SPI_FLASH_MISO_PIN &pin_PA22 +#define SPI_FLASH_SCK_PIN &pin_PA19 +#define SPI_FLASH_CS_PIN &pin_PA17 + +#define MICROPY_PORT_A (0) +#define MICROPY_PORT_B (0) +#define MICROPY_PORT_C (0) + +#define CALIBRATE_CRYSTALLESS 1 + +#define DEFAULT_I2C_BUS_SCL (&pin_PA08) +#define DEFAULT_I2C_BUS_SDA (&pin_PA09) + +#define IGNORE_PIN_PA04 1 +#define IGNORE_PIN_PA05 1 +#define IGNORE_PIN_PA06 1 +#define IGNORE_PIN_PA20 1 +#define IGNORE_PIN_PA21 1 +#define IGNORE_PIN_PA23 1 +#define IGNORE_PIN_PA28 1 +// USB is always used. +#define IGNORE_PIN_PA24 1 +#define IGNORE_PIN_PA25 1 +#define IGNORE_PIN_PA30 1 +#define IGNORE_PIN_PA31 1 +#define IGNORE_PIN_PB01 1 +#define IGNORE_PIN_PB02 1 +#define IGNORE_PIN_PB03 1 +#define IGNORE_PIN_PB04 1 +#define IGNORE_PIN_PB05 1 +#define IGNORE_PIN_PB06 1 +#define IGNORE_PIN_PB07 1 +#define IGNORE_PIN_PB08 1 +#define IGNORE_PIN_PB09 1 +#define IGNORE_PIN_PB10 1 +#define IGNORE_PIN_PB11 1 +#define IGNORE_PIN_PB12 1 +#define IGNORE_PIN_PB13 1 +#define IGNORE_PIN_PB14 1 +#define IGNORE_PIN_PB15 1 +#define IGNORE_PIN_PB16 1 +#define IGNORE_PIN_PB17 1 +#define IGNORE_PIN_PB22 1 +#define IGNORE_PIN_PB23 1 +#define IGNORE_PIN_PB30 1 +#define IGNORE_PIN_PB31 1 +#define IGNORE_PIN_PB00 1 diff --git a/ports/atmel-samd/boards/huntercat_nfc/mpconfigboard.mk b/ports/atmel-samd/boards/huntercat_nfc/mpconfigboard.mk new file mode 100644 index 0000000000..43a0d38d7d --- /dev/null +++ b/ports/atmel-samd/boards/huntercat_nfc/mpconfigboard.mk @@ -0,0 +1,25 @@ +USB_VID = 0x1209 +USB_PID = 0x7150 +USB_PRODUCT = "Hunter Cat NFC" +USB_MANUFACTURER = "Electronic Cats" + +CHIP_VARIANT = SAMD21E18A +CHIP_FAMILY = samd21 + +INTERNAL_FLASH_FILESYSTEM = 0 +SPI_FLASH_FILESYSTEM = 1 +EXTERNAL_FLASH_DEVICES = "W25Q16JVxQ" +LONGINT_IMPL = MPZ + +CIRCUITPY_AUDIOBUSIO = 0 +CIRCUITPY_BITBANGIO = 0 +CIRCUITPY_BITMAPTOOLS = 0 +CIRCUITPY_NEOPIXEL_WRITE = 0 +CIRCUITPY_ROTARYIO = 0 +CIRCUITPY_RTC = 0 +CIRCUITPY_USB_MIDI = 1 +CIRCUITPY_TOUCHIO = 0 +CIRCUITPY_FULL_BUILD = 0 + +SUPEROPT_GC = 0 +SUPEROPT_VM = 0 diff --git a/ports/atmel-samd/boards/huntercat_nfc/pins.c b/ports/atmel-samd/boards/huntercat_nfc/pins.c new file mode 100644 index 0000000000..12b0d93480 --- /dev/null +++ b/ports/atmel-samd/boards/huntercat_nfc/pins.c @@ -0,0 +1,30 @@ +#include "shared-bindings/board/__init__.h" + +STATIC const mp_rom_map_elem_t board_global_dict_table[] = { + { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_PA03) }, + { MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_PA00) }, + { MP_ROM_QSTR(MP_QSTR_LED), MP_ROM_PTR(&pin_PA00) }, + { MP_ROM_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_PA01) }, + { MP_ROM_QSTR(MP_QSTR_D2), MP_ROM_PTR(&pin_PA02) }, + { MP_ROM_QSTR(MP_QSTR_D3), MP_ROM_PTR(&pin_PA03) }, + { MP_ROM_QSTR(MP_QSTR_D8), MP_ROM_PTR(&pin_PA08) }, + { MP_ROM_QSTR(MP_QSTR_D9), MP_ROM_PTR(&pin_PA09) }, + { MP_ROM_QSTR(MP_QSTR_D10), MP_ROM_PTR(&pin_PA10) }, + { MP_ROM_QSTR(MP_QSTR_D11), MP_ROM_PTR(&pin_PA11) }, + { MP_ROM_QSTR(MP_QSTR_D14), MP_ROM_PTR(&pin_PA14) }, + { MP_ROM_QSTR(MP_QSTR_D15), MP_ROM_PTR(&pin_PA15) }, + { MP_ROM_QSTR(MP_QSTR_D16), MP_ROM_PTR(&pin_PA16) }, + { MP_ROM_QSTR(MP_QSTR_D17), MP_ROM_PTR(&pin_PA17) }, + { MP_ROM_QSTR(MP_QSTR_D18), MP_ROM_PTR(&pin_PA18) }, + { MP_ROM_QSTR(MP_QSTR_D19), MP_ROM_PTR(&pin_PA19) }, + { MP_ROM_QSTR(MP_QSTR_D22), MP_ROM_PTR(&pin_PA22) }, + { MP_ROM_QSTR(MP_QSTR_D27), MP_ROM_PTR(&pin_PA27) }, + { MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_PA08) }, + { MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_PA09) }, + { MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_PA19) }, + { MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_PA18) }, + { MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_PA22) }, + { 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_DEFINE_CONST_DICT(board_module_globals, board_global_dict_table); diff --git a/ports/atmel-samd/boards/mini_sam_m4/mpconfigboard.mk b/ports/atmel-samd/boards/mini_sam_m4/mpconfigboard.mk index 8f4c3f8904..c3e21a4c36 100644 --- a/ports/atmel-samd/boards/mini_sam_m4/mpconfigboard.mk +++ b/ports/atmel-samd/boards/mini_sam_m4/mpconfigboard.mk @@ -7,7 +7,7 @@ CHIP_VARIANT = SAMD51G19A CHIP_FAMILY = samd51 QSPI_FLASH_FILESYSTEM = 1 -EXTERNAL_FLASH_DEVICES = "W25Q16JV_IM, W25Q16JV_IQ" +EXTERNAL_FLASH_DEVICES = "W25Q16JVxM, W25Q16JVxQ" LONGINT_IMPL = MPZ # No I2S on SAMD51G diff --git a/ports/atmel-samd/boards/pyportal/mpconfigboard.mk b/ports/atmel-samd/boards/pyportal/mpconfigboard.mk index e8c27ecbf1..0a70db50c9 100644 --- a/ports/atmel-samd/boards/pyportal/mpconfigboard.mk +++ b/ports/atmel-samd/boards/pyportal/mpconfigboard.mk @@ -7,5 +7,5 @@ CHIP_VARIANT = SAMD51J20A CHIP_FAMILY = samd51 QSPI_FLASH_FILESYSTEM = 1 -EXTERNAL_FLASH_DEVICES = "W25Q64JV_IQ, GD25Q64C" +EXTERNAL_FLASH_DEVICES = "W25Q64JVxQ, GD25Q64C" LONGINT_IMPL = MPZ diff --git a/ports/atmel-samd/boards/pyportal_titano/mpconfigboard.mk b/ports/atmel-samd/boards/pyportal_titano/mpconfigboard.mk index c9ffd09549..2202fca2f7 100644 --- a/ports/atmel-samd/boards/pyportal_titano/mpconfigboard.mk +++ b/ports/atmel-samd/boards/pyportal_titano/mpconfigboard.mk @@ -7,5 +7,5 @@ CHIP_VARIANT = SAMD51J20A CHIP_FAMILY = samd51 QSPI_FLASH_FILESYSTEM = 1 -EXTERNAL_FLASH_DEVICES = "W25Q64JV_IQ, GD25Q64C" +EXTERNAL_FLASH_DEVICES = "W25Q64JVxQ, GD25Q64C" LONGINT_IMPL = MPZ diff --git a/ports/atmel-samd/boards/robohatmm1_m4/mpconfigboard.mk b/ports/atmel-samd/boards/robohatmm1_m4/mpconfigboard.mk index e964d65d5e..0ae092c693 100644 --- a/ports/atmel-samd/boards/robohatmm1_m4/mpconfigboard.mk +++ b/ports/atmel-samd/boards/robohatmm1_m4/mpconfigboard.mk @@ -9,7 +9,7 @@ CHIP_FAMILY = samd51 #QSPI_FLASH_FILESYSTEM = 0 SPI_FLASH_FILESYSTEM = 1 -EXTERNAL_FLASH_DEVICES = "W25Q64JV_IQ" +EXTERNAL_FLASH_DEVICES = "W25Q64JVxQ" LONGINT_IMPL = MPZ # No I2S on SAMD51G diff --git a/ports/atmel-samd/boards/seeeduino_wio_terminal/mpconfigboard.mk b/ports/atmel-samd/boards/seeeduino_wio_terminal/mpconfigboard.mk index 7163568374..9788f5ff40 100644 --- a/ports/atmel-samd/boards/seeeduino_wio_terminal/mpconfigboard.mk +++ b/ports/atmel-samd/boards/seeeduino_wio_terminal/mpconfigboard.mk @@ -7,7 +7,7 @@ CHIP_VARIANT = SAMD51P19A CHIP_FAMILY = samd51 QSPI_FLASH_FILESYSTEM = 1 -EXTERNAL_FLASH_DEVICES = "W25Q32JV_IQ" +EXTERNAL_FLASH_DEVICES = "W25Q32JVxQ" LONGINT_IMPL = MPZ CIRCUITPY_VECTORIO = 1 diff --git a/ports/atmel-samd/boards/seeeduino_wio_terminal/pins.c b/ports/atmel-samd/boards/seeeduino_wio_terminal/pins.c index 45ff7c3361..8d9c76164e 100644 --- a/ports/atmel-samd/boards/seeeduino_wio_terminal/pins.c +++ b/ports/atmel-samd/boards/seeeduino_wio_terminal/pins.c @@ -60,7 +60,7 @@ STATIC const mp_rom_map_elem_t board_global_dict_table[] = { { MP_OBJ_NEW_QSTR(MP_QSTR_SD_MOSI), MP_ROM_PTR(&pin_PC16) }, { MP_OBJ_NEW_QSTR(MP_QSTR_SD_SCK), MP_ROM_PTR(&pin_PC17) }, { MP_ROM_QSTR(MP_QSTR_SD_CS), MP_ROM_PTR(&pin_PC19) }, - { MP_ROM_QSTR(MP_QSTR_SD_DET), MP_ROM_PTR(&pin_PC21) }, + { MP_ROM_QSTR(MP_QSTR_SD_DET), MP_ROM_PTR(&pin_PD21) }, // Switch { MP_OBJ_NEW_QSTR(MP_QSTR_SWITCH_UP), MP_ROM_PTR(&pin_PD20) }, diff --git a/ports/atmel-samd/boards/sensebox_mcu/board.c b/ports/atmel-samd/boards/sensebox_mcu/board.c new file mode 100644 index 0000000000..7af05ba45a --- /dev/null +++ b/ports/atmel-samd/boards/sensebox_mcu/board.c @@ -0,0 +1,39 @@ +/* + * 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 "mpconfigboard.h" +#include "hal/include/hal_gpio.h" + +void board_init(void) { +} + +bool board_requests_safe_mode(void) { + return false; +} + +void reset_board(void) { +} diff --git a/ports/atmel-samd/boards/sensebox_mcu/mpconfigboard.h b/ports/atmel-samd/boards/sensebox_mcu/mpconfigboard.h new file mode 100644 index 0000000000..13aca289f6 --- /dev/null +++ b/ports/atmel-samd/boards/sensebox_mcu/mpconfigboard.h @@ -0,0 +1,24 @@ +#define MICROPY_HW_BOARD_NAME "senseBox MCU" +#define MICROPY_HW_MCU_NAME "senseBox" + +#define MICROPY_HW_LED_STATUS (&pin_PA27) + +#define MICROPY_PORT_A (0) +#define MICROPY_PORT_B (0) +#define MICROPY_PORT_C (0) + +#define DEFAULT_I2C_BUS_SCL (&pin_PA09) +#define DEFAULT_I2C_BUS_SDA (&pin_PA08) + +#define DEFAULT_SPI_BUS_SCK (&pin_PA17) +#define DEFAULT_SPI_BUS_MOSI (&pin_PA16) +#define DEFAULT_SPI_BUS_MISO (&pin_PA19) + +#define DEFAULT_UART_BUS_RX (&pin_PA23) +#define DEFAULT_UART_BUS_TX (&pin_PA22) + +#define SAMD21_BOD33_LEVEL (6) + +// USB is always used internally so skip the pin objects for it. +#define IGNORE_PIN_PA24 1 +#define IGNORE_PIN_PA25 1 diff --git a/ports/atmel-samd/boards/sensebox_mcu/mpconfigboard.mk b/ports/atmel-samd/boards/sensebox_mcu/mpconfigboard.mk new file mode 100644 index 0000000000..f5ce4a5d13 --- /dev/null +++ b/ports/atmel-samd/boards/sensebox_mcu/mpconfigboard.mk @@ -0,0 +1,14 @@ +USB_VID = 0x04D8 +USB_PID = 0xEF67 +USB_PRODUCT = "senseBox MCU" +USB_MANUFACTURER = "senseBox" + +CHIP_VARIANT = SAMD21G18A +CHIP_FAMILY = samd21 + +INTERNAL_FLASH_FILESYSTEM = 1 +LONGINT_IMPL = NONE +CIRCUITPY_FULL_BUILD = 0 + +SUPEROPT_GC = 0 +SUPEROPT_VM = 0 diff --git a/ports/atmel-samd/boards/sensebox_mcu/pins.c b/ports/atmel-samd/boards/sensebox_mcu/pins.c new file mode 100644 index 0000000000..55afcc989e --- /dev/null +++ b/ports/atmel-samd/boards/sensebox_mcu/pins.c @@ -0,0 +1,71 @@ +#include "shared-bindings/board/__init__.h" + +STATIC const mp_rom_map_elem_t board_global_dict_table[] = { + + // Analog pins + { MP_ROM_QSTR(MP_QSTR_A1), MP_ROM_PTR(&pin_PA04) }, + { MP_ROM_QSTR(MP_QSTR_A2), MP_ROM_PTR(&pin_PA05) }, + { MP_ROM_QSTR(MP_QSTR_A3), MP_ROM_PTR(&pin_PA06) }, + { MP_ROM_QSTR(MP_QSTR_A4), MP_ROM_PTR(&pin_PA07) }, + { MP_ROM_QSTR(MP_QSTR_A5), MP_ROM_PTR(&pin_PA03) }, + { MP_ROM_QSTR(MP_QSTR_A6), MP_ROM_PTR(&pin_PA02) }, + + // Digital pins + // { MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_PA20) }, + { MP_ROM_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_PA04) }, + { MP_ROM_QSTR(MP_QSTR_D2), MP_ROM_PTR(&pin_PA05) }, + { MP_ROM_QSTR(MP_QSTR_D3), MP_ROM_PTR(&pin_PA06) }, + { MP_ROM_QSTR(MP_QSTR_D4), MP_ROM_PTR(&pin_PA07) }, + { MP_ROM_QSTR(MP_QSTR_D5), MP_ROM_PTR(&pin_PA03) }, + { MP_ROM_QSTR(MP_QSTR_D6), MP_ROM_PTR(&pin_PA02) }, + { MP_ROM_QSTR(MP_QSTR_D7), MP_ROM_PTR(&pin_PA27) }, + { MP_ROM_QSTR(MP_QSTR_D8), MP_ROM_PTR(&pin_PA28) }, + { MP_ROM_QSTR(MP_QSTR_D9), MP_ROM_PTR(&pin_PB02) }, + { MP_ROM_QSTR(MP_QSTR_D10), MP_ROM_PTR(&pin_PA22) }, + { MP_ROM_QSTR(MP_QSTR_D11), MP_ROM_PTR(&pin_PA23) }, + { MP_ROM_QSTR(MP_QSTR_D12), MP_ROM_PTR(&pin_PB08) }, + { MP_ROM_QSTR(MP_QSTR_D13), MP_ROM_PTR(&pin_PB09) }, + + // UART pins + { MP_ROM_QSTR(MP_QSTR_UART_PWR), MP_ROM_PTR(&pin_PB02) }, + { MP_ROM_QSTR(MP_QSTR_TX1), MP_ROM_PTR(&pin_PA22) }, + { MP_ROM_QSTR(MP_QSTR_RX1), MP_ROM_PTR(&pin_PA23) }, + { MP_ROM_QSTR(MP_QSTR_TX2), MP_ROM_PTR(&pin_PB08) }, + { MP_ROM_QSTR(MP_QSTR_RX2), MP_ROM_PTR(&pin_PB09) }, + { MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_PA22) }, // alias of TX1 + { MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_PA23) }, // alias of RX1 + + // SPI pins + { MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_PA16) }, + { MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_PA17) }, + { MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_PA19) }, + + // I2C pins + { MP_ROM_QSTR(MP_QSTR_I2C_PWR), MP_ROM_PTR(&pin_PB11) }, + { MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_PA09) }, + { MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_PA08) }, + + // LED pins + { MP_ROM_QSTR(MP_QSTR_LED), MP_ROM_PTR(&pin_PA27) }, + { MP_ROM_QSTR(MP_QSTR_RED_LED), MP_ROM_PTR(&pin_PA27) }, + { MP_ROM_QSTR(MP_QSTR_GREEN_LED), MP_ROM_PTR(&pin_PA28) }, + + // XBEE pins + { MP_ROM_QSTR(MP_QSTR_XB1_PWR), MP_ROM_PTR(&pin_PB03) }, + { MP_ROM_QSTR(MP_QSTR_XB2_PWR), MP_ROM_PTR(&pin_PB10) }, + { MP_ROM_QSTR(MP_QSTR_XB1_CS), MP_ROM_PTR(&pin_PA18) }, + { MP_ROM_QSTR(MP_QSTR_XB2_CS), MP_ROM_PTR(&pin_PA14) }, + { MP_ROM_QSTR(MP_QSTR_XB1_INT), MP_ROM_PTR(&pin_PA21) }, + { MP_ROM_QSTR(MP_QSTR_XB2_INT), MP_ROM_PTR(&pin_PA15) }, + { MP_ROM_QSTR(MP_QSTR_XB1_RX), MP_ROM_PTR(&pin_PA23) }, + { MP_ROM_QSTR(MP_QSTR_XB1_TX), MP_ROM_PTR(&pin_PA22) }, + { MP_ROM_QSTR(MP_QSTR_XB2_RX), MP_ROM_PTR(&pin_PA11) }, + { MP_ROM_QSTR(MP_QSTR_XB2_TX), MP_ROM_PTR(&pin_PA10) }, + + + // Comm objects + { 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_global_dict_table); diff --git a/ports/atmel-samd/boards/snekboard/mpconfigboard.mk b/ports/atmel-samd/boards/snekboard/mpconfigboard.mk index 90bc6076f7..3467ef7578 100644 --- a/ports/atmel-samd/boards/snekboard/mpconfigboard.mk +++ b/ports/atmel-samd/boards/snekboard/mpconfigboard.mk @@ -7,7 +7,7 @@ CHIP_VARIANT = SAMD21G18A CHIP_FAMILY = samd21 SPI_FLASH_FILESYSTEM = 1 -EXTERNAL_FLASH_DEVICES = "W25Q16JV_IQ" +EXTERNAL_FLASH_DEVICES = "W25Q16JVxQ" LONGINT_IMPL = MPZ CIRCUITPY_BITBANGIO = 0 diff --git a/ports/atmel-samd/boards/stackrduino_m0_pro/mpconfigboard.mk b/ports/atmel-samd/boards/stackrduino_m0_pro/mpconfigboard.mk index ee3f21b05a..fb46e99dae 100644 --- a/ports/atmel-samd/boards/stackrduino_m0_pro/mpconfigboard.mk +++ b/ports/atmel-samd/boards/stackrduino_m0_pro/mpconfigboard.mk @@ -7,7 +7,7 @@ CHIP_VARIANT = SAMD21G18A CHIP_FAMILY = samd21 SPI_FLASH_FILESYSTEM = 1 -EXTERNAL_FLASH_DEVICES = "W25Q64JV_IQ" +EXTERNAL_FLASH_DEVICES = "W25Q64JVxQ" LONGINT_IMPL = MPZ diff --git a/ports/atmel-samd/boards/trellis_m4_express/mpconfigboard.mk b/ports/atmel-samd/boards/trellis_m4_express/mpconfigboard.mk index 59a40d3dcc..81df26b0c6 100644 --- a/ports/atmel-samd/boards/trellis_m4_express/mpconfigboard.mk +++ b/ports/atmel-samd/boards/trellis_m4_express/mpconfigboard.mk @@ -7,7 +7,7 @@ CHIP_VARIANT = SAMD51G19A CHIP_FAMILY = samd51 QSPI_FLASH_FILESYSTEM = 1 -EXTERNAL_FLASH_DEVICES = "W25Q64JV_IQ, GD25Q64C" +EXTERNAL_FLASH_DEVICES = "W25Q64JVxQ, GD25Q64C" LONGINT_IMPL = MPZ # No I2S on SAMD51G diff --git a/ports/atmel-samd/boards/uartlogger2/mpconfigboard.mk b/ports/atmel-samd/boards/uartlogger2/mpconfigboard.mk index 373cbba99c..87619b5783 100644 --- a/ports/atmel-samd/boards/uartlogger2/mpconfigboard.mk +++ b/ports/atmel-samd/boards/uartlogger2/mpconfigboard.mk @@ -7,5 +7,5 @@ CHIP_VARIANT = SAMD51J19A CHIP_FAMILY = samd51 QSPI_FLASH_FILESYSTEM = 1 -EXTERNAL_FLASH_DEVICES = "W25Q32JV_IQ" +EXTERNAL_FLASH_DEVICES = "W25Q32JVxQ" LONGINT_IMPL = MPZ diff --git a/ports/atmel-samd/boards/winterbloom_sol/mpconfigboard.mk b/ports/atmel-samd/boards/winterbloom_sol/mpconfigboard.mk index ce9c2585f9..81956a0b80 100644 --- a/ports/atmel-samd/boards/winterbloom_sol/mpconfigboard.mk +++ b/ports/atmel-samd/boards/winterbloom_sol/mpconfigboard.mk @@ -11,7 +11,7 @@ CHIP_VARIANT = SAMD51J20A CHIP_FAMILY = samd51 QSPI_FLASH_FILESYSTEM = 1 -EXTERNAL_FLASH_DEVICES = "GD25Q64C, W25Q32JV_IQ" +EXTERNAL_FLASH_DEVICES = "GD25Q64C, W25Q32JVxQ" LONGINT_IMPL = MPZ # Disable modules that are unusable on this special-purpose board. diff --git a/ports/atmel-samd/common-hal/rotaryio/IncrementalEncoder.c b/ports/atmel-samd/common-hal/rotaryio/IncrementalEncoder.c index 0922718f96..4b74b438ff 100644 --- a/ports/atmel-samd/common-hal/rotaryio/IncrementalEncoder.c +++ b/ports/atmel-samd/common-hal/rotaryio/IncrementalEncoder.c @@ -25,6 +25,7 @@ */ #include "common-hal/rotaryio/IncrementalEncoder.h" +#include "shared-module/rotaryio/IncrementalEncoder.h" #include "atmel_start_pins.h" @@ -68,11 +69,9 @@ void common_hal_rotaryio_incrementalencoder_construct(rotaryio_incrementalencode self->position = 0; self->quarter_count = 0; - // Top two bits of self->last_state don't matter, because they'll be gone as soon as - // interrupt handler is called. - self->last_state = + shared_module_softencoder_state_init(self, ((uint8_t) gpio_get_pin_level(self->pin_a) << 1) | - (uint8_t) gpio_get_pin_level(self->pin_b); + (uint8_t) gpio_get_pin_level(self->pin_b)); claim_pin(pin_a); claim_pin(pin_b); @@ -106,66 +105,12 @@ void common_hal_rotaryio_incrementalencoder_deinit(rotaryio_incrementalencoder_o self->pin_b = NO_PIN; } -mp_int_t common_hal_rotaryio_incrementalencoder_get_position(rotaryio_incrementalencoder_obj_t* self) { - return self->position; -} - -void common_hal_rotaryio_incrementalencoder_set_position(rotaryio_incrementalencoder_obj_t* self, - mp_int_t new_position) { - self->position = new_position; -} - void incrementalencoder_interrupt_handler(uint8_t channel) { rotaryio_incrementalencoder_obj_t* self = get_eic_channel_data(channel); - // This table also works for detent both at 11 and 00 - // For 11 at detent: - // Turning cw: 11->01->00->10->11 - // Turning ccw: 11->10->00->01->11 - // For 00 at detent: - // Turning cw: 00->10->11->10->00 - // Turning ccw: 00->01->11->10->00 - - // index table by state - #define BAD 7 - static const int8_t transitions[16] = { - 0, // 00 -> 00 no movement - -1, // 00 -> 01 3/4 ccw (11 detent) or 1/4 ccw (00 at detent) - +1, // 00 -> 10 3/4 cw or 1/4 cw - BAD, // 00 -> 11 non-Gray-code transition - +1, // 01 -> 00 2/4 or 4/4 cw - 0, // 01 -> 01 no movement - BAD, // 01 -> 10 non-Gray-code transition - -1, // 01 -> 11 4/4 or 2/4 ccw - -1, // 10 -> 00 2/4 or 4/4 ccw - BAD, // 10 -> 01 non-Gray-code transition - 0, // 10 -> 10 no movement - +1, // 10 -> 11 4/4 or 2/4 cw - BAD, // 11 -> 00 non-Gray-code transition - +1, // 11 -> 01 1/4 or 3/4 cw - -1, // 11 -> 10 1/4 or 3/4 ccw - 0, // 11 -> 11 no movement - }; - - // Shift the old AB bits to the "old" position, and set the new AB bits. - // TODO(tannewt): If we need more speed then read the pin directly. gpio_get_pin_level has - // smarts to compensate for pin direction we don't need. - self->last_state = (self->last_state & 0x3) << 2 | + uint8_t new_state = ((uint8_t) gpio_get_pin_level(self->pin_a) << 1) | (uint8_t) gpio_get_pin_level(self->pin_b); - int8_t quarter_incr = transitions[self->last_state]; - if (quarter_incr == BAD) { - // Missed a transition. We don't know which way we're going, so do nothing. - return; - } - - self->quarter_count += quarter_incr; - if (self->quarter_count >= 4) { - self->position += 1; - self->quarter_count = 0; - } else if (self->quarter_count <= -4) { - self->position -= 1; - self->quarter_count = 0; - } + shared_module_softencoder_state_update(self, new_state); } diff --git a/ports/atmel-samd/common-hal/rotaryio/IncrementalEncoder.h b/ports/atmel-samd/common-hal/rotaryio/IncrementalEncoder.h index e07cc84d5d..2560997a97 100644 --- a/ports/atmel-samd/common-hal/rotaryio/IncrementalEncoder.h +++ b/ports/atmel-samd/common-hal/rotaryio/IncrementalEncoder.h @@ -35,10 +35,10 @@ typedef struct { mp_obj_base_t base; uint8_t pin_a; uint8_t pin_b; - uint8_t eic_channel_a:4; - uint8_t eic_channel_b:4; - uint8_t last_state:4; // - int8_t quarter_count:4; // count intermediate transitions between detents + uint8_t eic_channel_a; + uint8_t eic_channel_b; + uint8_t state; // + int8_t quarter_count; // count intermediate transitions between detents mp_int_t position; } rotaryio_incrementalencoder_obj_t; diff --git a/ports/atmel-samd/mpconfigport.mk b/ports/atmel-samd/mpconfigport.mk index 7be9e203a8..2962035cb9 100644 --- a/ports/atmel-samd/mpconfigport.mk +++ b/ports/atmel-samd/mpconfigport.mk @@ -25,6 +25,8 @@ USB_SERIAL_NUMBER_LENGTH = 32 # Number of USB endpoint pairs. USB_NUM_EP = 8 +CIRCUITPY_ROTARYIO_SOFTENCODER = 1 + ###################################################################### # Put samd21-only choices here. diff --git a/ports/esp32s2/boards/artisense_rd00/board.c b/ports/esp32s2/boards/artisense_rd00/board.c new file mode 100644 index 0000000000..fb3e458cf4 --- /dev/null +++ b/ports/esp32s2/boards/artisense_rd00/board.c @@ -0,0 +1,59 @@ +/* + * This file is part of the MicroPython project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2021 Matthias Breithaupt for Artisense GmbH + * + * 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" + +void board_init(void) { + // USB + common_hal_never_reset_pin(&pin_GPIO19); + common_hal_never_reset_pin(&pin_GPIO20); + + // Debug UART +#ifdef DEBUG + common_hal_never_reset_pin(&pin_GPIO43); + common_hal_never_reset_pin(&pin_GPIO44); +#endif /* DEBUG */ + + // Crystal + common_hal_never_reset_pin(&pin_GPIO15); + common_hal_never_reset_pin(&pin_GPIO16); + + // PSRAM + common_hal_never_reset_pin(&pin_GPIO26); +} + +bool board_requests_safe_mode(void) { + return false; +} + +void reset_board(void) { + +} + +void board_deinit(void) { +} diff --git a/ports/esp32s2/boards/artisense_rd00/mpconfigboard.h b/ports/esp32s2/boards/artisense_rd00/mpconfigboard.h new file mode 100644 index 0000000000..e9ff39dbbd --- /dev/null +++ b/ports/esp32s2/boards/artisense_rd00/mpconfigboard.h @@ -0,0 +1,43 @@ +/* + * This file is part of the MicroPython project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2021 Matthias Breithaupt for Artisense GmbH + * + * 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 + +//Same setup as the Saola board but with no Neopixel on board + +#define MICROPY_HW_BOARD_NAME "Artisense Reference Design RD00" +#define MICROPY_HW_MCU_NAME "ESP32S2" + +#define MICROPY_HW_NEOPIXEL (&pin_GPIO45) + +#define CIRCUITPY_BOOT_BUTTON (&pin_GPIO0) + +#define BOARD_USER_SAFE_MODE_ACTION translate("pressing boot button at start up.\n") + +#define AUTORESET_DELAY_MS 500 + +#define DEFAULT_UART_BUS_RX (&pin_GPIO17) +#define DEFAULT_UART_BUS_TX (&pin_GPIO18) diff --git a/ports/esp32s2/boards/artisense_rd00/mpconfigboard.mk b/ports/esp32s2/boards/artisense_rd00/mpconfigboard.mk new file mode 100644 index 0000000000..8b6bfcb8d9 --- /dev/null +++ b/ports/esp32s2/boards/artisense_rd00/mpconfigboard.mk @@ -0,0 +1,17 @@ +USB_VID = 0x303A +USB_PID = 0x80AF +USB_PRODUCT = "Reference Design RD00" +USB_MANUFACTURER = "Artisense" + +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=40m +CIRCUITPY_ESP_FLASH_SIZE=4MB + +CIRCUITPY_MODULE=wrover diff --git a/ports/esp32s2/boards/artisense_rd00/pins.c b/ports/esp32s2/boards/artisense_rd00/pins.c new file mode 100644 index 0000000000..3cd05f5b3c --- /dev/null +++ b/ports/esp32s2/boards/artisense_rd00/pins.c @@ -0,0 +1,48 @@ +#include "shared-bindings/board/__init__.h" + +STATIC const mp_rom_map_elem_t board_global_dict_table[] = { + { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO1) }, + { MP_ROM_QSTR(MP_QSTR_IO1), MP_ROM_PTR(&pin_GPIO2) }, + { MP_ROM_QSTR(MP_QSTR_IO2), MP_ROM_PTR(&pin_GPIO6) }, + { MP_ROM_QSTR(MP_QSTR_IO3), MP_ROM_PTR(&pin_GPIO7) }, + { MP_ROM_QSTR(MP_QSTR_IO4), MP_ROM_PTR(&pin_GPIO8) }, + { MP_ROM_QSTR(MP_QSTR_CAM), MP_ROM_PTR(&pin_GPIO9) }, + { MP_ROM_QSTR(MP_QSTR_HVIO0), MP_ROM_PTR(&pin_GPIO1) }, + { MP_ROM_QSTR(MP_QSTR_HVIO1), MP_ROM_PTR(&pin_GPIO2) }, + { MP_ROM_QSTR(MP_QSTR_HVIO2), MP_ROM_PTR(&pin_GPIO6) }, + { MP_ROM_QSTR(MP_QSTR_HVIO3), MP_ROM_PTR(&pin_GPIO7) }, + { MP_ROM_QSTR(MP_QSTR_HVIO4), MP_ROM_PTR(&pin_GPIO8) }, + { MP_ROM_QSTR(MP_QSTR_HVCAM), MP_ROM_PTR(&pin_GPIO9) }, + { MP_ROM_QSTR(MP_QSTR_LVIO0), MP_ROM_PTR(&pin_GPIO34) }, + { MP_ROM_QSTR(MP_QSTR_LVIO1), MP_ROM_PTR(&pin_GPIO33) }, + { MP_ROM_QSTR(MP_QSTR_LVIO2), MP_ROM_PTR(&pin_GPIO21) }, + { MP_ROM_QSTR(MP_QSTR_LVIO3), MP_ROM_PTR(&pin_GPIO5) }, + { MP_ROM_QSTR(MP_QSTR_LVIO4), MP_ROM_PTR(&pin_GPIO13) }, + { MP_ROM_QSTR(MP_QSTR_LVCAM), MP_ROM_PTR(&pin_GPIO12) }, + { MP_ROM_QSTR(MP_QSTR_DIRIO0), MP_ROM_PTR(&pin_GPIO4) }, + { MP_ROM_QSTR(MP_QSTR_DIRIO1), MP_ROM_PTR(&pin_GPIO3) }, + { MP_ROM_QSTR(MP_QSTR_DIRIO2), MP_ROM_PTR(&pin_GPIO14) }, + { MP_ROM_QSTR(MP_QSTR_DIRIO3), MP_ROM_PTR(&pin_GPIO15) }, + { MP_ROM_QSTR(MP_QSTR_DIRIO4), MP_ROM_PTR(&pin_GPIO10) }, + { MP_ROM_QSTR(MP_QSTR_DIRCAM), MP_ROM_PTR(&pin_GPIO11) }, + { MP_ROM_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_GPIO42) }, + { MP_ROM_QSTR(MP_QSTR_D2), MP_ROM_PTR(&pin_GPIO41) }, + { MP_ROM_QSTR(MP_QSTR_D3), MP_ROM_PTR(&pin_GPIO40) }, + { MP_ROM_QSTR(MP_QSTR_D4), MP_ROM_PTR(&pin_GPIO39) }, + { MP_ROM_QSTR(MP_QSTR_D5), MP_ROM_PTR(&pin_GPIO38) }, + { MP_ROM_QSTR(MP_QSTR_D6), MP_ROM_PTR(&pin_GPIO37) }, + { MP_ROM_QSTR(MP_QSTR_D7), MP_ROM_PTR(&pin_GPIO36) }, + { MP_ROM_QSTR(MP_QSTR_D8), MP_ROM_PTR(&pin_GPIO35) }, + { MP_ROM_QSTR(MP_QSTR_DBG_TX), MP_ROM_PTR(&pin_GPIO43) }, + { MP_ROM_QSTR(MP_QSTR_DBG_RX), MP_ROM_PTR(&pin_GPIO44) }, + { MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO17) }, + { MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_GPIO18) }, + { MP_ROM_QSTR(MP_QSTR_RS232_TX), MP_ROM_PTR(&pin_GPIO17) }, + { MP_ROM_QSTR(MP_QSTR_RS232_RX), MP_ROM_PTR(&pin_GPIO18) }, + { MP_ROM_QSTR(MP_QSTR_RS232_EN), MP_ROM_PTR(&pin_GPIO16) }, + { MP_ROM_QSTR(MP_QSTR_DFU), MP_ROM_PTR(&pin_GPIO0) }, + { MP_ROM_QSTR(MP_QSTR_SW1), MP_ROM_PTR(&pin_GPIO0) }, + { MP_ROM_QSTR(MP_QSTR_BOOT), MP_ROM_PTR(&pin_GPIO0) }, + { MP_ROM_QSTR(MP_QSTR_NEOPIXEL), MP_ROM_PTR(&pin_GPIO45) }, +}; +MP_DEFINE_CONST_DICT(board_module_globals, board_global_dict_table); diff --git a/ports/esp32s2/boards/artisense_rd00/sdkconfig b/ports/esp32s2/boards/artisense_rd00/sdkconfig new file mode 100644 index 0000000000..b5bf2411f7 --- /dev/null +++ b/ports/esp32s2/boards/artisense_rd00/sdkconfig @@ -0,0 +1,39 @@ +CONFIG_ESP32S2_SPIRAM_SUPPORT=y + +# +# SPI RAM config +# +# CONFIG_SPIRAM_TYPE_AUTO is not set +CONFIG_SPIRAM_TYPE_ESPPSRAM16=y +# CONFIG_SPIRAM_TYPE_ESPPSRAM32 is not set +# CONFIG_SPIRAM_TYPE_ESPPSRAM64 is not set +CONFIG_SPIRAM_SIZE=2097152 + +# +# PSRAM clock and cs IO for ESP32S2 +# +CONFIG_DEFAULT_PSRAM_CLK_IO=30 +CONFIG_DEFAULT_PSRAM_CS_IO=26 +# end of PSRAM clock and cs IO for ESP32S2 + +# CONFIG_SPIRAM_FETCH_INSTRUCTIONS is not set +# CONFIG_SPIRAM_RODATA is not set +# CONFIG_SPIRAM_SPEED_80M is not set +CONFIG_SPIRAM_SPEED_40M=y +# CONFIG_SPIRAM_SPEED_26M is not set +# CONFIG_SPIRAM_SPEED_20M 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 +# CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY is not set +# end of SPI RAM config + +# +# LWIP +# +CONFIG_LWIP_LOCAL_HOSTNAME="RD00-ESP32S2" +# end of LWIP diff --git a/ports/esp32s2/boards/unexpectedmaker_tinys2/pins.c b/ports/esp32s2/boards/unexpectedmaker_tinys2/pins.c index 7b07b89293..9815cf288d 100644 --- a/ports/esp32s2/boards/unexpectedmaker_tinys2/pins.c +++ b/ports/esp32s2/boards/unexpectedmaker_tinys2/pins.c @@ -30,18 +30,18 @@ STATIC const mp_rom_map_elem_t board_global_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_A9), MP_ROM_PTR(&pin_GPIO4) }, { MP_ROM_QSTR(MP_QSTR_D6), MP_ROM_PTR(&pin_GPIO4) }, - { MP_ROM_QSTR(MP_QSTR_IO36), MP_ROM_PTR(&pin_GPIO36) }, - { MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_GPIO36) }, - { MP_ROM_QSTR(MP_QSTR_D25), MP_ROM_PTR(&pin_GPIO36) }, - { MP_ROM_QSTR(MP_QSTR_IO35), MP_ROM_PTR(&pin_GPIO35) }, { MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_GPIO35) }, { MP_ROM_QSTR(MP_QSTR_SDO), MP_ROM_PTR(&pin_GPIO35) }, { MP_ROM_QSTR(MP_QSTR_D24), MP_ROM_PTR(&pin_GPIO35) }, + { MP_ROM_QSTR(MP_QSTR_IO36), MP_ROM_PTR(&pin_GPIO36) }, + { MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_GPIO36) }, + { MP_ROM_QSTR(MP_QSTR_SDI), MP_ROM_PTR(&pin_GPIO36) }, + { MP_ROM_QSTR(MP_QSTR_D25), MP_ROM_PTR(&pin_GPIO36) }, + { MP_ROM_QSTR(MP_QSTR_IO37), MP_ROM_PTR(&pin_GPIO37) }, - { MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_GPIO37) }, - { MP_ROM_QSTR(MP_QSTR_SDI), MP_ROM_PTR(&pin_GPIO37) }, + { MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_GPIO37) }, { MP_ROM_QSTR(MP_QSTR_D23), MP_ROM_PTR(&pin_GPIO37) }, { MP_ROM_QSTR(MP_QSTR_IO14), MP_ROM_PTR(&pin_GPIO14) }, diff --git a/ports/esp32s2/common-hal/alarm/__init__.c b/ports/esp32s2/common-hal/alarm/__init__.c index be435e2104..63a19ab948 100644 --- a/ports/esp32s2/common-hal/alarm/__init__.c +++ b/ports/esp32s2/common-hal/alarm/__init__.c @@ -75,7 +75,7 @@ STATIC esp_sleep_wakeup_cause_t _get_wakeup_cause(void) { return esp_sleep_get_wakeup_cause(); } -bool alarm_woken_from_sleep(void) { +bool common_hal_alarm_woken_from_sleep(void) { return _get_wakeup_cause() != ESP_SLEEP_WAKEUP_UNDEFINED; } @@ -120,8 +120,8 @@ STATIC void _idle_until_alarm(void) { while (!mp_hal_is_interrupted()) { RUN_BACKGROUND_TASKS; // Allow ctrl-C interrupt. - if (alarm_woken_from_sleep()) { - alarm_save_wake_alarm(); + if (common_hal_alarm_woken_from_sleep()) { + shared_alarm_save_wake_alarm(); return; } port_idle_until_interrupt(); @@ -147,7 +147,7 @@ void common_hal_alarm_set_deep_sleep_alarms(size_t n_alarms, const mp_obj_t *ala _setup_sleep_alarms(true, n_alarms, alarms); } -void NORETURN alarm_enter_deep_sleep(void) { +void NORETURN common_hal_alarm_enter_deep_sleep(void) { alarm_pin_pinalarm_prepare_for_deep_sleep(); alarm_touch_touchalarm_prepare_for_deep_sleep(); @@ -164,5 +164,5 @@ void NORETURN alarm_enter_deep_sleep(void) { } void common_hal_alarm_gc_collect(void) { - gc_collect_ptr(alarm_get_wake_alarm()); + gc_collect_ptr(shared_alarm_get_wake_alarm()); } diff --git a/ports/esp32s2/common-hal/alarm/pin/__init__.c b/ports/esp32s2/common-hal/alarm/pin/__init__.c deleted file mode 100644 index ca8cfac7f7..0000000000 --- a/ports/esp32s2/common-hal/alarm/pin/__init__.c +++ /dev/null @@ -1,37 +0,0 @@ -#include "shared-bindings/alarm_io/__init__.h" - -#include "esp_sleep.h" -#include "driver/rtc_io.h" - -mp_obj_t common_hal_alarm_io_pin_state(alarm_io_obj_t *self_in) { - if (!rtc_gpio_is_valid_gpio(self_in->gpio)) { - mp_raise_ValueError(translate("io must be rtc io")); - } - - if (self_in->pull && !self_in->level) { - for (uint8_t i = 0; i <= 4; i += 2) { - if (self_in->gpio == i) { - mp_raise_ValueError(translate("IOs 0, 2 & 4 do not support internal pullup in sleep")); - } - } - } - - switch (esp_sleep_enable_ext0_wakeup(self_in->gpio, self_in->level)) { - case ESP_ERR_INVALID_ARG: - mp_raise_ValueError(translate("trigger level must be 0 or 1")); - case ESP_ERR_INVALID_STATE: - mp_raise_RuntimeError(translate("wakeup conflict")); - default: - break; - } - - if (self_in->pull) { - (self_in->level) ? rtc_gpio_pulldown_en(self_in->gpio) : rtc_gpio_pullup_en(self_in->gpio); - } - - return self_in; -} - -void common_hal_alarm_io_disable(void) { - esp_sleep_disable_wakeup_source(ESP_SLEEP_WAKEUP_EXT0 | ESP_SLEEP_WAKEUP_EXT1); -} diff --git a/ports/esp32s2/common-hal/socketpool/Socket.c b/ports/esp32s2/common-hal/socketpool/Socket.c index 385d71b54d..7c6f66c825 100644 --- a/ports/esp32s2/common-hal/socketpool/Socket.c +++ b/ports/esp32s2/common-hal/socketpool/Socket.c @@ -229,7 +229,7 @@ mp_uint_t common_hal_socketpool_socket_recvfrom_into(socketpool_socket_obj_t *se if (!timed_out) { memcpy((void *)ip, (void *)&source_addr.sin_addr.s_addr, sizeof(source_addr.sin_addr.s_addr)); - *port = source_addr.sin_port; + *port = htons(source_addr.sin_port); } else { mp_raise_OSError(ETIMEDOUT); } diff --git a/ports/mimxrt10xx/boards/imxrt1010_evk/mpconfigboard.mk b/ports/mimxrt10xx/boards/imxrt1010_evk/mpconfigboard.mk index 81eb635973..09161ece32 100644 --- a/ports/mimxrt10xx/boards/imxrt1010_evk/mpconfigboard.mk +++ b/ports/mimxrt10xx/boards/imxrt1010_evk/mpconfigboard.mk @@ -6,3 +6,7 @@ USB_MANUFACTURER = "NXP" CHIP_VARIANT = MIMXRT1011DAE5A CHIP_FAMILY = MIMXRT1011 FLASH = AT25SF128A + +# Include these Python libraries in the firmware +FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_ESP32SPI +FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_Requests diff --git a/ports/mimxrt10xx/boards/metro_m7_1011/pins.c b/ports/mimxrt10xx/boards/metro_m7_1011/pins.c index ea9ae55290..f79dd21e9c 100644 --- a/ports/mimxrt10xx/boards/metro_m7_1011/pins.c +++ b/ports/mimxrt10xx/boards/metro_m7_1011/pins.c @@ -42,10 +42,6 @@ STATIC const mp_rom_map_elem_t board_global_dict_table[] = { { MP_OBJ_NEW_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_GPIO_AD_03) }, { MP_OBJ_NEW_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_GPIO_AD_04) }, - // UART - { MP_OBJ_NEW_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO_10) }, - { MP_OBJ_NEW_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_GPIO_09) }, - // I2C { MP_OBJ_NEW_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO_01) }, { MP_OBJ_NEW_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_GPIO_02) }, diff --git a/ports/mimxrt10xx/common-hal/busio/SPI.c b/ports/mimxrt10xx/common-hal/busio/SPI.c index 3488ac0fbe..88923fe06d 100644 --- a/ports/mimxrt10xx/common-hal/busio/SPI.c +++ b/ports/mimxrt10xx/common-hal/busio/SPI.c @@ -187,6 +187,7 @@ void common_hal_busio_spi_construct(busio_spi_obj_t *self, LPSPI_Enable(self->spi, false); uint32_t tcrPrescaleValue; self->baudrate = LPSPI_MasterSetBaudRate(self->spi, config.baudRate, LPSPI_MASTER_CLK_FREQ, &tcrPrescaleValue); + self->spi->TCR = (self->spi->TCR & ~LPSPI_TCR_PRESCALE_MASK) | LPSPI_TCR_PRESCALE(tcrPrescaleValue); LPSPI_Enable(self->spi, true); claim_pin(self->clock->pin); @@ -233,14 +234,14 @@ void common_hal_busio_spi_deinit(busio_spi_obj_t *self) { bool common_hal_busio_spi_configure(busio_spi_obj_t *self, uint32_t baudrate, uint8_t polarity, uint8_t phase, uint8_t bits) { - LPSPI_Enable(self->spi, false); - uint32_t tcrPrescaleValue; - self->baudrate = LPSPI_MasterSetBaudRate(self->spi, baudrate, LPSPI_MASTER_CLK_FREQ, &tcrPrescaleValue); - LPSPI_Enable(self->spi, true); + if (baudrate > 30000000) { + baudrate = 30000000; // "Absolute maximum frequency of operation (fop) is 30 MHz" -- IMXRT1010CEC.pdf + } if ((polarity == common_hal_busio_spi_get_polarity(self)) && (phase == common_hal_busio_spi_get_phase(self)) && - (bits == ((self->spi->TCR & LPSPI_TCR_FRAMESZ_MASK) >> LPSPI_TCR_FRAMESZ_SHIFT)) + 1) { + (bits == ((self->spi->TCR & LPSPI_TCR_FRAMESZ_MASK) >> LPSPI_TCR_FRAMESZ_SHIFT)) + 1 && + (baudrate == common_hal_busio_spi_get_frequency(self))) { return true; } @@ -251,10 +252,22 @@ bool common_hal_busio_spi_configure(busio_spi_obj_t *self, config.cpol = polarity; config.cpha = phase; config.bitsPerFrame = bits; + // The between-transfer-delay must be equal to the SCK low-time. + // Setting it lower introduces runt pulses, while setting it higher + // wastes time. + config.betweenTransferDelayInNanoSec = (1000000000 / config.baudRate) / 2; LPSPI_Deinit(self->spi); LPSPI_MasterInit(self->spi, &config, LPSPI_MASTER_CLK_FREQ); + // Recompute the actual baudrate so that we can set the baudrate + // (frequency) property. We don't need to set TCR because it was + // established by LPSPI_MasterInit, above + uint32_t tcrPrescaleValue; + LPSPI_Enable(self->spi, false); + self->baudrate = LPSPI_MasterSetBaudRate(self->spi, baudrate, LPSPI_MASTER_CLK_FREQ, &tcrPrescaleValue); + LPSPI_Enable(self->spi, true); + return true; } @@ -277,6 +290,21 @@ void common_hal_busio_spi_unlock(busio_spi_obj_t *self) { self->has_lock = false; } +static status_t transfer_common(busio_spi_obj_t *self, lpspi_transfer_t *xfer) { + xfer->configFlags = kLPSPI_MasterPcsContinuous; + + status_t status; + int retries = MAX_SPI_BUSY_RETRIES; + do { + status = LPSPI_MasterTransferBlocking(self->spi, xfer); + } while (status == kStatus_LPSPI_Busy && --retries > 0); + + if (status != kStatus_Success) { + printf("%s: status %ld\r\n", __func__, status); + } + return status; +} + bool common_hal_busio_spi_write(busio_spi_obj_t *self, const uint8_t *data, size_t len) { if (len == 0) { @@ -289,17 +317,8 @@ bool common_hal_busio_spi_write(busio_spi_obj_t *self, lpspi_transfer_t xfer = { 0 }; xfer.txData = (uint8_t *)data; xfer.dataSize = len; - xfer.configFlags = kLPSPI_MasterPcs0; - status_t status; - int retries = MAX_SPI_BUSY_RETRIES; - do { - status = LPSPI_MasterTransferBlocking(self->spi, &xfer); - } while (status == kStatus_LPSPI_Busy && --retries > 0); - - if (status != kStatus_Success) { - printf("%s: status %ld\r\n", __func__, status); - } + status_t status = transfer_common(self, &xfer); return status == kStatus_Success; } @@ -319,15 +338,7 @@ bool common_hal_busio_spi_read(busio_spi_obj_t *self, xfer.rxData = data; xfer.dataSize = len; - status_t status; - int retries = MAX_SPI_BUSY_RETRIES; - do { - status = LPSPI_MasterTransferBlocking(self->spi, &xfer); - } while (status == kStatus_LPSPI_Busy && --retries > 0); - - if (status != kStatus_Success) { - printf("%s: status %ld\r\n", __func__, status); - } + status_t status = transfer_common(self, &xfer); return status == kStatus_Success; } @@ -347,15 +358,7 @@ bool common_hal_busio_spi_transfer(busio_spi_obj_t *self, const uint8_t *data_ou xfer.rxData = data_in; xfer.dataSize = len; - status_t status; - int retries = MAX_SPI_BUSY_RETRIES; - do { - status = LPSPI_MasterTransferBlocking(self->spi, &xfer); - } while (status == kStatus_LPSPI_Busy && --retries > 0); - - if (status != kStatus_Success) { - printf("%s: status %ld\r\n", __func__, status); - } + status_t status = transfer_common(self, &xfer); return status == kStatus_Success; } diff --git a/ports/mimxrt10xx/common-hal/busio/UART.c b/ports/mimxrt10xx/common-hal/busio/UART.c index 29f9ea0b27..ec0296156a 100644 --- a/ports/mimxrt10xx/common-hal/busio/UART.c +++ b/ports/mimxrt10xx/common-hal/busio/UART.c @@ -153,6 +153,13 @@ void common_hal_busio_uart_construct(busio_uart_obj_t *self, mp_raise_ValueError(translate("Supply at least one UART pin")); } + if (rx && !self->rx) { + mp_raise_ValueError_varg(translate("Invalid %q pin"), MP_QSTR_RX); + } + if (tx && !self->tx) { + mp_raise_ValueError_varg(translate("Invalid %q pin"), MP_QSTR_TX); + } + if (uart_taken) { mp_raise_ValueError(translate("Hardware in use, try alternative pins")); } @@ -188,7 +195,7 @@ void common_hal_busio_uart_construct(busio_uart_obj_t *self, } } if (self->rts == NULL) { - mp_raise_ValueError(translate("Selected RTS pin not valid")); + mp_raise_ValueError_varg(translate("Invalid %q pin"), MP_QSTR_RTS); } } @@ -202,16 +209,19 @@ void common_hal_busio_uart_construct(busio_uart_obj_t *self, } } if (self->cts == NULL) { - mp_raise_ValueError(translate("Selected CTS pin not valid")); + mp_raise_ValueError_varg(translate("Invalid %q pin"), MP_QSTR_CTS); } } if (self->rx) { self->uart = mcu_uart_banks[self->rx->bank_idx - 1]; } else { + assert(self->tx); self->uart = mcu_uart_banks[self->tx->bank_idx - 1]; } + assert(self->uart); + if (self->rx) { config_periph_pin(self->rx); } diff --git a/ports/mimxrt10xx/common-hal/pwmio/PWMOut.c b/ports/mimxrt10xx/common-hal/pwmio/PWMOut.c index 28ea81fa22..458fee6412 100644 --- a/ports/mimxrt10xx/common-hal/pwmio/PWMOut.c +++ b/ports/mimxrt10xx/common-hal/pwmio/PWMOut.c @@ -31,15 +31,31 @@ #include "py/runtime.h" #include "common-hal/pwmio/PWMOut.h" #include "shared-bindings/pwmio/PWMOut.h" -#include "shared-bindings/microcontroller/Processor.h" +#include "shared-bindings/microcontroller/Pin.h" #include "fsl_pwm.h" #include "supervisor/shared/translate.h" #include "periph.h" -#include +static void config_periph_pin(const mcu_pwm_obj_t *periph) { + IOMUXC_SetPinMux( + periph->pin->mux_reg, periph->mux_mode, + periph->input_reg, periph->input_idx, + periph->pin->cfg_reg, + 0); + IOMUXC_SetPinConfig(0, 0, 0, 0, + periph->pin->cfg_reg, + IOMUXC_SW_PAD_CTL_PAD_HYS(0) + | IOMUXC_SW_PAD_CTL_PAD_PUS(1) + | IOMUXC_SW_PAD_CTL_PAD_PUE(1) + | IOMUXC_SW_PAD_CTL_PAD_PKE(1) + | IOMUXC_SW_PAD_CTL_PAD_ODE(0) + | IOMUXC_SW_PAD_CTL_PAD_SPEED(1) + | IOMUXC_SW_PAD_CTL_PAD_DSE(6) + | IOMUXC_SW_PAD_CTL_PAD_SRE(0)); +} // TODO // #include "samd/pins.h" @@ -133,6 +149,21 @@ void pwmout_reset(void) { #define PWM_SRC_CLK_FREQ CLOCK_GetFreq(kCLOCK_IpgClk) +static int calculate_pulse_count(uint32_t frequency, uint8_t *prescaler) { + if (frequency > PWM_SRC_CLK_FREQ/2) { + return 0; + } + for(int shift = 0; shift<8; shift++) { + int pulse_count = PWM_SRC_CLK_FREQ/(1<= 65535) { + continue; + } + *prescaler = shift; + return pulse_count; + } + return 0; +} + pwmout_result_t common_hal_pwmio_pwmout_construct(pwmio_pwmout_obj_t *self, const mcu_pin_obj_t *pin, uint16_t duty, @@ -148,8 +179,6 @@ pwmout_result_t common_hal_pwmio_pwmout_construct(pwmio_pwmout_obj_t *self, continue; } - printf("pwm: 0x%p, sum %d, chan %d, mux %d\r\n", mcu_pwm_list[i].pwm, mcu_pwm_list[i].submodule, mcu_pwm_list[i].channel, mcu_pwm_list[i].mux_mode); - self->pwm = &mcu_pwm_list[i]; break; @@ -159,24 +188,7 @@ pwmout_result_t common_hal_pwmio_pwmout_construct(pwmio_pwmout_obj_t *self, return PWMOUT_INVALID_PIN; } - CLOCK_SetDiv(kCLOCK_AhbDiv, 0x2); /* Set AHB PODF to 2, divide by 3 */ - CLOCK_SetDiv(kCLOCK_IpgDiv, 0x3); /* Set IPG PODF to 3, divede by 4 */ - -// TODO re-enable -// IOMUXC_SetPinMux( -// IOMUXC_GPIO_SD_02_FLEXPWM1_PWM0_A, /* GPIO_02 is configured as FLEXPWM1_PWM0_A */ -// 0U); /* Software Input On Field: Input Path is determined by functionality */ -// -// IOMUXC_SetPinConfig( -// IOMUXC_GPIO_SD_02_FLEXPWM1_PWM0_A, /* GPIO_02 PAD functional properties : */ -// 0x10A0U); /* Slew Rate Field: Slow Slew Rate -// Drive Strength Field: R0/4 -// Speed Field: fast(150MHz) -// Open Drain Enable Field: Open Drain Disabled -// Pull / Keep Enable Field: Pull/Keeper Enabled -// Pull / Keep Select Field: Keeper -// Pull Up / Down Config. Field: 100K Ohm Pull Down -// Hyst. Enable Field: Hysteresis Disabled */ + config_periph_pin(self->pwm); pwm_config_t pwmConfig; @@ -199,166 +211,38 @@ pwmout_result_t common_hal_pwmio_pwmout_construct(pwmio_pwmout_obj_t *self, // pwmConfig.reloadLogic = kPWM_ReloadPwmFullCycle; pwmConfig.enableDebugMode = true; - if (PWM_Init(PWM1, self->pwm->submodule, &pwmConfig) == kStatus_Fail) { - printf("PWM initialization failed\r\n"); + self->pulse_count = calculate_pulse_count(frequency, &self->prescaler); + + if (self->pulse_count == 0) { + return PWMOUT_INVALID_FREQUENCY; + } + + pwmConfig.prescale = self->prescaler; + + if (PWM_Init(self->pwm->pwm, self->pwm->submodule, &pwmConfig) == kStatus_Fail) { return PWMOUT_INVALID_PIN; } - pwm_signal_param_t pwmSignal; + pwm_signal_param_t pwmSignal = { + .pwmChannel = self->pwm->channel, + .level = kPWM_HighTrue, + .dutyCyclePercent = 0, // avoid an initial transient + .deadtimeValue = 0, // allow 100% duty cycle + }; - /* Set deadtime count, we set this to about 650ns */ - uint16_t deadTimeVal = ((uint64_t)PWM_SRC_CLK_FREQ * 650) / 1000000000; + // Disable all fault inputs + self->pwm->pwm->SM[self->pwm->submodule].DISMAP[0] = 0; + self->pwm->pwm->SM[self->pwm->submodule].DISMAP[1] = 0; - pwmSignal.pwmChannel = self->pwm->channel; - pwmSignal.level = kPWM_HighTrue; - pwmSignal.dutyCyclePercent = frequency / 2; /* 1 percent dutycycle */ - pwmSignal.deadtimeValue = deadTimeVal; + status_t status = PWM_SetupPwm(self->pwm->pwm, self->pwm->submodule, &pwmSignal, 1, kPWM_EdgeAligned, frequency, PWM_SRC_CLK_FREQ); - PWM_SetupPwm(PWM1, self->pwm->submodule, &pwmSignal, 1, kPWM_SignedCenterAligned, frequency, PWM_SRC_CLK_FREQ); + if (status != kStatus_Success) { + return PWMOUT_INITIALIZATION_ERROR; + } + PWM_SetPwmLdok(self->pwm->pwm, 1 << self->pwm->submodule, true); - PWM_SetPwmLdok(PWM1, kPWM_Control_Module_0 | kPWM_Control_Module_1 | kPWM_Control_Module_2, true); + PWM_StartTimer(self->pwm->pwm, 1 << self->pwm->submodule); - PWM_StartTimer(PWM1, kPWM_Control_Module_0 | kPWM_Control_Module_1 | kPWM_Control_Module_2); - -// if (frequency == 0 || frequency > 6000000) { -// return PWMOUT_INVALID_FREQUENCY; -// } - -// // Figure out which timer we are using. -// // First see if a tcc is already going with the frequency we want and our -// // channel is unused. tc's don't have enough channels to share. -// const pin_timer_t* timer = NULL; -// uint8_t mux_position = 0; -// if (!variable_frequency) { -// for (uint8_t i = 0; i < TCC_INST_NUM && timer == NULL; i++) { -// if (target_tcc_frequencies[i] != frequency) { -// continue; -// } -// for (uint8_t j = 0; j < NUM_TIMERS_PER_PIN && timer == NULL; j++) { -// const pin_timer_t* t = &pin->timer[j]; -// if (t->index != i || t->is_tc || t->index >= TCC_INST_NUM) { -// continue; -// } -// Tcc* tcc = tcc_insts[t->index]; -// if (tcc->CTRLA.bit.ENABLE == 1 && channel_ok(t)) { -// timer = t; -// mux_position = j; -// // Claim channel. -// tcc_channels[timer->index] |= (1 << tcc_channel(timer)); -// -// } -// } -// } -// } -// -// // No existing timer has been found, so find a new one to use and set it up. -// if (timer == NULL) { -// // By default, with fixed frequency we want to share a TCC because its likely we'll have -// // other outputs at the same frequency. If the frequency is variable then we'll only have -// // one output so we start with the TCs to see if they work. -// int8_t direction = -1; -// uint8_t start = NUM_TIMERS_PER_PIN - 1; -// bool found = false; -// if (variable_frequency) { -// direction = 1; -// start = 0; -// } -// for (int8_t i = start; i >= 0 && i < NUM_TIMERS_PER_PIN && timer == NULL; i += direction) { -// const pin_timer_t* t = &pin->timer[i]; -// if ((!t->is_tc && t->index >= TCC_INST_NUM) || -// (t->is_tc && t->index >= TC_INST_NUM)) { -// continue; -// } -// if (t->is_tc) { -// found = true; -// Tc* tc = tc_insts[t->index]; -// if (tc->COUNT16.CTRLA.bit.ENABLE == 0 && t->wave_output == 1) { -// timer = t; -// mux_position = i; -// } -// } else { -// Tcc* tcc = tcc_insts[t->index]; -// if (tcc->CTRLA.bit.ENABLE == 0 && channel_ok(t)) { -// timer = t; -// mux_position = i; -// } -// } -// } -// -// if (timer == NULL) { -// if (found) { -// return PWMOUT_ALL_TIMERS_ON_PIN_IN_USE; -// } -// return PWMOUT_ALL_TIMERS_IN_USE; -// } -// -// uint8_t resolution = 0; -// if (timer->is_tc) { -// resolution = 16; -// } else { -// // TCC resolution varies so look it up. -// const uint8_t _tcc_sizes[TCC_INST_NUM] = TCC_SIZES; -// resolution = _tcc_sizes[timer->index]; -// } -// // First determine the divisor that gets us the highest resolution. -// uint32_t system_clock = common_hal_mcu_processor_get_frequency(); -// uint32_t top; -// uint8_t divisor; -// for (divisor = 0; divisor < 8; divisor++) { -// top = (system_clock / prescaler[divisor] / frequency) - 1; -// if (top < (1u << resolution)) { -// break; -// } -// } -// -// set_timer_handler(timer->is_tc, timer->index, TC_HANDLER_NO_INTERRUPT); -// // We use the zeroeth clock on either port to go full speed. -// turn_on_clocks(timer->is_tc, timer->index, 0); -// -// if (timer->is_tc) { -// tc_periods[timer->index] = top; -// Tc* tc = tc_insts[timer->index]; -// #ifdef SAMD21 -// tc->COUNT16.CTRLA.reg = TC_CTRLA_MODE_COUNT16 | -// TC_CTRLA_PRESCALER(divisor) | -// TC_CTRLA_WAVEGEN_MPWM; -// tc->COUNT16.CC[0].reg = top; -// #endif -// #ifdef SAMD51 -// -// tc->COUNT16.CTRLA.bit.SWRST = 1; -// while (tc->COUNT16.CTRLA.bit.SWRST == 1) { -// } -// tc_set_enable(tc, false); -// tc->COUNT16.CTRLA.reg = TC_CTRLA_MODE_COUNT16 | TC_CTRLA_PRESCALER(divisor); -// tc->COUNT16.WAVE.reg = TC_WAVE_WAVEGEN_MPWM; -// tc->COUNT16.CCBUF[0].reg = top; -// tc->COUNT16.CCBUF[1].reg = 0; -// #endif -// -// tc_set_enable(tc, true); -// } else { -// tcc_periods[timer->index] = top; -// Tcc* tcc = tcc_insts[timer->index]; -// tcc_set_enable(tcc, false); -// tcc->CTRLA.bit.PRESCALER = divisor; -// tcc->PER.bit.PER = top; -// tcc->WAVE.bit.WAVEGEN = TCC_WAVE_WAVEGEN_NPWM_Val; -// tcc_set_enable(tcc, true); -// target_tcc_frequencies[timer->index] = frequency; -// tcc_refcount[timer->index]++; -// if (variable_frequency) { -// // We're changing frequency so claim all of the channels. -// tcc_channels[timer->index] = 0xff; -// } else { -// tcc_channels[timer->index] |= (1 << tcc_channel(timer)); -// } -// } -// } -// -// self->timer = timer; -// -// gpio_set_pin_function(pin->number, GPIO_PIN_FUNCTION_E + mux_position); common_hal_pwmio_pwmout_set_duty_cycle(self, duty); @@ -374,177 +258,68 @@ void common_hal_pwmio_pwmout_deinit(pwmio_pwmout_obj_t *self) { return; } -// const pin_timer_t* t = self->timer; -// if (t->is_tc) { -// Tc* tc = tc_insts[t->index]; -// tc_set_enable(tc, false); -// tc->COUNT16.CTRLA.bit.SWRST = true; -// tc_wait_for_sync(tc); -// } else { -// tcc_refcount[t->index]--; -// tcc_channels[t->index] &= ~(1 << tcc_channel(t)); -// if (tcc_refcount[t->index] == 0) { -// target_tcc_frequencies[t->index] = 0; -// Tcc* tcc = tcc_insts[t->index]; -// tcc_set_enable(tcc, false); -// tcc->CTRLA.bit.SWRST = true; -// while (tcc->SYNCBUSY.bit.SWRST != 0) { -// /* Wait for sync */ -// } -// } -// } -// reset_pin_number(self->pin->number); + common_hal_reset_pin(self->pin); self->pin = NULL; } void common_hal_pwmio_pwmout_set_duty_cycle(pwmio_pwmout_obj_t *self, uint16_t duty) { - PWM_UpdatePwmDutycycle(PWM1, self->pwm->submodule, self->pwm->channel, kPWM_SignedCenterAligned, duty); - -// const pin_timer_t* t = self->timer; -// if (t->is_tc) { -// uint16_t adjusted_duty = tc_periods[t->index] * duty / 0xffff; -// #ifdef SAMD21 -// tc_insts[t->index]->COUNT16.CC[t->wave_output].reg = adjusted_duty; -// #endif -// #ifdef SAMD51 -// Tc* tc = tc_insts[t->index]; -// while (tc->COUNT16.SYNCBUSY.bit.CC1 != 0) {} -// tc->COUNT16.CCBUF[1].reg = adjusted_duty; -// #endif -// } else { -// uint32_t adjusted_duty = ((uint64_t) tcc_periods[t->index]) * duty / 0xffff; -// uint8_t channel = tcc_channel(t); -// Tcc* tcc = tcc_insts[t->index]; -// -// // Write into the CC buffer register, which will be transferred to the -// // CC register on an UPDATE (when period is finished). -// // Do clock domain syncing as necessary. -// -// while (tcc->SYNCBUSY.reg != 0) {} -// -// // Lock out double-buffering while updating the CCB value. -// tcc->CTRLBSET.bit.LUPD = 1; -// #ifdef SAMD21 -// tcc->CCB[channel].reg = adjusted_duty; -// #endif -// #ifdef SAMD51 -// tcc->CCBUF[channel].reg = adjusted_duty; -// #endif -// tcc->CTRLBCLR.bit.LUPD = 1; -// } + // we do not use PWM_UpdatePwmDutycycle because ... + // * it works in integer percents + // * it can't set the "X" duty cycle + self->duty_cycle = duty; + if (duty == 65535) { + self->duty_scaled = self->pulse_count + 1; + } else { + self->duty_scaled = ((uint32_t)duty * self->pulse_count + self->pulse_count/2) / 65535; + } + switch (self->pwm->channel) { + case kPWM_PwmX: + self->pwm->pwm->SM[self->pwm->submodule].VAL0 = 0; + self->pwm->pwm->SM[self->pwm->submodule].VAL1 = self->duty_scaled; + break; + case kPWM_PwmA: + self->pwm->pwm->SM[self->pwm->submodule].VAL2 = 0; + self->pwm->pwm->SM[self->pwm->submodule].VAL3 = self->duty_scaled; + break; + case kPWM_PwmB: + self->pwm->pwm->SM[self->pwm->submodule].VAL4 = 0; + self->pwm->pwm->SM[self->pwm->submodule].VAL5 = self->duty_scaled; + } + PWM_SetPwmLdok(self->pwm->pwm, 1 << self->pwm->submodule, true); } uint16_t common_hal_pwmio_pwmout_get_duty_cycle(pwmio_pwmout_obj_t *self) { - return 0; -// const pin_timer_t* t = self->timer; -// if (t->is_tc) { -// Tc* tc = tc_insts[t->index]; -// tc_wait_for_sync(tc); -// uint16_t cv = tc->COUNT16.CC[t->wave_output].reg; -// return cv * 0xffff / tc_periods[t->index]; -// } else { -// Tcc* tcc = tcc_insts[t->index]; -// uint8_t channel = tcc_channel(t); -// uint32_t cv = 0; -// -// while (tcc->SYNCBUSY.bit.CTRLB) {} -// -// #ifdef SAMD21 -// // If CCBV (CCB valid) is set, the CCB value hasn't yet been copied -// // to the CC value. -// if ((tcc->STATUS.vec.CCBV & (1 << channel)) != 0) { -// cv = tcc->CCB[channel].reg; -// } else { -// cv = tcc->CC[channel].reg; -// } -// #endif -// #ifdef SAMD51 -// if ((tcc->STATUS.vec.CCBUFV & (1 << channel)) != 0) { -// cv = tcc->CCBUF[channel].reg; -// } else { -// cv = tcc->CC[channel].reg; -// } -// #endif -// -// uint32_t duty_cycle = ((uint64_t) cv) * 0xffff / tcc_periods[t->index]; -// -// return duty_cycle; -// } + if (self->duty_cycle == 65535) { + return 65535; + } + return ((uint32_t)self->duty_scaled * 65535 + 65535/2) / self->pulse_count; } void common_hal_pwmio_pwmout_set_frequency(pwmio_pwmout_obj_t *self, uint32_t frequency) { -// if (frequency == 0 || frequency > 6000000) { -// mp_raise_ValueError(translate("Invalid PWM frequency")); -// } -// const pin_timer_t* t = self->timer; -// uint8_t resolution; -// if (t->is_tc) { -// resolution = 16; -// } else { -// resolution = 24; -// } -// uint32_t system_clock = common_hal_mcu_processor_get_frequency(); -// uint32_t new_top; -// uint8_t new_divisor; -// for (new_divisor = 0; new_divisor < 8; new_divisor++) { -// new_top = (system_clock / prescaler[new_divisor] / frequency) - 1; -// if (new_top < (1u << resolution)) { -// break; -// } -// } -// uint16_t old_duty = common_hal_pwmio_pwmout_get_duty_cycle(self); -// if (t->is_tc) { -// Tc* tc = tc_insts[t->index]; -// uint8_t old_divisor = tc->COUNT16.CTRLA.bit.PRESCALER; -// if (new_divisor != old_divisor) { -// tc_set_enable(tc, false); -// tc->COUNT16.CTRLA.bit.PRESCALER = new_divisor; -// tc_set_enable(tc, true); -// } -// tc_periods[t->index] = new_top; -// #ifdef SAMD21 -// tc->COUNT16.CC[0].reg = new_top; -// #endif -// #ifdef SAMD51 -// while (tc->COUNT16.SYNCBUSY.reg != 0) {} -// tc->COUNT16.CCBUF[0].reg = new_top; -// #endif -// } else { -// Tcc* tcc = tcc_insts[t->index]; -// uint8_t old_divisor = tcc->CTRLA.bit.PRESCALER; -// if (new_divisor != old_divisor) { -// tcc_set_enable(tcc, false); -// tcc->CTRLA.bit.PRESCALER = new_divisor; -// tcc_set_enable(tcc, true); -// } -// while (tcc->SYNCBUSY.reg != 0) {} -// tcc_periods[t->index] = new_top; -// #ifdef SAMD21 -// tcc->PERB.bit.PERB = new_top; -// #endif -// #ifdef SAMD51 -// tcc->PERBUF.bit.PERBUF = new_top; -// #endif -// } -// common_hal_pwmio_pwmout_set_duty_cycle(self, old_duty); + int pulse_count = calculate_pulse_count(frequency, &self->prescaler); + if (pulse_count == 0) { + mp_raise_ValueError(translate("Invalid PWM frequency")); + } + + self->pulse_count = pulse_count; + + // a small glitch can occur when adjusting the prescaler, from the setting + // of CTRL just below to the setting of the Ldok register in + // set_duty_cycle. + uint32_t reg = self->pwm->pwm->SM[self->pwm->submodule].CTRL; + reg &= ~(PWM_CTRL_PRSC_MASK); + reg |= PWM_CTRL_PRSC(self->prescaler); + self->pwm->pwm->SM[self->pwm->submodule].CTRL = reg; + self->pwm->pwm->SM[self->pwm->submodule].VAL1 = self->pulse_count; + + // we need to recalculate the duty cycle. As a side effect of this + common_hal_pwmio_pwmout_set_duty_cycle(self, self->duty_cycle); } uint32_t common_hal_pwmio_pwmout_get_frequency(pwmio_pwmout_obj_t *self) { -// uint32_t system_clock = common_hal_mcu_processor_get_frequency(); -// const pin_timer_t* t = self->timer; -// uint8_t divisor; -// uint32_t top; -// if (t->is_tc) { -// divisor = tc_insts[t->index]->COUNT16.CTRLA.bit.PRESCALER; -// top = tc_periods[t->index]; -// } else { -// divisor = tcc_insts[t->index]->CTRLA.bit.PRESCALER; -// top = tcc_periods[t->index]; -// } -// return (system_clock / prescaler[divisor]) / (top + 1); - return 0; + return PWM_SRC_CLK_FREQ/self->pulse_count/(1 << self->prescaler); } bool common_hal_pwmio_pwmout_get_variable_frequency(pwmio_pwmout_obj_t *self) { diff --git a/ports/mimxrt10xx/common-hal/pwmio/PWMOut.h b/ports/mimxrt10xx/common-hal/pwmio/PWMOut.h index d3954de401..fa4ce46780 100644 --- a/ports/mimxrt10xx/common-hal/pwmio/PWMOut.h +++ b/ports/mimxrt10xx/common-hal/pwmio/PWMOut.h @@ -37,6 +37,8 @@ typedef struct { const mcu_pin_obj_t *pin; const mcu_pwm_obj_t *pwm; bool variable_frequency; + uint8_t prescaler; + uint16_t duty_cycle, duty_scaled, pulse_count; } pwmio_pwmout_obj_t; void pwmout_reset(void); diff --git a/ports/mimxrt10xx/mpconfigport.mk b/ports/mimxrt10xx/mpconfigport.mk index 89c6d8c941..49fc4a2aaa 100644 --- a/ports/mimxrt10xx/mpconfigport.mk +++ b/ports/mimxrt10xx/mpconfigport.mk @@ -24,6 +24,7 @@ INTERNAL_FLASH_FILESYSTEM = 1 CIRCUITPY_AUDIOIO = 0 CIRCUITPY_AUDIOBUSIO = 0 +CIRCUITPY_BUSDEVICE = 1 CIRCUITPY_FREQUENCYIO = 0 CIRCUITPY_I2CPERIPHERAL = 0 CIRCUITPY_NVM = 0 diff --git a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1011/periph.c b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1011/periph.c index 66dc56e4e0..bdf3299217 100644 --- a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1011/periph.c +++ b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1011/periph.c @@ -134,35 +134,35 @@ const mcu_periph_obj_t mcu_uart_cts_list[4] = { }; const mcu_pwm_obj_t mcu_pwm_list[20] = { - PWM_PIN(PWM1, kPWM_Module_0, kPWM_PwmA, 2, &pin_GPIO_02), - PWM_PIN(PWM1, kPWM_Module_0, kPWM_PwmA, 2, &pin_GPIO_SD_02), + PWM_PIN(PWM1, kPWM_Module_0, kPWM_PwmA, IOMUXC_GPIO_02_FLEXPWM1_PWM0_A, &pin_GPIO_02), + PWM_PIN(PWM1, kPWM_Module_0, kPWM_PwmA, IOMUXC_GPIO_SD_02_FLEXPWM1_PWM0_A, &pin_GPIO_SD_02), - PWM_PIN(PWM1, kPWM_Module_0, kPWM_PwmB, 2, &pin_GPIO_01), - PWM_PIN(PWM1, kPWM_Module_0, kPWM_PwmB, 2, &pin_GPIO_SD_01), + PWM_PIN(PWM1, kPWM_Module_0, kPWM_PwmB, IOMUXC_GPIO_01_FLEXPWM1_PWM0_B, &pin_GPIO_01), + PWM_PIN(PWM1, kPWM_Module_0, kPWM_PwmB, IOMUXC_GPIO_SD_01_FLEXPWM1_PWM0_B, &pin_GPIO_SD_01), - PWM_PIN(PWM1, kPWM_Module_0, kPWM_PwmX, 1, &pin_GPIO_AD_12), + PWM_PIN(PWM1, kPWM_Module_0, kPWM_PwmX, IOMUXC_GPIO_AD_12_FLEXPWM1_PWM0_X, &pin_GPIO_AD_12), - PWM_PIN(PWM1, kPWM_Module_1, kPWM_PwmA, 2, &pin_GPIO_04), - PWM_PIN(PWM1, kPWM_Module_1, kPWM_PwmA, 2, &pin_GPIO_SD_04), + PWM_PIN(PWM1, kPWM_Module_1, kPWM_PwmA, IOMUXC_GPIO_04_FLEXPWM1_PWM1_A, &pin_GPIO_04), + PWM_PIN(PWM1, kPWM_Module_1, kPWM_PwmA, IOMUXC_GPIO_SD_04_FLEXPWM1_PWM1_A, &pin_GPIO_SD_04), - PWM_PIN(PWM1, kPWM_Module_1, kPWM_PwmB, 2, &pin_GPIO_03), - PWM_PIN(PWM1, kPWM_Module_1, kPWM_PwmB, 2, &pin_GPIO_SD_03), + PWM_PIN(PWM1, kPWM_Module_1, kPWM_PwmB, IOMUXC_GPIO_03_FLEXPWM1_PWM1_B, &pin_GPIO_03), + PWM_PIN(PWM1, kPWM_Module_1, kPWM_PwmB, IOMUXC_GPIO_SD_03_FLEXPWM1_PWM1_B, &pin_GPIO_SD_03), - PWM_PIN(PWM1, kPWM_Module_1, kPWM_PwmX, 1, &pin_GPIO_AD_11), + PWM_PIN(PWM1, kPWM_Module_1, kPWM_PwmX, IOMUXC_GPIO_AD_11_FLEXPWM1_PWM1_X, &pin_GPIO_AD_11), - PWM_PIN(PWM1, kPWM_Module_2, kPWM_PwmA, 2, &pin_GPIO_06), - PWM_PIN(PWM1, kPWM_Module_2, kPWM_PwmA, 2, &pin_GPIO_AD_04), + PWM_PIN(PWM1, kPWM_Module_2, kPWM_PwmA, IOMUXC_GPIO_06_FLEXPWM1_PWM2_A, &pin_GPIO_06), + PWM_PIN(PWM1, kPWM_Module_2, kPWM_PwmA, IOMUXC_GPIO_AD_04_FLEXPWM1_PWM2_A, &pin_GPIO_AD_04), - PWM_PIN(PWM1, kPWM_Module_2, kPWM_PwmB, 2, &pin_GPIO_05), - PWM_PIN(PWM1, kPWM_Module_2, kPWM_PwmB, 2, &pin_GPIO_AD_03), + PWM_PIN(PWM1, kPWM_Module_2, kPWM_PwmB, IOMUXC_GPIO_05_FLEXPWM1_PWM2_B, &pin_GPIO_05), + PWM_PIN(PWM1, kPWM_Module_2, kPWM_PwmB, IOMUXC_GPIO_AD_03_FLEXPWM1_PWM2_B, &pin_GPIO_AD_03), - PWM_PIN(PWM1, kPWM_Module_2, kPWM_PwmX, 1, &pin_GPIO_AD_10), + PWM_PIN(PWM1, kPWM_Module_2, kPWM_PwmX, IOMUXC_GPIO_AD_10_FLEXPWM1_PWM2_X, &pin_GPIO_AD_10), - PWM_PIN(PWM1, kPWM_Module_3, kPWM_PwmA, 2, &pin_GPIO_08), - PWM_PIN(PWM1, kPWM_Module_3, kPWM_PwmA, 2, &pin_GPIO_AD_06), + PWM_PIN(PWM1, kPWM_Module_3, kPWM_PwmA, IOMUXC_GPIO_08_FLEXPWM1_PWM3_A, &pin_GPIO_08), + PWM_PIN(PWM1, kPWM_Module_3, kPWM_PwmA, IOMUXC_GPIO_AD_06_FLEXPWM1_PWM3_A, &pin_GPIO_AD_06), - PWM_PIN(PWM1, kPWM_Module_3, kPWM_PwmB, 2, &pin_GPIO_07), - PWM_PIN(PWM1, kPWM_Module_3, kPWM_PwmB, 2, &pin_GPIO_AD_05), + PWM_PIN(PWM1, kPWM_Module_3, kPWM_PwmB, IOMUXC_GPIO_07_FLEXPWM1_PWM3_B, &pin_GPIO_07), + PWM_PIN(PWM1, kPWM_Module_3, kPWM_PwmB, IOMUXC_GPIO_AD_05_FLEXPWM1_PWM3_B, &pin_GPIO_AD_05), - PWM_PIN(PWM1, kPWM_Module_3, kPWM_PwmX, 1, &pin_GPIO_AD_09), + PWM_PIN(PWM1, kPWM_Module_3, kPWM_PwmX, IOMUXC_GPIO_AD_09_FLEXPWM1_PWM3_X, &pin_GPIO_AD_09), }; diff --git a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1021/periph.c b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1021/periph.c index 754ef01c39..5b21c12c2a 100644 --- a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1021/periph.c +++ b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1021/periph.c @@ -199,60 +199,60 @@ const mcu_periph_obj_t mcu_uart_cts_list[10] = { }; const mcu_pwm_obj_t mcu_pwm_list[39] = { - PWM_PIN(PWM1, kPWM_Module_0, kPWM_PwmA, 1, &pin_GPIO_EMC_26), - PWM_PIN(PWM1, kPWM_Module_0, kPWM_PwmA, 1, &pin_GPIO_AD_B1_06), + PWM_PIN(PWM1, kPWM_Module_0, kPWM_PwmA, IOMUXC_GPIO_EMC_26_FLEXPWM1_PWMA00, &pin_GPIO_EMC_26), + PWM_PIN(PWM1, kPWM_Module_0, kPWM_PwmA, IOMUXC_GPIO_AD_B1_06_FLEXPWM1_PWMA00, &pin_GPIO_AD_B1_06), - PWM_PIN(PWM1, kPWM_Module_1, kPWM_PwmA, 1, &pin_GPIO_EMC_24), - PWM_PIN(PWM1, kPWM_Module_1, kPWM_PwmA, 1, &pin_GPIO_AD_B1_08), + PWM_PIN(PWM1, kPWM_Module_1, kPWM_PwmA, IOMUXC_GPIO_EMC_24_FLEXPWM1_PWMA01, &pin_GPIO_EMC_24), + PWM_PIN(PWM1, kPWM_Module_1, kPWM_PwmA, IOMUXC_GPIO_AD_B1_08_FLEXPWM1_PWMA01, &pin_GPIO_AD_B1_08), - PWM_PIN(PWM1, kPWM_Module_2, kPWM_PwmA, 1, &pin_GPIO_EMC_22), - PWM_PIN(PWM1, kPWM_Module_2, kPWM_PwmA, 1, &pin_GPIO_AD_B1_10), + PWM_PIN(PWM1, kPWM_Module_2, kPWM_PwmA, IOMUXC_GPIO_EMC_22_FLEXPWM1_PWMA02, &pin_GPIO_EMC_22), + PWM_PIN(PWM1, kPWM_Module_2, kPWM_PwmA, IOMUXC_GPIO_AD_B1_10_FLEXPWM1_PWMA02, &pin_GPIO_AD_B1_10), - PWM_PIN(PWM1, kPWM_Module_3, kPWM_PwmA, 1, &pin_GPIO_EMC_20), - PWM_PIN(PWM1, kPWM_Module_3, kPWM_PwmA, 6, &pin_GPIO_AD_B1_12), + PWM_PIN(PWM1, kPWM_Module_3, kPWM_PwmA, IOMUXC_GPIO_EMC_20_FLEXPWM1_PWMA03, &pin_GPIO_EMC_20), + PWM_PIN(PWM1, kPWM_Module_3, kPWM_PwmA, IOMUXC_GPIO_AD_B1_12_FLEXPWM1_PWMA03, &pin_GPIO_AD_B1_12), - PWM_PIN(PWM1, kPWM_Module_0, kPWM_PwmB, 1, &pin_GPIO_EMC_27), - PWM_PIN(PWM1, kPWM_Module_0, kPWM_PwmB, 1, &pin_GPIO_AD_B1_07), + PWM_PIN(PWM1, kPWM_Module_0, kPWM_PwmB, IOMUXC_GPIO_EMC_27_FLEXPWM1_PWMB00, &pin_GPIO_EMC_27), + PWM_PIN(PWM1, kPWM_Module_0, kPWM_PwmB, IOMUXC_GPIO_AD_B1_07_FLEXPWM1_PWMB00, &pin_GPIO_AD_B1_07), - PWM_PIN(PWM1, kPWM_Module_1, kPWM_PwmB, 1, &pin_GPIO_EMC_25), - PWM_PIN(PWM1, kPWM_Module_1, kPWM_PwmB, 1, &pin_GPIO_AD_B1_09), + PWM_PIN(PWM1, kPWM_Module_1, kPWM_PwmB, IOMUXC_GPIO_EMC_25_FLEXPWM1_PWMB01, &pin_GPIO_EMC_25), + PWM_PIN(PWM1, kPWM_Module_1, kPWM_PwmB, IOMUXC_GPIO_AD_B1_09_FLEXPWM1_PWMB01, &pin_GPIO_AD_B1_09), - PWM_PIN(PWM1, kPWM_Module_2, kPWM_PwmB, 1, &pin_GPIO_EMC_23), - PWM_PIN(PWM1, kPWM_Module_2, kPWM_PwmB, 1, &pin_GPIO_AD_B1_11), + PWM_PIN(PWM1, kPWM_Module_2, kPWM_PwmB, IOMUXC_GPIO_EMC_23_FLEXPWM1_PWMB02, &pin_GPIO_EMC_23), + PWM_PIN(PWM1, kPWM_Module_2, kPWM_PwmB, IOMUXC_GPIO_AD_B1_11_FLEXPWM1_PWMB02, &pin_GPIO_AD_B1_11), - PWM_PIN(PWM1, kPWM_Module_3, kPWM_PwmB, 1, &pin_GPIO_EMC_21), - PWM_PIN(PWM1, kPWM_Module_3, kPWM_PwmB, 6, &pin_GPIO_AD_B1_13), + PWM_PIN(PWM1, kPWM_Module_3, kPWM_PwmB, IOMUXC_GPIO_EMC_21_FLEXPWM1_PWMB03, &pin_GPIO_EMC_21), + PWM_PIN(PWM1, kPWM_Module_3, kPWM_PwmB, IOMUXC_GPIO_AD_B1_13_FLEXPWM1_PWMB03, &pin_GPIO_AD_B1_13), - PWM_PIN(PWM1, kPWM_Module_0, kPWM_PwmX, 7, &pin_GPIO_EMC_28), - PWM_PIN(PWM1, kPWM_Module_1, kPWM_PwmX, 7, &pin_GPIO_EMC_29), - PWM_PIN(PWM1, kPWM_Module_2, kPWM_PwmX, 7, &pin_GPIO_EMC_30), + PWM_PIN(PWM1, kPWM_Module_0, kPWM_PwmX, IOMUXC_GPIO_EMC_28_FLEXPWM1_PWMX00, &pin_GPIO_EMC_28), + PWM_PIN(PWM1, kPWM_Module_1, kPWM_PwmX, IOMUXC_GPIO_EMC_29_FLEXPWM1_PWMX01, &pin_GPIO_EMC_29), + PWM_PIN(PWM1, kPWM_Module_2, kPWM_PwmX, IOMUXC_GPIO_EMC_30_FLEXPWM1_PWMX02, &pin_GPIO_EMC_30), - PWM_PIN(PWM2, kPWM_Module_0, kPWM_PwmA, 1, &pin_GPIO_EMC_38), - PWM_PIN(PWM2, kPWM_Module_0, kPWM_PwmA, 4, &pin_GPIO_AD_B0_14), + PWM_PIN(PWM2, kPWM_Module_0, kPWM_PwmA, IOMUXC_GPIO_EMC_38_FLEXPWM2_PWMA00, &pin_GPIO_EMC_38), + PWM_PIN(PWM2, kPWM_Module_0, kPWM_PwmA, IOMUXC_GPIO_AD_B0_14_FLEXPWM2_PWMA00, &pin_GPIO_AD_B0_14), - PWM_PIN(PWM2, kPWM_Module_1, kPWM_PwmA, 1, &pin_GPIO_EMC_36), - PWM_PIN(PWM2, kPWM_Module_1, kPWM_PwmA, 4, &pin_GPIO_AD_B0_12), + PWM_PIN(PWM2, kPWM_Module_1, kPWM_PwmA, IOMUXC_GPIO_EMC_36_FLEXPWM2_PWMA01, &pin_GPIO_EMC_36), + PWM_PIN(PWM2, kPWM_Module_1, kPWM_PwmA, IOMUXC_GPIO_AD_B0_12_FLEXPWM2_PWMA01, &pin_GPIO_AD_B0_12), - PWM_PIN(PWM2, kPWM_Module_2, kPWM_PwmA, 1, &pin_GPIO_EMC_30), - PWM_PIN(PWM2, kPWM_Module_2, kPWM_PwmA, 4, &pin_GPIO_AD_B0_10), + PWM_PIN(PWM2, kPWM_Module_2, kPWM_PwmA, IOMUXC_GPIO_EMC_30_FLEXPWM2_PWMA02, &pin_GPIO_EMC_30), + PWM_PIN(PWM2, kPWM_Module_2, kPWM_PwmA, IOMUXC_GPIO_AD_B0_10_FLEXPWM2_PWMA02, &pin_GPIO_AD_B0_10), - PWM_PIN(PWM2, kPWM_Module_3, kPWM_PwmA, 1, &pin_GPIO_EMC_28), - PWM_PIN(PWM2, kPWM_Module_3, kPWM_PwmA, 4, &pin_GPIO_AD_B0_06), + PWM_PIN(PWM2, kPWM_Module_3, kPWM_PwmA, IOMUXC_GPIO_EMC_28_FLEXPWM2_PWMA03, &pin_GPIO_EMC_28), + PWM_PIN(PWM2, kPWM_Module_3, kPWM_PwmA, IOMUXC_GPIO_AD_B0_06_FLEXPWM2_PWMA03, &pin_GPIO_AD_B0_06), - PWM_PIN(PWM2, kPWM_Module_0, kPWM_PwmB, 1, &pin_GPIO_EMC_39), - PWM_PIN(PWM2, kPWM_Module_0, kPWM_PwmB, 4, &pin_GPIO_AD_B0_15), + PWM_PIN(PWM2, kPWM_Module_0, kPWM_PwmB, IOMUXC_GPIO_EMC_39_FLEXPWM2_PWMB00, &pin_GPIO_EMC_39), + PWM_PIN(PWM2, kPWM_Module_0, kPWM_PwmB, IOMUXC_GPIO_AD_B0_15_FLEXPWM2_PWMB00, &pin_GPIO_AD_B0_15), - PWM_PIN(PWM2, kPWM_Module_1, kPWM_PwmB, 1, &pin_GPIO_EMC_37), - PWM_PIN(PWM2, kPWM_Module_1, kPWM_PwmB, 4, &pin_GPIO_AD_B0_13), + PWM_PIN(PWM2, kPWM_Module_1, kPWM_PwmB, IOMUXC_GPIO_EMC_37_FLEXPWM2_PWMB01, &pin_GPIO_EMC_37), + PWM_PIN(PWM2, kPWM_Module_1, kPWM_PwmB, IOMUXC_GPIO_AD_B0_13_FLEXPWM2_PWMB01, &pin_GPIO_AD_B0_13), - PWM_PIN(PWM2, kPWM_Module_2, kPWM_PwmB, 1, &pin_GPIO_EMC_31), - PWM_PIN(PWM2, kPWM_Module_2, kPWM_PwmB, 4, &pin_GPIO_AD_B0_11), + PWM_PIN(PWM2, kPWM_Module_2, kPWM_PwmB, IOMUXC_GPIO_EMC_31_FLEXPWM2_PWMB02, &pin_GPIO_EMC_31), + PWM_PIN(PWM2, kPWM_Module_2, kPWM_PwmB, IOMUXC_GPIO_AD_B0_11_FLEXPWM2_PWMB02, &pin_GPIO_AD_B0_11), - PWM_PIN(PWM2, kPWM_Module_3, kPWM_PwmB, 1, &pin_GPIO_EMC_29), - PWM_PIN(PWM2, kPWM_Module_3, kPWM_PwmB, 4, &pin_GPIO_AD_B0_07), + PWM_PIN(PWM2, kPWM_Module_3, kPWM_PwmB, IOMUXC_GPIO_EMC_29_FLEXPWM2_PWMB03, &pin_GPIO_EMC_29), + PWM_PIN(PWM2, kPWM_Module_3, kPWM_PwmB, IOMUXC_GPIO_AD_B0_07_FLEXPWM2_PWMB03, &pin_GPIO_AD_B0_07), - PWM_PIN(PWM2, kPWM_Module_0, kPWM_PwmX, 6, &pin_GPIO_EMC_10), - PWM_PIN(PWM2, kPWM_Module_1, kPWM_PwmX, 6, &pin_GPIO_EMC_11), - PWM_PIN(PWM2, kPWM_Module_2, kPWM_PwmX, 6, &pin_GPIO_EMC_12), - PWM_PIN(PWM2, kPWM_Module_3, kPWM_PwmX, 6, &pin_GPIO_EMC_13), + PWM_PIN(PWM2, kPWM_Module_0, kPWM_PwmX, IOMUXC_GPIO_EMC_10_FLEXPWM2_PWMX00, &pin_GPIO_EMC_10), + PWM_PIN(PWM2, kPWM_Module_1, kPWM_PwmX, IOMUXC_GPIO_EMC_11_FLEXPWM2_PWMX01, &pin_GPIO_EMC_11), + PWM_PIN(PWM2, kPWM_Module_2, kPWM_PwmX, IOMUXC_GPIO_EMC_12_FLEXPWM2_PWMX02, &pin_GPIO_EMC_12), + PWM_PIN(PWM2, kPWM_Module_3, kPWM_PwmX, IOMUXC_GPIO_EMC_13_FLEXPWM2_PWMX03, &pin_GPIO_EMC_13), }; diff --git a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1062/periph.c b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1062/periph.c index e1c6968fcf..19ce48f288 100644 --- a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1062/periph.c +++ b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1062/periph.c @@ -202,107 +202,107 @@ const mcu_periph_obj_t mcu_uart_cts_list[9] = { }; const mcu_pwm_obj_t mcu_pwm_list[67] = { - PWM_PIN(PWM1, kPWM_Module_0, kPWM_PwmA, 1, &pin_GPIO_EMC_23), - PWM_PIN(PWM1, kPWM_Module_0, kPWM_PwmA, 1, &pin_GPIO_SD_B0_00), + PWM_PIN(PWM1, kPWM_Module_0, kPWM_PwmA, IOMUXC_GPIO_EMC_23_FLEXPWM1_PWMA00, &pin_GPIO_EMC_23), + PWM_PIN(PWM1, kPWM_Module_0, kPWM_PwmA, IOMUXC_GPIO_SD_B0_00_FLEXPWM1_PWMA00, &pin_GPIO_SD_B0_00), - PWM_PIN(PWM1, kPWM_Module_0, kPWM_PwmB, 1, &pin_GPIO_EMC_24), - PWM_PIN(PWM1, kPWM_Module_0, kPWM_PwmB, 1, &pin_GPIO_SD_B0_01), + PWM_PIN(PWM1, kPWM_Module_0, kPWM_PwmB, IOMUXC_GPIO_EMC_24_FLEXPWM1_PWMB00, &pin_GPIO_EMC_24), + PWM_PIN(PWM1, kPWM_Module_0, kPWM_PwmB, IOMUXC_GPIO_SD_B0_01_FLEXPWM1_PWMB00, &pin_GPIO_SD_B0_01), - PWM_PIN(PWM1, kPWM_Module_0, kPWM_PwmX, 4, &pin_GPIO_AD_B0_02), + PWM_PIN(PWM1, kPWM_Module_0, kPWM_PwmX, IOMUXC_GPIO_AD_B0_02_FLEXPWM1_PWMX00, &pin_GPIO_AD_B0_02), - PWM_PIN(PWM1, kPWM_Module_1, kPWM_PwmA, 1, &pin_GPIO_EMC_25), - PWM_PIN(PWM1, kPWM_Module_1, kPWM_PwmA, 1, &pin_GPIO_SD_B0_02), + PWM_PIN(PWM1, kPWM_Module_1, kPWM_PwmA, IOMUXC_GPIO_EMC_25_FLEXPWM1_PWMA01, &pin_GPIO_EMC_25), + PWM_PIN(PWM1, kPWM_Module_1, kPWM_PwmA, IOMUXC_GPIO_SD_B0_02_FLEXPWM1_PWMA01, &pin_GPIO_SD_B0_02), - PWM_PIN(PWM1, kPWM_Module_1, kPWM_PwmB, 1, &pin_GPIO_EMC_26), - PWM_PIN(PWM1, kPWM_Module_1, kPWM_PwmB, 1, &pin_GPIO_SD_B0_03), + PWM_PIN(PWM1, kPWM_Module_1, kPWM_PwmB, IOMUXC_GPIO_EMC_26_FLEXPWM1_PWMB01, &pin_GPIO_EMC_26), + PWM_PIN(PWM1, kPWM_Module_1, kPWM_PwmB, IOMUXC_GPIO_SD_B0_03_FLEXPWM1_PWMB01, &pin_GPIO_SD_B0_03), - PWM_PIN(PWM1, kPWM_Module_1, kPWM_PwmX, 4, &pin_GPIO_AD_B0_03), + PWM_PIN(PWM1, kPWM_Module_1, kPWM_PwmX, IOMUXC_GPIO_AD_B0_03_FLEXPWM1_PWMX01, &pin_GPIO_AD_B0_03), - PWM_PIN(PWM1, kPWM_Module_2, kPWM_PwmA, 1, &pin_GPIO_EMC_27), - PWM_PIN(PWM1, kPWM_Module_2, kPWM_PwmA, 1, &pin_GPIO_SD_B0_04), + PWM_PIN(PWM1, kPWM_Module_2, kPWM_PwmA, IOMUXC_GPIO_EMC_27_FLEXPWM1_PWMA02, &pin_GPIO_EMC_27), + PWM_PIN(PWM1, kPWM_Module_2, kPWM_PwmA, IOMUXC_GPIO_SD_B0_04_FLEXPWM1_PWMA02, &pin_GPIO_SD_B0_04), - PWM_PIN(PWM1, kPWM_Module_2, kPWM_PwmB, 1, &pin_GPIO_EMC_28), - PWM_PIN(PWM1, kPWM_Module_2, kPWM_PwmB, 1, &pin_GPIO_SD_B0_05), + PWM_PIN(PWM1, kPWM_Module_2, kPWM_PwmB, IOMUXC_GPIO_EMC_28_FLEXPWM1_PWMB02, &pin_GPIO_EMC_28), + PWM_PIN(PWM1, kPWM_Module_2, kPWM_PwmB, IOMUXC_GPIO_SD_B0_05_FLEXPWM1_PWMB02, &pin_GPIO_SD_B0_05), - PWM_PIN(PWM1, kPWM_Module_2, kPWM_PwmX, 4, &pin_GPIO_AD_B0_12), + PWM_PIN(PWM1, kPWM_Module_2, kPWM_PwmX, IOMUXC_GPIO_AD_B0_12_FLEXPWM1_PWMX02, &pin_GPIO_AD_B0_12), - PWM_PIN(PWM1, kPWM_Module_3, kPWM_PwmA, 1, &pin_GPIO_AD_B0_10), - PWM_PIN(PWM1, kPWM_Module_3, kPWM_PwmA, 1, &pin_GPIO_EMC_38), - PWM_PIN(PWM1, kPWM_Module_3, kPWM_PwmA, 2, &pin_GPIO_SD_B1_00), - PWM_PIN(PWM1, kPWM_Module_3, kPWM_PwmA, 4, &pin_GPIO_EMC_12), - PWM_PIN(PWM1, kPWM_Module_3, kPWM_PwmA, 6, &pin_GPIO_B1_00), + PWM_PIN(PWM1, kPWM_Module_3, kPWM_PwmA, IOMUXC_GPIO_AD_B0_10_FLEXPWM1_PWMA03, &pin_GPIO_AD_B0_10), + PWM_PIN(PWM1, kPWM_Module_3, kPWM_PwmA, IOMUXC_GPIO_EMC_38_FLEXPWM1_PWMA03, &pin_GPIO_EMC_38), + PWM_PIN(PWM1, kPWM_Module_3, kPWM_PwmA, IOMUXC_GPIO_SD_B1_00_FLEXPWM1_PWMA03, &pin_GPIO_SD_B1_00), + PWM_PIN(PWM1, kPWM_Module_3, kPWM_PwmA, IOMUXC_GPIO_EMC_12_FLEXPWM1_PWMA03, &pin_GPIO_EMC_12), + PWM_PIN(PWM1, kPWM_Module_3, kPWM_PwmA, IOMUXC_GPIO_B1_00_FLEXPWM1_PWMA03, &pin_GPIO_B1_00), - PWM_PIN(PWM1, kPWM_Module_3, kPWM_PwmB, 1, &pin_GPIO_AD_B0_11), - PWM_PIN(PWM1, kPWM_Module_3, kPWM_PwmB, 1, &pin_GPIO_EMC_39), - PWM_PIN(PWM1, kPWM_Module_3, kPWM_PwmB, 2, &pin_GPIO_SD_B1_01), - PWM_PIN(PWM1, kPWM_Module_3, kPWM_PwmB, 4, &pin_GPIO_EMC_13), - PWM_PIN(PWM1, kPWM_Module_3, kPWM_PwmB, 6, &pin_GPIO_B1_01), + PWM_PIN(PWM1, kPWM_Module_3, kPWM_PwmB, IOMUXC_GPIO_AD_B0_11_FLEXPWM1_PWMB03, &pin_GPIO_AD_B0_11), + PWM_PIN(PWM1, kPWM_Module_3, kPWM_PwmB, IOMUXC_GPIO_EMC_39_FLEXPWM1_PWMB03, &pin_GPIO_EMC_39), + PWM_PIN(PWM1, kPWM_Module_3, kPWM_PwmB, IOMUXC_GPIO_SD_B1_01_FLEXPWM1_PWMB03, &pin_GPIO_SD_B1_01), + PWM_PIN(PWM1, kPWM_Module_3, kPWM_PwmB, IOMUXC_GPIO_EMC_13_FLEXPWM1_PWMB03, &pin_GPIO_EMC_13), + PWM_PIN(PWM1, kPWM_Module_3, kPWM_PwmB, IOMUXC_GPIO_B1_01_FLEXPWM1_PWMB03, &pin_GPIO_B1_01), - PWM_PIN(PWM1, kPWM_Module_3, kPWM_PwmX, 4, &pin_GPIO_AD_B0_13), + PWM_PIN(PWM1, kPWM_Module_3, kPWM_PwmX, IOMUXC_GPIO_AD_B0_13_FLEXPWM1_PWMX03, &pin_GPIO_AD_B0_13), - PWM_PIN(PWM2, kPWM_Module_0, kPWM_PwmA, 1, &pin_GPIO_EMC_06), - PWM_PIN(PWM2, kPWM_Module_0, kPWM_PwmA, 2, &pin_GPIO_B0_06), + PWM_PIN(PWM2, kPWM_Module_0, kPWM_PwmA, IOMUXC_GPIO_EMC_06_FLEXPWM2_PWMA00, &pin_GPIO_EMC_06), + PWM_PIN(PWM2, kPWM_Module_0, kPWM_PwmA, IOMUXC_GPIO_B0_06_FLEXPWM2_PWMA00, &pin_GPIO_B0_06), - PWM_PIN(PWM2, kPWM_Module_0, kPWM_PwmB, 1, &pin_GPIO_EMC_07), - PWM_PIN(PWM2, kPWM_Module_0, kPWM_PwmB, 2, &pin_GPIO_B0_07), + PWM_PIN(PWM2, kPWM_Module_0, kPWM_PwmB, IOMUXC_GPIO_EMC_07_FLEXPWM2_PWMB00, &pin_GPIO_EMC_07), + PWM_PIN(PWM2, kPWM_Module_0, kPWM_PwmB, IOMUXC_GPIO_B0_07_FLEXPWM2_PWMB00, &pin_GPIO_B0_07), - PWM_PIN(PWM2, kPWM_Module_1, kPWM_PwmA, 1, &pin_GPIO_EMC_08), - PWM_PIN(PWM2, kPWM_Module_1, kPWM_PwmA, 2, &pin_GPIO_B0_08), + PWM_PIN(PWM2, kPWM_Module_1, kPWM_PwmA, IOMUXC_GPIO_EMC_08_FLEXPWM2_PWMA01, &pin_GPIO_EMC_08), + PWM_PIN(PWM2, kPWM_Module_1, kPWM_PwmA, IOMUXC_GPIO_B0_08_FLEXPWM2_PWMA01, &pin_GPIO_B0_08), - PWM_PIN(PWM2, kPWM_Module_1, kPWM_PwmB, 1, &pin_GPIO_EMC_09), - PWM_PIN(PWM2, kPWM_Module_1, kPWM_PwmB, 2, &pin_GPIO_B0_09), + PWM_PIN(PWM2, kPWM_Module_1, kPWM_PwmB, IOMUXC_GPIO_EMC_09_FLEXPWM2_PWMB01, &pin_GPIO_EMC_09), + PWM_PIN(PWM2, kPWM_Module_1, kPWM_PwmB, IOMUXC_GPIO_B0_09_FLEXPWM2_PWMB01, &pin_GPIO_B0_09), - PWM_PIN(PWM2, kPWM_Module_2, kPWM_PwmA, 1, &pin_GPIO_EMC_10), - PWM_PIN(PWM2, kPWM_Module_2, kPWM_PwmA, 2, &pin_GPIO_B0_10), + PWM_PIN(PWM2, kPWM_Module_2, kPWM_PwmA, IOMUXC_GPIO_EMC_10_FLEXPWM2_PWMA02, &pin_GPIO_EMC_10), + PWM_PIN(PWM2, kPWM_Module_2, kPWM_PwmA, IOMUXC_GPIO_B0_10_FLEXPWM2_PWMA02, &pin_GPIO_B0_10), - PWM_PIN(PWM2, kPWM_Module_2, kPWM_PwmB, 1, &pin_GPIO_EMC_11), - PWM_PIN(PWM2, kPWM_Module_2, kPWM_PwmB, 2, &pin_GPIO_B0_11), + PWM_PIN(PWM2, kPWM_Module_2, kPWM_PwmB, IOMUXC_GPIO_EMC_11_FLEXPWM2_PWMB02, &pin_GPIO_EMC_11), + PWM_PIN(PWM2, kPWM_Module_2, kPWM_PwmB, IOMUXC_GPIO_B0_11_FLEXPWM2_PWMB02, &pin_GPIO_B0_11), - PWM_PIN(PWM2, kPWM_Module_3, kPWM_PwmA, 0, &pin_GPIO_AD_B0_00), - PWM_PIN(PWM2, kPWM_Module_3, kPWM_PwmA, 1, &pin_GPIO_AD_B0_09), - PWM_PIN(PWM2, kPWM_Module_3, kPWM_PwmA, 1, &pin_GPIO_EMC_19), - PWM_PIN(PWM2, kPWM_Module_3, kPWM_PwmA, 2, &pin_GPIO_SD_B1_02), - PWM_PIN(PWM2, kPWM_Module_3, kPWM_PwmA, 6, &pin_GPIO_B1_02), + PWM_PIN(PWM2, kPWM_Module_3, kPWM_PwmA, IOMUXC_GPIO_AD_B0_00_FLEXPWM2_PWMA03, &pin_GPIO_AD_B0_00), + PWM_PIN(PWM2, kPWM_Module_3, kPWM_PwmA, IOMUXC_GPIO_AD_B0_09_FLEXPWM2_PWMA03, &pin_GPIO_AD_B0_09), + PWM_PIN(PWM2, kPWM_Module_3, kPWM_PwmA, IOMUXC_GPIO_EMC_19_FLEXPWM2_PWMA03, &pin_GPIO_EMC_19), + PWM_PIN(PWM2, kPWM_Module_3, kPWM_PwmA, IOMUXC_GPIO_SD_B1_02_FLEXPWM2_PWMA03, &pin_GPIO_SD_B1_02), + PWM_PIN(PWM2, kPWM_Module_3, kPWM_PwmA, IOMUXC_GPIO_B1_02_FLEXPWM2_PWMA03, &pin_GPIO_B1_02), - PWM_PIN(PWM2, kPWM_Module_3, kPWM_PwmB, 0, &pin_GPIO_AD_B0_01), - PWM_PIN(PWM2, kPWM_Module_3, kPWM_PwmB, 1, &pin_GPIO_EMC_20), - PWM_PIN(PWM2, kPWM_Module_3, kPWM_PwmB, 2, &pin_GPIO_SD_B1_03), - PWM_PIN(PWM2, kPWM_Module_3, kPWM_PwmB, 6, &pin_GPIO_B1_03), + PWM_PIN(PWM2, kPWM_Module_3, kPWM_PwmB, IOMUXC_GPIO_AD_B0_01_FLEXPWM2_PWMB03, &pin_GPIO_AD_B0_01), + PWM_PIN(PWM2, kPWM_Module_3, kPWM_PwmB, IOMUXC_GPIO_EMC_20_FLEXPWM2_PWMB03, &pin_GPIO_EMC_20), + PWM_PIN(PWM2, kPWM_Module_3, kPWM_PwmB, IOMUXC_GPIO_SD_B1_03_FLEXPWM2_PWMB03, &pin_GPIO_SD_B1_03), + PWM_PIN(PWM2, kPWM_Module_3, kPWM_PwmB, IOMUXC_GPIO_B1_03_FLEXPWM2_PWMB03, &pin_GPIO_B1_03), - PWM_PIN(PWM3, kPWM_Module_0, kPWM_PwmA, 1, &pin_GPIO_EMC_29), + PWM_PIN(PWM3, kPWM_Module_0, kPWM_PwmA, IOMUXC_GPIO_EMC_29_FLEXPWM3_PWMA00, &pin_GPIO_EMC_29), - PWM_PIN(PWM3, kPWM_Module_0, kPWM_PwmB, 1, &pin_GPIO_EMC_30), + PWM_PIN(PWM3, kPWM_Module_0, kPWM_PwmB, IOMUXC_GPIO_EMC_30_FLEXPWM3_PWMB00, &pin_GPIO_EMC_30), - PWM_PIN(PWM3, kPWM_Module_1, kPWM_PwmA, 1, &pin_GPIO_EMC_31), + PWM_PIN(PWM3, kPWM_Module_1, kPWM_PwmA, IOMUXC_GPIO_EMC_31_FLEXPWM3_PWMA01, &pin_GPIO_EMC_31), - PWM_PIN(PWM3, kPWM_Module_1, kPWM_PwmB, 1, &pin_GPIO_EMC_32), + PWM_PIN(PWM3, kPWM_Module_1, kPWM_PwmB, IOMUXC_GPIO_EMC_32_FLEXPWM3_PWMB01, &pin_GPIO_EMC_32), - PWM_PIN(PWM3, kPWM_Module_2, kPWM_PwmA, 1, &pin_GPIO_EMC_33), + PWM_PIN(PWM3, kPWM_Module_2, kPWM_PwmA, IOMUXC_GPIO_EMC_33_FLEXPWM3_PWMA02, &pin_GPIO_EMC_33), - PWM_PIN(PWM3, kPWM_Module_2, kPWM_PwmB, 1, &pin_GPIO_EMC_34), + PWM_PIN(PWM3, kPWM_Module_2, kPWM_PwmB, IOMUXC_GPIO_EMC_34_FLEXPWM3_PWMB02, &pin_GPIO_EMC_34), - PWM_PIN(PWM3, kPWM_Module_3, kPWM_PwmA, 1, &pin_GPIO_EMC_21), + PWM_PIN(PWM3, kPWM_Module_3, kPWM_PwmA, IOMUXC_GPIO_EMC_21_FLEXPWM3_PWMA03, &pin_GPIO_EMC_21), - PWM_PIN(PWM3, kPWM_Module_3, kPWM_PwmB, 1, &pin_GPIO_EMC_22), + PWM_PIN(PWM3, kPWM_Module_3, kPWM_PwmB, IOMUXC_GPIO_EMC_22_FLEXPWM3_PWMB03, &pin_GPIO_EMC_22), - PWM_PIN(PWM4, kPWM_Module_0, kPWM_PwmA, 1, &pin_GPIO_AD_B1_08), - PWM_PIN(PWM4, kPWM_Module_0, kPWM_PwmA, 1, &pin_GPIO_EMC_00), + PWM_PIN(PWM4, kPWM_Module_0, kPWM_PwmA, IOMUXC_GPIO_AD_B1_08_FLEXPWM4_PWMA00, &pin_GPIO_AD_B1_08), + PWM_PIN(PWM4, kPWM_Module_0, kPWM_PwmA, IOMUXC_GPIO_EMC_00_FLEXPWM4_PWMA00, &pin_GPIO_EMC_00), - PWM_PIN(PWM4, kPWM_Module_0, kPWM_PwmB, 1, &pin_GPIO_EMC_01), + PWM_PIN(PWM4, kPWM_Module_0, kPWM_PwmB, IOMUXC_GPIO_EMC_01_FLEXPWM4_PWMB00, &pin_GPIO_EMC_01), - PWM_PIN(PWM4, kPWM_Module_1, kPWM_PwmA, 1, &pin_GPIO_AD_B1_09), - PWM_PIN(PWM4, kPWM_Module_1, kPWM_PwmA, 1, &pin_GPIO_EMC_02), + PWM_PIN(PWM4, kPWM_Module_1, kPWM_PwmA, IOMUXC_GPIO_AD_B1_09_FLEXPWM4_PWMA01, &pin_GPIO_AD_B1_09), + PWM_PIN(PWM4, kPWM_Module_1, kPWM_PwmA, IOMUXC_GPIO_EMC_02_FLEXPWM4_PWMA01, &pin_GPIO_EMC_02), - PWM_PIN(PWM4, kPWM_Module_1, kPWM_PwmB, 1, &pin_GPIO_EMC_03), + PWM_PIN(PWM4, kPWM_Module_1, kPWM_PwmB, IOMUXC_GPIO_EMC_03_FLEXPWM4_PWMB01, &pin_GPIO_EMC_03), - PWM_PIN(PWM4, kPWM_Module_2, kPWM_PwmA, 1, &pin_GPIO_B1_14), - PWM_PIN(PWM4, kPWM_Module_2, kPWM_PwmA, 1, &pin_GPIO_EMC_04), + PWM_PIN(PWM4, kPWM_Module_2, kPWM_PwmA, IOMUXC_GPIO_B1_14_FLEXPWM4_PWMA02, &pin_GPIO_B1_14), + PWM_PIN(PWM4, kPWM_Module_2, kPWM_PwmA, IOMUXC_GPIO_EMC_04_FLEXPWM4_PWMA02, &pin_GPIO_EMC_04), - PWM_PIN(PWM4, kPWM_Module_2, kPWM_PwmB, 1, &pin_GPIO_EMC_05), + PWM_PIN(PWM4, kPWM_Module_2, kPWM_PwmB, IOMUXC_GPIO_EMC_05_FLEXPWM4_PWMB02, &pin_GPIO_EMC_05), - PWM_PIN(PWM4, kPWM_Module_3, kPWM_PwmA, 1, &pin_GPIO_B1_15), - PWM_PIN(PWM4, kPWM_Module_3, kPWM_PwmA, 1, &pin_GPIO_EMC_17), + PWM_PIN(PWM4, kPWM_Module_3, kPWM_PwmA, IOMUXC_GPIO_B1_15_FLEXPWM4_PWMA03, &pin_GPIO_B1_15), + PWM_PIN(PWM4, kPWM_Module_3, kPWM_PwmA, IOMUXC_GPIO_EMC_17_FLEXPWM4_PWMA03, &pin_GPIO_EMC_17), - PWM_PIN(PWM4, kPWM_Module_3, kPWM_PwmB, 1, &pin_GPIO_EMC_18), + PWM_PIN(PWM4, kPWM_Module_3, kPWM_PwmB, IOMUXC_GPIO_EMC_18_FLEXPWM4_PWMB03, &pin_GPIO_EMC_18), }; diff --git a/ports/mimxrt10xx/peripherals/mimxrt10xx/periph.h b/ports/mimxrt10xx/peripherals/mimxrt10xx/periph.h index ab0ebf0454..1b808b0b18 100644 --- a/ports/mimxrt10xx/peripherals/mimxrt10xx/periph.h +++ b/ports/mimxrt10xx/peripherals/mimxrt10xx/periph.h @@ -49,18 +49,26 @@ typedef struct { typedef struct { PWM_Type *pwm; - pwm_submodule_t submodule : 4; - pwm_channels_t channel : 4; + pwm_submodule_t submodule:4; + pwm_channels_t channel:4; uint8_t mux_mode; + uint8_t input_idx; + uint32_t input_reg; const mcu_pin_obj_t *pin; } mcu_pwm_obj_t; -#define PWM_PIN(p_pwm, p_submodule, p_channel, p_mux_mode, p_pin) \ +#define PWM_PIN(p_pwm, p_submodule, p_channel, p_iomuxc, p_pin) \ + PWM_PIN_(p_pwm, p_submodule, p_channel, p_iomuxc, p_pin) + //----------------------------------------------------------// + // supplied by the expansion of p_iomuxc into multiple args // +#define PWM_PIN_(p_pwm, p_submodule, p_channel, p_mux_reg, p_mux_mode, p_input_reg, p_input_idx, p_config_reg, p_pin)\ { \ .pwm = p_pwm, \ .submodule = p_submodule, \ .channel = p_channel, \ .mux_mode = p_mux_mode, \ + .input_reg = p_input_reg, \ + .input_idx = p_input_idx, \ .pin = p_pin, \ } diff --git a/ports/nrf/boards/TG-Watch/mpconfigboard.mk b/ports/nrf/boards/TG-Watch/mpconfigboard.mk index 8407d84877..8a191c1534 100644 --- a/ports/nrf/boards/TG-Watch/mpconfigboard.mk +++ b/ports/nrf/boards/TG-Watch/mpconfigboard.mk @@ -6,7 +6,7 @@ USB_MANUFACTURER = "TG-Techie" MCU_CHIP = nrf52840 QSPI_FLASH_FILESYSTEM = 1 -EXTERNAL_FLASH_DEVICES = "GD25Q16C, W25Q128JV_SQ" +EXTERNAL_FLASH_DEVICES = "GD25Q16C, W25Q128JVxQ" FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_BusDevice FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_Register diff --git a/ports/nrf/boards/hiibot_bluefi/mpconfigboard.mk b/ports/nrf/boards/hiibot_bluefi/mpconfigboard.mk index c85b978944..71e2a9da23 100644 --- a/ports/nrf/boards/hiibot_bluefi/mpconfigboard.mk +++ b/ports/nrf/boards/hiibot_bluefi/mpconfigboard.mk @@ -6,4 +6,4 @@ USB_MANUFACTURER = "HiiBot" MCU_CHIP = nrf52840 QSPI_FLASH_FILESYSTEM = 1 -EXTERNAL_FLASH_DEVICES = "W25Q16JV_IQ" +EXTERNAL_FLASH_DEVICES = "W25Q16JVxQ" diff --git a/ports/nrf/boards/ohs2020_badge/mpconfigboard.mk b/ports/nrf/boards/ohs2020_badge/mpconfigboard.mk index 2e6e885f55..045939e652 100644 --- a/ports/nrf/boards/ohs2020_badge/mpconfigboard.mk +++ b/ports/nrf/boards/ohs2020_badge/mpconfigboard.mk @@ -6,4 +6,4 @@ USB_MANUFACTURER = "OSHWA" MCU_CHIP = nrf52840 QSPI_FLASH_FILESYSTEM = 1 -EXTERNAL_FLASH_DEVICES = "W25Q128JV_SQ" +EXTERNAL_FLASH_DEVICES = "W25Q128JVxQ" diff --git a/ports/nrf/boards/sparkfun_nrf52840_micromod/mpconfigboard.mk b/ports/nrf/boards/sparkfun_nrf52840_micromod/mpconfigboard.mk index 4c4bcd0896..21ca20825a 100644 --- a/ports/nrf/boards/sparkfun_nrf52840_micromod/mpconfigboard.mk +++ b/ports/nrf/boards/sparkfun_nrf52840_micromod/mpconfigboard.mk @@ -7,4 +7,4 @@ MCU_CHIP = nrf52840 QSPI_FLASH_FILESYSTEM = 1 EXTERNAL_FLASH_DEVICE_COUNT = 1 -EXTERNAL_FLASH_DEVICES = "W25Q128JV_PM" +EXTERNAL_FLASH_DEVICES = "W25Q128JVxM" diff --git a/ports/nrf/common-hal/_bleio/Adapter.c b/ports/nrf/common-hal/_bleio/Adapter.c index ca21222b5d..20e9a16560 100644 --- a/ports/nrf/common-hal/_bleio/Adapter.c +++ b/ports/nrf/common-hal/_bleio/Adapter.c @@ -147,6 +147,8 @@ STATIC uint32_t ble_stack_enable(void) { ble_conf.gap_cfg.role_count_cfg.periph_role_count = BLEIO_PERIPH_ROLE_COUNT; // central_role_count costs 648 bytes for 1 to 2, then ~1250 for each further increment. ble_conf.gap_cfg.role_count_cfg.central_role_count = BLEIO_CENTRAL_ROLE_COUNT; + // The number of concurrent pairing processes. Takes 392 bytes. + ble_conf.gap_cfg.role_count_cfg.central_sec_count = BLE_GAP_ROLE_COUNT_CENTRAL_SEC_DEFAULT; err_code = sd_ble_cfg_set(BLE_GAP_CFG_ROLE_COUNT, &ble_conf, sd_ram_end); if (err_code != NRF_SUCCESS) { return err_code; @@ -283,6 +285,10 @@ STATIC bool adapter_on_ble_evt(ble_evt_t *ble_evt, void *self_in) { ble_drv_remove_event_handler(connection_on_ble_evt, connection); connection->conn_handle = BLE_CONN_HANDLE_INVALID; connection->pair_status = PAIR_NOT_PAIRED; + + #if CIRCUITPY_VERBOSE_BLE + mp_printf(&mp_plat_print, "disconnected %02x\n", ble_evt->evt.gap_evt.params.disconnected.reason); + #endif if (connection->connection_obj != mp_const_none) { bleio_connection_obj_t *obj = connection->connection_obj; obj->connection = NULL; diff --git a/ports/nrf/common-hal/_bleio/Connection.c b/ports/nrf/common-hal/_bleio/Connection.c index f57ee639a5..7e0b7a10e9 100644 --- a/ports/nrf/common-hal/_bleio/Connection.c +++ b/ports/nrf/common-hal/_bleio/Connection.c @@ -325,8 +325,7 @@ bool connection_on_ble_evt(ble_evt_t *ble_evt, void *self_in) { } void bleio_connection_clear(bleio_connection_internal_t *self) { - mp_obj_list_clear(MP_OBJ_FROM_PTR(self->remote_service_list)); - + self->remote_service_list = NULL; self->conn_handle = BLE_CONN_HANDLE_INVALID; self->pair_status = PAIR_NOT_PAIRED; self->is_central = false; diff --git a/ports/nrf/common-hal/_bleio/PacketBuffer.c b/ports/nrf/common-hal/_bleio/PacketBuffer.c index 8f87b24972..42fc3475d6 100644 --- a/ports/nrf/common-hal/_bleio/PacketBuffer.c +++ b/ports/nrf/common-hal/_bleio/PacketBuffer.c @@ -106,13 +106,16 @@ STATIC uint32_t queue_next_write(bleio_packet_buffer_obj_t *self) { STATIC bool packet_buffer_on_ble_client_evt(ble_evt_t *ble_evt, void *param) { const uint16_t evt_id = ble_evt->header.evt_id; + bleio_packet_buffer_obj_t *self = (bleio_packet_buffer_obj_t *)param; + if (evt_id == BLE_GAP_EVT_DISCONNECTED && self->conn_handle == ble_evt->evt.gap_evt.conn_handle) { + self->conn_handle = BLE_CONN_HANDLE_INVALID; + } // Check if this is a GATTC event so we can make sure the conn_handle is valid. if (evt_id < BLE_GATTC_EVT_BASE || evt_id > BLE_GATTC_EVT_LAST) { return false; } uint16_t conn_handle = ble_evt->evt.gattc_evt.conn_handle; - bleio_packet_buffer_obj_t *self = (bleio_packet_buffer_obj_t *)param; if (conn_handle != self->conn_handle) { return false; } @@ -249,6 +252,9 @@ void common_hal_bleio_packet_buffer_construct( } mp_int_t common_hal_bleio_packet_buffer_readinto(bleio_packet_buffer_obj_t *self, uint8_t *data, size_t len) { + if (self->conn_handle == BLE_CONN_HANDLE_INVALID) { + mp_raise_ConnectionError(translate("Not connected")); + } if (ringbuf_num_filled(&self->ringbuf) < 2) { return 0; } @@ -298,11 +304,14 @@ mp_int_t common_hal_bleio_packet_buffer_write(bleio_packet_buffer_obj_t *self, u if (len + self->pending_size > outgoing_packet_length) { // No room to append len bytes to packet. Wait until we get a free buffer, // and keep checking that we haven't been disconnected. - while (self->pending_size != 0 && self->conn_handle != BLE_CONN_HANDLE_INVALID) { + while (self->pending_size != 0 && + self->conn_handle != BLE_CONN_HANDLE_INVALID && + !mp_hal_is_interrupted()) { RUN_BACKGROUND_TASKS; } } - if (self->conn_handle == BLE_CONN_HANDLE_INVALID) { + if (self->conn_handle == BLE_CONN_HANDLE_INVALID || + mp_hal_is_interrupted()) { return -1; } @@ -351,8 +360,7 @@ mp_int_t common_hal_bleio_packet_buffer_get_incoming_packet_length(bleio_packet_ if (self->conn_handle != BLE_CONN_HANDLE_INVALID) { bleio_connection_internal_t *connection = bleio_conn_handle_to_connection(self->conn_handle); if (connection) { - return MIN(common_hal_bleio_connection_get_max_packet_length(connection), - self->characteristic->max_length); + return common_hal_bleio_connection_get_max_packet_length(connection); } } // There's no current connection, so we don't know the MTU, and @@ -390,6 +398,18 @@ mp_int_t common_hal_bleio_packet_buffer_get_outgoing_packet_length(bleio_packet_ // we can't tell what the largest outgoing packet length would be. return -1; } + // If we are talking to a remote service, we'll be bound by the MTU. (We don't actually + // know the max size of the remote characteristic.) + if (self->characteristic->service != NULL && + self->characteristic->service->is_remote) { + // We are talking to a remote service so we're writing. + if (self->conn_handle != BLE_CONN_HANDLE_INVALID) { + bleio_connection_internal_t *connection = bleio_conn_handle_to_connection(self->conn_handle); + if (connection) { + return common_hal_bleio_connection_get_max_packet_length(connection); + } + } + } return self->characteristic->max_length; } diff --git a/ports/nrf/common-hal/_bleio/__init__.c b/ports/nrf/common-hal/_bleio/__init__.c index 7248f83150..72a8e91370 100644 --- a/ports/nrf/common-hal/_bleio/__init__.c +++ b/ports/nrf/common-hal/_bleio/__init__.c @@ -46,6 +46,9 @@ void check_nrf_error(uint32_t err_code) { return; } switch (err_code) { + case NRF_ERROR_NO_MEM: + mp_raise_msg(&mp_type_MemoryError, translate("Nordic system firmware out of memory")); + return; case NRF_ERROR_TIMEOUT: mp_raise_msg(&mp_type_TimeoutError, NULL); return; @@ -53,7 +56,7 @@ void check_nrf_error(uint32_t err_code) { mp_raise_ConnectionError(translate("Not connected")); return; default: - mp_raise_bleio_BluetoothError(translate("Unknown soft device error: %04x"), err_code); + mp_raise_bleio_BluetoothError(translate("Unknown system firmware error: %04x"), err_code); break; } } diff --git a/ports/nrf/common-hal/rotaryio/IncrementalEncoder.c b/ports/nrf/common-hal/rotaryio/IncrementalEncoder.c index ef5e9ee5ae..8b46c3bd79 100644 --- a/ports/nrf/common-hal/rotaryio/IncrementalEncoder.c +++ b/ports/nrf/common-hal/rotaryio/IncrementalEncoder.c @@ -25,6 +25,7 @@ */ #include "common-hal/rotaryio/IncrementalEncoder.h" +#include "shared-module/rotaryio/IncrementalEncoder.h" #include "nrfx_gpiote.h" #include "py/runtime.h" @@ -40,29 +41,11 @@ static void _intr_handler(nrfx_gpiote_pin_t pin, nrf_gpiote_polarity_t action) { return; } - // reads a state 0 .. 3 *in order*. - uint8_t new_state = nrf_gpio_pin_read(self->pin_a); - new_state = (new_state << 1) + (new_state ^ nrf_gpio_pin_read(self->pin_b)); + uint8_t new_state = + ((uint8_t) nrf_gpio_pin_read(self->pin_a) << 1) | + (uint8_t) nrf_gpio_pin_read(self->pin_b); - uint8_t change = (new_state - self->state) & 0x03; - if (change == 1) { - self->quarter++; - } else if (change == 3) { - self->quarter--; - } - // ignore other state transitions - - self->state = new_state; - - // logic from the atmel-samd port: provides some damping and scales movement - // down by 4:1. - if (self->quarter >= 4) { - self->position++; - self->quarter = 0; - } else if (self->quarter <= -4) { - self->position--; - self->quarter = 0; - } + shared_module_softencoder_state_update(self, new_state); } void common_hal_rotaryio_incrementalencoder_construct(rotaryio_incrementalencoder_obj_t *self, @@ -110,12 +93,3 @@ void common_hal_rotaryio_incrementalencoder_deinit(rotaryio_incrementalencoder_o self->pin_a = NO_PIN; self->pin_b = NO_PIN; } - -mp_int_t common_hal_rotaryio_incrementalencoder_get_position(rotaryio_incrementalencoder_obj_t *self) { - return self->position; -} - -void common_hal_rotaryio_incrementalencoder_set_position(rotaryio_incrementalencoder_obj_t *self, - mp_int_t new_position) { - self->position = new_position; -} diff --git a/ports/nrf/common-hal/rotaryio/IncrementalEncoder.h b/ports/nrf/common-hal/rotaryio/IncrementalEncoder.h index 1d0fe41839..3693131056 100644 --- a/ports/nrf/common-hal/rotaryio/IncrementalEncoder.h +++ b/ports/nrf/common-hal/rotaryio/IncrementalEncoder.h @@ -35,8 +35,8 @@ typedef struct { mp_obj_base_t base; uint8_t pin_a; uint8_t pin_b; - uint8_t state; - int8_t quarter; + uint8_t state; // + int8_t quarter_count; // count intermediate transitions between detents mp_int_t position; } rotaryio_incrementalencoder_obj_t; diff --git a/ports/nrf/mpconfigport.mk b/ports/nrf/mpconfigport.mk index 83924ff795..544be70be4 100644 --- a/ports/nrf/mpconfigport.mk +++ b/ports/nrf/mpconfigport.mk @@ -40,6 +40,7 @@ CIRCUITPY_RTC ?= 1 CIRCUITPY_FREQUENCYIO = 0 CIRCUITPY_RGBMATRIX ?= 1 +CIRCUITPY_ROTARYIO_SOFTENCODER = 1 CIRCUITPY_FRAMEBUFFERIO ?= 1 CIRCUITPY_COUNTIO = 0 diff --git a/ports/raspberrypi/Makefile b/ports/raspberrypi/Makefile index 2c1a13a8b2..2a054516be 100644 --- a/ports/raspberrypi/Makefile +++ b/ports/raspberrypi/Makefile @@ -106,7 +106,7 @@ INC += -I. \ -I$(BUILD) # Pico specific configuration -CFLAGS += -DPICO_ON_DEVICE=1 -DPICO_NO_BINARY_INFO=0 -DPICO_TIME_DEFAULT_ALARM_POOL_DISABLED=1 -DPICO_DIVIDER_CALL_IDIV0=0 -DPICO_DIVIDER_CALL_LDIV0=0 -DPICO_DIVIDER_HARDWARE=1 -DPICO_DOUBLE_ROM=1 -DPICO_FLOAT_ROM=1 -DPICO_MULTICORE=1 -DPICO_BITS_IN_RAM=0 -DPICO_DIVIDER_IN_RAM=0 -DPICO_DOUBLE_PROPAGATE_NANS=0 -DPICO_DOUBLE_IN_RAM=0 -DPICO_MEM_IN_RAM=0 -DPICO_FLOAT_IN_RAM=0 -DPICO_FLOAT_PROPAGATE_NANS=1 -DPICO_NO_FLASH=0 -DPICO_COPY_TO_RAM=0 -DPICO_DISABLE_SHARED_IRQ_HANDLERS=0 -DPICO_NO_BI_BOOTSEL_VIA_DOUBLE_RESET=0 +CFLAGS += -DRASPBERRYPI -DPICO_ON_DEVICE=1 -DPICO_NO_BINARY_INFO=0 -DPICO_TIME_DEFAULT_ALARM_POOL_DISABLED=1 -DPICO_DIVIDER_CALL_IDIV0=0 -DPICO_DIVIDER_CALL_LDIV0=0 -DPICO_DIVIDER_HARDWARE=1 -DPICO_DOUBLE_ROM=1 -DPICO_FLOAT_ROM=1 -DPICO_MULTICORE=1 -DPICO_BITS_IN_RAM=0 -DPICO_DIVIDER_IN_RAM=0 -DPICO_DOUBLE_PROPAGATE_NANS=0 -DPICO_DOUBLE_IN_RAM=0 -DPICO_MEM_IN_RAM=0 -DPICO_FLOAT_IN_RAM=0 -DPICO_FLOAT_PROPAGATE_NANS=1 -DPICO_NO_FLASH=0 -DPICO_COPY_TO_RAM=0 -DPICO_DISABLE_SHARED_IRQ_HANDLERS=0 -DPICO_NO_BI_BOOTSEL_VIA_DOUBLE_RESET=0 OPTIMIZATION_FLAGS ?= -O3 # TinyUSB defines CFLAGS += -DTUD_OPT_RP2040_USB_DEVICE_ENUMERATION_FIX=1 -DCFG_TUSB_MCU=OPT_MCU_RP2040 -DCFG_TUD_MIDI_RX_BUFSIZE=128 -DCFG_TUD_CDC_RX_BUFSIZE=256 -DCFG_TUD_MIDI_TX_BUFSIZE=128 -DCFG_TUD_CDC_TX_BUFSIZE=256 -DCFG_TUD_MSC_BUFSIZE=1024 @@ -143,15 +143,11 @@ CFLAGS += \ PICO_LDFLAGS = --specs=nosys.specs -Wl,--wrap=__aeabi_ldiv0 -Wl,--wrap=__aeabi_idiv0 -Wl,--wrap=__aeabi_lmul -Wl,--wrap=__clzsi2 -Wl,--wrap=__clzdi2 -Wl,--wrap=__ctzsi2 -Wl,--wrap=__ctzdi2 -Wl,--wrap=__popcountsi2 -Wl,--wrap=__popcountdi2 -Wl,--wrap=__clz -Wl,--wrap=__clzl -Wl,--wrap=__clzll -Wl,--wrap=__aeabi_idiv -Wl,--wrap=__aeabi_idivmod -Wl,--wrap=__aeabi_ldivmod -Wl,--wrap=__aeabi_uidiv -Wl,--wrap=__aeabi_uidivmod -Wl,--wrap=__aeabi_uldivmod -Wl,--wrap=__aeabi_dadd -Wl,--wrap=__aeabi_ddiv -Wl,--wrap=__aeabi_dmul -Wl,--wrap=__aeabi_drsub -Wl,--wrap=__aeabi_dsub -Wl,--wrap=__aeabi_cdcmpeq -Wl,--wrap=__aeabi_cdrcmple -Wl,--wrap=__aeabi_cdcmple -Wl,--wrap=__aeabi_dcmpeq -Wl,--wrap=__aeabi_dcmplt -Wl,--wrap=__aeabi_dcmple -Wl,--wrap=__aeabi_dcmpge -Wl,--wrap=__aeabi_dcmpgt -Wl,--wrap=__aeabi_dcmpun -Wl,--wrap=__aeabi_i2d -Wl,--wrap=__aeabi_l2d -Wl,--wrap=__aeabi_ui2d -Wl,--wrap=__aeabi_ul2d -Wl,--wrap=__aeabi_d2iz -Wl,--wrap=__aeabi_d2lz -Wl,--wrap=__aeabi_d2uiz -Wl,--wrap=__aeabi_d2ulz -Wl,--wrap=__aeabi_d2f -Wl,--wrap=sqrt -Wl,--wrap=cos -Wl,--wrap=sin -Wl,--wrap=tan -Wl,--wrap=atan2 -Wl,--wrap=exp -Wl,--wrap=log -Wl,--wrap=ldexp -Wl,--wrap=copysign -Wl,--wrap=trunc -Wl,--wrap=floor -Wl,--wrap=ceil -Wl,--wrap=round -Wl,--wrap=sincos -Wl,--wrap=asin -Wl,--wrap=acos -Wl,--wrap=atan -Wl,--wrap=sinh -Wl,--wrap=cosh -Wl,--wrap=tanh -Wl,--wrap=asinh -Wl,--wrap=acosh -Wl,--wrap=atanh -Wl,--wrap=exp2 -Wl,--wrap=log2 -Wl,--wrap=exp10 -Wl,--wrap=log10 -Wl,--wrap=pow -Wl,--wrap=powint -Wl,--wrap=hypot -Wl,--wrap=cbrt -Wl,--wrap=fmod -Wl,--wrap=drem -Wl,--wrap=remainder -Wl,--wrap=remquo -Wl,--wrap=expm1 -Wl,--wrap=log1p -Wl,--wrap=fma -Wl,--wrap=__aeabi_fadd -Wl,--wrap=__aeabi_fdiv -Wl,--wrap=__aeabi_fmul -Wl,--wrap=__aeabi_frsub -Wl,--wrap=__aeabi_fsub -Wl,--wrap=__aeabi_cfcmpeq -Wl,--wrap=__aeabi_cfrcmple -Wl,--wrap=__aeabi_cfcmple -Wl,--wrap=__aeabi_fcmpeq -Wl,--wrap=__aeabi_fcmplt -Wl,--wrap=__aeabi_fcmple -Wl,--wrap=__aeabi_fcmpge -Wl,--wrap=__aeabi_fcmpgt -Wl,--wrap=__aeabi_fcmpun -Wl,--wrap=__aeabi_i2f -Wl,--wrap=__aeabi_l2f -Wl,--wrap=__aeabi_ui2f -Wl,--wrap=__aeabi_ul2f -Wl,--wrap=__aeabi_f2iz -Wl,--wrap=__aeabi_f2lz -Wl,--wrap=__aeabi_f2uiz -Wl,--wrap=__aeabi_f2ulz -Wl,--wrap=__aeabi_f2d -Wl,--wrap=sqrtf -Wl,--wrap=cosf -Wl,--wrap=sinf -Wl,--wrap=tanf -Wl,--wrap=atan2f -Wl,--wrap=expf -Wl,--wrap=logf -Wl,--wrap=ldexpf -Wl,--wrap=copysignf -Wl,--wrap=truncf -Wl,--wrap=floorf -Wl,--wrap=ceilf -Wl,--wrap=roundf -Wl,--wrap=sincosf -Wl,--wrap=asinf -Wl,--wrap=acosf -Wl,--wrap=atanf -Wl,--wrap=sinhf -Wl,--wrap=coshf -Wl,--wrap=tanhf -Wl,--wrap=asinhf -Wl,--wrap=acoshf -Wl,--wrap=atanhf -Wl,--wrap=exp2f -Wl,--wrap=log2f -Wl,--wrap=exp10f -Wl,--wrap=log10f -Wl,--wrap=powf -Wl,--wrap=powintf -Wl,--wrap=hypotf -Wl,--wrap=cbrtf -Wl,--wrap=fmodf -Wl,--wrap=dremf -Wl,--wrap=remainderf -Wl,--wrap=remquof -Wl,--wrap=expm1f -Wl,--wrap=log1pf -Wl,--wrap=fmaf -Wl,--wrap=memcpy -Wl,--wrap=memset -Wl,--wrap=__aeabi_memcpy -Wl,--wrap=__aeabi_memset -Wl,--wrap=__aeabi_memcpy4 -Wl,--wrap=__aeabi_memset4 -Wl,--wrap=__aeabi_memcpy8 -Wl,--wrap=__aeabi_memset8 -LDFLAGS = $(CFLAGS) $(PICO_LDFLAGS) -Wl,-T,link.ld -Wl,-Map=$@.map -Wl,-cref -Wl,--gc-sections - # Use toolchain libm if we're not using our own. ifndef INTERNAL_LIBM LIBS += -lm endif -LDFLAGS += -mthumb -mcpu=cortex-m0plus - SRC_SDK := \ src/common/pico_sync/critical_section.c \ src/common/pico_sync/lock_core.c \ @@ -169,7 +165,7 @@ SRC_SDK := \ src/rp2_common/hardware_irq/irq.c \ src/rp2_common/hardware_pio/pio.c \ src/rp2_common/hardware_pll/pll.c \ - src/rp2_common/hardware_rtc/rtc.c \ + src/rp2_common/hardware_rtc/rtc.c \ src/rp2_common/hardware_spi/spi.c \ src/rp2_common/hardware_sync/sync.c \ src/rp2_common/hardware_timer/timer.c \ @@ -233,7 +229,6 @@ SRC_SHARED_MODULE_EXPANDED = $(addprefix shared-bindings/, $(SRC_SHARED_MODULE)) SRC_COMMON_HAL_SHARED_MODULE_EXPANDED = $(sort $(SRC_COMMON_HAL_EXPANDED) $(SRC_SHARED_MODULE_EXPANDED)) SRC_S = supervisor/$(CHIP_FAMILY)_cpu.s -BOOT2_S_UPPER ?= sdk/src/rp2_common/boot_stage2/boot2_generic_03h.S BOOT2_S_CFLAGS ?= -DPICO_FLASH_SPI_CLKDIV=4 SRC_S_UPPER = sdk/src/rp2_common/hardware_divider/divider.S \ sdk/src/rp2_common/hardware_irq/irq_handler_chain.S \ @@ -270,9 +265,15 @@ $(BUILD)/boot2.bin: $(BUILD)/boot2.elf $(STEPECHO) "OBJCOPY $<" $(Q)$(OBJCOPY) -O binary $< $@ -$(BUILD)/boot2.elf: $(BOOT2_S_UPPER) | $(BUILD)/ + +$(BUILD)/stage2.c: stage2.c.jinja gen_stage2.py | $(BUILD)/ + $(STEPECHO) "GEN $<" + $(Q)$(PYTHON3) gen_stage2.py $< $@ $(EXTERNAL_FLASH_DEVICES) + +$(BUILD)/boot2.elf: $(BUILD)/stage2.c $(STEPECHO) "BOOT $<" - $(Q)$(CC) $(CFLAGS) $(BOOT2_S_CFLAGS) -Isdk/src/rp2_common/boot_stage2/asminclude --specs=nosys.specs -nostartfiles -Wl,-T,sdk/src/rp2_common/boot_stage2/boot_stage2.ld -o $@ $< + $(Q)$(CC) $(CFLAGS) $(BOOT2_S_CFLAGS) -Os -ggdb3 -I. -fPIC --specs=nosys.specs -nostartfiles -Wl,-T,boot_stage2.ld -Wl,-Map=$@.map -o $@ $< + $(Q)$(SIZE) $@ SRC_QSTR += $(SRC_C) $(SRC_SUPERVISOR) $(SRC_COMMON_HAL_EXPANDED) $(SRC_SHARED_MODULE_EXPANDED) @@ -280,12 +281,14 @@ all: $(BUILD)/firmware.uf2 $(BUILD)/firmware.elf: $(OBJ) link.ld $(STEPECHO) "LINK $@" - $(Q)$(CC) -o $@ $(LDFLAGS) $(OBJ) + $(Q)echo $(OBJ) > $(BUILD)/firmware.objs + $(Q)echo $(PICO_LDFLAGS) > $(BUILD)/firmware.ldflags + $(Q)$(CC) -o $@ $(CFLAGS) @$(BUILD)/firmware.ldflags -Wl,-T,link.ld -Wl,-Map=$@.map -Wl,-cref -Wl,--gc-sections @$(BUILD)/firmware.objs $(Q)$(SIZE) $@ | $(PYTHON3) $(TOP)/tools/build_memory_info.py link.ld $(BUILD)/firmware.bin: $(BUILD)/firmware.elf $(STEPECHO) "Create $@" - $(Q)$(OBJCOPY) -O binary $^ $@ + $(Q)$(OBJCOPY) -O binary -R .dtcm_bss $^ $@ $(BUILD)/firmware.uf2: $(BUILD)/firmware.bin $(STEPECHO) "Create $@" diff --git a/ports/raspberrypi/bindings/rp2pio/StateMachine.c b/ports/raspberrypi/bindings/rp2pio/StateMachine.c index 9464159498..fe36423256 100644 --- a/ports/raspberrypi/bindings/rp2pio/StateMachine.c +++ b/ports/raspberrypi/bindings/rp2pio/StateMachine.c @@ -55,8 +55,7 @@ //| This class is designed to facilitate sharing of PIO resources. By default, //| it is assumed that the state machine is used on its own and can be placed //| in either PIO. State machines with the same program will be placed in the -//| same PIO if possible. To ensure multiple state machines share a PIO use -//| the ``colocate`` kwarg during construction and create them one after another.""" +//| same PIO if possible.""" //| //| def __init__(self, //| program: ReadableBuffer, @@ -87,7 +86,6 @@ //| auto_push: bool = False, //| push_threshold : int = 32, //| in_shift_right : bool = True) -> None: -// //| colocate: Union[int, StateMachine, None] = None //| //| """Construct a StateMachine object on the given pins with the given program. //| diff --git a/ports/raspberrypi/boards/adafruit_feather_rp2040/mpconfigboard.h b/ports/raspberrypi/boards/adafruit_feather_rp2040/mpconfigboard.h index a594e6a55e..fba7dc3b19 100644 --- a/ports/raspberrypi/boards/adafruit_feather_rp2040/mpconfigboard.h +++ b/ports/raspberrypi/boards/adafruit_feather_rp2040/mpconfigboard.h @@ -12,6 +12,3 @@ #define DEFAULT_UART_BUS_RX (&pin_GPIO1) #define DEFAULT_UART_BUS_TX (&pin_GPIO0) - -// Flash chip is GD25Q64 connected over QSPI -#define TOTAL_FLASH_SIZE (8 * 1024 * 1024) diff --git a/ports/raspberrypi/boards/adafruit_feather_rp2040/mpconfigboard.mk b/ports/raspberrypi/boards/adafruit_feather_rp2040/mpconfigboard.mk index f4106b94a2..84c4adabb7 100644 --- a/ports/raspberrypi/boards/adafruit_feather_rp2040/mpconfigboard.mk +++ b/ports/raspberrypi/boards/adafruit_feather_rp2040/mpconfigboard.mk @@ -6,4 +6,4 @@ USB_MANUFACTURER = "Adafruit" CHIP_VARIANT = RP2040 CHIP_FAMILY = rp2 -INTERNAL_FLASH_FILESYSTEM = 1 +EXTERNAL_FLASH_DEVICES = "GD25Q64C" diff --git a/ports/raspberrypi/boards/adafruit_itsybitsy_rp2040/mpconfigboard.h b/ports/raspberrypi/boards/adafruit_itsybitsy_rp2040/mpconfigboard.h index 8e36eb1989..dad4e2eae8 100644 --- a/ports/raspberrypi/boards/adafruit_itsybitsy_rp2040/mpconfigboard.h +++ b/ports/raspberrypi/boards/adafruit_itsybitsy_rp2040/mpconfigboard.h @@ -12,6 +12,3 @@ #define DEFAULT_UART_BUS_RX (&pin_GPIO1) #define DEFAULT_UART_BUS_TX (&pin_GPIO0) - -// Flash chip is W25Q64 connected over QSPI -#define TOTAL_FLASH_SIZE (8 * 1024 * 1024) diff --git a/ports/raspberrypi/boards/adafruit_itsybitsy_rp2040/mpconfigboard.mk b/ports/raspberrypi/boards/adafruit_itsybitsy_rp2040/mpconfigboard.mk index 9d1d151415..965acff277 100644 --- a/ports/raspberrypi/boards/adafruit_itsybitsy_rp2040/mpconfigboard.mk +++ b/ports/raspberrypi/boards/adafruit_itsybitsy_rp2040/mpconfigboard.mk @@ -6,4 +6,4 @@ USB_MANUFACTURER = "Adafruit" CHIP_VARIANT = RP2040 CHIP_FAMILY = rp2 -INTERNAL_FLASH_FILESYSTEM = 1 +EXTERNAL_FLASH_DEVICES = "W25Q64JVxQ" diff --git a/ports/raspberrypi/boards/qtpy_rp2040/board.c b/ports/raspberrypi/boards/adafruit_qtpy_rp2040/board.c similarity index 100% rename from ports/raspberrypi/boards/qtpy_rp2040/board.c rename to ports/raspberrypi/boards/adafruit_qtpy_rp2040/board.c diff --git a/ports/raspberrypi/boards/qtpy_rp2040/mpconfigboard.h b/ports/raspberrypi/boards/adafruit_qtpy_rp2040/mpconfigboard.h similarity index 72% rename from ports/raspberrypi/boards/qtpy_rp2040/mpconfigboard.h rename to ports/raspberrypi/boards/adafruit_qtpy_rp2040/mpconfigboard.h index 0ba490e810..a1947deaeb 100644 --- a/ports/raspberrypi/boards/qtpy_rp2040/mpconfigboard.h +++ b/ports/raspberrypi/boards/adafruit_qtpy_rp2040/mpconfigboard.h @@ -1,4 +1,4 @@ -#define MICROPY_HW_BOARD_NAME "Adafruit QTPy RP2040" +#define MICROPY_HW_BOARD_NAME "Adafruit QT Py RP2040" #define MICROPY_HW_MCU_NAME "rp2040" #define MICROPY_HW_NEOPIXEL (&pin_GPIO12) @@ -12,6 +12,3 @@ #define DEFAULT_UART_BUS_RX (&pin_GPIO5) #define DEFAULT_UART_BUS_TX (&pin_GPIO20) - -// Flash chip is GD25Q64 connected over QSPI -#define TOTAL_FLASH_SIZE (8 * 1024 * 1024) diff --git a/ports/raspberrypi/boards/qtpy_rp2040/mpconfigboard.mk b/ports/raspberrypi/boards/adafruit_qtpy_rp2040/mpconfigboard.mk similarity index 78% rename from ports/raspberrypi/boards/qtpy_rp2040/mpconfigboard.mk rename to ports/raspberrypi/boards/adafruit_qtpy_rp2040/mpconfigboard.mk index 5e454e312e..8258f87833 100644 --- a/ports/raspberrypi/boards/qtpy_rp2040/mpconfigboard.mk +++ b/ports/raspberrypi/boards/adafruit_qtpy_rp2040/mpconfigboard.mk @@ -6,4 +6,4 @@ USB_MANUFACTURER = "Adafruit" CHIP_VARIANT = RP2040 CHIP_FAMILY = rp2 -INTERNAL_FLASH_FILESYSTEM = 1 +EXTERNAL_FLASH_DEVICES = "W25Q64JVxQ" diff --git a/ports/raspberrypi/boards/qtpy_rp2040/pins.c b/ports/raspberrypi/boards/adafruit_qtpy_rp2040/pins.c similarity index 97% rename from ports/raspberrypi/boards/qtpy_rp2040/pins.c rename to ports/raspberrypi/boards/adafruit_qtpy_rp2040/pins.c index 150aa374ed..e9e726f35a 100644 --- a/ports/raspberrypi/boards/qtpy_rp2040/pins.c +++ b/ports/raspberrypi/boards/adafruit_qtpy_rp2040/pins.c @@ -11,7 +11,7 @@ STATIC const mp_rom_map_elem_t board_global_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_D2), MP_ROM_PTR(&pin_GPIO27) }, { MP_ROM_QSTR(MP_QSTR_A3), MP_ROM_PTR(&pin_GPIO26) }, - { MP_ROM_QSTR(MP_QSTR_D3), MP_ROM_PTR(&pin_GPIO27) }, + { MP_ROM_QSTR(MP_QSTR_D3), MP_ROM_PTR(&pin_GPIO26) }, { MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO24) }, { MP_ROM_QSTR(MP_QSTR_D4), MP_ROM_PTR(&pin_GPIO24) }, diff --git a/ports/raspberrypi/boards/pimoroni_keybow2040/mpconfigboard.h b/ports/raspberrypi/boards/pimoroni_keybow2040/mpconfigboard.h index 234be27c2c..ecc127db68 100644 --- a/ports/raspberrypi/boards/pimoroni_keybow2040/mpconfigboard.h +++ b/ports/raspberrypi/boards/pimoroni_keybow2040/mpconfigboard.h @@ -28,8 +28,6 @@ #define DEFAULT_UART_BUS_RX (&pin_GPIO1) #define DEFAULT_UART_BUS_TX (&pin_GPIO0) -#define TOTAL_FLASH_SIZE (2 * 1024 * 1024) - // These pins are unconnected #define IGNORE_PIN_GPIO2 1 #define IGNORE_PIN_GPIO22 1 diff --git a/ports/raspberrypi/boards/pimoroni_keybow2040/mpconfigboard.mk b/ports/raspberrypi/boards/pimoroni_keybow2040/mpconfigboard.mk index cf74294315..ad343c4e0d 100644 --- a/ports/raspberrypi/boards/pimoroni_keybow2040/mpconfigboard.mk +++ b/ports/raspberrypi/boards/pimoroni_keybow2040/mpconfigboard.mk @@ -6,6 +6,6 @@ USB_MANUFACTURER = "Pimoroni" CHIP_VARIANT = RP2040 CHIP_FAMILY = rp2 -INTERNAL_FLASH_FILESYSTEM = 1 +EXTERNAL_FLASH_DEVICES = "W25Q16JVxQ" CIRCUITPY__EVE = 1 diff --git a/ports/raspberrypi/boards/pimoroni_picosystem/mpconfigboard.h b/ports/raspberrypi/boards/pimoroni_picosystem/mpconfigboard.h index a1395f17d8..8a61d6a76d 100644 --- a/ports/raspberrypi/boards/pimoroni_picosystem/mpconfigboard.h +++ b/ports/raspberrypi/boards/pimoroni_picosystem/mpconfigboard.h @@ -38,8 +38,6 @@ #define DEFAULT_UART_BUS_RX (&pin_GPIO1) #define DEFAULT_UART_BUS_TX (&pin_GPIO0) -#define TOTAL_FLASH_SIZE (16 * 1024 * 1024) - // These pins are unconnected #define IGNORE_PIN_GPIO3 1 #define IGNORE_PIN_GPIO10 1 diff --git a/ports/raspberrypi/boards/pimoroni_picosystem/mpconfigboard.mk b/ports/raspberrypi/boards/pimoroni_picosystem/mpconfigboard.mk index c9d22549ba..f00fb64cc9 100644 --- a/ports/raspberrypi/boards/pimoroni_picosystem/mpconfigboard.mk +++ b/ports/raspberrypi/boards/pimoroni_picosystem/mpconfigboard.mk @@ -6,6 +6,6 @@ USB_MANUFACTURER = "Pimoroni" CHIP_VARIANT = RP2040 CHIP_FAMILY = rp2 -INTERNAL_FLASH_FILESYSTEM = 1 +EXTERNAL_FLASH_DEVICES = "W25Q128JVxQ" CIRCUITPY__EVE = 1 diff --git a/ports/raspberrypi/boards/pimoroni_tiny2040/mpconfigboard.h b/ports/raspberrypi/boards/pimoroni_tiny2040/mpconfigboard.h index 965dd0e042..8f188959cb 100644 --- a/ports/raspberrypi/boards/pimoroni_tiny2040/mpconfigboard.h +++ b/ports/raspberrypi/boards/pimoroni_tiny2040/mpconfigboard.h @@ -7,8 +7,6 @@ #define MICROPY_HW_USER_SW (&pin_GPIO23) -#define TOTAL_FLASH_SIZE (8 * 1024 * 1024) - // These pins are unconnected #define IGNORE_PIN_GPIO8 1 #define IGNORE_PIN_GPIO9 1 diff --git a/ports/raspberrypi/boards/pimoroni_tiny2040/mpconfigboard.mk b/ports/raspberrypi/boards/pimoroni_tiny2040/mpconfigboard.mk index 75fe36a29d..7487782237 100644 --- a/ports/raspberrypi/boards/pimoroni_tiny2040/mpconfigboard.mk +++ b/ports/raspberrypi/boards/pimoroni_tiny2040/mpconfigboard.mk @@ -6,6 +6,6 @@ USB_MANUFACTURER = "Pimoroni" CHIP_VARIANT = RP2040 CHIP_FAMILY = rp2 -INTERNAL_FLASH_FILESYSTEM = 1 +EXTERNAL_FLASH_DEVICES = "W25Q64JVxQ" CIRCUITPY__EVE = 1 diff --git a/ports/raspberrypi/boards/raspberry_pi_pico/mpconfigboard.h b/ports/raspberrypi/boards/raspberry_pi_pico/mpconfigboard.h index a506fec49e..efb2fc3402 100644 --- a/ports/raspberrypi/boards/raspberry_pi_pico/mpconfigboard.h +++ b/ports/raspberrypi/boards/raspberry_pi_pico/mpconfigboard.h @@ -1,18 +1,2 @@ -// LEDs -// #define MICROPY_HW_LED_STATUS (&pin_PA17) - #define MICROPY_HW_BOARD_NAME "Raspberry Pi Pico" #define MICROPY_HW_MCU_NAME "rp2040" - -// #define DEFAULT_I2C_BUS_SCL (&pin_PA23) -// #define DEFAULT_I2C_BUS_SDA (&pin_PA22) - -// #define DEFAULT_SPI_BUS_SCK (&pin_PB11) -// #define DEFAULT_SPI_BUS_MOSI (&pin_PB10) -// #define DEFAULT_SPI_BUS_MISO (&pin_PA12) - -// #define DEFAULT_UART_BUS_RX (&pin_PA11) -// #define DEFAULT_UART_BUS_TX (&pin_PA10) - -// Flash chip is W25Q16JVUXIQ connected over QSPI -#define TOTAL_FLASH_SIZE (2 * 1024 * 1024) diff --git a/ports/raspberrypi/boards/raspberry_pi_pico/mpconfigboard.mk b/ports/raspberrypi/boards/raspberry_pi_pico/mpconfigboard.mk index 8d6ca53305..608ca280df 100644 --- a/ports/raspberrypi/boards/raspberry_pi_pico/mpconfigboard.mk +++ b/ports/raspberrypi/boards/raspberry_pi_pico/mpconfigboard.mk @@ -6,8 +6,6 @@ USB_MANUFACTURER = "Raspberry Pi" CHIP_VARIANT = RP2040 CHIP_FAMILY = rp2 -INTERNAL_FLASH_FILESYSTEM = 1 +EXTERNAL_FLASH_DEVICES = "W25Q16JVxQ" CIRCUITPY__EVE = 1 - -BOOT2_S_UPPER = sdk/src/rp2_common/boot_stage2/boot2_w25q080.S diff --git a/ports/raspberrypi/boards/sparkfun_pro_micro_rp2040/mpconfigboard.h b/ports/raspberrypi/boards/sparkfun_pro_micro_rp2040/mpconfigboard.h index 8ceab9caa9..eb807097b5 100644 --- a/ports/raspberrypi/boards/sparkfun_pro_micro_rp2040/mpconfigboard.h +++ b/ports/raspberrypi/boards/sparkfun_pro_micro_rp2040/mpconfigboard.h @@ -12,6 +12,3 @@ #define DEFAULT_UART_BUS_RX (&pin_GPIO1) #define DEFAULT_UART_BUS_TX (&pin_GPIO0) - -// Flash chip is GD25Q128 connected over QSPI -#define TOTAL_FLASH_SIZE (16 * 1024 * 1024) diff --git a/ports/raspberrypi/boards/sparkfun_pro_micro_rp2040/mpconfigboard.mk b/ports/raspberrypi/boards/sparkfun_pro_micro_rp2040/mpconfigboard.mk index 6f758cd8f0..d02d14267f 100644 --- a/ports/raspberrypi/boards/sparkfun_pro_micro_rp2040/mpconfigboard.mk +++ b/ports/raspberrypi/boards/sparkfun_pro_micro_rp2040/mpconfigboard.mk @@ -6,4 +6,4 @@ USB_MANUFACTURER = "SparkFun" CHIP_VARIANT = RP2040 CHIP_FAMILY = rp2 -INTERNAL_FLASH_FILESYSTEM = 1 +EXTERNAL_FLASH_DEVICES = "W25Q128JVxM" diff --git a/ports/raspberrypi/boards/sparkfun_thing_plus_rp2040/mpconfigboard.h b/ports/raspberrypi/boards/sparkfun_thing_plus_rp2040/mpconfigboard.h index 564e41a651..6c307ec890 100644 --- a/ports/raspberrypi/boards/sparkfun_thing_plus_rp2040/mpconfigboard.h +++ b/ports/raspberrypi/boards/sparkfun_thing_plus_rp2040/mpconfigboard.h @@ -12,6 +12,3 @@ #define DEFAULT_UART_BUS_RX (&pin_GPIO1) #define DEFAULT_UART_BUS_TX (&pin_GPIO0) - -// Flash chip is GD25Q128 connected over QSPI -#define TOTAL_FLASH_SIZE (16 * 1024 * 1024) diff --git a/ports/raspberrypi/boards/sparkfun_thing_plus_rp2040/mpconfigboard.mk b/ports/raspberrypi/boards/sparkfun_thing_plus_rp2040/mpconfigboard.mk index f7369ab37e..101adbfa4b 100644 --- a/ports/raspberrypi/boards/sparkfun_thing_plus_rp2040/mpconfigboard.mk +++ b/ports/raspberrypi/boards/sparkfun_thing_plus_rp2040/mpconfigboard.mk @@ -6,4 +6,4 @@ USB_MANUFACTURER = "SparkFun" CHIP_VARIANT = RP2040 CHIP_FAMILY = rp2 -INTERNAL_FLASH_FILESYSTEM = 1 +EXTERNAL_FLASH_DEVICES = "W25Q128JVxM" diff --git a/ports/raspberrypi/boot_stage2.ld b/ports/raspberrypi/boot_stage2.ld new file mode 100644 index 0000000000..c29429062c --- /dev/null +++ b/ports/raspberrypi/boot_stage2.ld @@ -0,0 +1,13 @@ +MEMORY { + /* We are loaded to the top 256 bytes of SRAM, which is above the bootrom + stack. Note 4 bytes occupied by checksum. */ + SRAM(rx) : ORIGIN = 0x20041f00, LENGTH = 252 +} + +SECTIONS { + . = ORIGIN(SRAM); + .text : { + *(.entry.*) + *(.text.*) + } >SRAM +} diff --git a/ports/raspberrypi/common-hal/busio/I2C.c b/ports/raspberrypi/common-hal/busio/I2C.c index c9f89fadd8..0190959f87 100644 --- a/ports/raspberrypi/common-hal/busio/I2C.c +++ b/ports/raspberrypi/common-hal/busio/I2C.c @@ -98,7 +98,12 @@ void common_hal_busio_i2c_construct(busio_i2c_obj_t *self, } #endif - // Create a bitbangio.I2C object to do short writes. + // Create a bitbangio.I2C object to do 0 byte writes. + // + // These are used to non-invasively detect I2C devices by sending + // the address and confirming an ACK. + // They are not supported by the RP2040 hardware. + // // Must be done before setting up the I2C pins, since they will be // set up as GPIO by the bitbangio.I2C object. // @@ -157,9 +162,9 @@ void common_hal_busio_i2c_unlock(busio_i2c_obj_t *self) { } uint8_t common_hal_busio_i2c_write(busio_i2c_obj_t *self, uint16_t addr, - const uint8_t *data, size_t len, bool transmit_stop_bit) { - if (len <= 2) { - // The RP2040 I2C peripheral will not do writes 2 bytes or less long. + const uint8_t *data, size_t len, bool transmit_stop_bit) { + if (len == 0) { + // The RP2040 I2C peripheral will not perform 0 byte writes. // So use bitbangio.I2C to do the write. gpio_set_function(self->scl_pin, GPIO_FUNC_SIO); diff --git a/ports/raspberrypi/common-hal/rotaryio/IncrementalEncoder.c b/ports/raspberrypi/common-hal/rotaryio/IncrementalEncoder.c index 30b3ac619e..045f111ca3 100644 --- a/ports/raspberrypi/common-hal/rotaryio/IncrementalEncoder.c +++ b/ports/raspberrypi/common-hal/rotaryio/IncrementalEncoder.c @@ -28,6 +28,7 @@ #include #include "common-hal/rotaryio/IncrementalEncoder.h" +#include "shared-module/rotaryio/IncrementalEncoder.h" #include "bindings/rp2pio/__init__.h" #include "bindings/rp2pio/StateMachine.h" @@ -60,8 +61,15 @@ STATIC void incrementalencoder_interrupt_handler(void *self_in); void common_hal_rotaryio_incrementalencoder_construct(rotaryio_incrementalencoder_obj_t *self, const mcu_pin_obj_t *pin_a, const mcu_pin_obj_t *pin_b) { mp_obj_t pins[] = {MP_OBJ_FROM_PTR(pin_a), MP_OBJ_FROM_PTR(pin_b)}; + // Start out with swapped to match behavior with other ports. + self->swapped = true; if (!common_hal_rp2pio_pins_are_sequential(2, pins)) { - mp_raise_RuntimeError(translate("Pins must be sequential")); + pins[0] = MP_OBJ_FROM_PTR(pin_b); + pins[1] = MP_OBJ_FROM_PTR(pin_a); + self->swapped = false; + if (!common_hal_rp2pio_pins_are_sequential(2, pins)) { + mp_raise_RuntimeError(translate("Pins must be sequential")); + } } self->position = 0; @@ -71,8 +79,8 @@ void common_hal_rotaryio_incrementalencoder_construct(rotaryio_incrementalencode encoder, MP_ARRAY_SIZE(encoder), 1000000, encoder_init, MP_ARRAY_SIZE(encoder_init), // init - NULL, 1, 0, 0xffffffff, // out pin - pin_a, 2, // in pins + NULL, 0, 0, 0, // out pin + pins[0], 2, // in pins 3, 0, // in pulls NULL, 0, 0, 0x1f, // set pins NULL, 0, 0, 0x1f, // sideset pins @@ -84,12 +92,10 @@ void common_hal_rotaryio_incrementalencoder_construct(rotaryio_incrementalencode common_hal_rp2pio_statemachine_run(&self->state_machine, encoder_init, MP_ARRAY_SIZE(encoder_init)); // We're guaranteed by the init code that some output will be available promptly - uint8_t state; - common_hal_rp2pio_statemachine_readinto(&self->state_machine, &state, 1, 1); - // Top two bits of self->last_state don't matter, because they'll be gone as soon as - // interrupt handler is called. - self->last_state = state & 3; + uint8_t quiescent_state; + common_hal_rp2pio_statemachine_readinto(&self->state_machine, &quiescent_state, 1, 1); + shared_module_softencoder_state_init(self, quiescent_state & 3); common_hal_rp2pio_statemachine_set_interrupt_handler(&self->state_machine, incrementalencoder_interrupt_handler, self, PIO_IRQ0_INTF_SM0_RXNEMPTY_BITS); } @@ -101,70 +107,24 @@ void common_hal_rotaryio_incrementalencoder_deinit(rotaryio_incrementalencoder_o if (common_hal_rotaryio_incrementalencoder_deinited(self)) { return; } + common_hal_rp2pio_statemachine_set_interrupt_handler(&self->state_machine, NULL, NULL, 0); common_hal_rp2pio_statemachine_deinit(&self->state_machine); } -mp_int_t common_hal_rotaryio_incrementalencoder_get_position(rotaryio_incrementalencoder_obj_t *self) { - return self->position; -} - -void common_hal_rotaryio_incrementalencoder_set_position(rotaryio_incrementalencoder_obj_t *self, - mp_int_t new_position) { - self->position = new_position; -} - STATIC void incrementalencoder_interrupt_handler(void *self_in) { rotaryio_incrementalencoder_obj_t *self = self_in; - // This table also works for detent both at 11 and 00 - // For 11 at detent: - // Turning cw: 11->01->00->10->11 - // Turning ccw: 11->10->00->01->11 - // For 00 at detent: - // Turning cw: 00->10->11->10->00 - // Turning ccw: 00->01->11->10->00 - - // index table by state - #define BAD 7 - static const int8_t transitions[16] = { - 0, // 00 -> 00 no movement - -1, // 00 -> 01 3/4 ccw (11 detent) or 1/4 ccw (00 at detent) - +1, // 00 -> 10 3/4 cw or 1/4 cw - BAD, // 00 -> 11 non-Gray-code transition - +1, // 01 -> 00 2/4 or 4/4 cw - 0, // 01 -> 01 no movement - BAD, // 01 -> 10 non-Gray-code transition - -1, // 01 -> 11 4/4 or 2/4 ccw - -1, // 10 -> 00 2/4 or 4/4 ccw - BAD, // 10 -> 01 non-Gray-code transition - 0, // 10 -> 10 no movement - +1, // 10 -> 11 4/4 or 2/4 cw - BAD, // 11 -> 00 non-Gray-code transition - +1, // 11 -> 01 1/4 or 3/4 cw - -1, // 11 -> 10 1/4 or 3/4 ccw - 0, // 11 -> 11 no movement - }; while (common_hal_rp2pio_statemachine_get_in_waiting(&self->state_machine)) { // Bypass all the logic of StateMachine.c:_transfer, we need something // very simple and fast for an interrupt! - uint8_t new = self->state_machine.pio->rxf[self->state_machine.state_machine]; - - // Shift the old AB bits to the "old" position, and set the new AB bits. - self->last_state = (self->last_state & 0x3) << 2 | (new & 0x3); - - int8_t quarter_incr = transitions[self->last_state]; - if (quarter_incr == BAD) { - // Missed a transition. We don't know which way we're going, so do nothing. - return; - } - - self->quarter_count += quarter_incr; - if (self->quarter_count >= 4) { - self->position += 1; - self->quarter_count = 0; - } else if (self->quarter_count <= -4) { - self->position -= 1; - self->quarter_count = 0; + uint8_t new_state = self->state_machine.pio->rxf[self->state_machine.state_machine]; + if (self->swapped) { + if (new_state == 0x1) { + new_state = 0x2; + } else if (new_state == 0x2) { + new_state = 0x1; + } } + shared_module_softencoder_state_update(self, new_state); } } diff --git a/ports/raspberrypi/common-hal/rotaryio/IncrementalEncoder.h b/ports/raspberrypi/common-hal/rotaryio/IncrementalEncoder.h index 83fe97d316..6745d95a1c 100644 --- a/ports/raspberrypi/common-hal/rotaryio/IncrementalEncoder.h +++ b/ports/raspberrypi/common-hal/rotaryio/IncrementalEncoder.h @@ -34,7 +34,8 @@ typedef struct { mp_obj_base_t base; rp2pio_statemachine_obj_t state_machine; - uint8_t last_state : 4; // - int8_t quarter_count : 4; // count intermediate transitions between detents + uint8_t state; // + int8_t quarter_count; // count intermediate transitions between detents + bool swapped; // Did the pins need to be swapped to be sequential? mp_int_t position; } rotaryio_incrementalencoder_obj_t; diff --git a/ports/raspberrypi/gen_stage2.py b/ports/raspberrypi/gen_stage2.py new file mode 100644 index 0000000000..4a67905183 --- /dev/null +++ b/ports/raspberrypi/gen_stage2.py @@ -0,0 +1,82 @@ +import sys +import cascadetoml +import pathlib +import typer +from jinja2 import Template + + +def main(input_template: pathlib.Path, output_path: pathlib.Path, skus: str = typer.Argument("")): + if "," in skus: + skus = skus.split(",") + else: + skus = [skus] + skus = ['sku="{}"'.format(f.strip()) for f in skus] + flashes = cascadetoml.filter_toml(pathlib.Path("../../data/nvm.toml"), skus) + + if len(skus) == 0: + print("Set EXTERNAL_FLASH_DEVICES in mpconfigboard.mk with all possible flash skus") + raise typer.Exit(code=1) + + def all_have(nvms, key): + for nvm in nvms: + if not nvm.get(key, False): + return False + return True + + def all_match(nvms, key, default=None): + shared_value = nvms[0].get(key, default) + for nvm in nvms: + this_value = nvm.get(key, default) + if this_value != shared_value: + print( + "{}.{} = {} does not match {}".format( + nvm["sku"], key, this_value, shared_value + ) + ) + return None + return shared_value + + quad_enable_status_byte = all_match(flashes["nvm"], "quad_enable_status_byte", None) + quad_enable_bit_mask = all_match(flashes["nvm"], "quad_enable_bit_mask") + continuous_status_write = all_have(flashes["nvm"], "01_continuous_status_write") + split_status_write = all_have(flashes["nvm"], "write_status_register_split") + e7_quad_word_read = all_have(flashes["nvm"], "e7_quad_word_read") + + quad_ok = quad_enable_status_byte is not None and quad_enable_bit_mask is not None + + max_clock_speed_mhz = min((x.get("max_clock_speed_mhz", 1000) for x in flashes["nvm"])) + + # Check that we have a consistent way to set quad enable. + if continuous_status_write is None and split_status_write is None: + print("quad not ok", continuous_status_write, split_status_write) + quad_ok = False + + clock_divider = 4 + + read_command = 0x03 + wait_cycles = 0 + if quad_ok: + if e7_quad_word_read: + read_command = 0xE7 + wait_cycles = 2 + else: + read_command = 0xEB + wait_cycles = 4 + + flash_settings = { + "quad_ok": quad_ok, + "quad_enable_status_byte": quad_enable_status_byte, + "quad_enable_bit_mask": quad_enable_bit_mask, + "split_status_write": split_status_write, + "clock_divider": clock_divider, + "read_command": read_command, + "wait_cycles": wait_cycles, + } + + template = Template(input_template.read_text()) + + output_path.write_text(template.render(flash_settings)) + + +if __name__ == "__main__": + typer.run(main) diff --git a/ports/raspberrypi/link.ld b/ports/raspberrypi/link.ld index 653408d4e5..62b1bd04b6 100644 --- a/ports/raspberrypi/link.ld +++ b/ports/raspberrypi/link.ld @@ -174,6 +174,40 @@ SECTIONS __data_end__ = .; } > RAM AT> FLASH_FIRMWARE + .itcm : + { + . = ALIGN(4); + *(.itcm.*) + + . = ALIGN(4); + } > RAM AT> FLASH_FIRMWARE + _ld_itcm_destination = ADDR(.itcm); + _ld_itcm_flash_copy = LOADADDR(.itcm); + _ld_itcm_size = SIZEOF(.itcm); + + .dtcm_data : + { + . = ALIGN(4); + + *(.dtcm_data.*) + + . = ALIGN(4); + } > RAM AT> FLASH_FIRMWARE + _ld_dtcm_data_destination = ADDR(.dtcm_data); + _ld_dtcm_data_flash_copy = LOADADDR(.dtcm_data); + _ld_dtcm_data_size = SIZEOF(.dtcm_data); + + .dtcm_bss : + { + . = ALIGN(4); + + *(.dtcm_bss.*) + + . = ALIGN(4); + } > RAM AT> RAM + _ld_dtcm_bss_start = ADDR(.dtcm_bss); + _ld_dtcm_bss_size = SIZEOF(.dtcm_bss); + .uninitialized_data (COPY): { . = ALIGN(4); *(.uninitialized_data*) diff --git a/ports/raspberrypi/mpconfigport.mk b/ports/raspberrypi/mpconfigport.mk index bcfe3efd1e..cece99afa9 100644 --- a/ports/raspberrypi/mpconfigport.mk +++ b/ports/raspberrypi/mpconfigport.mk @@ -17,19 +17,16 @@ endif # All raspberrypi ports have longints. LONGINT_IMPL = MPZ -ifndef CIRCUITPY_RP2PIO -CIRCUITPY_RP2PIO = 1 -else -CIRCUITPY_NEOPIXEL_WRITE = 0 -endif - -CIRCUITPY_FRAMEBUFFERIO = 1 -CIRCUITPY_FULL_BUILD = 1 +CIRCUITPY_RP2PIO ?= 1 +CIRCUITPY_NEOPIXEL_WRITE ?= $(CIRCUITPY_RP2PIO) +CIRCUITPY_FRAMEBUFFERIO ?= 1 +CIRCUITPY_FULL_BUILD ?= 1 CIRCUITPY_AUDIOMP3 ?= 1 -CIRCUITPY_BITOPS = 1 -CIRCUITPY_PWMIO = 1 -CIRCUITPY_RGBMATRIX = 1 -CIRCUITPY_ROTARYIO = 1 +CIRCUITPY_BITOPS ?= 1 +CIRCUITPY_PWMIO ?= 1 +CIRCUITPY_RGBMATRIX ?= 1 +CIRCUITPY_ROTARYIO ?= 1 +CIRCUITPY_ROTARYIO_SOFTENCODER = 1 # Things that need to be implemented. # Use PWM interally @@ -37,8 +34,8 @@ CIRCUITPY_FREQUENCYIO = 0 CIRCUITPY_I2CPERIPHERAL = 0 CIRCUITPY_NVM = 1 # Use PIO interally -CIRCUITPY_PULSEIO = 1 -CIRCUITPY_WATCHDOG = 1 +CIRCUITPY_PULSEIO ?= 1 +CIRCUITPY_WATCHDOG ?= 1 # Audio via PWM CIRCUITPY_AUDIOIO = 0 @@ -55,3 +52,5 @@ USB_SERIAL_NUMBER_LENGTH = 16 # Number of USB endpoint pairs. USB_NUM_EP = 8 + +INTERNAL_FLASH_FILESYSTEM = 1 diff --git a/ports/raspberrypi/sdk b/ports/raspberrypi/sdk index fc10a97c38..7a6660134a 160000 --- a/ports/raspberrypi/sdk +++ b/ports/raspberrypi/sdk @@ -1 +1 @@ -Subproject commit fc10a97c386f65c1a44c68684fe52a56aaf50df0 +Subproject commit 7a6660134ac6242e3223fe1c78b248caf6b2cbf4 diff --git a/ports/raspberrypi/stage2.c.jinja b/ports/raspberrypi/stage2.c.jinja new file mode 100644 index 0000000000..13de7bff9f --- /dev/null +++ b/ports/raspberrypi/stage2.c.jinja @@ -0,0 +1,196 @@ +#include "sdk/src/rp2040/hardware_structs/include/hardware/structs/ssi.h" +#include "sdk/src/rp2040/hardware_structs/include/hardware/structs/pads_qspi.h" +#include "sdk/src/rp2040/hardware_regs/include/hardware/regs/addressmap.h" +#include "sdk/src/rp2040/hardware_regs/include/hardware/regs/m0plus.h" + +// "Mode bits" are 8 special bits sent immediately after +// the address bits in a "Read Data Fast Quad I/O" command sequence. +// On W25Q080, the four LSBs are don't care, and if MSBs == 0xa, the +// next read does not require the 0xeb instruction prefix. +#define MODE_CONTINUOUS_READ 0xa0 + +// Define interface width: single/dual/quad IO +{% if quad_ok %} +#define FRAME_FORMAT SSI_CTRLR0_SPI_FRF_VALUE_QUAD +#define TRANSACTION_TYPE SSI_SPI_CTRLR0_TRANS_TYPE_VALUE_2C2A +// Note that the INST_L field is used to select what XIP data gets pushed into +// the TX FIFO: +// INST_L_0_BITS {ADDR[23:0],XIP_CMD[7:0]} Load "mode bits" into XIP_CMD +// Anything else {XIP_CMD[7:0],ADDR[23:0]} Load SPI command into XIP_CMD +#define INSTRUCTION_LENGTH SSI_SPI_CTRLR0_INST_L_VALUE_NONE +#define READ_INSTRUCTION MODE_CONTINUOUS_READ +#define ADDR_L 8 // 6 for address, 2 for mode +{% else %} +#define FRAME_FORMAT SSI_CTRLR0_SPI_FRF_VALUE_STD +#define TRANSACTION_TYPE SSI_SPI_CTRLR0_TRANS_TYPE_VALUE_1C1A +#define INSTRUCTION_LENGTH SSI_SPI_CTRLR0_INST_L_VALUE_8B +#define READ_INSTRUCTION (0x{{ '%02x' % read_command }}) +#define ADDR_L 6 // * 4 = 24 +{% endif %} + +#define CMD_READ_STATUS1 0x05 +#define CMD_READ_STATUS2 0x35 +#define CMD_WRITE_ENABLE 0x06 +#define CMD_WRITE_STATUS1 0x01 +#define CMD_WRITE_STATUS2 0x31 + +#define SREG_DATA 0x02 + +static uint32_t wait_and_read(uint8_t); +static uint8_t read_flash_sreg(uint8_t status_command); + +// This function is use by the bootloader to enable the XIP flash. It is also +// used by the SDK to reinit XIP after doing non-read flash interactions such as +// writing or erasing. This code must compile down to position independent +// assembly because we don't know where in RAM it'll be when run. + +// This must be the first defined function so that it is placed at the start of +// memory where the bootloader jumps to! +void __attribute__((section(".entry._stage2_boot"), used)) _stage2_boot(void) { + uint32_t lr; + asm ("MOV %0, LR\n" : "=r" (lr) ); + + // Set aggressive pad configuration for QSPI + // - SCLK 8mA drive, no slew limiting + // - SDx disable input Schmitt to reduce delay + + // SCLK + pads_qspi_hw->io[0] = PADS_QSPI_GPIO_QSPI_SCLK_DRIVE_VALUE_8MA << PADS_QSPI_GPIO_QSPI_SCLK_DRIVE_LSB | + PADS_QSPI_GPIO_QSPI_SCLK_SLEWFAST_BITS; + + // Data lines + uint32_t data_settings = pads_qspi_hw->io[1]; + data_settings &= ~PADS_QSPI_GPIO_QSPI_SCLK_SCHMITT_BITS; + pads_qspi_hw->io[2] = data_settings; + {% if quad_ok %} + pads_qspi_hw->io[1] = data_settings; + pads_qspi_hw->io[3] = data_settings; + pads_qspi_hw->io[4] = data_settings; + {% endif %} + + // Disable the SSI so we can change the settings. + ssi_hw->ssienr = 0; + + // QSPI config + ssi_hw->baudr = {{ clock_divider }}; // 125 mhz / clock divider + + // Set 1-cycle sample delay. If PICO_FLASH_SPI_CLKDIV == 2 then this means, + // if the flash launches data on SCLK posedge, we capture it at the time that + // the next SCLK posedge is launched. This is shortly before that posedge + // arrives at the flash, so data hold time should be ok. For + // PICO_FLASH_SPI_CLKDIV > 2 this pretty much has no effect. + ssi_hw->rx_sample_dly = 1; + + // Set a temporary mode for doing simple commands. + ssi_hw->ctrlr0 = (7 << SSI_CTRLR0_DFS_32_LSB) | // 8 bits per data frame + (SSI_CTRLR0_TMOD_VALUE_TX_AND_RX << SSI_CTRLR0_TMOD_LSB); + + ssi_hw->ssienr = 0x1; + + {% if quad_ok %} + // Program status register. + // Enable SSI and select slave 0 + {% if quad_enable_status_byte == 1 %} + uint8_t result = read_flash_sreg(CMD_READ_STATUS1); + {% elif quad_enable_status_byte == 2 %} + uint8_t result = read_flash_sreg(CMD_READ_STATUS2); + {% endif %} + if (result != {{ quad_enable_bit_mask }}) { + ssi_hw->dr0 = (uint8_t) CMD_WRITE_ENABLE; + wait_and_read(1); + + {% if split_status_write %} + {% if quad_enable_status_byte == 1 %} + ssi_hw->dr0 = (uint8_t) CMD_WRITE_STATUS1; + {% elif quad_enable_status_byte == 2 %} + ssi_hw->dr0 = (uint8_t) CMD_WRITE_STATUS2; + {% endif %} + ssi_hw->dr0 = {{ quad_enable_bit_mask }}; + wait_and_read(2); + {% else %} + ssi_hw->dr0 = (uint8_t) CMD_WRITE_STATUS1; + {% if quad_enable_status_byte == 2 %} + ssi_hw->dr0 = 0x0; + {% endif %} + ssi_hw->dr0 = {{ quad_enable_bit_mask }}; + wait_and_read({{ quad_enable_status_byte + 1 }}); + {% endif %} + // Wait for the write to complete. + while ((read_flash_sreg(CMD_READ_STATUS1) & 0x1) != 0) {} + } + {% endif %} + + // Disable SSI again so that it can be reconfigured + ssi_hw->ssienr = 0; + + // Do a single read to get us in continuous mode. + + // Final SSI ctrlr0 settings. We only change the SPI specific settings later. + ssi_hw->ctrlr0 = (FRAME_FORMAT << SSI_CTRLR0_SPI_FRF_LSB) | // Quad I/O mode + (31 << SSI_CTRLR0_DFS_32_LSB) | // 32 data bits + (SSI_CTRLR0_TMOD_VALUE_EEPROM_READ << SSI_CTRLR0_TMOD_LSB); // Send INST/ADDR, Receive Data + + ssi_hw->ctrlr1 = 0; // Single 32b read + + {% if quad_ok %} + ssi_hw->spi_ctrlr0 = (ADDR_L << SSI_SPI_CTRLR0_ADDR_L_LSB) | // Address + mode bits + // Hi-Z dummy clocks following address + mode + ({{ wait_cycles }} << SSI_SPI_CTRLR0_WAIT_CYCLES_LSB) | + // 8-bit instruction + (SSI_SPI_CTRLR0_INST_L_VALUE_8B << SSI_SPI_CTRLR0_INST_L_LSB) | + // Send Command in serial mode then address in Quad I/O mode + (SSI_SPI_CTRLR0_TRANS_TYPE_VALUE_1C2A << SSI_SPI_CTRLR0_TRANS_TYPE_LSB); + + // Re-enable the SSI + ssi_hw->ssienr = 1; + + // Do a single read to get us in continuous mode. + ssi_hw->dr0 = 0x{{ '%02x' % read_command }}; + ssi_hw->dr0 = MODE_CONTINUOUS_READ; + wait_and_read(2); + + // Disable the SSI to switch to no-command mode (because we're setup for continuous.) + ssi_hw->ssienr = 0; + {% endif %} + + // Final SPI ctrlr0 settings. + ssi_hw->spi_ctrlr0 = (READ_INSTRUCTION << SSI_SPI_CTRLR0_XIP_CMD_LSB) | // Mode bits to keep flash in continuous read mode + (ADDR_L << SSI_SPI_CTRLR0_ADDR_L_LSB) | // Total number of address + mode bits + ({{ wait_cycles }} << SSI_SPI_CTRLR0_WAIT_CYCLES_LSB) | // Hi-Z dummy clocks following address + mode + (INSTRUCTION_LENGTH << SSI_SPI_CTRLR0_INST_L_LSB) | // Do not send a command, instead send XIP_CMD as mode bits after address + (TRANSACTION_TYPE << SSI_SPI_CTRLR0_TRANS_TYPE_LSB); // Send Address in Quad I/O mode (and Command but that is zero bits long) + + // Re-enable the SSI + ssi_hw->ssienr = 1; + + // If lr is 0, then we came from the bootloader. + if (lr == 0) { + uint32_t* vector_table = (uint32_t*) (XIP_BASE + 0x100); + // Switch the vector table to immediately after the stage 2 area. + *((uint32_t *) (PPB_BASE + M0PLUS_VTOR_OFFSET)) = (uint32_t) vector_table; + // Set the top of the stack according to the vector table. + asm volatile ("MSR msp, %0" : : "r" (vector_table[0]) : ); + // The reset handler is the second entry in the vector table + asm volatile ("bx %0" : : "r" (vector_table[1]) : ); + // Doesn't return. It jumps to the reset handler instead. + } + // Otherwise we return. +} + +static uint32_t wait_and_read(uint8_t count) { + while ((ssi_hw->sr & SSI_SR_TFE_BITS) == 0) {} + while ((ssi_hw->sr & SSI_SR_BUSY_BITS) != 0) {} + uint32_t result = 0; + while (count > 0) { + result = ssi_hw->dr0; + count--; + } + return result; +} + +static uint8_t read_flash_sreg(uint8_t status_command) { + ssi_hw->dr0 = status_command; + ssi_hw->dr0 = status_command; + + return wait_and_read(2); +} diff --git a/ports/raspberrypi/supervisor/internal_flash.c b/ports/raspberrypi/supervisor/internal_flash.c index 81f26967e3..51068e184a 100644 --- a/ports/raspberrypi/supervisor/internal_flash.c +++ b/ports/raspberrypi/supervisor/internal_flash.c @@ -51,17 +51,32 @@ #define NO_CACHE 0xffffffff STATIC uint8_t _cache[SECTOR_SIZE]; STATIC uint32_t _cache_lba = NO_CACHE; +STATIC uint32_t _flash_size = 0; void supervisor_flash_init(void) { bi_decl_if_func_used(bi_block_device( BINARY_INFO_MAKE_TAG('C', 'P'), "CircuitPython", RESERVED_FLASH, - TOTAL_FLASH_SIZE - RESERVED_FLASH, + (1 * 1024 * 1024), // This is a minimum. We can't set it dynamically. NULL, BINARY_INFO_BLOCK_DEV_FLAG_READ | BINARY_INFO_BLOCK_DEV_FLAG_WRITE | BINARY_INFO_BLOCK_DEV_FLAG_PT_UNKNOWN)); + + // Read the RDID register to get the flash capacity. + uint8_t cmd[] = {0x9f, 0, 0, 0}; + uint8_t data[4]; + flash_do_cmd(cmd, data, 4); + uint8_t power_of_two = 21; + // Flash must be at least 2MB (1 << 21) because we use the first 1MB for the + // CircuitPython core. We validate the range because Adesto Tech flash chips + // don't return the correct value. So, we default to 2MB which will work for + // larger chips, it just won't use all of the space. + if (data[3] >= 21 && data[3] < 30) { + power_of_two = data[3]; + } + _flash_size = 1 << power_of_two; } uint32_t supervisor_flash_get_block_size(void) { @@ -69,7 +84,7 @@ uint32_t supervisor_flash_get_block_size(void) { } uint32_t supervisor_flash_get_block_count(void) { - return (TOTAL_FLASH_SIZE - RESERVED_FLASH) / FILESYSTEM_BLOCK_SIZE; + return (_flash_size - RESERVED_FLASH) / FILESYSTEM_BLOCK_SIZE; } void port_internal_flash_flush(void) { diff --git a/ports/raspberrypi/supervisor/port.c b/ports/raspberrypi/supervisor/port.c index cf4c05f81f..9b3e140a85 100644 --- a/ports/raspberrypi/supervisor/port.c +++ b/ports/raspberrypi/supervisor/port.c @@ -74,10 +74,42 @@ STATIC void _binary_info(void) { // TODO: Add build attribute for debug builds. Needs newer CircuitPython with CIRCUITPY_DEBUG. } +extern uint32_t _ld_dtcm_bss_start; +extern uint32_t _ld_dtcm_bss_size; +extern uint32_t _ld_dtcm_data_destination; +extern uint32_t _ld_dtcm_data_size; +extern uint32_t _ld_dtcm_data_flash_copy; +extern uint32_t _ld_itcm_destination; +extern uint32_t _ld_itcm_size; +extern uint32_t _ld_itcm_flash_copy; + safe_mode_t port_init(void) { _binary_info(); // Set brown out. + // Copy all of the "tightly coupled memory" code and data to run from RAM. + // This lets us use the 16k cache for dynamically used data and code. + // We must do this before we try and call any of its code or load the data. + for (uint32_t i = 0; i < ((size_t)&_ld_itcm_size) / 4; i++) { + (&_ld_itcm_destination)[i] = (&_ld_itcm_flash_copy)[i]; + // Now zero it out to evict the line from the XIP cache. Without this, + // it'll stay in the XIP cache anyway. + (&_ld_itcm_flash_copy)[i] = 0x0; + } + + // Copy all of the data to run from DTCM. + for (uint32_t i = 0; i < ((size_t)&_ld_dtcm_data_size) / 4; i++) { + (&_ld_dtcm_data_destination)[i] = (&_ld_dtcm_data_flash_copy)[i]; + // Now zero it out to evict the line from the XIP cache. Without this, + // it'll stay in the XIP cache anyway. + (&_ld_dtcm_data_flash_copy)[i] = 0x0; + } + + // Clear DTCM bss. + for (uint32_t i = 0; i < ((size_t)&_ld_dtcm_bss_size) / 4; i++) { + (&_ld_dtcm_bss_start)[i] = 0; + } + // Reset everything into a known state before board_init. reset_port(); diff --git a/ports/stm/boards/espruino_pico/mpconfigboard.mk b/ports/stm/boards/espruino_pico/mpconfigboard.mk index d6118adf88..9148160286 100644 --- a/ports/stm/boards/espruino_pico/mpconfigboard.mk +++ b/ports/stm/boards/espruino_pico/mpconfigboard.mk @@ -20,6 +20,8 @@ LD_FILE = boards/STM32F401xd_fs.ld # lto for this port, and if other stuff hasn't been added in the # meantime CIRCUITPY_ULAB = 0 +CIRCUITPY_AUDIOCORE = 0 +CIRCUITPY_AUDIOPWMIO = 0 CIRCUITPY_BUSDEVICE = 0 CIRCUITPY_BITMAPTOOLS = 0 CIRCUITPY_FRAMEBUFFERIO = 0 diff --git a/ports/stm/boards/espruino_wifi/mpconfigboard.mk b/ports/stm/boards/espruino_wifi/mpconfigboard.mk index 9500a5f185..a2ceb1ae38 100644 --- a/ports/stm/boards/espruino_wifi/mpconfigboard.mk +++ b/ports/stm/boards/espruino_wifi/mpconfigboard.mk @@ -11,3 +11,7 @@ MCU_PACKAGE = UFQFPN48 LD_COMMON = boards/common_default.ld LD_FILE = boards/STM32F411_fs.ld + +# Too big for the flash +CIRCUITPY_AUDIOCORE = 0 +CIRCUITPY_AUDIOPWMIO = 0 diff --git a/ports/stm/boards/meowbit_v121/board.c b/ports/stm/boards/meowbit_v121/board.c index 44d1254629..7a31c14e7e 100644 --- a/ports/stm/boards/meowbit_v121/board.c +++ b/ports/stm/boards/meowbit_v121/board.c @@ -27,15 +27,15 @@ #include "supervisor/board.h" #include "mpconfigboard.h" +#include "shared-bindings/audiopwmio/PWMAudioOut.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" #include "supervisor/spi_flash_api.h" -displayio_fourwire_obj_t board_display_obj; +audiopwmio_pwmaudioout_obj_t board_buzz_obj; #define DELAY 0x80 @@ -113,6 +113,11 @@ void board_init(void) { 60, // native_frames_per_second true, // backlight_on_high false); // SH1107_addressing + + board_buzz_obj.base.type = &audiopwmio_pwmaudioout_type; + common_hal_audiopwmio_pwmaudioout_construct(&board_buzz_obj, + &pin_PB08, NULL, 0x8000); + never_reset_pin_number(pin_PB08.port, pin_PB08.number); } bool board_requests_safe_mode(void) { diff --git a/ports/stm/boards/meowbit_v121/mpconfigboard.mk b/ports/stm/boards/meowbit_v121/mpconfigboard.mk index 45a04a3a77..dc44095a31 100644 --- a/ports/stm/boards/meowbit_v121/mpconfigboard.mk +++ b/ports/stm/boards/meowbit_v121/mpconfigboard.mk @@ -4,7 +4,7 @@ USB_PRODUCT = "Meowbit" USB_MANUFACTURER = "Kittenbot" SPI_FLASH_FILESYSTEM = 1 -EXTERNAL_FLASH_DEVICES = W25Q16JV_IQ +EXTERNAL_FLASH_DEVICES = W25Q16JVxQ # INTERNAL_FLASH_FILESYSTEM = 1 BOOTLOADER_OFFSET = 0x8010000 diff --git a/ports/stm/boards/meowbit_v121/pins.c b/ports/stm/boards/meowbit_v121/pins.c index d11341145f..fd988b5919 100644 --- a/ports/stm/boards/meowbit_v121/pins.c +++ b/ports/stm/boards/meowbit_v121/pins.c @@ -1,8 +1,11 @@ #include "shared-bindings/board/__init__.h" #include "supervisor/spi_flash_api.h" +#include "shared-bindings/audiopwmio/PWMAudioOut.h" #include "shared-module/displayio/__init__.h" +extern audiopwmio_pwmaudioout_obj_t board_buzz_obj; + STATIC const mp_rom_map_elem_t board_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_LED_RED), MP_ROM_PTR(&pin_PB04) }, { MP_ROM_QSTR(MP_QSTR_LED_GREEN), MP_ROM_PTR(&pin_PB05) }, @@ -15,7 +18,7 @@ STATIC const mp_rom_map_elem_t board_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_DISP_RST), MP_ROM_PTR(&pin_PB10) }, { MP_ROM_QSTR(MP_QSTR_DISP_BL), MP_ROM_PTR(&pin_PB03) }, - { MP_ROM_QSTR(MP_QSTR_BUZZ), MP_ROM_PTR(&pin_PB08) }, + { MP_ROM_QSTR(MP_QSTR_BUZZ), MP_ROM_PTR(&board_buzz_obj) }, { MP_ROM_QSTR(MP_QSTR_BTNA), MP_ROM_PTR(&pin_PB09) }, { MP_ROM_QSTR(MP_QSTR_BTNB), MP_ROM_PTR(&pin_PC03) }, { MP_ROM_QSTR(MP_QSTR_RIGHT), MP_ROM_PTR(&pin_PB02) }, diff --git a/ports/stm/boards/pyb_nano_v2/mpconfigboard.mk b/ports/stm/boards/pyb_nano_v2/mpconfigboard.mk index cff8eea705..5824e65a29 100644 --- a/ports/stm/boards/pyb_nano_v2/mpconfigboard.mk +++ b/ports/stm/boards/pyb_nano_v2/mpconfigboard.mk @@ -4,7 +4,7 @@ USB_PRODUCT = "PYB LR Nano V2" USB_MANUFACTURER = "MicroPython Chinese Community" SPI_FLASH_FILESYSTEM = 1 -EXTERNAL_FLASH_DEVICES = W25Q64JV_IQ +EXTERNAL_FLASH_DEVICES = W25Q64JVxQ MCU_SERIES = F4 MCU_VARIANT = STM32F411xE @@ -12,3 +12,7 @@ MCU_PACKAGE = UFQFPN48 LD_COMMON = boards/common_default.ld LD_FILE = boards/STM32F411_fs.ld + +# Too big for the flash +CIRCUITPY_AUDIOCORE = 0 +CIRCUITPY_AUDIOPWMIO = 0 diff --git a/ports/stm/boards/stm32f411ce_blackpill/mpconfigboard.mk b/ports/stm/boards/stm32f411ce_blackpill/mpconfigboard.mk index 1d533e30f3..bfb88ab0ea 100644 --- a/ports/stm/boards/stm32f411ce_blackpill/mpconfigboard.mk +++ b/ports/stm/boards/stm32f411ce_blackpill/mpconfigboard.mk @@ -15,3 +15,7 @@ MCU_PACKAGE = UFQFPN48 LD_COMMON = boards/common_default.ld LD_FILE = boards/STM32F411_fs.ld + +# Too big for the flash +CIRCUITPY_AUDIOCORE = 0 +CIRCUITPY_AUDIOPWMIO = 0 diff --git a/ports/stm/boards/stm32f411ce_blackpill_with_flash/mpconfigboard.mk b/ports/stm/boards/stm32f411ce_blackpill_with_flash/mpconfigboard.mk index f6fd423271..76acd7ed1e 100644 --- a/ports/stm/boards/stm32f411ce_blackpill_with_flash/mpconfigboard.mk +++ b/ports/stm/boards/stm32f411ce_blackpill_with_flash/mpconfigboard.mk @@ -5,7 +5,7 @@ USB_MANUFACTURER = "Unknown" SPI_FLASH_FILESYSTEM = 1 #See supervisor/shared/external_flash/devices.h for options -EXTERNAL_FLASH_DEVICES = GD25Q16C,W25Q64FV,W25Q64JV_IQ +EXTERNAL_FLASH_DEVICES = GD25Q16C,W25Q64FV,W25Q32JVxQ,W25Q64JVxQ LONGINT_IMPL = MPZ INTERNAL_FLASH_FILESYSTEM = 0 diff --git a/ports/stm/boards/stm32f411ve_discovery/mpconfigboard.mk b/ports/stm/boards/stm32f411ve_discovery/mpconfigboard.mk index 3cb7162a4a..3180fbd084 100644 --- a/ports/stm/boards/stm32f411ve_discovery/mpconfigboard.mk +++ b/ports/stm/boards/stm32f411ve_discovery/mpconfigboard.mk @@ -11,3 +11,7 @@ MCU_PACKAGE = LQFP100_f4 LD_COMMON = boards/common_default.ld LD_FILE = boards/STM32F411_fs.ld + +# Too big for the flash +CIRCUITPY_AUDIOCORE = 0 +CIRCUITPY_AUDIOPWMIO = 0 diff --git a/ports/stm/common-hal/audiopwmio/PWMAudioOut.c b/ports/stm/common-hal/audiopwmio/PWMAudioOut.c new file mode 100644 index 0000000000..e5c478e632 --- /dev/null +++ b/ports/stm/common-hal/audiopwmio/PWMAudioOut.c @@ -0,0 +1,376 @@ +/* + * This file is part of the MicroPython project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2021 Artyom Skrobov + * + * 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 + +#include "py/runtime.h" +#include "common-hal/audiopwmio/PWMAudioOut.h" +#include "shared-bindings/audiopwmio/PWMAudioOut.h" + +#include "timers.h" + +// TODO: support multiple concurrently active outputs. +STATIC TIM_HandleTypeDef tim_handle; +STATIC audiopwmio_pwmaudioout_obj_t *active_audio = NULL; + +STATIC void set_pin(uint8_t channel, GPIO_PinState state) { + HAL_GPIO_WritePin(pin_port(active_audio->pin[channel]->port), + pin_mask(active_audio->pin[channel]->number), state); +} + +STATIC void toggle_pin(uint8_t channel) { + HAL_GPIO_TogglePin(pin_port(active_audio->pin[channel]->port), + pin_mask(active_audio->pin[channel]->number)); +} + +STATIC void set_drive_mode(const mcu_pin_obj_t *pin, uint32_t mode) { + GPIO_InitTypeDef GPIO_InitStruct = {0}; + GPIO_InitStruct.Pin = pin_mask(pin->number); + GPIO_InitStruct.Mode = mode; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; + HAL_GPIO_Init(pin_port(pin->port), &GPIO_InitStruct); +} + +STATIC void start_timer(audiopwmio_pwmaudioout_obj_t *self) { + if (self->buffer_ptr[0] >= self->buffer_length[0]) { // no more pulses + return; + } + + self->period = self->buffer[0][self->buffer_ptr[0]]; + if (self->pin[1] && self->period > self->buffer[1][self->buffer_ptr[1]]) { + self->period = self->buffer[1][self->buffer_ptr[1]]; + } + + // Set the new period + tim_handle.Init.Period = self->period - 1; + HAL_TIM_Base_Init(&tim_handle); + + // TIM7 has limited HAL support, set registers manually + tim_handle.Instance->SR = 0; // Prevent the SR from triggering an interrupt + tim_handle.Instance->CR1 |= TIM_CR1_CEN; // Resume timer + tim_handle.Instance->CR1 |= TIM_CR1_URS; // Disable non-overflow interrupts + __HAL_TIM_ENABLE_IT(&tim_handle, TIM_IT_UPDATE); +} + +STATIC bool fill_buffers(audiopwmio_pwmaudioout_obj_t *self) { + // Naive PCM-to-PWM conversion + int16_t threshold = 0x666; // 0.05; TODO: make configurable + uint8_t *buffer; + uint32_t buffer_length; + audioio_get_buffer_result_t get_buffer_result; + + bool average = (self->sample_channel_count > 1) && !self->pin[1]; + bool replicate = (self->sample_channel_count == 1) && self->pin[1]; + int8_t effective_channels = average ? 1 : self->sample_channel_count; + + do { + get_buffer_result = audiosample_get_buffer(self->sample, false, 0, &buffer, &buffer_length); + if (get_buffer_result == GET_BUFFER_ERROR) { + return false; + } + + uint32_t num_samples = buffer_length / self->bytes_per_sample / self->sample_channel_count; + int16_t *buffer16 = (int16_t*)buffer; + + while (num_samples--) { + for (int8_t channel=0; channel < effective_channels; channel++) { + int16_t val; + if (self->bytes_per_sample == 1) { + val = *buffer++ << 8; + } else { + val = *buffer16++; + } + val += self->sample_offset; + + if (average) { + int16_t next; + if (self->bytes_per_sample == 1) { + next = *buffer++ << 8; + } else { + next = *buffer16++; + } + next += self->sample_offset; + val += (next - val) / 2; + } + + int8_t new_pos = (val > threshold) - (val < -threshold); + if (new_pos == -self->pos[channel]) { + if (self->len[channel] > 1) { + self->buffer[channel][self->buffer_length[channel]++] = self->len[channel]; + if (replicate) { + self->buffer[1-channel][self->buffer_length[1-channel]++] = self->len[channel]; + } + self->len[channel] = 0; + } + self->pos[channel] = new_pos; + } + self->len[channel]++; + } + } + } while (get_buffer_result == GET_BUFFER_MORE_DATA && + (!self->buffer_length[0] || (self->pin[1] && !self->buffer_length[1]))); + + if (get_buffer_result == GET_BUFFER_DONE) { + // It's the final countdown + for (int8_t channel=0; channel < effective_channels; channel++) { + self->buffer[channel][self->buffer_length[channel]++] = self->len[channel]; + if (replicate) { + self->buffer[1-channel][self->buffer_length[1-channel]++] = self->len[channel]; + } + } + + if (self->loop) { + audiosample_reset_buffer(self->sample, false, 0); + } else { + self->stopping = true; + } + } + return true; +} + +STATIC void move_to_beginning(uint16_t *buffer, uint16_t *buffer_length, uint16_t *buffer_ptr) { + if (*buffer_ptr < *buffer_length) { + memmove(buffer, buffer + *buffer_ptr, *buffer_length - *buffer_ptr); + *buffer_length -= *buffer_ptr; + } else { + *buffer_length = 0; + } + *buffer_ptr = 0; +} + +STATIC void pwmaudioout_event_handler(void) { + // Detect TIM Update event + if (__HAL_TIM_GET_FLAG(&tim_handle, TIM_FLAG_UPDATE) != RESET) + { + if (__HAL_TIM_GET_IT_SOURCE(&tim_handle, TIM_IT_UPDATE) != RESET) + { + __HAL_TIM_CLEAR_IT(&tim_handle, TIM_IT_UPDATE); + if (!active_audio || active_audio->paused) { + __HAL_TIM_DISABLE_IT(&tim_handle, TIM_IT_UPDATE); + return; + } + + bool refill = false; + + active_audio->buffer[0][active_audio->buffer_ptr[0]] -= active_audio->period; + if (!active_audio->buffer[0][active_audio->buffer_ptr[0]]) { + toggle_pin(0); + if (++(active_audio->buffer_ptr[0]) >= active_audio->buffer_length[0]) { + refill = true; + } + } + if (active_audio->pin[1]) { + active_audio->buffer[1][active_audio->buffer_ptr[1]] -= active_audio->period; + if (!active_audio->buffer[1][active_audio->buffer_ptr[1]]) { + toggle_pin(1); + if (++(active_audio->buffer_ptr[1]) >= active_audio->buffer_length[1]) { + refill = true; + } + } + } + + if (refill) { + __HAL_TIM_DISABLE_IT(&tim_handle, TIM_IT_UPDATE); + + move_to_beginning(active_audio->buffer[0], &active_audio->buffer_length[0], &active_audio->buffer_ptr[0]); + if (active_audio->pin[1]) { + move_to_beginning(active_audio->buffer[1], &active_audio->buffer_length[1], &active_audio->buffer_ptr[1]); + } + + if (active_audio->stopping || !fill_buffers(active_audio)) { + // No more audio. Turn off output and don't restart. + common_hal_audiopwmio_pwmaudioout_stop(active_audio); + return; + } + } + + // Count up to the next given value. + start_timer(active_audio); + } + } +} + +void audiopwmout_reset() { + if (active_audio) { + common_hal_audiopwmio_pwmaudioout_stop(active_audio); + } +} + +// Caller validates that pins are free. +void common_hal_audiopwmio_pwmaudioout_construct(audiopwmio_pwmaudioout_obj_t *self, + const mcu_pin_obj_t *left_channel, const mcu_pin_obj_t *right_channel, uint16_t quiescent_value) { + + // Set up the pin(s) for output + self->pin[0] = left_channel; + self->pin[1] = right_channel; + set_drive_mode(left_channel, GPIO_MODE_OUTPUT_PP); + if (right_channel) { + set_drive_mode(right_channel, GPIO_MODE_OUTPUT_PP); + } + + self->buffer[0] = NULL; + self->buffer[1] = NULL; + + self->quiescent_value = quiescent_value; +} + +bool common_hal_audiopwmio_pwmaudioout_deinited(audiopwmio_pwmaudioout_obj_t *self) { + return !self->pin[0]; +} + +STATIC void free_buffers(audiopwmio_pwmaudioout_obj_t *self) { + m_free(self->buffer[0]); + self->buffer[0] = NULL; + m_free(self->buffer[1]); + self->buffer[1] = NULL; +} + +void common_hal_audiopwmio_pwmaudioout_deinit(audiopwmio_pwmaudioout_obj_t *self) { + if (common_hal_audiopwmio_pwmaudioout_deinited(self)) { + return; + } + common_hal_audiopwmio_pwmaudioout_stop(self); + + free_buffers(self); + + self->pin[0] = 0; + self->pin[1] = 0; +} + +void common_hal_audiopwmio_pwmaudioout_play(audiopwmio_pwmaudioout_obj_t *self, mp_obj_t sample, bool loop) { + common_hal_audiopwmio_pwmaudioout_stop(self); + if (active_audio) { + mp_raise_RuntimeError(translate("Another PWMAudioOut is already active")); // TODO + } + self->sample = sample; + self->loop = loop; + + uint32_t sample_rate = audiosample_sample_rate(sample); + self->bytes_per_sample = audiosample_bits_per_sample(sample) / 8; + + uint32_t max_buffer_length; + uint8_t spacing; + bool single_buffer; + bool samples_signed; + audiosample_get_buffer_structure(sample, /* single channel */ false, + &single_buffer, &samples_signed, &max_buffer_length, &spacing); + self->sample_channel_count = audiosample_channel_count(sample); + self->sample_offset = (samples_signed ? 0x8000 : 0) - self->quiescent_value; + + free_buffers(self); + + if (max_buffer_length > UINT16_MAX) { + mp_raise_ValueError_varg(translate("Buffer length %d too big. It must be less than %d"), max_buffer_length, UINT16_MAX); + } + uint16_t buffer_length = (uint16_t)max_buffer_length / self->bytes_per_sample; + self->buffer[0] = m_malloc(buffer_length * sizeof(uint16_t), false); + self->buffer_ptr[0] = self->buffer_length[0] = 0; + if (self->pin[1]) { + self->buffer[1] = m_malloc(buffer_length * sizeof(uint16_t), false); + self->buffer_ptr[1] = self->buffer_length[1] = 0; + } + + self->pos[0] = self->pos[1] = 1; // initially on + self->len[0] = self->len[1] = 0; + + audiosample_reset_buffer(self->sample, false, 0); + self->stopping = false; + self->paused = false; + if (!fill_buffers(self)) { + mp_raise_RuntimeError(translate("Failed to buffer the sample")); + } + + // Calculate period (TODO: supersample to 1 MHz?) + TIM_TypeDef *tim_instance = stm_peripherals_find_timer(); + uint32_t source = stm_peripherals_timer_get_source_freq(tim_instance); + uint32_t prescaler = source/sample_rate; + + // Activate timer + active_audio = self; + stm_peripherals_timer_reserve(tim_instance); + stm_peripherals_timer_preinit(tim_instance, 4, pwmaudioout_event_handler); + + tim_handle.Instance = tim_instance; + tim_handle.Init.Period = 100; //immediately replaced. + tim_handle.Init.Prescaler = prescaler - 1; + tim_handle.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + tim_handle.Init.CounterMode = TIM_COUNTERMODE_UP; + tim_handle.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; + + HAL_TIM_Base_Init(&tim_handle); + tim_handle.Instance->SR = 0; + + // Alternate on and off, starting with on. + set_pin(0, GPIO_PIN_SET); + if (self->pin[1]) { + set_pin(1, GPIO_PIN_SET); + } + + // Count up to the next given value. + start_timer(self); +} + +void common_hal_audiopwmio_pwmaudioout_stop(audiopwmio_pwmaudioout_obj_t *self) { + if (active_audio != self) { + return; + } + + // Turn off timer counter. + tim_handle.Instance->CR1 &= ~TIM_CR1_CEN; + stm_peripherals_timer_free(tim_handle.Instance); + + active_audio = NULL; + self->stopping = false; + self->paused = false; + + // Make sure pins are left low. + set_pin(0, GPIO_PIN_RESET); + if (self->pin[1]) { + set_pin(1, GPIO_PIN_RESET); + } + + // Cannot free buffers here because we may be called from + // the interrupt handler, and the heap is not reentrant. +} + +bool common_hal_audiopwmio_pwmaudioout_get_playing(audiopwmio_pwmaudioout_obj_t *self) { + return active_audio == self; +} + +void common_hal_audiopwmio_pwmaudioout_pause(audiopwmio_pwmaudioout_obj_t *self) { + self->paused = true; +} + +void common_hal_audiopwmio_pwmaudioout_resume(audiopwmio_pwmaudioout_obj_t *self) { + self->paused = false; + if (active_audio == self) { + start_timer(self); + } +} + +bool common_hal_audiopwmio_pwmaudioout_get_paused(audiopwmio_pwmaudioout_obj_t *self) { + return self->paused; +} diff --git a/ports/stm/common-hal/audiopwmio/PWMAudioOut.h b/ports/stm/common-hal/audiopwmio/PWMAudioOut.h new file mode 100644 index 0000000000..bff0bfc89f --- /dev/null +++ b/ports/stm/common-hal/audiopwmio/PWMAudioOut.h @@ -0,0 +1,58 @@ +/* + * This file is part of the MicroPython project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2021 Artyom Skrobov + * + * 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. + */ + +#ifndef MICROPY_INCLUDED_STM_COMMON_HAL_AUDIOPWM_AUDIOOUT_H +#define MICROPY_INCLUDED_STM_COMMON_HAL_AUDIOPWM_AUDIOOUT_H + +#include "common-hal/microcontroller/Pin.h" + +typedef struct { + mp_obj_base_t base; + const mcu_pin_obj_t *pin[2]; + uint16_t quiescent_value; + + uint16_t *buffer[2]; + uint16_t buffer_length[2]; + uint16_t buffer_ptr[2]; + + mp_obj_t *sample; + int16_t sample_offset; + uint8_t sample_channel_count; + uint8_t bytes_per_sample; + + // PCM-to-PWM conversion state + int8_t pos[2]; // -1 for off, +1 for on + uint16_t len[2]; + + uint16_t period; + bool stopping; + bool paused; + bool loop; +} audiopwmio_pwmaudioout_obj_t; + +void audiopwmout_reset(void); + +#endif diff --git a/ports/stm/common-hal/audiopwmio/__init__.c b/ports/stm/common-hal/audiopwmio/__init__.c new file mode 100644 index 0000000000..e69de29bb2 diff --git a/ports/stm/mpconfigport.mk b/ports/stm/mpconfigport.mk index 4d76d03c92..a3216f2678 100644 --- a/ports/stm/mpconfigport.mk +++ b/ports/stm/mpconfigport.mk @@ -12,9 +12,13 @@ ifeq ($(MCU_VARIANT),$(filter $(MCU_VARIANT),STM32F405xx STM32F407xx)) endif ifeq ($(MCU_SERIES),F4) + # Audio via PWM + CIRCUITPY_AUDIOIO = 0 + CIRCUITPY_AUDIOCORE ?= 1 + CIRCUITPY_AUDIOPWMIO ?= 1 + # Not yet implemented common-hal modules: CIRCUITPY_AUDIOBUSIO ?= 0 - CIRCUITPY_AUDIOIO ?= 0 CIRCUITPY_COUNTIO ?= 0 CIRCUITPY_FREQUENCYIO ?= 0 CIRCUITPY_I2CPERIPHERAL ?= 0 diff --git a/ports/stm/supervisor/port.c b/ports/stm/supervisor/port.c index 4a7583eb21..666e2c50db 100644 --- a/ports/stm/supervisor/port.c +++ b/ports/stm/supervisor/port.c @@ -32,6 +32,9 @@ #include "common-hal/microcontroller/Pin.h" +#ifdef CIRCUITPY_AUDIOPWMIO +#include "common-hal/audiopwmio/PWMAudioOut.h" +#endif #if CIRCUITPY_BUSIO #include "common-hal/busio/I2C.h" #include "common-hal/busio/SPI.h" @@ -229,6 +232,9 @@ void SysTick_Handler(void) { void reset_port(void) { reset_all_pins(); + #if CIRCUITPY_AUDIOPWMIO + audiopwmout_reset(); + #endif #if CIRCUITPY_BUSIO i2c_reset(); spi_reset(); diff --git a/ports/unix/mpconfigport.h b/ports/unix/mpconfigport.h index 464c4ce119..bae0245d05 100644 --- a/ports/unix/mpconfigport.h +++ b/ports/unix/mpconfigport.h @@ -325,3 +325,4 @@ void mp_unix_mark_exec(void); #define MICROPY_PY_BUILTINS_HELP (1) #define MICROPY_PY_BUILTINS_HELP_MODULES (1) +#define CIRCUITPY_RE_DEBUG (1) diff --git a/py/circuitpy_defns.mk b/py/circuitpy_defns.mk index bb177c5d07..0eedfe5249 100644 --- a/py/circuitpy_defns.mk +++ b/py/circuitpy_defns.mk @@ -518,6 +518,7 @@ SRC_SHARED_MODULE_ALL = \ random/__init__.c \ rgbmatrix/RGBMatrix.c \ rgbmatrix/__init__.c \ + rotaryio/IncrementalEncoder.c \ sharpdisplay/SharpMemoryFramebuffer.c \ sharpdisplay/__init__.c \ socket/__init__.c \ diff --git a/py/circuitpy_mpconfig.mk b/py/circuitpy_mpconfig.mk index fea1f937ec..51b590dcf3 100644 --- a/py/circuitpy_mpconfig.mk +++ b/py/circuitpy_mpconfig.mk @@ -242,6 +242,9 @@ CFLAGS += -DCIRCUITPY_RANDOM=$(CIRCUITPY_RANDOM) CIRCUITPY_RE ?= $(CIRCUITPY_FULL_BUILD) CFLAGS += -DCIRCUITPY_RE=$(CIRCUITPY_RE) +CIRCUITPY_RE_DEBUG ?= 0 +CFLAGS += -DCIRCUITPY_RE_DEBUG=$(CIRCUITPY_RE_DEBUG) + CIRCUITPY_REPL_BLE ?= 0 CFLAGS += -DCIRCUITPY_REPL_BLE=$(CIRCUITPY_REPL_BLE) @@ -268,6 +271,9 @@ CFLAGS += -DCIRCUITPY_RGBMATRIX=$(CIRCUITPY_RGBMATRIX) CIRCUITPY_ROTARYIO ?= 1 CFLAGS += -DCIRCUITPY_ROTARYIO=$(CIRCUITPY_ROTARYIO) +CIRCUITPY_ROTARYIO_SOFTENCODER ?= 0 +CFLAGS += -DCIRCUITPY_ROTARYIO_SOFTENCODER=$(CIRCUITPY_ROTARYIO_SOFTENCODER) + CIRCUITPY_RTC ?= 1 CFLAGS += -DCIRCUITPY_RTC=$(CIRCUITPY_RTC) diff --git a/py/compile.c b/py/compile.c index 4a9fdc7db8..7971690d6d 100644 --- a/py/compile.c +++ b/py/compile.c @@ -768,7 +768,7 @@ STATIC bool compile_built_in_decorator(compiler_t *comp, int name_len, mp_parse_ } if (name_len != 2) { - compile_syntax_error(comp, name_nodes[0], translate("invalid micropython decorator")); + compile_syntax_error(comp, name_nodes[0], translate("invalid decorator")); return true; } diff --git a/py/makeqstrdata.py b/py/makeqstrdata.py index 0ad749005c..2de42b14d5 100644 --- a/py/makeqstrdata.py +++ b/py/makeqstrdata.py @@ -456,27 +456,24 @@ def parse_input_headers(infiles): return qcfgs, qstrs, i18ns +def escape_bytes(qstr): + if all(32 <= ord(c) <= 126 and c != "\\" and c != '"' for c in qstr): + # qstr is all printable ASCII so render it as-is (for easier debugging) + return qstr + else: + # qstr contains non-printable codes so render entire thing as hex pairs + qbytes = bytes_cons(qstr, "utf8") + return "".join(("\\x%02x" % b) for b in qbytes) def make_bytes(cfg_bytes_len, cfg_bytes_hash, qstr): qbytes = bytes_cons(qstr, "utf8") qlen = len(qbytes) qhash = compute_hash(qbytes, cfg_bytes_hash) - if all(32 <= ord(c) <= 126 and c != "\\" and c != '"' for c in qstr): - # qstr is all printable ASCII so render it as-is (for easier debugging) - qdata = qstr - else: - # qstr contains non-printable codes so render entire thing as hex pairs - qdata = "".join(("\\x%02x" % b) for b in qbytes) if qlen >= (1 << (8 * cfg_bytes_len)): print("qstr is too long:", qstr) assert False - qlen_str = ("\\x%02x" * cfg_bytes_len) % tuple( - ((qlen >> (8 * i)) & 0xFF) for i in range(cfg_bytes_len) - ) - qhash_str = ("\\x%02x" * cfg_bytes_hash) % tuple( - ((qhash >> (8 * i)) & 0xFF) for i in range(cfg_bytes_hash) - ) - return '(const byte*)"%s%s" "%s"' % (qhash_str, qlen_str, qdata) + qdata = escape_bytes(qstr) + return '%d, %d, "%s"' % (qhash, qlen, qdata) def print_qstr_data(encoding_table, qcfgs, qstrs, i18ns): @@ -489,10 +486,7 @@ def print_qstr_data(encoding_table, qcfgs, qstrs, i18ns): print("") # add NULL qstr with no hash or data - print( - 'QDEF(MP_QSTR_NULL, (const byte*)"%s%s" "")' - % ("\\x00" * cfg_bytes_hash, "\\x00" * cfg_bytes_len) - ) + print('QDEF(MP_QSTR_NULL, 0, 0, "")') total_qstr_size = 0 total_qstr_compressed_size = 0 diff --git a/py/mpstate.h b/py/mpstate.h index 139f23cb4f..1f6a2d00a1 100644 --- a/py/mpstate.h +++ b/py/mpstate.h @@ -197,7 +197,7 @@ typedef struct _mp_state_vm_t { // pointer and sizes to store interned string data // (qstr_last_chunk can be root pointer but is also stored in qstr pool) - byte *qstr_last_chunk; + char *qstr_last_chunk; size_t qstr_last_alloc; size_t qstr_last_used; diff --git a/py/py.mk b/py/py.mk index 3f94aa67a0..ae12e1976d 100644 --- a/py/py.mk +++ b/py/py.mk @@ -106,9 +106,9 @@ $(BUILD)/extmod/modbtree.o: CFLAGS += $(BTREE_DEFS) endif ifeq ($(CIRCUITPY_ULAB),1) -SRC_MOD += $(patsubst $(TOP)/%,%,$(wildcard $(TOP)/extmod/ulab/code/*.c)) -SRC_MOD += $(patsubst $(TOP)/%,%,$(wildcard $(TOP)/extmod/ulab/code/*/*.c)) -CFLAGS_MOD += -DCIRCUITPY_ULAB=1 -DMODULE_ULAB_ENABLED=1 +ULAB_SRCS := $(shell find $(TOP)/extmod/ulab/code -type f -name "*.c") +SRC_MOD += $(patsubst $(TOP)/%,%,$(ULAB_SRCS)) +CFLAGS_MOD += -DCIRCUITPY_ULAB=1 -DMODULE_ULAB_ENABLED=1 -iquote $(TOP)/extmod/ulab/code $(BUILD)/extmod/ulab/code/%.o: CFLAGS += -Wno-missing-declarations -Wno-missing-prototypes -Wno-unused-parameter -Wno-float-equal -Wno-sign-compare -Wno-cast-align -Wno-shadow -DCIRCUITPY endif diff --git a/py/qstr.c b/py/qstr.c index 2ae65379c7..af5ea58686 100644 --- a/py/qstr.c +++ b/py/qstr.c @@ -37,7 +37,6 @@ // NOTE: we are using linear arrays to store and search for qstr's (unique strings, interned strings) // ultimately we will replace this with a static hash table of some kind -// also probably need to include the length in the string data, to allow null bytes in the string #if MICROPY_DEBUG_VERBOSE // print debugging info #define DEBUG_printf DEBUG_printf @@ -46,34 +45,9 @@ #endif // A qstr is an index into the qstr pool. -// The data for a qstr contains (hash, length, data): -// - hash (configurable number of bytes) -// - length (configurable number of bytes) -// - data ("length" number of bytes) -// - \0 terminated (so they can be printed using printf) +// The data for a qstr is \0 terminated (so they can be printed using printf) -#if MICROPY_QSTR_BYTES_IN_HASH == 1 - #define Q_HASH_MASK (0xff) - #define Q_GET_HASH(q) ((mp_uint_t)(q)[0]) - #define Q_SET_HASH(q, hash) do { (q)[0] = (hash); } while (0) -#elif MICROPY_QSTR_BYTES_IN_HASH == 2 - #define Q_HASH_MASK (0xffff) - #define Q_GET_HASH(q) ((mp_uint_t)(q)[0] | ((mp_uint_t)(q)[1] << 8)) - #define Q_SET_HASH(q, hash) do { (q)[0] = (hash); (q)[1] = (hash) >> 8; } while (0) -#else - #error unimplemented qstr hash decoding -#endif -#define Q_GET_ALLOC(q) (MICROPY_QSTR_BYTES_IN_HASH + MICROPY_QSTR_BYTES_IN_LEN + Q_GET_LENGTH(q) + 1) -#define Q_GET_DATA(q) ((q) + MICROPY_QSTR_BYTES_IN_HASH + MICROPY_QSTR_BYTES_IN_LEN) -#if MICROPY_QSTR_BYTES_IN_LEN == 1 - #define Q_GET_LENGTH(q) ((q)[MICROPY_QSTR_BYTES_IN_HASH]) - #define Q_SET_LENGTH(q, len) do { (q)[MICROPY_QSTR_BYTES_IN_HASH] = (len); } while (0) -#elif MICROPY_QSTR_BYTES_IN_LEN == 2 - #define Q_GET_LENGTH(q) ((q)[MICROPY_QSTR_BYTES_IN_HASH] | ((q)[MICROPY_QSTR_BYTES_IN_HASH + 1] << 8)) - #define Q_SET_LENGTH(q, len) do { (q)[MICROPY_QSTR_BYTES_IN_HASH] = (len); (q)[MICROPY_QSTR_BYTES_IN_HASH + 1] = (len) >> 8; } while (0) -#else - #error unimplemented qstr length decoding -#endif +#define Q_HASH_MASK ((1 << (8 * MICROPY_QSTR_BYTES_IN_HASH)) - 1) #if MICROPY_PY_THREAD && !MICROPY_PY_THREAD_GIL #define QSTR_ENTER() mp_thread_mutex_lock(&MP_STATE_VM(qstr_mutex), 1) @@ -98,14 +72,25 @@ mp_uint_t qstr_compute_hash(const byte *data, size_t len) { return hash; } +const qstr_attr_t mp_qstr_const_attr[] = { + #ifndef NO_QSTR +#define QDEF(id, hash, len, str) { hash, len }, +#define TRANSLATION(id, length, compressed ...) + #include "genhdr/qstrdefs.generated.h" +#undef TRANSLATION +#undef QDEF + #endif +}; + const qstr_pool_t mp_qstr_const_pool = { NULL, // no previous pool 0, // no previous pool 10, // set so that the first dynamically allocated pool is twice this size; must be <= the len (just below) MP_QSTRnumber_of, // corresponds to number of strings in array just below + (qstr_attr_t *)mp_qstr_const_attr, { #ifndef NO_QSTR -#define QDEF(id, str) str, +#define QDEF(id, hash, len, str) str, #define TRANSLATION(id, length, compressed ...) #include "genhdr/qstrdefs.generated.h" #undef TRANSLATION @@ -130,20 +115,22 @@ void qstr_init(void) { #endif } -STATIC const byte *find_qstr(qstr q) { +STATIC const char *find_qstr(qstr q, qstr_attr_t *attr) { // search pool for this qstr // total_prev_len==0 in the final pool, so the loop will always terminate qstr_pool_t *pool = MP_STATE_VM(last_pool); while (q < pool->total_prev_len) { pool = pool->prev; } - assert(q - pool->total_prev_len < pool->len); - return pool->qstrs[q - pool->total_prev_len]; + q -= pool->total_prev_len; + assert(q < pool->len); + *attr = pool->attrs[q]; + return pool->qstrs[q]; } // qstr_mutex must be taken while in this function -STATIC qstr qstr_add(const byte *q_ptr) { - DEBUG_printf("QSTR: add hash=%d len=%d data=%.*s\n", Q_GET_HASH(q_ptr), Q_GET_LENGTH(q_ptr), Q_GET_LENGTH(q_ptr), Q_GET_DATA(q_ptr)); +STATIC qstr qstr_add(mp_uint_t hash, mp_uint_t len, const char *q_ptr) { + DEBUG_printf("QSTR: add hash=%d len=%d data=%.*s\n", hash, len, len, q_ptr); // make sure we have room in the pool for a new qstr if (MP_STATE_VM(last_pool)->len >= MP_STATE_VM(last_pool)->alloc) { @@ -151,11 +138,14 @@ STATIC qstr qstr_add(const byte *q_ptr) { if (new_pool_length > MICROPY_QSTR_POOL_MAX_ENTRIES) { new_pool_length = MICROPY_QSTR_POOL_MAX_ENTRIES; } - qstr_pool_t *pool = m_new_ll_obj_var_maybe(qstr_pool_t, const char *, new_pool_length); - if (pool == NULL) { + mp_uint_t pool_size = sizeof(qstr_pool_t) + sizeof(const char *) * new_pool_length; + void *chunk = m_malloc_maybe(pool_size + sizeof(qstr_attr_t) * new_pool_length, true); + if (chunk == NULL) { QSTR_EXIT(); m_malloc_fail(new_pool_length); } + qstr_pool_t *pool = (qstr_pool_t *)chunk; + pool->attrs = (qstr_attr_t *)(void *)((char *)chunk + pool_size); pool->prev = MP_STATE_VM(last_pool); pool->total_prev_len = MP_STATE_VM(last_pool)->total_prev_len + MP_STATE_VM(last_pool)->len; pool->alloc = new_pool_length; @@ -165,10 +155,14 @@ STATIC qstr qstr_add(const byte *q_ptr) { } // add the new qstr - MP_STATE_VM(last_pool)->qstrs[MP_STATE_VM(last_pool)->len++] = q_ptr; + mp_uint_t at = MP_STATE_VM(last_pool)->len; + MP_STATE_VM(last_pool)->attrs[at].hash = hash; + MP_STATE_VM(last_pool)->attrs[at].len = len; + MP_STATE_VM(last_pool)->qstrs[at] = q_ptr; + MP_STATE_VM(last_pool)->len++; // return id for the newly-added qstr - return MP_STATE_VM(last_pool)->total_prev_len + MP_STATE_VM(last_pool)->len - 1; + return MP_STATE_VM(last_pool)->total_prev_len + at; } qstr qstr_find_strn(const char *str, size_t str_len) { @@ -177,9 +171,10 @@ qstr qstr_find_strn(const char *str, size_t str_len) { // search pools for the data for (qstr_pool_t *pool = MP_STATE_VM(last_pool); pool != NULL; pool = pool->prev) { - for (const byte **q = pool->qstrs, **q_top = pool->qstrs + pool->len; q < q_top; q++) { - if (Q_GET_HASH(*q) == str_hash && Q_GET_LENGTH(*q) == str_len && memcmp(Q_GET_DATA(*q), str, str_len) == 0) { - return pool->total_prev_len + (q - pool->qstrs); + qstr_attr_t *attrs = pool->attrs; + for (mp_uint_t at = 0, top = pool->len; at < top; at++) { + if (attrs[at].hash == str_hash && attrs[at].len == str_len && memcmp(pool->qstrs[at], str, str_len) == 0) { + return pool->total_prev_len + at; } } } @@ -200,14 +195,14 @@ qstr qstr_from_strn(const char *str, size_t len) { // qstr does not exist in interned pool so need to add it // compute number of bytes needed to intern this string - size_t n_bytes = MICROPY_QSTR_BYTES_IN_HASH + MICROPY_QSTR_BYTES_IN_LEN + len + 1; + size_t n_bytes = len + 1; if (MP_STATE_VM(qstr_last_chunk) != NULL && MP_STATE_VM(qstr_last_used) + n_bytes > MP_STATE_VM(qstr_last_alloc)) { // not enough room at end of previously interned string so try to grow - byte *new_p = m_renew_maybe(byte, MP_STATE_VM(qstr_last_chunk), MP_STATE_VM(qstr_last_alloc), MP_STATE_VM(qstr_last_alloc) + n_bytes, false); + char *new_p = m_renew_maybe(char, MP_STATE_VM(qstr_last_chunk), MP_STATE_VM(qstr_last_alloc), MP_STATE_VM(qstr_last_alloc) + n_bytes, false); if (new_p == NULL) { // could not grow existing memory; shrink it to fit previous - (void)m_renew_maybe(byte, MP_STATE_VM(qstr_last_chunk), MP_STATE_VM(qstr_last_alloc), MP_STATE_VM(qstr_last_used), false); + (void)m_renew_maybe(char, MP_STATE_VM(qstr_last_chunk), MP_STATE_VM(qstr_last_alloc), MP_STATE_VM(qstr_last_used), false); MP_STATE_VM(qstr_last_chunk) = NULL; } else { // could grow existing memory @@ -221,10 +216,10 @@ qstr qstr_from_strn(const char *str, size_t len) { if (al < MICROPY_ALLOC_QSTR_CHUNK_INIT) { al = MICROPY_ALLOC_QSTR_CHUNK_INIT; } - MP_STATE_VM(qstr_last_chunk) = m_new_ll_maybe(byte, al); + MP_STATE_VM(qstr_last_chunk) = m_new_ll_maybe(char, al); if (MP_STATE_VM(qstr_last_chunk) == NULL) { // failed to allocate a large chunk so try with exact size - MP_STATE_VM(qstr_last_chunk) = m_new_ll_maybe(byte, n_bytes); + MP_STATE_VM(qstr_last_chunk) = m_new_ll_maybe(char, n_bytes); if (MP_STATE_VM(qstr_last_chunk) == NULL) { QSTR_EXIT(); m_malloc_fail(n_bytes); @@ -236,39 +231,41 @@ qstr qstr_from_strn(const char *str, size_t len) { } // allocate memory from the chunk for this new interned string's data - byte *q_ptr = MP_STATE_VM(qstr_last_chunk) + MP_STATE_VM(qstr_last_used); + char *q_ptr = MP_STATE_VM(qstr_last_chunk) + MP_STATE_VM(qstr_last_used); MP_STATE_VM(qstr_last_used) += n_bytes; // store the interned strings' data mp_uint_t hash = qstr_compute_hash((const byte *)str, len); - Q_SET_HASH(q_ptr, hash); - Q_SET_LENGTH(q_ptr, len); - memcpy(q_ptr + MICROPY_QSTR_BYTES_IN_HASH + MICROPY_QSTR_BYTES_IN_LEN, str, len); - q_ptr[MICROPY_QSTR_BYTES_IN_HASH + MICROPY_QSTR_BYTES_IN_LEN + len] = '\0'; - q = qstr_add(q_ptr); + memcpy(q_ptr, str, len); + q_ptr[len] = '\0'; + q = qstr_add(hash, len, q_ptr); } QSTR_EXIT(); return q; } mp_uint_t PLACE_IN_ITCM(qstr_hash)(qstr q) { - return Q_GET_HASH(find_qstr(q)); + qstr_attr_t attr; + find_qstr(q, &attr); + return attr.hash; } size_t qstr_len(qstr q) { - const byte *qd = find_qstr(q); - return Q_GET_LENGTH(qd); + qstr_attr_t attr; + find_qstr(q, &attr); + return attr.len; } const char *qstr_str(qstr q) { - const byte *qd = find_qstr(q); - return (const char *)Q_GET_DATA(qd); + qstr_attr_t attr; + return find_qstr(q, &attr); } const byte *qstr_data(qstr q, size_t *len) { - const byte *qd = find_qstr(q); - *len = Q_GET_LENGTH(qd); - return Q_GET_DATA(qd); + qstr_attr_t attr; + const char *qd = find_qstr(q, &attr); + *len = attr.len; + return (byte *)qd; } void qstr_pool_info(size_t *n_pool, size_t *n_qstr, size_t *n_str_data_bytes, size_t *n_total_bytes) { @@ -280,13 +277,14 @@ void qstr_pool_info(size_t *n_pool, size_t *n_qstr, size_t *n_str_data_bytes, si for (qstr_pool_t *pool = MP_STATE_VM(last_pool); pool != NULL && pool != &CONST_POOL; pool = pool->prev) { *n_pool += 1; *n_qstr += pool->len; - for (const byte **q = pool->qstrs, **q_top = pool->qstrs + pool->len; q < q_top; q++) { - *n_str_data_bytes += Q_GET_ALLOC(*q); + for (const qstr_attr_t *q = pool->attrs, *q_top = pool->attrs + pool->len; q < q_top; q++) { + *n_str_data_bytes += sizeof(*q) + q->len + 1; } #if MICROPY_ENABLE_GC - *n_total_bytes += gc_nbytes(pool); // this counts actual bytes used in heap + // this counts actual bytes used in heap + *n_total_bytes += gc_nbytes(pool) - sizeof(qstr_attr_t) * pool->alloc; #else - *n_total_bytes += sizeof(qstr_pool_t) + sizeof(qstr) * pool->alloc; + *n_total_bytes += sizeof(qstr_pool_t) + sizeof(const char *) * pool->alloc; #endif } *n_total_bytes += *n_str_data_bytes; @@ -297,8 +295,8 @@ void qstr_pool_info(size_t *n_pool, size_t *n_qstr, size_t *n_str_data_bytes, si void qstr_dump_data(void) { QSTR_ENTER(); for (qstr_pool_t *pool = MP_STATE_VM(last_pool); pool != NULL && pool != &CONST_POOL; pool = pool->prev) { - for (const byte **q = pool->qstrs, **q_top = pool->qstrs + pool->len; q < q_top; q++) { - mp_printf(&mp_plat_print, "Q(%s)\n", Q_GET_DATA(*q)); + for (const char **q = pool->qstrs, **q_top = pool->qstrs + pool->len; q < q_top; q++) { + mp_printf(&mp_plat_print, "Q(%s)\n", *q); } } QSTR_EXIT(); diff --git a/py/qstr.h b/py/qstr.h index c86e74324c..288bf5dbac 100644 --- a/py/qstr.h +++ b/py/qstr.h @@ -47,12 +47,30 @@ enum { typedef size_t qstr; +typedef struct _qstr_attr_t { + #if MICROPY_QSTR_BYTES_IN_HASH == 1 + uint8_t hash; + #elif MICROPY_QSTR_BYTES_IN_HASH == 2 + uint16_t hash; + #else + #error unimplemented qstr hash decoding + #endif + #if MICROPY_QSTR_BYTES_IN_LEN == 1 + uint8_t len; + #elif MICROPY_QSTR_BYTES_IN_LEN == 2 + uint16_t len; + #else + #error unimplemented qstr length decoding + #endif +} qstr_attr_t; + typedef struct _qstr_pool_t { struct _qstr_pool_t *prev; size_t total_prev_len; size_t alloc; size_t len; - const byte *qstrs[]; + qstr_attr_t *attrs; + const char *qstrs[]; } qstr_pool_t; #define QSTR_FROM_STR_STATIC(s) (qstr_from_strn((s), strlen(s))) diff --git a/py/repl.c b/py/repl.c index 3ef1401522..ccc8dd5c6b 100644 --- a/py/repl.c +++ b/py/repl.c @@ -26,6 +26,7 @@ #include #include "py/obj.h" +#include "py/objmodule.h" #include "py/runtime.h" #include "py/builtin.h" #include "py/repl.h" @@ -143,6 +144,93 @@ bool mp_repl_continue_with_input(const char *input) { return false; } +STATIC bool test_qstr(mp_obj_t obj, qstr name) { + if (obj) { + // try object member + mp_obj_t dest[2]; + mp_load_method_protected(obj, name, dest, true); + return dest[0] != MP_OBJ_NULL; + } else { + // try builtin module + return mp_map_lookup((mp_map_t *)&mp_builtin_module_map, + MP_OBJ_NEW_QSTR(name), MP_MAP_LOOKUP); + } +} + +STATIC const char *find_completions(const char *s_start, size_t s_len, + mp_obj_t obj, size_t *match_len, qstr *q_first, qstr *q_last) { + + const char *match_str = NULL; + *match_len = 0; + *q_first = *q_last = 0; + size_t nqstr = QSTR_TOTAL(); + for (qstr q = MP_QSTR_ + 1; q < nqstr; ++q) { + size_t d_len; + const char *d_str = (const char *)qstr_data(q, &d_len); + if (s_len <= d_len && strncmp(s_start, d_str, s_len) == 0) { + if (test_qstr(obj, q)) { + // special case; filter out words that begin with underscore + // unless there's already a partial match + if (s_len == 0 && d_str[0] == '_') { + continue; + } + if (match_str == NULL) { + match_str = d_str; + *match_len = d_len; + } else { + // search for longest common prefix of match_str and d_str + // (assumes these strings are null-terminated) + for (size_t j = s_len; j <= *match_len && j <= d_len; ++j) { + if (match_str[j] != d_str[j]) { + *match_len = j; + break; + } + } + } + if (*q_first == 0) { + *q_first = q; + } + *q_last = q; + } + } + } + return match_str; +} + +STATIC void print_completions(const mp_print_t *print, + const char *s_start, size_t s_len, + mp_obj_t obj, qstr q_first, qstr q_last) { + + #define WORD_SLOT_LEN (16) + #define MAX_LINE_LEN (4 * WORD_SLOT_LEN) + + int line_len = MAX_LINE_LEN; // force a newline for first word + for (qstr q = q_first; q <= q_last; ++q) { + size_t d_len; + const char *d_str = (const char *)qstr_data(q, &d_len); + if (s_len <= d_len && strncmp(s_start, d_str, s_len) == 0) { + if (test_qstr(obj, q)) { + int gap = (line_len + WORD_SLOT_LEN - 1) / WORD_SLOT_LEN * WORD_SLOT_LEN - line_len; + if (gap < 2) { + gap += WORD_SLOT_LEN; + } + if (line_len + gap + d_len <= MAX_LINE_LEN) { + // TODO optimise printing of gap? + for (int j = 0; j < gap; ++j) { + mp_print_str(print, " "); + } + mp_print_str(print, d_str); + line_len += gap + d_len; + } else { + mp_printf(print, "\n%s", d_str); + line_len = d_len; + } + } + } + } + mp_print_str(print, "\n"); +} + size_t mp_repl_autocomplete(const char *str, size_t len, const mp_print_t *print, const char **compl_str) { // scan backwards to find start of "a.b.c" chain const char *org_str = str; @@ -155,137 +243,83 @@ size_t mp_repl_autocomplete(const char *str, size_t len, const mp_print_t *print } } - size_t nqstr = QSTR_TOTAL(); - // begin search in outer global dict which is accessed from __main__ mp_obj_t obj = MP_OBJ_FROM_PTR(&mp_module___main__); mp_obj_t dest[2]; + const char *s_start; + size_t s_len; + for (;;) { // get next word in string to complete - const char *s_start = str; + s_start = str; while (str < top && *str != '.') { ++str; } - size_t s_len = str - s_start; + s_len = str - s_start; - if (str < top) { - // a complete word, lookup in current object - qstr q = qstr_find_strn(s_start, s_len); - if (q == MP_QSTR_NULL) { - // lookup will fail - return 0; - } - mp_load_method_protected(obj, q, dest, true); - obj = dest[0]; // attribute, method, or MP_OBJ_NULL if nothing found - - if (obj == MP_OBJ_NULL) { - // lookup failed - return 0; - } - - // skip '.' to move to next word - ++str; - - } else { + if (str == top) { // end of string, do completion on this partial name + break; + } - // look for matches - const char *match_str = NULL; - size_t match_len = 0; - qstr q_first = 0, q_last = 0; - for (qstr q = MP_QSTR_ + 1; q < nqstr; ++q) { - size_t d_len; - const char *d_str = (const char *)qstr_data(q, &d_len); - if (s_len <= d_len && strncmp(s_start, d_str, s_len) == 0) { - mp_load_method_protected(obj, q, dest, true); - if (dest[0] != MP_OBJ_NULL) { - // special case; filter out words that begin with underscore - // unless there's already a partial match - if (s_len == 0 && d_str[0] == '_') { - continue; - } - if (match_str == NULL) { - match_str = d_str; - match_len = d_len; - } else { - // search for longest common prefix of match_str and d_str - // (assumes these strings are null-terminated) - for (size_t j = s_len; j <= match_len && j <= d_len; ++j) { - if (match_str[j] != d_str[j]) { - match_len = j; - break; - } - } - } - if (q_first == 0) { - q_first = q; - } - q_last = q; - } - } + // a complete word, lookup in current object + qstr q = qstr_find_strn(s_start, s_len); + if (q == MP_QSTR_NULL) { + // lookup will fail + return 0; + } + mp_load_method_protected(obj, q, dest, true); + obj = dest[0]; // attribute, method, or MP_OBJ_NULL if nothing found + + if (obj == MP_OBJ_NULL) { + // lookup failed + return 0; + } + + // skip '.' to move to next word + ++str; + } + + // look for matches + size_t match_len; + qstr q_first, q_last; + const char *match_str = + find_completions(s_start, s_len, obj, &match_len, &q_first, &q_last); + + // nothing found + if (q_first == 0) { + // If there're no better alternatives, and if it's first word + // in the line, try to complete "import". + static const char import_str[] = "import "; + if (s_start == org_str && s_len > 0) { + if (memcmp(s_start, import_str, s_len) == 0) { + *compl_str = import_str + s_len; + return sizeof(import_str) - 1 - s_len; } - - // nothing found - if (q_first == 0) { - if (s_len == 0) { - *compl_str = " "; - return 4; - } - // If there're no better alternatives, and if it's first word - // in the line, try to complete "import". - if (s_start == org_str) { - static const char import_str[] = "import "; - if (memcmp(s_start, import_str, s_len) == 0) { - *compl_str = import_str + s_len; - return sizeof(import_str) - 1 - s_len; - } - } - - return 0; - } - - // 1 match found, or multiple matches with a common prefix - if (q_first == q_last || match_len > s_len) { - *compl_str = match_str + s_len; - return match_len - s_len; - } - - // multiple matches found, print them out - - #define WORD_SLOT_LEN (16) - #define MAX_LINE_LEN (4 * WORD_SLOT_LEN) - - int line_len = MAX_LINE_LEN; // force a newline for first word - for (qstr q = q_first; q <= q_last; ++q) { - size_t d_len; - const char *d_str = (const char *)qstr_data(q, &d_len); - if (s_len <= d_len && strncmp(s_start, d_str, s_len) == 0) { - mp_load_method_protected(obj, q, dest, true); - if (dest[0] != MP_OBJ_NULL) { - int gap = (line_len + WORD_SLOT_LEN - 1) / WORD_SLOT_LEN * WORD_SLOT_LEN - line_len; - if (gap < 2) { - gap += WORD_SLOT_LEN; - } - if (line_len + gap + d_len <= MAX_LINE_LEN) { - // TODO optimise printing of gap? - for (int j = 0; j < gap; ++j) { - mp_print_str(print, " "); - } - mp_print_str(print, d_str); - line_len += gap + d_len; - } else { - mp_printf(print, "\n%s", d_str); - line_len = d_len; - } - } - } - } - mp_print_str(print, "\n"); - - return (size_t)(-1); // indicate many matches + } + // after "import", suggest built-in modules + if (len >= 7 && !memcmp(org_str, import_str, 7)) { + obj = NULL; + match_str = find_completions( + s_start, s_len, obj, &match_len, &q_first, &q_last); + } + if (q_first == 0) { + *compl_str = " "; + return s_len ? 0 : 4; } } + + // 1 match found, or multiple matches with a common prefix + if (q_first == q_last || match_len > s_len) { + *compl_str = match_str + s_len; + return match_len - s_len; + } + + // multiple matches found, print them out + print_completions(print, s_start, s_len, obj, q_first, q_last); + + return (size_t)(-1); // indicate many matches } #endif // MICROPY_HELPER_REPL diff --git a/requirements-dev.txt b/requirements-dev.txt new file mode 100644 index 0000000000..1c956f0f98 --- /dev/null +++ b/requirements-dev.txt @@ -0,0 +1,33 @@ +# For string compression +huffman + +# For nvm.toml +cascadetoml +jinja2 +typer + +requests +sh +click +setuptools +cpp-coveralls + +# For docs +Sphinx<4 +sphinx-rtd-theme +recommonmark +sphinx-autoapi +sphinxcontrib-svg2pdfconverter + +# For translate check +polib + +# For pre-commit +pyyaml +astroid +isort +black +mypy + +# For uploading artifacts +awscli diff --git a/shared-bindings/_bleio/PacketBuffer.c b/shared-bindings/_bleio/PacketBuffer.c index 16ad02a461..9412dee5d7 100644 --- a/shared-bindings/_bleio/PacketBuffer.c +++ b/shared-bindings/_bleio/PacketBuffer.c @@ -95,7 +95,7 @@ STATIC void check_for_deinit(bleio_packet_buffer_obj_t *self) { //| def readinto(self, buf: WriteableBuffer) -> int: //| """Reads a single BLE packet into the ``buf``. Raises an exception if the next packet is longer -//| than the given buffer. Use `packet_size` to read the maximum length of a single packet. +//| than the given buffer. Use `incoming_packet_length` to read the maximum length of a single packet. //| //| :return: number of bytes read and stored into ``buf`` //| :rtype: int""" @@ -179,11 +179,6 @@ STATIC mp_obj_t bleio_packet_buffer_deinit(mp_obj_t self_in) { } STATIC MP_DEFINE_CONST_FUN_OBJ_1(bleio_packet_buffer_deinit_obj, bleio_packet_buffer_deinit); -//| packet_size: int -//| """`packet_size` is the same as `incoming_packet_length`. -//| The name `packet_size` is deprecated and -//| will be removed in CircuitPython 6.0.0.""" -//| //| incoming_packet_length: int //| """Maximum length in bytes of a packet we are reading.""" //| @@ -233,9 +228,6 @@ STATIC const mp_rom_map_elem_t bleio_packet_buffer_locals_dict_table[] = { { MP_OBJ_NEW_QSTR(MP_QSTR_readinto), MP_ROM_PTR(&bleio_packet_buffer_readinto_obj) }, { MP_OBJ_NEW_QSTR(MP_QSTR_write), MP_ROM_PTR(&bleio_packet_buffer_write_obj) }, - // .packet_size is now an alias for .incoming_packet_length - // TODO: Remove in 6.0.0. - { MP_OBJ_NEW_QSTR(MP_QSTR_packet_size), MP_ROM_PTR(&bleio_packet_buffer_incoming_packet_length_obj) }, { MP_OBJ_NEW_QSTR(MP_QSTR_incoming_packet_length), MP_ROM_PTR(&bleio_packet_buffer_incoming_packet_length_obj) }, { MP_OBJ_NEW_QSTR(MP_QSTR_outgoing_packet_length), MP_ROM_PTR(&bleio_packet_buffer_outgoing_packet_length_obj) }, }; diff --git a/shared-bindings/_typing/__init__.pyi b/shared-bindings/_typing/__init__.pyi index cc4a0a4391..9a6e963ea5 100644 --- a/shared-bindings/_typing/__init__.pyi +++ b/shared-bindings/_typing/__init__.pyi @@ -13,7 +13,7 @@ import rgbmatrix import ulab ReadableBuffer = Union[ - bytes, bytearray, memoryview, array.array, ulab.array, rgbmatrix.RGBMatrix + bytes, bytearray, memoryview, array.array, ulab.ndarray, rgbmatrix.RGBMatrix ] """Classes that implement the readable buffer protocol @@ -21,19 +21,19 @@ ReadableBuffer = Union[ - `bytearray` - `memoryview` - `array.array` - - `ulab.array` + - `ulab.ndarray` - `rgbmatrix.RGBMatrix` """ WriteableBuffer = Union[ - bytearray, memoryview, array.array, ulab.array, rgbmatrix.RGBMatrix + bytearray, memoryview, array.array, ulab.ndarray, rgbmatrix.RGBMatrix ] """Classes that implement the writeable buffer protocol - `bytearray` - `memoryview` - `array.array` - - `ulab.array` + - `ulab.ndarray` - `rgbmatrix.RGBMatrix` """ diff --git a/shared-bindings/alarm/__init__.c b/shared-bindings/alarm/__init__.c index a7af63f02f..11b96ff240 100644 --- a/shared-bindings/alarm/__init__.c +++ b/shared-bindings/alarm/__init__.c @@ -92,7 +92,7 @@ void validate_objs_are_alarms(size_t n_args, const mp_obj_t *objs) { //| This allows the user to interrupt an existing program with ctrl-C, //| and to edit the files in CIRCUITPY, which would not be possible in true light sleep. //| Thus, to use light sleep and save significant power, -// it may be necessary to disconnect from the host. +//| it may be necessary to disconnect from the host. //| """ //| ... //| @@ -217,7 +217,7 @@ STATIC mp_map_elem_t alarm_module_globals_table[] = { STATIC MP_DEFINE_MUTABLE_DICT(alarm_module_globals, alarm_module_globals_table); // Fetch value from module dict. -mp_obj_t alarm_get_wake_alarm(void) { +mp_obj_t shared_alarm_get_wake_alarm(void) { mp_map_elem_t *elem = mp_map_lookup(&alarm_module_globals.map, MP_ROM_QSTR(MP_QSTR_wake_alarm), MP_MAP_LOOKUP); if (elem) { @@ -228,7 +228,7 @@ mp_obj_t alarm_get_wake_alarm(void) { } // Initialize .wake_alarm value. -void alarm_save_wake_alarm(void) { +void shared_alarm_save_wake_alarm(void) { // Equivalent of: // alarm.wake_alarm = alarm mp_map_elem_t *elem = @@ -242,3 +242,8 @@ const mp_obj_module_t alarm_module = { .base = { &mp_type_module }, .globals = (mp_obj_dict_t *)&alarm_module_globals, }; + +extern void port_idle_until_interrupt(void); +MP_WEAK void common_hal_alarm_pretending_deep_sleep(void) { + port_idle_until_interrupt(); +} diff --git a/shared-bindings/alarm/__init__.h b/shared-bindings/alarm/__init__.h index 154f91e265..9c85b2e212 100644 --- a/shared-bindings/alarm/__init__.h +++ b/shared-bindings/alarm/__init__.h @@ -40,21 +40,20 @@ extern mp_obj_t common_hal_alarm_light_sleep_until_alarms(size_t n_alarms, const // call alarm_woken_from_sleep to see if we've been woken by an alarm and if so, // it will exit idle as if deep sleep was exited. extern void common_hal_alarm_set_deep_sleep_alarms(size_t n_alarms, const mp_obj_t *alarms); -// Deep sleep is entered outside of the VM so we omit the `common_hal_` prefix. -extern NORETURN void alarm_enter_deep_sleep(void); + +extern NORETURN void common_hal_alarm_enter_deep_sleep(void); +extern void common_hal_alarm_pretending_deep_sleep(void); // Fetches value from module dict. -extern mp_obj_t alarm_get_wake_alarm(void); +extern mp_obj_t shared_alarm_get_wake_alarm(void); extern void common_hal_alarm_gc_collect(void); extern mp_obj_t common_hal_alarm_get_wake_alarm(void); // Used by wake-up code. -void alarm_save_wake_alarm(void); - +void shared_alarm_save_wake_alarm(void); // True if an alarm is alerting. This is most useful for pretend deep sleep. -extern bool alarm_woken_from_sleep(void); - +extern bool common_hal_alarm_woken_from_sleep(void); #endif // MICROPY_INCLUDED_SHARED_BINDINGS_ALARM___INIT___H diff --git a/shared-bindings/audiopwmio/PWMAudioOut.c b/shared-bindings/audiopwmio/PWMAudioOut.c index fbe64fba78..c2ebf4fbae 100644 --- a/shared-bindings/audiopwmio/PWMAudioOut.c +++ b/shared-bindings/audiopwmio/PWMAudioOut.c @@ -155,8 +155,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(audiopwmio_pwmaudioout___exit___obj, //| Sample must be an `audiocore.WaveFile`, `audiocore.RawSample`, `audiomixer.Mixer` or `audiomp3.MP3Decoder`. //| //| The sample itself should consist of 16 bit samples. Microcontrollers with a lower output -//| resolution will use the highest order bits to output. For example, the SAMD21 has a 10 bit -//| DAC that ignores the lowest 6 bits when playing 16 bit samples.""" +//| resolution will use the highest order bits to output.""" //| ... //| STATIC mp_obj_t audiopwmio_pwmaudioout_obj_play(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { diff --git a/shared-bindings/bitbangio/SPI.c b/shared-bindings/bitbangio/SPI.c index e0fc6682e4..0f8cb59a60 100644 --- a/shared-bindings/bitbangio/SPI.c +++ b/shared-bindings/bitbangio/SPI.c @@ -224,32 +224,53 @@ STATIC mp_obj_t bitbangio_spi_write(mp_obj_t self_in, mp_obj_t wr_buf) { MP_DEFINE_CONST_FUN_OBJ_2(bitbangio_spi_write_obj, bitbangio_spi_write); -//| def readinto(self, buf: WriteableBuffer) -> None: -//| """Read into the buffer specified by ``buf`` while writing zeroes. -//| Requires the SPI being locked. -//| If the number of bytes to read is 0, nothing happens.""" +//| def readinto(self, buffer: WriteableBuffer, *, start: int = 0, end: Optional[int] = None, write_value: int = 0) -> None: +//| """Read into ``buffer`` while writing ``write_value`` for each byte read. +//| The SPI object must be locked. +//| If the number of bytes to read is 0, nothing happens. +//| +//| :param bytearray buffer: Read data into this buffer +//| :param int start: Start of the slice of ``buffer`` to read into: ``buffer[start:end]`` +//| :param int end: End of the slice; this index is not included. Defaults to ``len(buffer)`` +//| :param int write_value: Value to write while reading.""" //| ... //| -// TODO(tannewt): Add support for start and end kwargs. -STATIC mp_obj_t bitbangio_spi_readinto(size_t n_args, const mp_obj_t *args) { - bitbangio_spi_obj_t *self = MP_OBJ_TO_PTR(args[0]); + +STATIC mp_obj_t bitbangio_spi_readinto(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { + enum { ARG_buffer, ARG_start, ARG_end, ARG_write_value }; + static const mp_arg_t allowed_args[] = { + { MP_QSTR_buffer, MP_ARG_REQUIRED | MP_ARG_OBJ, {.u_obj = MP_OBJ_NULL} }, + { MP_QSTR_start, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = 0} }, + { MP_QSTR_end, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = INT_MAX} }, + { MP_QSTR_write_value,MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = 0} }, + }; + bitbangio_spi_obj_t *self = MP_OBJ_TO_PTR(pos_args[0]); check_for_deinit(self); + check_lock(self); + mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)]; + mp_arg_parse_all(n_args - 1, pos_args + 1, kw_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args); + mp_buffer_info_t bufinfo; - mp_get_buffer_raise(args[1], &bufinfo, MP_BUFFER_WRITE); - if (bufinfo.len == 0) { + mp_get_buffer_raise(args[ARG_buffer].u_obj, &bufinfo, MP_BUFFER_WRITE); + int32_t start = args[ARG_start].u_int; + size_t length = bufinfo.len; + normalize_buffer_bounds(&start, args[ARG_end].u_int, &length); + + if (length == 0) { return mp_const_none; } - check_lock(args[0]); - bool ok = shared_module_bitbangio_spi_read(self, bufinfo.buf, bufinfo.len); + + bool ok = shared_module_bitbangio_spi_read(self, ((uint8_t *)bufinfo.buf) + start, length, args[ARG_write_value].u_int); if (!ok) { mp_raise_OSError(MP_EIO); } return mp_const_none; } -MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(bitbangio_spi_readinto_obj, 2, 2, bitbangio_spi_readinto); +MP_DEFINE_CONST_FUN_OBJ_KW(bitbangio_spi_readinto_obj, 2, bitbangio_spi_readinto); -//| def write_readinto(self, buffer_out: ReadableBuffer, buffer_in: WriteableBuffer, *, out_start: int = 0, out_end: Optional[int] = None, in_start: int = 0, in_end: Optional[int] = None) -> None: +//| def write_readinto(self, buffer_out: ReadableBuffer, buffer_in: ReadableBuffer, *, out_start: int = 0, out_end: Optional[int] = None, in_start: int = 0, in_end: Optional[int] = None) -> None: //| """Write out the data in ``buffer_out`` while simultaneously reading data into ``buffer_in``. +//| The SPI object must be locked. //| The lengths of the slices defined by ``buffer_out[out_start:out_end]`` and ``buffer_in[in_start:in_end]`` //| must be equal. //| If buffer slice lengths are both 0, nothing happens. @@ -274,6 +295,7 @@ STATIC mp_obj_t bitbangio_spi_write_readinto(size_t n_args, const mp_obj_t *pos_ }; bitbangio_spi_obj_t *self = MP_OBJ_TO_PTR(pos_args[0]); check_for_deinit(self); + check_lock(self); mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)]; mp_arg_parse_all(n_args - 1, pos_args + 1, kw_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args); diff --git a/shared-bindings/bitbangio/SPI.h b/shared-bindings/bitbangio/SPI.h index b2a6445754..2d0d75e407 100644 --- a/shared-bindings/bitbangio/SPI.h +++ b/shared-bindings/bitbangio/SPI.h @@ -54,7 +54,7 @@ extern void shared_module_bitbangio_spi_unlock(bitbangio_spi_obj_t *self); extern bool shared_module_bitbangio_spi_write(bitbangio_spi_obj_t *self, const uint8_t *data, size_t len); // Reads in len bytes while outputting zeroes. -extern bool shared_module_bitbangio_spi_read(bitbangio_spi_obj_t *self, uint8_t *data, size_t len); +extern bool shared_module_bitbangio_spi_read(bitbangio_spi_obj_t *self, uint8_t *data, size_t len, uint8_t write_value); // Transfer out len bytes while reading len bytes extern bool shared_module_bitbangio_spi_transfer(bitbangio_spi_obj_t *self, const uint8_t *dout, uint8_t *din, size_t len); diff --git a/shared-bindings/bitmaptools/__init__.c b/shared-bindings/bitmaptools/__init__.c index bfe4d346cf..3d352e45c2 100644 --- a/shared-bindings/bitmaptools/__init__.c +++ b/shared-bindings/bitmaptools/__init__.c @@ -397,8 +397,7 @@ STATIC mp_obj_t bitmaptools_arrayblit(size_t n_args, const mp_obj_t *pos_args, m { MP_QSTR_x2, MP_ARG_INT, {.u_int = -1} }, { MP_QSTR_y2, MP_ARG_INT, {.u_int = -1} }, { MP_QSTR_skip_index, MP_ARG_OBJ, {.u_obj = mp_const_none } }, - } - ; + }; mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)]; mp_arg_parse_all(n_args, pos_args, kw_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args); diff --git a/shared-bindings/displayio/Bitmap.c b/shared-bindings/displayio/Bitmap.c index ebe2946091..900428b6e4 100644 --- a/shared-bindings/displayio/Bitmap.c +++ b/shared-bindings/displayio/Bitmap.c @@ -25,6 +25,7 @@ */ #include "shared-bindings/displayio/Bitmap.h" +#include "shared-module/displayio/Bitmap.h" #include @@ -43,8 +44,13 @@ //| per row is a multiple of 4, then the resulting memoryview will correspond directly with the bitmap's contents. Otherwise, //| the bitmap data is packed into the memoryview with unspecified padding. //| -//| A read-only buffer can be used e.g., with `ulab.frombuffer` to efficiently create an array with the same content as a Bitmap; -//| to move data efficiently from ulab back into a Bitmap, use `bitmaptools.arrayblit`. +//| A Bitmap can be treated as a buffer, allowing its content to be +//| viewed and modified using e.g., with ``ulab.numpy.frombuffer``, +//| but the `displayio.Bitmap.dirty` method must be used to inform +//| displayio when a bitmap was modified through the buffer interface. +//| +//| `bitmaptools.arrayblit` can also be useful to omve data efficiently +//| into a Bitmap. //| """ //| //| def __init__(self, width: int, height: int, value_count: int) -> None: @@ -299,11 +305,57 @@ STATIC mp_obj_t displayio_bitmap_obj_fill(mp_obj_t self_in, mp_obj_t value_obj) } MP_DEFINE_CONST_FUN_OBJ_2(displayio_bitmap_fill_obj, displayio_bitmap_obj_fill); +//| def dirty(self, x1: int=0, y1: int=0, x2: int=-1, y2:int = -1) -> None: +//| """Inform displayio of bitmap updates done via the buffer +//| protocol. +//| +//| :param int x1: Minimum x-value for rectangular bounding box to be considered as modified +//| :param int y1: Minimum y-value for rectangular bounding box to be considered as modified +//| :param int x2: Maximum x-value (exclusive) for rectangular bounding box to be considered as modified +//| :param int y2: Maximum y-value (exclusive) for rectangular bounding box to be considered as modified +//| +//| If x1 or y1 are not specified, they are taken as 0. If x2 or y2 +//| are not specified, or are given as -1, they are taken as the width +//| and height of the image. Thus, calling dirty() with the +//| default arguments treats the whole bitmap as modified. +//| +//| When a bitmap is modified through the buffer protocol, the +//| display will not be properly updated unless the bitmap is +//| notified of the "dirty rectangle" that encloses all modified +//| pixels.""" +//| ... +//| +STATIC mp_obj_t displayio_bitmap_obj_dirty(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { + displayio_bitmap_t *self = MP_OBJ_TO_PTR(pos_args[0]); + enum { ARG_x1, ARG_y1, ARG_x2, ARG_y2 }; + static const mp_arg_t allowed_args[] = { + { MP_QSTR_x1, MP_ARG_INT, {.u_int = 0} }, + { MP_QSTR_y1, MP_ARG_INT, {.u_int = 0} }, + { MP_QSTR_x2, MP_ARG_INT, {.u_int = -1} }, + { MP_QSTR_y2, MP_ARG_INT, {.u_int = -1} }, + }; + mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)]; + mp_arg_parse_all(n_args - 1, pos_args + 1, kw_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args); + + displayio_area_t dirty_area = { + .x1 = args[ARG_x1].u_int, + .y1 = args[ARG_y1].u_int, + .x2 = args[ARG_x2].u_int == -1 ? self->width : args[ARG_x2].u_int, + .y2 = args[ARG_y2].u_int == -1 ? self->height : args[ARG_y2].u_int, + }; + + displayio_bitmap_set_dirty_area(self, &dirty_area); + + return mp_const_none; +} +MP_DEFINE_CONST_FUN_OBJ_KW(displayio_bitmap_dirty_obj, 0, displayio_bitmap_obj_dirty); + STATIC const mp_rom_map_elem_t displayio_bitmap_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_height), MP_ROM_PTR(&displayio_bitmap_height_obj) }, { MP_ROM_QSTR(MP_QSTR_width), MP_ROM_PTR(&displayio_bitmap_width_obj) }, { MP_ROM_QSTR(MP_QSTR_blit), MP_ROM_PTR(&displayio_bitmap_blit_obj) }, { MP_ROM_QSTR(MP_QSTR_fill), MP_ROM_PTR(&displayio_bitmap_fill_obj) }, + { MP_ROM_QSTR(MP_QSTR_dirty), MP_ROM_PTR(&displayio_bitmap_dirty_obj) }, }; STATIC MP_DEFINE_CONST_DICT(displayio_bitmap_locals_dict, displayio_bitmap_locals_dict_table); diff --git a/shared-bindings/displayio/FourWire.c b/shared-bindings/displayio/FourWire.c index d87f2421da..3ba55a4470 100644 --- a/shared-bindings/displayio/FourWire.c +++ b/shared-bindings/displayio/FourWire.c @@ -48,7 +48,7 @@ //| The SPI bus and pins are then in use by the display until `displayio.release_displays()` is //| called even after a reload. (It does this so CircuitPython can use the display after your code //| is done.) So, the first time you initialize a display bus in code.py you should call -//| :py:func`displayio.release_displays` first, otherwise it will error after the first code.py run. +//| :py:func:`displayio.release_displays` first, otherwise it will error after the first code.py run. //| //| :param busio.SPI spi_bus: The SPI bus that make up the clock and data lines //| :param microcontroller.Pin command: Data or command pin diff --git a/shared-bindings/displayio/I2CDisplay.c b/shared-bindings/displayio/I2CDisplay.c index 2f27c7b5d7..ae0948b879 100644 --- a/shared-bindings/displayio/I2CDisplay.c +++ b/shared-bindings/displayio/I2CDisplay.c @@ -48,7 +48,7 @@ //| The I2C bus and pins are then in use by the display until `displayio.release_displays()` is //| called even after a reload. (It does this so CircuitPython can use the display after your code //| is done.) So, the first time you initialize a display bus in code.py you should call -//| :py:func`displayio.release_displays` first, otherwise it will error after the first code.py run. +//| :py:func:`displayio.release_displays` first, otherwise it will error after the first code.py run. //| //| :param busio.I2C i2c_bus: The I2C bus that make up the clock and data lines //| :param int device_address: The I2C address of the device diff --git a/shared-bindings/displayio/ParallelBus.c b/shared-bindings/displayio/ParallelBus.c index 7391078a62..084628328d 100644 --- a/shared-bindings/displayio/ParallelBus.c +++ b/shared-bindings/displayio/ParallelBus.c @@ -49,7 +49,7 @@ //| The parallel bus and pins are then in use by the display until `displayio.release_displays()` //| is called even after a reload. (It does this so CircuitPython can use the display after your //| code is done.) So, the first time you initialize a display bus in code.py you should call -//| :py:func`displayio.release_displays` first, otherwise it will error after the first code.py run. +//| :py:func:`displayio.release_displays` first, otherwise it will error after the first code.py run. //| //| :param microcontroller.Pin data0: The first data pin. The rest are implied //| :param microcontroller.Pin command: Data or command pin diff --git a/shared-bindings/rgbmatrix/RGBMatrix.c b/shared-bindings/rgbmatrix/RGBMatrix.c index 045cc82b8f..e71bae9f59 100644 --- a/shared-bindings/rgbmatrix/RGBMatrix.c +++ b/shared-bindings/rgbmatrix/RGBMatrix.c @@ -164,7 +164,7 @@ STATIC void preflight_pins_or_throw(uint8_t clock_pin, uint8_t *rgb_pins, uint8_ //| "RGB565" means that it is organized as a series of 16-bit numbers //| where the highest 5 bits are interpreted as red, the next 6 as //| green, and the final 5 as blue. The object can be any buffer, but -//| `array.array` and `ulab.array` objects are most often useful. +//| `array.array` and ``ulab.ndarray`` objects are most often useful. //| To update the content, modify the framebuffer and call refresh. //| //| If a framebuffer is not passed in, one is allocated and initialized @@ -441,6 +441,7 @@ STATIC mp_int_t rgbmatrix_rgbmatrix_get_buffer(mp_obj_t self_in, mp_buffer_info_ return 1; } *bufinfo = self->bufinfo; + bufinfo->typecode = 'H'; return 0; } diff --git a/shared-bindings/time/__init__.c b/shared-bindings/time/__init__.c index 0fb12c9b85..87f766db26 100644 --- a/shared-bindings/time/__init__.c +++ b/shared-bindings/time/__init__.c @@ -279,7 +279,7 @@ STATIC mp_obj_t time_mktime(mp_obj_t t) { mp_obj_tuple_get(t, &len, &elem); if (len != 9) { - mp_raise_TypeError_varg(translate("function takes %d positional arguments but %d were given"), 9); + mp_raise_TypeError_varg(translate("function takes %d positional arguments but %d were given"), 9, len); } if (mp_obj_get_int(elem[0]) < 2000) { diff --git a/shared-module/adafruit_bus_device/SPIDevice.c b/shared-module/adafruit_bus_device/SPIDevice.c index c65807aeb4..f34bb99f95 100644 --- a/shared-module/adafruit_bus_device/SPIDevice.c +++ b/shared-module/adafruit_bus_device/SPIDevice.c @@ -42,14 +42,28 @@ void common_hal_adafruit_bus_device_spidevice_construct(adafruit_bus_device_spid } mp_obj_t common_hal_adafruit_bus_device_spidevice_enter(adafruit_bus_device_spidevice_obj_t *self) { - bool success = false; - while (!success) { - success = common_hal_busio_spi_try_lock(self->spi); - RUN_BACKGROUND_TASKS; - mp_handle_pending(); + { + mp_obj_t dest[2]; + mp_load_method(self->spi, MP_QSTR_try_lock, dest); + + while (!mp_obj_is_true(mp_call_method_n_kw(0, 0, dest))) { + mp_handle_pending(); + } } - common_hal_busio_spi_configure(self->spi, self->baudrate, self->polarity, self->phase, 8); + { + mp_obj_t dest[10]; + mp_load_method(self->spi, MP_QSTR_configure, dest); + dest[2] = MP_OBJ_NEW_QSTR(MP_QSTR_baudrate); + dest[3] = MP_OBJ_NEW_SMALL_INT(self->baudrate); + dest[4] = MP_OBJ_NEW_QSTR(MP_QSTR_polarity); + dest[5] = MP_OBJ_NEW_SMALL_INT(self->polarity); + dest[6] = MP_OBJ_NEW_QSTR(MP_QSTR_phase); + dest[7] = MP_OBJ_NEW_SMALL_INT(self->phase); + dest[8] = MP_OBJ_NEW_QSTR(MP_QSTR_bits); + dest[9] = MP_OBJ_NEW_SMALL_INT(8); + mp_call_method_n_kw(0, 4, dest); + } if (self->chip_select != MP_OBJ_NULL) { common_hal_digitalio_digitalinout_set_value(MP_OBJ_TO_PTR(self->chip_select), false); @@ -67,21 +81,21 @@ void common_hal_adafruit_bus_device_spidevice_exit(adafruit_bus_device_spidevice mp_buffer_info_t bufinfo; mp_obj_t buffer = mp_obj_new_bytearray_of_zeros(1); - mp_get_buffer_raise(buffer, &bufinfo, MP_BUFFER_READ); + mp_get_buffer_raise(buffer, &bufinfo, MP_BUFFER_WRITE); ((uint8_t *)bufinfo.buf)[0] = 0xFF; - uint8_t clocks = self->extra_clocks / 8; - if ((self->extra_clocks % 8) != 0) { - clocks += 1; - } + uint8_t clocks = (self->extra_clocks + 7) / 8; + mp_obj_t dest[3]; + mp_load_method(self->spi, MP_QSTR_write, dest); + dest[2] = buffer; while (clocks > 0) { - if (!common_hal_busio_spi_write(self->spi, ((uint8_t *)bufinfo.buf), 1)) { - mp_raise_OSError(MP_EIO); - } + mp_call_method_n_kw(1, 0, dest); clocks--; } } - common_hal_busio_spi_unlock(self->spi); + mp_obj_t dest[2]; + mp_load_method(self->spi, MP_QSTR_unlock, dest); + mp_call_method_n_kw(0, 0, dest); } diff --git a/shared-module/bitbangio/SPI.c b/shared-module/bitbangio/SPI.c index 8be6cac5fa..65511964a6 100644 --- a/shared-module/bitbangio/SPI.c +++ b/shared-module/bitbangio/SPI.c @@ -176,7 +176,7 @@ bool shared_module_bitbangio_spi_write(bitbangio_spi_obj_t *self, const uint8_t } // Reads in len bytes while outputting zeroes. -bool shared_module_bitbangio_spi_read(bitbangio_spi_obj_t *self, uint8_t *data, size_t len) { +bool shared_module_bitbangio_spi_read(bitbangio_spi_obj_t *self, uint8_t *data, size_t len, uint8_t write_data) { if (len > 0 && !self->has_miso) { mp_raise_ValueError(translate("Cannot read without MISO pin.")); } @@ -210,8 +210,12 @@ bool shared_module_bitbangio_spi_read(bitbangio_spi_obj_t *self, uint8_t *data, common_hal_digitalio_digitalinout_set_value(&self->mosi, false); } for (size_t i = 0; i < len; ++i) { + uint8_t data_out = write_data; uint8_t data_in = 0; - for (int j = 0; j < 8; ++j) { + for (int j = 0; j < 8; ++j, data_out <<= 1) { + if (self->has_mosi) { + common_hal_digitalio_digitalinout_set_value(&self->mosi, (data_out >> 7) & 1); + } if (self->phase == 0) { common_hal_mcu_delay_us(delay_half); common_hal_digitalio_digitalinout_set_value(&self->clock, 1 - self->polarity); diff --git a/shared-module/displayio/Bitmap.c b/shared-module/displayio/Bitmap.c index 872a20b9e9..e218049b6c 100644 --- a/shared-module/displayio/Bitmap.c +++ b/shared-module/displayio/Bitmap.c @@ -236,7 +236,7 @@ void common_hal_displayio_bitmap_fill(displayio_bitmap_t *self, uint32_t value) } int common_hal_displayio_bitmap_get_buffer(displayio_bitmap_t *self, mp_buffer_info_t *bufinfo, mp_uint_t flags) { - if (flags & MP_BUFFER_WRITE) { + if ((flags & MP_BUFFER_WRITE) && self->read_only) { return 1; } bufinfo->len = self->stride * self->height * sizeof(size_t); diff --git a/shared-module/displayio/Group.c b/shared-module/displayio/Group.c index c50f034bf0..d1bdae2c33 100644 --- a/shared-module/displayio/Group.c +++ b/shared-module/displayio/Group.c @@ -123,7 +123,7 @@ bool displayio_group_get_previous_area(displayio_group_t *self, displayio_area_t displayio_area_copy(&layer_area, area); first = false; } else { - displayio_area_expand(area, &layer_area); + displayio_area_union(area, &layer_area, area); } } if (self->item_removed) { @@ -131,7 +131,7 @@ bool displayio_group_get_previous_area(displayio_group_t *self, displayio_area_t displayio_area_copy(&self->dirty_area, area); first = false; } else { - displayio_area_expand(area, &self->dirty_area); + displayio_area_union(area, &self->dirty_area, area); } } return !first; @@ -307,7 +307,7 @@ static void _remove_layer(displayio_group_t *self, size_t index) { if (!self->item_removed) { displayio_area_copy(&layer_area, &self->dirty_area); } else { - displayio_area_expand(&self->dirty_area, &layer_area); + displayio_area_union(&self->dirty_area, &layer_area, &self->dirty_area); } self->item_removed = true; } diff --git a/shared-module/displayio/TileGrid.c b/shared-module/displayio/TileGrid.c index 347eba577e..a623a10de5 100644 --- a/shared-module/displayio/TileGrid.c +++ b/shared-module/displayio/TileGrid.c @@ -273,7 +273,7 @@ void common_hal_displayio_tilegrid_set_tile(displayio_tilegrid_t *self, uint16_t tile_area->y2 = tile_area->y1 + self->tile_height; if (self->partial_change) { - displayio_area_expand(&self->dirty_area, &temp_area); + displayio_area_union(&self->dirty_area, &temp_area, &self->dirty_area); } self->partial_change = true; @@ -583,7 +583,7 @@ displayio_area_t *displayio_tilegrid_get_refresh_areas(displayio_tilegrid_t *sel } if (self->partial_change) { - if (self->absolute_transform->transpose_xy) { + if (self->transpose_xy != self->absolute_transform->transpose_xy) { int16_t x1 = self->dirty_area.x1; self->dirty_area.x1 = self->absolute_transform->x + self->absolute_transform->dx * (self->y + self->dirty_area.y1); self->dirty_area.y1 = self->absolute_transform->y + self->absolute_transform->dy * (self->x + x1); diff --git a/shared-module/displayio/__init__.c b/shared-module/displayio/__init__.c index d238c28167..7d9dc26dd3 100644 --- a/shared-module/displayio/__init__.c +++ b/shared-module/displayio/__init__.c @@ -245,21 +245,6 @@ void displayio_gc_collect(void) { } } -void displayio_area_expand(displayio_area_t *original, const displayio_area_t *addition) { - if (addition->x1 < original->x1) { - original->x1 = addition->x1; - } - if (addition->y1 < original->y1) { - original->y1 = addition->y1; - } - if (addition->x2 > original->x2) { - original->x2 = addition->x2; - } - if (addition->y2 > original->y2) { - original->y2 = addition->y2; - } -} - void displayio_area_copy(const displayio_area_t *src, displayio_area_t *dst) { dst->x1 = src->x1; dst->y1 = src->y1; diff --git a/shared-module/displayio/area.h b/shared-module/displayio/area.h index b6ff1dcd29..6a8ad6ceb0 100644 --- a/shared-module/displayio/area.h +++ b/shared-module/displayio/area.h @@ -59,7 +59,6 @@ void displayio_area_canon(displayio_area_t *a); void displayio_area_union(const displayio_area_t *a, const displayio_area_t *b, displayio_area_t *u); -void displayio_area_expand(displayio_area_t *original, const displayio_area_t *addition); void displayio_area_copy(const displayio_area_t *src, displayio_area_t *dst); void displayio_area_scale(displayio_area_t *area, uint16_t scale); void displayio_area_shift(displayio_area_t *area, int16_t dx, int16_t dy); diff --git a/shared-module/rotaryio/IncrementalEncoder.c b/shared-module/rotaryio/IncrementalEncoder.c new file mode 100644 index 0000000000..330895606e --- /dev/null +++ b/shared-module/rotaryio/IncrementalEncoder.c @@ -0,0 +1,86 @@ +/* + * This file is part of the MicroPython project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2021 Jeff Epler 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. + */ + +#if CIRCUITPY_ROTARYIO && CIRCUITPY_ROTARYIO_SOFTENCODER +#include "shared-module/rotaryio/IncrementalEncoder.h" +#include "common-hal/rotaryio/IncrementalEncoder.h" + +void shared_module_softencoder_state_init(rotaryio_incrementalencoder_obj_t *self, uint8_t quiescent_state) { + self->state = quiescent_state; + self->quarter_count = 0; + common_hal_rotaryio_incrementalencoder_set_position(self, 0); +} + +void shared_module_softencoder_state_update(rotaryio_incrementalencoder_obj_t *self, uint8_t new_state) { + #define BAD 7 + static const int8_t transitions[16] = { + 0, // 00 -> 00 no movement + -1, // 00 -> 01 3/4 ccw (11 detent) or 1/4 ccw (00 at detent) + +1, // 00 -> 10 3/4 cw or 1/4 cw + BAD, // 00 -> 11 non-Gray-code transition + +1, // 01 -> 00 2/4 or 4/4 cw + 0, // 01 -> 01 no movement + BAD, // 01 -> 10 non-Gray-code transition + -1, // 01 -> 11 4/4 or 2/4 ccw + -1, // 10 -> 00 2/4 or 4/4 ccw + BAD, // 10 -> 01 non-Gray-code transition + 0, // 10 -> 10 no movement + +1, // 10 -> 11 4/4 or 2/4 cw + BAD, // 11 -> 00 non-Gray-code transition + +1, // 11 -> 01 1/4 or 3/4 cw + -1, // 11 -> 10 1/4 or 3/4 ccw + 0, // 11 -> 11 no movement + }; + + new_state &= 0x3; + int idx = (self->state << 2) | new_state; + self->state = new_state; + + int8_t quarter_incr = transitions[idx]; + if (quarter_incr == BAD) { + // Missed a transition. We don't know which way we're going, so do nothing. + return; + } + + self->quarter_count += quarter_incr; + + if (self->quarter_count >= 4) { + self->position += 1; + self->quarter_count = 0; + } else if (self->quarter_count <= -4) { + self->position -= 1; + self->quarter_count = 0; + } +} + +mp_int_t common_hal_rotaryio_incrementalencoder_get_position(rotaryio_incrementalencoder_obj_t *self) { + return self->position; +} + +void common_hal_rotaryio_incrementalencoder_set_position(rotaryio_incrementalencoder_obj_t *self, mp_int_t position) { + self->position = position; +} +#endif diff --git a/shared-module/rotaryio/IncrementalEncoder.h b/shared-module/rotaryio/IncrementalEncoder.h new file mode 100644 index 0000000000..82a5644b47 --- /dev/null +++ b/shared-module/rotaryio/IncrementalEncoder.h @@ -0,0 +1,34 @@ +/* + * This file is part of the MicroPython project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2021 Jeff Epler 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. + */ + +#pragma once + +#include "common-hal/rotaryio/IncrementalEncoder.h" + +void shared_module_softencoder_state_init(rotaryio_incrementalencoder_obj_t *self, uint8_t quiescent_state); +void shared_module_softencoder_state_update(rotaryio_incrementalencoder_obj_t *self, uint8_t new_state); +mp_int_t common_hal_rotaryio_incrementalencoder_get_position(rotaryio_incrementalencoder_obj_t *self); +void common_hal_rotaryio_incrementalencoder_set_position(rotaryio_incrementalencoder_obj_t *self, mp_int_t position); diff --git a/shared-module/storage/__init__.c b/shared-module/storage/__init__.c index db994158d6..5c743377df 100644 --- a/shared-module/storage/__init__.c +++ b/shared-module/storage/__init__.c @@ -149,7 +149,7 @@ void common_hal_storage_remount(const char *mount_path, bool readonly, bool disa mp_raise_OSError(MP_EINVAL); } - #ifdef USB_AVAILABLE + #if CIRCUITPY_USB_MSC if (!usb_msc_ejected()) { mp_raise_RuntimeError(translate("Cannot remount '/' when USB is active.")); } diff --git a/shared-module/terminalio/Terminal.c b/shared-module/terminalio/Terminal.c index 4589c91498..8ef2acd1ca 100644 --- a/shared-module/terminalio/Terminal.c +++ b/shared-module/terminalio/Terminal.c @@ -93,6 +93,41 @@ size_t common_hal_terminalio_terminal_write(terminalio_terminal_obj_t *self, con self->cursor_x -= n; } } + if (c == 'J') { + if (n == 2) { + common_hal_displayio_tilegrid_set_top_left(self->tilegrid, 0, 0); + self->cursor_x = self->cursor_y = start_y = 0; + n = 0; + for (uint16_t x = 0; x < self->tilegrid->width_in_tiles; x++) { + for (uint16_t y = 0; y < self->tilegrid->height_in_tiles; y++) { + common_hal_displayio_tilegrid_set_tile(self->tilegrid, x, y, 0); + } + } + } + } + if (c == ';') { + int16_t m = 0; + for (++j; j < 9; j++) { + if ('0' <= i[j] && i[j] <= '9') { + m = m * 10 + (i[j] - '0'); + } else { + c = i[j]; + break; + } + } + if (c == 'H') { + if (n >= self->tilegrid->height_in_tiles) { + n = self->tilegrid->height_in_tiles - 1; + } + if (m >= self->tilegrid->width_in_tiles) { + m = self->tilegrid->width_in_tiles - 1; + } + n = (n + self->tilegrid->top_left_y) % self->tilegrid->height_in_tiles; + self->cursor_x = m; + self->cursor_y = n; + start_y = self->cursor_y; + } + } i += j + 1; continue; } @@ -114,12 +149,14 @@ size_t common_hal_terminalio_terminal_write(terminalio_terminal_obj_t *self, con self->cursor_y %= self->tilegrid->height_in_tiles; } if (self->cursor_y != start_y) { - // clear the new row - for (uint16_t j = 0; j < self->tilegrid->width_in_tiles; j++) { - common_hal_displayio_tilegrid_set_tile(self->tilegrid, j, self->cursor_y, 0); - start_y = self->cursor_y; + // clear the new row in case of scroll up + if (self->cursor_y == self->tilegrid->top_left_y) { + for (uint16_t j = 0; j < self->tilegrid->width_in_tiles; j++) { + common_hal_displayio_tilegrid_set_tile(self->tilegrid, j, self->cursor_y, 0); + } + common_hal_displayio_tilegrid_set_top_left(self->tilegrid, 0, (self->cursor_y + self->tilegrid->height_in_tiles + 1) % self->tilegrid->height_in_tiles); } - common_hal_displayio_tilegrid_set_top_left(self->tilegrid, 0, (start_y + self->tilegrid->height_in_tiles + 1) % self->tilegrid->height_in_tiles); + start_y = self->cursor_y; } } return i - data; diff --git a/shared-module/usb_midi/PortIn.c b/shared-module/usb_midi/PortIn.c index 31e320baab..e00a5124cf 100644 --- a/shared-module/usb_midi/PortIn.c +++ b/shared-module/usb_midi/PortIn.c @@ -29,7 +29,7 @@ #include "tusb.h" size_t common_hal_usb_midi_portin_read(usb_midi_portin_obj_t *self, uint8_t *data, size_t len, int *errcode) { - return tud_midi_read(data, len); + return tud_midi_stream_read(data, len); } uint32_t common_hal_usb_midi_portin_bytes_available(usb_midi_portin_obj_t *self) { diff --git a/shared-module/usb_midi/PortOut.c b/shared-module/usb_midi/PortOut.c index 0b37dcfd41..f453a67671 100644 --- a/shared-module/usb_midi/PortOut.c +++ b/shared-module/usb_midi/PortOut.c @@ -29,7 +29,7 @@ #include "tusb.h" size_t common_hal_usb_midi_portout_write(usb_midi_portout_obj_t *self, const uint8_t *data, size_t len, int *errcode) { - return tud_midi_write(0, data, len); + return tud_midi_stream_write(0, data, len); } bool common_hal_usb_midi_portout_ready_to_tx(usb_midi_portout_obj_t *self) { diff --git a/shared-module/vectorio/Rectangle.c b/shared-module/vectorio/Rectangle.c index 5d48cc6480..56be5ebb5e 100644 --- a/shared-module/vectorio/Rectangle.c +++ b/shared-module/vectorio/Rectangle.c @@ -12,7 +12,7 @@ void common_hal_vectorio_rectangle_construct(vectorio_rectangle_t *self, uint32_ uint32_t common_hal_vectorio_rectangle_get_pixel(void *obj, int16_t x, int16_t y) { vectorio_rectangle_t *self = obj; - if (x < 0 || x > self->width || y > self->height || y < 0) { + if (x < 0 || x >= self->width || y >= self->height || y < 0) { return 0; } return 1; @@ -21,8 +21,8 @@ uint32_t common_hal_vectorio_rectangle_get_pixel(void *obj, int16_t x, int16_t y void common_hal_vectorio_rectangle_get_area(void *rectangle, displayio_area_t *out_area) { vectorio_rectangle_t *self = rectangle; - out_area->x1 = -1; - out_area->y1 = -1; + out_area->x1 = 0; + out_area->y1 = 0; out_area->x2 = self->width; out_area->y2 = self->height; } diff --git a/shared-module/vectorio/VectorShape.c b/shared-module/vectorio/VectorShape.c index c6524af9d3..efc40d0356 100644 --- a/shared-module/vectorio/VectorShape.c +++ b/shared-module/vectorio/VectorShape.c @@ -55,16 +55,7 @@ static void _get_screen_area(vectorio_vector_shape_t *self, displayio_area_t *ou out_area->y2 = (out_area->y2 + self->y) * self->absolute_transform->dy + self->absolute_transform->y; } // We might have mirrored due to dx - if (out_area->x2 < out_area->x1) { - int16_t swap = out_area->x1; - out_area->x1 = out_area->x2; - out_area->x2 = swap; - } - if (out_area->y2 < out_area->y1) { - int16_t swap = out_area->y1; - out_area->y1 = out_area->y2; - out_area->y2 = swap; - } + displayio_area_canon(out_area); VECTORIO_SHAPE_DEBUG(" out:{(%5d,%5d), (%5d,%5d)}\n", out_area->x1, out_area->y1, out_area->x2, out_area->y2); } @@ -88,7 +79,7 @@ void common_hal_vectorio_vector_shape_set_dirty(void *vector_shape) { self->ephemeral_dirty_area.x1, self->ephemeral_dirty_area.y1, self->ephemeral_dirty_area.x2, self->ephemeral_dirty_area.y2); self->dirty = true; // Dirty area tracks the shape's footprint between draws. It's reset on refresh finish, - displayio_area_expand(&self->ephemeral_dirty_area, ¤t_area); + displayio_area_union(&self->ephemeral_dirty_area, ¤t_area, &self->ephemeral_dirty_area); VECTORIO_SHAPE_DEBUG(" -> expanded:{(%3d,%3d), (%3d,%3d)}\n", self->ephemeral_dirty_area.x1, self->ephemeral_dirty_area.y1, self->ephemeral_dirty_area.x2, self->ephemeral_dirty_area.y2); } diff --git a/supervisor/flash.h b/supervisor/flash.h index 289c76c2d0..21d76c9984 100644 --- a/supervisor/flash.h +++ b/supervisor/flash.h @@ -31,10 +31,10 @@ #include "py/mpconfig.h" -#ifdef EXTERNAL_FLASH_DEVICES -#include "supervisor/shared/external_flash/external_flash.h" -#else +#if INTERNAL_FLASH_FILESYSTEM #include "supervisor/shared/internal_flash.h" +#else +#include "supervisor/shared/external_flash/external_flash.h" #endif void supervisor_flash_init(void); diff --git a/supervisor/linker.h b/supervisor/linker.h index 43050b907a..58068c1a4b 100644 --- a/supervisor/linker.h +++ b/supervisor/linker.h @@ -29,7 +29,7 @@ #ifndef MICROPY_INCLUDED_SUPERVISOR_LINKER_H #define MICROPY_INCLUDED_SUPERVISOR_LINKER_H -#if defined(IMXRT10XX) || defined(FOMU) || defined(STM32H7) +#if defined(IMXRT10XX) || defined(FOMU) || defined(STM32H7) || defined(RASPBERRYPI) #define PLACE_IN_DTCM_DATA(name) name __attribute__((section(".dtcm_data." #name))) #define PLACE_IN_DTCM_BSS(name) name __attribute__((section(".dtcm_bss." #name))) #define PLACE_IN_ITCM(name) __attribute__((section(".itcm." #name))) name diff --git a/supervisor/shared/cpu.c b/supervisor/shared/cpu.c new file mode 100644 index 0000000000..510225d197 --- /dev/null +++ b/supervisor/shared/cpu.c @@ -0,0 +1,40 @@ +/* + * 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 + +#include "supervisor/shared/cpu.h" + +bool cpu_interrupt_active(void) { + #if defined(__ARM_ARCH) && (__ARM_ARCH >= 6) + // Check VECTACTIVE in ICSR. We don't need to disable interrupts because if + // one occurs after we read, we won't continue until it is resolved. + return (*((volatile uint32_t *)0xE000ED04) & 0x1ff) != 0; + #else + // We don't know. + return false; + #endif +} diff --git a/supervisor/shared/cpu.h b/supervisor/shared/cpu.h new file mode 100644 index 0000000000..9e2bed1e55 --- /dev/null +++ b/supervisor/shared/cpu.h @@ -0,0 +1,36 @@ +/* + * 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. + */ + +#ifndef MICROPY_INCLUDED_SUPERVISOR_SHARED_CPU_H +#define MICROPY_INCLUDED_SUPERVISOR_SHARED_CPU_H + +#include +#include + +// True when we're in an interrupt handler. +bool cpu_interrupt_active(void); + +#endif // MICROPY_INCLUDED_SUPERVISOR_SHARED_CPU_H diff --git a/supervisor/shared/external_flash/device.h b/supervisor/shared/external_flash/device.h new file mode 100644 index 0000000000..bbf6bfd91b --- /dev/null +++ b/supervisor/shared/external_flash/device.h @@ -0,0 +1,78 @@ +/* + * This file is part of the MicroPython project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries LLC + * + * 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. + */ +#ifndef MICROPY_INCLUDED_SUPERVISOR_SHARED_EXTERNAL_FLASH_DEVICE_H +#define MICROPY_INCLUDED_SUPERVISOR_SHARED_EXTERNAL_FLASH_DEVICE_H + +#include +#include + +typedef struct { + uint32_t total_size; + uint16_t start_up_time_us; + + // Three response bytes to 0x9f JEDEC ID command. + uint8_t manufacturer_id; + uint8_t memory_type; + uint8_t capacity; + + // Max clock speed for all operations and the fastest read mode. + uint8_t max_clock_speed_mhz; + + // Bitmask for Quad Enable bit if present. 0x00 otherwise. This is for the highest byte in the + // status register. + uint8_t quad_enable_bit_mask; + + bool has_sector_protection : 1; + + // Supports the 0x0b fast read command with 8 dummy cycles. + bool supports_fast_read : 1; + + // Supports the fast read, quad output command 0x6b with 8 dummy cycles. + bool supports_qspi : 1; + + // Supports the quad input page program command 0x32. This is known as 1-1-4 because it only + // uses all four lines for data. + bool supports_qspi_writes : 1; + + // Requires a separate command 0x31 to write to the second byte of the status register. + // Otherwise two byte are written via 0x01. + bool write_status_register_split : 1; + + // True when the status register is a single byte. This implies the Quad Enable bit is in the + // first byte and the Read Status Register 2 command (0x35) is unsupported. + bool single_status_byte : 1; + + // Does not support using a ready bit within the status register + bool no_ready_bit : 1; + + // Does not support the erase command (0x20) + bool no_erase_cmd : 1; + + // Device does not have a reset command + bool no_reset_cmd : 1; +} external_flash_device; + +#endif // MICROPY_INCLUDED_SUPERVISOR_SHARED_EXTERNAL_FLASH_DEVICE_H diff --git a/supervisor/shared/external_flash/devices.h b/supervisor/shared/external_flash/devices.h deleted file mode 100644 index ae98065caf..0000000000 --- a/supervisor/shared/external_flash/devices.h +++ /dev/null @@ -1,716 +0,0 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries LLC - * - * 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. - */ -#ifndef MICROPY_INCLUDED_ATMEL_SAMD_EXTERNAL_FLASH_DEVICES_H -#define MICROPY_INCLUDED_ATMEL_SAMD_EXTERNAL_FLASH_DEVICES_H - -#include -#include - -typedef struct { - uint32_t total_size; - uint16_t start_up_time_us; - - // Three response bytes to 0x9f JEDEC ID command. - uint8_t manufacturer_id; - uint8_t memory_type; - uint8_t capacity; - - // Max clock speed for all operations and the fastest read mode. - uint8_t max_clock_speed_mhz; - - // Bitmask for Quad Enable bit if present. 0x00 otherwise. This is for the highest byte in the - // status register. - uint8_t quad_enable_bit_mask; - - bool has_sector_protection : 1; - - // Supports the 0x0b fast read command with 8 dummy cycles. - bool supports_fast_read : 1; - - // Supports the fast read, quad output command 0x6b with 8 dummy cycles. - bool supports_qspi : 1; - - // Supports the quad input page program command 0x32. This is known as 1-1-4 because it only - // uses all four lines for data. - bool supports_qspi_writes : 1; - - // Requires a separate command 0x31 to write to the second byte of the status register. - // Otherwise two byte are written via 0x01. - bool write_status_register_split : 1; - - // True when the status register is a single byte. This implies the Quad Enable bit is in the - // first byte and the Read Status Register 2 command (0x35) is unsupported. - bool single_status_byte : 1; - - // Does not support using a ready bit within the status register - bool no_ready_bit : 1; - - // Does not support the erase command (0x20) - bool no_erase_cmd : 1; - - // Device does not have a reset command - bool no_reset_cmd : 1; -} external_flash_device; - -// Settings for the Adesto Tech AT25DF081A 1MiB SPI flash. It's on the SAMD21 -// Xplained board. -// Datasheet: https://www.adestotech.com/wp-content/uploads/doc8715.pdf -#define AT25DF081A { \ - .total_size = (1 << 20), /* 1 MiB */ \ - .start_up_time_us = 10000, \ - .manufacturer_id = 0x1f, \ - .memory_type = 0x45, \ - .capacity = 0x01, \ - .max_clock_speed_mhz = 85, \ - .quad_enable_bit_mask = 0x00, \ - .has_sector_protection = true, \ - .supports_fast_read = true, \ - .supports_qspi = false, \ - .supports_qspi_writes = false, \ - .write_status_register_split = false, \ - .single_status_byte = false, \ -} - -// Settings for the Adesto Tech AT25DF641-SSHD-T 8MiB SPI flash -// for the Oak Dev Tech Icy Tree M0 (SAMD21) feather board. -// Source: https://www.digikey.com/product-detail/en/adesto-technologies/AT25SF641-SDHD-T/1265-1180-1-ND/ -// Datasheet: https://www.adestotech.com/wp-content/uploads/doc8693.pdf -#define AT25DF641A { \ - .total_size = (1 << 23), /* 8 MiB */ \ - .start_up_time_us = 10000, \ - .manufacturer_id = 0x1f, \ - .memory_type = 0x48, \ - .capacity = 0x00, \ - .max_clock_speed_mhz = 85, \ - .quad_enable_bit_mask = 0x00, \ - .has_sector_protection = true, \ - .supports_fast_read = true, \ - .supports_qspi = false, \ - .supports_qspi_writes = false, \ - .write_status_register_split = false, \ - .single_status_byte = false, \ -} - -// Settings for the Adesto Tech AT25SF161-SSHD-T 2MiB SPI flash -// for the StringCar M0 (SAMD21) Express board. -// Source: https://www.digikey.com/product-detail/en/adesto-technologies/AT25SF161-SDHD-T/1265-1230-1-ND/ -// Datasheet: https://www.adestotech.com/wpo-content/uploads/jDS-AT25SF161_046.pdf -#define AT25SF161 { \ - .total_size = (1 << 21), /* 2 MiB */ \ - .start_up_time_us = 10000, \ - .manufacturer_id = 0x1f, \ - .memory_type = 0x86, \ - .capacity = 0x01, \ - .max_clock_speed_mhz = 85, \ - .quad_enable_bit_mask = 0x00, \ - .has_sector_protection = true, \ - .supports_fast_read = true, \ - .supports_qspi = false, \ - .supports_qspi_writes = false, \ - .write_status_register_split = false, \ - .single_status_byte = false, \ -} - - -// Settings for the Adesto Tech AT25SF041 1MiB SPI flash. It's on the SparkFun -// SAMD51 Thing Plus board -// Datasheet: https://www.adestotech.com/wp-content/uploads/DS-AT25SF041_044.pdf -#define AT25SF041A { \ - .total_size = (1 << 19), /* 512 KiB */ \ - .start_up_time_us = 10000, \ - .manufacturer_id = 0x1f, \ - .memory_type = 0x84, \ - .capacity = 0x01, \ - .max_clock_speed_mhz = 85, \ - .quad_enable_bit_mask = 0x00, \ - .has_sector_protection = false, \ - .supports_fast_read = true, \ - .supports_qspi = false, \ - .supports_qspi_writes = false, \ - .write_status_register_split = false, \ - .single_status_byte = false, \ -} - -// Settings for the Gigadevice GD25Q16C 2MiB SPI flash. -// Datasheet: http://www.gigadevice.com/datasheet/gd25q16c/ -#define GD25Q16C { \ - .total_size = (1 << 21), /* 2 MiB */ \ - .start_up_time_us = 5000, \ - .manufacturer_id = 0xc8, \ - .memory_type = 0x40, \ - .capacity = 0x15, \ - .max_clock_speed_mhz = 104, /* if we need 120 then we can turn on high performance mode */ \ - .quad_enable_bit_mask = 0x02, \ - .has_sector_protection = false, \ - .supports_fast_read = true, \ - .supports_qspi = true, \ - .supports_qspi_writes = true, \ - .write_status_register_split = false, \ - .single_status_byte = false, \ -} - -// Settings for the Gigadevice GD25Q32C 4MiB SPI flash. -// Datasheet: http://www.elm-tech.com/en/products/spi-flash-memory/gd25q32/gd25q32.pdf -#define GD25Q32C { \ - .total_size = (1 << 22), /* 4 MiB */ \ - .start_up_time_us = 5000, \ - .manufacturer_id = 0xc8, \ - .memory_type = 0x40, \ - .capacity = 0x16, \ - .max_clock_speed_mhz = 104, /* if we need 120 then we can turn on high performance mode */ \ - .quad_enable_bit_mask = 0x02, \ - .has_sector_protection = false, \ - .supports_fast_read = true, \ - .supports_qspi = true, \ - .supports_qspi_writes = true, \ - .write_status_register_split = true, \ - .single_status_byte = false, \ -} - -// Settings for the Gigadevice GD25Q64C 8MiB SPI flash. -// Datasheet: http://www.elm-tech.com/en/products/spi-flash-memory/gd25q64/gd25q64.pdf -#define GD25Q64C { \ - .total_size = (1 << 23), /* 8 MiB */ \ - .start_up_time_us = 5000, \ - .manufacturer_id = 0xc8, \ - .memory_type = 0x40, \ - .capacity = 0x17, \ - .max_clock_speed_mhz = 104, /* if we need 120 then we can turn on high performance mode */ \ - .quad_enable_bit_mask = 0x02, \ - .has_sector_protection = false, \ - .supports_fast_read = true, \ - .supports_qspi = true, \ - .supports_qspi_writes = true, \ - .write_status_register_split = true, \ - .single_status_byte = false, \ -} - -// Settings for the Gigadevice GD25S512MD 64MiB SPI flash. -// Datasheet: http://www.gigadevice.com/datasheet/gd25s512md/ -#define GD25S512MD { \ - .total_size = (1 << 26), /* 64 MiB */ \ - .start_up_time_us = 5000, \ - .manufacturer_id = 0xc8, \ - .memory_type = 0x40, \ - .capacity = 0x19, \ - .max_clock_speed_mhz = 104, /* if we need 120 then we can turn on high performance mode */ \ - .quad_enable_bit_mask = 0x02, \ - .has_sector_protection = false, \ - .supports_fast_read = true, \ - .supports_qspi = true, \ - .supports_qspi_writes = true, \ - .write_status_register_split = true, \ - .single_status_byte = false, \ -} - -// Settings for the Cypress (was Spansion) S25FL064L 8MiB SPI flash. -// Datasheet: http://www.cypress.com/file/316661/download -#define S25FL064L { \ - .total_size = (1 << 23), /* 8 MiB */ \ - .start_up_time_us = 300, \ - .manufacturer_id = 0x01, \ - .memory_type = 0x60, \ - .capacity = 0x17, \ - .max_clock_speed_mhz = 108, \ - .quad_enable_bit_mask = 0x02, \ - .has_sector_protection = false, \ - .supports_fast_read = true, \ - .supports_qspi = true, \ - .supports_qspi_writes = true, \ - .write_status_register_split = false, \ - .single_status_byte = false, \ -} - -// Settings for the Cypress (was Spansion) S25FL116K 2MiB SPI flash. -// Datasheet: http://www.cypress.com/file/196886/download -#define S25FL116K { \ - .total_size = (1 << 21), /* 2 MiB */ \ - .start_up_time_us = 10000, \ - .manufacturer_id = 0x01, \ - .memory_type = 0x40, \ - .capacity = 0x15, \ - .max_clock_speed_mhz = 108, \ - .quad_enable_bit_mask = 0x02, \ - .has_sector_protection = false, \ - .supports_fast_read = true, \ - .supports_qspi = true, \ - .supports_qspi_writes = false, \ - .write_status_register_split = false, \ - .single_status_byte = false, \ -} - -// Settings for the Cypress (was Spansion) S25FL216K 2MiB SPI flash. -// Datasheet: http://www.cypress.com/file/197346/download -#define S25FL216K { \ - .total_size = (1 << 21), /* 2 MiB */ \ - .start_up_time_us = 10000, \ - .manufacturer_id = 0x01, \ - .memory_type = 0x40, \ - .capacity = 0x15, \ - .max_clock_speed_mhz = 65, \ - .quad_enable_bit_mask = 0x02, \ - .has_sector_protection = false, \ - .supports_fast_read = true, \ - .supports_qspi = false, \ - .supports_qspi_writes = false, \ - .write_status_register_split = false, \ - .single_status_byte = false, \ -} - -// Settings for the Winbond W25Q16FW 2MiB SPI flash. -// Datasheet: https://www.winbond.com/resource-files/w25q16fw%20revj%2005182017%20sfdp.pdf -#define W25Q16FW { \ - .total_size = (1 << 21), /* 2 MiB */ \ - .start_up_time_us = 5000, \ - .manufacturer_id = 0xef, \ - .memory_type = 0x60, \ - .capacity = 0x15, \ - .max_clock_speed_mhz = 133, \ - .quad_enable_bit_mask = 0x02, \ - .has_sector_protection = false, \ - .supports_fast_read = true, \ - .supports_qspi = true, \ - .supports_qspi_writes = true, \ - .write_status_register_split = false, \ - .single_status_byte = false, \ -} - -// Settings for the Winbond W25Q16JV-IQ 2MiB SPI flash. Note that JV-IM has a different .memory_type (0x70) -// Datasheet: https://www.winbond.com/resource-files/w25q16jv%20spi%20revf%2005092017.pdf -#define W25Q16JV_IQ { \ - .total_size = (1 << 21), /* 2 MiB */ \ - .start_up_time_us = 5000, \ - .manufacturer_id = 0xef, \ - .memory_type = 0x40, \ - .capacity = 0x15, \ - .max_clock_speed_mhz = 133, \ - .quad_enable_bit_mask = 0x02, \ - .has_sector_protection = false, \ - .supports_fast_read = true, \ - .supports_qspi = true, \ - .supports_qspi_writes = true, \ - .write_status_register_split = false, \ - .single_status_byte = false, \ -} - -// Settings for the Winbond W25Q16JV-IM 2MiB SPI flash. Note that JV-IQ has a different .memory_type (0x40) -// Datasheet: https://www.winbond.com/resource-files/w25q16jv%20spi%20revf%2005092017.pdf -#define W25Q16JV_IM { \ - .total_size = (1 << 21), /* 2 MiB */ \ - .start_up_time_us = 5000, \ - .manufacturer_id = 0xef, \ - .memory_type = 0x70, \ - .capacity = 0x15, \ - .max_clock_speed_mhz = 133, \ - .quad_enable_bit_mask = 0x02, \ - .has_sector_protection = false, \ - .supports_fast_read = true, \ - .supports_qspi = true, \ - .supports_qspi_writes = true, \ - .write_status_register_split = false, \ -} - -// Settings for the Winbond W25Q32BV 4MiB SPI flash. -// Datasheet: https://www.winbond.com/resource-files/w25q32bv_revi_100413_wo_automotive.pdf -#define W25Q32BV { \ - .total_size = (1 << 22), /* 4 MiB */ \ - .start_up_time_us = 10000, \ - .manufacturer_id = 0xef, \ - .memory_type = 0x60, \ - .capacity = 0x16, \ - .max_clock_speed_mhz = 104, \ - .quad_enable_bit_mask = 0x02, \ - .has_sector_protection = false, \ - .supports_fast_read = true, \ - .supports_qspi = true, \ - .supports_qspi_writes = false, \ - .write_status_register_split = false, \ - .single_status_byte = false, \ -} -// Settings for the Winbond W25Q32JV-IM 4MiB SPI flash. -// Datasheet: https://www.winbond.com/resource-files/w25q32jv%20revg%2003272018%20plus.pdf -#define W25Q32JV_IM { \ - .total_size = (1 << 22), /* 4 MiB */ \ - .start_up_time_us = 5000, \ - .manufacturer_id = 0xef, \ - .memory_type = 0x70, \ - .capacity = 0x16, \ - .max_clock_speed_mhz = 133, \ - .quad_enable_bit_mask = 0x02, \ - .has_sector_protection = false, \ - .supports_fast_read = true, \ - .supports_qspi = true, \ - .supports_qspi_writes = true, \ - .write_status_register_split = false, \ -} - -// Settings for the Winbond W25Q32JV-IQ 4MiB SPI flash. -// Datasheet: https://www.mouser.com/datasheet/2/949/w25q32jv_revg_03272018_plus-1489806.pdf -#define W25Q32JV_IQ { \ - .total_size = (1 << 22), /* 4 MiB */ \ - .start_up_time_us = 5000, \ - .manufacturer_id = 0xef, \ - .memory_type = 0x40, \ - .capacity = 0x16, \ - .max_clock_speed_mhz = 133, \ - .quad_enable_bit_mask = 0x02, \ - .has_sector_protection = false, \ - .supports_fast_read = true, \ - .supports_qspi = true, \ - .supports_qspi_writes = true, \ - .write_status_register_split = false, \ -} - -// Settings for the Winbond W25Q64FV 8MiB SPI flash. -// Datasheet: https://www.winbond.com/resource-files/w25q64fv%20revs%2007182017.pdf -#define W25Q64FV { \ - .total_size = (1 << 23), /* 8 MiB */ \ - .start_up_time_us = 5000, \ - .manufacturer_id = 0xef, \ - .memory_type = 0x40, \ - .capacity = 0x17, \ - .max_clock_speed_mhz = 104, \ - .quad_enable_bit_mask = 0x02, \ - .has_sector_protection = false, \ - .supports_fast_read = true, \ - .supports_qspi = true, \ - .supports_qspi_writes = true, \ - .write_status_register_split = false, \ - .single_status_byte = false, \ -} - -// Settings for the Winbond W25Q64JV-IM 8MiB SPI flash. Note that JV-IQ has a different .memory_type (0x40) -// Datasheet: http://www.winbond.com/resource-files/w25q64jv%20revj%2003272018%20plus.pdf -#define W25Q64JV_IM { \ - .total_size = (1 << 23), /* 8 MiB */ \ - .start_up_time_us = 5000, \ - .manufacturer_id = 0xef, \ - .memory_type = 0x70, \ - .capacity = 0x17, \ - .max_clock_speed_mhz = 133, \ - .quad_enable_bit_mask = 0x02, \ - .has_sector_protection = false, \ - .supports_fast_read = true, \ - .supports_qspi = true, \ - .supports_qspi_writes = true, \ - .write_status_register_split = false, \ - .single_status_byte = false, \ -} - -// Settings for the Winbond W25Q64JV-IQ 8MiB SPI flash. Note that JV-IM has a different .memory_type (0x70) -// Datasheet: http://www.winbond.com/resource-files/w25q64jv%20revj%2003272018%20plus.pdf -#define W25Q64JV_IQ { \ - .total_size = (1 << 23), /* 8 MiB */ \ - .start_up_time_us = 5000, \ - .manufacturer_id = 0xef, \ - .memory_type = 0x40, \ - .capacity = 0x17, \ - .max_clock_speed_mhz = 133, \ - .quad_enable_bit_mask = 0x02, \ - .has_sector_protection = false, \ - .supports_fast_read = true, \ - .supports_qspi = true, \ - .supports_qspi_writes = true, \ - .write_status_register_split = false, \ - .single_status_byte = false, \ -} - -// Settings for the Winbond W25Q80DL 1MiB SPI flash. -// Datasheet: https://www.winbond.com/resource-files/w25q80dv%20dl_revh_10022015.pdf -#define W25Q80DL { \ - .total_size = (1 << 20), /* 1 MiB */ \ - .start_up_time_us = 5000, \ - .manufacturer_id = 0xef, \ - .memory_type = 0x60, \ - .capacity = 0x14, \ - .max_clock_speed_mhz = 104, \ - .quad_enable_bit_mask = 0x02, \ - .has_sector_protection = false, \ - .supports_fast_read = true, \ - .supports_qspi = true, \ - .supports_qspi_writes = false, \ - .write_status_register_split = false, \ - .single_status_byte = false, \ -} - -// Settings for the Winbond W25Q80DV 1MiB SPI flash.. Note that W25Q80DL has a different memory type (0x60) -// Datasheet: https://www.winbond.com/resource-files/w25q80dv%20dl_revh_10022015.pdf -#define W25Q80DV { \ - .total_size = (1 << 20), /* 1 MiB */ \ - .start_up_time_us = 5000, \ - .manufacturer_id = 0xef, \ - .memory_type = 0x40, \ - .capacity = 0x14, \ - .max_clock_speed_mhz = 104, \ - .quad_enable_bit_mask = 0x02, \ - .has_sector_protection = false, \ - .supports_fast_read = true, \ - .supports_qspi = true, \ - .supports_qspi_writes = false, \ - .write_status_register_split = false, \ - .single_status_byte = false, \ -} - -// Settings for the Winbond W25Q128JV-SQ 16MiB SPI flash. Note that JV-IM has a different .memory_type (0x70) -// Datasheet: https://www.winbond.com/resource-files/w25q128jv%20revf%2003272018%20plus.pdf -#define W25Q128JV_SQ { \ - .total_size = (1 << 24), /* 16 MiB */ \ - .start_up_time_us = 5000, \ - .manufacturer_id = 0xef, \ - .memory_type = 0x40, \ - .capacity = 0x18, \ - .max_clock_speed_mhz = 133, \ - .quad_enable_bit_mask = 0x02, \ - .has_sector_protection = false, \ - .supports_fast_read = true, \ - .supports_qspi = true, \ - .supports_qspi_writes = true, \ - .write_status_register_split = false, \ - .single_status_byte = false, \ -} - -// Settings for the Everspin MR20H40 / MR25H40 magnetic non-volatile RAM -// Datasheet: https://www.everspin.com/supportdocs/MR25H40CDFR -#define MR2xH40 { \ - .total_size = (1 << 22), /* 4 MiB */ \ - .start_up_time_us = 10000, \ - .manufacturer_id = 0xef, /*no JDEC*/ \ - .memory_type = 0x40, /*no JDEC*/ \ - .capacity = 0x14, /*no JDEC*/ \ - .max_clock_speed_mhz = 10, \ - .quad_enable_bit_mask = 0x00, \ - .has_sector_protection = false, \ - .supports_fast_read = false, \ - .supports_qspi = false, \ - .supports_qspi_writes = false, \ - .write_status_register_split = false, \ - .single_status_byte = true, \ - .no_ready_bit = true, \ - .no_erase_cmd = true, \ - .no_reset_cmd = true, \ -} - -// Settings for the Macronix MX25L1606 2MiB SPI flash. -// Datasheet: -#define MX25L1606 { \ - .total_size = (1 << 21), /* 2 MiB */ \ - .start_up_time_us = 5000, \ - .manufacturer_id = 0xc2, \ - .memory_type = 0x20, \ - .capacity = 0x15, \ - .max_clock_speed_mhz = 8, \ - .quad_enable_bit_mask = 0x40, \ - .has_sector_protection = false, \ - .supports_fast_read = true, \ - .supports_qspi = true, \ - .supports_qspi_writes = true, \ - .write_status_register_split = false, \ - .single_status_byte = true, \ -} - -// Settings for the Macronix MX25L3233F 4MiB SPI flash. -// Datasheet: http://www.macronix.com/Lists/Datasheet/Attachments/7426/MX25L3233F,%203V,%2032Mb,%20v1.6.pdf -#define MX25L3233F { \ - .total_size = (1 << 22), /* 4 MiB */ \ - .start_up_time_us = 5000, \ - .manufacturer_id = 0xc2, \ - .memory_type = 0x20, \ - .capacity = 0x16, \ - .max_clock_speed_mhz = 133, \ - .quad_enable_bit_mask = 0x40, \ - .has_sector_protection = false, \ - .supports_fast_read = true, \ - .supports_qspi = true, \ - .supports_qspi_writes = true, \ - .write_status_register_split = false, \ - .single_status_byte = true, \ -} - -// Settings for the Macronix MX25R6435F 8MiB SPI flash. -// Datasheet: http://www.macronix.com/Lists/Datasheet/Attachments/7428/MX25R6435F,%20Wide%20Range,%2064Mb,%20v1.4.pdf -// By default its in lower power mode which can only do 8mhz. In high power mode it can do 80mhz. -#define MX25R6435F { \ - .total_size = (1 << 23), /* 8 MiB */ \ - .start_up_time_us = 5000, \ - .manufacturer_id = 0xc2, \ - .memory_type = 0x28, \ - .capacity = 0x17, \ - .max_clock_speed_mhz = 8, \ - .quad_enable_bit_mask = 0x40, \ - .has_sector_protection = false, \ - .supports_fast_read = true, \ - .supports_qspi = true, \ - .supports_qspi_writes = true, \ - .write_status_register_split = false, \ - .single_status_byte = true, \ -} - -// Settings for the Macronix MX25R1635F 2MiB SPI flash. -// Datasheet: https://www.macronix.com/Lists/Datasheet/Attachments/7595/MX25R1635F,%20Wide%20Range,%2016Mb,%20v1.6.pdf -// In low power mode, quad operations can only run at 8 MHz. In high power mode it can do 80 MHz. -#define MX25R1635F { \ - .total_size = (1 << 21), /* 2 MiB */ \ - .start_up_time_us = 800, \ - .manufacturer_id = 0xc2, \ - .memory_type = 0x28, \ - .capacity = 0x15, \ - .max_clock_speed_mhz = 8, /* 33 MHz for 1-bit operations */ \ - .quad_enable_bit_mask = 0x40, \ - .has_sector_protection = false, \ - .supports_fast_read = true, \ - .supports_qspi = true, \ - .supports_qspi_writes = true, \ - .write_status_register_split = false, \ - .single_status_byte = true, \ -} - -// Settings for the Macronix MX25L51245G 64MiB SPI flash. -// Datasheet: https://www.macronix.com/Lists/Datasheet/Attachments/7437/MX25L51245G,%203V,%20512Mb,%20v1.6.pdf -#define MX25L51245G { \ - .total_size = (1 << 26), /* 64 MiB */ \ - .start_up_time_us = 5000, \ - .manufacturer_id = 0xc2, \ - .memory_type = 0x20, \ - .capacity = 0x1a, \ - .max_clock_speed_mhz = 133, \ - .quad_enable_bit_mask = 0x40, \ - .has_sector_protection = false, \ - .supports_fast_read = true, \ - .supports_qspi = true, \ - .supports_qspi_writes = true, \ - .write_status_register_split = false, \ - .single_status_byte = true, \ -} - -// Settings for the Macronix MX25L51245G 64MiB SPI flash. -// Datasheet: https://www.macronix.com/Lists/Datasheet/Attachments/7437/MX25L51245G,%203V,%20512Mb,%20v1.6.pdf -#define MX25L25645G { \ - .total_size = (1 << 25), /* 32 MiB */ \ - .start_up_time_us = 5000, \ - .manufacturer_id = 0x9f, \ - .memory_type = 0xab, \ - .capacity = 0x90, \ - .max_clock_speed_mhz = 133, \ - .quad_enable_bit_mask = 0xaf, \ - .has_sector_protection = false, \ - .supports_fast_read = true, \ - .supports_qspi = true, \ - .supports_qspi_writes = true, \ - .write_status_register_split = false, \ - .single_status_byte = true, \ -} - -// Settings for the Macronix MX25L12833F 16MiB SPI flash -// Datasheet: https://www.macronix.com/Lists/Datasheet/Attachments/7447/MX25L12833F,%203V,%20128Mb,%20v1.0.pdf - -#define MX25L12833F { \ - .total_size = (1UL << 24), /* 16 MiB */ \ - .start_up_time_us = 5000, \ - .manufacturer_id = 0xc2, \ - .memory_type = 0x20, \ - .capacity = 0x18, \ - .max_clock_speed_mhz = 133, \ - .quad_enable_bit_mask = 0x40, \ - .has_sector_protection = true, \ - .supports_fast_read = true, \ - .supports_qspi = true, \ - .supports_qspi_writes = true, \ - .write_status_register_split = false, \ - .single_status_byte = true, \ -} - -// Settings for the Winbond W25Q128JV-PM 16MiB SPI flash. Note that JV-IM has a different .memory_type (0x70) -// Datasheet: https://www.winbond.com/resource-files/w25q128jv%20revf%2003272018%20plus.pdf -#define W25Q128JV_PM { \ - .total_size = (1 << 24), /* 16 MiB */ \ - .start_up_time_us = 5000, \ - .manufacturer_id = 0xef, \ - .memory_type = 0x70, \ - .capacity = 0x18, \ - .max_clock_speed_mhz = 133, \ - .quad_enable_bit_mask = 0x02, \ - .has_sector_protection = false, \ - .supports_fast_read = true, \ - .supports_qspi = true, \ - .supports_qspi_writes = true, \ - .write_status_register_split = false, \ -} - -// Settings for the Winbond W25Q32FV 4MiB SPI flash. -// Datasheet:http://www.winbond.com/resource-files/w25q32fv%20revj%2006032016.pdf?__locale=en -#define W25Q32FV { \ - .total_size = (1 << 22), /* 4 MiB */ \ - .start_up_time_us = 5000, \ - .manufacturer_id = 0xef, \ - .memory_type = 0x40, \ - .capacity = 0x16, \ - .max_clock_speed_mhz = 104, \ - .quad_enable_bit_mask = 0x00, \ - .has_sector_protection = false, \ - .supports_fast_read = true, \ - .supports_qspi = false, \ - .supports_qspi_writes = false, \ - .write_status_register_split = false, \ - .single_status_byte = false, \ -} - -// Settings for the ISSI IS25LP128F 16MiB SPI flash. -// Datasheet: http://www.issi.com/WW/pdf/25LP-WP128F.pdf -#define IS25LP128F { \ - .total_size = (1 << 24), /* 16 MiB */ \ - .start_up_time_us = 10000, \ - .manufacturer_id = 0x9d, \ - .memory_type = 0x60, \ - .capacity = 0x18, \ - .max_clock_speed_mhz = 133, \ - .quad_enable_bit_mask = 0x02, \ - .has_sector_protection = true, \ - .supports_fast_read = true, \ - .supports_qspi = true, \ - .supports_qspi_writes = true, \ - .write_status_register_split = false, \ - .single_status_byte = true, \ -} - -// Settings for the Micron N25Q256A 256Mb (32MiB) QSPI flash. -// Datasheet: https://www.micron.com/-/media/client/global/documents/products/data-sheet/nor-flash/serial-nor/n25q/n25q_256mb_3v.pdf -#define N25Q256A { \ - /* .total_size = (1 << 25), 32 MiB does not work at this time, as assumptions about 3-byte addresses abound */ \ - .total_size = (1 << 24), /* 16 MiB */ \ - .start_up_time_us = 10000, \ - .manufacturer_id = 0x20, \ - .memory_type = 0xBA, \ - .capacity = 0x19, \ - .max_clock_speed_mhz = 108, \ - .quad_enable_bit_mask = 0x02, \ - .has_sector_protection = false, \ - .supports_fast_read = true, \ - .supports_qspi = true, \ - .supports_qspi_writes = true, \ - .write_status_register_split = false, \ - .single_status_byte = true, \ -} -#endif // MICROPY_INCLUDED_ATMEL_SAMD_EXTERNAL_FLASH_DEVICES_H diff --git a/supervisor/shared/external_flash/devices.h.jinja b/supervisor/shared/external_flash/devices.h.jinja new file mode 100644 index 0000000000..b200b75dca --- /dev/null +++ b/supervisor/shared/external_flash/devices.h.jinja @@ -0,0 +1,47 @@ +/* + * This file is part of the MicroPython project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries LLC + * + * 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. + */ +#ifndef MICROPY_INCLUDED_SUPERVISOR_SHARED_EXTERNAL_FLASH_DEVICES_H +#define MICROPY_INCLUDED_SUPERVISOR_SHARED_EXTERNAL_FLASH_DEVICES_H + +{% for device in nvms %} +#define {{ device.sku }} { \ + .total_size = {{ device.total_size }}, \ + .start_up_time_us = {{ device.start_up_time_us }}, \ + .manufacturer_id = {{ device.manufacturer_id }}, \ + .memory_type = {{ device.memory_type }}, \ + .capacity = {{ device.capacity }}, \ + .max_clock_speed_mhz = {{ device.max_clock_speed_mhz }}, \ + .quad_enable_bit_mask = {{ device.quad_enable_bit_mask }}, \ + .has_sector_protection = {{ device.has_sector_protection | lower() }}, \ + .supports_fast_read = {{ device.supports_fast_read | lower() }}, \ + .supports_qspi = {{ device["6b_quad_read"] | lower() }}, \ + .supports_qspi_writes = {{ device["32_qspi_write"] | lower() }}, \ + .write_status_register_split = {{ device.write_status_register_split | lower() }}, \ + .single_status_byte = {{ (device.quad_enable_status_byte == 1) | lower() }}, \ +} +{% endfor %} + +#endif // MICROPY_INCLUDED_SUPERVISOR_SHARED_EXTERNAL_FLASH_DEVICES_H diff --git a/supervisor/shared/external_flash/external_flash.c b/supervisor/shared/external_flash/external_flash.c index f8054a9fe0..722393ce65 100644 --- a/supervisor/shared/external_flash/external_flash.c +++ b/supervisor/shared/external_flash/external_flash.c @@ -27,6 +27,7 @@ #include #include +#include "genhdr/devices.h" #include "supervisor/flash.h" #include "supervisor/spi_flash_api.h" #include "supervisor/shared/external_flash/common_commands.h" diff --git a/supervisor/shared/external_flash/spi_flash.c b/supervisor/shared/external_flash/spi_flash.c index 3ddd92b5ed..4f7d5f6d3a 100644 --- a/supervisor/shared/external_flash/spi_flash.c +++ b/supervisor/shared/external_flash/spi_flash.c @@ -42,10 +42,12 @@ const external_flash_device *flash_device; uint32_t spi_flash_baudrate; // Enable the flash over SPI. -static void flash_enable(void) { - while (!common_hal_busio_spi_try_lock(&supervisor_flash_spi_bus)) { +static bool flash_enable(void) { + if (common_hal_busio_spi_try_lock(&supervisor_flash_spi_bus)) { + common_hal_digitalio_digitalinout_set_value(&cs_pin, false); + return true; } - common_hal_digitalio_digitalinout_set_value(&cs_pin, false); + return false; } // Disable the flash over SPI. @@ -54,8 +56,10 @@ static void flash_disable(void) { common_hal_busio_spi_unlock(&supervisor_flash_spi_bus); } -static bool transfer(uint8_t *command, uint32_t command_length, uint8_t *data_in, uint8_t *data_out, uint32_t data_length) { - flash_enable(); +static bool transfer(uint8_t* command, uint32_t command_length, uint8_t* data_in, uint8_t* data_out, uint32_t data_length) { + if (!flash_enable()) { + return false; + } bool status = common_hal_busio_spi_write(&supervisor_flash_spi_bus, command, command_length); if (status) { if (data_in != NULL && data_out != NULL) { @@ -103,7 +107,9 @@ bool spi_flash_write_data(uint32_t address, uint8_t *data, uint32_t data_length) uint8_t request[4] = {CMD_PAGE_PROGRAM, 0x00, 0x00, 0x00}; // Write the SPI flash write address into the bytes following the command byte. address_to_bytes(address, request + 1); - flash_enable(); + if (!flash_enable()) { + return false; + } common_hal_busio_spi_configure(&supervisor_flash_spi_bus, spi_flash_baudrate, 0, 0, 8); bool status = common_hal_busio_spi_write(&supervisor_flash_spi_bus, request, 4); if (status) { @@ -120,9 +126,11 @@ bool spi_flash_read_data(uint32_t address, uint8_t *data, uint32_t data_length) request[0] = CMD_FAST_READ_DATA; command_length = 5; } - // Write the SPI flash write address into the bytes following the command byte. + // Write the SPI flash read address into the bytes following the command byte. address_to_bytes(address, request + 1); - flash_enable(); + if (!flash_enable()) { + return false; + } common_hal_busio_spi_configure(&supervisor_flash_spi_bus, spi_flash_baudrate, 0, 0, 8); bool status = common_hal_busio_spi_write(&supervisor_flash_spi_bus, request, command_length); if (status) { diff --git a/supervisor/shared/memory.c b/supervisor/shared/memory.c index 83c9d63236..30482ea7b9 100644 --- a/supervisor/shared/memory.c +++ b/supervisor/shared/memory.c @@ -36,7 +36,7 @@ enum { CIRCUITPY_SUPERVISOR_IMMOVABLE_ALLOC_COUNT = // stack + heap 2 - #ifdef EXTERNAL_FLASH_DEVICES + #if INTERNAL_FLASH_FILESYSTEM == 0 + 1 #endif #if CIRCUITPY_USB_MIDI diff --git a/supervisor/shared/safe_mode.c b/supervisor/shared/safe_mode.c index e8778216a6..cd73e1b9f9 100644 --- a/supervisor/shared/safe_mode.c +++ b/supervisor/shared/safe_mode.c @@ -170,19 +170,19 @@ void print_safe_mode_message(safe_mode_t reason) { serial_write_compressed(translate("Crash into the HardFault_Handler.")); return; case MICROPY_NLR_JUMP_FAIL: - serial_write_compressed(translate("MicroPython NLR jump failed. Likely memory corruption.")); + serial_write_compressed(translate("NLR jump failed. Likely memory corruption.")); return; case MICROPY_FATAL_ERROR: - serial_write_compressed(translate("MicroPython fatal error.")); + serial_write_compressed(translate("Fatal error.")); break; case GC_ALLOC_OUTSIDE_VM: - serial_write_compressed(translate("Attempted heap allocation when MicroPython VM not running.")); + serial_write_compressed(translate("Attempted heap allocation when VM not running.")); break; #ifdef SOFTDEVICE_PRESENT // defined in ports/nrf/bluetooth/bluetooth_common.mk // will print "Unknown reason" if somehow encountered on other ports case NORDIC_SOFT_DEVICE_ASSERT: - serial_write_compressed(translate("Nordic Soft Device failure assertion.")); + serial_write_compressed(translate("Nordic system firmware failure assertion.")); break; #endif case FLASH_WRITE_FAIL: diff --git a/supervisor/shared/serial.c b/supervisor/shared/serial.c index 268cebdbba..bd2bf4ba22 100644 --- a/supervisor/shared/serial.c +++ b/supervisor/shared/serial.c @@ -28,6 +28,7 @@ #include "py/mpconfig.h" +#include "supervisor/shared/cpu.h" #include "supervisor/shared/display.h" #include "shared-bindings/terminalio/Terminal.h" #include "supervisor/serial.h" @@ -136,6 +137,10 @@ void serial_write_substring(const char *text, uint32_t length) { uint32_t count = 0; while (count < length && tud_cdc_connected()) { count += tud_cdc_write(text + count, length - count); + // If we're in an interrupt, then don't wait for more room. Queue up what we can. + if (cpu_interrupt_active()) { + break; + } usb_background(); } diff --git a/supervisor/shared/translate.c b/supervisor/shared/translate.c index 54135a4935..7afbd43e21 100644 --- a/supervisor/shared/translate.c +++ b/supervisor/shared/translate.c @@ -86,7 +86,7 @@ uint16_t decompress_length(const compressed_string_t *compressed) { char *decompress(const compressed_string_t *compressed, char *decompressed) { uint8_t this_byte = compress_max_length_bits / 8; uint8_t this_bit = 7 - compress_max_length_bits % 8; - uint8_t b = (&compressed->data)[this_byte]; + uint8_t b = (&compressed->data)[this_byte] << (compress_max_length_bits % 8); uint16_t length = decompress_length(compressed); // Stop one early because the last byte is always NULL. @@ -129,7 +129,7 @@ __attribute__((always_inline)) #endif const compressed_string_t *translate(const char *original) { #ifndef NO_QSTR - #define QDEF(id, str) + #define QDEF(id, hash, len, str) #define TRANSLATION(id, firstbyte, ...) if (strcmp(original, id) == 0) { static const compressed_string_t v = { .data = firstbyte, .tail = { __VA_ARGS__ } }; return &v; } else #include "genhdr/qstrdefs.generated.h" #undef TRANSLATION diff --git a/supervisor/spi_flash_api.h b/supervisor/spi_flash_api.h index ed80b8207b..1af83736df 100644 --- a/supervisor/spi_flash_api.h +++ b/supervisor/spi_flash_api.h @@ -29,7 +29,7 @@ #include #include -#include "supervisor/shared/external_flash/devices.h" +#include "shared/external_flash/device.h" #include "shared-bindings/busio/SPI.h" diff --git a/supervisor/supervisor.mk b/supervisor/supervisor.mk index 083e7fb354..c206ff96be 100644 --- a/supervisor/supervisor.mk +++ b/supervisor/supervisor.mk @@ -4,6 +4,7 @@ SRC_SUPERVISOR = \ supervisor/shared/autoreload.c \ supervisor/shared/background_callback.c \ supervisor/shared/board.c \ + supervisor/shared/cpu.c \ supervisor/shared/filesystem.c \ supervisor/shared/flash.c \ supervisor/shared/micropython.c \ @@ -32,22 +33,30 @@ endif # Choose which flash filesystem impl to use. # (Right now INTERNAL_FLASH_FILESYSTEM and (Q)SPI_FLASH_FILESYSTEM are mutually exclusive. # But that might not be true in the future.) -ifdef EXTERNAL_FLASH_DEVICES - CFLAGS += -DEXTERNAL_FLASH_DEVICES=$(EXTERNAL_FLASH_DEVICES) \ - - SRC_SUPERVISOR += supervisor/shared/external_flash/external_flash.c - ifeq ($(SPI_FLASH_FILESYSTEM),1) - SRC_SUPERVISOR += supervisor/shared/external_flash/spi_flash.c - endif - ifeq ($(QSPI_FLASH_FILESYSTEM),1) - SRC_SUPERVISOR += supervisor/qspi_flash.c supervisor/shared/external_flash/qspi_flash.c - endif -else +ifeq ($(INTERNAL_FLASH_FILESYSTEM),1) ifeq ($(DISABLE_FILESYSTEM),1) SRC_SUPERVISOR += supervisor/stub/internal_flash.c else SRC_SUPERVISOR += supervisor/internal_flash.c endif +else + CFLAGS += -DEXTERNAL_FLASH_DEVICES=$(EXTERNAL_FLASH_DEVICES) \ + + SRC_SUPERVISOR += supervisor/shared/external_flash/external_flash.c + ifeq ($(SPI_FLASH_FILESYSTEM),1) + SRC_SUPERVISOR += supervisor/shared/external_flash/spi_flash.c + endif + ifeq ($(QSPI_FLASH_FILESYSTEM),1) + SRC_SUPERVISOR += supervisor/qspi_flash.c supervisor/shared/external_flash/qspi_flash.c + endif + +$(HEADER_BUILD)/devices.h : ../../supervisor/shared/external_flash/devices.h.jinja ../../tools/gen_nvm_devices.py | $(HEADER_BUILD) + $(STEPECHO) "GEN $@" + $(Q)install -d $(BUILD)/genhdr + $(Q)$(PYTHON3) ../../tools/gen_nvm_devices.py $< $@ + +$(BUILD)/supervisor/shared/external_flash/external_flash.o: $(HEADER_BUILD)/devices.h + endif ifeq ($(USB),FALSE) diff --git a/supervisor/usb.h b/supervisor/usb.h index 1c709926a7..f8fd713715 100644 --- a/supervisor/usb.h +++ b/supervisor/usb.h @@ -54,8 +54,10 @@ void usb_init(void); void usb_disconnect(void); // Propagate plug/unplug events to the MSC logic. +#if CIRCUITPY_USB_MSC void usb_msc_mount(void); void usb_msc_umount(void); bool usb_msc_ejected(void); +#endif #endif // MICROPY_INCLUDED_SUPERVISOR_USB_H diff --git a/tests/extmod/ure_limit.py b/tests/extmod/ure_limit.py new file mode 100644 index 0000000000..99c6a818e8 --- /dev/null +++ b/tests/extmod/ure_limit.py @@ -0,0 +1,34 @@ +# Test overflow in ure.compile output code. + +try: + import ure as re +except ImportError: + print("SKIP") + raise SystemExit + + +def test_re(r): + try: + re.compile(r) + except: + print("Error") + + +# too many chars in [] +test_re("[" + "a" * 256 + "]") + +# too many groups +test_re("(a)" * 256) + +# jump too big for ? +test_re("(" + "a" * 62 + ")?") + +# jump too big for * +test_re("(" + "a" * 60 + ".)*") +test_re("(" + "a" * 60 + "..)*") + +# jump too big for + +test_re("(" + "a" * 62 + ")+") + +# jump too big for | +test_re("b" * 63 + "|a") diff --git a/tests/extmod/ure_limit.py.exp b/tests/extmod/ure_limit.py.exp new file mode 100644 index 0000000000..8353be536c --- /dev/null +++ b/tests/extmod/ure_limit.py.exp @@ -0,0 +1,7 @@ +Error +Error +Error +Error +Error +Error +Error diff --git a/tools/build_board_info.py b/tools/build_board_info.py index 30246bd17f..66ca48a02d 100644 --- a/tools/build_board_info.py +++ b/tools/build_board_info.py @@ -19,16 +19,8 @@ import shared_bindings_matrix sys.path.append("adabot") import adabot.github_requests as github -SUPPORTED_PORTS = [ - "atmel-samd", - "cxd56", - "esp32s2", - "litex", - "mimxrt10xx", - "nrf", - "raspberrypi", - "stm", -] +from shared_bindings_matrix import SUPPORTED_PORTS +from shared_bindings_matrix import aliases_by_board BIN = ("bin",) UF2 = ("uf2",) @@ -73,24 +65,33 @@ extension_by_board = { "meowbit_v121": UF2, } -aliases_by_board = { - "circuitplayground_express": [ - "circuitplayground_express_4h", - "circuitplayground_express_digikey_pycon2019", - ], - "pybadge": ["edgebadge"], - "pyportal": ["pyportal_pynt"], - "gemma_m0": ["gemma_m0_pycon2018"], - "pewpew10": ["pewpew13"], -} +language_allow_list = set([ + "ID", + "de_DE", + "en_GB", + "en_US", + "en_x_pirate", + "es", + "fil", + "fr", + "it_IT", + "ja", + "nl", + "pl", + "pt_BR", + "sv", + "zh_Latn_pinyin", +]) -def get_languages(): - languages = [] +def get_languages(list_all = False): + languages = set() for f in os.scandir("../locale"): if f.name.endswith(".po"): - languages.append(f.name[:-3]) - return languages + languages.add(f.name[:-3]) + if not list_all: + languages = languages & language_allow_list + return sorted(list(languages), key=str.casefold) def get_board_mapping(): @@ -163,10 +164,7 @@ def get_current_info(): return git_info, current_info -def create_pr(changes, updated, git_info, user): - commit_sha, original_blob_sha = git_info - branch_name = "new_release_" + changes["new_release"] - +def create_json(updated): # Convert the dictionary to a list of boards. Liquid templates only handle arrays. updated_list = [] all_ids = sorted(updated.keys()) @@ -174,9 +172,15 @@ def create_pr(changes, updated, git_info, user): info = updated[id] info["id"] = id updated_list.append(info) + return json.dumps(updated_list, sort_keys=True, indent=1).encode("utf-8") + b"\n" - updated = json.dumps(updated_list, sort_keys=True, indent=1).encode("utf-8") + b"\n" + +def create_pr(changes, updated, git_info, user): + commit_sha, original_blob_sha = git_info + branch_name = "new_release_" + changes["new_release"] + updated = create_json(updated) # print(updated.decode("utf-8")) + pr_title = "Automated website update for release {}".format(changes["new_release"]) boards = "" if changes["new_boards"]: @@ -262,7 +266,7 @@ def generate_download_info(): # Delete the release we are replacing for board in current_info: info = current_info[board] - for version in info["versions"]: + for version in list(info["versions"]): previous_releases.add(version["version"]) previous_languages.update(version["languages"]) if version["stable"] == new_stable or ( @@ -289,7 +293,7 @@ def generate_download_info(): new_version = { "stable": new_stable, "version": new_tag, - "modules": support_matrix.get(alias, "[]"), + "modules": support_matrix[alias], "languages": languages, "extensions": board_info["extensions"], } @@ -302,6 +306,8 @@ def generate_download_info(): create_pr(changes, current_info, git_info, user) else: print("No new release to update") + if "DEBUG" in os.environ: + print(create_json(current_info).decode("utf8")) if __name__ == "__main__": diff --git a/tools/build_release_files.py b/tools/build_release_files.py index 4e22e97254..68aa45f0a0 100755 --- a/tools/build_release_files.py +++ b/tools/build_release_files.py @@ -27,23 +27,10 @@ if "BOARDS" in os.environ: sha, version = build_info.get_version_info() languages = build_info.get_languages() -language_allow_list = [ - "ID", - "de_DE", - "en_US", - "en_x_pirate", - "es", - "fil", - "fr", - "it_IT", - "ja", - "nl", - "pl", - "pt_BR", - "sv", - "zh_Latn_pinyin", -] -print("Note: Not building languages", set(languages) - set(language_allow_list)) + +all_languages = build_info.get_languages(list_all=True) + +print("Note: Not building languages", set(all_languages) - set(languages)) exit_status = 0 cores = multiprocessing.cpu_count() @@ -53,7 +40,7 @@ for board in build_boards: os.makedirs(bin_directory, exist_ok=True) board_info = all_boards[board] - for language in language_allow_list: + for language in languages: bin_directory = "../bin/{board}/{language}".format(board=board, language=language) os.makedirs(bin_directory, exist_ok=True) start_time = time.monotonic() diff --git a/tools/gen_nvm_devices.py b/tools/gen_nvm_devices.py new file mode 100644 index 0000000000..3cda8671fd --- /dev/null +++ b/tools/gen_nvm_devices.py @@ -0,0 +1,23 @@ +import sys +import cascadetoml +import pathlib +import typer +from jinja2 import Template + + +def main(input_template: pathlib.Path, output_path: pathlib.Path): + flashes = cascadetoml.filter_toml(pathlib.Path("../../data/nvm.toml"), []) + + template = Template(input_template.read_text()) + + settings = {"nvms": []} + for flash in flashes["nvm"]: + if "sku" not in flash or flash["sku"] == flash["manufacturer"]: + continue + settings["nvms"].append(dict(flash)) + + output_path.write_text(template.render(settings)) + + +if __name__ == "__main__": + typer.run(main) diff --git a/tools/gen_usb_descriptor.py b/tools/gen_usb_descriptor.py index 89bb8a8177..1fad2fbeb3 100644 --- a/tools/gen_usb_descriptor.py +++ b/tools/gen_usb_descriptor.py @@ -17,9 +17,11 @@ ALL_DEVICES = "CDC CDC2 MSC AUDIO HID VENDOR" ALL_DEVICES_SET = frozenset(ALL_DEVICES.split()) DEFAULT_DEVICES = "CDC MSC AUDIO HID" +# This list is in preferred order. MacOS does not like GAMEPAD coming before MOUSE. ALL_HID_DEVICES = ( "KEYBOARD MOUSE CONSUMER SYS_CONTROL GAMEPAD DIGITIZER XAC_COMPATIBLE_GAMEPAD RAW" ) +ALL_HID_DEVICES_ORDER = dict((name, idx) for (idx, name) in enumerate(ALL_HID_DEVICES.split())) ALL_HID_DEVICES_SET = frozenset(ALL_HID_DEVICES.split()) # Digitizer works on Linux but conflicts with mouse, so omit it. DEFAULT_HID_DEVICES = "KEYBOARD MOUSE CONSUMER GAMEPAD" @@ -352,7 +354,8 @@ if include_hid: else: report_id = 1 concatenated_descriptors = bytearray() - for name in args.hid_devices: + # Sort HID devices by preferred order. + for name in sorted(args.hid_devices, key=ALL_HID_DEVICES_ORDER.get): concatenated_descriptors.extend( bytes(hid_report_descriptors.REPORT_DESCRIPTOR_FUNCTIONS[name](report_id)) ) @@ -612,6 +615,11 @@ configuration = standard.ConfigurationDescriptor( standard.ConfigurationDescriptor.bLength + sum([len(bytes(x)) for x in descriptor_list]) ), bNumInterfaces=len(interfaces), + # bus powered (bit 6), remote wakeup (bit 5), + # bit 7 is always 1 and 0-4 are always 0 + # Turn off remote wakeup until we handle it in CircuitPython. + bmAttributes=0x80, + ) descriptor_list.insert(0, configuration) diff --git a/tools/mpy-tool.py b/tools/mpy-tool.py index c989b63007..42d62fdf11 100755 --- a/tools/mpy-tool.py +++ b/tools/mpy-tool.py @@ -607,6 +607,20 @@ def freeze_mpy(base_qstrs, raw_codes): print(" MP_QSTR_%s," % new[i][1]) print("};") + print() + print("const qstr_attr_t mp_qstr_frozen_const_attr[] = {") + qstr_size = {"metadata": 0, "data": 0} + for _, _, qstr in new: + qbytes = qstrutil.bytes_cons(qstr, "utf8") + print(" {%d, %d}," % ( + qstrutil.compute_hash(qbytes, config.MICROPY_QSTR_BYTES_IN_HASH), + len(qbytes) + )) + qstr_size["metadata"] += ( + config.MICROPY_QSTR_BYTES_IN_LEN + config.MICROPY_QSTR_BYTES_IN_HASH + ) + qstr_size["data"] += len(qbytes) + print("};") print() print("extern const qstr_pool_t mp_qstr_const_pool;") print("const qstr_pool_t mp_qstr_frozen_const_pool = {") @@ -614,19 +628,10 @@ def freeze_mpy(base_qstrs, raw_codes): print(" MP_QSTRnumber_of, // previous pool size") print(" %u, // allocated entries" % len(new)) print(" %u, // used entries" % len(new)) + print(" (qstr_attr_t *)mp_qstr_frozen_const_attr,") print(" {") - qstr_size = {"metadata": 0, "data": 0} for _, _, qstr in new: - qstr_size["metadata"] += ( - config.MICROPY_QSTR_BYTES_IN_LEN + config.MICROPY_QSTR_BYTES_IN_HASH - ) - qstr_size["data"] += len(qstr) - print( - " %s," - % qstrutil.make_bytes( - config.MICROPY_QSTR_BYTES_IN_LEN, config.MICROPY_QSTR_BYTES_IN_HASH, qstr - ) - ) + print(" \"%s\"," % qstrutil.escape_bytes(qstr)) print(" },") print("};")