summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitmodules2
m---------extmod/ulab0
m---------frozen/Adafruit_CircuitPython_BLE0
m---------frozen/Adafruit_CircuitPython_DRV26050
m---------frozen/Adafruit_CircuitPython_DS32310
m---------frozen/Adafruit_CircuitPython_ESP32SPI0
m---------frozen/Adafruit_CircuitPython_LIS3DH0
m---------frozen/Adafruit_CircuitPython_LSM6DS0
m---------frozen/Adafruit_CircuitPython_Motor0
m---------frozen/Adafruit_CircuitPython_RFM9x0
m---------frozen/Adafruit_CircuitPython_Register0
m---------frozen/Adafruit_CircuitPython_Requests0
m---------frozen/Adafruit_CircuitPython_seesaw0
-rw-r--r--locale/ID.po161
-rw-r--r--locale/circuitpython.pot69
-rw-r--r--locale/cs.po84
-rw-r--r--locale/de_DE.po91
-rw-r--r--locale/el.po77
-rw-r--r--locale/es.po102
-rw-r--r--locale/fil.po77
-rw-r--r--locale/fr.po515
-rw-r--r--locale/hi.po77
-rw-r--r--locale/it_IT.po77
-rw-r--r--locale/ja.po92
-rw-r--r--locale/ko.po84
-rw-r--r--locale/nl.po220
-rw-r--r--locale/pl.po92
-rw-r--r--locale/pt_BR.po119
-rw-r--r--locale/sv.po110
-rw-r--r--locale/zh_Latn_pinyin.po92
-rwxr-xr-xmain.c29
-rw-r--r--ports/atmel-samd/boards/8086_commander/mpconfigboard.mk1
-rw-r--r--ports/atmel-samd/boards/feather_m0_express_crickit/mpconfigboard.mk1
-rw-r--r--ports/atmel-samd/boards/feather_m0_rfm69/mpconfigboard.mk1
-rw-r--r--ports/atmel-samd/boards/feather_m0_rfm9x/mpconfigboard.mk1
-rw-r--r--ports/atmel-samd/boards/hallowing_m0_express/mpconfigboard.mk1
-rw-r--r--ports/atmel-samd/boards/mini_sam_m4/mpconfigboard.mk3
-rw-r--r--ports/atmel-samd/boards/pycubed/mpconfigboard.mk1
-rw-r--r--ports/atmel-samd/boards/pycubed_mram/mpconfigboard.mk1
-rw-r--r--ports/atmel-samd/boards/sam32/mpconfigboard.mk1
-rw-r--r--ports/atmel-samd/boards/xinabox_cc03/mpconfigboard.mk1
-rw-r--r--ports/atmel-samd/boards/xinabox_cs11/mpconfigboard.mk1
-rw-r--r--ports/atmel-samd/common-hal/microcontroller/Pin.c3
-rw-r--r--ports/esp32s2/Makefile9
-rw-r--r--ports/esp32s2/README.md2
-rw-r--r--ports/esp32s2/boards/unexpectedmaker_feathers2/mpconfigboard.h1
-rw-r--r--ports/esp32s2/boards/unexpectedmaker_feathers2/pins.c22
-rw-r--r--ports/esp32s2/boards/unexpectedmaker_feathers2_prerelease/mpconfigboard.h10
-rw-r--r--ports/esp32s2/boards/unexpectedmaker_feathers2_prerelease/pins.c24
-rw-r--r--ports/esp32s2/common-hal/alarm/__init__.c84
-rw-r--r--ports/esp32s2/common-hal/alarm/pin/PinAlarm.c270
-rw-r--r--ports/esp32s2/common-hal/alarm/pin/PinAlarm.h10
-rw-r--r--ports/esp32s2/common-hal/alarm/time/TimeAlarm.c35
-rw-r--r--ports/esp32s2/common-hal/alarm/time/TimeAlarm.h4
-rw-r--r--ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c153
-rw-r--r--ports/esp32s2/common-hal/alarm/touch/TouchAlarm.h46
-rw-r--r--ports/esp32s2/common-hal/analogio/AnalogIn.h2
-rw-r--r--ports/esp32s2/common-hal/busio/I2C.h2
-rw-r--r--ports/esp32s2/common-hal/busio/SPI.c13
-rw-r--r--ports/esp32s2/common-hal/busio/SPI.h4
-rw-r--r--ports/esp32s2/common-hal/busio/UART.h2
-rw-r--r--ports/esp32s2/common-hal/digitalio/DigitalInOut.c2
-rw-r--r--ports/esp32s2/common-hal/dualbank/__init__.c2
-rw-r--r--ports/esp32s2/common-hal/microcontroller/Pin.c5
-rw-r--r--ports/esp32s2/common-hal/touchio/TouchIn.c28
-rw-r--r--ports/esp32s2/common-hal/touchio/TouchIn.h5
-rw-r--r--ports/esp32s2/common-hal/wifi/Network.c6
-rw-r--r--ports/esp32s2/common-hal/wifi/Radio.c11
m---------ports/esp32s2/esp-idf0
-rw-r--r--ports/esp32s2/peripherals/pins.h8
-rw-r--r--ports/esp32s2/peripherals/touch.c53
-rw-r--r--ports/esp32s2/peripherals/touch.h36
-rw-r--r--ports/esp32s2/supervisor/esp_port.h2
-rw-r--r--ports/esp32s2/supervisor/port.c71
-rw-r--r--ports/esp32s2/supervisor/usb.c35
-rw-r--r--ports/litex/boards/fomu/fomu-spi.ld5
-rw-r--r--ports/litex/common-hal/microcontroller/Pin.c3
-rw-r--r--ports/litex/common-hal/microcontroller/__init__.c7
-rw-r--r--ports/litex/mphalport.c15
-rw-r--r--ports/litex/supervisor/port.c6
-rw-r--r--ports/mimxrt10xx/common-hal/busio/SPI.c9
-rw-r--r--ports/mimxrt10xx/common-hal/busio/UART.c10
-rw-r--r--ports/mimxrt10xx/common-hal/microcontroller/Pin.c3
-rw-r--r--ports/nrf/common-hal/microcontroller/Pin.c3
-rw-r--r--ports/stm/common-hal/microcontroller/Pin.c3
-rw-r--r--ports/unix/mphalport.h2
-rw-r--r--ports/unix/unix_mphal.c4
-rw-r--r--py/circuitpy_defns.mk1
-rw-r--r--py/obj.c8
-rw-r--r--py/vm.c2
-rw-r--r--shared-bindings/_pixelbuf/PixelBuf.c2
-rw-r--r--shared-bindings/alarm/__init__.c42
-rw-r--r--shared-bindings/alarm/__init__.h7
-rw-r--r--shared-bindings/alarm/pin/PinAlarm.c50
-rw-r--r--shared-bindings/alarm/pin/PinAlarm.h18
-rw-r--r--shared-bindings/alarm/time/TimeAlarm.c32
-rw-r--r--shared-bindings/alarm/time/TimeAlarm.h12
-rw-r--r--shared-bindings/alarm/touch/TouchAlarm.c91
-rw-r--r--shared-bindings/alarm/touch/TouchAlarm.h40
-rw-r--r--shared-bindings/wifi/Network.c17
-rw-r--r--shared-bindings/wifi/Network.h1
-rw-r--r--shared-bindings/wifi/Radio.c2
-rw-r--r--shared-module/displayio/FourWire.c4
-rw-r--r--supervisor/shared/tick.c8
104 files changed, 2691 insertions, 859 deletions
diff --git a/.gitmodules b/.gitmodules
index d36613d60..b74cd0b30 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -152,7 +152,7 @@
url = https://github.com/adafruit/Adafruit_CircuitPython_RFM69.git
[submodule "ports/esp32s2/esp-idf"]
path = ports/esp32s2/esp-idf
- url = https://github.com/jepler/esp-idf.git
+ url = https://github.com/adafruit/esp-idf.git
[submodule "ports/esp32s2/certificates/nina-fw"]
path = ports/esp32s2/certificates/nina-fw
url = https://github.com/adafruit/nina-fw.git
diff --git a/extmod/ulab b/extmod/ulab
-Subproject aa7e741530df471d206a4a321823a37a913a0eb
+Subproject c4b06e419f3d515478b05bb8ce03ebdb29cddec
diff --git a/frozen/Adafruit_CircuitPython_BLE b/frozen/Adafruit_CircuitPython_BLE
-Subproject 41f7a3530d4cacdbf668399d3a015ea29c7e169
+Subproject 8bb1210eebed4846dae7e76ff1db86a010b132b
diff --git a/frozen/Adafruit_CircuitPython_DRV2605 b/frozen/Adafruit_CircuitPython_DRV2605
-Subproject 209edd164eb640a8ced561a54505792fc99a67b
+Subproject ce30b04a3c8e557d48a0607ddcb25272b196a43
diff --git a/frozen/Adafruit_CircuitPython_DS3231 b/frozen/Adafruit_CircuitPython_DS3231
-Subproject 5d81a9ea822a85e46be4a512ac44abf21e77d81
+Subproject 4f5dc66d50e43ca8d413ab0d86c125a7a13d394
diff --git a/frozen/Adafruit_CircuitPython_ESP32SPI b/frozen/Adafruit_CircuitPython_ESP32SPI
-Subproject 01f3f6674b4493ba29b857e0f43deb69975736e
+Subproject fce466bd2bb70ca86b79e5cb36bbaca00afacfd
diff --git a/frozen/Adafruit_CircuitPython_LIS3DH b/frozen/Adafruit_CircuitPython_LIS3DH
-Subproject 9fe8f314c032cee89b9ad7697d61e9cba76431f
+Subproject bea5d4a347aeece71a421ee292551264e3bf7ae
diff --git a/frozen/Adafruit_CircuitPython_LSM6DS b/frozen/Adafruit_CircuitPython_LSM6DS
-Subproject f1cc47f024b27e670b9bf2a51c89e32f93c1b95
+Subproject fee951908cc5f1ba7db5edd2537fade09d62673
diff --git a/frozen/Adafruit_CircuitPython_Motor b/frozen/Adafruit_CircuitPython_Motor
-Subproject 434e5b5346cb0a1a9eb15989b00278be87cb2ff
+Subproject 608291801ce7112b280d32518de79993cc80963
diff --git a/frozen/Adafruit_CircuitPython_RFM9x b/frozen/Adafruit_CircuitPython_RFM9x
-Subproject cfffc233784961929d722ea4e9acfe578679060
+Subproject 4696e07638eff28392b57162d2a70e20473e97b
diff --git a/frozen/Adafruit_CircuitPython_Register b/frozen/Adafruit_CircuitPython_Register
-Subproject 6143ec2a96a6d218041e9cab5968de26702d7bb
+Subproject dd7cc167c528a94a9feed81f9c52b5d372f6825
diff --git a/frozen/Adafruit_CircuitPython_Requests b/frozen/Adafruit_CircuitPython_Requests
-Subproject 53902152c674b0ba31536b50291f7ddd28960f4
+Subproject c070f6e8dbc37757cbcb444269c6cd6a4b67664
diff --git a/frozen/Adafruit_CircuitPython_seesaw b/frozen/Adafruit_CircuitPython_seesaw
-Subproject 88738da275a83acabb14b7140d1c79b33cdc7b0
+Subproject 9d91ec849efb5fbc3d26d350a75a61f15d19bc4
diff --git a/locale/ID.po b/locale/ID.po
index dd9693f53..ca26f01bd 100644
--- a/locale/ID.po
+++ b/locale/ID.po
@@ -5,8 +5,8 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-12-14 12:59-0500\n"
-"PO-Revision-Date: 2020-10-10 23:51+0000\n"
+"POT-Creation-Date: 2020-12-22 22:54+0530\n"
+"PO-Revision-Date: 2020-12-30 22:25+0000\n"
"Last-Translator: oon arfiandwi <oon.arfiandwi@gmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: ID\n"
@@ -14,15 +14,21 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Weblate 4.3-dev\n"
+"X-Generator: Weblate 4.4.1-dev\n"
#: main.c
msgid ""
"\n"
-"Code done running. Waiting for reload.\n"
+"Code done running.\n"
msgstr ""
"\n"
-"Kode selesai berjalan. Menunggu memuat ulang.\n"
+"Kode selesai beroperasi.\n"
+
+#: main.c
+msgid ""
+"\n"
+"Code stopped by auto-reload.\n"
+msgstr ""
#: supervisor/shared/safe_mode.c
msgid ""
@@ -58,7 +64,7 @@ msgstr "pin alamat %d dan pin rgb %d menunjukkan tinggi %d, bukan %d"
#: ports/atmel-samd/common-hal/sdioio/SDCard.c
msgid "%q failure: %d"
-msgstr ""
+msgstr "%q gagal: %d"
#: shared-bindings/microcontroller/Pin.c
msgid "%q in use"
@@ -74,7 +80,7 @@ msgstr "%q indeks di luar batas"
#: py/obj.c
msgid "%q indices must be integers, not %q"
-msgstr ""
+msgstr "%q indeks harus bilangan bulat, bukan %q"
#: shared-bindings/vectorio/Polygon.c
msgid "%q list must be a list"
@@ -82,7 +88,7 @@ msgstr "daftar %q harus berupa daftar"
#: shared-bindings/memorymonitor/AllocationAlarm.c
msgid "%q must be >= 0"
-msgstr ""
+msgstr "%q harus >= 0"
#: shared-bindings/_bleio/CharacteristicBuffer.c
#: shared-bindings/_bleio/PacketBuffer.c shared-bindings/displayio/Group.c
@@ -98,7 +104,7 @@ msgstr "%q harus berupa tuple dengan panjang 2"
#: shared-bindings/canio/Match.c
msgid "%q out of range"
-msgstr ""
+msgstr "%q di luar jangkauan"
#: ports/atmel-samd/common-hal/microcontroller/Pin.c
msgid "%q pin invalid"
@@ -122,23 +128,23 @@ msgstr ""
#: py/proto.c
msgid "'%q' object does not support '%q'"
-msgstr ""
+msgstr "Objek '%q' tidak mendukung '%q'"
#: py/obj.c
msgid "'%q' object does not support item assignment"
-msgstr ""
+msgstr "Objek '%q' tidak mendukung penugasan item"
#: py/obj.c
msgid "'%q' object does not support item deletion"
-msgstr ""
+msgstr "Objek '%q' tidak mendukung penghapusan item"
#: py/runtime.c
msgid "'%q' object has no attribute '%q'"
-msgstr ""
+msgstr "Objek '%q' tidak memiliki atribut '%q'"
#: py/runtime.c
msgid "'%q' object is not an iterator"
-msgstr ""
+msgstr "Objek '%q' bukan merupakan iterator"
#: py/objtype.c py/runtime.c
msgid "'%q' object is not callable"
@@ -146,7 +152,7 @@ msgstr ""
#: py/runtime.c
msgid "'%q' object is not iterable"
-msgstr ""
+msgstr "Objek '%q' tidak dapat diulang"
#: py/obj.c
msgid "'%q' object is not subscriptable"
@@ -220,7 +226,7 @@ msgstr "'await' diluar fungsi"
#: py/compile.c
msgid "'await', 'async for' or 'async with' outside async function"
-msgstr ""
+msgstr "'await', 'async for' atau 'async with' di luar fungsi async"
#: py/compile.c
msgid "'break' outside loop"
@@ -252,7 +258,7 @@ msgstr "'return' diluar fungsi"
#: py/compile.c
msgid "'yield from' inside async function"
-msgstr ""
+msgstr "'yield from' di dalam fungsi async"
#: py/compile.c
msgid "'yield' outside function"
@@ -281,7 +287,7 @@ msgstr "Sebuah channel hardware interrupt sedang digunakan"
#: ports/esp32s2/common-hal/analogio/AnalogIn.c
msgid "ADC2 is being used by WiFi"
-msgstr ""
+msgstr "ADC2 sedang digunakan oleh WiFi"
#: shared-bindings/_bleio/Address.c shared-bindings/ipaddress/IPv4Address.c
#, c-format
@@ -304,13 +310,13 @@ msgstr "Semua perangkat I2C sedang digunakan"
#: ports/esp32s2/common-hal/frequencyio/FrequencyIn.c
#: ports/esp32s2/common-hal/rotaryio/IncrementalEncoder.c
msgid "All PCNT units in use"
-msgstr ""
+msgstr "Semua unit PCNT sedang digunakan"
#: ports/atmel-samd/common-hal/canio/Listener.c
#: ports/esp32s2/common-hal/canio/Listener.c
#: ports/stm/common-hal/canio/Listener.c
msgid "All RX FIFOs in use"
-msgstr ""
+msgstr "Semua RX FIFO sedang digunakan"
#: ports/esp32s2/common-hal/busio/SPI.c ports/nrf/common-hal/busio/SPI.c
msgid "All SPI peripherals are in use"
@@ -540,6 +546,18 @@ msgstr "Blok CBC harus merupakan kelipatan 16 byte"
msgid "Call super().__init__() before accessing native object."
msgstr "Panggil super().__init__() sebelum mengakses objek asli."
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Can only alarm on RTC IO from deep sleep."
+msgstr ""
+
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Can only alarm on one low pin while others alarm high from deep sleep."
+msgstr ""
+
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Can only alarm on two low pins from deep sleep."
+msgstr ""
+
#: ports/nrf/common-hal/_bleio/Characteristic.c
msgid "Can't set CCCD on local Characteristic"
msgstr "Tidak dapat mengatur CCCD pada Karakteristik lokal"
@@ -576,6 +594,10 @@ msgstr ""
"Tidak dapat menggunakan output di kedua channel dengan menggunakan pin yang "
"sama"
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Cannot pull on input-only pin."
+msgstr ""
+
#: shared-module/bitbangio/SPI.c
msgid "Cannot read without MISO pin."
msgstr "Tidak dapat membaca tanpa pin MISO."
@@ -623,6 +645,10 @@ msgstr ""
"Tidak dapat membuat variasi frekuensi pada penghitung waktu yang sudah "
"digunakan"
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Cannot wake on pin edge. Only level."
+msgstr ""
+
#: shared-module/bitbangio/SPI.c
msgid "Cannot write without MOSI pin."
msgstr "Tidak dapat menulis tanpa pin MOSI."
@@ -954,6 +980,10 @@ msgstr "File sudah ada"
msgid "Filters too complex"
msgstr ""
+#: ports/esp32s2/common-hal/dualbank/__init__.c
+msgid "Firmware image is invalid"
+msgstr ""
+
#: ports/cxd56/common-hal/camera/Camera.c
msgid "Format not supported"
msgstr ""
@@ -963,11 +993,6 @@ msgstr ""
msgid "Framebuffer requires %d bytes"
msgstr ""
-#: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c
-msgid "Frequency captured is above capability. Capture Paused."
-msgstr ""
-"Frekuensi yang ditangkap berada di atas kemampuan. Penangkapan Ditunda."
-
#: ports/stm/common-hal/pwmio/PWMOut.c
msgid "Frequency must match existing PWMOut using this timer"
msgstr "Frekuensi harus cocok dengan PWMOut yang ada menggunakan timer ini"
@@ -1165,6 +1190,7 @@ msgstr "Fase tidak valid"
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
#: ports/atmel-samd/common-hal/touchio/TouchIn.c
+#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
#: ports/esp32s2/common-hal/touchio/TouchIn.c shared-bindings/pwmio/PWMOut.c
#: shared-module/rgbmatrix/RGBMatrix.c
msgid "Invalid pin"
@@ -1485,10 +1511,14 @@ msgstr ""
"Hanya monokrom, 4bpp atau 8bpp yang diindeks, dan 16bpp atau lebih yang "
"didukung: %d bpp diberikan"
-#: ports/esp32s2/common-hal/alarm/__init__.c
+#: ports/esp32s2/common-hal/alarm/time/TimeAlarm.c
msgid "Only one alarm.time alarm can be set."
msgstr ""
+#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
+msgid "Only one alarm.touch alarm can be set."
+msgstr ""
+
#: shared-module/displayio/ColorConverter.c
msgid "Only one color can be transparent at a time"
msgstr ""
@@ -1549,10 +1579,6 @@ msgstr "Pin harus mendukung interupsi perangkat keras"
msgid "Pin number already reserved by EXTI"
msgstr "Nomor pin sudah dipesan oleh EXTI"
-#: ports/esp32s2/common-hal/alarm/__init__.c
-msgid "PinAlarm not yet implemented"
-msgstr ""
-
#: shared-bindings/rgbmatrix/RGBMatrix.c
#, c-format
msgid ""
@@ -1596,7 +1622,7 @@ msgid "Press any key to enter the REPL. Use CTRL-D to reload.\n"
msgstr ""
#: main.c
-msgid "Pretending to deep sleep until alarm, any key or file write.\n"
+msgid "Pretending to deep sleep until alarm, CTRL-C or file write.\n"
msgstr ""
#: shared-bindings/digitalio/DigitalInOut.c
@@ -1806,18 +1832,21 @@ msgid ""
"enough power for the whole circuit and press reset (after ejecting "
"CIRCUITPY).\n"
msgstr ""
+"Kekuatan mikrokontroler menurun. Pastikan catu daya Anda menyediakan\n"
+"daya yang cukup untuk seluruh rangkaian dan tekan reset (setelah "
+"mengeluarkan CIRCUITPY).\n"
#: shared-module/audiomixer/MixerVoice.c
msgid "The sample's bits_per_sample does not match the mixer's"
-msgstr ""
+msgstr "Sampel bits_per_sampel tidak cocok dengan mixer"
#: shared-module/audiomixer/MixerVoice.c
msgid "The sample's channel count does not match the mixer's"
-msgstr ""
+msgstr "Jumlah saluran sampel tidak cocok dengan mixer"
#: shared-module/audiomixer/MixerVoice.c
msgid "The sample's sample rate does not match the mixer's"
-msgstr ""
+msgstr "Tingkat sampel dari sampel tidak cocok dengan mixer"
#: shared-module/audiomixer/MixerVoice.c
msgid "The sample's signedness does not match the mixer's"
@@ -1829,15 +1858,15 @@ msgstr ""
#: shared-bindings/displayio/TileGrid.c shared-module/displayio/TileGrid.c
msgid "Tile index out of bounds"
-msgstr ""
+msgstr "Indeks ubin di luar batas"
#: shared-bindings/displayio/TileGrid.c
msgid "Tile value out of bounds"
-msgstr ""
+msgstr "Nilai ubin di luar batas"
#: shared-bindings/displayio/TileGrid.c
msgid "Tile width must exactly divide bitmap width"
-msgstr ""
+msgstr "Lebar ubin harus persis membagi lebar bitmap"
#: shared-bindings/alarm/time/TimeAlarm.c
msgid "Time is in the past."
@@ -1863,15 +1892,20 @@ msgstr "Terlalu banyak channel dalam sampel"
#: shared-module/displayio/__init__.c
msgid "Too many display busses"
-msgstr ""
+msgstr "Terlalu banyak tampilan bus"
#: shared-module/displayio/__init__.c
msgid "Too many displays"
-msgstr ""
+msgstr "Terlalu banyak tampilan"
#: ports/nrf/common-hal/_bleio/PacketBuffer.c
msgid "Total data to write is larger than outgoing_packet_length"
msgstr ""
+"Total data yang akan ditulis lebih besar daripada outgoing_packet_length"
+
+#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
+msgid "TouchAlarm not available in light sleep"
+msgstr ""
#: py/obj.c
msgid "Traceback (most recent call last):\n"
@@ -1879,35 +1913,35 @@ msgstr ""
#: shared-bindings/time/__init__.c
msgid "Tuple or struct_time argument required"
-msgstr ""
+msgstr "Diperlukan argumen Tuple atau struct_time"
#: ports/stm/common-hal/busio/UART.c
msgid "UART Buffer allocation error"
-msgstr ""
+msgstr "Kesalahan alokasi Buffer UART"
#: ports/stm/common-hal/busio/UART.c
msgid "UART De-init error"
-msgstr ""
+msgstr "Kesalahan UART De-init"
#: ports/stm/common-hal/busio/UART.c
msgid "UART Init Error"
-msgstr ""
+msgstr "Kesalahan Init UART"
#: ports/stm/common-hal/busio/UART.c
msgid "UART Re-init error"
-msgstr ""
+msgstr "Kesalahan Re-init UART"
#: ports/stm/common-hal/busio/UART.c
msgid "UART write error"
-msgstr ""
+msgstr "Kesalahan penulisan UART"
#: shared-module/usb_hid/Device.c
msgid "USB Busy"
-msgstr ""
+msgstr "USB Sibuk"
#: shared-module/usb_hid/Device.c
msgid "USB Error"
-msgstr ""
+msgstr "Kesalahan USB"
#: shared-bindings/_bleio/UUID.c
msgid "UUID integer value must be 0-0xffff"
@@ -2021,6 +2055,10 @@ msgstr ""
msgid "Unsupported pull value."
msgstr ""
+#: ports/esp32s2/common-hal/dualbank/__init__.c
+msgid "Update Failed"
+msgstr ""
+
#: ports/nrf/common-hal/_bleio/Characteristic.c
#: ports/nrf/common-hal/_bleio/Descriptor.c
msgid "Value length != required fixed length"
@@ -3046,7 +3084,7 @@ msgid "max_length must be 0-%d when fixed_length is %s"
msgstr ""
#: shared-bindings/_bleio/Characteristic.c shared-bindings/_bleio/Descriptor.c
-msgid "max_length must be > 0"
+msgid "max_length must be >= 0"
msgstr ""
#: extmod/ulab/code/ndarray.c
@@ -3184,6 +3222,14 @@ msgstr "non-keyword arg setelah */**"
msgid "non-keyword arg after keyword arg"
msgstr "non-keyword arg setelah keyword arg"
+#: ports/nrf/common-hal/_bleio/Adapter.c
+msgid "non-zero timeout must be > 0.01"
+msgstr ""
+
+#: shared-bindings/_bleio/Adapter.c
+msgid "non-zero timeout must be >= interval"
+msgstr ""
+
#: extmod/ulab/code/linalg/linalg.c
msgid "norm is defined for 1D and 2D arrays"
msgstr ""
@@ -3256,6 +3302,10 @@ msgstr "panjang data string memiliki keganjilan (odd-length)"
msgid "offset is too large"
msgstr ""
+#: shared-bindings/dualbank/__init__.c
+msgid "offset must be >= 0"
+msgstr ""
+
#: py/objstr.c py/objstrunicode.c
#, fuzzy
msgid "offset out of bounds"
@@ -3602,6 +3652,10 @@ msgstr ""
msgid "timeout must be 0.0-100.0 seconds"
msgstr ""
+#: ports/nrf/common-hal/_bleio/Adapter.c
+msgid "timeout must be < 655.35 secs"
+msgstr ""
+
#: shared-bindings/_bleio/CharacteristicBuffer.c
#, fuzzy
msgid "timeout must be >= 0.0"
@@ -3862,6 +3916,17 @@ msgstr ""
msgid "zi must be of shape (n_section, 2)"
msgstr ""
+#~ msgid ""
+#~ "\n"
+#~ "Code done running. Waiting for reload.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Kode selesai berjalan. Menunggu memuat ulang.\n"
+
+#~ msgid "Frequency captured is above capability. Capture Paused."
+#~ msgstr ""
+#~ "Frekuensi yang ditangkap berada di atas kemampuan. Penangkapan Ditunda."
+
#~ msgid "Press any key to enter the REPL. Use CTRL-D to reload."
#~ msgstr ""
#~ "Tekan tombol apa saja untuk masuk ke dalam REPL. Gunakan CTRL+D untuk "
diff --git a/locale/circuitpython.pot b/locale/circuitpython.pot
index 4a25ec485..f319b82f8 100644
--- a/locale/circuitpython.pot
+++ b/locale/circuitpython.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-12-23 16:41-0500\n"
+"POT-Creation-Date: 2021-01-04 12:55-0600\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -20,7 +20,13 @@ msgstr ""
#: main.c
msgid ""
"\n"
-"Code done running. Waiting for reload.\n"
+"Code done running.\n"
+msgstr ""
+
+#: main.c
+msgid ""
+"\n"
+"Code stopped by auto-reload.\n"
msgstr ""
#: supervisor/shared/safe_mode.c
@@ -534,6 +540,18 @@ msgstr ""
msgid "Call super().__init__() before accessing native object."
msgstr ""
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Can only alarm on RTC IO from deep sleep."
+msgstr ""
+
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Can only alarm on one low pin while others alarm high from deep sleep."
+msgstr ""
+
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Can only alarm on two low pins from deep sleep."
+msgstr ""
+
#: ports/nrf/common-hal/_bleio/Characteristic.c
msgid "Can't set CCCD on local Characteristic"
msgstr ""
@@ -566,6 +584,10 @@ msgstr ""
msgid "Cannot output both channels on the same pin"
msgstr ""
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Cannot pull on input-only pin."
+msgstr ""
+
#: shared-module/bitbangio/SPI.c
msgid "Cannot read without MISO pin."
msgstr ""
@@ -609,6 +631,10 @@ msgstr ""
msgid "Cannot vary frequency on a timer that is already in use"
msgstr ""
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Cannot wake on pin edge. Only level."
+msgstr ""
+
#: shared-module/bitbangio/SPI.c
msgid "Cannot write without MOSI pin."
msgstr ""
@@ -1144,6 +1170,7 @@ msgstr ""
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
#: ports/atmel-samd/common-hal/touchio/TouchIn.c
+#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
#: ports/esp32s2/common-hal/touchio/TouchIn.c shared-bindings/pwmio/PWMOut.c
#: shared-module/rgbmatrix/RGBMatrix.c
msgid "Invalid pin"
@@ -1458,10 +1485,14 @@ msgid ""
"%d bpp given"
msgstr ""
-#: ports/esp32s2/common-hal/alarm/__init__.c
+#: ports/esp32s2/common-hal/alarm/time/TimeAlarm.c
msgid "Only one alarm.time alarm can be set."
msgstr ""
+#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
+msgid "Only one alarm.touch alarm can be set."
+msgstr ""
+
#: shared-module/displayio/ColorConverter.c
msgid "Only one color can be transparent at a time"
msgstr ""
@@ -1520,10 +1551,6 @@ msgstr ""
msgid "Pin number already reserved by EXTI"
msgstr ""
-#: ports/esp32s2/common-hal/alarm/__init__.c
-msgid "PinAlarm not yet implemented"
-msgstr ""
-
#: shared-bindings/rgbmatrix/RGBMatrix.c
#, c-format
msgid ""
@@ -1564,7 +1591,7 @@ msgid "Press any key to enter the REPL. Use CTRL-D to reload.\n"
msgstr ""
#: main.c
-msgid "Pretending to deep sleep until alarm, any key or file write.\n"
+msgid "Pretending to deep sleep until alarm, CTRL-C or file write.\n"
msgstr ""
#: shared-bindings/digitalio/DigitalInOut.c
@@ -2471,6 +2498,10 @@ msgstr ""
msgid "data must be of equal length"
msgstr ""
+#: extmod/ulab/code/ndarray.c
+msgid "data type not understood"
+msgstr ""
+
#: py/parsenum.c
msgid "decimal numbers not supported"
msgstr ""
@@ -2781,7 +2812,7 @@ msgid "input and output shapes are not compatible"
msgstr ""
#: extmod/ulab/code/ulab_create.c
-msgid "input argument must be an integer or a 2-tuple"
+msgid "input argument must be an integer, a tuple, or a list"
msgstr ""
#: extmod/ulab/code/fft/fft.c
@@ -3024,6 +3055,10 @@ msgstr ""
msgid "maxiter should be > 0"
msgstr ""
+#: extmod/ulab/code/numerical/numerical.c
+msgid "median argument must be an ndarray"
+msgstr ""
+
#: py/runtime.c
#, c-format
msgid "memory allocation failed, allocating %u bytes"
@@ -3254,10 +3289,6 @@ msgid "operation is implemented for 1D Boolean arrays only"
msgstr ""
#: extmod/ulab/code/numerical/numerical.c
-msgid "operation is not implemented for flattened array"
-msgstr ""
-
-#: extmod/ulab/code/numerical/numerical.c
msgid "operation is not implemented on ndarrays"
msgstr ""
@@ -3600,6 +3631,10 @@ msgstr ""
msgid "too many arguments provided with the given format"
msgstr ""
+#: extmod/ulab/code/ulab_create.c
+msgid "too many dimensions"
+msgstr ""
+
#: extmod/ulab/code/ndarray.c
msgid "too many indices"
msgstr ""
@@ -3610,6 +3645,10 @@ msgid "too many values to unpack (expected %d)"
msgstr ""
#: extmod/ulab/code/approx/approx.c
+msgid "trapz is defined for 1D arrays"
+msgstr ""
+
+#: extmod/ulab/code/approx/approx.c
msgid "trapz is defined for 1D arrays of equal length"
msgstr ""
@@ -3617,10 +3656,6 @@ msgstr ""
msgid "trigger level must be 0 or 1"
msgstr ""
-#: extmod/ulab/code/linalg/linalg.c
-msgid "tuple index out of range"
-msgstr ""
-
#: py/obj.c
msgid "tuple/list has wrong length"
msgstr ""
diff --git a/locale/cs.po b/locale/cs.po
index e178a3fd5..88380fbea 100644
--- a/locale/cs.po
+++ b/locale/cs.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-12-14 12:59-0500\n"
+"POT-Creation-Date: 2020-12-22 22:54+0530\n"
"PO-Revision-Date: 2020-12-04 18:33+0000\n"
"Last-Translator: vkuthan <vit.kuthan@seznam.cz>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -19,10 +19,14 @@ msgstr ""
#: main.c
msgid ""
"\n"
-"Code done running. Waiting for reload.\n"
+"Code done running.\n"
msgstr ""
+
+#: main.c
+msgid ""
"\n"
-"Kód byl dokončen. Čekám na opětovné nahrání.\n"
+"Code stopped by auto-reload.\n"
+msgstr ""
#: supervisor/shared/safe_mode.c
msgid ""
@@ -538,6 +542,18 @@ msgstr ""
msgid "Call super().__init__() before accessing native object."
msgstr ""
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Can only alarm on RTC IO from deep sleep."
+msgstr ""
+
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Can only alarm on one low pin while others alarm high from deep sleep."
+msgstr ""
+
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Can only alarm on two low pins from deep sleep."
+msgstr ""
+
#: ports/nrf/common-hal/_bleio/Characteristic.c
msgid "Can't set CCCD on local Characteristic"
msgstr ""
@@ -570,6 +586,10 @@ msgstr ""
msgid "Cannot output both channels on the same pin"
msgstr ""
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Cannot pull on input-only pin."
+msgstr ""
+
#: shared-module/bitbangio/SPI.c
msgid "Cannot read without MISO pin."
msgstr ""
@@ -613,6 +633,10 @@ msgstr ""
msgid "Cannot vary frequency on a timer that is already in use"
msgstr ""
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Cannot wake on pin edge. Only level."
+msgstr ""
+
#: shared-module/bitbangio/SPI.c
msgid "Cannot write without MOSI pin."
msgstr ""
@@ -940,6 +964,10 @@ msgstr ""
msgid "Filters too complex"
msgstr ""
+#: ports/esp32s2/common-hal/dualbank/__init__.c
+msgid "Firmware image is invalid"
+msgstr ""
+
#: ports/cxd56/common-hal/camera/Camera.c
msgid "Format not supported"
msgstr ""
@@ -949,10 +977,6 @@ msgstr ""
msgid "Framebuffer requires %d bytes"
msgstr ""
-#: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c
-msgid "Frequency captured is above capability. Capture Paused."
-msgstr ""
-
#: ports/stm/common-hal/pwmio/PWMOut.c
msgid "Frequency must match existing PWMOut using this timer"
msgstr ""
@@ -1148,6 +1172,7 @@ msgstr ""
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
#: ports/atmel-samd/common-hal/touchio/TouchIn.c
+#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
#: ports/esp32s2/common-hal/touchio/TouchIn.c shared-bindings/pwmio/PWMOut.c
#: shared-module/rgbmatrix/RGBMatrix.c
msgid "Invalid pin"
@@ -1462,10 +1487,14 @@ msgid ""
"%d bpp given"
msgstr ""
-#: ports/esp32s2/common-hal/alarm/__init__.c
+#: ports/esp32s2/common-hal/alarm/time/TimeAlarm.c
msgid "Only one alarm.time alarm can be set."
msgstr ""
+#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
+msgid "Only one alarm.touch alarm can be set."
+msgstr ""
+
#: shared-module/displayio/ColorConverter.c
msgid "Only one color can be transparent at a time"
msgstr ""
@@ -1524,10 +1553,6 @@ msgstr ""
msgid "Pin number already reserved by EXTI"
msgstr ""
-#: ports/esp32s2/common-hal/alarm/__init__.c
-msgid "PinAlarm not yet implemented"
-msgstr ""
-
#: shared-bindings/rgbmatrix/RGBMatrix.c
#, c-format
msgid ""
@@ -1568,7 +1593,7 @@ msgid "Press any key to enter the REPL. Use CTRL-D to reload.\n"
msgstr ""
#: main.c
-msgid "Pretending to deep sleep until alarm, any key or file write.\n"
+msgid "Pretending to deep sleep until alarm, CTRL-C or file write.\n"
msgstr ""
#: shared-bindings/digitalio/DigitalInOut.c
@@ -1840,6 +1865,10 @@ msgstr ""
msgid "Total data to write is larger than outgoing_packet_length"
msgstr ""
+#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
+msgid "TouchAlarm not available in light sleep"
+msgstr ""
+
#: py/obj.c
msgid "Traceback (most recent call last):\n"
msgstr ""
@@ -1987,6 +2016,10 @@ msgstr ""
msgid "Unsupported pull value."
msgstr ""
+#: ports/esp32s2/common-hal/dualbank/__init__.c
+msgid "Update Failed"
+msgstr ""
+
#: ports/nrf/common-hal/_bleio/Characteristic.c
#: ports/nrf/common-hal/_bleio/Descriptor.c
msgid "Value length != required fixed length"
@@ -3005,7 +3038,7 @@ msgid "max_length must be 0-%d when fixed_length is %s"
msgstr ""
#: shared-bindings/_bleio/Characteristic.c shared-bindings/_bleio/Descriptor.c
-msgid "max_length must be > 0"
+msgid "max_length must be >= 0"
msgstr ""
#: extmod/ulab/code/ndarray.c
@@ -3143,6 +3176,14 @@ msgstr ""
msgid "non-keyword arg after keyword arg"
msgstr ""
+#: ports/nrf/common-hal/_bleio/Adapter.c
+msgid "non-zero timeout must be > 0.01"
+msgstr ""
+
+#: shared-bindings/_bleio/Adapter.c
+msgid "non-zero timeout must be >= interval"
+msgstr ""
+
#: extmod/ulab/code/linalg/linalg.c
msgid "norm is defined for 1D and 2D arrays"
msgstr ""
@@ -3215,6 +3256,10 @@ msgstr ""
msgid "offset is too large"
msgstr ""
+#: shared-bindings/dualbank/__init__.c
+msgid "offset must be >= 0"
+msgstr ""
+
#: py/objstr.c py/objstrunicode.c
msgid "offset out of bounds"
msgstr ""
@@ -3560,6 +3605,10 @@ msgstr ""
msgid "timeout must be 0.0-100.0 seconds"
msgstr ""
+#: ports/nrf/common-hal/_bleio/Adapter.c
+msgid "timeout must be < 655.35 secs"
+msgstr ""
+
#: shared-bindings/_bleio/CharacteristicBuffer.c
msgid "timeout must be >= 0.0"
msgstr ""
@@ -3821,6 +3870,13 @@ msgstr ""
#~ msgid ""
#~ "\n"
+#~ "Code done running. Waiting for reload.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Kód byl dokončen. Čekám na opětovné nahrání.\n"
+
+#~ msgid ""
+#~ "\n"
#~ "To exit, please reset the board without "
#~ msgstr ""
#~ "\n"
diff --git a/locale/de_DE.po b/locale/de_DE.po
index 85b3b90a0..39e1071f9 100644
--- a/locale/de_DE.po
+++ b/locale/de_DE.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-12-14 12:59-0500\n"
+"POT-Creation-Date: 2020-12-22 22:54+0530\n"
"PO-Revision-Date: 2020-11-26 03:11+0000\n"
"Last-Translator: Daniel Bravo Darriba <bravodarriba@gmail.com>\n"
"Language: de_DE\n"
@@ -18,10 +18,14 @@ msgstr ""
#: main.c
msgid ""
"\n"
-"Code done running. Waiting for reload.\n"
+"Code done running.\n"
msgstr ""
+
+#: main.c
+msgid ""
"\n"
-"Der Code wurde ausgeführt. Warte auf reload.\n"
+"Code stopped by auto-reload.\n"
+msgstr ""
#: supervisor/shared/safe_mode.c
msgid ""
@@ -541,6 +545,18 @@ msgstr "CBC-Blöcke müssen ein Vielfaches von 16 Bytes sein"
msgid "Call super().__init__() before accessing native object."
msgstr "Rufe super().__init__() vor dem Zugriff auf ein natives Objekt auf."
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Can only alarm on RTC IO from deep sleep."
+msgstr ""
+
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Can only alarm on one low pin while others alarm high from deep sleep."
+msgstr ""
+
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Can only alarm on two low pins from deep sleep."
+msgstr ""
+
#: ports/nrf/common-hal/_bleio/Characteristic.c
msgid "Can't set CCCD on local Characteristic"
msgstr "CCCD kann nicht auf lokales Merkmal eingestellt werden"
@@ -574,6 +590,10 @@ msgstr ""
msgid "Cannot output both channels on the same pin"
msgstr "Kann nicht beite Kanäle auf dem gleichen Pin ausgeben"
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Cannot pull on input-only pin."
+msgstr ""
+
#: shared-module/bitbangio/SPI.c
msgid "Cannot read without MISO pin."
msgstr "Kann ohne MISO-Pin nicht lesen."
@@ -618,6 +638,10 @@ msgid "Cannot vary frequency on a timer that is already in use"
msgstr ""
"Die Frequenz eines bereits verwendeten Timers kann nicht variiert werden"
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Cannot wake on pin edge. Only level."
+msgstr ""
+
#: shared-module/bitbangio/SPI.c
msgid "Cannot write without MOSI pin."
msgstr "Kann nicht ohne MOSI-Pin schreiben."
@@ -951,6 +975,10 @@ msgstr "Datei existiert"
msgid "Filters too complex"
msgstr "Filter zu komplex"
+#: ports/esp32s2/common-hal/dualbank/__init__.c
+msgid "Firmware image is invalid"
+msgstr ""
+
#: ports/cxd56/common-hal/camera/Camera.c
msgid "Format not supported"
msgstr "Format nicht unterstützt"
@@ -960,12 +988,6 @@ msgstr "Format nicht unterstützt"
msgid "Framebuffer requires %d bytes"
msgstr "Framepuffer benötigt %d bytes"
-#: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c
-msgid "Frequency captured is above capability. Capture Paused."
-msgstr ""
-"Die aufgezeichnete Frequenz liegt über der Leistungsgrenze. Aufnahme "
-"angehalten."
-
#: ports/stm/common-hal/pwmio/PWMOut.c
msgid "Frequency must match existing PWMOut using this timer"
msgstr ""
@@ -1165,6 +1187,7 @@ msgstr "Ungültige Phase"
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
#: ports/atmel-samd/common-hal/touchio/TouchIn.c
+#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
#: ports/esp32s2/common-hal/touchio/TouchIn.c shared-bindings/pwmio/PWMOut.c
#: shared-module/rgbmatrix/RGBMatrix.c
msgid "Invalid pin"
@@ -1487,10 +1510,14 @@ msgstr ""
"Nur monochrome, indizierte 4bpp oder 8bpp, und 16bpp oder größere BMPs "
"unterstützt: %d bpp wurden gegeben"
-#: ports/esp32s2/common-hal/alarm/__init__.c
+#: ports/esp32s2/common-hal/alarm/time/TimeAlarm.c
msgid "Only one alarm.time alarm can be set."
msgstr ""
+#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
+msgid "Only one alarm.touch alarm can be set."
+msgstr ""
+
#: shared-module/displayio/ColorConverter.c
msgid "Only one color can be transparent at a time"
msgstr ""
@@ -1549,10 +1576,6 @@ msgstr "Pin muss Hardware-Interrupts unterstützen"
msgid "Pin number already reserved by EXTI"
msgstr "PIN-Nummer bereits von EXTI reserviert"
-#: ports/esp32s2/common-hal/alarm/__init__.c
-msgid "PinAlarm not yet implemented"
-msgstr ""
-
#: shared-bindings/rgbmatrix/RGBMatrix.c
#, c-format
msgid ""
@@ -1596,7 +1619,7 @@ msgid "Press any key to enter the REPL. Use CTRL-D to reload.\n"
msgstr ""
#: main.c
-msgid "Pretending to deep sleep until alarm, any key or file write.\n"
+msgid "Pretending to deep sleep until alarm, CTRL-C or file write.\n"
msgstr ""
#: shared-bindings/digitalio/DigitalInOut.c
@@ -1882,6 +1905,10 @@ msgstr ""
"Die Gesamtzahl der zu schreibenden Daten ist größer als "
"outgoing_packet_length"
+#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
+msgid "TouchAlarm not available in light sleep"
+msgstr ""
+
#: py/obj.c
msgid "Traceback (most recent call last):\n"
msgstr "Zurückverfolgung (jüngste Aufforderung zuletzt):\n"
@@ -2033,6 +2060,10 @@ msgstr "Nicht unterstützte Operation"
msgid "Unsupported pull value."
msgstr "Nicht unterstützter Pull-Wert."
+#: ports/esp32s2/common-hal/dualbank/__init__.c
+msgid "Update Failed"
+msgstr ""
+
#: ports/nrf/common-hal/_bleio/Characteristic.c
#: ports/nrf/common-hal/_bleio/Descriptor.c
msgid "Value length != required fixed length"
@@ -3081,7 +3112,7 @@ msgid "max_length must be 0-%d when fixed_length is %s"
msgstr "max_length muss 0-%d sein, wenn fixed_length %s ist"
#: shared-bindings/_bleio/Characteristic.c shared-bindings/_bleio/Descriptor.c
-msgid "max_length must be > 0"
+msgid "max_length must be >= 0"
msgstr ""
#: extmod/ulab/code/ndarray.c
@@ -3219,6 +3250,14 @@ msgstr "Nicht-Schlüsselwort arg nach * / **"
msgid "non-keyword arg after keyword arg"
msgstr "Nicht-Schlüsselwort Argument nach Schlüsselwort Argument"
+#: ports/nrf/common-hal/_bleio/Adapter.c
+msgid "non-zero timeout must be > 0.01"
+msgstr ""
+
+#: shared-bindings/_bleio/Adapter.c
+msgid "non-zero timeout must be >= interval"
+msgstr ""
+
#: extmod/ulab/code/linalg/linalg.c
msgid "norm is defined for 1D and 2D arrays"
msgstr ""
@@ -3292,6 +3331,10 @@ msgstr "String mit ungerader Länge"
msgid "offset is too large"
msgstr ""
+#: shared-bindings/dualbank/__init__.c
+msgid "offset must be >= 0"
+msgstr ""
+
#: py/objstr.c py/objstrunicode.c
msgid "offset out of bounds"
msgstr "offset außerhalb der Grenzen"
@@ -3643,6 +3686,10 @@ msgstr "Das Zeitlimit hat den maximal zulässigen Wert überschritten"
msgid "timeout must be 0.0-100.0 seconds"
msgstr "Das Zeitlimit muss 0,0-100,0 Sekunden betragen"
+#: ports/nrf/common-hal/_bleio/Adapter.c
+msgid "timeout must be < 655.35 secs"
+msgstr ""
+
#: shared-bindings/_bleio/CharacteristicBuffer.c
msgid "timeout must be >= 0.0"
msgstr "timeout muss >= 0.0 sein"
@@ -3906,6 +3953,18 @@ msgstr ""
msgid "zi must be of shape (n_section, 2)"
msgstr ""
+#~ msgid ""
+#~ "\n"
+#~ "Code done running. Waiting for reload.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Der Code wurde ausgeführt. Warte auf reload.\n"
+
+#~ msgid "Frequency captured is above capability. Capture Paused."
+#~ msgstr ""
+#~ "Die aufgezeichnete Frequenz liegt über der Leistungsgrenze. Aufnahme "
+#~ "angehalten."
+
#~ msgid "Press any key to enter the REPL. Use CTRL-D to reload."
#~ msgstr ""
#~ "Drücke eine Taste um dich mit der REPL zu verbinden. Drücke Strg-D zum "
diff --git a/locale/el.po b/locale/el.po
index 1a835fd42..21a0942a6 100644
--- a/locale/el.po
+++ b/locale/el.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-12-14 12:59-0500\n"
+"POT-Creation-Date: 2020-12-22 22:54+0530\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
@@ -19,7 +19,13 @@ msgstr ""
#: main.c
msgid ""
"\n"
-"Code done running. Waiting for reload.\n"
+"Code done running.\n"
+msgstr ""
+
+#: main.c
+msgid ""
+"\n"
+"Code stopped by auto-reload.\n"
msgstr ""
#: supervisor/shared/safe_mode.c
@@ -533,6 +539,18 @@ msgstr ""
msgid "Call super().__init__() before accessing native object."
msgstr ""
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Can only alarm on RTC IO from deep sleep."
+msgstr ""
+
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Can only alarm on one low pin while others alarm high from deep sleep."
+msgstr ""
+
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Can only alarm on two low pins from deep sleep."
+msgstr ""
+
#: ports/nrf/common-hal/_bleio/Characteristic.c
msgid "Can't set CCCD on local Characteristic"
msgstr ""
@@ -565,6 +583,10 @@ msgstr ""
msgid "Cannot output both channels on the same pin"
msgstr ""
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Cannot pull on input-only pin."
+msgstr ""
+
#: shared-module/bitbangio/SPI.c
msgid "Cannot read without MISO pin."
msgstr ""
@@ -608,6 +630,10 @@ msgstr ""
msgid "Cannot vary frequency on a timer that is already in use"
msgstr ""
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Cannot wake on pin edge. Only level."
+msgstr ""
+
#: shared-module/bitbangio/SPI.c
msgid "Cannot write without MOSI pin."
msgstr ""
@@ -935,6 +961,10 @@ msgstr ""
msgid "Filters too complex"
msgstr ""
+#: ports/esp32s2/common-hal/dualbank/__init__.c
+msgid "Firmware image is invalid"
+msgstr ""
+
#: ports/cxd56/common-hal/camera/Camera.c
msgid "Format not supported"
msgstr ""
@@ -944,10 +974,6 @@ msgstr ""
msgid "Framebuffer requires %d bytes"
msgstr ""
-#: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c
-msgid "Frequency captured is above capability. Capture Paused."
-msgstr ""
-
#: ports/stm/common-hal/pwmio/PWMOut.c
msgid "Frequency must match existing PWMOut using this timer"
msgstr ""
@@ -1143,6 +1169,7 @@ msgstr ""
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
#: ports/atmel-samd/common-hal/touchio/TouchIn.c
+#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
#: ports/esp32s2/common-hal/touchio/TouchIn.c shared-bindings/pwmio/PWMOut.c
#: shared-module/rgbmatrix/RGBMatrix.c
msgid "Invalid pin"
@@ -1457,10 +1484,14 @@ msgid ""
"%d bpp given"
msgstr ""
-#: ports/esp32s2/common-hal/alarm/__init__.c
+#: ports/esp32s2/common-hal/alarm/time/TimeAlarm.c
msgid "Only one alarm.time alarm can be set."
msgstr ""
+#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
+msgid "Only one alarm.touch alarm can be set."
+msgstr ""
+
#: shared-module/displayio/ColorConverter.c
msgid "Only one color can be transparent at a time"
msgstr ""
@@ -1519,10 +1550,6 @@ msgstr ""
msgid "Pin number already reserved by EXTI"
msgstr ""
-#: ports/esp32s2/common-hal/alarm/__init__.c
-msgid "PinAlarm not yet implemented"
-msgstr ""
-
#: shared-bindings/rgbmatrix/RGBMatrix.c
#, c-format
msgid ""
@@ -1563,7 +1590,7 @@ msgid "Press any key to enter the REPL. Use CTRL-D to reload.\n"
msgstr ""
#: main.c
-msgid "Pretending to deep sleep until alarm, any key or file write.\n"
+msgid "Pretending to deep sleep until alarm, CTRL-C or file write.\n"
msgstr ""
#: shared-bindings/digitalio/DigitalInOut.c
@@ -1835,6 +1862,10 @@ msgstr ""
msgid "Total data to write is larger than outgoing_packet_length"
msgstr ""
+#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
+msgid "TouchAlarm not available in light sleep"
+msgstr ""
+
#: py/obj.c
msgid "Traceback (most recent call last):\n"
msgstr ""
@@ -1982,6 +2013,10 @@ msgstr ""
msgid "Unsupported pull value."
msgstr ""
+#: ports/esp32s2/common-hal/dualbank/__init__.c
+msgid "Update Failed"
+msgstr ""
+
#: ports/nrf/common-hal/_bleio/Characteristic.c
#: ports/nrf/common-hal/_bleio/Descriptor.c
msgid "Value length != required fixed length"
@@ -3000,7 +3035,7 @@ msgid "max_length must be 0-%d when fixed_length is %s"
msgstr ""
#: shared-bindings/_bleio/Characteristic.c shared-bindings/_bleio/Descriptor.c
-msgid "max_length must be > 0"
+msgid "max_length must be >= 0"
msgstr ""
#: extmod/ulab/code/ndarray.c
@@ -3138,6 +3173,14 @@ msgstr ""
msgid "non-keyword arg after keyword arg"
msgstr ""
+#: ports/nrf/common-hal/_bleio/Adapter.c
+msgid "non-zero timeout must be > 0.01"
+msgstr ""
+
+#: shared-bindings/_bleio/Adapter.c
+msgid "non-zero timeout must be >= interval"
+msgstr ""
+
#: extmod/ulab/code/linalg/linalg.c
msgid "norm is defined for 1D and 2D arrays"
msgstr ""
@@ -3210,6 +3253,10 @@ msgstr ""
msgid "offset is too large"
msgstr ""
+#: shared-bindings/dualbank/__init__.c
+msgid "offset must be >= 0"
+msgstr ""
+
#: py/objstr.c py/objstrunicode.c
msgid "offset out of bounds"
msgstr ""
@@ -3555,6 +3602,10 @@ msgstr ""
msgid "timeout must be 0.0-100.0 seconds"
msgstr ""
+#: ports/nrf/common-hal/_bleio/Adapter.c
+msgid "timeout must be < 655.35 secs"
+msgstr ""
+
#: shared-bindings/_bleio/CharacteristicBuffer.c
msgid "timeout must be >= 0.0"
msgstr ""
diff --git a/locale/es.po b/locale/es.po
index 27b175657..bac7d2840 100644
--- a/locale/es.po
+++ b/locale/es.po
@@ -7,24 +7,28 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-12-14 12:59-0500\n"
-"PO-Revision-Date: 2020-11-27 18:34+0000\n"
-"Last-Translator: Iván Montiel Cardona <ivan_montiel2013@hotmail.com>\n"
+"POT-Creation-Date: 2020-12-22 22:54+0530\n"
+"PO-Revision-Date: 2020-12-30 22:25+0000\n"
+"Last-Translator: Hugo Dahl <hugo@code-jedi.com>\n"
"Language-Team: \n"
"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.4-dev\n"
+"X-Generator: Weblate 4.4.1-dev\n"
#: main.c
msgid ""
"\n"
-"Code done running. Waiting for reload.\n"
+"Code done running.\n"
msgstr ""
+
+#: main.c
+msgid ""
"\n"
-"El código terminó su ejecución. Esperando para recargar.\n"
+"Code stopped by auto-reload.\n"
+msgstr ""
#: supervisor/shared/safe_mode.c
msgid ""
@@ -547,6 +551,18 @@ msgstr "Los bloques CBC deben ser múltiplos de 16 bytes"
msgid "Call super().__init__() before accessing native object."
msgstr "Llame a super().__ init __() antes de acceder al objeto nativo."
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Can only alarm on RTC IO from deep sleep."
+msgstr ""
+
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Can only alarm on one low pin while others alarm high from deep sleep."
+msgstr ""
+
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Can only alarm on two low pins from deep sleep."
+msgstr ""
+
#: ports/nrf/common-hal/_bleio/Characteristic.c
msgid "Can't set CCCD on local Characteristic"
msgstr "No se puede configurar CCCD en la característica local"
@@ -581,6 +597,10 @@ msgstr ""
msgid "Cannot output both channels on the same pin"
msgstr "No se puede tener ambos canales en el mismo pin"
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Cannot pull on input-only pin."
+msgstr ""
+
#: shared-module/bitbangio/SPI.c
msgid "Cannot read without MISO pin."
msgstr "No se puede leer sin pin MISO."
@@ -624,6 +644,10 @@ msgstr "No se puede obtener inequívocamente sizeof escalar"
msgid "Cannot vary frequency on a timer that is already in use"
msgstr "No puede variar la frecuencia en un temporizador que ya está en uso"
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Cannot wake on pin edge. Only level."
+msgstr ""
+
#: shared-module/bitbangio/SPI.c
msgid "Cannot write without MOSI pin."
msgstr "No se puede escribir sin pin MOSI."
@@ -955,6 +979,10 @@ msgstr "El archivo ya existe"
msgid "Filters too complex"
msgstr "Filtros muy complejos"
+#: ports/esp32s2/common-hal/dualbank/__init__.c
+msgid "Firmware image is invalid"
+msgstr ""
+
#: ports/cxd56/common-hal/camera/Camera.c
msgid "Format not supported"
msgstr "Sin capacidades para el formato"
@@ -964,10 +992,6 @@ msgstr "Sin capacidades para el formato"
msgid "Framebuffer requires %d bytes"
msgstr "Framebuffer requiere %d bytes"
-#: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c
-msgid "Frequency captured is above capability. Capture Paused."
-msgstr "Frecuencia capturada por encima de la capacidad. Captura en pausa."
-
#: ports/stm/common-hal/pwmio/PWMOut.c
msgid "Frequency must match existing PWMOut using this timer"
msgstr ""
@@ -1166,6 +1190,7 @@ msgstr "Fase inválida"
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
#: ports/atmel-samd/common-hal/touchio/TouchIn.c
+#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
#: ports/esp32s2/common-hal/touchio/TouchIn.c shared-bindings/pwmio/PWMOut.c
#: shared-module/rgbmatrix/RGBMatrix.c
msgid "Invalid pin"
@@ -1212,7 +1237,7 @@ msgstr "Modo de ejecución inválido."
#: shared-module/_bleio/Attribute.c
msgid "Invalid security_mode"
-msgstr "Modo de seguridad no válido"
+msgstr "'security_mode' no válido"
#: shared-bindings/audiomixer/Mixer.c
msgid "Invalid voice"
@@ -1252,7 +1277,7 @@ msgstr "Length debe ser un int"
#: py/objslice.c
msgid "Length must be non-negative"
-msgstr "Longitud no deberia ser negativa"
+msgstr "Length no deberia ser negativa"
#: shared-module/bitbangio/SPI.c
msgid "MISO pin init failed."
@@ -1486,10 +1511,14 @@ msgstr ""
"Solo se admiten BMP monocromáticos, indexados de 4 bpp u 8 bpp y 16 bpp o "
"más: %d bpp proporcionados"
-#: ports/esp32s2/common-hal/alarm/__init__.c
+#: ports/esp32s2/common-hal/alarm/time/TimeAlarm.c
msgid "Only one alarm.time alarm can be set."
msgstr ""
+#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
+msgid "Only one alarm.touch alarm can be set."
+msgstr ""
+
#: shared-module/displayio/ColorConverter.c
msgid "Only one color can be transparent at a time"
msgstr "Solo un color puede ser transparente a la vez"
@@ -1550,10 +1579,6 @@ msgstr "El pin debe admitir interrupciones de hardware"
msgid "Pin number already reserved by EXTI"
msgstr "Número de pin ya reservado por EXTI"
-#: ports/esp32s2/common-hal/alarm/__init__.c
-msgid "PinAlarm not yet implemented"
-msgstr ""
-
#: shared-bindings/rgbmatrix/RGBMatrix.c
#, c-format
msgid ""
@@ -1601,7 +1626,7 @@ msgid "Press any key to enter the REPL. Use CTRL-D to reload.\n"
msgstr ""
#: main.c
-msgid "Pretending to deep sleep until alarm, any key or file write.\n"
+msgid "Pretending to deep sleep until alarm, CTRL-C or file write.\n"
msgstr ""
#: shared-bindings/digitalio/DigitalInOut.c
@@ -1887,6 +1912,10 @@ msgid "Total data to write is larger than outgoing_packet_length"
msgstr ""
"Los datos totales a escribir son más grandes que outgoing_packet_length"
+#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
+msgid "TouchAlarm not available in light sleep"
+msgstr ""
+
#: py/obj.c
msgid "Traceback (most recent call last):\n"
msgstr "Traceback (ultima llamada reciente):\n"
@@ -2036,6 +2065,10 @@ msgstr "Operación no soportada"
msgid "Unsupported pull value."
msgstr "valor pull no soportado."
+#: ports/esp32s2/common-hal/dualbank/__init__.c
+msgid "Update Failed"
+msgstr ""
+
#: ports/nrf/common-hal/_bleio/Characteristic.c
#: ports/nrf/common-hal/_bleio/Descriptor.c
msgid "Value length != required fixed length"
@@ -3073,8 +3106,8 @@ msgid "max_length must be 0-%d when fixed_length is %s"
msgstr "max_length debe ser 0-%d cuando fixed_length es %s"
#: shared-bindings/_bleio/Characteristic.c shared-bindings/_bleio/Descriptor.c
-msgid "max_length must be > 0"
-msgstr "max_lenght debe ser > 0"
+msgid "max_length must be >= 0"
+msgstr ""
#: extmod/ulab/code/ndarray.c
msgid "maximum number of dimensions is 4"
@@ -3213,6 +3246,14 @@ msgstr ""
"no deberia estar/tener agumento por palabra clave despues de argumento por "
"palabra clave"
+#: ports/nrf/common-hal/_bleio/Adapter.c
+msgid "non-zero timeout must be > 0.01"
+msgstr ""
+
+#: shared-bindings/_bleio/Adapter.c
+msgid "non-zero timeout must be >= interval"
+msgstr ""
+
#: extmod/ulab/code/linalg/linalg.c
msgid "norm is defined for 1D and 2D arrays"
msgstr "norma está definida para arrays 1D y 2D"
@@ -3286,6 +3327,10 @@ msgstr "string de longitud impar"
msgid "offset is too large"
msgstr "offset es demasiado grande"
+#: shared-bindings/dualbank/__init__.c
+msgid "offset must be >= 0"
+msgstr ""
+
#: py/objstr.c py/objstrunicode.c
msgid "offset out of bounds"
msgstr "offset fuera de límites"
@@ -3634,6 +3679,10 @@ msgstr ""
msgid "timeout must be 0.0-100.0 seconds"
msgstr "el tiempo de espera debe ser 0.0-100.0 segundos"
+#: ports/nrf/common-hal/_bleio/Adapter.c
+msgid "timeout must be < 655.35 secs"
+msgstr ""
+
#: shared-bindings/_bleio/CharacteristicBuffer.c
msgid "timeout must be >= 0.0"
msgstr "tiempo muerto debe ser >= 0.0"
@@ -3893,6 +3942,19 @@ msgstr "zi debe ser de tipo flotante"
msgid "zi must be of shape (n_section, 2)"
msgstr "zi debe ser una forma (n_section,2)"
+#~ msgid ""
+#~ "\n"
+#~ "Code done running. Waiting for reload.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "El código terminó su ejecución. Esperando para recargar.\n"
+
+#~ msgid "Frequency captured is above capability. Capture Paused."
+#~ msgstr "Frecuencia capturada por encima de la capacidad. Captura en pausa."
+
+#~ msgid "max_length must be > 0"
+#~ msgstr "max_lenght debe ser > 0"
+
#~ msgid "Press any key to enter the REPL. Use CTRL-D to reload."
#~ msgstr ""
#~ "Presiona cualquier tecla para entrar al REPL. Usa CTRL-D para recargar."
diff --git a/locale/fil.po b/locale/fil.po
index e55fc5e2c..86386cf1f 100644
--- a/locale/fil.po
+++ b/locale/fil.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-12-14 12:59-0500\n"
+"POT-Creation-Date: 2020-12-22 22:54+0530\n"
"PO-Revision-Date: 2018-12-20 22:15-0800\n"
"Last-Translator: Timothy <me@timothygarcia.ca>\n"
"Language-Team: fil\n"
@@ -18,7 +18,13 @@ msgstr ""
#: main.c
msgid ""
"\n"
-"Code done running. Waiting for reload.\n"
+"Code done running.\n"
+msgstr ""
+
+#: main.c
+msgid ""
+"\n"
+"Code stopped by auto-reload.\n"
msgstr ""
#: supervisor/shared/safe_mode.c
@@ -539,6 +545,18 @@ msgstr ""
msgid "Call super().__init__() before accessing native object."
msgstr ""
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Can only alarm on RTC IO from deep sleep."
+msgstr ""
+
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Can only alarm on one low pin while others alarm high from deep sleep."
+msgstr ""
+
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Can only alarm on two low pins from deep sleep."
+msgstr ""
+
#: ports/nrf/common-hal/_bleio/Characteristic.c
msgid "Can't set CCCD on local Characteristic"
msgstr ""
@@ -572,6 +590,10 @@ msgstr ""
msgid "Cannot output both channels on the same pin"
msgstr "Hindi maaaring output ang mga parehong channel sa parehong pin"
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Cannot pull on input-only pin."
+msgstr ""
+
#: shared-module/bitbangio/SPI.c
msgid "Cannot read without MISO pin."
msgstr "Hindi maaring mabasa kapag walang MISO pin."
@@ -615,6 +637,10 @@ msgstr "Hindi puedeng hindi sigurado ang get sizeof scalar"
msgid "Cannot vary frequency on a timer that is already in use"
msgstr ""
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Cannot wake on pin edge. Only level."
+msgstr ""
+
#: shared-module/bitbangio/SPI.c
msgid "Cannot write without MOSI pin."
msgstr "Hindi maaring isulat kapag walang MOSI pin."
@@ -948,6 +974,10 @@ msgstr "Mayroong file"
msgid "Filters too complex"
msgstr ""
+#: ports/esp32s2/common-hal/dualbank/__init__.c
+msgid "Firmware image is invalid"
+msgstr ""
+
#: ports/cxd56/common-hal/camera/Camera.c
msgid "Format not supported"
msgstr ""
@@ -957,10 +987,6 @@ msgstr ""
msgid "Framebuffer requires %d bytes"
msgstr ""
-#: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c
-msgid "Frequency captured is above capability. Capture Paused."
-msgstr ""
-
#: ports/stm/common-hal/pwmio/PWMOut.c
msgid "Frequency must match existing PWMOut using this timer"
msgstr ""
@@ -1158,6 +1184,7 @@ msgstr "Mali ang phase"
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
#: ports/atmel-samd/common-hal/touchio/TouchIn.c
+#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
#: ports/esp32s2/common-hal/touchio/TouchIn.c shared-bindings/pwmio/PWMOut.c
#: shared-module/rgbmatrix/RGBMatrix.c
msgid "Invalid pin"
@@ -1475,10 +1502,14 @@ msgid ""
"%d bpp given"
msgstr ""
-#: ports/esp32s2/common-hal/alarm/__init__.c
+#: ports/esp32s2/common-hal/alarm/time/TimeAlarm.c
msgid "Only one alarm.time alarm can be set."
msgstr ""
+#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
+msgid "Only one alarm.touch alarm can be set."
+msgstr ""
+
#: shared-module/displayio/ColorConverter.c
msgid "Only one color can be transparent at a time"
msgstr ""
@@ -1538,10 +1569,6 @@ msgstr ""
msgid "Pin number already reserved by EXTI"
msgstr ""
-#: ports/esp32s2/common-hal/alarm/__init__.c
-msgid "PinAlarm not yet implemented"
-msgstr ""
-
#: shared-bindings/rgbmatrix/RGBMatrix.c
#, c-format
msgid ""
@@ -1582,7 +1609,7 @@ msgid "Press any key to enter the REPL. Use CTRL-D to reload.\n"
msgstr ""
#: main.c
-msgid "Pretending to deep sleep until alarm, any key or file write.\n"
+msgid "Pretending to deep sleep until alarm, CTRL-C or file write.\n"
msgstr ""
#: shared-bindings/digitalio/DigitalInOut.c
@@ -1855,6 +1882,10 @@ msgstr ""
msgid "Total data to write is larger than outgoing_packet_length"
msgstr ""
+#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
+msgid "TouchAlarm not available in light sleep"
+msgstr ""
+
#: py/obj.c
msgid "Traceback (most recent call last):\n"
msgstr "Traceback (pinakahuling huling tawag): \n"
@@ -2004,6 +2035,10 @@ msgstr "Hindi sinusuportahang operasyon"
msgid "Unsupported pull value."
msgstr "Hindi suportado ang pull value."
+#: ports/esp32s2/common-hal/dualbank/__init__.c
+msgid "Update Failed"
+msgstr ""
+
#: ports/nrf/common-hal/_bleio/Characteristic.c
#: ports/nrf/common-hal/_bleio/Descriptor.c
msgid "Value length != required fixed length"
@@ -3047,7 +3082,7 @@ msgid "max_length must be 0-%d when fixed_length is %s"
msgstr ""
#: shared-bindings/_bleio/Characteristic.c shared-bindings/_bleio/Descriptor.c
-msgid "max_length must be > 0"
+msgid "max_length must be >= 0"
msgstr ""
#: extmod/ulab/code/ndarray.c
@@ -3185,6 +3220,14 @@ msgstr "non-keyword arg sa huli ng */**"
msgid "non-keyword arg after keyword arg"
msgstr "non-keyword arg sa huli ng keyword arg"
+#: ports/nrf/common-hal/_bleio/Adapter.c
+msgid "non-zero timeout must be > 0.01"
+msgstr ""
+
+#: shared-bindings/_bleio/Adapter.c
+msgid "non-zero timeout must be >= interval"
+msgstr ""
+
#: extmod/ulab/code/linalg/linalg.c
msgid "norm is defined for 1D and 2D arrays"
msgstr ""
@@ -3257,6 +3300,10 @@ msgstr "odd-length string"
msgid "offset is too large"
msgstr ""
+#: shared-bindings/dualbank/__init__.c
+msgid "offset must be >= 0"
+msgstr ""
+
#: py/objstr.c py/objstrunicode.c
#, fuzzy
msgid "offset out of bounds"
@@ -3607,6 +3654,10 @@ msgstr ""
msgid "timeout must be 0.0-100.0 seconds"
msgstr ""
+#: ports/nrf/common-hal/_bleio/Adapter.c
+msgid "timeout must be < 655.35 secs"
+msgstr ""
+
#: shared-bindings/_bleio/CharacteristicBuffer.c
#, fuzzy
msgid "timeout must be >= 0.0"
diff --git a/locale/fr.po b/locale/fr.po
index eef313273..c25da7888 100644
--- a/locale/fr.po
+++ b/locale/fr.po
@@ -7,23 +7,31 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.1\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-12-14 12:59-0500\n"
-"PO-Revision-Date: 2020-12-08 19:21+0000\n"
-"Last-Translator: Antonin ENFRUN <antonin.e@me.com>\n"
+"POT-Creation-Date: 2020-12-22 22:54+0530\n"
+"PO-Revision-Date: 2021-01-01 04:29+0000\n"
+"Last-Translator: Hugo Dahl <hugo@code-jedi.com>\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
-"X-Generator: Weblate 4.4-dev\n"
+"X-Generator: Weblate 4.4.1-dev\n"
#: main.c
msgid ""
"\n"
-"Code done running. Waiting for reload.\n"
+"Code done running.\n"
msgstr ""
"\n"
-"Fin d'exécution du code. En attente de rechargement.\n"
+"Exécution du code complété.\n"
+
+#: main.c
+msgid ""
+"\n"
+"Code stopped by auto-reload.\n"
+msgstr ""
+"\n"
+"Exécution du code arrêté par l'auto-rechargement.\n"
#: supervisor/shared/safe_mode.c
msgid ""
@@ -51,7 +59,7 @@ msgstr " sortie :\n"
#: py/objstr.c
#, c-format
msgid "%%c requires int or char"
-msgstr "%%c nécessite un entier 'int' ou un caractère 'char'"
+msgstr "%%c nécessite un chiffre entier 'int' ou un caractère 'char'"
#: shared-bindings/rgbmatrix/RGBMatrix.c
#, c-format
@@ -66,7 +74,7 @@ msgstr "Échec de %q : %d"
#: shared-bindings/microcontroller/Pin.c
msgid "%q in use"
-msgstr "%q utilisé"
+msgstr "%q en cours d'utilisation"
#: extmod/moductypes.c ports/atmel-samd/common-hal/pulseio/PulseIn.c
#: ports/cxd56/common-hal/pulseio/PulseIn.c
@@ -74,7 +82,7 @@ msgstr "%q utilisé"
#: ports/stm/common-hal/pulseio/PulseIn.c py/obj.c py/objstr.c
#: py/objstrunicode.c
msgid "%q index out of range"
-msgstr "index %q hors gamme"
+msgstr "index %q hors de portée"
#: py/obj.c
msgid "%q indices must be integers, not %q"
@@ -94,7 +102,7 @@ msgstr "%q doit être >= 0"
#: shared-bindings/memorymonitor/AllocationAlarm.c
#: shared-bindings/vectorio/Circle.c shared-bindings/vectorio/Rectangle.c
msgid "%q must be >= 1"
-msgstr "%q doit être >=1"
+msgstr "%q doit être >= 1"
#: shared-module/vectorio/Polygon.c
msgid "%q must be a tuple of length 2"
@@ -106,19 +114,19 @@ msgstr "%q est hors de porté"
#: ports/atmel-samd/common-hal/microcontroller/Pin.c
msgid "%q pin invalid"
-msgstr "PIN %q invalide"
+msgstr "broche %q invalide"
#: shared-bindings/fontio/BuiltinFont.c
msgid "%q should be an int"
-msgstr "%q doit être un entier (int)"
+msgstr "%q doit être un chiffre entier (int)"
#: py/bc.c py/objnamedtuple.c
msgid "%q() takes %d positional arguments but %d were given"
-msgstr "%q() prend %d arguments positionnels mais %d ont été donnés"
+msgstr "%q() prend %d paramètres positionnels mais %d ont été donnés"
#: py/argcheck.c
msgid "'%q' argument required"
-msgstr "'%q' argument requis"
+msgstr "paramètre '%q' requis"
#: py/runtime.c
msgid "'%q' object cannot assign attribute '%q'"
@@ -159,7 +167,7 @@ msgstr "l'objet '%q' n'est pas souscriptable"
#: py/emitinlinethumb.c py/emitinlinextensa.c
#, c-format
msgid "'%s' expects a label"
-msgstr "'%s' attend un label"
+msgstr "'%s' attend une étiquette"
#: py/emitinlinethumb.c py/emitinlinextensa.c
#, c-format
@@ -184,12 +192,12 @@ msgstr "'%s' attend une adresse de la forme [a, b]"
#: py/emitinlinethumb.c py/emitinlinextensa.c
#, c-format
msgid "'%s' expects an integer"
-msgstr "'%s' attend un entier"
+msgstr "'%s' attend un chiffre entier"
#: py/emitinlinethumb.c
#, c-format
msgid "'%s' expects at most r%d"
-msgstr "'%s' s'attend au plus à r%d"
+msgstr "'%s' attend au plus r%d"
#: py/emitinlinethumb.c
#, c-format
@@ -199,16 +207,16 @@ msgstr "'%s' attend {r0, r1, ...}"
#: py/emitinlinextensa.c
#, c-format
msgid "'%s' integer %d is not within range %d..%d"
-msgstr "'%s' l'entier %d n'est pas dans la gamme %d..%d"
+msgstr "'%s' le chiffre entier %d n'est pas dans la portée %d..%d"
#: py/emitinlinethumb.c
#, c-format
msgid "'%s' integer 0x%x does not fit in mask 0x%x"
-msgstr "'%s' l'entier 0x%x ne correspond pas au masque 0x%x"
+msgstr "'%s' le chiffre entier 0x%x ne correspond pas au masque 0x%x"
#: py/objstr.c
msgid "'=' alignment not allowed in string format specifier"
-msgstr "'=' alignement non autorisé dans la spéc. de format de chaîne"
+msgstr "'=' alignement non permis dans la spécification du format de chaîne"
#: shared-module/struct/__init__.c
msgid "'S' and 'O' are not supported format types"
@@ -216,43 +224,43 @@ msgstr "'S' et 'O' ne sont pas des types de format supportés"
#: py/compile.c
msgid "'align' requires 1 argument"
-msgstr "'align' nécessite 1 argument"
+msgstr "'align' nécessite 1 paramètre"
#: py/compile.c
msgid "'await' outside function"
-msgstr "'await' en dehors d'une fonction"
+msgstr "'await' dehors d'une fonction"
#: py/compile.c
msgid "'await', 'async for' or 'async with' outside async function"
-msgstr "'await', 'async for' ou 'async with' au dehors d'une fonction async"
+msgstr "'await', 'async for' ou 'async with' dehors d'une fonction async"
#: py/compile.c
msgid "'break' outside loop"
-msgstr "'break' en dehors d'une boucle"
+msgstr "'break' dehors d'une boucle"
#: py/compile.c
msgid "'continue' outside loop"
-msgstr "'continue' en dehors d'une boucle"
+msgstr "'continue' dehors d'une boucle"
#: py/objgenerator.c
msgid "'coroutine' object is not an iterator"
-msgstr "L'objet « coroutine » n'est pas un itérateur"
+msgstr "L'objet \"coroutine\" n'est pas un itérateur"
#: py/compile.c
msgid "'data' requires at least 2 arguments"
-msgstr "'data' nécessite au moins 2 arguments"
+msgstr "'data' nécessite au moins 2 paramètres"
#: py/compile.c
msgid "'data' requires integer arguments"
-msgstr "'data' nécessite des arguments entiers"
+msgstr "'data' nécessite des paramètre de chiffres entiers"
#: py/compile.c
msgid "'label' requires 1 argument"
-msgstr "'label' nécessite 1 argument"
+msgstr "'label' nécessite 1 paramètre"
#: py/compile.c
msgid "'return' outside function"
-msgstr "'return' en dehors d'une fonction"
+msgstr "'return' dehors d'une fonction"
#: py/compile.c
msgid "'yield from' inside async function"
@@ -260,7 +268,7 @@ msgstr "'yield from' dans une fonction async"
#: py/compile.c
msgid "'yield' outside function"
-msgstr "'yield' en dehors d'une fonction"
+msgstr "'yield' dehors d'une fonction"
#: py/compile.c
msgid "*x must be assignment target"
@@ -276,12 +284,12 @@ msgstr "0.0 à une puissance complexe"
#: py/modbuiltins.c
msgid "3-arg pow() not supported"
-msgstr "pow() non supporté avec 3 arguments"
+msgstr "pow() non supporté avec 3 paramètres"
#: ports/atmel-samd/common-hal/countio/Counter.c
#: ports/atmel-samd/common-hal/rotaryio/IncrementalEncoder.c
msgid "A hardware interrupt channel is already in use"
-msgstr "Un canal d'interruptions matérielles est déjà utilisé"
+msgstr "Un canal d'interruptions matériel est déjà utilisé"
#: ports/esp32s2/common-hal/analogio/AnalogIn.c
msgid "ADC2 is being used by WiFi"
@@ -294,7 +302,7 @@ msgstr "L'adresse doit être longue de %d octets"
#: shared-bindings/_bleio/Address.c
msgid "Address type out of range"
-msgstr "Type d'adresse hors plage"
+msgstr "Type d'adresse hors portée"
#: ports/esp32s2/common-hal/canio/CAN.c
msgid "All CAN peripherals are in use"
@@ -330,11 +338,11 @@ msgstr "Tous les canaux d'événements sont utilisés"
#: ports/atmel-samd/audio_dma.c ports/atmel-samd/common-hal/audiobusio/PDMIn.c
msgid "All sync event channels in use"
-msgstr "Tous les canaux d'événements de synchro sont utilisés"
+msgstr "Tous les canaux d'événements sync (sync event channels) sont utilisés"
#: shared-bindings/pwmio/PWMOut.c
msgid "All timers for this pin are in use"
-msgstr "Tous les timers pour cette broche sont utilisés"
+msgstr "Tous les minuteurs pour cette broche sont utilisés"
#: ports/atmel-samd/common-hal/_pew/PewPew.c
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
@@ -350,7 +358,7 @@ msgstr "Tous les timers pour cette broche sont utilisés"
#: ports/nrf/common-hal/pulseio/PulseIn.c ports/nrf/peripherals/nrf/timers.c
#: ports/stm/peripherals/timers.c shared-bindings/pwmio/PWMOut.c
msgid "All timers in use"
-msgstr "Tous les timers sont utilisés"
+msgstr "Tous les minuteurs sont utilisés"
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Already advertising."
@@ -382,7 +390,8 @@ msgstr "Fonctionnalité AnalogOut non supportée"
#: shared-bindings/analogio/AnalogOut.c
msgid "AnalogOut is only 16 bits. Value must be less than 65536."
msgstr ""
-"AnalogOut est seulement 16 bits. Les valeurs doivent être inf. à 65536."
+"AnalogOut est seulement 16 bits. Les valeurs doivent être inférieures à "
+"65536."
#: ports/atmel-samd/common-hal/analogio/AnalogOut.c
msgid "AnalogOut not supported on given pin"
@@ -399,7 +408,7 @@ msgstr "Le tableau doit contenir des demi-mots (type 'H')"
#: shared-bindings/alarm/SleepMemory.c shared-bindings/nvm/ByteArray.c
msgid "Array values should be single bytes."
-msgstr "Les valeurs du tableau doivent être des octets simples 'bytes'."
+msgstr "Les valeurs du tableau doivent être des octets singuliers."
#: shared-bindings/microcontroller/Pin.c
msgid "At most %d %q may be specified (not %d)"
@@ -429,17 +438,17 @@ msgid ""
"Auto-reload is on. Simply save files over USB to run them or enter REPL to "
"disable.\n"
msgstr ""
-"Auto-chargement activé. Copiez simplement les fichiers en USB pour les "
-"lancer ou entrez sur REPL pour le désactiver.\n"
+"Auto-chargement activé. Copiez ou sauvegardez les fichiers via USB pour les "
+"lancer ou démarrez le REPL pour le désactiver.\n"
#: ports/esp32s2/common-hal/canio/CAN.c
msgid "Baudrate not supported by peripheral"
-msgstr "Baudrate non prise en charge par le périphérique"
+msgstr "Baudrate non supporté par le périphérique"
#: shared-module/displayio/Display.c
#: shared-module/framebufferio/FramebufferDisplay.c
msgid "Below minimum frame rate"
-msgstr "Inférieur à la fréquence d'images minimale"
+msgstr "Au-dessous de la fréquence d'images minimale"
#: ports/atmel-samd/common-hal/audiobusio/I2SOut.c
msgid "Bit clock and word select must share a clock unit"
@@ -448,7 +457,7 @@ msgstr "'bit clock' et 'word select' doivent partager une horloge"
#: shared-bindings/rgbmatrix/RGBMatrix.c
#, c-format
msgid "Bit depth must be from 1 to 6 inclusive, not %d"
-msgstr "Bit depth doit être compris entre 1 et 6 inclus, et non %d"
+msgstr "Bit depth doit être entre 1 et 6 inclusivement, et non %d"
#: shared-bindings/audiobusio/PDMIn.c
msgid "Bit depth must be multiple of 8."
@@ -460,7 +469,7 @@ msgstr "RX et TX requis pour le contrôle de flux"
#: ports/atmel-samd/common-hal/rotaryio/IncrementalEncoder.c
msgid "Both pins must support hardware interrupts"
-msgstr "Les deux entrées doivent supporter les interruptions matérielles"
+msgstr "Les deux broches doivent supporter les interruptions matérielles"
#: shared-bindings/displayio/Display.c
#: shared-bindings/framebufferio/FramebufferDisplay.c
@@ -547,6 +556,22 @@ msgstr "Les blocs CBC doivent être des multiples de 16 octets"
msgid "Call super().__init__() before accessing native object."
msgstr "Appelez super () .__ init __ () avant d'accéder à l'objet natif."
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Can only alarm on RTC IO from deep sleep."
+msgstr "L'alarme peut seulement être depuis TRC IO depuis le someil profond."
+
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Can only alarm on one low pin while others alarm high from deep sleep."
+msgstr ""
+"L'alarme peut seulement être sur une broche basse tandis que d'autres "
+"alarment sont sur des broches hautes depuis le someil profond."
+
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Can only alarm on two low pins from deep sleep."
+msgstr ""
+"L'alarme peut seulement être sur deux broches basses depuis le someil "
+"profond."
+
#: ports/nrf/common-hal/_bleio/Characteristic.c
msgid "Can't set CCCD on local Characteristic"
msgstr "Impossible de définir CCCD sur une caractéristique locale"
@@ -566,7 +591,7 @@ msgstr "Impossible de supprimer les valeurs"
#: ports/mimxrt10xx/common-hal/digitalio/DigitalInOut.c
#: ports/nrf/common-hal/digitalio/DigitalInOut.c
msgid "Cannot get pull while in output mode"
-msgstr "Ne peut être tiré ('pull') en mode 'output'"
+msgstr "Ne peut être tiré ('pull') en mode sortie ('output')"
#: ports/nrf/common-hal/microcontroller/Processor.c
msgid "Cannot get temperature"
@@ -582,6 +607,10 @@ msgstr ""
msgid "Cannot output both channels on the same pin"
msgstr "Les 2 canaux de sortie ne peuvent être sur la même broche"
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Cannot pull on input-only pin."
+msgstr "Ne peut tirer ('pull') sur une broche d'entrée ('input') seule."
+
#: shared-module/bitbangio/SPI.c
msgid "Cannot read without MISO pin."
msgstr "Impossible de lire sans broche MISO."
@@ -603,7 +632,8 @@ msgstr ""
#: shared-bindings/digitalio/DigitalInOut.c
msgid "Cannot set value when direction is input."
-msgstr "Impossible d'affecter une valeur quand la direction est 'input'."
+msgstr ""
+"Impossible d'affecter une valeur quand la direction est entrentre ('input')."
#: ports/esp32s2/common-hal/busio/UART.c
#: ports/mimxrt10xx/common-hal/busio/UART.c
@@ -620,12 +650,15 @@ msgstr "Pas de transfert sans broches MOSI et MISO."
#: extmod/moductypes.c
msgid "Cannot unambiguously get sizeof scalar"
-msgstr "Impossible d'obtenir la taille du scalaire sans ambigüité"
+msgstr "Impossible d'obtenir la taille (sizeof) du scalaire sans ambigüité"
#: ports/stm/common-hal/pwmio/PWMOut.c
msgid "Cannot vary frequency on a timer that is already in use"
-msgstr ""
-"Impossible de faire varier la fréquence sur une minuterie déjà utilisée"
+msgstr "Impossible de faire varier la fréquence sur un minuteur déjà utilisée"
+
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Cannot wake on pin edge. Only level."
+msgstr "Ne peut reveillé sur le board de broche. Seuleument à niveau."
#: shared-module/bitbangio/SPI.c
msgid "Cannot write without MOSI pin."
@@ -650,11 +683,11 @@ msgstr ""
#: supervisor/shared/safe_mode.c
msgid "CircuitPython was unable to allocate the heap.\n"
-msgstr "CircuitPython n'as pu faire l'allocation de la pile\n"
+msgstr "CircuitPython n'as pu faire l'allocation de la pile.\n"
#: shared-module/bitbangio/SPI.c
msgid "Clock pin init failed."
-msgstr "Echec de l'init. de la broche d'horloge."
+msgstr "Échec de l'initialization de la broche d'horloge."
#: shared-module/bitbangio/I2C.c
msgid "Clock stretch too long"
@@ -671,7 +704,7 @@ msgstr "L'entrée 'Column' doit être un digitalio.DigitalInOut"
#: shared-bindings/displayio/FourWire.c shared-bindings/displayio/I2CDisplay.c
#: shared-bindings/displayio/ParallelBus.c
msgid "Command must be an int between 0 and 255"
-msgstr "La commande doit être un entier entre 0 et 255"
+msgstr "La commande doit être un chiffre entier entre 0 et 255"
#: shared-bindings/_bleio/Connection.c
msgid ""
@@ -691,7 +724,7 @@ msgstr "Code brut corrompu"
#: ports/cxd56/common-hal/camera/Camera.c
msgid "Could not initialize Camera"
-msgstr "Impossible d'initialisé la Camera"
+msgstr "Impossible d'initialiser Camera"
#: ports/cxd56/common-hal/gnss/GNSS.c
msgid "Could not initialize GNSS"
@@ -704,19 +737,19 @@ msgstr "Impossible d'initialiser la carte SD"
#: ports/atmel-samd/common-hal/busio/UART.c ports/cxd56/common-hal/busio/UART.c
#: ports/esp32s2/common-hal/busio/UART.c
msgid "Could not initialize UART"
-msgstr "L'UART n'a pu être initialisé"
+msgstr "Impossible d'initialiser UART"
#: ports/esp32s2/common-hal/pwmio/PWMOut.c ports/stm/common-hal/pwmio/PWMOut.c
msgid "Could not initialize channel"
-msgstr "Impossible d'initialiser la chaîne"
+msgstr "Impossible d'initialiser le canal"
#: ports/esp32s2/common-hal/pwmio/PWMOut.c ports/stm/common-hal/pwmio/PWMOut.c
msgid "Could not initialize timer"
-msgstr "Impossible d'initialiser la minuterie"
+msgstr "Impossible d'initialiser le minuteur"
#: ports/stm/common-hal/pwmio/PWMOut.c
msgid "Could not re-init channel"
-msgstr "Impossible de réinitialiser la chaîne"
+msgstr "Impossible de réinitialiser le canal"
#: ports/stm/common-hal/pwmio/PWMOut.c
msgid "Could not re-init timer"
@@ -749,7 +782,7 @@ msgstr "Impossible d'allouer le décodeur"
#: shared-module/audiocore/WaveFile.c shared-module/audiomixer/Mixer.c
#: shared-module/audiomp3/MP3Decoder.c
msgid "Couldn't allocate first buffer"
-msgstr "Impossible d'allouer le 1er tampon"
+msgstr "Impossible d'allouer le premier tampon"
#: shared-module/audiomp3/MP3Decoder.c
msgid "Couldn't allocate input buffer"
@@ -758,11 +791,11 @@ msgstr "Impossible d'allouer le tampon d'entrée"
#: shared-module/audiocore/WaveFile.c shared-module/audiomixer/Mixer.c
#: shared-module/audiomp3/MP3Decoder.c
msgid "Couldn't allocate second buffer"
-msgstr "Impossible d'allouer le 2e tampon"
+msgstr "Impossible d'allouer le deuxième tampon"
#: supervisor/shared/safe_mode.c
msgid "Crash into the HardFault_Handler."
-msgstr "Crash dans le HardFault_Handler."
+msgstr "Échec vers le HardFault_Handler."
#: ports/stm/common-hal/analogio/AnalogOut.c
msgid "DAC Channel Init Error"
@@ -783,11 +816,11 @@ msgstr "La broche 'Data 0' doit être aligné sur l'octet"
#: shared-module/audiocore/WaveFile.c
msgid "Data chunk must follow fmt chunk"
-msgstr "Un bloc de données doit suivre un bloc de format"
+msgstr "Un bloc de données doit suivre un bloc fmt"
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Data too large for advertisement packet"
-msgstr "Données trop volumineuses pour un paquet de diffusion"
+msgstr "Données trop volumineuses pour un paquet d'avertissement"
#: shared-bindings/audiobusio/PDMIn.c
msgid "Destination capacity is smaller than destination_length."
@@ -814,7 +847,8 @@ msgstr "La rotation d'affichage doit se faire par incréments de 90 degrés"
#: shared-bindings/digitalio/DigitalInOut.c
msgid "Drive mode not used when direction is input."
-msgstr "Le mode Drive n'est pas utilisé quand la direction est 'input'."
+msgstr ""
+"Le mode Drive n'est pas utilisé quand la direction est entrante ('input')."
#: shared-bindings/aesio/aes.c
msgid "ECB only operates on 16 bytes at a time"
@@ -853,11 +887,11 @@ msgstr "Un 'DigitalInOut' est attendu"
#: shared-bindings/_bleio/Characteristic.c
msgid "Expected a Service"
-msgstr "Attendu un service"
+msgstr "Un Service est attendu"
#: shared-bindings/_bleio/Adapter.c
msgid "Expected a UART"
-msgstr "Un 'UART' est attendu"
+msgstr "Un UART est attendu"
#: shared-bindings/_bleio/Characteristic.c shared-bindings/_bleio/Descriptor.c
#: shared-bindings/_bleio/Service.c
@@ -866,11 +900,11 @@ msgstr "Un UUID est attendu"
#: shared-bindings/_bleio/Adapter.c
msgid "Expected an Address"
-msgstr "Attendu une adresse"
+msgstr "Un Address est attendu"
#: shared-bindings/alarm/__init__.c
msgid "Expected an alarm"
-msgstr ""
+msgstr "Une alarme était prévue"
#: shared-module/_pixelbuf/PixelBuf.c
#, c-format
@@ -880,11 +914,11 @@ msgstr "Tuple de longueur %d attendu, obtenu %d"
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Extended advertisements with scan response not supported."
msgstr ""
-"Les publicités étendues avec réponse d'analyse ne sont pas prises en charge."
+"Les avertissement étendues avec analyse de réponse ne sont pas supportées."
#: extmod/ulab/code/fft/fft.c
msgid "FFT is defined for ndarrays only"
-msgstr "La FFT est définie pour les ndarrays uniquement"
+msgstr "La FFT est définie uniquement pour les ndarrays"
#: extmod/ulab/code/fft/fft.c
msgid "FFT is implemented for linear arrays only"
@@ -931,7 +965,7 @@ msgstr "Impossible de se connecter : erreur interne"
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Failed to connect: timeout"
-msgstr "Impossible de se connecter : délai d'expiration"
+msgstr "Impossible de se connecter: délai dépassé"
#: ports/esp32s2/common-hal/wifi/__init__.c
msgid "Failed to init wifi"
@@ -948,7 +982,7 @@ msgstr "Impossible de libérer mutex, err 0x%04x"
#: supervisor/shared/safe_mode.c
msgid "Failed to write internal flash."
-msgstr "Échec de l'écriture du flash interne."
+msgstr "Échec de l'écriture vers flash interne."
#: py/moduerrno.c
msgid "File exists"
@@ -958,7 +992,11 @@ msgstr "Le fichier existe"
#: ports/esp32s2/common-hal/canio/Listener.c
#: ports/stm/common-hal/canio/Listener.c
msgid "Filters too complex"
-msgstr "Filtre trop complexe"
+msgstr "Filtres trop complexe"
+
+#: ports/esp32s2/common-hal/dualbank/__init__.c
+msgid "Firmware image is invalid"
+msgstr "Image du microprogramme est invalide"
#: ports/cxd56/common-hal/camera/Camera.c
msgid "Format not supported"
@@ -967,21 +1005,18 @@ msgstr "Format non supporté"
#: shared-module/framebufferio/FramebufferDisplay.c
#, c-format
msgid "Framebuffer requires %d bytes"
-msgstr "Le framebuffer nécessite %d octets"
-
-#: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c
-msgid "Frequency captured is above capability. Capture Paused."
-msgstr "La fréquence capturée est au delà des capacités. Capture en pause."
+msgstr "FrameBuffer nécessite %d octets"
#: ports/stm/common-hal/pwmio/PWMOut.c
msgid "Frequency must match existing PWMOut using this timer"
msgstr ""
-"La fréquence doit correspondre à PWMOut existant à l'aide de cette minuterie"
+"La fréquence doit correspondre à PWMOut existant à l'utilisation de ce "
+"minuteur"
#: shared-bindings/bitbangio/I2C.c shared-bindings/bitbangio/SPI.c
#: shared-bindings/busio/I2C.c shared-bindings/busio/SPI.c
msgid "Function requires lock"
-msgstr "La fonction nécessite un verrou"
+msgstr "La fonction nécessite un verrou ('lock')"
#: shared-bindings/displayio/Display.c
#: shared-bindings/displayio/EPaperDisplay.c
@@ -1005,11 +1040,11 @@ msgstr "Matériel utilisé, essayez d'autres broches"
#: shared-bindings/wifi/Radio.c
msgid "Hostname must be between 1 and 253 characters"
-msgstr "Hostname doit faire entre 1 et 253 caractères"
+msgstr "Hostname doit être entre 1 et 253 caractères"
#: extmod/vfs_posix_file.c py/objstringio.c
msgid "I/O operation on closed file"
-msgstr "opération d'E/S sur un fichier fermé"
+msgstr "Opération d'E/S sur un fichier fermé"
#: ports/stm/common-hal/busio/I2C.c
msgid "I2C Init Error"
@@ -1021,19 +1056,19 @@ msgstr "I2SOut n'est pas disponible"
#: ports/esp32s2/common-hal/alarm/pin/__init__.c
msgid "IOs 0, 2 & 4 do not support internal pullup in sleep"
-msgstr ""
+msgstr "IOs 0, 2 & 4 ne supportent pas l'éleveuse interne en mode someil"
#: shared-bindings/aesio/aes.c
#, c-format
msgid "IV must be %d bytes long"
-msgstr "IV doit être long de %d octets"
+msgstr "IV doit être de longueur de %d octets"
#: py/persistentcode.c
msgid ""
"Incompatible .mpy file. Please update all .mpy files. See http://adafru.it/"
"mpy-update for more info."
msgstr ""
-"Fichier .mpy incompatible. Merci de mettre à jour tous les fichiers .mpy."
+"Fichier .mpy incompatible. Merci de mettre à jour tous les fichiers .mpy. "
"Voir http://adafru.it/mpy-update pour plus d'informations."
#: shared-bindings/_pew/PewPew.c
@@ -1042,7 +1077,7 @@ msgstr "Taille de tampon incorrecte"
#: ports/esp32s2/common-hal/watchdog/WatchDogTimer.c
msgid "Initialization failed due to lack of memory"
-msgstr "L'initialisation a échoué par manque de mémoire"
+msgstr "Échec d'initialisation par manque de mémoire"
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c
msgid "Input taking too long"
@@ -1082,7 +1117,7 @@ msgstr "Broche invalide pour '%q'"
#: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/canio/CAN.c
#: ports/stm/common-hal/sdioio/SDCard.c
msgid "Invalid %q pin selection"
-msgstr "Sélection de pin %q invalide"
+msgstr "Sélection de broche %q invalide"
#: ports/stm/common-hal/analogio/AnalogIn.c
msgid "Invalid ADC Unit value"
@@ -1094,7 +1129,7 @@ msgstr "Fichier BMP invalide"
#: shared-bindings/wifi/Radio.c
msgid "Invalid BSSID"
-msgstr "BSSID Invalide"
+msgstr "BSSID invalide"
#: ports/esp32s2/common-hal/analogio/AnalogOut.c
#: ports/stm/common-hal/analogio/AnalogOut.c
@@ -1109,11 +1144,11 @@ msgstr "Fréquence de PWM invalide"
#: ports/esp32s2/common-hal/analogio/AnalogIn.c
msgid "Invalid Pin"
-msgstr ""
+msgstr "Broche invalide"
#: py/moduerrno.c shared-module/rgbmatrix/RGBMatrix.c
msgid "Invalid argument"
-msgstr "Argument invalide"
+msgstr "Paramètre invalide"
#: shared-module/displayio/Bitmap.c
msgid "Invalid bits per value"
@@ -1125,12 +1160,12 @@ msgstr "Longueur de tampon invalide"
#: shared-bindings/_pixelbuf/PixelBuf.c
msgid "Invalid byteorder string"
-msgstr "Chaîne d'octets non valide"
+msgstr "Chaîne byteorder non valide"
#: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c
#: ports/esp32s2/common-hal/frequencyio/FrequencyIn.c
msgid "Invalid capture period. Valid range: 1 - 500"
-msgstr "Période de capture invalide. Gamme valide : 1 à 500"
+msgstr "Période de capture invalide. Portée valide : 1 à 500"
#: shared-bindings/audiomixer/Mixer.c
msgid "Invalid channel count"
@@ -1150,7 +1185,7 @@ msgstr "Taille de bloc de formatage invalide"
#: ports/esp32s2/common-hal/pwmio/PWMOut.c
msgid "Invalid frequency"
-msgstr "fréquence non Valide"
+msgstr "Fréquence non valide"
#: ports/stm/common-hal/pwmio/PWMOut.c
msgid "Invalid frequency supplied"
@@ -1158,7 +1193,7 @@ msgstr "Fréquence invalide fournie"
#: supervisor/shared/safe_mode.c
msgid "Invalid memory access."
-msgstr "Accès mémoire invalide."
+msgstr "Accès à la mémoire invalide."
#: shared-bindings/bitbangio/SPI.c shared-bindings/busio/SPI.c
msgid "Invalid number of bits"
@@ -1171,6 +1206,7 @@ msgstr "Phase invalide"
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
#: ports/atmel-samd/common-hal/touchio/TouchIn.c
+#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
#: ports/esp32s2/common-hal/touchio/TouchIn.c shared-bindings/pwmio/PWMOut.c
#: shared-module/rgbmatrix/RGBMatrix.c
msgid "Invalid pin"
@@ -1200,7 +1236,7 @@ msgstr "Broches invalides"
#: ports/stm/common-hal/pwmio/PWMOut.c
msgid "Invalid pins for PWMOut"
-msgstr "Broches non valides pour PWMOut"
+msgstr "Broches invalides pour PWMOut"
#: shared-bindings/bitbangio/SPI.c shared-bindings/busio/SPI.c
#: shared-bindings/displayio/FourWire.c
@@ -1209,7 +1245,7 @@ msgstr "Polarité invalide"
#: shared-bindings/_bleio/Characteristic.c
msgid "Invalid properties"
-msgstr "Propriétés non valides"
+msgstr "Propriétés invalides"
#: shared-bindings/microcontroller/__init__.c
msgid "Invalid run mode."
@@ -1217,7 +1253,7 @@ msgstr "Mode de lancement invalide."
#: shared-module/_bleio/Attribute.c
msgid "Invalid security_mode"
-msgstr "'mode_security' non valide"
+msgstr "'security_mode' invalide"
#: shared-bindings/audiomixer/Mixer.c
msgid "Invalid voice"
@@ -1233,7 +1269,7 @@ msgstr "Fichier WAVE invalide"
#: ports/stm/common-hal/busio/UART.c
msgid "Invalid word/bit length"
-msgstr "Longueur de mot / bit non valide"
+msgstr "Longueur de mot / bit invalide"
#: shared-bindings/aesio/aes.c
msgid "Key must be 16, 24, or 32 bytes long"
@@ -1253,32 +1289,32 @@ msgstr "'Layer' doit être un 'Group' ou une sous-classe 'TileGrid'."
#: py/objslice.c
msgid "Length must be an int"
-msgstr "La longueur doit être un nombre entier"
+msgstr "Length doit être un chiffre entier (int)"
#: py/objslice.c
msgid "Length must be non-negative"
-msgstr "La longueur ne doit pas être négative"
+msgstr "Length ne doit pas être négatif"
#: shared-module/bitbangio/SPI.c
msgid "MISO pin init failed."
-msgstr "Echec de l'init. de la broche MISO."
+msgstr "Échec de l'initialization de la broche MISO."
#: shared-module/bitbangio/SPI.c
msgid "MOSI pin init failed."
-msgstr "Echec de l'init. de la broche MOSI."
+msgstr "Échec de l'initialization de la broche MOSI."
#: shared-module/displayio/Shape.c
#, c-format
msgid "Maximum x value when mirrored is %d"
-msgstr "La valeur max. de x est %d lors d'une opération miroir"
+msgstr "La valeur maximale de x est %d lors d'une opération miroir"
#: shared-bindings/canio/Message.c
msgid "Messages limited to 8 bytes"
-msgstr "Message limité a 8 bytes"
+msgstr "Messages limités à 8 octets"
#: supervisor/shared/safe_mode.c
msgid "MicroPython NLR jump failed. Likely memory corruption."
-msgstr "Le saut MicroPython NLR a échoué. Altération probable de la mémoire."
+msgstr "Échec du saut MicroPython NLR. Corruption de la mémoire probable."
#: supervisor/shared/safe_mode.c
msgid "MicroPython fatal error."
@@ -1374,7 +1410,7 @@ msgstr "Pas de GCLK libre"
#: shared-bindings/os/__init__.c
msgid "No hardware random available"
-msgstr "Pas de source matérielle d'aléa disponible"
+msgstr "Aucunes source de valeurs aléatoire matérielle disponible"
#: ports/atmel-samd/common-hal/ps2io/Ps2.c
msgid "No hardware support on clk pin"
@@ -1391,7 +1427,7 @@ msgstr "Aucune clé n'a été spécifiée"
#: shared-bindings/time/__init__.c
msgid "No long integer support"
-msgstr "Pas de support entier long"
+msgstr "Pas de support pour chiffre entier long"
#: ports/esp32s2/common-hal/pwmio/PWMOut.c
msgid "No more channels available"
@@ -1399,7 +1435,7 @@ msgstr "Pas de canal supplémentaire disponible"
#: ports/esp32s2/common-hal/pwmio/PWMOut.c
msgid "No more timers available"
-msgstr "Pas d'horloge supplémentaire disponible"
+msgstr "Plus de minuteurs disponibles"
#: ports/stm/common-hal/pwmio/PWMOut.c
msgid "No more timers available on this pin."
@@ -1415,15 +1451,15 @@ msgstr "Pas de pulldown sur la broche ; 1Mohm recommandé"
#: py/moduerrno.c
msgid "No space left on device"
-msgstr "Il n'y a plus d'espace libre sur le périphérique"
+msgstr "Aucun espace libre sur le dispositif"
#: py/moduerrno.c
msgid "No such file/directory"
-msgstr "Fichier/dossier introuvable"
+msgstr "Fichier/répertoire introuvable"
#: shared-module/rgbmatrix/RGBMatrix.c
msgid "No timer available"
-msgstr "Pas de minuterie disponible"
+msgstr "Aucun minuteur disponible"
#: supervisor/shared/safe_mode.c
msgid "Nordic Soft Device failure assertion."
@@ -1468,18 +1504,18 @@ msgstr "Uniquement 8 ou 16 bit mono avec "
#: ports/esp32s2/common-hal/wifi/__init__.c
msgid "Only IPv4 addresses supported"
-msgstr "Seules les adresses IPv4 sont prises en charge"
+msgstr "Seulement les adresses IPv4 sont supportées"
#: ports/esp32s2/common-hal/socketpool/SocketPool.c
msgid "Only IPv4 sockets supported"
-msgstr "Seules les sockets IPv4 sont prises en charge"
+msgstr "Seulement les sockets IPv4 sont supportés"
#: shared-module/displayio/OnDiskBitmap.c
#, c-format
msgid ""
"Only Windows format, uncompressed BMP supported: given header size is %d"
msgstr ""
-"Seul le format BMP Windows, non compressé est supporté : la taille de "
+"Seulement le format BMP Windows, non compressé est supporté : la taille de "
"l'entête fournie est %d"
#: shared-module/displayio/OnDiskBitmap.c
@@ -1488,12 +1524,16 @@ msgid ""
"Only monochrome, indexed 4bpp or 8bpp, and 16bpp or greater BMPs supported: "
"%d bpp given"
msgstr ""
-"Prise en charge uniquement des monochromes, 4 bpp ou 8 bpp indexés et 16 bpp "
-"ou plus : %d bpp fournis"
+"Seulement les BMP monochromes, 4 bpp ou 8 bpp, ou 16 bpp et plus sont "
+"supportés: %d bpp fournis"
-#: ports/esp32s2/common-hal/alarm/__init__.c
+#: ports/esp32s2/common-hal/alarm/time/TimeAlarm.c
msgid "Only one alarm.time alarm can be set."
-msgstr ""
+msgstr "Seulement une alarme alarm.time peut être réglée."
+
+#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
+msgid "Only one alarm.touch alarm can be set."
+msgstr "Seulement une alarme alarm.touch peut être réglée."
#: shared-module/displayio/ColorConverter.c
msgid "Only one color can be transparent at a time"
@@ -1501,7 +1541,7 @@ msgstr "Une seule couleur peut être transparente à la fois"
#: shared-bindings/ipaddress/__init__.c
msgid "Only raw int supported for ip"
-msgstr "IP n'accepte que les entiers bruts"
+msgstr "IP n'accepte que les chiffres entiers bruts"
#: ports/esp32s2/common-hal/socketpool/SocketPool.c
msgid "Out of sockets"
@@ -1515,8 +1555,8 @@ msgstr "Le sur-échantillonage doit être un multiple de 8."
msgid ""
"PWM duty_cycle must be between 0 and 65535 inclusive (16 bit resolution)"
msgstr ""
-"La valeur de cycle PWM doit être entre 0 et 65535 inclus (résolution de 16 "
-"bits)"
+"La valeur de duty_cycle de PWM doit être entre 0 et 65535 inclusivement "
+"(résolution de 16 bits)"
#: shared-bindings/pwmio/PWMOut.c
msgid ""
@@ -1529,7 +1569,7 @@ msgstr ""
#: ports/mimxrt10xx/common-hal/displayio/ParallelBus.c
#: ports/stm/common-hal/displayio/ParallelBus.c
msgid "ParallelBus not yet supported"
-msgstr "ParallelBus pas encore pris en charge"
+msgstr "ParallelBus pas encore supporté"
#: py/moduerrno.c
msgid "Permission denied"
@@ -1542,7 +1582,7 @@ msgstr "Permission refusée"
#: ports/nrf/common-hal/analogio/AnalogIn.c
#: ports/stm/common-hal/analogio/AnalogIn.c
msgid "Pin does not have ADC capabilities"
-msgstr "La broche ne peut être utilisée pour l'ADC"
+msgstr "La broche 'pin' ne supporte pas les capacitées ADC"
#: shared-bindings/adafruit_bus_device/SPIDevice.c
#: shared-bindings/digitalio/DigitalInOut.c
@@ -1551,15 +1591,11 @@ msgstr "La broche est entrée uniquement"
#: ports/atmel-samd/common-hal/countio/Counter.c
msgid "Pin must support hardware interrupts"
-msgstr "La broche doit prendre en charge les interruptions matérielles"
+msgstr "La broche doit supporter les interruptions matérielles"
#: ports/stm/common-hal/pulseio/PulseIn.c
msgid "Pin number already reserved by EXTI"
-msgstr "Numéro de broche déjà réservé par EXTI"
-
-#: ports/esp32s2/common-hal/alarm/__init__.c
-msgid "PinAlarm not yet implemented"
-msgstr "PinAlarm pas encore implémenté"
+msgstr "Numéro de broche 'pin' déjà réservé par EXTI"
#: shared-bindings/rgbmatrix/RGBMatrix.c
#, c-format
@@ -1574,19 +1610,19 @@ msgstr ""
#: py/builtinhelp.c
msgid "Plus any modules on the filesystem\n"
-msgstr "Ainsi que tout autre module présent sur le système de fichiers\n"
+msgstr "Ainsi que tout autres modules présents sur le système de fichiers\n"
#: shared-module/vectorio/Polygon.c
msgid "Polygon needs at least 3 points"
-msgstr "Polygone a besoin d’au moins 3 points"
+msgstr "Polygon a besoin d’au moins 3 points"
#: ports/esp32s2/common-hal/pulseio/PulseOut.c
msgid ""
"Port does not accept PWM carrier. Pass a pin, frequency and duty cycle "
"instead"
msgstr ""
-"Ce portage n'accepte pas de PWM carrier. Précisez plutôt pin, frequency et "
-"duty cycle"
+"Ce port n'accepte pas de PWM carrier. Précisez plutôt les valeurs pin, "
+"frequency et duty_cycle"
#: ports/atmel-samd/common-hal/pulseio/PulseOut.c
#: ports/cxd56/common-hal/pulseio/PulseOut.c
@@ -1596,20 +1632,23 @@ msgid ""
"Port does not accept pins or frequency. Construct and pass a PWMOut Carrier "
"instead"
msgstr ""
-"Ce portage n'accepte pas pins ou frequency. Construisez et passez un PWMOut "
-"Carrier à la place"
+"Ce port n'accepte pas de broches ou de fréquence. Construisez plutôt en "
+"passant un PWMOut Carrier"
#: shared-bindings/_bleio/Adapter.c
msgid "Prefix buffer must be on the heap"
-msgstr "Le tampon de préfixe doit être sur le tas"
+msgstr "Le tampon de préfixe doit être sur la pile"
#: main.c
msgid "Press any key to enter the REPL. Use CTRL-D to reload.\n"
msgstr ""
+"Appuyez sur n'importe quelle touche pour utiliser le REPL. Utilisez CTRL-D "
+"pour relancer.\n"
#: main.c
-msgid "Pretending to deep sleep until alarm, any key or file write.\n"
+msgid "Pretending to deep sleep until alarm, CTRL-C or file write.\n"
msgstr ""
+"Feinte de someil profond jusqu'à l'alarme, CTRL-C ou écriture au fichier.\n"
#: shared-bindings/digitalio/DigitalInOut.c
msgid "Pull not used when direction is output."
@@ -1617,34 +1656,34 @@ msgstr "Le tirage 'pull' n'est pas utilisé quand la direction est 'output'."
#: ports/stm/common-hal/os/__init__.c
msgid "RNG DeInit Error"
-msgstr "Erreur RNG DeInit"
+msgstr "Erreur de désinitiation du RNG (RNG DeInit)"
#: ports/stm/common-hal/os/__init__.c
msgid "RNG Init Error"
-msgstr "Erreur d'initialisation RNG"
+msgstr "Erreur d'initialisation du RNG (RNG Init)"
#: ports/esp32s2/common-hal/busio/UART.c
#: ports/mimxrt10xx/common-hal/busio/UART.c
msgid "RS485 inversion specified when not in RS485 mode"
-msgstr "Inversion RS485 spécifiée lorsqu'elle n'est pas en mode RS485"
+msgstr "Inversion RS485 spécifiée sans être en mode RS485"
#: ports/cxd56/common-hal/rtc/RTC.c ports/esp32s2/common-hal/rtc/RTC.c
#: ports/mimxrt10xx/common-hal/rtc/RTC.c ports/nrf/common-hal/rtc/RTC.c
msgid "RTC calibration is not supported on this board"
-msgstr "étalonnage de la RTC non supportée sur cette carte"
+msgstr "La calibration du RTC non supportée sur cette carte"
#: shared-bindings/alarm/time/TimeAlarm.c shared-bindings/time/__init__.c
msgid "RTC is not supported on this board"
-msgstr "RTC non supportée sur cette carte"
+msgstr "RTC non supporté sur cette carte"
#: ports/atmel-samd/common-hal/busio/UART.c ports/cxd56/common-hal/busio/UART.c
#: ports/nrf/common-hal/busio/UART.c ports/stm/common-hal/busio/UART.c
msgid "RTS/CTS/RS485 Not yet supported on this device"
-msgstr "RTS / CTS / RS485 Pas encore pris en charge sur cet appareil"
+msgstr "RTS / CTS / RS485 Pas encore supporté sur cet appareil"
#: ports/stm/common-hal/os/__init__.c
msgid "Random number generation error"
-msgstr "Erreur de génération de nombres aléatoires"
+msgstr "Erreur de génération de chiffres aléatoires"
#: shared-bindings/memorymonitor/AllocationSize.c
#: shared-bindings/pulseio/PulseIn.c
@@ -1661,7 +1700,7 @@ msgstr "Objet en lecture seule"
#: shared-bindings/displayio/EPaperDisplay.c
msgid "Refresh too soon"
-msgstr "Rafraîchissez trop tôt"
+msgstr "Rafraîchissement trop tôt"
#: shared-bindings/canio/RemoteTransmissionRequest.c
msgid "RemoteTransmissionRequests limited to 8 bytes"
@@ -1669,7 +1708,7 @@ msgstr "RemoteTransmissionRequests limité à 8 octets"
#: shared-bindings/aesio/aes.c
msgid "Requested AES mode is unsupported"
-msgstr "Le mode AES demandé n'est pas pris en charge"
+msgstr "Le mode AES demandé n'est pas supporté"
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
msgid "Right channel unsupported"
@@ -1681,11 +1720,11 @@ msgstr "L'entrée de ligne 'Row' doit être un digitalio.DigitalInOut"
#: main.c
msgid "Running in safe mode! "
-msgstr "Tourne en mode sécurisé "
+msgstr "Exécution en mode sécurisé! "
#: shared-module/sdcardio/SDCard.c
msgid "SD card CSD format not supported"
-msgstr "Le format de carte SD CSD n'est pas pris en charge"
+msgstr "Le format de carte SD CSD n'est pas supporté"
#: ports/atmel-samd/common-hal/busio/I2C.c ports/esp32s2/common-hal/busio/I2C.c
#: ports/mimxrt10xx/common-hal/busio/I2C.c ports/nrf/common-hal/busio/I2C.c
@@ -1695,12 +1734,12 @@ msgstr "SDA ou SCL a besoin d'une résistance de tirage ('pull up')"
#: ports/stm/common-hal/sdioio/SDCard.c
#, c-format
msgid "SDIO GetCardInfo Error %d"
-msgstr "SDIO GetCardInfo erreur %d"
+msgstr "Erreur de SDIO GetCardInfo %d"
#: ports/stm/common-hal/sdioio/SDCard.c
#, c-format
msgid "SDIO Init Error %d"
-msgstr "SDIO Init erreur %d"
+msgstr "Erreur d'initialisation SDIO %d"
#: ports/stm/common-hal/busio/SPI.c
msgid "SPI Init Error"
@@ -1717,7 +1756,7 @@ msgstr "Le taux d'échantillonage doit être positif"
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
#, c-format
msgid "Sample rate too high. It must be less than %d"
-msgstr "Taux d'échantillonage trop élevé. Doit être inf. à %d"
+msgstr "Taux d'échantillonage trop élevé. Doit être inférieur à %d"
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Scan already in progess. Stop with stop_scan."
@@ -1725,11 +1764,11 @@ msgstr "Scan déjà en cours. Arrêtez avec stop_scan."
#: ports/mimxrt10xx/common-hal/busio/UART.c
msgid "Selected CTS pin not valid"
-msgstr "Broche CTS sélectionnée non valide"
+msgstr "La broche CTS sélectionnée n'est pas valide"
#: ports/mimxrt10xx/common-hal/busio/UART.c
msgid "Selected RTS pin not valid"
-msgstr "Broche RTS sélectionnée non valide"
+msgstr "La broche RTS sélectionnée n'est pas valide"
#: ports/atmel-samd/common-hal/audiobusio/I2SOut.c
#: ports/atmel-samd/common-hal/audiobusio/PDMIn.c
@@ -1742,7 +1781,7 @@ msgstr "Un contexte niveau serveur ne peut avoir de hostname"
#: ports/cxd56/common-hal/camera/Camera.c
msgid "Size not supported"
-msgstr "Taille non prise en charge"
+msgstr "Taille n'est pas supportée"
#: shared-bindings/alarm/SleepMemory.c shared-bindings/nvm/ByteArray.c
msgid "Slice and value different lengths."
@@ -1789,7 +1828,7 @@ msgstr "L'entrée du système doit être gnss.SatelliteSystem"
#: ports/stm/common-hal/microcontroller/Processor.c
msgid "Temperature read timed out"
-msgstr "Temporisation de lecture dépassée"
+msgstr "Délais de lecture de température dépassée"
#: supervisor/shared/safe_mode.c
msgid ""
@@ -1804,7 +1843,7 @@ msgid ""
"The `microcontroller` module was used to boot into safe mode. Press reset to "
"exit safe mode.\n"
msgstr ""
-"Le module `microcontrôleur` a été utilisé pour démarrer en mode sans échec. "
+"Le module `microcontroller` a été utilisé pour démarrer en mode sans échec. "
"Appuyez sur reset pour quitter le mode sans échec.\n"
#: shared-bindings/rgbmatrix/RGBMatrix.c
@@ -1818,7 +1857,7 @@ msgid ""
"CIRCUITPY).\n"
msgstr ""
"La puissance du microcontrôleur a baissé. Assurez-vous que votre "
-"alimentation\n"
+"alimentation fournit\n"
"assez de puissance pour tout le circuit et appuyez sur reset (après avoir "
"éjecté CIRCUITPY).\n"
@@ -1857,7 +1896,7 @@ msgstr "La largeur de la tuile doit diviser exactement la largeur de l'image"
#: shared-bindings/alarm/time/TimeAlarm.c
msgid "Time is in the past."
-msgstr ""
+msgstr "L'heure est dans le passé."
#: ports/nrf/common-hal/_bleio/Adapter.c
#, c-format
@@ -1868,12 +1907,12 @@ msgstr "Le délai est trop long : le délai maximal est de %d secondes"
msgid ""
"Timer was reserved for internal use - declare PWM pins earlier in the program"
msgstr ""
-"Timer est reservé pour un usage interne - déclarez la broche PWM plus tôt "
-"dans le programme"
+"Le minuteur est reservé pour un usage interne - déclarez la broche PWM plus "
+"tôt dans le programme"
#: supervisor/shared/safe_mode.c
msgid "To exit, please reset the board without "
-msgstr "Pour quitter, redémarrez la carte SVP sans "
+msgstr "Pour quitter, SVP redémarrez la carte sans "
#: ports/atmel-samd/common-hal/audiobusio/I2SOut.c
msgid "Too many channels in sample."
@@ -1892,13 +1931,17 @@ msgid "Total data to write is larger than outgoing_packet_length"
msgstr ""
"Le nombre total de données à écrire est supérieur à outgoing_packet_length"
+#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
+msgid "TouchAlarm not available in light sleep"
+msgstr "TouchAlarm n'est pas disponible en mode someil léger"
+
#: py/obj.c
msgid "Traceback (most recent call last):\n"
-msgstr "Trace (appels les plus récents en dernier) :\n"
+msgstr "Traceback (appels les plus récents en dernier) :\n"
#: shared-bindings/time/__init__.c
msgid "Tuple or struct_time argument required"
-msgstr "Argument de type tuple ou struct_time nécessaire"
+msgstr "Paramètre de type tuple ou struct_time requis"
#: ports/stm/common-hal/busio/UART.c
msgid "UART Buffer allocation error"
@@ -1930,7 +1973,7 @@ msgstr "Erreur USB"
#: shared-bindings/_bleio/UUID.c
msgid "UUID integer value must be 0-0xffff"
-msgstr "La valeur entière UUID doit être 0-0xffff"
+msgstr "La valeur du chiffre entier de UUID doit être 0-0xffff"
#: shared-bindings/_bleio/UUID.c
msgid "UUID string not 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'"
@@ -1940,8 +1983,8 @@ msgstr ""
#: shared-bindings/_bleio/UUID.c
msgid "UUID value is not str, int or byte buffer"
msgstr ""
-"la valeur de l'UUID n'est pas une chaîne de caractères, un entier ou un "
-"tampon d'octets"
+"La valeur de l'UUID n'est pas une chaîne de caractères, un chiffre entier ou "
+"un tampon d'octets"
#: ports/atmel-samd/common-hal/audiobusio/I2SOut.c
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
@@ -1950,7 +1993,7 @@ msgstr "Impossible d'allouer des tampons pour une conversion signée"
#: ports/esp32s2/common-hal/busio/I2C.c
msgid "Unable to create lock"
-msgstr "Impossible de créer un verrou"
+msgstr "Impossible de créer un verrou ('lock')"
#: shared-module/displayio/I2CDisplay.c
#, c-format
@@ -1972,11 +2015,11 @@ msgstr "Impossible de lire les données de la palette de couleurs"
#: shared-bindings/nvm/ByteArray.c
msgid "Unable to write to nvm."
-msgstr "Impossible d'écrire sur la mémoire non-volatile."
+msgstr "Écriture impossible vers nvm."
#: shared-bindings/alarm/SleepMemory.c
msgid "Unable to write to sleep_memory."
-msgstr ""
+msgstr "Écriture impossible vers sleep_memory."
#: ports/nrf/common-hal/_bleio/UUID.c
msgid "Unexpected nrfx uuid type"
@@ -2027,7 +2070,7 @@ msgstr ""
#: ports/atmel-samd/common-hal/busio/I2C.c ports/cxd56/common-hal/busio/I2C.c
#: ports/esp32s2/common-hal/busio/UART.c ports/stm/common-hal/busio/I2C.c
msgid "Unsupported baudrate"
-msgstr "Débit non supporté"
+msgstr "Débit en bauds non supporté"
#: shared-module/displayio/display_core.c
msgid "Unsupported display bus type"
@@ -2045,6 +2088,10 @@ msgstr "Opération non supportée"
msgid "Unsupported pull value."
msgstr "Valeur de tirage 'pull' non supportée."
+#: ports/esp32s2/common-hal/dualbank/__init__.c
+msgid "Update Failed"
+msgstr "Mise-à-jour échouée"
+
#: ports/nrf/common-hal/_bleio/Characteristic.c
#: ports/nrf/common-hal/_bleio/Descriptor.c
msgid "Value length != required fixed length"
@@ -2081,7 +2128,7 @@ msgstr "WatchDogTimer n'est pas en cours d'exécution"
#: shared-bindings/watchdog/WatchDogTimer.c
msgid "WatchDogTimer.mode cannot be changed once set to WatchDogMode.RESET"
msgstr ""
-"WatchDogTimer.mode ne peut pas être changé une fois réglé pour WatchDogMode."
+"WatchDogTimer.mode ne peut pas être changé une fois réglé à WatchDogMode."
"RESET"
#: shared-bindings/watchdog/WatchDogTimer.c
@@ -2113,11 +2160,11 @@ msgstr "Le mot de passe WiFi doit faire entre 8 et 63 caractères"
#: main.c
msgid "Woken up by alarm.\n"
-msgstr ""
+msgstr "Réveil par alarme.\n"
#: ports/nrf/common-hal/_bleio/PacketBuffer.c
msgid "Writes not supported on Characteristic"
-msgstr "Écritures non prises en charge sur la caractéristique"
+msgstr "Écritures non supporté vers les Characteristic"
#: supervisor/shared/safe_mode.c
msgid "You are in safe mode: something unanticipated happened.\n"
@@ -2183,19 +2230,19 @@ msgstr "l'argument doit être un ndarray"
#: py/argcheck.c shared-bindings/_stage/__init__.c
#: shared-bindings/digitalio/DigitalInOut.c shared-bindings/gamepad/GamePad.c
msgid "argument num/types mismatch"
-msgstr "argument num/types ne correspond pas"
+msgstr "Nombre/types de paramètres ne correspondent pas"
#: py/runtime.c
msgid "argument should be a '%q' not a '%q'"
-msgstr "l'argument devrait être un(e) '%q', pas '%q'"
+msgstr "le paramètre devrait être un(e) '%q', pas '%q'"
#: extmod/ulab/code/linalg/linalg.c extmod/ulab/code/numerical/numerical.c
msgid "arguments must be ndarrays"
-msgstr "les arguments doivent être des ndarrays"
+msgstr "les paramètres doivent être des ndarrays"
#: extmod/ulab/code/ndarray.c
msgid "array and index length must be equal"
-msgstr "la longueur du tableau et de l'index doit être égale"
+msgstr "la longueur du tableau et de l'index doivent être égaux"
#: py/objarray.c shared-bindings/alarm/SleepMemory.c
#: shared-bindings/nvm/ByteArray.c
@@ -2438,7 +2485,7 @@ msgstr ""
#: extmod/ulab/code/ndarray_operators.c
msgid "cannot cast output with casting rule"
-msgstr ""
+msgstr "output ne peut être projeté sans règle de projection"
#: py/objtype.c
msgid "cannot create '%q' instances"
@@ -2466,11 +2513,11 @@ msgstr "tampon de caractères trop petit"
#: py/modbuiltins.c
msgid "chr() arg not in range(0x110000)"
-msgstr "argument de chr() hors de la gamme range(0x11000)"
+msgstr "paramètre de chr() hors les bornes de range(0x11000)"
#: py/modbuiltins.c
msgid "chr() arg not in range(256)"
-msgstr "argument de chr() hors de la gamme range(256)"
+msgstr "paramètre de chr() hors les bornes de range(256)"
#: shared-module/vectorio/Circle.c
msgid "circle can only be registered in one parent"
@@ -2583,7 +2630,7 @@ msgstr "l'argument diff doit être un ndarray"
#: extmod/ulab/code/numerical/numerical.c
msgid "differentiation order out of range"
-msgstr "differentiation order hors plage"
+msgstr "differentiation order hors de portée"
#: py/modmath.c py/objfloat.c py/objint_longlong.c py/objint_mpz.c py/runtime.c
#: shared-bindings/math/__init__.c
@@ -2616,7 +2663,7 @@ msgstr "end_x doit être un entier 'int'"
#: shared-bindings/alarm/time/TimeAlarm.c
msgid "epoch_time not supported on this board"
-msgstr ""
+msgstr "epoch_time n'est pas supporté sur ce panneau"
#: ports/nrf/common-hal/busio/UART.c
#, c-format
@@ -2770,7 +2817,7 @@ msgstr "La fonction n'est définie que pour les ndarrays"
#: py/argcheck.c
#, c-format
msgid "function missing %d required positional arguments"
-msgstr "il manque %d arguments obligatoires à la fonction"
+msgstr "il manque %d argument(s) positionnel(s) requis pour la fonction"
#: py/bc.c
msgid "function missing keyword-only argument"
@@ -2837,7 +2884,7 @@ msgstr "l'index est hors limites"
#: extmod/ulab/code/numerical/numerical.c
#: ports/esp32s2/common-hal/pulseio/PulseIn.c py/obj.c
msgid "index out of range"
-msgstr "index hors gamme"
+msgstr "index est hors bornes"
#: py/obj.c
msgid "indices must be integers"
@@ -2898,11 +2945,11 @@ msgstr "l'entrée doit être un tenseur de rang 2"
#: extmod/ulab/code/ulab_create.c extmod/ulab/code/user/user.c
msgid "input must be an ndarray"
-msgstr ""
+msgstr "l'entrée doit être un ndarray"
#: extmod/ulab/code/filter/filter.c
msgid "input must be one-dimensional"
-msgstr ""
+msgstr "l'entrée doit être uni-dimensionelle"
#: extmod/ulab/code/linalg/linalg.c
msgid "input must be square matrix"
@@ -2910,7 +2957,7 @@ msgstr "l'entrée doit être une matrice carrée"
#: extmod/ulab/code/numerical/numerical.c
msgid "input must be tuple, list, range, or ndarray"
-msgstr "l'entrée doit être tuple, list, range ou ndarray"
+msgstr "l'entrée 'input' doit être tuple, list, range ou ndarray"
#: extmod/ulab/code/poly/poly.c
msgid "input vectors must be of equal length"
@@ -2918,7 +2965,7 @@ msgstr "les vecteurs d'entrée doivent être de longueur égale"
#: extmod/ulab/code/poly/poly.c
msgid "inputs are not iterable"
-msgstr ""
+msgstr "les entrées ne sont pas itérables"
#: py/parsenum.c
msgid "int() arg 2 must be >= 2 and <= 36"
@@ -2935,7 +2982,7 @@ msgstr "interp est défini pour les tableaux 1D de longueur égale"
#: shared-bindings/_bleio/Adapter.c
#, c-format
msgid "interval must be in range %s-%s"
-msgstr "l'intervalle doit être dans la plage %s-%s"
+msgstr "interval doit être dans la portée %s-%s"
#: lib/netutils/netutils.c
msgid "invalid arguments"
@@ -2992,7 +3039,7 @@ msgstr "syntaxe invalide pour un nombre"
#: ports/esp32s2/common-hal/alarm/pin/__init__.c
msgid "io must be rtc io"
-msgstr ""
+msgstr "io doit être rtc io"
#: py/objtype.c
msgid "issubclass() arg 1 must be a class"
@@ -3032,11 +3079,11 @@ msgstr "label '%q' non supporté"
#: py/compile.c
msgid "label redefined"
-msgstr "label redéfini"
+msgstr "étiquette redéfinie"
#: py/stream.c
msgid "length argument not allowed for this type"
-msgstr "argument 'length' non-permis pour ce type"
+msgstr "paramètre 'length' non-permis pour ce type"
#: shared-bindings/audiomixer/MixerVoice.c
msgid "level must be between 0 and 1"
@@ -3093,12 +3140,12 @@ msgid "max_length must be 0-%d when fixed_length is %s"
msgstr "max_length doit être 0-%d lorsque fixed_length est %s"
#: shared-bindings/_bleio/Characteristic.c shared-bindings/_bleio/Descriptor.c
-msgid "max_length must be > 0"
-msgstr "max_length doit être > 0"
+msgid "max_length must be >= 0"
+msgstr "max_length doit être >= 0"
#: extmod/ulab/code/ndarray.c
msgid "maximum number of dimensions is 4"
-msgstr ""
+msgstr "nombre maximal de dimensions est 4"
#: py/runtime.c
msgid "maximum recursion depth exceeded"
@@ -3159,7 +3206,7 @@ msgstr "nom non défini"
#: py/compile.c
msgid "name reused for argument"
-msgstr "nom réutilisé comme argument"
+msgstr "nom réutilisé comme paramètre"
#: py/emitnative.c
msgid "native yield"
@@ -3232,9 +3279,17 @@ msgstr "argument non-nommé après */**"
msgid "non-keyword arg after keyword arg"
msgstr "argument non-nommé après argument nommé"
+#: ports/nrf/common-hal/_bleio/Adapter.c
+msgid "non-zero timeout must be > 0.01"
+msgstr "le délai non-zéro doit être > 0.01"
+
+#: shared-bindings/_bleio/Adapter.c
+msgid "non-zero timeout must be >= interval"
+msgstr "le délai non-zéro doit être >= interval"
+
#: extmod/ulab/code/linalg/linalg.c
msgid "norm is defined for 1D and 2D arrays"
-msgstr ""
+msgstr "norm est défini pour des tableaux 1D et 2D"
#: shared-bindings/_bleio/UUID.c
msgid "not a 128-bit UUID"
@@ -3303,7 +3358,11 @@ msgstr "chaîne de longueur impaire"
#: extmod/ulab/code/ulab_create.c
msgid "offset is too large"
-msgstr ""
+msgstr "offset est trop large"
+
+#: shared-bindings/dualbank/__init__.c
+msgid "offset must be >= 0"
+msgstr "offset doit être >= 0"
#: py/objstr.c py/objstrunicode.c
msgid "offset out of bounds"
@@ -3329,11 +3388,11 @@ msgstr "les opérandes ne pouvaient pas être diffusés ensemble"
#: extmod/ulab/code/ndarray.c
msgid "operation is implemented for 1D Boolean arrays only"
-msgstr ""
+msgstr "opération implémentée que pour des tableaux 1D booléennes"
#: extmod/ulab/code/numerical/numerical.c
msgid "operation is not implemented for flattened array"
-msgstr ""
+msgstr "l'opération n'est pas implémentée pour un tableau applatit"
#: extmod/ulab/code/numerical/numerical.c
msgid "operation is not implemented on ndarrays"
@@ -3474,7 +3533,7 @@ msgstr "la longueur requise est %d mais l'objet est long de %d"
#: extmod/ulab/code/ndarray_operators.c
msgid "results cannot be cast to specified type"
-msgstr ""
+msgstr "résultats ne peuvent être transformé au type spécifié"
#: py/compile.c
msgid "return annotation must be an identifier"
@@ -3496,7 +3555,7 @@ msgstr "rgb_pins[%d] n'est pas sur le même port que l'horloge"
#: extmod/ulab/code/numerical/numerical.c
msgid "roll argument must be an ndarray"
-msgstr ""
+msgstr "paramêtre roll doit être un ndarray"
#: py/objstr.c
msgid "rsplit(None,n)"
@@ -3512,7 +3571,7 @@ msgstr ""
#: ports/atmel-samd/common-hal/audiobusio/PDMIn.c
msgid "sampling rate out of range"
-msgstr "taux d'échantillonage hors gamme"
+msgstr "taux d'échantillonage hors bornes"
#: py/modmicropython.c
msgid "schedule stack full"
@@ -3524,7 +3583,7 @@ msgstr "compilation de script non supportée"
#: extmod/ulab/code/ndarray.c
msgid "shape must be a tuple"
-msgstr ""
+msgstr "forme doit être un tuple"
#: py/objstr.c
msgid "sign not allowed in string format specifier"
@@ -3641,7 +3700,7 @@ msgstr "erreur de syntaxe dans le descripteur d'uctypes"
#: shared-bindings/touchio/TouchIn.c
msgid "threshold must be in the range 0-65536"
-msgstr "le seuil doit être dans la gamme 0-65536"
+msgstr "le seuil doit être dans la portée 0-65536"
#: shared-bindings/time/__init__.c
msgid "time.struct_time() takes a 9-sequence"
@@ -3656,6 +3715,10 @@ msgstr "le délai d'expiration a dépassé la valeur maximale prise en charge"
msgid "timeout must be 0.0-100.0 seconds"
msgstr "le délai doit être compris entre 0.0 et 100.0 secondes"
+#: ports/nrf/common-hal/_bleio/Adapter.c
+msgid "timeout must be < 655.35 secs"
+msgstr "le délai (timeout) doit être < 655.35 secondes"
+
#: shared-bindings/_bleio/CharacteristicBuffer.c
msgid "timeout must be >= 0.0"
msgstr "'timeout' doit être >= 0.0"
@@ -3670,11 +3733,11 @@ msgstr "Délai d’expiration dépassé en attendant une carte v2"
#: shared-bindings/time/__init__.c
msgid "timestamp out of range for platform time_t"
-msgstr "'timestamp' hors bornes pour 'time_t' de la plateforme"
+msgstr "timestamp hors bornes pour 'time_t' de la plateforme"
#: extmod/ulab/code/ndarray.c
msgid "tobytes can be invoked for dense arrays only"
-msgstr ""
+msgstr "tobytes ne peut être appelé que pour des tableaux dense"
#: shared-module/struct/__init__.c
msgid "too many arguments provided with the given format"
@@ -3695,11 +3758,11 @@ msgstr "trapz n'est défini que pour des tableaux 1D de longueur égale"
#: ports/esp32s2/common-hal/alarm/pin/__init__.c
msgid "trigger level must be 0 or 1"
-msgstr ""
+msgstr "niveau du déclencheur doit être 0 ou 1"
#: extmod/ulab/code/linalg/linalg.c
msgid "tuple index out of range"
-msgstr "index du tuple hors gamme"
+msgstr "index du tuple hors de portée"
#: py/obj.c
msgid "tuple/list has wrong length"
@@ -3755,11 +3818,11 @@ msgstr "indentation inattendue"
#: py/bc.c
msgid "unexpected keyword argument"
-msgstr "argument nommé inattendu"
+msgstr "paramètre nommé inattendu"
#: py/bc.c py/objnamedtuple.c
msgid "unexpected keyword argument '%q'"
-msgstr "argument nommé '%q' inattendu"
+msgstr "paramètre nommé '%q' inattendu"
#: py/lexer.c
msgid "unicode name escapes"
@@ -3802,12 +3865,12 @@ msgstr "type %q non pris on charge"
#: py/emitinlinethumb.c
#, c-format
msgid "unsupported Thumb instruction '%s' with %d arguments"
-msgstr "instruction Thumb '%s' non supportée avec %d arguments"
+msgstr "instruction Thumb '%s' non supportée avec %d paramètres"
#: py/emitinlinextensa.c
#, c-format
msgid "unsupported Xtensa instruction '%s' with %d arguments"
-msgstr "instruction Xtensa '%s' non supportée avec %d arguments"
+msgstr "instruction Xtensa '%s' non supportée avec %d paramètres"
#: py/objstr.c
#, c-format
@@ -3841,11 +3904,11 @@ msgstr "les vecteurs doivent avoir la même longueur"
#: ports/esp32s2/common-hal/alarm/pin/__init__.c
msgid "wakeup conflict"
-msgstr ""
+msgstr "conflit au réveil"
#: ports/esp32s2/common-hal/watchdog/WatchDogTimer.c
msgid "watchdog not initialized"
-msgstr "chien de garde non initialisé"
+msgstr "chien de garde (watchdog) non initialisé"
#: shared-bindings/watchdog/WatchDogTimer.c
msgid "watchdog timeout must be greater than 0"
@@ -3857,15 +3920,15 @@ msgstr "width doit être plus grand que zero"
#: shared-bindings/_bleio/Adapter.c
msgid "window must be <= interval"
-msgstr "la fenêtre doit être <= intervalle"
+msgstr "la fenêtre (window) doit être <= intervalle (interval)"
#: extmod/ulab/code/numerical/numerical.c
msgid "wrong axis index"
-msgstr ""
+msgstr "index d'axe incorrecte"
#: extmod/ulab/code/ulab_create.c
msgid "wrong axis specified"
-msgstr ""
+msgstr "axe incorrecte spécifiée"
#: extmod/ulab/code/vector/vectorise.c
msgid "wrong input type"
@@ -3915,6 +3978,22 @@ msgstr "zi doit être de type float"
msgid "zi must be of shape (n_section, 2)"
msgstr "zi doit être de forme (n_section, 2)"
+#~ msgid ""
+#~ "\n"
+#~ "Code done running. Waiting for reload.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Fin d'exécution du code. En attente de rechargement.\n"
+
+#~ msgid "PinAlarm not yet implemented"
+#~ msgstr "PinAlarm pas encore implémenté"
+
+#~ msgid "Frequency captured is above capability. Capture Paused."
+#~ msgstr "La fréquence capturée est au delà des capacités. Capture en pause."
+
+#~ msgid "max_length must be > 0"
+#~ msgstr "max_length doit être > 0"
+
#~ msgid "Press any key to enter the REPL. Use CTRL-D to reload."
#~ msgstr ""
#~ "Appuyez sur une touche pour entrer sur REPL ou CTRL-D pour recharger."
diff --git a/locale/hi.po b/locale/hi.po
index 51b751c82..34d0238f6 100644
--- a/locale/hi.po
+++ b/locale/hi.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-12-14 12:59-0500\n"
+"POT-Creation-Date: 2020-12-22 22:54+0530\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
@@ -19,7 +19,13 @@ msgstr ""
#: main.c
msgid ""
"\n"
-"Code done running. Waiting for reload.\n"
+"Code done running.\n"
+msgstr ""
+
+#: main.c
+msgid ""
+"\n"
+"Code stopped by auto-reload.\n"
msgstr ""
#: supervisor/shared/safe_mode.c
@@ -533,6 +539,18 @@ msgstr ""
msgid "Call super().__init__() before accessing native object."
msgstr ""
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Can only alarm on RTC IO from deep sleep."
+msgstr ""
+
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Can only alarm on one low pin while others alarm high from deep sleep."
+msgstr ""
+
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Can only alarm on two low pins from deep sleep."
+msgstr ""
+
#: ports/nrf/common-hal/_bleio/Characteristic.c
msgid "Can't set CCCD on local Characteristic"
msgstr ""
@@ -565,6 +583,10 @@ msgstr ""
msgid "Cannot output both channels on the same pin"
msgstr ""
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Cannot pull on input-only pin."
+msgstr ""
+
#: shared-module/bitbangio/SPI.c
msgid "Cannot read without MISO pin."
msgstr ""
@@ -608,6 +630,10 @@ msgstr ""
msgid "Cannot vary frequency on a timer that is already in use"
msgstr ""
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Cannot wake on pin edge. Only level."
+msgstr ""
+
#: shared-module/bitbangio/SPI.c
msgid "Cannot write without MOSI pin."
msgstr ""
@@ -935,6 +961,10 @@ msgstr ""
msgid "Filters too complex"
msgstr ""
+#: ports/esp32s2/common-hal/dualbank/__init__.c
+msgid "Firmware image is invalid"
+msgstr ""
+
#: ports/cxd56/common-hal/camera/Camera.c
msgid "Format not supported"
msgstr ""
@@ -944,10 +974,6 @@ msgstr ""
msgid "Framebuffer requires %d bytes"
msgstr ""
-#: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c
-msgid "Frequency captured is above capability. Capture Paused."
-msgstr ""
-
#: ports/stm/common-hal/pwmio/PWMOut.c
msgid "Frequency must match existing PWMOut using this timer"
msgstr ""
@@ -1143,6 +1169,7 @@ msgstr ""
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
#: ports/atmel-samd/common-hal/touchio/TouchIn.c
+#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
#: ports/esp32s2/common-hal/touchio/TouchIn.c shared-bindings/pwmio/PWMOut.c
#: shared-module/rgbmatrix/RGBMatrix.c
msgid "Invalid pin"
@@ -1457,10 +1484,14 @@ msgid ""
"%d bpp given"
msgstr ""
-#: ports/esp32s2/common-hal/alarm/__init__.c
+#: ports/esp32s2/common-hal/alarm/time/TimeAlarm.c
msgid "Only one alarm.time alarm can be set."
msgstr ""
+#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
+msgid "Only one alarm.touch alarm can be set."
+msgstr ""
+
#: shared-module/displayio/ColorConverter.c
msgid "Only one color can be transparent at a time"
msgstr ""
@@ -1519,10 +1550,6 @@ msgstr ""
msgid "Pin number already reserved by EXTI"
msgstr ""
-#: ports/esp32s2/common-hal/alarm/__init__.c
-msgid "PinAlarm not yet implemented"
-msgstr ""
-
#: shared-bindings/rgbmatrix/RGBMatrix.c
#, c-format
msgid ""
@@ -1563,7 +1590,7 @@ msgid "Press any key to enter the REPL. Use CTRL-D to reload.\n"
msgstr ""
#: main.c
-msgid "Pretending to deep sleep until alarm, any key or file write.\n"
+msgid "Pretending to deep sleep until alarm, CTRL-C or file write.\n"
msgstr ""
#: shared-bindings/digitalio/DigitalInOut.c
@@ -1835,6 +1862,10 @@ msgstr ""
msgid "Total data to write is larger than outgoing_packet_length"
msgstr ""
+#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
+msgid "TouchAlarm not available in light sleep"
+msgstr ""
+
#: py/obj.c
msgid "Traceback (most recent call last):\n"
msgstr ""
@@ -1982,6 +2013,10 @@ msgstr ""
msgid "Unsupported pull value."
msgstr ""
+#: ports/esp32s2/common-hal/dualbank/__init__.c
+msgid "Update Failed"
+msgstr ""
+
#: ports/nrf/common-hal/_bleio/Characteristic.c
#: ports/nrf/common-hal/_bleio/Descriptor.c
msgid "Value length != required fixed length"
@@ -3000,7 +3035,7 @@ msgid "max_length must be 0-%d when fixed_length is %s"
msgstr ""
#: shared-bindings/_bleio/Characteristic.c shared-bindings/_bleio/Descriptor.c
-msgid "max_length must be > 0"
+msgid "max_length must be >= 0"
msgstr ""
#: extmod/ulab/code/ndarray.c
@@ -3138,6 +3173,14 @@ msgstr ""
msgid "non-keyword arg after keyword arg"
msgstr ""
+#: ports/nrf/common-hal/_bleio/Adapter.c
+msgid "non-zero timeout must be > 0.01"
+msgstr ""
+
+#: shared-bindings/_bleio/Adapter.c
+msgid "non-zero timeout must be >= interval"
+msgstr ""
+
#: extmod/ulab/code/linalg/linalg.c
msgid "norm is defined for 1D and 2D arrays"
msgstr ""
@@ -3210,6 +3253,10 @@ msgstr ""
msgid "offset is too large"
msgstr ""
+#: shared-bindings/dualbank/__init__.c
+msgid "offset must be >= 0"
+msgstr ""
+
#: py/objstr.c py/objstrunicode.c
msgid "offset out of bounds"
msgstr ""
@@ -3555,6 +3602,10 @@ msgstr ""
msgid "timeout must be 0.0-100.0 seconds"
msgstr ""
+#: ports/nrf/common-hal/_bleio/Adapter.c
+msgid "timeout must be < 655.35 secs"
+msgstr ""
+
#: shared-bindings/_bleio/CharacteristicBuffer.c
msgid "timeout must be >= 0.0"
msgstr ""
diff --git a/locale/it_IT.po b/locale/it_IT.po
index 80dabb625..dbefb87a8 100644
--- a/locale/it_IT.po
+++ b/locale/it_IT.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-12-14 12:59-0500\n"
+"POT-Creation-Date: 2020-12-22 22:54+0530\n"
"PO-Revision-Date: 2018-10-02 16:27+0200\n"
"Last-Translator: Enrico Paganin <enrico.paganin@mail.com>\n"
"Language-Team: \n"
@@ -18,7 +18,13 @@ msgstr ""
#: main.c
msgid ""
"\n"
-"Code done running. Waiting for reload.\n"
+"Code done running.\n"
+msgstr ""
+
+#: main.c
+msgid ""
+"\n"
+"Code stopped by auto-reload.\n"
msgstr ""
#: supervisor/shared/safe_mode.c
@@ -539,6 +545,18 @@ msgstr ""
msgid "Call super().__init__() before accessing native object."
msgstr ""
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Can only alarm on RTC IO from deep sleep."
+msgstr ""
+
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Can only alarm on one low pin while others alarm high from deep sleep."
+msgstr ""
+
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Can only alarm on two low pins from deep sleep."
+msgstr ""
+
#: ports/nrf/common-hal/_bleio/Characteristic.c
msgid "Can't set CCCD on local Characteristic"
msgstr ""
@@ -572,6 +590,10 @@ msgstr ""
msgid "Cannot output both channels on the same pin"
msgstr "Impossibile dare in output entrambi i canal sullo stesso pin"
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Cannot pull on input-only pin."
+msgstr ""
+
#: shared-module/bitbangio/SPI.c
msgid "Cannot read without MISO pin."
msgstr "Impossibile leggere senza pin MISO."
@@ -616,6 +638,10 @@ msgstr "Impossibile ricavare la grandezza scalare di sizeof inequivocabilmente"
msgid "Cannot vary frequency on a timer that is already in use"
msgstr ""
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Cannot wake on pin edge. Only level."
+msgstr ""
+
#: shared-module/bitbangio/SPI.c
msgid "Cannot write without MOSI pin."
msgstr "Impossibile scrivere senza pin MOSI."
@@ -948,6 +974,10 @@ msgstr "File esistente"
msgid "Filters too complex"
msgstr ""
+#: ports/esp32s2/common-hal/dualbank/__init__.c
+msgid "Firmware image is invalid"
+msgstr ""
+
#: ports/cxd56/common-hal/camera/Camera.c
msgid "Format not supported"
msgstr ""
@@ -957,10 +987,6 @@ msgstr ""
msgid "Framebuffer requires %d bytes"
msgstr ""
-#: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c
-msgid "Frequency captured is above capability. Capture Paused."
-msgstr ""
-
#: ports/stm/common-hal/pwmio/PWMOut.c
msgid "Frequency must match existing PWMOut using this timer"
msgstr ""
@@ -1160,6 +1186,7 @@ msgstr "Fase non valida"
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
#: ports/atmel-samd/common-hal/touchio/TouchIn.c
+#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
#: ports/esp32s2/common-hal/touchio/TouchIn.c shared-bindings/pwmio/PWMOut.c
#: shared-module/rgbmatrix/RGBMatrix.c
msgid "Invalid pin"
@@ -1480,10 +1507,14 @@ msgid ""
"%d bpp given"
msgstr ""
-#: ports/esp32s2/common-hal/alarm/__init__.c
+#: ports/esp32s2/common-hal/alarm/time/TimeAlarm.c
msgid "Only one alarm.time alarm can be set."
msgstr ""
+#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
+msgid "Only one alarm.touch alarm can be set."
+msgstr ""
+
#: shared-module/displayio/ColorConverter.c
msgid "Only one color can be transparent at a time"
msgstr ""
@@ -1547,10 +1578,6 @@ msgstr ""
msgid "Pin number already reserved by EXTI"
msgstr ""
-#: ports/esp32s2/common-hal/alarm/__init__.c
-msgid "PinAlarm not yet implemented"
-msgstr ""
-
#: shared-bindings/rgbmatrix/RGBMatrix.c
#, c-format
msgid ""
@@ -1592,7 +1619,7 @@ msgid "Press any key to enter the REPL. Use CTRL-D to reload.\n"
msgstr ""
#: main.c
-msgid "Pretending to deep sleep until alarm, any key or file write.\n"
+msgid "Pretending to deep sleep until alarm, CTRL-C or file write.\n"
msgstr ""
#: shared-bindings/digitalio/DigitalInOut.c
@@ -1867,6 +1894,10 @@ msgstr "Troppi schermi"
msgid "Total data to write is larger than outgoing_packet_length"
msgstr ""
+#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
+msgid "TouchAlarm not available in light sleep"
+msgstr ""
+
#: py/obj.c
msgid "Traceback (most recent call last):\n"
msgstr "Traceback (chiamata più recente per ultima):\n"
@@ -2016,6 +2047,10 @@ msgstr "Operazione non supportata"
msgid "Unsupported pull value."
msgstr "Valore di pull non supportato."
+#: ports/esp32s2/common-hal/dualbank/__init__.c
+msgid "Update Failed"
+msgstr ""
+
#: ports/nrf/common-hal/_bleio/Characteristic.c
#: ports/nrf/common-hal/_bleio/Descriptor.c
msgid "Value length != required fixed length"
@@ -3050,7 +3085,7 @@ msgid "max_length must be 0-%d when fixed_length is %s"
msgstr ""
#: shared-bindings/_bleio/Characteristic.c shared-bindings/_bleio/Descriptor.c
-msgid "max_length must be > 0"
+msgid "max_length must be >= 0"
msgstr ""
#: extmod/ulab/code/ndarray.c
@@ -3189,6 +3224,14 @@ msgstr "argomento non nominato dopo */**"
msgid "non-keyword arg after keyword arg"
msgstr "argomento non nominato seguito da argomento nominato"
+#: ports/nrf/common-hal/_bleio/Adapter.c
+msgid "non-zero timeout must be > 0.01"
+msgstr ""
+
+#: shared-bindings/_bleio/Adapter.c
+msgid "non-zero timeout must be >= interval"
+msgstr ""
+
#: extmod/ulab/code/linalg/linalg.c
msgid "norm is defined for 1D and 2D arrays"
msgstr ""
@@ -3263,6 +3306,10 @@ msgstr "stringa di lunghezza dispari"
msgid "offset is too large"
msgstr ""
+#: shared-bindings/dualbank/__init__.c
+msgid "offset must be >= 0"
+msgstr ""
+
#: py/objstr.c py/objstrunicode.c
#, fuzzy
msgid "offset out of bounds"
@@ -3615,6 +3662,10 @@ msgstr ""
msgid "timeout must be 0.0-100.0 seconds"
msgstr ""
+#: ports/nrf/common-hal/_bleio/Adapter.c
+msgid "timeout must be < 655.35 secs"
+msgstr ""
+
#: shared-bindings/_bleio/CharacteristicBuffer.c
#, fuzzy
msgid "timeout must be >= 0.0"
diff --git a/locale/ja.po b/locale/ja.po
index 226a8e179..6ccdc158e 100644
--- a/locale/ja.po
+++ b/locale/ja.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-12-14 12:59-0500\n"
+"POT-Creation-Date: 2020-12-22 22:54+0530\n"
"PO-Revision-Date: 2020-11-27 18:34+0000\n"
"Last-Translator: sporeball <sporeballdev@gmail.com>\n"
"Language-Team: none\n"
@@ -21,10 +21,14 @@ msgstr ""
#: main.c
msgid ""
"\n"
-"Code done running. Waiting for reload.\n"
+"Code done running.\n"
msgstr ""
+
+#: main.c
+msgid ""
"\n"
-"コードの実行が完了しました。リロードを待っています。\n"
+"Code stopped by auto-reload.\n"
+msgstr ""
#: supervisor/shared/safe_mode.c
msgid ""
@@ -544,6 +548,18 @@ msgstr ""
"ネイティブオブジェクトにアクセスする前にsuper().__init__()を呼び出してくださ"
"い"
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Can only alarm on RTC IO from deep sleep."
+msgstr ""
+
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Can only alarm on one low pin while others alarm high from deep sleep."
+msgstr ""
+
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Can only alarm on two low pins from deep sleep."
+msgstr ""
+
#: ports/nrf/common-hal/_bleio/Characteristic.c
msgid "Can't set CCCD on local Characteristic"
msgstr "ローカルのCharacteristicにはCCCDを設定できません"
@@ -576,6 +592,10 @@ msgstr ""
msgid "Cannot output both channels on the same pin"
msgstr "同じピン上の両チャネルに出力できません"
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Cannot pull on input-only pin."
+msgstr ""
+
#: shared-module/bitbangio/SPI.c
msgid "Cannot read without MISO pin."
msgstr "MISOピンなしで読み込めません"
@@ -619,6 +639,10 @@ msgstr "スカラのサイズを曖昧さなしに取得できません"
msgid "Cannot vary frequency on a timer that is already in use"
msgstr "使用中のタイマー上では周波数を変えられません"
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Cannot wake on pin edge. Only level."
+msgstr ""
+
#: shared-module/bitbangio/SPI.c
msgid "Cannot write without MOSI pin."
msgstr "MOSIピンなしで書き込みできません"
@@ -948,6 +972,10 @@ msgstr "ファイルが存在します"
msgid "Filters too complex"
msgstr ""
+#: ports/esp32s2/common-hal/dualbank/__init__.c
+msgid "Firmware image is invalid"
+msgstr ""
+
#: ports/cxd56/common-hal/camera/Camera.c
msgid "Format not supported"
msgstr "非対応の形式"
@@ -957,10 +985,6 @@ msgstr "非対応の形式"
msgid "Framebuffer requires %d bytes"
msgstr ""
-#: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c
-msgid "Frequency captured is above capability. Capture Paused."
-msgstr "キャプチャした周波数は能力を超えています。キャプチャ停止"
-
#: ports/stm/common-hal/pwmio/PWMOut.c
msgid "Frequency must match existing PWMOut using this timer"
msgstr "このタイマーを使う既存のPWMOutと周波数を一致させる必要があります"
@@ -1158,6 +1182,7 @@ msgstr "不正なphase"
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
#: ports/atmel-samd/common-hal/touchio/TouchIn.c
+#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
#: ports/esp32s2/common-hal/touchio/TouchIn.c shared-bindings/pwmio/PWMOut.c
#: shared-module/rgbmatrix/RGBMatrix.c
msgid "Invalid pin"
@@ -1474,10 +1499,14 @@ msgid ""
"%d bpp given"
msgstr ""
-#: ports/esp32s2/common-hal/alarm/__init__.c
+#: ports/esp32s2/common-hal/alarm/time/TimeAlarm.c
msgid "Only one alarm.time alarm can be set."
msgstr ""
+#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
+msgid "Only one alarm.touch alarm can be set."
+msgstr ""
+
#: shared-module/displayio/ColorConverter.c
msgid "Only one color can be transparent at a time"
msgstr ""
@@ -1537,10 +1566,6 @@ msgstr "ピンはハードウェア割り込みに対応していなければな
msgid "Pin number already reserved by EXTI"
msgstr "ピン番号はすでにEXTIによって予約されています"
-#: ports/esp32s2/common-hal/alarm/__init__.c
-msgid "PinAlarm not yet implemented"
-msgstr ""
-
#: shared-bindings/rgbmatrix/RGBMatrix.c
#, c-format
msgid ""
@@ -1581,7 +1606,7 @@ msgid "Press any key to enter the REPL. Use CTRL-D to reload.\n"
msgstr ""
#: main.c
-msgid "Pretending to deep sleep until alarm, any key or file write.\n"
+msgid "Pretending to deep sleep until alarm, CTRL-C or file write.\n"
msgstr ""
#: shared-bindings/digitalio/DigitalInOut.c
@@ -1859,6 +1884,10 @@ msgstr ""
msgid "Total data to write is larger than outgoing_packet_length"
msgstr ""
+#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
+msgid "TouchAlarm not available in light sleep"
+msgstr ""
+
#: py/obj.c
msgid "Traceback (most recent call last):\n"
msgstr "トレースバック(最新の呼び出しが末尾):\n"
@@ -2007,6 +2036,10 @@ msgstr "非対応の操作"
msgid "Unsupported pull value."
msgstr "非対応のpull値"
+#: ports/esp32s2/common-hal/dualbank/__init__.c
+msgid "Update Failed"
+msgstr ""
+
#: ports/nrf/common-hal/_bleio/Characteristic.c
#: ports/nrf/common-hal/_bleio/Descriptor.c
msgid "Value length != required fixed length"
@@ -3030,8 +3063,8 @@ msgid "max_length must be 0-%d when fixed_length is %s"
msgstr ""
#: shared-bindings/_bleio/Characteristic.c shared-bindings/_bleio/Descriptor.c
-msgid "max_length must be > 0"
-msgstr "max_lengthは0より大きくなければなりません"
+msgid "max_length must be >= 0"
+msgstr ""
#: extmod/ulab/code/ndarray.c
msgid "maximum number of dimensions is 4"
@@ -3168,6 +3201,14 @@ msgstr "*/** の後に非キーワード引数は置けません"
msgid "non-keyword arg after keyword arg"
msgstr "キーワード引数の後に非キーワード引数は置けません"
+#: ports/nrf/common-hal/_bleio/Adapter.c
+msgid "non-zero timeout must be > 0.01"
+msgstr ""
+
+#: shared-bindings/_bleio/Adapter.c
+msgid "non-zero timeout must be >= interval"
+msgstr ""
+
#: extmod/ulab/code/linalg/linalg.c
msgid "norm is defined for 1D and 2D arrays"
msgstr ""
@@ -3240,6 +3281,10 @@ msgstr "奇数長の文字列"
msgid "offset is too large"
msgstr ""
+#: shared-bindings/dualbank/__init__.c
+msgid "offset must be >= 0"
+msgstr ""
+
#: py/objstr.c py/objstrunicode.c
msgid "offset out of bounds"
msgstr ""
@@ -3588,6 +3633,10 @@ msgstr "タイムアウト長は対応する最大値を超えています"
msgid "timeout must be 0.0-100.0 seconds"
msgstr "timeoutは0.0〜100.0秒でなければなりません"
+#: ports/nrf/common-hal/_bleio/Adapter.c
+msgid "timeout must be < 655.35 secs"
+msgstr ""
+
#: shared-bindings/_bleio/CharacteristicBuffer.c
msgid "timeout must be >= 0.0"
msgstr "timeoutは0.0以上でなければなりません"
@@ -3847,6 +3896,19 @@ msgstr "ziはfloat値でなければなりません"
msgid "zi must be of shape (n_section, 2)"
msgstr ""
+#~ msgid ""
+#~ "\n"
+#~ "Code done running. Waiting for reload.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "コードの実行が完了しました。リロードを待っています。\n"
+
+#~ msgid "Frequency captured is above capability. Capture Paused."
+#~ msgstr "キャプチャした周波数は能力を超えています。キャプチャ停止"
+
+#~ msgid "max_length must be > 0"
+#~ msgstr "max_lengthは0より大きくなければなりません"
+
#~ msgid "Press any key to enter the REPL. Use CTRL-D to reload."
#~ msgstr "何らかのキーを押すとREPLに入ります。CTRL-Dでリロード。"
diff --git a/locale/ko.po b/locale/ko.po
index 456cb47e6..c2272af7b 100644
--- a/locale/ko.po
+++ b/locale/ko.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-12-14 12:59-0500\n"
+"POT-Creation-Date: 2020-12-22 22:54+0530\n"
"PO-Revision-Date: 2020-10-05 12:12+0000\n"
"Last-Translator: Michal Čihař <michal@cihar.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -20,10 +20,14 @@ msgstr ""
#: main.c
msgid ""
"\n"
-"Code done running. Waiting for reload.\n"
+"Code done running.\n"
msgstr ""
+
+#: main.c
+msgid ""
"\n"
-"실행 완료 코드. 재장전 을 기다리는 중입니다\n"
+"Code stopped by auto-reload.\n"
+msgstr ""
#: supervisor/shared/safe_mode.c
msgid ""
@@ -538,6 +542,18 @@ msgstr ""
msgid "Call super().__init__() before accessing native object."
msgstr ""
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Can only alarm on RTC IO from deep sleep."
+msgstr ""
+
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Can only alarm on one low pin while others alarm high from deep sleep."
+msgstr ""
+
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Can only alarm on two low pins from deep sleep."
+msgstr ""
+
#: ports/nrf/common-hal/_bleio/Characteristic.c
msgid "Can't set CCCD on local Characteristic"
msgstr ""
@@ -570,6 +586,10 @@ msgstr ""
msgid "Cannot output both channels on the same pin"
msgstr ""
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Cannot pull on input-only pin."
+msgstr ""
+
#: shared-module/bitbangio/SPI.c
msgid "Cannot read without MISO pin."
msgstr "MISO핀이 없으면 읽을 수 없습니다"
@@ -613,6 +633,10 @@ msgstr ""
msgid "Cannot vary frequency on a timer that is already in use"
msgstr ""
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Cannot wake on pin edge. Only level."
+msgstr ""
+
#: shared-module/bitbangio/SPI.c
msgid "Cannot write without MOSI pin."
msgstr ""
@@ -940,6 +964,10 @@ msgstr ""
msgid "Filters too complex"
msgstr ""
+#: ports/esp32s2/common-hal/dualbank/__init__.c
+msgid "Firmware image is invalid"
+msgstr ""
+
#: ports/cxd56/common-hal/camera/Camera.c
msgid "Format not supported"
msgstr ""
@@ -949,10 +977,6 @@ msgstr ""
msgid "Framebuffer requires %d bytes"
msgstr ""
-#: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c
-msgid "Frequency captured is above capability. Capture Paused."
-msgstr ""
-
#: ports/stm/common-hal/pwmio/PWMOut.c
msgid "Frequency must match existing PWMOut using this timer"
msgstr ""
@@ -1148,6 +1172,7 @@ msgstr "단계가 잘못되었습니다"
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
#: ports/atmel-samd/common-hal/touchio/TouchIn.c
+#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
#: ports/esp32s2/common-hal/touchio/TouchIn.c shared-bindings/pwmio/PWMOut.c
#: shared-module/rgbmatrix/RGBMatrix.c
msgid "Invalid pin"
@@ -1462,10 +1487,14 @@ msgid ""
"%d bpp given"
msgstr ""
-#: ports/esp32s2/common-hal/alarm/__init__.c
+#: ports/esp32s2/common-hal/alarm/time/TimeAlarm.c
msgid "Only one alarm.time alarm can be set."
msgstr ""
+#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
+msgid "Only one alarm.touch alarm can be set."
+msgstr ""
+
#: shared-module/displayio/ColorConverter.c
msgid "Only one color can be transparent at a time"
msgstr ""
@@ -1524,10 +1553,6 @@ msgstr ""
msgid "Pin number already reserved by EXTI"
msgstr ""
-#: ports/esp32s2/common-hal/alarm/__init__.c
-msgid "PinAlarm not yet implemented"
-msgstr ""
-
#: shared-bindings/rgbmatrix/RGBMatrix.c
#, c-format
msgid ""
@@ -1568,7 +1593,7 @@ msgid "Press any key to enter the REPL. Use CTRL-D to reload.\n"
msgstr ""
#: main.c
-msgid "Pretending to deep sleep until alarm, any key or file write.\n"
+msgid "Pretending to deep sleep until alarm, CTRL-C or file write.\n"
msgstr ""
#: shared-bindings/digitalio/DigitalInOut.c
@@ -1840,6 +1865,10 @@ msgstr ""
msgid "Total data to write is larger than outgoing_packet_length"
msgstr ""
+#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
+msgid "TouchAlarm not available in light sleep"
+msgstr ""
+
#: py/obj.c
msgid "Traceback (most recent call last):\n"
msgstr ""
@@ -1988,6 +2017,10 @@ msgstr ""
msgid "Unsupported pull value."
msgstr ""
+#: ports/esp32s2/common-hal/dualbank/__init__.c
+msgid "Update Failed"
+msgstr ""
+
#: ports/nrf/common-hal/_bleio/Characteristic.c
#: ports/nrf/common-hal/_bleio/Descriptor.c
msgid "Value length != required fixed length"
@@ -3006,7 +3039,7 @@ msgid "max_length must be 0-%d when fixed_length is %s"
msgstr ""
#: shared-bindings/_bleio/Characteristic.c shared-bindings/_bleio/Descriptor.c
-msgid "max_length must be > 0"
+msgid "max_length must be >= 0"
msgstr ""
#: extmod/ulab/code/ndarray.c
@@ -3144,6 +3177,14 @@ msgstr ""
msgid "non-keyword arg after keyword arg"
msgstr ""
+#: ports/nrf/common-hal/_bleio/Adapter.c
+msgid "non-zero timeout must be > 0.01"
+msgstr ""
+
+#: shared-bindings/_bleio/Adapter.c
+msgid "non-zero timeout must be >= interval"
+msgstr ""
+
#: extmod/ulab/code/linalg/linalg.c
msgid "norm is defined for 1D and 2D arrays"
msgstr ""
@@ -3216,6 +3257,10 @@ msgstr ""
msgid "offset is too large"
msgstr ""
+#: shared-bindings/dualbank/__init__.c
+msgid "offset must be >= 0"
+msgstr ""
+
#: py/objstr.c py/objstrunicode.c
msgid "offset out of bounds"
msgstr ""
@@ -3561,6 +3606,10 @@ msgstr ""
msgid "timeout must be 0.0-100.0 seconds"
msgstr ""
+#: ports/nrf/common-hal/_bleio/Adapter.c
+msgid "timeout must be < 655.35 secs"
+msgstr ""
+
#: shared-bindings/_bleio/CharacteristicBuffer.c
msgid "timeout must be >= 0.0"
msgstr ""
@@ -3820,6 +3869,13 @@ msgstr ""
msgid "zi must be of shape (n_section, 2)"
msgstr ""
+#~ msgid ""
+#~ "\n"
+#~ "Code done running. Waiting for reload.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "실행 완료 코드. 재장전 을 기다리는 중입니다\n"
+
#~ msgid "%q indices must be integers, not %s"
#~ msgstr "%q 인덱스는 %s 가 아닌 정수 여야합니다"
diff --git a/locale/nl.po b/locale/nl.po
index 63ff70716..73aeade01 100644
--- a/locale/nl.po
+++ b/locale/nl.po
@@ -5,24 +5,28 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-12-14 12:59-0500\n"
-"PO-Revision-Date: 2020-10-27 16:47+0000\n"
-"Last-Translator: Jelle Jager <jell@jjc.id.au>\n"
+"POT-Creation-Date: 2020-12-22 22:54+0530\n"
+"PO-Revision-Date: 2020-12-23 20:14+0000\n"
+"Last-Translator: _fonzlate <vooralfred@gmail.com>\n"
"Language-Team: none\n"
"Language: nl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.3.2-dev\n"
+"X-Generator: Weblate 4.4.1-dev\n"
#: main.c
msgid ""
"\n"
-"Code done running. Waiting for reload.\n"
+"Code done running.\n"
msgstr ""
+
+#: main.c
+msgid ""
"\n"
-"Code is uitgevoerd. Wachten op herladen.\n"
+"Code stopped by auto-reload.\n"
+msgstr ""
#: supervisor/shared/safe_mode.c
msgid ""
@@ -294,7 +298,7 @@ msgstr "Adres type buiten bereik"
#: ports/esp32s2/common-hal/canio/CAN.c
msgid "All CAN peripherals are in use"
-msgstr ""
+msgstr "Alle CAN-peripherals zijn in gebruik"
#: ports/esp32s2/common-hal/busio/I2C.c ports/nrf/common-hal/busio/I2C.c
msgid "All I2C peripherals are in use"
@@ -304,7 +308,7 @@ msgstr "Alle I2C peripherals zijn in gebruik"
#: ports/esp32s2/common-hal/frequencyio/FrequencyIn.c
#: ports/esp32s2/common-hal/rotaryio/IncrementalEncoder.c
msgid "All PCNT units in use"
-msgstr ""
+msgstr "Alle PCNT-eenheden zijn in gebruik"
#: ports/atmel-samd/common-hal/canio/Listener.c
#: ports/esp32s2/common-hal/canio/Listener.c
@@ -427,7 +431,7 @@ msgstr ""
#: ports/esp32s2/common-hal/canio/CAN.c
msgid "Baudrate not supported by peripheral"
-msgstr ""
+msgstr "Baudrate wordt niet ondersteund door randapparatuur"
#: shared-module/displayio/Display.c
#: shared-module/framebufferio/FramebufferDisplay.c
@@ -441,7 +445,7 @@ msgstr "Bit clock en word select moeten een clock eenheid delen"
#: shared-bindings/rgbmatrix/RGBMatrix.c
#, c-format
msgid "Bit depth must be from 1 to 6 inclusive, not %d"
-msgstr ""
+msgstr "Bitdiepte moet tussen 1 en 6 liggen, niet %d"
#: shared-bindings/audiobusio/PDMIn.c
msgid "Bit depth must be multiple of 8."
@@ -540,6 +544,18 @@ msgstr "CBC blocks moeten meervouden van 16 bytes zijn"
msgid "Call super().__init__() before accessing native object."
msgstr "Roep super().__init__() aan voor toegang native object."
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Can only alarm on RTC IO from deep sleep."
+msgstr ""
+
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Can only alarm on one low pin while others alarm high from deep sleep."
+msgstr ""
+
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Can only alarm on two low pins from deep sleep."
+msgstr ""
+
#: ports/nrf/common-hal/_bleio/Characteristic.c
msgid "Can't set CCCD on local Characteristic"
msgstr "Kan CCCD niet toewijzen aan lokaal Characteristic"
@@ -573,6 +589,10 @@ msgstr ""
msgid "Cannot output both channels on the same pin"
msgstr "Output van beide kanalen kan niet op dezelfde pin"
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Cannot pull on input-only pin."
+msgstr ""
+
#: shared-module/bitbangio/SPI.c
msgid "Cannot read without MISO pin."
msgstr "Kan niet lezen zonder MISO pin."
@@ -617,6 +637,10 @@ msgstr "Kan niet ondubbelzinning sizeof scalar verkrijgen"
msgid "Cannot vary frequency on a timer that is already in use"
msgstr "Kan de frequentie van een timer die al in gebruik is niet variëren"
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Cannot wake on pin edge. Only level."
+msgstr ""
+
#: shared-module/bitbangio/SPI.c
msgid "Cannot write without MOSI pin."
msgstr "Kan niet schrijven zonder MOSI pin."
@@ -859,7 +883,7 @@ msgstr "Verwachtte een adres"
#: shared-bindings/alarm/__init__.c
msgid "Expected an alarm"
-msgstr ""
+msgstr "Verwachtte een alarm"
#: shared-module/_pixelbuf/PixelBuf.c
#, c-format
@@ -876,7 +900,7 @@ msgstr "FFT alleen voor ndarrays gedefineerd"
#: extmod/ulab/code/fft/fft.c
msgid "FFT is implemented for linear arrays only"
-msgstr ""
+msgstr "FFT is alleen geïmplementeerd voor lineaire arrays"
#: ports/esp32s2/common-hal/socketpool/Socket.c
msgid "Failed SSL handshake"
@@ -948,6 +972,10 @@ msgstr "Bestand bestaat"
msgid "Filters too complex"
msgstr "Filters zijn te complex"
+#: ports/esp32s2/common-hal/dualbank/__init__.c
+msgid "Firmware image is invalid"
+msgstr "Firmware image is ongeldig"
+
#: ports/cxd56/common-hal/camera/Camera.c
msgid "Format not supported"
msgstr "Formaat wordt niet ondersteund"
@@ -957,11 +985,6 @@ msgstr "Formaat wordt niet ondersteund"
msgid "Framebuffer requires %d bytes"
msgstr "Framebuffer benodigd %d bytes"
-#: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c
-msgid "Frequency captured is above capability. Capture Paused."
-msgstr ""
-"De vastgelegde frequentie is boven de capaciteit. Vastleggen gepauzeerd."
-
#: ports/stm/common-hal/pwmio/PWMOut.c
msgid "Frequency must match existing PWMOut using this timer"
msgstr ""
@@ -1010,7 +1033,7 @@ msgstr "I2SOut is niet beschikbaar"
#: ports/esp32s2/common-hal/alarm/pin/__init__.c
msgid "IOs 0, 2 & 4 do not support internal pullup in sleep"
-msgstr ""
+msgstr "IO's 0, 2 en 4 ondersteunen geen interne pullup in slaapstand"
#: shared-bindings/aesio/aes.c
#, c-format
@@ -1031,7 +1054,7 @@ msgstr "Incorrecte buffer grootte"
#: ports/esp32s2/common-hal/watchdog/WatchDogTimer.c
msgid "Initialization failed due to lack of memory"
-msgstr ""
+msgstr "De initialisatie is mislukt vanwege een gebrek aan geheugen"
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c
msgid "Input taking too long"
@@ -1098,7 +1121,7 @@ msgstr "Ongeldige PWM frequentie"
#: ports/esp32s2/common-hal/analogio/AnalogIn.c
msgid "Invalid Pin"
-msgstr ""
+msgstr "Ongeldige Pin"
#: py/moduerrno.c shared-module/rgbmatrix/RGBMatrix.c
msgid "Invalid argument"
@@ -1160,6 +1183,7 @@ msgstr "Ongeldige fase"
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
#: ports/atmel-samd/common-hal/touchio/TouchIn.c
+#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
#: ports/esp32s2/common-hal/touchio/TouchIn.c shared-bindings/pwmio/PWMOut.c
#: shared-module/rgbmatrix/RGBMatrix.c
msgid "Invalid pin"
@@ -1296,7 +1320,7 @@ msgstr "Een meervoud van 6 rgb pinnen moet worden gebruikt, niet %d"
#: ports/esp32s2/common-hal/nvm/ByteArray.c
msgid "NVS Error"
-msgstr ""
+msgstr "NVS-fout"
#: py/parse.c
msgid "Name too long"
@@ -1319,7 +1343,7 @@ msgstr "Geen DMA kanaal gevonden"
#: shared-module/adafruit_bus_device/I2CDevice.c
#, c-format
msgid "No I2C device at address: %x"
-msgstr ""
+msgstr "Geen I2C-apparaat op adres: %x"
#: ports/esp32s2/common-hal/busio/SPI.c ports/mimxrt10xx/common-hal/busio/SPI.c
#: ports/stm/common-hal/busio/SPI.c
@@ -1461,7 +1485,7 @@ msgstr "Alleen IPv4 adressen worden ondersteund"
#: ports/esp32s2/common-hal/socketpool/SocketPool.c
msgid "Only IPv4 sockets supported"
-msgstr ""
+msgstr "Alleen IPv4-sockets ondersteund"
#: shared-module/displayio/OnDiskBitmap.c
#, c-format
@@ -1480,8 +1504,12 @@ msgstr ""
"Alleen monochrome en 4bpp of 8bpp, en 16bpp of grotere geïndiceerde BMP's "
"zijn ondersteund: %d bpp is gegeven"
-#: ports/esp32s2/common-hal/alarm/__init__.c
+#: ports/esp32s2/common-hal/alarm/time/TimeAlarm.c
msgid "Only one alarm.time alarm can be set."
+msgstr "Slechts één alarm.time alarm kan worden ingesteld."
+
+#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
+msgid "Only one alarm.touch alarm can be set."
msgstr ""
#: shared-module/displayio/ColorConverter.c
@@ -1545,10 +1573,6 @@ msgstr "Pin moet hardware interrupts ondersteunen"
msgid "Pin number already reserved by EXTI"
msgstr "Pin nummer al gereserveerd door EXTI"
-#: ports/esp32s2/common-hal/alarm/__init__.c
-msgid "PinAlarm not yet implemented"
-msgstr ""
-
#: shared-bindings/rgbmatrix/RGBMatrix.c
#, c-format
msgid ""
@@ -1594,9 +1618,11 @@ msgstr "Prefix buffer moet op de heap zijn"
#: main.c
msgid "Press any key to enter the REPL. Use CTRL-D to reload.\n"
msgstr ""
+"Druk een willekeurige toets om de REPL te starten. Gebruik CTRL+D om te "
+"herstarten.\n"
#: main.c
-msgid "Pretending to deep sleep until alarm, any key or file write.\n"
+msgid "Pretending to deep sleep until alarm, CTRL-C or file write.\n"
msgstr ""
#: shared-bindings/digitalio/DigitalInOut.c
@@ -1769,7 +1795,7 @@ msgstr "Geef op zijn minst 1 UART pin op"
#: shared-bindings/alarm/time/TimeAlarm.c
msgid "Supply one of monotonic_time or epoch_time"
-msgstr ""
+msgstr "Geef monotonic_time of epoch_time"
#: shared-bindings/gnss/GNSS.c
msgid "System entry must be gnss.SatelliteSystem"
@@ -1844,7 +1870,7 @@ msgstr "Tile breedte moet exact de bitmap breedte verdelen"
#: shared-bindings/alarm/time/TimeAlarm.c
msgid "Time is in the past."
-msgstr ""
+msgstr "Tijdstip ligt in het verleden."
#: ports/nrf/common-hal/_bleio/Adapter.c
#, c-format
@@ -1878,6 +1904,10 @@ msgstr "Teveel beeldschermen"
msgid "Total data to write is larger than outgoing_packet_length"
msgstr "Totale data om te schrijven is groter dan outgoing_packet_length"
+#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
+msgid "TouchAlarm not available in light sleep"
+msgstr ""
+
#: py/obj.c
msgid "Traceback (most recent call last):\n"
msgstr "Traceback (meest recente call laatst):\n"
@@ -1959,7 +1989,7 @@ msgstr "Niet in staat om naar nvm te schrijven."
#: shared-bindings/alarm/SleepMemory.c
msgid "Unable to write to sleep_memory."
-msgstr ""
+msgstr "Kan niet naar sleep_memory schrijven."
#: ports/nrf/common-hal/_bleio/UUID.c
msgid "Unexpected nrfx uuid type"
@@ -2027,6 +2057,10 @@ msgstr "Niet-ondersteunde operatie"
msgid "Unsupported pull value."
msgstr "Niet-ondersteunde pull-waarde."
+#: ports/esp32s2/common-hal/dualbank/__init__.c
+msgid "Update Failed"
+msgstr "Update Mislukt"
+
#: ports/nrf/common-hal/_bleio/Characteristic.c
#: ports/nrf/common-hal/_bleio/Descriptor.c
msgid "Value length != required fixed length"
@@ -2094,7 +2128,7 @@ msgstr "WiFi wachtwoord moet tussen 8 en 63 karakters bevatten"
#: main.c
msgid "Woken up by alarm.\n"
-msgstr ""
+msgstr "Gewekt door alarm.\n"
#: ports/nrf/common-hal/_bleio/PacketBuffer.c
msgid "Writes not supported on Characteristic"
@@ -2151,7 +2185,7 @@ msgstr "argsort argument moet een ndarray zijn"
#: extmod/ulab/code/numerical/numerical.c
msgid "argsort is not implemented for flattened arrays"
-msgstr ""
+msgstr "argsort wordt niet geïmplementeerd voor vlakke arrays"
#: py/runtime.c
msgid "argument has wrong type"
@@ -2176,7 +2210,7 @@ msgstr "argumenten moeten ndarrays zijn"
#: extmod/ulab/code/ndarray.c
msgid "array and index length must be equal"
-msgstr ""
+msgstr "array en indexlengte moeten gelijk zijn"
#: py/objarray.c shared-bindings/alarm/SleepMemory.c
#: shared-bindings/nvm/ByteArray.c
@@ -2185,7 +2219,7 @@ msgstr "array/bytes vereist aan de rechterkant"
#: extmod/ulab/code/numerical/numerical.c
msgid "attempt to get (arg)min/(arg)max of empty sequence"
-msgstr ""
+msgstr "verzoek om (arg)min.(arg)max te krijgen van lege reeks"
#: extmod/ulab/code/numerical/numerical.c
msgid "attempt to get argmin/argmax of an empty sequence"
@@ -2197,15 +2231,15 @@ msgstr "attributen nog niet ondersteund"
#: extmod/ulab/code/numerical/numerical.c
msgid "axis is out of bounds"
-msgstr ""
+msgstr "as is buiten bereik"
#: extmod/ulab/code/numerical/numerical.c
msgid "axis must be None, or an integer"
-msgstr ""
+msgstr "as moet None of een integer zijn"
#: extmod/ulab/code/numerical/numerical.c
msgid "axis too long"
-msgstr ""
+msgstr "as te lang"
#: py/builtinevex.c
msgid "bad compile mode"
@@ -2411,7 +2445,7 @@ msgstr "kan niet schakelen tussen handmatige en automatische veld specificatie"
#: extmod/ulab/code/ndarray_operators.c
msgid "cannot cast output with casting rule"
-msgstr ""
+msgstr "kan uitvoer niet converteren zonder conversieregel"
#: py/objtype.c
msgid "cannot create '%q' instances"
@@ -2512,7 +2546,7 @@ msgstr "kon SD kaart versie niet bepalen"
#: extmod/ulab/code/numerical/numerical.c
msgid "cross is defined for 1D arrays of length 3"
-msgstr ""
+msgstr "kruis wordt gedefinieerd voor 1D-arrays van lengte 3"
#: extmod/ulab/code/approx/approx.c
msgid "data must be iterable"
@@ -2555,7 +2589,7 @@ msgstr "diff argument moet een ndarray zijn"
#: extmod/ulab/code/numerical/numerical.c
msgid "differentiation order out of range"
-msgstr ""
+msgstr "differentiatievolgorde buiten bereik"
#: py/modmath.c py/objfloat.c py/objint_longlong.c py/objint_mpz.c py/runtime.c
#: shared-bindings/math/__init__.c
@@ -2588,7 +2622,7 @@ msgstr "end_x moet een int zijn"
#: shared-bindings/alarm/time/TimeAlarm.c
msgid "epoch_time not supported on this board"
-msgstr ""
+msgstr "epoch_time niet ondersteund op dit bord"
#: ports/nrf/common-hal/busio/UART.c
#, c-format
@@ -2678,7 +2712,7 @@ msgstr "eerste argument moet een functie zijn"
#: extmod/ulab/code/ulab_create.c
msgid "first argument must be a tuple of ndarrays"
-msgstr ""
+msgstr "eerste argument moet een tupel van ndarrays zijn"
#: extmod/ulab/code/ndarray.c
msgid "first argument must be an iterable"
@@ -2735,7 +2769,7 @@ msgstr "functie heeft hetzelfde teken aan beide uiteinden van het interval"
#: extmod/ulab/code/ndarray.c
msgid "function is defined for ndarrays only"
-msgstr ""
+msgstr "functie is alleen gedefinieerd voor ndarrays"
#: py/argcheck.c
#, c-format
@@ -2832,7 +2866,7 @@ msgstr "inline assembler moet een functie zijn"
#: extmod/ulab/code/ndarray.c
msgid "input and output shapes are not compatible"
-msgstr ""
+msgstr "in- en uitvoervormen zijn niet compatibel"
#: extmod/ulab/code/ulab_create.c
msgid "input argument must be an integer or a 2-tuple"
@@ -2844,7 +2878,7 @@ msgstr "invoer array lengte moet een macht van 2 zijn"
#: extmod/ulab/code/ulab_create.c
msgid "input arrays are not compatible"
-msgstr ""
+msgstr "input arrays zijn niet compatibel"
#: extmod/ulab/code/poly/poly.c
msgid "input data must be an iterable"
@@ -2860,19 +2894,19 @@ msgstr "invoermatrix is singulier"
#: extmod/ulab/code/user/user.c
msgid "input must be a dense ndarray"
-msgstr ""
+msgstr "invoer moet een gesloten ndarray zijn"
#: extmod/ulab/code/ulab_create.c
msgid "input must be a tensor of rank 2"
-msgstr ""
+msgstr "invoer moet een tensor van rang 2 zijn"
#: extmod/ulab/code/ulab_create.c extmod/ulab/code/user/user.c
msgid "input must be an ndarray"
-msgstr ""
+msgstr "invoer moet een ndarray zijn"
#: extmod/ulab/code/filter/filter.c
msgid "input must be one-dimensional"
-msgstr ""
+msgstr "invoer moet eendimensionaal zijn"
#: extmod/ulab/code/linalg/linalg.c
msgid "input must be square matrix"
@@ -2888,7 +2922,7 @@ msgstr "invoervectors moeten van gelijke lengte zijn"
#: extmod/ulab/code/poly/poly.c
msgid "inputs are not iterable"
-msgstr ""
+msgstr "invoer is niet itereerbaar"
#: py/parsenum.c
msgid "int() arg 2 must be >= 2 and <= 36"
@@ -2962,7 +2996,7 @@ msgstr "ongeldige syntax voor nummer"
#: ports/esp32s2/common-hal/alarm/pin/__init__.c
msgid "io must be rtc io"
-msgstr ""
+msgstr "io moet rtc io zijn"
#: py/objtype.c
msgid "issubclass() arg 1 must be a class"
@@ -3033,7 +3067,7 @@ msgstr "long int wordt niet ondersteund in deze build"
#: ports/esp32s2/common-hal/canio/CAN.c
msgid "loopback + silent mode not supported by peripheral"
-msgstr ""
+msgstr "loopback + silent mode wordt niet ondersteund door randapparaat"
#: py/parse.c
msgid "malformed f-string"
@@ -3062,12 +3096,12 @@ msgid "max_length must be 0-%d when fixed_length is %s"
msgstr "max_length moet 0-%d zijn als fixed_length %s is"
#: shared-bindings/_bleio/Characteristic.c shared-bindings/_bleio/Descriptor.c
-msgid "max_length must be > 0"
-msgstr "max_length moet >0 zijn"
+msgid "max_length must be >= 0"
+msgstr ""
#: extmod/ulab/code/ndarray.c
msgid "maximum number of dimensions is 4"
-msgstr ""
+msgstr "maximaal aantal dimensies is 4"
#: py/runtime.c
msgid "maximum recursion depth exceeded"
@@ -3075,11 +3109,11 @@ msgstr "maximale recursiediepte overschreden"
#: extmod/ulab/code/approx/approx.c
msgid "maxiter must be > 0"
-msgstr ""
+msgstr "maxiter moet groter dan 0 zijn"
#: extmod/ulab/code/approx/approx.c
msgid "maxiter should be > 0"
-msgstr ""
+msgstr "maxiter moet groter dan 0 zijn"
#: py/runtime.c
#, c-format
@@ -3200,9 +3234,17 @@ msgstr "niet-trefwoord argument na */**"
msgid "non-keyword arg after keyword arg"
msgstr "niet-trefwoord argument na trefwoord argument"
+#: ports/nrf/common-hal/_bleio/Adapter.c
+msgid "non-zero timeout must be > 0.01"
+msgstr ""
+
+#: shared-bindings/_bleio/Adapter.c
+msgid "non-zero timeout must be >= interval"
+msgstr ""
+
#: extmod/ulab/code/linalg/linalg.c
msgid "norm is defined for 1D and 2D arrays"
-msgstr ""
+msgstr "norm is gedefinieerd voor 1D en 2D arrays"
#: shared-bindings/_bleio/UUID.c
msgid "not a 128-bit UUID"
@@ -3270,7 +3312,11 @@ msgstr "string met oneven lengte"
#: extmod/ulab/code/ulab_create.c
msgid "offset is too large"
-msgstr ""
+msgstr "compensatie is te groot"
+
+#: shared-bindings/dualbank/__init__.c
+msgid "offset must be >= 0"
+msgstr "compensatie moet groter of gelijk 0 zijn"
#: py/objstr.c py/objstrunicode.c
msgid "offset out of bounds"
@@ -3296,11 +3342,11 @@ msgstr "operands konden niet samen verzonden worden"
#: extmod/ulab/code/ndarray.c
msgid "operation is implemented for 1D Boolean arrays only"
-msgstr ""
+msgstr "operatie is alleen geïmplementeerd voor 1D Booleaanse arrays"
#: extmod/ulab/code/numerical/numerical.c
msgid "operation is not implemented for flattened array"
-msgstr ""
+msgstr "operatie is niet geïmplementeerd voor vlakke array"
#: extmod/ulab/code/numerical/numerical.c
msgid "operation is not implemented on ndarrays"
@@ -3439,7 +3485,7 @@ msgstr "gevraagde lengte is %d maar object heeft lengte %d"
#: extmod/ulab/code/ndarray_operators.c
msgid "results cannot be cast to specified type"
-msgstr ""
+msgstr "resultaat kan niet naar gespecificeerd type geconverteerd worden"
#: py/compile.c
msgid "return annotation must be an identifier"
@@ -3461,7 +3507,7 @@ msgstr "rgb_pins[%d] bevindt zich niet op dezelfde poort als klok"
#: extmod/ulab/code/numerical/numerical.c
msgid "roll argument must be an ndarray"
-msgstr ""
+msgstr "roll argument moet een ndarray zijn"
#: py/objstr.c
msgid "rsplit(None,n)"
@@ -3489,7 +3535,7 @@ msgstr "scriptcompilatie wordt niet ondersteund"
#: extmod/ulab/code/ndarray.c
msgid "shape must be a tuple"
-msgstr ""
+msgstr "vorm moet een tupel zijn"
#: py/objstr.c
msgid "sign not allowed in string format specifier"
@@ -3620,6 +3666,10 @@ msgstr "time-outduur is groter dan de ondersteunde maximale waarde"
msgid "timeout must be 0.0-100.0 seconds"
msgstr "timeout moet tussen 0.0 en 100.0 seconden zijn"
+#: ports/nrf/common-hal/_bleio/Adapter.c
+msgid "timeout must be < 655.35 secs"
+msgstr ""
+
#: shared-bindings/_bleio/CharacteristicBuffer.c
msgid "timeout must be >= 0.0"
msgstr "timeout moet groter dan 0.0 zijn"
@@ -3638,7 +3688,7 @@ msgstr "timestamp buiten bereik voor platform time_t"
#: extmod/ulab/code/ndarray.c
msgid "tobytes can be invoked for dense arrays only"
-msgstr ""
+msgstr "tobytes kunnen alleen ingeroepen worden voor gesloten arrays"
#: shared-module/struct/__init__.c
msgid "too many arguments provided with the given format"
@@ -3659,7 +3709,7 @@ msgstr "trapz is gedefinieerd voor eendimensionale arrays van gelijke lengte"
#: ports/esp32s2/common-hal/alarm/pin/__init__.c
msgid "trigger level must be 0 or 1"
-msgstr ""
+msgstr "triggerniveau moet 0 of 1 zijn"
#: extmod/ulab/code/linalg/linalg.c
msgid "tuple index out of range"
@@ -3672,12 +3722,12 @@ msgstr "tuple of lijst heeft onjuiste lengte"
#: ports/esp32s2/common-hal/canio/CAN.c
#, c-format
msgid "twai_driver_install returned esp-idf error #%d"
-msgstr ""
+msgstr "twai_driver_install geeft esp-idf fout #%d"
#: ports/esp32s2/common-hal/canio/CAN.c
#, c-format
msgid "twai_start returned esp-idf error #%d"
-msgstr ""
+msgstr "twai_start geeft esp-idf error #%d"
#: ports/atmel-samd/common-hal/busio/UART.c
#: ports/esp32s2/common-hal/busio/UART.c ports/nrf/common-hal/busio/UART.c
@@ -3805,11 +3855,11 @@ msgstr "vectoren moeten van gelijke lengte zijn"
#: ports/esp32s2/common-hal/alarm/pin/__init__.c
msgid "wakeup conflict"
-msgstr ""
+msgstr "conflict bij ontwaken"
#: ports/esp32s2/common-hal/watchdog/WatchDogTimer.c
msgid "watchdog not initialized"
-msgstr ""
+msgstr "watchdog niet geïnitialiseerd"
#: shared-bindings/watchdog/WatchDogTimer.c
msgid "watchdog timeout must be greater than 0"
@@ -3825,11 +3875,11 @@ msgstr "window moet <= interval zijn"
#: extmod/ulab/code/numerical/numerical.c
msgid "wrong axis index"
-msgstr ""
+msgstr "foute index voor as"
#: extmod/ulab/code/ulab_create.c
msgid "wrong axis specified"
-msgstr ""
+msgstr "onjuiste as gespecificeerd"
#: extmod/ulab/code/vector/vectorise.c
msgid "wrong input type"
@@ -3879,6 +3929,28 @@ msgstr "zi moet van type float zijn"
msgid "zi must be of shape (n_section, 2)"
msgstr "zi moet vorm (n_section, 2) hebben"
+#~ msgid ""
+#~ "\n"
+#~ "Code done running. Waiting for reload.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Code is uitgevoerd. Wachten op herladen.\n"
+
+#~ msgid "PinAlarm not yet implemented"
+#~ msgstr "PinAlarm nog niet geïmplementeerd"
+
+#~ msgid "Pretending to deep sleep until alarm, any key or file write.\n"
+#~ msgstr ""
+#~ "Simuleert diepe slaapstand tot alarm, een willekeurige toets of schrijven "
+#~ "naar bestand.\n"
+
+#~ msgid "Frequency captured is above capability. Capture Paused."
+#~ msgstr ""
+#~ "De vastgelegde frequentie is boven de capaciteit. Vastleggen gepauzeerd."
+
+#~ msgid "max_length must be > 0"
+#~ msgstr "max_length moet >0 zijn"
+
#~ msgid "Press any key to enter the REPL. Use CTRL-D to reload."
#~ msgstr ""
#~ "Druk een willekeurige toets om de REPL te starten. Gebruik CTRL+D om te "
diff --git a/locale/pl.po b/locale/pl.po
index 718bf50f4..deefb878b 100644
--- a/locale/pl.po
+++ b/locale/pl.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-12-14 12:59-0500\n"
+"POT-Creation-Date: 2020-12-22 22:54+0530\n"
"PO-Revision-Date: 2020-12-02 20:29+0000\n"
"Last-Translator: Maciej Stankiewicz <tawezik@gmail.com>\n"
"Language-Team: pl\n"
@@ -21,10 +21,14 @@ msgstr ""
#: main.c
msgid ""
"\n"
-"Code done running. Waiting for reload.\n"
+"Code done running.\n"
msgstr ""
+
+#: main.c
+msgid ""
"\n"
-"Kod wykonany. Czekam na przeładowanie.\n"
+"Code stopped by auto-reload.\n"
+msgstr ""
#: supervisor/shared/safe_mode.c
msgid ""
@@ -542,6 +546,18 @@ msgstr "Bloki CBC muszą być wielokrotnościami 16 bajtów"
msgid "Call super().__init__() before accessing native object."
msgstr ""
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Can only alarm on RTC IO from deep sleep."
+msgstr ""
+
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Can only alarm on one low pin while others alarm high from deep sleep."
+msgstr ""
+
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Can only alarm on two low pins from deep sleep."
+msgstr ""
+
#: ports/nrf/common-hal/_bleio/Characteristic.c
msgid "Can't set CCCD on local Characteristic"
msgstr ""
@@ -574,6 +590,10 @@ msgstr ""
msgid "Cannot output both channels on the same pin"
msgstr "Nie można mieć obu kanałów na tej samej nóżce"
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Cannot pull on input-only pin."
+msgstr ""
+
#: shared-module/bitbangio/SPI.c
msgid "Cannot read without MISO pin."
msgstr "Nie można czytać bez nóżki MISO."
@@ -617,6 +637,10 @@ msgstr "Wielkość skalara jest niejednoznaczna"
msgid "Cannot vary frequency on a timer that is already in use"
msgstr "Nie można zmieniać częstotliwości timera, który jest już używany"
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Cannot wake on pin edge. Only level."
+msgstr ""
+
#: shared-module/bitbangio/SPI.c
msgid "Cannot write without MOSI pin."
msgstr "Nie można pisać bez nóżki MOSI."
@@ -948,6 +972,10 @@ msgstr "Plik istnieje"
msgid "Filters too complex"
msgstr ""
+#: ports/esp32s2/common-hal/dualbank/__init__.c
+msgid "Firmware image is invalid"
+msgstr ""
+
#: ports/cxd56/common-hal/camera/Camera.c
msgid "Format not supported"
msgstr "Nie wspierany format"
@@ -957,10 +985,6 @@ msgstr "Nie wspierany format"
msgid "Framebuffer requires %d bytes"
msgstr "Bufor ramki wymaga %d bajtów"
-#: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c
-msgid "Frequency captured is above capability. Capture Paused."
-msgstr "Uzyskana częstotliwość jest niemożliwa. Spauzowano."
-
#: ports/stm/common-hal/pwmio/PWMOut.c
msgid "Frequency must match existing PWMOut using this timer"
msgstr ""
@@ -1158,6 +1182,7 @@ msgstr "Zła faza"
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
#: ports/atmel-samd/common-hal/touchio/TouchIn.c
+#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
#: ports/esp32s2/common-hal/touchio/TouchIn.c shared-bindings/pwmio/PWMOut.c
#: shared-module/rgbmatrix/RGBMatrix.c
msgid "Invalid pin"
@@ -1473,10 +1498,14 @@ msgid ""
"%d bpp given"
msgstr ""
-#: ports/esp32s2/common-hal/alarm/__init__.c
+#: ports/esp32s2/common-hal/alarm/time/TimeAlarm.c
msgid "Only one alarm.time alarm can be set."
msgstr ""
+#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
+msgid "Only one alarm.touch alarm can be set."
+msgstr ""
+
#: shared-module/displayio/ColorConverter.c
msgid "Only one color can be transparent at a time"
msgstr "W danym momencie przezroczysty może być tylko jeden kolor"
@@ -1535,10 +1564,6 @@ msgstr "Pin musi obsługiwać przerwania sprzętowe"
msgid "Pin number already reserved by EXTI"
msgstr ""
-#: ports/esp32s2/common-hal/alarm/__init__.c
-msgid "PinAlarm not yet implemented"
-msgstr ""
-
#: shared-bindings/rgbmatrix/RGBMatrix.c
#, c-format
msgid ""
@@ -1579,7 +1604,7 @@ msgid "Press any key to enter the REPL. Use CTRL-D to reload.\n"
msgstr ""
#: main.c
-msgid "Pretending to deep sleep until alarm, any key or file write.\n"
+msgid "Pretending to deep sleep until alarm, CTRL-C or file write.\n"
msgstr ""
#: shared-bindings/digitalio/DigitalInOut.c
@@ -1851,6 +1876,10 @@ msgstr "Zbyt wiele wyświetlaczy"
msgid "Total data to write is larger than outgoing_packet_length"
msgstr ""
+#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
+msgid "TouchAlarm not available in light sleep"
+msgstr ""
+
#: py/obj.c
msgid "Traceback (most recent call last):\n"
msgstr "Ślad wyjątku (najnowsze wywołanie na końcu):\n"
@@ -1998,6 +2027,10 @@ msgstr "Zła operacja"
msgid "Unsupported pull value."
msgstr "Zła wartość podciągnięcia."
+#: ports/esp32s2/common-hal/dualbank/__init__.c
+msgid "Update Failed"
+msgstr ""
+
#: ports/nrf/common-hal/_bleio/Characteristic.c
#: ports/nrf/common-hal/_bleio/Descriptor.c
msgid "Value length != required fixed length"
@@ -3023,8 +3056,8 @@ msgid "max_length must be 0-%d when fixed_length is %s"
msgstr ""
#: shared-bindings/_bleio/Characteristic.c shared-bindings/_bleio/Descriptor.c
-msgid "max_length must be > 0"
-msgstr "max_length musi być > 0"
+msgid "max_length must be >= 0"
+msgstr ""
#: extmod/ulab/code/ndarray.c
msgid "maximum number of dimensions is 4"
@@ -3161,6 +3194,14 @@ msgstr "argument nienazwany po */**"
msgid "non-keyword arg after keyword arg"
msgstr "argument nienazwany po nazwanym"
+#: ports/nrf/common-hal/_bleio/Adapter.c
+msgid "non-zero timeout must be > 0.01"
+msgstr ""
+
+#: shared-bindings/_bleio/Adapter.c
+msgid "non-zero timeout must be >= interval"
+msgstr ""
+
#: extmod/ulab/code/linalg/linalg.c
msgid "norm is defined for 1D and 2D arrays"
msgstr ""
@@ -3233,6 +3274,10 @@ msgstr "łańcuch o nieparzystej długości"
msgid "offset is too large"
msgstr ""
+#: shared-bindings/dualbank/__init__.c
+msgid "offset must be >= 0"
+msgstr ""
+
#: py/objstr.c py/objstrunicode.c
msgid "offset out of bounds"
msgstr "offset poza zakresem"
@@ -3580,6 +3625,10 @@ msgstr ""
msgid "timeout must be 0.0-100.0 seconds"
msgstr ""
+#: ports/nrf/common-hal/_bleio/Adapter.c
+msgid "timeout must be < 655.35 secs"
+msgstr ""
+
#: shared-bindings/_bleio/CharacteristicBuffer.c
msgid "timeout must be >= 0.0"
msgstr "timeout musi być >= 0.0"
@@ -3839,6 +3888,19 @@ msgstr ""
msgid "zi must be of shape (n_section, 2)"
msgstr ""
+#~ msgid ""
+#~ "\n"
+#~ "Code done running. Waiting for reload.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Kod wykonany. Czekam na przeładowanie.\n"
+
+#~ msgid "Frequency captured is above capability. Capture Paused."
+#~ msgstr "Uzyskana częstotliwość jest niemożliwa. Spauzowano."
+
+#~ msgid "max_length must be > 0"
+#~ msgstr "max_length musi być > 0"
+
#~ msgid "Press any key to enter the REPL. Use CTRL-D to reload."
#~ msgstr "Dowolny klawisz aby uruchomić konsolę. CTRL-D aby przeładować."
diff --git a/locale/pt_BR.po b/locale/pt_BR.po
index 8d3d54fab..73922b3d3 100644
--- a/locale/pt_BR.po
+++ b/locale/pt_BR.po
@@ -5,8 +5,8 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-12-14 12:59-0500\n"
-"PO-Revision-Date: 2020-12-16 17:00+0000\n"
+"POT-Creation-Date: 2020-12-22 22:54+0530\n"
+"PO-Revision-Date: 2021-01-01 04:29+0000\n"
"Last-Translator: Wellington Terumi Uemura <wellingtonuemura@gmail.com>\n"
"Language-Team: \n"
"Language: pt_BR\n"
@@ -14,15 +14,23 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
-"X-Generator: Weblate 4.4-dev\n"
+"X-Generator: Weblate 4.4.1-dev\n"
#: main.c
msgid ""
"\n"
-"Code done running. Waiting for reload.\n"
+"Code done running.\n"
msgstr ""
"\n"
-"O código concluiu a execução. Esperando pela recarga.\n"
+"O código concluiu a sua execução.\n"
+
+#: main.c
+msgid ""
+"\n"
+"Code stopped by auto-reload.\n"
+msgstr ""
+"\n"
+"O código parou através do auto-reload.\n"
#: supervisor/shared/safe_mode.c
msgid ""
@@ -548,6 +556,21 @@ msgstr "Os blocos CBC devem ter múltiplos de 16 bytes"
msgid "Call super().__init__() before accessing native object."
msgstr "Chame super().__init__() antes de acessar o objeto nativo."
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Can only alarm on RTC IO from deep sleep."
+msgstr "O alarme só pode acontecer no RTC IO a partir do deep sleep."
+
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Can only alarm on one low pin while others alarm high from deep sleep."
+msgstr ""
+"O alarme só pode acontecer em um pino com nível baixo enquanto os outros "
+"alarmes só com nível alto a partir do deep sleep."
+
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Can only alarm on two low pins from deep sleep."
+msgstr ""
+"O alarme só é possível nos dois pinos com sinal baixo a partir do deep sleep."
+
#: ports/nrf/common-hal/_bleio/Characteristic.c
msgid "Can't set CCCD on local Characteristic"
msgstr "Não é possível definir o CCCD com a característica local"
@@ -566,7 +589,7 @@ msgstr "Não é possível excluir valores"
#: ports/mimxrt10xx/common-hal/digitalio/DigitalInOut.c
#: ports/nrf/common-hal/digitalio/DigitalInOut.c
msgid "Cannot get pull while in output mode"
-msgstr "Não é possível obter pull enquanto está modo de saída"
+msgstr "Não é possível obter (pull) enquanto estiver no modo saída"
#: ports/nrf/common-hal/microcontroller/Processor.c
msgid "Cannot get temperature"
@@ -582,6 +605,10 @@ msgstr ""
msgid "Cannot output both channels on the same pin"
msgstr "Não é possível emitir os dois canais no mesmo pino"
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Cannot pull on input-only pin."
+msgstr "Não é possível obter (pull) nos pinos somente de entrada."
+
#: shared-module/bitbangio/SPI.c
msgid "Cannot read without MISO pin."
msgstr "Não é possível ler sem o pino MISO."
@@ -626,6 +653,10 @@ msgstr "Não é possível obter inequivocamente o tamanho do escalar"
msgid "Cannot vary frequency on a timer that is already in use"
msgstr "Não é possível variar a frequência em um timer que já esteja em uso"
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Cannot wake on pin edge. Only level."
+msgstr "Não é possível acordar (wake) no pino edge. Nível apenas."
+
#: shared-module/bitbangio/SPI.c
msgid "Cannot write without MOSI pin."
msgstr "Não é possível fazer a escrita sem um pino MOSI."
@@ -957,6 +988,10 @@ msgstr "Arquivo já existe"
msgid "Filters too complex"
msgstr "Os filtros são muito complexos"
+#: ports/esp32s2/common-hal/dualbank/__init__.c
+msgid "Firmware image is invalid"
+msgstr "A imagem do firmware é invalida"
+
#: ports/cxd56/common-hal/camera/Camera.c
msgid "Format not supported"
msgstr "O formato não é suportado"
@@ -966,11 +1001,6 @@ msgstr "O formato não é suportado"
msgid "Framebuffer requires %d bytes"
msgstr "O Framebuffer requer %d bytes"
-#: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c
-msgid "Frequency captured is above capability. Capture Paused."
-msgstr ""
-"A frequência capturada está acima da capacidade. A captura está em pausa."
-
#: ports/stm/common-hal/pwmio/PWMOut.c
msgid "Frequency must match existing PWMOut using this timer"
msgstr ""
@@ -1169,6 +1199,7 @@ msgstr "Fase Inválida"
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
#: ports/atmel-samd/common-hal/touchio/TouchIn.c
+#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
#: ports/esp32s2/common-hal/touchio/TouchIn.c shared-bindings/pwmio/PWMOut.c
#: shared-module/rgbmatrix/RGBMatrix.c
msgid "Invalid pin"
@@ -1323,7 +1354,7 @@ msgstr "Nenhum DAC no chip"
#: ports/atmel-samd/common-hal/audiobusio/I2SOut.c
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
msgid "No DMA channel found"
-msgstr "Nenhum canal DMA encontrado"
+msgstr "Nenhum canal DMA foi encontrado"
#: shared-module/adafruit_bus_device/I2CDevice.c
#, c-format
@@ -1488,10 +1519,14 @@ msgstr ""
"São compatíveis apenas os BMPs monocromáticos, indexados em 4bpp ou 8bpp e "
"16bpp ou superior: determinado %d bpp"
-#: ports/esp32s2/common-hal/alarm/__init__.c
+#: ports/esp32s2/common-hal/alarm/time/TimeAlarm.c
msgid "Only one alarm.time alarm can be set."
msgstr "Apenas um alarme alarm.time pode ser definido."
+#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
+msgid "Only one alarm.touch alarm can be set."
+msgstr "Apenas um alarme alarm.touch pode ser definido."
+
#: shared-module/displayio/ColorConverter.c
msgid "Only one color can be transparent at a time"
msgstr "Apenas uma cor pode ser transparente de cada vez"
@@ -1554,10 +1589,6 @@ msgstr "O pino deve ser compatível com as interrupções do hardware"
msgid "Pin number already reserved by EXTI"
msgstr "Número do PIN já está reservado através da EXTI"
-#: ports/esp32s2/common-hal/alarm/__init__.c
-msgid "PinAlarm not yet implemented"
-msgstr "PinAlarm ainda não foi implementado"
-
#: shared-bindings/rgbmatrix/RGBMatrix.c
#, c-format
msgid ""
@@ -1608,9 +1639,9 @@ msgstr ""
"Pressione qualquer tecla para entrar no REPL. Use CTRL-D para recarregar.\n"
#: main.c
-msgid "Pretending to deep sleep until alarm, any key or file write.\n"
+msgid "Pretending to deep sleep until alarm, CTRL-C or file write.\n"
msgstr ""
-"Simular o deep sleep até o alarme, até qualquer chave ou até a escrita do "
+"Tentando entrar no deep sleep até o alarme, pressione CTRL-C ou grave o "
"arquivo.\n"
#: shared-bindings/digitalio/DigitalInOut.c
@@ -1896,6 +1927,10 @@ msgid "Total data to write is larger than outgoing_packet_length"
msgstr ""
"O total dos dados que serão gravados é maior que outgoing_packet_length"
+#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
+msgid "TouchAlarm not available in light sleep"
+msgstr "O TouchAlarm não está disponívle no modo light sleep"
+
#: py/obj.c
msgid "Traceback (most recent call last):\n"
msgstr "Traceback (a última chamada mais recente):\n"
@@ -2045,6 +2080,10 @@ msgstr "Operação não suportada"
msgid "Unsupported pull value."
msgstr "O valor pull não é compatível."
+#: ports/esp32s2/common-hal/dualbank/__init__.c
+msgid "Update Failed"
+msgstr "A atualização falou"
+
#: ports/nrf/common-hal/_bleio/Characteristic.c
#: ports/nrf/common-hal/_bleio/Descriptor.c
msgid "Value length != required fixed length"
@@ -3085,8 +3124,8 @@ msgid "max_length must be 0-%d when fixed_length is %s"
msgstr "o max_length deve ser 0-%d quando Fixed_length for %s"
#: shared-bindings/_bleio/Characteristic.c shared-bindings/_bleio/Descriptor.c
-msgid "max_length must be > 0"
-msgstr "max_length deve ser > 0"
+msgid "max_length must be >= 0"
+msgstr "max_length deve ser >= 0"
#: extmod/ulab/code/ndarray.c
msgid "maximum number of dimensions is 4"
@@ -3225,6 +3264,14 @@ msgstr "um arg sem palavra-chave após */ **"
msgid "non-keyword arg after keyword arg"
msgstr "um arg não-palavra-chave após a palavra-chave arg"
+#: ports/nrf/common-hal/_bleio/Adapter.c
+msgid "non-zero timeout must be > 0.01"
+msgstr "o tempo limite não zero deve ser > 0.01"
+
+#: shared-bindings/_bleio/Adapter.c
+msgid "non-zero timeout must be >= interval"
+msgstr "o tempo limite não zero deve ser >= intervalo"
+
#: extmod/ulab/code/linalg/linalg.c
msgid "norm is defined for 1D and 2D arrays"
msgstr "a norma é definida para matrizes 1D e 2D"
@@ -3297,6 +3344,10 @@ msgstr "sequência com comprimento ímpar"
msgid "offset is too large"
msgstr "o offset é muito grande"
+#: shared-bindings/dualbank/__init__.c
+msgid "offset must be >= 0"
+msgstr "o offset deve ser >= 0"
+
#: py/objstr.c py/objstrunicode.c
msgid "offset out of bounds"
msgstr "desvio fora dos limites"
@@ -3649,6 +3700,10 @@ msgstr "a duração do tempo limite excedeu o valor máximo suportado"
msgid "timeout must be 0.0-100.0 seconds"
msgstr "o tempo limite deve ser entre 0.0 a 100.0 segundos"
+#: ports/nrf/common-hal/_bleio/Adapter.c
+msgid "timeout must be < 655.35 secs"
+msgstr "o tempo limite deve ser < 655.35 seg"
+
#: shared-bindings/_bleio/CharacteristicBuffer.c
msgid "timeout must be >= 0.0"
msgstr "o tempo limite deve ser >= 0,0"
@@ -3908,6 +3963,28 @@ msgstr "zi deve ser de um tipo float"
msgid "zi must be of shape (n_section, 2)"
msgstr "zi deve estar na forma (n_section, 2)"
+#~ msgid ""
+#~ "\n"
+#~ "Code done running. Waiting for reload.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "O código concluiu a execução. Esperando pela recarga.\n"
+
+#~ msgid "PinAlarm not yet implemented"
+#~ msgstr "PinAlarm ainda não foi implementado"
+
+#~ msgid "Pretending to deep sleep until alarm, any key or file write.\n"
+#~ msgstr ""
+#~ "Simular o deep sleep até o alarme, até qualquer chave ou até a escrita do "
+#~ "arquivo.\n"
+
+#~ msgid "Frequency captured is above capability. Capture Paused."
+#~ msgstr ""
+#~ "A frequência capturada está acima da capacidade. A captura está em pausa."
+
+#~ msgid "max_length must be > 0"
+#~ msgstr "max_length deve ser > 0"
+
#~ msgid "Press any key to enter the REPL. Use CTRL-D to reload."
#~ msgstr ""
#~ "Pressione qualquer tecla para entrar no REPL. Use CTRL-D para recarregar."
diff --git a/locale/sv.po b/locale/sv.po
index a608866e3..71b1c3a86 100644
--- a/locale/sv.po
+++ b/locale/sv.po
@@ -5,8 +5,8 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-12-14 12:59-0500\n"
-"PO-Revision-Date: 2020-12-07 20:26+0000\n"
+"POT-Creation-Date: 2020-12-22 22:54+0530\n"
+"PO-Revision-Date: 2020-12-28 17:59+0000\n"
"Last-Translator: Jonny Bergdahl <jonny@bergdahl.it>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: sv\n"
@@ -14,15 +14,19 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.4-dev\n"
+"X-Generator: Weblate 4.4.1-dev\n"
#: main.c
msgid ""
"\n"
-"Code done running. Waiting for reload.\n"
+"Code done running.\n"
msgstr ""
+
+#: main.c
+msgid ""
"\n"
-"Koden har kört klart. Väntar på omladdning.\n"
+"Code stopped by auto-reload.\n"
+msgstr ""
#: supervisor/shared/safe_mode.c
msgid ""
@@ -540,6 +544,18 @@ msgstr "CBC-block måste vara multiplar om 16 byte"
msgid "Call super().__init__() before accessing native object."
msgstr "Anropa super().__init__() innan du använder det ursprungliga objektet."
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Can only alarm on RTC IO from deep sleep."
+msgstr ""
+
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Can only alarm on one low pin while others alarm high from deep sleep."
+msgstr ""
+
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Can only alarm on two low pins from deep sleep."
+msgstr ""
+
#: ports/nrf/common-hal/_bleio/Characteristic.c
msgid "Can't set CCCD on local Characteristic"
msgstr "Kan inte ställa in CCCD på lokal karaktäristik"
@@ -573,6 +589,10 @@ msgstr ""
msgid "Cannot output both channels on the same pin"
msgstr "Det går inte att mata ut båda kanalerna på samma pinne"
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Cannot pull on input-only pin."
+msgstr ""
+
#: shared-module/bitbangio/SPI.c
msgid "Cannot read without MISO pin."
msgstr "Kan inte läsa utan MISO-pinne."
@@ -617,6 +637,10 @@ msgstr "Kan inte entydigt få sizeof scalar"
msgid "Cannot vary frequency on a timer that is already in use"
msgstr "Det går inte att ändra frekvensen på en timer som redan används"
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Cannot wake on pin edge. Only level."
+msgstr ""
+
#: shared-module/bitbangio/SPI.c
msgid "Cannot write without MOSI pin."
msgstr "Kan inte skriva utan MOSI-pinne."
@@ -948,6 +972,10 @@ msgstr "Filen finns redan"
msgid "Filters too complex"
msgstr "Filter för komplexa"
+#: ports/esp32s2/common-hal/dualbank/__init__.c
+msgid "Firmware image is invalid"
+msgstr "Firmware-avbilden är ogiltig"
+
#: ports/cxd56/common-hal/camera/Camera.c
msgid "Format not supported"
msgstr "Formatet stöds inte"
@@ -957,10 +985,6 @@ msgstr "Formatet stöds inte"
msgid "Framebuffer requires %d bytes"
msgstr "Framebuffer kräver %d byte"
-#: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c
-msgid "Frequency captured is above capability. Capture Paused."
-msgstr "Infångningsfrekvens är för hög. Infångning pausad."
-
#: ports/stm/common-hal/pwmio/PWMOut.c
msgid "Frequency must match existing PWMOut using this timer"
msgstr "Frekvensen måste matcha befintlig PWMOut med denna timer"
@@ -1096,7 +1120,7 @@ msgstr "Ogiltig PWM-frekvens"
#: ports/esp32s2/common-hal/analogio/AnalogIn.c
msgid "Invalid Pin"
-msgstr ""
+msgstr "Ogiltig pinne"
#: py/moduerrno.c shared-module/rgbmatrix/RGBMatrix.c
msgid "Invalid argument"
@@ -1158,6 +1182,7 @@ msgstr "Ogiltig fas"
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
#: ports/atmel-samd/common-hal/touchio/TouchIn.c
+#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
#: ports/esp32s2/common-hal/touchio/TouchIn.c shared-bindings/pwmio/PWMOut.c
#: shared-module/rgbmatrix/RGBMatrix.c
msgid "Invalid pin"
@@ -1478,10 +1503,14 @@ msgstr ""
"Endast monokrom, indexerad 4 bpp eller 8 bpp och 16 bpp eller högre BMP: er "
"stöds: %d bpp angiven"
-#: ports/esp32s2/common-hal/alarm/__init__.c
+#: ports/esp32s2/common-hal/alarm/time/TimeAlarm.c
msgid "Only one alarm.time alarm can be set."
msgstr "Endast ett alarm.time kan ställas in."
+#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
+msgid "Only one alarm.touch alarm can be set."
+msgstr ""
+
#: shared-module/displayio/ColorConverter.c
msgid "Only one color can be transparent at a time"
msgstr "Bara en färg kan vara genomskinlig i taget"
@@ -1542,10 +1571,6 @@ msgstr "Pinnen måste stödja hårdvaruavbrott"
msgid "Pin number already reserved by EXTI"
msgstr "PInn-nummer redan reserverat av EXTI"
-#: ports/esp32s2/common-hal/alarm/__init__.c
-msgid "PinAlarm not yet implemented"
-msgstr "PinAlarm är inte implementerat ännu"
-
#: shared-bindings/rgbmatrix/RGBMatrix.c
#, c-format
msgid ""
@@ -1591,9 +1616,11 @@ msgstr "Prefixbufferten måste finnas på heap"
#: main.c
msgid "Press any key to enter the REPL. Use CTRL-D to reload.\n"
msgstr ""
+"Tryck på valfri tangent för att gå in i REPL. Använd CTRL-D för att ladda "
+"om.\n"
#: main.c
-msgid "Pretending to deep sleep until alarm, any key or file write.\n"
+msgid "Pretending to deep sleep until alarm, CTRL-C or file write.\n"
msgstr ""
#: shared-bindings/digitalio/DigitalInOut.c
@@ -1875,6 +1902,10 @@ msgstr "För många displayer"
msgid "Total data to write is larger than outgoing_packet_length"
msgstr "Total data som ska skrivas är större än outgoing_packet_length"
+#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
+msgid "TouchAlarm not available in light sleep"
+msgstr ""
+
#: py/obj.c
msgid "Traceback (most recent call last):\n"
msgstr "Traceback (senaste anrop):\n"
@@ -1956,7 +1987,7 @@ msgstr "Det gick inte att skriva till nvm."
#: shared-bindings/alarm/SleepMemory.c
msgid "Unable to write to sleep_memory."
-msgstr ""
+msgstr "Det gick inte att skriva till sleep_memory."
#: ports/nrf/common-hal/_bleio/UUID.c
msgid "Unexpected nrfx uuid type"
@@ -2024,6 +2055,10 @@ msgstr "Åtgärd som inte stöds"
msgid "Unsupported pull value."
msgstr "Ogiltigt Pull-värde."
+#: ports/esp32s2/common-hal/dualbank/__init__.c
+msgid "Update Failed"
+msgstr "Uppdateringen misslyckades"
+
#: ports/nrf/common-hal/_bleio/Characteristic.c
#: ports/nrf/common-hal/_bleio/Descriptor.c
msgid "Value length != required fixed length"
@@ -2088,7 +2123,7 @@ msgstr "WiFi-lösenord måste vara mellan 8 och 63 tecken"
#: main.c
msgid "Woken up by alarm.\n"
-msgstr ""
+msgstr "Vaknade av larm.\n"
#: ports/nrf/common-hal/_bleio/PacketBuffer.c
msgid "Writes not supported on Characteristic"
@@ -3056,8 +3091,8 @@ msgid "max_length must be 0-%d when fixed_length is %s"
msgstr "max_length måste vara 0-%d när fixed_length är %s"
#: shared-bindings/_bleio/Characteristic.c shared-bindings/_bleio/Descriptor.c
-msgid "max_length must be > 0"
-msgstr "max_length måste vara > 0"
+msgid "max_length must be >= 0"
+msgstr "max_length måste vara >= 0"
#: extmod/ulab/code/ndarray.c
msgid "maximum number of dimensions is 4"
@@ -3194,6 +3229,14 @@ msgstr "icke nyckelord arg efter * / **"
msgid "non-keyword arg after keyword arg"
msgstr "icke nyckelord arg efter nyckelord arg"
+#: ports/nrf/common-hal/_bleio/Adapter.c
+msgid "non-zero timeout must be > 0.01"
+msgstr "Icke-noll timeout måste vara > 0.01"
+
+#: shared-bindings/_bleio/Adapter.c
+msgid "non-zero timeout must be >= interval"
+msgstr "Icke-noll timeout måste vara >= intervall"
+
#: extmod/ulab/code/linalg/linalg.c
msgid "norm is defined for 1D and 2D arrays"
msgstr "norm är definierad för 1D- och 2D-matriser"
@@ -3266,6 +3309,10 @@ msgstr "sträng har udda längd"
msgid "offset is too large"
msgstr "offset är för stor"
+#: shared-bindings/dualbank/__init__.c
+msgid "offset must be >= 0"
+msgstr "offset måste vara >= 0"
+
#: py/objstr.c py/objstrunicode.c
msgid "offset out of bounds"
msgstr "offset utanför gränserna"
@@ -3614,6 +3661,10 @@ msgstr "timeout-längd överskred det maximala värde som stöds"
msgid "timeout must be 0.0-100.0 seconds"
msgstr "timeout måste vara 0.0-100.0 sekunder"
+#: ports/nrf/common-hal/_bleio/Adapter.c
+msgid "timeout must be < 655.35 secs"
+msgstr "timeout måste vara < 655,35 sekunder"
+
#: shared-bindings/_bleio/CharacteristicBuffer.c
msgid "timeout must be >= 0.0"
msgstr "timeout måste vara >= 0.0"
@@ -3873,6 +3924,25 @@ msgstr "zi måste vara av typ float"
msgid "zi must be of shape (n_section, 2)"
msgstr "zi måste vara i formen (n_section, 2)"
+#~ msgid ""
+#~ "\n"
+#~ "Code done running. Waiting for reload.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Koden har kört klart. Väntar på omladdning.\n"
+
+#~ msgid "PinAlarm not yet implemented"
+#~ msgstr "PinAlarm är inte implementerat ännu"
+
+#~ msgid "Pretending to deep sleep until alarm, any key or file write.\n"
+#~ msgstr "Fingerar djup sömn tills larm, valfri tangent eller filskrivning.\n"
+
+#~ msgid "Frequency captured is above capability. Capture Paused."
+#~ msgstr "Infångningsfrekvens är för hög. Infångning pausad."
+
+#~ msgid "max_length must be > 0"
+#~ msgstr "max_length måste vara > 0"
+
#~ msgid "Press any key to enter the REPL. Use CTRL-D to reload."
#~ msgstr ""
#~ "Tryck på valfri knapp för att gå in i REPL. Använd CTRL-D för att ladda "
diff --git a/locale/zh_Latn_pinyin.po b/locale/zh_Latn_pinyin.po
index 1cbcc709f..b372b067a 100644
--- a/locale/zh_Latn_pinyin.po
+++ b/locale/zh_Latn_pinyin.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: circuitpython-cn\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-12-14 12:59-0500\n"
+"POT-Creation-Date: 2020-12-22 22:54+0530\n"
"PO-Revision-Date: 2020-11-19 01:28+0000\n"
"Last-Translator: hexthat <hexthat@gmail.com>\n"
"Language-Team: Chinese Hanyu Pinyin\n"
@@ -20,10 +20,14 @@ msgstr ""
#: main.c
msgid ""
"\n"
-"Code done running. Waiting for reload.\n"
+"Code done running.\n"
msgstr ""
+
+#: main.c
+msgid ""
"\n"
-"Dàimǎ yǐ wánchéng yùnxíng. Zhèngzài děngdài chóngxīn jiāzài.\n"
+"Code stopped by auto-reload.\n"
+msgstr ""
#: supervisor/shared/safe_mode.c
msgid ""
@@ -542,6 +546,18 @@ msgstr "CBC kuài bì xū shì 16 zì jié de bèi shù"
msgid "Call super().__init__() before accessing native object."
msgstr "Zài fǎngwèn běn jī wùjiàn zhīqián diàoyòng super().__init__()."
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Can only alarm on RTC IO from deep sleep."
+msgstr ""
+
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Can only alarm on one low pin while others alarm high from deep sleep."
+msgstr ""
+
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Can only alarm on two low pins from deep sleep."
+msgstr ""
+
#: ports/nrf/common-hal/_bleio/Characteristic.c
msgid "Can't set CCCD on local Characteristic"
msgstr "Wúfǎ jiāng CCCD shèzhì wéi běndì tèzhēng"
@@ -574,6 +590,10 @@ msgstr "Nín wúfǎ sǎomiáo kuòzhǎn de, kě liánjiē de guǎnggào."
msgid "Cannot output both channels on the same pin"
msgstr "Wúfǎ shūchū tóng yīgè yǐn jiǎo shàng de liǎng gè píndào"
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Cannot pull on input-only pin."
+msgstr ""
+
#: shared-module/bitbangio/SPI.c
msgid "Cannot read without MISO pin."
msgstr "Wúfǎ dòu qǔ méiyǒu MISO de yǐn jiǎo."
@@ -617,6 +637,10 @@ msgstr "Wúfǎ míngquè de huòdé biāoliàng de dàxiǎo"
msgid "Cannot vary frequency on a timer that is already in use"
msgstr "Wúfǎ gēnggǎi yǐ zài shǐyòng de jìshí qì shàng de pínlǜ"
+#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+msgid "Cannot wake on pin edge. Only level."
+msgstr ""
+
#: shared-module/bitbangio/SPI.c
msgid "Cannot write without MOSI pin."
msgstr "Wúfǎ xiě rù MOSI de yǐn jiǎo."
@@ -946,6 +970,10 @@ msgstr "Wénjiàn cúnzài"
msgid "Filters too complex"
msgstr "guò lǜ qì tài fù zá"
+#: ports/esp32s2/common-hal/dualbank/__init__.c
+msgid "Firmware image is invalid"
+msgstr ""
+
#: ports/cxd56/common-hal/camera/Camera.c
msgid "Format not supported"
msgstr "Bù zhīyuán géshì"
@@ -955,10 +983,6 @@ msgstr "Bù zhīyuán géshì"
msgid "Framebuffer requires %d bytes"
msgstr "zhēn huǎn chōng qū xū yào %d zì jié"
-#: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c
-msgid "Frequency captured is above capability. Capture Paused."
-msgstr "Pínlǜ bǔhuò gāo yú nénglì. Bǔhuò zàntíng."
-
#: ports/stm/common-hal/pwmio/PWMOut.c
msgid "Frequency must match existing PWMOut using this timer"
msgstr "Pínlǜ bìxū yǔ shǐyòng cǐ jìshí qì de xiàn yǒu PWMOut xiāng pǐpèi"
@@ -1156,6 +1180,7 @@ msgstr "Jiēduàn wúxiào"
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
#: ports/atmel-samd/common-hal/touchio/TouchIn.c
+#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
#: ports/esp32s2/common-hal/touchio/TouchIn.c shared-bindings/pwmio/PWMOut.c
#: shared-module/rgbmatrix/RGBMatrix.c
msgid "Invalid pin"
@@ -1475,10 +1500,14 @@ msgstr ""
"Jǐn zhīchí dān sè, suǒyǐn wéi 4bpp huò 8bpp yǐjí 16bpp huò gèng gāo de BMP: "
"Gěi chū %d bpp"
-#: ports/esp32s2/common-hal/alarm/__init__.c
+#: ports/esp32s2/common-hal/alarm/time/TimeAlarm.c
msgid "Only one alarm.time alarm can be set."
msgstr ""
+#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
+msgid "Only one alarm.touch alarm can be set."
+msgstr ""
+
#: shared-module/displayio/ColorConverter.c
msgid "Only one color can be transparent at a time"
msgstr "Yīcì zhǐ néng yǒuyī zhǒng yánsè shì tòumíng de"
@@ -1538,10 +1567,6 @@ msgstr "Yǐn jiǎo bìxū zhīchí yìngjiàn zhōngduàn"
msgid "Pin number already reserved by EXTI"
msgstr "Zhēn hào yǐ bèi EXTI bǎoliú"
-#: ports/esp32s2/common-hal/alarm/__init__.c
-msgid "PinAlarm not yet implemented"
-msgstr ""
-
#: shared-bindings/rgbmatrix/RGBMatrix.c
#, c-format
msgid ""
@@ -1586,7 +1611,7 @@ msgid "Press any key to enter the REPL. Use CTRL-D to reload.\n"
msgstr ""
#: main.c
-msgid "Pretending to deep sleep until alarm, any key or file write.\n"
+msgid "Pretending to deep sleep until alarm, CTRL-C or file write.\n"
msgstr ""
#: shared-bindings/digitalio/DigitalInOut.c
@@ -1867,6 +1892,10 @@ msgstr "Xiǎnshì tài duō"
msgid "Total data to write is larger than outgoing_packet_length"
msgstr "Yào xiě rù de zǒng shùjù dàyú outgoing_packet_length"
+#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
+msgid "TouchAlarm not available in light sleep"
+msgstr ""
+
#: py/obj.c
msgid "Traceback (most recent call last):\n"
msgstr "Traceback (Zuìjìn yīcì dǎ diànhuà):\n"
@@ -2016,6 +2045,10 @@ msgstr "Bù zhīchí de cāozuò"
msgid "Unsupported pull value."
msgstr "Bù zhīchí de lādòng zhí."
+#: ports/esp32s2/common-hal/dualbank/__init__.c
+msgid "Update Failed"
+msgstr ""
+
#: ports/nrf/common-hal/_bleio/Characteristic.c
#: ports/nrf/common-hal/_bleio/Descriptor.c
msgid "Value length != required fixed length"
@@ -3047,8 +3080,8 @@ msgid "max_length must be 0-%d when fixed_length is %s"
msgstr "Dāng gùdìng chángdù wèi %s shí, zuìdà chángdù bìxū wèi 0-%d"
#: shared-bindings/_bleio/Characteristic.c shared-bindings/_bleio/Descriptor.c
-msgid "max_length must be > 0"
-msgstr "Max_length bìxū > 0"
+msgid "max_length must be >= 0"
+msgstr ""
#: extmod/ulab/code/ndarray.c
msgid "maximum number of dimensions is 4"
@@ -3185,6 +3218,14 @@ msgstr "zài */** zhīhòu fēi guānjiàn cí cānshù"
msgid "non-keyword arg after keyword arg"
msgstr "guānjiàn zì cānshù zhīhòu de fēi guānjiàn zì cānshù"
+#: ports/nrf/common-hal/_bleio/Adapter.c
+msgid "non-zero timeout must be > 0.01"
+msgstr ""
+
+#: shared-bindings/_bleio/Adapter.c
+msgid "non-zero timeout must be >= interval"
+msgstr ""
+
#: extmod/ulab/code/linalg/linalg.c
msgid "norm is defined for 1D and 2D arrays"
msgstr ""
@@ -3257,6 +3298,10 @@ msgstr "jīshù zìfú chuàn"
msgid "offset is too large"
msgstr ""
+#: shared-bindings/dualbank/__init__.c
+msgid "offset must be >= 0"
+msgstr ""
+
#: py/objstr.c py/objstrunicode.c
msgid "offset out of bounds"
msgstr "piānlí biānjiè"
@@ -3604,6 +3649,10 @@ msgstr "chāoshí shíjiān chāoguò zuìdà zhīchí zhí"
msgid "timeout must be 0.0-100.0 seconds"
msgstr "Chāo shí shíjiān bìxū wèi 0.0 Dào 100.0 Miǎo"
+#: ports/nrf/common-hal/_bleio/Adapter.c
+msgid "timeout must be < 655.35 secs"
+msgstr ""
+
#: shared-bindings/_bleio/CharacteristicBuffer.c
msgid "timeout must be >= 0.0"
msgstr "chāoshí bìxū shì >= 0.0"
@@ -3863,6 +3912,19 @@ msgstr "zi bìxū wèi fú diǎn xíng"
msgid "zi must be of shape (n_section, 2)"
msgstr "zi bìxū jùyǒu xíngzhuàng (n_section,2)"
+#~ msgid ""
+#~ "\n"
+#~ "Code done running. Waiting for reload.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Dàimǎ yǐ wánchéng yùnxíng. Zhèngzài děngdài chóngxīn jiāzài.\n"
+
+#~ msgid "Frequency captured is above capability. Capture Paused."
+#~ msgstr "Pínlǜ bǔhuò gāo yú nénglì. Bǔhuò zàntíng."
+
+#~ msgid "max_length must be > 0"
+#~ msgstr "Max_length bìxū > 0"
+
#~ msgid "Press any key to enter the REPL. Use CTRL-D to reload."
#~ msgstr "Àn xià rènhé jiàn jìnrù REPL. Shǐyòng CTRL-D chóngxīn jiāzài."
diff --git a/main.c b/main.c
index 378c50657..91b6a062d 100755
--- a/main.c
+++ b/main.c
@@ -157,7 +157,7 @@ STATIC void start_mp(supervisor_allocation* heap) {
#if CIRCUITPY_ALARM
// Record which alarm woke us up, if any. An object may be created so the heap must be functional.
- alarm_save_wakeup_alarm();
+ alarm_save_wake_alarm();
// Reset alarm module only after we retrieved the wakeup alarm.
alarm_reset();
#endif
@@ -260,10 +260,10 @@ STATIC void print_code_py_status_message(safe_mode_t safe_mode) {
STATIC bool run_code_py(safe_mode_t safe_mode) {
bool serial_connected_at_start = serial_connected();
#if CIRCUITPY_AUTORELOAD_DELAY_MS > 0
- if (serial_connected_at_start) {
- serial_write("\n");
- print_code_py_status_message(safe_mode);
- }
+ serial_write("\n");
+ print_code_py_status_message(safe_mode);
+ print_safe_mode_message(safe_mode);
+ serial_write("\n");
#endif
pyexec_result_t result;
@@ -307,16 +307,17 @@ STATIC bool run_code_py(safe_mode_t safe_mode) {
if (result.return_code & PYEXEC_FORCED_EXIT) {
return reload_requested;
}
+
+ if (reload_requested && result.return_code == PYEXEC_EXCEPTION) {
+ serial_write_compressed(translate("\nCode stopped by auto-reload.\n"));
+ } else {
+ serial_write_compressed(translate("\nCode done running.\n"));
+ }
}
// Program has finished running.
- // Display a different completion message if the user has no USB attached (cannot save files)
- if (!serial_connected_at_start) {
- serial_write_compressed(translate("\nCode done running. Waiting for reload.\n"));
- }
-
- bool serial_connected_before_animation = false;
+ bool serial_connected_before_animation = serial_connected();
#if CIRCUITPY_DISPLAYIO
bool refreshed_epaper_display = false;
#endif
@@ -409,7 +410,7 @@ STATIC bool run_code_py(safe_mode_t safe_mode) {
alarm_enter_deep_sleep();
// Does not return.
} else {
- serial_write_compressed(translate("Pretending to deep sleep until alarm, any key or file write.\n"));
+ serial_write_compressed(translate("Pretending to deep sleep until alarm, CTRL-C or file write.\n"));
}
}
}
@@ -615,6 +616,10 @@ void gc_collect(void) {
background_callback_gc_collect();
+ #if CIRCUITPY_ALARM
+ common_hal_alarm_gc_collect();
+ #endif
+
#if CIRCUITPY_DISPLAYIO
displayio_gc_collect();
#endif
diff --git a/ports/atmel-samd/boards/8086_commander/mpconfigboard.mk b/ports/atmel-samd/boards/8086_commander/mpconfigboard.mk
index f976dfe78..b5a4bc735 100644
--- a/ports/atmel-samd/boards/8086_commander/mpconfigboard.mk
+++ b/ports/atmel-samd/boards/8086_commander/mpconfigboard.mk
@@ -22,6 +22,7 @@ CIRCUITPY_GAMEPAD = 1
CIRCUITPY_BUSDEVICE = 1
# Include these Python libraries in firmware.
+FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_BusDevice
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_HID
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_SD
#FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_ADXL34x
diff --git a/ports/atmel-samd/boards/feather_m0_express_crickit/mpconfigboard.mk b/ports/atmel-samd/boards/feather_m0_express_crickit/mpconfigboard.mk
index 331a3110e..5624144e8 100644
--- a/ports/atmel-samd/boards/feather_m0_express_crickit/mpconfigboard.mk
+++ b/ports/atmel-samd/boards/feather_m0_express_crickit/mpconfigboard.mk
@@ -20,6 +20,7 @@ CIRCUITPY_GAMEPAD = 0
CFLAGS_INLINE_LIMIT = 50
# Include these Python libraries in firmware.
+FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_BusDevice
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_Crickit
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_Motor
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_NeoPixel
diff --git a/ports/atmel-samd/boards/feather_m0_rfm69/mpconfigboard.mk b/ports/atmel-samd/boards/feather_m0_rfm69/mpconfigboard.mk
index 6ea21ed82..6e089bb90 100644
--- a/ports/atmel-samd/boards/feather_m0_rfm69/mpconfigboard.mk
+++ b/ports/atmel-samd/boards/feather_m0_rfm69/mpconfigboard.mk
@@ -28,4 +28,5 @@ CFLAGS_INLINE_LIMIT = 35
SUPEROPT_GC = 0
# Include these Python libraries in firmware.
+FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_BusDevice
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_RFM69
diff --git a/ports/atmel-samd/boards/feather_m0_rfm9x/mpconfigboard.mk b/ports/atmel-samd/boards/feather_m0_rfm9x/mpconfigboard.mk
index 76a6be2e3..383b6a6df 100644
--- a/ports/atmel-samd/boards/feather_m0_rfm9x/mpconfigboard.mk
+++ b/ports/atmel-samd/boards/feather_m0_rfm9x/mpconfigboard.mk
@@ -29,4 +29,5 @@ CFLAGS_INLINE_LIMIT = 35
SUPEROPT_GC = 0
# Include these Python libraries in firmware.
+FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_BusDevice
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_RFM9x
diff --git a/ports/atmel-samd/boards/hallowing_m0_express/mpconfigboard.mk b/ports/atmel-samd/boards/hallowing_m0_express/mpconfigboard.mk
index 2b211abd4..1931ceb9a 100644
--- a/ports/atmel-samd/boards/hallowing_m0_express/mpconfigboard.mk
+++ b/ports/atmel-samd/boards/hallowing_m0_express/mpconfigboard.mk
@@ -27,6 +27,7 @@ CFLAGS_INLINE_LIMIT = 55
SUPEROPT_GC = 0
# Include these Python libraries in firmware.
+FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_BusDevice
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_LIS3DH
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_NeoPixel
diff --git a/ports/atmel-samd/boards/mini_sam_m4/mpconfigboard.mk b/ports/atmel-samd/boards/mini_sam_m4/mpconfigboard.mk
index 393adf839..321ee5f47 100644
--- a/ports/atmel-samd/boards/mini_sam_m4/mpconfigboard.mk
+++ b/ports/atmel-samd/boards/mini_sam_m4/mpconfigboard.mk
@@ -15,3 +15,6 @@ LONGINT_IMPL = MPZ
CIRCUITPY_AUDIOBUSIO = 0
CIRCUITPY_BITBANG_APA102 = 1
+
+#Include these Python libraries in firmware.
+FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_DotStar
diff --git a/ports/atmel-samd/boards/pycubed/mpconfigboard.mk b/ports/atmel-samd/boards/pycubed/mpconfigboard.mk
index a82362b8d..b7b8073ab 100644
--- a/ports/atmel-samd/boards/pycubed/mpconfigboard.mk
+++ b/ports/atmel-samd/boards/pycubed/mpconfigboard.mk
@@ -21,6 +21,7 @@ CIRCUITPY_GAMEPAD = 0
CIRCUITPY_RGBMATRIX = 0
CIRCUITPY_PS2IO = 0
+FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_BusDevice
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_NeoPixel
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_Register
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_SD
diff --git a/ports/atmel-samd/boards/pycubed_mram/mpconfigboard.mk b/ports/atmel-samd/boards/pycubed_mram/mpconfigboard.mk
index 3bf42d705..f49bb3fef 100644
--- a/ports/atmel-samd/boards/pycubed_mram/mpconfigboard.mk
+++ b/ports/atmel-samd/boards/pycubed_mram/mpconfigboard.mk
@@ -21,6 +21,7 @@ CIRCUITPY_GAMEPAD = 0
CIRCUITPY_RGBMATRIX = 0
CIRCUITPY_PS2IO = 0
+FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_BusDevice
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_NeoPixel
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_Register
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_SD
diff --git a/ports/atmel-samd/boards/sam32/mpconfigboard.mk b/ports/atmel-samd/boards/sam32/mpconfigboard.mk
index 9ac24a014..1dc686ef8 100644
--- a/ports/atmel-samd/boards/sam32/mpconfigboard.mk
+++ b/ports/atmel-samd/boards/sam32/mpconfigboard.mk
@@ -13,4 +13,5 @@ LONGINT_IMPL = MPZ
CIRCUITPY_AUDIOBUSIO = 0
CIRCUITPY_USTACK = 1
+FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_BusDevice
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_NeoPixel
diff --git a/ports/atmel-samd/boards/xinabox_cc03/mpconfigboard.mk b/ports/atmel-samd/boards/xinabox_cc03/mpconfigboard.mk
index d6f333b5b..3562228c7 100644
--- a/ports/atmel-samd/boards/xinabox_cc03/mpconfigboard.mk
+++ b/ports/atmel-samd/boards/xinabox_cc03/mpconfigboard.mk
@@ -24,3 +24,4 @@ CIRCUITPY_TOUCHIO=0
CIRCUITPY_BUSDEVICE=1
# Include these Python libraries in firmware.
+FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_BusDevice
diff --git a/ports/atmel-samd/boards/xinabox_cs11/mpconfigboard.mk b/ports/atmel-samd/boards/xinabox_cs11/mpconfigboard.mk
index fd2fa044a..53908293f 100644
--- a/ports/atmel-samd/boards/xinabox_cs11/mpconfigboard.mk
+++ b/ports/atmel-samd/boards/xinabox_cs11/mpconfigboard.mk
@@ -27,4 +27,5 @@ CIRCUITPY_COUNTIO=0
CIRCUITPY_BUSDEVICE=1
# Include these Python libraries in firmware.
+FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_BusDevice
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_SD
diff --git a/ports/atmel-samd/common-hal/microcontroller/Pin.c b/ports/atmel-samd/common-hal/microcontroller/Pin.c
index 7dd87a3b2..564d037e0 100644
--- a/ports/atmel-samd/common-hal/microcontroller/Pin.c
+++ b/ports/atmel-samd/common-hal/microcontroller/Pin.c
@@ -169,6 +169,9 @@ void common_hal_never_reset_pin(const mcu_pin_obj_t* pin) {
}
void common_hal_reset_pin(const mcu_pin_obj_t* pin) {
+ if (pin == NULL) {
+ return;
+ }
reset_pin_number(pin->number);
}
diff --git a/ports/esp32s2/Makefile b/ports/esp32s2/Makefile
index 4334e6b10..f33a1d2eb 100644
--- a/ports/esp32s2/Makefile
+++ b/ports/esp32s2/Makefile
@@ -145,7 +145,6 @@ LDFLAGS += -L$(BUILD)/esp-idf/esp-idf/esp32s2 \
-Tesp32s2.peripherals.ld \
-Lesp-idf/components/esp_rom/esp32s2/ld \
-Tesp32s2.rom.ld \
- -Tesp32s2.rom.api.ld \
-Tesp32s2.rom.libgcc.ld \
-Tesp32s2.rom.newlib-data.ld \
-Tesp32s2.rom.newlib-funcs.ld \
@@ -194,6 +193,7 @@ SRC_C += \
lib/utils/sys_stdio_mphal.c \
lib/netutils/netutils.c \
peripherals/timer.c \
+ peripherals/touch.c \
peripherals/pcnt.c \
peripherals/pins.c \
peripherals/rmt.c \
@@ -278,7 +278,7 @@ menuconfig: $(BUILD)/esp-idf/config
# qstr builds include headers so we need to make sure they are up to date
$(HEADER_BUILD)/qstr.split: | $(BUILD)/esp-idf/config/sdkconfig.h
-ESP_IDF_COMPONENTS_LINK = freertos log hal esp_system esp_adc_cal esp32s2 bootloader_support pthread esp_timer vfs spi_flash app_update esp_common esp32s2 heap newlib driver xtensa soc esp_ringbuf esp_wifi esp_event wpa_supplicant mbedtls efuse nvs_flash esp_netif lwip esp_rom esp-tls
+ESP_IDF_COMPONENTS_LINK = freertos log esp_system esp_adc_cal esp32s2 bootloader_support pthread esp_timer vfs spi_flash app_update esp_common esp32s2 heap newlib driver xtensa soc esp_ringbuf esp_wifi esp_event wpa_supplicant mbedtls efuse nvs_flash esp_netif lwip esp-tls
ESP_IDF_COMPONENTS_INCLUDE = driver freertos log soc
@@ -290,11 +290,11 @@ ESP_IDF_WIFI_COMPONENTS_EXPANDED = $(foreach component, $(ESP_IDF_WIFI_COMPONENT
MBEDTLS_COMPONENTS_LINK = crypto tls x509
MBEDTLS_COMPONENTS_LINK_EXPANDED = $(foreach component, $(MBEDTLS_COMPONENTS_LINK), $(BUILD)/esp-idf/esp-idf/mbedtls/mbedtls/library/libmbed$(component).a)
-BINARY_BLOBS = esp-idf/components/xtensa/esp32s2/libxt_hal.a
+BINARY_BLOBS = esp-idf/components/xtensa/esp32s2/libhal.a
BINARY_WIFI_BLOBS = libcoexist.a libcore.a libespnow.a libmesh.a libnet80211.a libpp.a librtc.a libsmartconfig.a libphy.a
BINARY_BLOBS += $(addprefix esp-idf/components/esp_wifi/lib/esp32s2/, $(BINARY_WIFI_BLOBS))
-ESP_IDF_COMPONENTS_EXPANDED += $(BUILD)/esp-idf/esp-idf/soc/soc/esp32s2/libsoc_esp32s2.a esp-idf/components/xtensa/esp32s2/libxt_hal.a
+ESP_IDF_COMPONENTS_EXPANDED += $(BUILD)/esp-idf/esp-idf/soc/soc/esp32s2/libsoc_esp32s2.a
ESP_AUTOGEN_LD = $(BUILD)/esp-idf/esp-idf/esp32s2/esp32s2_out.ld $(BUILD)/esp-idf/esp-idf/esp32s2/ld/esp32s2.project.ld
FLASH_FLAGS = --flash_mode $(CIRCUITPY_ESP_FLASH_MODE) --flash_freq $(CIRCUITPY_ESP_FLASH_FREQ) --flash_size $(CIRCUITPY_ESP_FLASH_SIZE)
@@ -310,7 +310,6 @@ esp-idf-stamp: $(BUILD)/esp-idf/config/sdkconfig.h
esp-idf/esp32s2/ld/esp32s2.project.ld \
esp-idf/esp_event/libesp_event.a \
esp-idf/esp_netif/libesp_netif.a \
- esp-idf/esp_rom/libesp_rom.a \
esp-idf/esp_system/libesp_system.a \
esp-idf/esp_wifi/libesp_wifi.a \
esp-idf/lwip/liblwip.a \
diff --git a/ports/esp32s2/README.md b/ports/esp32s2/README.md
index 0738d520e..f5a2bfe5c 100644
--- a/ports/esp32s2/README.md
+++ b/ports/esp32s2/README.md
@@ -7,7 +7,7 @@ This port adds the ESP32-S2 line of modules from Espressif to Circuitpython. ESP
- **bindings/** contains some required bindings to the ESP-IDF for exceptions and memory.
- **boards/** contains the configuration files for each development board and breakout available on the port.
- **common-hal/** contains the port-specific module implementations, used by shared-module and shared-bindings.
-- **esp-idf/** contains the Espressif IoT development framework installation, includign all the drivers for the port.
+- **esp-idf/** contains the Espressif IoT development framework installation, including all the drivers for the port.
- **modules/** contains information specific to certain ESP32-S2 hardware modules, such as the pins used for flash and RAM on the WROVER and WROOM.
- **peripherals/** contains peripheral setup files and peripheral mapping information, sorted by family and sub-variant. Most files in this directory can be generated with the python scripts in **tools/**.
- **supervisor/** contains port-specific implementations of internal flash, serial and USB, as well as the **port.c** file, which initializes the port at startup.
diff --git a/ports/esp32s2/boards/unexpectedmaker_feathers2/mpconfigboard.h b/ports/esp32s2/boards/unexpectedmaker_feathers2/mpconfigboard.h
index b68a31b9e..e100ac118 100644
--- a/ports/esp32s2/boards/unexpectedmaker_feathers2/mpconfigboard.h
+++ b/ports/esp32s2/boards/unexpectedmaker_feathers2/mpconfigboard.h
@@ -30,7 +30,6 @@
#define MICROPY_HW_MCU_NAME "ESP32S2"
#define CIRCUITPY_BOOT_BUTTON (&pin_GPIO0)
-
#define BOARD_USER_SAFE_MODE_ACTION translate("pressing boot button at start up.\n")
#define AUTORESET_DELAY_MS 500
diff --git a/ports/esp32s2/boards/unexpectedmaker_feathers2/pins.c b/ports/esp32s2/boards/unexpectedmaker_feathers2/pins.c
index c294fb9d3..bef2001ba 100644
--- a/ports/esp32s2/boards/unexpectedmaker_feathers2/pins.c
+++ b/ports/esp32s2/boards/unexpectedmaker_feathers2/pins.c
@@ -9,9 +9,9 @@ STATIC const mp_rom_map_elem_t board_global_dict_table[] = {
{ MP_ROM_QSTR(MP_QSTR_A1), MP_ROM_PTR(&pin_GPIO18) },
{ MP_ROM_QSTR(MP_QSTR_D15), MP_ROM_PTR(&pin_GPIO18) },
- { MP_ROM_QSTR(MP_QSTR_IO13), MP_ROM_PTR(&pin_GPIO13) },
- { MP_ROM_QSTR(MP_QSTR_A2), MP_ROM_PTR(&pin_GPIO13) },
- { MP_ROM_QSTR(MP_QSTR_D16), MP_ROM_PTR(&pin_GPIO13) },
+ { MP_ROM_QSTR(MP_QSTR_IO14), MP_ROM_PTR(&pin_GPIO14) },
+ { MP_ROM_QSTR(MP_QSTR_A2), MP_ROM_PTR(&pin_GPIO14) },
+ { MP_ROM_QSTR(MP_QSTR_D16), MP_ROM_PTR(&pin_GPIO14) },
{ MP_ROM_QSTR(MP_QSTR_IO12), MP_ROM_PTR(&pin_GPIO12) },
{ MP_ROM_QSTR(MP_QSTR_A3), MP_ROM_PTR(&pin_GPIO12) },
@@ -82,18 +82,16 @@ STATIC const mp_rom_map_elem_t board_global_dict_table[] = {
{ MP_ROM_QSTR(MP_QSTR_D13), MP_ROM_PTR(&pin_GPIO11) },
{ MP_ROM_QSTR(MP_QSTR_A6), MP_ROM_PTR(&pin_GPIO11) },
- { MP_ROM_QSTR(MP_QSTR_APA102_MOSI), MP_ROM_PTR(&pin_GPIO40) }, // MTDO
- { MP_ROM_QSTR(MP_QSTR_APA102_SCK), MP_ROM_PTR(&pin_GPIO45) },
+ { MP_ROM_QSTR(MP_QSTR_LED), MP_ROM_PTR(&pin_GPIO13) }, // Blue LED
+ { MP_ROM_QSTR(MP_QSTR_APA102_MOSI), MP_ROM_PTR(&pin_GPIO40) }, // APA102
+ { MP_ROM_QSTR(MP_QSTR_APA102_SCK), MP_ROM_PTR(&pin_GPIO45) }, // APA102
- { MP_ROM_QSTR(MP_QSTR_LDO2), MP_ROM_PTR(&pin_GPIO21) },
- { MP_ROM_QSTR(MP_QSTR_IO21), MP_ROM_PTR(&pin_GPIO21) },
+ { MP_ROM_QSTR(MP_QSTR_LDO2), MP_ROM_PTR(&pin_GPIO21) }, // Second LDO Enable control
+ { MP_ROM_QSTR(MP_QSTR_IO21), MP_ROM_PTR(&pin_GPIO21) }, // Second LDO Enable control
- { MP_ROM_QSTR(MP_QSTR_IO13), MP_ROM_PTR(&pin_GPIO13) },
- { MP_ROM_QSTR(MP_QSTR_LED), MP_ROM_PTR(&pin_GPIO13) },
-
- { MP_ROM_QSTR(MP_QSTR_IO4), MP_ROM_PTR(&pin_GPIO4) },
- { MP_ROM_QSTR(MP_QSTR_AMB), MP_ROM_PTR(&pin_GPIO4) },
+ { MP_ROM_QSTR(MP_QSTR_IO4), MP_ROM_PTR(&pin_GPIO4) }, // Ambient Light Sensor
+ { MP_ROM_QSTR(MP_QSTR_AMB), MP_ROM_PTR(&pin_GPIO4) }, // Ambient Light Sensor
{ MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) },
{ MP_ROM_QSTR(MP_QSTR_SPI), MP_ROM_PTR(&board_spi_obj) },
diff --git a/ports/esp32s2/boards/unexpectedmaker_feathers2_prerelease/mpconfigboard.h b/ports/esp32s2/boards/unexpectedmaker_feathers2_prerelease/mpconfigboard.h
index 93d901bec..d550ff64f 100644
--- a/ports/esp32s2/boards/unexpectedmaker_feathers2_prerelease/mpconfigboard.h
+++ b/ports/esp32s2/boards/unexpectedmaker_feathers2_prerelease/mpconfigboard.h
@@ -36,3 +36,13 @@
// #define MICROPY_HW_APA102_MOSI (&pin_GPIO40)
// #define MICROPY_HW_APA102_SCK (&pin_GPIO45)
+
+#define DEFAULT_I2C_BUS_SCL (&pin_GPIO38)
+#define DEFAULT_I2C_BUS_SDA (&pin_GPIO33)
+
+#define DEFAULT_SPI_BUS_SCK (&pin_GPIO36)
+#define DEFAULT_SPI_BUS_MOSI (&pin_GPIO35)
+#define DEFAULT_SPI_BUS_MISO (&pin_GPIO37)
+
+#define DEFAULT_UART_BUS_RX (&pin_GPIO44)
+#define DEFAULT_UART_BUS_TX (&pin_GPIO43)
diff --git a/ports/esp32s2/boards/unexpectedmaker_feathers2_prerelease/pins.c b/ports/esp32s2/boards/unexpectedmaker_feathers2_prerelease/pins.c
index a1036f850..57ac27aeb 100644
--- a/ports/esp32s2/boards/unexpectedmaker_feathers2_prerelease/pins.c
+++ b/ports/esp32s2/boards/unexpectedmaker_feathers2_prerelease/pins.c
@@ -9,10 +9,9 @@ STATIC const mp_rom_map_elem_t board_global_dict_table[] = {
{ MP_ROM_QSTR(MP_QSTR_A1), MP_ROM_PTR(&pin_GPIO18) },
{ MP_ROM_QSTR(MP_QSTR_D15), MP_ROM_PTR(&pin_GPIO18) },
- { MP_ROM_QSTR(MP_QSTR_IO13), MP_ROM_PTR(&pin_GPIO13) },
- { MP_ROM_QSTR(MP_QSTR_A2), MP_ROM_PTR(&pin_GPIO13) },
- { MP_ROM_QSTR(MP_QSTR_D16), MP_ROM_PTR(&pin_GPIO13) },
- { MP_ROM_QSTR(MP_QSTR_LED), MP_ROM_PTR(&pin_GPIO13) },
+ { MP_ROM_QSTR(MP_QSTR_IO14), MP_ROM_PTR(&pin_GPIO14) },
+ { MP_ROM_QSTR(MP_QSTR_A2), MP_ROM_PTR(&pin_GPIO14) },
+ { MP_ROM_QSTR(MP_QSTR_D16), MP_ROM_PTR(&pin_GPIO14) },
{ MP_ROM_QSTR(MP_QSTR_IO12), MP_ROM_PTR(&pin_GPIO12) },
{ MP_ROM_QSTR(MP_QSTR_A3), MP_ROM_PTR(&pin_GPIO12) },
@@ -26,7 +25,7 @@ STATIC const mp_rom_map_elem_t board_global_dict_table[] = {
{ MP_ROM_QSTR(MP_QSTR_A5), MP_ROM_PTR(&pin_GPIO5) },
{ MP_ROM_QSTR(MP_QSTR_D19), MP_ROM_PTR(&pin_GPIO5) },
- { MP_ROM_QSTR(MP_QSTR_IO36), MP_ROM_PTR(&pin_GPIO36) },
+ { MP_ROM_QSTR(MP_QSTR_IO36), MP_ROM_PTR(&pin_GPIO36) },
{ MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_GPIO36) },
{ MP_ROM_QSTR(MP_QSTR_D25), MP_ROM_PTR(&pin_GPIO36) },
@@ -83,17 +82,16 @@ STATIC const mp_rom_map_elem_t board_global_dict_table[] = {
{ MP_ROM_QSTR(MP_QSTR_D13), MP_ROM_PTR(&pin_GPIO11) },
{ MP_ROM_QSTR(MP_QSTR_A6), MP_ROM_PTR(&pin_GPIO11) },
- { MP_ROM_QSTR(MP_QSTR_APA102_MOSI), MP_ROM_PTR(&pin_GPIO40) }, // MTDO
- { MP_ROM_QSTR(MP_QSTR_APA102_SCK), MP_ROM_PTR(&pin_GPIO45) },
+ { MP_ROM_QSTR(MP_QSTR_LED), MP_ROM_PTR(&pin_GPIO13) }, // Blue LED
- { MP_ROM_QSTR(MP_QSTR_LDO2), MP_ROM_PTR(&pin_GPIO21) },
- { MP_ROM_QSTR(MP_QSTR_IO21), MP_ROM_PTR(&pin_GPIO21) },
+ { MP_ROM_QSTR(MP_QSTR_APA102_MOSI), MP_ROM_PTR(&pin_GPIO40) }, // APA102
+ { MP_ROM_QSTR(MP_QSTR_APA102_SCK), MP_ROM_PTR(&pin_GPIO45) }, // APA102
- { MP_ROM_QSTR(MP_QSTR_IO13), MP_ROM_PTR(&pin_GPIO13) },
- { MP_ROM_QSTR(MP_QSTR_LED), MP_ROM_PTR(&pin_GPIO13) },
+ { MP_ROM_QSTR(MP_QSTR_LDO2), MP_ROM_PTR(&pin_GPIO21) }, // Second LDO Enable control
+ { MP_ROM_QSTR(MP_QSTR_IO21), MP_ROM_PTR(&pin_GPIO21) }, // Second LDO Enable control
- { MP_ROM_QSTR(MP_QSTR_IO4), MP_ROM_PTR(&pin_GPIO4) },
- { MP_ROM_QSTR(MP_QSTR_AMB), MP_ROM_PTR(&pin_GPIO4) },
+ { MP_ROM_QSTR(MP_QSTR_IO4), MP_ROM_PTR(&pin_GPIO4) }, // Ambient Light Sensor
+ { MP_ROM_QSTR(MP_QSTR_AMB), MP_ROM_PTR(&pin_GPIO4) }, // Ambient Light Sensor
{ MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) },
{ MP_ROM_QSTR(MP_QSTR_SPI), MP_ROM_PTR(&board_spi_obj) },
diff --git a/ports/esp32s2/common-hal/alarm/__init__.c b/ports/esp32s2/common-hal/alarm/__init__.c
index fae921db0..47764a03a 100644
--- a/ports/esp32s2/common-hal/alarm/__init__.c
+++ b/ports/esp32s2/common-hal/alarm/__init__.c
@@ -25,23 +25,28 @@
* THE SOFTWARE.
*/
+#include "py/gc.h"
#include "py/obj.h"
#include "py/objtuple.h"
#include "py/runtime.h"
-#include "shared-bindings/alarm/pin/PinAlarm.h"
+#include "shared-bindings/alarm/__init__.h"
#include "shared-bindings/alarm/SleepMemory.h"
+#include "shared-bindings/alarm/pin/PinAlarm.h"
#include "shared-bindings/alarm/time/TimeAlarm.h"
-#include "shared-bindings/microcontroller/__init__.h"
+#include "shared-bindings/alarm/touch/TouchAlarm.h"
+
#include "shared-bindings/wifi/__init__.h"
+#include "shared-bindings/microcontroller/__init__.h"
#include "supervisor/port.h"
#include "supervisor/shared/workflow.h"
-#include "common-hal/alarm/__init__.h"
-
#include "esp_sleep.h"
+#include "components/soc/soc/esp32s2/include/soc/rtc_cntl_reg.h"
+#include "components/driver/include/driver/uart.h"
+
// Singleton instance of SleepMemory.
const alarm_sleep_memory_obj_t alarm_sleep_memory_obj = {
.base = {
@@ -49,18 +54,24 @@ const alarm_sleep_memory_obj_t alarm_sleep_memory_obj = {
},
};
-
void alarm_reset(void) {
- alarm_time_timealarm_reset();
alarm_sleep_memory_reset();
+ alarm_pin_pinalarm_reset();
+ alarm_time_timealarm_reset();
+ alarm_touch_touchalarm_reset();
esp_sleep_disable_wakeup_source(ESP_SLEEP_WAKEUP_ALL);
}
STATIC esp_sleep_wakeup_cause_t _get_wakeup_cause(void) {
+ if (alarm_pin_pinalarm_woke_us_up()) {
+ return ESP_SLEEP_WAKEUP_GPIO;
+ }
if (alarm_time_timealarm_woke_us_up()) {
return ESP_SLEEP_WAKEUP_TIMER;
}
-
+ if (alarm_touch_touchalarm_woke_us_up()) {
+ return ESP_SLEEP_WAKEUP_TOUCHPAD;
+ }
return esp_sleep_get_wakeup_cause();
}
@@ -69,19 +80,20 @@ bool alarm_woken_from_sleep(void) {
}
STATIC mp_obj_t _get_wake_alarm(size_t n_alarms, const mp_obj_t *alarms) {
- switch (_get_wakeup_cause()) {
+ esp_sleep_wakeup_cause_t cause = _get_wakeup_cause();
+ switch (cause) {
case ESP_SLEEP_WAKEUP_TIMER: {
return alarm_time_timealarm_get_wakeup_alarm(n_alarms, alarms);
}
- case ESP_SLEEP_WAKEUP_EXT0: {
- // TODO: implement pin alarm wake.
- break;
+ case ESP_SLEEP_WAKEUP_GPIO:
+ case ESP_SLEEP_WAKEUP_EXT0:
+ case ESP_SLEEP_WAKEUP_EXT1: {
+ return alarm_pin_pinalarm_get_wakeup_alarm(n_alarms, alarms);
}
case ESP_SLEEP_WAKEUP_TOUCHPAD:
- // TODO: implement TouchIO
- // Wake up from touch on pad, esp_sleep_get_touchpad_wakeup_status()
+ return alarm_touch_touchalarm_get_wakeup_alarm(n_alarms, alarms);
break;
case ESP_SLEEP_WAKEUP_UNDEFINED:
@@ -98,24 +110,9 @@ mp_obj_t common_hal_alarm_get_wake_alarm(void) {
// Set up light sleep or deep sleep alarms.
STATIC void _setup_sleep_alarms(bool deep_sleep, size_t n_alarms, const mp_obj_t *alarms) {
- bool time_alarm_set = false;
- alarm_time_time_alarm_obj_t *time_alarm = MP_OBJ_NULL;
-
- for (size_t i = 0; i < n_alarms; i++) {
- if (MP_OBJ_IS_TYPE(alarms[i], &alarm_pin_pin_alarm_type)) {
- mp_raise_NotImplementedError(translate("PinAlarm not yet implemented"));
- } else if (MP_OBJ_IS_TYPE(alarms[i], &alarm_time_time_alarm_type)) {
- if (time_alarm_set) {
- mp_raise_ValueError(translate("Only one alarm.time alarm can be set."));
- }
- time_alarm = MP_OBJ_TO_PTR(alarms[i]);
- time_alarm_set = true;
- }
- }
-
- if (time_alarm_set) {
- alarm_time_timealarm_set_alarm(time_alarm);
- }
+ alarm_pin_pinalarm_set_alarms(deep_sleep, n_alarms, alarms);
+ alarm_time_timealarm_set_alarms(deep_sleep, n_alarms, alarms);
+ alarm_touch_touchalarm_set_alarm(deep_sleep, n_alarms, alarms);
}
STATIC void _idle_until_alarm(void) {
@@ -124,28 +121,23 @@ STATIC void _idle_until_alarm(void) {
RUN_BACKGROUND_TASKS;
// Allow ctrl-C interrupt.
if (alarm_woken_from_sleep()) {
+ alarm_save_wake_alarm();
return;
}
-
port_idle_until_interrupt();
}
}
-// Is it safe to do a light sleep? Check whether WiFi is on or there are
-// other ongoing tasks that should not be shut down.
-STATIC bool _light_sleep_ok(void) {
- return !common_hal_wifi_radio_get_enabled(&common_hal_wifi_radio_obj) && !supervisor_workflow_active();
-}
-
mp_obj_t common_hal_alarm_light_sleep_until_alarms(size_t n_alarms, const mp_obj_t *alarms) {
_setup_sleep_alarms(false, n_alarms, alarms);
- // Light sleep can break some functionality so only do it when possible. Otherwise we idle.
- if (_light_sleep_ok()) {
- esp_light_sleep_start();
- } else {
- _idle_until_alarm();
+ // We cannot esp_light_sleep_start() here because it shuts down all non-RTC peripherals.
+ _idle_until_alarm();
+
+ if (mp_hal_is_interrupted()) {
+ return mp_const_none; // Shouldn't be given to python code because exception handling should kick in.
}
+
mp_obj_t wake_alarm = _get_wake_alarm(n_alarms, alarms);
alarm_reset();
return wake_alarm;
@@ -156,7 +148,13 @@ void common_hal_alarm_set_deep_sleep_alarms(size_t n_alarms, const mp_obj_t *ala
}
void NORETURN alarm_enter_deep_sleep(void) {
+ alarm_pin_pinalarm_prepare_for_deep_sleep();
+ alarm_touch_touchalarm_prepare_for_deep_sleep();
// The ESP-IDF caches the deep sleep settings and applies them before sleep.
// We don't need to worry about resetting them in the interim.
esp_deep_sleep_start();
}
+
+void common_hal_alarm_gc_collect(void) {
+ gc_collect_ptr(alarm_get_wake_alarm());
+}
diff --git a/ports/esp32s2/common-hal/alarm/pin/PinAlarm.c b/ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
index 582a66572..df8d10ef9 100644
--- a/ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
+++ b/ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
@@ -4,6 +4,7 @@
* The MIT License (MIT)
*
* Copyright (c) 2020 Dan Halbert for Adafruit Industries
+ * Copyright (c) 2020 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
@@ -24,30 +25,283 @@
* THE SOFTWARE.
*/
-#include "esp_sleep.h"
+#include "py/runtime.h"
#include "shared-bindings/alarm/pin/PinAlarm.h"
+#include "shared-bindings/microcontroller/__init__.h"
#include "shared-bindings/microcontroller/Pin.h"
+#include "supervisor/esp_port.h"
-void common_hal_alarm_pin_pin_alarm_construct(alarm_pin_pin_alarm_obj_t *self, mcu_pin_obj_t *pin, bool value, bool edge, bool pull) {
+#include "components/driver/include/driver/rtc_io.h"
+#include "components/esp32s2/include/esp_sleep.h"
+#include "components/freertos/include/freertos/FreeRTOS.h"
+#include "components/soc/src/esp32s2/include/hal/gpio_ll.h"
+#include "components/xtensa/include/esp_debug_helpers.h"
+
+void common_hal_alarm_pin_pinalarm_construct(alarm_pin_pinalarm_obj_t *self, mcu_pin_obj_t *pin, bool value, bool edge, bool pull) {
+ if (edge) {
+ mp_raise_ValueError(translate("Cannot wake on pin edge. Only level."));
+ }
+
+ if (pull && !GPIO_IS_VALID_OUTPUT_GPIO(pin->number)) {
+ mp_raise_ValueError(translate("Cannot pull on input-only pin."));
+ }
self->pin = pin;
self->value = value;
- self->edge = edge;
self->pull = pull;
}
-mcu_pin_obj_t *common_hal_alarm_pin_pin_alarm_get_pin(alarm_pin_pin_alarm_obj_t *self) {
+mcu_pin_obj_t *common_hal_alarm_pin_pinalarm_get_pin(alarm_pin_pinalarm_obj_t *self) {
return self->pin;
}
-bool common_hal_alarm_pin_pin_alarm_get_value(alarm_pin_pin_alarm_obj_t *self) {
+bool common_hal_alarm_pin_pinalarm_get_value(alarm_pin_pinalarm_obj_t *self) {
return self->value;
}
-bool common_hal_alarm_pin_pin_alarm_get_edge(alarm_pin_pin_alarm_obj_t *self) {
- return self->edge;
+bool common_hal_alarm_pin_pinalarm_get_edge(alarm_pin_pinalarm_obj_t *self) {
+ return false;
}
-bool common_hal_alarm_pin_pin_alarm_get_pull(alarm_pin_pin_alarm_obj_t *self) {
+bool common_hal_alarm_pin_pinalarm_get_pull(alarm_pin_pinalarm_obj_t *self) {
return self->pull;
}
+
+gpio_isr_handle_t gpio_interrupt_handle;
+// Low and high are relative to pin number. 32+ is high. <32 is low.
+static volatile uint32_t pin_31_0_status = 0;
+static volatile uint32_t pin_63_32_status = 0;
+void gpio_interrupt(void *arg) {
+ (void) arg;
+
+ gpio_ll_get_intr_status(&GPIO, xPortGetCoreID(), (uint32_t*) &pin_31_0_status);
+ gpio_ll_clear_intr_status(&GPIO, pin_31_0_status);
+ gpio_ll_get_intr_status_high(&GPIO, xPortGetCoreID(), (uint32_t*) &pin_63_32_status);
+ gpio_ll_clear_intr_status_high(&GPIO, pin_63_32_status);
+
+ // disable the interrupts that fired, maybe all of them
+ for (size_t i = 0; i < 32; i++) {
+ uint32_t mask = 1 << i;
+ if ((pin_31_0_status & mask) != 0) {
+ gpio_ll_intr_disable(&GPIO, i);
+ }
+ if ((pin_63_32_status & mask) != 0) {
+ gpio_ll_intr_disable(&GPIO, 32 + i);
+ }
+ }
+ BaseType_t high_task_wakeup;
+ vTaskNotifyGiveFromISR(circuitpython_task, &high_task_wakeup);
+ if (high_task_wakeup) {
+ portYIELD_FROM_ISR();
+ }
+}
+
+bool alarm_pin_pinalarm_woke_us_up(void) {
+ return pin_31_0_status != 0 || pin_63_32_status != 0;
+}
+
+mp_obj_t alarm_pin_pinalarm_get_wakeup_alarm(size_t n_alarms, const mp_obj_t *alarms) {
+ // First, check to see if we match any given alarms.
+ uint64_t pin_status = ((uint64_t) pin_63_32_status) << 32 | pin_31_0_status;
+ for (size_t i = 0; i < n_alarms; i++) {
+ if (!MP_OBJ_IS_TYPE(alarms[i], &alarm_pin_pinalarm_type)) {
+ continue;
+ }
+ alarm_pin_pinalarm_obj_t *alarm = MP_OBJ_TO_PTR(alarms[i]);
+ if ((pin_status & (1ull << alarm->pin->number)) != 0) {
+ return alarms[i];
+ }
+ }
+ esp_sleep_wakeup_cause_t cause = esp_sleep_get_wakeup_cause();
+ size_t pin_number = 64;
+ if (cause == ESP_SLEEP_WAKEUP_EXT0) {
+ pin_number = REG_GET_FIELD(RTC_IO_EXT_WAKEUP0_REG, RTC_IO_EXT_WAKEUP0_SEL);
+ } else {
+ if (cause == ESP_SLEEP_WAKEUP_EXT1) {
+ pin_status = esp_sleep_get_ext1_wakeup_status();
+ }
+ // If the cause is GPIO, we've already snagged pin_status in the interrupt.
+ // We'll only get here if we pretended to deep sleep. Light sleep will
+ // pass in existing objects.
+ for (size_t i = 0; i < 64; i++) {
+ if ((pin_status & (1ull << i)) != 0) {
+ pin_number = i;
+ break;
+ }
+ }
+ }
+
+ alarm_pin_pinalarm_obj_t *alarm = m_new_obj(alarm_pin_pinalarm_obj_t);
+ alarm->base.type = &alarm_pin_pinalarm_type;
+ alarm->pin = NULL;
+ // Map the pin number back to a pin object.
+ for (size_t i = 0; i < mcu_pin_globals.map.used; i++) {
+ const mcu_pin_obj_t* pin_obj = MP_OBJ_TO_PTR(mcu_pin_globals.map.table[i].value);
+ if ((size_t) pin_obj->number == pin_number) {
+ alarm->pin = mcu_pin_globals.map.table[i].value;
+ break;
+ }
+ }
+ return alarm;
+}
+
+// These must be static because we need to configure pulls later, right before
+// deep sleep.
+static uint64_t high_alarms = 0;
+static uint64_t low_alarms = 0;
+static uint64_t pull_pins = 0;
+
+void alarm_pin_pinalarm_reset(void) {
+ if (gpio_interrupt_handle != NULL) {
+ esp_intr_free(gpio_interrupt_handle);
+ gpio_interrupt_handle = NULL;
+ }
+ for (size_t i = 0; i < 64; i++) {
+ uint64_t mask = 1ull << i;
+ bool high = (high_alarms & mask) != 0;
+ bool low = (low_alarms & mask) != 0;
+ if (!(high || low)) {
+ continue;
+ }
+ reset_pin_number(i);
+ }
+ high_alarms = 0;
+ low_alarms = 0;
+ pull_pins = 0;
+ pin_63_32_status = 0;
+ pin_31_0_status = 0;
+}
+
+void alarm_pin_pinalarm_set_alarms(bool deep_sleep, size_t n_alarms, const mp_obj_t *alarms) {
+ // Bitmask of wake up settings.
+ size_t high_count = 0;
+ size_t low_count = 0;
+
+ for (size_t i = 0; i < n_alarms; i++) {
+ // TODO: Check for ULP or touch alarms because they can't coexist with GPIO alarms.
+ if (!MP_OBJ_IS_TYPE(alarms[i], &alarm_pin_pinalarm_type)) {
+ continue;
+ }
+ alarm_pin_pinalarm_obj_t *alarm = MP_OBJ_TO_PTR(alarms[i]);
+
+ gpio_num_t pin_number = alarm->pin->number;
+ if (alarm->value) {
+ high_alarms |= 1ull << pin_number;
+ high_count++;
+ } else {
+ low_alarms |= 1ull << pin_number;
+ low_count++;
+ }
+ if (alarm->pull) {
+ pull_pins |= 1ull << pin_number;
+ }
+ }
+ if (high_count == 0 && low_count == 0) {
+ return;
+ }
+ if (deep_sleep && low_count > 2 && high_count == 0) {
+ mp_raise_ValueError(translate("Can only alarm on two low pins from deep sleep."));
+ }
+ if (deep_sleep && low_count > 1 && high_count > 0) {
+ mp_raise_ValueError(translate("Can only alarm on one low pin while others alarm high from deep sleep."));
+ }
+ // Only use ext0 and ext1 during deep sleep.
+ if (deep_sleep) {
+ if (high_count > 0) {
+ if (esp_sleep_enable_ext1_wakeup(high_alarms, ESP_EXT1_WAKEUP_ANY_HIGH) != ESP_OK) {
+ mp_raise_ValueError(translate("Can only alarm on RTC IO from deep sleep."));
+ }
+ }
+ size_t low_pins[2];
+ size_t j = 0;
+ for (size_t i = 0; i < 64; i++) {
+ uint64_t mask = 1ull << i;
+ if ((low_alarms & mask) != 0) {
+ low_pins[j++] = i;
+ }
+ if (j == 2) {
+ break;
+ }
+ }
+ if (low_count > 1) {
+ if (esp_sleep_enable_ext1_wakeup(1ull << low_pins[1], ESP_EXT1_WAKEUP_ALL_LOW) != ESP_OK) {
+ mp_raise_ValueError(translate("Can only alarm on RTC IO from deep sleep."));
+ }
+ }
+ if (low_count > 0) {
+ if (esp_sleep_enable_ext0_wakeup(low_pins[0], 0) != ESP_OK) {
+ mp_raise_ValueError(translate("Can only alarm on RTC IO from deep sleep."));
+ }
+ }
+ } else {
+ // Enable GPIO wake up if we're sleeping.
+ esp_sleep_enable_gpio_wakeup();
+ }
+ // Set GPIO interrupts so they wake us from light sleep or from idle via the
+ // interrupt handler above.
+ pin_31_0_status = 0;
+ pin_63_32_status = 0;
+ if (gpio_isr_register(gpio_interrupt, NULL, 0, &gpio_interrupt_handle) != ESP_OK) {
+ mp_raise_ValueError(translate("Can only alarm on RTC IO from deep sleep."));
+ }
+ for (size_t i = 0; i < 64; i++) {
+ uint64_t mask = 1ull << i;
+ bool high = (high_alarms & mask) != 0;
+ bool low = (low_alarms & mask) != 0;
+ bool pull = (pull_pins & mask) != 0;
+ if (!(high || low)) {
+ continue;
+ }
+ if (rtc_gpio_is_valid_gpio(i)) {
+ rtc_gpio_deinit(i);
+ }
+ gpio_int_type_t interrupt_mode = GPIO_INTR_DISABLE;
+ gpio_pull_mode_t pull_mode = GPIO_FLOATING;
+ if (high) {
+ interrupt_mode = GPIO_INTR_HIGH_LEVEL;
+ pull_mode = GPIO_PULLDOWN_ONLY;
+ }
+ if (low) {
+ interrupt_mode = GPIO_INTR_LOW_LEVEL;
+ pull_mode = GPIO_PULLUP_ONLY;
+ }
+ gpio_set_direction(i, GPIO_MODE_DEF_INPUT);
+ PIN_FUNC_SELECT(GPIO_PIN_MUX_REG[i], PIN_FUNC_GPIO);
+ if (pull) {
+ gpio_set_pull_mode(i, pull_mode);
+ size_t j = 0;
+ while (gpio_get_level(i) == false) {
+ j++;
+ }
+ }
+ never_reset_pin_number(i);
+ // Sets interrupt type and wakeup bits.
+ gpio_wakeup_enable(i, interrupt_mode);
+ gpio_intr_enable(i);
+ }
+}
+
+
+void alarm_pin_pinalarm_prepare_for_deep_sleep(void) {
+ if (pull_pins == 0) {
+ return;
+ }
+ for (size_t i = 0; i < 64; i++) {
+ uint64_t mask = 1ull << i;
+ bool pull = (pull_pins & mask) != 0;
+ if (!pull) {
+ continue;
+ }
+ bool high = (high_alarms & mask) != 0;
+ bool low = (low_alarms & mask) != 0;
+ // The pull direction is opposite from alarm value.
+ if (high) {
+ rtc_gpio_pullup_dis(i);
+ rtc_gpio_pulldown_en(i);
+ }
+ if (low) {
+ rtc_gpio_pullup_en(i);
+ rtc_gpio_pulldown_dis(i);
+ }
+ }
+}
diff --git a/ports/esp32s2/common-hal/alarm/pin/PinAlarm.h b/ports/esp32s2/common-hal/alarm/pin/PinAlarm.h
index 0eaa7777f..93672c1f2 100644
--- a/ports/esp32s2/common-hal/alarm/pin/PinAlarm.h
+++ b/ports/esp32s2/common-hal/alarm/pin/PinAlarm.h
@@ -31,7 +31,11 @@ typedef struct {
mp_obj_base_t base;
mcu_pin_obj_t *pin;
bool value;
- bool all_same_value;
- bool edge;
bool pull;
-} alarm_pin_pin_alarm_obj_t;
+} alarm_pin_pinalarm_obj_t;
+
+void alarm_pin_pinalarm_reset(void);
+void alarm_pin_pinalarm_set_alarms(bool deep_sleep, size_t n_alarms, const mp_obj_t *alarms);
+void alarm_pin_pinalarm_prepare_for_deep_sleep(void);
+mp_obj_t alarm_pin_pinalarm_get_wakeup_alarm(size_t n_alarms, const mp_obj_t *alarms);
+bool alarm_pin_pinalarm_woke_us_up(void);
diff --git a/ports/esp32s2/common-hal/alarm/time/TimeAlarm.c b/ports/esp32s2/common-hal/alarm/time/TimeAlarm.c
index 4d0bba238..bcde0ab3c 100644
--- a/ports/esp32s2/common-hal/alarm/time/TimeAlarm.c
+++ b/ports/esp32s2/common-hal/alarm/time/TimeAlarm.c
@@ -34,23 +34,23 @@
#include "shared-bindings/alarm/time/TimeAlarm.h"
#include "shared-bindings/time/__init__.h"
-void common_hal_alarm_time_time_alarm_construct(alarm_time_time_alarm_obj_t *self, mp_float_t monotonic_time) {
+void common_hal_alarm_time_timealarm_construct(alarm_time_timealarm_obj_t *self, mp_float_t monotonic_time) {
self->monotonic_time = monotonic_time;
}
-mp_float_t common_hal_alarm_time_time_alarm_get_monotonic_time(alarm_time_time_alarm_obj_t *self) {
+mp_float_t common_hal_alarm_time_timealarm_get_monotonic_time(alarm_time_timealarm_obj_t *self) {
return self->monotonic_time;
}
mp_obj_t alarm_time_timealarm_get_wakeup_alarm(size_t n_alarms, const mp_obj_t *alarms) {
// First, check to see if we match
for (size_t i = 0; i < n_alarms; i++) {
- if (MP_OBJ_IS_TYPE(alarms[i], &alarm_time_time_alarm_type)) {
+ if (MP_OBJ_IS_TYPE(alarms[i], &alarm_time_timealarm_type)) {
return alarms[i];
}
}
- alarm_time_time_alarm_obj_t *timer = m_new_obj(alarm_time_time_alarm_obj_t);
- timer->base.type = &alarm_time_time_alarm_type;
+ alarm_time_timealarm_obj_t *timer = m_new_obj(alarm_time_timealarm_obj_t);
+ timer->base.type = &alarm_time_timealarm_type;
// TODO: Set monotonic_time based on the RTC state.
timer->monotonic_time = 0.0f;
return timer;
@@ -63,9 +63,7 @@ STATIC bool woke_up = false;
void timer_callback(void *arg) {
(void) arg;
woke_up = true;
- if (sleeping_circuitpython_task) {
- xTaskNotifyGive(sleeping_circuitpython_task);
- }
+ xTaskNotifyGive(circuitpython_task);
}
bool alarm_time_timealarm_woke_us_up(void) {
@@ -79,7 +77,24 @@ void alarm_time_timealarm_reset(void) {
woke_up = false;
}
-void alarm_time_timealarm_set_alarm(alarm_time_time_alarm_obj_t *self) {
+void alarm_time_timealarm_set_alarms(bool deep_sleep, size_t n_alarms, const mp_obj_t *alarms) {
+ bool timealarm_set = false;
+ alarm_time_timealarm_obj_t *timealarm = MP_OBJ_NULL;
+
+ for (size_t i = 0; i < n_alarms; i++) {
+ if (!MP_OBJ_IS_TYPE(alarms[i], &alarm_time_timealarm_type)) {
+ continue;
+ }
+ if (timealarm_set) {
+ mp_raise_ValueError(translate("Only one alarm.time alarm can be set."));
+ }
+ timealarm = MP_OBJ_TO_PTR(alarms[i]);
+ timealarm_set = true;
+ }
+ if (!timealarm_set) {
+ return;
+ }
+
if (pretend_sleep_timer != NULL) {
esp_timer_stop(pretend_sleep_timer);
} else {
@@ -94,7 +109,7 @@ void alarm_time_timealarm_set_alarm(alarm_time_time_alarm_obj_t *self) {
// Compute how long to actually sleep, considering the time now.
mp_float_t now_secs = uint64_to_float(common_hal_time_monotonic_ms()) / 1000.0f;
- mp_float_t wakeup_in_secs = MAX(0.0f, self->monotonic_time - now_secs);
+ mp_float_t wakeup_in_secs = MAX(0.0f, timealarm->monotonic_time - now_secs);
const uint64_t sleep_for_us = (uint64_t) (wakeup_in_secs * 1000000);
esp_sleep_enable_timer_wakeup(sleep_for_us);
diff --git a/ports/esp32s2/common-hal/alarm/time/TimeAlarm.h b/ports/esp32s2/common-hal/alarm/time/TimeAlarm.h
index 04c553009..dfd75524f 100644
--- a/ports/esp32s2/common-hal/alarm/time/TimeAlarm.h
+++ b/ports/esp32s2/common-hal/alarm/time/TimeAlarm.h
@@ -30,11 +30,11 @@
typedef struct {
mp_obj_base_t base;
mp_float_t monotonic_time; // values compatible with time.monotonic_time()
-} alarm_time_time_alarm_obj_t;
+} alarm_time_timealarm_obj_t;
// Find the alarm object that caused us to wake up or create an equivalent one.
mp_obj_t alarm_time_timealarm_get_wakeup_alarm(size_t n_alarms, const mp_obj_t *alarms);
// Check for the wake up alarm from pretend deep sleep.
bool alarm_time_timealarm_woke_us_up(void);
-void alarm_time_timealarm_set_alarm(alarm_time_time_alarm_obj_t *self);
+void alarm_time_timealarm_set_alarms(bool deep_sleep, size_t n_alarms, const mp_obj_t *alarms);
void alarm_time_timealarm_reset(void);
diff --git a/ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c b/ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
new file mode 100644
index 000000000..20553877c
--- /dev/null
+++ b/ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
@@ -0,0 +1,153 @@
+/*
+ * This file is part of the MicroPython project, http://micropython.org/
+ *
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2020 microDev
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+#include "shared-bindings/alarm/touch/TouchAlarm.h"
+#include "shared-bindings/microcontroller/__init__.h"
+
+#include "esp_sleep.h"
+#include "peripherals/touch.h"
+#include "supervisor/esp_port.h"
+
+static volatile bool woke_up = false;
+static touch_pad_t touch_channel = TOUCH_PAD_MAX;
+
+void common_hal_alarm_touch_touchalarm_construct(alarm_touch_touchalarm_obj_t *self, const mcu_pin_obj_t *pin) {
+ if (pin->touch_channel == TOUCH_PAD_MAX) {
+ mp_raise_ValueError(translate("Invalid pin"));
+ }
+ claim_pin(pin);
+ self->pin = pin;
+}
+
+mp_obj_t alarm_touch_touchalarm_get_wakeup_alarm(const size_t n_alarms, const mp_obj_t *alarms) {
+ // First, check to see if we match any given alarms.
+ for (size_t i = 0; i < n_alarms; i++) {
+ if (MP_OBJ_IS_TYPE(alarms[i], &alarm_touch_touchalarm_type)) {
+ return alarms[i];
+ }
+ }
+
+ alarm_touch_touchalarm_obj_t *alarm = m_new_obj(alarm_touch_touchalarm_obj_t);
+ alarm->base.type = &alarm_touch_touchalarm_type;
+ alarm->pin = NULL;
+
+ // Map the pin number back to a pin object.
+ for (size_t i = 0; i < mcu_pin_globals.map.used; i++) {
+ const mcu_pin_obj_t* pin_obj = MP_OBJ_TO_PTR(mcu_pin_globals.map.table[i].value);
+ if (pin_obj->touch_channel == touch_channel) {
+ alarm->pin = mcu_pin_globals.map.table[i].value;
+ break;
+ }
+ }
+
+ return alarm;
+}
+
+// This is used to wake the main CircuitPython task.
+void touch_interrupt(void *arg) {
+ (void) arg;
+ woke_up = true;
+ BaseType_t task_wakeup;
+ vTaskNotifyGiveFromISR(circuitpython_task, &task_wakeup);
+ if (task_wakeup) {
+ portYIELD_FROM_ISR();
+ }
+}
+
+void alarm_touch_touchalarm_set_alarm(const bool deep_sleep, const size_t n_alarms, const mp_obj_t *alarms) {
+ bool touch_alarm_set = false;
+ alarm_touch_touchalarm_obj_t *touch_alarm = MP_OBJ_NULL;
+
+ for (size_t i = 0; i < n_alarms; i++) {
+ if (MP_OBJ_IS_TYPE(alarms[i], &alarm_touch_touchalarm_type)) {
+ if (!touch_alarm_set) {
+ touch_alarm = MP_OBJ_TO_PTR(alarms[i]);
+ touch_alarm_set = true;
+ } else {
+ mp_raise_ValueError(translate("Only one alarm.touch alarm can be set."));
+ }
+ }
+ }
+ if (!touch_alarm_set) {
+ return;
+ }
+
+ touch_channel = touch_alarm->pin->touch_channel;
+
+ // configure interrupt for pretend to deep sleep
+ // this will be disabled if we actually deep sleep
+
+ // intialize touchpad
+ peripherals_touch_reset();
+ peripherals_touch_never_reset(true);
+ peripherals_touch_init(touch_channel);
+
+ // wait for touch data to reset
+ mp_hal_delay_ms(10);
+
+ // configure trigger threshold
+ uint32_t touch_value;
+ touch_pad_read_benchmark(touch_channel, &touch_value);
+ touch_pad_set_thresh(touch_channel, touch_value * 0.1); //10%
+
+ // configure touch interrupt
+ touch_pad_timeout_set(true, SOC_TOUCH_PAD_THRESHOLD_MAX);
+ touch_pad_isr_register(touch_interrupt, NULL, TOUCH_PAD_INTR_MASK_ALL);
+ touch_pad_intr_enable(TOUCH_PAD_INTR_MASK_ACTIVE | TOUCH_PAD_INTR_MASK_INACTIVE | TOUCH_PAD_INTR_MASK_TIMEOUT);
+}
+
+void alarm_touch_touchalarm_prepare_for_deep_sleep(void) {
+ // intialize touchpad
+ peripherals_touch_never_reset(false);
+ peripherals_touch_reset();
+ peripherals_touch_init(touch_channel);
+
+ // configure touchpad for sleep
+ touch_pad_sleep_channel_enable(touch_channel, true);
+ touch_pad_sleep_channel_enable_proximity(touch_channel, false);
+
+ // wait for touch data to reset
+ mp_hal_delay_ms(10);
+
+ // configure trigger threshold
+ uint32_t touch_value;
+ touch_pad_sleep_channel_read_smooth(touch_channel, &touch_value);
+ touch_pad_sleep_set_threshold(touch_channel, touch_value * 0.1); //10%
+
+ // enable touchpad wakeup
+ esp_sleep_enable_touchpad_wakeup();
+ esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_ON);
+}
+
+bool alarm_touch_touchalarm_woke_us_up(void) {
+ return woke_up;
+}
+
+void alarm_touch_touchalarm_reset(void) {
+ woke_up = false;
+ touch_channel = TOUCH_PAD_MAX;
+ peripherals_touch_never_reset(false);
+}
diff --git a/ports/esp32s2/common-hal/alarm/touch/TouchAlarm.h b/ports/esp32s2/common-hal/alarm/touch/TouchAlarm.h
new file mode 100644
index 000000000..755a3977a
--- /dev/null
+++ b/ports/esp32s2/common-hal/alarm/touch/TouchAlarm.h
@@ -0,0 +1,46 @@
+/*
+ * This file is part of the MicroPython project, http://micropython.org/
+ *
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2020 microDev
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+#ifndef MICROPY_INCLUDED_COMMON_HAL_ALARM_TOUCH_TOUCHALARM_H
+#define MICROPY_INCLUDED_COMMON_HAL_ALARM_TOUCH_TOUCHALARM_H
+
+#include "py/obj.h"
+#include "common-hal/microcontroller/Pin.h"
+
+typedef struct {
+ mp_obj_base_t base;
+ const mcu_pin_obj_t *pin;
+} alarm_touch_touchalarm_obj_t;
+
+// Find the alarm object that caused us to wake up or create an equivalent one.
+mp_obj_t alarm_touch_touchalarm_get_wakeup_alarm(const size_t n_alarms, const mp_obj_t *alarms);
+// Check for the wake up alarm from pretend deep sleep.
+void alarm_touch_touchalarm_set_alarm(const bool deep_sleep, const size_t n_alarms, const mp_obj_t *alarms);
+void alarm_touch_touchalarm_prepare_for_deep_sleep(void);
+bool alarm_touch_touchalarm_woke_us_up(void);
+void alarm_touch_touchalarm_reset(void);
+
+#endif // MICROPY_INCLUDED_COMMON_HAL_ALARM_TOUCH_TOUCHALARM_H
diff --git a/ports/esp32s2/common-hal/analogio/AnalogIn.h b/ports/esp32s2/common-hal/analogio/AnalogIn.h
index fed4d0217..b9c4866f2 100644
--- a/ports/esp32s2/common-hal/analogio/AnalogIn.h
+++ b/ports/esp32s2/common-hal/analogio/AnalogIn.h
@@ -29,7 +29,7 @@
#include "common-hal/microcontroller/Pin.h"
-#include "components/hal/include/hal/adc_types.h"
+#include "components/soc/include/hal/adc_types.h"
#include "FreeRTOS.h"
#include "freertos/semphr.h"
#include "py/obj.h"
diff --git a/ports/esp32s2/common-hal/busio/I2C.h b/ports/esp32s2/common-hal/busio/I2C.h
index c39d6d744..1a989e30a 100644
--- a/ports/esp32s2/common-hal/busio/I2C.h
+++ b/ports/esp32s2/common-hal/busio/I2C.h
@@ -29,7 +29,7 @@
#include "common-hal/microcontroller/Pin.h"
-#include "components/hal/include/hal/i2c_types.h"
+#include "components/soc/include/hal/i2c_types.h"
#include "FreeRTOS.h"
#include "freertos/semphr.h"
#include "py/obj.h"
diff --git a/ports/esp32s2/common-hal/busio/SPI.c b/ports/esp32s2/common-hal/busio/SPI.c
index 562881585..c4d54ec81 100644
--- a/ports/esp32s2/common-hal/busio/SPI.c
+++ b/ports/esp32s2/common-hal/busio/SPI.c
@@ -248,12 +248,8 @@ void common_hal_busio_spi_deinit(busio_spi_obj_t *self) {
spi_bus_free(self->host_id);
common_hal_reset_pin(self->clock_pin);
- if (self->MOSI_pin != NULL) {
- common_hal_reset_pin(self->MOSI_pin);
- }
- if (self->MISO_pin != NULL) {
- common_hal_reset_pin(self->MISO_pin);
- }
+ common_hal_reset_pin(self->MOSI_pin);
+ common_hal_reset_pin(self->MISO_pin);
self->clock_pin = NULL;
self->MISO_pin = NULL;
self->MOSI_pin = NULL;
@@ -273,7 +269,7 @@ bool common_hal_busio_spi_configure(busio_spi_obj_t *self,
self->bits = bits;
self->target_frequency = baudrate;
self->hal_context.timing_conf = &self->timing_conf;
- esp_err_t result = spi_hal_cal_clock_conf(&self->hal_context,
+ esp_err_t result = spi_hal_get_clock_conf(&self->hal_context,
self->target_frequency,
128 /* duty_cycle */,
self->connected_through_gpio,
@@ -366,7 +362,8 @@ bool common_hal_busio_spi_transfer(busio_spi_obj_t *self, const uint8_t *data_ou
burst_length = sizeof(hal->hw->data_buf);
// When switching to non-DMA, we need to make sure DMA is off. Otherwise,
// the S2 will transmit zeroes instead of our data.
- spi_ll_txdma_disable(hal->hw);
+ hal->hw->dma_out_link.dma_tx_ena = 0;
+ hal->hw->dma_out_link.stop = 1;
}
// This rounds up.
diff --git a/ports/esp32s2/common-hal/busio/SPI.h b/ports/esp32s2/common-hal/busio/SPI.h
index f6c1c344a..d6203feae 100644
--- a/ports/esp32s2/common-hal/busio/SPI.h
+++ b/ports/esp32s2/common-hal/busio/SPI.h
@@ -30,8 +30,8 @@
#include "common-hal/microcontroller/Pin.h"
#include "components/driver/include/driver/spi_common_internal.h"
-#include "components/hal/include/hal/spi_hal.h"
-#include "components/hal/include/hal/spi_types.h"
+#include "components/soc/include/hal/spi_hal.h"
+#include "components/soc/include/hal/spi_types.h"
#include "py/obj.h"
typedef struct {
diff --git a/ports/esp32s2/common-hal/busio/UART.h b/ports/esp32s2/common-hal/busio/UART.h
index 1d7f13511..751fb2e00 100644
--- a/ports/esp32s2/common-hal/busio/UART.h
+++ b/ports/esp32s2/common-hal/busio/UART.h
@@ -29,7 +29,7 @@
#include "common-hal/microcontroller/Pin.h"
-#include "components/hal/include/hal/uart_types.h"
+#include "components/soc/include/hal/uart_types.h"
#include "py/obj.h"
typedef struct {
diff --git a/ports/esp32s2/common-hal/digitalio/DigitalInOut.c b/ports/esp32s2/common-hal/digitalio/DigitalInOut.c
index 152db1e71..a2a0209f9 100644
--- a/ports/esp32s2/common-hal/digitalio/DigitalInOut.c
+++ b/ports/esp32s2/common-hal/digitalio/DigitalInOut.c
@@ -30,7 +30,7 @@
#include "components/driver/include/driver/gpio.h"
-#include "components/hal/include/hal/gpio_hal.h"
+#include "components/soc/include/hal/gpio_hal.h"
void common_hal_digitalio_digitalinout_never_reset(
digitalio_digitalinout_obj_t *self) {
diff --git a/ports/esp32s2/common-hal/dualbank/__init__.c b/ports/esp32s2/common-hal/dualbank/__init__.c
index 0f468a036..1414f131d 100644
--- a/ports/esp32s2/common-hal/dualbank/__init__.c
+++ b/ports/esp32s2/common-hal/dualbank/__init__.c
@@ -100,7 +100,7 @@ void common_hal_dualbank_flash(const void *buf, const size_t len, const size_t o
}
}
- err = esp_ota_begin(update_partition, OTA_WITH_SEQUENTIAL_WRITES, &update_handle);
+ err = esp_ota_begin(update_partition, OTA_SIZE_UNKNOWN, &update_handle);
if (err != ESP_OK) {
ESP_LOGE(TAG, "esp_ota_begin failed (%s)", esp_err_to_name(err));
task_fatal_error();
diff --git a/ports/esp32s2/common-hal/microcontroller/Pin.c b/ports/esp32s2/common-hal/microcontroller/Pin.c
index 81dfa1308..fca89ce8e 100644
--- a/ports/esp32s2/common-hal/microcontroller/Pin.c
+++ b/ports/esp32s2/common-hal/microcontroller/Pin.c
@@ -32,7 +32,7 @@
#include "py/mphal.h"
#include "components/driver/include/driver/gpio.h"
-#include "components/hal/include/hal/gpio_hal.h"
+#include "components/soc/include/hal/gpio_hal.h"
#ifdef MICROPY_HW_NEOPIXEL
bool neopixel_in_use;
@@ -89,6 +89,9 @@ void reset_pin_number(gpio_num_t pin_number) {
}
void common_hal_reset_pin(const mcu_pin_obj_t* pin) {
+ if (pin == NULL) {
+ return;
+ }
reset_pin_number(pin->number);
}
diff --git a/ports/esp32s2/common-hal/touchio/TouchIn.c b/ports/esp32s2/common-hal/touchio/TouchIn.c
index b27cbcf86..401b84d5c 100644
--- a/ports/esp32s2/common-hal/touchio/TouchIn.c
+++ b/ports/esp32s2/common-hal/touchio/TouchIn.c
@@ -27,20 +27,11 @@
#include "shared-bindings/touchio/TouchIn.h"
#include "py/runtime.h"
-#include "driver/touch_pad.h"
-
-bool touch_inited = false;
-
-void touchin_reset(void) {
- if (touch_inited) {
- touch_pad_deinit();
- touch_inited = false;
- }
-}
+#include "peripherals/touch.h"
static uint16_t get_raw_reading(touchio_touchin_obj_t *self) {
uint32_t touch_value;
- touch_pad_read_raw_data((touch_pad_t)self->pin->touch_channel, &touch_value);
+ touch_pad_read_raw_data(self->pin->touch_channel, &touch_value);
if (touch_value > UINT16_MAX) {
return UINT16_MAX;
}
@@ -54,21 +45,12 @@ void common_hal_touchio_touchin_construct(touchio_touchin_obj_t* self,
}
claim_pin(pin);
- if (!touch_inited) {
- touch_pad_init();
- touch_pad_set_fsm_mode(TOUCH_FSM_MODE_TIMER);
- touch_pad_fsm_start();
- touch_inited = true;
- }
-
- touch_pad_config((touch_pad_t)pin->touch_channel);
+ // initialize touchpad
+ peripherals_touch_init(pin->touch_channel);
- // wait for "raw data" to reset
+ // wait for touch data to reset
mp_hal_delay_ms(10);
- // Initial values for pins will vary, depending on what peripherals the pins
- // share on-chip.
-
// Set a "touched" threshold not too far above the initial value.
// For simple finger touch, the values may vary as much as a factor of two,
// but for touches using fruit or other objects, the difference is much less.
diff --git a/ports/esp32s2/common-hal/touchio/TouchIn.h b/ports/esp32s2/common-hal/touchio/TouchIn.h
index 91de20931..2f7c66d2b 100644
--- a/ports/esp32s2/common-hal/touchio/TouchIn.h
+++ b/ports/esp32s2/common-hal/touchio/TouchIn.h
@@ -27,9 +27,8 @@
#ifndef MICROPY_INCLUDED_ESP32S2_COMMON_HAL_TOUCHIO_TOUCHIN_H
#define MICROPY_INCLUDED_ESP32S2_COMMON_HAL_TOUCHIO_TOUCHIN_H
-#include "common-hal/microcontroller/Pin.h"
-
#include "py/obj.h"
+#include "common-hal/microcontroller/Pin.h"
typedef struct {
mp_obj_base_t base;
@@ -37,6 +36,4 @@ typedef struct {
uint16_t threshold;
} touchio_touchin_obj_t;
-void touchin_reset(void);
-
#endif // MICROPY_INCLUDED_ESP32S2_COMMON_HAL_TOUCHIO_TOUCHIN_H
diff --git a/ports/esp32s2/common-hal/wifi/Network.c b/ports/esp32s2/common-hal/wifi/Network.c
index e90b3d552..2674df065 100644
--- a/ports/esp32s2/common-hal/wifi/Network.c
+++ b/ports/esp32s2/common-hal/wifi/Network.c
@@ -48,3 +48,9 @@ mp_obj_t common_hal_wifi_network_get_rssi(wifi_network_obj_t *self) {
mp_obj_t common_hal_wifi_network_get_channel(wifi_network_obj_t *self) {
return mp_obj_new_int(self->record.primary);
}
+
+mp_obj_t common_hal_wifi_network_get_country(wifi_network_obj_t *self) {
+ const char* cstr = (const char*) self->record.country.cc;
+ // 2 instead of strlen(cstr) as this gives us only the country-code
+ return mp_obj_new_str(cstr, 2);
+}
diff --git a/ports/esp32s2/common-hal/wifi/Radio.c b/ports/esp32s2/common-hal/wifi/Radio.c
index 05506783e..3bc2258a4 100644
--- a/ports/esp32s2/common-hal/wifi/Radio.c
+++ b/ports/esp32s2/common-hal/wifi/Radio.c
@@ -198,6 +198,17 @@ mp_obj_t common_hal_wifi_radio_get_ap_info(wifi_radio_obj_t *self) {
if (esp_wifi_sta_get_ap_info(&self->ap_info.record) != ESP_OK){
return mp_const_none;
} else {
+ if (strlen(self->ap_info.record.country.cc) == 0) {
+ // Workaround to fill country related information in ap_info until ESP-IDF carries a fix
+ // esp_wifi_sta_get_ap_info does not appear to fill wifi_country_t (e.g. country.cc) details
+ // (IDFGH-4437) #6267
+ // Note: It is possible that Wi-Fi APs don't have a CC set, then even after this workaround
+ // the element would remain empty.
+ memset(&self->ap_info.record.country, 0, sizeof(wifi_country_t));
+ if (esp_wifi_get_country(&self->ap_info.record.country) != ESP_OK) {
+ return mp_const_none;
+ }
+ }
memcpy(&ap_info->record, &self->ap_info.record, sizeof(wifi_ap_record_t));
return MP_OBJ_FROM_PTR(ap_info);
}
diff --git a/ports/esp32s2/esp-idf b/ports/esp32s2/esp-idf
-Subproject d06744f5efc382c61cbad8758107cec308feef0
+Subproject ebe7784258d8c10e9cc334ccc00c3fd270746c8
diff --git a/ports/esp32s2/peripherals/pins.h b/ports/esp32s2/peripherals/pins.h
index c78eb8385..e0f5e7ddf 100644
--- a/ports/esp32s2/peripherals/pins.h
+++ b/ports/esp32s2/peripherals/pins.h
@@ -35,16 +35,16 @@
#include "esp32s2_peripherals_config.h"
#include "esp-idf/config/sdkconfig.h"
-#include "components/hal/include/hal/gpio_types.h"
-#include "components/hal/include/hal/adc_types.h"
-#include "components/hal/include/hal/touch_sensor_types.h"
+#include "components/soc/include/hal/gpio_types.h"
+#include "components/soc/include/hal/adc_types.h"
+#include "components/soc/include/hal/touch_sensor_types.h"
typedef struct {
PIN_PREFIX_FIELDS
gpio_num_t number;
uint8_t adc_index:2;
uint8_t adc_channel:6;
- uint8_t touch_channel;
+ touch_pad_t touch_channel;
} mcu_pin_obj_t;
extern const mcu_pin_obj_t pin_GPIO0;
diff --git a/ports/esp32s2/peripherals/touch.c b/ports/esp32s2/peripherals/touch.c
new file mode 100644
index 000000000..6cf33b2bd
--- /dev/null
+++ b/ports/esp32s2/peripherals/touch.c
@@ -0,0 +1,53 @@
+/*
+ * This file is part of the MicroPython project, http://micropython.org/
+ *
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2020 microDev
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+#include "components/soc/include/hal/gpio_types.h"
+// above include fixes build error in idf@v4.2
+#include "peripherals/touch.h"
+
+static bool touch_inited = false;
+static bool touch_never_reset = false;
+
+void peripherals_touch_reset(void) {
+ if (touch_inited && !touch_never_reset) {
+ touch_pad_deinit();
+ touch_inited = false;
+ }
+}
+
+void peripherals_touch_never_reset(const bool enable) {
+ touch_never_reset = enable;
+}
+
+void peripherals_touch_init(const touch_pad_t touchpad) {
+ if (!touch_inited) {
+ touch_pad_init();
+ touch_pad_set_fsm_mode(TOUCH_FSM_MODE_TIMER);
+ touch_pad_fsm_start();
+ touch_inited = true;
+ }
+ touch_pad_config(touchpad);
+}
diff --git a/ports/esp32s2/peripherals/touch.h b/ports/esp32s2/peripherals/touch.h
new file mode 100644
index 000000000..218045f39
--- /dev/null
+++ b/ports/esp32s2/peripherals/touch.h
@@ -0,0 +1,36 @@
+/*
+ * This file is part of the MicroPython project, http://micropython.org/
+ *
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2020 microDev
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+#ifndef MICROPY_INCLUDED_ESP32S2_PERIPHERALS_TOUCH_HANDLER_H
+#define MICROPY_INCLUDED_ESP32S2_PERIPHERALS_TOUCH_HANDLER_H
+
+#include "driver/touch_pad.h"
+
+extern void peripherals_touch_reset(void);
+extern void peripherals_touch_never_reset(const bool enable);
+extern void peripherals_touch_init(const touch_pad_t touchpad);
+
+#endif // MICROPY_INCLUDED_ESP32S2_PERIPHERALS_TOUCH_HANDLER_H
diff --git a/ports/esp32s2/supervisor/esp_port.h b/ports/esp32s2/supervisor/esp_port.h
index 1164666cd..8b9e13829 100644
--- a/ports/esp32s2/supervisor/esp_port.h
+++ b/ports/esp32s2/supervisor/esp_port.h
@@ -30,6 +30,6 @@
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
-extern TaskHandle_t sleeping_circuitpython_task;
+extern TaskHandle_t circuitpython_task;
#endif // MICROPY_INCLUDED_ESP32S2_SUPERVISOR_PORT_H
diff --git a/ports/esp32s2/supervisor/port.c b/ports/esp32s2/supervisor/port.c
index a56ac61c8..213473b8d 100644
--- a/ports/esp32s2/supervisor/port.c
+++ b/ports/esp32s2/supervisor/port.c
@@ -45,7 +45,6 @@
#include "common-hal/ps2io/Ps2.h"
#include "common-hal/pulseio/PulseIn.h"
#include "common-hal/pwmio/PWMOut.h"
-#include "common-hal/touchio/TouchIn.h"
#include "common-hal/watchdog/WatchDogTimer.h"
#include "common-hal/wifi/__init__.h"
#include "supervisor/memory.h"
@@ -55,7 +54,8 @@
#include "peripherals/rmt.h"
#include "peripherals/pcnt.h"
#include "peripherals/timer.h"
-#include "components/esp_rom/include/esp_rom_uart.h"
+#include "peripherals/touch.h"
+#include "components/esp_rom/include/esp32s2/rom/ets_sys.h"
#include "components/heap/include/esp_heap_caps.h"
#include "components/xtensa/include/esp_debug_helpers.h"
#include "components/soc/soc/esp32s2/include/soc/cache_memory.h"
@@ -67,13 +67,22 @@ uint32_t* heap;
uint32_t heap_size;
STATIC esp_timer_handle_t _tick_timer;
+STATIC esp_timer_handle_t _sleep_timer;
+
+TaskHandle_t circuitpython_task = NULL;
extern void esp_restart(void) NORETURN;
void tick_timer_cb(void* arg) {
supervisor_tick();
+
+ // CircuitPython's VM is run in a separate FreeRTOS task from timer callbacks. So, we have to
+ // notify the main task every time in case it's waiting for us.
+ xTaskNotifyGive(circuitpython_task);
}
+void sleep_timer_cb(void* arg);
+
safe_mode_t port_init(void) {
esp_timer_create_args_t args;
args.callback = &tick_timer_cb;
@@ -82,9 +91,17 @@ safe_mode_t port_init(void) {
args.name = "CircuitPython Tick";
esp_timer_create(&args, &_tick_timer);
- #ifdef DEBUG
+ args.callback = &sleep_timer_cb;
+ args.arg = NULL;
+ args.dispatch_method = ESP_TIMER_TASK;
+ args.name = "CircuitPython Sleep";
+ esp_timer_create(&args, &_sleep_timer);
+
+ circuitpython_task = xTaskGetCurrentTaskHandle();
+
// Send the ROM output out of the UART. This includes early logs.
- esp_rom_install_channel_putc(1, esp_rom_uart_putc);
+ #ifdef DEBUG
+ ets_install_uart_printf();
#endif
heap = NULL;
@@ -104,11 +121,15 @@ safe_mode_t port_init(void) {
}
esp_reset_reason_t reason = esp_reset_reason();
- if (reason == ESP_RST_BROWNOUT) {
- return BROWNOUT;
- }
- if (reason == ESP_RST_PANIC) {
- return HARD_CRASH;
+ switch (reason) {
+ case ESP_RST_BROWNOUT:
+ return BROWNOUT;
+ case ESP_RST_PANIC:
+ case ESP_RST_INT_WDT:
+ case ESP_RST_WDT:
+ return HARD_CRASH;
+ default:
+ break;
}
return NO_SAFE_MODE;
@@ -169,7 +190,7 @@ void reset_port(void) {
#endif
#if CIRCUITPY_TOUCHIO_USE_NATIVE
- touchin_reset();
+ peripherals_touch_reset();
#endif
#if CIRCUITPY_WATCHDOG
@@ -252,32 +273,24 @@ void port_enable_tick(void) {
// Disable 1/1024 second tick.
void port_disable_tick(void) {
esp_timer_stop(_tick_timer);
-
- // CircuitPython's VM is run in a separate FreeRTOS task from TinyUSB.
- // Tick disable can happen via auto-reload so poke the main task here.
- if (sleeping_circuitpython_task != NULL) {
- xTaskNotifyGive(sleeping_circuitpython_task);
- }
}
-TickType_t sleep_time_duration;
+void sleep_timer_cb(void* arg) {
+ xTaskNotifyGive(circuitpython_task);
+}
void port_interrupt_after_ticks(uint32_t ticks) {
- sleep_time_duration = (ticks * 100)/1024;
+ uint64_t timeout_us = ticks * 1000000ull / 1024;
+ if (esp_timer_start_once(_sleep_timer, timeout_us) != ESP_OK) {
+ esp_timer_stop(_sleep_timer);
+ esp_timer_start_once(_sleep_timer, timeout_us);
+ }
}
+// On the ESP we use FreeRTOS notifications instead of interrupts so this is a
+// bit of a misnomer.
void port_idle_until_interrupt(void) {
- uint32_t notify_value = 0;
-
- if (sleep_time_duration == 0) {
- return;
- }
- sleeping_circuitpython_task = xTaskGetCurrentTaskHandle();
- xTaskNotifyWait(0x01, 0x01, &notify_value, sleep_time_duration );
- sleeping_circuitpython_task = NULL;
- if (notify_value == 1) {
- mp_handle_pending();
- }
+ xTaskNotifyWait(0x01, 0x01, NULL, portMAX_DELAY);
}
// Wrap main in app_main that the IDF expects.
diff --git a/ports/esp32s2/supervisor/usb.c b/ports/esp32s2/supervisor/usb.c
index 2bfcdfb12..16657d407 100644
--- a/ports/esp32s2/supervisor/usb.c
+++ b/ports/esp32s2/supervisor/usb.c
@@ -26,6 +26,7 @@
*/
#include "supervisor/usb.h"
+#include "supervisor/esp_port.h"
#include "lib/utils/interrupt_char.h"
#include "lib/mp-readline/readline.h"
@@ -33,8 +34,7 @@
#include "components/driver/include/driver/periph_ctrl.h"
#include "components/driver/include/driver/gpio.h"
#include "components/esp_rom/include/esp32s2/rom/gpio.h"
-#include "components/esp_rom/include/esp_rom_gpio.h"
-#include "components/hal/esp32s2/include/hal/gpio_ll.h"
+#include "components/soc/src/esp32s2/include/hal/gpio_ll.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
@@ -52,8 +52,6 @@
StackType_t usb_device_stack[USBD_STACK_SIZE];
StaticTask_t usb_device_taskdef;
-TaskHandle_t sleeping_circuitpython_task = NULL;
-
// USB Device Driver task
// This top level thread process all usb events and invoke callbacks
void usb_device_task(void* param)
@@ -78,23 +76,20 @@ static void configure_pins (usb_hal_context_t *usb)
* Introduce additional parameters in usb_hal_context_t when adding support
* for USB Host.
*/
- for ( const usb_iopin_dsc_t *iopin = usb_periph_iopins; iopin->pin != -1; ++iopin ) {
- if ( (usb->use_external_phy) || (iopin->ext_phy_only == 0) ) {
- esp_rom_gpio_pad_select_gpio(iopin->pin);
- if ( iopin->is_output ) {
- esp_rom_gpio_connect_out_signal(iopin->pin, iopin->func, false, false);
- }
- else {
- esp_rom_gpio_connect_in_signal(iopin->pin, iopin->func, false);
- if ( (iopin->pin != GPIO_FUNC_IN_LOW) && (iopin->pin != GPIO_FUNC_IN_HIGH) ) {
- gpio_ll_input_enable(&GPIO, iopin->pin);
- }
+ for (const usb_iopin_dsc_t* iopin = usb_periph_iopins; iopin->pin != -1; ++iopin) {
+ if ((usb->use_external_phy) || (iopin->ext_phy_only == 0)) {
+ gpio_pad_select_gpio(iopin->pin);
+ if (iopin->is_output) {
+ gpio_matrix_out(iopin->pin, iopin->func, false, false);
+ } else {
+ gpio_matrix_in(iopin->pin, iopin->func, false);
+ gpio_pad_input_enable(iopin->pin);
}
- esp_rom_gpio_pad_unhold(iopin->pin);
+ gpio_pad_unhold(iopin->pin);
}
}
- if ( !usb->use_external_phy ) {
- gpio_set_drive_capability(USBPHY_DM_NUM, GPIO_DRIVE_CAP_3);
+ if (!usb->use_external_phy) {
+ gpio_set_drive_capability(USBPHY_DP_NUM, GPIO_DRIVE_CAP_3);
gpio_set_drive_capability(USBPHY_DP_NUM, GPIO_DRIVE_CAP_3);
}
}
@@ -131,8 +126,6 @@ void tud_cdc_rx_wanted_cb(uint8_t itf, char wanted_char)
mp_keyboard_interrupt();
// CircuitPython's VM is run in a separate FreeRTOS task from TinyUSB.
// So, we must notify the other task when a CTRL-C is received.
- if (sleeping_circuitpython_task != NULL) {
- xTaskNotifyGive(sleeping_circuitpython_task);
- }
+ xTaskNotifyGive(circuitpython_task);
}
}
diff --git a/ports/litex/boards/fomu/fomu-spi.ld b/ports/litex/boards/fomu/fomu-spi.ld
index 9b6443c67..e7db25b0c 100644
--- a/ports/litex/boards/fomu/fomu-spi.ld
+++ b/ports/litex/boards/fomu/fomu-spi.ld
@@ -51,6 +51,11 @@ SECTIONS
*(.text.tu_edpt_dir)
*(.text.tu_fifo_empty)
*(.text.usbd_edpt_busy)
+ *(.text.usb_irq_handler)
+ *(.text.supervisor_tick)
+ *(.text.port_get_raw_ticks)
+ *(.text.__modsi3)
+ *(.text.__udivsi3)
*(.text.irq_getmask)
*(.text.irq_setmask)
*(.text.irq_pending)
diff --git a/ports/litex/common-hal/microcontroller/Pin.c b/ports/litex/common-hal/microcontroller/Pin.c
index 38601e0d3..4d088a076 100644
--- a/ports/litex/common-hal/microcontroller/Pin.c
+++ b/ports/litex/common-hal/microcontroller/Pin.c
@@ -42,6 +42,9 @@ void reset_pin_number(uint8_t pin_port, uint8_t pin_number) {
}
void common_hal_reset_pin(const mcu_pin_obj_t* pin) {
+ if (pin == NULL) {
+ return;
+ }
reset_pin_number(0, pin->number);
}
diff --git a/ports/litex/common-hal/microcontroller/__init__.c b/ports/litex/common-hal/microcontroller/__init__.c
index 3c9166114..522a41e2e 100644
--- a/ports/litex/common-hal/microcontroller/__init__.c
+++ b/ports/litex/common-hal/microcontroller/__init__.c
@@ -59,12 +59,15 @@ void common_hal_mcu_delay_us(uint32_t delay) {
volatile uint32_t nesting_count = 0;
+__attribute__((section(".ramtext")))
void common_hal_mcu_disable_interrupts(void) {
- irq_setie(0);
- // __DMB();
+ if (nesting_count == 0) {
+ irq_setie(0);
+ }
nesting_count++;
}
+__attribute__((section(".ramtext")))
void common_hal_mcu_enable_interrupts(void) {
if (nesting_count == 0) {
// This is very very bad because it means there was mismatched disable/enables so we
diff --git a/ports/litex/mphalport.c b/ports/litex/mphalport.c
index 862f16393..c7369dc05 100644
--- a/ports/litex/mphalport.c
+++ b/ports/litex/mphalport.c
@@ -44,16 +44,31 @@ void mp_hal_delay_us(mp_uint_t delay) {
extern void SysTick_Handler(void);
+// This value contains the number of times "common_hal_mcu_disable_interrupts()"
+// has been called without calling "common_hal_mcu_enable_interrupts()". Since
+// this is the interrupt handler, that means we're handling an interrupt, so
+// this value should be `0`.
+//
+// Interrupts should already be disabled when this handler is running, which means
+// this value is logically already `1`. If we didn't do this, then interrupts would
+// be prematurely enabled by interrupt handlers that enable and disable interrupts.
+extern volatile uint32_t nesting_count;
+
__attribute__((section(".ramtext")))
void isr(void) {
uint8_t irqs = irq_pending() & irq_getmask();
+ // Increase the "nesting count". Note: This should be going from 0 -> 1.
+ nesting_count += 1;
#ifdef CFG_TUSB_MCU
if (irqs & (1 << USB_INTERRUPT))
usb_irq_handler();
#endif
if (irqs & (1 << TIMER0_INTERRUPT))
SysTick_Handler();
+
+ // Decrease the "nesting count". Note: This should be going from 1 -> 0.
+ nesting_count -= 1;
}
mp_uint_t cpu_get_regs_and_sp(mp_uint_t *regs) {
diff --git a/ports/litex/supervisor/port.c b/ports/litex/supervisor/port.c
index 4dea02065..04ff1c09b 100644
--- a/ports/litex/supervisor/port.c
+++ b/ports/litex/supervisor/port.c
@@ -32,6 +32,8 @@
#include "irq.h"
#include "csr.h"
+#include "shared-bindings/microcontroller/__init__.h"
+
// Global millisecond tick count. 1024 per second because most RTCs are clocked with 32.768khz
// crystals.
volatile uint64_t raw_ticks = 0;
@@ -129,9 +131,9 @@ uint32_t port_get_saved_word(void) {
uint64_t port_get_raw_ticks(uint8_t* subticks) {
// Reading 64 bits may take two loads, so turn of interrupts while we do it.
- irq_setie(false);
+ common_hal_mcu_disable_interrupts();
uint64_t raw_tick_snapshot = raw_ticks;
- irq_setie(true);
+ common_hal_mcu_enable_interrupts();
return raw_tick_snapshot;
}
diff --git a/ports/mimxrt10xx/common-hal/busio/SPI.c b/ports/mimxrt10xx/common-hal/busio/SPI.c
index 8fe1b799d..ce7cbea7e 100644
--- a/ports/mimxrt10xx/common-hal/busio/SPI.c
+++ b/ports/mimxrt10xx/common-hal/busio/SPI.c
@@ -220,12 +220,9 @@ void common_hal_busio_spi_deinit(busio_spi_obj_t *self) {
never_reset_spi[self->clock->bank_idx - 1] = false;
common_hal_reset_pin(self->clock->pin);
- if (self->mosi != NULL) {
- common_hal_reset_pin(self->mosi->pin);
- }
- if (self->miso != NULL) {
- common_hal_reset_pin(self->miso->pin);
- }
+ common_hal_reset_pin(self->mosi->pin);
+ common_hal_reset_pin(self->miso->pin);
+
self->clock = NULL;
self->mosi = NULL;
self->miso = NULL;
diff --git a/ports/mimxrt10xx/common-hal/busio/UART.c b/ports/mimxrt10xx/common-hal/busio/UART.c
index db5582d15..03a6e8f3e 100644
--- a/ports/mimxrt10xx/common-hal/busio/UART.c
+++ b/ports/mimxrt10xx/common-hal/busio/UART.c
@@ -295,12 +295,10 @@ void common_hal_busio_uart_deinit(busio_uart_obj_t *self) {
LPUART_Deinit(self->uart);
gc_free(self->ringbuf);
- if (self->rx) {
- common_hal_reset_pin(self->rx->pin);
- }
- if (self->tx) {
- common_hal_reset_pin(self->tx->pin);
- }
+
+ common_hal_reset_pin(self->rx->pin);
+ common_hal_reset_pin(self->tx->pin);
+
self->rx = NULL;
self->tx = NULL;
diff --git a/ports/mimxrt10xx/common-hal/microcontroller/Pin.c b/ports/mimxrt10xx/common-hal/microcontroller/Pin.c
index a005924e2..50970f8e2 100644
--- a/ports/mimxrt10xx/common-hal/microcontroller/Pin.c
+++ b/ports/mimxrt10xx/common-hal/microcontroller/Pin.c
@@ -67,6 +67,9 @@ void reset_all_pins(void) {
// Since i.MX pins need extra register and reset information to reset properly,
// resetting pins by number alone has been removed.
void common_hal_reset_pin(const mcu_pin_obj_t* pin) {
+ if (pin == NULL) {
+ return;
+ }
never_reset_pins[pin->mux_idx] = false;
claimed_pins[pin->mux_idx] = false;
*(uint32_t*)pin->mux_reg = pin->mux_reset;
diff --git a/ports/nrf/common-hal/microcontroller/Pin.c b/ports/nrf/common-hal/microcontroller/Pin.c
index bc7ff831a..23d6e23bf 100644
--- a/ports/nrf/common-hal/microcontroller/Pin.c
+++ b/ports/nrf/common-hal/microcontroller/Pin.c
@@ -134,6 +134,9 @@ void common_hal_never_reset_pin(const mcu_pin_obj_t* pin) {
}
void common_hal_reset_pin(const mcu_pin_obj_t* pin) {
+ if (pin == NULL) {
+ return;
+ }
reset_pin_number(pin->number);
}
diff --git a/ports/stm/common-hal/microcontroller/Pin.c b/ports/stm/common-hal/microcontroller/Pin.c
index 0e333c71c..37c202d86 100644
--- a/ports/stm/common-hal/microcontroller/Pin.c
+++ b/ports/stm/common-hal/microcontroller/Pin.c
@@ -125,6 +125,9 @@ void common_hal_never_reset_pin(const mcu_pin_obj_t* pin) {
}
void common_hal_reset_pin(const mcu_pin_obj_t* pin) {
+ if (pin == NULL) {
+ return;
+ }
reset_pin_number(pin->port, pin->number);
}
diff --git a/ports/unix/mphalport.h b/ports/unix/mphalport.h
index 6f2880d4e..4e459ffca 100644
--- a/ports/unix/mphalport.h
+++ b/ports/unix/mphalport.h
@@ -24,12 +24,14 @@
* THE SOFTWARE.
*/
#include <unistd.h>
+#include <stdbool.h>
#ifndef CHAR_CTRL_C
#define CHAR_CTRL_C (3)
#endif
void mp_hal_set_interrupt_char(char c);
+bool mp_hal_is_interrupted(void);
void mp_hal_stdio_mode_raw(void);
void mp_hal_stdio_mode_orig(void);
diff --git a/ports/unix/unix_mphal.c b/ports/unix/unix_mphal.c
index e9494d7ff..77deb3152 100644
--- a/ports/unix/unix_mphal.c
+++ b/ports/unix/unix_mphal.c
@@ -81,6 +81,10 @@ void mp_hal_set_interrupt_char(char c) {
}
}
+bool mp_hal_is_interrupted(void) {
+ return false;
+}
+
#if MICROPY_USE_READLINE == 1
#include <termios.h>
diff --git a/py/circuitpy_defns.mk b/py/circuitpy_defns.mk
index 94f8ba42e..d6d192a95 100644
--- a/py/circuitpy_defns.mk
+++ b/py/circuitpy_defns.mk
@@ -311,6 +311,7 @@ SRC_COMMON_HAL_ALL = \
alarm/__init__.c \
alarm/pin/PinAlarm.c \
alarm/time/TimeAlarm.c \
+ alarm/touch/TouchAlarm.c \
analogio/AnalogIn.c \
analogio/AnalogOut.c \
analogio/__init__.c \
diff --git a/py/obj.c b/py/obj.c
index b6462641c..5f19089e8 100644
--- a/py/obj.c
+++ b/py/obj.c
@@ -29,6 +29,7 @@
#include <stdarg.h>
#include <assert.h>
+#include "lib/utils/interrupt_char.h"
#include "py/obj.h"
#include "py/objtype.h"
#include "py/objint.h"
@@ -67,7 +68,12 @@ void mp_obj_print_helper(const mp_print_t *print, mp_obj_t o_in, mp_print_kind_t
#ifdef RUN_BACKGROUND_TASKS
RUN_BACKGROUND_TASKS;
#endif
- mp_handle_pending();
+ #if MICROPY_KBD_EXCEPTION
+ // Stop printing if we've been interrupted.
+ if (mp_hal_is_interrupted()) {
+ return;
+ }
+ #endif
#ifndef NDEBUG
if (o_in == MP_OBJ_NULL) {
diff --git a/py/vm.c b/py/vm.c
index 9b3354b09..13a9980aa 100644
--- a/py/vm.c
+++ b/py/vm.c
@@ -1015,7 +1015,7 @@ unwind_jump:;
}
#endif
SET_TOP(mp_call_method_n_kw(unum & 0xff, (unum >> 8) & 0xff, sp));
- DISPATCH();
+ DISPATCH_WITH_PEND_EXC_CHECK();
}
ENTRY(MP_BC_CALL_METHOD_VAR_KW): {
diff --git a/shared-bindings/_pixelbuf/PixelBuf.c b/shared-bindings/_pixelbuf/PixelBuf.c
index 88e8aa801..a4b5b5b1b 100644
--- a/shared-bindings/_pixelbuf/PixelBuf.c
+++ b/shared-bindings/_pixelbuf/PixelBuf.c
@@ -185,7 +185,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(pixelbuf_pixelbuf_get_brightness_obj, pixelbuf_pixelbu
STATIC mp_obj_t pixelbuf_pixelbuf_obj_set_brightness(mp_obj_t self_in, mp_obj_t value) {
- mp_float_t brightness = mp_obj_float_get(value);
+ mp_float_t brightness = mp_obj_get_float(value);
if (brightness > 1) {
brightness = 1;
} else if (brightness < 0) {
diff --git a/shared-bindings/alarm/__init__.c b/shared-bindings/alarm/__init__.c
index 700fe020e..7023c70e5 100644
--- a/shared-bindings/alarm/__init__.c
+++ b/shared-bindings/alarm/__init__.c
@@ -32,6 +32,7 @@
#include "shared-bindings/alarm/SleepMemory.h"
#include "shared-bindings/alarm/pin/PinAlarm.h"
#include "shared-bindings/alarm/time/TimeAlarm.h"
+#include "shared-bindings/alarm/touch/TouchAlarm.h"
#include "shared-bindings/supervisor/Runtime.h"
#include "shared-bindings/time/__init__.h"
#include "supervisor/shared/autoreload.h"
@@ -71,8 +72,9 @@
void validate_objs_are_alarms(size_t n_args, const mp_obj_t *objs) {
for (size_t i = 0; i < n_args; i++) {
- if (MP_OBJ_IS_TYPE(objs[i], &alarm_pin_pin_alarm_type) ||
- MP_OBJ_IS_TYPE(objs[i], &alarm_time_time_alarm_type)) {
+ if (MP_OBJ_IS_TYPE(objs[i], &alarm_pin_pinalarm_type) ||
+ MP_OBJ_IS_TYPE(objs[i], &alarm_time_timealarm_type) ||
+ MP_OBJ_IS_TYPE(objs[i], &alarm_touch_touchalarm_type)) {
continue;
}
mp_raise_TypeError_varg(translate("Expected an alarm"));
@@ -159,7 +161,7 @@ MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(alarm_exit_and_deep_sleep_until_alarms_obj,
STATIC const mp_map_elem_t alarm_pin_globals_table[] = {
{ MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_pin) },
- { MP_ROM_QSTR(MP_QSTR_PinAlarm), MP_OBJ_FROM_PTR(&alarm_pin_pin_alarm_type) },
+ { MP_ROM_QSTR(MP_QSTR_PinAlarm), MP_OBJ_FROM_PTR(&alarm_pin_pinalarm_type) },
};
STATIC MP_DEFINE_CONST_DICT(alarm_pin_globals, alarm_pin_globals_table);
@@ -172,7 +174,7 @@ STATIC const mp_obj_module_t alarm_pin_module = {
STATIC const mp_map_elem_t alarm_time_globals_table[] = {
{ MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_time) },
- { MP_ROM_QSTR(MP_QSTR_TimeAlarm), MP_OBJ_FROM_PTR(&alarm_time_time_alarm_type) },
+ { MP_ROM_QSTR(MP_QSTR_TimeAlarm), MP_OBJ_FROM_PTR(&alarm_time_timealarm_type) },
};
STATIC MP_DEFINE_CONST_DICT(alarm_time_globals, alarm_time_globals_table);
@@ -182,6 +184,18 @@ STATIC const mp_obj_module_t alarm_time_module = {
.globals = (mp_obj_dict_t*)&alarm_time_globals,
};
+STATIC const mp_map_elem_t alarm_touch_globals_table[] = {
+ { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_touch) },
+ { MP_ROM_QSTR(MP_QSTR_TouchAlarm), MP_OBJ_FROM_PTR(&alarm_touch_touchalarm_type) },
+};
+
+STATIC MP_DEFINE_CONST_DICT(alarm_touch_globals, alarm_touch_globals_table);
+
+STATIC const mp_obj_module_t alarm_touch_module = {
+ .base = { &mp_type_module },
+ .globals = (mp_obj_dict_t*)&alarm_touch_globals,
+};
+
// The module table is mutable because .wake_alarm is a mutable attribute.
STATIC mp_map_elem_t alarm_module_globals_table[] = {
{ MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_alarm) },
@@ -195,25 +209,33 @@ STATIC mp_map_elem_t alarm_module_globals_table[] = {
{ MP_ROM_QSTR(MP_QSTR_pin), MP_OBJ_FROM_PTR(&alarm_pin_module) },
{ MP_ROM_QSTR(MP_QSTR_time), MP_OBJ_FROM_PTR(&alarm_time_module) },
+ { MP_ROM_QSTR(MP_QSTR_touch), MP_OBJ_FROM_PTR(&alarm_touch_module) },
{ MP_ROM_QSTR(MP_QSTR_SleepMemory), MP_OBJ_FROM_PTR(&alarm_sleep_memory_type) },
{ MP_ROM_QSTR(MP_QSTR_sleep_memory), MP_OBJ_FROM_PTR(&alarm_sleep_memory_obj) },
};
STATIC MP_DEFINE_MUTABLE_DICT(alarm_module_globals, alarm_module_globals_table);
-STATIC void alarm_set_wake_alarm(mp_obj_t alarm) {
- // Equivalent of:
- // alarm.wake_alarm = alarm
+// Fetch value from module dict.
+mp_obj_t alarm_get_wake_alarm(void) {
mp_map_elem_t *elem =
mp_map_lookup(&alarm_module_globals.map, MP_ROM_QSTR(MP_QSTR_wake_alarm), MP_MAP_LOOKUP);
if (elem) {
- elem->value = alarm;
+ return elem->value;
+ } else {
+ return NULL;
}
}
// Initialize .wake_alarm value.
-void alarm_save_wakeup_alarm(void) {
- alarm_set_wake_alarm(common_hal_alarm_get_wake_alarm());
+void alarm_save_wake_alarm(void) {
+ // Equivalent of:
+ // alarm.wake_alarm = alarm
+ mp_map_elem_t *elem =
+ mp_map_lookup(&alarm_module_globals.map, MP_ROM_QSTR(MP_QSTR_wake_alarm), MP_MAP_LOOKUP);
+ if (elem) {
+ elem->value = common_hal_alarm_get_wake_alarm();
+ }
}
const mp_obj_module_t alarm_module = {
diff --git a/shared-bindings/alarm/__init__.h b/shared-bindings/alarm/__init__.h
index 8c4b6cad9..154f91e26 100644
--- a/shared-bindings/alarm/__init__.h
+++ b/shared-bindings/alarm/__init__.h
@@ -43,13 +43,18 @@ extern void common_hal_alarm_set_deep_sleep_alarms(size_t n_alarms, const mp_obj
// Deep sleep is entered outside of the VM so we omit the `common_hal_` prefix.
extern NORETURN void alarm_enter_deep_sleep(void);
+// Fetches value from module dict.
+extern mp_obj_t alarm_get_wake_alarm(void);
+
+extern void common_hal_alarm_gc_collect(void);
extern mp_obj_t common_hal_alarm_get_wake_alarm(void);
// Used by wake-up code.
-void alarm_save_wakeup_alarm(void);
+void alarm_save_wake_alarm(void);
// True if an alarm is alerting. This is most useful for pretend deep sleep.
extern bool alarm_woken_from_sleep(void);
+
#endif // MICROPY_INCLUDED_SHARED_BINDINGS_ALARM___INIT___H
diff --git a/shared-bindings/alarm/pin/PinAlarm.c b/shared-bindings/alarm/pin/PinAlarm.c
index 7a5617142..89de016bc 100644
--- a/shared-bindings/alarm/pin/PinAlarm.c
+++ b/shared-bindings/alarm/pin/PinAlarm.c
@@ -60,9 +60,9 @@
//| """
//| ...
//|
-STATIC mp_obj_t alarm_pin_pin_alarm_make_new(const mp_obj_type_t *type, mp_uint_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
- alarm_pin_pin_alarm_obj_t *self = m_new_obj(alarm_pin_pin_alarm_obj_t);
- self->base.type = &alarm_pin_pin_alarm_type;
+STATIC mp_obj_t alarm_pin_pinalarm_make_new(const mp_obj_type_t *type, mp_uint_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
+ alarm_pin_pinalarm_obj_t *self = m_new_obj(alarm_pin_pinalarm_obj_t);
+ self->base.type = &alarm_pin_pinalarm_type;
enum { ARG_pin, ARG_value, ARG_edge, ARG_pull };
static const mp_arg_t allowed_args[] = {
{ MP_QSTR_pin, MP_ARG_REQUIRED | MP_ARG_OBJ },
@@ -75,7 +75,7 @@ STATIC mp_obj_t alarm_pin_pin_alarm_make_new(const mp_obj_type_t *type, mp_uint_
mcu_pin_obj_t *pin = validate_obj_is_free_pin(args[ARG_pin].u_obj);
- common_hal_alarm_pin_pin_alarm_construct(self,
+ common_hal_alarm_pin_pinalarm_construct(self,
pin,
args[ARG_value].u_bool,
args[ARG_edge].u_bool,
@@ -87,15 +87,19 @@ STATIC mp_obj_t alarm_pin_pin_alarm_make_new(const mp_obj_type_t *type, mp_uint_
//| pin: microcontroller.Pin
//| """The trigger pin."""
//|
-STATIC mp_obj_t alarm_pin_pin_alarm_obj_get_pin(mp_obj_t self_in) {
- alarm_pin_pin_alarm_obj_t *self = MP_OBJ_TO_PTR(self_in);
- return common_hal_alarm_pin_pin_alarm_get_pin(self);
+STATIC mp_obj_t alarm_pin_pinalarm_obj_get_pin(mp_obj_t self_in) {
+ alarm_pin_pinalarm_obj_t *self = MP_OBJ_TO_PTR(self_in);
+ mcu_pin_obj_t* pin = common_hal_alarm_pin_pinalarm_get_pin(self);
+ if (pin == NULL) {
+ return mp_const_none;
+ }
+ return MP_OBJ_FROM_PTR(pin);
}
-MP_DEFINE_CONST_FUN_OBJ_1(alarm_pin_pin_alarm_get_pin_obj, alarm_pin_pin_alarm_obj_get_pin);
+MP_DEFINE_CONST_FUN_OBJ_1(alarm_pin_pinalarm_get_pin_obj, alarm_pin_pinalarm_obj_get_pin);
-const mp_obj_property_t alarm_pin_pin_alarm_pin_obj = {
+const mp_obj_property_t alarm_pin_pinalarm_pin_obj = {
.base.type = &mp_type_property,
- .proxy = {(mp_obj_t)&alarm_pin_pin_alarm_get_pin_obj,
+ .proxy = {(mp_obj_t)&alarm_pin_pinalarm_get_pin_obj,
(mp_obj_t)&mp_const_none_obj,
(mp_obj_t)&mp_const_none_obj},
};
@@ -103,29 +107,29 @@ const mp_obj_property_t alarm_pin_pin_alarm_pin_obj = {
//| value: bool
//| """The value on which to trigger."""
//|
-STATIC mp_obj_t alarm_pin_pin_alarm_obj_get_value(mp_obj_t self_in) {
- alarm_pin_pin_alarm_obj_t *self = MP_OBJ_TO_PTR(self_in);
- return mp_obj_new_bool(common_hal_alarm_pin_pin_alarm_get_value(self));
+STATIC mp_obj_t alarm_pin_pinalarm_obj_get_value(mp_obj_t self_in) {
+ alarm_pin_pinalarm_obj_t *self = MP_OBJ_TO_PTR(self_in);
+ return mp_obj_new_bool(common_hal_alarm_pin_pinalarm_get_value(self));
}
-MP_DEFINE_CONST_FUN_OBJ_1(alarm_pin_pin_alarm_get_value_obj, alarm_pin_pin_alarm_obj_get_value);
+MP_DEFINE_CONST_FUN_OBJ_1(alarm_pin_pinalarm_get_value_obj, alarm_pin_pinalarm_obj_get_value);
-const mp_obj_property_t alarm_pin_pin_alarm_value_obj = {
+const mp_obj_property_t alarm_pin_pinalarm_value_obj = {
.base.type = &mp_type_property,
- .proxy = {(mp_obj_t)&alarm_pin_pin_alarm_get_value_obj,
+ .proxy = {(mp_obj_t)&alarm_pin_pinalarm_get_value_obj,
(mp_obj_t)&mp_const_none_obj,
(mp_obj_t)&mp_const_none_obj},
};
-STATIC const mp_rom_map_elem_t alarm_pin_pin_alarm_locals_dict_table[] = {
- { MP_ROM_QSTR(MP_QSTR_pin), MP_ROM_PTR(&alarm_pin_pin_alarm_pin_obj) },
- { MP_ROM_QSTR(MP_QSTR_value), MP_ROM_PTR(&alarm_pin_pin_alarm_value_obj) },
+STATIC const mp_rom_map_elem_t alarm_pin_pinalarm_locals_dict_table[] = {
+ { MP_ROM_QSTR(MP_QSTR_pin), MP_ROM_PTR(&alarm_pin_pinalarm_pin_obj) },
+ { MP_ROM_QSTR(MP_QSTR_value), MP_ROM_PTR(&alarm_pin_pinalarm_value_obj) },
};
-STATIC MP_DEFINE_CONST_DICT(alarm_pin_pin_alarm_locals_dict, alarm_pin_pin_alarm_locals_dict_table);
+STATIC MP_DEFINE_CONST_DICT(alarm_pin_pinalarm_locals_dict, alarm_pin_pinalarm_locals_dict_table);
-const mp_obj_type_t alarm_pin_pin_alarm_type = {
+const mp_obj_type_t alarm_pin_pinalarm_type = {
{ &mp_type_type },
.name = MP_QSTR_PinAlarm,
- .make_new = alarm_pin_pin_alarm_make_new,
- .locals_dict = (mp_obj_t)&alarm_pin_pin_alarm_locals_dict,
+ .make_new = alarm_pin_pinalarm_make_new,
+ .locals_dict = (mp_obj_t)&alarm_pin_pinalarm_locals_dict,
};
diff --git a/shared-bindings/alarm/pin/PinAlarm.h b/shared-bindings/alarm/pin/PinAlarm.h
index 49ba71089..48865009c 100644
--- a/shared-bindings/alarm/pin/PinAlarm.h
+++ b/shared-bindings/alarm/pin/PinAlarm.h
@@ -24,20 +24,20 @@
* THE SOFTWARE.
*/
-#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_ALARM_PIN_PIN_ALARM_H
-#define MICROPY_INCLUDED_SHARED_BINDINGS_ALARM_PIN_PIN_ALARM_H
+#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_ALARM_PIN_PINALARM_H
+#define MICROPY_INCLUDED_SHARED_BINDINGS_ALARM_PIN_PINALARM_H
#include "py/obj.h"
#include "py/objtuple.h"
#include "common-hal/microcontroller/Pin.h"
#include "common-hal/alarm/pin/PinAlarm.h"
-extern const mp_obj_type_t alarm_pin_pin_alarm_type;
+extern const mp_obj_type_t alarm_pin_pinalarm_type;
-void common_hal_alarm_pin_pin_alarm_construct(alarm_pin_pin_alarm_obj_t *self, mcu_pin_obj_t *pin, bool value, bool edge, bool pull);
-extern mcu_pin_obj_t *common_hal_alarm_pin_pin_alarm_get_pin(alarm_pin_pin_alarm_obj_t *self);
-extern bool common_hal_alarm_pin_pin_alarm_get_value(alarm_pin_pin_alarm_obj_t *self);
-extern bool common_hal_alarm_pin_pin_alarm_get_edge(alarm_pin_pin_alarm_obj_t *self);
-extern bool common_hal_alarm_pin_pin_alarm_get_pull(alarm_pin_pin_alarm_obj_t *self);
+void common_hal_alarm_pin_pinalarm_construct(alarm_pin_pinalarm_obj_t *self, mcu_pin_obj_t *pin, bool value, bool edge, bool pull);
+extern mcu_pin_obj_t *common_hal_alarm_pin_pinalarm_get_pin(alarm_pin_pinalarm_obj_t *self);
+extern bool common_hal_alarm_pin_pinalarm_get_value(alarm_pin_pinalarm_obj_t *self);
+extern bool common_hal_alarm_pin_pinalarm_get_edge(alarm_pin_pinalarm_obj_t *self);
+extern bool common_hal_alarm_pin_pinalarm_get_pull(alarm_pin_pinalarm_obj_t *self);
-#endif // MICROPY_INCLUDED_SHARED_BINDINGS_ALARM_PIN_PIN_ALARM_H
+#endif // MICROPY_INCLUDED_SHARED_BINDINGS_ALARM_PIN_PINALARM_H
diff --git a/shared-bindings/alarm/time/TimeAlarm.c b/shared-bindings/alarm/time/TimeAlarm.c
index 1c4d976ad..1c9b8d37c 100644
--- a/shared-bindings/alarm/time/TimeAlarm.c
+++ b/shared-bindings/alarm/time/TimeAlarm.c
@@ -56,10 +56,10 @@ mp_obj_t MP_WEAK rtc_get_time_source_time(void) {
//| """
//| ...
//|
-STATIC mp_obj_t alarm_time_time_alarm_make_new(const mp_obj_type_t *type,
+STATIC mp_obj_t alarm_time_timealarm_make_new(const mp_obj_type_t *type,
mp_uint_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
- alarm_time_time_alarm_obj_t *self = m_new_obj(alarm_time_time_alarm_obj_t);
- self->base.type = &alarm_time_time_alarm_type;
+ alarm_time_timealarm_obj_t *self = m_new_obj(alarm_time_timealarm_obj_t);
+ self->base.type = &alarm_time_timealarm_type;
enum { ARG_monotonic_time, ARG_epoch_time };
static const mp_arg_t allowed_args[] = {
@@ -105,7 +105,7 @@ STATIC mp_obj_t alarm_time_time_alarm_make_new(const mp_obj_type_t *type,
mp_raise_ValueError(translate("Time is in the past."));
}
- common_hal_alarm_time_time_alarm_construct(self, monotonic_time);
+ common_hal_alarm_time_timealarm_construct(self, monotonic_time);
return MP_OBJ_FROM_PTR(self);
}
@@ -116,28 +116,28 @@ STATIC mp_obj_t alarm_time_time_alarm_make_new(const mp_obj_type_t *type,
//| by this property only as a `time.monotonic()` time.
//| """
//|
-STATIC mp_obj_t alarm_time_time_alarm_obj_get_monotonic_time(mp_obj_t self_in) {
- alarm_time_time_alarm_obj_t *self = MP_OBJ_TO_PTR(self_in);
- return mp_obj_new_float(common_hal_alarm_time_time_alarm_get_monotonic_time(self));
+STATIC mp_obj_t alarm_time_timealarm_obj_get_monotonic_time(mp_obj_t self_in) {
+ alarm_time_timealarm_obj_t *self = MP_OBJ_TO_PTR(self_in);
+ return mp_obj_new_float(common_hal_alarm_time_timealarm_get_monotonic_time(self));
}
-MP_DEFINE_CONST_FUN_OBJ_1(alarm_time_time_alarm_get_monotonic_time_obj, alarm_time_time_alarm_obj_get_monotonic_time);
+MP_DEFINE_CONST_FUN_OBJ_1(alarm_time_timealarm_get_monotonic_time_obj, alarm_time_timealarm_obj_get_monotonic_time);
-const mp_obj_property_t alarm_time_time_alarm_monotonic_time_obj = {
+const mp_obj_property_t alarm_time_timealarm_monotonic_time_obj = {
.base.type = &mp_type_property,
- .proxy = {(mp_obj_t)&alarm_time_time_alarm_get_monotonic_time_obj,
+ .proxy = {(mp_obj_t)&alarm_time_timealarm_get_monotonic_time_obj,
(mp_obj_t)&mp_const_none_obj,
(mp_obj_t)&mp_const_none_obj},
};
-STATIC const mp_rom_map_elem_t alarm_time_time_alarm_locals_dict_table[] = {
- { MP_ROM_QSTR(MP_QSTR_monotonic_time), MP_ROM_PTR(&alarm_time_time_alarm_monotonic_time_obj) },
+STATIC const mp_rom_map_elem_t alarm_time_timealarm_locals_dict_table[] = {
+ { MP_ROM_QSTR(MP_QSTR_monotonic_time), MP_ROM_PTR(&alarm_time_timealarm_monotonic_time_obj) },
};
-STATIC MP_DEFINE_CONST_DICT(alarm_time_time_alarm_locals_dict, alarm_time_time_alarm_locals_dict_table);
+STATIC MP_DEFINE_CONST_DICT(alarm_time_timealarm_locals_dict, alarm_time_timealarm_locals_dict_table);
-const mp_obj_type_t alarm_time_time_alarm_type = {
+const mp_obj_type_t alarm_time_timealarm_type = {
{ &mp_type_type },
.name = MP_QSTR_TimeAlarm,
- .make_new = alarm_time_time_alarm_make_new,
- .locals_dict = (mp_obj_t)&alarm_time_time_alarm_locals_dict,
+ .make_new = alarm_time_timealarm_make_new,
+ .locals_dict = (mp_obj_t)&alarm_time_timealarm_locals_dict,
};
diff --git a/shared-bindings/alarm/time/TimeAlarm.h b/shared-bindings/alarm/time/TimeAlarm.h
index ceb3291c9..0a4b9caf4 100644
--- a/shared-bindings/alarm/time/TimeAlarm.h
+++ b/shared-bindings/alarm/time/TimeAlarm.h
@@ -24,16 +24,16 @@
* THE SOFTWARE.
*/
-#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_ALARM_TIME_MONOTONIC_TIME_ALARM_H
-#define MICROPY_INCLUDED_SHARED_BINDINGS_ALARM_TIME_MONOTINIC_TIME_ALARM_H
+#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_ALARM_TIME_TIMEALARM_H
+#define MICROPY_INCLUDED_SHARED_BINDINGS_ALARM_TIME_TIMEALARM_H
#include "py/obj.h"
#include "common-hal/alarm/time/TimeAlarm.h"
-extern const mp_obj_type_t alarm_time_time_alarm_type;
+extern const mp_obj_type_t alarm_time_timealarm_type;
-extern void common_hal_alarm_time_time_alarm_construct(alarm_time_time_alarm_obj_t *self, mp_float_t monotonic_time);
-extern mp_float_t common_hal_alarm_time_time_alarm_get_monotonic_time(alarm_time_time_alarm_obj_t *self);
+extern void common_hal_alarm_time_timealarm_construct(alarm_time_timealarm_obj_t *self, mp_float_t monotonic_time);
+extern mp_float_t common_hal_alarm_time_timealarm_get_monotonic_time(alarm_time_timealarm_obj_t *self);
-#endif // MICROPY_INCLUDED_SHARED_BINDINGS_ALARM_TIME_MONOTONIC_TIME_ALARM_H
+#endif // MICROPY_INCLUDED_SHARED_BINDINGS_ALARM_TIME_TIMEALARM_H
diff --git a/shared-bindings/alarm/touch/TouchAlarm.c b/shared-bindings/alarm/touch/TouchAlarm.c
new file mode 100644
index 000000000..4259b71bd
--- /dev/null
+++ b/shared-bindings/alarm/touch/TouchAlarm.c
@@ -0,0 +1,91 @@
+/*
+ * This file is part of the MicroPython project, http://micropython.org/
+ *
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2020 microDev
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+#include "shared-bindings/alarm/touch/TouchAlarm.h"
+#include "shared-bindings/board/__init__.h"
+
+#include "py/objproperty.h"
+
+//| class TouchAlarm:
+//| """Trigger an alarm when touch is detected."""
+//|
+//| def __init__(self, *pin: microcontroller.Pin) -> None:
+//| """Create an alarm that will be triggered when the given pin is touched.
+//| The alarm is not active until it is passed to an `alarm`-enabling function, such as
+//| `alarm.light_sleep_until_alarms()` or `alarm.exit_and_deep_sleep_until_alarms()`.
+//|
+//| :param microcontroller.Pin pin: The pin to monitor. On some ports, the choice of pin
+//| may be limited due to hardware restrictions, particularly for deep-sleep alarms.
+//| """
+//| ...
+//|
+STATIC mp_obj_t alarm_touch_touchalarm_make_new(const mp_obj_type_t *type,
+ mp_uint_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
+ alarm_touch_touchalarm_obj_t *self = m_new_obj(alarm_touch_touchalarm_obj_t);
+ self->base.type = &alarm_touch_touchalarm_type;
+
+ enum { ARG_pin };
+ static const mp_arg_t allowed_args[] = {
+ { MP_QSTR_pin, MP_ARG_REQUIRED | MP_ARG_OBJ },
+ };
+
+ mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)];
+ mp_arg_parse_all(n_args, pos_args, kw_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args);
+
+ const mcu_pin_obj_t *pin = validate_obj_is_free_pin(args[ARG_pin].u_obj);
+
+ common_hal_alarm_touch_touchalarm_construct(self, pin);
+
+ return MP_OBJ_FROM_PTR(self);
+}
+
+//| pin: microcontroller.Pin
+//| """The trigger pin."""
+//|
+STATIC mp_obj_t alarm_touch_touchalarm_obj_get_pin(mp_obj_t self_in) {
+ alarm_touch_touchalarm_obj_t *self = MP_OBJ_TO_PTR(self_in);
+ return MP_OBJ_FROM_PTR(self->pin);
+}
+MP_DEFINE_CONST_FUN_OBJ_1(alarm_touch_touchalarm_get_pin_obj, alarm_touch_touchalarm_obj_get_pin);
+
+const mp_obj_property_t alarm_touch_touchalarm_pin_obj = {
+ .base.type = &mp_type_property,
+ .proxy = {(mp_obj_t)&alarm_touch_touchalarm_get_pin_obj,
+ (mp_obj_t)&mp_const_none_obj,
+ (mp_obj_t)&mp_const_none_obj},
+};
+
+STATIC const mp_rom_map_elem_t alarm_touch_touchalarm_locals_dict_table[] = {
+ { MP_ROM_QSTR(MP_QSTR_pin), MP_ROM_PTR(&alarm_touch_touchalarm_pin_obj) },
+};
+STATIC MP_DEFINE_CONST_DICT(alarm_touch_touchalarm_locals_dict, alarm_touch_touchalarm_locals_dict_table);
+
+const mp_obj_type_t alarm_touch_touchalarm_type = {
+ { &mp_type_type },
+ .name = MP_QSTR_TouchAlarm,
+ .make_new = alarm_touch_touchalarm_make_new,
+ .locals_dict = (mp_obj_t)&alarm_touch_touchalarm_locals_dict,
+};
diff --git a/shared-bindings/alarm/touch/TouchAlarm.h b/shared-bindings/alarm/touch/TouchAlarm.h
new file mode 100644
index 000000000..1b70d4dae
--- /dev/null
+++ b/shared-bindings/alarm/touch/TouchAlarm.h
@@ -0,0 +1,40 @@
+/*
+ * This file is part of the MicroPython project, http://micropython.org/
+ *
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2020 microDev
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_ALARM_TOUCH_TOUCHALARM_H
+#define MICROPY_INCLUDED_SHARED_BINDINGS_ALARM_TOUCH_TOUCHALARM_H
+
+#include "py/obj.h"
+#include "py/runtime.h"
+
+#include "common-hal/microcontroller/Pin.h"
+#include "common-hal/alarm/touch/TouchAlarm.h"
+
+extern const mp_obj_type_t alarm_touch_touchalarm_type;
+
+extern void common_hal_alarm_touch_touchalarm_construct(alarm_touch_touchalarm_obj_t *self, const mcu_pin_obj_t *pin);
+
+#endif // MICROPY_INCLUDED_SHARED_BINDINGS_ALARM_TOUCH_TOUCHALARM_H
diff --git a/shared-bindings/wifi/Network.c b/shared-bindings/wifi/Network.c
index bf970a9c0..009712ad1 100644
--- a/shared-bindings/wifi/Network.c
+++ b/shared-bindings/wifi/Network.c
@@ -108,12 +108,29 @@ const mp_obj_property_t wifi_network_channel_obj = {
(mp_obj_t)&mp_const_none_obj },
};
+//| country: str
+//| """String id of the country code"""
+//|
+STATIC mp_obj_t wifi_network_get_country(mp_obj_t self) {
+ return common_hal_wifi_network_get_country(self);
+
+}
+MP_DEFINE_CONST_FUN_OBJ_1(wifi_network_get_country_obj, wifi_network_get_country);
+
+const mp_obj_property_t wifi_network_country_obj = {
+ .base.type = &mp_type_property,
+ .proxy = { (mp_obj_t)&wifi_network_get_country_obj,
+ (mp_obj_t)&mp_const_none_obj,
+ (mp_obj_t)&mp_const_none_obj },
+};
+
STATIC const mp_rom_map_elem_t wifi_network_locals_dict_table[] = {
{ MP_ROM_QSTR(MP_QSTR_ssid), MP_ROM_PTR(&wifi_network_ssid_obj) },
{ MP_ROM_QSTR(MP_QSTR_bssid), MP_ROM_PTR(&wifi_network_bssid_obj) },
{ MP_ROM_QSTR(MP_QSTR_rssi), MP_ROM_PTR(&wifi_network_rssi_obj) },
{ MP_ROM_QSTR(MP_QSTR_channel), MP_ROM_PTR(&wifi_network_channel_obj) },
+ { MP_ROM_QSTR(MP_QSTR_country), MP_ROM_PTR(&wifi_network_country_obj) },
};
STATIC MP_DEFINE_CONST_DICT(wifi_network_locals_dict, wifi_network_locals_dict_table);
diff --git a/shared-bindings/wifi/Network.h b/shared-bindings/wifi/Network.h
index c9bbc685e..e672e3108 100644
--- a/shared-bindings/wifi/Network.h
+++ b/shared-bindings/wifi/Network.h
@@ -39,5 +39,6 @@ extern mp_obj_t common_hal_wifi_network_get_ssid(wifi_network_obj_t *self);
extern mp_obj_t common_hal_wifi_network_get_bssid(wifi_network_obj_t *self);
extern mp_obj_t common_hal_wifi_network_get_rssi(wifi_network_obj_t *self);
extern mp_obj_t common_hal_wifi_network_get_channel(wifi_network_obj_t *self);
+extern mp_obj_t common_hal_wifi_network_get_country(wifi_network_obj_t *self);
#endif // MICROPY_INCLUDED_SHARED_BINDINGS_WIFI_NETWORK_H
diff --git a/shared-bindings/wifi/Radio.c b/shared-bindings/wifi/Radio.c
index edbd9fd2f..723572a32 100644
--- a/shared-bindings/wifi/Radio.c
+++ b/shared-bindings/wifi/Radio.c
@@ -295,7 +295,7 @@ const mp_obj_property_t wifi_radio_ipv4_dns_obj = {
};
//| ap_info: Optional[Network]
-//| """Network object containing BSSID, SSID, channel, and RSSI when connected to an access point. None otherwise."""
+//| """Network object containing BSSID, SSID, channel, country and RSSI when connected to an access point. None otherwise."""
//|
STATIC mp_obj_t wifi_radio_get_ap_info(mp_obj_t self) {
return common_hal_wifi_radio_get_ap_info(self);
diff --git a/shared-module/displayio/FourWire.c b/shared-module/displayio/FourWire.c
index 06f8a84e3..e993f2480 100644
--- a/shared-module/displayio/FourWire.c
+++ b/shared-module/displayio/FourWire.c
@@ -76,9 +76,7 @@ void common_hal_displayio_fourwire_deinit(displayio_fourwire_obj_t* self) {
common_hal_reset_pin(self->command.pin);
common_hal_reset_pin(self->chip_select.pin);
- if (self->reset.pin) {
- common_hal_reset_pin(self->reset.pin);
- }
+ common_hal_reset_pin(self->reset.pin);
}
bool common_hal_displayio_fourwire_reset(mp_obj_t obj) {
diff --git a/supervisor/shared/tick.c b/supervisor/shared/tick.c
index d37a585eb..e51c48c73 100644
--- a/supervisor/shared/tick.c
+++ b/supervisor/shared/tick.c
@@ -26,6 +26,7 @@
#include "supervisor/shared/tick.h"
+#include "lib/utils/interrupt_char.h"
#include "py/mpstate.h"
#include "py/runtime.h"
#include "supervisor/linker.h"
@@ -145,10 +146,11 @@ void mp_hal_delay_ms(mp_uint_t delay) {
delay = delay * 1024 / 1000;
uint64_t end_tick = start_tick + delay;
int64_t remaining = delay;
- while (remaining > 0) {
+
+ // Loop until we've waited long enough or we've been CTRL-Ced by autoreload
+ // or the user.
+ while (remaining > 0 && !mp_hal_is_interrupted()) {
RUN_BACKGROUND_TASKS;
- // Check to see if we've been CTRL-Ced by autoreload or the user.
- mp_handle_pending();
remaining = end_tick - port_get_raw_ticks(NULL);
// We break a bit early so we don't risk setting the alarm before the time when we call
// sleep.