Merge branch 'adafruit_main' into tilegrid_size_props

This commit is contained in:
foamyguy 2021-12-20 07:31:08 -06:00
commit 2ce9dc7680
91 changed files with 1079 additions and 119 deletions

View File

@ -4,7 +4,7 @@
repos: repos:
- repo: https://github.com/pre-commit/pre-commit-hooks - repo: https://github.com/pre-commit/pre-commit-hooks
rev: v2.3.0 rev: v4.0.1
hooks: hooks:
- id: check-yaml - id: check-yaml
- id: end-of-file-fixer - id: end-of-file-fixer

View File

@ -100,7 +100,7 @@ We apply code quality checks using pre-commit. Install pre-commit once per syst
Activate it once per git clone with Activate it once per git clone with
pre-commit --install pre-commit install
Pre-commit also requires some additional programs to be installed through your package manager: Pre-commit also requires some additional programs to be installed through your package manager:

@ -1 +1 @@
Subproject commit c03990cc56283417e752246c2738199f65d1b7ef Subproject commit a99e0b98787266369eaa33bdae271de761eca05b

@ -1 +1 @@
Subproject commit 781f46b73f71817b709d2e279fc188a7c1e69423 Subproject commit 434e367cc7da4c2836affdbf92b8932ca59a25b0

@ -1 +1 @@
Subproject commit 92a6ce1da70c0c4f69ef34fc0d7ec7155cc2441f Subproject commit 4fc5a32763c4a6eac3a9446e296a9e925cc29a5c

@ -1 +1 @@
Subproject commit 313c17cbb590ef8d505845369eb3b78c25c97fae Subproject commit bafa35c18a610660bdce68784195c4a7fbdf1189

@ -1 +1 @@
Subproject commit e25c1801c5428598f543873bb846851b78efb329 Subproject commit de4829a027a45882ae5477e50a75985e0e59f759

@ -1 +1 @@
Subproject commit ed41dd44605110f1d1411ed694ec2b5676dd8d9c Subproject commit 8fc5eaecb3e24e4109bcc788f41461f1c45c3719

@ -1 +1 @@
Subproject commit daff8cdca78637915bea2f3a120cc84578516195 Subproject commit ebbe69667d53ae76bc6d82e5296f87520ffbb5ae

@ -1 +1 @@
Subproject commit e4f7cd083dea8eb103954e7703bbb487491b433f Subproject commit 4ac43288938abb4c3db127eeb79ef0d4ea4c16ea

@ -1 +1 @@
Subproject commit 70ef86dc1a42138efcab01945d5a421e45f2408e Subproject commit 9ac490905834466319279a3390c914f1fd83733f

@ -1 +1 @@
Subproject commit 379209dd7e4374c262b84256778d7895693e7fb6 Subproject commit 0df4521b4a04ca1236960ff889ede118ec4305b5

@ -1 +1 @@
Subproject commit 5b699a609197fb42aa059788c7c824c346d57c4e Subproject commit 755784b6acc8ba419a085bee2d2dc4374f0d0030

View File

@ -2763,6 +2763,10 @@ msgstr "kalibrasi adalah read only"
msgid "calibration value out of range +/-127" msgid "calibration value out of range +/-127"
msgstr "nilai kalibrasi keluar dari jangkauan +/-127" msgstr "nilai kalibrasi keluar dari jangkauan +/-127"
#: shared-module/vectorio/Rectangle.c
msgid "can only be registered in one parent"
msgstr ""
#: py/emitinlinethumb.c #: py/emitinlinethumb.c
msgid "can only have up to 4 parameters to Thumb assembly" msgid "can only have up to 4 parameters to Thumb assembly"
msgstr "hanya mampu memiliki hingga 4 parameter untuk Thumb assembly" msgstr "hanya mampu memiliki hingga 4 parameter untuk Thumb assembly"
@ -3995,7 +3999,9 @@ msgstr ""
#: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h #: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h
#: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h #: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h
#: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h #: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h
#: ports/espressif/boards/espressif_esp32s3_box/mpconfigboard.h
#: ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h #: ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h
#: ports/espressif/boards/espressif_esp32s3_devkitc_1_nopsram/mpconfigboard.h
#: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h #: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h
#: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h
#: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h
@ -4010,7 +4016,6 @@ msgstr ""
#: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h #: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h
#: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h #: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h
#: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h #: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h
#: ports/espressif/boards/microdev_macro_s3/mpconfigboard.h
#: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h #: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h
#: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h #: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h
#: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h #: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h

View File

@ -2726,6 +2726,10 @@ msgstr ""
msgid "calibration value out of range +/-127" msgid "calibration value out of range +/-127"
msgstr "" msgstr ""
#: shared-module/vectorio/Rectangle.c
msgid "can only be registered in one parent"
msgstr ""
#: py/emitinlinethumb.c #: py/emitinlinethumb.c
msgid "can only have up to 4 parameters to Thumb assembly" msgid "can only have up to 4 parameters to Thumb assembly"
msgstr "" msgstr ""
@ -3957,7 +3961,9 @@ msgstr ""
#: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h #: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h
#: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h #: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h
#: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h #: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h
#: ports/espressif/boards/espressif_esp32s3_box/mpconfigboard.h
#: ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h #: ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h
#: ports/espressif/boards/espressif_esp32s3_devkitc_1_nopsram/mpconfigboard.h
#: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h #: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h
#: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h
#: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h
@ -3972,7 +3978,6 @@ msgstr ""
#: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h #: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h
#: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h #: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h
#: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h #: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h
#: ports/espressif/boards/microdev_macro_s3/mpconfigboard.h
#: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h #: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h
#: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h #: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h
#: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h #: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h

View File

@ -6,27 +6,31 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-01-04 12:55-0600\n" "POT-Creation-Date: 2021-01-04 12:55-0600\n"
"PO-Revision-Date: 2020-12-04 18:33+0000\n" "PO-Revision-Date: 2021-12-15 03:32+0000\n"
"Last-Translator: vkuthan <vit.kuthan@seznam.cz>\n" "Last-Translator: dronecz <mzuzelka@gmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
"Language: cs\n" "Language: cs\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
"X-Generator: Weblate 4.4-dev\n" "X-Generator: Weblate 4.10-dev\n"
#: main.c #: main.c
msgid "" msgid ""
"\n" "\n"
"Code done running.\n" "Code done running.\n"
msgstr "" msgstr ""
"\n"
"Program byl dokončen.\n"
#: main.c #: main.c
msgid "" msgid ""
"\n" "\n"
"Code stopped by auto-reload.\n" "Code stopped by auto-reload.\n"
msgstr "" msgstr ""
"\n"
"Program byl zastaven automatickým načtením.\n"
#: supervisor/shared/safe_mode.c #: supervisor/shared/safe_mode.c
msgid "" msgid ""
@ -35,7 +39,7 @@ msgid ""
"https://github.com/adafruit/circuitpython/issues\n" "https://github.com/adafruit/circuitpython/issues\n"
msgstr "" msgstr ""
"\n" "\n"
"Založte prosím problém s obsahem vaší jednotky CIRCUITPY na adrese\n" "Prosím vytvořte tiket s obsahem vaší jednotky CIRCUITPY na adrese\n"
"https://github.com/adafruit/circuitpython/issues\n" "https://github.com/adafruit/circuitpython/issues\n"
#: py/obj.c #: py/obj.c
@ -48,11 +52,11 @@ msgstr " Soubor \"%q\", řádek %d"
#: py/builtinhelp.c #: py/builtinhelp.c
msgid " is of type %q\n" msgid " is of type %q\n"
msgstr "" msgstr " je typu %q\n"
#: main.c #: main.c
msgid " not found.\n" msgid " not found.\n"
msgstr "" msgstr " nenalezen\n"
#: main.c #: main.c
msgid " output:\n" msgid " output:\n"
@ -79,11 +83,11 @@ msgstr ""
#: ports/atmel-samd/common-hal/sdioio/SDCard.c #: ports/atmel-samd/common-hal/sdioio/SDCard.c
msgid "%q failure: %d" msgid "%q failure: %d"
msgstr "Selhání %q: %d" msgstr "%q: selhání %d"
#: shared-bindings/microcontroller/Pin.c #: shared-bindings/microcontroller/Pin.c
msgid "%q in use" msgid "%q in use"
msgstr "Používá se %q" msgstr "%q se právě používá"
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c #: ports/atmel-samd/common-hal/pulseio/PulseIn.c
#: ports/cxd56/common-hal/pulseio/PulseIn.c #: ports/cxd56/common-hal/pulseio/PulseIn.c
@ -199,7 +203,7 @@ msgstr "Objekt '%q' není iterátor"
#: py/objtype.c py/runtime.c shared-module/atexit/__init__.c #: py/objtype.c py/runtime.c shared-module/atexit/__init__.c
msgid "'%q' object is not callable" msgid "'%q' object is not callable"
msgstr "Objekt '%q' nelze volat" msgstr "Objekt '%q' nelze zavolat"
#: py/runtime.c #: py/runtime.c
msgid "'%q' object is not iterable" msgid "'%q' object is not iterable"
@ -1943,6 +1947,8 @@ msgstr ""
#: main.c #: main.c
msgid "Press any key to enter the REPL. Use CTRL-D to reload.\n" msgid "Press any key to enter the REPL. Use CTRL-D to reload.\n"
msgstr "" msgstr ""
"Zmáčkněte jakoukoli klávesu pro spuštění REPLu. Použijte CTRL-D pro opětovné "
"načtení.\n"
#: main.c #: main.c
msgid "Pretending to deep sleep until alarm, CTRL-C or file write.\n" msgid "Pretending to deep sleep until alarm, CTRL-C or file write.\n"
@ -2729,6 +2735,10 @@ msgstr ""
msgid "calibration value out of range +/-127" msgid "calibration value out of range +/-127"
msgstr "" msgstr ""
#: shared-module/vectorio/Rectangle.c
msgid "can only be registered in one parent"
msgstr ""
#: py/emitinlinethumb.c #: py/emitinlinethumb.c
msgid "can only have up to 4 parameters to Thumb assembly" msgid "can only have up to 4 parameters to Thumb assembly"
msgstr "" msgstr ""
@ -3960,7 +3970,9 @@ msgstr ""
#: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h #: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h
#: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h #: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h
#: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h #: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h
#: ports/espressif/boards/espressif_esp32s3_box/mpconfigboard.h
#: ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h #: ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h
#: ports/espressif/boards/espressif_esp32s3_devkitc_1_nopsram/mpconfigboard.h
#: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h #: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h
#: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h
#: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h
@ -3975,7 +3987,6 @@ msgstr ""
#: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h #: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h
#: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h #: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h
#: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h #: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h
#: ports/espressif/boards/microdev_macro_s3/mpconfigboard.h
#: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h #: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h
#: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h #: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h
#: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h #: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h

View File

@ -2768,6 +2768,10 @@ msgstr "Kalibrierung ist Schreibgeschützt"
msgid "calibration value out of range +/-127" msgid "calibration value out of range +/-127"
msgstr "Kalibrierwert nicht im Bereich von +/-127" msgstr "Kalibrierwert nicht im Bereich von +/-127"
#: shared-module/vectorio/Rectangle.c
msgid "can only be registered in one parent"
msgstr ""
#: py/emitinlinethumb.c #: py/emitinlinethumb.c
msgid "can only have up to 4 parameters to Thumb assembly" msgid "can only have up to 4 parameters to Thumb assembly"
msgstr "kann nur bis zu 4 Parameter für die Thumb assembly haben" msgstr "kann nur bis zu 4 Parameter für die Thumb assembly haben"
@ -4023,7 +4027,9 @@ msgstr "pow() mit 3 Argumenten erfordert Integer"
#: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h #: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h
#: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h #: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h
#: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h #: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h
#: ports/espressif/boards/espressif_esp32s3_box/mpconfigboard.h
#: ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h #: ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h
#: ports/espressif/boards/espressif_esp32s3_devkitc_1_nopsram/mpconfigboard.h
#: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h #: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h
#: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h
#: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h
@ -4038,7 +4044,6 @@ msgstr "pow() mit 3 Argumenten erfordert Integer"
#: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h #: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h
#: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h #: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h
#: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h #: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h
#: ports/espressif/boards/microdev_macro_s3/mpconfigboard.h
#: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h #: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h
#: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h #: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h
#: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h #: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h

View File

@ -2726,6 +2726,10 @@ msgstr ""
msgid "calibration value out of range +/-127" msgid "calibration value out of range +/-127"
msgstr "" msgstr ""
#: shared-module/vectorio/Rectangle.c
msgid "can only be registered in one parent"
msgstr ""
#: py/emitinlinethumb.c #: py/emitinlinethumb.c
msgid "can only have up to 4 parameters to Thumb assembly" msgid "can only have up to 4 parameters to Thumb assembly"
msgstr "" msgstr ""
@ -3957,7 +3961,9 @@ msgstr ""
#: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h #: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h
#: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h #: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h
#: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h #: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h
#: ports/espressif/boards/espressif_esp32s3_box/mpconfigboard.h
#: ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h #: ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h
#: ports/espressif/boards/espressif_esp32s3_devkitc_1_nopsram/mpconfigboard.h
#: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h #: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h
#: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h
#: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h
@ -3972,7 +3978,6 @@ msgstr ""
#: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h #: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h
#: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h #: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h
#: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h #: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h
#: ports/espressif/boards/microdev_macro_s3/mpconfigboard.h
#: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h #: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h
#: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h #: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h
#: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h #: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h

View File

@ -2760,6 +2760,10 @@ msgstr "Calibration is read only"
msgid "calibration value out of range +/-127" msgid "calibration value out of range +/-127"
msgstr "Calibration value out of range +/-127" msgstr "Calibration value out of range +/-127"
#: shared-module/vectorio/Rectangle.c
msgid "can only be registered in one parent"
msgstr ""
#: py/emitinlinethumb.c #: py/emitinlinethumb.c
msgid "can only have up to 4 parameters to Thumb assembly" msgid "can only have up to 4 parameters to Thumb assembly"
msgstr "Can only have up to 4 parameters to thumb assembly" msgstr "Can only have up to 4 parameters to thumb assembly"
@ -3994,7 +3998,9 @@ msgstr "pow() with 3 arguments requires integers"
#: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h #: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h
#: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h #: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h
#: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h #: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h
#: ports/espressif/boards/espressif_esp32s3_box/mpconfigboard.h
#: ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h #: ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h
#: ports/espressif/boards/espressif_esp32s3_devkitc_1_nopsram/mpconfigboard.h
#: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h #: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h
#: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h
#: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h
@ -4009,7 +4015,6 @@ msgstr "pow() with 3 arguments requires integers"
#: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h #: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h
#: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h #: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h
#: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h #: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h
#: ports/espressif/boards/microdev_macro_s3/mpconfigboard.h
#: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h #: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h
#: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h #: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h
#: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h #: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h

View File

@ -2795,6 +2795,10 @@ msgstr "calibration es de solo lectura"
msgid "calibration value out of range +/-127" msgid "calibration value out of range +/-127"
msgstr "Valor de calibración fuera del rango +/-127" msgstr "Valor de calibración fuera del rango +/-127"
#: shared-module/vectorio/Rectangle.c
msgid "can only be registered in one parent"
msgstr ""
#: py/emitinlinethumb.c #: py/emitinlinethumb.c
msgid "can only have up to 4 parameters to Thumb assembly" msgid "can only have up to 4 parameters to Thumb assembly"
msgstr "solo puede tener hasta 4 parámetros para ensamblar Thumb" msgstr "solo puede tener hasta 4 parámetros para ensamblar Thumb"
@ -4040,7 +4044,9 @@ msgstr "pow() con 3 argumentos requiere enteros"
#: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h #: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h
#: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h #: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h
#: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h #: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h
#: ports/espressif/boards/espressif_esp32s3_box/mpconfigboard.h
#: ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h #: ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h
#: ports/espressif/boards/espressif_esp32s3_devkitc_1_nopsram/mpconfigboard.h
#: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h #: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h
#: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h
#: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h
@ -4055,7 +4061,6 @@ msgstr "pow() con 3 argumentos requiere enteros"
#: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h #: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h
#: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h #: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h
#: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h #: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h
#: ports/espressif/boards/microdev_macro_s3/mpconfigboard.h
#: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h #: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h
#: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h #: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h
#: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h #: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h

View File

@ -2749,6 +2749,10 @@ msgstr "pagkakalibrate ay basahin lamang"
msgid "calibration value out of range +/-127" msgid "calibration value out of range +/-127"
msgstr "ang halaga ng pagkakalibrate ay wala sa sakop +/-127" msgstr "ang halaga ng pagkakalibrate ay wala sa sakop +/-127"
#: shared-module/vectorio/Rectangle.c
msgid "can only be registered in one parent"
msgstr ""
#: py/emitinlinethumb.c #: py/emitinlinethumb.c
msgid "can only have up to 4 parameters to Thumb assembly" msgid "can only have up to 4 parameters to Thumb assembly"
msgstr "maaari lamang magkaroon ng hanggang 4 na parameter sa Thumb assembly" msgstr "maaari lamang magkaroon ng hanggang 4 na parameter sa Thumb assembly"
@ -3998,7 +4002,9 @@ msgstr "pow() na may 3 argumento kailangan ng integers"
#: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h #: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h
#: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h #: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h
#: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h #: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h
#: ports/espressif/boards/espressif_esp32s3_box/mpconfigboard.h
#: ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h #: ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h
#: ports/espressif/boards/espressif_esp32s3_devkitc_1_nopsram/mpconfigboard.h
#: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h #: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h
#: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h
#: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h
@ -4013,7 +4019,6 @@ msgstr "pow() na may 3 argumento kailangan ng integers"
#: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h #: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h
#: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h #: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h
#: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h #: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h
#: ports/espressif/boards/microdev_macro_s3/mpconfigboard.h
#: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h #: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h
#: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h #: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h
#: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h #: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h

View File

@ -8,8 +8,8 @@ msgstr ""
"Project-Id-Version: 0.1\n" "Project-Id-Version: 0.1\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-01-04 12:55-0600\n" "POT-Creation-Date: 2021-01-04 12:55-0600\n"
"PO-Revision-Date: 2021-11-26 13:46+0000\n" "PO-Revision-Date: 2021-12-13 05:53+0000\n"
"Last-Translator: Maxime Leroy <lisacintosh@gmail.com>\n" "Last-Translator: Jeff Epler <jepler@gmail.com>\n"
"Language: fr\n" "Language: fr\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
@ -2818,6 +2818,10 @@ msgstr "étalonnage en lecture seule"
msgid "calibration value out of range +/-127" msgid "calibration value out of range +/-127"
msgstr "valeur de étalonnage hors bornes +/-127" msgstr "valeur de étalonnage hors bornes +/-127"
#: shared-module/vectorio/Rectangle.c
msgid "can only be registered in one parent"
msgstr ""
#: py/emitinlinethumb.c #: py/emitinlinethumb.c
msgid "can only have up to 4 parameters to Thumb assembly" msgid "can only have up to 4 parameters to Thumb assembly"
msgstr "il peut y avoir jusqu'à 4 paramètres pour l'assemblage Thumb" msgstr "il peut y avoir jusqu'à 4 paramètres pour l'assemblage Thumb"
@ -3566,7 +3570,6 @@ msgid "invalid syntax for number"
msgstr "syntaxe invalide pour un nombre" msgstr "syntaxe invalide pour un nombre"
#: py/objexcept.c #: py/objexcept.c
#, fuzzy
msgid "invalid traceback" msgid "invalid traceback"
msgstr "traceback invalide" msgstr "traceback invalide"
@ -4072,7 +4075,9 @@ msgstr "pow() avec 3 arguments nécessite des entiers"
#: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h #: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h
#: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h #: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h
#: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h #: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h
#: ports/espressif/boards/espressif_esp32s3_box/mpconfigboard.h
#: ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h #: ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h
#: ports/espressif/boards/espressif_esp32s3_devkitc_1_nopsram/mpconfigboard.h
#: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h #: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h
#: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h
#: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h
@ -4087,7 +4092,6 @@ msgstr "pow() avec 3 arguments nécessite des entiers"
#: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h #: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h
#: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h #: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h
#: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h #: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h
#: ports/espressif/boards/microdev_macro_s3/mpconfigboard.h
#: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h #: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h
#: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h #: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h
#: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h #: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h

View File

@ -2726,6 +2726,10 @@ msgstr ""
msgid "calibration value out of range +/-127" msgid "calibration value out of range +/-127"
msgstr "" msgstr ""
#: shared-module/vectorio/Rectangle.c
msgid "can only be registered in one parent"
msgstr ""
#: py/emitinlinethumb.c #: py/emitinlinethumb.c
msgid "can only have up to 4 parameters to Thumb assembly" msgid "can only have up to 4 parameters to Thumb assembly"
msgstr "" msgstr ""
@ -3957,7 +3961,9 @@ msgstr ""
#: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h #: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h
#: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h #: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h
#: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h #: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h
#: ports/espressif/boards/espressif_esp32s3_box/mpconfigboard.h
#: ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h #: ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h
#: ports/espressif/boards/espressif_esp32s3_devkitc_1_nopsram/mpconfigboard.h
#: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h #: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h
#: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h
#: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h
@ -3972,7 +3978,6 @@ msgstr ""
#: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h #: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h
#: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h #: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h
#: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h #: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h
#: ports/espressif/boards/microdev_macro_s3/mpconfigboard.h
#: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h #: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h
#: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h #: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h
#: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h #: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h

View File

@ -2770,6 +2770,10 @@ msgstr "la calibrazione è in sola lettura"
msgid "calibration value out of range +/-127" msgid "calibration value out of range +/-127"
msgstr "valore di calibrazione fuori intervallo +/-127" msgstr "valore di calibrazione fuori intervallo +/-127"
#: shared-module/vectorio/Rectangle.c
msgid "can only be registered in one parent"
msgstr ""
#: py/emitinlinethumb.c #: py/emitinlinethumb.c
#, fuzzy #, fuzzy
msgid "can only have up to 4 parameters to Thumb assembly" msgid "can only have up to 4 parameters to Thumb assembly"
@ -4020,7 +4024,9 @@ msgstr "pow() con 3 argomenti richiede interi"
#: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h #: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h
#: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h #: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h
#: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h #: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h
#: ports/espressif/boards/espressif_esp32s3_box/mpconfigboard.h
#: ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h #: ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h
#: ports/espressif/boards/espressif_esp32s3_devkitc_1_nopsram/mpconfigboard.h
#: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h #: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h
#: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h
#: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h
@ -4035,7 +4041,6 @@ msgstr "pow() con 3 argomenti richiede interi"
#: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h #: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h
#: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h #: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h
#: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h #: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h
#: ports/espressif/boards/microdev_macro_s3/mpconfigboard.h
#: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h #: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h
#: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h #: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h
#: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h #: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h

View File

@ -2741,6 +2741,10 @@ msgstr "calibrationは読み込み専用"
msgid "calibration value out of range +/-127" msgid "calibration value out of range +/-127"
msgstr "" msgstr ""
#: shared-module/vectorio/Rectangle.c
msgid "can only be registered in one parent"
msgstr ""
#: py/emitinlinethumb.c #: py/emitinlinethumb.c
msgid "can only have up to 4 parameters to Thumb assembly" msgid "can only have up to 4 parameters to Thumb assembly"
msgstr "" msgstr ""
@ -3979,7 +3983,9 @@ msgstr "pow()の第3引数には整数が必要"
#: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h #: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h
#: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h #: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h
#: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h #: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h
#: ports/espressif/boards/espressif_esp32s3_box/mpconfigboard.h
#: ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h #: ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h
#: ports/espressif/boards/espressif_esp32s3_devkitc_1_nopsram/mpconfigboard.h
#: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h #: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h
#: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h
#: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h
@ -3994,7 +4000,6 @@ msgstr "pow()の第3引数には整数が必要"
#: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h #: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h
#: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h #: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h
#: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h #: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h
#: ports/espressif/boards/microdev_macro_s3/mpconfigboard.h
#: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h #: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h
#: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h #: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h
#: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h #: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h

View File

@ -2730,6 +2730,10 @@ msgstr ""
msgid "calibration value out of range +/-127" msgid "calibration value out of range +/-127"
msgstr "" msgstr ""
#: shared-module/vectorio/Rectangle.c
msgid "can only be registered in one parent"
msgstr ""
#: py/emitinlinethumb.c #: py/emitinlinethumb.c
msgid "can only have up to 4 parameters to Thumb assembly" msgid "can only have up to 4 parameters to Thumb assembly"
msgstr "" msgstr ""
@ -3961,7 +3965,9 @@ msgstr ""
#: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h #: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h
#: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h #: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h
#: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h #: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h
#: ports/espressif/boards/espressif_esp32s3_box/mpconfigboard.h
#: ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h #: ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h
#: ports/espressif/boards/espressif_esp32s3_devkitc_1_nopsram/mpconfigboard.h
#: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h #: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h
#: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h
#: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h
@ -3976,7 +3982,6 @@ msgstr ""
#: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h #: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h
#: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h #: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h
#: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h #: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h
#: ports/espressif/boards/microdev_macro_s3/mpconfigboard.h
#: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h #: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h
#: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h #: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h
#: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h #: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h

View File

@ -2758,6 +2758,10 @@ msgstr "calibration is alleen-lezen"
msgid "calibration value out of range +/-127" msgid "calibration value out of range +/-127"
msgstr "calibration waarde buiten bereik +/-127" msgstr "calibration waarde buiten bereik +/-127"
#: shared-module/vectorio/Rectangle.c
msgid "can only be registered in one parent"
msgstr ""
#: py/emitinlinethumb.c #: py/emitinlinethumb.c
msgid "can only have up to 4 parameters to Thumb assembly" msgid "can only have up to 4 parameters to Thumb assembly"
msgstr "kan slechts 4 parameters aan Thumb assembly geven" msgstr "kan slechts 4 parameters aan Thumb assembly geven"
@ -3998,7 +4002,9 @@ msgstr "pow() met 3 argumenten vereist integers"
#: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h #: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h
#: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h #: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h
#: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h #: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h
#: ports/espressif/boards/espressif_esp32s3_box/mpconfigboard.h
#: ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h #: ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h
#: ports/espressif/boards/espressif_esp32s3_devkitc_1_nopsram/mpconfigboard.h
#: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h #: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h
#: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h
#: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h
@ -4013,7 +4019,6 @@ msgstr "pow() met 3 argumenten vereist integers"
#: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h #: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h
#: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h #: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h
#: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h #: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h
#: ports/espressif/boards/microdev_macro_s3/mpconfigboard.h
#: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h #: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h
#: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h #: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h
#: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h #: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h

View File

@ -2737,6 +2737,10 @@ msgstr "kalibracja tylko do odczytu"
msgid "calibration value out of range +/-127" msgid "calibration value out of range +/-127"
msgstr "wartość kalibracji poza zakresem +/-127" msgstr "wartość kalibracji poza zakresem +/-127"
#: shared-module/vectorio/Rectangle.c
msgid "can only be registered in one parent"
msgstr ""
#: py/emitinlinethumb.c #: py/emitinlinethumb.c
msgid "can only have up to 4 parameters to Thumb assembly" msgid "can only have up to 4 parameters to Thumb assembly"
msgstr "asembler Thumb może przyjąć do 4 parameterów" msgstr "asembler Thumb może przyjąć do 4 parameterów"
@ -3970,7 +3974,9 @@ msgstr "trzyargumentowe pow() wymaga liczb całkowitych"
#: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h #: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h
#: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h #: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h
#: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h #: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h
#: ports/espressif/boards/espressif_esp32s3_box/mpconfigboard.h
#: ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h #: ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h
#: ports/espressif/boards/espressif_esp32s3_devkitc_1_nopsram/mpconfigboard.h
#: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h #: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h
#: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h
#: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h
@ -3985,7 +3991,6 @@ msgstr "trzyargumentowe pow() wymaga liczb całkowitych"
#: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h #: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h
#: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h #: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h
#: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h #: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h
#: ports/espressif/boards/microdev_macro_s3/mpconfigboard.h
#: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h #: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h
#: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h #: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h
#: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h #: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h

View File

@ -6,7 +6,7 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-01-04 12:55-0600\n" "POT-Creation-Date: 2021-01-04 12:55-0600\n"
"PO-Revision-Date: 2021-11-24 23:51+0000\n" "PO-Revision-Date: 2021-12-16 22:53+0000\n"
"Last-Translator: Wellington Terumi Uemura <wellingtonuemura@gmail.com>\n" "Last-Translator: Wellington Terumi Uemura <wellingtonuemura@gmail.com>\n"
"Language-Team: \n" "Language-Team: \n"
"Language: pt_BR\n" "Language: pt_BR\n"
@ -14,7 +14,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n" "Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 4.10-dev\n" "X-Generator: Weblate 4.10\n"
#: main.c #: main.c
msgid "" msgid ""
@ -2810,6 +2810,10 @@ msgstr "Calibração é somente leitura"
msgid "calibration value out of range +/-127" msgid "calibration value out of range +/-127"
msgstr "Valor de calibração fora do intervalo +/- 127" msgstr "Valor de calibração fora do intervalo +/- 127"
#: shared-module/vectorio/Rectangle.c
msgid "can only be registered in one parent"
msgstr "pode ser registrado apenas numa principal"
#: py/emitinlinethumb.c #: py/emitinlinethumb.c
msgid "can only have up to 4 parameters to Thumb assembly" msgid "can only have up to 4 parameters to Thumb assembly"
msgstr "só pode haver até 4 parâmetros para a montagem Thumb" msgstr "só pode haver até 4 parâmetros para a montagem Thumb"
@ -4061,7 +4065,9 @@ msgstr "o pow() com 3 argumentos requer números inteiros"
#: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h #: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h
#: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h #: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h
#: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h #: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h
#: ports/espressif/boards/espressif_esp32s3_box/mpconfigboard.h
#: ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h #: ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h
#: ports/espressif/boards/espressif_esp32s3_devkitc_1_nopsram/mpconfigboard.h
#: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h #: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h
#: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h
#: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h
@ -4076,7 +4082,6 @@ msgstr "o pow() com 3 argumentos requer números inteiros"
#: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h #: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h
#: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h #: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h
#: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h #: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h
#: ports/espressif/boards/microdev_macro_s3/mpconfigboard.h
#: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h #: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h
#: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h #: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h
#: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h #: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h

View File

@ -2781,6 +2781,10 @@ msgstr ""
msgid "calibration value out of range +/-127" msgid "calibration value out of range +/-127"
msgstr "" msgstr ""
#: shared-module/vectorio/Rectangle.c
msgid "can only be registered in one parent"
msgstr ""
#: py/emitinlinethumb.c #: py/emitinlinethumb.c
msgid "can only have up to 4 parameters to Thumb assembly" msgid "can only have up to 4 parameters to Thumb assembly"
msgstr "" msgstr ""
@ -4012,7 +4016,9 @@ msgstr ""
#: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h #: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h
#: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h #: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h
#: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h #: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h
#: ports/espressif/boards/espressif_esp32s3_box/mpconfigboard.h
#: ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h #: ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h
#: ports/espressif/boards/espressif_esp32s3_devkitc_1_nopsram/mpconfigboard.h
#: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h #: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h
#: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h
#: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h
@ -4027,7 +4033,6 @@ msgstr ""
#: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h #: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h
#: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h #: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h
#: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h #: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h
#: ports/espressif/boards/microdev_macro_s3/mpconfigboard.h
#: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h #: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h
#: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h #: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h
#: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h #: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h

View File

@ -6,7 +6,7 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-01-04 12:55-0600\n" "POT-Creation-Date: 2021-01-04 12:55-0600\n"
"PO-Revision-Date: 2021-11-25 00:02+0000\n" "PO-Revision-Date: 2021-12-16 22:53+0000\n"
"Last-Translator: Jonny Bergdahl <jonny@bergdahl.it>\n" "Last-Translator: Jonny Bergdahl <jonny@bergdahl.it>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
"Language: sv\n" "Language: sv\n"
@ -14,7 +14,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n" "Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.10-dev\n" "X-Generator: Weblate 4.10\n"
#: main.c #: main.c
msgid "" msgid ""
@ -2778,6 +2778,10 @@ msgstr "kalibrering är skrivskyddad"
msgid "calibration value out of range +/-127" msgid "calibration value out of range +/-127"
msgstr "kalibreringsvärde utanför intervallet +/- 127" msgstr "kalibreringsvärde utanför intervallet +/- 127"
#: shared-module/vectorio/Rectangle.c
msgid "can only be registered in one parent"
msgstr "kan endast registreras med en förälder"
#: py/emitinlinethumb.c #: py/emitinlinethumb.c
msgid "can only have up to 4 parameters to Thumb assembly" msgid "can only have up to 4 parameters to Thumb assembly"
msgstr "kan bara ha upp till 4 parametrar för Thumbs assembly" msgstr "kan bara ha upp till 4 parametrar för Thumbs assembly"
@ -4018,7 +4022,9 @@ msgstr "pow() med 3 argument kräver heltal"
#: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h #: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h
#: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h #: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h
#: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h #: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h
#: ports/espressif/boards/espressif_esp32s3_box/mpconfigboard.h
#: ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h #: ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h
#: ports/espressif/boards/espressif_esp32s3_devkitc_1_nopsram/mpconfigboard.h
#: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h #: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h
#: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h
#: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h
@ -4033,7 +4039,6 @@ msgstr "pow() med 3 argument kräver heltal"
#: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h #: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h
#: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h #: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h
#: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h #: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h
#: ports/espressif/boards/microdev_macro_s3/mpconfigboard.h
#: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h #: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h
#: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h #: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h
#: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h #: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h

View File

@ -2787,6 +2787,10 @@ msgstr "jiàozhǔn zhǐ dú dào"
msgid "calibration value out of range +/-127" msgid "calibration value out of range +/-127"
msgstr "jiàozhǔn zhí chāochū fànwéi +/-127" msgstr "jiàozhǔn zhí chāochū fànwéi +/-127"
#: shared-module/vectorio/Rectangle.c
msgid "can only be registered in one parent"
msgstr ""
#: py/emitinlinethumb.c #: py/emitinlinethumb.c
msgid "can only have up to 4 parameters to Thumb assembly" msgid "can only have up to 4 parameters to Thumb assembly"
msgstr "zhǐyǒu Thumb zǔjiàn zuìduō 4 cānshù" msgstr "zhǐyǒu Thumb zǔjiàn zuìduō 4 cānshù"
@ -4025,7 +4029,9 @@ msgstr "pow() yǒu 3 cānshù xūyào zhěngshù"
#: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h #: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h
#: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h #: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h
#: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h #: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h
#: ports/espressif/boards/espressif_esp32s3_box/mpconfigboard.h
#: ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h #: ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h
#: ports/espressif/boards/espressif_esp32s3_devkitc_1_nopsram/mpconfigboard.h
#: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h #: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h
#: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h
#: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h
@ -4040,7 +4046,6 @@ msgstr "pow() yǒu 3 cānshù xūyào zhěngshù"
#: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h #: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h
#: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h #: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h
#: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h #: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h
#: ports/espressif/boards/microdev_macro_s3/mpconfigboard.h
#: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h #: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h
#: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h #: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h
#: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h #: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h

View File

@ -164,7 +164,7 @@ void alarm_pin_pinalarm_reset(void) {
woke_up = false; woke_up = false;
SAMD_ALARM_FLAG &= ~SAMD_ALARM_FLAG_PIN; // clear flag SAMD_ALARM_FLAG &= ~SAMD_ALARM_FLAG_PIN; // clear flag
// Disable TAMPER interrupt // Disable TAMPER interrupt
RTC->MODE0.INTENCLR.bit.TAMPER = 1; RTC->MODE0.INTENCLR.reg = RTC_MODE0_INTENCLR_TAMPER;
// Disable TAMPER control // Disable TAMPER control
common_hal_mcu_disable_interrupts(); common_hal_mcu_disable_interrupts();
RTC->MODE0.CTRLA.bit.ENABLE = 0; // Disable the RTC RTC->MODE0.CTRLA.bit.ENABLE = 0; // Disable the RTC

View File

@ -185,13 +185,13 @@ static void frequencyin_reference_tc_init(void) {
#ifdef SAMD21 #ifdef SAMD21
tc->COUNT16.CTRLA.reg = TC_CTRLA_MODE_COUNT16 | TC_CTRLA_PRESCALER_DIV1; tc->COUNT16.CTRLA.reg = TC_CTRLA_MODE_COUNT16 | TC_CTRLA_PRESCALER_DIV1;
tc->COUNT16.INTENSET.bit.OVF = 1; tc->COUNT16.INTENSET.reg = TC_INTENSET_OVF;
NVIC_EnableIRQ(TC3_IRQn + reference_tc); NVIC_EnableIRQ(TC3_IRQn + reference_tc);
#endif #endif
#ifdef SAM_D5X_E5X #ifdef SAM_D5X_E5X
tc->COUNT16.CTRLA.reg = TC_CTRLA_MODE_COUNT16 | tc->COUNT16.CTRLA.reg = TC_CTRLA_MODE_COUNT16 |
TC_CTRLA_PRESCALER_DIV1; TC_CTRLA_PRESCALER_DIV1;
tc->COUNT16.INTENSET.bit.OVF = 1; tc->COUNT16.INTENSET.reg = TC_INTENSET_OVF;
NVIC_EnableIRQ(TC0_IRQn + reference_tc); NVIC_EnableIRQ(TC0_IRQn + reference_tc);
#endif #endif
} }

View File

@ -58,7 +58,7 @@ STATIC void setup_wdt(watchdog_watchdogtimer_obj_t *self, int setting) {
while (WDT->SYNCBUSY.reg) { // Sync CTRL write while (WDT->SYNCBUSY.reg) { // Sync CTRL write
} }
WDT->INTENCLR.bit.EW = 1; // Disable early warning interrupt WDT->INTENCLR.reg = WDT_INTENCLR_EW; // Disable early warning interrupt
WDT->CONFIG.bit.PER = setting; // Set period for chip reset WDT->CONFIG.bit.PER = setting; // Set period for chip reset
WDT->CTRLA.bit.WEN = 0; // Disable window mode WDT->CTRLA.bit.WEN = 0; // Disable window mode
while (WDT->SYNCBUSY.reg) { // Sync CTRL write while (WDT->SYNCBUSY.reg) { // Sync CTRL write

View File

@ -82,7 +82,7 @@ SRC_SHARED_MODULE_EXPANDED = $(addprefix shared-bindings/, $(SRC_SHARED_MODULE))
# because a few modules have files both in common-hal/ and shared-modules/. # because a few modules have files both in common-hal/ and shared-modules/.
# Doing a $(sort ...) removes duplicates as part of sorting. # Doing a $(sort ...) removes duplicates as part of sorting.
SRC_COMMON_HAL_SHARED_MODULE_EXPANDED = $(sort $(SRC_COMMON_HAL_EXPANDED) $(SRC_SHARED_MODULE_EXPANDED)) SRC_COMMON_HAL_SHARED_MODULE_EXPANDED = $(sort $(SRC_COMMON_HAL_EXPANDED) $(SRC_SHARED_MODULE_EXPANDED))
SRC_S = peripherals/broadcom/boot.s SRC_S = peripherals/broadcom/boot8.s
OBJ = $(PY_O) $(SUPERVISOR_O) $(addprefix $(BUILD)/, $(SRC_C:.c=.o)) OBJ = $(PY_O) $(SUPERVISOR_O) $(addprefix $(BUILD)/, $(SRC_C:.c=.o))
OBJ += $(addprefix $(BUILD)/, $(SRC_COMMON_HAL_SHARED_MODULE_EXPANDED:.c=.o)) OBJ += $(addprefix $(BUILD)/, $(SRC_COMMON_HAL_SHARED_MODULE_EXPANDED:.c=.o))
@ -134,7 +134,7 @@ CFLAGS += $(INC) -Wall -Werror -std=gnu11 $(BASE_CFLAGS) $(CFLAGS_MOD) $(COPT) $
SRC_QSTR += $(SRC_C) $(SRC_SUPERVISOR) $(SRC_COMMON_HAL_EXPANDED) $(SRC_SHARED_MODULE_EXPANDED) SRC_QSTR += $(SRC_C) $(SRC_SUPERVISOR) $(SRC_COMMON_HAL_EXPANDED) $(SRC_SHARED_MODULE_EXPANDED)
LDFLAGS += $(CFLAGS) -T peripherals/broadcom/link.ld -Wl,--gc-sections -Wl,-Map=$@.map # -Wl,--cref LDFLAGS += $(CFLAGS) -T peripherals/broadcom/link8.ld -Wl,--gc-sections -Wl,-Map=$@.map # -Wl,--cref
# Use toolchain libm if we're not using our own. # Use toolchain libm if we're not using our own.
ifndef INTERNAL_LIBM ifndef INTERNAL_LIBM

View File

@ -29,6 +29,7 @@
#include "shared-bindings/microcontroller/Pin.h" #include "shared-bindings/microcontroller/Pin.h"
#include "shared-bindings/microcontroller/Processor.h" #include "shared-bindings/microcontroller/Processor.h"
#include "common-hal/microcontroller/__init__.h" #include "common-hal/microcontroller/__init__.h"
#include "peripherals/broadcom/defines.h"
#include "peripherals/broadcom/interrupts.h" #include "peripherals/broadcom/interrupts.h"
#include "mphalport.h" #include "mphalport.h"

View File

@ -0,0 +1,160 @@
/*
* This file is part of the MicroPython project, http://micropython.org/
*
* The MIT License (MIT)
*
* Copyright (c) 2021 Scott Shawcroft for Adafruit Industries
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
#include "shared-bindings/neopixel_write/__init__.h"
#include "py/runtime.h"
#include "shared-bindings/microcontroller/__init__.h"
#include "shared-bindings/digitalio/DigitalInOut.h"
#include "shared-bindings/time/__init__.h"
#include "peripherals/broadcom/cpu.h"
#include "supervisor/port.h"
uint64_t next_start_raw_ticks = 0;
// NeoPixels are 800khz bit streams. Zeroes are 1/3 duty cycle (~416ns) and ones
// are 2/3 duty cycle (~833ns).
void common_hal_neopixel_write(const digitalio_digitalinout_obj_t *digitalinout,
uint8_t *pixels, uint32_t num_bytes) {
// Wait to make sure we don't append onto the last transmission. This should only be a tick or
// two.
while (port_get_raw_ticks(NULL) < next_start_raw_ticks) {
}
BP_Function_Enum alt_function;
uint8_t index;
uint8_t channel;
bool found = false;
for (size_t i = 0; i < NUM_ALT_FUNC; i++) {
const pin_function_t *f = &digitalinout->pin->functions[i];
if (f->type == PIN_FUNCTION_PWM) {
index = f->index;
channel = f->function;
alt_function = FSEL_VALUES[i];
found = true;
break;
}
}
if (!found) {
mp_raise_ValueError(translate("NeoPixel not supported on pin"));
return;
}
// Turn on the PWM clock. The speed is NeoPixel specific.
if (CM_PWM->CS_b.BUSY == 0) {
uint32_t source_clock;
#if BCM_VERSION == 2711
source_clock = 54000000;
#else
source_clock = 19200000;
#endif
// Three clocks per 800khz bit to get the 1/3 or 2/3 timing.
uint32_t target_clock = 3 * 800000;
uint32_t int_div = source_clock / target_clock;
CM_PWM->DIV = CM_PCM_DIV_PASSWD_PASSWD << CM_PCM_DIV_PASSWD_Pos |
(int_div) << CM_PCM_DIV_DIVI_Pos;
CM_PWM->CS = CM_PCM_CS_PASSWD_PASSWD << CM_PCM_CS_PASSWD_Pos |
CM_PCM_CS_SRC_XOSC << CM_PCM_CS_SRC_Pos;
// Set enable after setting the source to ensure it is stable.
CM_PWM->CS = CM_PCM_CS_PASSWD_PASSWD << CM_PCM_CS_PASSWD_Pos |
CM_PCM_CS_SRC_XOSC << CM_PCM_CS_SRC_Pos |
CM_PCM_CS_ENAB_Msk;
// Wait for the clock to start up.
COMPLETE_MEMORY_READS;
while (CM_PWM->CS_b.BUSY == 0) {
}
}
PWM0_Type *pwm = PWM0;
#if BCM_VERSION == 2711
if (index == 1) {
pwm = PWM1;
}
#else
(void)index;
#endif
pwm->RNG1 = 24;
pwm->RNG2 = 24;
COMPLETE_MEMORY_READS;
pwm->CTL = PWM0_CTL_CLRF1_Msk;
COMPLETE_MEMORY_READS;
// Even though we're only transmitting one channel, we enable both. Without
// the second channel enabled, the output is repeated forever.
pwm->CTL =
PWM0_CTL_USEF2_Msk |
PWM0_CTL_MODE2_Msk |
PWM0_CTL_USEF1_Msk |
PWM0_CTL_MODE1_Msk;
COMPLETE_MEMORY_READS;
pwm->CTL |= PWM0_CTL_PWEN1_Msk | PWM0_CTL_PWEN2_Msk;
gpio_set_function(digitalinout->pin->number, alt_function);
for (size_t i = 0; i < num_bytes; i++) {
uint32_t expanded = 0;
for (size_t j = 0; j < 8; j++) {
expanded = expanded >> 3;
if ((pixels[i] & (1 << j)) != 0) {
expanded |= 0xc0000000;
} else {
expanded |= 0x80000000;
}
}
while (pwm->STA_b.FULL1 == 1) {
RUN_BACKGROUND_TASKS;
}
if (channel == 1) {
// Dummy value for the first channel.
pwm->FIF1 = 0x000000;
}
pwm->FIF1 = expanded;
if (channel == 0) {
// Dummy value for the second channel.
pwm->FIF1 = 0x000000;
}
}
// Wait just a little bit so that transmission can start.
common_hal_mcu_delay_us(2);
while (pwm->STA_b.STA1 == 1) {
RUN_BACKGROUND_TASKS;
}
gpio_set_function(digitalinout->pin->number, GPIO_FUNCTION_OUTPUT);
// Update the next start.
next_start_raw_ticks = port_get_raw_ticks(NULL) + 1;
}

View File

@ -8,7 +8,7 @@ CIRCUITPY_BUSIO = 1
CIRCUITPY_ONEWIREIO = 0 CIRCUITPY_ONEWIREIO = 0
CIRCUITPY_PWMIO = 0 CIRCUITPY_PWMIO = 0
CIRCUITPY_COUNTIO = 0 CIRCUITPY_COUNTIO = 0
CIRCUITPY_NEOPIXEL_WRITE = 0 CIRCUITPY_NEOPIXEL_WRITE = 1
CIRCUITPY_PULSEIO = 0 CIRCUITPY_PULSEIO = 0
CIRCUITPY_OS = 1 CIRCUITPY_OS = 1
CIRCUITPY_NVM = 0 CIRCUITPY_NVM = 0
@ -31,7 +31,7 @@ CIRCUITPY_BITBANGIO = 1
# Requires DigitalIO # Requires DigitalIO
CIRCUITPY_GAMEPAD = 0 CIRCUITPY_GAMEPAD = 0
# Requires neopixel_write or SPI (dotstar) # Requires neopixel_write or SPI (dotstar)
CIRCUITPY_PIXELBUF = 0 CIRCUITPY_PIXELBUF = 1
# Requires OS # Requires OS
CIRCUITPY_RANDOM = 1 CIRCUITPY_RANDOM = 1
# Requires OS, filesystem # Requires OS, filesystem

View File

@ -6,7 +6,15 @@
#include "shared-bindings/microcontroller/__init__.h" #include "shared-bindings/microcontroller/__init__.h"
#include "mphalport.h" #include "mphalport.h"
#include "peripherals/broadcom/defines.h"
void mp_hal_delay_us(mp_uint_t delay) { void mp_hal_delay_us(mp_uint_t delay) {
uint32_t end = SYSTMR->CLO + delay;
// Wait if end is before current time because it must have wrapped.
while (end < SYSTMR->CLO) {
}
while (SYSTMR->CLO < end) {
}
} }
void mp_hal_disable_all_interrupts(void) { void mp_hal_disable_all_interrupts(void) {
@ -19,6 +27,7 @@ void mp_hal_enable_all_interrupts(void) {
mp_uint_t cpu_get_regs_and_sp(mp_uint_t *regs) { mp_uint_t cpu_get_regs_and_sp(mp_uint_t *regs) {
size_t sp = 0; size_t sp = 0;
#if defined(__ARM_ARCH) && (__ARM_ARCH >= 8)
__asm__ ("mov %[out], sp" : [out] "=r" (sp)); __asm__ ("mov %[out], sp" : [out] "=r" (sp));
__asm__ ("mov %[out], x19" : [out] "=r" (regs[0])); __asm__ ("mov %[out], x19" : [out] "=r" (regs[0]));
__asm__ ("mov %[out], x20" : [out] "=r" (regs[1])); __asm__ ("mov %[out], x20" : [out] "=r" (regs[1]));
@ -30,5 +39,19 @@ mp_uint_t cpu_get_regs_and_sp(mp_uint_t *regs) {
__asm__ ("mov %[out], x26" : [out] "=r" (regs[7])); __asm__ ("mov %[out], x26" : [out] "=r" (regs[7]));
__asm__ ("mov %[out], x27" : [out] "=r" (regs[8])); __asm__ ("mov %[out], x27" : [out] "=r" (regs[8]));
__asm__ ("mov %[out], x28" : [out] "=r" (regs[9])); __asm__ ("mov %[out], x28" : [out] "=r" (regs[9]));
#else
__asm__ ("mov %[out], sp" : [out] "=r" (sp));
__asm__ ("mov %[out], x19" : [out] "=r" (regs[0]));
__asm__ ("mov %[out], x20" : [out] "=r" (regs[1]));
__asm__ ("mov %[out], x21" : [out] "=r" (regs[2]));
__asm__ ("mov %[out], x22" : [out] "=r" (regs[3]));
__asm__ ("mov %[out], x23" : [out] "=r" (regs[4]));
__asm__ ("mov %[out], x24" : [out] "=r" (regs[5]));
__asm__ ("mov %[out], x25" : [out] "=r" (regs[6]));
__asm__ ("mov %[out], x26" : [out] "=r" (regs[7]));
__asm__ ("mov %[out], x27" : [out] "=r" (regs[8]));
__asm__ ("mov %[out], x28" : [out] "=r" (regs[9]));
#endif
return sp; return sp;
} }

@ -1 +1 @@
Subproject commit e136e387177446c3c9979bbf274a4856bf13797d Subproject commit 2c10889a4b2d78987bc4e0783db2e7584aa4d572

View File

@ -45,7 +45,7 @@ uint8_t display_init_sequence[] = {
// normal display mode on // normal display mode on
0x13, 0, 0x13, 0,
// display and color format settings // display and color format settings
0x36, 1, 0x60, 0x36, 1, 0x68,
0xB6, 2, 0x0A, 0x82, 0xB6, 2, 0x0A, 0x82,
0x3A, 1 | DELAY, 0x55, 10, 0x3A, 1 | DELAY, 0x55, 10,
// ST7789V frame rate setting // ST7789V frame rate setting
@ -74,6 +74,12 @@ void board_init(void) {
common_hal_never_reset_pin(&pin_GPIO19); common_hal_never_reset_pin(&pin_GPIO19);
common_hal_never_reset_pin(&pin_GPIO20); common_hal_never_reset_pin(&pin_GPIO20);
// I2C/TFT power pin
common_hal_never_reset_pin(&pin_GPIO21);
// Turn on TFT and I2C
gpio_set_direction(21, GPIO_MODE_DEF_OUTPUT);
gpio_set_level(21, true);
busio_spi_obj_t *spi = &displays[0].fourwire_bus.inline_bus; busio_spi_obj_t *spi = &displays[0].fourwire_bus.inline_bus;
@ -93,7 +99,7 @@ void board_init(void) {
bus, bus,
spi, spi,
&pin_GPIO39, // DC &pin_GPIO39, // DC
&pin_GPIO21, // CS &pin_GPIO7, // CS
&pin_GPIO40, // RST &pin_GPIO40, // RST
40000000, // baudrate 40000000, // baudrate
0, // polarity 0, // polarity
@ -112,7 +118,7 @@ void board_init(void) {
240, // width (after rotation) 240, // width (after rotation)
135, // height (after rotation) 135, // height (after rotation)
40, // column start 40, // column start
52, // row start 53, // row start
0, // rotation 0, // rotation
16, // color depth 16, // color depth
false, // grayscale false, // grayscale

View File

@ -44,6 +44,8 @@ STATIC const mp_rom_map_elem_t board_module_globals_table[] = {
{ MP_ROM_QSTR(MP_QSTR_NEOPIXEL), MP_ROM_PTR(&pin_GPIO33) }, { MP_ROM_QSTR(MP_QSTR_NEOPIXEL), MP_ROM_PTR(&pin_GPIO33) },
{ MP_ROM_QSTR(MP_QSTR_NEOPIXEL_POWER), MP_ROM_PTR(&pin_GPIO34) }, { MP_ROM_QSTR(MP_QSTR_NEOPIXEL_POWER), MP_ROM_PTR(&pin_GPIO34) },
{ MP_ROM_QSTR(MP_QSTR_I2C_TFT_POWER), MP_ROM_PTR(&pin_GPIO21) },
{ MP_ROM_QSTR(MP_QSTR_D35), MP_ROM_PTR(&pin_GPIO35) }, { MP_ROM_QSTR(MP_QSTR_D35), MP_ROM_PTR(&pin_GPIO35) },
{ MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_GPIO35) }, { MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_GPIO35) },
@ -59,7 +61,7 @@ STATIC const mp_rom_map_elem_t board_module_globals_table[] = {
{ MP_ROM_QSTR(MP_QSTR_D42), MP_ROM_PTR(&pin_GPIO42) }, { MP_ROM_QSTR(MP_QSTR_D42), MP_ROM_PTR(&pin_GPIO42) },
{ MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO42) }, { MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO42) },
{ MP_ROM_QSTR(MP_QSTR_TFT_CS), MP_ROM_PTR(&pin_GPIO21) }, { MP_ROM_QSTR(MP_QSTR_TFT_CS), MP_ROM_PTR(&pin_GPIO7) },
{ MP_ROM_QSTR(MP_QSTR_TFT_DC), MP_ROM_PTR(&pin_GPIO39) }, { MP_ROM_QSTR(MP_QSTR_TFT_DC), MP_ROM_PTR(&pin_GPIO39) },
{ MP_ROM_QSTR(MP_QSTR_TFT_RESET), MP_ROM_PTR(&pin_GPIO40) }, { MP_ROM_QSTR(MP_QSTR_TFT_RESET), MP_ROM_PTR(&pin_GPIO40) },
{ MP_ROM_QSTR(MP_QSTR_TFT_BACKLIGHT), MP_ROM_PTR(&pin_GPIO45) }, { MP_ROM_QSTR(MP_QSTR_TFT_BACKLIGHT), MP_ROM_PTR(&pin_GPIO45) },

View File

@ -18,8 +18,3 @@ CIRCUITPY_ESP_FLASH_FREQ=40m
CIRCUITPY_ESP_FLASH_SIZE=4MB CIRCUITPY_ESP_FLASH_SIZE=4MB
CIRCUITPY_MODULE=wroom CIRCUITPY_MODULE=wroom
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_Requests
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_NeoPixel
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_BusDevice
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_Register

View File

@ -37,11 +37,11 @@ STATIC const mp_rom_map_elem_t board_module_globals_table[] = {
{ MP_ROM_QSTR(MP_QSTR_D35), MP_ROM_PTR(&pin_GPIO35) }, { MP_ROM_QSTR(MP_QSTR_D35), MP_ROM_PTR(&pin_GPIO35) },
{ MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_GPIO35) }, { MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_GPIO35) },
{ MP_ROM_QSTR(MP_QSTR_D34), MP_ROM_PTR(&pin_GPIO34) }, { MP_ROM_QSTR(MP_QSTR_D36), MP_ROM_PTR(&pin_GPIO36) },
{ MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_GPIO34) }, { MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_GPIO36) },
{ MP_ROM_QSTR(MP_QSTR_D33), MP_ROM_PTR(&pin_GPIO33) }, { MP_ROM_QSTR(MP_QSTR_D37), MP_ROM_PTR(&pin_GPIO37) },
{ MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_GPIO33) }, { MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_GPIO37) },
{ MP_ROM_QSTR(MP_QSTR_NEOPIXEL_POWER), MP_ROM_PTR(&pin_GPIO38) }, { MP_ROM_QSTR(MP_QSTR_NEOPIXEL_POWER), MP_ROM_PTR(&pin_GPIO38) },
{ MP_ROM_QSTR(MP_QSTR_NEOPIXEL), MP_ROM_PTR(&pin_GPIO39) }, { MP_ROM_QSTR(MP_QSTR_NEOPIXEL), MP_ROM_PTR(&pin_GPIO39) },

View File

@ -29,6 +29,8 @@
#include "bindings/espidf/__init__.h" #include "bindings/espidf/__init__.h"
#include "components/mbedtls/esp_crt_bundle/include/esp_crt_bundle.h"
#include "py/runtime.h" #include "py/runtime.h"
void common_hal_ssl_sslcontext_construct(ssl_sslcontext_obj_t *self) { void common_hal_ssl_sslcontext_construct(ssl_sslcontext_obj_t *self) {
@ -47,6 +49,11 @@ ssl_sslsocket_obj_t *common_hal_ssl_sslcontext_wrap_socket(ssl_sslcontext_obj_t
sock->ssl_context = self; sock->ssl_context = self;
sock->sock = socket; sock->sock = socket;
// Create a copy of the ESP-TLS config object and store the server hostname
// Note that ESP-TLS will use common_name for both SNI and verification
memcpy(&sock->ssl_config, &self->ssl_config, sizeof(self->ssl_config));
sock->ssl_config.common_name = server_hostname;
esp_tls_t *tls_handle = esp_tls_init(); esp_tls_t *tls_handle = esp_tls_init();
if (tls_handle == NULL) { if (tls_handle == NULL) {
mp_raise_espidf_MemoryError(); mp_raise_espidf_MemoryError();
@ -55,6 +62,28 @@ ssl_sslsocket_obj_t *common_hal_ssl_sslcontext_wrap_socket(ssl_sslcontext_obj_t
// TODO: do something with the original socket? Don't call a close on the internal LWIP. // TODO: do something with the original socket? Don't call a close on the internal LWIP.
// Should we store server hostname on the socket in case connect is called with an ip?
return sock; return sock;
} }
void common_hal_ssl_sslcontext_load_verify_locations(ssl_sslcontext_obj_t *self,
const char *cadata) {
self->ssl_config.crt_bundle_attach = NULL;
self->ssl_config.use_global_ca_store = false;
self->ssl_config.cacert_buf = (const unsigned char *)cadata;
self->ssl_config.cacert_bytes = strlen(cadata) + 1;
}
void common_hal_ssl_sslcontext_set_default_verify_paths(ssl_sslcontext_obj_t *self) {
self->ssl_config.crt_bundle_attach = esp_crt_bundle_attach;
self->ssl_config.use_global_ca_store = true;
self->ssl_config.cacert_buf = NULL;
self->ssl_config.cacert_bytes = 0;
}
bool common_hal_ssl_sslcontext_get_check_hostname(ssl_sslcontext_obj_t *self) {
return !self->ssl_config.skip_common_name;
}
void common_hal_ssl_sslcontext_set_check_hostname(ssl_sslcontext_obj_t *self, bool value) {
self->ssl_config.skip_common_name = !value;
}

View File

@ -55,9 +55,7 @@ void common_hal_ssl_sslsocket_close(ssl_sslsocket_obj_t *self) {
void common_hal_ssl_sslsocket_connect(ssl_sslsocket_obj_t *self, void common_hal_ssl_sslsocket_connect(ssl_sslsocket_obj_t *self,
const char *host, size_t hostlen, uint32_t port) { const char *host, size_t hostlen, uint32_t port) {
esp_tls_cfg_t *tls_config = NULL; int result = esp_tls_conn_new_sync(host, hostlen, port, &self->ssl_config, self->tls);
tls_config = &self->ssl_context->ssl_config;
int result = esp_tls_conn_new_sync(host, hostlen, port, tls_config, self->tls);
self->sock->connected = result >= 0; self->sock->connected = result >= 0;
if (result < 0) { if (result < 0) {
int esp_tls_code; int esp_tls_code;
@ -66,7 +64,7 @@ void common_hal_ssl_sslsocket_connect(ssl_sslsocket_obj_t *self,
if (err == ESP_ERR_MBEDTLS_SSL_SETUP_FAILED) { if (err == ESP_ERR_MBEDTLS_SSL_SETUP_FAILED) {
mp_raise_espidf_MemoryError(); mp_raise_espidf_MemoryError();
} else if (ESP_ERR_MBEDTLS_SSL_HANDSHAKE_FAILED) { } else if (err == ESP_ERR_MBEDTLS_SSL_HANDSHAKE_FAILED) {
mp_raise_OSError_msg_varg(translate("Failed SSL handshake")); mp_raise_OSError_msg_varg(translate("Failed SSL handshake"));
} else { } else {
mp_raise_OSError_msg_varg(translate("Unhandled ESP TLS error %d %d %x %d"), esp_tls_code, flags, err, result); mp_raise_OSError_msg_varg(translate("Unhandled ESP TLS error %d %d %x %d"), esp_tls_code, flags, err, result);

View File

@ -39,6 +39,7 @@ typedef struct {
socketpool_socket_obj_t *sock; socketpool_socket_obj_t *sock;
esp_tls_t *tls; esp_tls_t *tls;
ssl_sslcontext_obj_t *ssl_context; ssl_sslcontext_obj_t *ssl_context;
esp_tls_cfg_t ssl_config;
} ssl_sslsocket_obj_t; } ssl_sslsocket_obj_t;
#endif // MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_SSL_SSLSOCKET_H #endif // MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_SSL_SSLSOCKET_H

View File

@ -25,6 +25,8 @@ STATIC const mp_rom_map_elem_t board_module_globals_table[] = {
{ MP_ROM_QSTR(MP_QSTR_P10), MP_ROM_PTR(&pin_P0_10) }, { MP_ROM_QSTR(MP_QSTR_P10), MP_ROM_PTR(&pin_P0_10) },
{ MP_ROM_QSTR(MP_QSTR_P18), MP_ROM_PTR(&pin_P0_18) }, // !Reset button. { MP_ROM_QSTR(MP_QSTR_P18), MP_ROM_PTR(&pin_P0_18) }, // !Reset button.
{ MP_ROM_QSTR(MP_QSTR_P19), MP_ROM_PTR(&pin_P0_19) }, { MP_ROM_QSTR(MP_QSTR_P19), MP_ROM_PTR(&pin_P0_19) },
{ MP_ROM_QSTR(MP_QSTR_P20), MP_ROM_PTR(&pin_P0_20) },
{ MP_ROM_QSTR(MP_QSTR_P21), MP_ROM_PTR(&pin_P0_21) },
{ MP_ROM_QSTR(MP_QSTR_P22), MP_ROM_PTR(&pin_P0_22) }, // green led, low is on. { MP_ROM_QSTR(MP_QSTR_P22), MP_ROM_PTR(&pin_P0_22) }, // green led, low is on.
{ MP_ROM_QSTR(MP_QSTR_P23), MP_ROM_PTR(&pin_P0_23) }, // red led, low is on. { MP_ROM_QSTR(MP_QSTR_P23), MP_ROM_PTR(&pin_P0_23) }, // red led, low is on.
{ MP_ROM_QSTR(MP_QSTR_P24), MP_ROM_PTR(&pin_P0_24) }, // blue led, low is on. { MP_ROM_QSTR(MP_QSTR_P24), MP_ROM_PTR(&pin_P0_24) }, // blue led, low is on.

View File

@ -0,0 +1,45 @@
/*
* This file is part of the MicroPython project, http://micropython.org/
*
* The MIT License (MIT)
*
* Copyright (c) 2021 Scott Shawcroft for Adafruit Industries
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
#include "supervisor/board.h"
#include "shared-bindings/microcontroller/Pin.h"
#include "src/rp2_common/hardware_gpio/include/hardware/gpio.h"
#include "supervisor/shared/board.h"
void board_init(void) {
}
bool board_requests_safe_mode(void) {
return false;
}
void reset_board(void) {
// turn off any left over LED
board_reset_user_neopixels(&pin_GPIO29, 62);
}
void board_deinit(void) {
}

View File

@ -0,0 +1,4 @@
#define MICROPY_HW_BOARD_NAME "PyKey 18 Numpad"
#define MICROPY_HW_MCU_NAME "rp2040"
#define MICROPY_HW_NEOPIXEL (&pin_GPIO29)

View File

@ -0,0 +1,11 @@
USB_VID = 0x1d50
USB_PID = 0x6153
USB_PRODUCT = "PyKey18"
USB_MANUFACTURER = "JPConstantineau"
CHIP_VARIANT = RP2040
CHIP_FAMILY = rp2
EXTERNAL_FLASH_DEVICES = "W25Q16JVxQ"
CIRCUITPY__EVE = 1

View File

@ -0,0 +1,4 @@
// Put board-specific pico-sdk definitions here. This file must exist.
// Allow extra time for xosc to start.
#define PICO_XOSC_STARTUP_DELAY_MULTIPLIER 64

View File

@ -0,0 +1,23 @@
#include "shared-bindings/board/__init__.h"
STATIC const mp_rom_map_elem_t board_module_globals_table[] = {
CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS
{ MP_ROM_QSTR(MP_QSTR_COL1), MP_ROM_PTR(&pin_GPIO0) },
{ MP_ROM_QSTR(MP_QSTR_COL2), MP_ROM_PTR(&pin_GPIO1) },
{ MP_ROM_QSTR(MP_QSTR_COL3), MP_ROM_PTR(&pin_GPIO2) },
{ MP_ROM_QSTR(MP_QSTR_COL4), MP_ROM_PTR(&pin_GPIO3) },
{ MP_ROM_QSTR(MP_QSTR_ROW1), MP_ROM_PTR(&pin_GPIO14) },
{ MP_ROM_QSTR(MP_QSTR_ROW2), MP_ROM_PTR(&pin_GPIO15) },
{ MP_ROM_QSTR(MP_QSTR_ROW3), MP_ROM_PTR(&pin_GPIO16) },
{ MP_ROM_QSTR(MP_QSTR_ROW4), MP_ROM_PTR(&pin_GPIO17) },
{ MP_ROM_QSTR(MP_QSTR_ROW5), MP_ROM_PTR(&pin_GPIO18) },
{ MP_ROM_QSTR(MP_QSTR_SPEAKER), MP_ROM_PTR(&pin_GPIO21) },
{ MP_ROM_QSTR(MP_QSTR_LED), MP_ROM_PTR(&pin_GPIO24) },
{ MP_ROM_QSTR(MP_QSTR_ENCA), MP_ROM_PTR(&pin_GPIO27) },
{ MP_ROM_QSTR(MP_QSTR_ENCB), MP_ROM_PTR(&pin_GPIO28) },
{ MP_ROM_QSTR(MP_QSTR_NEOPIXEL), MP_ROM_PTR(&pin_GPIO29) },
{ MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO22) },
{ MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_GPIO23) },
{ MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) },
};
MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table);

View File

@ -0,0 +1,45 @@
/*
* This file is part of the MicroPython project, http://micropython.org/
*
* The MIT License (MIT)
*
* Copyright (c) 2021 Scott Shawcroft for Adafruit Industries
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
#include "supervisor/board.h"
#include "shared-bindings/microcontroller/Pin.h"
#include "src/rp2_common/hardware_gpio/include/hardware/gpio.h"
#include "supervisor/shared/board.h"
void board_init(void) {
}
bool board_requests_safe_mode(void) {
return false;
}
void reset_board(void) {
// turn off any left over LED
board_reset_user_neopixels(&pin_GPIO29, 62);
}
void board_deinit(void) {
}

View File

@ -0,0 +1,4 @@
#define MICROPY_HW_BOARD_NAME "PyKey 44 Ergo"
#define MICROPY_HW_MCU_NAME "rp2040"
#define MICROPY_HW_NEOPIXEL (&pin_GPIO29)

View File

@ -0,0 +1,11 @@
USB_VID = 0x1d50
USB_PID = 0x6153
USB_PRODUCT = "PyKey44"
USB_MANUFACTURER = "JPConstantineau"
CHIP_VARIANT = RP2040
CHIP_FAMILY = rp2
EXTERNAL_FLASH_DEVICES = "W25Q16JVxQ"
CIRCUITPY__EVE = 1

View File

@ -0,0 +1,4 @@
// Put board-specific pico-sdk definitions here. This file must exist.
// Allow extra time for xosc to start.
#define PICO_XOSC_STARTUP_DELAY_MULTIPLIER 64

View File

@ -0,0 +1,24 @@
#include "shared-bindings/board/__init__.h"
STATIC const mp_rom_map_elem_t board_module_globals_table[] = {
CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS
{ MP_ROM_QSTR(MP_QSTR_COL1), MP_ROM_PTR(&pin_GPIO0) },
{ MP_ROM_QSTR(MP_QSTR_COL2), MP_ROM_PTR(&pin_GPIO1) },
{ MP_ROM_QSTR(MP_QSTR_COL3), MP_ROM_PTR(&pin_GPIO2) },
{ MP_ROM_QSTR(MP_QSTR_COL4), MP_ROM_PTR(&pin_GPIO3) },
{ MP_ROM_QSTR(MP_QSTR_COL5), MP_ROM_PTR(&pin_GPIO4) },
{ MP_ROM_QSTR(MP_QSTR_COL6), MP_ROM_PTR(&pin_GPIO5) },
{ MP_ROM_QSTR(MP_QSTR_COL7), MP_ROM_PTR(&pin_GPIO6) },
{ MP_ROM_QSTR(MP_QSTR_COL8), MP_ROM_PTR(&pin_GPIO7) },
{ MP_ROM_QSTR(MP_QSTR_COL9), MP_ROM_PTR(&pin_GPIO8) },
{ MP_ROM_QSTR(MP_QSTR_COL10), MP_ROM_PTR(&pin_GPIO9) },
{ MP_ROM_QSTR(MP_QSTR_COL11), MP_ROM_PTR(&pin_GPIO10) },
{ MP_ROM_QSTR(MP_QSTR_ROW1), MP_ROM_PTR(&pin_GPIO14) },
{ MP_ROM_QSTR(MP_QSTR_ROW2), MP_ROM_PTR(&pin_GPIO15) },
{ MP_ROM_QSTR(MP_QSTR_ROW3), MP_ROM_PTR(&pin_GPIO16) },
{ MP_ROM_QSTR(MP_QSTR_ROW4), MP_ROM_PTR(&pin_GPIO17) },
{ MP_ROM_QSTR(MP_QSTR_SPEAKER), MP_ROM_PTR(&pin_GPIO21) },
{ MP_ROM_QSTR(MP_QSTR_LED), MP_ROM_PTR(&pin_GPIO24) },
{ MP_ROM_QSTR(MP_QSTR_NEOPIXEL), MP_ROM_PTR(&pin_GPIO29) },
};
MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table);

View File

@ -1,4 +1,4 @@
#define MICROPY_HW_BOARD_NAME "PyKey60" #define MICROPY_HW_BOARD_NAME "PyKey 60"
#define MICROPY_HW_MCU_NAME "rp2040" #define MICROPY_HW_MCU_NAME "rp2040"
#define MICROPY_HW_NEOPIXEL (&pin_GPIO29) #define MICROPY_HW_NEOPIXEL (&pin_GPIO29)

View File

@ -1,6 +1,6 @@
USB_VID = 0x1d50 USB_VID = 0x1d50
USB_PID = 0x6153 USB_PID = 0x6153
USB_PRODUCT = "Pykey60" USB_PRODUCT = "PyKey60"
USB_MANUFACTURER = "JPConstantineau" USB_MANUFACTURER = "JPConstantineau"
CHIP_VARIANT = RP2040 CHIP_VARIANT = RP2040

View File

@ -2,7 +2,6 @@
STATIC const mp_rom_map_elem_t board_module_globals_table[] = { STATIC const mp_rom_map_elem_t board_module_globals_table[] = {
CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS
{ MP_ROM_QSTR(MP_QSTR_COL1), MP_ROM_PTR(&pin_GPIO0) }, { MP_ROM_QSTR(MP_QSTR_COL1), MP_ROM_PTR(&pin_GPIO0) },
{ MP_ROM_QSTR(MP_QSTR_COL2), MP_ROM_PTR(&pin_GPIO1) }, { MP_ROM_QSTR(MP_QSTR_COL2), MP_ROM_PTR(&pin_GPIO1) },
{ MP_ROM_QSTR(MP_QSTR_COL3), MP_ROM_PTR(&pin_GPIO2) }, { MP_ROM_QSTR(MP_QSTR_COL3), MP_ROM_PTR(&pin_GPIO2) },
@ -22,28 +21,15 @@ STATIC const mp_rom_map_elem_t board_module_globals_table[] = {
{ MP_ROM_QSTR(MP_QSTR_ROW3), MP_ROM_PTR(&pin_GPIO16) }, { MP_ROM_QSTR(MP_QSTR_ROW3), MP_ROM_PTR(&pin_GPIO16) },
{ MP_ROM_QSTR(MP_QSTR_ROW4), MP_ROM_PTR(&pin_GPIO17) }, { MP_ROM_QSTR(MP_QSTR_ROW4), MP_ROM_PTR(&pin_GPIO17) },
{ MP_ROM_QSTR(MP_QSTR_ROW5), MP_ROM_PTR(&pin_GPIO18) }, { MP_ROM_QSTR(MP_QSTR_ROW5), MP_ROM_PTR(&pin_GPIO18) },
{ MP_ROM_QSTR(MP_QSTR_SPEAKER), MP_ROM_PTR(&pin_GPIO21) }, { MP_ROM_QSTR(MP_QSTR_SPEAKER), MP_ROM_PTR(&pin_GPIO21) },
{ MP_ROM_QSTR(MP_QSTR_GP22), MP_ROM_PTR(&pin_GPIO22) },
{ MP_ROM_QSTR(MP_QSTR_GP23), MP_ROM_PTR(&pin_GPIO23) },
{ MP_ROM_QSTR(MP_QSTR_GP24), MP_ROM_PTR(&pin_GPIO24) },
{ MP_ROM_QSTR(MP_QSTR_LED), MP_ROM_PTR(&pin_GPIO24) }, { MP_ROM_QSTR(MP_QSTR_LED), MP_ROM_PTR(&pin_GPIO24) },
{ MP_ROM_QSTR(MP_QSTR_GP25), MP_ROM_PTR(&pin_GPIO25) },
{ MP_ROM_QSTR(MP_QSTR_GP26), MP_ROM_PTR(&pin_GPIO26) },
{ MP_ROM_QSTR(MP_QSTR_GP27), MP_ROM_PTR(&pin_GPIO27) },
{ MP_ROM_QSTR(MP_QSTR_GP28), MP_ROM_PTR(&pin_GPIO28) },
{ MP_ROM_QSTR(MP_QSTR_NEOPIXEL), MP_ROM_PTR(&pin_GPIO29) }, { MP_ROM_QSTR(MP_QSTR_NEOPIXEL), MP_ROM_PTR(&pin_GPIO29) },
{ MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO22) }, { MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO22) },
{ MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_GPIO23) }, { MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_GPIO23) },
{ MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_GPIO26) }, { MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_GPIO26) },
{ MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_GPIO28) }, { MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_GPIO28) },
{ MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_GPIO27) }, { MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_GPIO27) },
{ MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) }, { MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) },
{ MP_ROM_QSTR(MP_QSTR_SPI), MP_ROM_PTR(&board_spi_obj) }, { MP_ROM_QSTR(MP_QSTR_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

@ -0,0 +1,45 @@
/*
* This file is part of the MicroPython project, http://micropython.org/
*
* The MIT License (MIT)
*
* Copyright (c) 2021 Scott Shawcroft for Adafruit Industries
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
#include "supervisor/board.h"
#include "shared-bindings/microcontroller/Pin.h"
#include "src/rp2_common/hardware_gpio/include/hardware/gpio.h"
#include "supervisor/shared/board.h"
void board_init(void) {
}
bool board_requests_safe_mode(void) {
return false;
}
void reset_board(void) {
// turn off any left over LED
board_reset_user_neopixels(&pin_GPIO29, 62);
}
void board_deinit(void) {
}

View File

@ -0,0 +1,4 @@
#define MICROPY_HW_BOARD_NAME "PyKey 87 TKL"
#define MICROPY_HW_MCU_NAME "rp2040"
#define MICROPY_HW_NEOPIXEL (&pin_GPIO29)

View File

@ -0,0 +1,11 @@
USB_VID = 0x1d50
USB_PID = 0x6153
USB_PRODUCT = "PyKey87"
USB_MANUFACTURER = "JPConstantineau"
CHIP_VARIANT = RP2040
CHIP_FAMILY = rp2
EXTERNAL_FLASH_DEVICES = "W25Q16JVxQ"
CIRCUITPY__EVE = 1

View File

@ -0,0 +1,4 @@
// Put board-specific pico-sdk definitions here. This file must exist.
// Allow extra time for xosc to start.
#define PICO_XOSC_STARTUP_DELAY_MULTIPLIER 64

View File

@ -0,0 +1,36 @@
#include "shared-bindings/board/__init__.h"
STATIC const mp_rom_map_elem_t board_module_globals_table[] = {
CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS
{ MP_ROM_QSTR(MP_QSTR_COL1), MP_ROM_PTR(&pin_GPIO0) },
{ MP_ROM_QSTR(MP_QSTR_COL2), MP_ROM_PTR(&pin_GPIO1) },
{ MP_ROM_QSTR(MP_QSTR_COL3), MP_ROM_PTR(&pin_GPIO2) },
{ MP_ROM_QSTR(MP_QSTR_COL4), MP_ROM_PTR(&pin_GPIO3) },
{ MP_ROM_QSTR(MP_QSTR_COL5), MP_ROM_PTR(&pin_GPIO4) },
{ MP_ROM_QSTR(MP_QSTR_COL6), MP_ROM_PTR(&pin_GPIO5) },
{ MP_ROM_QSTR(MP_QSTR_COL7), MP_ROM_PTR(&pin_GPIO6) },
{ MP_ROM_QSTR(MP_QSTR_COL8), MP_ROM_PTR(&pin_GPIO7) },
{ MP_ROM_QSTR(MP_QSTR_COL9), MP_ROM_PTR(&pin_GPIO8) },
{ MP_ROM_QSTR(MP_QSTR_COL10), MP_ROM_PTR(&pin_GPIO9) },
{ MP_ROM_QSTR(MP_QSTR_COL11), MP_ROM_PTR(&pin_GPIO10) },
{ MP_ROM_QSTR(MP_QSTR_COL12), MP_ROM_PTR(&pin_GPIO11) },
{ MP_ROM_QSTR(MP_QSTR_COL13), MP_ROM_PTR(&pin_GPIO12) },
{ MP_ROM_QSTR(MP_QSTR_COL14), MP_ROM_PTR(&pin_GPIO13) },
{ MP_ROM_QSTR(MP_QSTR_ROW1), MP_ROM_PTR(&pin_GPIO14) },
{ MP_ROM_QSTR(MP_QSTR_ROW2), MP_ROM_PTR(&pin_GPIO15) },
{ MP_ROM_QSTR(MP_QSTR_ROW3), MP_ROM_PTR(&pin_GPIO16) },
{ MP_ROM_QSTR(MP_QSTR_ROW4), MP_ROM_PTR(&pin_GPIO17) },
{ MP_ROM_QSTR(MP_QSTR_ROW5), MP_ROM_PTR(&pin_GPIO18) },
{ MP_ROM_QSTR(MP_QSTR_COL15), MP_ROM_PTR(&pin_GPIO19) },
{ MP_ROM_QSTR(MP_QSTR_COL16), MP_ROM_PTR(&pin_GPIO20) },
{ MP_ROM_QSTR(MP_QSTR_SPEAKER), MP_ROM_PTR(&pin_GPIO21) },
{ MP_ROM_QSTR(MP_QSTR_LED), MP_ROM_PTR(&pin_GPIO24) },
{ MP_ROM_QSTR(MP_QSTR_COL17), MP_ROM_PTR(&pin_GPIO25) },
{ MP_ROM_QSTR(MP_QSTR_ROW0), MP_ROM_PTR(&pin_GPIO26) },
{ MP_ROM_QSTR(MP_QSTR_NEOPIXEL), MP_ROM_PTR(&pin_GPIO29) },
{ MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO22) },
{ MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_GPIO23) },
{ MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) },
};
MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table);

View File

@ -0,0 +1,38 @@
/*
* This file is part of the MicroPython project, http://micropython.org/
*
* The MIT License (MIT)
*
* Copyright (c) 2017 Scott Shawcroft for Adafruit Industries
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
#include "supervisor/board.h"
#include "mpconfigboard.h"
void board_init(void) {
}
bool board_requests_safe_mode(void) {
return false;
}
void reset_board(void) {
}

View File

@ -0,0 +1,58 @@
/*
* This file is part of the MicroPython project, http://micropython.org/
*
* The MIT License (MIT)
*
* Copyright (c) 2019 Lucian Copeland for Adafruit Industries
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
// Micropython setup
#define MICROPY_HW_BOARD_NAME "SparkFun Thing Plus - STM32"
#define MICROPY_HW_MCU_NAME "STM32F405RG"
#define FLASH_SIZE (0x100000)
#define FLASH_PAGE_SIZE (0x4000)
#define HSE_VALUE ((uint32_t)12000000U)
#define LSE_VALUE ((uint32_t)32768)
#define BOARD_HAS_LOW_SPEED_CRYSTAL (1)
// On-board flash
#define SPI_FLASH_MOSI_PIN (&pin_PB05)
#define SPI_FLASH_MISO_PIN (&pin_PB04)
#define SPI_FLASH_SCK_PIN (&pin_PB03)
#define SPI_FLASH_CS_PIN (&pin_PA15)
// Bootloader only
#ifdef UF2_BOOTLOADER_ENABLED
#define BOARD_VTOR_DEFER (1) // Leave VTOR relocation to bootloader
#endif
#define DEFAULT_I2C_BUS_SCL (&pin_PB06)
#define DEFAULT_I2C_BUS_SDA (&pin_PB07)
#define DEFAULT_SPI_BUS_SCK (&pin_PB13)
#define DEFAULT_SPI_BUS_MOSI (&pin_PB15)
#define DEFAULT_SPI_BUS_MISO (&pin_PB14)
#define DEFAULT_UART_BUS_RX (&pin_PB11)
#define DEFAULT_UART_BUS_TX (&pin_PB10)

View File

@ -0,0 +1,21 @@
USB_VID = 0X1B4F
USB_PID = 0x0028
USB_PRODUCT = "Thing Plus - STM32"
USB_MANUFACTURER = "SparkFun Electronics"
SPI_FLASH_FILESYSTEM = 1
EXTERNAL_FLASH_DEVICES = W25Q128JVxM
MCU_SERIES = F4
MCU_VARIANT = STM32F405xx
MCU_PACKAGE = LQFP64
LD_COMMON = boards/common_default.ld
LD_DEFAULT = boards/STM32F405_default.ld
# UF2 boot option
LD_BOOT = boards/STM32F405_boot.ld
UF2_OFFSET = 0x8010000
CIRCUITPY_RGBMATRIX ?= 1

View File

@ -0,0 +1,60 @@
#include "py/objtuple.h"
#include "shared-bindings/board/__init__.h"
STATIC const mp_rom_obj_tuple_t sdio_data_tuple = {
{&mp_type_tuple},
4,
{
MP_ROM_PTR(&pin_PC08),
MP_ROM_PTR(&pin_PC09),
MP_ROM_PTR(&pin_PC10),
MP_ROM_PTR(&pin_PC11),
}
};
STATIC const mp_rom_map_elem_t board_module_globals_table[] = {
CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS
{ MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_PA04) },
{ MP_ROM_QSTR(MP_QSTR_A1), MP_ROM_PTR(&pin_PA05) },
{ MP_ROM_QSTR(MP_QSTR_A2), MP_ROM_PTR(&pin_PA06) },
{ MP_ROM_QSTR(MP_QSTR_A3), MP_ROM_PTR(&pin_PA07) },
{ MP_ROM_QSTR(MP_QSTR_A4), MP_ROM_PTR(&pin_PC04) },
{ MP_ROM_QSTR(MP_QSTR_A5), MP_ROM_PTR(&pin_PC05) },
{ MP_ROM_QSTR(MP_QSTR_D5), MP_ROM_PTR(&pin_PC07) },
{ MP_ROM_QSTR(MP_QSTR_D6), MP_ROM_PTR(&pin_PC06) },
{ MP_ROM_QSTR(MP_QSTR_D9), MP_ROM_PTR(&pin_PB08) },
{ MP_ROM_QSTR(MP_QSTR_D10), MP_ROM_PTR(&pin_PB09) },
{ MP_ROM_QSTR(MP_QSTR_D11), MP_ROM_PTR(&pin_PC03) },
{ MP_ROM_QSTR(MP_QSTR_D12), MP_ROM_PTR(&pin_PC02) },
{ MP_ROM_QSTR(MP_QSTR_LED), MP_ROM_PTR(&pin_PC01) },
{ MP_ROM_QSTR(MP_QSTR_D13), MP_ROM_PTR(&pin_PC01) },
{ MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_PB07) },
{ MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_PB06) },
{ MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_PB13) },
{ MP_ROM_QSTR(MP_QSTR_CIPO), MP_ROM_PTR(&pin_PB14) },
{ MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_PB14) },
{ MP_ROM_QSTR(MP_QSTR_COPI), MP_ROM_PTR(&pin_PB15) },
{ MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_PB15) },
{ MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_PB10) },
{ MP_ROM_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_PB10) },
{ MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_PB11) },
{ MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_PB11) },
{ MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) },
{ MP_ROM_QSTR(MP_QSTR_SPI), MP_ROM_PTR(&board_spi_obj) },
{ MP_ROM_QSTR(MP_QSTR_UART), MP_ROM_PTR(&board_uart_obj) },
{ MP_ROM_QSTR(MP_QSTR_SDIO_CLOCK), MP_ROM_PTR(&pin_PC12) },
{ MP_ROM_QSTR(MP_QSTR_SDIO_COMMAND), MP_ROM_PTR(&pin_PD02) },
{ MP_ROM_QSTR(MP_QSTR_SDIO_DATA), MP_ROM_PTR(&sdio_data_tuple) },
{ MP_ROM_QSTR(MP_QSTR_CAN_RX), MP_ROM_PTR(&pin_PB08) },
{ MP_ROM_QSTR(MP_QSTR_CAN_TX), MP_ROM_PTR(&pin_PB09) },
};
MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table);

View File

@ -104,7 +104,7 @@ mp_obj_t mp_alloc_emergency_exception_buf(mp_obj_t size_in) {
#endif #endif
#endif // MICROPY_ENABLE_EMERGENCY_EXCEPTION_BUF #endif // MICROPY_ENABLE_EMERGENCY_EXCEPTION_BUF
STATIC mp_obj_exception_t *get_native_exception(mp_obj_t self_in) { mp_obj_exception_t *mp_obj_exception_get_native(mp_obj_t self_in) {
assert(mp_obj_is_exception_instance(self_in)); assert(mp_obj_is_exception_instance(self_in));
if (mp_obj_is_native_exception_instance(self_in)) { if (mp_obj_is_native_exception_instance(self_in)) {
return MP_OBJ_TO_PTR(self_in); return MP_OBJ_TO_PTR(self_in);
@ -206,7 +206,7 @@ mp_obj_t mp_obj_exception_make_new(const mp_obj_type_t *type, size_t n_args, siz
// Get exception "value" - that is, first argument, or None // Get exception "value" - that is, first argument, or None
mp_obj_t mp_obj_exception_get_value(mp_obj_t self_in) { mp_obj_t mp_obj_exception_get_value(mp_obj_t self_in) {
mp_obj_exception_t *self = get_native_exception(self_in); mp_obj_exception_t *self = mp_obj_exception_get_native(self_in);
if (self->args->len == 0) { if (self->args->len == 0) {
return mp_const_none; return mp_const_none;
} else { } else {
@ -543,14 +543,14 @@ bool mp_obj_exception_match(mp_obj_t exc, mp_const_obj_t exc_type) {
// traceback handling functions // traceback handling functions
void mp_obj_exception_clear_traceback(mp_obj_t self_in) { void mp_obj_exception_clear_traceback(mp_obj_t self_in) {
mp_obj_exception_t *self = get_native_exception(self_in); mp_obj_exception_t *self = mp_obj_exception_get_native(self_in);
// just set the traceback to the empty traceback object // just set the traceback to the empty traceback object
// we don't want to call any memory management functions here // we don't want to call any memory management functions here
self->traceback = (mp_obj_traceback_t *)&mp_const_empty_traceback_obj; self->traceback = (mp_obj_traceback_t *)&mp_const_empty_traceback_obj;
} }
void mp_obj_exception_add_traceback(mp_obj_t self_in, qstr file, size_t line, qstr block) { void mp_obj_exception_add_traceback(mp_obj_t self_in, qstr file, size_t line, qstr block) {
mp_obj_exception_t *self = get_native_exception(self_in); mp_obj_exception_t *self = mp_obj_exception_get_native(self_in);
// Try to allocate memory for the traceback, with fallback to emergency traceback object // Try to allocate memory for the traceback, with fallback to emergency traceback object
if (self->traceback == NULL || self->traceback == (mp_obj_traceback_t *)&mp_const_empty_traceback_obj) { if (self->traceback == NULL || self->traceback == (mp_obj_traceback_t *)&mp_const_empty_traceback_obj) {
@ -612,7 +612,7 @@ void mp_obj_exception_add_traceback(mp_obj_t self_in, qstr file, size_t line, qs
} }
void mp_obj_exception_get_traceback(mp_obj_t self_in, size_t *n, size_t **values) { void mp_obj_exception_get_traceback(mp_obj_t self_in, size_t *n, size_t **values) {
mp_obj_exception_t *self = get_native_exception(self_in); mp_obj_exception_t *self = mp_obj_exception_get_native(self_in);
if (self->traceback == NULL) { if (self->traceback == NULL) {
*n = 0; *n = 0;

View File

@ -38,6 +38,7 @@ typedef struct _mp_obj_exception_t {
void mp_obj_exception_print(const mp_print_t *print, mp_obj_t o_in, mp_print_kind_t kind); void mp_obj_exception_print(const mp_print_t *print, mp_obj_t o_in, mp_print_kind_t kind);
void mp_obj_exception_attr(mp_obj_t self_in, qstr attr, mp_obj_t *dest); void mp_obj_exception_attr(mp_obj_t self_in, qstr attr, mp_obj_t *dest);
mp_obj_exception_t *mp_obj_exception_get_native(mp_obj_t self_in);
#define MP_DEFINE_EXCEPTION(exc_name, base_name) \ #define MP_DEFINE_EXCEPTION(exc_name, base_name) \
const mp_obj_type_t mp_type_##exc_name = { \ const mp_obj_type_t mp_type_##exc_name = { \

View File

@ -138,8 +138,8 @@ const mp_obj_property_t displayio_ondiskbitmap_height_obj = {
//| pixel_shader: Union[ColorConverter, Palette] //| pixel_shader: Union[ColorConverter, Palette]
//| """The image's pixel_shader. The type depends on the underlying //| """The image's pixel_shader. The type depends on the underlying
//| bitmap's structure. The pixel shadder can be modified (e.g., to set the //| bitmap's structure. The pixel shader can be modified (e.g., to set the
//| transparent pixel or, for paletted images, to update the palette""" //| transparent pixel or, for palette shaded images, to update the palette.)"""
//| //|
STATIC mp_obj_t displayio_ondiskbitmap_obj_get_pixel_shader(mp_obj_t self_in) { STATIC mp_obj_t displayio_ondiskbitmap_obj_get_pixel_shader(mp_obj_t self_in) {
displayio_ondiskbitmap_t *self = MP_OBJ_TO_PTR(self_in); displayio_ondiskbitmap_t *self = MP_OBJ_TO_PTR(self_in);

View File

@ -42,7 +42,7 @@
//| """ //| """
//| //|
STATIC mp_map_elem_t keypad_module_globals_table[] = { STATIC mp_rom_map_elem_t keypad_module_globals_table[] = {
{ MP_ROM_QSTR(MP_QSTR___name__), MP_OBJ_NEW_QSTR(MP_QSTR_keypad) }, { MP_ROM_QSTR(MP_QSTR___name__), MP_OBJ_NEW_QSTR(MP_QSTR_keypad) },
{ MP_ROM_QSTR(MP_QSTR_Event), MP_OBJ_FROM_PTR(&keypad_event_type) }, { MP_ROM_QSTR(MP_QSTR_Event), MP_OBJ_FROM_PTR(&keypad_event_type) },
{ MP_ROM_QSTR(MP_QSTR_EventQueue), MP_OBJ_FROM_PTR(&keypad_eventqueue_type) }, { MP_ROM_QSTR(MP_QSTR_EventQueue), MP_OBJ_FROM_PTR(&keypad_eventqueue_type) },
@ -51,7 +51,7 @@ STATIC mp_map_elem_t keypad_module_globals_table[] = {
{ MP_ROM_QSTR(MP_QSTR_ShiftRegisterKeys), MP_OBJ_FROM_PTR(&keypad_shiftregisterkeys_type) }, { MP_ROM_QSTR(MP_QSTR_ShiftRegisterKeys), MP_OBJ_FROM_PTR(&keypad_shiftregisterkeys_type) },
}; };
STATIC MP_DEFINE_MUTABLE_DICT(keypad_module_globals, keypad_module_globals_table); STATIC MP_DEFINE_CONST_DICT(keypad_module_globals, keypad_module_globals_table);
const mp_obj_module_t keypad_module = { const mp_obj_module_t keypad_module = {
.base = { &mp_type_module }, .base = { &mp_type_module },

View File

@ -29,6 +29,7 @@
#include "py/objtuple.h" #include "py/objtuple.h"
#include "py/objlist.h" #include "py/objlist.h"
#include "py/objproperty.h"
#include "py/runtime.h" #include "py/runtime.h"
#include "py/mperrno.h" #include "py/mperrno.h"
@ -51,10 +52,69 @@ STATIC mp_obj_t ssl_sslcontext_make_new(const mp_obj_type_t *type, size_t n_args
return MP_OBJ_FROM_PTR(s); return MP_OBJ_FROM_PTR(s);
} }
//| def wrap_socket(sock: socketpool.Socket, *, server_side: bool = False, server_hostname: Optional[str] = None) -> ssl.SSLSocket: //| def load_verify_locations(self, cadata: Optional[str] = None) -> None:
//| """Wraps the socket into a socket-compatible class that handles SSL negotiation. //| """Load a set of certification authority (CA) certificates used to validate
//| The socket must be of type SOCK_STREAM.""" //| other peers' certificates."""
//| ... //|
STATIC mp_obj_t ssl_sslcontext_load_verify_locations(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
enum { ARG_cadata };
static const mp_arg_t allowed_args[] = {
{ MP_QSTR_cadata, MP_ARG_KW_ONLY | MP_ARG_OBJ, {.u_obj = mp_const_none} },
};
ssl_sslcontext_obj_t *self = MP_OBJ_TO_PTR(pos_args[0]);
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);
const char *cadata = mp_obj_str_get_str(args[ARG_cadata].u_obj);
common_hal_ssl_sslcontext_load_verify_locations(self, cadata);
return mp_const_none;
}
STATIC MP_DEFINE_CONST_FUN_OBJ_KW(ssl_sslcontext_load_verify_locations_obj, 1, ssl_sslcontext_load_verify_locations);
//| def set_default_verify_paths(self) -> None:
//| """Load a set of default certification authority (CA) certificates."""
//|
STATIC mp_obj_t ssl_sslcontext_set_default_verify_paths(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
ssl_sslcontext_obj_t *self = MP_OBJ_TO_PTR(pos_args[0]);
common_hal_ssl_sslcontext_set_default_verify_paths(self);
return mp_const_none;
}
STATIC MP_DEFINE_CONST_FUN_OBJ_KW(ssl_sslcontext_set_default_verify_paths_obj, 1, ssl_sslcontext_set_default_verify_paths);
//| check_hostname: bool
//| """Whether to match the peer certificate's hostname."""
//|
STATIC mp_obj_t ssl_sslcontext_get_check_hostname(mp_obj_t self_in) {
ssl_sslcontext_obj_t *self = MP_OBJ_TO_PTR(self_in);
return mp_obj_new_bool(common_hal_ssl_sslcontext_get_check_hostname(self));
}
STATIC MP_DEFINE_CONST_FUN_OBJ_1(ssl_sslcontext_get_check_hostname_obj, ssl_sslcontext_get_check_hostname);
STATIC mp_obj_t ssl_sslcontext_set_check_hostname(mp_obj_t self_in, mp_obj_t value) {
ssl_sslcontext_obj_t *self = MP_OBJ_TO_PTR(self_in);
common_hal_ssl_sslcontext_set_check_hostname(self, mp_obj_is_true(value));
return mp_const_none;
}
STATIC MP_DEFINE_CONST_FUN_OBJ_2(ssl_sslcontext_set_check_hostname_obj, ssl_sslcontext_set_check_hostname);
const mp_obj_property_t ssl_sslcontext_check_hostname_obj = {
.base.type = &mp_type_property,
.proxy = {(mp_obj_t)&ssl_sslcontext_get_check_hostname_obj,
(mp_obj_t)&ssl_sslcontext_set_check_hostname_obj,
MP_ROM_NONE},
};
//| def wrap_socket(self, sock: socketpool.Socket, *, server_side: bool = False, server_hostname: Optional[str] = None) -> ssl.SSLSocket:
//| """Wraps the socket into a socket-compatible class that handles SSL negotiation.
//| The socket must be of type SOCK_STREAM."""
//| //|
STATIC mp_obj_t ssl_sslcontext_wrap_socket(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { STATIC mp_obj_t ssl_sslcontext_wrap_socket(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
@ -69,7 +129,10 @@ STATIC mp_obj_t ssl_sslcontext_wrap_socket(size_t n_args, const mp_obj_t *pos_ar
mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)]; mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)];
mp_arg_parse_all(n_args - 1, pos_args + 1, kw_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args); mp_arg_parse_all(n_args - 1, pos_args + 1, kw_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args);
const char *server_hostname = mp_obj_str_get_str(args[ARG_server_hostname].u_obj); const char *server_hostname = NULL;
if (args[ARG_server_hostname].u_obj != mp_const_none) {
server_hostname = mp_obj_str_get_str(args[ARG_server_hostname].u_obj);
}
bool server_side = args[ARG_server_side].u_bool; bool server_side = args[ARG_server_side].u_bool;
if (server_side && server_hostname != NULL) { if (server_side && server_hostname != NULL) {
mp_raise_ValueError(translate("Server side context cannot have hostname")); mp_raise_ValueError(translate("Server side context cannot have hostname"));
@ -83,6 +146,9 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_KW(ssl_sslcontext_wrap_socket_obj, 1, ssl_sslcont
STATIC const mp_rom_map_elem_t ssl_sslcontext_locals_dict_table[] = { STATIC const mp_rom_map_elem_t ssl_sslcontext_locals_dict_table[] = {
{ MP_ROM_QSTR(MP_QSTR_wrap_socket), MP_ROM_PTR(&ssl_sslcontext_wrap_socket_obj) }, { MP_ROM_QSTR(MP_QSTR_wrap_socket), MP_ROM_PTR(&ssl_sslcontext_wrap_socket_obj) },
{ MP_ROM_QSTR(MP_QSTR_load_verify_locations), MP_ROM_PTR(&ssl_sslcontext_load_verify_locations_obj) },
{ MP_ROM_QSTR(MP_QSTR_set_default_verify_paths), MP_ROM_PTR(&ssl_sslcontext_set_default_verify_paths_obj) },
{ MP_ROM_QSTR(MP_QSTR_check_hostname), MP_ROM_PTR(&ssl_sslcontext_check_hostname_obj) },
}; };
STATIC MP_DEFINE_CONST_DICT(ssl_sslcontext_locals_dict, ssl_sslcontext_locals_dict_table); STATIC MP_DEFINE_CONST_DICT(ssl_sslcontext_locals_dict, ssl_sslcontext_locals_dict_table);

View File

@ -39,4 +39,12 @@ void common_hal_ssl_sslcontext_construct(ssl_sslcontext_obj_t *self);
ssl_sslsocket_obj_t *common_hal_ssl_sslcontext_wrap_socket(ssl_sslcontext_obj_t *self, ssl_sslsocket_obj_t *common_hal_ssl_sslcontext_wrap_socket(ssl_sslcontext_obj_t *self,
socketpool_socket_obj_t *sock, bool server_side, const char *server_hostname); socketpool_socket_obj_t *sock, bool server_side, const char *server_hostname);
void common_hal_ssl_sslcontext_load_verify_locations(ssl_sslcontext_obj_t *self,
const char *cadata);
void common_hal_ssl_sslcontext_set_default_verify_paths(ssl_sslcontext_obj_t *self);
bool common_hal_ssl_sslcontext_get_check_hostname(ssl_sslcontext_obj_t *self);
void common_hal_ssl_sslcontext_set_check_hostname(ssl_sslcontext_obj_t *self, bool value);
#endif // MICROPY_INCLUDED_SHARED_BINDINGS_SSL_SSLCONTEXT_H #endif // MICROPY_INCLUDED_SHARED_BINDINGS_SSL_SSLCONTEXT_H

View File

@ -42,7 +42,6 @@ STATIC void traceback_exception_common(mp_print_t *print, mp_obj_t value, mp_obj
if (!mp_obj_is_exception_instance(value)) { if (!mp_obj_is_exception_instance(value)) {
mp_raise_TypeError(translate("invalid exception")); mp_raise_TypeError(translate("invalid exception"));
} }
mp_obj_exception_t exc = *(mp_obj_exception_t *)MP_OBJ_TO_PTR(value);
mp_int_t limit = 0; mp_int_t limit = 0;
bool print_tb = true; bool print_tb = true;
@ -51,13 +50,17 @@ STATIC void traceback_exception_common(mp_print_t *print, mp_obj_t value, mp_obj
print_tb = (limit != 0); print_tb = (limit != 0);
} }
mp_obj_exception_t *exc = mp_obj_exception_get_native(value);
mp_obj_traceback_t *trace_backup = exc->traceback;
if (tb_obj != mp_const_none && print_tb) { if (tb_obj != mp_const_none && print_tb) {
exc.traceback = mp_arg_validate_type(tb_obj, &mp_type_traceback, MP_QSTR_tb); exc->traceback = mp_arg_validate_type(tb_obj, &mp_type_traceback, MP_QSTR_tb);
} else { } else {
exc.traceback = (mp_obj_traceback_t *)&mp_const_empty_traceback_obj; exc->traceback = (mp_obj_traceback_t *)&mp_const_empty_traceback_obj;
} }
shared_module_traceback_print_exception(&exc, print, limit); shared_module_traceback_print_exception(MP_OBJ_TO_PTR(value), print, limit);
exc->traceback = trace_backup;
} }
//| def format_exception(etype: Type[BaseException], value: BaseException, tb: TracebackType, //| def format_exception(etype: Type[BaseException], value: BaseException, tb: TracebackType,

View File

@ -60,6 +60,51 @@ STATIC const vectorio_draw_protocol_t rectangle_draw_protocol = {
.draw_protocol_impl = &vectorio_vector_shape_draw_protocol_impl .draw_protocol_impl = &vectorio_vector_shape_draw_protocol_impl
}; };
//| width : int
//| """The width of the rectangle in pixels."""
//|
STATIC mp_obj_t vectorio_rectangle_obj_get_width(mp_obj_t self_in) {
vectorio_rectangle_t *self = MP_OBJ_TO_PTR(self_in);
return mp_obj_new_int(common_hal_vectorio_rectangle_get_width(self));
}
MP_DEFINE_CONST_FUN_OBJ_1(vectorio_rectangle_get_width_obj, vectorio_rectangle_obj_get_width);
STATIC mp_obj_t vectorio_rectangle_obj_set_width(mp_obj_t self_in, mp_obj_t width) {
vectorio_rectangle_t *self = MP_OBJ_TO_PTR(self_in);
common_hal_vectorio_rectangle_set_width(self, mp_obj_get_int(width));
return mp_const_none;
}
MP_DEFINE_CONST_FUN_OBJ_2(vectorio_rectangle_set_width_obj, vectorio_rectangle_obj_set_width);
const mp_obj_property_t vectorio_rectangle_width_obj = {
.base.type = &mp_type_property,
.proxy = {(mp_obj_t)&vectorio_rectangle_get_width_obj,
(mp_obj_t)&vectorio_rectangle_set_width_obj,
MP_ROM_NONE},
};
//| height : int
//| """The height of the rectangle in pixels."""
//|
STATIC mp_obj_t vectorio_rectangle_obj_get_height(mp_obj_t self_in) {
vectorio_rectangle_t *self = MP_OBJ_TO_PTR(self_in);
return mp_obj_new_int(common_hal_vectorio_rectangle_get_height(self));
}
MP_DEFINE_CONST_FUN_OBJ_1(vectorio_rectangle_get_height_obj, vectorio_rectangle_obj_get_height);
STATIC mp_obj_t vectorio_rectangle_obj_set_height(mp_obj_t self_in, mp_obj_t height) {
vectorio_rectangle_t *self = MP_OBJ_TO_PTR(self_in);
common_hal_vectorio_rectangle_set_height(self, mp_obj_get_int(height));
return mp_const_none;
}
MP_DEFINE_CONST_FUN_OBJ_2(vectorio_rectangle_set_height_obj, vectorio_rectangle_obj_set_height);
const mp_obj_property_t vectorio_rectangle_height_obj = {
.base.type = &mp_type_property,
.proxy = {(mp_obj_t)&vectorio_rectangle_get_height_obj,
(mp_obj_t)&vectorio_rectangle_set_height_obj,
MP_ROM_NONE},
};
// Documentation for properties inherited from VectorShape. // Documentation for properties inherited from VectorShape.
@ -80,6 +125,8 @@ STATIC const mp_rom_map_elem_t vectorio_rectangle_locals_dict_table[] = {
// Properties // Properties
{ MP_ROM_QSTR(MP_QSTR_x), MP_ROM_PTR(&vectorio_vector_shape_x_obj) }, { MP_ROM_QSTR(MP_QSTR_x), MP_ROM_PTR(&vectorio_vector_shape_x_obj) },
{ MP_ROM_QSTR(MP_QSTR_y), MP_ROM_PTR(&vectorio_vector_shape_y_obj) }, { MP_ROM_QSTR(MP_QSTR_y), MP_ROM_PTR(&vectorio_vector_shape_y_obj) },
{ MP_ROM_QSTR(MP_QSTR_width), MP_ROM_PTR(&vectorio_rectangle_width_obj) },
{ MP_ROM_QSTR(MP_QSTR_height), MP_ROM_PTR(&vectorio_rectangle_height_obj) },
{ MP_ROM_QSTR(MP_QSTR_location), MP_ROM_PTR(&vectorio_vector_shape_location_obj) }, { MP_ROM_QSTR(MP_QSTR_location), MP_ROM_PTR(&vectorio_vector_shape_location_obj) },
{ MP_ROM_QSTR(MP_QSTR_pixel_shader), MP_ROM_PTR(&vectorio_vector_shape_pixel_shader_obj) }, { MP_ROM_QSTR(MP_QSTR_pixel_shader), MP_ROM_PTR(&vectorio_vector_shape_pixel_shader_obj) },
}; };

View File

@ -3,10 +3,12 @@
#include "shared-module/vectorio/Rectangle.h" #include "shared-module/vectorio/Rectangle.h"
#include "shared-module/displayio/area.h" #include "shared-module/displayio/area.h"
#include "shared-module/vectorio/__init__.h"
extern const mp_obj_type_t vectorio_rectangle_type; extern const mp_obj_type_t vectorio_rectangle_type;
void common_hal_vectorio_rectangle_construct(vectorio_rectangle_t *self, uint32_t width, uint32_t height); void common_hal_vectorio_rectangle_construct(vectorio_rectangle_t *self, uint32_t width, uint32_t height);
void common_hal_vectorio_rectangle_set_on_dirty(vectorio_rectangle_t *self, vectorio_event_t on_dirty);
uint32_t common_hal_vectorio_rectangle_get_pixel(void *rectangle, int16_t x, int16_t y); uint32_t common_hal_vectorio_rectangle_get_pixel(void *rectangle, int16_t x, int16_t y);
@ -14,4 +16,10 @@ void common_hal_vectorio_rectangle_get_area(void *rectangle, displayio_area_t *o
mp_obj_t common_hal_vectorio_rectangle_get_draw_protocol(void *rectangle); mp_obj_t common_hal_vectorio_rectangle_get_draw_protocol(void *rectangle);
int16_t common_hal_vectorio_rectangle_get_width(void *obj);
void common_hal_vectorio_rectangle_set_width(void *obj, int16_t width);
int16_t common_hal_vectorio_rectangle_get_height(void *obj);
void common_hal_vectorio_rectangle_set_height(void *obj, int16_t height);
#endif // MICROPY_INCLUDED_SHARED_BINDINGS_VECTORIO_RECTANGLE_H #endif // MICROPY_INCLUDED_SHARED_BINDINGS_VECTORIO_RECTANGLE_H

View File

@ -62,6 +62,7 @@ mp_obj_t vectorio_vector_shape_make_new(const mp_obj_t shape, const mp_obj_t pix
if (mp_obj_is_type(shape, &vectorio_polygon_type)) { if (mp_obj_is_type(shape, &vectorio_polygon_type)) {
common_hal_vectorio_polygon_set_on_dirty(self->ishape.shape, on_dirty); common_hal_vectorio_polygon_set_on_dirty(self->ishape.shape, on_dirty);
} else if (mp_obj_is_type(shape, &vectorio_rectangle_type)) { } else if (mp_obj_is_type(shape, &vectorio_rectangle_type)) {
common_hal_vectorio_rectangle_set_on_dirty(self->ishape.shape, on_dirty);
} else if (mp_obj_is_type(shape, &vectorio_circle_type)) { } else if (mp_obj_is_type(shape, &vectorio_circle_type)) {
common_hal_vectorio_circle_set_on_dirty(self->ishape.shape, on_dirty); common_hal_vectorio_circle_set_on_dirty(self->ishape.shape, on_dirty);
} else { } else {

View File

@ -163,7 +163,7 @@ STATIC void _pixelbuf_parse_color(pixelbuf_pixelbuf_obj_t *self, mp_obj_t color,
} }
if (mp_obj_is_int(color) || mp_obj_is_float(color)) { if (mp_obj_is_int(color) || mp_obj_is_float(color)) {
mp_int_t value = mp_obj_is_int(color) ? mp_obj_get_int_truncated(color) : mp_obj_get_float(color); mp_int_t value = mp_obj_is_int(color) ? mp_obj_get_int_truncated(color) : (mp_int_t)mp_obj_get_float(color);
*r = value >> 16 & 0xff; *r = value >> 16 & 0xff;
*g = (value >> 8) & 0xff; *g = (value >> 8) & 0xff;
*b = value & 0xff; *b = value & 0xff;

View File

@ -1,7 +1,9 @@
#include "shared-module/vectorio/__init__.h"
#include "shared-bindings/vectorio/Rectangle.h" #include "shared-bindings/vectorio/Rectangle.h"
#include "shared-module/displayio/area.h" #include "shared-module/displayio/area.h"
#include "py/runtime.h" #include "py/runtime.h"
#include "stdlib.h"
void common_hal_vectorio_rectangle_construct(vectorio_rectangle_t *self, uint32_t width, uint32_t height) { void common_hal_vectorio_rectangle_construct(vectorio_rectangle_t *self, uint32_t width, uint32_t height) {
@ -9,6 +11,12 @@ void common_hal_vectorio_rectangle_construct(vectorio_rectangle_t *self, uint32_
self->height = height; self->height = height;
} }
void common_hal_vectorio_rectangle_set_on_dirty(vectorio_rectangle_t *self, vectorio_event_t on_dirty) {
if (self->on_dirty.obj != NULL) {
mp_raise_TypeError(translate("can only be registered in one parent"));
}
self->on_dirty = on_dirty;
}
uint32_t common_hal_vectorio_rectangle_get_pixel(void *obj, int16_t x, int16_t y) { uint32_t common_hal_vectorio_rectangle_get_pixel(void *obj, int16_t x, int16_t y) {
vectorio_rectangle_t *self = obj; vectorio_rectangle_t *self = obj;
@ -32,3 +40,29 @@ mp_obj_t common_hal_vectorio_rectangle_get_draw_protocol(void *rectangle) {
vectorio_rectangle_t *self = rectangle; vectorio_rectangle_t *self = rectangle;
return self->draw_protocol_instance; return self->draw_protocol_instance;
} }
int16_t common_hal_vectorio_rectangle_get_width(void *obj) {
vectorio_rectangle_t *self = obj;
return self->width;
}
void common_hal_vectorio_rectangle_set_width(void *obj, int16_t width) {
vectorio_rectangle_t *self = obj;
self->width = abs(width);
if (self->on_dirty.obj != NULL) {
self->on_dirty.event(self->on_dirty.obj);
}
}
int16_t common_hal_vectorio_rectangle_get_height(void *obj) {
vectorio_rectangle_t *self = obj;
return self->height;
}
void common_hal_vectorio_rectangle_set_height(void *obj, int16_t height) {
vectorio_rectangle_t *self = obj;
self->height = abs(height);
if (self->on_dirty.obj != NULL) {
self->on_dirty.event(self->on_dirty.obj);
}
}

View File

@ -4,11 +4,13 @@
#include <stdint.h> #include <stdint.h>
#include "py/obj.h" #include "py/obj.h"
#include "shared-module/vectorio/__init__.h"
typedef struct { typedef struct {
mp_obj_base_t base; mp_obj_base_t base;
uint16_t width; uint16_t width;
uint16_t height; uint16_t height;
vectorio_event_t on_dirty;
mp_obj_t draw_protocol_instance; mp_obj_t draw_protocol_instance;
} vectorio_rectangle_t; } vectorio_rectangle_t;

View File

@ -411,6 +411,9 @@ bool vectorio_vector_shape_fill_area(vectorio_vector_shape_t *self, const _displ
if (colorspace->depth == 16) { if (colorspace->depth == 16) {
VECTORIO_SHAPE_PIXEL_DEBUG(" buffer = %04x 16", output_pixel.pixel); VECTORIO_SHAPE_PIXEL_DEBUG(" buffer = %04x 16", output_pixel.pixel);
*(((uint16_t *)buffer) + pixel_index) = output_pixel.pixel; *(((uint16_t *)buffer) + pixel_index) = output_pixel.pixel;
} else if (colorspace->depth == 32) {
VECTORIO_SHAPE_PIXEL_DEBUG(" buffer = %04x 32", output_pixel.pixel);
*(((uint32_t *)buffer) + pixel_index) = output_pixel.pixel;
} else if (colorspace->depth == 8) { } else if (colorspace->depth == 8) {
VECTORIO_SHAPE_PIXEL_DEBUG(" buffer = %02x 8", output_pixel.pixel); VECTORIO_SHAPE_PIXEL_DEBUG(" buffer = %02x 8", output_pixel.pixel);
*(((uint8_t *)buffer) + pixel_index) = output_pixel.pixel; *(((uint8_t *)buffer) + pixel_index) = output_pixel.pixel;

View File

@ -22,4 +22,15 @@ except Exception as exc:
traceback.print_exception(None, exc, exc.__traceback__, limit=0) traceback.print_exception(None, exc, exc.__traceback__, limit=0)
print("\nLimit=-1 Trace:") print("\nLimit=-1 Trace:")
traceback.print_exception(None, exc, exc.__traceback__, limit=-1) traceback.print_exception(None, exc, exc.__traceback__, limit=-1)
class NonNativeException(Exception):
pass
try:
raise NonNativeException("test")
except Exception as e:
print("\nNonNative Trace:")
traceback.print_exception(None, e, e.__traceback__)
print("") print("")

View File

@ -21,3 +21,8 @@ Traceback (most recent call last):
File "circuitpython/traceback_test.py", line 9, in fun File "circuitpython/traceback_test.py", line 9, in fun
Exception: test Exception: test
NonNative Trace:
Traceback (most recent call last):
File "circuitpython/traceback_test.py", line 32, in <module>
NonNativeException: test

View File

@ -160,10 +160,10 @@ def get_version_info():
def get_current_info(): def get_current_info():
response = github.get("/repos/adafruit/circuitpython-org/git/refs/heads/master") response = github.get("/repos/adafruit/circuitpython-org/git/refs/heads/main")
if not response.ok: if not response.ok:
print(response.text) print(response.text)
raise RuntimeError("cannot get master sha") raise RuntimeError("cannot get main sha")
commit_sha = response.json()["object"]["sha"] commit_sha = response.json()["object"]["sha"]
response = github.get( response = github.get(
@ -235,7 +235,7 @@ def create_pr(changes, updated, git_info, user):
pr_info = { pr_info = {
"title": pr_title, "title": pr_title,
"head": user + ":" + branch_name, "head": user + ":" + branch_name,
"base": "master", "base": "main",
"body": message, "body": message,
"maintainer_can_modify": True, "maintainer_can_modify": True,
} }

View File

@ -53,6 +53,10 @@ DEFAULT_IGNORELIST = [
"espressif_kaluga_1.3", "espressif_kaluga_1.3",
"espressif_esp32s3_devkitc_1", "espressif_esp32s3_devkitc_1",
"espressif_esp32s3_devkitc_1_nopsram", "espressif_esp32s3_devkitc_1_nopsram",
"jpconstantineau_pykey18",
"jpconstantineau_pykey44",
"jpconstantineau_pykey60",
"jpconstantineau_pykey87",
] ]
cli_parser = argparse.ArgumentParser(description="USB VID/PID Duplicate Checker") cli_parser = argparse.ArgumentParser(description="USB VID/PID Duplicate Checker")

View File

@ -22,7 +22,7 @@ port_deps = {
"lib/tinyusb/", "lib/tinyusb/",
"data/nvm.toml/", "data/nvm.toml/",
], ],
"broadcom": ["lib/tinyusb/"], "broadcom": ["extmod/ulab/", "lib/tinyusb/"],
"cxd56": ["extmod/ulab/", "lib/tinyusb/"], "cxd56": ["extmod/ulab/", "lib/tinyusb/"],
"espressif": ["extmod/ulab/", "lib/tinyusb/", "lib/protomatter/", "lib/quirc/"], "espressif": ["extmod/ulab/", "lib/tinyusb/", "lib/protomatter/", "lib/quirc/"],
"litex": ["extmod/ulab/", "lib/tinyusb/"], "litex": ["extmod/ulab/", "lib/tinyusb/"],
@ -73,8 +73,7 @@ elif target == "windows":
# This builds one board from a number of ports so fill out a bunch of submodules # This builds one board from a number of ports so fill out a bunch of submodules
submodules = ["extmod/", "lib/", "tools/", "ports/", "data/nvm.toml/"] submodules = ["extmod/", "lib/", "tools/", "ports/", "data/nvm.toml/"]
elif target == "website": elif target == "website":
# No submodules needed. submodules = ["tools/adabot/"]
pass
else: else:
p = list(pathlib.Path(".").glob(f"ports/*/boards/{target}/mpconfigboard.mk")) p = list(pathlib.Path(".").glob(f"ports/*/boards/{target}/mpconfigboard.mk"))
if not p: if not p:

View File

@ -34,6 +34,11 @@ PORT_TO_ARCH = {
"stm": "arm", "stm": "arm",
} }
IGNORE = [
"tools/ci_set_matrix.py",
"tools/ci_check_duplicate_usb_vid_pid.py",
]
changed_files = {} changed_files = {}
try: try:
changed_files = json.loads(os.environ["CHANGED_FILES"]) changed_files = json.loads(os.environ["CHANGED_FILES"])
@ -63,8 +68,8 @@ def set_boards_to_build(build_all):
if not build_all: if not build_all:
boards_to_build = set() boards_to_build = set()
board_pattern = re.compile(r"^ports\/[^/]+\/boards\/([^/]+)\/") board_pattern = re.compile(r"^ports/[^/]+/boards/([^/]+)/")
port_pattern = re.compile(r"^ports\/([^/]+)\/") port_pattern = re.compile(r"^ports/([^/]+)/")
for p in changed_files: for p in changed_files:
# See if it is board specific # See if it is board specific
board_matches = board_pattern.search(p) board_matches = board_pattern.search(p)
@ -81,6 +86,14 @@ def set_boards_to_build(build_all):
boards_to_build.update(port_to_boards[port]) boards_to_build.update(port_to_boards[port])
continue continue
# Check the ignore list to see if the file isn't used on board builds.
if p in IGNORE:
continue
# Boards don't run tests so ignore those as well.
if p.startswith("tests"):
continue
# Otherwise build it all # Otherwise build it all
boards_to_build = all_board_ids boards_to_build = all_board_ids
break break
@ -107,7 +120,7 @@ def set_docs_to_build(build_all):
doc_match = build_all doc_match = build_all
if not build_all: if not build_all:
doc_pattern = re.compile( doc_pattern = re.compile(
r"^(?:docs|(?:(?:extmod\/ulab|ports\/\w+\/bindings|shared-bindings)\S+\.c|conf\.py|tools\/extract_pyi\.py|requirements-doc\.txt)$)|(?:-stubs|\.(?:md|MD|rst|RST))$" r"^(?:docs|extmod/ulab|(?:(?:ports/\w+/bindings|shared-bindings)\S+\.c|conf\.py|tools/extract_pyi\.py|requirements-doc\.txt)$)|(?:-stubs|\.(?:md|MD|rst|RST))$"
) )
for p in changed_files: for p in changed_files:
if doc_pattern.search(p): if doc_pattern.search(p):