Merge branch 'adafruit:main' into master

This commit is contained in:
Benjamin Shockley 2023-03-13 13:04:15 -05:00 committed by GitHub
commit 8f4dad8e9a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
59 changed files with 1869 additions and 448 deletions

View File

@ -9,8 +9,6 @@ on:
pull_request: pull_request:
release: release:
types: [published] types: [published]
check_suite:
types: [rerequested]
concurrency: concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
@ -64,24 +62,32 @@ jobs:
PULL: ${{ github.event.number }} PULL: ${{ github.event.number }}
GITHUB_TOKEN: ${{ github.token }} GITHUB_TOKEN: ${{ github.token }}
EXCLUDE_COMMIT: ${{ github.event.pull_request.head.sha }} EXCLUDE_COMMIT: ${{ github.event.pull_request.head.sha }}
- name: Set head sha - name: Set head sha (pull)
if: github.event_name == 'pull_request' if: github.event_name == 'pull_request'
run: echo "HEAD_SHA=${{ github.event.pull_request.head.sha }}" >> $GITHUB_ENV run: echo "HEAD_SHA=${{ github.event.pull_request.head.sha }}" >> $GITHUB_ENV
- name: Set base sha - name: Set base sha (pull)
if: github.event_name == 'pull_request' if: github.event_name == 'pull_request'
run: | run: |
git fetch --no-tags --no-recurse-submodules --depth=$((DEPTH + 1)) origin $HEAD_SHA git fetch --no-tags --no-recurse-submodules --depth=$((DEPTH + 1)) origin $HEAD_SHA
echo "BASE_SHA=$(git rev-list $HEAD_SHA --skip=$DEPTH --max-count=1)" >> $GITHUB_ENV echo "BASE_SHA=$(git rev-list $HEAD_SHA --skip=$DEPTH --max-count=1)" >> $GITHUB_ENV
env: env:
DEPTH: ${{ steps.get-last-commit-with-checks.outputs.commit_depth || github.event.pull_request.commits }} DEPTH: ${{ steps.get-last-commit-with-checks.outputs.commit_depth || github.event.pull_request.commits }}
- name: Set head sha (push)
if: github.event_name == 'push'
run: echo "HEAD_SHA=${{ github.event.after }}" >> $GITHUB_ENV
- name: Set base sha (push)
if: github.event_name == 'push'
run: git cat-file -e $SHA && echo "BASE_SHA=$SHA" >> $GITHUB_ENV || true
env:
SHA: ${{ github.event.before }}
- name: Get changes - name: Get changes
id: get-changes id: get-changes
if: github.event_name == 'pull_request' if: env.BASE_SHA && env.HEAD_SHA
run: echo $(git diff $BASE_SHA...$HEAD_SHA --name-only) | echo "changed_files=[\"$(sed "s/ /\", \"/g")\"]" >> $GITHUB_OUTPUT run: echo $(git diff $BASE_SHA...$HEAD_SHA --name-only) | echo "changed_files=[\"$(sed "s/ /\", \"/g")\"]" >> $GITHUB_OUTPUT
- name: Set matrix - name: Set matrix
id: set-matrix id: set-matrix
working-directory: tools
run: python3 -u ci_set_matrix.py run: python3 -u ci_set_matrix.py
working-directory: tools
env: env:
CHANGED_FILES: ${{ steps.get-changes.outputs.changed_files }} CHANGED_FILES: ${{ steps.get-changes.outputs.changed_files }}
LAST_FAILED_JOBS: ${{ steps.get-last-commit-with-checks.outputs.check_runs }} LAST_FAILED_JOBS: ${{ steps.get-last-commit-with-checks.outputs.check_runs }}

View File

@ -6,7 +6,7 @@ name: Update CircuitPython.org
on: on:
release: release:
types: [published, rerequested] types: [published]
jobs: jobs:
website: website:

View File

@ -5,8 +5,8 @@
name: pre-commit name: pre-commit
on: on:
pull_request:
push: push:
pull_request:
concurrency: concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}

View File

@ -109,7 +109,7 @@ Pre-commit also requires some additional programs to be installed through your p
* Standard Unix tools such as make, find, etc * Standard Unix tools such as make, find, etc
* The gettext package, any modern version * The gettext package, any modern version
* uncrustify version 0.71 (0.72 is also tested) * uncrustify version 0.71 (0.72 is also tested and OK; 0.75 is not OK)
Each time you create a git commit, the pre-commit quality checks will be run. You can also run them e.g., with `pre-commit run foo.c` or `pre-commit run --all` to run on all files whether modified or not. Each time you create a git commit, the pre-commit quality checks will be run. You can also run them e.g., with `pre-commit run foo.c` or `pre-commit run --all` to run on all files whether modified or not.

View File

@ -147,7 +147,7 @@ msgstr "%q indeks di luar batas"
msgid "%q init failed" msgid "%q init failed"
msgstr "" msgstr ""
#: shared-bindings/dualbank/__init__.c #: ports/espressif/bindings/espnow/Peer.c shared-bindings/dualbank/__init__.c
msgid "%q is %q" msgid "%q is %q"
msgstr "" msgstr ""
@ -245,7 +245,7 @@ msgstr "%q, %q, dan %q semuanya harus memiliki panjang yang sama"
msgid "%q=%q" msgid "%q=%q"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
#, c-format #, c-format
msgid "%s error 0x%x" msgid "%s error 0x%x"
msgstr "%s kesalahan 0x%x" msgstr "%s kesalahan 0x%x"
@ -513,6 +513,7 @@ msgstr "Sudah disebarkan."
msgid "Already have all-matches listener" msgid "Already have all-matches listener"
msgstr "" msgstr ""
#: ports/espressif/bindings/espnow/ESPNow.c
#: ports/espressif/common-hal/espulp/ULP.c #: ports/espressif/common-hal/espulp/ULP.c
#: shared-module/memorymonitor/AllocationAlarm.c #: shared-module/memorymonitor/AllocationAlarm.c
#: shared-module/memorymonitor/AllocationSize.c #: shared-module/memorymonitor/AllocationSize.c
@ -686,7 +687,7 @@ msgstr "Blok CBC harus merupakan kelipatan 16 byte"
msgid "CIRCUITPY drive could not be found or created." msgid "CIRCUITPY drive could not be found or created."
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "CRC or checksum was invalid" msgid "CRC or checksum was invalid"
msgstr "" msgstr ""
@ -1082,7 +1083,7 @@ msgstr "Fungsinya membutuhkan kunci"
msgid "GNSS init" msgid "GNSS init"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Generic Failure" msgid "Generic Failure"
msgstr "" msgstr ""
@ -1267,8 +1268,7 @@ msgstr ""
msgid "Invalid MAC address" msgid "Invalid MAC address"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c py/moduerrno.c
#: py/moduerrno.c
msgid "Invalid argument" msgid "Invalid argument"
msgstr "Argumen tidak valid" msgstr "Argumen tidak valid"
@ -1294,7 +1294,7 @@ msgstr "Ukuran potongan format tidak valid"
msgid "Invalid multicast MAC address" msgid "Invalid multicast MAC address"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Invalid size" msgid "Invalid size"
msgstr "" msgstr ""
@ -1303,7 +1303,7 @@ msgstr ""
msgid "Invalid socket for TLS" msgid "Invalid socket for TLS"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Invalid state" msgid "Invalid state"
msgstr "" msgstr ""
@ -1335,7 +1335,7 @@ msgstr ""
msgid "Layer must be a Group or TileGrid subclass" msgid "Layer must be a Group or TileGrid subclass"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "MAC address was invalid" msgid "MAC address was invalid"
msgstr "" msgstr ""
@ -1696,11 +1696,11 @@ msgstr ""
msgid "Operation not permitted" msgid "Operation not permitted"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Operation or feature not supported" msgid "Operation or feature not supported"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Operation timed out" msgid "Operation timed out"
msgstr "Waktu habis" msgstr "Waktu habis"
@ -1708,7 +1708,7 @@ msgstr "Waktu habis"
msgid "Out of MDNS service slots" msgid "Out of MDNS service slots"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Out of memory" msgid "Out of memory"
msgstr "Kehabisan memori" msgstr "Kehabisan memori"
@ -1891,7 +1891,7 @@ msgstr "Baca-saja"
msgid "Read-only filesystem" msgid "Read-only filesystem"
msgstr "sistem file (filesystem) bersifat Read-only" msgstr "sistem file (filesystem) bersifat Read-only"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Received response was invalid" msgid "Received response was invalid"
msgstr "" msgstr ""
@ -1911,7 +1911,7 @@ msgstr ""
msgid "Requested AES mode is unsupported" msgid "Requested AES mode is unsupported"
msgstr "Mode AES yang diminta tidak didukung" msgstr "Mode AES yang diminta tidak didukung"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Requested resource not found" msgid "Requested resource not found"
msgstr "" msgstr ""
@ -2366,7 +2366,7 @@ msgstr "Panjang nilai != Panjang tetap yang dibutuhkan"
msgid "Value length > max_length" msgid "Value length > max_length"
msgstr "Panjang nilai > max_length" msgstr "Panjang nilai > max_length"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Version was invalid" msgid "Version was invalid"
msgstr "" msgstr ""

View File

@ -144,7 +144,7 @@ msgstr ""
msgid "%q init failed" msgid "%q init failed"
msgstr "" msgstr ""
#: shared-bindings/dualbank/__init__.c #: ports/espressif/bindings/espnow/Peer.c shared-bindings/dualbank/__init__.c
msgid "%q is %q" msgid "%q is %q"
msgstr "" msgstr ""
@ -242,7 +242,7 @@ msgstr ""
msgid "%q=%q" msgid "%q=%q"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
#, c-format #, c-format
msgid "%s error 0x%x" msgid "%s error 0x%x"
msgstr "" msgstr ""
@ -510,6 +510,7 @@ msgstr ""
msgid "Already have all-matches listener" msgid "Already have all-matches listener"
msgstr "" msgstr ""
#: ports/espressif/bindings/espnow/ESPNow.c
#: ports/espressif/common-hal/espulp/ULP.c #: ports/espressif/common-hal/espulp/ULP.c
#: shared-module/memorymonitor/AllocationAlarm.c #: shared-module/memorymonitor/AllocationAlarm.c
#: shared-module/memorymonitor/AllocationSize.c #: shared-module/memorymonitor/AllocationSize.c
@ -681,7 +682,7 @@ msgstr ""
msgid "CIRCUITPY drive could not be found or created." msgid "CIRCUITPY drive could not be found or created."
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "CRC or checksum was invalid" msgid "CRC or checksum was invalid"
msgstr "" msgstr ""
@ -1072,7 +1073,7 @@ msgstr ""
msgid "GNSS init" msgid "GNSS init"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Generic Failure" msgid "Generic Failure"
msgstr "" msgstr ""
@ -1255,8 +1256,7 @@ msgstr ""
msgid "Invalid MAC address" msgid "Invalid MAC address"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c py/moduerrno.c
#: py/moduerrno.c
msgid "Invalid argument" msgid "Invalid argument"
msgstr "" msgstr ""
@ -1282,7 +1282,7 @@ msgstr ""
msgid "Invalid multicast MAC address" msgid "Invalid multicast MAC address"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Invalid size" msgid "Invalid size"
msgstr "" msgstr ""
@ -1291,7 +1291,7 @@ msgstr ""
msgid "Invalid socket for TLS" msgid "Invalid socket for TLS"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Invalid state" msgid "Invalid state"
msgstr "" msgstr ""
@ -1323,7 +1323,7 @@ msgstr ""
msgid "Layer must be a Group or TileGrid subclass" msgid "Layer must be a Group or TileGrid subclass"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "MAC address was invalid" msgid "MAC address was invalid"
msgstr "" msgstr ""
@ -1679,11 +1679,11 @@ msgstr ""
msgid "Operation not permitted" msgid "Operation not permitted"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Operation or feature not supported" msgid "Operation or feature not supported"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Operation timed out" msgid "Operation timed out"
msgstr "" msgstr ""
@ -1691,7 +1691,7 @@ msgstr ""
msgid "Out of MDNS service slots" msgid "Out of MDNS service slots"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Out of memory" msgid "Out of memory"
msgstr "" msgstr ""
@ -1867,7 +1867,7 @@ msgstr ""
msgid "Read-only filesystem" msgid "Read-only filesystem"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Received response was invalid" msgid "Received response was invalid"
msgstr "" msgstr ""
@ -1887,7 +1887,7 @@ msgstr ""
msgid "Requested AES mode is unsupported" msgid "Requested AES mode is unsupported"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Requested resource not found" msgid "Requested resource not found"
msgstr "" msgstr ""
@ -2338,7 +2338,7 @@ msgstr ""
msgid "Value length > max_length" msgid "Value length > max_length"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Version was invalid" msgid "Version was invalid"
msgstr "" msgstr ""

View File

@ -148,7 +148,7 @@ msgstr "Index %q je mimo rozsah"
msgid "%q init failed" msgid "%q init failed"
msgstr "Inicializace %q selhala" msgstr "Inicializace %q selhala"
#: shared-bindings/dualbank/__init__.c #: ports/espressif/bindings/espnow/Peer.c shared-bindings/dualbank/__init__.c
msgid "%q is %q" msgid "%q is %q"
msgstr "" msgstr ""
@ -246,7 +246,7 @@ msgstr "%q, %q, a %q musí mít všechny shodnou délku"
msgid "%q=%q" msgid "%q=%q"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
#, c-format #, c-format
msgid "%s error 0x%x" msgid "%s error 0x%x"
msgstr "%s chyba 0x%x" msgstr "%s chyba 0x%x"
@ -514,6 +514,7 @@ msgstr "Již propagujeme."
msgid "Already have all-matches listener" msgid "Already have all-matches listener"
msgstr "" msgstr ""
#: ports/espressif/bindings/espnow/ESPNow.c
#: ports/espressif/common-hal/espulp/ULP.c #: ports/espressif/common-hal/espulp/ULP.c
#: shared-module/memorymonitor/AllocationAlarm.c #: shared-module/memorymonitor/AllocationAlarm.c
#: shared-module/memorymonitor/AllocationSize.c #: shared-module/memorymonitor/AllocationSize.c
@ -687,7 +688,7 @@ msgstr "Bloky CBC musí být násobky 16 bajtů"
msgid "CIRCUITPY drive could not be found or created." msgid "CIRCUITPY drive could not be found or created."
msgstr "Disk CIRCUITPY nelze nalézt nebo vytvořit." msgstr "Disk CIRCUITPY nelze nalézt nebo vytvořit."
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "CRC or checksum was invalid" msgid "CRC or checksum was invalid"
msgstr "" msgstr ""
@ -1082,7 +1083,7 @@ msgstr "Funkce vyžaduje zámek"
msgid "GNSS init" msgid "GNSS init"
msgstr "Inicializace GNSS" msgstr "Inicializace GNSS"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Generic Failure" msgid "Generic Failure"
msgstr "Základní chyba" msgstr "Základní chyba"
@ -1267,8 +1268,7 @@ msgstr "Chybné BSSID"
msgid "Invalid MAC address" msgid "Invalid MAC address"
msgstr "Chybná MAC adresa" msgstr "Chybná MAC adresa"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c py/moduerrno.c
#: py/moduerrno.c
msgid "Invalid argument" msgid "Invalid argument"
msgstr "Neplatný argument" msgstr "Neplatný argument"
@ -1294,7 +1294,7 @@ msgstr "Neplatná velikost bloku"
msgid "Invalid multicast MAC address" msgid "Invalid multicast MAC address"
msgstr "Chybná multicastová MAC adresa" msgstr "Chybná multicastová MAC adresa"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Invalid size" msgid "Invalid size"
msgstr "Chybná velikost" msgstr "Chybná velikost"
@ -1303,7 +1303,7 @@ msgstr "Chybná velikost"
msgid "Invalid socket for TLS" msgid "Invalid socket for TLS"
msgstr "Chybný soket pro TLS" msgstr "Chybný soket pro TLS"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Invalid state" msgid "Invalid state"
msgstr "Chybný stav" msgstr "Chybný stav"
@ -1335,7 +1335,7 @@ msgstr ""
msgid "Layer must be a Group or TileGrid subclass" msgid "Layer must be a Group or TileGrid subclass"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "MAC address was invalid" msgid "MAC address was invalid"
msgstr "MAC adresa byla chybná" msgstr "MAC adresa byla chybná"
@ -1692,11 +1692,11 @@ msgstr ""
msgid "Operation not permitted" msgid "Operation not permitted"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Operation or feature not supported" msgid "Operation or feature not supported"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Operation timed out" msgid "Operation timed out"
msgstr "" msgstr ""
@ -1704,7 +1704,7 @@ msgstr ""
msgid "Out of MDNS service slots" msgid "Out of MDNS service slots"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Out of memory" msgid "Out of memory"
msgstr "" msgstr ""
@ -1882,7 +1882,7 @@ msgstr ""
msgid "Read-only filesystem" msgid "Read-only filesystem"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Received response was invalid" msgid "Received response was invalid"
msgstr "" msgstr ""
@ -1902,7 +1902,7 @@ msgstr ""
msgid "Requested AES mode is unsupported" msgid "Requested AES mode is unsupported"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Requested resource not found" msgid "Requested resource not found"
msgstr "" msgstr ""
@ -2353,7 +2353,7 @@ msgstr ""
msgid "Value length > max_length" msgid "Value length > max_length"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Version was invalid" msgid "Version was invalid"
msgstr "" msgstr ""

View File

@ -155,7 +155,7 @@ msgstr "Der Index %q befindet sich außerhalb des Bereiches"
msgid "%q init failed" msgid "%q init failed"
msgstr "%q Initialisierung ist gescheitert" msgstr "%q Initialisierung ist gescheitert"
#: shared-bindings/dualbank/__init__.c #: ports/espressif/bindings/espnow/Peer.c shared-bindings/dualbank/__init__.c
msgid "%q is %q" msgid "%q is %q"
msgstr "%q ist %q" msgstr "%q ist %q"
@ -255,7 +255,7 @@ msgstr "%q, %q und %q müssen alle die gleiche Länge haben"
msgid "%q=%q" msgid "%q=%q"
msgstr "%q=%q" msgstr "%q=%q"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
#, c-format #, c-format
msgid "%s error 0x%x" msgid "%s error 0x%x"
msgstr "%s Fehler 0x%x" msgstr "%s Fehler 0x%x"
@ -523,6 +523,7 @@ msgstr "Bereits am Anbieten (advertising)."
msgid "Already have all-matches listener" msgid "Already have all-matches listener"
msgstr "All-Matchers-Listener bereits vorhanden" msgstr "All-Matchers-Listener bereits vorhanden"
#: ports/espressif/bindings/espnow/ESPNow.c
#: ports/espressif/common-hal/espulp/ULP.c #: ports/espressif/common-hal/espulp/ULP.c
#: shared-module/memorymonitor/AllocationAlarm.c #: shared-module/memorymonitor/AllocationAlarm.c
#: shared-module/memorymonitor/AllocationSize.c #: shared-module/memorymonitor/AllocationSize.c
@ -696,7 +697,7 @@ msgstr "CBC-Blöcke müssen ein Vielfaches von 16 Bytes sein"
msgid "CIRCUITPY drive could not be found or created." msgid "CIRCUITPY drive could not be found or created."
msgstr "CIRCUITPY-Laufwerk konnte nicht gefunden oder erzeugt werden." msgstr "CIRCUITPY-Laufwerk konnte nicht gefunden oder erzeugt werden."
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "CRC or checksum was invalid" msgid "CRC or checksum was invalid"
msgstr "CRC oder Checksumme ungültig" msgstr "CRC oder Checksumme ungültig"
@ -1101,7 +1102,7 @@ msgstr "Die Funktion erwartet, dass der 'lock'-Befehl zuvor ausgeführt wurde"
msgid "GNSS init" msgid "GNSS init"
msgstr "GNSS-Initialisierung" msgstr "GNSS-Initialisierung"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Generic Failure" msgid "Generic Failure"
msgstr "Generischer Fehler" msgstr "Generischer Fehler"
@ -1290,8 +1291,7 @@ msgstr "Ungültige BSSID"
msgid "Invalid MAC address" msgid "Invalid MAC address"
msgstr "Ungültige MAC-Adresse" msgstr "Ungültige MAC-Adresse"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c py/moduerrno.c
#: py/moduerrno.c
msgid "Invalid argument" msgid "Invalid argument"
msgstr "Ungültiges Argument" msgstr "Ungültiges Argument"
@ -1317,7 +1317,7 @@ msgstr "Ungültige format chunk size"
msgid "Invalid multicast MAC address" msgid "Invalid multicast MAC address"
msgstr "Ungültige Multicast-MAC-Adresse" msgstr "Ungültige Multicast-MAC-Adresse"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Invalid size" msgid "Invalid size"
msgstr "Ungültige Größe" msgstr "Ungültige Größe"
@ -1326,7 +1326,7 @@ msgstr "Ungültige Größe"
msgid "Invalid socket for TLS" msgid "Invalid socket for TLS"
msgstr "Ungültiges Socket für TLS" msgstr "Ungültiges Socket für TLS"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Invalid state" msgid "Invalid state"
msgstr "Ungültiger Zustand" msgstr "Ungültiger Zustand"
@ -1358,7 +1358,7 @@ msgstr "Ebene ist bereits in der Gruppe"
msgid "Layer must be a Group or TileGrid subclass" msgid "Layer must be a Group or TileGrid subclass"
msgstr "Ebene muss eine Gruppe oder eine TileGrid Subklasse sein" msgstr "Ebene muss eine Gruppe oder eine TileGrid Subklasse sein"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "MAC address was invalid" msgid "MAC address was invalid"
msgstr "MAC Adresse war ungültig" msgstr "MAC Adresse war ungültig"
@ -1721,11 +1721,11 @@ msgstr "Nur eine Farbe kann transparent sein zu einer Zeit"
msgid "Operation not permitted" msgid "Operation not permitted"
msgstr "Operation nicht erlaubt" msgstr "Operation nicht erlaubt"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Operation or feature not supported" msgid "Operation or feature not supported"
msgstr "Vorgang oder Funktion wird nicht unterstützt" msgstr "Vorgang oder Funktion wird nicht unterstützt"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Operation timed out" msgid "Operation timed out"
msgstr "Zeit für Vorgang abgelaufen" msgstr "Zeit für Vorgang abgelaufen"
@ -1733,7 +1733,7 @@ msgstr "Zeit für Vorgang abgelaufen"
msgid "Out of MDNS service slots" msgid "Out of MDNS service slots"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Out of memory" msgid "Out of memory"
msgstr "Kein Speicher mehr verfügbar" msgstr "Kein Speicher mehr verfügbar"
@ -1915,7 +1915,7 @@ msgstr "Nur lesen möglich, da Schreibgeschützt"
msgid "Read-only filesystem" msgid "Read-only filesystem"
msgstr "Schreibgeschützte Dateisystem" msgstr "Schreibgeschützte Dateisystem"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Received response was invalid" msgid "Received response was invalid"
msgstr "Erhaltene Antwort ist ungültig" msgstr "Erhaltene Antwort ist ungültig"
@ -1935,7 +1935,7 @@ msgstr "RemoteTransmissionRequests limitiert auf 8 Bytes"
msgid "Requested AES mode is unsupported" msgid "Requested AES mode is unsupported"
msgstr "Der angeforderte AES-Modus wird nicht unterstützt" msgstr "Der angeforderte AES-Modus wird nicht unterstützt"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Requested resource not found" msgid "Requested resource not found"
msgstr "Angefragte Ressource nicht gefunden" msgstr "Angefragte Ressource nicht gefunden"
@ -2396,7 +2396,7 @@ msgstr "Wert Länge != Erforderliche feste Länge"
msgid "Value length > max_length" msgid "Value length > max_length"
msgstr "Länge des Wertes > max_length" msgstr "Länge des Wertes > max_length"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Version was invalid" msgid "Version was invalid"
msgstr "Version ist ungültig" msgstr "Version ist ungültig"

View File

@ -152,7 +152,7 @@ msgstr "%q δείκτης εκτός εμβέλειας"
msgid "%q init failed" msgid "%q init failed"
msgstr "%q εκκίνηση απέτυχε" msgstr "%q εκκίνηση απέτυχε"
#: shared-bindings/dualbank/__init__.c #: ports/espressif/bindings/espnow/Peer.c shared-bindings/dualbank/__init__.c
msgid "%q is %q" msgid "%q is %q"
msgstr "" msgstr ""
@ -250,7 +250,7 @@ msgstr "%q, %q, και %q πρέπει να είναι όλα του ιδίου
msgid "%q=%q" msgid "%q=%q"
msgstr "%q=%q" msgstr "%q=%q"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
#, c-format #, c-format
msgid "%s error 0x%x" msgid "%s error 0x%x"
msgstr "%s σφάλμα 0x%x" msgstr "%s σφάλμα 0x%x"
@ -519,6 +519,7 @@ msgstr "Ήδη διαφημίζουμε."
msgid "Already have all-matches listener" msgid "Already have all-matches listener"
msgstr "Ύπάρχει ήδη all-matches ακροατής" msgstr "Ύπάρχει ήδη all-matches ακροατής"
#: ports/espressif/bindings/espnow/ESPNow.c
#: ports/espressif/common-hal/espulp/ULP.c #: ports/espressif/common-hal/espulp/ULP.c
#: shared-module/memorymonitor/AllocationAlarm.c #: shared-module/memorymonitor/AllocationAlarm.c
#: shared-module/memorymonitor/AllocationSize.c #: shared-module/memorymonitor/AllocationSize.c
@ -692,7 +693,7 @@ msgstr "CBC blocks πρέπει να είναι πολλαπλάσια του 16
msgid "CIRCUITPY drive could not be found or created." msgid "CIRCUITPY drive could not be found or created."
msgstr "Ο CIRCUITPY δίσκος δεν μπόρεσε να βρεθεί ή να δημιουργηθεί." msgstr "Ο CIRCUITPY δίσκος δεν μπόρεσε να βρεθεί ή να δημιουργηθεί."
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "CRC or checksum was invalid" msgid "CRC or checksum was invalid"
msgstr "CRC ή checksum ήταν άκυρο" msgstr "CRC ή checksum ήταν άκυρο"
@ -1093,7 +1094,7 @@ msgstr ""
msgid "GNSS init" msgid "GNSS init"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Generic Failure" msgid "Generic Failure"
msgstr "" msgstr ""
@ -1276,8 +1277,7 @@ msgstr ""
msgid "Invalid MAC address" msgid "Invalid MAC address"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c py/moduerrno.c
#: py/moduerrno.c
msgid "Invalid argument" msgid "Invalid argument"
msgstr "" msgstr ""
@ -1303,7 +1303,7 @@ msgstr ""
msgid "Invalid multicast MAC address" msgid "Invalid multicast MAC address"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Invalid size" msgid "Invalid size"
msgstr "" msgstr ""
@ -1312,7 +1312,7 @@ msgstr ""
msgid "Invalid socket for TLS" msgid "Invalid socket for TLS"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Invalid state" msgid "Invalid state"
msgstr "" msgstr ""
@ -1344,7 +1344,7 @@ msgstr ""
msgid "Layer must be a Group or TileGrid subclass" msgid "Layer must be a Group or TileGrid subclass"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "MAC address was invalid" msgid "MAC address was invalid"
msgstr "" msgstr ""
@ -1700,11 +1700,11 @@ msgstr ""
msgid "Operation not permitted" msgid "Operation not permitted"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Operation or feature not supported" msgid "Operation or feature not supported"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Operation timed out" msgid "Operation timed out"
msgstr "" msgstr ""
@ -1712,7 +1712,7 @@ msgstr ""
msgid "Out of MDNS service slots" msgid "Out of MDNS service slots"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Out of memory" msgid "Out of memory"
msgstr "" msgstr ""
@ -1890,7 +1890,7 @@ msgstr ""
msgid "Read-only filesystem" msgid "Read-only filesystem"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Received response was invalid" msgid "Received response was invalid"
msgstr "" msgstr ""
@ -1910,7 +1910,7 @@ msgstr ""
msgid "Requested AES mode is unsupported" msgid "Requested AES mode is unsupported"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Requested resource not found" msgid "Requested resource not found"
msgstr "" msgstr ""
@ -2361,7 +2361,7 @@ msgstr ""
msgid "Value length > max_length" msgid "Value length > max_length"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Version was invalid" msgid "Version was invalid"
msgstr "" msgstr ""

View File

@ -151,7 +151,7 @@ msgstr "%q index out of range"
msgid "%q init failed" msgid "%q init failed"
msgstr "" msgstr ""
#: shared-bindings/dualbank/__init__.c #: ports/espressif/bindings/espnow/Peer.c shared-bindings/dualbank/__init__.c
msgid "%q is %q" msgid "%q is %q"
msgstr "" msgstr ""
@ -249,7 +249,7 @@ msgstr "%q, %q, and %q must all be the same length"
msgid "%q=%q" msgid "%q=%q"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
#, c-format #, c-format
msgid "%s error 0x%x" msgid "%s error 0x%x"
msgstr "%s error 0x%x" msgstr "%s error 0x%x"
@ -517,6 +517,7 @@ msgstr "Already advertising."
msgid "Already have all-matches listener" msgid "Already have all-matches listener"
msgstr "Already have all-matches listener" msgstr "Already have all-matches listener"
#: ports/espressif/bindings/espnow/ESPNow.c
#: ports/espressif/common-hal/espulp/ULP.c #: ports/espressif/common-hal/espulp/ULP.c
#: shared-module/memorymonitor/AllocationAlarm.c #: shared-module/memorymonitor/AllocationAlarm.c
#: shared-module/memorymonitor/AllocationSize.c #: shared-module/memorymonitor/AllocationSize.c
@ -690,7 +691,7 @@ msgstr "CBC blocks must be multiples of 16 bytes"
msgid "CIRCUITPY drive could not be found or created." msgid "CIRCUITPY drive could not be found or created."
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "CRC or checksum was invalid" msgid "CRC or checksum was invalid"
msgstr "CRC or checksum was invalid" msgstr "CRC or checksum was invalid"
@ -1083,7 +1084,7 @@ msgstr "Function requires lock"
msgid "GNSS init" msgid "GNSS init"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Generic Failure" msgid "Generic Failure"
msgstr "Generic Failure" msgstr "Generic Failure"
@ -1268,8 +1269,7 @@ msgstr "Invalid BSSID"
msgid "Invalid MAC address" msgid "Invalid MAC address"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c py/moduerrno.c
#: py/moduerrno.c
msgid "Invalid argument" msgid "Invalid argument"
msgstr "Invalid argument" msgstr "Invalid argument"
@ -1295,7 +1295,7 @@ msgstr "Invalid format chunk size"
msgid "Invalid multicast MAC address" msgid "Invalid multicast MAC address"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Invalid size" msgid "Invalid size"
msgstr "Invalid size" msgstr "Invalid size"
@ -1304,7 +1304,7 @@ msgstr "Invalid size"
msgid "Invalid socket for TLS" msgid "Invalid socket for TLS"
msgstr "Invalid socket for TLS" msgstr "Invalid socket for TLS"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Invalid state" msgid "Invalid state"
msgstr "Invalid state" msgstr "Invalid state"
@ -1336,7 +1336,7 @@ msgstr ""
msgid "Layer must be a Group or TileGrid subclass" msgid "Layer must be a Group or TileGrid subclass"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "MAC address was invalid" msgid "MAC address was invalid"
msgstr "MAC address was invalid" msgstr "MAC address was invalid"
@ -1696,11 +1696,11 @@ msgstr "Only one colour can be transparent at a time"
msgid "Operation not permitted" msgid "Operation not permitted"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Operation or feature not supported" msgid "Operation or feature not supported"
msgstr "Operation or feature not supported" msgstr "Operation or feature not supported"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Operation timed out" msgid "Operation timed out"
msgstr "Operation timed out" msgstr "Operation timed out"
@ -1708,7 +1708,7 @@ msgstr "Operation timed out"
msgid "Out of MDNS service slots" msgid "Out of MDNS service slots"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Out of memory" msgid "Out of memory"
msgstr "Out of memory" msgstr "Out of memory"
@ -1888,7 +1888,7 @@ msgstr "Read-only"
msgid "Read-only filesystem" msgid "Read-only filesystem"
msgstr "Read-only filesystem" msgstr "Read-only filesystem"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Received response was invalid" msgid "Received response was invalid"
msgstr "Received response was invalid" msgstr "Received response was invalid"
@ -1908,7 +1908,7 @@ msgstr "RemoteTransmissionRequests limited to 8 bytes"
msgid "Requested AES mode is unsupported" msgid "Requested AES mode is unsupported"
msgstr "Requested AES mode is unsupported" msgstr "Requested AES mode is unsupported"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Requested resource not found" msgid "Requested resource not found"
msgstr "Requested resource not found" msgstr "Requested resource not found"
@ -2361,7 +2361,7 @@ msgstr "Value length != required fixed length"
msgid "Value length > max_length" msgid "Value length > max_length"
msgstr "Value length > max_length" msgstr "Value length > max_length"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Version was invalid" msgid "Version was invalid"
msgstr "Version was invalid" msgstr "Version was invalid"

View File

@ -163,7 +163,7 @@ msgstr "%q índice fuera de rango"
msgid "%q init failed" msgid "%q init failed"
msgstr "%q inicializado fallido" msgstr "%q inicializado fallido"
#: shared-bindings/dualbank/__init__.c #: ports/espressif/bindings/espnow/Peer.c shared-bindings/dualbank/__init__.c
msgid "%q is %q" msgid "%q is %q"
msgstr "%q es %q" msgstr "%q es %q"
@ -261,7 +261,7 @@ msgstr "%q, %q, y %q deben tener la misma longitud"
msgid "%q=%q" msgid "%q=%q"
msgstr "%q=%q" msgstr "%q=%q"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
#, c-format #, c-format
msgid "%s error 0x%x" msgid "%s error 0x%x"
msgstr "%s error 0x%x" msgstr "%s error 0x%x"
@ -531,6 +531,7 @@ msgstr "Ya se encuentra publicando."
msgid "Already have all-matches listener" msgid "Already have all-matches listener"
msgstr "Ya se tiene un escucha de todas las coincidencias" msgstr "Ya se tiene un escucha de todas las coincidencias"
#: ports/espressif/bindings/espnow/ESPNow.c
#: ports/espressif/common-hal/espulp/ULP.c #: ports/espressif/common-hal/espulp/ULP.c
#: shared-module/memorymonitor/AllocationAlarm.c #: shared-module/memorymonitor/AllocationAlarm.c
#: shared-module/memorymonitor/AllocationSize.c #: shared-module/memorymonitor/AllocationSize.c
@ -706,7 +707,7 @@ msgstr "Los bloques CBC deben ser múltiplos de 16 bytes"
msgid "CIRCUITPY drive could not be found or created." msgid "CIRCUITPY drive could not be found or created."
msgstr "El dispositivo CIRCUITPY no pudo ser encontrado o creado." msgstr "El dispositivo CIRCUITPY no pudo ser encontrado o creado."
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "CRC or checksum was invalid" msgid "CRC or checksum was invalid"
msgstr "CRC o suma de comprobación inválida" msgstr "CRC o suma de comprobación inválida"
@ -1112,7 +1113,7 @@ msgstr "La función requiere lock"
msgid "GNSS init" msgid "GNSS init"
msgstr "Inicialización GNSS" msgstr "Inicialización GNSS"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Generic Failure" msgid "Generic Failure"
msgstr "Fallo Genérico" msgstr "Fallo Genérico"
@ -1305,8 +1306,7 @@ msgstr "BSSID inválido"
msgid "Invalid MAC address" msgid "Invalid MAC address"
msgstr "Dirección MAC inválida" msgstr "Dirección MAC inválida"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c py/moduerrno.c
#: py/moduerrno.c
msgid "Invalid argument" msgid "Invalid argument"
msgstr "Argumento inválido" msgstr "Argumento inválido"
@ -1332,7 +1332,7 @@ msgstr "Formato de fragmento de formato no válido"
msgid "Invalid multicast MAC address" msgid "Invalid multicast MAC address"
msgstr "Dirección MAC de multidifusión inválida" msgstr "Dirección MAC de multidifusión inválida"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Invalid size" msgid "Invalid size"
msgstr "Tamaño incorrecto" msgstr "Tamaño incorrecto"
@ -1341,7 +1341,7 @@ msgstr "Tamaño incorrecto"
msgid "Invalid socket for TLS" msgid "Invalid socket for TLS"
msgstr "socket invalido para TLS" msgstr "socket invalido para TLS"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Invalid state" msgid "Invalid state"
msgstr "Estado invalido" msgstr "Estado invalido"
@ -1373,7 +1373,7 @@ msgstr "El Layer ya esta en un grupo"
msgid "Layer must be a Group or TileGrid subclass" msgid "Layer must be a Group or TileGrid subclass"
msgstr "El Layer debe ser un grupo o una subclase de TileGrid" msgstr "El Layer debe ser un grupo o una subclase de TileGrid"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "MAC address was invalid" msgid "MAC address was invalid"
msgstr "La dirección MAC es incorrecta" msgstr "La dirección MAC es incorrecta"
@ -1739,11 +1739,11 @@ msgstr "Solo un color puede ser transparente a la vez"
msgid "Operation not permitted" msgid "Operation not permitted"
msgstr "La operación no es permitida" msgstr "La operación no es permitida"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Operation or feature not supported" msgid "Operation or feature not supported"
msgstr "Operación no característica no soportada" msgstr "Operación no característica no soportada"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Operation timed out" msgid "Operation timed out"
msgstr "Tiempo de espera agotado" msgstr "Tiempo de espera agotado"
@ -1751,7 +1751,7 @@ msgstr "Tiempo de espera agotado"
msgid "Out of MDNS service slots" msgid "Out of MDNS service slots"
msgstr "No hay slots MDNS de servicio" msgstr "No hay slots MDNS de servicio"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Out of memory" msgid "Out of memory"
msgstr "Memoria agotada" msgstr "Memoria agotada"
@ -1935,7 +1935,7 @@ msgstr "Solo-lectura"
msgid "Read-only filesystem" msgid "Read-only filesystem"
msgstr "Sistema de archivos de solo-Lectura" msgstr "Sistema de archivos de solo-Lectura"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Received response was invalid" msgid "Received response was invalid"
msgstr "La respuesta recibida es invalida" msgstr "La respuesta recibida es invalida"
@ -1955,7 +1955,7 @@ msgstr "RemoteTransmissionRequests limitado a 8 bytes"
msgid "Requested AES mode is unsupported" msgid "Requested AES mode is unsupported"
msgstr "El modo AES solicitado no es compatible" msgstr "El modo AES solicitado no es compatible"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Requested resource not found" msgid "Requested resource not found"
msgstr "Recurso solicitado no encontrado" msgstr "Recurso solicitado no encontrado"
@ -2416,7 +2416,7 @@ msgstr "Tamaño del valor != del tamaño fijo requerido"
msgid "Value length > max_length" msgid "Value length > max_length"
msgstr "Tamaño de valor > max_length" msgstr "Tamaño de valor > max_length"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Version was invalid" msgid "Version was invalid"
msgstr "La versión era invalida" msgstr "La versión era invalida"

View File

@ -145,7 +145,7 @@ msgstr "%q indeks wala sa sakop"
msgid "%q init failed" msgid "%q init failed"
msgstr "" msgstr ""
#: shared-bindings/dualbank/__init__.c #: ports/espressif/bindings/espnow/Peer.c shared-bindings/dualbank/__init__.c
msgid "%q is %q" msgid "%q is %q"
msgstr "" msgstr ""
@ -244,7 +244,7 @@ msgstr ""
msgid "%q=%q" msgid "%q=%q"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
#, c-format #, c-format
msgid "%s error 0x%x" msgid "%s error 0x%x"
msgstr "" msgstr ""
@ -513,6 +513,7 @@ msgstr ""
msgid "Already have all-matches listener" msgid "Already have all-matches listener"
msgstr "" msgstr ""
#: ports/espressif/bindings/espnow/ESPNow.c
#: ports/espressif/common-hal/espulp/ULP.c #: ports/espressif/common-hal/espulp/ULP.c
#: shared-module/memorymonitor/AllocationAlarm.c #: shared-module/memorymonitor/AllocationAlarm.c
#: shared-module/memorymonitor/AllocationSize.c #: shared-module/memorymonitor/AllocationSize.c
@ -687,7 +688,7 @@ msgstr ""
msgid "CIRCUITPY drive could not be found or created." msgid "CIRCUITPY drive could not be found or created."
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "CRC or checksum was invalid" msgid "CRC or checksum was invalid"
msgstr "" msgstr ""
@ -1082,7 +1083,7 @@ msgstr "Function nangangailangan ng lock"
msgid "GNSS init" msgid "GNSS init"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Generic Failure" msgid "Generic Failure"
msgstr "" msgstr ""
@ -1267,8 +1268,7 @@ msgstr ""
msgid "Invalid MAC address" msgid "Invalid MAC address"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c py/moduerrno.c
#: py/moduerrno.c
msgid "Invalid argument" msgid "Invalid argument"
msgstr "Maling argumento" msgstr "Maling argumento"
@ -1294,7 +1294,7 @@ msgstr "Mali ang format ng chunk size"
msgid "Invalid multicast MAC address" msgid "Invalid multicast MAC address"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Invalid size" msgid "Invalid size"
msgstr "" msgstr ""
@ -1303,7 +1303,7 @@ msgstr ""
msgid "Invalid socket for TLS" msgid "Invalid socket for TLS"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Invalid state" msgid "Invalid state"
msgstr "" msgstr ""
@ -1335,7 +1335,7 @@ msgstr ""
msgid "Layer must be a Group or TileGrid subclass" msgid "Layer must be a Group or TileGrid subclass"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "MAC address was invalid" msgid "MAC address was invalid"
msgstr "" msgstr ""
@ -1694,11 +1694,11 @@ msgstr ""
msgid "Operation not permitted" msgid "Operation not permitted"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Operation or feature not supported" msgid "Operation or feature not supported"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Operation timed out" msgid "Operation timed out"
msgstr "" msgstr ""
@ -1706,7 +1706,7 @@ msgstr ""
msgid "Out of MDNS service slots" msgid "Out of MDNS service slots"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Out of memory" msgid "Out of memory"
msgstr "" msgstr ""
@ -1883,7 +1883,7 @@ msgstr "Basahin-lamang"
msgid "Read-only filesystem" msgid "Read-only filesystem"
msgstr "Basahin-lamang mode" msgstr "Basahin-lamang mode"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Received response was invalid" msgid "Received response was invalid"
msgstr "" msgstr ""
@ -1903,7 +1903,7 @@ msgstr ""
msgid "Requested AES mode is unsupported" msgid "Requested AES mode is unsupported"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Requested resource not found" msgid "Requested resource not found"
msgstr "" msgstr ""
@ -2356,7 +2356,7 @@ msgstr ""
msgid "Value length > max_length" msgid "Value length > max_length"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Version was invalid" msgid "Version was invalid"
msgstr "" msgstr ""

View File

@ -160,7 +160,7 @@ msgstr "index %q hors de portée"
msgid "%q init failed" msgid "%q init failed"
msgstr "échec de l'initialisation %q" msgstr "échec de l'initialisation %q"
#: shared-bindings/dualbank/__init__.c #: ports/espressif/bindings/espnow/Peer.c shared-bindings/dualbank/__init__.c
msgid "%q is %q" msgid "%q is %q"
msgstr "" msgstr ""
@ -258,7 +258,7 @@ msgstr "%q, %q, et %q doivent tous être de la même longueur"
msgid "%q=%q" msgid "%q=%q"
msgstr "%q=%q" msgstr "%q=%q"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
#, c-format #, c-format
msgid "%s error 0x%x" msgid "%s error 0x%x"
msgstr "%s erreur 0x%x" msgstr "%s erreur 0x%x"
@ -526,6 +526,7 @@ msgstr "S'annonce déjà."
msgid "Already have all-matches listener" msgid "Already have all-matches listener"
msgstr "Il y a déjà un auditeur all-matches" msgstr "Il y a déjà un auditeur all-matches"
#: ports/espressif/bindings/espnow/ESPNow.c
#: ports/espressif/common-hal/espulp/ULP.c #: ports/espressif/common-hal/espulp/ULP.c
#: shared-module/memorymonitor/AllocationAlarm.c #: shared-module/memorymonitor/AllocationAlarm.c
#: shared-module/memorymonitor/AllocationSize.c #: shared-module/memorymonitor/AllocationSize.c
@ -701,7 +702,7 @@ msgstr "Les blocs CBC doivent être des multiples de 16 octets"
msgid "CIRCUITPY drive could not be found or created." msgid "CIRCUITPY drive could not be found or created."
msgstr "L'appareil CIRCUITPY ne peut pas être trouvé ou créé." msgstr "L'appareil CIRCUITPY ne peut pas être trouvé ou créé."
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "CRC or checksum was invalid" msgid "CRC or checksum was invalid"
msgstr "CRC ou somme de contrôle invalide" msgstr "CRC ou somme de contrôle invalide"
@ -1115,7 +1116,7 @@ msgstr "La fonction nécessite un verrou ('lock')"
msgid "GNSS init" msgid "GNSS init"
msgstr "Initialisation GNSS" msgstr "Initialisation GNSS"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Generic Failure" msgid "Generic Failure"
msgstr "Échec génerique" msgstr "Échec génerique"
@ -1311,8 +1312,7 @@ msgstr "BSSID invalide"
msgid "Invalid MAC address" msgid "Invalid MAC address"
msgstr "Adresse MAC invalide" msgstr "Adresse MAC invalide"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c py/moduerrno.c
#: py/moduerrno.c
msgid "Invalid argument" msgid "Invalid argument"
msgstr "Paramètre invalide" msgstr "Paramètre invalide"
@ -1338,7 +1338,7 @@ msgstr "Taille de bloc de formatage invalide"
msgid "Invalid multicast MAC address" msgid "Invalid multicast MAC address"
msgstr "Adresse MAC multicast invalide" msgstr "Adresse MAC multicast invalide"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Invalid size" msgid "Invalid size"
msgstr "Taille invalide" msgstr "Taille invalide"
@ -1347,7 +1347,7 @@ msgstr "Taille invalide"
msgid "Invalid socket for TLS" msgid "Invalid socket for TLS"
msgstr "Socket non valide pour TLS" msgstr "Socket non valide pour TLS"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Invalid state" msgid "Invalid state"
msgstr "État invalide" msgstr "État invalide"
@ -1379,7 +1379,7 @@ msgstr "Ce calque est déjà dans un groupe"
msgid "Layer must be a Group or TileGrid subclass" msgid "Layer must be a Group or TileGrid subclass"
msgstr "Le calque doit être une sous-classe de Group ou TileGrid" msgstr "Le calque doit être une sous-classe de Group ou TileGrid"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "MAC address was invalid" msgid "MAC address was invalid"
msgstr "Adresse physique (MAC) invalide" msgstr "Adresse physique (MAC) invalide"
@ -1745,11 +1745,11 @@ msgstr "Une seule couleur peut être transparente à la fois"
msgid "Operation not permitted" msgid "Operation not permitted"
msgstr "Cette opération n'est pas permise" msgstr "Cette opération n'est pas permise"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Operation or feature not supported" msgid "Operation or feature not supported"
msgstr "Opération ou fonction non supportée" msgstr "Opération ou fonction non supportée"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Operation timed out" msgid "Operation timed out"
msgstr "Timeout de l'opération" msgstr "Timeout de l'opération"
@ -1757,7 +1757,7 @@ msgstr "Timeout de l'opération"
msgid "Out of MDNS service slots" msgid "Out of MDNS service slots"
msgstr "À cours de services MDNS" msgstr "À cours de services MDNS"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Out of memory" msgid "Out of memory"
msgstr "Mémoire insuffisante" msgstr "Mémoire insuffisante"
@ -1942,7 +1942,7 @@ msgstr "Lecture seule"
msgid "Read-only filesystem" msgid "Read-only filesystem"
msgstr "Système de fichier en lecture seule" msgstr "Système de fichier en lecture seule"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Received response was invalid" msgid "Received response was invalid"
msgstr "Réponse reçue invalide" msgstr "Réponse reçue invalide"
@ -1962,7 +1962,7 @@ msgstr "RemoteTransmissionRequests limité à 8 octets"
msgid "Requested AES mode is unsupported" msgid "Requested AES mode is unsupported"
msgstr "Le mode AES demandé n'est pas supporté" msgstr "Le mode AES demandé n'est pas supporté"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Requested resource not found" msgid "Requested resource not found"
msgstr "Resource demandée non trouvée" msgstr "Resource demandée non trouvée"
@ -2423,7 +2423,7 @@ msgstr "Longueur de valeur != Longueur fixe requise"
msgid "Value length > max_length" msgid "Value length > max_length"
msgstr "Longueur de la valeur > max_length" msgstr "Longueur de la valeur > max_length"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Version was invalid" msgid "Version was invalid"
msgstr "Version est invalide" msgstr "Version est invalide"

View File

@ -144,7 +144,7 @@ msgstr ""
msgid "%q init failed" msgid "%q init failed"
msgstr "" msgstr ""
#: shared-bindings/dualbank/__init__.c #: ports/espressif/bindings/espnow/Peer.c shared-bindings/dualbank/__init__.c
msgid "%q is %q" msgid "%q is %q"
msgstr "" msgstr ""
@ -242,7 +242,7 @@ msgstr ""
msgid "%q=%q" msgid "%q=%q"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
#, c-format #, c-format
msgid "%s error 0x%x" msgid "%s error 0x%x"
msgstr "" msgstr ""
@ -510,6 +510,7 @@ msgstr ""
msgid "Already have all-matches listener" msgid "Already have all-matches listener"
msgstr "" msgstr ""
#: ports/espressif/bindings/espnow/ESPNow.c
#: ports/espressif/common-hal/espulp/ULP.c #: ports/espressif/common-hal/espulp/ULP.c
#: shared-module/memorymonitor/AllocationAlarm.c #: shared-module/memorymonitor/AllocationAlarm.c
#: shared-module/memorymonitor/AllocationSize.c #: shared-module/memorymonitor/AllocationSize.c
@ -681,7 +682,7 @@ msgstr ""
msgid "CIRCUITPY drive could not be found or created." msgid "CIRCUITPY drive could not be found or created."
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "CRC or checksum was invalid" msgid "CRC or checksum was invalid"
msgstr "" msgstr ""
@ -1072,7 +1073,7 @@ msgstr ""
msgid "GNSS init" msgid "GNSS init"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Generic Failure" msgid "Generic Failure"
msgstr "" msgstr ""
@ -1255,8 +1256,7 @@ msgstr ""
msgid "Invalid MAC address" msgid "Invalid MAC address"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c py/moduerrno.c
#: py/moduerrno.c
msgid "Invalid argument" msgid "Invalid argument"
msgstr "" msgstr ""
@ -1282,7 +1282,7 @@ msgstr ""
msgid "Invalid multicast MAC address" msgid "Invalid multicast MAC address"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Invalid size" msgid "Invalid size"
msgstr "" msgstr ""
@ -1291,7 +1291,7 @@ msgstr ""
msgid "Invalid socket for TLS" msgid "Invalid socket for TLS"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Invalid state" msgid "Invalid state"
msgstr "" msgstr ""
@ -1323,7 +1323,7 @@ msgstr ""
msgid "Layer must be a Group or TileGrid subclass" msgid "Layer must be a Group or TileGrid subclass"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "MAC address was invalid" msgid "MAC address was invalid"
msgstr "" msgstr ""
@ -1679,11 +1679,11 @@ msgstr ""
msgid "Operation not permitted" msgid "Operation not permitted"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Operation or feature not supported" msgid "Operation or feature not supported"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Operation timed out" msgid "Operation timed out"
msgstr "" msgstr ""
@ -1691,7 +1691,7 @@ msgstr ""
msgid "Out of MDNS service slots" msgid "Out of MDNS service slots"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Out of memory" msgid "Out of memory"
msgstr "" msgstr ""
@ -1867,7 +1867,7 @@ msgstr ""
msgid "Read-only filesystem" msgid "Read-only filesystem"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Received response was invalid" msgid "Received response was invalid"
msgstr "" msgstr ""
@ -1887,7 +1887,7 @@ msgstr ""
msgid "Requested AES mode is unsupported" msgid "Requested AES mode is unsupported"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Requested resource not found" msgid "Requested resource not found"
msgstr "" msgstr ""
@ -2338,7 +2338,7 @@ msgstr ""
msgid "Value length > max_length" msgid "Value length > max_length"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Version was invalid" msgid "Version was invalid"
msgstr "" msgstr ""

View File

@ -148,7 +148,7 @@ msgstr "indice %q fuori intervallo"
msgid "%q init failed" msgid "%q init failed"
msgstr "" msgstr ""
#: shared-bindings/dualbank/__init__.c #: ports/espressif/bindings/espnow/Peer.c shared-bindings/dualbank/__init__.c
msgid "%q is %q" msgid "%q is %q"
msgstr "" msgstr ""
@ -246,7 +246,7 @@ msgstr ""
msgid "%q=%q" msgid "%q=%q"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
#, c-format #, c-format
msgid "%s error 0x%x" msgid "%s error 0x%x"
msgstr "%s errore 0x%x" msgstr "%s errore 0x%x"
@ -516,6 +516,7 @@ msgstr ""
msgid "Already have all-matches listener" msgid "Already have all-matches listener"
msgstr "Già in possesso di tutti i listener abbinati" msgstr "Già in possesso di tutti i listener abbinati"
#: ports/espressif/bindings/espnow/ESPNow.c
#: ports/espressif/common-hal/espulp/ULP.c #: ports/espressif/common-hal/espulp/ULP.c
#: shared-module/memorymonitor/AllocationAlarm.c #: shared-module/memorymonitor/AllocationAlarm.c
#: shared-module/memorymonitor/AllocationSize.c #: shared-module/memorymonitor/AllocationSize.c
@ -690,7 +691,7 @@ msgstr "I blocchi CBC devono essere multipli di 16 bytes"
msgid "CIRCUITPY drive could not be found or created." msgid "CIRCUITPY drive could not be found or created."
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "CRC or checksum was invalid" msgid "CRC or checksum was invalid"
msgstr "CRC o controllo totale è risultato non valido" msgstr "CRC o controllo totale è risultato non valido"
@ -1084,7 +1085,7 @@ msgstr ""
msgid "GNSS init" msgid "GNSS init"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Generic Failure" msgid "Generic Failure"
msgstr "" msgstr ""
@ -1269,8 +1270,7 @@ msgstr ""
msgid "Invalid MAC address" msgid "Invalid MAC address"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c py/moduerrno.c
#: py/moduerrno.c
msgid "Invalid argument" msgid "Invalid argument"
msgstr "Argomento non valido" msgstr "Argomento non valido"
@ -1296,7 +1296,7 @@ msgstr ""
msgid "Invalid multicast MAC address" msgid "Invalid multicast MAC address"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Invalid size" msgid "Invalid size"
msgstr "" msgstr ""
@ -1305,7 +1305,7 @@ msgstr ""
msgid "Invalid socket for TLS" msgid "Invalid socket for TLS"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Invalid state" msgid "Invalid state"
msgstr "" msgstr ""
@ -1337,7 +1337,7 @@ msgstr ""
msgid "Layer must be a Group or TileGrid subclass" msgid "Layer must be a Group or TileGrid subclass"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "MAC address was invalid" msgid "MAC address was invalid"
msgstr "" msgstr ""
@ -1698,11 +1698,11 @@ msgstr ""
msgid "Operation not permitted" msgid "Operation not permitted"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Operation or feature not supported" msgid "Operation or feature not supported"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Operation timed out" msgid "Operation timed out"
msgstr "" msgstr ""
@ -1710,7 +1710,7 @@ msgstr ""
msgid "Out of MDNS service slots" msgid "Out of MDNS service slots"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Out of memory" msgid "Out of memory"
msgstr "" msgstr ""
@ -1890,7 +1890,7 @@ msgstr "Sola lettura"
msgid "Read-only filesystem" msgid "Read-only filesystem"
msgstr "Filesystem in sola lettura" msgstr "Filesystem in sola lettura"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Received response was invalid" msgid "Received response was invalid"
msgstr "" msgstr ""
@ -1910,7 +1910,7 @@ msgstr ""
msgid "Requested AES mode is unsupported" msgid "Requested AES mode is unsupported"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Requested resource not found" msgid "Requested resource not found"
msgstr "" msgstr ""
@ -2363,7 +2363,7 @@ msgstr ""
msgid "Value length > max_length" msgid "Value length > max_length"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Version was invalid" msgid "Version was invalid"
msgstr "" msgstr ""

View File

@ -151,7 +151,7 @@ msgstr "%q インデックスは範囲外"
msgid "%q init failed" msgid "%q init failed"
msgstr "%qは初期化には失敗" msgstr "%qは初期化には失敗"
#: shared-bindings/dualbank/__init__.c #: ports/espressif/bindings/espnow/Peer.c shared-bindings/dualbank/__init__.c
msgid "%q is %q" msgid "%q is %q"
msgstr "%qは%q" msgstr "%qは%q"
@ -249,7 +249,7 @@ msgstr ""
msgid "%q=%q" msgid "%q=%q"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
#, c-format #, c-format
msgid "%s error 0x%x" msgid "%s error 0x%x"
msgstr "" msgstr ""
@ -517,6 +517,7 @@ msgstr "すでにアドバータイズ中"
msgid "Already have all-matches listener" msgid "Already have all-matches listener"
msgstr "" msgstr ""
#: ports/espressif/bindings/espnow/ESPNow.c
#: ports/espressif/common-hal/espulp/ULP.c #: ports/espressif/common-hal/espulp/ULP.c
#: shared-module/memorymonitor/AllocationAlarm.c #: shared-module/memorymonitor/AllocationAlarm.c
#: shared-module/memorymonitor/AllocationSize.c #: shared-module/memorymonitor/AllocationSize.c
@ -690,7 +691,7 @@ msgstr "CBCブロックは16バイトの整数倍でなければなりません"
msgid "CIRCUITPY drive could not be found or created." msgid "CIRCUITPY drive could not be found or created."
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "CRC or checksum was invalid" msgid "CRC or checksum was invalid"
msgstr "" msgstr ""
@ -1083,7 +1084,7 @@ msgstr ""
msgid "GNSS init" msgid "GNSS init"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Generic Failure" msgid "Generic Failure"
msgstr "" msgstr ""
@ -1268,8 +1269,7 @@ msgstr "不正なBSSID"
msgid "Invalid MAC address" msgid "Invalid MAC address"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c py/moduerrno.c
#: py/moduerrno.c
msgid "Invalid argument" msgid "Invalid argument"
msgstr "不正な引数" msgstr "不正な引数"
@ -1295,7 +1295,7 @@ msgstr "フォーマットチャンクのサイズが不正"
msgid "Invalid multicast MAC address" msgid "Invalid multicast MAC address"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Invalid size" msgid "Invalid size"
msgstr "" msgstr ""
@ -1304,7 +1304,7 @@ msgstr ""
msgid "Invalid socket for TLS" msgid "Invalid socket for TLS"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Invalid state" msgid "Invalid state"
msgstr "" msgstr ""
@ -1336,7 +1336,7 @@ msgstr ""
msgid "Layer must be a Group or TileGrid subclass" msgid "Layer must be a Group or TileGrid subclass"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "MAC address was invalid" msgid "MAC address was invalid"
msgstr "" msgstr ""
@ -1694,11 +1694,11 @@ msgstr ""
msgid "Operation not permitted" msgid "Operation not permitted"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Operation or feature not supported" msgid "Operation or feature not supported"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Operation timed out" msgid "Operation timed out"
msgstr "" msgstr ""
@ -1706,7 +1706,7 @@ msgstr ""
msgid "Out of MDNS service slots" msgid "Out of MDNS service slots"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Out of memory" msgid "Out of memory"
msgstr "" msgstr ""
@ -1883,7 +1883,7 @@ msgstr "読み込み専用"
msgid "Read-only filesystem" msgid "Read-only filesystem"
msgstr "読み込み専用のファイルシステム" msgstr "読み込み専用のファイルシステム"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Received response was invalid" msgid "Received response was invalid"
msgstr "" msgstr ""
@ -1903,7 +1903,7 @@ msgstr ""
msgid "Requested AES mode is unsupported" msgid "Requested AES mode is unsupported"
msgstr "要求のAESモードは非対応" msgstr "要求のAESモードは非対応"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Requested resource not found" msgid "Requested resource not found"
msgstr "" msgstr ""
@ -2355,7 +2355,7 @@ msgstr ""
msgid "Value length > max_length" msgid "Value length > max_length"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Version was invalid" msgid "Version was invalid"
msgstr "" msgstr ""

View File

@ -145,7 +145,7 @@ msgstr "%q 인덱스 범위를 벗어났습니다"
msgid "%q init failed" msgid "%q init failed"
msgstr "" msgstr ""
#: shared-bindings/dualbank/__init__.c #: ports/espressif/bindings/espnow/Peer.c shared-bindings/dualbank/__init__.c
msgid "%q is %q" msgid "%q is %q"
msgstr "" msgstr ""
@ -243,7 +243,7 @@ msgstr ""
msgid "%q=%q" msgid "%q=%q"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
#, c-format #, c-format
msgid "%s error 0x%x" msgid "%s error 0x%x"
msgstr "" msgstr ""
@ -511,6 +511,7 @@ msgstr ""
msgid "Already have all-matches listener" msgid "Already have all-matches listener"
msgstr "" msgstr ""
#: ports/espressif/bindings/espnow/ESPNow.c
#: ports/espressif/common-hal/espulp/ULP.c #: ports/espressif/common-hal/espulp/ULP.c
#: shared-module/memorymonitor/AllocationAlarm.c #: shared-module/memorymonitor/AllocationAlarm.c
#: shared-module/memorymonitor/AllocationSize.c #: shared-module/memorymonitor/AllocationSize.c
@ -684,7 +685,7 @@ msgstr ""
msgid "CIRCUITPY drive could not be found or created." msgid "CIRCUITPY drive could not be found or created."
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "CRC or checksum was invalid" msgid "CRC or checksum was invalid"
msgstr "" msgstr ""
@ -1075,7 +1076,7 @@ msgstr ""
msgid "GNSS init" msgid "GNSS init"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Generic Failure" msgid "Generic Failure"
msgstr "" msgstr ""
@ -1258,8 +1259,7 @@ msgstr ""
msgid "Invalid MAC address" msgid "Invalid MAC address"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c py/moduerrno.c
#: py/moduerrno.c
msgid "Invalid argument" msgid "Invalid argument"
msgstr "" msgstr ""
@ -1285,7 +1285,7 @@ msgstr "형식 청크 크기가 잘못되었습니다"
msgid "Invalid multicast MAC address" msgid "Invalid multicast MAC address"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Invalid size" msgid "Invalid size"
msgstr "" msgstr ""
@ -1294,7 +1294,7 @@ msgstr ""
msgid "Invalid socket for TLS" msgid "Invalid socket for TLS"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Invalid state" msgid "Invalid state"
msgstr "" msgstr ""
@ -1326,7 +1326,7 @@ msgstr ""
msgid "Layer must be a Group or TileGrid subclass" msgid "Layer must be a Group or TileGrid subclass"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "MAC address was invalid" msgid "MAC address was invalid"
msgstr "" msgstr ""
@ -1682,11 +1682,11 @@ msgstr ""
msgid "Operation not permitted" msgid "Operation not permitted"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Operation or feature not supported" msgid "Operation or feature not supported"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Operation timed out" msgid "Operation timed out"
msgstr "" msgstr ""
@ -1694,7 +1694,7 @@ msgstr ""
msgid "Out of MDNS service slots" msgid "Out of MDNS service slots"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Out of memory" msgid "Out of memory"
msgstr "" msgstr ""
@ -1870,7 +1870,7 @@ msgstr ""
msgid "Read-only filesystem" msgid "Read-only filesystem"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Received response was invalid" msgid "Received response was invalid"
msgstr "" msgstr ""
@ -1890,7 +1890,7 @@ msgstr ""
msgid "Requested AES mode is unsupported" msgid "Requested AES mode is unsupported"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Requested resource not found" msgid "Requested resource not found"
msgstr "" msgstr ""
@ -2342,7 +2342,7 @@ msgstr ""
msgid "Value length > max_length" msgid "Value length > max_length"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Version was invalid" msgid "Version was invalid"
msgstr "" msgstr ""

View File

@ -144,7 +144,7 @@ msgstr "%q index buiten bereik"
msgid "%q init failed" msgid "%q init failed"
msgstr "" msgstr ""
#: shared-bindings/dualbank/__init__.c #: ports/espressif/bindings/espnow/Peer.c shared-bindings/dualbank/__init__.c
msgid "%q is %q" msgid "%q is %q"
msgstr "" msgstr ""
@ -242,7 +242,7 @@ msgstr ""
msgid "%q=%q" msgid "%q=%q"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
#, c-format #, c-format
msgid "%s error 0x%x" msgid "%s error 0x%x"
msgstr "" msgstr ""
@ -510,6 +510,7 @@ msgstr "Advertising is al bezig."
msgid "Already have all-matches listener" msgid "Already have all-matches listener"
msgstr "Heeft al een luisteraar voor 'all-matches'" msgstr "Heeft al een luisteraar voor 'all-matches'"
#: ports/espressif/bindings/espnow/ESPNow.c
#: ports/espressif/common-hal/espulp/ULP.c #: ports/espressif/common-hal/espulp/ULP.c
#: shared-module/memorymonitor/AllocationAlarm.c #: shared-module/memorymonitor/AllocationAlarm.c
#: shared-module/memorymonitor/AllocationSize.c #: shared-module/memorymonitor/AllocationSize.c
@ -683,7 +684,7 @@ msgstr "CBC blocks moeten meervouden van 16 bytes zijn"
msgid "CIRCUITPY drive could not be found or created." msgid "CIRCUITPY drive could not be found or created."
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "CRC or checksum was invalid" msgid "CRC or checksum was invalid"
msgstr "" msgstr ""
@ -1078,7 +1079,7 @@ msgstr "Functie vereist lock"
msgid "GNSS init" msgid "GNSS init"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Generic Failure" msgid "Generic Failure"
msgstr "" msgstr ""
@ -1263,8 +1264,7 @@ msgstr "Ongeldig BSSID"
msgid "Invalid MAC address" msgid "Invalid MAC address"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c py/moduerrno.c
#: py/moduerrno.c
msgid "Invalid argument" msgid "Invalid argument"
msgstr "Ongeldig argument" msgstr "Ongeldig argument"
@ -1290,7 +1290,7 @@ msgstr "Ongeldig formaat stuk grootte"
msgid "Invalid multicast MAC address" msgid "Invalid multicast MAC address"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Invalid size" msgid "Invalid size"
msgstr "" msgstr ""
@ -1299,7 +1299,7 @@ msgstr ""
msgid "Invalid socket for TLS" msgid "Invalid socket for TLS"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Invalid state" msgid "Invalid state"
msgstr "" msgstr ""
@ -1331,7 +1331,7 @@ msgstr ""
msgid "Layer must be a Group or TileGrid subclass" msgid "Layer must be a Group or TileGrid subclass"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "MAC address was invalid" msgid "MAC address was invalid"
msgstr "" msgstr ""
@ -1693,11 +1693,11 @@ msgstr "Er kan maar één kleur per keer transparant zijn"
msgid "Operation not permitted" msgid "Operation not permitted"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Operation or feature not supported" msgid "Operation or feature not supported"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Operation timed out" msgid "Operation timed out"
msgstr "" msgstr ""
@ -1705,7 +1705,7 @@ msgstr ""
msgid "Out of MDNS service slots" msgid "Out of MDNS service slots"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Out of memory" msgid "Out of memory"
msgstr "" msgstr ""
@ -1888,7 +1888,7 @@ msgstr "Alleen-lezen"
msgid "Read-only filesystem" msgid "Read-only filesystem"
msgstr "Alleen-lezen bestandssysteem" msgstr "Alleen-lezen bestandssysteem"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Received response was invalid" msgid "Received response was invalid"
msgstr "" msgstr ""
@ -1908,7 +1908,7 @@ msgstr "RemoteTransmissionRequests is beperkt tot 8 bytes"
msgid "Requested AES mode is unsupported" msgid "Requested AES mode is unsupported"
msgstr "Gevraagde AES modus is niet ondersteund" msgstr "Gevraagde AES modus is niet ondersteund"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Requested resource not found" msgid "Requested resource not found"
msgstr "" msgstr ""
@ -2361,7 +2361,7 @@ msgstr "Waarde lengte != vereist vaste lengte"
msgid "Value length > max_length" msgid "Value length > max_length"
msgstr "Waarde length > max_length" msgstr "Waarde length > max_length"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Version was invalid" msgid "Version was invalid"
msgstr "" msgstr ""

View File

@ -146,7 +146,7 @@ msgstr "%q poza zakresem"
msgid "%q init failed" msgid "%q init failed"
msgstr "" msgstr ""
#: shared-bindings/dualbank/__init__.c #: ports/espressif/bindings/espnow/Peer.c shared-bindings/dualbank/__init__.c
msgid "%q is %q" msgid "%q is %q"
msgstr "" msgstr ""
@ -244,7 +244,7 @@ msgstr ""
msgid "%q=%q" msgid "%q=%q"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
#, c-format #, c-format
msgid "%s error 0x%x" msgid "%s error 0x%x"
msgstr "" msgstr ""
@ -512,6 +512,7 @@ msgstr ""
msgid "Already have all-matches listener" msgid "Already have all-matches listener"
msgstr "" msgstr ""
#: ports/espressif/bindings/espnow/ESPNow.c
#: ports/espressif/common-hal/espulp/ULP.c #: ports/espressif/common-hal/espulp/ULP.c
#: shared-module/memorymonitor/AllocationAlarm.c #: shared-module/memorymonitor/AllocationAlarm.c
#: shared-module/memorymonitor/AllocationSize.c #: shared-module/memorymonitor/AllocationSize.c
@ -685,7 +686,7 @@ msgstr "Bloki CBC muszą być wielokrotnościami 16 bajtów"
msgid "CIRCUITPY drive could not be found or created." msgid "CIRCUITPY drive could not be found or created."
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "CRC or checksum was invalid" msgid "CRC or checksum was invalid"
msgstr "" msgstr ""
@ -1078,7 +1079,7 @@ msgstr "Funkcja wymaga blokady"
msgid "GNSS init" msgid "GNSS init"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Generic Failure" msgid "Generic Failure"
msgstr "" msgstr ""
@ -1263,8 +1264,7 @@ msgstr ""
msgid "Invalid MAC address" msgid "Invalid MAC address"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c py/moduerrno.c
#: py/moduerrno.c
msgid "Invalid argument" msgid "Invalid argument"
msgstr "Zły argument" msgstr "Zły argument"
@ -1290,7 +1290,7 @@ msgstr "Zła wielkość fragmentu formatu"
msgid "Invalid multicast MAC address" msgid "Invalid multicast MAC address"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Invalid size" msgid "Invalid size"
msgstr "Nieprawidłowy rozmiar" msgstr "Nieprawidłowy rozmiar"
@ -1299,7 +1299,7 @@ msgstr "Nieprawidłowy rozmiar"
msgid "Invalid socket for TLS" msgid "Invalid socket for TLS"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Invalid state" msgid "Invalid state"
msgstr "Nieprawidłowy stan" msgstr "Nieprawidłowy stan"
@ -1331,7 +1331,7 @@ msgstr ""
msgid "Layer must be a Group or TileGrid subclass" msgid "Layer must be a Group or TileGrid subclass"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "MAC address was invalid" msgid "MAC address was invalid"
msgstr "" msgstr ""
@ -1687,11 +1687,11 @@ msgstr "W danym momencie przezroczysty może być tylko jeden kolor"
msgid "Operation not permitted" msgid "Operation not permitted"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Operation or feature not supported" msgid "Operation or feature not supported"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Operation timed out" msgid "Operation timed out"
msgstr "" msgstr ""
@ -1699,7 +1699,7 @@ msgstr ""
msgid "Out of MDNS service slots" msgid "Out of MDNS service slots"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Out of memory" msgid "Out of memory"
msgstr "Brak pamięci" msgstr "Brak pamięci"
@ -1875,7 +1875,7 @@ msgstr "Tylko do odczytu"
msgid "Read-only filesystem" msgid "Read-only filesystem"
msgstr "System plików tylko do odczytu" msgstr "System plików tylko do odczytu"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Received response was invalid" msgid "Received response was invalid"
msgstr "Otrzymana odpowiedź była nieprawidłowa" msgstr "Otrzymana odpowiedź była nieprawidłowa"
@ -1895,7 +1895,7 @@ msgstr ""
msgid "Requested AES mode is unsupported" msgid "Requested AES mode is unsupported"
msgstr "Żądany tryb AES nie jest obsługiwany" msgstr "Żądany tryb AES nie jest obsługiwany"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Requested resource not found" msgid "Requested resource not found"
msgstr "Nie znaleziono żądanego zasobu" msgstr "Nie znaleziono żądanego zasobu"
@ -2346,7 +2346,7 @@ msgstr ""
msgid "Value length > max_length" msgid "Value length > max_length"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Version was invalid" msgid "Version was invalid"
msgstr "" msgstr ""

View File

@ -161,7 +161,7 @@ msgstr "O índice %q está fora do intervalo"
msgid "%q init failed" msgid "%q init failed"
msgstr "a inicialização do %q falhou" msgstr "a inicialização do %q falhou"
#: shared-bindings/dualbank/__init__.c #: ports/espressif/bindings/espnow/Peer.c shared-bindings/dualbank/__init__.c
msgid "%q is %q" msgid "%q is %q"
msgstr "%q é %q" msgstr "%q é %q"
@ -259,7 +259,7 @@ msgstr "todos os %q, %q, e %q devem ter mesmo comprimento"
msgid "%q=%q" msgid "%q=%q"
msgstr "%q=%q" msgstr "%q=%q"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
#, c-format #, c-format
msgid "%s error 0x%x" msgid "%s error 0x%x"
msgstr "%s erro 0x%x" msgstr "%s erro 0x%x"
@ -531,6 +531,7 @@ msgstr "Já está anunciando."
msgid "Already have all-matches listener" msgid "Already have all-matches listener"
msgstr "Já há um ouvinte com todas as correspondências" msgstr "Já há um ouvinte com todas as correspondências"
#: ports/espressif/bindings/espnow/ESPNow.c
#: ports/espressif/common-hal/espulp/ULP.c #: ports/espressif/common-hal/espulp/ULP.c
#: shared-module/memorymonitor/AllocationAlarm.c #: shared-module/memorymonitor/AllocationAlarm.c
#: shared-module/memorymonitor/AllocationSize.c #: shared-module/memorymonitor/AllocationSize.c
@ -706,7 +707,7 @@ msgstr "Os blocos CBC devem ter múltiplos de 16 bytes"
msgid "CIRCUITPY drive could not be found or created." msgid "CIRCUITPY drive could not be found or created."
msgstr "A unidade CIRCUITPY não pôde ser encontrada nem criada." msgstr "A unidade CIRCUITPY não pôde ser encontrada nem criada."
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "CRC or checksum was invalid" msgid "CRC or checksum was invalid"
msgstr "CRC ou checksum inválido" msgstr "CRC ou checksum inválido"
@ -1108,7 +1109,7 @@ msgstr "A função requer bloqueio"
msgid "GNSS init" msgid "GNSS init"
msgstr "Inicialização do GNSS" msgstr "Inicialização do GNSS"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Generic Failure" msgid "Generic Failure"
msgstr "Falha Genérica" msgstr "Falha Genérica"
@ -1301,8 +1302,7 @@ msgstr "BSSID Inválido"
msgid "Invalid MAC address" msgid "Invalid MAC address"
msgstr "Endereço MAC inválido" msgstr "Endereço MAC inválido"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c py/moduerrno.c
#: py/moduerrno.c
msgid "Invalid argument" msgid "Invalid argument"
msgstr "Argumento inválido" msgstr "Argumento inválido"
@ -1328,7 +1328,7 @@ msgstr "Tamanho do pedaço de formato inválido"
msgid "Invalid multicast MAC address" msgid "Invalid multicast MAC address"
msgstr "Endereço MAC multicast inválido" msgstr "Endereço MAC multicast inválido"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Invalid size" msgid "Invalid size"
msgstr "Tamanho inválido" msgstr "Tamanho inválido"
@ -1337,7 +1337,7 @@ msgstr "Tamanho inválido"
msgid "Invalid socket for TLS" msgid "Invalid socket for TLS"
msgstr "Soquete inválido para o TLS" msgstr "Soquete inválido para o TLS"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Invalid state" msgid "Invalid state"
msgstr "Estado inválido" msgstr "Estado inválido"
@ -1369,7 +1369,7 @@ msgstr "Camada já está num grupo"
msgid "Layer must be a Group or TileGrid subclass" msgid "Layer must be a Group or TileGrid subclass"
msgstr "A camada deve ser uma subclasse Group ou TileGrid" msgstr "A camada deve ser uma subclasse Group ou TileGrid"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "MAC address was invalid" msgid "MAC address was invalid"
msgstr "Endereço MAC inválido" msgstr "Endereço MAC inválido"
@ -1732,11 +1732,11 @@ msgstr "Apenas uma cor pode ser transparente de cada vez"
msgid "Operation not permitted" msgid "Operation not permitted"
msgstr "A operação não é permitida" msgstr "A operação não é permitida"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Operation or feature not supported" msgid "Operation or feature not supported"
msgstr "A operação ou o recurso não é suportado" msgstr "A operação ou o recurso não é suportado"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Operation timed out" msgid "Operation timed out"
msgstr "A operação expirou" msgstr "A operação expirou"
@ -1744,7 +1744,7 @@ msgstr "A operação expirou"
msgid "Out of MDNS service slots" msgid "Out of MDNS service slots"
msgstr "Sem slots do serviço MDNS" msgstr "Sem slots do serviço MDNS"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Out of memory" msgid "Out of memory"
msgstr "Sem memória" msgstr "Sem memória"
@ -1930,7 +1930,7 @@ msgstr "Somente leitura"
msgid "Read-only filesystem" msgid "Read-only filesystem"
msgstr "Sistema de arquivos somente leitura" msgstr "Sistema de arquivos somente leitura"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Received response was invalid" msgid "Received response was invalid"
msgstr "A resposta recebida foi inválida" msgstr "A resposta recebida foi inválida"
@ -1950,7 +1950,7 @@ msgstr "As requisições de transmissões remotas é limitada a 8 bytes"
msgid "Requested AES mode is unsupported" msgid "Requested AES mode is unsupported"
msgstr "O modo AES solicitado não é compatível" msgstr "O modo AES solicitado não é compatível"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Requested resource not found" msgid "Requested resource not found"
msgstr "O recurso solicitado não foi encontrado" msgstr "O recurso solicitado não foi encontrado"
@ -2410,7 +2410,7 @@ msgstr "Comprimento do valor != comprimento fixo necessário"
msgid "Value length > max_length" msgid "Value length > max_length"
msgstr "O comprimento do valor é > max_length" msgstr "O comprimento do valor é > max_length"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Version was invalid" msgid "Version was invalid"
msgstr "A versão era inválida" msgstr "A versão era inválida"

View File

@ -151,7 +151,7 @@ msgstr "Индекс %q вне диапазона"
msgid "%q init failed" msgid "%q init failed"
msgstr "Инициализация %q не удалась" msgstr "Инициализация %q не удалась"
#: shared-bindings/dualbank/__init__.c #: ports/espressif/bindings/espnow/Peer.c shared-bindings/dualbank/__init__.c
msgid "%q is %q" msgid "%q is %q"
msgstr "%q является %q" msgstr "%q является %q"
@ -249,7 +249,7 @@ msgstr "%q, %q, и %q должны быть одной длинны"
msgid "%q=%q" msgid "%q=%q"
msgstr "%q=%q" msgstr "%q=%q"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
#, c-format #, c-format
msgid "%s error 0x%x" msgid "%s error 0x%x"
msgstr "%s ошибка 0x%x" msgstr "%s ошибка 0x%x"
@ -517,6 +517,7 @@ msgstr "Уже объявляемся (advertising)."
msgid "Already have all-matches listener" msgid "Already have all-matches listener"
msgstr "Уже есть универсальный слушатель" msgstr "Уже есть универсальный слушатель"
#: ports/espressif/bindings/espnow/ESPNow.c
#: ports/espressif/common-hal/espulp/ULP.c #: ports/espressif/common-hal/espulp/ULP.c
#: shared-module/memorymonitor/AllocationAlarm.c #: shared-module/memorymonitor/AllocationAlarm.c
#: shared-module/memorymonitor/AllocationSize.c #: shared-module/memorymonitor/AllocationSize.c
@ -694,7 +695,7 @@ msgstr "Блоки CBC должны быть кратны 16 байтам"
msgid "CIRCUITPY drive could not be found or created." msgid "CIRCUITPY drive could not be found or created."
msgstr "Не удалось найти или создать диск CIRCUITPY." msgstr "Не удалось найти или создать диск CIRCUITPY."
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "CRC or checksum was invalid" msgid "CRC or checksum was invalid"
msgstr "CRC или контрольная сумма неправильная" msgstr "CRC или контрольная сумма неправильная"
@ -1109,7 +1110,7 @@ msgstr "Функция требует блокировки"
msgid "GNSS init" msgid "GNSS init"
msgstr "Инициализация GNSS" msgstr "Инициализация GNSS"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Generic Failure" msgid "Generic Failure"
msgstr "Общий сбой" msgstr "Общий сбой"
@ -1300,8 +1301,7 @@ msgstr "Неверный BSSID"
msgid "Invalid MAC address" msgid "Invalid MAC address"
msgstr "Неверный MAC-адрес" msgstr "Неверный MAC-адрес"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c py/moduerrno.c
#: py/moduerrno.c
msgid "Invalid argument" msgid "Invalid argument"
msgstr "Недопустимый аргумент" msgstr "Недопустимый аргумент"
@ -1327,7 +1327,7 @@ msgstr "Неверный размер блока формата"
msgid "Invalid multicast MAC address" msgid "Invalid multicast MAC address"
msgstr "Неверный MAC-адрес multicast" msgstr "Неверный MAC-адрес multicast"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Invalid size" msgid "Invalid size"
msgstr "Неверный размер" msgstr "Неверный размер"
@ -1336,7 +1336,7 @@ msgstr "Неверный размер"
msgid "Invalid socket for TLS" msgid "Invalid socket for TLS"
msgstr "Неверный сокет для TLS" msgstr "Неверный сокет для TLS"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Invalid state" msgid "Invalid state"
msgstr "Неверное состояние" msgstr "Неверное состояние"
@ -1370,7 +1370,7 @@ msgstr "Слой уже в группе (Group)"
msgid "Layer must be a Group or TileGrid subclass" msgid "Layer must be a Group or TileGrid subclass"
msgstr "Слой должен быть группой (Group) или субклассом TileGrid." msgstr "Слой должен быть группой (Group) или субклассом TileGrid."
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "MAC address was invalid" msgid "MAC address was invalid"
msgstr "MAC адрес был недействительным" msgstr "MAC адрес был недействительным"
@ -1735,11 +1735,11 @@ msgstr ""
msgid "Operation not permitted" msgid "Operation not permitted"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Operation or feature not supported" msgid "Operation or feature not supported"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Operation timed out" msgid "Operation timed out"
msgstr "" msgstr ""
@ -1747,7 +1747,7 @@ msgstr ""
msgid "Out of MDNS service slots" msgid "Out of MDNS service slots"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Out of memory" msgid "Out of memory"
msgstr "" msgstr ""
@ -1928,7 +1928,7 @@ msgstr ""
msgid "Read-only filesystem" msgid "Read-only filesystem"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Received response was invalid" msgid "Received response was invalid"
msgstr "" msgstr ""
@ -1948,7 +1948,7 @@ msgstr ""
msgid "Requested AES mode is unsupported" msgid "Requested AES mode is unsupported"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Requested resource not found" msgid "Requested resource not found"
msgstr "" msgstr ""
@ -2401,7 +2401,7 @@ msgstr ""
msgid "Value length > max_length" msgid "Value length > max_length"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Version was invalid" msgid "Version was invalid"
msgstr "" msgstr ""

View File

@ -160,7 +160,7 @@ msgstr "Index %q ligger utanför intervallet"
msgid "%q init failed" msgid "%q init failed"
msgstr "%q init misslyckades" msgstr "%q init misslyckades"
#: shared-bindings/dualbank/__init__.c #: ports/espressif/bindings/espnow/Peer.c shared-bindings/dualbank/__init__.c
msgid "%q is %q" msgid "%q is %q"
msgstr "%q är %q" msgstr "%q är %q"
@ -260,7 +260,7 @@ msgstr "%q, %q och %q måste vara lika långa"
msgid "%q=%q" msgid "%q=%q"
msgstr "%q=%q" msgstr "%q=%q"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
#, c-format #, c-format
msgid "%s error 0x%x" msgid "%s error 0x%x"
msgstr "%s fel 0x%x" msgstr "%s fel 0x%x"
@ -528,6 +528,7 @@ msgstr "Annonserar redan."
msgid "Already have all-matches listener" msgid "Already have all-matches listener"
msgstr "Har redan lyssnare för all-matchningar" msgstr "Har redan lyssnare för all-matchningar"
#: ports/espressif/bindings/espnow/ESPNow.c
#: ports/espressif/common-hal/espulp/ULP.c #: ports/espressif/common-hal/espulp/ULP.c
#: shared-module/memorymonitor/AllocationAlarm.c #: shared-module/memorymonitor/AllocationAlarm.c
#: shared-module/memorymonitor/AllocationSize.c #: shared-module/memorymonitor/AllocationSize.c
@ -701,7 +702,7 @@ msgstr "CBC-block måste vara multiplar om 16 byte"
msgid "CIRCUITPY drive could not be found or created." msgid "CIRCUITPY drive could not be found or created."
msgstr "CIRCUITPY-enheten kunde inte hittas eller skapas." msgstr "CIRCUITPY-enheten kunde inte hittas eller skapas."
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "CRC or checksum was invalid" msgid "CRC or checksum was invalid"
msgstr "CRC eller checksumma var ogiltig" msgstr "CRC eller checksumma var ogiltig"
@ -1099,7 +1100,7 @@ msgstr "Funktionen kräver lås"
msgid "GNSS init" msgid "GNSS init"
msgstr "GNSS start" msgstr "GNSS start"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Generic Failure" msgid "Generic Failure"
msgstr "Allmänt fel" msgstr "Allmänt fel"
@ -1286,8 +1287,7 @@ msgstr "Ogiltig BSSID"
msgid "Invalid MAC address" msgid "Invalid MAC address"
msgstr "Ogiltig MAC-adress" msgstr "Ogiltig MAC-adress"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c py/moduerrno.c
#: py/moduerrno.c
msgid "Invalid argument" msgid "Invalid argument"
msgstr "Ogiltigt argument" msgstr "Ogiltigt argument"
@ -1313,7 +1313,7 @@ msgstr "Ogiltig formatsegmentstorlek"
msgid "Invalid multicast MAC address" msgid "Invalid multicast MAC address"
msgstr "Ogiltig MAC-adress för multicast" msgstr "Ogiltig MAC-adress för multicast"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Invalid size" msgid "Invalid size"
msgstr "Ogiltig storlek" msgstr "Ogiltig storlek"
@ -1322,7 +1322,7 @@ msgstr "Ogiltig storlek"
msgid "Invalid socket for TLS" msgid "Invalid socket for TLS"
msgstr "Ogiltig socket för TLS" msgstr "Ogiltig socket för TLS"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Invalid state" msgid "Invalid state"
msgstr "Ogiltigt tillstånd" msgstr "Ogiltigt tillstånd"
@ -1354,7 +1354,7 @@ msgstr "Layer är redan med i en grupp"
msgid "Layer must be a Group or TileGrid subclass" msgid "Layer must be a Group or TileGrid subclass"
msgstr "Layer måste vara en underklass av Group eller TileGrid" msgstr "Layer måste vara en underklass av Group eller TileGrid"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "MAC address was invalid" msgid "MAC address was invalid"
msgstr "MAC-adressen var ogiltig" msgstr "MAC-adressen var ogiltig"
@ -1716,11 +1716,11 @@ msgstr "Bara en färg kan vara genomskinlig i taget"
msgid "Operation not permitted" msgid "Operation not permitted"
msgstr "Åtgärden inte tillåten" msgstr "Åtgärden inte tillåten"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Operation or feature not supported" msgid "Operation or feature not supported"
msgstr "Operation eller funktion stöds inte" msgstr "Operation eller funktion stöds inte"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Operation timed out" msgid "Operation timed out"
msgstr "Åtgärden orsakade timeout" msgstr "Åtgärden orsakade timeout"
@ -1728,7 +1728,7 @@ msgstr "Åtgärden orsakade timeout"
msgid "Out of MDNS service slots" msgid "Out of MDNS service slots"
msgstr "Slut på MDNS-serviceplatser" msgstr "Slut på MDNS-serviceplatser"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Out of memory" msgid "Out of memory"
msgstr "Slut på minne" msgstr "Slut på minne"
@ -1911,7 +1911,7 @@ msgstr "Skrivskyddad"
msgid "Read-only filesystem" msgid "Read-only filesystem"
msgstr "Skrivskyddat filsystem" msgstr "Skrivskyddat filsystem"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Received response was invalid" msgid "Received response was invalid"
msgstr "Mottaget svar var ogiltigt" msgstr "Mottaget svar var ogiltigt"
@ -1931,7 +1931,7 @@ msgstr "RemoteTransmissionRequests begränsad till 8 byte"
msgid "Requested AES mode is unsupported" msgid "Requested AES mode is unsupported"
msgstr "Det begärda AES-läget stöds inte" msgstr "Det begärda AES-läget stöds inte"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Requested resource not found" msgid "Requested resource not found"
msgstr "Begärd resurs hittades inte" msgstr "Begärd resurs hittades inte"
@ -2386,7 +2386,7 @@ msgstr "Värdets längde ! = krävd fast längd"
msgid "Value length > max_length" msgid "Value length > max_length"
msgstr "Värdets längd > max_length" msgstr "Värdets längd > max_length"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Version was invalid" msgid "Version was invalid"
msgstr "Versionen var ogiltig" msgstr "Versionen var ogiltig"

View File

@ -152,7 +152,7 @@ msgstr "%q indeksi aralık dışında"
msgid "%q init failed" msgid "%q init failed"
msgstr "%q init başarısız oldu" msgstr "%q init başarısız oldu"
#: shared-bindings/dualbank/__init__.c #: ports/espressif/bindings/espnow/Peer.c shared-bindings/dualbank/__init__.c
msgid "%q is %q" msgid "%q is %q"
msgstr "%q %q dir" msgstr "%q %q dir"
@ -250,7 +250,7 @@ msgstr "%q, %q ve %q aynı uzunlukta olmalıdır"
msgid "%q=%q" msgid "%q=%q"
msgstr "%q=%q" msgstr "%q=%q"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
#, c-format #, c-format
msgid "%s error 0x%x" msgid "%s error 0x%x"
msgstr "%s hatası 0x%x" msgstr "%s hatası 0x%x"
@ -519,6 +519,7 @@ msgstr "Halihazırda duyuruluyor."
msgid "Already have all-matches listener" msgid "Already have all-matches listener"
msgstr "Tüm eşleşmelerle eşleşen dinleyiciniz var" msgstr "Tüm eşleşmelerle eşleşen dinleyiciniz var"
#: ports/espressif/bindings/espnow/ESPNow.c
#: ports/espressif/common-hal/espulp/ULP.c #: ports/espressif/common-hal/espulp/ULP.c
#: shared-module/memorymonitor/AllocationAlarm.c #: shared-module/memorymonitor/AllocationAlarm.c
#: shared-module/memorymonitor/AllocationSize.c #: shared-module/memorymonitor/AllocationSize.c
@ -692,7 +693,7 @@ msgstr "CBC blokları 16 baytın katları şeklinde olmalı"
msgid "CIRCUITPY drive could not be found or created." msgid "CIRCUITPY drive could not be found or created."
msgstr "CIRCUITPY sürücüsü bulunamadı veya oluşturulamadı." msgstr "CIRCUITPY sürücüsü bulunamadı veya oluşturulamadı."
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "CRC or checksum was invalid" msgid "CRC or checksum was invalid"
msgstr "CRC yada checksum geçersiz" msgstr "CRC yada checksum geçersiz"
@ -1088,7 +1089,7 @@ msgstr "Fonksiyon kilit gerektirir"
msgid "GNSS init" msgid "GNSS init"
msgstr "GNSS init" msgstr "GNSS init"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Generic Failure" msgid "Generic Failure"
msgstr "" msgstr ""
@ -1273,8 +1274,7 @@ msgstr "Geçersiz BSSID"
msgid "Invalid MAC address" msgid "Invalid MAC address"
msgstr "Geçersiz MAC adresi" msgstr "Geçersiz MAC adresi"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c py/moduerrno.c
#: py/moduerrno.c
msgid "Invalid argument" msgid "Invalid argument"
msgstr "Geçersiz argüman" msgstr "Geçersiz argüman"
@ -1301,7 +1301,7 @@ msgstr "Geçersiz biçim yığın boyutu"
msgid "Invalid multicast MAC address" msgid "Invalid multicast MAC address"
msgstr "Geçersiz multicast MAC adresi" msgstr "Geçersiz multicast MAC adresi"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Invalid size" msgid "Invalid size"
msgstr "Geçersiz boyut" msgstr "Geçersiz boyut"
@ -1310,7 +1310,7 @@ msgstr "Geçersiz boyut"
msgid "Invalid socket for TLS" msgid "Invalid socket for TLS"
msgstr "TLS için geçersiz soket" msgstr "TLS için geçersiz soket"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Invalid state" msgid "Invalid state"
msgstr "Geçersiz durum" msgstr "Geçersiz durum"
@ -1342,7 +1342,7 @@ msgstr "Katman zaten bir grupta"
msgid "Layer must be a Group or TileGrid subclass" msgid "Layer must be a Group or TileGrid subclass"
msgstr "Katman, bir Grup ya da TileGrid alt sınıfı olmalıdır" msgstr "Katman, bir Grup ya da TileGrid alt sınıfı olmalıdır"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "MAC address was invalid" msgid "MAC address was invalid"
msgstr "MAC adresi geçersiz" msgstr "MAC adresi geçersiz"
@ -1698,11 +1698,11 @@ msgstr ""
msgid "Operation not permitted" msgid "Operation not permitted"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Operation or feature not supported" msgid "Operation or feature not supported"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Operation timed out" msgid "Operation timed out"
msgstr "" msgstr ""
@ -1710,7 +1710,7 @@ msgstr ""
msgid "Out of MDNS service slots" msgid "Out of MDNS service slots"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Out of memory" msgid "Out of memory"
msgstr "" msgstr ""
@ -1889,7 +1889,7 @@ msgstr ""
msgid "Read-only filesystem" msgid "Read-only filesystem"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Received response was invalid" msgid "Received response was invalid"
msgstr "" msgstr ""
@ -1909,7 +1909,7 @@ msgstr ""
msgid "Requested AES mode is unsupported" msgid "Requested AES mode is unsupported"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Requested resource not found" msgid "Requested resource not found"
msgstr "" msgstr ""
@ -2360,7 +2360,7 @@ msgstr ""
msgid "Value length > max_length" msgid "Value length > max_length"
msgstr "" msgstr ""
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Version was invalid" msgid "Version was invalid"
msgstr "" msgstr ""

View File

@ -163,7 +163,7 @@ msgstr "%q suǒyǐn chāochū fànwéi"
msgid "%q init failed" msgid "%q init failed"
msgstr "%q chūshǐhuà shībài" msgstr "%q chūshǐhuà shībài"
#: shared-bindings/dualbank/__init__.c #: ports/espressif/bindings/espnow/Peer.c shared-bindings/dualbank/__init__.c
msgid "%q is %q" msgid "%q is %q"
msgstr "%q shì %q" msgstr "%q shì %q"
@ -262,7 +262,7 @@ msgstr "%q, %q, hé %q bì xū cháng dù xiāng tóng"
msgid "%q=%q" msgid "%q=%q"
msgstr "%q=%q" msgstr "%q=%q"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
#, c-format #, c-format
msgid "%s error 0x%x" msgid "%s error 0x%x"
msgstr "%s cuò wù 0x%x" msgstr "%s cuò wù 0x%x"
@ -530,6 +530,7 @@ msgstr "Mùqián zhèngzài guǎngbō."
msgid "Already have all-matches listener" msgid "Already have all-matches listener"
msgstr "yǐjīng yǒu all-matches jiāntīng qì" msgstr "yǐjīng yǒu all-matches jiāntīng qì"
#: ports/espressif/bindings/espnow/ESPNow.c
#: ports/espressif/common-hal/espulp/ULP.c #: ports/espressif/common-hal/espulp/ULP.c
#: shared-module/memorymonitor/AllocationAlarm.c #: shared-module/memorymonitor/AllocationAlarm.c
#: shared-module/memorymonitor/AllocationSize.c #: shared-module/memorymonitor/AllocationSize.c
@ -703,7 +704,7 @@ msgstr "CBC kuài bìxū shì 16 zìjié de bèishù"
msgid "CIRCUITPY drive could not be found or created." msgid "CIRCUITPY drive could not be found or created."
msgstr "zhǎo bú dào huò chuàng jiàn CIRCUITPY qū dòng qì." msgstr "zhǎo bú dào huò chuàng jiàn CIRCUITPY qū dòng qì."
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "CRC or checksum was invalid" msgid "CRC or checksum was invalid"
msgstr "CRC huò jiàoyàn hé wúxiào" msgstr "CRC huò jiàoyàn hé wúxiào"
@ -1103,7 +1104,7 @@ msgstr "Hánshù xūyào suǒdìng"
msgid "GNSS init" msgid "GNSS init"
msgstr "GNSS chūshǐhuà" msgstr "GNSS chūshǐhuà"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Generic Failure" msgid "Generic Failure"
msgstr "tōng yòng gù zhàng" msgstr "tōng yòng gù zhàng"
@ -1293,8 +1294,7 @@ msgstr "Wúxiào de BSSID"
msgid "Invalid MAC address" msgid "Invalid MAC address"
msgstr "wú xiào de MAC dì zhǐ" msgstr "wú xiào de MAC dì zhǐ"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c py/moduerrno.c
#: py/moduerrno.c
msgid "Invalid argument" msgid "Invalid argument"
msgstr "Wúxiào de cānshù" msgstr "Wúxiào de cānshù"
@ -1320,7 +1320,7 @@ msgstr "Géshì kuài dàxiǎo wúxiào"
msgid "Invalid multicast MAC address" msgid "Invalid multicast MAC address"
msgstr "wú xiào de duō bō MAC dì zhǐ" msgstr "wú xiào de duō bō MAC dì zhǐ"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Invalid size" msgid "Invalid size"
msgstr "dà xiǎo wú xiào" msgstr "dà xiǎo wú xiào"
@ -1329,7 +1329,7 @@ msgstr "dà xiǎo wú xiào"
msgid "Invalid socket for TLS" msgid "Invalid socket for TLS"
msgstr "TLS de chā zuò wú xiào" msgstr "TLS de chā zuò wú xiào"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Invalid state" msgid "Invalid state"
msgstr "wú xiào zhuàng tài" msgstr "wú xiào zhuàng tài"
@ -1361,7 +1361,7 @@ msgstr "tú céng yǐ zài zǔ zhōng"
msgid "Layer must be a Group or TileGrid subclass" msgid "Layer must be a Group or TileGrid subclass"
msgstr "tú céng bìxū shì zǔ huò píng pū wǎng gé zi lèi" msgstr "tú céng bìxū shì zǔ huò píng pū wǎng gé zi lèi"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "MAC address was invalid" msgid "MAC address was invalid"
msgstr "MAC dì zhǐ wú xiào" msgstr "MAC dì zhǐ wú xiào"
@ -1723,11 +1723,11 @@ msgstr "Yīcì zhǐ néng yǒuyī zhǒng yánsè shì tòumíng de"
msgid "Operation not permitted" msgid "Operation not permitted"
msgstr "bù yǔnxǔ cāozuò" msgstr "bù yǔnxǔ cāozuò"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Operation or feature not supported" msgid "Operation or feature not supported"
msgstr "bù zhī chí cāo zuò huò gōng néng" msgstr "bù zhī chí cāo zuò huò gōng néng"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Operation timed out" msgid "Operation timed out"
msgstr "cāo zuò yǐ fēn shí" msgstr "cāo zuò yǐ fēn shí"
@ -1735,7 +1735,7 @@ msgstr "cāo zuò yǐ fēn shí"
msgid "Out of MDNS service slots" msgid "Out of MDNS service slots"
msgstr "chāo chū MDNS fú wù chā cáo" msgstr "chāo chū MDNS fú wù chā cáo"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Out of memory" msgid "Out of memory"
msgstr "nèi cún bù zú" msgstr "nèi cún bù zú"
@ -1916,7 +1916,7 @@ msgstr "Zhǐ dú"
msgid "Read-only filesystem" msgid "Read-only filesystem"
msgstr "Zhǐ dú wénjiàn xìtǒng" msgstr "Zhǐ dú wénjiàn xìtǒng"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Received response was invalid" msgid "Received response was invalid"
msgstr "shōu dào de xiǎng yìng wú xiào" msgstr "shōu dào de xiǎng yìng wú xiào"
@ -1936,7 +1936,7 @@ msgstr "RemoteTransmissionRequests xiànzhì wèi 8 gè zì jié"
msgid "Requested AES mode is unsupported" msgid "Requested AES mode is unsupported"
msgstr "Qǐngqiú de AES móshì bù shòu zhīchí" msgstr "Qǐngqiú de AES móshì bù shòu zhīchí"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Requested resource not found" msgid "Requested resource not found"
msgstr "wèi zhǎo dào qǐng qiú de zī yuán" msgstr "wèi zhǎo dào qǐng qiú de zī yuán"
@ -2391,7 +2391,7 @@ msgstr "Zhí chángdù != Suǒ xū de gùdìng chángdù"
msgid "Value length > max_length" msgid "Value length > max_length"
msgstr "Zhí chángdù > zuìdà chángdù" msgstr "Zhí chángdù > zuìdà chángdù"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c #: ports/espressif/common-hal/espidf/__init__.c
msgid "Version was invalid" msgid "Version was invalid"
msgstr "bǎn běn wú xiào" msgstr "bǎn běn wú xiào"

View File

@ -126,9 +126,13 @@ ifeq ($(DEBUG), 1)
# CFLAGS += -fno-inline -fno-ipa-sra # CFLAGS += -fno-inline -fno-ipa-sra
else else
CFLAGS += -DNDEBUG -ggdb3 CFLAGS += -DNDEBUG -ggdb3
OPTIMIZATION_FLAGS ?= -O2
# RISC-V is larger than xtensa # RISC-V is larger than xtensa
# Use -Os for RISC-V when it overflows # Use -Os for RISC-V when it overflows
ifeq ($(IDF_TARGET_ARCH),riscv)
OPTIMIZATION_FLAGS ?= -Os
else
OPTIMIZATION_FLAGS ?= -O2
endif
endif endif
# option to override compiler optimization level, set in boards/$(BOARD)/mpconfigboard.mk # option to override compiler optimization level, set in boards/$(BOARD)/mpconfigboard.mk
@ -214,7 +218,6 @@ endif
SRC_C += \ SRC_C += \
background.c \ background.c \
mphalport.c \ mphalport.c \
bindings/espidf/__init__.c \
boards/$(BOARD)/board.c \ boards/$(BOARD)/board.c \
boards/$(BOARD)/pins.c \ boards/$(BOARD)/pins.c \
shared/netutils/netutils.c \ shared/netutils/netutils.c \
@ -248,8 +251,6 @@ ifneq ($(CIRCUITPY_BLEIO),0)
SRC_C += common-hal/_bleio/ble_events.c SRC_C += common-hal/_bleio/ble_events.c
endif endif
SRC_C += $(wildcard common-hal/espidf/*.c)
ifneq ($(CIRCUITPY_ESPCAMERA),0) ifneq ($(CIRCUITPY_ESPCAMERA),0)
SRC_CAMERA := \ SRC_CAMERA := \
$(wildcard common-hal/espcamera/*.c) \ $(wildcard common-hal/espcamera/*.c) \
@ -259,6 +260,20 @@ CFLAGS += -isystem esp32-camera/driver/include
CFLAGS += -isystem esp32-camera/conversions/include CFLAGS += -isystem esp32-camera/conversions/include
endif endif
ifneq ($(CIRCUITPY_ESPIDF),0)
SRC_ESPIDF := \
$(wildcard common-hal/espidf/*.c) \
$(wildcard bindings/espidf/*.c)
SRC_C += $(SRC_ESPIDF)
endif
ifneq ($(CIRCUITPY_ESPNOW),0)
SRC_ESPNOW := \
$(wildcard common-hal/espnow/*.c) \
$(wildcard bindings/espnow/*.c)
SRC_C += $(SRC_ESPNOW)
endif
ifneq ($(CIRCUITPY_ESPULP),0) ifneq ($(CIRCUITPY_ESPULP),0)
SRC_ULP := \ SRC_ULP := \
$(wildcard common-hal/espulp/*.c) \ $(wildcard common-hal/espulp/*.c) \

View File

@ -0,0 +1,369 @@
/*
* This file is part of the MicroPython project, http://micropython.org/
*
* The MIT License (MIT)
*
* Copyright (c) 2017-2020 Nick Moore
* Copyright (c) 2018 shawwwn <shawwwn1@gmail.com>
* Copyright (c) 2020-2021 Glenn Moloney @glenn20
* Copyright (c) 2023 MicroDev
*
* 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 "py/objproperty.h"
#include "py/runtime.h"
#include "py/stream.h"
#include "shared-bindings/util.h"
#include "bindings/espnow/ESPNow.h"
#include "bindings/espnow/Peer.h"
#include "common-hal/espnow/__init__.h"
#include "common-hal/espnow/ESPNow.h"
#include "esp_now.h"
// Raise ValueError if the ESPNow object is deinited
static void espnow_check_for_deinit(espnow_obj_t *self) {
if (common_hal_espnow_deinited(self)) {
raise_deinited_error();
}
}
// --- Initialisation and Config functions ---
//| class ESPNow:
//| """Provides access to the ESP-NOW protocol."""
//|
//| def __init__(self, buffer_size: Optional[int], phy_rate: Optional[int]) -> None:
//| """Allocate and initialize `ESPNow` instance as a singleton.
//|
//| :param int buffer_size: The size of the internal ring buffer. Default: 526 bytes.
//| :param int phy_rate: The ESP-NOW physical layer rate. Default: 1 Mbps."""
//| ...
STATIC mp_obj_t espnow_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) {
enum { ARG_buffer_size, ARG_phy_rate };
static const mp_arg_t allowed_args[] = {
{ MP_QSTR_buffer_size, MP_ARG_INT, { .u_int = 526 } },
{ MP_QSTR_phy_rate, MP_ARG_INT, { .u_int = WIFI_PHY_RATE_1M_L } },
};
mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)];
mp_arg_parse_all_kw_array(n_args, n_kw, all_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args);
espnow_obj_t *self = MP_STATE_PORT(espnow_singleton);
if (self != NULL) {
mp_raise_RuntimeError(translate("Already running"));
}
// Allocate a new object
self = m_new_obj(espnow_obj_t);
self->base.type = &espnow_type;
// Construct the object
common_hal_espnow_construct(self, args[ARG_buffer_size].u_int, args[ARG_phy_rate].u_int);
// Set the global singleton pointer for the espnow protocol.
MP_STATE_PORT(espnow_singleton) = self;
return MP_OBJ_FROM_PTR(self);
}
//| def deinit(self) -> None:
//| """Deinitializes ESP-NOW and releases it for another program."""
//| ...
STATIC mp_obj_t espnow_deinit(mp_obj_t self_in) {
espnow_obj_t *self = MP_OBJ_TO_PTR(self_in);
espnow_check_for_deinit(self);
common_hal_espnow_deinit(self);
return mp_const_none;
}
STATIC MP_DEFINE_CONST_FUN_OBJ_1(espnow_deinit_obj, espnow_deinit);
//| def __enter__(self) -> ESPNow:
//| """No-op used by Context Managers."""
//| ...
// Provided by context manager helper.
//| def __exit__(self) -> None:
//| """Automatically deinitializes the hardware when exiting a context. See
//| :ref:`lifetime-and-contextmanagers` for more info."""
//| ...
STATIC mp_obj_t espnow_obj___exit__(size_t n_args, const mp_obj_t *args) {
(void)n_args;
return espnow_deinit(args[0]);
}
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(espnow___exit___obj, 4, 4, espnow_obj___exit__);
// --- Send and Read messages ---
//| def send(
//| self,
//| message: ReadableBuffer,
//| peer: Optional[Peer] = None,
//| ) -> None:
//| """Send a message to the peer's mac address.
//|
//| This blocks until a timeout of ``2`` seconds if the ESP-NOW internal buffers are full.
//|
//| :param ReadableBuffer message: The message to send (length <= 250 bytes).
//| :param Peer peer: Send message to this peer. If `None`, send to all registered peers.
//| """
//| ...
STATIC mp_obj_t espnow_send(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
enum { ARG_message, ARG_peer };
static const mp_arg_t allowed_args[] = {
{ MP_QSTR_message, MP_ARG_OBJ | MP_ARG_REQUIRED },
{ MP_QSTR_peer, MP_ARG_OBJ, { .u_obj = mp_const_none } },
};
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);
espnow_obj_t *self = pos_args[0];
espnow_check_for_deinit(self);
// Get a pointer to the data buffer of the message
mp_buffer_info_t message;
mp_get_buffer_raise(args[ARG_message].u_obj, &message, MP_BUFFER_READ);
const uint8_t *mac = NULL;
if (args[ARG_peer].u_obj != mp_const_none) {
const espnow_peer_obj_t *peer = MP_OBJ_FROM_PTR(mp_arg_validate_type_or_none(args[ARG_peer].u_obj, &espnow_peer_type, MP_QSTR_peer));
mac = peer->peer_info.peer_addr;
}
return common_hal_espnow_send(self, &message, mac);
}
STATIC MP_DEFINE_CONST_FUN_OBJ_KW(espnow_send_obj, 2, espnow_send);
//| def read(self) -> Optional[ESPNowPacket]:
//| """Read a packet from the receive buffer.
//|
//| This is non-blocking, the packet is received asynchronously from the peer(s).
//|
//| :returns: An `ESPNowPacket` if available in the buffer, otherwise `None`."""
//| ...
STATIC mp_obj_t espnow_read(mp_obj_t self_in) {
espnow_obj_t *self = MP_OBJ_TO_PTR(self_in);
espnow_check_for_deinit(self);
return common_hal_espnow_read(self);
}
STATIC MP_DEFINE_CONST_FUN_OBJ_1(espnow_read_obj, espnow_read);
//| send_success: int
//| """The number of tx packets received by the peer(s) ``ESP_NOW_SEND_SUCCESS``. (read-only)"""
//|
STATIC mp_obj_t espnow_get_send_success(const mp_obj_t self_in) {
espnow_obj_t *self = MP_OBJ_TO_PTR(self_in);
return mp_obj_new_int_from_uint(self->send_success);
}
MP_DEFINE_CONST_FUN_OBJ_1(espnow_get_send_success_obj, espnow_get_send_success);
MP_PROPERTY_GETTER(espnow_send_success_obj,
(mp_obj_t)&espnow_get_send_success_obj);
//| send_failure: int
//| """The number of failed tx packets ``ESP_NOW_SEND_FAIL``. (read-only)"""
//|
STATIC mp_obj_t espnow_send_get_failure(const mp_obj_t self_in) {
espnow_obj_t *self = MP_OBJ_TO_PTR(self_in);
return mp_obj_new_int_from_uint(self->send_failure);
}
MP_DEFINE_CONST_FUN_OBJ_1(espnow_send_get_failure_obj, espnow_send_get_failure);
MP_PROPERTY_GETTER(espnow_send_failure_obj,
(mp_obj_t)&espnow_send_get_failure_obj);
//| read_success: int
//| """The number of rx packets captured in the buffer. (read-only)"""
//|
STATIC mp_obj_t espnow_get_read_success(const mp_obj_t self_in) {
espnow_obj_t *self = MP_OBJ_TO_PTR(self_in);
return mp_obj_new_int_from_uint(self->read_success);
}
MP_DEFINE_CONST_FUN_OBJ_1(espnow_get_read_success_obj, espnow_get_read_success);
MP_PROPERTY_GETTER(espnow_read_success_obj,
(mp_obj_t)&espnow_get_read_success_obj);
//| read_failure: int
//| """The number of dropped rx packets due to buffer overflow. (read-only)"""
//|
STATIC mp_obj_t espnow_read_get_failure(const mp_obj_t self_in) {
espnow_obj_t *self = MP_OBJ_TO_PTR(self_in);
return mp_obj_new_int_from_uint(self->read_failure);
}
MP_DEFINE_CONST_FUN_OBJ_1(espnow_read_get_failure_obj, espnow_read_get_failure);
MP_PROPERTY_GETTER(espnow_read_failure_obj,
(mp_obj_t)&espnow_read_get_failure_obj);
//| def set_pmk(self, pmk: ReadableBuffer) -> None:
//| """Set the ESP-NOW Primary Master Key (pmk) for encrypted communications.
//|
//| :param ReadableBuffer pmk: The ESP-NOW Primary Master Key (length = 16 bytes)."""
//| ...
STATIC mp_obj_t espnow_set_pmk(mp_obj_t self_in, mp_obj_t key) {
espnow_obj_t *self = MP_OBJ_TO_PTR(self_in);
espnow_check_for_deinit(self);
common_hal_espnow_set_pmk(self, common_hal_espnow_get_bytes_len(key, ESP_NOW_KEY_LEN));
return mp_const_none;
}
STATIC MP_DEFINE_CONST_FUN_OBJ_2(espnow_set_pmk_obj, espnow_set_pmk);
//| buffer_size: int
//| """The size of the internal ring buffer. (read-only)"""
//|
STATIC mp_obj_t espnow_get_buffer_size(const mp_obj_t self_in) {
espnow_obj_t *self = MP_OBJ_TO_PTR(self_in);
return mp_obj_new_int_from_uint(self->recv_buffer_size);
}
MP_DEFINE_CONST_FUN_OBJ_1(espnow_get_buffer_size_obj, espnow_get_buffer_size);
MP_PROPERTY_GETTER(espnow_buffer_size_obj,
(mp_obj_t)&espnow_get_buffer_size_obj);
//| phy_rate: int
//| """The ESP-NOW physical layer rate."""
//|
STATIC mp_obj_t espnow_get_phy_rate(const mp_obj_t self_in) {
espnow_obj_t *self = MP_OBJ_TO_PTR(self_in);
return MP_OBJ_NEW_SMALL_INT(self->phy_rate);
}
MP_DEFINE_CONST_FUN_OBJ_1(espnow_get_phy_rate_obj, espnow_get_phy_rate);
STATIC mp_obj_t espnow_set_phy_rate(const mp_obj_t self_in, const mp_obj_t value) {
espnow_obj_t *self = MP_OBJ_TO_PTR(self_in);
espnow_check_for_deinit(self);
common_hal_espnow_set_phy_rate(self, mp_obj_get_int(value));
return mp_const_none;
}
MP_DEFINE_CONST_FUN_OBJ_2(espnow_set_phy_rate_obj, espnow_set_phy_rate);
MP_PROPERTY_GETSET(espnow_phy_rate_obj,
(mp_obj_t)&espnow_get_phy_rate_obj,
(mp_obj_t)&espnow_set_phy_rate_obj);
// --- Peer Related Properties ---
//| peers: Peers
//| """The peer info records for all registered `ESPNow` peers. (read-only)"""
//|
STATIC mp_obj_t espnow_get_peers(mp_obj_t self_in) {
espnow_obj_t *self = MP_OBJ_TO_PTR(self_in);
return MP_OBJ_FROM_PTR(self->peers);
}
STATIC MP_DEFINE_CONST_FUN_OBJ_1(espnow_get_peers_obj, espnow_get_peers);
MP_PROPERTY_GETTER(espnow_peers_obj,
(mp_obj_t)&espnow_get_peers_obj);
STATIC const mp_rom_map_elem_t espnow_locals_dict_table[] = {
// Context managers
{ MP_ROM_QSTR(MP_QSTR___enter__), MP_ROM_PTR(&mp_identity_obj) },
{ MP_ROM_QSTR(MP_QSTR___exit__), MP_ROM_PTR(&espnow___exit___obj) },
// Deinit the object
{ MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&espnow_deinit_obj) },
// Send messages
{ MP_ROM_QSTR(MP_QSTR_send), MP_ROM_PTR(&espnow_send_obj) },
{ MP_ROM_QSTR(MP_QSTR_send_success),MP_ROM_PTR(&espnow_send_success_obj)},
{ MP_ROM_QSTR(MP_QSTR_send_failure),MP_ROM_PTR(&espnow_send_failure_obj)},
// Read messages
{ MP_ROM_QSTR(MP_QSTR_read), MP_ROM_PTR(&espnow_read_obj) },
{ MP_ROM_QSTR(MP_QSTR_read_success),MP_ROM_PTR(&espnow_read_success_obj)},
{ MP_ROM_QSTR(MP_QSTR_read_failure),MP_ROM_PTR(&espnow_read_failure_obj)},
// Config parameters
{ MP_ROM_QSTR(MP_QSTR_set_pmk), MP_ROM_PTR(&espnow_set_pmk_obj) },
{ MP_ROM_QSTR(MP_QSTR_buffer_size), MP_ROM_PTR(&espnow_buffer_size_obj) },
{ MP_ROM_QSTR(MP_QSTR_phy_rate), MP_ROM_PTR(&espnow_phy_rate_obj) },
// Peer related properties
{ MP_ROM_QSTR(MP_QSTR_peers), MP_ROM_PTR(&espnow_peers_obj) },
};
STATIC MP_DEFINE_CONST_DICT(espnow_locals_dict, espnow_locals_dict_table);
// --- Dummy Buffer Protocol support ---
// ...so asyncio can poll.ipoll() on this device
// Support ioctl(MP_STREAM_POLL, ) for asyncio
STATIC mp_uint_t espnow_stream_ioctl(mp_obj_t self_in, mp_uint_t request, uintptr_t arg, int *errcode) {
espnow_obj_t *self = MP_OBJ_TO_PTR(self_in);
espnow_check_for_deinit(self);
switch (request) {
case MP_STREAM_POLL: {
mp_uint_t flags = arg;
mp_uint_t ret = 0;
if ((flags & MP_STREAM_POLL_RD) && ringbuf_num_filled(self->recv_buffer) > 0) {
ret |= MP_STREAM_POLL_RD;
}
return ret;
}
default:
*errcode = MP_EINVAL;
return MP_STREAM_ERROR;
}
}
STATIC const mp_stream_p_t espnow_stream_p = {
MP_PROTO_IMPLEMENT(MP_QSTR_protocol_stream)
.ioctl = espnow_stream_ioctl,
};
//| def __bool__(self) -> bool:
//| """``True`` if `len()` is greater than zero.
//| This is an easy way to check if the buffer is empty.
//| """
//| ...
//| def __len__(self) -> int:
//| """Return the number of `bytes` available to read. Used to implement ``len()``."""
//| ...
//|
STATIC mp_obj_t espnow_unary_op(mp_unary_op_t op, mp_obj_t self_in) {
espnow_obj_t *self = MP_OBJ_TO_PTR(self_in);
espnow_check_for_deinit(self);
size_t len = ringbuf_num_filled(self->recv_buffer);
switch (op) {
case MP_UNARY_OP_BOOL:
return mp_obj_new_bool(len != 0);
case MP_UNARY_OP_LEN:
return mp_obj_new_int_from_uint(len);
default:
return MP_OBJ_NULL; // op not supported
}
}
const mp_obj_type_t espnow_type = {
{ &mp_type_type },
.name = MP_QSTR_ESPNow,
.make_new = espnow_make_new,
.locals_dict = (mp_obj_t)&espnow_locals_dict,
.flags = MP_TYPE_FLAG_EXTENDED,
MP_TYPE_EXTENDED_FIELDS(
.protocol = &espnow_stream_p,
.unary_op = &espnow_unary_op
),
};

View File

@ -0,0 +1,31 @@
/*
* This file is part of the MicroPython project, http://micropython.org/
*
* The MIT License (MIT)
*
* Copyright (c) 2021 Glenn Moloney @glenn20
* Copyright (c) 2023 MicroDev
*
* 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 "py/obj.h"
extern const mp_obj_type_t espnow_type;

View File

@ -0,0 +1,70 @@
/*
* This file is part of the CircuitPython project, https://github.com/adafruit/circuitpython
*
* The MIT License (MIT)
*
* Copyright (c) 2023 MicroDev
*
* 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 "bindings/espnow/ESPNowPacket.h"
//| class ESPNowPacket:
//| """A packet retrieved from ESP-NOW communication protocol. A namedtuple."""
//|
//| mac: ReadableBuffer
//| """The sender's mac address (length = 6 bytes)."""
//|
//| msg: ReadableBuffer
//| """The message sent by the peer (length <= 250 bytes)."""
//|
//| rssi: int
//| """The received signal strength indication (in dBm from -127 to 0)."""
//|
//| time: int
//| """The time in milliseconds since the device last booted when the packet was received."""
//|
const mp_obj_namedtuple_type_t espnow_packet_type_obj = {
.base = {
.base = {
.type = &mp_type_type
},
.flags = MP_TYPE_FLAG_EXTENDED,
.name = MP_QSTR_ESPNowPacket,
.print = namedtuple_print,
.parent = &mp_type_tuple,
.make_new = namedtuple_make_new,
.attr = namedtuple_attr,
MP_TYPE_EXTENDED_FIELDS(
.unary_op = mp_obj_tuple_unary_op,
.binary_op = mp_obj_tuple_binary_op,
.subscr = mp_obj_tuple_subscr,
.getiter = mp_obj_tuple_getiter,
),
},
.n_fields = 4,
.fields = {
MP_QSTR_mac,
MP_QSTR_msg,
MP_QSTR_rssi,
MP_QSTR_time,
},
};

View File

@ -0,0 +1,30 @@
/*
* This file is part of the Micro Python project, http://micropython.org/
*
* The MIT License (MIT)
*
* Copyright (c) 2023 MicroDev
*
* 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 "py/objnamedtuple.h"
extern const mp_obj_namedtuple_type_t espnow_packet_type_obj;

View File

@ -0,0 +1,240 @@
/*
* This file is part of the Micro Python project, http://micropython.org/
*
* The MIT License (MIT)
*
* Copyright (c) 2023 MicroDev
*
* 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 "py/obj.h"
#include "py/objproperty.h"
#include "py/runtime.h"
#include "bindings/espnow/Peer.h"
#include "common-hal/espnow/__init__.h"
// TODO: check peer already exist
// TODO: check peer dosen't exist
//| class Peer:
//| """A data class to store parameters specific to a peer."""
//|
//| def __init__(
//| self,
//| mac: bytes,
//| lmk: Optional[bytes],
//| channel: int = 0,
//| interface: int = 0,
//| encrypt: bool = False,
//| ) -> None:
//| """Construct a new peer object.
//|
//| :param bytes mac: The mac address of the peer.
//| :param bytes lmk: The Local Master Key (lmk) of the peer.
//| :param int channel: The peer's channel. Default: 0 ie. use the current channel.
//| :param int interface: The WiFi interface to use. Default: 0 ie. STA.
//| :param bool encrypt: Whether or not to use encryption.
//| """
//| ...
STATIC mp_obj_t espnow_peer_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) {
enum { ARG_mac, ARG_lmk, ARG_channel, ARG_interface, ARG_encrypt };
static const mp_arg_t allowed_args[] = {
{ MP_QSTR_mac, MP_ARG_OBJ | MP_ARG_REQUIRED },
{ MP_QSTR_lmk, MP_ARG_OBJ, { .u_obj = mp_const_none } },
{ MP_QSTR_channel, MP_ARG_INT, { .u_obj = mp_const_none } },
{ MP_QSTR_interface,MP_ARG_INT, { .u_obj = mp_const_none } },
{ MP_QSTR_encrypt, MP_ARG_BOOL,{ .u_obj = mp_const_none } },
};
mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)];
mp_arg_parse_all_kw_array(n_args, n_kw, all_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args);
espnow_peer_obj_t *self = m_new_obj(espnow_peer_obj_t);
self->base.type = &espnow_peer_type;
self->peer_info = (esp_now_peer_info_t) {
.channel = 0,
.ifidx = WIFI_IF_STA,
.encrypt = false
};
memcpy(self->peer_info.peer_addr, common_hal_espnow_get_bytes_len(args[ARG_mac].u_obj, ESP_NOW_ETH_ALEN), ESP_NOW_ETH_ALEN);
const mp_obj_t channel = args[ARG_channel].u_obj;
if (channel != mp_const_none) {
self->peer_info.channel = mp_arg_validate_int_range(mp_obj_get_int(channel), 0, 14, MP_QSTR_channel);
}
const mp_obj_t interface = args[ARG_interface].u_obj;
if (interface != mp_const_none) {
self->peer_info.ifidx = (wifi_interface_t)mp_arg_validate_int_range(mp_obj_get_int(interface), 0, 1, MP_QSTR_interface);
}
const mp_obj_t encrypt = args[ARG_encrypt].u_obj;
if (encrypt != mp_const_none) {
self->peer_info.encrypt = mp_obj_is_true(encrypt);
}
const mp_obj_t lmk = args[ARG_lmk].u_obj;
if (lmk != mp_const_none) {
memcpy(self->peer_info.lmk, common_hal_espnow_get_bytes_len(lmk, ESP_NOW_KEY_LEN), ESP_NOW_KEY_LEN);
} else if (self->peer_info.encrypt && !self->peer_info.lmk) {
mp_raise_ValueError_varg(translate("%q is %q"), MP_QSTR_lmk, MP_QSTR_None);
}
return self;
}
//| mac: ReadableBuffer
//| """The WiFi mac to use."""
//|
STATIC mp_obj_t espnow_peer_get_mac(const mp_obj_t self_in) {
espnow_peer_obj_t *self = MP_OBJ_TO_PTR(self_in);
return mp_obj_new_bytes(self->peer_info.peer_addr, MP_ARRAY_SIZE(self->peer_info.peer_addr));
}
MP_DEFINE_CONST_FUN_OBJ_1(espnow_peer_get_mac_obj, espnow_peer_get_mac);
STATIC mp_obj_t espnow_peer_set_mac(const mp_obj_t self_in, const mp_obj_t value) {
espnow_peer_obj_t *self = MP_OBJ_TO_PTR(self_in);
memcpy(self->peer_info.peer_addr, common_hal_espnow_get_bytes_len(value, ESP_NOW_ETH_ALEN), ESP_NOW_ETH_ALEN);
esp_now_mod_peer(&self->peer_info);
return mp_const_none;
}
MP_DEFINE_CONST_FUN_OBJ_2(espnow_peer_set_mac_obj, espnow_peer_set_mac);
MP_PROPERTY_GETSET(espnow_peer_mac_obj,
(mp_obj_t)&espnow_peer_get_mac_obj,
(mp_obj_t)&espnow_peer_set_mac_obj);
//| lmk: ReadableBuffer
//| """The WiFi lmk to use."""
//|
STATIC mp_obj_t espnow_peer_get_lmk(const mp_obj_t self_in) {
espnow_peer_obj_t *self = MP_OBJ_TO_PTR(self_in);
return mp_obj_new_bytes(self->peer_info.lmk, MP_ARRAY_SIZE(self->peer_info.lmk));
}
MP_DEFINE_CONST_FUN_OBJ_1(espnow_peer_get_lmk_obj, espnow_peer_get_lmk);
STATIC mp_obj_t espnow_peer_set_lmk(const mp_obj_t self_in, const mp_obj_t value) {
espnow_peer_obj_t *self = MP_OBJ_TO_PTR(self_in);
memcpy(self->peer_info.lmk, common_hal_espnow_get_bytes_len(value, ESP_NOW_KEY_LEN), ESP_NOW_KEY_LEN);
esp_now_mod_peer(&self->peer_info);
return mp_const_none;
}
MP_DEFINE_CONST_FUN_OBJ_2(espnow_peer_set_lmk_obj, espnow_peer_set_lmk);
MP_PROPERTY_GETSET(espnow_peer_lmk_obj,
(mp_obj_t)&espnow_peer_get_lmk_obj,
(mp_obj_t)&espnow_peer_set_lmk_obj);
//| channel: int
//| """The WiFi channel to use."""
//|
STATIC mp_obj_t espnow_peer_get_channel(const mp_obj_t self_in) {
espnow_peer_obj_t *self = MP_OBJ_TO_PTR(self_in);
return MP_OBJ_NEW_SMALL_INT(self->peer_info.channel);
}
MP_DEFINE_CONST_FUN_OBJ_1(espnow_peer_get_channel_obj, espnow_peer_get_channel);
STATIC mp_obj_t espnow_peer_set_channel(const mp_obj_t self_in, const mp_obj_t value) {
espnow_peer_obj_t *self = MP_OBJ_TO_PTR(self_in);
self->peer_info.channel = mp_arg_validate_int_range(mp_obj_get_int(value), 0, 14, MP_QSTR_channel);
esp_now_mod_peer(&self->peer_info);
return mp_const_none;
}
MP_DEFINE_CONST_FUN_OBJ_2(espnow_peer_set_channel_obj, espnow_peer_set_channel);
MP_PROPERTY_GETSET(espnow_peer_channel_obj,
(mp_obj_t)&espnow_peer_get_channel_obj,
(mp_obj_t)&espnow_peer_set_channel_obj);
//| interface: int
//| """The WiFi interface to use."""
//|
STATIC mp_obj_t espnow_peer_get_interface(const mp_obj_t self_in) {
espnow_peer_obj_t *self = MP_OBJ_TO_PTR(self_in);
return MP_OBJ_NEW_SMALL_INT(self->peer_info.ifidx);
}
MP_DEFINE_CONST_FUN_OBJ_1(espnow_peer_get_interface_obj, espnow_peer_get_interface);
STATIC mp_obj_t espnow_peer_set_interface(const mp_obj_t self_in, const mp_obj_t value) {
espnow_peer_obj_t *self = MP_OBJ_TO_PTR(self_in);
self->peer_info.ifidx = (wifi_interface_t)mp_arg_validate_int_range(mp_obj_get_int(value), 0, 1, MP_QSTR_interface);
esp_now_mod_peer(&self->peer_info);
return mp_const_none;
}
MP_DEFINE_CONST_FUN_OBJ_2(espnow_peer_set_interface_obj, espnow_peer_set_interface);
MP_PROPERTY_GETSET(espnow_peer_interface_obj,
(mp_obj_t)&espnow_peer_get_interface_obj,
(mp_obj_t)&espnow_peer_set_interface_obj);
//| encrypted: bool
//| """Whether or not to use encryption."""
//|
STATIC mp_obj_t espnow_peer_get_encrypted(const mp_obj_t self_in) {
espnow_peer_obj_t *self = MP_OBJ_TO_PTR(self_in);
return mp_obj_new_bool(self->peer_info.encrypt);
}
MP_DEFINE_CONST_FUN_OBJ_1(espnow_peer_get_encrypted_obj, espnow_peer_get_encrypted);
STATIC mp_obj_t espnow_peer_set_encrypted(const mp_obj_t self_in, const mp_obj_t value) {
espnow_peer_obj_t *self = MP_OBJ_TO_PTR(self_in);
self->peer_info.encrypt = mp_obj_is_true(value);
if (!self->peer_info.lmk) {
mp_raise_ValueError_varg(translate("%q is %q"), MP_QSTR_lmk, MP_QSTR_None);
}
esp_now_mod_peer(&self->peer_info);
return mp_const_none;
}
MP_DEFINE_CONST_FUN_OBJ_2(espnow_peer_set_encrypted_obj, espnow_peer_set_encrypted);
MP_PROPERTY_GETSET(espnow_peer_encrypted_obj,
(mp_obj_t)&espnow_peer_get_encrypted_obj,
(mp_obj_t)&espnow_peer_set_encrypted_obj);
STATIC const mp_rom_map_elem_t espnow_peer_locals_dict_table[] = {
// Peer parameters
{ MP_ROM_QSTR(MP_QSTR_mac), MP_ROM_PTR(&espnow_peer_mac_obj) },
{ MP_ROM_QSTR(MP_QSTR_lmk), MP_ROM_PTR(&espnow_peer_lmk_obj) },
{ MP_ROM_QSTR(MP_QSTR_channel), MP_ROM_PTR(&espnow_peer_channel_obj) },
{ MP_ROM_QSTR(MP_QSTR_interface), MP_ROM_PTR(&espnow_peer_interface_obj) },
{ MP_ROM_QSTR(MP_QSTR_encrypted), MP_ROM_PTR(&espnow_peer_encrypted_obj) },
};
STATIC MP_DEFINE_CONST_DICT(espnow_peer_locals_dict, espnow_peer_locals_dict_table);
const mp_obj_type_t espnow_peer_type = {
{ &mp_type_type },
.name = MP_QSTR_Peer,
.make_new = espnow_peer_make_new,
.locals_dict = (mp_obj_t)&espnow_peer_locals_dict,
};

View File

@ -0,0 +1,37 @@
/*
* This file is part of the Micro Python project, http://micropython.org/
*
* The MIT License (MIT)
*
* Copyright (c) 2023 MicroDev
*
* 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 "py/obj.h"
#include "esp_now.h"
typedef struct {
mp_obj_base_t base;
esp_now_peer_info_t peer_info;
} espnow_peer_obj_t;
const mp_obj_type_t espnow_peer_type;

View File

@ -0,0 +1,140 @@
/*
* This file is part of the Micro Python project, http://micropython.org/
*
* The MIT License (MIT)
*
* Copyright (c) 2023 MicroDev
*
* 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 "py/obj.h"
#include "py/objlist.h"
#include "py/runtime.h"
#include "bindings/espidf/__init__.h"
#include "bindings/espnow/Peer.h"
#include "bindings/espnow/Peers.h"
#include "esp_now.h"
// TODO: Check for deinit
//| class Peers:
//| """Maintains a `list` of `Peer` internally and only exposes a subset of `list` methods."""
//|
//| def __init__(self) -> None:
//| """You cannot create an instance of `Peers`."""
//| ...
//| def append(self, peer: Peer) -> None:
//| """Append peer.
//|
//| :param Peer peer: The peer object to append.
//| """
//| ...
STATIC mp_obj_t espnow_peers_append(mp_obj_t self_in, mp_obj_t arg) {
espnow_peer_obj_t *peer = MP_OBJ_TO_PTR(mp_arg_validate_type(arg, &espnow_peer_type, MP_QSTR_Peer));
CHECK_ESP_RESULT(esp_now_add_peer(&peer->peer_info));
espnow_peers_obj_t *self = MP_OBJ_TO_PTR(self_in);
return mp_obj_list_append(self->list, arg);
}
STATIC MP_DEFINE_CONST_FUN_OBJ_2(espnow_peers_append_obj, espnow_peers_append);
//| def remove(self, peer: Peer) -> None:
//| """Remove peer.
//|
//| :param Peer peer: The peer object to remove.
//| """
//| ...
//|
STATIC mp_obj_t espnow_peers_remove(mp_obj_t self_in, mp_obj_t arg) {
espnow_peer_obj_t *peer = MP_OBJ_TO_PTR(mp_arg_validate_type(arg, &espnow_peer_type, MP_QSTR_Peer));
CHECK_ESP_RESULT(esp_now_del_peer(peer->peer_info.peer_addr));
espnow_peers_obj_t *self = MP_OBJ_TO_PTR(self_in);
return mp_obj_list_remove(self->list, arg);
}
STATIC MP_DEFINE_CONST_FUN_OBJ_2(espnow_peers_remove_obj, espnow_peers_remove);
STATIC const mp_rom_map_elem_t espnow_peers_locals_dict_table[] = {
// Peer management functions
{ MP_ROM_QSTR(MP_QSTR_append), MP_ROM_PTR(&espnow_peers_append_obj) },
{ MP_ROM_QSTR(MP_QSTR_remove), MP_ROM_PTR(&espnow_peers_remove_obj) },
};
STATIC MP_DEFINE_CONST_DICT(espnow_peers_locals_dict, espnow_peers_locals_dict_table);
/******************************************************************************/
/* peers print */
STATIC void espnow_peers_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t kind) {
espnow_peers_obj_t *self = MP_OBJ_TO_PTR(self_in);
mp_obj_list_t *list = MP_OBJ_TO_PTR(self->list);
return list->base.type->print(print, self->list, kind);
}
/******************************************************************************/
/* peers unary_op */
STATIC mp_obj_t espnow_peers_unary_op(mp_unary_op_t op, mp_obj_t self_in) {
espnow_peers_obj_t *self = MP_OBJ_TO_PTR(self_in);
mp_obj_list_t *list = MP_OBJ_TO_PTR(self->list);
return list->base.type->ext->unary_op(op, self->list);
}
/******************************************************************************/
/* peers subscript */
STATIC mp_obj_t espnow_peers_subscr(mp_obj_t self_in, mp_obj_t index, mp_obj_t value) {
if (value != MP_OBJ_SENTINEL) {
return MP_OBJ_NULL; // op not supported
}
espnow_peers_obj_t *self = MP_OBJ_TO_PTR(self_in);
mp_obj_list_t *list = MP_OBJ_TO_PTR(self->list);
return list->base.type->ext->subscr(self->list, index, value);
}
/******************************************************************************/
/* peers iterator */
STATIC mp_obj_t espnow_peers_getiter(mp_obj_t self_in, mp_obj_iter_buf_t *iter_buf) {
espnow_peers_obj_t *self = MP_OBJ_TO_PTR(self_in);
mp_obj_list_t *list = MP_OBJ_TO_PTR(self->list);
return list->base.type->ext->getiter(self->list, iter_buf);
}
espnow_peers_obj_t *espnow_peers_new(void) {
espnow_peers_obj_t *self = m_new_obj(espnow_peers_obj_t);
self->base.type = &espnow_peers_type;
self->list = mp_obj_new_list(0, NULL);
return self;
}
const mp_obj_type_t espnow_peers_type = {
{ &mp_type_type },
.name = MP_QSTR_Peers,
.print = espnow_peers_print,
.locals_dict = (mp_obj_t)&espnow_peers_locals_dict,
.flags = MP_TYPE_FLAG_EXTENDED,
MP_TYPE_EXTENDED_FIELDS(
.unary_op = espnow_peers_unary_op,
.subscr = espnow_peers_subscr,
.getiter = espnow_peers_getiter,
),
};

View File

@ -0,0 +1,37 @@
/*
* This file is part of the Micro Python project, http://micropython.org/
*
* The MIT License (MIT)
*
* Copyright (c) 2023 MicroDev
*
* 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 "py/obj.h"
typedef struct {
mp_obj_base_t base;
mp_obj_t list;
} espnow_peers_obj_t;
extern const mp_obj_type_t espnow_peers_type;
extern espnow_peers_obj_t *espnow_peers_new(void);

View File

@ -0,0 +1,95 @@
/*
* This file is part of the Micro Python project, http://micropython.org/
*
* The MIT License (MIT)
*
* Copyright (c) 2023 MicroDev
*
* 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 "bindings/espnow/__init__.h"
#include "bindings/espnow/ESPNow.h"
#include "bindings/espnow/ESPNowPacket.h"
#include "bindings/espnow/Peer.h"
#include "bindings/espnow/Peers.h"
//| """ESP-NOW Module
//|
//| The `espnow` module provides an interface to the
//| `ESP-NOW <https://www.espressif.com/en/products/software/esp-now/overview>`_
//| protocol provided by Espressif on its SoCs
//| (`API docs <https://docs.espressif.com/projects/esp-idf/en/latest/api-reference/network/esp_now.html>`_).
//|
//| **Sender**
//|
//| .. code-block:: python
//|
//| import espnow
//|
//| e = espnow.ESPNow()
//| peer = espnow.Peer(mac=b'\xaa\xaa\xaa\xaa\xaa\xaa')
//| e.peers.append(peer)
//|
//| e.send("Starting...")
//| for i in range(10):
//| e.send(str(i)*20)
//| e.send(b'end')
//|
//| **Receiver**
//|
//| .. code-block:: python
//|
//| import espnow
//|
//| e = espnow.ESPNow()
//| packets = []
//|
//| while True:
//| if e:
//| packet = e.read()
//| packets.append(packet)
//| if packet.msg == b'end':
//| break
//|
//| print("packets:", f"length={len(packets)}")
//| for packet in packets:
//| print(packet)
//| """
//| ...
//|
STATIC const mp_rom_map_elem_t espnow_module_globals_table[] = {
// module name
{ MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_espnow) },
// module classes
{ MP_ROM_QSTR(MP_QSTR_ESPNow), MP_ROM_PTR(&espnow_type) },
{ MP_ROM_QSTR(MP_QSTR_ESPNowPacket),MP_ROM_PTR(&espnow_packet_type_obj) },
{ MP_ROM_QSTR(MP_QSTR_Peer), MP_ROM_PTR(&espnow_peer_type) },
{ MP_ROM_QSTR(MP_QSTR_Peers), MP_ROM_PTR(&espnow_peers_type) },
};
STATIC MP_DEFINE_CONST_DICT(espnow_module_globals, espnow_module_globals_table);
const mp_obj_module_t espnow_module = {
.base = { &mp_type_module },
.globals = (mp_obj_dict_t *)&espnow_module_globals,
};
MP_REGISTER_MODULE(MP_QSTR_espnow, espnow_module, CIRCUITPY_ESPNOW);

View File

@ -0,0 +1,29 @@
/*
* This file is part of the Micro Python project, http://micropython.org/
*
* The MIT License (MIT)
*
* Copyright (c) 2023 MicroDev
*
* 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
void espnow_reset(void);

View File

@ -9,5 +9,4 @@ CIRCUITPY_ESP_FLASH_MODE = qio
CIRCUITPY_ESP_FLASH_FREQ = 40m CIRCUITPY_ESP_FLASH_FREQ = 40m
CIRCUITPY_ESP_FLASH_SIZE = 4MB CIRCUITPY_ESP_FLASH_SIZE = 4MB
OPTIMIZATION_FLAGS = -Os
CIRCUITPY_ESPCAMERA = 0 CIRCUITPY_ESPCAMERA = 0

View File

@ -9,3 +9,5 @@ IDF_TARGET = esp32s3
CIRCUITPY_ESP_FLASH_MODE = dio CIRCUITPY_ESP_FLASH_MODE = dio
CIRCUITPY_ESP_FLASH_FREQ = 40m CIRCUITPY_ESP_FLASH_FREQ = 40m
CIRCUITPY_ESP_FLASH_SIZE = 4MB CIRCUITPY_ESP_FLASH_SIZE = 4MB
CIRCUITPY_ESPCAMERA = 0

View File

@ -10,5 +10,4 @@ CIRCUITPY_ESP_FLASH_MODE = dio
CIRCUITPY_ESP_FLASH_FREQ = 40m CIRCUITPY_ESP_FLASH_FREQ = 40m
CIRCUITPY_ESP_FLASH_SIZE = 4MB CIRCUITPY_ESP_FLASH_SIZE = 4MB
OPTIMIZATION_FLAGS = -Os
CIRCUITPY_ESPCAMERA = 0 CIRCUITPY_ESPCAMERA = 0

View File

@ -31,3 +31,10 @@
#define DEFAULT_UART_BUS_RX (&pin_GPIO44) #define DEFAULT_UART_BUS_RX (&pin_GPIO44)
#define DEFAULT_UART_BUS_TX (&pin_GPIO43) #define DEFAULT_UART_BUS_TX (&pin_GPIO43)
#define DEFAULT_I2C_BUS_SCL (&pin_GPIO9)
#define DEFAULT_I2C_BUS_SDA (&pin_GPIO8)
#define DEFAULT_SPI_BUS_SCK (&pin_GPIO14)
#define DEFAULT_SPI_BUS_MOSI (&pin_GPIO15)
#define DEFAULT_SPI_BUS_MISO (&pin_GPIO13)

View File

@ -25,13 +25,13 @@ STATIC const mp_rom_map_elem_t board_module_globals_table[] = {
{ MP_ROM_QSTR(MP_QSTR_IO12), MP_ROM_PTR(&pin_GPIO12) }, { MP_ROM_QSTR(MP_QSTR_IO12), MP_ROM_PTR(&pin_GPIO12) },
{ MP_ROM_QSTR(MP_QSTR_IO13), MP_ROM_PTR(&pin_GPIO13) }, { MP_ROM_QSTR(MP_QSTR_IO13), MP_ROM_PTR(&pin_GPIO13) },
{ MP_ROM_QSTR(MP_QSTR_SD_MISO), MP_ROM_PTR(&pin_GPIO13) }, { MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_GPIO13) },
{ MP_ROM_QSTR(MP_QSTR_IO14), MP_ROM_PTR(&pin_GPIO14) }, { MP_ROM_QSTR(MP_QSTR_IO14), MP_ROM_PTR(&pin_GPIO14) },
{ MP_ROM_QSTR(MP_QSTR_SD_CLK), MP_ROM_PTR(&pin_GPIO14) }, { MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_GPIO14) },
{ MP_ROM_QSTR(MP_QSTR_IO15), MP_ROM_PTR(&pin_GPIO15) }, { MP_ROM_QSTR(MP_QSTR_IO15), MP_ROM_PTR(&pin_GPIO15) },
{ MP_ROM_QSTR(MP_QSTR_SD_MOSI), MP_ROM_PTR(&pin_GPIO15) }, { MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_GPIO15) },
{ MP_ROM_QSTR(MP_QSTR_IO16), MP_ROM_PTR(&pin_GPIO16) }, { MP_ROM_QSTR(MP_QSTR_IO16), MP_ROM_PTR(&pin_GPIO16) },
{ MP_ROM_QSTR(MP_QSTR_SD_CS), MP_ROM_PTR(&pin_GPIO16) }, { MP_ROM_QSTR(MP_QSTR_SD_CS), MP_ROM_PTR(&pin_GPIO16) },
@ -64,5 +64,7 @@ STATIC const mp_rom_map_elem_t board_module_globals_table[] = {
{ MP_ROM_QSTR(MP_QSTR_IO47), MP_ROM_PTR(&pin_GPIO47) }, { MP_ROM_QSTR(MP_QSTR_IO47), MP_ROM_PTR(&pin_GPIO47) },
{ MP_ROM_QSTR(MP_QSTR_IO48), MP_ROM_PTR(&pin_GPIO48) }, { MP_ROM_QSTR(MP_QSTR_IO48), MP_ROM_PTR(&pin_GPIO48) },
{ 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_module_globals_table); MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table);

View File

@ -9,5 +9,4 @@ CIRCUITPY_ESP_FLASH_MODE = qio
CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_FLASH_FREQ = 80m
CIRCUITPY_ESP_FLASH_SIZE = 16MB CIRCUITPY_ESP_FLASH_SIZE = 16MB
OPTIMIZATION_FLAGS = -Os
CIRCUITPY_ESPCAMERA = 0 CIRCUITPY_ESPCAMERA = 0

View File

@ -30,3 +30,14 @@
#define MICROPY_HW_MCU_NAME "ESP32S2" #define MICROPY_HW_MCU_NAME "ESP32S2"
#define MICROPY_HW_LED_STATUS (&pin_GPIO9) #define MICROPY_HW_LED_STATUS (&pin_GPIO9)
#define MICROPY_HW_LED_STATUS_INVERTED (1)
#define DEFAULT_I2C_BUS_SCL (&pin_GPIO41)
#define DEFAULT_I2C_BUS_SDA (&pin_GPIO40)
#define DEFAULT_SPI_BUS_SCK (&pin_GPIO10)
#define DEFAULT_SPI_BUS_MOSI (&pin_GPIO11)
#define DEFAULT_SPI_BUS_MISO (&pin_GPIO12)
#define DEFAULT_UART_BUS_RX (&pin_GPIO44)
#define DEFAULT_UART_BUS_TX (&pin_GPIO43)

View File

@ -27,17 +27,20 @@
#include <string.h> #include <string.h>
#include <stdio.h> #include <stdio.h>
#include "shared/runtime/interrupt_char.h"
#include "py/ringbuf.h" #include "py/ringbuf.h"
#include "py/runtime.h" #include "py/runtime.h"
#include "py/stream.h" #include "py/stream.h"
#include "shared/runtime/interrupt_char.h"
#include "shared-bindings/_bleio/__init__.h" #include "shared-bindings/_bleio/__init__.h"
#include "shared-bindings/_bleio/Connection.h" #include "shared-bindings/_bleio/Connection.h"
#include "supervisor/shared/tick.h"
#include "common-hal/_bleio/CharacteristicBuffer.h"
#include "shared-bindings/_bleio/CharacteristicBuffer.h" #include "shared-bindings/_bleio/CharacteristicBuffer.h"
#include "supervisor/shared/tick.h"
#include "common-hal/_bleio/ble_events.h"
STATIC int characteristic_buffer_on_ble_evt(struct ble_gap_event *event, void *param) { STATIC int characteristic_buffer_on_ble_evt(struct ble_gap_event *event, void *param) {
bleio_characteristic_buffer_obj_t *self = (bleio_characteristic_buffer_obj_t *)param; bleio_characteristic_buffer_obj_t *self = (bleio_characteristic_buffer_obj_t *)param;
switch (event->type) { switch (event->type) {

View File

@ -30,21 +30,24 @@
#include <string.h> #include <string.h>
#include <stdio.h> #include <stdio.h>
#include "shared/runtime/interrupt_char.h"
#include "py/gc.h" #include "py/gc.h"
#include "py/objlist.h" #include "py/objlist.h"
#include "py/objstr.h" #include "py/objstr.h"
#include "py/qstr.h" #include "py/qstr.h"
#include "py/runtime.h" #include "py/runtime.h"
#include "shared/runtime/interrupt_char.h"
#include "shared-bindings/_bleio/__init__.h" #include "shared-bindings/_bleio/__init__.h"
#include "shared-bindings/_bleio/Adapter.h" #include "shared-bindings/_bleio/Adapter.h"
#include "shared-bindings/_bleio/Attribute.h" #include "shared-bindings/_bleio/Attribute.h"
#include "shared-bindings/_bleio/Characteristic.h" #include "shared-bindings/_bleio/Characteristic.h"
#include "shared-bindings/_bleio/Service.h" #include "shared-bindings/_bleio/Service.h"
#include "shared-bindings/_bleio/UUID.h" #include "shared-bindings/_bleio/UUID.h"
#include "supervisor/shared/tick.h" #include "supervisor/shared/tick.h"
// #include "common-hal/_bleio/bonding.h" #include "common-hal/_bleio/ble_events.h"
#include "host/ble_att.h" #include "host/ble_att.h"

View File

@ -27,17 +27,20 @@
#include <string.h> #include <string.h>
#include <stdio.h> #include <stdio.h>
#include "shared/runtime/interrupt_char.h"
#include "py/runtime.h" #include "py/runtime.h"
#include "py/stream.h" #include "py/stream.h"
#include "shared/runtime/interrupt_char.h"
#include "shared-bindings/_bleio/__init__.h" #include "shared-bindings/_bleio/__init__.h"
#include "shared-bindings/_bleio/Connection.h" #include "shared-bindings/_bleio/Connection.h"
#include "shared-bindings/_bleio/PacketBuffer.h" #include "shared-bindings/_bleio/PacketBuffer.h"
#include "supervisor/shared/tick.h"
#include "supervisor/shared/tick.h"
#include "supervisor/shared/bluetooth/serial.h" #include "supervisor/shared/bluetooth/serial.h"
#include "common-hal/_bleio/ble_events.h"
#include "host/ble_att.h" #include "host/ble_att.h"
STATIC void write_to_ringbuf(bleio_packet_buffer_obj_t *self, const struct os_mbuf *mbuf) { STATIC void write_to_ringbuf(bleio_packet_buffer_obj_t *self, const struct os_mbuf *mbuf) {

View File

@ -29,7 +29,9 @@
#include "supervisor/memory.h" #include "supervisor/memory.h"
#include "py/runtime.h" #include "py/runtime.h"
#include "esp_now.h"
#include "esp_log.h" #include "esp_log.h"
#define TAG "espidf" #define TAG "espidf"
#ifdef CONFIG_SPIRAM #ifdef CONFIG_SPIRAM
@ -180,14 +182,19 @@ void raise_esp_error(esp_err_t err) {
// tests must be in descending order // tests must be in descending order
MP_STATIC_ASSERT(ESP_ERR_FLASH_BASE > ESP_ERR_MESH_BASE); MP_STATIC_ASSERT(ESP_ERR_FLASH_BASE > ESP_ERR_MESH_BASE);
MP_STATIC_ASSERT(ESP_ERR_MESH_BASE > ESP_ERR_WIFI_BASE); MP_STATIC_ASSERT(ESP_ERR_MESH_BASE > ESP_ERR_ESPNOW_BASE);
MP_STATIC_ASSERT(ESP_ERR_ESPNOW_BASE > ESP_ERR_WIFI_BASE);
if (err >= ESP_ERR_FLASH_BASE) { if (err >= ESP_ERR_FLASH_BASE) {
group = "Flash"; group = "Flash";
} else if (err >= ESP_ERR_MESH_BASE) { } else if (err >= ESP_ERR_MESH_BASE) {
group = "Mesh"; group = "Mesh";
} else if (err >= ESP_ERR_ESPNOW_BASE) {
group = "ESP-NOW";
} else if (err >= ESP_ERR_WIFI_BASE) { } else if (err >= ESP_ERR_WIFI_BASE) {
group = "WiFi"; group = "WiFi";
} }
mp_raise_msg_varg(exception_type, translate("%s error 0x%x"), group, err); mp_raise_msg_varg(exception_type, translate("%s error 0x%x"), group, err);
} }

View File

@ -0,0 +1,240 @@
/*
* This file is part of the MicroPython project, http://micropython.org/
*
* The MIT License (MIT)
*
* Copyright (c) 2017-2020 Nick Moore
* Copyright (c) 2018 shawwwn <shawwwn1@gmail.com>
* Copyright (c) 2020-2021 Glenn Moloney @glenn20
* Copyright (c) 2023 MicroDev
*
* 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 "py/mperrno.h"
#include "py/runtime.h"
#include "bindings/espidf/__init__.h"
#include "bindings/espnow/ESPNowPacket.h"
#include "shared-bindings/wifi/__init__.h"
#include "common-hal/espnow/ESPNow.h"
#include "mphalport.h"
#include "esp_now.h"
#define ESPNOW_MAGIC 0x99
// TODO: deinit wifi?
// The min/max length of an espnow packet (bytes)
#define MIN_PACKET_LEN (sizeof(espnow_packet_t))
#define MAX_PACKET_LEN (sizeof(espnow_packet_t) + ESP_NOW_MAX_DATA_LEN)
// Enough for 2 full-size packets: 2 * (6 + 7 + 250) = 526 bytes
// Will allocate an additional 7 bytes for buffer overhead
#define DEFAULT_RECV_BUFFER_SIZE (2 * MAX_PACKET_LEN)
// Time to wait (millisec) for responses from sent packets: (2 seconds).
#define DEFAULT_SEND_TIMEOUT_MS (2000)
// ESPNow packet format for the receive buffer.
// Use this for peeking at the header of the next packet in the buffer.
typedef struct {
uint8_t magic; // = ESPNOW_MAGIC
uint8_t msg_len; // Length of the message
uint32_t time_ms; // Timestamp (ms) when packet is received
int8_t rssi; // RSSI value (dBm) (-127 to 0)
} __attribute__((packed)) espnow_header_t;
typedef struct {
espnow_header_t header; // The header
uint8_t peer[6]; // Peer address
uint8_t msg[0]; // Message is up to 250 bytes
} __attribute__((packed)) espnow_packet_t;
// --- The ESP-NOW send and recv callback routines ---
// Callback triggered when a sent packet is acknowledged by the peer (or not).
// Just count the number of responses and number of failures.
// These are used in the send() logic.
static void send_cb(const uint8_t *mac, esp_now_send_status_t status) {
espnow_obj_t *self = MP_STATE_PORT(espnow_singleton);
if (status == ESP_NOW_SEND_SUCCESS) {
self->send_success++;
} else {
self->send_failure++;
}
}
// Callback triggered when an ESP-NOW packet is received.
// Write the peer MAC address and the message into the recv_buffer as an ESPNow packet.
// If the buffer is full, drop the message and increment the dropped count.
static void recv_cb(const uint8_t *mac, const uint8_t *msg, int msg_len) {
espnow_obj_t *self = MP_STATE_PORT(espnow_singleton);
ringbuf_t *buf = self->recv_buffer;
if (sizeof(espnow_packet_t) + msg_len > ringbuf_num_empty(buf)) {
self->read_failure++;
return;
}
// Get the RSSI value from the wifi packet header
// Secret magic to get the rssi from the wifi packet header
// See espnow.c:espnow_recv_cb() at https://github.com/espressif/esp-now/
// In the wifi packet the msg comes after a wifi_promiscuous_pkt_t
// and a espnow_frame_format_t.
// Backtrack to get a pointer to the wifi_promiscuous_pkt_t.
#define SIZEOF_ESPNOW_FRAME_FORMAT 39
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wcast-align"
wifi_promiscuous_pkt_t *wifi_packet = (wifi_promiscuous_pkt_t *)(
msg - SIZEOF_ESPNOW_FRAME_FORMAT - sizeof(wifi_promiscuous_pkt_t));
#pragma GCC diagnostic pop
espnow_header_t header;
header.magic = ESPNOW_MAGIC;
header.msg_len = msg_len;
header.rssi = wifi_packet->rx_ctrl.rssi;
header.time_ms = mp_hal_ticks_ms();
ringbuf_put_n(buf, (uint8_t *)&header, sizeof(header));
ringbuf_put_n(buf, mac, ESP_NOW_ETH_ALEN);
ringbuf_put_n(buf, msg, msg_len);
self->read_success++;
}
bool common_hal_espnow_deinited(espnow_obj_t *self) {
return self == NULL || self->recv_buffer == NULL;
}
// Construct the ESPNow object
void common_hal_espnow_construct(espnow_obj_t *self, mp_int_t buffer_size, mp_int_t phy_rate) {
common_hal_espnow_set_phy_rate(self, phy_rate);
self->recv_buffer_size = mp_arg_validate_int_min(buffer_size, MIN_PACKET_LEN, MP_QSTR_buffer_size);
self->peers = espnow_peers_new();
common_hal_espnow_init(self);
}
// Initialize the ESP-NOW software stack,
// register callbacks and allocate the recv data buffers.
void common_hal_espnow_init(espnow_obj_t *self) {
if (!common_hal_espnow_deinited(self)) {
return;
}
self->recv_buffer = m_new_obj(ringbuf_t);
if (!ringbuf_alloc(self->recv_buffer, self->recv_buffer_size, true)) {
m_malloc_fail(self->recv_buffer_size);
}
if (!common_hal_wifi_radio_get_enabled(&common_hal_wifi_radio_obj)) {
common_hal_wifi_init(false);
common_hal_wifi_radio_set_enabled(&common_hal_wifi_radio_obj, true);
}
CHECK_ESP_RESULT(esp_wifi_config_espnow_rate(ESP_IF_WIFI_STA, self->phy_rate));
CHECK_ESP_RESULT(esp_wifi_config_espnow_rate(ESP_IF_WIFI_AP, self->phy_rate));
CHECK_ESP_RESULT(esp_now_init());
CHECK_ESP_RESULT(esp_now_register_send_cb(send_cb));
CHECK_ESP_RESULT(esp_now_register_recv_cb(recv_cb));
}
// De-initialize the ESP-NOW software stack,
// disable callbacks and deallocate the recv data buffer.
void common_hal_espnow_deinit(espnow_obj_t *self) {
if (common_hal_espnow_deinited(self)) {
return;
}
CHECK_ESP_RESULT(esp_now_unregister_send_cb());
CHECK_ESP_RESULT(esp_now_unregister_recv_cb());
CHECK_ESP_RESULT(esp_now_deinit());
self->recv_buffer->buf = NULL;
self->recv_buffer = NULL;
}
void espnow_reset(void) {
common_hal_espnow_deinit(MP_STATE_PORT(espnow_singleton));
MP_STATE_PORT(espnow_singleton) = NULL;
}
void common_hal_espnow_set_phy_rate(espnow_obj_t *self, mp_int_t value) {
self->phy_rate = mp_arg_validate_int_range(value, 0, WIFI_PHY_RATE_MAX - 1, MP_QSTR_phy_rate);
};
void common_hal_espnow_set_pmk(espnow_obj_t *self, const uint8_t *key) {
CHECK_ESP_RESULT(esp_now_set_pmk(key));
}
// --- Send and Receive ESP-NOW data ---
mp_obj_t common_hal_espnow_send(espnow_obj_t *self, const mp_buffer_info_t *message, const uint8_t *mac) {
// Send the packet - keep trying until timeout if the internal esp-now buffers are full.
esp_err_t err;
mp_uint_t start = mp_hal_ticks_ms();
while ((ESP_ERR_ESPNOW_NO_MEM == (err = esp_now_send(mac, message->buf, message->len))) &&
(mp_hal_ticks_ms() - start) <= DEFAULT_SEND_TIMEOUT_MS) {
RUN_BACKGROUND_TASKS;
}
CHECK_ESP_RESULT(err);
return mp_const_none;
}
mp_obj_t common_hal_espnow_read(espnow_obj_t *self) {
if (!ringbuf_num_filled(self->recv_buffer)) {
return mp_const_none;
}
// Read the packet header from the incoming buffer
espnow_header_t header;
if (ringbuf_get_n(self->recv_buffer, (uint8_t *)&header, sizeof(header)) != sizeof(header)) {
mp_arg_error_invalid(MP_QSTR_buffer);
}
uint8_t msg_len = header.msg_len;
uint8_t mac_buf[ESP_NOW_ETH_ALEN];
uint8_t msg_buf[msg_len];
// Check the message packet header format and read the message data
if (header.magic != ESPNOW_MAGIC ||
msg_len > ESP_NOW_MAX_DATA_LEN ||
ringbuf_get_n(self->recv_buffer, mac_buf, ESP_NOW_ETH_ALEN) != ESP_NOW_ETH_ALEN ||
ringbuf_get_n(self->recv_buffer, msg_buf, msg_len) != msg_len) {
mp_arg_error_invalid(MP_QSTR_buffer);
}
mp_obj_t elems[4] = {
mp_obj_new_bytes(mac_buf, ESP_NOW_ETH_ALEN),
mp_obj_new_bytes(msg_buf, msg_len),
MP_OBJ_NEW_SMALL_INT(header.rssi),
mp_obj_new_int(header.time_ms),
};
return namedtuple_make_new((const mp_obj_type_t *)&espnow_packet_type_obj, 4, 0, elems);
}

View File

@ -0,0 +1,59 @@
/*
* This file is part of the Micro Python project, http://micropython.org/
*
* The MIT License (MIT)
*
* Copyright (c) 2023 MicroDev
*
* 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 "py/obj.h"
#include "py/ringbuf.h"
#include "bindings/espnow/Peers.h"
#include "esp_wifi.h"
typedef struct _espnow_obj_t {
mp_obj_base_t base;
ringbuf_t *recv_buffer;
size_t recv_buffer_size;
wifi_phy_rate_t phy_rate;
espnow_peers_obj_t *peers;
volatile size_t send_success;
volatile size_t send_failure;
volatile size_t read_success;
volatile size_t read_failure;
} espnow_obj_t;
extern void espnow_reset(void);
extern void common_hal_espnow_construct(espnow_obj_t *self, mp_int_t buffer_size, mp_int_t phy_rate);
extern void common_hal_espnow_init(espnow_obj_t *self);
extern void common_hal_espnow_deinit(espnow_obj_t *self);
extern bool common_hal_espnow_deinited(espnow_obj_t *self);
extern void common_hal_espnow_set_phy_rate(espnow_obj_t *self, mp_int_t value);
extern void common_hal_espnow_set_pmk(espnow_obj_t *self, const uint8_t *key);
extern mp_obj_t common_hal_espnow_send(espnow_obj_t *self, const mp_buffer_info_t *message, const uint8_t *mac);
extern mp_obj_t common_hal_espnow_read(espnow_obj_t *self);

View File

@ -0,0 +1,38 @@
/*
* This file is part of the Micro Python project, http://micropython.org/
*
* The MIT License (MIT)
*
* Copyright (c) 2023 MicroDev
*
* 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 "common-hal/espnow/__init__.h"
#include "py/runtime.h"
// Return C pointer to byte memory string/bytes/bytearray in obj.
// Raise ValueError if the length does not match expected len.
const uint8_t *common_hal_espnow_get_bytes_len(mp_obj_t obj, size_t len) {
mp_buffer_info_t bufinfo;
mp_get_buffer_raise(obj, &bufinfo, MP_BUFFER_READ);
mp_arg_validate_length(bufinfo.len, len, MP_QSTR_buffer);
return (uint8_t *)bufinfo.buf;
}

View File

@ -0,0 +1,30 @@
/*
* This file is part of the Micro Python project, http://micropython.org/
*
* The MIT License (MIT)
*
* Copyright (c) 2023 MicroDev
*
* 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 "py/obj.h"
extern const uint8_t *common_hal_espnow_get_bytes_len(mp_obj_t obj, size_t len);

View File

@ -1,91 +0,0 @@
/*
* This file is part of the MicroPython project, http://micropython.org/
*
* The MIT License (MIT)
*
* Copyright (c) 2020 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.
*/
#include "esp_error.h"
#include "py/runtime.h"
#include "bindings/espidf/__init__.h"
void raise_esp_error(esp_err_t err) {
const compressed_string_t *msg = NULL;
const mp_obj_type_t *exception_type = &mp_type_espidf_IDFError;
switch (err) {
case ESP_FAIL:
msg = translate("Generic Failure");
break;
case ESP_ERR_NO_MEM:
exception_type = &mp_type_espidf_MemoryError;
msg = translate("Out of memory");
break;
case ESP_ERR_INVALID_ARG:
msg = translate("Invalid argument");
break;
case ESP_ERR_INVALID_STATE:
msg = translate("Invalid state");
break;
case ESP_ERR_INVALID_SIZE:
msg = translate("Invalid size");
break;
case ESP_ERR_NOT_FOUND:
msg = translate("Requested resource not found");
break;
case ESP_ERR_NOT_SUPPORTED:
msg = translate("Operation or feature not supported");
break;
case ESP_ERR_TIMEOUT:
msg = translate("Operation timed out");
break;
case ESP_ERR_INVALID_RESPONSE:
msg = translate("Received response was invalid");
break;
case ESP_ERR_INVALID_CRC:
msg = translate("CRC or checksum was invalid");
break;
case ESP_ERR_INVALID_VERSION:
msg = translate("Version was invalid");
break;
case ESP_ERR_INVALID_MAC:
msg = translate("MAC address was invalid");
break;
}
if (msg) {
mp_raise_msg(exception_type, msg);
}
const char *group = "ESP-IDF";
// tests must be in descending order
MP_STATIC_ASSERT(ESP_ERR_FLASH_BASE > ESP_ERR_MESH_BASE);
MP_STATIC_ASSERT(ESP_ERR_MESH_BASE > ESP_ERR_WIFI_BASE);
if (err >= ESP_ERR_FLASH_BASE) {
group = "Flash";
} else if (err >= ESP_ERR_MESH_BASE) {
group = "Mesh";
} else if (err >= ESP_ERR_WIFI_BASE) {
group = "WiFi";
}
mp_raise_msg_varg(exception_type, translate("%s error 0x%x"), group, err);
}

View File

@ -38,17 +38,21 @@
#include "py/circuitpy_mpconfig.h" #include "py/circuitpy_mpconfig.h"
#if CIRCUITPY_BLEIO #if CIRCUITPY_BLEIO
#include "common-hal/_bleio/ble_events.h" #define BLEIO_ROOT_POINTERS struct ble_event_handler_entry *ble_event_handler_entries;
#else
#define BLEIO_ROOT_POINTERS
#endif
#if CIRCUITPY_ESPNOW
#define ESPNOW_ROOT_POINTERS struct _espnow_obj_t *espnow_singleton;
#else
#define ESPNOW_ROOT_POINTERS
#endif #endif
#if CIRCUITPY_BLEIO
#define MICROPY_PORT_ROOT_POINTERS \ #define MICROPY_PORT_ROOT_POINTERS \
CIRCUITPY_COMMON_ROOT_POINTERS \ CIRCUITPY_COMMON_ROOT_POINTERS \
ble_event_handler_entry_t *ble_event_handler_entries; BLEIO_ROOT_POINTERS \
#else ESPNOW_ROOT_POINTERS
#define MICROPY_PORT_ROOT_POINTERS \
CIRCUITPY_COMMON_ROOT_POINTERS
#endif
#define MICROPY_NLR_SETJMP (1) #define MICROPY_NLR_SETJMP (1)
#define CIRCUITPY_DEFAULT_STACK_SIZE 0x6000 #define CIRCUITPY_DEFAULT_STACK_SIZE 0x6000

View File

@ -82,6 +82,7 @@ CIRCUITPY_DUALBANK = 0
endif endif
# Modules dependent on other modules # Modules dependent on other modules
CIRCUITPY_ESPNOW ?= $(CIRCUITPY_WIFI)
CIRCUITPY_GIFIO ?= $(CIRCUITPY_ESPCAMERA) CIRCUITPY_GIFIO ?= $(CIRCUITPY_ESPCAMERA)
CIRCUITPY_QRIO ?= $(CIRCUITPY_ESPCAMERA) CIRCUITPY_QRIO ?= $(CIRCUITPY_ESPCAMERA)

View File

@ -37,6 +37,7 @@
#include "freertos/task.h" #include "freertos/task.h"
#include "bindings/espidf/__init__.h" #include "bindings/espidf/__init__.h"
#include "bindings/espnow/__init__.h"
#include "bindings/espulp/__init__.h" #include "bindings/espulp/__init__.h"
#include "common-hal/microcontroller/Pin.h" #include "common-hal/microcontroller/Pin.h"
#include "common-hal/analogio/AnalogOut.h" #include "common-hal/analogio/AnalogOut.h"
@ -369,6 +370,10 @@ void reset_port(void) {
dualbank_reset(); dualbank_reset();
#endif #endif
#if CIRCUITPY_ESPNOW
espnow_reset();
#endif
#if CIRCUITPY_ESPULP #if CIRCUITPY_ESPULP
espulp_reset(); espulp_reset();
#endif #endif

View File

@ -226,6 +226,9 @@ CFLAGS += -DCIRCUITPY_ERRNO=$(CIRCUITPY_ERRNO)
CIRCUITPY_ESPIDF ?= 0 CIRCUITPY_ESPIDF ?= 0
CFLAGS += -DCIRCUITPY_ESPIDF=$(CIRCUITPY_ESPIDF) CFLAGS += -DCIRCUITPY_ESPIDF=$(CIRCUITPY_ESPIDF)
CIRCUITPY_ESPNOW ?= 0
CFLAGS += -DCIRCUITPY_ESPNOW=$(CIRCUITPY_ESPNOW)
CIRCUITPY_ESPULP ?= 0 CIRCUITPY_ESPULP ?= 0
CFLAGS += -DCIRCUITPY_ESPULP=$(CIRCUITPY_ESPULP) CFLAGS += -DCIRCUITPY_ESPULP=$(CIRCUITPY_ESPULP)

View File

@ -50,6 +50,9 @@ mp_obj_t mp_obj_tuple_getiter(mp_obj_t o_in, mp_obj_iter_buf_t *iter_buf);
extern const mp_obj_type_t mp_type_attrtuple; extern const mp_obj_type_t mp_type_attrtuple;
// Relies on gcc Variadic Macros and Statement Expressions
#define MP_OBJ_NEW_TUPLE(...) ({mp_obj_t _z[] = {__VA_ARGS__}; mp_obj_new_tuple(MP_ARRAY_SIZE(_z), _z);})
#define MP_DEFINE_ATTRTUPLE(tuple_obj_name, fields, nitems, ...) \ #define MP_DEFINE_ATTRTUPLE(tuple_obj_name, fields, nitems, ...) \
const mp_rom_obj_tuple_t tuple_obj_name = { \ const mp_rom_obj_tuple_t tuple_obj_name = { \
.base = {&mp_type_attrtuple}, \ .base = {&mp_type_attrtuple}, \

View File

@ -72,7 +72,6 @@ int ringbuf_get16(ringbuf_t *r) {
if (r->used < 2) { if (r->used < 2) {
return -1; return -1;
} }
int high_byte = ringbuf_get(r); int high_byte = ringbuf_get(r);
int low_byte = ringbuf_get(r); int low_byte = ringbuf_get(r);
return (high_byte << 8) | low_byte; return (high_byte << 8) | low_byte;
@ -92,6 +91,15 @@ int ringbuf_put(ringbuf_t *r, uint8_t v) {
return 0; return 0;
} }
int ringbuf_put16(ringbuf_t *r, uint16_t v) {
if (r->size - r->used < 2) {
return -1;
}
ringbuf_put(r, (v >> 8) & 0xff);
ringbuf_put(r, v & 0xff);
return 0;
}
void ringbuf_clear(ringbuf_t *r) { void ringbuf_clear(ringbuf_t *r) {
r->next_write = 0; r->next_write = 0;
r->next_read = 0; r->next_read = 0;
@ -132,13 +140,3 @@ size_t ringbuf_get_n(ringbuf_t *r, uint8_t *buf, size_t bufsize) {
} }
return bufsize; return bufsize;
} }
int ringbuf_put16(ringbuf_t *r, uint16_t v) {
if (r->size - r->used < 2) {
return -1;
}
ringbuf_put(r, (v >> 8) & 0xff);
ringbuf_put(r, v & 0xff);
return 0;
}

View File

@ -171,8 +171,7 @@ def get_bad_check_runs(query_check_runs):
more_pages = True more_pages = True
run_types = ["failed", "incomplete"] run_types = ["failed", "incomplete"]
have_dependent_jobs = ["scheduler", "mpy-cross", "tests"]
regex_matrix = re.compile(r"^\S+ \/ (build|run) \(\S+\)$")
while more_pages: while more_pages:
check_runs = query_check_runs.fetch()["data"]["node"] check_runs = query_check_runs.fetch()["data"]["node"]
@ -184,15 +183,16 @@ def get_bad_check_runs(query_check_runs):
for check_run in check_runs[run_type]["nodes"]: for check_run in check_runs[run_type]["nodes"]:
name = check_run["name"] name = check_run["name"]
if name.startswith("ports") or regex_matrix.search(name):
matrix = name.split(" ", 1)[0] if any([name.startswith(job) for job in have_dependent_jobs]):
matrix_job = name.rsplit(" (", 1)[1][:-1]
bad_runs.setdefault(matrix, []).append(matrix_job)
elif name != "scheduler":
bad_runs[name] = True
else:
return {} return {}
if name.startswith("ports"):
matrix_job = name.rsplit(" (", 1)[1][:-1]
bad_runs.setdefault("ports", []).append(matrix_job)
else:
bad_runs[name] = True
if query_check_runs.paginate( if query_check_runs.paginate(
check_runs[run_type]["pageInfo"], "after" + run_type_camel check_runs[run_type]["pageInfo"], "after" + run_type_camel
): ):

View File

@ -98,9 +98,6 @@ def set_output(name: str, value):
def set_boards(build_all: bool): def set_boards(build_all: bool):
if last_failed_jobs.get("mpy-cross") or last_failed_jobs.get("tests"):
build_all = True
# Get boards in json format # Get boards in json format
boards_info_json = build_board_info.get_board_mapping() boards_info_json = build_board_info.get_board_mapping()
all_board_ids = set() all_board_ids = set()