summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/build.yml3
-rw-r--r--devices/ble_hci/common-hal/_bleio/Adapter.c1
-rw-r--r--devices/ble_hci/common-hal/_bleio/hci_include/att_internal.h2
-rw-r--r--devices/ble_hci/common-hal/_bleio/hci_include/hci.h7
-rw-r--r--locale/ID.po28
-rw-r--r--locale/circuitpython.pot8
-rw-r--r--locale/cs.po28
-rw-r--r--locale/de_DE.po28
-rw-r--r--locale/el.po28
-rw-r--r--locale/es.po28
-rw-r--r--locale/fil.po28
-rw-r--r--locale/fr.po66
-rw-r--r--locale/hi.po28
-rw-r--r--locale/it_IT.po28
-rw-r--r--locale/ja.po28
-rw-r--r--locale/ko.po28
-rw-r--r--locale/nl.po28
-rw-r--r--locale/pl.po28
-rw-r--r--locale/pt_BR.po32
-rw-r--r--locale/sv.po32
-rw-r--r--locale/zh_Latn_pinyin.po30
-rw-r--r--mpy-cross/mpy-cross.mk2
-rw-r--r--ports/atmel-samd/boards/bdmicro_vina_d51/board.c48
-rw-r--r--ports/atmel-samd/boards/bdmicro_vina_d51/mpconfigboard.h28
-rw-r--r--ports/atmel-samd/boards/bdmicro_vina_d51/mpconfigboard.mk12
-rw-r--r--ports/atmel-samd/boards/bdmicro_vina_d51/pins.c82
-rw-r--r--ports/atmel-samd/boards/dynossat_edu_eps/board.c38
-rw-r--r--ports/atmel-samd/boards/dynossat_edu_eps/mpconfigboard.h40
-rw-r--r--ports/atmel-samd/boards/dynossat_edu_eps/mpconfigboard.mk23
-rw-r--r--ports/atmel-samd/boards/dynossat_edu_eps/pins.c32
-rw-r--r--ports/atmel-samd/boards/dynossat_edu_obc/board.c38
-rw-r--r--ports/atmel-samd/boards/dynossat_edu_obc/mpconfigboard.h44
-rw-r--r--ports/atmel-samd/boards/dynossat_edu_obc/mpconfigboard.mk16
-rw-r--r--ports/atmel-samd/boards/dynossat_edu_obc/pins.c40
-rw-r--r--ports/atmel-samd/boards/kicksat-sprite/mpconfigboard.mk8
-rw-r--r--ports/atmel-samd/boards/metro_m4_airlift_lite/mpconfigboard.mk4
-rw-r--r--ports/atmel-samd/boards/winterbloom_sol/mpconfigboard.mk2
-rw-r--r--ports/atmel-samd/common-hal/pulseio/PulseIn.h1
-rw-r--r--ports/atmel-samd/mpconfigport.h3
-rw-r--r--ports/atmel-samd/mpconfigport.mk3
-rw-r--r--ports/atmel-samd/supervisor/port.c36
-rw-r--r--ports/cxd56/Makefile2
-rw-r--r--ports/esp32s2/boards/adafruit_metro_esp32s2/sdkconfig6
-rw-r--r--ports/esp32s2/boards/microdev_micro_s2/sdkconfig5
-rw-r--r--ports/esp32s2/boards/unexpectedmaker_feathers2/sdkconfig5
-rw-r--r--ports/esp32s2/boards/unexpectedmaker_feathers2_prerelease/sdkconfig6
-rw-r--r--ports/esp32s2/common-hal/wifi/Radio.c13
-rw-r--r--ports/litex/mpconfigport.h1
-rw-r--r--ports/litex/mpconfigport.mk1
-rw-r--r--ports/litex/supervisor/port.c6
-rw-r--r--ports/mimxrt10xx/Makefile2
-rw-r--r--ports/mimxrt10xx/mpconfigport.h1
-rw-r--r--ports/nrf/mpconfigport.h1
-rw-r--r--ports/nrf/mpconfigport.mk3
-rw-r--r--ports/nrf/supervisor/port.c6
-rw-r--r--ports/stm/boards/thunderpack/mpconfigboard.mk1
-rw-r--r--ports/stm/mpconfigport.h1
-rw-r--r--ports/stm/supervisor/port.c20
-rw-r--r--ports/unix/Makefile2
-rw-r--r--ports/unix/mpconfigport.h1
-rw-r--r--ports/unix/mpconfigport_coverage.h1
-rw-r--r--py/circuitpy_mpconfig.h3
-rw-r--r--py/circuitpy_mpconfig.mk10
-rw-r--r--py/objnamedtuple.c2
-rw-r--r--shared-bindings/wifi/Radio.c48
-rw-r--r--shared-bindings/wifi/Radio.h4
-rw-r--r--shared-module/displayio/Display.c6
-rw-r--r--shared-module/displayio/display_core.c5
-rw-r--r--shared-module/framebufferio/FramebufferDisplay.c6
-rw-r--r--supervisor/shared/tick.c2
70 files changed, 1041 insertions, 146 deletions
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index eaecd2fa4..b3455cb53 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -180,6 +180,7 @@ jobs:
- "arduino_zero"
- "bast_pro_mini_m0"
- "bdmicro_vina_d21"
+ - "bdmicro_vina_d51"
- "bless_dev_board_multi_sensor"
- "blm_badge"
- "capablerobot_usbhub"
@@ -197,6 +198,8 @@ jobs:
- "datum_imu"
- "datum_light"
- "datum_weather"
+ - "dynossat_edu_eps"
+ - "dynossat_edu_obc"
- "electronut_labs_blip"
- "electronut_labs_papyr"
- "escornabot_makech"
diff --git a/devices/ble_hci/common-hal/_bleio/Adapter.c b/devices/ble_hci/common-hal/_bleio/Adapter.c
index 559b586de..753a88648 100644
--- a/devices/ble_hci/common-hal/_bleio/Adapter.c
+++ b/devices/ble_hci/common-hal/_bleio/Adapter.c
@@ -45,7 +45,6 @@
#include "shared-bindings/_bleio/Address.h"
#include "shared-bindings/_bleio/Characteristic.h"
#include "shared-bindings/_bleio/Service.h"
-#include "shared-bindings/nvm/ByteArray.h"
#include "shared-bindings/_bleio/Connection.h"
#include "shared-bindings/_bleio/ScanEntry.h"
#include "shared-bindings/time/__init__.h"
diff --git a/devices/ble_hci/common-hal/_bleio/hci_include/att_internal.h b/devices/ble_hci/common-hal/_bleio/hci_include/att_internal.h
index 1c75275da..d6a4cb79c 100644
--- a/devices/ble_hci/common-hal/_bleio/hci_include/att_internal.h
+++ b/devices/ble_hci/common-hal/_bleio/hci_include/att_internal.h
@@ -11,7 +11,7 @@
#include <stdbool.h>
// for __packed
-#include <string.h>
+#include <sys/cdefs.h>
#define BT_EATT_PSM 0x27
#define BT_ATT_DEFAULT_LE_MTU 23
diff --git a/devices/ble_hci/common-hal/_bleio/hci_include/hci.h b/devices/ble_hci/common-hal/_bleio/hci_include/hci.h
index 6c3a2b5bd..5213edbf0 100644
--- a/devices/ble_hci/common-hal/_bleio/hci_include/hci.h
+++ b/devices/ble_hci/common-hal/_bleio/hci_include/hci.h
@@ -12,10 +12,15 @@
#define ZEPHYR_INCLUDE_BLUETOOTH_HCI_H_
#include <stdbool.h>
-#include <string.h>
+// for __packed
+#include <sys/cdefs.h>
+
#include "addr.h"
+// ESP32S2 build environment defines this already.
+#ifndef BIT
#define BIT(n) (1UL << (n))
+#endif
/* Special own address types for LL privacy (used in adv & scan parameters) */
#define BT_HCI_OWN_ADDR_RPA_OR_PUBLIC 0x02
diff --git a/locale/ID.po b/locale/ID.po
index 76e83920c..f35afea66 100644
--- a/locale/ID.po
+++ b/locale/ID.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-10-06 13:26-0400\n"
+"POT-Creation-Date: 2020-10-15 16:06+0530\n"
"PO-Revision-Date: 2020-10-10 23:51+0000\n"
"Last-Translator: oon arfiandwi <oon.arfiandwi@gmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -251,6 +251,10 @@ msgid "'return' outside function"
msgstr "'return' diluar fungsi"
#: py/compile.c
+msgid "'yield from' inside async function"
+msgstr ""
+
+#: py/compile.c
msgid "'yield' outside function"
msgstr "'yield' diluar fungsi"
@@ -293,6 +297,7 @@ msgid "All I2C peripherals are in use"
msgstr "Semua perangkat I2C sedang digunakan"
#: ports/atmel-samd/common-hal/canio/Listener.c
+#: ports/stm/common-hal/canio/Listener.c
msgid "All RX FIFOs in use"
msgstr ""
@@ -914,6 +919,7 @@ msgid "File exists"
msgstr "File sudah ada"
#: ports/atmel-samd/common-hal/canio/Listener.c
+#: ports/stm/common-hal/canio/Listener.c
msgid "Filters too complex"
msgstr ""
@@ -951,7 +957,8 @@ msgid "Group full"
msgstr "Grup penuh"
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/I2C.c
-#: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/sdioio/SDCard.c
+#: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/canio/CAN.c
+#: ports/stm/common-hal/sdioio/SDCard.c
msgid "Hardware busy, try alternative pins"
msgstr "Perangkat keras sibuk, coba pin alternatif"
@@ -959,6 +966,10 @@ msgstr "Perangkat keras sibuk, coba pin alternatif"
msgid "Hardware in use, try alternative pins"
msgstr "Perangkat keras sedang digunakan, coba pin alternatif"
+#: shared-bindings/wifi/Radio.c
+msgid "Hostname must be between 1 and 253 characters"
+msgstr ""
+
#: extmod/vfs_posix_file.c py/objstringio.c
msgid "I/O operation on closed file"
msgstr "operasi I/O pada file tertutup"
@@ -1023,7 +1034,8 @@ msgid "Invalid %q pin"
msgstr "%q pada tidak valid"
#: ports/stm/common-hal/busio/I2C.c ports/stm/common-hal/busio/SPI.c
-#: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/sdioio/SDCard.c
+#: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/canio/CAN.c
+#: ports/stm/common-hal/sdioio/SDCard.c
msgid "Invalid %q pin selection"
msgstr ""
@@ -1039,6 +1051,7 @@ msgstr "File BMP tidak valid"
msgid "Invalid BSSID"
msgstr ""
+#: ports/esp32s2/common-hal/analogio/AnalogOut.c
#: ports/stm/common-hal/analogio/AnalogOut.c
msgid "Invalid DAC pin supplied"
msgstr "Pin DAC yang diberikan tidak valid"
@@ -1250,7 +1263,6 @@ msgid "No CCCD for this Characteristic"
msgstr "Tidak ada CCCD untuk Karakteristik ini"
#: ports/atmel-samd/common-hal/analogio/AnalogOut.c
-#: ports/esp32s2/common-hal/analogio/AnalogOut.c
#: ports/stm/common-hal/analogio/AnalogOut.c
msgid "No DAC on chip"
msgstr "Tidak ada DAC (Digital Analog Converter) di dalam chip"
@@ -2767,6 +2779,10 @@ msgstr "format tidak valid"
msgid "invalid format specifier"
msgstr ""
+#: shared-bindings/wifi/Radio.c
+msgid "invalid hostname"
+msgstr ""
+
#: extmod/modussl_axtls.c
msgid "invalid key"
msgstr "key tidak valid"
@@ -3475,6 +3491,10 @@ msgstr ""
msgid "type object '%q' has no attribute '%q'"
msgstr ""
+#: py/objgenerator.c
+msgid "type object 'generator' has no attribute '__await__'"
+msgstr ""
+
#: py/objtype.c
msgid "type takes 1 or 3 arguments"
msgstr ""
diff --git a/locale/circuitpython.pot b/locale/circuitpython.pot
index 35143e04e..7bd1dfa2a 100644
--- a/locale/circuitpython.pot
+++ b/locale/circuitpython.pot
@@ -947,6 +947,10 @@ msgstr ""
msgid "Hardware in use, try alternative pins"
msgstr ""
+#: shared-bindings/wifi/Radio.c
+msgid "Hostname must be between 1 and 253 characters"
+msgstr ""
+
#: extmod/vfs_posix_file.c py/objstringio.c
msgid "I/O operation on closed file"
msgstr ""
@@ -2732,6 +2736,10 @@ msgstr ""
msgid "invalid format specifier"
msgstr ""
+#: shared-bindings/wifi/Radio.c
+msgid "invalid hostname"
+msgstr ""
+
#: extmod/modussl_axtls.c
msgid "invalid key"
msgstr ""
diff --git a/locale/cs.po b/locale/cs.po
index a099e1c94..d7caa43ea 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-10-06 13:26-0400\n"
+"POT-Creation-Date: 2020-10-15 16:06+0530\n"
"PO-Revision-Date: 2020-05-24 03:22+0000\n"
"Last-Translator: dronecz <mzuzelka@gmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -251,6 +251,10 @@ msgid "'return' outside function"
msgstr ""
#: py/compile.c
+msgid "'yield from' inside async function"
+msgstr ""
+
+#: py/compile.c
msgid "'yield' outside function"
msgstr ""
@@ -293,6 +297,7 @@ msgid "All I2C peripherals are in use"
msgstr ""
#: ports/atmel-samd/common-hal/canio/Listener.c
+#: ports/stm/common-hal/canio/Listener.c
msgid "All RX FIFOs in use"
msgstr ""
@@ -900,6 +905,7 @@ msgid "File exists"
msgstr ""
#: ports/atmel-samd/common-hal/canio/Listener.c
+#: ports/stm/common-hal/canio/Listener.c
msgid "Filters too complex"
msgstr ""
@@ -936,7 +942,8 @@ msgid "Group full"
msgstr ""
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/I2C.c
-#: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/sdioio/SDCard.c
+#: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/canio/CAN.c
+#: ports/stm/common-hal/sdioio/SDCard.c
msgid "Hardware busy, try alternative pins"
msgstr ""
@@ -944,6 +951,10 @@ msgstr ""
msgid "Hardware in use, try alternative pins"
msgstr ""
+#: shared-bindings/wifi/Radio.c
+msgid "Hostname must be between 1 and 253 characters"
+msgstr ""
+
#: extmod/vfs_posix_file.c py/objstringio.c
msgid "I/O operation on closed file"
msgstr ""
@@ -1006,7 +1017,8 @@ msgid "Invalid %q pin"
msgstr ""
#: ports/stm/common-hal/busio/I2C.c ports/stm/common-hal/busio/SPI.c
-#: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/sdioio/SDCard.c
+#: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/canio/CAN.c
+#: ports/stm/common-hal/sdioio/SDCard.c
msgid "Invalid %q pin selection"
msgstr ""
@@ -1022,6 +1034,7 @@ msgstr ""
msgid "Invalid BSSID"
msgstr ""
+#: ports/esp32s2/common-hal/analogio/AnalogOut.c
#: ports/stm/common-hal/analogio/AnalogOut.c
msgid "Invalid DAC pin supplied"
msgstr ""
@@ -1233,7 +1246,6 @@ msgid "No CCCD for this Characteristic"
msgstr ""
#: ports/atmel-samd/common-hal/analogio/AnalogOut.c
-#: ports/esp32s2/common-hal/analogio/AnalogOut.c
#: ports/stm/common-hal/analogio/AnalogOut.c
msgid "No DAC on chip"
msgstr ""
@@ -2724,6 +2736,10 @@ msgstr ""
msgid "invalid format specifier"
msgstr ""
+#: shared-bindings/wifi/Radio.c
+msgid "invalid hostname"
+msgstr ""
+
#: extmod/modussl_axtls.c
msgid "invalid key"
msgstr ""
@@ -3430,6 +3446,10 @@ msgstr ""
msgid "type object '%q' has no attribute '%q'"
msgstr ""
+#: py/objgenerator.c
+msgid "type object 'generator' has no attribute '__await__'"
+msgstr ""
+
#: py/objtype.c
msgid "type takes 1 or 3 arguments"
msgstr ""
diff --git a/locale/de_DE.po b/locale/de_DE.po
index 5084ca505..89969e874 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-10-06 13:26-0400\n"
+"POT-Creation-Date: 2020-10-15 16:06+0530\n"
"PO-Revision-Date: 2020-06-16 18:24+0000\n"
"Last-Translator: Andreas Buchen <andreas.buchen@gmail.com>\n"
"Language: de_DE\n"
@@ -250,6 +250,10 @@ msgid "'return' outside function"
msgstr "'return' außerhalb einer Funktion"
#: py/compile.c
+msgid "'yield from' inside async function"
+msgstr ""
+
+#: py/compile.c
msgid "'yield' outside function"
msgstr "'yield' außerhalb einer Funktion"
@@ -292,6 +296,7 @@ msgid "All I2C peripherals are in use"
msgstr "Alle I2C-Peripheriegeräte sind in Benutzung"
#: ports/atmel-samd/common-hal/canio/Listener.c
+#: ports/stm/common-hal/canio/Listener.c
msgid "All RX FIFOs in use"
msgstr ""
@@ -911,6 +916,7 @@ msgid "File exists"
msgstr "Datei existiert"
#: ports/atmel-samd/common-hal/canio/Listener.c
+#: ports/stm/common-hal/canio/Listener.c
msgid "Filters too complex"
msgstr ""
@@ -951,7 +957,8 @@ msgid "Group full"
msgstr "Gruppe voll"
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/I2C.c
-#: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/sdioio/SDCard.c
+#: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/canio/CAN.c
+#: ports/stm/common-hal/sdioio/SDCard.c
msgid "Hardware busy, try alternative pins"
msgstr "Hardware beschäftigt, versuchen Sie alternative Pins"
@@ -959,6 +966,10 @@ msgstr "Hardware beschäftigt, versuchen Sie alternative Pins"
msgid "Hardware in use, try alternative pins"
msgstr "Hardware in benutzung, probiere alternative Pins"
+#: shared-bindings/wifi/Radio.c
+msgid "Hostname must be between 1 and 253 characters"
+msgstr ""
+
#: extmod/vfs_posix_file.c py/objstringio.c
msgid "I/O operation on closed file"
msgstr "Lese/Schreibe-operation an geschlossener Datei"
@@ -1023,7 +1034,8 @@ msgid "Invalid %q pin"
msgstr "Ungültiger %q pin"
#: ports/stm/common-hal/busio/I2C.c ports/stm/common-hal/busio/SPI.c
-#: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/sdioio/SDCard.c
+#: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/canio/CAN.c
+#: ports/stm/common-hal/sdioio/SDCard.c
msgid "Invalid %q pin selection"
msgstr ""
@@ -1039,6 +1051,7 @@ msgstr "Ungültige BMP-Datei"
msgid "Invalid BSSID"
msgstr ""
+#: ports/esp32s2/common-hal/analogio/AnalogOut.c
#: ports/stm/common-hal/analogio/AnalogOut.c
msgid "Invalid DAC pin supplied"
msgstr "Ungültiger DAC-Pin angegeben"
@@ -1252,7 +1265,6 @@ msgid "No CCCD for this Characteristic"
msgstr "Kein CCCD für diese Charakteristik"
#: ports/atmel-samd/common-hal/analogio/AnalogOut.c
-#: ports/esp32s2/common-hal/analogio/AnalogOut.c
#: ports/stm/common-hal/analogio/AnalogOut.c
msgid "No DAC on chip"
msgstr "Kein DAC im Chip vorhanden"
@@ -2795,6 +2807,10 @@ msgstr "ungültiges Format"
msgid "invalid format specifier"
msgstr "ungültiger Formatbezeichner"
+#: shared-bindings/wifi/Radio.c
+msgid "invalid hostname"
+msgstr ""
+
#: extmod/modussl_axtls.c
msgid "invalid key"
msgstr "ungültiger Schlüssel"
@@ -3514,6 +3530,10 @@ msgstr "Typ ist kein akzeptierter Basis-Typ"
msgid "type object '%q' has no attribute '%q'"
msgstr "Typ vom Objekt '%q' hat kein Attribut '%q'"
+#: py/objgenerator.c
+msgid "type object 'generator' has no attribute '__await__'"
+msgstr ""
+
#: py/objtype.c
msgid "type takes 1 or 3 arguments"
msgstr "Typ akzeptiert 1 oder 3 Argumente"
diff --git a/locale/el.po b/locale/el.po
index 32e08a550..42b083e3c 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-10-06 13:26-0400\n"
+"POT-Creation-Date: 2020-10-15 16:06+0530\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
@@ -246,6 +246,10 @@ msgid "'return' outside function"
msgstr ""
#: py/compile.c
+msgid "'yield from' inside async function"
+msgstr ""
+
+#: py/compile.c
msgid "'yield' outside function"
msgstr ""
@@ -288,6 +292,7 @@ msgid "All I2C peripherals are in use"
msgstr ""
#: ports/atmel-samd/common-hal/canio/Listener.c
+#: ports/stm/common-hal/canio/Listener.c
msgid "All RX FIFOs in use"
msgstr ""
@@ -895,6 +900,7 @@ msgid "File exists"
msgstr ""
#: ports/atmel-samd/common-hal/canio/Listener.c
+#: ports/stm/common-hal/canio/Listener.c
msgid "Filters too complex"
msgstr ""
@@ -931,7 +937,8 @@ msgid "Group full"
msgstr ""
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/I2C.c
-#: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/sdioio/SDCard.c
+#: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/canio/CAN.c
+#: ports/stm/common-hal/sdioio/SDCard.c
msgid "Hardware busy, try alternative pins"
msgstr ""
@@ -939,6 +946,10 @@ msgstr ""
msgid "Hardware in use, try alternative pins"
msgstr ""
+#: shared-bindings/wifi/Radio.c
+msgid "Hostname must be between 1 and 253 characters"
+msgstr ""
+
#: extmod/vfs_posix_file.c py/objstringio.c
msgid "I/O operation on closed file"
msgstr ""
@@ -1001,7 +1012,8 @@ msgid "Invalid %q pin"
msgstr ""
#: ports/stm/common-hal/busio/I2C.c ports/stm/common-hal/busio/SPI.c
-#: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/sdioio/SDCard.c
+#: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/canio/CAN.c
+#: ports/stm/common-hal/sdioio/SDCard.c
msgid "Invalid %q pin selection"
msgstr ""
@@ -1017,6 +1029,7 @@ msgstr ""
msgid "Invalid BSSID"
msgstr ""
+#: ports/esp32s2/common-hal/analogio/AnalogOut.c
#: ports/stm/common-hal/analogio/AnalogOut.c
msgid "Invalid DAC pin supplied"
msgstr ""
@@ -1228,7 +1241,6 @@ msgid "No CCCD for this Characteristic"
msgstr ""
#: ports/atmel-samd/common-hal/analogio/AnalogOut.c
-#: ports/esp32s2/common-hal/analogio/AnalogOut.c
#: ports/stm/common-hal/analogio/AnalogOut.c
msgid "No DAC on chip"
msgstr ""
@@ -2719,6 +2731,10 @@ msgstr ""
msgid "invalid format specifier"
msgstr ""
+#: shared-bindings/wifi/Radio.c
+msgid "invalid hostname"
+msgstr ""
+
#: extmod/modussl_axtls.c
msgid "invalid key"
msgstr ""
@@ -3425,6 +3441,10 @@ msgstr ""
msgid "type object '%q' has no attribute '%q'"
msgstr ""
+#: py/objgenerator.c
+msgid "type object 'generator' has no attribute '__await__'"
+msgstr ""
+
#: py/objtype.c
msgid "type takes 1 or 3 arguments"
msgstr ""
diff --git a/locale/es.po b/locale/es.po
index 3a7e1c682..16254aa5e 100644
--- a/locale/es.po
+++ b/locale/es.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-10-06 13:26-0400\n"
+"POT-Creation-Date: 2020-10-15 16:06+0530\n"
"PO-Revision-Date: 2020-10-09 17:19+0000\n"
"Last-Translator: dherrada <dylan.herrada@adafruit.com>\n"
"Language-Team: \n"
@@ -254,6 +254,10 @@ msgid "'return' outside function"
msgstr "'return' fuera de una función"
#: py/compile.c
+msgid "'yield from' inside async function"
+msgstr ""
+
+#: py/compile.c
msgid "'yield' outside function"
msgstr "'yield' fuera de una función"
@@ -296,6 +300,7 @@ msgid "All I2C peripherals are in use"
msgstr "Todos los periféricos I2C están siendo usados"
#: ports/atmel-samd/common-hal/canio/Listener.c
+#: ports/stm/common-hal/canio/Listener.c
msgid "All RX FIFOs in use"
msgstr "Todos los FIFOs de RX en uso"
@@ -915,6 +920,7 @@ msgid "File exists"
msgstr "El archivo ya existe"
#: ports/atmel-samd/common-hal/canio/Listener.c
+#: ports/stm/common-hal/canio/Listener.c
msgid "Filters too complex"
msgstr "Filtros muy complejos"
@@ -952,7 +958,8 @@ msgid "Group full"
msgstr "Group lleno"
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/I2C.c
-#: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/sdioio/SDCard.c
+#: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/canio/CAN.c
+#: ports/stm/common-hal/sdioio/SDCard.c
msgid "Hardware busy, try alternative pins"
msgstr "Hardware ocupado, pruebe pines alternativos"
@@ -960,6 +967,10 @@ msgstr "Hardware ocupado, pruebe pines alternativos"
msgid "Hardware in use, try alternative pins"
msgstr "Hardware en uso, pruebe pines alternativos"
+#: shared-bindings/wifi/Radio.c
+msgid "Hostname must be between 1 and 253 characters"
+msgstr ""
+
#: extmod/vfs_posix_file.c py/objstringio.c
msgid "I/O operation on closed file"
msgstr "Operación I/O en archivo cerrado"
@@ -1024,7 +1035,8 @@ msgid "Invalid %q pin"
msgstr "Pin %q inválido"
#: ports/stm/common-hal/busio/I2C.c ports/stm/common-hal/busio/SPI.c
-#: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/sdioio/SDCard.c
+#: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/canio/CAN.c
+#: ports/stm/common-hal/sdioio/SDCard.c
msgid "Invalid %q pin selection"
msgstr "selección inválida de pin %q"
@@ -1040,6 +1052,7 @@ msgstr "Archivo BMP inválido"
msgid "Invalid BSSID"
msgstr "BSSID inválido"
+#: ports/esp32s2/common-hal/analogio/AnalogOut.c
#: ports/stm/common-hal/analogio/AnalogOut.c
msgid "Invalid DAC pin supplied"
msgstr "Pin suministrado inválido para DAC"
@@ -1251,7 +1264,6 @@ msgid "No CCCD for this Characteristic"
msgstr "No hay CCCD para esta característica"
#: ports/atmel-samd/common-hal/analogio/AnalogOut.c
-#: ports/esp32s2/common-hal/analogio/AnalogOut.c
#: ports/stm/common-hal/analogio/AnalogOut.c
msgid "No DAC on chip"
msgstr "El chip no tiene DAC"
@@ -2789,6 +2801,10 @@ msgstr "formato inválido"
msgid "invalid format specifier"
msgstr "especificador de formato inválido"
+#: shared-bindings/wifi/Radio.c
+msgid "invalid hostname"
+msgstr ""
+
#: extmod/modussl_axtls.c
msgid "invalid key"
msgstr "llave inválida"
@@ -3504,6 +3520,10 @@ msgstr "type no es un tipo de base aceptable"
msgid "type object '%q' has no attribute '%q'"
msgstr "objeto de tipo '%q' no tiene atributo '%q'"
+#: py/objgenerator.c
+msgid "type object 'generator' has no attribute '__await__'"
+msgstr ""
+
#: py/objtype.c
msgid "type takes 1 or 3 arguments"
msgstr "type acepta 1 ó 3 argumentos"
diff --git a/locale/fil.po b/locale/fil.po
index 4e7ce9ed8..ecda65cb2 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-10-06 13:26-0400\n"
+"POT-Creation-Date: 2020-10-15 16:06+0530\n"
"PO-Revision-Date: 2018-12-20 22:15-0800\n"
"Last-Translator: Timothy <me@timothygarcia.ca>\n"
"Language-Team: fil\n"
@@ -248,6 +248,10 @@ msgid "'return' outside function"
msgstr "'return' sa labas ng function"
#: py/compile.c
+msgid "'yield from' inside async function"
+msgstr ""
+
+#: py/compile.c
msgid "'yield' outside function"
msgstr "'yield' sa labas ng function"
@@ -290,6 +294,7 @@ msgid "All I2C peripherals are in use"
msgstr "Lahat ng I2C peripherals ginagamit"
#: ports/atmel-samd/common-hal/canio/Listener.c
+#: ports/stm/common-hal/canio/Listener.c
msgid "All RX FIFOs in use"
msgstr ""
@@ -908,6 +913,7 @@ msgid "File exists"
msgstr "Mayroong file"
#: ports/atmel-samd/common-hal/canio/Listener.c
+#: ports/stm/common-hal/canio/Listener.c
msgid "Filters too complex"
msgstr ""
@@ -944,7 +950,8 @@ msgid "Group full"
msgstr "Puno ang group"
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/I2C.c
-#: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/sdioio/SDCard.c
+#: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/canio/CAN.c
+#: ports/stm/common-hal/sdioio/SDCard.c
msgid "Hardware busy, try alternative pins"
msgstr ""
@@ -952,6 +959,10 @@ msgstr ""
msgid "Hardware in use, try alternative pins"
msgstr ""
+#: shared-bindings/wifi/Radio.c
+msgid "Hostname must be between 1 and 253 characters"
+msgstr ""
+
#: extmod/vfs_posix_file.c py/objstringio.c
msgid "I/O operation on closed file"
msgstr "I/O operasyon sa saradong file"
@@ -1016,7 +1027,8 @@ msgid "Invalid %q pin"
msgstr "Mali ang %q pin"
#: ports/stm/common-hal/busio/I2C.c ports/stm/common-hal/busio/SPI.c
-#: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/sdioio/SDCard.c
+#: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/canio/CAN.c
+#: ports/stm/common-hal/sdioio/SDCard.c
msgid "Invalid %q pin selection"
msgstr ""
@@ -1032,6 +1044,7 @@ msgstr "Mali ang BMP file"
msgid "Invalid BSSID"
msgstr ""
+#: ports/esp32s2/common-hal/analogio/AnalogOut.c
#: ports/stm/common-hal/analogio/AnalogOut.c
msgid "Invalid DAC pin supplied"
msgstr ""
@@ -1243,7 +1256,6 @@ msgid "No CCCD for this Characteristic"
msgstr ""
#: ports/atmel-samd/common-hal/analogio/AnalogOut.c
-#: ports/esp32s2/common-hal/analogio/AnalogOut.c
#: ports/stm/common-hal/analogio/AnalogOut.c
msgid "No DAC on chip"
msgstr "Walang DAC sa chip"
@@ -2764,6 +2776,10 @@ msgstr "hindi wastong pag-format"
msgid "invalid format specifier"
msgstr "mali ang format specifier"
+#: shared-bindings/wifi/Radio.c
+msgid "invalid hostname"
+msgstr ""
+
#: extmod/modussl_axtls.c
msgid "invalid key"
msgstr "mali ang key"
@@ -3480,6 +3496,10 @@ msgstr "hindi puede ang type para sa base type"
msgid "type object '%q' has no attribute '%q'"
msgstr "type object '%q' ay walang attribute '%q'"
+#: py/objgenerator.c
+msgid "type object 'generator' has no attribute '__await__'"
+msgstr ""
+
#: py/objtype.c
msgid "type takes 1 or 3 arguments"
msgstr "type kumuhuha ng 1 o 3 arguments"
diff --git a/locale/fr.po b/locale/fr.po
index 45a4cc25d..482fd2809 100644
--- a/locale/fr.po
+++ b/locale/fr.po
@@ -7,9 +7,9 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.1\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-10-06 13:26-0400\n"
-"PO-Revision-Date: 2020-09-16 13:47+0000\n"
-"Last-Translator: Hugo Dahl <hugo@code-jedi.com>\n"
+"POT-Creation-Date: 2020-10-15 16:06+0530\n"
+"PO-Revision-Date: 2020-10-15 18:17+0000\n"
+"Last-Translator: Jeff Epler <jepler@gmail.com>\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
@@ -46,7 +46,7 @@ msgstr " Fichier \"%q\", ligne %d"
#: main.c
msgid " output:\n"
-msgstr " sortie :\n"
+msgstr " sortie :\n"
#: py/objstr.c
#, c-format
@@ -102,7 +102,7 @@ msgstr "%q doit être un tuple de longueur 2"
#: shared-bindings/canio/Match.c
msgid "%q out of range"
-msgstr ""
+msgstr "%q est hors de porté"
#: ports/atmel-samd/common-hal/microcontroller/Pin.c
msgid "%q pin invalid"
@@ -255,6 +255,10 @@ msgid "'return' outside function"
msgstr "'return' en dehors d'une fonction"
#: py/compile.c
+msgid "'yield from' inside async function"
+msgstr ""
+
+#: py/compile.c
msgid "'yield' outside function"
msgstr "'yield' en dehors d'une fonction"
@@ -281,7 +285,7 @@ msgstr "Un canal d'interruptions matérielles est déjà utilisé"
#: ports/esp32s2/common-hal/analogio/AnalogIn.c
msgid "ADC2 is being used by WiFi"
-msgstr ""
+msgstr "ADC2 est utilisé pars le Wifi"
#: shared-bindings/_bleio/Address.c shared-bindings/ipaddress/IPv4Address.c
#, c-format
@@ -297,8 +301,9 @@ msgid "All I2C peripherals are in use"
msgstr "Tous les périphériques I2C sont utilisés"
#: ports/atmel-samd/common-hal/canio/Listener.c
+#: ports/stm/common-hal/canio/Listener.c
msgid "All RX FIFOs in use"
-msgstr ""
+msgstr "Tout les RX FIFOs sont utilisé"
#: ports/esp32s2/common-hal/busio/SPI.c ports/nrf/common-hal/busio/SPI.c
msgid "All SPI peripherals are in use"
@@ -527,7 +532,7 @@ msgstr "Impossible de définir CCCD sur une caractéristique locale"
#: shared-bindings/_bleio/Adapter.c
msgid "Cannot create a new Adapter; use _bleio.adapter;"
msgstr ""
-"Un nouveau Adapter ne peut être créé ; Adapter; utilisez _bleio.adapter;"
+"Un nouveau Adapter ne peut être créé ; Adapter; utilisez _bleio.adapter;"
#: shared-bindings/displayio/Bitmap.c
#: shared-bindings/memorymonitor/AllocationSize.c
@@ -664,7 +669,7 @@ msgstr "Code brut corrompu"
#: ports/cxd56/common-hal/camera/Camera.c
msgid "Could not initialize Camera"
-msgstr ""
+msgstr "Impossible d'initialisé la Camera"
#: ports/cxd56/common-hal/gnss/GNSS.c
msgid "Could not initialize GNSS"
@@ -795,7 +800,7 @@ msgstr "La BCE ne fonctionne que sur 16 octets à la fois"
#: ports/esp32s2/common-hal/busio/SPI.c
msgid "ESP-IDF memory allocation failed"
-msgstr ""
+msgstr "ESP-IDF échec d'allocation de la mémoire"
#: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c
#: ports/atmel-samd/common-hal/ps2io/Ps2.c
@@ -900,7 +905,7 @@ msgstr "Impossible de se connecter : délai d'expiration"
#: ports/esp32s2/common-hal/wifi/__init__.c
msgid "Failed to init wifi"
-msgstr ""
+msgstr "Echec de l'initialisation du Wifi"
#: shared-module/audiomp3/MP3Decoder.c
msgid "Failed to parse MP3 file"
@@ -920,6 +925,7 @@ msgid "File exists"
msgstr "Le fichier existe"
#: ports/atmel-samd/common-hal/canio/Listener.c
+#: ports/stm/common-hal/canio/Listener.c
msgid "Filters too complex"
msgstr ""
@@ -957,7 +963,8 @@ msgid "Group full"
msgstr "Groupe plein"
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/I2C.c
-#: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/sdioio/SDCard.c
+#: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/canio/CAN.c
+#: ports/stm/common-hal/sdioio/SDCard.c
msgid "Hardware busy, try alternative pins"
msgstr "Matériel occupé, essayez d'autres broches"
@@ -965,6 +972,10 @@ msgstr "Matériel occupé, essayez d'autres broches"
msgid "Hardware in use, try alternative pins"
msgstr "Matériel utilisé, essayez d'autres broches"
+#: shared-bindings/wifi/Radio.c
+msgid "Hostname must be between 1 and 253 characters"
+msgstr ""
+
#: 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é"
@@ -975,7 +986,7 @@ msgstr "Erreur d'initialisation I2C"
#: shared-bindings/audiobusio/I2SOut.c
msgid "I2SOut not available"
-msgstr ""
+msgstr "I2SOut n'est pas disponible"
#: shared-bindings/aesio/aes.c
#, c-format
@@ -1029,7 +1040,8 @@ msgid "Invalid %q pin"
msgstr "Broche invalide pour '%q'"
#: ports/stm/common-hal/busio/I2C.c ports/stm/common-hal/busio/SPI.c
-#: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/sdioio/SDCard.c
+#: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/canio/CAN.c
+#: ports/stm/common-hal/sdioio/SDCard.c
msgid "Invalid %q pin selection"
msgstr ""
@@ -1043,8 +1055,9 @@ msgstr "Fichier BMP invalide"
#: shared-bindings/wifi/Radio.c
msgid "Invalid BSSID"
-msgstr ""
+msgstr "BSSID Invalide"
+#: ports/esp32s2/common-hal/analogio/AnalogOut.c
#: ports/stm/common-hal/analogio/AnalogOut.c
msgid "Invalid DAC pin supplied"
msgstr "Broche DAC non valide fournie"
@@ -1093,7 +1106,7 @@ msgstr "Taille de bloc de formatage invalide"
#: ports/esp32s2/common-hal/pwmio/PWMOut.c
msgid "Invalid frequency"
-msgstr ""
+msgstr "fréquence non Valide"
#: ports/stm/common-hal/pwmio/PWMOut.c
msgid "Invalid frequency supplied"
@@ -1216,7 +1229,7 @@ msgstr "La valeur max. de x est %d lors d'une opération miroir"
#: shared-bindings/canio/Message.c
msgid "Messages limited to 8 bytes"
-msgstr ""
+msgstr "Message limité a 8 bytes"
#: supervisor/shared/safe_mode.c
msgid "MicroPython NLR jump failed. Likely memory corruption."
@@ -1256,7 +1269,6 @@ msgid "No CCCD for this Characteristic"
msgstr "Pas de CCCD pour cette caractéristique"
#: ports/atmel-samd/common-hal/analogio/AnalogOut.c
-#: ports/esp32s2/common-hal/analogio/AnalogOut.c
#: ports/stm/common-hal/analogio/AnalogOut.c
msgid "No DAC on chip"
msgstr "Pas de DAC sur la puce"
@@ -1329,11 +1341,11 @@ msgstr "Pas de support entier long"
#: ports/esp32s2/common-hal/pwmio/PWMOut.c
msgid "No more channels available"
-msgstr ""
+msgstr "Pas de canal supplémentaire disponible"
#: ports/esp32s2/common-hal/pwmio/PWMOut.c
msgid "No more timers available"
-msgstr ""
+msgstr "Pas d'horloge supplémentaire disponible"
#: ports/stm/common-hal/pwmio/PWMOut.c
msgid "No more timers available on this pin."
@@ -1341,7 +1353,7 @@ msgstr "Plus de minuteurs disponibles sur cette broche."
#: shared-bindings/wifi/Radio.c
msgid "No network with that ssid"
-msgstr ""
+msgstr "Aucun réseau avec ce ssid"
#: shared-module/touchio/TouchIn.c
msgid "No pulldown on pin; 1Mohm recommended"
@@ -1365,7 +1377,7 @@ msgstr "Affirmation de défaillance du Nordic Soft Device."
#: shared-bindings/ipaddress/IPv4Address.c shared-bindings/ipaddress/__init__.c
msgid "Not a valid IP string"
-msgstr ""
+msgstr "Chaîne IP non valide"
#: ports/nrf/common-hal/_bleio/__init__.c
#: shared-bindings/_bleio/CharacteristicBuffer.c
@@ -2804,6 +2816,10 @@ msgstr "format invalide"
msgid "invalid format specifier"
msgstr "spécification de format invalide"
+#: shared-bindings/wifi/Radio.c
+msgid "invalid hostname"
+msgstr ""
+
#: extmod/modussl_axtls.c
msgid "invalid key"
msgstr "clé invalide"
@@ -3522,6 +3538,10 @@ msgstr "le type n'est pas un type de base accepté"
msgid "type object '%q' has no attribute '%q'"
msgstr "l'objet de type '%q' n'a pas d'attribut '%q'"
+#: py/objgenerator.c
+msgid "type object 'generator' has no attribute '__await__'"
+msgstr ""
+
#: py/objtype.c
msgid "type takes 1 or 3 arguments"
msgstr "le type prend 1 ou 3 arguments"
@@ -3601,7 +3621,7 @@ msgstr "caractère de format '%c' (0x%x) non supporté à l'index %d"
#: py/runtime.c
msgid "unsupported type for %q: '%q'"
-msgstr "type non supporté pour %q: '%q'"
+msgstr "type non supporté pour %q : '%q'"
#: py/runtime.c
msgid "unsupported type for operator"
diff --git a/locale/hi.po b/locale/hi.po
index 90d7a1107..88c795a7c 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-10-06 13:26-0400\n"
+"POT-Creation-Date: 2020-10-15 16:06+0530\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
@@ -246,6 +246,10 @@ msgid "'return' outside function"
msgstr ""
#: py/compile.c
+msgid "'yield from' inside async function"
+msgstr ""
+
+#: py/compile.c
msgid "'yield' outside function"
msgstr ""
@@ -288,6 +292,7 @@ msgid "All I2C peripherals are in use"
msgstr ""
#: ports/atmel-samd/common-hal/canio/Listener.c
+#: ports/stm/common-hal/canio/Listener.c
msgid "All RX FIFOs in use"
msgstr ""
@@ -895,6 +900,7 @@ msgid "File exists"
msgstr ""
#: ports/atmel-samd/common-hal/canio/Listener.c
+#: ports/stm/common-hal/canio/Listener.c
msgid "Filters too complex"
msgstr ""
@@ -931,7 +937,8 @@ msgid "Group full"
msgstr ""
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/I2C.c
-#: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/sdioio/SDCard.c
+#: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/canio/CAN.c
+#: ports/stm/common-hal/sdioio/SDCard.c
msgid "Hardware busy, try alternative pins"
msgstr ""
@@ -939,6 +946,10 @@ msgstr ""
msgid "Hardware in use, try alternative pins"
msgstr ""
+#: shared-bindings/wifi/Radio.c
+msgid "Hostname must be between 1 and 253 characters"
+msgstr ""
+
#: extmod/vfs_posix_file.c py/objstringio.c
msgid "I/O operation on closed file"
msgstr ""
@@ -1001,7 +1012,8 @@ msgid "Invalid %q pin"
msgstr ""
#: ports/stm/common-hal/busio/I2C.c ports/stm/common-hal/busio/SPI.c
-#: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/sdioio/SDCard.c
+#: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/canio/CAN.c
+#: ports/stm/common-hal/sdioio/SDCard.c
msgid "Invalid %q pin selection"
msgstr ""
@@ -1017,6 +1029,7 @@ msgstr ""
msgid "Invalid BSSID"
msgstr ""
+#: ports/esp32s2/common-hal/analogio/AnalogOut.c
#: ports/stm/common-hal/analogio/AnalogOut.c
msgid "Invalid DAC pin supplied"
msgstr ""
@@ -1228,7 +1241,6 @@ msgid "No CCCD for this Characteristic"
msgstr ""
#: ports/atmel-samd/common-hal/analogio/AnalogOut.c
-#: ports/esp32s2/common-hal/analogio/AnalogOut.c
#: ports/stm/common-hal/analogio/AnalogOut.c
msgid "No DAC on chip"
msgstr ""
@@ -2719,6 +2731,10 @@ msgstr ""
msgid "invalid format specifier"
msgstr ""
+#: shared-bindings/wifi/Radio.c
+msgid "invalid hostname"
+msgstr ""
+
#: extmod/modussl_axtls.c
msgid "invalid key"
msgstr ""
@@ -3425,6 +3441,10 @@ msgstr ""
msgid "type object '%q' has no attribute '%q'"
msgstr ""
+#: py/objgenerator.c
+msgid "type object 'generator' has no attribute '__await__'"
+msgstr ""
+
#: py/objtype.c
msgid "type takes 1 or 3 arguments"
msgstr ""
diff --git a/locale/it_IT.po b/locale/it_IT.po
index 7ae72a2e5..1650a5bdb 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-10-06 13:26-0400\n"
+"POT-Creation-Date: 2020-10-15 16:06+0530\n"
"PO-Revision-Date: 2018-10-02 16:27+0200\n"
"Last-Translator: Enrico Paganin <enrico.paganin@mail.com>\n"
"Language-Team: \n"
@@ -247,6 +247,10 @@ msgid "'return' outside function"
msgstr "'return' al di fuori della funzione"
#: py/compile.c
+msgid "'yield from' inside async function"
+msgstr ""
+
+#: py/compile.c
msgid "'yield' outside function"
msgstr "'yield' al di fuori della funzione"
@@ -289,6 +293,7 @@ msgid "All I2C peripherals are in use"
msgstr "Tutte le periferiche I2C sono in uso"
#: ports/atmel-samd/common-hal/canio/Listener.c
+#: ports/stm/common-hal/canio/Listener.c
msgid "All RX FIFOs in use"
msgstr ""
@@ -908,6 +913,7 @@ msgid "File exists"
msgstr "File esistente"
#: ports/atmel-samd/common-hal/canio/Listener.c
+#: ports/stm/common-hal/canio/Listener.c
msgid "Filters too complex"
msgstr ""
@@ -944,7 +950,8 @@ msgid "Group full"
msgstr "Gruppo pieno"
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/I2C.c
-#: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/sdioio/SDCard.c
+#: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/canio/CAN.c
+#: ports/stm/common-hal/sdioio/SDCard.c
msgid "Hardware busy, try alternative pins"
msgstr ""
@@ -952,6 +959,10 @@ msgstr ""
msgid "Hardware in use, try alternative pins"
msgstr ""
+#: shared-bindings/wifi/Radio.c
+msgid "Hostname must be between 1 and 253 characters"
+msgstr ""
+
#: extmod/vfs_posix_file.c py/objstringio.c
msgid "I/O operation on closed file"
msgstr "operazione I/O su file chiuso"
@@ -1016,7 +1027,8 @@ msgid "Invalid %q pin"
msgstr "Pin %q non valido"
#: ports/stm/common-hal/busio/I2C.c ports/stm/common-hal/busio/SPI.c
-#: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/sdioio/SDCard.c
+#: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/canio/CAN.c
+#: ports/stm/common-hal/sdioio/SDCard.c
msgid "Invalid %q pin selection"
msgstr ""
@@ -1032,6 +1044,7 @@ msgstr "File BMP non valido"
msgid "Invalid BSSID"
msgstr ""
+#: ports/esp32s2/common-hal/analogio/AnalogOut.c
#: ports/stm/common-hal/analogio/AnalogOut.c
msgid "Invalid DAC pin supplied"
msgstr ""
@@ -1247,7 +1260,6 @@ msgid "No CCCD for this Characteristic"
msgstr ""
#: ports/atmel-samd/common-hal/analogio/AnalogOut.c
-#: ports/esp32s2/common-hal/analogio/AnalogOut.c
#: ports/stm/common-hal/analogio/AnalogOut.c
msgid "No DAC on chip"
msgstr "Nessun DAC sul chip"
@@ -2765,6 +2777,10 @@ msgstr "formato non valido"
msgid "invalid format specifier"
msgstr "specificatore di formato non valido"
+#: shared-bindings/wifi/Radio.c
+msgid "invalid hostname"
+msgstr ""
+
#: extmod/modussl_axtls.c
msgid "invalid key"
msgstr "chiave non valida"
@@ -3487,6 +3503,10 @@ msgstr "il tipo non è un tipo di base accettabile"
msgid "type object '%q' has no attribute '%q'"
msgstr "l'oggetto di tipo '%q' non ha l'attributo '%q'"
+#: py/objgenerator.c
+msgid "type object 'generator' has no attribute '__await__'"
+msgstr ""
+
#: py/objtype.c
msgid "type takes 1 or 3 arguments"
msgstr "tipo prende 1 o 3 argomenti"
diff --git a/locale/ja.po b/locale/ja.po
index 8443db349..01900d9a8 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-10-06 13:26-0400\n"
+"POT-Creation-Date: 2020-10-15 16:06+0530\n"
"PO-Revision-Date: 2020-09-25 18:20+0000\n"
"Last-Translator: Taku Fukada <naninunenor@gmail.com>\n"
"Language-Team: none\n"
@@ -253,6 +253,10 @@ msgid "'return' outside function"
msgstr "関数外でのreturn"
#: py/compile.c
+msgid "'yield from' inside async function"
+msgstr ""
+
+#: py/compile.c
msgid "'yield' outside function"
msgstr "関数外でのyield"
@@ -295,6 +299,7 @@ msgid "All I2C peripherals are in use"
msgstr "全てのI2C周辺機器が使用中"
#: ports/atmel-samd/common-hal/canio/Listener.c
+#: ports/stm/common-hal/canio/Listener.c
msgid "All RX FIFOs in use"
msgstr "全てのRX FIFOが使用中"
@@ -908,6 +913,7 @@ msgid "File exists"
msgstr "ファイルが存在します"
#: ports/atmel-samd/common-hal/canio/Listener.c
+#: ports/stm/common-hal/canio/Listener.c
msgid "Filters too complex"
msgstr ""
@@ -944,7 +950,8 @@ msgid "Group full"
msgstr "グループが一杯"
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/I2C.c
-#: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/sdioio/SDCard.c
+#: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/canio/CAN.c
+#: ports/stm/common-hal/sdioio/SDCard.c
msgid "Hardware busy, try alternative pins"
msgstr "ハードウェアビジー。代替のピンを試してください"
@@ -952,6 +959,10 @@ msgstr "ハードウェアビジー。代替のピンを試してください"
msgid "Hardware in use, try alternative pins"
msgstr "ハードウェア使用中。代わりのピンを試してください"
+#: shared-bindings/wifi/Radio.c
+msgid "Hostname must be between 1 and 253 characters"
+msgstr ""
+
#: extmod/vfs_posix_file.c py/objstringio.c
msgid "I/O operation on closed file"
msgstr "閉じられたファイルへのI/O操作"
@@ -1016,7 +1027,8 @@ msgid "Invalid %q pin"
msgstr "不正な%qピン"
#: ports/stm/common-hal/busio/I2C.c ports/stm/common-hal/busio/SPI.c
-#: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/sdioio/SDCard.c
+#: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/canio/CAN.c
+#: ports/stm/common-hal/sdioio/SDCard.c
msgid "Invalid %q pin selection"
msgstr "不正な%qピン選択"
@@ -1032,6 +1044,7 @@ msgstr "不正なBMPファイル"
msgid "Invalid BSSID"
msgstr ""
+#: ports/esp32s2/common-hal/analogio/AnalogOut.c
#: ports/stm/common-hal/analogio/AnalogOut.c
msgid "Invalid DAC pin supplied"
msgstr "不正なDACピンが与えられました"
@@ -1243,7 +1256,6 @@ msgid "No CCCD for this Characteristic"
msgstr ""
#: ports/atmel-samd/common-hal/analogio/AnalogOut.c
-#: ports/esp32s2/common-hal/analogio/AnalogOut.c
#: ports/stm/common-hal/analogio/AnalogOut.c
msgid "No DAC on chip"
msgstr "チップにDACがありません"
@@ -2749,6 +2761,10 @@ msgstr ""
msgid "invalid format specifier"
msgstr ""
+#: shared-bindings/wifi/Radio.c
+msgid "invalid hostname"
+msgstr ""
+
#: extmod/modussl_axtls.c
msgid "invalid key"
msgstr "不正な鍵"
@@ -3458,6 +3474,10 @@ msgstr "この型はベース型にできません"
msgid "type object '%q' has no attribute '%q'"
msgstr ""
+#: py/objgenerator.c
+msgid "type object 'generator' has no attribute '__await__'"
+msgstr ""
+
#: py/objtype.c
msgid "type takes 1 or 3 arguments"
msgstr "typeは1つか3つの引数をとります"
diff --git a/locale/ko.po b/locale/ko.po
index 822c450a3..a9bc60f78 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-10-06 13:26-0400\n"
+"POT-Creation-Date: 2020-10-15 16:06+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"
@@ -249,6 +249,10 @@ msgid "'return' outside function"
msgstr "'return' 는 함수 외부에 존재합니다"
#: py/compile.c
+msgid "'yield from' inside async function"
+msgstr ""
+
+#: py/compile.c
msgid "'yield' outside function"
msgstr "'yield' 는 함수 외부에 존재합니다"
@@ -291,6 +295,7 @@ msgid "All I2C peripherals are in use"
msgstr "사용중인 모든 I2C주변 기기"
#: ports/atmel-samd/common-hal/canio/Listener.c
+#: ports/stm/common-hal/canio/Listener.c
msgid "All RX FIFOs in use"
msgstr ""
@@ -900,6 +905,7 @@ msgid "File exists"
msgstr ""
#: ports/atmel-samd/common-hal/canio/Listener.c
+#: ports/stm/common-hal/canio/Listener.c
msgid "Filters too complex"
msgstr ""
@@ -936,7 +942,8 @@ msgid "Group full"
msgstr ""
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/I2C.c
-#: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/sdioio/SDCard.c
+#: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/canio/CAN.c
+#: ports/stm/common-hal/sdioio/SDCard.c
msgid "Hardware busy, try alternative pins"
msgstr ""
@@ -944,6 +951,10 @@ msgstr ""
msgid "Hardware in use, try alternative pins"
msgstr ""
+#: shared-bindings/wifi/Radio.c
+msgid "Hostname must be between 1 and 253 characters"
+msgstr ""
+
#: extmod/vfs_posix_file.c py/objstringio.c
msgid "I/O operation on closed file"
msgstr ""
@@ -1006,7 +1017,8 @@ msgid "Invalid %q pin"
msgstr ""
#: ports/stm/common-hal/busio/I2C.c ports/stm/common-hal/busio/SPI.c
-#: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/sdioio/SDCard.c
+#: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/canio/CAN.c
+#: ports/stm/common-hal/sdioio/SDCard.c
msgid "Invalid %q pin selection"
msgstr ""
@@ -1022,6 +1034,7 @@ msgstr ""
msgid "Invalid BSSID"
msgstr ""
+#: ports/esp32s2/common-hal/analogio/AnalogOut.c
#: ports/stm/common-hal/analogio/AnalogOut.c
msgid "Invalid DAC pin supplied"
msgstr ""
@@ -1233,7 +1246,6 @@ msgid "No CCCD for this Characteristic"
msgstr ""
#: ports/atmel-samd/common-hal/analogio/AnalogOut.c
-#: ports/esp32s2/common-hal/analogio/AnalogOut.c
#: ports/stm/common-hal/analogio/AnalogOut.c
msgid "No DAC on chip"
msgstr ""
@@ -2725,6 +2737,10 @@ msgstr "형식가 유효하지 않습니다"
msgid "invalid format specifier"
msgstr "형식 지정자(format specifier)가 유효하지 않습니다"
+#: shared-bindings/wifi/Radio.c
+msgid "invalid hostname"
+msgstr ""
+
#: extmod/modussl_axtls.c
msgid "invalid key"
msgstr "키가 유효하지 않습니다"
@@ -3431,6 +3447,10 @@ msgstr ""
msgid "type object '%q' has no attribute '%q'"
msgstr ""
+#: py/objgenerator.c
+msgid "type object 'generator' has no attribute '__await__'"
+msgstr ""
+
#: py/objtype.c
msgid "type takes 1 or 3 arguments"
msgstr ""
diff --git a/locale/nl.po b/locale/nl.po
index 6ee0c68f4..edcaefb83 100644
--- a/locale/nl.po
+++ b/locale/nl.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-10-06 13:26-0400\n"
+"POT-Creation-Date: 2020-10-15 16:06+0530\n"
"PO-Revision-Date: 2020-09-09 16:05+0000\n"
"Last-Translator: Jelle Jager <jell@jjc.id.au>\n"
"Language-Team: none\n"
@@ -251,6 +251,10 @@ msgid "'return' outside function"
msgstr "'return' buiten de functie"
#: py/compile.c
+msgid "'yield from' inside async function"
+msgstr ""
+
+#: py/compile.c
msgid "'yield' outside function"
msgstr "'yield' buiten de functie"
@@ -293,6 +297,7 @@ msgid "All I2C peripherals are in use"
msgstr "Alle I2C peripherals zijn in gebruik"
#: ports/atmel-samd/common-hal/canio/Listener.c
+#: ports/stm/common-hal/canio/Listener.c
msgid "All RX FIFOs in use"
msgstr ""
@@ -908,6 +913,7 @@ msgid "File exists"
msgstr "Bestand bestaat"
#: ports/atmel-samd/common-hal/canio/Listener.c
+#: ports/stm/common-hal/canio/Listener.c
msgid "Filters too complex"
msgstr ""
@@ -946,7 +952,8 @@ msgid "Group full"
msgstr "Groep is vol"
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/I2C.c
-#: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/sdioio/SDCard.c
+#: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/canio/CAN.c
+#: ports/stm/common-hal/sdioio/SDCard.c
msgid "Hardware busy, try alternative pins"
msgstr "Hardware bezig, probeer alternatieve pinnen"
@@ -954,6 +961,10 @@ msgstr "Hardware bezig, probeer alternatieve pinnen"
msgid "Hardware in use, try alternative pins"
msgstr "Hardware in gebruik, probeer alternatieve pinnen"
+#: shared-bindings/wifi/Radio.c
+msgid "Hostname must be between 1 and 253 characters"
+msgstr ""
+
#: extmod/vfs_posix_file.c py/objstringio.c
msgid "I/O operation on closed file"
msgstr "I/O actie op gesloten bestand"
@@ -1018,7 +1029,8 @@ msgid "Invalid %q pin"
msgstr "Ongeldige %q pin"
#: ports/stm/common-hal/busio/I2C.c ports/stm/common-hal/busio/SPI.c
-#: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/sdioio/SDCard.c
+#: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/canio/CAN.c
+#: ports/stm/common-hal/sdioio/SDCard.c
msgid "Invalid %q pin selection"
msgstr "Ongeldige %q pin selectie"
@@ -1034,6 +1046,7 @@ msgstr "Ongeldig BMP bestand"
msgid "Invalid BSSID"
msgstr ""
+#: ports/esp32s2/common-hal/analogio/AnalogOut.c
#: ports/stm/common-hal/analogio/AnalogOut.c
msgid "Invalid DAC pin supplied"
msgstr "Ongeldige DAC pin opgegeven"
@@ -1245,7 +1258,6 @@ msgid "No CCCD for this Characteristic"
msgstr "Geen CCCD voor deze Characteristic"
#: ports/atmel-samd/common-hal/analogio/AnalogOut.c
-#: ports/esp32s2/common-hal/analogio/AnalogOut.c
#: ports/stm/common-hal/analogio/AnalogOut.c
msgid "No DAC on chip"
msgstr "Geen DAC op de chip"
@@ -2776,6 +2788,10 @@ msgstr "ongeldig formaat"
msgid "invalid format specifier"
msgstr "ongeldige formaatspecificatie"
+#: shared-bindings/wifi/Radio.c
+msgid "invalid hostname"
+msgstr ""
+
#: extmod/modussl_axtls.c
msgid "invalid key"
msgstr "ongeldige sleutel"
@@ -3488,6 +3504,10 @@ msgstr "type is geen aanvaardbaar basistype"
msgid "type object '%q' has no attribute '%q'"
msgstr "objecttype '%q' heeft geen attribuut '%q'"
+#: py/objgenerator.c
+msgid "type object 'generator' has no attribute '__await__'"
+msgstr ""
+
#: py/objtype.c
msgid "type takes 1 or 3 arguments"
msgstr "type accepteert 1 of 3 argumenten"
diff --git a/locale/pl.po b/locale/pl.po
index f2f2b2c14..b79fcc606 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-10-06 13:26-0400\n"
+"POT-Creation-Date: 2020-10-15 16:06+0530\n"
"PO-Revision-Date: 2020-09-29 01:39+0000\n"
"Last-Translator: Maciej Stankiewicz <tawezik@gmail.com>\n"
"Language-Team: pl\n"
@@ -253,6 +253,10 @@ msgid "'return' outside function"
msgstr "'return' poza funkcją"
#: py/compile.c
+msgid "'yield from' inside async function"
+msgstr ""
+
+#: py/compile.c
msgid "'yield' outside function"
msgstr "'yield' poza funkcją"
@@ -295,6 +299,7 @@ msgid "All I2C peripherals are in use"
msgstr "Wszystkie peryferia I2C w użyciu"
#: ports/atmel-samd/common-hal/canio/Listener.c
+#: ports/stm/common-hal/canio/Listener.c
msgid "All RX FIFOs in use"
msgstr ""
@@ -908,6 +913,7 @@ msgid "File exists"
msgstr "Plik istnieje"
#: ports/atmel-samd/common-hal/canio/Listener.c
+#: ports/stm/common-hal/canio/Listener.c
msgid "Filters too complex"
msgstr ""
@@ -944,7 +950,8 @@ msgid "Group full"
msgstr "Grupa pełna"
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/I2C.c
-#: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/sdioio/SDCard.c
+#: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/canio/CAN.c
+#: ports/stm/common-hal/sdioio/SDCard.c
msgid "Hardware busy, try alternative pins"
msgstr "Sprzęt zajęty, wypróbuj alternatywne piny"
@@ -952,6 +959,10 @@ msgstr "Sprzęt zajęty, wypróbuj alternatywne piny"
msgid "Hardware in use, try alternative pins"
msgstr "Sprzęt w użyciu, wypróbuj alternatywne piny"
+#: shared-bindings/wifi/Radio.c
+msgid "Hostname must be between 1 and 253 characters"
+msgstr ""
+
#: extmod/vfs_posix_file.c py/objstringio.c
msgid "I/O operation on closed file"
msgstr "Operacja I/O na zamkniętym pliku"
@@ -1016,7 +1027,8 @@ msgid "Invalid %q pin"
msgstr "Zła nóżka %q"
#: ports/stm/common-hal/busio/I2C.c ports/stm/common-hal/busio/SPI.c
-#: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/sdioio/SDCard.c
+#: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/canio/CAN.c
+#: ports/stm/common-hal/sdioio/SDCard.c
msgid "Invalid %q pin selection"
msgstr ""
@@ -1032,6 +1044,7 @@ msgstr "Zły BMP"
msgid "Invalid BSSID"
msgstr ""
+#: ports/esp32s2/common-hal/analogio/AnalogOut.c
#: ports/stm/common-hal/analogio/AnalogOut.c
msgid "Invalid DAC pin supplied"
msgstr ""
@@ -1244,7 +1257,6 @@ msgid "No CCCD for this Characteristic"
msgstr ""
#: ports/atmel-samd/common-hal/analogio/AnalogOut.c
-#: ports/esp32s2/common-hal/analogio/AnalogOut.c
#: ports/stm/common-hal/analogio/AnalogOut.c
msgid "No DAC on chip"
msgstr "Brak DAC"
@@ -2742,6 +2754,10 @@ msgstr "zły format"
msgid "invalid format specifier"
msgstr "zła specyfikacja formatu"
+#: shared-bindings/wifi/Radio.c
+msgid "invalid hostname"
+msgstr ""
+
#: extmod/modussl_axtls.c
msgid "invalid key"
msgstr "zły klucz"
@@ -3450,6 +3466,10 @@ msgstr "typ nie może być bazowy"
msgid "type object '%q' has no attribute '%q'"
msgstr "typ '%q' nie ma atrybutu '%q'"
+#: py/objgenerator.c
+msgid "type object 'generator' has no attribute '__await__'"
+msgstr ""
+
#: py/objtype.c
msgid "type takes 1 or 3 arguments"
msgstr "type wymaga 1 lub 3 argumentów"
diff --git a/locale/pt_BR.po b/locale/pt_BR.po
index 92214322d..240a56104 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-10-06 13:26-0400\n"
-"PO-Revision-Date: 2020-10-09 22:07+0000\n"
+"POT-Creation-Date: 2020-10-15 16:06+0530\n"
+"PO-Revision-Date: 2020-10-16 17:01+0000\n"
"Last-Translator: Wellington Terumi Uemura <wellingtonuemura@gmail.com>\n"
"Language-Team: \n"
"Language: pt_BR\n"
@@ -14,7 +14,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
-"X-Generator: Weblate 4.3-dev\n"
+"X-Generator: Weblate 4.3.1-dev\n"
#: main.c
msgid ""
@@ -255,6 +255,10 @@ msgid "'return' outside function"
msgstr "função externa 'return'"
#: py/compile.c
+msgid "'yield from' inside async function"
+msgstr "'yield a partir' de dentro da função async"
+
+#: py/compile.c
msgid "'yield' outside function"
msgstr "função externa 'yield'"
@@ -297,6 +301,7 @@ msgid "All I2C peripherals are in use"
msgstr "Todos os periféricos I2C estão em uso"
#: ports/atmel-samd/common-hal/canio/Listener.c
+#: ports/stm/common-hal/canio/Listener.c
msgid "All RX FIFOs in use"
msgstr "Todos os FIFOs RX estão em uso"
@@ -917,6 +922,7 @@ msgid "File exists"
msgstr "Arquivo já existe"
#: ports/atmel-samd/common-hal/canio/Listener.c
+#: ports/stm/common-hal/canio/Listener.c
msgid "Filters too complex"
msgstr "Os filtros são muito complexos"
@@ -955,7 +961,8 @@ msgid "Group full"
msgstr "Grupo cheio"
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/I2C.c
-#: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/sdioio/SDCard.c
+#: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/canio/CAN.c
+#: ports/stm/common-hal/sdioio/SDCard.c
msgid "Hardware busy, try alternative pins"
msgstr "O hardware está ocupado, tente os pinos alternativos"
@@ -963,6 +970,10 @@ msgstr "O hardware está ocupado, tente os pinos alternativos"
msgid "Hardware in use, try alternative pins"
msgstr "O hardware está em uso, tente os pinos alternativos"
+#: shared-bindings/wifi/Radio.c
+msgid "Hostname must be between 1 and 253 characters"
+msgstr "O nome do host deve ter entre 1 e 253 caracteres"
+
#: extmod/vfs_posix_file.c py/objstringio.c
msgid "I/O operation on closed file"
msgstr "Operação I/O no arquivo fechado"
@@ -1027,7 +1038,8 @@ msgid "Invalid %q pin"
msgstr "Pino do %q inválido"
#: ports/stm/common-hal/busio/I2C.c ports/stm/common-hal/busio/SPI.c
-#: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/sdioio/SDCard.c
+#: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/canio/CAN.c
+#: ports/stm/common-hal/sdioio/SDCard.c
msgid "Invalid %q pin selection"
msgstr "Seleção inválida dos pinos %q"
@@ -1043,6 +1055,7 @@ msgstr "Arquivo BMP inválido"
msgid "Invalid BSSID"
msgstr "BSSID Inválido"
+#: ports/esp32s2/common-hal/analogio/AnalogOut.c
#: ports/stm/common-hal/analogio/AnalogOut.c
msgid "Invalid DAC pin supplied"
msgstr "O pino DAC informado é inválido"
@@ -1254,7 +1267,6 @@ msgid "No CCCD for this Characteristic"
msgstr "Não há nenhum CCCD para esta característica"
#: ports/atmel-samd/common-hal/analogio/AnalogOut.c
-#: ports/esp32s2/common-hal/analogio/AnalogOut.c
#: ports/stm/common-hal/analogio/AnalogOut.c
msgid "No DAC on chip"
msgstr "Nenhum DAC no chip"
@@ -2800,6 +2812,10 @@ msgstr "formato inválido"
msgid "invalid format specifier"
msgstr "o especificador do formato é inválido"
+#: shared-bindings/wifi/Radio.c
+msgid "invalid hostname"
+msgstr "o nome do host é inválido"
+
#: extmod/modussl_axtls.c
msgid "invalid key"
msgstr "chave inválida"
@@ -3518,6 +3534,10 @@ msgstr "tipo não é um tipo base aceitável"
msgid "type object '%q' has no attribute '%q'"
msgstr "o objeto tipo '%q' não possuí atributo '%q'"
+#: py/objgenerator.c
+msgid "type object 'generator' has no attribute '__await__'"
+msgstr "o tipo do objeto 'generator' não possui qualquer atributo '__await__'"
+
#: py/objtype.c
msgid "type takes 1 or 3 arguments"
msgstr "o tipo usa 1 ou 3 argumentos"
diff --git a/locale/sv.po b/locale/sv.po
index a8d4d9ffc..f3bf71558 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-10-06 13:26-0400\n"
-"PO-Revision-Date: 2020-10-02 22:53+0000\n"
+"POT-Creation-Date: 2020-10-15 16:06+0530\n"
+"PO-Revision-Date: 2020-10-14 18:12+0000\n"
"Last-Translator: Jonny Bergdahl <jonny@bergdahl.it>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: sv\n"
@@ -251,6 +251,10 @@ msgid "'return' outside function"
msgstr "'return' utanför funktion"
#: py/compile.c
+msgid "'yield from' inside async function"
+msgstr "'yield from' i async-funktion"
+
+#: py/compile.c
msgid "'yield' outside function"
msgstr "'yield' utanför funktion"
@@ -277,7 +281,7 @@ msgstr "En kanal för hårdvaruavbrott används redan"
#: ports/esp32s2/common-hal/analogio/AnalogIn.c
msgid "ADC2 is being used by WiFi"
-msgstr ""
+msgstr "ADC2 används av WiFi"
#: shared-bindings/_bleio/Address.c shared-bindings/ipaddress/IPv4Address.c
#, c-format
@@ -293,6 +297,7 @@ msgid "All I2C peripherals are in use"
msgstr "All I2C-kringutrustning används"
#: ports/atmel-samd/common-hal/canio/Listener.c
+#: ports/stm/common-hal/canio/Listener.c
msgid "All RX FIFOs in use"
msgstr "Alla RX FIFO i bruk"
@@ -908,6 +913,7 @@ msgid "File exists"
msgstr "Filen finns redan"
#: ports/atmel-samd/common-hal/canio/Listener.c
+#: ports/stm/common-hal/canio/Listener.c
msgid "Filters too complex"
msgstr "Filter för komplexa"
@@ -944,7 +950,8 @@ msgid "Group full"
msgstr "Gruppen är full"
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/I2C.c
-#: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/sdioio/SDCard.c
+#: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/canio/CAN.c
+#: ports/stm/common-hal/sdioio/SDCard.c
msgid "Hardware busy, try alternative pins"
msgstr "Hårdvaran är upptagen, prova alternativa pinnar"
@@ -952,6 +959,10 @@ msgstr "Hårdvaran är upptagen, prova alternativa pinnar"
msgid "Hardware in use, try alternative pins"
msgstr "Hårdvaran används redan, prova alternativa pinnar"
+#: shared-bindings/wifi/Radio.c
+msgid "Hostname must be between 1 and 253 characters"
+msgstr ""
+
#: extmod/vfs_posix_file.c py/objstringio.c
msgid "I/O operation on closed file"
msgstr "I/O-operation på stängd fil"
@@ -1016,7 +1027,8 @@ msgid "Invalid %q pin"
msgstr "Ogiltig %q-pinne"
#: ports/stm/common-hal/busio/I2C.c ports/stm/common-hal/busio/SPI.c
-#: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/sdioio/SDCard.c
+#: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/canio/CAN.c
+#: ports/stm/common-hal/sdioio/SDCard.c
msgid "Invalid %q pin selection"
msgstr "Ogiltigt val av %q pinne"
@@ -1032,6 +1044,7 @@ msgstr "Ogiltig BMP-fil"
msgid "Invalid BSSID"
msgstr "Ogiltig BSSID"
+#: ports/esp32s2/common-hal/analogio/AnalogOut.c
#: ports/stm/common-hal/analogio/AnalogOut.c
msgid "Invalid DAC pin supplied"
msgstr "Ogiltig DAC-pinne angiven"
@@ -1244,7 +1257,6 @@ msgid "No CCCD for this Characteristic"
msgstr "Ingen CCCD för denna karaktäristik"
#: ports/atmel-samd/common-hal/analogio/AnalogOut.c
-#: ports/esp32s2/common-hal/analogio/AnalogOut.c
#: ports/stm/common-hal/analogio/AnalogOut.c
msgid "No DAC on chip"
msgstr "Ingen DAC på chipet"
@@ -2773,6 +2785,10 @@ msgstr "ogiltigt format"
msgid "invalid format specifier"
msgstr "ogiltig formatspecificerare"
+#: shared-bindings/wifi/Radio.c
+msgid "invalid hostname"
+msgstr ""
+
#: extmod/modussl_axtls.c
msgid "invalid key"
msgstr "ogiltig nyckel"
@@ -3485,6 +3501,10 @@ msgstr "typ är inte en acceptabel bastyp"
msgid "type object '%q' has no attribute '%q'"
msgstr "typobjektet '%q' har inget attribut '%q'"
+#: py/objgenerator.c
+msgid "type object 'generator' has no attribute '__await__'"
+msgstr "typobjekt 'generator' har inget attribut '__await__'"
+
#: py/objtype.c
msgid "type takes 1 or 3 arguments"
msgstr "typen tar 1 eller 3 argument"
diff --git a/locale/zh_Latn_pinyin.po b/locale/zh_Latn_pinyin.po
index 9e7baa9d0..bf7b3c636 100644
--- a/locale/zh_Latn_pinyin.po
+++ b/locale/zh_Latn_pinyin.po
@@ -6,8 +6,8 @@ msgid ""
msgstr ""
"Project-Id-Version: circuitpython-cn\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-10-06 13:26-0400\n"
-"PO-Revision-Date: 2020-10-10 23:51+0000\n"
+"POT-Creation-Date: 2020-10-15 16:06+0530\n"
+"PO-Revision-Date: 2020-10-13 17:11+0000\n"
"Last-Translator: hexthat <hexthat@gmail.com>\n"
"Language-Team: Chinese Hanyu Pinyin\n"
"Language: zh_Latn_pinyin\n"
@@ -253,6 +253,10 @@ msgid "'return' outside function"
msgstr "'return' wàibù gōngnéng"
#: py/compile.c
+msgid "'yield from' inside async function"
+msgstr "Yì bù hán shù zhōng de 'yield from'"
+
+#: py/compile.c
msgid "'yield' outside function"
msgstr "'yield' wàibù gōngnéng"
@@ -295,6 +299,7 @@ msgid "All I2C peripherals are in use"
msgstr "Suǒyǒu I2C wàiwéi qì zhèngzài shǐyòng"
#: ports/atmel-samd/common-hal/canio/Listener.c
+#: ports/stm/common-hal/canio/Listener.c
msgid "All RX FIFOs in use"
msgstr "Suǒyǒu shǐyòng zhōng de RX FIFO"
@@ -906,6 +911,7 @@ msgid "File exists"
msgstr "Wénjiàn cúnzài"
#: ports/atmel-samd/common-hal/canio/Listener.c
+#: ports/stm/common-hal/canio/Listener.c
msgid "Filters too complex"
msgstr "guò lǜ qì tài fù zá"
@@ -942,7 +948,8 @@ msgid "Group full"
msgstr "Fēnzǔ yǐ mǎn"
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/I2C.c
-#: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/sdioio/SDCard.c
+#: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/canio/CAN.c
+#: ports/stm/common-hal/sdioio/SDCard.c
msgid "Hardware busy, try alternative pins"
msgstr "Yìngjiàn máng, qǐng chángshì qítā zhēnjiǎo"
@@ -950,6 +957,10 @@ msgstr "Yìngjiàn máng, qǐng chángshì qítā zhēnjiǎo"
msgid "Hardware in use, try alternative pins"
msgstr "Shǐyòng de yìngjiàn, qǐng chángshì qítā yǐn jiǎo"
+#: shared-bindings/wifi/Radio.c
+msgid "Hostname must be between 1 and 253 characters"
+msgstr ""
+
#: extmod/vfs_posix_file.c py/objstringio.c
msgid "I/O operation on closed file"
msgstr "Wénjiàn shàng de I/ O cāozuò"
@@ -1014,7 +1025,8 @@ msgid "Invalid %q pin"
msgstr "Wúxiào de %q yǐn jiǎo"
#: ports/stm/common-hal/busio/I2C.c ports/stm/common-hal/busio/SPI.c
-#: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/sdioio/SDCard.c
+#: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/canio/CAN.c
+#: ports/stm/common-hal/sdioio/SDCard.c
msgid "Invalid %q pin selection"
msgstr "wú xiào %q yǐn jiǎo xuǎn zé"
@@ -1030,6 +1042,7 @@ msgstr "Wúxiào de BMP wénjiàn"
msgid "Invalid BSSID"
msgstr "Wúxiào de BSSID"
+#: ports/esp32s2/common-hal/analogio/AnalogOut.c
#: ports/stm/common-hal/analogio/AnalogOut.c
msgid "Invalid DAC pin supplied"
msgstr "Tí gōng liǎo wúxiào de DAC yǐn jiǎo"
@@ -1241,7 +1254,6 @@ msgid "No CCCD for this Characteristic"
msgstr "Zhège tèzhēng méiyǒu CCCD"
#: ports/atmel-samd/common-hal/analogio/AnalogOut.c
-#: ports/esp32s2/common-hal/analogio/AnalogOut.c
#: ports/stm/common-hal/analogio/AnalogOut.c
msgid "No DAC on chip"
msgstr "Méiyǒu DAC zài xīnpiàn shàng de"
@@ -2765,6 +2777,10 @@ msgstr "wúxiào géshì"
msgid "invalid format specifier"
msgstr "wúxiào de géshì biāozhù"
+#: shared-bindings/wifi/Radio.c
+msgid "invalid hostname"
+msgstr ""
+
#: extmod/modussl_axtls.c
msgid "invalid key"
msgstr "wúxiào de mì yào"
@@ -3474,6 +3490,10 @@ msgstr "lèixíng bùshì kě jiēshòu de jīchǔ lèixíng"
msgid "type object '%q' has no attribute '%q'"
msgstr "lèixíng duìxiàng '%q' méiyǒu shǔxìng '%q'"
+#: py/objgenerator.c
+msgid "type object 'generator' has no attribute '__await__'"
+msgstr "lèi xíng duì xiàng 'generator' méi yǒu shǔ xìng '__await__'"
+
#: py/objtype.c
msgid "type takes 1 or 3 arguments"
msgstr "lèixíng wèi 1 huò 3 gè cānshù"
diff --git a/mpy-cross/mpy-cross.mk b/mpy-cross/mpy-cross.mk
index b4c8e34a2..629054af9 100644
--- a/mpy-cross/mpy-cross.mk
+++ b/mpy-cross/mpy-cross.mk
@@ -66,7 +66,7 @@ LDFLAGS += -static -static-libgcc -static-libstdc++
endif
# source files
-SRC_C = \
+SRC_C += \
main.c \
gccollect.c \
supervisor/stub/safe_mode.c \
diff --git a/ports/atmel-samd/boards/bdmicro_vina_d51/board.c b/ports/atmel-samd/boards/bdmicro_vina_d51/board.c
new file mode 100644
index 000000000..bd63baa6f
--- /dev/null
+++ b/ports/atmel-samd/boards/bdmicro_vina_d51/board.c
@@ -0,0 +1,48 @@
+/*
+ * This file is part of the MicroPython project, http://micropython.org/
+ *
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+#include "boards/board.h"
+#include "mpconfigboard.h"
+
+void board_init(void)
+{
+ // struct port_config pin_conf;
+ // port_get_config_defaults(&pin_conf);
+ //
+ // pin_conf.direction = PORT_PIN_DIR_OUTPUT;
+ // port_pin_set_config(MICROPY_HW_LED_TX, &pin_conf);
+ // port_pin_set_output_level(MICROPY_HW_LED_TX, true);
+ //
+ // port_pin_set_config(MICROPY_HW_LED_RX, &pin_conf);
+ // port_pin_set_output_level(MICROPY_HW_LED_RX, true);
+}
+
+bool board_requests_safe_mode(void) {
+ return false;
+}
+
+void reset_board(void) {
+}
diff --git a/ports/atmel-samd/boards/bdmicro_vina_d51/mpconfigboard.h b/ports/atmel-samd/boards/bdmicro_vina_d51/mpconfigboard.h
new file mode 100644
index 000000000..6bc9bb706
--- /dev/null
+++ b/ports/atmel-samd/boards/bdmicro_vina_d51/mpconfigboard.h
@@ -0,0 +1,28 @@
+#define MICROPY_HW_BOARD_NAME "BDMICRO VINA-D51"
+#define MICROPY_HW_MCU_NAME "samd51n20"
+
+#define CIRCUITPY_MCU_FAMILY samd51
+
+// These are pins not to reset.
+// Don't reset QSPI data pins
+#define MICROPY_PORT_A (PORT_PA08 | PORT_PA09 | PORT_PA10 | PORT_PA11)
+#define MICROPY_PORT_B (PORT_PB10 | PORT_PB11)
+#define MICROPY_PORT_C (0)
+#define MICROPY_PORT_D (0)
+
+#define BOARD_HAS_CRYSTAL 1
+
+#define DEFAULT_I2C_BUS_SDA (&pin_PB02)
+#define DEFAULT_I2C_BUS_SCL (&pin_PB03)
+#define DEFAULT_SPI_BUS_MISO (&pin_PB23)
+#define DEFAULT_UART_BUS_TX (&pin_PB24)
+#define DEFAULT_UART_BUS_RX (&pin_PB25)
+#define DEFAULT_SPI_BUS_MOSI (&pin_PC27)
+#define DEFAULT_SPI_BUS_SCK (&pin_PC28)
+#define MICROPY_HW_LED_STATUS (&pin_PA15)
+#define MICROPY_HW_LED_RX (&pin_PC05)
+#define MICROPY_HW_LED_TX (&pin_PC06)
+
+// USB is always used internally so skip the pin objects for it.
+#define IGNORE_PIN_PA24 1
+#define IGNORE_PIN_PA25 1
diff --git a/ports/atmel-samd/boards/bdmicro_vina_d51/mpconfigboard.mk b/ports/atmel-samd/boards/bdmicro_vina_d51/mpconfigboard.mk
new file mode 100644
index 000000000..f1b2f4c1d
--- /dev/null
+++ b/ports/atmel-samd/boards/bdmicro_vina_d51/mpconfigboard.mk
@@ -0,0 +1,12 @@
+USB_VID = 0x31e2
+USB_PID = 0x2011
+USB_PRODUCT = "VINA-D51"
+USB_MANUFACTURER = "BDMICRO LLC"
+
+CHIP_VARIANT = SAMD51N20A
+CHIP_FAMILY = samd51
+
+QSPI_FLASH_FILESYSTEM = 1
+EXTERNAL_FLASH_DEVICE_COUNT = 2
+EXTERNAL_FLASH_DEVICES = "MX25L51245G","GD25S512MD"
+LONGINT_IMPL = MPZ
diff --git a/ports/atmel-samd/boards/bdmicro_vina_d51/pins.c b/ports/atmel-samd/boards/bdmicro_vina_d51/pins.c
new file mode 100644
index 000000000..931e0328f
--- /dev/null
+++ b/ports/atmel-samd/boards/bdmicro_vina_d51/pins.c
@@ -0,0 +1,82 @@
+#include "shared-bindings/board/__init__.h"
+
+STATIC const mp_rom_map_elem_t board_global_dict_table[] = {
+ { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_PB08) },
+ { MP_ROM_QSTR(MP_QSTR_A1), MP_ROM_PTR(&pin_PB09) },
+ { MP_ROM_QSTR(MP_QSTR_A10), MP_ROM_PTR(&pin_PC00) },
+ { MP_ROM_QSTR(MP_QSTR_A11), MP_ROM_PTR(&pin_PC01) },
+ { MP_ROM_QSTR(MP_QSTR_A2), MP_ROM_PTR(&pin_PA04) },
+ { MP_ROM_QSTR(MP_QSTR_A3), MP_ROM_PTR(&pin_PA06) },
+ { MP_ROM_QSTR(MP_QSTR_A4), MP_ROM_PTR(&pin_PA07) },
+ { MP_ROM_QSTR(MP_QSTR_A5), MP_ROM_PTR(&pin_PB00) },
+ { MP_ROM_QSTR(MP_QSTR_A6), MP_ROM_PTR(&pin_PB01) },
+ { MP_ROM_QSTR(MP_QSTR_A7), MP_ROM_PTR(&pin_PB05) },
+ { MP_ROM_QSTR(MP_QSTR_A8), MP_ROM_PTR(&pin_PB06) },
+ { MP_ROM_QSTR(MP_QSTR_A9), MP_ROM_PTR(&pin_PB07) },
+ { MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_PC10) },
+ { MP_ROM_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_PC11) },
+ { MP_ROM_QSTR(MP_QSTR_D10), MP_ROM_PTR(&pin_PA14) },
+ { MP_ROM_QSTR(MP_QSTR_D11), MP_ROM_PTR(&pin_PA13) },
+ { MP_ROM_QSTR(MP_QSTR_D2), MP_ROM_PTR(&pin_PB14) },
+ { MP_ROM_QSTR(MP_QSTR_D3), MP_ROM_PTR(&pin_PB15) },
+ { MP_ROM_QSTR(MP_QSTR_D4), MP_ROM_PTR(&pin_PC20) },
+ { MP_ROM_QSTR(MP_QSTR_D5), MP_ROM_PTR(&pin_PC21) },
+ { MP_ROM_QSTR(MP_QSTR_D6), MP_ROM_PTR(&pin_PA12) },
+ { MP_ROM_QSTR(MP_QSTR_D7), MP_ROM_PTR(&pin_PB31) },
+ { MP_ROM_QSTR(MP_QSTR_D8), MP_ROM_PTR(&pin_PA16) },
+ { MP_ROM_QSTR(MP_QSTR_D9), MP_ROM_PTR(&pin_PA17) },
+ { MP_ROM_QSTR(MP_QSTR_DAC0), MP_ROM_PTR(&pin_PA02) },
+ { MP_ROM_QSTR(MP_QSTR_DAC1), MP_ROM_PTR(&pin_PA05) },
+ { MP_ROM_QSTR(MP_QSTR_ESP01_EN), MP_ROM_PTR(&pin_PC03) },
+ { MP_ROM_QSTR(MP_QSTR_ESP01_GPIO0), MP_ROM_PTR(&pin_PA18) },
+ { MP_ROM_QSTR(MP_QSTR_UART3_RTS), MP_ROM_PTR(&pin_PA18) },
+ { MP_ROM_QSTR(MP_QSTR_ESP01_GPIO2), MP_ROM_PTR(&pin_PA19) },
+ { MP_ROM_QSTR(MP_QSTR_UART3_CTS), MP_ROM_PTR(&pin_PA19) },
+ { MP_ROM_QSTR(MP_QSTR_ESP01_RESET), MP_ROM_PTR(&pin_PC02) },
+ { MP_ROM_QSTR(MP_QSTR_ESP01_RX), MP_ROM_PTR(&pin_PB21) },
+ { MP_ROM_QSTR(MP_QSTR_UART3_RX), MP_ROM_PTR(&pin_PB21) },
+ { MP_ROM_QSTR(MP_QSTR_ESP01_TX), MP_ROM_PTR(&pin_PB20) },
+ { MP_ROM_QSTR(MP_QSTR_UART3_TX), MP_ROM_PTR(&pin_PB20) },
+ { MP_ROM_QSTR(MP_QSTR_I2C_SCL), MP_ROM_PTR(&pin_PB03) },
+ { MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_PB03) },
+ { MP_ROM_QSTR(MP_QSTR_I2C_SDA), MP_ROM_PTR(&pin_PB02) },
+ { MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_PB02) },
+ { MP_ROM_QSTR(MP_QSTR_I2S_FS_0), MP_ROM_PTR(&pin_PA20) },
+ { MP_ROM_QSTR(MP_QSTR_I2S_FS_1), MP_ROM_PTR(&pin_PA23) },
+ { MP_ROM_QSTR(MP_QSTR_I2S_MCK_0), MP_ROM_PTR(&pin_PB17) },
+ { MP_ROM_QSTR(MP_QSTR_I2S_MCK_1), MP_ROM_PTR(&pin_PB13) },
+ { MP_ROM_QSTR(MP_QSTR_I2S_SCK_0), MP_ROM_PTR(&pin_PB16) },
+ { MP_ROM_QSTR(MP_QSTR_I2S_SCK_1), MP_ROM_PTR(&pin_PB12) },
+ { MP_ROM_QSTR(MP_QSTR_I2S_SDI), MP_ROM_PTR(&pin_PA22) },
+ { MP_ROM_QSTR(MP_QSTR_I2S_SDO), MP_ROM_PTR(&pin_PA21) },
+ { MP_ROM_QSTR(MP_QSTR_LED_B), MP_ROM_PTR(&pin_PA15) },
+ { MP_ROM_QSTR(MP_QSTR_LED_STATUS), MP_ROM_PTR(&pin_PA15) },
+ { MP_ROM_QSTR(MP_QSTR_LED_G), MP_ROM_PTR(&pin_PB18) },
+ { MP_ROM_QSTR(MP_QSTR_LED_R), MP_ROM_PTR(&pin_PB19) },
+ { MP_ROM_QSTR(MP_QSTR_LED_RX), MP_ROM_PTR(&pin_PC05) },
+ { MP_ROM_QSTR(MP_QSTR_LED_TX), MP_ROM_PTR(&pin_PC06) },
+ { MP_ROM_QSTR(MP_QSTR_RS485_RE), MP_ROM_PTR(&pin_PC15) },
+ { MP_ROM_QSTR(MP_QSTR_RS485_RX), MP_ROM_PTR(&pin_PC13) },
+ { MP_ROM_QSTR(MP_QSTR_RS485_TE), MP_ROM_PTR(&pin_PC14) },
+ { MP_ROM_QSTR(MP_QSTR_RS485_TX), MP_ROM_PTR(&pin_PC12) },
+ { MP_ROM_QSTR(MP_QSTR_SPI_MISO), MP_ROM_PTR(&pin_PB23) },
+ { MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_PB23) },
+ { MP_ROM_QSTR(MP_QSTR_SPI_MOSI), MP_ROM_PTR(&pin_PC27) },
+ { MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_PC27) },
+ { MP_ROM_QSTR(MP_QSTR_SPI_SCK), MP_ROM_PTR(&pin_PC28) },
+ { MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_PC28) },
+ { MP_ROM_QSTR(MP_QSTR_SPI_SS), MP_ROM_PTR(&pin_PB22) },
+ { MP_ROM_QSTR(MP_QSTR_SS), MP_ROM_PTR(&pin_PB22) },
+ { MP_ROM_QSTR(MP_QSTR_UART1_CTS), MP_ROM_PTR(&pin_PC19) },
+ { MP_ROM_QSTR(MP_QSTR_UART1_RTS), MP_ROM_PTR(&pin_PC18) },
+ { MP_ROM_QSTR(MP_QSTR_UART1_RX), MP_ROM_PTR(&pin_PC17) },
+ { MP_ROM_QSTR(MP_QSTR_UART1_TX), MP_ROM_PTR(&pin_PC16) },
+ { MP_ROM_QSTR(MP_QSTR_UART2_RX), MP_ROM_PTR(&pin_PB25) },
+ { MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_PB25) },
+ { MP_ROM_QSTR(MP_QSTR_UART2_TX), MP_ROM_PTR(&pin_PB24) },
+ { MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_PB24) },
+ { MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) },
+ { MP_ROM_QSTR(MP_QSTR_SPI), MP_ROM_PTR(&board_spi_obj) },
+ { MP_ROM_QSTR(MP_QSTR_UART), MP_ROM_PTR(&board_uart_obj) },
+};
+MP_DEFINE_CONST_DICT(board_module_globals, board_global_dict_table);
diff --git a/ports/atmel-samd/boards/dynossat_edu_eps/board.c b/ports/atmel-samd/boards/dynossat_edu_eps/board.c
new file mode 100644
index 000000000..c8e20206a
--- /dev/null
+++ b/ports/atmel-samd/boards/dynossat_edu_eps/board.c
@@ -0,0 +1,38 @@
+/*
+ * This file is part of the MicroPython project, http://micropython.org/
+ *
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+#include "boards/board.h"
+
+void board_init(void)
+{
+}
+
+bool board_requests_safe_mode(void) {
+ return false;
+}
+
+void reset_board(void) {
+}
diff --git a/ports/atmel-samd/boards/dynossat_edu_eps/mpconfigboard.h b/ports/atmel-samd/boards/dynossat_edu_eps/mpconfigboard.h
new file mode 100644
index 000000000..ef4fa8f99
--- /dev/null
+++ b/ports/atmel-samd/boards/dynossat_edu_eps/mpconfigboard.h
@@ -0,0 +1,40 @@
+#define MICROPY_HW_BOARD_NAME "DynOSSAT-EDU-EPS"
+#define MICROPY_HW_MCU_NAME "samd21g18"
+
+#define MICROPY_HW_NEOPIXEL (&pin_PA06)
+
+#define SPI_FLASH_MOSI_PIN &pin_PA22
+#define SPI_FLASH_MISO_PIN &pin_PA21
+#define SPI_FLASH_SCK_PIN &pin_PA23
+#define SPI_FLASH_CS_PIN &pin_PA20
+
+// These are pins not to reset.
+#define MICROPY_PORT_A ( 0 )
+#define MICROPY_PORT_B ( 0 )
+#define MICROPY_PORT_C ( 0 )
+
+#define BOARD_HAS_CRYSTAL 1
+
+#define DEFAULT_I2C_BUS_SCL (&pin_PA09)
+#define DEFAULT_I2C_BUS_SDA (&pin_PA08)
+
+#define DEFAULT_SPI_BUS_SCK (&pin_PB11)
+#define DEFAULT_SPI_BUS_MOSI (&pin_PA12)
+#define DEFAULT_SPI_BUS_MISO (&pin_PB10)
+
+#define DEFAULT_UART_BUS_RX (&pin_PA17)
+#define DEFAULT_UART_BUS_TX (&pin_PA16)
+
+// USB is always used internally so skip the pin objects for it.
+#define IGNORE_PIN_PA24 1
+#define IGNORE_PIN_PA25 1
+#define IGNORE_PIN_PA03 1
+#define IGNORE_PIN_PA13 1
+#define IGNORE_PIN_PA14 1
+#define IGNORE_PIN_PA15 1
+#define IGNORE_PIN_PA18 1
+#define IGNORE_PIN_PA27 1
+#define IGNORE_PIN_PA28 1
+#define IGNORE_PIN_PB08 1
+#define IGNORE_PIN_PB22 1
+#define IGNORE_PIN_PB23 1
diff --git a/ports/atmel-samd/boards/dynossat_edu_eps/mpconfigboard.mk b/ports/atmel-samd/boards/dynossat_edu_eps/mpconfigboard.mk
new file mode 100644
index 000000000..3c0cc07be
--- /dev/null
+++ b/ports/atmel-samd/boards/dynossat_edu_eps/mpconfigboard.mk
@@ -0,0 +1,23 @@
+USB_VID = 0x04D8
+USB_PID = 0xEAD1
+
+USB_PRODUCT = "DynOSSAT-EDU-EPS-v1.0"
+USB_MANUFACTURER = "BH Dynamics"
+
+CHIP_VARIANT = SAMD21G18A
+CHIP_FAMILY = samd21
+
+SPI_FLASH_FILESYSTEM = 1
+EXTERNAL_FLASH_DEVICE_COUNT = 1
+EXTERNAL_FLASH_DEVICES = "GD25Q32C"
+LONGINT_IMPL = MPZ
+
+CIRCUITPY_BITBANGIO = 0
+CIRCUITPY_FREQUENCYIO = 0
+CIRCUITPY_COUNTIO = 0
+CIRCUITPY_I2CPERIPHERAL = 0
+CIRCUITPY_VECTORIO = 0
+
+CFLAGS_INLINE_LIMIT = 60
+
+SUPEROPT_GC = 0
diff --git a/ports/atmel-samd/boards/dynossat_edu_eps/pins.c b/ports/atmel-samd/boards/dynossat_edu_eps/pins.c
new file mode 100644
index 000000000..a910311d4
--- /dev/null
+++ b/ports/atmel-samd/boards/dynossat_edu_eps/pins.c
@@ -0,0 +1,32 @@
+#include "shared-bindings/board/__init__.h"
+
+STATIC const mp_rom_map_elem_t board_global_dict_table[] = {
+ { MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_PB11) },
+ { MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_PA12) },
+ { MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_PB10) },
+ { MP_ROM_QSTR(MP_QSTR_D30), MP_ROM_PTR(&pin_PA30) },
+ { MP_ROM_QSTR(MP_QSTR_D31), MP_ROM_PTR(&pin_PA31) },
+ { MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_PA17) },
+ { MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_PA07) },
+ { MP_ROM_QSTR(MP_QSTR_OVTEMP), MP_ROM_PTR(&pin_PA07) },
+ { MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_PA16) },
+ { MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_PA08) },
+ { MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_PA09) },
+ { MP_ROM_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_PA11) },
+ { MP_ROM_QSTR(MP_QSTR_SAT_RESET), MP_ROM_PTR(&pin_PA11) },
+ { MP_ROM_QSTR(MP_QSTR_D2), MP_ROM_PTR(&pin_PA10) },
+ { MP_ROM_QSTR(MP_QSTR_SAT_PWR_ENABLE), MP_ROM_PTR(&pin_PA10) },
+ { MP_ROM_QSTR(MP_QSTR_D3), MP_ROM_PTR(&pin_PA19) },
+ { MP_ROM_QSTR(MP_QSTR_INT_IMU_OBC), MP_ROM_PTR(&pin_PA19) },
+ { MP_ROM_QSTR(MP_QSTR_D4), MP_ROM_PTR(&pin_PB03) },
+ { MP_ROM_QSTR(MP_QSTR_PWRMON_SDA), MP_ROM_PTR(&pin_PA04) },
+ { MP_ROM_QSTR(MP_QSTR_PWRMON_SCL), MP_ROM_PTR(&pin_PA05) },
+ { MP_ROM_QSTR(MP_QSTR_PWRMON_ALERT), MP_ROM_PTR(&pin_PB03) },
+ { MP_ROM_QSTR(MP_QSTR_D13), MP_ROM_PTR(&pin_PA06) },
+ { MP_ROM_QSTR(MP_QSTR_NEOPIXEL), MP_ROM_PTR(&pin_PA06) },
+ { MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) },
+ { MP_ROM_QSTR(MP_QSTR_I2C_MONITOR), MP_ROM_PTR(&board_i2c_obj) },
+ { MP_ROM_QSTR(MP_QSTR_SPI), MP_ROM_PTR(&board_spi_obj) },
+ { MP_ROM_QSTR(MP_QSTR_UART), MP_ROM_PTR(&board_uart_obj) },
+};
+MP_DEFINE_CONST_DICT(board_module_globals, board_global_dict_table);
diff --git a/ports/atmel-samd/boards/dynossat_edu_obc/board.c b/ports/atmel-samd/boards/dynossat_edu_obc/board.c
new file mode 100644
index 000000000..c8e20206a
--- /dev/null
+++ b/ports/atmel-samd/boards/dynossat_edu_obc/board.c
@@ -0,0 +1,38 @@
+/*
+ * This file is part of the MicroPython project, http://micropython.org/
+ *
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+#include "boards/board.h"
+
+void board_init(void)
+{
+}
+
+bool board_requests_safe_mode(void) {
+ return false;
+}
+
+void reset_board(void) {
+}
diff --git a/ports/atmel-samd/boards/dynossat_edu_obc/mpconfigboard.h b/ports/atmel-samd/boards/dynossat_edu_obc/mpconfigboard.h
new file mode 100644
index 000000000..d7df8db74
--- /dev/null
+++ b/ports/atmel-samd/boards/dynossat_edu_obc/mpconfigboard.h
@@ -0,0 +1,44 @@
+#define MICROPY_HW_BOARD_NAME "DynOSSAT-EDU-OBC"
+#define MICROPY_HW_MCU_NAME "samd51j20"
+
+#define MICROPY_HW_NEOPIXEL (&pin_PA08)
+
+#define SPI_FLASH_MOSI_PIN &pin_PA16
+#define SPI_FLASH_MISO_PIN &pin_PA18
+#define SPI_FLASH_SCK_PIN &pin_PA17
+#define SPI_FLASH_CS_PIN &pin_PA19
+
+// These are pins not to reset.
+#define MICROPY_PORT_A ( PORT_PA16 | PORT_PA17 | PORT_PA18 | PORT_PA19 )
+#define MICROPY_PORT_B ( 0 )
+#define MICROPY_PORT_C ( 0 )
+#define MICROPY_PORT_D ( 0 )
+
+#define BOARD_HAS_CRYSTAL 1
+
+#define DEFAULT_I2C_BUS_SCL (&pin_PB13)
+#define DEFAULT_I2C_BUS_SDA (&pin_PB12)
+
+#define DEFAULT_SPI_BUS_SCK (&pin_PB03)
+#define DEFAULT_SPI_BUS_MOSI (&pin_PB02)
+#define DEFAULT_SPI_BUS_MISO (&pin_PB01)
+
+#define DEFAULT_UART_BUS_RX (&pin_PA23)
+#define DEFAULT_UART_BUS_TX (&pin_PA22)
+
+// USB is always used internally so skip the pin objects for it.
+#define IGNORE_PIN_PA24 1
+#define IGNORE_PIN_PA25 1
+#define IGNORE_PIN_PA02 1
+#define IGNORE_PIN_PA13 1
+#define IGNORE_PIN_PA14 1
+#define IGNORE_PIN_PA20 1
+#define IGNORE_PIN_PA21 1
+#define IGNORE_PIN_PA27 1
+#define IGNORE_PIN_PB00 1
+#define IGNORE_PIN_PB04 1
+#define IGNORE_PIN_PB05 1
+#define IGNORE_PIN_PB16 1
+#define IGNORE_PIN_PB17 1
+#define IGNORE_PIN_PB23 1
+#define IGNORE_PIN_PB31 1
diff --git a/ports/atmel-samd/boards/dynossat_edu_obc/mpconfigboard.mk b/ports/atmel-samd/boards/dynossat_edu_obc/mpconfigboard.mk
new file mode 100644
index 000000000..360940cf1
--- /dev/null
+++ b/ports/atmel-samd/boards/dynossat_edu_obc/mpconfigboard.mk
@@ -0,0 +1,16 @@
+USB_VID = 0x04D8
+USB_PID = 0xEAD2
+
+USB_PRODUCT = "DynOSSAT-EDU-OBC-v1.0"
+USB_MANUFACTURER = "BH Dynamics"
+
+CHIP_VARIANT = SAMD51J20A
+CHIP_FAMILY = samd51
+
+SPI_FLASH_FILESYSTEM = 1
+EXTERNAL_FLASH_DEVICE_COUNT = 1
+EXTERNAL_FLASH_DEVICES = "GD25Q32C"
+LONGINT_IMPL = MPZ
+
+CFLAGS_INLINE_LIMIT = 60
+SUPEROPT_GC = 0
diff --git a/ports/atmel-samd/boards/dynossat_edu_obc/pins.c b/ports/atmel-samd/boards/dynossat_edu_obc/pins.c
new file mode 100644
index 000000000..a560360f7
--- /dev/null
+++ b/ports/atmel-samd/boards/dynossat_edu_obc/pins.c
@@ -0,0 +1,40 @@
+#include "shared-bindings/board/__init__.h"
+
+STATIC const mp_rom_map_elem_t board_global_dict_table[] = {
+ { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_PA07) },
+ { MP_ROM_QSTR(MP_QSTR_A1), MP_ROM_PTR(&pin_PA06) },
+ { MP_ROM_QSTR(MP_QSTR_A2), MP_ROM_PTR(&pin_PA05) },
+ { MP_ROM_QSTR(MP_QSTR_A3), MP_ROM_PTR(&pin_PA04) },
+ { MP_ROM_QSTR(MP_QSTR_A4), MP_ROM_PTR(&pin_PB09) },
+ { MP_ROM_QSTR(MP_QSTR_A5), MP_ROM_PTR(&pin_PB08) },
+ { MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_PB03) },
+ { MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_PB02) },
+ { MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_PB01) },
+ { MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_PB15) },
+ { MP_ROM_QSTR(MP_QSTR_D30), MP_ROM_PTR(&pin_PA22) },
+ { MP_ROM_QSTR(MP_QSTR_D31), MP_ROM_PTR(&pin_PA23) },
+ { MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_PA23) },
+ { MP_ROM_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_PB14) },
+ { MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_PA22) },
+ { MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_PB12) },
+ { MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_PB13) },
+ { MP_ROM_QSTR(MP_QSTR_D2), MP_ROM_PTR(&pin_PB11) },
+ { MP_ROM_QSTR(MP_QSTR_D3), MP_ROM_PTR(&pin_PB10) },
+ { MP_ROM_QSTR(MP_QSTR_D4), MP_ROM_PTR(&pin_PA11) },
+ { MP_ROM_QSTR(MP_QSTR_D5), MP_ROM_PTR(&pin_PA10) },
+ { MP_ROM_QSTR(MP_QSTR_D6), MP_ROM_PTR(&pin_PA09) },
+ { MP_ROM_QSTR(MP_QSTR_D7), MP_ROM_PTR(&pin_PB07) },
+ { MP_ROM_QSTR(MP_QSTR_D8), MP_ROM_PTR(&pin_PB06) },
+ { MP_ROM_QSTR(MP_QSTR_D9), MP_ROM_PTR(&pin_PB30) },
+ { MP_ROM_QSTR(MP_QSTR_D13), MP_ROM_PTR(&pin_PA08) },
+ { MP_ROM_QSTR(MP_QSTR_D32), MP_ROM_PTR(&pin_PA30) },
+ { MP_ROM_QSTR(MP_QSTR_D33), MP_ROM_PTR(&pin_PA31) },
+ { MP_ROM_QSTR(MP_QSTR_SD_CS), MP_ROM_PTR(&pin_PB22) },
+ { MP_ROM_QSTR(MP_QSTR_INT_IMU), MP_ROM_PTR(&pin_PA12) },
+ { MP_ROM_QSTR(MP_QSTR_SAT_POWER), MP_ROM_PTR(&pin_PA15) },
+ { MP_ROM_QSTR(MP_QSTR_NEOPIXEL), MP_ROM_PTR(&pin_PA08) },
+ { MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) },
+ { MP_ROM_QSTR(MP_QSTR_SPI), MP_ROM_PTR(&board_spi_obj) },
+ { MP_ROM_QSTR(MP_QSTR_UART), MP_ROM_PTR(&board_uart_obj) },
+};
+MP_DEFINE_CONST_DICT(board_module_globals, board_global_dict_table);
diff --git a/ports/atmel-samd/boards/kicksat-sprite/mpconfigboard.mk b/ports/atmel-samd/boards/kicksat-sprite/mpconfigboard.mk
index 18cef738e..249265151 100644
--- a/ports/atmel-samd/boards/kicksat-sprite/mpconfigboard.mk
+++ b/ports/atmel-samd/boards/kicksat-sprite/mpconfigboard.mk
@@ -11,12 +11,12 @@ LONGINT_IMPL = MPZ
# Not needed.
CIRCUITPY_AUDIOBUSIO = 0
-CIRCUITPY_FRAMEBUFFERIO = 0
+CIRCUITPY_AUDIOMP3 = 0
+CIRCUITPY_BLEIO_HCI = 0
CIRCUITPY_DISPLAYIO = 0
-CIRCUITPY_RGBMATRIX = 0
+CIRCUITPY_FRAMEBUFFERIO = 0
CIRCUITPY_PS2IO = 0
-CIRCUITPY_AUDIOMP3 = 0
-
+CIRCUITPY_RGBMATRIX = 0
CIRCUITPY_ULAB = 0
# Override optimization to keep binary small
diff --git a/ports/atmel-samd/boards/metro_m4_airlift_lite/mpconfigboard.mk b/ports/atmel-samd/boards/metro_m4_airlift_lite/mpconfigboard.mk
index e999629c3..4895cda77 100644
--- a/ports/atmel-samd/boards/metro_m4_airlift_lite/mpconfigboard.mk
+++ b/ports/atmel-samd/boards/metro_m4_airlift_lite/mpconfigboard.mk
@@ -6,10 +6,6 @@ USB_MANUFACTURER = "Adafruit Industries LLC"
CHIP_VARIANT = SAMD51J19A
CHIP_FAMILY = samd51
-# Support _bleio via the on-board ESP32 module.
-CIRCUITPY_BLEIO = 1
-CIRCUITPY_BLEIO_HCI = 1
-
QSPI_FLASH_FILESYSTEM = 1
EXTERNAL_FLASH_DEVICE_COUNT = 3
EXTERNAL_FLASH_DEVICES = "S25FL116K, S25FL216K, GD25Q16C"
diff --git a/ports/atmel-samd/boards/winterbloom_sol/mpconfigboard.mk b/ports/atmel-samd/boards/winterbloom_sol/mpconfigboard.mk
index 9217cdf23..fcefaee9b 100644
--- a/ports/atmel-samd/boards/winterbloom_sol/mpconfigboard.mk
+++ b/ports/atmel-samd/boards/winterbloom_sol/mpconfigboard.mk
@@ -18,7 +18,7 @@ LONGINT_IMPL = MPZ
# Disable modules that are unusable on this special-purpose board.
CIRCUITPY_AUDIOBUSIO = 0
CIRCUITPY_AUDIOIO = 0
-CIRCUITPY_BLEIO = 0
+CIRCUITPY_BLEIO_HCI = 0
CIRCUITPY_DISPLAYIO = 0
CIRCUITPY_FRAMEBUFFERIO = 0
CIRCUITPY_GAMEPAD = 0
diff --git a/ports/atmel-samd/common-hal/pulseio/PulseIn.h b/ports/atmel-samd/common-hal/pulseio/PulseIn.h
index 99358178f..b91bbd703 100644
--- a/ports/atmel-samd/common-hal/pulseio/PulseIn.h
+++ b/ports/atmel-samd/common-hal/pulseio/PulseIn.h
@@ -51,7 +51,6 @@ void pulsein_reset(void);
void pulsein_interrupt_handler(uint8_t channel);
void pulsein_timer_interrupt_handler(uint8_t index);
#ifdef SAMD21
-void rtc_set_continuous(void);
void rtc_start_pulsein(void);
void rtc_end_pulsein(void);
#endif
diff --git a/ports/atmel-samd/mpconfigport.h b/ports/atmel-samd/mpconfigport.h
index f185142e4..f7ccff4da 100644
--- a/ports/atmel-samd/mpconfigport.h
+++ b/ports/atmel-samd/mpconfigport.h
@@ -43,12 +43,12 @@
#define MICROPY_PY_SYS_PLATFORM "Atmel SAMD21"
#define SPI_FLASH_MAX_BAUDRATE 8000000
#define MICROPY_PY_BUILTINS_NOTIMPLEMENTED (0)
-#define MICROPY_PY_COLLECTIONS_ORDEREDDICT (0)
#define MICROPY_PY_FUNCTION_ATTRS (0)
// MICROPY_PY_UJSON depends on MICROPY_PY_IO
#define MICROPY_PY_IO (0)
#define MICROPY_PY_REVERSE_SPECIAL_METHODS (0)
#define MICROPY_PY_UJSON (0)
+#define MICROPY_PY_COLLECTIONS_ORDEREDDICT (0)
#define MICROPY_PY_UERRNO_LIST \
X(EPERM) \
X(ENOENT) \
@@ -81,7 +81,6 @@
#endif
#define SPI_FLASH_MAX_BAUDRATE 24000000
#define MICROPY_PY_BUILTINS_NOTIMPLEMENTED (1)
-#define MICROPY_PY_COLLECTIONS_ORDEREDDICT (1)
#define MICROPY_PY_FUNCTION_ATTRS (1)
// MICROPY_PY_UJSON depends on MICROPY_PY_IO
#define MICROPY_PY_IO (1)
diff --git a/ports/atmel-samd/mpconfigport.mk b/ports/atmel-samd/mpconfigport.mk
index a16daf4b0..1929e146d 100644
--- a/ports/atmel-samd/mpconfigport.mk
+++ b/ports/atmel-samd/mpconfigport.mk
@@ -37,6 +37,9 @@ ifndef CIRCUITPY_TOUCHIO_USE_NATIVE
CIRCUITPY_TOUCHIO_USE_NATIVE = 1
endif
+# No room for HCI _bleio on SAMD21.
+CIRCUITPY_BLEIO_HCI = 0
+
CIRCUITPY_SDCARDIO ?= 0
# Not enough RAM for framebuffers
diff --git a/ports/atmel-samd/supervisor/port.c b/ports/atmel-samd/supervisor/port.c
index e69062296..d65d09825 100644
--- a/ports/atmel-samd/supervisor/port.c
+++ b/ports/atmel-samd/supervisor/port.c
@@ -96,19 +96,20 @@
#endif
volatile bool hold_interrupt = false;
#ifdef SAMD21
+static void rtc_set_continuous(bool continuous) {
+ while (RTC->MODE0.STATUS.bit.SYNCBUSY);
+ RTC->MODE0.READREQ.reg = (continuous ? RTC_READREQ_RCONT : 0) | 0x0010;
+ while (RTC->MODE0.STATUS.bit.SYNCBUSY);
+}
+
void rtc_start_pulsein(void) {
- rtc_set_continuous();
+ rtc_set_continuous(true);
hold_interrupt = true;
}
void rtc_end_pulsein(void) {
hold_interrupt = false;
-}
-
-void rtc_set_continuous(void) {
- while (RTC->MODE0.STATUS.bit.SYNCBUSY);
- RTC->MODE0.READREQ.reg = RTC_READREQ_RREQ | RTC_READREQ_RCONT | 0x0010;
- while (RTC->MODE0.STATUS.bit.SYNCBUSY);
+ rtc_set_continuous(false);
}
#endif
@@ -430,19 +431,28 @@ uint32_t port_get_saved_word(void) {
static volatile uint64_t overflowed_ticks = 0;
static volatile bool _ticks_enabled = false;
-static uint32_t _get_count(void) {
+static uint32_t _get_count(uint32_t* overflow_count) {
#ifdef SAM_D5X_E5X
while ((RTC->MODE0.SYNCBUSY.reg & (RTC_MODE0_SYNCBUSY_COUNTSYNC | RTC_MODE0_SYNCBUSY_COUNT)) != 0) {}
#endif
#ifdef SAMD21
+ // Request a read so we don't stall the bus later. See section 14.3.1.5 Read Request
+ RTC->MODE0.READREQ.reg = RTC_READREQ_RREQ | 0x0010;
while (RTC->MODE0.STATUS.bit.SYNCBUSY != 0) {}
#endif
+ // Disable interrupts so we can grab the count and the overflow.
+ common_hal_mcu_disable_interrupts();
+ uint32_t count = RTC->MODE0.COUNT.reg;
+ if (overflow_count != NULL) {
+ *overflow_count = overflowed_ticks;
+ }
+ common_hal_mcu_enable_interrupts();
- return RTC->MODE0.COUNT.reg;
+ return count;
}
static void _port_interrupt_after_ticks(uint32_t ticks) {
- uint32_t current_ticks = _get_count();
+ uint32_t current_ticks = _get_count(NULL);
if (ticks > 1 << 28) {
// We'll interrupt sooner with an overflow.
return;
@@ -490,12 +500,13 @@ void RTC_Handler(void) {
}
uint64_t port_get_raw_ticks(uint8_t* subticks) {
- uint32_t current_ticks = _get_count();
+ uint32_t overflow_count;
+ uint32_t current_ticks = _get_count(&overflow_count);
if (subticks != NULL) {
*subticks = (current_ticks % 16) * 2;
}
- return overflowed_ticks + current_ticks / 16;
+ return overflow_count + current_ticks / 16;
}
// Enable 1/1024 second tick.
@@ -505,6 +516,7 @@ void port_enable_tick(void) {
RTC->MODE0.INTENSET.reg = RTC_MODE0_INTENSET_PER2;
#endif
#ifdef SAMD21
+ // TODO: Switch to using the PER *event* from the RTC to generate an interrupt via EVSYS.
_ticks_enabled = true;
_port_interrupt_after_ticks(1);
#endif
diff --git a/ports/cxd56/Makefile b/ports/cxd56/Makefile
index 7e145f5e2..5201f0db5 100644
--- a/ports/cxd56/Makefile
+++ b/ports/cxd56/Makefile
@@ -162,7 +162,7 @@ SRC_SHARED_MODULE_EXPANDED = $(addprefix shared-bindings/, $(SRC_SHARED_MODULE))
SRC_S = supervisor/cpu.s
-SRC_C = \
+SRC_C += \
background.c \
fatfs_port.c \
mphalport.c \
diff --git a/ports/esp32s2/boards/adafruit_metro_esp32s2/sdkconfig b/ports/esp32s2/boards/adafruit_metro_esp32s2/sdkconfig
index 9d8bbde96..80b9a2cf8 100644
--- a/ports/esp32s2/boards/adafruit_metro_esp32s2/sdkconfig
+++ b/ports/esp32s2/boards/adafruit_metro_esp32s2/sdkconfig
@@ -31,3 +31,9 @@ CONFIG_SPIRAM_USE_MEMMAP=y
CONFIG_SPIRAM_MEMTEST=y
# CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY is not set
# end of SPI RAM config
+
+#
+# LWIP
+#
+CONFIG_LWIP_LOCAL_HOSTNAME="Metro-ESP32S2"
+# end of LWIP
diff --git a/ports/esp32s2/boards/microdev_micro_s2/sdkconfig b/ports/esp32s2/boards/microdev_micro_s2/sdkconfig
index 67ac6d2f3..4b8cc5cc3 100644
--- a/ports/esp32s2/boards/microdev_micro_s2/sdkconfig
+++ b/ports/esp32s2/boards/microdev_micro_s2/sdkconfig
@@ -32,3 +32,8 @@ CONFIG_SPIRAM_MEMTEST=y
# CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY is not set
# end of SPI RAM config
+#
+# LWIP
+#
+CONFIG_LWIP_LOCAL_HOSTNAME="microS2"
+# end of LWIP
diff --git a/ports/esp32s2/boards/unexpectedmaker_feathers2/sdkconfig b/ports/esp32s2/boards/unexpectedmaker_feathers2/sdkconfig
index 67ac6d2f3..c9d44460c 100644
--- a/ports/esp32s2/boards/unexpectedmaker_feathers2/sdkconfig
+++ b/ports/esp32s2/boards/unexpectedmaker_feathers2/sdkconfig
@@ -32,3 +32,8 @@ CONFIG_SPIRAM_MEMTEST=y
# CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY is not set
# end of SPI RAM config
+#
+# LWIP
+#
+CONFIG_LWIP_LOCAL_HOSTNAME="UMFeatherS2"
+# end of LWIP
diff --git a/ports/esp32s2/boards/unexpectedmaker_feathers2_prerelease/sdkconfig b/ports/esp32s2/boards/unexpectedmaker_feathers2_prerelease/sdkconfig
index b73c4a8c2..00e0bb256 100644
--- a/ports/esp32s2/boards/unexpectedmaker_feathers2_prerelease/sdkconfig
+++ b/ports/esp32s2/boards/unexpectedmaker_feathers2_prerelease/sdkconfig
@@ -33,3 +33,9 @@ CONFIG_SPIRAM_USE_MEMMAP=y
CONFIG_SPIRAM_MEMTEST=y
# CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY is not set
# end of SPI RAM config
+
+#
+# LWIP
+#
+CONFIG_LWIP_LOCAL_HOSTNAME="UMFeatherS2"
+# end of LWIP
diff --git a/ports/esp32s2/common-hal/wifi/Radio.c b/ports/esp32s2/common-hal/wifi/Radio.c
index b62ad611b..5e349c09d 100644
--- a/ports/esp32s2/common-hal/wifi/Radio.c
+++ b/ports/esp32s2/common-hal/wifi/Radio.c
@@ -104,6 +104,19 @@ void common_hal_wifi_radio_stop_scanning_networks(wifi_radio_obj_t *self) {
self->current_scan = NULL;
}
+mp_obj_t common_hal_wifi_radio_get_hostname(wifi_radio_obj_t *self) {
+ const char *hostname = NULL;
+ esp_netif_get_hostname(self->netif, &hostname);
+ if (hostname == NULL) {
+ return mp_const_none;
+ }
+ return mp_obj_new_str(hostname, strlen(hostname));
+}
+
+void common_hal_wifi_radio_set_hostname(wifi_radio_obj_t *self, const char *hostname) {
+ esp_netif_set_hostname(self->netif, hostname);
+}
+
wifi_radio_error_t common_hal_wifi_radio_connect(wifi_radio_obj_t *self, uint8_t* ssid, size_t ssid_len, uint8_t* password, size_t password_len, uint8_t channel, mp_float_t timeout, uint8_t* bssid, size_t bssid_len) {
// check enabled
start_station(self);
diff --git a/ports/litex/mpconfigport.h b/ports/litex/mpconfigport.h
index fcf9d3b73..a7caf8526 100644
--- a/ports/litex/mpconfigport.h
+++ b/ports/litex/mpconfigport.h
@@ -30,7 +30,6 @@
#define CIRCUITPY_INTERNAL_NVM_SIZE (0)
#define MICROPY_NLR_THUMB (0)
-#define MICROPY_PY_COLLECTIONS_ORDEREDDICT (1)
#define MICROPY_PY_REVERSE_SPECIAL_METHODS (1)
#define MICROPY_PY_UBINASCII (1)
#define MICROPY_PY_UJSON (1)
diff --git a/ports/litex/mpconfigport.mk b/ports/litex/mpconfigport.mk
index 427e9ea84..485a75fde 100644
--- a/ports/litex/mpconfigport.mk
+++ b/ports/litex/mpconfigport.mk
@@ -16,6 +16,7 @@ CIRCUITPY_ANALOGIO = 0
CIRCUITPY_AUDIOBUSIO = 0
CIRCUITPY_AUDIOIO = 0
CIRCUITPY_BITBANGIO = 0
+CIRCUITPY_BLEIO_HCI = 0
CIRCUITPY_BOARD = 0
CIRCUITPY_BUSIO = 0
CIRCUITPY_COUNTIO = 0
diff --git a/ports/litex/supervisor/port.c b/ports/litex/supervisor/port.c
index e55eb49f0..02617b9af 100644
--- a/ports/litex/supervisor/port.c
+++ b/ports/litex/supervisor/port.c
@@ -128,7 +128,11 @@ uint32_t port_get_saved_word(void) {
}
uint64_t port_get_raw_ticks(uint8_t* subticks) {
- return raw_ticks;
+ // Reading 64 bits may take two loads, so turn of interrupts while we do it.
+ irq_setie(false);
+ uint64_t raw_tick_snapshot = raw_ticks;
+ irq_setie(true);
+ return raw_tick_snapshot;
}
// Enable 1/1024 second tick.
diff --git a/ports/mimxrt10xx/Makefile b/ports/mimxrt10xx/Makefile
index 12c9bde4f..a17e5f703 100644
--- a/ports/mimxrt10xx/Makefile
+++ b/ports/mimxrt10xx/Makefile
@@ -147,7 +147,7 @@ SRC_SDK := \
SRC_SDK := $(addprefix sdk/devices/$(CHIP_FAMILY)/, $(SRC_SDK))
-SRC_C = \
+SRC_C += \
background.c \
boards/$(BOARD)/board.c \
boards/$(BOARD)/flash_config.c \
diff --git a/ports/mimxrt10xx/mpconfigport.h b/ports/mimxrt10xx/mpconfigport.h
index 7e7df0123..7496256d0 100644
--- a/ports/mimxrt10xx/mpconfigport.h
+++ b/ports/mimxrt10xx/mpconfigport.h
@@ -40,7 +40,6 @@ extern uint8_t _ld_default_stack_size;
// 20kiB stack
#define CIRCUITPY_DEFAULT_STACK_SIZE ((uint32_t) &_ld_default_stack_size)
#define MICROPY_PY_BUILTINS_NOTIMPLEMENTED (0)
-#define MICROPY_PY_COLLECTIONS_ORDEREDDICT (0)
#define MICROPY_PY_FUNCTION_ATTRS (0)
#define MICROPY_PY_IO (1)
#define MICROPY_PY_UJSON (1)
diff --git a/ports/nrf/mpconfigport.h b/ports/nrf/mpconfigport.h
index 36a9819dc..4ed42cd82 100644
--- a/ports/nrf/mpconfigport.h
+++ b/ports/nrf/mpconfigport.h
@@ -34,7 +34,6 @@
#include "nrf_sdm.h" // for SD_FLASH_SIZE
#include "peripherals/nrf/nvm.h" // for FLASH_PAGE_SIZE
-#define MICROPY_PY_COLLECTIONS_ORDEREDDICT (1)
#define MICROPY_PY_FUNCTION_ATTRS (1)
#define MICROPY_PY_IO (1)
#define MICROPY_PY_REVERSE_SPECIAL_METHODS (1)
diff --git a/ports/nrf/mpconfigport.mk b/ports/nrf/mpconfigport.mk
index ed689545d..9560064fb 100644
--- a/ports/nrf/mpconfigport.mk
+++ b/ports/nrf/mpconfigport.mk
@@ -23,6 +23,9 @@ CIRCUITPY_AUDIOCORE ?= 1
CIRCUITPY_AUDIOMIXER ?= 1
CIRCUITPY_AUDIOPWMIO ?= 1
+# Native BLEIO is not compatible with HCI _bleio.
+CIRCUITPY_BLEIO_HCI = 0
+
CIRCUITPY_BLEIO ?= 1
# No I2CPeripheral implementation
diff --git a/ports/nrf/supervisor/port.c b/ports/nrf/supervisor/port.c
index bc8b47be7..493de43e0 100644
--- a/ports/nrf/supervisor/port.c
+++ b/ports/nrf/supervisor/port.c
@@ -274,11 +274,15 @@ uint32_t port_get_saved_word(void) {
}
uint64_t port_get_raw_ticks(uint8_t* subticks) {
+ common_hal_mcu_disable_interrupts();
uint32_t rtc = nrfx_rtc_counter_get(&rtc_instance);
+ uint32_t overflow_count = overflow_tracker.overflowed_ticks;
+ common_hal_mcu_enable_interrupts();
+
if (subticks != NULL) {
*subticks = (rtc % 32);
}
- return overflow_tracker.overflowed_ticks + rtc / 32;
+ return overflow_count + rtc / 32;
}
// Enable 1/1024 second tick.
diff --git a/ports/stm/boards/thunderpack/mpconfigboard.mk b/ports/stm/boards/thunderpack/mpconfigboard.mk
index bb50f8710..d303582e0 100644
--- a/ports/stm/boards/thunderpack/mpconfigboard.mk
+++ b/ports/stm/boards/thunderpack/mpconfigboard.mk
@@ -7,6 +7,7 @@ INTERNAL_FLASH_FILESYSTEM = 1
LONGINT_IMPL = NONE
CIRCUITPY_NVM = 1
+CIRCUITPY_BLEIO_HCI = 0
MCU_SERIES = F4
MCU_VARIANT = STM32F411xE
diff --git a/ports/stm/mpconfigport.h b/ports/stm/mpconfigport.h
index e054ffbb5..9489b4765 100644
--- a/ports/stm/mpconfigport.h
+++ b/ports/stm/mpconfigport.h
@@ -30,7 +30,6 @@
#include <stdint.h>
-#define MICROPY_PY_COLLECTIONS_ORDEREDDICT (1)
#define MICROPY_PY_FUNCTION_ATTRS (1)
#define MICROPY_PY_IO (1)
#define MICROPY_PY_REVERSE_SPECIAL_METHODS (1)
diff --git a/ports/stm/supervisor/port.c b/ports/stm/supervisor/port.c
index bb304a317..a8aab00ff 100644
--- a/ports/stm/supervisor/port.c
+++ b/ports/stm/supervisor/port.c
@@ -190,6 +190,7 @@ safe_mode_t port_init(void) {
_hrtc.Init.OutPut = RTC_OUTPUT_DISABLE;
HAL_RTC_Init(&_hrtc);
+ HAL_RTCEx_EnableBypassShadow(&_hrtc);
HAL_NVIC_EnableIRQ(RTC_Alarm_IRQn);
// Turn off SysTick
@@ -328,9 +329,23 @@ volatile uint32_t cached_date = 0;
volatile uint32_t seconds_to_minute = 0;
volatile uint32_t cached_hours_minutes = 0;
uint64_t port_get_raw_ticks(uint8_t* subticks) {
- uint32_t subseconds = rtc_clock_frequency - (uint32_t)(RTC->SSR);
+ // Disable IRQs to ensure we read all of the RTC registers as close in time as possible. Read
+ // SSR twice to make sure we didn't read across a tick.
+ __disable_irq();
+ uint32_t first_ssr = (uint32_t)(RTC->SSR);
uint32_t time = (uint32_t)(RTC->TR & RTC_TR_RESERVED_MASK);
uint32_t date = (uint32_t)(RTC->DR & RTC_DR_RESERVED_MASK);
+ uint32_t ssr = (uint32_t)(RTC->SSR);
+ while (ssr != first_ssr) {
+ first_ssr = ssr;
+ time = (uint32_t)(RTC->TR & RTC_TR_RESERVED_MASK);
+ date = (uint32_t)(RTC->DR & RTC_DR_RESERVED_MASK);
+ ssr = (uint32_t)(RTC->SSR);
+ }
+ __enable_irq();
+
+ uint32_t subseconds = rtc_clock_frequency - 1 - ssr;
+
if (date != cached_date) {
uint32_t year = (uint8_t)((date & (RTC_DR_YT | RTC_DR_YU)) >> 16U);
uint8_t month = (uint8_t)((date & (RTC_DR_MT | RTC_DR_MU)) >> 8U);
@@ -349,6 +364,7 @@ uint64_t port_get_raw_ticks(uint8_t* subticks) {
hours = (uint8_t)RTC_Bcd2ToByte(hours);
minutes = (uint8_t)RTC_Bcd2ToByte(minutes);
seconds_to_minute = 60 * (60 * hours + minutes);
+ cached_hours_minutes = hours_minutes;
}
uint8_t seconds = (uint8_t)(time & (RTC_TR_ST | RTC_TR_SU));
seconds = (uint8_t)RTC_Bcd2ToByte(seconds);
@@ -407,7 +423,7 @@ void port_interrupt_after_ticks(uint32_t ticks) {
alarm.AlarmMask = RTC_ALARMMASK_ALL;
}
- alarm.AlarmTime.SubSeconds = rtc_clock_frequency -
+ alarm.AlarmTime.SubSeconds = rtc_clock_frequency - 1 -
((raw_ticks % 1024) * 32);
alarm.AlarmTime.DayLightSaving = RTC_DAYLIGHTSAVING_NONE;
alarm.AlarmTime.StoreOperation = RTC_STOREOPERATION_SET;
diff --git a/ports/unix/Makefile b/ports/unix/Makefile
index 5d4b168fe..4bfb13c6a 100644
--- a/ports/unix/Makefile
+++ b/ports/unix/Makefile
@@ -134,7 +134,7 @@ SRC_MOD += modjni.c
endif
# source files
-SRC_C = \
+SRC_C += \
main.c \
gccollect.c \
unix_mphal.c \
diff --git a/ports/unix/mpconfigport.h b/ports/unix/mpconfigport.h
index 3ae4ff786..d6bbad9ce 100644
--- a/ports/unix/mpconfigport.h
+++ b/ports/unix/mpconfigport.h
@@ -99,7 +99,6 @@
#define MICROPY_PY_SYS_STDFILES (1)
#define MICROPY_PY_SYS_EXC_INFO (1)
#define MICROPY_PY_COLLECTIONS_DEQUE (1)
-#define MICROPY_PY_COLLECTIONS_ORDEREDDICT (1)
#ifndef MICROPY_PY_MATH_SPECIAL_FUNCTIONS
#define MICROPY_PY_MATH_SPECIAL_FUNCTIONS (1)
#endif
diff --git a/ports/unix/mpconfigport_coverage.h b/ports/unix/mpconfigport_coverage.h
index 51015a587..468d69a73 100644
--- a/ports/unix/mpconfigport_coverage.h
+++ b/ports/unix/mpconfigport_coverage.h
@@ -49,7 +49,6 @@
#define MICROPY_VFS_FAT (1)
#define MICROPY_FATFS_USE_LABEL (1)
#define MICROPY_PY_FRAMEBUF (1)
-#define MICROPY_PY_COLLECTIONS_NAMEDTUPLE__ASDICT (1)
// TODO these should be generic, not bound to fatfs
#define mp_type_fileio mp_type_vfs_posix_fileio
diff --git a/py/circuitpy_mpconfig.h b/py/circuitpy_mpconfig.h
index 5ffdd4c8f..1e01bd9c5 100644
--- a/py/circuitpy_mpconfig.h
+++ b/py/circuitpy_mpconfig.h
@@ -194,6 +194,9 @@ typedef long mp_off_t;
#define MICROPY_PY_BUILTINS_STR_PARTITION (CIRCUITPY_FULL_BUILD)
#define MICROPY_PY_BUILTINS_STR_SPLITLINES (CIRCUITPY_FULL_BUILD)
#define MICROPY_PY_UERRNO (CIRCUITPY_FULL_BUILD)
+#ifndef MICROPY_PY_COLLECTIONS_ORDEREDDICT
+#define MICROPY_PY_COLLECTIONS_ORDEREDDICT (CIRCUITPY_FULL_BUILD)
+#endif
// Opposite setting is deliberate.
#define MICROPY_PY_UERRNO_ERRORCODE (!CIRCUITPY_FULL_BUILD)
#ifndef MICROPY_PY_URE
diff --git a/py/circuitpy_mpconfig.mk b/py/circuitpy_mpconfig.mk
index 91850448d..a6aabec33 100644
--- a/py/circuitpy_mpconfig.mk
+++ b/py/circuitpy_mpconfig.mk
@@ -79,14 +79,14 @@ CFLAGS += -DCIRCUITPY_AUDIOMP3=$(CIRCUITPY_AUDIOMP3)
CIRCUITPY_BITBANGIO ?= $(CIRCUITPY_FULL_BUILD)
CFLAGS += -DCIRCUITPY_BITBANGIO=$(CIRCUITPY_BITBANGIO)
-# Explicitly enabled for boards that support _bleio.
-CIRCUITPY_BLEIO ?= 0
-CFLAGS += -DCIRCUITPY_BLEIO=$(CIRCUITPY_BLEIO)
-
# _bleio can be supported on most any board via HCI
-CIRCUITPY_BLEIO_HCI ?= 0
+CIRCUITPY_BLEIO_HCI ?= $(CIRCUITPY_FULL_BUILD)
CFLAGS += -DCIRCUITPY_BLEIO_HCI=$(CIRCUITPY_BLEIO_HCI)
+# Explicitly enabled for boards that support _bleio.
+CIRCUITPY_BLEIO ?= $(CIRCUITPY_BLEIO_HCI)
+CFLAGS += -DCIRCUITPY_BLEIO=$(CIRCUITPY_BLEIO)
+
CIRCUITPY_BOARD ?= 1
CFLAGS += -DCIRCUITPY_BOARD=$(CIRCUITPY_BOARD)
diff --git a/py/objnamedtuple.c b/py/objnamedtuple.c
index 6c36909e7..ab2f2f3c0 100644
--- a/py/objnamedtuple.c
+++ b/py/objnamedtuple.c
@@ -46,7 +46,7 @@ size_t mp_obj_namedtuple_find_field(const mp_obj_namedtuple_type_t *type, qstr n
return (size_t)-1;
}
-#if MICROPY_PY_COLLECTIONS_NAMEDTUPLE__ASDICT
+#if MICROPY_PY_COLLECTIONS_ORDEREDDICT
STATIC mp_obj_t namedtuple_asdict(mp_obj_t self_in) {
mp_obj_namedtuple_t *self = MP_OBJ_TO_PTR(self_in);
const qstr *fields = ((mp_obj_namedtuple_type_t*)self->tuple.base.type)->fields;
diff --git a/shared-bindings/wifi/Radio.c b/shared-bindings/wifi/Radio.c
index 928f21da9..b548d66f6 100644
--- a/shared-bindings/wifi/Radio.c
+++ b/shared-bindings/wifi/Radio.c
@@ -24,11 +24,13 @@
* THE SOFTWARE.
*/
+#include "shared-bindings/wifi/__init__.h"
+
+#include <regex.h>
#include <string.h>
-#include "py/objproperty.h"
#include "py/runtime.h"
-#include "shared-bindings/wifi/__init__.h"
+#include "py/objproperty.h"
//| class Radio:
//| """Native wifi radio.
@@ -50,7 +52,6 @@
//|
STATIC mp_obj_t wifi_radio_get_enabled(mp_obj_t self) {
return mp_obj_new_bool(common_hal_wifi_radio_get_enabled(self));
-
}
MP_DEFINE_CONST_FUN_OBJ_1(wifi_radio_get_enabled_obj, wifi_radio_get_enabled);
@@ -102,6 +103,45 @@ STATIC mp_obj_t wifi_radio_stop_scanning_networks(mp_obj_t self_in) {
}
STATIC MP_DEFINE_CONST_FUN_OBJ_1(wifi_radio_stop_scanning_networks_obj, wifi_radio_stop_scanning_networks);
+//| hostname: ReadableBuffer
+//| """Hostname for wifi interface. When the hostname is altered after interface started/connected
+//| the changes would only be reflected once the interface restarts/reconnects."""
+//|
+STATIC mp_obj_t wifi_radio_get_hostname(mp_obj_t self_in) {
+ wifi_radio_obj_t *self = MP_OBJ_TO_PTR(self_in);
+ return common_hal_wifi_radio_get_hostname(self);
+}
+MP_DEFINE_CONST_FUN_OBJ_1(wifi_radio_get_hostname_obj, wifi_radio_get_hostname);
+
+STATIC mp_obj_t wifi_radio_set_hostname(mp_obj_t self_in, mp_obj_t hostname_in) {
+ mp_buffer_info_t hostname;
+ mp_get_buffer_raise(hostname_in, &hostname, MP_BUFFER_READ);
+
+ if (hostname.len < 1 || hostname.len > 253) {
+ mp_raise_ValueError(translate("Hostname must be between 1 and 253 characters"));
+ }
+
+ regex_t regex; //validate hostname according to RFC 1123
+ regcomp(&regex,"^(([a-z0-9]|[a-z0-9][a-z0-9\\-]{0,61}[a-z0-9])\\.)*([a-z0-9]|[a-z0-9][a-z0-9\\-]{0,61}[a-z0-9])$", REG_EXTENDED | REG_ICASE | REG_NOSUB);
+ if (regexec(&regex, hostname.buf, 0, NULL, 0)) {
+ mp_raise_ValueError(translate("invalid hostname"));
+ }
+ regfree(&regex);
+
+ wifi_radio_obj_t *self = MP_OBJ_TO_PTR(self_in);
+ common_hal_wifi_radio_set_hostname(self, hostname.buf);
+
+ return mp_const_none;
+}
+MP_DEFINE_CONST_FUN_OBJ_2(wifi_radio_set_hostname_obj, wifi_radio_set_hostname);
+
+const mp_obj_property_t wifi_radio_hostname_obj = {
+ .base.type = &mp_type_property,
+ .proxy = {(mp_obj_t)&wifi_radio_get_hostname_obj,
+ (mp_obj_t)&wifi_radio_set_hostname_obj,
+ (mp_obj_t)&mp_const_none_obj},
+};
+
//| def connect(self, ssid: ReadableBuffer, password: ReadableBuffer = b"", *, channel: Optional[int] = 0, timeout: Optional[float] = None) -> bool:
//| """Connects to the given ssid and waits for an ip address. Reconnections are handled
//| automatically once one connection succeeds."""
@@ -216,6 +256,8 @@ STATIC const mp_rom_map_elem_t wifi_radio_locals_dict_table[] = {
{ MP_ROM_QSTR(MP_QSTR_start_scanning_networks), MP_ROM_PTR(&wifi_radio_start_scanning_networks_obj) },
{ MP_ROM_QSTR(MP_QSTR_stop_scanning_networks), MP_ROM_PTR(&wifi_radio_stop_scanning_networks_obj) },
+ { MP_ROM_QSTR(MP_QSTR_hostname), MP_ROM_PTR(&wifi_radio_hostname_obj) },
+
{ MP_ROM_QSTR(MP_QSTR_connect), MP_ROM_PTR(&wifi_radio_connect_obj) },
// { MP_ROM_QSTR(MP_QSTR_connect_to_enterprise), MP_ROM_PTR(&wifi_radio_connect_to_enterprise_obj) },
diff --git a/shared-bindings/wifi/Radio.h b/shared-bindings/wifi/Radio.h
index b5341d51c..a6a616154 100644
--- a/shared-bindings/wifi/Radio.h
+++ b/shared-bindings/wifi/Radio.h
@@ -35,7 +35,6 @@
const mp_obj_type_t wifi_radio_type;
-
typedef enum {
WIFI_RADIO_ERROR_NONE,
WIFI_RADIO_ERROR_UNKNOWN,
@@ -46,6 +45,9 @@ typedef enum {
extern bool common_hal_wifi_radio_get_enabled(wifi_radio_obj_t *self);
extern void common_hal_wifi_radio_set_enabled(wifi_radio_obj_t *self, bool enabled);
+extern mp_obj_t common_hal_wifi_radio_get_hostname(wifi_radio_obj_t *self);
+extern void common_hal_wifi_radio_set_hostname(wifi_radio_obj_t *self, const char *hostname);
+
extern mp_obj_t common_hal_wifi_radio_get_mac_address(wifi_radio_obj_t *self);
extern mp_obj_t common_hal_wifi_radio_start_scanning_networks(wifi_radio_obj_t *self);
diff --git a/shared-module/displayio/Display.c b/shared-module/displayio/Display.c
index 499c00ffb..7c8c9280b 100644
--- a/shared-module/displayio/Display.c
+++ b/shared-module/displayio/Display.c
@@ -347,8 +347,10 @@ void common_hal_displayio_display_set_rotation(displayio_display_obj_t* self, in
self->core.height = tmp;
}
displayio_display_core_set_rotation(&self->core, rotation);
- supervisor_stop_terminal();
- supervisor_start_terminal(self->core.width, self->core.height);
+ if (self == &displays[0].display) {
+ supervisor_stop_terminal();
+ supervisor_start_terminal(self->core.width, self->core.height);
+ }
if (self->core.current_group != NULL) {
displayio_group_update_transform(self->core.current_group, &self->core.transform);
}
diff --git a/shared-module/displayio/display_core.c b/shared-module/displayio/display_core.c
index 60a8ef213..411f9f373 100644
--- a/shared-module/displayio/display_core.c
+++ b/shared-module/displayio/display_core.c
@@ -85,7 +85,10 @@ void displayio_display_core_construct(displayio_display_core_t* self,
self->bus = bus;
- supervisor_start_terminal(width, height);
+ // (offsetof core is equal in all display types)
+ if (self == &displays[0].display.core) {
+ supervisor_start_terminal(width, height);
+ }
self->width = width;
self->height = height;
diff --git a/shared-module/framebufferio/FramebufferDisplay.c b/shared-module/framebufferio/FramebufferDisplay.c
index 6b506c7fa..03e121c91 100644
--- a/shared-module/framebufferio/FramebufferDisplay.c
+++ b/shared-module/framebufferio/FramebufferDisplay.c
@@ -280,8 +280,10 @@ void common_hal_framebufferio_framebufferdisplay_set_rotation(framebufferio_fram
self->core.height = tmp;
}
displayio_display_core_set_rotation(&self->core, rotation);
- supervisor_stop_terminal();
- supervisor_start_terminal(self->core.width, self->core.height);
+ if (self == &displays[0].framebuffer_display) {
+ supervisor_stop_terminal();
+ supervisor_start_terminal(self->core.width, self->core.height);
+ }
if (self->core.current_group != NULL) {
displayio_group_update_transform(self->core.current_group, &self->core.transform);
}
diff --git a/supervisor/shared/tick.c b/supervisor/shared/tick.c
index 91ffa307d..a2855a570 100644
--- a/supervisor/shared/tick.c
+++ b/supervisor/shared/tick.c
@@ -125,9 +125,7 @@ void supervisor_tick(void) {
uint64_t supervisor_ticks_ms64() {
uint64_t result;
- common_hal_mcu_disable_interrupts();
result = port_get_raw_ticks(NULL);
- common_hal_mcu_enable_interrupts();
result = result * 1000 / 1024;
return result;
}