summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsommersoft <sommersoft@gmail.com>2019-08-24 17:14:05 -0500
committersommersoft <sommersoft@gmail.com>2019-08-24 17:14:05 -0500
commitb54fd961cb20333c1db0c84b7f61467681911554 (patch)
tree4732d25d73d8811e5b994d2ffd702c064e5ca64f
parentdb32a795967fa52c083c4de927436941a070eaf6 (diff)
parent1d973a08038148ce20aaa43863721df6328318b7 (diff)
Merge branch 'master' of https://github.com/adafruit/circuitpython into mixer_voice
m---------lib/tinyusb0
-rw-r--r--locale/ID.po21
-rw-r--r--locale/circuitpython.pot21
-rw-r--r--locale/de_DE.po21
-rw-r--r--locale/en_US.po21
-rw-r--r--locale/en_x_pirate.po21
-rw-r--r--locale/es.po21
-rw-r--r--locale/fil.po21
-rw-r--r--locale/fr.po21
-rw-r--r--locale/it_IT.po21
-rw-r--r--locale/pl.po21
-rw-r--r--locale/pt_BR.po21
-rw-r--r--locale/zh_Latn_pinyin.po21
-rw-r--r--ports/atmel-samd/boards/capablerobot_usbhub/mpconfigboard.mk2
-rw-r--r--ports/atmel-samd/boards/cp32-m4/mpconfigboard.mk2
-rw-r--r--ports/atmel-samd/boards/datalore_ip_m4/mpconfigboard.mk2
-rw-r--r--ports/atmel-samd/boards/feather_m4_express/mpconfigboard.mk2
-rw-r--r--ports/atmel-samd/boards/grandcentral_m4_express/mpconfigboard.mk2
-rw-r--r--ports/atmel-samd/boards/itsybitsy_m0_express/mpconfigboard.mk3
-rw-r--r--ports/atmel-samd/boards/itsybitsy_m4_express/mpconfigboard.mk2
-rw-r--r--ports/atmel-samd/boards/kicksat-sprite/mpconfigboard.mk2
-rw-r--r--ports/atmel-samd/boards/metro_m4_airlift_lite/mpconfigboard.mk2
-rw-r--r--ports/atmel-samd/boards/metro_m4_express/mpconfigboard.mk2
-rw-r--r--ports/atmel-samd/boards/mini_sam_m4/mpconfigboard.mk2
-rw-r--r--ports/atmel-samd/boards/pybadge/mpconfigboard.mk2
-rw-r--r--ports/atmel-samd/boards/pybadge_airlift/mpconfigboard.mk2
-rw-r--r--ports/atmel-samd/boards/pygamer/mpconfigboard.mk2
-rw-r--r--ports/atmel-samd/boards/pygamer_advance/mpconfigboard.mk2
-rw-r--r--ports/atmel-samd/boards/pyportal/mpconfigboard.mk3
-rw-r--r--ports/atmel-samd/boards/pyportal_titano/mpconfigboard.mk3
-rw-r--r--ports/atmel-samd/boards/robohatmm1_m4/mpconfigboard.mk3
-rw-r--r--ports/atmel-samd/boards/sam32/mpconfigboard.mk3
-rw-r--r--ports/atmel-samd/boards/trellis_m4_express/mpconfigboard.mk2
-rw-r--r--ports/atmel-samd/common-hal/rotaryio/IncrementalEncoder.c2
-rw-r--r--ports/atmel-samd/common-hal/touchio/TouchIn.c7
-rw-r--r--ports/atmel-samd/common-hal/touchio/TouchIn.h5
-rw-r--r--ports/atmel-samd/mpconfigport.mk2
-rw-r--r--ports/atmel-samd/supervisor/port.c6
-rwxr-xr-xports/nrf/Makefile3
-rw-r--r--ports/nrf/boards/circuitplayground_bluefruit/mpconfigboard.h7
-rw-r--r--ports/nrf/common-hal/bleio/Adapter.c13
-rw-r--r--ports/nrf/common-hal/bleio/Characteristic.c2
-rw-r--r--ports/nrf/mpconfigport.h5
-rw-r--r--ports/nrf/peripherals/nrf/clocks.c8
-rw-r--r--py/circuitpy_defns.mk35
-rw-r--r--py/circuitpy_mpconfig.mk18
-rw-r--r--shared-bindings/audioio/__init__.c15
-rw-r--r--shared-bindings/displayio/Display.c82
-rw-r--r--shared-bindings/displayio/Display.h1
-rw-r--r--shared-bindings/touchio/TouchIn.c3
-rw-r--r--shared-bindings/touchio/TouchIn.h5
-rw-r--r--shared-module/displayio/Display.c6
-rw-r--r--shared-module/displayio/Display.h1
-rw-r--r--shared-module/touchio/TouchIn.c (renamed from ports/nrf/common-hal/touchio/TouchIn.c)33
-rw-r--r--shared-module/touchio/TouchIn.h (renamed from ports/nrf/common-hal/touchio/TouchIn.h)9
-rw-r--r--shared-module/touchio/__init__.c (renamed from ports/nrf/common-hal/touchio/__init__.c)0
56 files changed, 421 insertions, 144 deletions
diff --git a/lib/tinyusb b/lib/tinyusb
-Subproject 96d96a94b887bc1b648a175c28b377dba76a906
+Subproject 00c440cb26fbea7fd367623454d8b67855f1372
diff --git a/locale/ID.po b/locale/ID.po
index da872bf47..b58d4e610 100644
--- a/locale/ID.po
+++ b/locale/ID.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-08-19 21:38-0500\n"
+"POT-Creation-Date: 2019-08-22 15:20-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -330,6 +330,14 @@ msgstr ""
msgid "Buffer incorrect size. Should be %d bytes."
msgstr ""
+#: shared-bindings/displayio/Display.c
+msgid "Buffer is not a bytearray."
+msgstr ""
+
+#: shared-bindings/displayio/Display.c
+msgid "Buffer is too small"
+msgstr ""
+
#: ports/nrf/common-hal/audiopwmio/PWMAudioOut.c
#, c-format
msgid "Buffer length %d too big. It must be less than %d"
@@ -521,6 +529,10 @@ msgid "Destination capacity is smaller than destination_length."
msgstr ""
#: shared-bindings/displayio/Display.c
+msgid "Display must have a 16 bit colorspace."
+msgstr ""
+
+#: shared-bindings/displayio/Display.c
msgid "Display rotation must be in 90 degree increments"
msgstr ""
@@ -968,6 +980,10 @@ msgstr ""
msgid "No hardware support on pin"
msgstr "Tidak ada dukungan hardware untuk pin"
+#: shared-module/touchio/TouchIn.c
+msgid "No pulldown on pin; 1Mohm recommended"
+msgstr ""
+
#: py/moduerrno.c
msgid "No space left on device"
msgstr ""
@@ -1317,9 +1333,6 @@ msgid "Unsupported pull value."
msgstr ""
#: ports/nrf/common-hal/bleio/Characteristic.c
-msgid "Value length required fixed length"
-msgstr ""
-
#: ports/nrf/common-hal/bleio/Descriptor.c
msgid "Value length != required fixed length"
msgstr ""
diff --git a/locale/circuitpython.pot b/locale/circuitpython.pot
index 9a1790934..0b668ebfd 100644
--- a/locale/circuitpython.pot
+++ b/locale/circuitpython.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-08-19 21:38-0500\n"
+"POT-Creation-Date: 2019-08-22 15:20-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -326,6 +326,14 @@ msgstr ""
msgid "Buffer incorrect size. Should be %d bytes."
msgstr ""
+#: shared-bindings/displayio/Display.c
+msgid "Buffer is not a bytearray."
+msgstr ""
+
+#: shared-bindings/displayio/Display.c
+msgid "Buffer is too small"
+msgstr ""
+
#: ports/nrf/common-hal/audiopwmio/PWMAudioOut.c
#, c-format
msgid "Buffer length %d too big. It must be less than %d"
@@ -510,6 +518,10 @@ msgid "Destination capacity is smaller than destination_length."
msgstr ""
#: shared-bindings/displayio/Display.c
+msgid "Display must have a 16 bit colorspace."
+msgstr ""
+
+#: shared-bindings/displayio/Display.c
msgid "Display rotation must be in 90 degree increments"
msgstr ""
@@ -953,6 +965,10 @@ msgstr ""
msgid "No hardware support on pin"
msgstr ""
+#: shared-module/touchio/TouchIn.c
+msgid "No pulldown on pin; 1Mohm recommended"
+msgstr ""
+
#: py/moduerrno.c
msgid "No space left on device"
msgstr ""
@@ -1293,9 +1309,6 @@ msgid "Unsupported pull value."
msgstr ""
#: ports/nrf/common-hal/bleio/Characteristic.c
-msgid "Value length required fixed length"
-msgstr ""
-
#: ports/nrf/common-hal/bleio/Descriptor.c
msgid "Value length != required fixed length"
msgstr ""
diff --git a/locale/de_DE.po b/locale/de_DE.po
index f39d1f47e..6280e9182 100644
--- a/locale/de_DE.po
+++ b/locale/de_DE.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-08-19 21:38-0500\n"
+"POT-Creation-Date: 2019-08-22 15:20-0400\n"
"PO-Revision-Date: 2018-07-27 11:55-0700\n"
"Last-Translator: Pascal Deneaux\n"
"Language-Team: Sebastian Plamauer, Pascal Deneaux\n"
@@ -330,6 +330,14 @@ msgstr "Die Helligkeit ist nicht einstellbar"
msgid "Buffer incorrect size. Should be %d bytes."
msgstr "Der Puffergröße ist inkorrekt. Sie sollte %d bytes haben."
+#: shared-bindings/displayio/Display.c
+msgid "Buffer is not a bytearray."
+msgstr ""
+
+#: shared-bindings/displayio/Display.c
+msgid "Buffer is too small"
+msgstr ""
+
#: ports/nrf/common-hal/audiopwmio/PWMAudioOut.c
#, c-format
msgid "Buffer length %d too big. It must be less than %d"
@@ -514,6 +522,10 @@ msgid "Destination capacity is smaller than destination_length."
msgstr "Die Zielkapazität ist kleiner als destination_length."
#: shared-bindings/displayio/Display.c
+msgid "Display must have a 16 bit colorspace."
+msgstr ""
+
+#: shared-bindings/displayio/Display.c
msgid "Display rotation must be in 90 degree increments"
msgstr "Die Rotation der Anzeige muss in 90-Grad-Schritten erfolgen"
@@ -966,6 +978,10 @@ msgstr ""
msgid "No hardware support on pin"
msgstr "Keine Hardwareunterstützung an diesem Pin"
+#: shared-module/touchio/TouchIn.c
+msgid "No pulldown on pin; 1Mohm recommended"
+msgstr ""
+
#: py/moduerrno.c
msgid "No space left on device"
msgstr "Kein Speicherplatz auf Gerät"
@@ -1324,9 +1340,6 @@ msgid "Unsupported pull value."
msgstr "Nicht unterstützter Pull-Wert"
#: ports/nrf/common-hal/bleio/Characteristic.c
-msgid "Value length required fixed length"
-msgstr ""
-
#: ports/nrf/common-hal/bleio/Descriptor.c
msgid "Value length != required fixed length"
msgstr ""
diff --git a/locale/en_US.po b/locale/en_US.po
index 24b252d17..b47b993eb 100644
--- a/locale/en_US.po
+++ b/locale/en_US.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-08-19 21:38-0500\n"
+"POT-Creation-Date: 2019-08-22 15:20-0400\n"
"PO-Revision-Date: 2018-07-27 11:55-0700\n"
"Last-Translator: \n"
"Language-Team: \n"
@@ -326,6 +326,14 @@ msgstr ""
msgid "Buffer incorrect size. Should be %d bytes."
msgstr ""
+#: shared-bindings/displayio/Display.c
+msgid "Buffer is not a bytearray."
+msgstr ""
+
+#: shared-bindings/displayio/Display.c
+msgid "Buffer is too small"
+msgstr ""
+
#: ports/nrf/common-hal/audiopwmio/PWMAudioOut.c
#, c-format
msgid "Buffer length %d too big. It must be less than %d"
@@ -510,6 +518,10 @@ msgid "Destination capacity is smaller than destination_length."
msgstr ""
#: shared-bindings/displayio/Display.c
+msgid "Display must have a 16 bit colorspace."
+msgstr ""
+
+#: shared-bindings/displayio/Display.c
msgid "Display rotation must be in 90 degree increments"
msgstr ""
@@ -953,6 +965,10 @@ msgstr ""
msgid "No hardware support on pin"
msgstr ""
+#: shared-module/touchio/TouchIn.c
+msgid "No pulldown on pin; 1Mohm recommended"
+msgstr ""
+
#: py/moduerrno.c
msgid "No space left on device"
msgstr ""
@@ -1293,9 +1309,6 @@ msgid "Unsupported pull value."
msgstr ""
#: ports/nrf/common-hal/bleio/Characteristic.c
-msgid "Value length required fixed length"
-msgstr ""
-
#: ports/nrf/common-hal/bleio/Descriptor.c
msgid "Value length != required fixed length"
msgstr ""
diff --git a/locale/en_x_pirate.po b/locale/en_x_pirate.po
index d05de480e..3a74d26ac 100644
--- a/locale/en_x_pirate.po
+++ b/locale/en_x_pirate.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-08-19 21:38-0500\n"
+"POT-Creation-Date: 2019-08-22 15:20-0400\n"
"PO-Revision-Date: 2018-07-27 11:55-0700\n"
"Last-Translator: \n"
"Language-Team: @sommersoft, @MrCertainly\n"
@@ -330,6 +330,14 @@ msgstr ""
msgid "Buffer incorrect size. Should be %d bytes."
msgstr ""
+#: shared-bindings/displayio/Display.c
+msgid "Buffer is not a bytearray."
+msgstr ""
+
+#: shared-bindings/displayio/Display.c
+msgid "Buffer is too small"
+msgstr ""
+
#: ports/nrf/common-hal/audiopwmio/PWMAudioOut.c
#, c-format
msgid "Buffer length %d too big. It must be less than %d"
@@ -514,6 +522,10 @@ msgid "Destination capacity is smaller than destination_length."
msgstr ""
#: shared-bindings/displayio/Display.c
+msgid "Display must have a 16 bit colorspace."
+msgstr ""
+
+#: shared-bindings/displayio/Display.c
msgid "Display rotation must be in 90 degree increments"
msgstr ""
@@ -957,6 +969,10 @@ msgstr ""
msgid "No hardware support on pin"
msgstr ""
+#: shared-module/touchio/TouchIn.c
+msgid "No pulldown on pin; 1Mohm recommended"
+msgstr ""
+
#: py/moduerrno.c
msgid "No space left on device"
msgstr ""
@@ -1297,9 +1313,6 @@ msgid "Unsupported pull value."
msgstr ""
#: ports/nrf/common-hal/bleio/Characteristic.c
-msgid "Value length required fixed length"
-msgstr ""
-
#: ports/nrf/common-hal/bleio/Descriptor.c
msgid "Value length != required fixed length"
msgstr ""
diff --git a/locale/es.po b/locale/es.po
index 1c4604cf0..498123216 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: 2019-08-19 21:38-0500\n"
+"POT-Creation-Date: 2019-08-22 15:20-0400\n"
"PO-Revision-Date: 2018-08-24 22:56-0500\n"
"Last-Translator: \n"
"Language-Team: \n"
@@ -334,6 +334,14 @@ msgstr "El brillo no se puede ajustar"
msgid "Buffer incorrect size. Should be %d bytes."
msgstr "Tamaño de buffer incorrecto. Debe ser de %d bytes."
+#: shared-bindings/displayio/Display.c
+msgid "Buffer is not a bytearray."
+msgstr ""
+
+#: shared-bindings/displayio/Display.c
+msgid "Buffer is too small"
+msgstr ""
+
#: ports/nrf/common-hal/audiopwmio/PWMAudioOut.c
#, c-format
msgid "Buffer length %d too big. It must be less than %d"
@@ -518,6 +526,10 @@ msgid "Destination capacity is smaller than destination_length."
msgstr "Capacidad de destino es mas pequeña que destination_length."
#: shared-bindings/displayio/Display.c
+msgid "Display must have a 16 bit colorspace."
+msgstr ""
+
+#: shared-bindings/displayio/Display.c
msgid "Display rotation must be in 90 degree increments"
msgstr "Rotación de display debe ser en incrementos de 90 grados"
@@ -968,6 +980,10 @@ msgstr "Sin soporte de hardware en el pin clk"
msgid "No hardware support on pin"
msgstr "Sin soporte de hardware en pin"
+#: shared-module/touchio/TouchIn.c
+msgid "No pulldown on pin; 1Mohm recommended"
+msgstr ""
+
#: py/moduerrno.c
msgid "No space left on device"
msgstr "No queda espacio en el dispositivo"
@@ -1334,9 +1350,6 @@ msgid "Unsupported pull value."
msgstr "valor pull no soportado."
#: ports/nrf/common-hal/bleio/Characteristic.c
-msgid "Value length required fixed length"
-msgstr ""
-
#: ports/nrf/common-hal/bleio/Descriptor.c
msgid "Value length != required fixed length"
msgstr ""
diff --git a/locale/fil.po b/locale/fil.po
index f608fde0d..204551358 100644
--- a/locale/fil.po
+++ b/locale/fil.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-08-19 21:38-0500\n"
+"POT-Creation-Date: 2019-08-22 15:20-0400\n"
"PO-Revision-Date: 2018-12-20 22:15-0800\n"
"Last-Translator: Timothy <me@timothygarcia.ca>\n"
"Language-Team: fil\n"
@@ -332,6 +332,14 @@ msgstr ""
msgid "Buffer incorrect size. Should be %d bytes."
msgstr "Mali ang size ng buffer. Dapat %d bytes."
+#: shared-bindings/displayio/Display.c
+msgid "Buffer is not a bytearray."
+msgstr ""
+
+#: shared-bindings/displayio/Display.c
+msgid "Buffer is too small"
+msgstr ""
+
#: ports/nrf/common-hal/audiopwmio/PWMAudioOut.c
#, c-format
msgid "Buffer length %d too big. It must be less than %d"
@@ -522,6 +530,10 @@ msgstr ""
"Ang kapasidad ng destinasyon ay mas maliit kaysa sa destination_length."
#: shared-bindings/displayio/Display.c
+msgid "Display must have a 16 bit colorspace."
+msgstr ""
+
+#: shared-bindings/displayio/Display.c
msgid "Display rotation must be in 90 degree increments"
msgstr ""
@@ -977,6 +989,10 @@ msgstr ""
msgid "No hardware support on pin"
msgstr "Walang support sa hardware ang pin"
+#: shared-module/touchio/TouchIn.c
+msgid "No pulldown on pin; 1Mohm recommended"
+msgstr ""
+
#: py/moduerrno.c
msgid "No space left on device"
msgstr ""
@@ -1338,9 +1354,6 @@ msgid "Unsupported pull value."
msgstr "Hindi suportado ang pull value."
#: ports/nrf/common-hal/bleio/Characteristic.c
-msgid "Value length required fixed length"
-msgstr ""
-
#: ports/nrf/common-hal/bleio/Descriptor.c
msgid "Value length != required fixed length"
msgstr ""
diff --git a/locale/fr.po b/locale/fr.po
index 5094f66aa..f78f2a000 100644
--- a/locale/fr.po
+++ b/locale/fr.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.1\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-08-19 21:38-0500\n"
+"POT-Creation-Date: 2019-08-22 15:20-0400\n"
"PO-Revision-Date: 2019-04-14 20:05+0100\n"
"Last-Translator: Pierrick Couturier <arofarn@arofarn.info>\n"
"Language-Team: fr\n"
@@ -337,6 +337,14 @@ msgstr "Luminosité non-ajustable"
msgid "Buffer incorrect size. Should be %d bytes."
msgstr "Tampon de taille incorrect. Devrait être de %d octets."
+#: shared-bindings/displayio/Display.c
+msgid "Buffer is not a bytearray."
+msgstr ""
+
+#: shared-bindings/displayio/Display.c
+msgid "Buffer is too small"
+msgstr ""
+
#: ports/nrf/common-hal/audiopwmio/PWMAudioOut.c
#, c-format
msgid "Buffer length %d too big. It must be less than %d"
@@ -526,6 +534,10 @@ msgid "Destination capacity is smaller than destination_length."
msgstr "La capacité de destination est plus petite que 'destination_length'."
#: shared-bindings/displayio/Display.c
+msgid "Display must have a 16 bit colorspace."
+msgstr ""
+
+#: shared-bindings/displayio/Display.c
msgid "Display rotation must be in 90 degree increments"
msgstr "La rotation d'affichage doit se faire par incréments de 90 degrés"
@@ -986,6 +998,10 @@ msgstr ""
msgid "No hardware support on pin"
msgstr "Pas de support matériel pour cette broche"
+#: shared-module/touchio/TouchIn.c
+msgid "No pulldown on pin; 1Mohm recommended"
+msgstr ""
+
#: py/moduerrno.c
msgid "No space left on device"
msgstr "Il n'y a plus d'espace libre sur le périphérique"
@@ -1363,9 +1379,6 @@ msgid "Unsupported pull value."
msgstr "Valeur de tirage 'pull' non supportée."
#: ports/nrf/common-hal/bleio/Characteristic.c
-msgid "Value length required fixed length"
-msgstr ""
-
#: ports/nrf/common-hal/bleio/Descriptor.c
msgid "Value length != required fixed length"
msgstr ""
diff --git a/locale/it_IT.po b/locale/it_IT.po
index fcca162de..f8deb08ca 100644
--- a/locale/it_IT.po
+++ b/locale/it_IT.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-08-19 21:38-0500\n"
+"POT-Creation-Date: 2019-08-22 15:20-0400\n"
"PO-Revision-Date: 2018-10-02 16:27+0200\n"
"Last-Translator: Enrico Paganin <enrico.paganin@mail.com>\n"
"Language-Team: \n"
@@ -332,6 +332,14 @@ msgstr "Illiminazione non è regolabile"
msgid "Buffer incorrect size. Should be %d bytes."
msgstr "Buffer di lunghezza non valida. Dovrebbe essere di %d bytes."
+#: shared-bindings/displayio/Display.c
+msgid "Buffer is not a bytearray."
+msgstr ""
+
+#: shared-bindings/displayio/Display.c
+msgid "Buffer is too small"
+msgstr ""
+
#: ports/nrf/common-hal/audiopwmio/PWMAudioOut.c
#, c-format
msgid "Buffer length %d too big. It must be less than %d"
@@ -522,6 +530,10 @@ msgid "Destination capacity is smaller than destination_length."
msgstr "La capacità di destinazione è più piccola di destination_length."
#: shared-bindings/displayio/Display.c
+msgid "Display must have a 16 bit colorspace."
+msgstr ""
+
+#: shared-bindings/displayio/Display.c
msgid "Display rotation must be in 90 degree increments"
msgstr ""
@@ -976,6 +988,10 @@ msgstr ""
msgid "No hardware support on pin"
msgstr "Nessun supporto hardware sul pin"
+#: shared-module/touchio/TouchIn.c
+msgid "No pulldown on pin; 1Mohm recommended"
+msgstr ""
+
#: py/moduerrno.c
msgid "No space left on device"
msgstr "Non che spazio sul dispositivo"
@@ -1337,9 +1353,6 @@ msgid "Unsupported pull value."
msgstr "Valore di pull non supportato."
#: ports/nrf/common-hal/bleio/Characteristic.c
-msgid "Value length required fixed length"
-msgstr ""
-
#: ports/nrf/common-hal/bleio/Descriptor.c
msgid "Value length != required fixed length"
msgstr ""
diff --git a/locale/pl.po b/locale/pl.po
index 7bd28fe6e..a807dff33 100644
--- a/locale/pl.po
+++ b/locale/pl.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-08-19 21:38-0500\n"
+"POT-Creation-Date: 2019-08-22 15:20-0400\n"
"PO-Revision-Date: 2019-03-19 18:37-0700\n"
"Last-Translator: Radomir Dopieralski <circuitpython@sheep.art.pl>\n"
"Language-Team: pl\n"
@@ -329,6 +329,14 @@ msgstr "Jasność nie jest regulowana"
msgid "Buffer incorrect size. Should be %d bytes."
msgstr "Zła wielkość bufora. Powinno być %d bajtów."
+#: shared-bindings/displayio/Display.c
+msgid "Buffer is not a bytearray."
+msgstr ""
+
+#: shared-bindings/displayio/Display.c
+msgid "Buffer is too small"
+msgstr ""
+
#: ports/nrf/common-hal/audiopwmio/PWMAudioOut.c
#, c-format
msgid "Buffer length %d too big. It must be less than %d"
@@ -513,6 +521,10 @@ msgid "Destination capacity is smaller than destination_length."
msgstr "Pojemność celu mniejsza od destination_length."
#: shared-bindings/displayio/Display.c
+msgid "Display must have a 16 bit colorspace."
+msgstr ""
+
+#: shared-bindings/displayio/Display.c
msgid "Display rotation must be in 90 degree increments"
msgstr "Wyświetlacz można obracać co 90 stopni"
@@ -963,6 +975,10 @@ msgstr ""
msgid "No hardware support on pin"
msgstr "Brak sprzętowej obsługi na nóżce"
+#: shared-module/touchio/TouchIn.c
+msgid "No pulldown on pin; 1Mohm recommended"
+msgstr ""
+
#: py/moduerrno.c
msgid "No space left on device"
msgstr "Brak miejsca"
@@ -1313,9 +1329,6 @@ msgid "Unsupported pull value."
msgstr "Zła wartość podciągnięcia."
#: ports/nrf/common-hal/bleio/Characteristic.c
-msgid "Value length required fixed length"
-msgstr ""
-
#: ports/nrf/common-hal/bleio/Descriptor.c
msgid "Value length != required fixed length"
msgstr ""
diff --git a/locale/pt_BR.po b/locale/pt_BR.po
index a511fcb37..732c8767f 100644
--- a/locale/pt_BR.po
+++ b/locale/pt_BR.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-08-19 21:38-0500\n"
+"POT-Creation-Date: 2019-08-22 15:20-0400\n"
"PO-Revision-Date: 2018-10-02 21:14-0000\n"
"Last-Translator: \n"
"Language-Team: \n"
@@ -329,6 +329,14 @@ msgstr ""
msgid "Buffer incorrect size. Should be %d bytes."
msgstr "Buffer de tamanho incorreto. Deve ser %d bytes."
+#: shared-bindings/displayio/Display.c
+msgid "Buffer is not a bytearray."
+msgstr ""
+
+#: shared-bindings/displayio/Display.c
+msgid "Buffer is too small"
+msgstr ""
+
#: ports/nrf/common-hal/audiopwmio/PWMAudioOut.c
#, c-format
msgid "Buffer length %d too big. It must be less than %d"
@@ -517,6 +525,10 @@ msgid "Destination capacity is smaller than destination_length."
msgstr ""
#: shared-bindings/displayio/Display.c
+msgid "Display must have a 16 bit colorspace."
+msgstr ""
+
+#: shared-bindings/displayio/Display.c
msgid "Display rotation must be in 90 degree increments"
msgstr ""
@@ -968,6 +980,10 @@ msgstr "Sem suporte de hardware no pino de clock"
msgid "No hardware support on pin"
msgstr "Nenhum suporte de hardware no pino"
+#: shared-module/touchio/TouchIn.c
+msgid "No pulldown on pin; 1Mohm recommended"
+msgstr ""
+
#: py/moduerrno.c
msgid "No space left on device"
msgstr ""
@@ -1314,9 +1330,6 @@ msgid "Unsupported pull value."
msgstr ""
#: ports/nrf/common-hal/bleio/Characteristic.c
-msgid "Value length required fixed length"
-msgstr ""
-
#: ports/nrf/common-hal/bleio/Descriptor.c
msgid "Value length != required fixed length"
msgstr ""
diff --git a/locale/zh_Latn_pinyin.po b/locale/zh_Latn_pinyin.po
index f3a38cac1..afc013f7a 100644
--- a/locale/zh_Latn_pinyin.po
+++ b/locale/zh_Latn_pinyin.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: circuitpython-cn\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-08-19 21:38-0500\n"
+"POT-Creation-Date: 2019-08-22 15:20-0400\n"
"PO-Revision-Date: 2019-04-13 10:10-0700\n"
"Last-Translator: hexthat\n"
"Language-Team: Chinese Hanyu Pinyin\n"
@@ -330,6 +330,14 @@ msgstr "Liàngdù wúfǎ tiáozhěng"
msgid "Buffer incorrect size. Should be %d bytes."
msgstr "Huǎnchōng qū dàxiǎo bù zhèngquè. Yīnggāi shì %d zì jié."
+#: shared-bindings/displayio/Display.c
+msgid "Buffer is not a bytearray."
+msgstr ""
+
+#: shared-bindings/displayio/Display.c
+msgid "Buffer is too small"
+msgstr ""
+
#: ports/nrf/common-hal/audiopwmio/PWMAudioOut.c
#, c-format
msgid "Buffer length %d too big. It must be less than %d"
@@ -514,6 +522,10 @@ msgid "Destination capacity is smaller than destination_length."
msgstr "Mùbiāo róngliàng xiǎoyú mùdì de_chángdù."
#: shared-bindings/displayio/Display.c
+msgid "Display must have a 16 bit colorspace."
+msgstr ""
+
+#: shared-bindings/displayio/Display.c
msgid "Display rotation must be in 90 degree increments"
msgstr "Xiǎnshì xuánzhuǎn bìxū 90 dù jiā xīn"
@@ -963,6 +975,10 @@ msgstr ""
msgid "No hardware support on pin"
msgstr "Méiyǒu zài yǐn jiǎo shàng de yìngjiàn zhīchí"
+#: shared-module/touchio/TouchIn.c
+msgid "No pulldown on pin; 1Mohm recommended"
+msgstr ""
+
#: py/moduerrno.c
msgid "No space left on device"
msgstr "Shèbèi shàng méiyǒu kònggé"
@@ -1320,9 +1336,6 @@ msgid "Unsupported pull value."
msgstr "Bù zhīchí de lādòng zhí."
#: ports/nrf/common-hal/bleio/Characteristic.c
-msgid "Value length required fixed length"
-msgstr ""
-
#: ports/nrf/common-hal/bleio/Descriptor.c
msgid "Value length != required fixed length"
msgstr ""
diff --git a/ports/atmel-samd/boards/capablerobot_usbhub/mpconfigboard.mk b/ports/atmel-samd/boards/capablerobot_usbhub/mpconfigboard.mk
index 97c8eb863..f390a8681 100644
--- a/ports/atmel-samd/boards/capablerobot_usbhub/mpconfigboard.mk
+++ b/ports/atmel-samd/boards/capablerobot_usbhub/mpconfigboard.mk
@@ -14,5 +14,3 @@ LONGINT_IMPL = MPZ
# No I2S on SAMD51G
CIRCUITPY_AUDIOBUSIO = 0
-# No touch on SAMD51 yet
-CIRCUITPY_TOUCHIO = 0
diff --git a/ports/atmel-samd/boards/cp32-m4/mpconfigboard.mk b/ports/atmel-samd/boards/cp32-m4/mpconfigboard.mk
index 72a191044..86a7719b8 100644
--- a/ports/atmel-samd/boards/cp32-m4/mpconfigboard.mk
+++ b/ports/atmel-samd/boards/cp32-m4/mpconfigboard.mk
@@ -14,5 +14,3 @@ EXTERNAL_FLASH_DEVICES = "W25Q128JV_PM"
CIRCUITPY_PS2IO = 1
# No I2S on SAMD51G.
CIRCUITPY_AUDIOBUSIO = 0
-# No touch on SAMD51 yet.
-CIRCUITPY_TOUCHIO = 0
diff --git a/ports/atmel-samd/boards/datalore_ip_m4/mpconfigboard.mk b/ports/atmel-samd/boards/datalore_ip_m4/mpconfigboard.mk
index 794920fe3..aa5f47d40 100644
--- a/ports/atmel-samd/boards/datalore_ip_m4/mpconfigboard.mk
+++ b/ports/atmel-samd/boards/datalore_ip_m4/mpconfigboard.mk
@@ -15,5 +15,3 @@ LONGINT_IMPL = MPZ
CIRCUITPY_NETWORK = 1
MICROPY_PY_WIZNET5K = 5500
CIRCUITPY_PS2IO = 1
-# No touch on SAMD51 yet
-CIRCUITPY_TOUCHIO = 0
diff --git a/ports/atmel-samd/boards/feather_m4_express/mpconfigboard.mk b/ports/atmel-samd/boards/feather_m4_express/mpconfigboard.mk
index 8169345f5..176ebac82 100644
--- a/ports/atmel-samd/boards/feather_m4_express/mpconfigboard.mk
+++ b/ports/atmel-samd/boards/feather_m4_express/mpconfigboard.mk
@@ -15,5 +15,3 @@ LONGINT_IMPL = MPZ
CIRCUITPY_NETWORK = 1
MICROPY_PY_WIZNET5K = 5500
CIRCUITPY_PS2IO = 1
-# No touch on SAMD51 yet
-CIRCUITPY_TOUCHIO = 0
diff --git a/ports/atmel-samd/boards/grandcentral_m4_express/mpconfigboard.mk b/ports/atmel-samd/boards/grandcentral_m4_express/mpconfigboard.mk
index 13631a736..423761c3f 100644
--- a/ports/atmel-samd/boards/grandcentral_m4_express/mpconfigboard.mk
+++ b/ports/atmel-samd/boards/grandcentral_m4_express/mpconfigboard.mk
@@ -13,5 +13,3 @@ EXTERNAL_FLASH_DEVICES = "W25Q64JV_IQ, GD25Q64C"
LONGINT_IMPL = MPZ
CIRCUITPY_PS2IO = 1
-# No touch on SAMD51 yet
-CIRCUITPY_TOUCHIO = 0
diff --git a/ports/atmel-samd/boards/itsybitsy_m0_express/mpconfigboard.mk b/ports/atmel-samd/boards/itsybitsy_m0_express/mpconfigboard.mk
index e427e9430..fd66f425d 100644
--- a/ports/atmel-samd/boards/itsybitsy_m0_express/mpconfigboard.mk
+++ b/ports/atmel-samd/boards/itsybitsy_m0_express/mpconfigboard.mk
@@ -14,3 +14,6 @@ LONGINT_IMPL = MPZ
CFLAGS_INLINE_LIMIT = 60
SUPEROPT_GC = 0
+
+CIRCUITPY_I2CSLAVE = 0
+CIRCUITPY_RTC = 0
diff --git a/ports/atmel-samd/boards/itsybitsy_m4_express/mpconfigboard.mk b/ports/atmel-samd/boards/itsybitsy_m4_express/mpconfigboard.mk
index 31bb38e20..f53983ef7 100644
--- a/ports/atmel-samd/boards/itsybitsy_m4_express/mpconfigboard.mk
+++ b/ports/atmel-samd/boards/itsybitsy_m4_express/mpconfigboard.mk
@@ -15,5 +15,3 @@ LONGINT_IMPL = MPZ
CIRCUITPY_PS2IO = 1
# No I2S on SAMD51G
CIRCUITPY_AUDIOBUSIO = 0
-# No touch on SAMD51 yet
-CIRCUITPY_TOUCHIO = 0
diff --git a/ports/atmel-samd/boards/kicksat-sprite/mpconfigboard.mk b/ports/atmel-samd/boards/kicksat-sprite/mpconfigboard.mk
index 5871cca2a..706e551c5 100644
--- a/ports/atmel-samd/boards/kicksat-sprite/mpconfigboard.mk
+++ b/ports/atmel-samd/boards/kicksat-sprite/mpconfigboard.mk
@@ -11,8 +11,6 @@ QSPI_FLASH_FILESYSTEM = 0
INTERNAL_FLASH_FILESYSTEM = 1
LONGINT_IMPL = MPZ
-# No touch on SAMD51 yet
-CIRCUITPY_TOUCHIO = 0
# Not needed.
CIRCUITPY_AUDIOBUSIO = 0
CIRCUITPY_DISPLAYIO = 0
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 d7d0c1d6e..98d85ba82 100644
--- a/ports/atmel-samd/boards/metro_m4_airlift_lite/mpconfigboard.mk
+++ b/ports/atmel-samd/boards/metro_m4_airlift_lite/mpconfigboard.mk
@@ -15,5 +15,3 @@ LONGINT_IMPL = MPZ
CIRCUITPY_NETWORK = 1
MICROPY_PY_WIZNET5K = 5500
CIRCUITPY_PS2IO = 1
-# No touch on SAMD51 yet
-CIRCUITPY_TOUCHIO = 0
diff --git a/ports/atmel-samd/boards/metro_m4_express/mpconfigboard.mk b/ports/atmel-samd/boards/metro_m4_express/mpconfigboard.mk
index 829bf749f..68b6f6406 100644
--- a/ports/atmel-samd/boards/metro_m4_express/mpconfigboard.mk
+++ b/ports/atmel-samd/boards/metro_m4_express/mpconfigboard.mk
@@ -15,5 +15,3 @@ LONGINT_IMPL = MPZ
CIRCUITPY_NETWORK = 1
MICROPY_PY_WIZNET5K = 5500
CIRCUITPY_PS2IO = 1
-# No touch on SAMD51 yet
-CIRCUITPY_TOUCHIO = 0
diff --git a/ports/atmel-samd/boards/mini_sam_m4/mpconfigboard.mk b/ports/atmel-samd/boards/mini_sam_m4/mpconfigboard.mk
index a8f47dced..b70b9bbb0 100644
--- a/ports/atmel-samd/boards/mini_sam_m4/mpconfigboard.mk
+++ b/ports/atmel-samd/boards/mini_sam_m4/mpconfigboard.mk
@@ -15,5 +15,3 @@ LONGINT_IMPL = MPZ
CIRCUITPY_PS2IO = 1
# No I2S on SAMD51G
CIRCUITPY_AUDIOBUSIO = 0
-# No touch on SAMD51 yet
-CIRCUITPY_TOUCHIO = 0
diff --git a/ports/atmel-samd/boards/pybadge/mpconfigboard.mk b/ports/atmel-samd/boards/pybadge/mpconfigboard.mk
index b8d10387b..7e2cb6439 100644
--- a/ports/atmel-samd/boards/pybadge/mpconfigboard.mk
+++ b/ports/atmel-samd/boards/pybadge/mpconfigboard.mk
@@ -17,7 +17,5 @@ CIRCUITPY_DISPLAYIO = 1
CIRCUITPY_GAMEPAD = 1
CIRCUITPY_GAMEPADSHIFT = 1
CIRCUITPY_STAGE = 1
-# No touch on SAMD51 yet
-CIRCUITPY_TOUCHIO = 0
FROZEN_MPY_DIRS += $(TOP)/frozen/circuitpython-stage/pybadge
diff --git a/ports/atmel-samd/boards/pybadge_airlift/mpconfigboard.mk b/ports/atmel-samd/boards/pybadge_airlift/mpconfigboard.mk
index 12683e995..7e77b0fea 100644
--- a/ports/atmel-samd/boards/pybadge_airlift/mpconfigboard.mk
+++ b/ports/atmel-samd/boards/pybadge_airlift/mpconfigboard.mk
@@ -17,7 +17,5 @@ CIRCUITPY_DISPLAYIO = 1
CIRCUITPY_GAMEPAD = 1
CIRCUITPY_GAMEPADSHIFT = 1
CIRCUITPY_STAGE = 1
-# No touch on SAMD51 yet
-CIRCUITPY_TOUCHIO = 0
FROZEN_MPY_DIRS += $(TOP)/frozen/circuitpython-stage/pybadge
diff --git a/ports/atmel-samd/boards/pygamer/mpconfigboard.mk b/ports/atmel-samd/boards/pygamer/mpconfigboard.mk
index 69fb14358..0fce468d9 100644
--- a/ports/atmel-samd/boards/pygamer/mpconfigboard.mk
+++ b/ports/atmel-samd/boards/pygamer/mpconfigboard.mk
@@ -17,7 +17,5 @@ CIRCUITPY_DISPLAYIO = 1
CIRCUITPY_GAMEPAD = 1
CIRCUITPY_GAMEPADSHIFT = 1
CIRCUITPY_STAGE = 1
-# No touch on SAMD51 yet
-CIRCUITPY_TOUCHIO = 0
FROZEN_MPY_DIRS += $(TOP)/frozen/circuitpython-stage/pygamer
diff --git a/ports/atmel-samd/boards/pygamer_advance/mpconfigboard.mk b/ports/atmel-samd/boards/pygamer_advance/mpconfigboard.mk
index 1bb2c553d..8711738d4 100644
--- a/ports/atmel-samd/boards/pygamer_advance/mpconfigboard.mk
+++ b/ports/atmel-samd/boards/pygamer_advance/mpconfigboard.mk
@@ -17,7 +17,5 @@ CIRCUITPY_DISPLAYIO = 1
CIRCUITPY_GAMEPAD = 1
CIRCUITPY_GAMEPADSHIFT = 1
CIRCUITPY_STAGE = 1
-# No touch on SAMD51 yet
-CIRCUITPY_TOUCHIO = 0
FROZEN_MPY_DIRS += $(TOP)/frozen/circuitpython-stage/pybadge
diff --git a/ports/atmel-samd/boards/pyportal/mpconfigboard.mk b/ports/atmel-samd/boards/pyportal/mpconfigboard.mk
index 996b17b3b..f763c74fa 100644
--- a/ports/atmel-samd/boards/pyportal/mpconfigboard.mk
+++ b/ports/atmel-samd/boards/pyportal/mpconfigboard.mk
@@ -11,6 +11,3 @@ QSPI_FLASH_FILESYSTEM = 1
EXTERNAL_FLASH_DEVICE_COUNT = 2
EXTERNAL_FLASH_DEVICES = "W25Q64JV_IQ, GD25Q64C"
LONGINT_IMPL = MPZ
-
-# No touch on SAMD51 yet
-CIRCUITPY_TOUCHIO = 0
diff --git a/ports/atmel-samd/boards/pyportal_titano/mpconfigboard.mk b/ports/atmel-samd/boards/pyportal_titano/mpconfigboard.mk
index 0ca438311..58b363779 100644
--- a/ports/atmel-samd/boards/pyportal_titano/mpconfigboard.mk
+++ b/ports/atmel-samd/boards/pyportal_titano/mpconfigboard.mk
@@ -11,6 +11,3 @@ QSPI_FLASH_FILESYSTEM = 1
EXTERNAL_FLASH_DEVICE_COUNT = 2
EXTERNAL_FLASH_DEVICES = "W25Q64JV_IQ, GD25Q64C"
LONGINT_IMPL = MPZ
-
-# No touch on SAMD51 yet
-CIRCUITPY_TOUCHIO = 0
diff --git a/ports/atmel-samd/boards/robohatmm1_m4/mpconfigboard.mk b/ports/atmel-samd/boards/robohatmm1_m4/mpconfigboard.mk
index afd15ad0a..f391bf625 100644
--- a/ports/atmel-samd/boards/robohatmm1_m4/mpconfigboard.mk
+++ b/ports/atmel-samd/boards/robohatmm1_m4/mpconfigboard.mk
@@ -17,8 +17,6 @@ LONGINT_IMPL = MPZ
CIRCUITPY_PS2IO = 1
# No I2S on SAMD51G
CIRCUITPY_AUDIOBUSIO = 0
-# No touch on SAMD51 yet
-CIRCUITPY_TOUCHIO = 0
# Make room for more stuff
CIRCUITPY_DISPLAYIO = 0
CIRCUITPY_FREQUENCYIO = 0
@@ -28,4 +26,3 @@ FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_BusDevice
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_NeoPixel
#FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_INA219
#FROZEN_MPY_DIRS += $(TOP)/frozen/RoboticsMasters_CircuitPython_MPU9250
-
diff --git a/ports/atmel-samd/boards/sam32/mpconfigboard.mk b/ports/atmel-samd/boards/sam32/mpconfigboard.mk
index ca1e11f01..12884a9cc 100644
--- a/ports/atmel-samd/boards/sam32/mpconfigboard.mk
+++ b/ports/atmel-samd/boards/sam32/mpconfigboard.mk
@@ -9,6 +9,3 @@ CHIP_FAMILY = samd51
INTERNAL_FLASH_FILESYSTEM = 1
LONGINT_IMPL = MPZ
-
-# No touch on SAMD51 yet
-CIRCUITPY_TOUCHIO = 0
diff --git a/ports/atmel-samd/boards/trellis_m4_express/mpconfigboard.mk b/ports/atmel-samd/boards/trellis_m4_express/mpconfigboard.mk
index 6d108e649..f1fb49901 100644
--- a/ports/atmel-samd/boards/trellis_m4_express/mpconfigboard.mk
+++ b/ports/atmel-samd/boards/trellis_m4_express/mpconfigboard.mk
@@ -15,5 +15,3 @@ LONGINT_IMPL = MPZ
CIRCUITPY_PS2IO = 1
# No I2S on SAMD51G
CIRCUITPY_AUDIOBUSIO = 0
-# No touch on SAMD51 yet
-CIRCUITPY_TOUCHIO = 0
diff --git a/ports/atmel-samd/common-hal/rotaryio/IncrementalEncoder.c b/ports/atmel-samd/common-hal/rotaryio/IncrementalEncoder.c
index e3bcf395b..0922718f9 100644
--- a/ports/atmel-samd/common-hal/rotaryio/IncrementalEncoder.c
+++ b/ports/atmel-samd/common-hal/rotaryio/IncrementalEncoder.c
@@ -35,7 +35,7 @@
void common_hal_rotaryio_incrementalencoder_construct(rotaryio_incrementalencoder_obj_t* self,
const mcu_pin_obj_t* pin_a, const mcu_pin_obj_t* pin_b) {
- if (!pin_a->has_extint || !pin_a->has_extint) {
+ if (!pin_a->has_extint || !pin_b->has_extint) {
mp_raise_RuntimeError(translate("Both pins must support hardware interrupts"));
}
diff --git a/ports/atmel-samd/common-hal/touchio/TouchIn.c b/ports/atmel-samd/common-hal/touchio/TouchIn.c
index 71886089c..908d8d722 100644
--- a/ports/atmel-samd/common-hal/touchio/TouchIn.c
+++ b/ports/atmel-samd/common-hal/touchio/TouchIn.c
@@ -34,9 +34,10 @@
#include "shared-bindings/touchio/TouchIn.h"
#include "supervisor/shared/translate.h"
+// Native touchio only exists for SAMD21
#ifdef SAMD21
+
#include "hpl/pm/hpl_pm_base.h"
-#endif
#include "samd/clocks.h"
#include "samd/pins.h"
@@ -65,7 +66,6 @@ void common_hal_touchio_touchin_construct(touchio_touchin_obj_t* self,
claim_pin(pin);
// Turn on the PTC if its not in use. We won't turn it off until reset.
- #ifdef SAMD21
if ((( Ptc *) PTC)->CTRLA.bit.ENABLE == 0) {
// We run the PTC at 8mhz so divide the 48mhz clock by 6.
uint8_t gclk = find_free_gclk(6);
@@ -94,7 +94,6 @@ void common_hal_touchio_touchin_construct(touchio_touchin_obj_t* self,
// but for touches using fruit or other objects, the difference is much less.
self->threshold = get_raw_reading(self) + 100;
- #endif
}
bool common_hal_touchio_touchin_deinited(touchio_touchin_obj_t* self) {
@@ -139,3 +138,5 @@ uint16_t common_hal_touchio_touchin_get_threshold(touchio_touchin_obj_t *self) {
void common_hal_touchio_touchin_set_threshold(touchio_touchin_obj_t *self, uint16_t new_threshold) {
self->threshold = new_threshold;
}
+
+#endif // SAMD21
diff --git a/ports/atmel-samd/common-hal/touchio/TouchIn.h b/ports/atmel-samd/common-hal/touchio/TouchIn.h
index ffe8a6c01..85550b8a3 100644
--- a/ports/atmel-samd/common-hal/touchio/TouchIn.h
+++ b/ports/atmel-samd/common-hal/touchio/TouchIn.h
@@ -27,6 +27,9 @@
#ifndef MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_TOUCHIO_TOUCHIN_H
#define MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_TOUCHIO_TOUCHIN_H
+// Native touchio only exists for SAMD21
+#ifdef SAMD21
+
#include "common-hal/microcontroller/Pin.h"
#include "samd21_ptc_component.h"
@@ -42,4 +45,6 @@ typedef struct {
void touchin_reset(void);
+#endif // SAMD21
+
#endif // MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_TOUCHIO_TOUCHIN_H
diff --git a/ports/atmel-samd/mpconfigport.mk b/ports/atmel-samd/mpconfigport.mk
index 4ddd097f0..af33edb0e 100644
--- a/ports/atmel-samd/mpconfigport.mk
+++ b/ports/atmel-samd/mpconfigport.mk
@@ -18,11 +18,13 @@ endif
ifeq ($(CHIP_FAMILY),samd21)
# frequencyio not yet verified as working on SAMD21.
CIRCUITPY_FREQUENCYIO = 0
+CIRCUITPY_TOUCHIO_USE_NATIVE = 1
endif
# Put samd51-only choices here.
ifeq ($(CHIP_FAMILY),samd51)
CIRCUITPY_SAMD = 1
+CIRCUITPY_TOUCHIO_USE_NATIVE = 0
endif
INTERNAL_LIBM = 1
diff --git a/ports/atmel-samd/supervisor/port.c b/ports/atmel-samd/supervisor/port.c
index 37360deb0..512fd8eb8 100644
--- a/ports/atmel-samd/supervisor/port.c
+++ b/ports/atmel-samd/supervisor/port.c
@@ -54,7 +54,11 @@
#include "common-hal/pulseio/PWMOut.h"
#include "common-hal/ps2io/Ps2.h"
#include "common-hal/rtc/RTC.h"
+
+#if CIRCUITPY_TOUCHIO_USE_NATIVE
#include "common-hal/touchio/TouchIn.h"
+#endif
+
#include "samd/cache.h"
#include "samd/clocks.h"
#include "samd/events.h"
@@ -211,7 +215,7 @@ void reset_port(void) {
//pdmin_reset();
#endif
-#if CIRCUITPY_TOUCHIO
+#if CIRCUITPY_TOUCHIO && CIRCUITPY_TOUCHIO_USE_NATIVE
touchin_reset();
#endif
eic_reset();
diff --git a/ports/nrf/Makefile b/ports/nrf/Makefile
index fad127514..9a461f9d8 100755
--- a/ports/nrf/Makefile
+++ b/ports/nrf/Makefile
@@ -184,8 +184,7 @@ SRC_C += \
# USB source files for nrf52840
ifeq ($(MCU_SUB_VARIANT),nrf52840)
SRC_C += \
- lib/tinyusb/src/portable/nordic/nrf5x/dcd_nrf5x.c \
- lib/tinyusb/src/portable/nordic/nrf5x/hal_nrf5x.c
+ lib/tinyusb/src/portable/nordic/nrf5x/dcd_nrf5x.c
endif
SRC_COMMON_HAL_EXPANDED = $(addprefix shared-bindings/, $(SRC_COMMON_HAL)) \
diff --git a/ports/nrf/boards/circuitplayground_bluefruit/mpconfigboard.h b/ports/nrf/boards/circuitplayground_bluefruit/mpconfigboard.h
index 04c7e8d60..1e55cd026 100644
--- a/ports/nrf/boards/circuitplayground_bluefruit/mpconfigboard.h
+++ b/ports/nrf/boards/circuitplayground_bluefruit/mpconfigboard.h
@@ -34,10 +34,11 @@
#define FLASH_SIZE (0x100000)
#define FLASH_PAGE_SIZE (4096)
-#define MICROPY_HW_NEOPIXEL (&pin_P0_13)
-
#define MICROPY_HW_LED_STATUS (&pin_P1_14)
+// Unusually, board does not have a 32 kHz xtal. Nearly all boards do.
+#define BOARD_HAS_32KHZ_XTAL (0)
+
#if QSPI_FLASH_FILESYSTEM
#define MICROPY_QSPI_DATA0 NRF_GPIO_PIN_MAP(0, 21)
#define MICROPY_QSPI_DATA1 NRF_GPIO_PIN_MAP(0, 23)
@@ -60,8 +61,6 @@
#define BOARD_FLASH_SIZE (FLASH_SIZE - 0x4000 - CIRCUITPY_INTERNAL_NVM_SIZE)
-#define BOARD_HAS_CRYSTAL 1
-
#define DEFAULT_I2C_BUS_SCL (&pin_P0_04)
#define DEFAULT_I2C_BUS_SDA (&pin_P0_05)
diff --git a/ports/nrf/common-hal/bleio/Adapter.c b/ports/nrf/common-hal/bleio/Adapter.c
index 936dfcb9b..15ae8840b 100644
--- a/ports/nrf/common-hal/bleio/Adapter.c
+++ b/ports/nrf/common-hal/bleio/Adapter.c
@@ -47,8 +47,17 @@ STATIC void softdevice_assert_handler(uint32_t id, uint32_t pc, uint32_t info) {
STATIC uint32_t ble_stack_enable(void) {
nrf_clock_lf_cfg_t clock_config = {
- .source = NRF_CLOCK_LF_SRC_XTAL,
- .accuracy = NRF_CLOCK_LF_ACCURACY_20_PPM
+#if BOARD_HAS_32KHZ_XTAL
+ .source = NRF_CLOCK_LF_SRC_XTAL,
+ .rc_ctiv = 0,
+ .rc_temp_ctiv = 0,
+ .accuracy = NRF_CLOCK_LF_ACCURACY_20_PPM,
+#else
+ .source = NRF_CLOCK_LF_SRC_RC,
+ .rc_ctiv = 16,
+ .rc_temp_ctiv = 2,
+ .accuracy = NRF_CLOCK_LF_ACCURACY_250_PPM,
+#endif
};
uint32_t err_code = sd_softdevice_enable(&clock_config, softdevice_assert_handler);
diff --git a/ports/nrf/common-hal/bleio/Characteristic.c b/ports/nrf/common-hal/bleio/Characteristic.c
index 45e8d2495..604d24d73 100644
--- a/ports/nrf/common-hal/bleio/Characteristic.c
+++ b/ports/nrf/common-hal/bleio/Characteristic.c
@@ -183,7 +183,7 @@ void common_hal_bleio_characteristic_set_value(bleio_characteristic_obj_t *self,
(self->props & CHAR_PROP_WRITE_NO_RESPONSE));
} else {
if (self->fixed_length && bufinfo->len != self->max_length) {
- mp_raise_ValueError(translate("Value length required fixed length"));
+ mp_raise_ValueError(translate("Value length != required fixed length"));
}
if (bufinfo->len > self->max_length) {
mp_raise_ValueError(translate("Value length > max_length"));
diff --git a/ports/nrf/mpconfigport.h b/ports/nrf/mpconfigport.h
index 5ed521e85..0b755a156 100644
--- a/ports/nrf/mpconfigport.h
+++ b/ports/nrf/mpconfigport.h
@@ -53,6 +53,11 @@
#include "py/circuitpy_mpconfig.h"
+#ifndef BOARD_HAS_32KHZ_XTAL
+// Assume crystal is present, which is the most common case.
+#define BOARD_HAS_32KHZ_XTAL (1)
+#endif
+
#define MICROPY_PORT_ROOT_POINTERS \
CIRCUITPY_COMMON_ROOT_POINTERS \
ble_drv_evt_handler_entry_t* ble_drv_evt_handler_entries; \
diff --git a/ports/nrf/peripherals/nrf/clocks.c b/ports/nrf/peripherals/nrf/clocks.c
index 4acb878db..269365cc9 100644
--- a/ports/nrf/peripherals/nrf/clocks.c
+++ b/ports/nrf/peripherals/nrf/clocks.c
@@ -26,11 +26,15 @@
*/
#include "nrfx.h"
+#include "mpconfigport.h"
void nrf_peripherals_clocks_init(void) {
- // Set low-frequency clock source to be crystal. If there's a crystalless board, this will need to be
- // generalized.
+
+#if BOARD_HAS_32KHZ_XTAL
NRF_CLOCK->LFCLKSRC = (uint32_t)((CLOCK_LFCLKSRC_SRC_Xtal << CLOCK_LFCLKSRC_SRC_Pos) & CLOCK_LFCLKSRC_SRC_Msk);
+#else
+ NRF_CLOCK->LFCLKSRC = (uint32_t)((CLOCK_LFCLKSRC_SRC_RC << CLOCK_LFCLKSRC_SRC_Pos) & CLOCK_LFCLKSRC_SRC_Msk);
+#endif
NRF_CLOCK->TASKS_LFCLKSTART = 1UL;
// Wait for clocks to start.
diff --git a/py/circuitpy_defns.mk b/py/circuitpy_defns.mk
index fa005ef73..675fe1aec 100644
--- a/py/circuitpy_defns.mk
+++ b/py/circuitpy_defns.mk
@@ -217,9 +217,8 @@ ifeq ($(CIRCUITPY_PEW),1)
SRC_PATTERNS += _pew/%
endif
-# All possible sources are listed here, and are filtered by SRC_PATTERNS.
-SRC_COMMON_HAL = \
-$(filter $(SRC_PATTERNS), \
+# All possible sources are listed here, and are filtered by SRC_PATTERNS in SRC_COMMON_HAL
+SRC_COMMON_HAL_ALL = \
analogio/AnalogIn.c \
analogio/AnalogOut.c \
analogio/__init__.c \
@@ -272,10 +271,9 @@ $(filter $(SRC_PATTERNS), \
rtc/__init__.c \
supervisor/Runtime.c \
supervisor/__init__.c \
- time/__init__.c \
- touchio/TouchIn.c \
- touchio/__init__.c \
-)
+ time/__init__.c
+
+SRC_COMMON_HAL = $(filter $(SRC_PATTERNS), $(SRC_COMMON_HAL_ALL))
# These don't have corresponding files in each port but are still located in
# shared-bindings to make it clear what the contents of the modules are.
@@ -298,9 +296,7 @@ SRC_BINDINGS_ENUMS += \
help.c \
util.c
-# All possible sources are listed here, and are filtered by SRC_PATTERNS.
-SRC_SHARED_MODULE = \
-$(filter $(SRC_PATTERNS), \
+SRC_SHARED_MODULE_ALL = \
_pixelbuf/PixelBuf.c \
_pixelbuf/__init__.c \
_stage/Layer.c \
@@ -350,8 +346,23 @@ $(filter $(SRC_PATTERNS), \
uheap/__init__.c \
ustack/__init__.c \
_pew/__init__.c \
- _pew/PewPew.c \
-)
+ _pew/PewPew.c
+
+# All possible sources are listed here, and are filtered by SRC_PATTERNS.
+SRC_SHARED_MODULE = $(filter $(SRC_PATTERNS), $(SRC_SHARED_MODULE_ALL))
+
+# Use the native touchio if requested. This flag is set conditionally in, say, mpconfigport.h.
+# The presence of common-hal/touchio/* # does not imply it's available for all chips in a port,
+# so there is an explicit flag. For example, SAMD21 touchio is native, but SAMD51 is not.
+ifeq ($(CIRCUITPY_TOUCHIO_USE_NATIVE),1)
+SRC_COMMON_HAL_ALL += \
+ touchio/TouchIn.c \
+ touchio/__init__.c
+else
+SRC_SHARED_MODULE_ALL += \
+ touchio/TouchIn.c \
+ touchio/__init__.c
+endif
ifeq ($(INTERNAL_LIBM),1)
SRC_LIBM = \
diff --git a/py/circuitpy_mpconfig.mk b/py/circuitpy_mpconfig.mk
index a408cd7ac..949cd1d18 100644
--- a/py/circuitpy_mpconfig.mk
+++ b/py/circuitpy_mpconfig.mk
@@ -45,10 +45,10 @@ endif
# Use for for early stage or highly restricted ports
ifndef CIRCUITPY_DEFAULT_BUILD
ifeq ($(CIRCUITPY_MINIMAL_BUILD),1)
- CIRCUITPY_FULL_BUILD = 0
- CIRCUITPY_DEFAULT_BUILD = 0
+ CIRCUITPY_FULL_BUILD = 0
+ CIRCUITPY_DEFAULT_BUILD = 0
else
- CIRCUITPY_DEFAULT_BUILD = 1
+ CIRCUITPY_DEFAULT_BUILD = 1
endif
endif
@@ -74,6 +74,12 @@ CIRCUITPY_AUDIOIO = $(CIRCUITPY_FULL_BUILD)
endif
CFLAGS += -DCIRCUITPY_AUDIOIO=$(CIRCUITPY_AUDIOIO)
+ifndef CIRCUITPY_AUDIOIO_COMPAT
+CIRCUITPY_AUDIOIO_COMPAT = $(CIRCUITPY_AUDIOIO)
+endif
+CFLAGS += -DCIRCUITPY_AUDIOIO_COMPAT=$(CIRCUITPY_AUDIOIO_COMPAT)
+
+
ifndef CIRCUITPY_AUDIOPWMIO
CIRCUITPY_AUDIOPWMIO = 0
endif
@@ -235,6 +241,12 @@ CIRCUITPY_TIME = $(CIRCUITPY_DEFAULT_BUILD)
endif
CFLAGS += -DCIRCUITPY_TIME=$(CIRCUITPY_TIME)
+# touchio might be native or generic. See circuitpy_defns.mk.
+ifndef CIRCUITPY_TOUCHIO_USE_NATIVE
+CIRCUITPY_TOUCHIO_USE_NATIVE = 0
+endif
+CFLAGS += -DCIRCUITPY_TOUCHIO_USE_NATIVE=$(CIRCUITPY_TOUCHIO_USE_NATIVE)
+
ifndef CIRCUITPY_TOUCHIO
CIRCUITPY_TOUCHIO = $(CIRCUITPY_DEFAULT_BUILD)
endif
diff --git a/shared-bindings/audioio/__init__.c b/shared-bindings/audioio/__init__.c
index 3fecf2708..bd771dda2 100644
--- a/shared-bindings/audioio/__init__.c
+++ b/shared-bindings/audioio/__init__.c
@@ -33,6 +33,12 @@
#include "shared-bindings/audioio/__init__.h"
#include "shared-bindings/audioio/AudioOut.h"
+#ifdef CIRCUITPY_AUDIOIO_COMPAT
+#include "shared-bindings/audiocore/Mixer.h"
+#include "shared-bindings/audiocore/RawSample.h"
+#include "shared-bindings/audiocore/WaveFile.h"
+#endif
+
//| :mod:`audioio` --- Support for audio input and output
//| ======================================================
//|
@@ -57,10 +63,19 @@
//| Since CircuitPython 5, `Mixer`, `RawSample` and `WaveFile` are moved
//| to :mod:`audiocore`.
//|
+//| For compatibility with CircuitPython 4.x, some builds allow the items in
+//| `audiocore` to be imported from `audioio`. This will be removed for all
+//| boards in a future build of CicuitPython.
+//|
STATIC const mp_rom_map_elem_t audioio_module_globals_table[] = {
{ MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_audioio) },
{ MP_ROM_QSTR(MP_QSTR_AudioOut), MP_ROM_PTR(&audioio_audioout_type) },
+#ifdef CIRCUITPY_AUDIOIO_COMPAT
+ { MP_ROM_QSTR(MP_QSTR_Mixer), MP_ROM_PTR(&audioio_mixer_type) },
+ { MP_ROM_QSTR(MP_QSTR_RawSample), MP_ROM_PTR(&audioio_rawsample_type) },
+ { MP_ROM_QSTR(MP_QSTR_WaveFile), MP_ROM_PTR(&audioio_wavefile_type) },
+#endif
};
STATIC MP_DEFINE_CONST_DICT(audioio_module_globals, audioio_module_globals_table);
diff --git a/shared-bindings/displayio/Display.c b/shared-bindings/displayio/Display.c
index 9cb4d6e74..0c48b0cc5 100644
--- a/shared-bindings/displayio/Display.c
+++ b/shared-bindings/displayio/Display.c
@@ -337,6 +337,23 @@ const mp_obj_property_t displayio_display_height_obj = {
(mp_obj_t)&mp_const_none_obj},
};
+//| .. attribute:: rotation
+//|
+//| The rotation of the display as an int in degrees.
+//|
+STATIC mp_obj_t displayio_display_obj_get_rotation(mp_obj_t self_in) {
+ displayio_display_obj_t *self = native_display(self_in);
+ return MP_OBJ_NEW_SMALL_INT(common_hal_displayio_display_get_rotation(self));
+}
+MP_DEFINE_CONST_FUN_OBJ_1(displayio_display_get_rotation_obj, displayio_display_obj_get_rotation);
+
+const mp_obj_property_t displayio_display_rotation_obj = {
+ .base.type = &mp_type_property,
+ .proxy = {(mp_obj_t)&displayio_display_get_rotation_obj,
+ (mp_obj_t)&mp_const_none_obj,
+ (mp_obj_t)&mp_const_none_obj},
+};
+
//| .. attribute:: bus
//|
//| The bus being used by the display
@@ -356,16 +373,81 @@ const mp_obj_property_t displayio_display_bus_obj = {
};
+//| .. method:: fill_row(y, buffer)
+//|
+//| Extract the pixels from a single row
+//|
+//| :param int y: The top edge of the area
+//| :param bytearray buffer: The buffer in which to place the pixel data
+STATIC mp_obj_t displayio_display_obj_fill_row(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
+ enum { ARG_y, ARG_buffer };
+ static const mp_arg_t allowed_args[] = {
+ { MP_QSTR_y, MP_ARG_INT | MP_ARG_REQUIRED, {.u_int = -1} },
+ { MP_QSTR_buffer, MP_ARG_OBJ | MP_ARG_REQUIRED, {} },
+ };
+ mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)];
+ mp_arg_parse_all(n_args - 1, pos_args + 1, kw_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args);
+ displayio_display_obj_t *self = native_display(pos_args[0]);
+ mp_int_t y = args[ARG_y].u_int;
+ mp_obj_t *result = args[ARG_buffer].u_obj;
+
+ mp_buffer_info_t bufinfo;
+ mp_get_buffer_raise(result, &bufinfo, MP_BUFFER_WRITE);
+
+ if (bufinfo.typecode != BYTEARRAY_TYPECODE) {
+ mp_raise_ValueError(translate("Buffer is not a bytearray."));
+ }
+ if (self->colorspace.depth != 16) {
+ mp_raise_ValueError(translate("Display must have a 16 bit colorspace."));
+ }
+
+ displayio_area_t area = {
+ .x1 = 0,
+ .y1 = y,
+ .x2 = self->width,
+ .y2 = y + 1
+ };
+ uint8_t pixels_per_word = (sizeof(uint32_t) * 8) / self->colorspace.depth;
+ uint16_t buffer_size = self->width / pixels_per_word;
+ uint16_t pixels_per_buffer = displayio_area_size(&area);
+ if (pixels_per_buffer % pixels_per_word) {
+ buffer_size += 1;
+ }
+
+ uint32_t *result_buffer = bufinfo.buf;
+ size_t result_buffer_size = bufinfo.len;
+
+ if (result_buffer_size >= (buffer_size * 4)) {
+ volatile uint32_t mask_length = (pixels_per_buffer / 32) + 1;
+ uint32_t mask[mask_length];
+
+ for (uint16_t k = 0; k < mask_length; k++) {
+ mask[k] = 0x00000000;
+ }
+
+ displayio_display_fill_area(self, &area, mask, result_buffer);
+ return result;
+ } else {
+ mp_raise_ValueError(translate("Buffer is too small"));
+ }
+}
+MP_DEFINE_CONST_FUN_OBJ_KW(displayio_display_fill_row_obj, 1, displayio_display_obj_fill_row);
+
+
+
+
STATIC const mp_rom_map_elem_t displayio_display_locals_dict_table[] = {
{ MP_ROM_QSTR(MP_QSTR_show), MP_ROM_PTR(&displayio_display_show_obj) },
{ MP_ROM_QSTR(MP_QSTR_refresh_soon), MP_ROM_PTR(&displayio_display_refresh_soon_obj) },
{ MP_ROM_QSTR(MP_QSTR_wait_for_frame), MP_ROM_PTR(&displayio_display_wait_for_frame_obj) },
+ { MP_ROM_QSTR(MP_QSTR_fill_row), MP_ROM_PTR(&displayio_display_fill_row_obj) },
{ MP_ROM_QSTR(MP_QSTR_brightness), MP_ROM_PTR(&displayio_display_brightness_obj) },
{ MP_ROM_QSTR(MP_QSTR_auto_brightness), MP_ROM_PTR(&displayio_display_auto_brightness_obj) },
{ MP_ROM_QSTR(MP_QSTR_width), MP_ROM_PTR(&displayio_display_width_obj) },
{ MP_ROM_QSTR(MP_QSTR_height), MP_ROM_PTR(&displayio_display_height_obj) },
+ { MP_ROM_QSTR(MP_QSTR_rotation), MP_ROM_PTR(&displayio_display_rotation_obj) },
{ MP_ROM_QSTR(MP_QSTR_bus), MP_ROM_PTR(&displayio_display_bus_obj) },
};
STATIC MP_DEFINE_CONST_DICT(displayio_display_locals_dict, displayio_display_locals_dict_table);
diff --git a/shared-bindings/displayio/Display.h b/shared-bindings/displayio/Display.h
index a8938bbcd..e871cfc5c 100644
--- a/shared-bindings/displayio/Display.h
+++ b/shared-bindings/displayio/Display.h
@@ -69,6 +69,7 @@ void common_hal_displayio_display_set_auto_brightness(displayio_display_obj_t* s
uint16_t common_hal_displayio_display_get_width(displayio_display_obj_t* self);
uint16_t common_hal_displayio_display_get_height(displayio_display_obj_t* self);
+uint16_t common_hal_displayio_display_get_rotation(displayio_display_obj_t* self);
mp_float_t common_hal_displayio_display_get_brightness(displayio_display_obj_t* self);
bool common_hal_displayio_display_set_brightness(displayio_display_obj_t* self, mp_float_t brightness);
diff --git a/shared-bindings/touchio/TouchIn.c b/shared-bindings/touchio/TouchIn.c
index 78fceef41..33d369c74 100644
--- a/shared-bindings/touchio/TouchIn.c
+++ b/shared-bindings/touchio/TouchIn.c
@@ -68,10 +68,11 @@ STATIC mp_obj_t touchio_touchin_make_new(const mp_obj_type_t *type,
// 1st argument is the pin
mp_obj_t pin_obj = args[0];
assert_pin(pin_obj, false);
+ const mcu_pin_obj_t *pin = MP_OBJ_TO_PTR(pin_obj);
+ assert_pin_free(pin);
touchio_touchin_obj_t *self = m_new_obj(touchio_touchin_obj_t);
self->base.type = &touchio_touchin_type;
- const mcu_pin_obj_t *pin = MP_OBJ_TO_PTR(pin_obj);
common_hal_touchio_touchin_construct(self, pin);
return (mp_obj_t) self;
diff --git a/shared-bindings/touchio/TouchIn.h b/shared-bindings/touchio/TouchIn.h
index 2e5c51607..e04e79c0b 100644
--- a/shared-bindings/touchio/TouchIn.h
+++ b/shared-bindings/touchio/TouchIn.h
@@ -28,7 +28,12 @@
#define MICROPY_INCLUDED_SHARED_BINDINGS_TOUCHIO_TOUCHIN_H
#include "common-hal/microcontroller/Pin.h"
+
+#if CIRCUITPY_TOUCHIO_USE_NATIVE
#include "common-hal/touchio/TouchIn.h"
+#else
+#include "shared-module/touchio/TouchIn.h"
+#endif
extern const mp_obj_type_t touchio_touchin_type;
diff --git a/shared-module/displayio/Display.c b/shared-module/displayio/Display.c
index c23c66b8b..d11813b8c 100644
--- a/shared-module/displayio/Display.c
+++ b/shared-module/displayio/Display.c
@@ -119,7 +119,7 @@ void common_hal_displayio_display_construct(displayio_display_obj_t* self,
self->width = width;
self->height = height;
- rotation = rotation % 360;
+ self->rotation = rotation % 360;
self->transform.x = 0;
self->transform.y = 0;
self->transform.scale = 1;
@@ -257,6 +257,10 @@ uint16_t common_hal_displayio_display_get_height(displayio_display_obj_t* self){
return self->height;
}
+uint16_t common_hal_displayio_display_get_rotation(displayio_display_obj_t* self){
+ return self->rotation;
+}
+
void common_hal_displayio_display_set_auto_brightness(displayio_display_obj_t* self, bool auto_brightness) {
self->auto_brightness = auto_brightness;
}
diff --git a/shared-module/displayio/Display.h b/shared-module/displayio/Display.h
index 96d1c06d5..74ae175b1 100644
--- a/shared-module/displayio/Display.h
+++ b/shared-module/displayio/Display.h
@@ -55,6 +55,7 @@ typedef struct {
mp_float_t current_brightness;
uint16_t width;
uint16_t height;
+ uint16_t rotation;
_displayio_colorspace_t colorspace;
int16_t colstart;
int16_t rowstart;
diff --git a/ports/nrf/common-hal/touchio/TouchIn.c b/shared-module/touchio/TouchIn.c
index ba50b17b0..88d12b8b8 100644
--- a/ports/nrf/common-hal/touchio/TouchIn.c
+++ b/shared-module/touchio/TouchIn.c
@@ -28,15 +28,9 @@
#include <string.h>
#include <stdio.h>
-#include "py/nlr.h"
-#include "py/mperrno.h"
#include "py/runtime.h"
-#include "py/binary.h"
#include "py/mphal.h"
#include "shared-bindings/touchio/TouchIn.h"
-#include "supervisor/shared/translate.h"
-
-#include "nrf.h"
// This is a capacitive touch sensing routine using a single digital
// pin. The pin should be connected to the sensing pad, and to ground
@@ -57,15 +51,14 @@ static uint16_t get_raw_reading(touchio_touchin_obj_t *self) {
for (uint16_t i = 0; i < N_SAMPLES; i++) {
// set pad to digital output high for 10us to charge it
- nrf_gpio_cfg_output(self->pin->number);
- nrf_gpio_pin_set(self->pin->number);
+ common_hal_digitalio_digitalinout_switch_to_output(self->digitalinout, true, DRIVE_MODE_PUSH_PULL);
mp_hal_delay_us(10);
// set pad back to an input and take some samples
- nrf_gpio_cfg_input(self->pin->number, NRF_GPIO_PIN_NOPULL);
+ common_hal_digitalio_digitalinout_switch_to_input(self->digitalinout, PULL_NONE);
- while(nrf_gpio_pin_read(self->pin->number)) {
+ while(common_hal_digitalio_digitalinout_get_value(self->digitalinout)) {
if (ticks >= TIMEOUT_TICKS) return TIMEOUT_TICKS;
ticks++;
}
@@ -73,16 +66,22 @@ static uint16_t get_raw_reading(touchio_touchin_obj_t *self) {
return ticks;
}
-void common_hal_touchio_touchin_construct(touchio_touchin_obj_t* self,
- const mcu_pin_obj_t *pin) {
- self->pin = pin;
+void common_hal_touchio_touchin_construct(touchio_touchin_obj_t* self, const mcu_pin_obj_t *pin) {
claim_pin(pin);
+ self->digitalinout = m_new_obj(digitalio_digitalinout_obj_t);
+ self->digitalinout->base.type = &digitalio_digitalinout_type;
+
+ common_hal_digitalio_digitalinout_construct(self->digitalinout, pin);
- self->threshold = get_raw_reading(self) * 1.05 + 100;
+ uint16_t raw_reading = get_raw_reading(self);
+ if (raw_reading == TIMEOUT_TICKS) {
+ mp_raise_ValueError(translate("No pulldown on pin; 1Mohm recommended"));
+ }
+ self->threshold = raw_reading * 1.05 + 100;
}
bool common_hal_touchio_touchin_deinited(touchio_touchin_obj_t* self) {
- return self->pin == NULL;
+ return self->digitalinout == MP_OBJ_NULL;
}
void common_hal_touchio_touchin_deinit(touchio_touchin_obj_t* self) {
@@ -90,8 +89,8 @@ void common_hal_touchio_touchin_deinit(touchio_touchin_obj_t* self) {
return;
}
- reset_pin_number(self->pin->number);
- self->pin = NULL;
+ common_hal_digitalio_digitalinout_deinit(self->digitalinout);
+ self->digitalinout = MP_OBJ_NULL;
}
void touchin_reset() {
diff --git a/ports/nrf/common-hal/touchio/TouchIn.h b/shared-module/touchio/TouchIn.h
index 121580eac..8ff6fda8f 100644
--- a/ports/nrf/common-hal/touchio/TouchIn.h
+++ b/shared-module/touchio/TouchIn.h
@@ -25,19 +25,20 @@
* THE SOFTWARE.
*/
-#ifndef MICROPY_INCLUDED_NRF_COMMON_HAL_TOUCHIO_TOUCHIN_H
-#define MICROPY_INCLUDED_NRF_COMMON_HAL_TOUCHIO_TOUCHIN_H
+#ifndef MICROPY_INCLUDED_SHARED_MODULE_TOUCHIO_TOUCHIN_H
+#define MICROPY_INCLUDED_SHARED_MODULE_TOUCHIO_TOUCHIN_H
#include "common-hal/microcontroller/Pin.h"
+#include "shared-bindings/digitalio/DigitalInOut.h"
#include "py/obj.h"
typedef struct {
mp_obj_base_t base;
- const mcu_pin_obj_t *pin;
+ digitalio_digitalinout_obj_t *digitalinout;
uint16_t threshold;
} touchio_touchin_obj_t;
void touchin_reset(void);
-#endif // MICROPY_INCLUDED_NRF_COMMON_HAL_TOUCHIO_TOUCHIN_H
+#endif // MICROPY_INCLUDED_SHARED_MODULE_TOUCHIO_TOUCHIN_H
diff --git a/ports/nrf/common-hal/touchio/__init__.c b/shared-module/touchio/__init__.c
index d2290447c..d2290447c 100644
--- a/ports/nrf/common-hal/touchio/__init__.c
+++ b/shared-module/touchio/__init__.c