summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--locale/ID.po125
-rw-r--r--locale/circuitpython.pot95
-rw-r--r--locale/de_DE.po167
-rw-r--r--locale/en_US.po95
-rw-r--r--locale/es.po179
-rw-r--r--locale/fil.po181
-rw-r--r--locale/fr.po177
-rw-r--r--locale/it_IT.po177
-rw-r--r--locale/pt_BR.po137
-rwxr-xr-xports/nrf/Makefile1
-rw-r--r--ports/nrf/common-hal/bleio/Characteristic.c2
-rw-r--r--ports/nrf/common-hal/bleio/CharacteristicBuffer.c80
-rw-r--r--ports/nrf/common-hal/bleio/CharacteristicBuffer.h5
-rw-r--r--ports/nrf/common-hal/bleio/Device.c2
-rw-r--r--ports/nrf/common-hal/busio/UART.c39
-rw-r--r--ports/nrf/sd_mutex.c56
-rw-r--r--ports/nrf/sd_mutex.h46
-rw-r--r--py/ringbuf.h32
-rw-r--r--py/stream.c2
-rw-r--r--shared-bindings/bleio/CharacteristicBuffer.c159
-rw-r--r--shared-bindings/bleio/CharacteristicBuffer.h9
-rw-r--r--shared-bindings/bleio/UUID.c70
-rw-r--r--shared-bindings/busio/UART.c4
23 files changed, 1189 insertions, 651 deletions
diff --git a/locale/ID.po b/locale/ID.po
index cf317b42d..e06e07063 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-01-20 22:46-0500\n"
+"POT-Creation-Date: 2019-01-21 21:50-0500\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"
@@ -341,12 +341,12 @@ msgid "bytes > 8 bits not supported"
msgstr "byte > 8 bit tidak didukung"
#: ports/atmel-samd/common-hal/busio/UART.c:73
-#: ports/nrf/common-hal/busio/UART.c:118
+#: ports/nrf/common-hal/busio/UART.c:91
msgid "tx and rx cannot both be None"
msgstr "tx dan rx keduanya tidak boleh kosong"
#: ports/atmel-samd/common-hal/busio/UART.c:146
-#: ports/nrf/common-hal/busio/UART.c:152
+#: ports/nrf/common-hal/busio/UART.c:132
msgid "Failed to allocate RX buffer"
msgstr "Gagal untuk mengalokasikan buffer RX"
@@ -355,12 +355,12 @@ msgid "Could not initialize UART"
msgstr "Tidak dapat menginisialisasi UART"
#: ports/atmel-samd/common-hal/busio/UART.c:241
-#: ports/nrf/common-hal/busio/UART.c:197
+#: ports/nrf/common-hal/busio/UART.c:174
msgid "No RX pin"
msgstr "Tidak pin RX"
#: ports/atmel-samd/common-hal/busio/UART.c:300
-#: ports/nrf/common-hal/busio/UART.c:232
+#: ports/nrf/common-hal/busio/UART.c:209
msgid "No TX pin"
msgstr "Tidak ada pin TX"
@@ -723,7 +723,7 @@ msgstr "Gagal untuk melaporkan nilai atribut, status: 0x%08lX"
msgid "Failed to read attribute value, err %0x04x"
msgstr "Gagal untuk membaca nilai atribut, status: 0x%08lX"
-#: ports/nrf/common-hal/bleio/Characteristic.c:172
+#: ports/nrf/common-hal/bleio/Characteristic.c:172 ports/nrf/sd_mutex.c:34
#, fuzzy, c-format
msgid "Failed to acquire mutex, err 0x%04x"
msgstr "Gagal untuk mendapatkan mutex, status: 0x%08lX"
@@ -733,7 +733,7 @@ msgstr "Gagal untuk mendapatkan mutex, status: 0x%08lX"
msgid "Failed to write attribute value, err 0x%04x"
msgstr "Gagal untuk menulis nilai atribut, status: 0x%08lX"
-#: ports/nrf/common-hal/bleio/Characteristic.c:189
+#: ports/nrf/common-hal/bleio/Characteristic.c:189 ports/nrf/sd_mutex.c:54
#, fuzzy, c-format
msgid "Failed to release mutex, err 0x%04x"
msgstr "Gagal untuk melepaskan mutex, status: 0x%08lX"
@@ -754,51 +754,51 @@ msgstr "Tidak bisa menyesuaikan data ke dalam paket advertisment"
msgid "Failed to discover services"
msgstr "Gagal untuk menemukan layanan, status: 0x%08lX"
-#: ports/nrf/common-hal/bleio/Device.c:267
-#: ports/nrf/common-hal/bleio/Device.c:300
+#: ports/nrf/common-hal/bleio/Device.c:268
+#: ports/nrf/common-hal/bleio/Device.c:302
#, fuzzy
msgid "Failed to acquire mutex"
msgstr "Gagal untuk mendapatkan mutex, status: 0x%08lX"
-#: ports/nrf/common-hal/bleio/Device.c:278
-#: ports/nrf/common-hal/bleio/Device.c:311
-#: ports/nrf/common-hal/bleio/Device.c:342
-#: ports/nrf/common-hal/bleio/Device.c:376
+#: ports/nrf/common-hal/bleio/Device.c:280
+#: ports/nrf/common-hal/bleio/Device.c:313
+#: ports/nrf/common-hal/bleio/Device.c:344
+#: ports/nrf/common-hal/bleio/Device.c:378
#, fuzzy
msgid "Failed to release mutex"
msgstr "Gagal untuk melepaskan mutex, status: 0x%08lX"
-#: ports/nrf/common-hal/bleio/Device.c:387
+#: ports/nrf/common-hal/bleio/Device.c:389
#, fuzzy
msgid "Failed to continue scanning"
msgstr "Gagal untuk melanjutkan scanning, status: 0x%08lX"
-#: ports/nrf/common-hal/bleio/Device.c:419
+#: ports/nrf/common-hal/bleio/Device.c:421
#, fuzzy
msgid "Failed to connect:"
msgstr "Gagal untuk menyambungkan, status: 0x%08lX"
-#: ports/nrf/common-hal/bleio/Device.c:489
+#: ports/nrf/common-hal/bleio/Device.c:491
#, fuzzy
msgid "Failed to add service"
msgstr "Gagal untuk menambahkan layanan, status: 0x%08lX"
-#: ports/nrf/common-hal/bleio/Device.c:506
+#: ports/nrf/common-hal/bleio/Device.c:508
#, fuzzy
msgid "Failed to start advertising"
msgstr "Gagal untuk memulai advertisement, status: 0x%08lX"
-#: ports/nrf/common-hal/bleio/Device.c:523
+#: ports/nrf/common-hal/bleio/Device.c:525
#, fuzzy
msgid "Failed to stop advertising"
msgstr "Gagal untuk memberhentikan advertisement, status: 0x%08lX"
-#: ports/nrf/common-hal/bleio/Device.c:548
+#: ports/nrf/common-hal/bleio/Device.c:550
#, fuzzy
msgid "Failed to start scanning"
msgstr "Gagal untuk melakukan scanning, status: 0x%08lX"
-#: ports/nrf/common-hal/bleio/Device.c:564
+#: ports/nrf/common-hal/bleio/Device.c:566
#, fuzzy
msgid "Failed to create mutex"
msgstr "Gagal untuk membuat mutex, status: 0x%08lX"
@@ -854,19 +854,19 @@ msgstr "Semua perangkat SPI sedang digunakan"
msgid "error = 0x%08lX"
msgstr "error = 0x%08lX"
-#: ports/nrf/common-hal/busio/UART.c:122
+#: ports/nrf/common-hal/busio/UART.c:95
msgid "Invalid buffer size"
msgstr "Ukuran buffer tidak valid"
-#: ports/nrf/common-hal/busio/UART.c:126
+#: ports/nrf/common-hal/busio/UART.c:99
msgid "Odd parity is not supported"
msgstr "Parity ganjil tidak didukung"
-#: ports/nrf/common-hal/busio/UART.c:358 ports/nrf/common-hal/busio/UART.c:362
-#: ports/nrf/common-hal/busio/UART.c:367 ports/nrf/common-hal/busio/UART.c:372
-#: ports/nrf/common-hal/busio/UART.c:378 ports/nrf/common-hal/busio/UART.c:383
-#: ports/nrf/common-hal/busio/UART.c:388 ports/nrf/common-hal/busio/UART.c:392
-#: ports/nrf/common-hal/busio/UART.c:400
+#: ports/nrf/common-hal/busio/UART.c:335 ports/nrf/common-hal/busio/UART.c:339
+#: ports/nrf/common-hal/busio/UART.c:344 ports/nrf/common-hal/busio/UART.c:349
+#: ports/nrf/common-hal/busio/UART.c:355 ports/nrf/common-hal/busio/UART.c:360
+#: ports/nrf/common-hal/busio/UART.c:365 ports/nrf/common-hal/busio/UART.c:369
+#: ports/nrf/common-hal/busio/UART.c:377
msgid "busio.UART not available"
msgstr "busio.UART tidak tersedia"
@@ -1365,7 +1365,7 @@ msgstr ""
#: py/modstruct.c:148 py/modstruct.c:156 py/modstruct.c:244 py/modstruct.c:254
#: shared-bindings/struct/__init__.c:102 shared-bindings/struct/__init__.c:161
-#: shared-module/struct/__init__.c:183
+#: shared-module/struct/__init__.c:128 shared-module/struct/__init__.c:183
msgid "buffer too small"
msgstr ""
@@ -2131,7 +2131,7 @@ msgid "buffer must be a bytes-like object"
msgstr ""
#: shared-bindings/audioio/WaveFile.c:78
-#: shared-bindings/displayio/OnDiskBitmap.c:85
+#: shared-bindings/displayio/OnDiskBitmap.c:87
msgid "file must be a file opened in byte mode"
msgstr ""
@@ -2175,15 +2175,33 @@ msgstr "buffers harus mempunyai panjang yang sama"
msgid "Expected a UUID"
msgstr ""
-#: shared-bindings/bleio/CharacteristicBuffer.c:61
+#: shared-bindings/bleio/CharacteristicBuffer.c:39
+#, fuzzy
+msgid "Not connected"
+msgstr "Tidak dapat menyambungkan ke AP"
+
+#: shared-bindings/bleio/CharacteristicBuffer.c:74
+#, fuzzy
+msgid "timeout must be >= 0.0"
+msgstr "bits harus memilki nilai 8"
+
+#: shared-bindings/bleio/CharacteristicBuffer.c:79
#, fuzzy
msgid "buffer_size must be >= 1"
msgstr "buffers harus mempunyai panjang yang sama"
-#: shared-bindings/bleio/CharacteristicBuffer.c:65
+#: shared-bindings/bleio/CharacteristicBuffer.c:83
msgid "Expected a Characteristic"
msgstr ""
+#: shared-bindings/bleio/CharacteristicBuffer.c:138
+msgid "CharacteristicBuffer writing not provided"
+msgstr ""
+
+#: shared-bindings/bleio/CharacteristicBuffer.c:147
+msgid "Not connected."
+msgstr ""
+
#: shared-bindings/bleio/Device.c:210
msgid "Can't add services in Central mode"
msgstr ""
@@ -2221,16 +2239,20 @@ msgstr ""
msgid "UUID integer value not in range 0 to 0xffff"
msgstr ""
-#: shared-bindings/bleio/UUID.c:75
-msgid "UUID value is not int or byte buffer"
+#: shared-bindings/bleio/UUID.c:91
+msgid "UUID string not 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'"
msgstr ""
-#: shared-bindings/bleio/UUID.c:79
+#: shared-bindings/bleio/UUID.c:103
+msgid "UUID value is not str, int or byte buffer"
+msgstr ""
+
+#: shared-bindings/bleio/UUID.c:107
#, fuzzy
msgid "Byte buffer must be 16 bytes."
msgstr "buffers harus mempunyai panjang yang sama"
-#: shared-bindings/bleio/UUID.c:120
+#: shared-bindings/bleio/UUID.c:151
msgid "not a 128-bit UUID"
msgstr ""
@@ -2649,11 +2671,6 @@ msgstr ""
msgid "'S' and 'O' are not supported format types"
msgstr ""
-#: shared-module/struct/__init__.c:128
-#, fuzzy, c-format
-msgid "unpack requires a buffer of %d bytes"
-msgstr "Gagal untuk megalokasikan buffer RX dari %d byte"
-
#: shared-module/struct/__init__.c:136
msgid "too many arguments provided with the given format"
msgstr ""
@@ -2749,24 +2766,28 @@ msgid ""
"exit safe mode.\n"
msgstr ""
-#~ msgid "Invalid UUID string length"
-#~ msgstr "Panjang string UUID tidak valid"
-
#~ msgid ""
-#~ "enough power for the whole circuit and press reset (after ejecting "
-#~ "CIRCUITPY).\n"
+#~ "Please file an issue here with the contents of your CIRCUITPY drive:\n"
#~ msgstr ""
-#~ "tegangan cukup untuk semua sirkuit dan tekan reset (setelah mencabut "
-#~ "CIRCUITPY).\n"
+#~ "Silahkan taruh masalah disini dengan isi dari CIRCUITPY drive: anda \n"
+
+#~ msgid "Invalid UUID parameter"
+#~ msgstr "Parameter UUID tidak valid"
#~ msgid "Looks like our core CircuitPython code crashed hard. Whoops!\n"
#~ msgstr ""
#~ "Sepertinya inti kode CircuitPython kita crash dengan sangat keras. Ups!\n"
-#~ msgid "Invalid UUID parameter"
-#~ msgstr "Parameter UUID tidak valid"
-
#~ msgid ""
-#~ "Please file an issue here with the contents of your CIRCUITPY drive:\n"
+#~ "enough power for the whole circuit and press reset (after ejecting "
+#~ "CIRCUITPY).\n"
#~ msgstr ""
-#~ "Silahkan taruh masalah disini dengan isi dari CIRCUITPY drive: anda \n"
+#~ "tegangan cukup untuk semua sirkuit dan tekan reset (setelah mencabut "
+#~ "CIRCUITPY).\n"
+
+#~ msgid "Invalid UUID string length"
+#~ msgstr "Panjang string UUID tidak valid"
+
+#, fuzzy
+#~ msgid "unpack requires a buffer of %d bytes"
+#~ msgstr "Gagal untuk megalokasikan buffer RX dari %d byte"
diff --git a/locale/circuitpython.pot b/locale/circuitpython.pot
index 4962a67ab..c041ec86c 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-01-20 22:46-0500\n"
+"POT-Creation-Date: 2019-01-21 21:50-0500\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"
@@ -334,12 +334,12 @@ msgid "bytes > 8 bits not supported"
msgstr ""
#: ports/atmel-samd/common-hal/busio/UART.c:73
-#: ports/nrf/common-hal/busio/UART.c:118
+#: ports/nrf/common-hal/busio/UART.c:91
msgid "tx and rx cannot both be None"
msgstr ""
#: ports/atmel-samd/common-hal/busio/UART.c:146
-#: ports/nrf/common-hal/busio/UART.c:152
+#: ports/nrf/common-hal/busio/UART.c:132
msgid "Failed to allocate RX buffer"
msgstr ""
@@ -348,12 +348,12 @@ msgid "Could not initialize UART"
msgstr ""
#: ports/atmel-samd/common-hal/busio/UART.c:241
-#: ports/nrf/common-hal/busio/UART.c:197
+#: ports/nrf/common-hal/busio/UART.c:174
msgid "No RX pin"
msgstr ""
#: ports/atmel-samd/common-hal/busio/UART.c:300
-#: ports/nrf/common-hal/busio/UART.c:232
+#: ports/nrf/common-hal/busio/UART.c:209
msgid "No TX pin"
msgstr ""
@@ -708,7 +708,7 @@ msgstr ""
msgid "Failed to read attribute value, err %0x04x"
msgstr ""
-#: ports/nrf/common-hal/bleio/Characteristic.c:172
+#: ports/nrf/common-hal/bleio/Characteristic.c:172 ports/nrf/sd_mutex.c:34
#, c-format
msgid "Failed to acquire mutex, err 0x%04x"
msgstr ""
@@ -718,7 +718,7 @@ msgstr ""
msgid "Failed to write attribute value, err 0x%04x"
msgstr ""
-#: ports/nrf/common-hal/bleio/Characteristic.c:189
+#: ports/nrf/common-hal/bleio/Characteristic.c:189 ports/nrf/sd_mutex.c:54
#, c-format
msgid "Failed to release mutex, err 0x%04x"
msgstr ""
@@ -737,43 +737,43 @@ msgstr ""
msgid "Failed to discover services"
msgstr ""
-#: ports/nrf/common-hal/bleio/Device.c:267
-#: ports/nrf/common-hal/bleio/Device.c:300
+#: ports/nrf/common-hal/bleio/Device.c:268
+#: ports/nrf/common-hal/bleio/Device.c:302
msgid "Failed to acquire mutex"
msgstr ""
-#: ports/nrf/common-hal/bleio/Device.c:278
-#: ports/nrf/common-hal/bleio/Device.c:311
-#: ports/nrf/common-hal/bleio/Device.c:342
-#: ports/nrf/common-hal/bleio/Device.c:376
+#: ports/nrf/common-hal/bleio/Device.c:280
+#: ports/nrf/common-hal/bleio/Device.c:313
+#: ports/nrf/common-hal/bleio/Device.c:344
+#: ports/nrf/common-hal/bleio/Device.c:378
msgid "Failed to release mutex"
msgstr ""
-#: ports/nrf/common-hal/bleio/Device.c:387
+#: ports/nrf/common-hal/bleio/Device.c:389
msgid "Failed to continue scanning"
msgstr ""
-#: ports/nrf/common-hal/bleio/Device.c:419
+#: ports/nrf/common-hal/bleio/Device.c:421
msgid "Failed to connect:"
msgstr ""
-#: ports/nrf/common-hal/bleio/Device.c:489
+#: ports/nrf/common-hal/bleio/Device.c:491
msgid "Failed to add service"
msgstr ""
-#: ports/nrf/common-hal/bleio/Device.c:506
+#: ports/nrf/common-hal/bleio/Device.c:508
msgid "Failed to start advertising"
msgstr ""
-#: ports/nrf/common-hal/bleio/Device.c:523
+#: ports/nrf/common-hal/bleio/Device.c:525
msgid "Failed to stop advertising"
msgstr ""
-#: ports/nrf/common-hal/bleio/Device.c:548
+#: ports/nrf/common-hal/bleio/Device.c:550
msgid "Failed to start scanning"
msgstr ""
-#: ports/nrf/common-hal/bleio/Device.c:564
+#: ports/nrf/common-hal/bleio/Device.c:566
msgid "Failed to create mutex"
msgstr ""
@@ -828,19 +828,19 @@ msgstr ""
msgid "error = 0x%08lX"
msgstr ""
-#: ports/nrf/common-hal/busio/UART.c:122
+#: ports/nrf/common-hal/busio/UART.c:95
msgid "Invalid buffer size"
msgstr ""
-#: ports/nrf/common-hal/busio/UART.c:126
+#: ports/nrf/common-hal/busio/UART.c:99
msgid "Odd parity is not supported"
msgstr ""
-#: ports/nrf/common-hal/busio/UART.c:358 ports/nrf/common-hal/busio/UART.c:362
-#: ports/nrf/common-hal/busio/UART.c:367 ports/nrf/common-hal/busio/UART.c:372
-#: ports/nrf/common-hal/busio/UART.c:378 ports/nrf/common-hal/busio/UART.c:383
-#: ports/nrf/common-hal/busio/UART.c:388 ports/nrf/common-hal/busio/UART.c:392
-#: ports/nrf/common-hal/busio/UART.c:400
+#: ports/nrf/common-hal/busio/UART.c:335 ports/nrf/common-hal/busio/UART.c:339
+#: ports/nrf/common-hal/busio/UART.c:344 ports/nrf/common-hal/busio/UART.c:349
+#: ports/nrf/common-hal/busio/UART.c:355 ports/nrf/common-hal/busio/UART.c:360
+#: ports/nrf/common-hal/busio/UART.c:365 ports/nrf/common-hal/busio/UART.c:369
+#: ports/nrf/common-hal/busio/UART.c:377
msgid "busio.UART not available"
msgstr ""
@@ -1332,7 +1332,7 @@ msgstr ""
#: py/modstruct.c:148 py/modstruct.c:156 py/modstruct.c:244 py/modstruct.c:254
#: shared-bindings/struct/__init__.c:102 shared-bindings/struct/__init__.c:161
-#: shared-module/struct/__init__.c:183
+#: shared-module/struct/__init__.c:128 shared-module/struct/__init__.c:183
msgid "buffer too small"
msgstr ""
@@ -2098,7 +2098,7 @@ msgid "buffer must be a bytes-like object"
msgstr ""
#: shared-bindings/audioio/WaveFile.c:78
-#: shared-bindings/displayio/OnDiskBitmap.c:85
+#: shared-bindings/displayio/OnDiskBitmap.c:87
msgid "file must be a file opened in byte mode"
msgstr ""
@@ -2142,14 +2142,30 @@ msgstr ""
msgid "Expected a UUID"
msgstr ""
-#: shared-bindings/bleio/CharacteristicBuffer.c:61
+#: shared-bindings/bleio/CharacteristicBuffer.c:39
+msgid "Not connected"
+msgstr ""
+
+#: shared-bindings/bleio/CharacteristicBuffer.c:74
+msgid "timeout must be >= 0.0"
+msgstr ""
+
+#: shared-bindings/bleio/CharacteristicBuffer.c:79
msgid "buffer_size must be >= 1"
msgstr ""
-#: shared-bindings/bleio/CharacteristicBuffer.c:65
+#: shared-bindings/bleio/CharacteristicBuffer.c:83
msgid "Expected a Characteristic"
msgstr ""
+#: shared-bindings/bleio/CharacteristicBuffer.c:138
+msgid "CharacteristicBuffer writing not provided"
+msgstr ""
+
+#: shared-bindings/bleio/CharacteristicBuffer.c:147
+msgid "Not connected."
+msgstr ""
+
#: shared-bindings/bleio/Device.c:210
msgid "Can't add services in Central mode"
msgstr ""
@@ -2186,15 +2202,19 @@ msgstr ""
msgid "UUID integer value not in range 0 to 0xffff"
msgstr ""
-#: shared-bindings/bleio/UUID.c:75
-msgid "UUID value is not int or byte buffer"
+#: shared-bindings/bleio/UUID.c:91
+msgid "UUID string not 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'"
+msgstr ""
+
+#: shared-bindings/bleio/UUID.c:103
+msgid "UUID value is not str, int or byte buffer"
msgstr ""
-#: shared-bindings/bleio/UUID.c:79
+#: shared-bindings/bleio/UUID.c:107
msgid "Byte buffer must be 16 bytes."
msgstr ""
-#: shared-bindings/bleio/UUID.c:120
+#: shared-bindings/bleio/UUID.c:151
msgid "not a 128-bit UUID"
msgstr ""
@@ -2612,11 +2632,6 @@ msgstr ""
msgid "'S' and 'O' are not supported format types"
msgstr ""
-#: shared-module/struct/__init__.c:128
-#, c-format
-msgid "unpack requires a buffer of %d bytes"
-msgstr ""
-
#: shared-module/struct/__init__.c:136
msgid "too many arguments provided with the given format"
msgstr ""
diff --git a/locale/de_DE.po b/locale/de_DE.po
index dfa492ed0..3a3b4da51 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-01-20 22:46-0500\n"
+"POT-Creation-Date: 2019-01-21 21:50-0500\n"
"PO-Revision-Date: 2018-07-27 11:55-0700\n"
"Last-Translator: Sebastian Plamauer\n"
"Language-Team: \n"
@@ -338,12 +338,12 @@ msgid "bytes > 8 bits not supported"
msgstr "bytes mit merh als 8 bits werden nicht unterstützt"
#: ports/atmel-samd/common-hal/busio/UART.c:73
-#: ports/nrf/common-hal/busio/UART.c:118
+#: ports/nrf/common-hal/busio/UART.c:91
msgid "tx and rx cannot both be None"
msgstr "tx und rx können nicht beide None sein"
#: ports/atmel-samd/common-hal/busio/UART.c:146
-#: ports/nrf/common-hal/busio/UART.c:152
+#: ports/nrf/common-hal/busio/UART.c:132
msgid "Failed to allocate RX buffer"
msgstr "Konnte keinen RX Buffer allozieren"
@@ -352,12 +352,12 @@ msgid "Could not initialize UART"
msgstr "Konnte UART nicht initialisieren"
#: ports/atmel-samd/common-hal/busio/UART.c:241
-#: ports/nrf/common-hal/busio/UART.c:197
+#: ports/nrf/common-hal/busio/UART.c:174
msgid "No RX pin"
msgstr "Kein RX Pin"
#: ports/atmel-samd/common-hal/busio/UART.c:300
-#: ports/nrf/common-hal/busio/UART.c:232
+#: ports/nrf/common-hal/busio/UART.c:209
msgid "No TX pin"
msgstr "Kein TX Pin"
@@ -508,7 +508,8 @@ msgstr "Dateisystem kann nicht wieder gemounted werden."
#: ports/esp8266/common-hal/storage/__init__.c:38
msgid "Use esptool to erase flash and re-upload Python instead"
-msgstr "Benutze esptool um den flash zu löschen und stattdessen Python hochzuladen"
+msgstr ""
+"Benutze esptool um den flash zu löschen und stattdessen Python hochzuladen"
#: ports/esp8266/esp_mphal.c:154
msgid "C-level assert"
@@ -717,7 +718,7 @@ msgstr "Kann den Attributwert nicht mitteilen. Status: 0x%04x"
msgid "Failed to read attribute value, err %0x04x"
msgstr "Kann den Attributwert nicht lesen. Status: 0x%04x"
-#: ports/nrf/common-hal/bleio/Characteristic.c:172
+#: ports/nrf/common-hal/bleio/Characteristic.c:172 ports/nrf/sd_mutex.c:34
#, fuzzy, c-format
msgid "Failed to acquire mutex, err 0x%04x"
msgstr "Kann den Attributwert nicht lesen. Status: 0x%04x"
@@ -727,7 +728,7 @@ msgstr "Kann den Attributwert nicht lesen. Status: 0x%04x"
msgid "Failed to write attribute value, err 0x%04x"
msgstr "Kann den Attributwert nicht schreiben. Status: 0x%04x"
-#: ports/nrf/common-hal/bleio/Characteristic.c:189
+#: ports/nrf/common-hal/bleio/Characteristic.c:189 ports/nrf/sd_mutex.c:54
#, fuzzy, c-format
msgid "Failed to release mutex, err 0x%04x"
msgstr "Mutex konnte nicht freigegeben werden. Status: 0x%04x"
@@ -748,51 +749,51 @@ msgstr "Daten sind zu groß für das advertisement packet"
msgid "Failed to discover services"
msgstr "Es konnten keine Dienste gefunden werden"
-#: ports/nrf/common-hal/bleio/Device.c:267
-#: ports/nrf/common-hal/bleio/Device.c:300
+#: ports/nrf/common-hal/bleio/Device.c:268
+#: ports/nrf/common-hal/bleio/Device.c:302
#, fuzzy
msgid "Failed to acquire mutex"
msgstr "Akquirieren des Mutex gescheitert"
-#: ports/nrf/common-hal/bleio/Device.c:278
-#: ports/nrf/common-hal/bleio/Device.c:311
-#: ports/nrf/common-hal/bleio/Device.c:342
-#: ports/nrf/common-hal/bleio/Device.c:376
+#: ports/nrf/common-hal/bleio/Device.c:280
+#: ports/nrf/common-hal/bleio/Device.c:313
+#: ports/nrf/common-hal/bleio/Device.c:344
+#: ports/nrf/common-hal/bleio/Device.c:378
#, fuzzy
msgid "Failed to release mutex"
msgstr "Loslassen des Mutex gescheitert"
-#: ports/nrf/common-hal/bleio/Device.c:387
+#: ports/nrf/common-hal/bleio/Device.c:389
#, fuzzy
msgid "Failed to continue scanning"
msgstr "Der Scanvorgang kann nicht fortgesetzt werden"
-#: ports/nrf/common-hal/bleio/Device.c:419
+#: ports/nrf/common-hal/bleio/Device.c:421
#, fuzzy
msgid "Failed to connect:"
msgstr "Das Verbinden ist fehlgeschlagen:"
-#: ports/nrf/common-hal/bleio/Device.c:489
+#: ports/nrf/common-hal/bleio/Device.c:491
#, fuzzy
msgid "Failed to add service"
msgstr "Dienst konnte nicht hinzugefügt werden"
-#: ports/nrf/common-hal/bleio/Device.c:506
+#: ports/nrf/common-hal/bleio/Device.c:508
#, fuzzy
msgid "Failed to start advertising"
msgstr "Kann advertisement nicht starten"
-#: ports/nrf/common-hal/bleio/Device.c:523
+#: ports/nrf/common-hal/bleio/Device.c:525
#, fuzzy
msgid "Failed to stop advertising"
msgstr "Kann advertisement nicht stoppen"
-#: ports/nrf/common-hal/bleio/Device.c:548
+#: ports/nrf/common-hal/bleio/Device.c:550
#, fuzzy
msgid "Failed to start scanning"
msgstr "Der Scanvorgang kann nicht gestartet werden"
-#: ports/nrf/common-hal/bleio/Device.c:564
+#: ports/nrf/common-hal/bleio/Device.c:566
#, fuzzy
msgid "Failed to create mutex"
msgstr "Erstellen des Mutex ist fehlgeschlagen"
@@ -850,21 +851,21 @@ msgstr "Alle SPI-Peripheriegeräte sind in Benutzung"
msgid "error = 0x%08lX"
msgstr "error = 0x%08lX"
-#: ports/nrf/common-hal/busio/UART.c:122
+#: ports/nrf/common-hal/busio/UART.c:95
#, fuzzy
msgid "Invalid buffer size"
msgstr "Ungültige Puffergröße"
-#: ports/nrf/common-hal/busio/UART.c:126
+#: ports/nrf/common-hal/busio/UART.c:99
#, fuzzy
msgid "Odd parity is not supported"
msgstr "bytes mit mehr als 8 bits werden nicht unterstützt"
-#: ports/nrf/common-hal/busio/UART.c:358 ports/nrf/common-hal/busio/UART.c:362
-#: ports/nrf/common-hal/busio/UART.c:367 ports/nrf/common-hal/busio/UART.c:372
-#: ports/nrf/common-hal/busio/UART.c:378 ports/nrf/common-hal/busio/UART.c:383
-#: ports/nrf/common-hal/busio/UART.c:388 ports/nrf/common-hal/busio/UART.c:392
-#: ports/nrf/common-hal/busio/UART.c:400
+#: ports/nrf/common-hal/busio/UART.c:335 ports/nrf/common-hal/busio/UART.c:339
+#: ports/nrf/common-hal/busio/UART.c:344 ports/nrf/common-hal/busio/UART.c:349
+#: ports/nrf/common-hal/busio/UART.c:355 ports/nrf/common-hal/busio/UART.c:360
+#: ports/nrf/common-hal/busio/UART.c:365 ports/nrf/common-hal/busio/UART.c:369
+#: ports/nrf/common-hal/busio/UART.c:377
msgid "busio.UART not available"
msgstr "Kann busio.UART nicht finden"
@@ -1360,7 +1361,7 @@ msgstr ""
#: py/modstruct.c:148 py/modstruct.c:156 py/modstruct.c:244 py/modstruct.c:254
#: shared-bindings/struct/__init__.c:102 shared-bindings/struct/__init__.c:161
-#: shared-module/struct/__init__.c:183
+#: shared-module/struct/__init__.c:128 shared-module/struct/__init__.c:183
msgid "buffer too small"
msgstr ""
@@ -2129,7 +2130,7 @@ msgid "buffer must be a bytes-like object"
msgstr ""
#: shared-bindings/audioio/WaveFile.c:78
-#: shared-bindings/displayio/OnDiskBitmap.c:85
+#: shared-bindings/displayio/OnDiskBitmap.c:87
msgid "file must be a file opened in byte mode"
msgstr ""
@@ -2173,16 +2174,35 @@ msgstr "Buffer müssen gleich lang sein"
msgid "Expected a UUID"
msgstr ""
-#: shared-bindings/bleio/CharacteristicBuffer.c:61
+#: shared-bindings/bleio/CharacteristicBuffer.c:39
+#, fuzzy
+msgid "Not connected"
+msgstr "Kann nicht zu AP verbinden"
+
+#: shared-bindings/bleio/CharacteristicBuffer.c:74
+#, fuzzy
+msgid "timeout must be >= 0.0"
+msgstr "bits müssen 8 sein"
+
+#: shared-bindings/bleio/CharacteristicBuffer.c:79
#, fuzzy
msgid "buffer_size must be >= 1"
msgstr "Buffer müssen gleich lang sein"
-#: shared-bindings/bleio/CharacteristicBuffer.c:65
+#: shared-bindings/bleio/CharacteristicBuffer.c:83
#, fuzzy
msgid "Expected a Characteristic"
msgstr "Kann das Merkmal nicht hinzufügen."
+#: shared-bindings/bleio/CharacteristicBuffer.c:138
+#, fuzzy
+msgid "CharacteristicBuffer writing not provided"
+msgstr "Merkmal wird bereits von einem anderen Dienst verwendet."
+
+#: shared-bindings/bleio/CharacteristicBuffer.c:147
+msgid "Not connected."
+msgstr ""
+
#: shared-bindings/bleio/Device.c:210
msgid "Can't add services in Central mode"
msgstr ""
@@ -2220,16 +2240,20 @@ msgstr ""
msgid "UUID integer value not in range 0 to 0xffff"
msgstr ""
-#: shared-bindings/bleio/UUID.c:75
-msgid "UUID value is not int or byte buffer"
+#: shared-bindings/bleio/UUID.c:91
+msgid "UUID string not 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'"
+msgstr ""
+
+#: shared-bindings/bleio/UUID.c:103
+msgid "UUID value is not str, int or byte buffer"
msgstr ""
-#: shared-bindings/bleio/UUID.c:79
+#: shared-bindings/bleio/UUID.c:107
#, fuzzy
msgid "Byte buffer must be 16 bytes."
msgstr "Buffer müssen gleich lang sein"
-#: shared-bindings/bleio/UUID.c:120
+#: shared-bindings/bleio/UUID.c:151
msgid "not a 128-bit UUID"
msgstr ""
@@ -2650,11 +2674,6 @@ msgstr "Kann '/' nicht remounten when USB aktiv ist"
msgid "'S' and 'O' are not supported format types"
msgstr ""
-#: shared-module/struct/__init__.c:128
-#, fuzzy, c-format
-msgid "unpack requires a buffer of %d bytes"
-msgstr "Konnte keine RX Buffer mit %d allozieren"
-
#: shared-module/struct/__init__.c:136
msgid "too many arguments provided with the given format"
msgstr ""
@@ -2748,29 +2767,22 @@ msgid ""
"exit safe mode.\n"
msgstr ""
-#~ msgid "Can not add Characteristic."
-#~ msgstr "Kann das Merkmal nicht hinzufügen."
-
-#~ msgid "Can not add Service."
-#~ msgstr "Kann den Dienst nicht hinzufügen."
-
-#~ msgid "Looks like our core CircuitPython code crashed hard. Whoops!\n"
-#~ msgstr "CircuitPython ist abgestürzt. Ups!\n"
-
-#~ msgid "Can not apply advertisement data. status: 0x%02x"
-#~ msgstr "Kann advertisement data nicht anwenden. Status: 0x%02x"
+#~ msgid "Invalid UUID string length"
+#~ msgstr "Ungültige UUID-Stringlänge"
-#~ msgid "Cannot apply GAP parameters."
-#~ msgstr "Kann GAP Parameter nicht anwenden."
+#~ msgid "Can encode UUID into the advertisement packet."
+#~ msgstr "Kann UUID in das advertisement packet kodieren."
-#~ msgid "Can not encode UUID, to check length."
-#~ msgstr "Kann UUID nicht kodieren, um die Länge zu überprüfen."
+#~ msgid ""
+#~ "Please file an issue here with the contents of your CIRCUITPY drive:\n"
+#~ msgstr ""
+#~ "Bitte erstelle ein issue hier mit dem Inhalt deines CIRCUITPY-speichers:\n"
-#~ msgid "Can not query for the device address."
-#~ msgstr "Kann nicht nach der Geräteadresse suchen."
+#~ msgid "Invalid UUID parameter"
+#~ msgstr "Ungültiger UUID-Parameter"
-#~ msgid "Can not apply device name in the stack."
-#~ msgstr "Der Gerätename kann nicht im Stack verwendet werden."
+#~ msgid "Invalid Service type"
+#~ msgstr "Ungültiger Diensttyp"
#~ msgid ""
#~ "enough power for the whole circuit and press reset (after ejecting "
@@ -2779,19 +2791,30 @@ msgstr ""
#~ "genug Strom für den ganzen Schaltkreis liefert und drücke reset (nach dem "
#~ "sicheren Auswerfen von CIRCUITPY.)\n"
-#~ msgid "Invalid Service type"
-#~ msgstr "Ungültiger Diensttyp"
+#~ msgid "Can not apply device name in the stack."
+#~ msgstr "Der Gerätename kann nicht im Stack verwendet werden."
-#~ msgid "Invalid UUID parameter"
-#~ msgstr "Ungültiger UUID-Parameter"
+#~ msgid "Can not query for the device address."
+#~ msgstr "Kann nicht nach der Geräteadresse suchen."
-#~ msgid ""
-#~ "Please file an issue here with the contents of your CIRCUITPY drive:\n"
-#~ msgstr ""
-#~ "Bitte erstelle ein issue hier mit dem Inhalt deines CIRCUITPY-speichers:\n"
+#~ msgid "Can not encode UUID, to check length."
+#~ msgstr "Kann UUID nicht kodieren, um die Länge zu überprüfen."
-#~ msgid "Can encode UUID into the advertisement packet."
-#~ msgstr "Kann UUID in das advertisement packet kodieren."
+#~ msgid "Cannot apply GAP parameters."
+#~ msgstr "Kann GAP Parameter nicht anwenden."
-#~ msgid "Invalid UUID string length"
-#~ msgstr "Ungültige UUID-Stringlänge"
+#~ msgid "Can not apply advertisement data. status: 0x%02x"
+#~ msgstr "Kann advertisement data nicht anwenden. Status: 0x%02x"
+
+#~ msgid "Looks like our core CircuitPython code crashed hard. Whoops!\n"
+#~ msgstr "CircuitPython ist abgestürzt. Ups!\n"
+
+#~ msgid "Can not add Service."
+#~ msgstr "Kann den Dienst nicht hinzufügen."
+
+#~ msgid "Can not add Characteristic."
+#~ msgstr "Kann das Merkmal nicht hinzufügen."
+
+#, fuzzy
+#~ msgid "unpack requires a buffer of %d bytes"
+#~ msgstr "Konnte keine RX Buffer mit %d allozieren"
diff --git a/locale/en_US.po b/locale/en_US.po
index 33b1e614b..d62e9fd20 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-01-20 22:46-0500\n"
+"POT-Creation-Date: 2019-01-21 21:50-0500\n"
"PO-Revision-Date: 2018-07-27 11:55-0700\n"
"Last-Translator: \n"
"Language-Team: \n"
@@ -334,12 +334,12 @@ msgid "bytes > 8 bits not supported"
msgstr ""
#: ports/atmel-samd/common-hal/busio/UART.c:73
-#: ports/nrf/common-hal/busio/UART.c:118
+#: ports/nrf/common-hal/busio/UART.c:91
msgid "tx and rx cannot both be None"
msgstr ""
#: ports/atmel-samd/common-hal/busio/UART.c:146
-#: ports/nrf/common-hal/busio/UART.c:152
+#: ports/nrf/common-hal/busio/UART.c:132
msgid "Failed to allocate RX buffer"
msgstr ""
@@ -348,12 +348,12 @@ msgid "Could not initialize UART"
msgstr ""
#: ports/atmel-samd/common-hal/busio/UART.c:241
-#: ports/nrf/common-hal/busio/UART.c:197
+#: ports/nrf/common-hal/busio/UART.c:174
msgid "No RX pin"
msgstr ""
#: ports/atmel-samd/common-hal/busio/UART.c:300
-#: ports/nrf/common-hal/busio/UART.c:232
+#: ports/nrf/common-hal/busio/UART.c:209
msgid "No TX pin"
msgstr ""
@@ -708,7 +708,7 @@ msgstr ""
msgid "Failed to read attribute value, err %0x04x"
msgstr ""
-#: ports/nrf/common-hal/bleio/Characteristic.c:172
+#: ports/nrf/common-hal/bleio/Characteristic.c:172 ports/nrf/sd_mutex.c:34
#, c-format
msgid "Failed to acquire mutex, err 0x%04x"
msgstr ""
@@ -718,7 +718,7 @@ msgstr ""
msgid "Failed to write attribute value, err 0x%04x"
msgstr ""
-#: ports/nrf/common-hal/bleio/Characteristic.c:189
+#: ports/nrf/common-hal/bleio/Characteristic.c:189 ports/nrf/sd_mutex.c:54
#, c-format
msgid "Failed to release mutex, err 0x%04x"
msgstr ""
@@ -737,43 +737,43 @@ msgstr ""
msgid "Failed to discover services"
msgstr ""
-#: ports/nrf/common-hal/bleio/Device.c:267
-#: ports/nrf/common-hal/bleio/Device.c:300
+#: ports/nrf/common-hal/bleio/Device.c:268
+#: ports/nrf/common-hal/bleio/Device.c:302
msgid "Failed to acquire mutex"
msgstr ""
-#: ports/nrf/common-hal/bleio/Device.c:278
-#: ports/nrf/common-hal/bleio/Device.c:311
-#: ports/nrf/common-hal/bleio/Device.c:342
-#: ports/nrf/common-hal/bleio/Device.c:376
+#: ports/nrf/common-hal/bleio/Device.c:280
+#: ports/nrf/common-hal/bleio/Device.c:313
+#: ports/nrf/common-hal/bleio/Device.c:344
+#: ports/nrf/common-hal/bleio/Device.c:378
msgid "Failed to release mutex"
msgstr ""
-#: ports/nrf/common-hal/bleio/Device.c:387
+#: ports/nrf/common-hal/bleio/Device.c:389
msgid "Failed to continue scanning"
msgstr ""
-#: ports/nrf/common-hal/bleio/Device.c:419
+#: ports/nrf/common-hal/bleio/Device.c:421
msgid "Failed to connect:"
msgstr ""
-#: ports/nrf/common-hal/bleio/Device.c:489
+#: ports/nrf/common-hal/bleio/Device.c:491
msgid "Failed to add service"
msgstr ""
-#: ports/nrf/common-hal/bleio/Device.c:506
+#: ports/nrf/common-hal/bleio/Device.c:508
msgid "Failed to start advertising"
msgstr ""
-#: ports/nrf/common-hal/bleio/Device.c:523
+#: ports/nrf/common-hal/bleio/Device.c:525
msgid "Failed to stop advertising"
msgstr ""
-#: ports/nrf/common-hal/bleio/Device.c:548
+#: ports/nrf/common-hal/bleio/Device.c:550
msgid "Failed to start scanning"
msgstr ""
-#: ports/nrf/common-hal/bleio/Device.c:564
+#: ports/nrf/common-hal/bleio/Device.c:566
msgid "Failed to create mutex"
msgstr ""
@@ -828,19 +828,19 @@ msgstr ""
msgid "error = 0x%08lX"
msgstr ""
-#: ports/nrf/common-hal/busio/UART.c:122
+#: ports/nrf/common-hal/busio/UART.c:95
msgid "Invalid buffer size"
msgstr ""
-#: ports/nrf/common-hal/busio/UART.c:126
+#: ports/nrf/common-hal/busio/UART.c:99
msgid "Odd parity is not supported"
msgstr ""
-#: ports/nrf/common-hal/busio/UART.c:358 ports/nrf/common-hal/busio/UART.c:362
-#: ports/nrf/common-hal/busio/UART.c:367 ports/nrf/common-hal/busio/UART.c:372
-#: ports/nrf/common-hal/busio/UART.c:378 ports/nrf/common-hal/busio/UART.c:383
-#: ports/nrf/common-hal/busio/UART.c:388 ports/nrf/common-hal/busio/UART.c:392
-#: ports/nrf/common-hal/busio/UART.c:400
+#: ports/nrf/common-hal/busio/UART.c:335 ports/nrf/common-hal/busio/UART.c:339
+#: ports/nrf/common-hal/busio/UART.c:344 ports/nrf/common-hal/busio/UART.c:349
+#: ports/nrf/common-hal/busio/UART.c:355 ports/nrf/common-hal/busio/UART.c:360
+#: ports/nrf/common-hal/busio/UART.c:365 ports/nrf/common-hal/busio/UART.c:369
+#: ports/nrf/common-hal/busio/UART.c:377
msgid "busio.UART not available"
msgstr ""
@@ -1332,7 +1332,7 @@ msgstr ""
#: py/modstruct.c:148 py/modstruct.c:156 py/modstruct.c:244 py/modstruct.c:254
#: shared-bindings/struct/__init__.c:102 shared-bindings/struct/__init__.c:161
-#: shared-module/struct/__init__.c:183
+#: shared-module/struct/__init__.c:128 shared-module/struct/__init__.c:183
msgid "buffer too small"
msgstr ""
@@ -2098,7 +2098,7 @@ msgid "buffer must be a bytes-like object"
msgstr ""
#: shared-bindings/audioio/WaveFile.c:78
-#: shared-bindings/displayio/OnDiskBitmap.c:85
+#: shared-bindings/displayio/OnDiskBitmap.c:87
msgid "file must be a file opened in byte mode"
msgstr ""
@@ -2142,14 +2142,30 @@ msgstr ""
msgid "Expected a UUID"
msgstr ""
-#: shared-bindings/bleio/CharacteristicBuffer.c:61
+#: shared-bindings/bleio/CharacteristicBuffer.c:39
+msgid "Not connected"
+msgstr ""
+
+#: shared-bindings/bleio/CharacteristicBuffer.c:74
+msgid "timeout must be >= 0.0"
+msgstr ""
+
+#: shared-bindings/bleio/CharacteristicBuffer.c:79
msgid "buffer_size must be >= 1"
msgstr ""
-#: shared-bindings/bleio/CharacteristicBuffer.c:65
+#: shared-bindings/bleio/CharacteristicBuffer.c:83
msgid "Expected a Characteristic"
msgstr ""
+#: shared-bindings/bleio/CharacteristicBuffer.c:138
+msgid "CharacteristicBuffer writing not provided"
+msgstr ""
+
+#: shared-bindings/bleio/CharacteristicBuffer.c:147
+msgid "Not connected."
+msgstr ""
+
#: shared-bindings/bleio/Device.c:210
msgid "Can't add services in Central mode"
msgstr ""
@@ -2186,15 +2202,19 @@ msgstr ""
msgid "UUID integer value not in range 0 to 0xffff"
msgstr ""
-#: shared-bindings/bleio/UUID.c:75
-msgid "UUID value is not int or byte buffer"
+#: shared-bindings/bleio/UUID.c:91
+msgid "UUID string not 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'"
+msgstr ""
+
+#: shared-bindings/bleio/UUID.c:103
+msgid "UUID value is not str, int or byte buffer"
msgstr ""
-#: shared-bindings/bleio/UUID.c:79
+#: shared-bindings/bleio/UUID.c:107
msgid "Byte buffer must be 16 bytes."
msgstr ""
-#: shared-bindings/bleio/UUID.c:120
+#: shared-bindings/bleio/UUID.c:151
msgid "not a 128-bit UUID"
msgstr ""
@@ -2612,11 +2632,6 @@ msgstr ""
msgid "'S' and 'O' are not supported format types"
msgstr ""
-#: shared-module/struct/__init__.c:128
-#, c-format
-msgid "unpack requires a buffer of %d bytes"
-msgstr ""
-
#: shared-module/struct/__init__.c:136
msgid "too many arguments provided with the given format"
msgstr ""
diff --git a/locale/es.po b/locale/es.po
index 6daa4170b..446fe7bc5 100644
--- a/locale/es.po
+++ b/locale/es.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-01-20 22:46-0500\n"
+"POT-Creation-Date: 2019-01-21 21:50-0500\n"
"PO-Revision-Date: 2018-08-24 22:56-0500\n"
"Last-Translator: \n"
"Language-Team: \n"
@@ -340,12 +340,12 @@ msgid "bytes > 8 bits not supported"
msgstr "bytes > 8 bits no soportados"
#: ports/atmel-samd/common-hal/busio/UART.c:73
-#: ports/nrf/common-hal/busio/UART.c:118
+#: ports/nrf/common-hal/busio/UART.c:91
msgid "tx and rx cannot both be None"
msgstr "Ambos tx y rx no pueden ser None"
#: ports/atmel-samd/common-hal/busio/UART.c:146
-#: ports/nrf/common-hal/busio/UART.c:152
+#: ports/nrf/common-hal/busio/UART.c:132
msgid "Failed to allocate RX buffer"
msgstr "Ha fallado la asignación del buffer RX"
@@ -354,12 +354,12 @@ msgid "Could not initialize UART"
msgstr "No se puede inicializar la UART"
#: ports/atmel-samd/common-hal/busio/UART.c:241
-#: ports/nrf/common-hal/busio/UART.c:197
+#: ports/nrf/common-hal/busio/UART.c:174
msgid "No RX pin"
msgstr "Sin pin RX"
#: ports/atmel-samd/common-hal/busio/UART.c:300
-#: ports/nrf/common-hal/busio/UART.c:232
+#: ports/nrf/common-hal/busio/UART.c:209
msgid "No TX pin"
msgstr "Sin pin TX"
@@ -720,7 +720,7 @@ msgstr "No se puede notificar el valor del anuncio. status: 0x%02x"
msgid "Failed to read attribute value, err %0x04x"
msgstr "No se puede leer el valor del atributo. status 0x%02x"
-#: ports/nrf/common-hal/bleio/Characteristic.c:172
+#: ports/nrf/common-hal/bleio/Characteristic.c:172 ports/nrf/sd_mutex.c:34
#, fuzzy, c-format
msgid "Failed to acquire mutex, err 0x%04x"
msgstr "No se puede adquirir el mutex, status: 0x%08lX"
@@ -730,7 +730,7 @@ msgstr "No se puede adquirir el mutex, status: 0x%08lX"
msgid "Failed to write attribute value, err 0x%04x"
msgstr "No se puede escribir el valor del atributo. status: 0x%02x"
-#: ports/nrf/common-hal/bleio/Characteristic.c:189
+#: ports/nrf/common-hal/bleio/Characteristic.c:189 ports/nrf/sd_mutex.c:54
#, fuzzy, c-format
msgid "Failed to release mutex, err 0x%04x"
msgstr "No se puede liberar el mutex, status: 0x%08lX"
@@ -751,51 +751,51 @@ msgstr "Los datos no caben en el paquete de anuncio."
msgid "Failed to discover services"
msgstr "No se puede descubrir servicios, status: 0x%08lX"
-#: ports/nrf/common-hal/bleio/Device.c:267
-#: ports/nrf/common-hal/bleio/Device.c:300
+#: ports/nrf/common-hal/bleio/Device.c:268
+#: ports/nrf/common-hal/bleio/Device.c:302
#, fuzzy
msgid "Failed to acquire mutex"
msgstr "No se puede adquirir el mutex, status: 0x%08lX"
-#: ports/nrf/common-hal/bleio/Device.c:278
-#: ports/nrf/common-hal/bleio/Device.c:311
-#: ports/nrf/common-hal/bleio/Device.c:342
-#: ports/nrf/common-hal/bleio/Device.c:376
+#: ports/nrf/common-hal/bleio/Device.c:280
+#: ports/nrf/common-hal/bleio/Device.c:313
+#: ports/nrf/common-hal/bleio/Device.c:344
+#: ports/nrf/common-hal/bleio/Device.c:378
#, fuzzy
msgid "Failed to release mutex"
msgstr "No se puede liberar el mutex, status: 0x%08lX"
-#: ports/nrf/common-hal/bleio/Device.c:387
+#: ports/nrf/common-hal/bleio/Device.c:389
#, fuzzy
msgid "Failed to continue scanning"
msgstr "No se puede iniciar el escaneo. status: 0x%02x"
-#: ports/nrf/common-hal/bleio/Device.c:419
+#: ports/nrf/common-hal/bleio/Device.c:421
#, fuzzy
msgid "Failed to connect:"
msgstr "No se puede conectar. status: 0x%02x"
-#: ports/nrf/common-hal/bleio/Device.c:489
+#: ports/nrf/common-hal/bleio/Device.c:491
#, fuzzy
msgid "Failed to add service"
msgstr "No se puede detener el anuncio. status: 0x%02x"
-#: ports/nrf/common-hal/bleio/Device.c:506
+#: ports/nrf/common-hal/bleio/Device.c:508
#, fuzzy
msgid "Failed to start advertising"
msgstr "No se puede inicar el anuncio. status: 0x%02x"
-#: ports/nrf/common-hal/bleio/Device.c:523
+#: ports/nrf/common-hal/bleio/Device.c:525
#, fuzzy
msgid "Failed to stop advertising"
msgstr "No se puede detener el anuncio. status: 0x%02x"
-#: ports/nrf/common-hal/bleio/Device.c:548
+#: ports/nrf/common-hal/bleio/Device.c:550
#, fuzzy
msgid "Failed to start scanning"
msgstr "No se puede iniciar el escaneo. status: 0x%02x"
-#: ports/nrf/common-hal/bleio/Device.c:564
+#: ports/nrf/common-hal/bleio/Device.c:566
#, fuzzy
msgid "Failed to create mutex"
msgstr "No se puede leer el valor del atributo. status 0x%02x"
@@ -851,19 +851,19 @@ msgstr "Todos los timers están siendo usados"
msgid "error = 0x%08lX"
msgstr "error = 0x%08lx"
-#: ports/nrf/common-hal/busio/UART.c:122
+#: ports/nrf/common-hal/busio/UART.c:95
msgid "Invalid buffer size"
msgstr "Tamaño de buffer inválido"
-#: ports/nrf/common-hal/busio/UART.c:126
+#: ports/nrf/common-hal/busio/UART.c:99
msgid "Odd parity is not supported"
msgstr "Paridad impar no soportada"
-#: ports/nrf/common-hal/busio/UART.c:358 ports/nrf/common-hal/busio/UART.c:362
-#: ports/nrf/common-hal/busio/UART.c:367 ports/nrf/common-hal/busio/UART.c:372
-#: ports/nrf/common-hal/busio/UART.c:378 ports/nrf/common-hal/busio/UART.c:383
-#: ports/nrf/common-hal/busio/UART.c:388 ports/nrf/common-hal/busio/UART.c:392
-#: ports/nrf/common-hal/busio/UART.c:400
+#: ports/nrf/common-hal/busio/UART.c:335 ports/nrf/common-hal/busio/UART.c:339
+#: ports/nrf/common-hal/busio/UART.c:344 ports/nrf/common-hal/busio/UART.c:349
+#: ports/nrf/common-hal/busio/UART.c:355 ports/nrf/common-hal/busio/UART.c:360
+#: ports/nrf/common-hal/busio/UART.c:365 ports/nrf/common-hal/busio/UART.c:369
+#: ports/nrf/common-hal/busio/UART.c:377
msgid "busio.UART not available"
msgstr "busio.UART no disponible"
@@ -1368,7 +1368,7 @@ msgstr ""
#: py/modstruct.c:148 py/modstruct.c:156 py/modstruct.c:244 py/modstruct.c:254
#: shared-bindings/struct/__init__.c:102 shared-bindings/struct/__init__.c:161
-#: shared-module/struct/__init__.c:183
+#: shared-module/struct/__init__.c:128 shared-module/struct/__init__.c:183
msgid "buffer too small"
msgstr "buffer demasiado pequeño"
@@ -2147,7 +2147,7 @@ msgid "buffer must be a bytes-like object"
msgstr "buffer debe de ser un objeto bytes-like"
#: shared-bindings/audioio/WaveFile.c:78
-#: shared-bindings/displayio/OnDiskBitmap.c:85
+#: shared-bindings/displayio/OnDiskBitmap.c:87
msgid "file must be a file opened in byte mode"
msgstr "el archivo deberia ser una archivo abierto en modo byte"
@@ -2192,16 +2192,34 @@ msgstr "palette debe ser 32 bytes de largo"
msgid "Expected a UUID"
msgstr "Se espera un %q"
-#: shared-bindings/bleio/CharacteristicBuffer.c:61
+#: shared-bindings/bleio/CharacteristicBuffer.c:39
+#, fuzzy
+msgid "Not connected"
+msgstr "No se puede conectar a AP"
+
+#: shared-bindings/bleio/CharacteristicBuffer.c:74
+#, fuzzy
+msgid "timeout must be >= 0.0"
+msgstr "bits debe ser 8"
+
+#: shared-bindings/bleio/CharacteristicBuffer.c:79
#, fuzzy
msgid "buffer_size must be >= 1"
msgstr "los buffers deben de tener la misma longitud"
-#: shared-bindings/bleio/CharacteristicBuffer.c:65
+#: shared-bindings/bleio/CharacteristicBuffer.c:83
#, fuzzy
msgid "Expected a Characteristic"
msgstr "No se puede agregar la Característica."
+#: shared-bindings/bleio/CharacteristicBuffer.c:138
+msgid "CharacteristicBuffer writing not provided"
+msgstr ""
+
+#: shared-bindings/bleio/CharacteristicBuffer.c:147
+msgid "Not connected."
+msgstr ""
+
#: shared-bindings/bleio/Device.c:210
msgid "Can't add services in Central mode"
msgstr "No se pueden agregar servicio en modo Central"
@@ -2239,16 +2257,20 @@ msgstr ""
msgid "UUID integer value not in range 0 to 0xffff"
msgstr ""
-#: shared-bindings/bleio/UUID.c:75
-msgid "UUID value is not int or byte buffer"
+#: shared-bindings/bleio/UUID.c:91
+msgid "UUID string not 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'"
+msgstr ""
+
+#: shared-bindings/bleio/UUID.c:103
+msgid "UUID value is not str, int or byte buffer"
msgstr ""
-#: shared-bindings/bleio/UUID.c:79
+#: shared-bindings/bleio/UUID.c:107
#, fuzzy
msgid "Byte buffer must be 16 bytes."
msgstr "buffer debe de ser un objeto bytes-like"
-#: shared-bindings/bleio/UUID.c:120
+#: shared-bindings/bleio/UUID.c:151
msgid "not a 128-bit UUID"
msgstr ""
@@ -2673,11 +2695,6 @@ msgstr "No se puede volver a montar '/' cuando el USB esta activo."
msgid "'S' and 'O' are not supported format types"
msgstr "'S' y 'O' no son compatibles con los tipos de formato"
-#: shared-module/struct/__init__.c:128
-#, fuzzy, c-format
-msgid "unpack requires a buffer of %d bytes"
-msgstr "Falló la asignación del buffer RX de %d bytes"
-
#: shared-module/struct/__init__.c:136
msgid "too many arguments provided with the given format"
msgstr "demasiados argumentos provistos con el formato dado"
@@ -2781,32 +2798,31 @@ msgstr ""
"El botón reset fue presionado mientras arrancaba CircuitPython. Presiona "
"otra vez para salir del modo seguro.\n"
-#~ msgid "Baud rate too high for this SPI peripheral"
-#~ msgstr "Baud rate demasiado alto para este periférico SPI"
-
-#~ msgid "Invalid Service type"
-#~ msgstr "Tipo de Servicio inválido"
-
-#~ msgid "Can not apply advertisement data. status: 0x%02x"
-#~ msgstr "No se puede aplicar los datos de anuncio. status: 0x%02x"
+#~ msgid "Invalid UUID string length"
+#~ msgstr "Longitud de string UUID inválida"
-#~ msgid "Can encode UUID into the advertisement packet."
-#~ msgstr "Se puede codificar el UUID en el paquete de anuncio."
+#~ msgid "Invalid UUID parameter"
+#~ msgstr "Parámetro UUID inválido"
-#~ msgid "Can not encode UUID, to check length."
-#~ msgstr "No se puede codificar el UUID, para revisar la longitud."
+#~ msgid "Can not query for the device address."
+#~ msgstr "No se puede consultar la dirección del dispositivo."
-#~ msgid "Cannot apply GAP parameters."
-#~ msgstr "No se pueden aplicar los parámetros GAP."
+#~ msgid "Looks like our core CircuitPython code crashed hard. Whoops!\n"
+#~ msgstr ""
+#~ "Parece que nuestro código CircuitPython dejó de funcionar. Whoops!\n"
-#~ msgid "Can not add Service."
-#~ msgstr "No se puede agregar el Servicio."
+#~ msgid "Cannot set PPCP parameters."
+#~ msgstr "No se pueden establecer los parámetros PPCP."
-#~ msgid "Wrong number of bytes provided"
-#~ msgstr "Numero erroneo de bytes dados"
+#~ msgid ""
+#~ "enough power for the whole circuit and press reset (after ejecting "
+#~ "CIRCUITPY).\n"
+#~ msgstr ""
+#~ "suficiente poder para todo el circuito y presiona reset (después de "
+#~ "expulsar CIRCUITPY).\n"
-#~ msgid "Wrong address length"
-#~ msgstr "Longitud de address erronea"
+#~ msgid "Can not apply device name in the stack."
+#~ msgstr "No se puede aplicar el nombre del dispositivo en el stack."
#, fuzzy
#~ msgid ""
@@ -2815,28 +2831,33 @@ msgstr ""
#~ "Por favor registra un issue en la siguiente URL con el contenidos de tu "
#~ "unidad de almacenamiento CIRCUITPY:\n"
-#~ msgid "Can not apply device name in the stack."
-#~ msgstr "No se puede aplicar el nombre del dispositivo en el stack."
+#~ msgid "Wrong address length"
+#~ msgstr "Longitud de address erronea"
-#~ msgid ""
-#~ "enough power for the whole circuit and press reset (after ejecting "
-#~ "CIRCUITPY).\n"
-#~ msgstr ""
-#~ "suficiente poder para todo el circuito y presiona reset (después de "
-#~ "expulsar CIRCUITPY).\n"
+#~ msgid "Wrong number of bytes provided"
+#~ msgstr "Numero erroneo de bytes dados"
-#~ msgid "Cannot set PPCP parameters."
-#~ msgstr "No se pueden establecer los parámetros PPCP."
+#~ msgid "Can not add Service."
+#~ msgstr "No se puede agregar el Servicio."
-#~ msgid "Looks like our core CircuitPython code crashed hard. Whoops!\n"
-#~ msgstr ""
-#~ "Parece que nuestro código CircuitPython dejó de funcionar. Whoops!\n"
+#~ msgid "Cannot apply GAP parameters."
+#~ msgstr "No se pueden aplicar los parámetros GAP."
-#~ msgid "Can not query for the device address."
-#~ msgstr "No se puede consultar la dirección del dispositivo."
+#~ msgid "Can not encode UUID, to check length."
+#~ msgstr "No se puede codificar el UUID, para revisar la longitud."
-#~ msgid "Invalid UUID parameter"
-#~ msgstr "Parámetro UUID inválido"
+#~ msgid "Can encode UUID into the advertisement packet."
+#~ msgstr "Se puede codificar el UUID en el paquete de anuncio."
-#~ msgid "Invalid UUID string length"
-#~ msgstr "Longitud de string UUID inválida"
+#~ msgid "Can not apply advertisement data. status: 0x%02x"
+#~ msgstr "No se puede aplicar los datos de anuncio. status: 0x%02x"
+
+#~ msgid "Invalid Service type"
+#~ msgstr "Tipo de Servicio inválido"
+
+#~ msgid "Baud rate too high for this SPI peripheral"
+#~ msgstr "Baud rate demasiado alto para este periférico SPI"
+
+#, fuzzy
+#~ msgid "unpack requires a buffer of %d bytes"
+#~ msgstr "Falló la asignación del buffer RX de %d bytes"
diff --git a/locale/fil.po b/locale/fil.po
index 8d112726e..ad9134f8e 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-01-20 22:46-0500\n"
+"POT-Creation-Date: 2019-01-21 21:50-0500\n"
"PO-Revision-Date: 2018-12-20 22:15-0800\n"
"Last-Translator: Timothy <me@timothygarcia.ca>\n"
"Language-Team: fil\n"
@@ -338,12 +338,12 @@ msgid "bytes > 8 bits not supported"
msgstr "hindi sinusuportahan ang bytes > 8 bits"
#: ports/atmel-samd/common-hal/busio/UART.c:73
-#: ports/nrf/common-hal/busio/UART.c:118
+#: ports/nrf/common-hal/busio/UART.c:91
msgid "tx and rx cannot both be None"
msgstr "tx at rx hindi pwedeng parehas na None"
#: ports/atmel-samd/common-hal/busio/UART.c:146
-#: ports/nrf/common-hal/busio/UART.c:152
+#: ports/nrf/common-hal/busio/UART.c:132
msgid "Failed to allocate RX buffer"
msgstr "Nabigong ilaan ang RX buffer"
@@ -352,12 +352,12 @@ msgid "Could not initialize UART"
msgstr "Hindi ma-initialize ang UART"
#: ports/atmel-samd/common-hal/busio/UART.c:241
-#: ports/nrf/common-hal/busio/UART.c:197
+#: ports/nrf/common-hal/busio/UART.c:174
msgid "No RX pin"
msgstr "Walang RX pin"
#: ports/atmel-samd/common-hal/busio/UART.c:300
-#: ports/nrf/common-hal/busio/UART.c:232
+#: ports/nrf/common-hal/busio/UART.c:209
msgid "No TX pin"
msgstr "Walang TX pin"
@@ -720,7 +720,7 @@ msgstr "Hindi mabalitaan ang attribute value, status: 0x%08lX"
msgid "Failed to read attribute value, err %0x04x"
msgstr "Hindi mabasa ang value ng attribute, status: 0x%08lX"
-#: ports/nrf/common-hal/bleio/Characteristic.c:172
+#: ports/nrf/common-hal/bleio/Characteristic.c:172 ports/nrf/sd_mutex.c:34
#, fuzzy, c-format
msgid "Failed to acquire mutex, err 0x%04x"
msgstr "Nabigo sa pag kuha ng mutex, status: 0x%08lX"
@@ -730,7 +730,7 @@ msgstr "Nabigo sa pag kuha ng mutex, status: 0x%08lX"
msgid "Failed to write attribute value, err 0x%04x"
msgstr "Hindi maisulat ang attribute value, status: 0x%08lX"
-#: ports/nrf/common-hal/bleio/Characteristic.c:189
+#: ports/nrf/common-hal/bleio/Characteristic.c:189 ports/nrf/sd_mutex.c:54
#, fuzzy, c-format
msgid "Failed to release mutex, err 0x%04x"
msgstr "Nabigo sa pagrelease ng mutex, status: 0x%08lX"
@@ -751,51 +751,51 @@ msgstr "Hindi makasya ang data sa loob ng advertisement packet"
msgid "Failed to discover services"
msgstr "Nabigo sa pagdiscover ng services, status: 0x%08lX"
-#: ports/nrf/common-hal/bleio/Device.c:267
-#: ports/nrf/common-hal/bleio/Device.c:300
+#: ports/nrf/common-hal/bleio/Device.c:268
+#: ports/nrf/common-hal/bleio/Device.c:302
#, fuzzy
msgid "Failed to acquire mutex"
msgstr "Nabigo sa pag kuha ng mutex, status: 0x%08lX"
-#: ports/nrf/common-hal/bleio/Device.c:278
-#: ports/nrf/common-hal/bleio/Device.c:311
-#: ports/nrf/common-hal/bleio/Device.c:342
-#: ports/nrf/common-hal/bleio/Device.c:376
+#: ports/nrf/common-hal/bleio/Device.c:280
+#: ports/nrf/common-hal/bleio/Device.c:313
+#: ports/nrf/common-hal/bleio/Device.c:344
+#: ports/nrf/common-hal/bleio/Device.c:378
#, fuzzy
msgid "Failed to release mutex"
msgstr "Nabigo sa pagrelease ng mutex, status: 0x%08lX"
-#: ports/nrf/common-hal/bleio/Device.c:387
+#: ports/nrf/common-hal/bleio/Device.c:389
#, fuzzy
msgid "Failed to continue scanning"
msgstr "Hindi maituloy ang pag scan, status: 0x%0xlX"
-#: ports/nrf/common-hal/bleio/Device.c:419
+#: ports/nrf/common-hal/bleio/Device.c:421
#, fuzzy
msgid "Failed to connect:"
msgstr "Hindi makaconnect, status: 0x%08lX"
-#: ports/nrf/common-hal/bleio/Device.c:489
+#: ports/nrf/common-hal/bleio/Device.c:491
#, fuzzy
msgid "Failed to add service"
msgstr "Hindi matagumpay ang paglagay ng service, status: 0x%08lX"
-#: ports/nrf/common-hal/bleio/Device.c:506
+#: ports/nrf/common-hal/bleio/Device.c:508
#, fuzzy
msgid "Failed to start advertising"
msgstr "Hindi masimulaan ang advertisement, status: 0x%08lX"
-#: ports/nrf/common-hal/bleio/Device.c:523
+#: ports/nrf/common-hal/bleio/Device.c:525
#, fuzzy
msgid "Failed to stop advertising"
msgstr "Hindi mahinto ang advertisement, status: 0x%08lX"
-#: ports/nrf/common-hal/bleio/Device.c:548
+#: ports/nrf/common-hal/bleio/Device.c:550
#, fuzzy
msgid "Failed to start scanning"
msgstr "Hindi masimulaan mag i-scan, status: 0x%0xlX"
-#: ports/nrf/common-hal/bleio/Device.c:564
+#: ports/nrf/common-hal/bleio/Device.c:566
#, fuzzy
msgid "Failed to create mutex"
msgstr "Hindi matagumpay ang pagbuo ng mutex, status: 0x%0xlX"
@@ -852,19 +852,19 @@ msgstr "Lahat ng SPI peripherals ay ginagamit"
msgid "error = 0x%08lX"
msgstr "error = 0x%08lX"
-#: ports/nrf/common-hal/busio/UART.c:122
+#: ports/nrf/common-hal/busio/UART.c:95
msgid "Invalid buffer size"
msgstr "Mali ang buffer size"
-#: ports/nrf/common-hal/busio/UART.c:126
+#: ports/nrf/common-hal/busio/UART.c:99
msgid "Odd parity is not supported"
msgstr "Odd na parity ay hindi supportado"
-#: ports/nrf/common-hal/busio/UART.c:358 ports/nrf/common-hal/busio/UART.c:362
-#: ports/nrf/common-hal/busio/UART.c:367 ports/nrf/common-hal/busio/UART.c:372
-#: ports/nrf/common-hal/busio/UART.c:378 ports/nrf/common-hal/busio/UART.c:383
-#: ports/nrf/common-hal/busio/UART.c:388 ports/nrf/common-hal/busio/UART.c:392
-#: ports/nrf/common-hal/busio/UART.c:400
+#: ports/nrf/common-hal/busio/UART.c:335 ports/nrf/common-hal/busio/UART.c:339
+#: ports/nrf/common-hal/busio/UART.c:344 ports/nrf/common-hal/busio/UART.c:349
+#: ports/nrf/common-hal/busio/UART.c:355 ports/nrf/common-hal/busio/UART.c:360
+#: ports/nrf/common-hal/busio/UART.c:365 ports/nrf/common-hal/busio/UART.c:369
+#: ports/nrf/common-hal/busio/UART.c:377
msgid "busio.UART not available"
msgstr "busio.UART hindi available"
@@ -1369,7 +1369,7 @@ msgstr "puno na ang schedule stack"
#: py/modstruct.c:148 py/modstruct.c:156 py/modstruct.c:244 py/modstruct.c:254
#: shared-bindings/struct/__init__.c:102 shared-bindings/struct/__init__.c:161
-#: shared-module/struct/__init__.c:183
+#: shared-module/struct/__init__.c:128 shared-module/struct/__init__.c:183
msgid "buffer too small"
msgstr "masyadong maliit ang buffer"
@@ -2152,7 +2152,7 @@ msgid "buffer must be a bytes-like object"
msgstr "buffer ay dapat bytes-like object"
#: shared-bindings/audioio/WaveFile.c:78
-#: shared-bindings/displayio/OnDiskBitmap.c:85
+#: shared-bindings/displayio/OnDiskBitmap.c:87
msgid "file must be a file opened in byte mode"
msgstr "file ay dapat buksan sa byte mode"
@@ -2197,16 +2197,34 @@ msgstr "ang palette ay dapat 32 bytes ang haba"
msgid "Expected a UUID"
msgstr "Umasa ng %q"
-#: shared-bindings/bleio/CharacteristicBuffer.c:61
+#: shared-bindings/bleio/CharacteristicBuffer.c:39
+#, fuzzy
+msgid "Not connected"
+msgstr "Hindi maka connect sa AP"
+
+#: shared-bindings/bleio/CharacteristicBuffer.c:74
+#, fuzzy
+msgid "timeout must be >= 0.0"
+msgstr "bits ay dapat walo (8)"
+
+#: shared-bindings/bleio/CharacteristicBuffer.c:79
#, fuzzy
msgid "buffer_size must be >= 1"
msgstr "aarehas na haba dapat ang buffer slices"
-#: shared-bindings/bleio/CharacteristicBuffer.c:65
+#: shared-bindings/bleio/CharacteristicBuffer.c:83
#, fuzzy
msgid "Expected a Characteristic"
msgstr "Hindi mabasa and Characteristic."
+#: shared-bindings/bleio/CharacteristicBuffer.c:138
+msgid "CharacteristicBuffer writing not provided"
+msgstr ""
+
+#: shared-bindings/bleio/CharacteristicBuffer.c:147
+msgid "Not connected."
+msgstr ""
+
#: shared-bindings/bleio/Device.c:210
msgid "Can't add services in Central mode"
msgstr "Hindi maarang maglagay ng service sa Central mode"
@@ -2244,16 +2262,20 @@ msgstr ""
msgid "UUID integer value not in range 0 to 0xffff"
msgstr ""
-#: shared-bindings/bleio/UUID.c:75
-msgid "UUID value is not int or byte buffer"
+#: shared-bindings/bleio/UUID.c:91
+msgid "UUID string not 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'"
msgstr ""
-#: shared-bindings/bleio/UUID.c:79
+#: shared-bindings/bleio/UUID.c:103
+msgid "UUID value is not str, int or byte buffer"
+msgstr ""
+
+#: shared-bindings/bleio/UUID.c:107
#, fuzzy
msgid "Byte buffer must be 16 bytes."
msgstr "buffer ay dapat bytes-like object"
-#: shared-bindings/bleio/UUID.c:120
+#: shared-bindings/bleio/UUID.c:151
msgid "not a 128-bit UUID"
msgstr ""
@@ -2679,11 +2701,6 @@ msgstr "Hindi ma-remount '/' kapag aktibo ang USB."
msgid "'S' and 'O' are not supported format types"
msgstr "Ang 'S' at 'O' ay hindi suportadong uri ng format"
-#: shared-module/struct/__init__.c:128
-#, fuzzy, c-format
-msgid "unpack requires a buffer of %d bytes"
-msgstr "Nabigong ilaan ang RX buffer ng %d bytes"
-
#: shared-module/struct/__init__.c:136
msgid "too many arguments provided with the given format"
msgstr "masyadong maraming mga argumento na ibinigay sa ibinigay na format"
@@ -2787,33 +2804,31 @@ msgstr ""
"Ang reset button ay pinindot habang nag boot ang CircuitPython. Pindutin "
"ulit para lumabas sa safe mode.\n"
-#, fuzzy
-#~ msgid "palette must be displayio.Palette"
-#~ msgstr "ang palette ay dapat 32 bytes ang haba"
-
-#~ msgid "Invalid Service type"
-#~ msgstr "Mali ang tipo ng serbisyo"
-
-#~ msgid "Can not apply advertisement data. status: 0x%02x"
-#~ msgstr "Hindi ma i-apply ang advertisement data. status: 0x%02x"
+#~ msgid "Invalid UUID string length"
+#~ msgstr "Mali ang UUID string length"
-#~ msgid "Can encode UUID into the advertisement packet."
-#~ msgstr "Maaring i-encode ang UUID sa advertisement packet."
+#~ msgid "Invalid UUID parameter"
+#~ msgstr "Mali ang UUID parameter"
-#~ msgid "Can not encode UUID, to check length."
-#~ msgstr "Hindi ma-encode UUID, para suriin ang haba."
+#~ msgid "Can not query for the device address."
+#~ msgstr "Hindi maaaring mag-query para sa address ng device."
-#~ msgid "Cannot apply GAP parameters."
-#~ msgstr "Hindi ma-apply ang GAP parameters."
+#~ msgid "Looks like our core CircuitPython code crashed hard. Whoops!\n"
+#~ msgstr ""
+#~ "Mukhang ang core CircuitPython code ay nag-crash ng malakas. Aray!\n"
-#~ msgid "Can not add Service."
-#~ msgstr "Hindi maidaragdag ang serbisyo."
+#~ msgid "Cannot set PPCP parameters."
+#~ msgstr "Hindi ma-set ang PPCP parameters."
-#~ msgid "Wrong number of bytes provided"
-#~ msgstr "Mali ang bilang ng bytes"
+#~ msgid ""
+#~ "enough power for the whole circuit and press reset (after ejecting "
+#~ "CIRCUITPY).\n"
+#~ msgstr ""
+#~ "ay nagbibigay ng sapat na power para sa buong circuit at i-press ang "
+#~ "reset (pagkatapos i-eject ang CIRCUITPY).\n"
-#~ msgid "Wrong address length"
-#~ msgstr "Mali ang address length"
+#~ msgid "Can not apply device name in the stack."
+#~ msgstr "Hindi maaaring ma-aplay ang device name sa stack."
#~ msgid ""
#~ "Please file an issue here with the contents of your CIRCUITPY drive:\n"
@@ -2821,28 +2836,34 @@ msgstr ""
#~ "Mag-file ng isang isyu dito gamit ang mga nilalaman ng iyong CIRCUITPY "
#~ "drive:\n"
-#~ msgid "Can not apply device name in the stack."
-#~ msgstr "Hindi maaaring ma-aplay ang device name sa stack."
+#~ msgid "Wrong address length"
+#~ msgstr "Mali ang address length"
-#~ msgid ""
-#~ "enough power for the whole circuit and press reset (after ejecting "
-#~ "CIRCUITPY).\n"
-#~ msgstr ""
-#~ "ay nagbibigay ng sapat na power para sa buong circuit at i-press ang "
-#~ "reset (pagkatapos i-eject ang CIRCUITPY).\n"
+#~ msgid "Wrong number of bytes provided"
+#~ msgstr "Mali ang bilang ng bytes"
-#~ msgid "Cannot set PPCP parameters."
-#~ msgstr "Hindi ma-set ang PPCP parameters."
+#~ msgid "Can not add Service."
+#~ msgstr "Hindi maidaragdag ang serbisyo."
-#~ msgid "Looks like our core CircuitPython code crashed hard. Whoops!\n"
-#~ msgstr ""
-#~ "Mukhang ang core CircuitPython code ay nag-crash ng malakas. Aray!\n"
+#~ msgid "Cannot apply GAP parameters."
+#~ msgstr "Hindi ma-apply ang GAP parameters."
-#~ msgid "Can not query for the device address."
-#~ msgstr "Hindi maaaring mag-query para sa address ng device."
+#~ msgid "Can not encode UUID, to check length."
+#~ msgstr "Hindi ma-encode UUID, para suriin ang haba."
-#~ msgid "Invalid UUID parameter"
-#~ msgstr "Mali ang UUID parameter"
+#~ msgid "Can encode UUID into the advertisement packet."
+#~ msgstr "Maaring i-encode ang UUID sa advertisement packet."
-#~ msgid "Invalid UUID string length"
-#~ msgstr "Mali ang UUID string length"
+#~ msgid "Can not apply advertisement data. status: 0x%02x"
+#~ msgstr "Hindi ma i-apply ang advertisement data. status: 0x%02x"
+
+#~ msgid "Invalid Service type"
+#~ msgstr "Mali ang tipo ng serbisyo"
+
+#, fuzzy
+#~ msgid "palette must be displayio.Palette"
+#~ msgstr "ang palette ay dapat 32 bytes ang haba"
+
+#, fuzzy
+#~ msgid "unpack requires a buffer of %d bytes"
+#~ msgstr "Nabigong ilaan ang RX buffer ng %d bytes"
diff --git a/locale/fr.po b/locale/fr.po
index 2110a4c6e..4c7fb0502 100644
--- a/locale/fr.po
+++ b/locale/fr.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.1\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-01-20 22:46-0500\n"
+"POT-Creation-Date: 2019-01-21 21:50-0500\n"
"PO-Revision-Date: 2018-12-23 20:05+0100\n"
"Last-Translator: Pierrick Couturier <arofarn@arofarn.info>\n"
"Language-Team: fr\n"
@@ -335,12 +335,12 @@ msgid "bytes > 8 bits not supported"
msgstr "octets > 8 bits non supporté"
#: ports/atmel-samd/common-hal/busio/UART.c:73
-#: ports/nrf/common-hal/busio/UART.c:118
+#: ports/nrf/common-hal/busio/UART.c:91
msgid "tx and rx cannot both be None"
msgstr "tx et rx ne peuvent être None tous les deux"
#: ports/atmel-samd/common-hal/busio/UART.c:146
-#: ports/nrf/common-hal/busio/UART.c:152
+#: ports/nrf/common-hal/busio/UART.c:132
msgid "Failed to allocate RX buffer"
msgstr "Echec de l'allocation du tampon RX"
@@ -349,12 +349,12 @@ msgid "Could not initialize UART"
msgstr "L'UART n'a pu être initialisé"
#: ports/atmel-samd/common-hal/busio/UART.c:241
-#: ports/nrf/common-hal/busio/UART.c:197
+#: ports/nrf/common-hal/busio/UART.c:174
msgid "No RX pin"
msgstr "Pas de broche RX"
#: ports/atmel-samd/common-hal/busio/UART.c:300
-#: ports/nrf/common-hal/busio/UART.c:232
+#: ports/nrf/common-hal/busio/UART.c:209
msgid "No TX pin"
msgstr "Pas de broche TX"
@@ -717,7 +717,7 @@ msgstr "Impossible de notifier la valeur de l'attribut. status: 0x%08lX"
msgid "Failed to read attribute value, err %0x04x"
msgstr "Impossible de lire la valeur de l'attribut. status: 0x%08lX"
-#: ports/nrf/common-hal/bleio/Characteristic.c:172
+#: ports/nrf/common-hal/bleio/Characteristic.c:172 ports/nrf/sd_mutex.c:34
#, fuzzy, c-format
msgid "Failed to acquire mutex, err 0x%04x"
msgstr "Echec de l'obtention de mutex, status: 0x%08lX"
@@ -727,7 +727,7 @@ msgstr "Echec de l'obtention de mutex, status: 0x%08lX"
msgid "Failed to write attribute value, err 0x%04x"
msgstr "Impossible d'écrire la valeur de l'attribut. status: 0x%08lX"
-#: ports/nrf/common-hal/bleio/Characteristic.c:189
+#: ports/nrf/common-hal/bleio/Characteristic.c:189 ports/nrf/sd_mutex.c:54
#, fuzzy, c-format
msgid "Failed to release mutex, err 0x%04x"
msgstr "Impossible de libérer mutex, status: 0x%08lX"
@@ -747,51 +747,51 @@ msgstr ""
msgid "Failed to discover services"
msgstr "Echec de la découverte de services, statut: 0x%08lX"
-#: ports/nrf/common-hal/bleio/Device.c:267
-#: ports/nrf/common-hal/bleio/Device.c:300
+#: ports/nrf/common-hal/bleio/Device.c:268
+#: ports/nrf/common-hal/bleio/Device.c:302
#, fuzzy
msgid "Failed to acquire mutex"
msgstr "Echec de l'obtention de mutex, status: 0x%08lX"
-#: ports/nrf/common-hal/bleio/Device.c:278
-#: ports/nrf/common-hal/bleio/Device.c:311
-#: ports/nrf/common-hal/bleio/Device.c:342
-#: ports/nrf/common-hal/bleio/Device.c:376
+#: ports/nrf/common-hal/bleio/Device.c:280
+#: ports/nrf/common-hal/bleio/Device.c:313
+#: ports/nrf/common-hal/bleio/Device.c:344
+#: ports/nrf/common-hal/bleio/Device.c:378
#, fuzzy
msgid "Failed to release mutex"
msgstr "Impossible de libérer mutex, status: 0x%08lX"
-#: ports/nrf/common-hal/bleio/Device.c:387
+#: ports/nrf/common-hal/bleio/Device.c:389
#, fuzzy
msgid "Failed to continue scanning"
msgstr "Impossible de commencer à scanner. statut: 0x%0xlX"
-#: ports/nrf/common-hal/bleio/Device.c:419
+#: ports/nrf/common-hal/bleio/Device.c:421
#, fuzzy
msgid "Failed to connect:"
msgstr "Connection impossible. statut: 0x%08lX"
-#: ports/nrf/common-hal/bleio/Device.c:489
+#: ports/nrf/common-hal/bleio/Device.c:491
#, fuzzy
msgid "Failed to add service"
msgstr "Echec de l'ajout de service, statut: 0x%08lX"
-#: ports/nrf/common-hal/bleio/Device.c:506
+#: ports/nrf/common-hal/bleio/Device.c:508
#, fuzzy
msgid "Failed to start advertising"
msgstr "Echec de l'ajout de service, statut: 0x%08lX"
-#: ports/nrf/common-hal/bleio/Device.c:523
+#: ports/nrf/common-hal/bleio/Device.c:525
#, fuzzy
msgid "Failed to stop advertising"
msgstr "Echec de l'ajout de service, statut: 0x%08lX"
-#: ports/nrf/common-hal/bleio/Device.c:548
+#: ports/nrf/common-hal/bleio/Device.c:550
#, fuzzy
msgid "Failed to start scanning"
msgstr "Impossible de commencer à scanner, statut: 0x%0xlX"
-#: ports/nrf/common-hal/bleio/Device.c:564
+#: ports/nrf/common-hal/bleio/Device.c:566
#, fuzzy
msgid "Failed to create mutex"
msgstr "Echec de la création de mutex, statut: 0x%0xlX"
@@ -850,21 +850,21 @@ msgstr "Tous les périphériques SPI sont utilisés"
msgid "error = 0x%08lX"
msgstr "erreur = 0x%08lX"
-#: ports/nrf/common-hal/busio/UART.c:122
+#: ports/nrf/common-hal/busio/UART.c:95
#, fuzzy
msgid "Invalid buffer size"
msgstr "longueur de tampon invalide"
-#: ports/nrf/common-hal/busio/UART.c:126
+#: ports/nrf/common-hal/busio/UART.c:99
#, fuzzy
msgid "Odd parity is not supported"
msgstr "parité impaire non supportée"
-#: ports/nrf/common-hal/busio/UART.c:358 ports/nrf/common-hal/busio/UART.c:362
-#: ports/nrf/common-hal/busio/UART.c:367 ports/nrf/common-hal/busio/UART.c:372
-#: ports/nrf/common-hal/busio/UART.c:378 ports/nrf/common-hal/busio/UART.c:383
-#: ports/nrf/common-hal/busio/UART.c:388 ports/nrf/common-hal/busio/UART.c:392
-#: ports/nrf/common-hal/busio/UART.c:400
+#: ports/nrf/common-hal/busio/UART.c:335 ports/nrf/common-hal/busio/UART.c:339
+#: ports/nrf/common-hal/busio/UART.c:344 ports/nrf/common-hal/busio/UART.c:349
+#: ports/nrf/common-hal/busio/UART.c:355 ports/nrf/common-hal/busio/UART.c:360
+#: ports/nrf/common-hal/busio/UART.c:365 ports/nrf/common-hal/busio/UART.c:369
+#: ports/nrf/common-hal/busio/UART.c:377
#, fuzzy
msgid "busio.UART not available"
msgstr "busio.UART n'est pas disponible"
@@ -1368,7 +1368,7 @@ msgstr "pile de plannification pleine"
#: py/modstruct.c:148 py/modstruct.c:156 py/modstruct.c:244 py/modstruct.c:254
#: shared-bindings/struct/__init__.c:102 shared-bindings/struct/__init__.c:161
-#: shared-module/struct/__init__.c:183
+#: shared-module/struct/__init__.c:128 shared-module/struct/__init__.c:183
msgid "buffer too small"
msgstr "tampon trop petit"
@@ -2154,7 +2154,7 @@ msgid "buffer must be a bytes-like object"
msgstr "le tampon doit être un objet bytes-like"
#: shared-bindings/audioio/WaveFile.c:78
-#: shared-bindings/displayio/OnDiskBitmap.c:85
+#: shared-bindings/displayio/OnDiskBitmap.c:87
msgid "file must be a file opened in byte mode"
msgstr "le fichier doit être un fichier ouvert en mode 'byte'"
@@ -2199,16 +2199,34 @@ msgstr "la palette doit être longue de 32 octets"
msgid "Expected a UUID"
msgstr "Attendu : %q"
-#: shared-bindings/bleio/CharacteristicBuffer.c:61
+#: shared-bindings/bleio/CharacteristicBuffer.c:39
+#, fuzzy
+msgid "Not connected"
+msgstr "Impossible de se connecter à 'AP'"
+
+#: shared-bindings/bleio/CharacteristicBuffer.c:74
+#, fuzzy
+msgid "timeout must be >= 0.0"
+msgstr "les bits doivent être 8"
+
+#: shared-bindings/bleio/CharacteristicBuffer.c:79
#, fuzzy
msgid "buffer_size must be >= 1"
msgstr "les slices de tampon doivent être de longueurs égales"
-#: shared-bindings/bleio/CharacteristicBuffer.c:65
+#: shared-bindings/bleio/CharacteristicBuffer.c:83
#, fuzzy
msgid "Expected a Characteristic"
msgstr "Impossible d'ajouter la Characteristic."
+#: shared-bindings/bleio/CharacteristicBuffer.c:138
+msgid "CharacteristicBuffer writing not provided"
+msgstr ""
+
+#: shared-bindings/bleio/CharacteristicBuffer.c:147
+msgid "Not connected."
+msgstr ""
+
#: shared-bindings/bleio/Device.c:210
msgid "Can't add services in Central mode"
msgstr "Impossible d'ajouter des service en mode Central"
@@ -2246,16 +2264,20 @@ msgstr ""
msgid "UUID integer value not in range 0 to 0xffff"
msgstr ""
-#: shared-bindings/bleio/UUID.c:75
-msgid "UUID value is not int or byte buffer"
+#: shared-bindings/bleio/UUID.c:91
+msgid "UUID string not 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'"
+msgstr ""
+
+#: shared-bindings/bleio/UUID.c:103
+msgid "UUID value is not str, int or byte buffer"
msgstr ""
-#: shared-bindings/bleio/UUID.c:79
+#: shared-bindings/bleio/UUID.c:107
#, fuzzy
msgid "Byte buffer must be 16 bytes."
msgstr "le tampon doit être un objet bytes-like"
-#: shared-bindings/bleio/UUID.c:120
+#: shared-bindings/bleio/UUID.c:151
msgid "not a 128-bit UUID"
msgstr ""
@@ -2703,11 +2725,6 @@ msgstr "'/' ne peut être remonté quand l'USB est actif."
msgid "'S' and 'O' are not supported format types"
msgstr "'S' et 'O' ne sont pas des types de format supportés"
-#: shared-module/struct/__init__.c:128
-#, fuzzy, c-format
-msgid "unpack requires a buffer of %d bytes"
-msgstr "Echec de l'allocation de %d octets du tampon RX"
-
#: shared-module/struct/__init__.c:136
msgid "too many arguments provided with the given format"
msgstr "trop d'arguments fournis avec ce format"
@@ -2816,63 +2833,67 @@ msgstr ""
"Le bouton 'reset' a été appuyé pendant le démarrage de CircuitPython. "
"Appuyer denouveau pour quitter de le mode sans-échec.\n"
-#~ msgid "Cannot set PPCP parameters."
-#~ msgstr "Impossible d'appliquer les paramètres PPCP"
+#~ msgid "Invalid UUID string length"
+#~ msgstr "Longeur de chaîne UUID invalide"
-#~ msgid "Can not add Characteristic."
-#~ msgstr "Impossible d'ajouter la Characteristic."
+#~ msgid "Invalid UUID parameter"
+#~ msgstr "Paramètre UUID invalide"
-#~ msgid "Can not query for the device address."
-#~ msgstr "Impossible d'obtenir l'adresse du périphérique"
+#, fuzzy
+#~ msgid "palette must be displayio.Palette"
+#~ msgstr "la palette doit être une displayio.Palette"
-#~ msgid "Can not add Service."
-#~ msgstr "Impossible d'ajouter le Service"
+#, fuzzy
+#~ msgid "value_size must be power of two"
+#~ msgstr "value_size doit être une puissance de 2"
+
+#~ msgid "Cannot apply GAP parameters."
+#~ msgstr "Impossible d'appliquer les paramètres GAP"
+
+#~ msgid "Invalid Service type"
+#~ msgstr "Type de service invalide"
#~ msgid ""
-#~ "enough power for the whole circuit and press reset (after ejecting "
-#~ "CIRCUITPY).\n"
+#~ "Please file an issue here with the contents of your CIRCUITPY drive:\n"
#~ msgstr ""
-#~ "assez de puissance pour l'ensemble du circuit et appuyez sur "
-#~ "'reset' (après avoir éjecter CIRCUITPY).\n"
+#~ "SVP, remontez le problème là avec le contenu du lecteur CIRCUITPY:\n"
-#~ msgid "Looks like our core CircuitPython code crashed hard. Whoops!\n"
-#~ msgstr ""
-#~ "Il semblerait que votre code CircuitPython a durement planté. Oups!\n"
+#~ msgid "Can not encode UUID, to check length."
+#~ msgstr "Impossible d'encoder l'UUID pour vérifier la longueur."
-#~ msgid "Can not apply device name in the stack."
-#~ msgstr "Impossible d'appliquer le nom de périphérique dans la pile"
+#~ msgid "Wrong address length"
+#~ msgstr "Mauvaise longueur d'adresse"
#, fuzzy
#~ msgid "Wrong number of bytes provided"
#~ msgstr "mauvais nombre d'octets fourni'"
-#~ msgid "Wrong address length"
-#~ msgstr "Mauvaise longueur d'adresse"
+#~ msgid "Can not apply device name in the stack."
+#~ msgstr "Impossible d'appliquer le nom de périphérique dans la pile"
-#~ msgid "Can not encode UUID, to check length."
-#~ msgstr "Impossible d'encoder l'UUID pour vérifier la longueur."
+#~ msgid "Looks like our core CircuitPython code crashed hard. Whoops!\n"
+#~ msgstr ""
+#~ "Il semblerait que votre code CircuitPython a durement planté. Oups!\n"
#~ msgid ""
-#~ "Please file an issue here with the contents of your CIRCUITPY drive:\n"
+#~ "enough power for the whole circuit and press reset (after ejecting "
+#~ "CIRCUITPY).\n"
#~ msgstr ""
-#~ "SVP, remontez le problème là avec le contenu du lecteur CIRCUITPY:\n"
-
-#~ msgid "Invalid Service type"
-#~ msgstr "Type de service invalide"
+#~ "assez de puissance pour l'ensemble du circuit et appuyez sur "
+#~ "'reset' (après avoir éjecter CIRCUITPY).\n"
-#~ msgid "Cannot apply GAP parameters."
-#~ msgstr "Impossible d'appliquer les paramètres GAP"
+#~ msgid "Can not add Service."
+#~ msgstr "Impossible d'ajouter le Service"
-#, fuzzy
-#~ msgid "value_size must be power of two"
-#~ msgstr "value_size doit être une puissance de 2"
+#~ msgid "Can not query for the device address."
+#~ msgstr "Impossible d'obtenir l'adresse du périphérique"
-#, fuzzy
-#~ msgid "palette must be displayio.Palette"
-#~ msgstr "la palette doit être une displayio.Palette"
+#~ msgid "Can not add Characteristic."
+#~ msgstr "Impossible d'ajouter la Characteristic."
-#~ msgid "Invalid UUID parameter"
-#~ msgstr "Paramètre UUID invalide"
+#~ msgid "Cannot set PPCP parameters."
+#~ msgstr "Impossible d'appliquer les paramètres PPCP"
-#~ msgid "Invalid UUID string length"
-#~ msgstr "Longeur de chaîne UUID invalide"
+#, fuzzy
+#~ msgid "unpack requires a buffer of %d bytes"
+#~ msgstr "Echec de l'allocation de %d octets du tampon RX"
diff --git a/locale/it_IT.po b/locale/it_IT.po
index cb413f073..8f5fb5684 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-01-20 22:46-0500\n"
+"POT-Creation-Date: 2019-01-21 21:50-0500\n"
"PO-Revision-Date: 2018-10-02 16:27+0200\n"
"Last-Translator: Enrico Paganin <enrico.paganin@mail.com>\n"
"Language-Team: \n"
@@ -339,12 +339,12 @@ msgid "bytes > 8 bits not supported"
msgstr "byte > 8 bit non supportati"
#: ports/atmel-samd/common-hal/busio/UART.c:73
-#: ports/nrf/common-hal/busio/UART.c:118
+#: ports/nrf/common-hal/busio/UART.c:91
msgid "tx and rx cannot both be None"
msgstr "tx e rx non possono essere entrambi None"
#: ports/atmel-samd/common-hal/busio/UART.c:146
-#: ports/nrf/common-hal/busio/UART.c:152
+#: ports/nrf/common-hal/busio/UART.c:132
msgid "Failed to allocate RX buffer"
msgstr "Impossibile allocare buffer RX"
@@ -353,12 +353,12 @@ msgid "Could not initialize UART"
msgstr "Impossibile inizializzare l'UART"
#: ports/atmel-samd/common-hal/busio/UART.c:241
-#: ports/nrf/common-hal/busio/UART.c:197
+#: ports/nrf/common-hal/busio/UART.c:174
msgid "No RX pin"
msgstr "Nessun pin RX"
#: ports/atmel-samd/common-hal/busio/UART.c:300
-#: ports/nrf/common-hal/busio/UART.c:232
+#: ports/nrf/common-hal/busio/UART.c:209
msgid "No TX pin"
msgstr "Nessun pin TX"
@@ -719,7 +719,7 @@ msgstr "Impossibile notificare valore dell'attributo. status: 0x%02x"
msgid "Failed to read attribute value, err %0x04x"
msgstr "Impossibile leggere valore dell'attributo. status: 0x%02x"
-#: ports/nrf/common-hal/bleio/Characteristic.c:172
+#: ports/nrf/common-hal/bleio/Characteristic.c:172 ports/nrf/sd_mutex.c:34
#, fuzzy, c-format
msgid "Failed to acquire mutex, err 0x%04x"
msgstr "Impossibile leggere valore dell'attributo. status: 0x%02x"
@@ -729,7 +729,7 @@ msgstr "Impossibile leggere valore dell'attributo. status: 0x%02x"
msgid "Failed to write attribute value, err 0x%04x"
msgstr "Impossibile scrivere valore dell'attributo. status: 0x%02x"
-#: ports/nrf/common-hal/bleio/Characteristic.c:189
+#: ports/nrf/common-hal/bleio/Characteristic.c:189 ports/nrf/sd_mutex.c:54
#, fuzzy, c-format
msgid "Failed to release mutex, err 0x%04x"
msgstr "Impossibile leggere valore dell'attributo. status: 0x%02x"
@@ -750,51 +750,51 @@ msgstr "Impossibile inserire dati nel pacchetto di advertisement."
msgid "Failed to discover services"
msgstr "Impossibile fermare advertisement. status: 0x%02x"
-#: ports/nrf/common-hal/bleio/Device.c:267
-#: ports/nrf/common-hal/bleio/Device.c:300
+#: ports/nrf/common-hal/bleio/Device.c:268
+#: ports/nrf/common-hal/bleio/Device.c:302
#, fuzzy
msgid "Failed to acquire mutex"
msgstr "Impossibile allocare buffer RX"
-#: ports/nrf/common-hal/bleio/Device.c:278
-#: ports/nrf/common-hal/bleio/Device.c:311
-#: ports/nrf/common-hal/bleio/Device.c:342
-#: ports/nrf/common-hal/bleio/Device.c:376
+#: ports/nrf/common-hal/bleio/Device.c:280
+#: ports/nrf/common-hal/bleio/Device.c:313
+#: ports/nrf/common-hal/bleio/Device.c:344
+#: ports/nrf/common-hal/bleio/Device.c:378
#, fuzzy
msgid "Failed to release mutex"
msgstr "Impossibile leggere valore dell'attributo. status: 0x%02x"
-#: ports/nrf/common-hal/bleio/Device.c:387
+#: ports/nrf/common-hal/bleio/Device.c:389
#, fuzzy
msgid "Failed to continue scanning"
msgstr "Impossible iniziare la scansione. status: 0x%02x"
-#: ports/nrf/common-hal/bleio/Device.c:419
+#: ports/nrf/common-hal/bleio/Device.c:421
#, fuzzy
msgid "Failed to connect:"
msgstr "Impossibile connettersi. status: 0x%02x"
-#: ports/nrf/common-hal/bleio/Device.c:489
+#: ports/nrf/common-hal/bleio/Device.c:491
#, fuzzy
msgid "Failed to add service"
msgstr "Impossibile fermare advertisement. status: 0x%02x"
-#: ports/nrf/common-hal/bleio/Device.c:506
+#: ports/nrf/common-hal/bleio/Device.c:508
#, fuzzy
msgid "Failed to start advertising"
msgstr "Impossibile avviare advertisement. status: 0x%02x"
-#: ports/nrf/common-hal/bleio/Device.c:523
+#: ports/nrf/common-hal/bleio/Device.c:525
#, fuzzy
msgid "Failed to stop advertising"
msgstr "Impossibile fermare advertisement. status: 0x%02x"
-#: ports/nrf/common-hal/bleio/Device.c:548
+#: ports/nrf/common-hal/bleio/Device.c:550
#, fuzzy
msgid "Failed to start scanning"
msgstr "Impossible iniziare la scansione. status: 0x%02x"
-#: ports/nrf/common-hal/bleio/Device.c:564
+#: ports/nrf/common-hal/bleio/Device.c:566
#, fuzzy
msgid "Failed to create mutex"
msgstr "Impossibile leggere valore dell'attributo. status: 0x%02x"
@@ -851,21 +851,21 @@ msgstr "Tutte le periferiche SPI sono in uso"
msgid "error = 0x%08lX"
msgstr ""
-#: ports/nrf/common-hal/busio/UART.c:122
+#: ports/nrf/common-hal/busio/UART.c:95
#, fuzzy
msgid "Invalid buffer size"
msgstr "lunghezza del buffer non valida"
-#: ports/nrf/common-hal/busio/UART.c:126
+#: ports/nrf/common-hal/busio/UART.c:99
#, fuzzy
msgid "Odd parity is not supported"
msgstr "operazione I2C non supportata"
-#: ports/nrf/common-hal/busio/UART.c:358 ports/nrf/common-hal/busio/UART.c:362
-#: ports/nrf/common-hal/busio/UART.c:367 ports/nrf/common-hal/busio/UART.c:372
-#: ports/nrf/common-hal/busio/UART.c:378 ports/nrf/common-hal/busio/UART.c:383
-#: ports/nrf/common-hal/busio/UART.c:388 ports/nrf/common-hal/busio/UART.c:392
-#: ports/nrf/common-hal/busio/UART.c:400
+#: ports/nrf/common-hal/busio/UART.c:335 ports/nrf/common-hal/busio/UART.c:339
+#: ports/nrf/common-hal/busio/UART.c:344 ports/nrf/common-hal/busio/UART.c:349
+#: ports/nrf/common-hal/busio/UART.c:355 ports/nrf/common-hal/busio/UART.c:360
+#: ports/nrf/common-hal/busio/UART.c:365 ports/nrf/common-hal/busio/UART.c:369
+#: ports/nrf/common-hal/busio/UART.c:377
#, fuzzy
msgid "busio.UART not available"
msgstr "busio.UART non ancora implementato"
@@ -1368,7 +1368,7 @@ msgstr ""
#: py/modstruct.c:148 py/modstruct.c:156 py/modstruct.c:244 py/modstruct.c:254
#: shared-bindings/struct/__init__.c:102 shared-bindings/struct/__init__.c:161
-#: shared-module/struct/__init__.c:183
+#: shared-module/struct/__init__.c:128 shared-module/struct/__init__.c:183
msgid "buffer too small"
msgstr "buffer troppo piccolo"
@@ -2151,7 +2151,7 @@ msgid "buffer must be a bytes-like object"
msgstr ""
#: shared-bindings/audioio/WaveFile.c:78
-#: shared-bindings/displayio/OnDiskBitmap.c:85
+#: shared-bindings/displayio/OnDiskBitmap.c:87
msgid "file must be a file opened in byte mode"
msgstr ""
@@ -2196,16 +2196,34 @@ msgstr "la palette deve essere lunga 32 byte"
msgid "Expected a UUID"
msgstr "Atteso un %q"
-#: shared-bindings/bleio/CharacteristicBuffer.c:61
+#: shared-bindings/bleio/CharacteristicBuffer.c:39
+#, fuzzy
+msgid "Not connected"
+msgstr "Impossible connettersi all'AP"
+
+#: shared-bindings/bleio/CharacteristicBuffer.c:74
+#, fuzzy
+msgid "timeout must be >= 0.0"
+msgstr "i bit devono essere 8"
+
+#: shared-bindings/bleio/CharacteristicBuffer.c:79
#, fuzzy
msgid "buffer_size must be >= 1"
msgstr "slice del buffer devono essere della stessa lunghezza"
-#: shared-bindings/bleio/CharacteristicBuffer.c:65
+#: shared-bindings/bleio/CharacteristicBuffer.c:83
#, fuzzy
msgid "Expected a Characteristic"
msgstr "Non è possibile aggiungere Characteristic."
+#: shared-bindings/bleio/CharacteristicBuffer.c:138
+msgid "CharacteristicBuffer writing not provided"
+msgstr ""
+
+#: shared-bindings/bleio/CharacteristicBuffer.c:147
+msgid "Not connected."
+msgstr ""
+
#: shared-bindings/bleio/Device.c:210
msgid "Can't add services in Central mode"
msgstr ""
@@ -2243,16 +2261,20 @@ msgstr ""
msgid "UUID integer value not in range 0 to 0xffff"
msgstr ""
-#: shared-bindings/bleio/UUID.c:75
-msgid "UUID value is not int or byte buffer"
+#: shared-bindings/bleio/UUID.c:91
+msgid "UUID string not 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'"
+msgstr ""
+
+#: shared-bindings/bleio/UUID.c:103
+msgid "UUID value is not str, int or byte buffer"
msgstr ""
-#: shared-bindings/bleio/UUID.c:79
+#: shared-bindings/bleio/UUID.c:107
#, fuzzy
msgid "Byte buffer must be 16 bytes."
msgstr "i buffer devono essere della stessa lunghezza"
-#: shared-bindings/bleio/UUID.c:120
+#: shared-bindings/bleio/UUID.c:151
msgid "not a 128-bit UUID"
msgstr ""
@@ -2685,11 +2707,6 @@ msgstr "Non è possibile rimontare '/' mentre l'USB è attiva."
msgid "'S' and 'O' are not supported format types"
msgstr "'S' e 'O' non sono formati supportati"
-#: shared-module/struct/__init__.c:128
-#, fuzzy, c-format
-msgid "unpack requires a buffer of %d bytes"
-msgstr "Fallita allocazione del buffer RX di %d byte"
-
#: shared-module/struct/__init__.c:136
msgid "too many arguments provided with the given format"
msgstr "troppi argomenti forniti con il formato specificato"
@@ -2785,35 +2802,27 @@ msgid ""
"exit safe mode.\n"
msgstr ""
-#~ msgid "Cannot apply GAP parameters."
-#~ msgstr "Impossibile applicare i parametri GAP."
-
-#~ msgid ""
-#~ "enough power for the whole circuit and press reset (after ejecting "
-#~ "CIRCUITPY).\n"
-#~ msgstr ""
-#~ "abbastanza potenza per l'intero circuito e premere reset (dopo aver "
-#~ "espulso CIRCUITPY).\n"
+#~ msgid "Invalid UUID string length"
+#~ msgstr "Lunghezza della stringa UUID non valida"
-#~ msgid "Looks like our core CircuitPython code crashed hard. Whoops!\n"
-#~ msgstr ""
-#~ "Sembra che il codice del core di CircuitPython sia crashato malamente. "
-#~ "Whoops!\n"
+#~ msgid "Invalid UUID parameter"
+#~ msgstr "Parametro UUID non valido"
-#~ msgid "Can not query for the device address."
-#~ msgstr "Non è possibile trovare l'indirizzo del dispositivo."
+#~ msgid "Invalid Service type"
+#~ msgstr "Tipo di servizio non valido"
-#~ msgid "Can not apply advertisement data. status: 0x%02x"
-#~ msgstr "Impossible inserire dati advertisement. status: 0x%02x"
+#, fuzzy
+#~ msgid "Wrong number of bytes provided"
+#~ msgstr "numero di argomenti errato"
-#~ msgid "Can not add Service."
-#~ msgstr "Non è possibile aggiungere Service."
+#~ msgid "Cannot set PPCP parameters."
+#~ msgstr "Impossibile impostare i parametri PPCP."
-#~ msgid "Can not apply device name in the stack."
-#~ msgstr "Non è possibile inserire il nome del dipositivo nella lista."
+#~ msgid "Can not add Characteristic."
+#~ msgstr "Non è possibile aggiungere Characteristic."
-#~ msgid "Can encode UUID into the advertisement packet."
-#~ msgstr "È possibile codificare l'UUID nel pacchetto di advertisement."
+#~ msgid "Can not encode UUID, to check length."
+#~ msgstr "Non è possibile codificare l'UUID, lunghezza da controllare."
#~ msgid ""
#~ "Please file an issue here with the contents of your CIRCUITPY drive:\n"
@@ -2821,24 +2830,36 @@ msgstr ""
#~ "Ti preghiamo di compilare una issue con il contenuto del tuo drie "
#~ "CIRCUITPY:\n"
-#~ msgid "Can not encode UUID, to check length."
-#~ msgstr "Non è possibile codificare l'UUID, lunghezza da controllare."
+#~ msgid "Can encode UUID into the advertisement packet."
+#~ msgstr "È possibile codificare l'UUID nel pacchetto di advertisement."
-#~ msgid "Can not add Characteristic."
-#~ msgstr "Non è possibile aggiungere Characteristic."
+#~ msgid "Can not apply device name in the stack."
+#~ msgstr "Non è possibile inserire il nome del dipositivo nella lista."
-#~ msgid "Cannot set PPCP parameters."
-#~ msgstr "Impossibile impostare i parametri PPCP."
+#~ msgid "Can not add Service."
+#~ msgstr "Non è possibile aggiungere Service."
-#, fuzzy
-#~ msgid "Wrong number of bytes provided"
-#~ msgstr "numero di argomenti errato"
+#~ msgid "Can not apply advertisement data. status: 0x%02x"
+#~ msgstr "Impossible inserire dati advertisement. status: 0x%02x"
-#~ msgid "Invalid Service type"
-#~ msgstr "Tipo di servizio non valido"
+#~ msgid "Can not query for the device address."
+#~ msgstr "Non è possibile trovare l'indirizzo del dispositivo."
-#~ msgid "Invalid UUID parameter"
-#~ msgstr "Parametro UUID non valido"
+#~ msgid "Looks like our core CircuitPython code crashed hard. Whoops!\n"
+#~ msgstr ""
+#~ "Sembra che il codice del core di CircuitPython sia crashato malamente. "
+#~ "Whoops!\n"
-#~ msgid "Invalid UUID string length"
-#~ msgstr "Lunghezza della stringa UUID non valida"
+#~ msgid ""
+#~ "enough power for the whole circuit and press reset (after ejecting "
+#~ "CIRCUITPY).\n"
+#~ msgstr ""
+#~ "abbastanza potenza per l'intero circuito e premere reset (dopo aver "
+#~ "espulso CIRCUITPY).\n"
+
+#~ msgid "Cannot apply GAP parameters."
+#~ msgstr "Impossibile applicare i parametri GAP."
+
+#, fuzzy
+#~ msgid "unpack requires a buffer of %d bytes"
+#~ msgstr "Fallita allocazione del buffer RX di %d byte"
diff --git a/locale/pt_BR.po b/locale/pt_BR.po
index 457850a55..c0583d8bc 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-01-20 22:46-0500\n"
+"POT-Creation-Date: 2019-01-21 21:50-0500\n"
"PO-Revision-Date: 2018-10-02 21:14-0000\n"
"Last-Translator: \n"
"Language-Team: \n"
@@ -334,12 +334,12 @@ msgid "bytes > 8 bits not supported"
msgstr "bytes > 8 bits não suportado"
#: ports/atmel-samd/common-hal/busio/UART.c:73
-#: ports/nrf/common-hal/busio/UART.c:118
+#: ports/nrf/common-hal/busio/UART.c:91
msgid "tx and rx cannot both be None"
msgstr "TX e RX não podem ser ambos"
#: ports/atmel-samd/common-hal/busio/UART.c:146
-#: ports/nrf/common-hal/busio/UART.c:152
+#: ports/nrf/common-hal/busio/UART.c:132
msgid "Failed to allocate RX buffer"
msgstr "Falha ao alocar buffer RX"
@@ -348,12 +348,12 @@ msgid "Could not initialize UART"
msgstr "Não foi possível inicializar o UART"
#: ports/atmel-samd/common-hal/busio/UART.c:241
-#: ports/nrf/common-hal/busio/UART.c:197
+#: ports/nrf/common-hal/busio/UART.c:174
msgid "No RX pin"
msgstr "Nenhum pino RX"
#: ports/atmel-samd/common-hal/busio/UART.c:300
-#: ports/nrf/common-hal/busio/UART.c:232
+#: ports/nrf/common-hal/busio/UART.c:209
msgid "No TX pin"
msgstr "Nenhum pino TX"
@@ -711,7 +711,7 @@ msgstr "Não é possível gravar o valor do atributo. status: 0x%02x"
msgid "Failed to read attribute value, err %0x04x"
msgstr "Não é possível ler o valor do atributo. status: 0x%02x"
-#: ports/nrf/common-hal/bleio/Characteristic.c:172
+#: ports/nrf/common-hal/bleio/Characteristic.c:172 ports/nrf/sd_mutex.c:34
#, fuzzy, c-format
msgid "Failed to acquire mutex, err 0x%04x"
msgstr "Não é possível ler o valor do atributo. status: 0x%02x"
@@ -721,7 +721,7 @@ msgstr "Não é possível ler o valor do atributo. status: 0x%02x"
msgid "Failed to write attribute value, err 0x%04x"
msgstr "Não é possível gravar o valor do atributo. status: 0x%02x"
-#: ports/nrf/common-hal/bleio/Characteristic.c:189
+#: ports/nrf/common-hal/bleio/Characteristic.c:189 ports/nrf/sd_mutex.c:54
#, fuzzy, c-format
msgid "Failed to release mutex, err 0x%04x"
msgstr "Não é possível ler o valor do atributo. status: 0x%02x"
@@ -742,49 +742,49 @@ msgstr "Não é possível ajustar dados no pacote de anúncios."
msgid "Failed to discover services"
msgstr "Não pode parar propaganda. status: 0x%02x"
-#: ports/nrf/common-hal/bleio/Device.c:267
-#: ports/nrf/common-hal/bleio/Device.c:300
+#: ports/nrf/common-hal/bleio/Device.c:268
+#: ports/nrf/common-hal/bleio/Device.c:302
#, fuzzy
msgid "Failed to acquire mutex"
msgstr "Falha ao alocar buffer RX"
-#: ports/nrf/common-hal/bleio/Device.c:278
-#: ports/nrf/common-hal/bleio/Device.c:311
-#: ports/nrf/common-hal/bleio/Device.c:342
-#: ports/nrf/common-hal/bleio/Device.c:376
+#: ports/nrf/common-hal/bleio/Device.c:280
+#: ports/nrf/common-hal/bleio/Device.c:313
+#: ports/nrf/common-hal/bleio/Device.c:344
+#: ports/nrf/common-hal/bleio/Device.c:378
#, fuzzy
msgid "Failed to release mutex"
msgstr "Não é possível ler o valor do atributo. status: 0x%02x"
-#: ports/nrf/common-hal/bleio/Device.c:387
+#: ports/nrf/common-hal/bleio/Device.c:389
msgid "Failed to continue scanning"
msgstr ""
-#: ports/nrf/common-hal/bleio/Device.c:419
+#: ports/nrf/common-hal/bleio/Device.c:421
msgid "Failed to connect:"
msgstr ""
-#: ports/nrf/common-hal/bleio/Device.c:489
+#: ports/nrf/common-hal/bleio/Device.c:491
#, fuzzy
msgid "Failed to add service"
msgstr "Não pode parar propaganda. status: 0x%02x"
-#: ports/nrf/common-hal/bleio/Device.c:506
+#: ports/nrf/common-hal/bleio/Device.c:508
#, fuzzy
msgid "Failed to start advertising"
msgstr "Não é possível iniciar o anúncio. status: 0x%02x"
-#: ports/nrf/common-hal/bleio/Device.c:523
+#: ports/nrf/common-hal/bleio/Device.c:525
#, fuzzy
msgid "Failed to stop advertising"
msgstr "Não pode parar propaganda. status: 0x%02x"
-#: ports/nrf/common-hal/bleio/Device.c:548
+#: ports/nrf/common-hal/bleio/Device.c:550
#, fuzzy
msgid "Failed to start scanning"
msgstr "Não é possível iniciar o anúncio. status: 0x%02x"
-#: ports/nrf/common-hal/bleio/Device.c:564
+#: ports/nrf/common-hal/bleio/Device.c:566
#, fuzzy
msgid "Failed to create mutex"
msgstr "Não é possível ler o valor do atributo. status: 0x%02x"
@@ -840,21 +840,21 @@ msgstr "Todos os periféricos SPI estão em uso"
msgid "error = 0x%08lX"
msgstr "erro = 0x%08lX"
-#: ports/nrf/common-hal/busio/UART.c:122
+#: ports/nrf/common-hal/busio/UART.c:95
#, fuzzy
msgid "Invalid buffer size"
msgstr "Arquivo inválido"
-#: ports/nrf/common-hal/busio/UART.c:126
+#: ports/nrf/common-hal/busio/UART.c:99
#, fuzzy
msgid "Odd parity is not supported"
msgstr "I2C operação não suportada"
-#: ports/nrf/common-hal/busio/UART.c:358 ports/nrf/common-hal/busio/UART.c:362
-#: ports/nrf/common-hal/busio/UART.c:367 ports/nrf/common-hal/busio/UART.c:372
-#: ports/nrf/common-hal/busio/UART.c:378 ports/nrf/common-hal/busio/UART.c:383
-#: ports/nrf/common-hal/busio/UART.c:388 ports/nrf/common-hal/busio/UART.c:392
-#: ports/nrf/common-hal/busio/UART.c:400
+#: ports/nrf/common-hal/busio/UART.c:335 ports/nrf/common-hal/busio/UART.c:339
+#: ports/nrf/common-hal/busio/UART.c:344 ports/nrf/common-hal/busio/UART.c:349
+#: ports/nrf/common-hal/busio/UART.c:355 ports/nrf/common-hal/busio/UART.c:360
+#: ports/nrf/common-hal/busio/UART.c:365 ports/nrf/common-hal/busio/UART.c:369
+#: ports/nrf/common-hal/busio/UART.c:377
msgid "busio.UART not available"
msgstr "busio.UART não disponível"
@@ -1350,7 +1350,7 @@ msgstr ""
#: py/modstruct.c:148 py/modstruct.c:156 py/modstruct.c:244 py/modstruct.c:254
#: shared-bindings/struct/__init__.c:102 shared-bindings/struct/__init__.c:161
-#: shared-module/struct/__init__.c:183
+#: shared-module/struct/__init__.c:128 shared-module/struct/__init__.c:183
msgid "buffer too small"
msgstr ""
@@ -2119,7 +2119,7 @@ msgid "buffer must be a bytes-like object"
msgstr ""
#: shared-bindings/audioio/WaveFile.c:78
-#: shared-bindings/displayio/OnDiskBitmap.c:85
+#: shared-bindings/displayio/OnDiskBitmap.c:87
msgid "file must be a file opened in byte mode"
msgstr ""
@@ -2164,16 +2164,34 @@ msgstr "buffers devem ser o mesmo tamanho"
msgid "Expected a UUID"
msgstr "Esperado um"
-#: shared-bindings/bleio/CharacteristicBuffer.c:61
+#: shared-bindings/bleio/CharacteristicBuffer.c:39
+#, fuzzy
+msgid "Not connected"
+msgstr "Não é possível conectar-se ao AP"
+
+#: shared-bindings/bleio/CharacteristicBuffer.c:74
+#, fuzzy
+msgid "timeout must be >= 0.0"
+msgstr "bits devem ser 8"
+
+#: shared-bindings/bleio/CharacteristicBuffer.c:79
#, fuzzy
msgid "buffer_size must be >= 1"
msgstr "buffers devem ser o mesmo tamanho"
-#: shared-bindings/bleio/CharacteristicBuffer.c:65
+#: shared-bindings/bleio/CharacteristicBuffer.c:83
#, fuzzy
msgid "Expected a Characteristic"
msgstr "Não é possível adicionar Característica."
+#: shared-bindings/bleio/CharacteristicBuffer.c:138
+msgid "CharacteristicBuffer writing not provided"
+msgstr ""
+
+#: shared-bindings/bleio/CharacteristicBuffer.c:147
+msgid "Not connected."
+msgstr ""
+
#: shared-bindings/bleio/Device.c:210
msgid "Can't add services in Central mode"
msgstr ""
@@ -2211,16 +2229,20 @@ msgstr ""
msgid "UUID integer value not in range 0 to 0xffff"
msgstr ""
-#: shared-bindings/bleio/UUID.c:75
-msgid "UUID value is not int or byte buffer"
+#: shared-bindings/bleio/UUID.c:91
+msgid "UUID string not 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'"
msgstr ""
-#: shared-bindings/bleio/UUID.c:79
+#: shared-bindings/bleio/UUID.c:103
+msgid "UUID value is not str, int or byte buffer"
+msgstr ""
+
+#: shared-bindings/bleio/UUID.c:107
#, fuzzy
msgid "Byte buffer must be 16 bytes."
msgstr "buffers devem ser o mesmo tamanho"
-#: shared-bindings/bleio/UUID.c:120
+#: shared-bindings/bleio/UUID.c:151
msgid "not a 128-bit UUID"
msgstr ""
@@ -2642,11 +2664,6 @@ msgstr "Não é possível remontar '/' enquanto o USB estiver ativo."
msgid "'S' and 'O' are not supported format types"
msgstr "'S' e 'O' não são tipos de formato suportados"
-#: shared-module/struct/__init__.c:128
-#, fuzzy, c-format
-msgid "unpack requires a buffer of %d bytes"
-msgstr "Falha ao alocar buffer RX de %d bytes"
-
#: shared-module/struct/__init__.c:136
msgid "too many arguments provided with the given format"
msgstr "Muitos argumentos fornecidos com o formato dado"
@@ -2736,32 +2753,36 @@ msgid ""
"exit safe mode.\n"
msgstr ""
-#~ msgid "Cannot set PPCP parameters."
-#~ msgstr "Não é possível definir parâmetros PPCP."
+#~ msgid "Can not query for the device address."
+#~ msgstr "Não é possível consultar o endereço do dispositivo."
-#~ msgid "Can encode UUID into the advertisement packet."
-#~ msgstr "Pode codificar o UUID no pacote de anúncios."
+#~ msgid "Invalid Service type"
+#~ msgstr "Tipo de serviço inválido"
-#~ msgid "Can not apply advertisement data. status: 0x%02x"
-#~ msgstr "Não é possível aplicar dados de anúncio. status: 0x%02x"
+#~ msgid "Can not apply device name in the stack."
+#~ msgstr "Não é possível aplicar o nome do dispositivo na pilha."
-#~ msgid "Invalid UUID parameter"
-#~ msgstr "Parâmetro UUID inválido"
+#~ msgid "Baud rate too high for this SPI peripheral"
+#~ msgstr "Taxa de transmissão muito alta para esse periférico SPI"
+
+#~ msgid "Can not add Characteristic."
+#~ msgstr "Não é possível adicionar Característica."
#~ msgid "Cannot apply GAP parameters."
#~ msgstr "Não é possível aplicar parâmetros GAP."
-#~ msgid "Can not add Characteristic."
-#~ msgstr "Não é possível adicionar Característica."
+#~ msgid "Invalid UUID parameter"
+#~ msgstr "Parâmetro UUID inválido"
-#~ msgid "Baud rate too high for this SPI peripheral"
-#~ msgstr "Taxa de transmissão muito alta para esse periférico SPI"
+#~ msgid "Can not apply advertisement data. status: 0x%02x"
+#~ msgstr "Não é possível aplicar dados de anúncio. status: 0x%02x"
-#~ msgid "Can not apply device name in the stack."
-#~ msgstr "Não é possível aplicar o nome do dispositivo na pilha."
+#~ msgid "Can encode UUID into the advertisement packet."
+#~ msgstr "Pode codificar o UUID no pacote de anúncios."
-#~ msgid "Invalid Service type"
-#~ msgstr "Tipo de serviço inválido"
+#~ msgid "Cannot set PPCP parameters."
+#~ msgstr "Não é possível definir parâmetros PPCP."
-#~ msgid "Can not query for the device address."
-#~ msgstr "Não é possível consultar o endereço do dispositivo."
+#, fuzzy
+#~ msgid "unpack requires a buffer of %d bytes"
+#~ msgstr "Falha ao alocar buffer RX de %d bytes"
diff --git a/ports/nrf/Makefile b/ports/nrf/Makefile
index 85e6346a1..bf6c7a5da 100755
--- a/ports/nrf/Makefile
+++ b/ports/nrf/Makefile
@@ -141,6 +141,7 @@ SRC_C += \
peripherals/nrf/$(MCU_CHIP)/pins.c \
peripherals/nrf/$(MCU_CHIP)/power.c \
peripherals/nrf/timers.c \
+ sd_mutex.c \
supervisor/shared/memory.c
diff --git a/ports/nrf/common-hal/bleio/Characteristic.c b/ports/nrf/common-hal/bleio/Characteristic.c
index 0bade8d01..1db564549 100644
--- a/ports/nrf/common-hal/bleio/Characteristic.c
+++ b/ports/nrf/common-hal/bleio/Characteristic.c
@@ -36,9 +36,9 @@
#include "common-hal/bleio/Characteristic.h"
#include "shared-module/bleio/Characteristic.h"
-// TODO - should these be per object?? *****
STATIC volatile bleio_characteristic_obj_t *m_read_characteristic;
STATIC volatile uint8_t m_tx_in_progress;
+// Serialize gattc writes that send a response. This might be done per object?
STATIC nrf_mutex_t *m_write_mutex;
STATIC uint16_t get_cccd(bleio_characteristic_obj_t *characteristic) {
diff --git a/ports/nrf/common-hal/bleio/CharacteristicBuffer.c b/ports/nrf/common-hal/bleio/CharacteristicBuffer.c
index 4bd3e147f..42e45abdf 100644
--- a/ports/nrf/common-hal/bleio/CharacteristicBuffer.c
+++ b/ports/nrf/common-hal/bleio/CharacteristicBuffer.c
@@ -3,7 +3,7 @@
*
* The MIT License (MIT)
*
- * Copyright (c) 2018 Artur Pacholec
+ * Copyright (c) 2019 Dan Halbert 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
@@ -29,9 +29,13 @@
#include "ble_drv.h"
#include "ble_gatts.h"
-#include "nrf_soc.h"
+#include "sd_mutex.h"
+#include "lib/utils/interrupt_char.h"
#include "py/runtime.h"
+#include "py/stream.h"
+
+#include "tick.h"
#include "common-hal/bleio/__init__.h"
#include "common-hal/bleio/CharacteristicBuffer.h"
@@ -43,10 +47,13 @@ STATIC void characteristic_buffer_on_ble_evt(ble_evt_t *ble_evt, void *param) {
ble_gatts_evt_write_t *evt_write = &ble_evt->evt.gatts_evt.params.write;
// Event handle must match the handle for my characteristic.
if (evt_write->handle == self->characteristic->handle) {
- // Push all the data onto the ring buffer.
+ // Push all the data onto the ring buffer, but wait for any reads to finish.
+ sd_mutex_acquire_wait_no_vm(&self->ringbuf_mutex);
for (size_t i = 0; i < evt_write->len; i++) {
ringbuf_put(&self->ringbuf, evt_write->data[i]);
}
+ // Don't check for errors: we're in an event handler.
+ sd_mutex_release(&self->ringbuf_mutex);
break;
}
}
@@ -54,22 +61,75 @@ STATIC void characteristic_buffer_on_ble_evt(ble_evt_t *ble_evt, void *param) {
}
-// Assumes that buffer_size has been validated before call.
-void common_hal_bleio_characteristic_buffer_construct(bleio_characteristic_buffer_obj_t *self, bleio_characteristic_obj_t *characteristic, size_t buffer_size) {
+// Assumes that timeout and buffer_size have been validated before call.
+void common_hal_bleio_characteristic_buffer_construct(bleio_characteristic_buffer_obj_t *self,
+ bleio_characteristic_obj_t *characteristic,
+ mp_float_t timeout,
+ size_t buffer_size) {
self->characteristic = characteristic;
+ self->timeout_ms = timeout * 1000;
// This is a macro.
- ringbuf_alloc(&self->ringbuf, buffer_size);
+ // true means long-lived, so it won't be moved.
+ ringbuf_alloc(&self->ringbuf, buffer_size, true);
+ sd_mutex_new(&self->ringbuf_mutex);
ble_drv_add_event_handler(characteristic_buffer_on_ble_evt, self);
}
-// Returns a uint8_t byte value, or -1 if no data is available.
-int common_hal_bleio_characteristic_buffer_read(bleio_characteristic_buffer_obj_t *self) {
- return ringbuf_get(&self->ringbuf);
+int common_hal_bleio_characteristic_buffer_read(bleio_characteristic_buffer_obj_t *self, uint8_t *data, size_t len, int *errcode) {
+ uint64_t start_ticks = ticks_ms;
+
+ // Wait for all bytes received or timeout
+ while ( (ringbuf_count(&self->ringbuf) < len) && (ticks_ms - start_ticks < self->timeout_ms) ) {
+#ifdef MICROPY_VM_HOOK_LOOP
+ MICROPY_VM_HOOK_LOOP ;
+ // Allow user to break out of a timeout with a KeyboardInterrupt.
+ if ( mp_hal_is_interrupted() ) {
+ return 0;
+ }
+#endif
+ }
+
+ // Copy received data. Lock out writes while copying.
+ sd_mutex_acquire_wait(&self->ringbuf_mutex);
+
+ size_t rx_bytes = MIN(ringbuf_count(&self->ringbuf), len);
+ for ( size_t i = 0; i < rx_bytes; i++ ) {
+ data[i] = ringbuf_get(&self->ringbuf);
+ }
+
+ // Writes now OK.
+ sd_mutex_release_check(&self->ringbuf_mutex);
+
+ return rx_bytes;
+}
+
+uint32_t common_hal_bleio_characteristic_buffer_rx_characters_available(bleio_characteristic_buffer_obj_t *self) {
+ return ringbuf_count(&self->ringbuf);
+}
+
+void common_hal_bleio_characteristic_buffer_clear_rx_buffer(bleio_characteristic_buffer_obj_t *self) {
+ // prevent conflict with uart irq
+ sd_mutex_acquire_wait(&self->ringbuf_mutex);
+ ringbuf_clear(&self->ringbuf);
+ sd_mutex_release_check(&self->ringbuf_mutex);
+}
+
+bool common_hal_bleio_characteristic_buffer_deinited(bleio_characteristic_buffer_obj_t *self) {
+ return self->characteristic == NULL;
}
void common_hal_bleio_characteristic_buffer_deinit(bleio_characteristic_buffer_obj_t *self) {
- ble_drv_remove_event_handler(characteristic_buffer_on_ble_evt, self);
+ if (!common_hal_bleio_characteristic_buffer_deinited(self)) {
+ ble_drv_remove_event_handler(characteristic_buffer_on_ble_evt, self);
+ }
+}
+
+bool common_hal_bleio_characteristic_buffer_connected(bleio_characteristic_buffer_obj_t *self) {
+ return self->characteristic != NULL &&
+ self->characteristic->service != NULL &&
+ self->characteristic->service->device != NULL &&
+ common_hal_bleio_device_get_conn_handle(self->characteristic->service->device) != BLE_CONN_HANDLE_INVALID;
}
diff --git a/ports/nrf/common-hal/bleio/CharacteristicBuffer.h b/ports/nrf/common-hal/bleio/CharacteristicBuffer.h
index f9ff7dd66..f5c715154 100644
--- a/ports/nrf/common-hal/bleio/CharacteristicBuffer.h
+++ b/ports/nrf/common-hal/bleio/CharacteristicBuffer.h
@@ -27,15 +27,18 @@
#ifndef MICROPY_INCLUDED_COMMON_HAL_BLEIO_CHARACTERISTICBUFFER_H
#define MICROPY_INCLUDED_COMMON_HAL_BLEIO_CHARACTERISTICBUFFER_H
-#include "py/ringbuf.h"
+#include "nrf_soc.h"
+#include "py/ringbuf.h"
#include "shared-bindings/bleio/Characteristic.h"
typedef struct {
mp_obj_base_t base;
bleio_characteristic_obj_t *characteristic;
+ uint32_t timeout_ms;
// Ring buffer storing consecutive incoming values.
ringbuf_t ringbuf;
+ nrf_mutex_t ringbuf_mutex;
} bleio_characteristic_buffer_obj_t;
#endif // MICROPY_INCLUDED_COMMON_HAL_BLEIO_CHARACTERISTICBUFFER_H
diff --git a/ports/nrf/common-hal/bleio/Device.c b/ports/nrf/common-hal/bleio/Device.c
index 50c738abe..5f625829e 100644
--- a/ports/nrf/common-hal/bleio/Device.c
+++ b/ports/nrf/common-hal/bleio/Device.c
@@ -262,11 +262,13 @@ STATIC bool discover_services(bleio_device_obj_t *device, uint16_t start_handle)
mp_raise_OSError_msg(translate("Failed to discover services"));
}
+ // Serialize discovery.
err_code = sd_mutex_acquire(m_discovery_mutex);
if (err_code != NRF_SUCCESS) {
mp_raise_OSError_msg(translate("Failed to acquire mutex"));
}
+ // Wait for someone else to release m_discovery_mutex.
while (sd_mutex_acquire(m_discovery_mutex) == NRF_ERROR_SOC_MUTEX_ALREADY_TAKEN) {
#ifdef MICROPY_VM_HOOK_LOOP
MICROPY_VM_HOOK_LOOP
diff --git a/ports/nrf/common-hal/busio/UART.c b/ports/nrf/common-hal/busio/UART.c
index 912956369..43868f506 100644
--- a/ports/nrf/common-hal/busio/UART.c
+++ b/ports/nrf/common-hal/busio/UART.c
@@ -52,33 +52,6 @@
static uint32_t get_nrf_baud (uint32_t baudrate);
-static uint16_t ringbuf_count(ringbuf_t *r)
-{
- volatile int count = r->iput - r->iget;
- if ( count < 0 ) {
- count += r->size;
- }
-
- return (uint16_t) count;
-}
-
-static void ringbuf_clear(ringbuf_t *r)
-{
- r->iput = r->iget = 0;
-}
-
-// will overwrite old data
-static void ringbuf_put_n(ringbuf_t* r, uint8_t* buf, uint8_t bufsize)
-{
- for(uint8_t i=0; i < bufsize; i++) {
- if ( ringbuf_put(r, buf[i]) < 0 ) {
- // if full overwrite old data
- (void) ringbuf_get(r);
- ringbuf_put(r, buf[i]);
- }
- }
-}
-
static void uart_callback_irq (const nrfx_uarte_event_t * event, void * context) {
busio_uart_obj_t* self = (busio_uart_obj_t*) context;
@@ -145,16 +118,20 @@ void common_hal_busio_uart_construct (busio_uart_obj_t *self,
// Init buffer for rx
if ( rx != mp_const_none ) {
- self->rbuf.buf = (uint8_t *) gc_alloc(receiver_buffer_size, false, false);
+ // Initially allocate the UART's buffer in the long-lived part of the
+ // heap. UARTs are generally long-lived objects, but the "make long-
+ // lived" machinery is incapable of moving internal pointers like
+ // self->buffer, so do it manually. (However, as long as internal
+ // pointers like this are NOT moved, allocating the buffer
+ // in the long-lived pool is not strictly necessary)
+ // (This is a macro.)
+ ringbuf_alloc(&self->rbuf, receiver_buffer_size, true);
if ( !self->rbuf.buf ) {
nrfx_uarte_uninit(&self->uarte);
mp_raise_msg(&mp_type_MemoryError, translate("Failed to allocate RX buffer"));
}
- self->rbuf.size = receiver_buffer_size;
- self->rbuf.iget = self->rbuf.iput = 0;
-
self->rx_pin_number = rx->number;
claim_pin(rx);
}
diff --git a/ports/nrf/sd_mutex.c b/ports/nrf/sd_mutex.c
new file mode 100644
index 000000000..7682ffa62
--- /dev/null
+++ b/ports/nrf/sd_mutex.c
@@ -0,0 +1,56 @@
+/*
+ * This file is part of the MicroPython project, http://micropython.org/
+ *
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2019 Dan Halbert 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 "py/mpconfig.h"
+#include "py/runtime.h"
+#include "nrf_soc.h"
+
+void sd_mutex_acquire_check(nrf_mutex_t* p_mutex) {
+ uint32_t err_code = sd_mutex_acquire(p_mutex);
+ if (err_code != NRF_SUCCESS) {
+ mp_raise_OSError_msg_varg(translate("Failed to acquire mutex, err 0x%04x"), err_code);
+ }
+}
+
+void sd_mutex_acquire_wait(nrf_mutex_t* p_mutex) {
+ while (sd_mutex_acquire(p_mutex) == NRF_ERROR_SOC_MUTEX_ALREADY_TAKEN) {
+#ifdef MICROPY_VM_HOOK_LOOP
+ MICROPY_VM_HOOK_LOOP
+#endif
+ }
+}
+
+void sd_mutex_acquire_wait_no_vm(nrf_mutex_t* p_mutex) {
+ while (sd_mutex_acquire(p_mutex) == NRF_ERROR_SOC_MUTEX_ALREADY_TAKEN) {
+ }
+}
+
+void sd_mutex_release_check(nrf_mutex_t* p_mutex) {
+ uint32_t err_code = sd_mutex_release(p_mutex);
+ if (err_code != NRF_SUCCESS) {
+ mp_raise_OSError_msg_varg(translate("Failed to release mutex, err 0x%04x"), err_code);
+ }
+}
diff --git a/ports/nrf/sd_mutex.h b/ports/nrf/sd_mutex.h
new file mode 100644
index 000000000..ca4691720
--- /dev/null
+++ b/ports/nrf/sd_mutex.h
@@ -0,0 +1,46 @@
+/*
+ * This file is part of the MicroPython project, http://micropython.org/
+ *
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2019 Dan Halbert 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.
+ */
+
+#ifndef MICROPY_INCLUDED_NRF_SD_MUTEX_H
+#define MICROPY_INCLUDED_NRF_SD_MUTEX_H
+
+#include "nrf_soc.h"
+
+// Helpers for common usage of nrf_mutex.
+
+// Try to acquire a mutex right now. Raise exception if we can't get it.
+void sd_mutex_acquire_check(nrf_mutex_t* p_mutex);
+
+// Wait for a mutex to become available. Run VM background tasks while waiting.
+void sd_mutex_acquire_wait(nrf_mutex_t* p_mutex);
+
+// Wait for a mutex to become available.. Block VM while waiting.
+void sd_mutex_acquire_wait_no_vm(nrf_mutex_t* p_mutex);
+
+// Release a mutex, and raise exception on error.
+void sd_mutex_release_check(nrf_mutex_t* p_mutex);
+
+#endif // MICROPY_INCLUDED_NRF_SD_MUTEX_H
diff --git a/py/ringbuf.h b/py/ringbuf.h
index c62e20e1d..5f82cc096 100644
--- a/py/ringbuf.h
+++ b/py/ringbuf.h
@@ -26,6 +26,8 @@
#ifndef MICROPY_INCLUDED_PY_RINGBUF_H
#define MICROPY_INCLUDED_PY_RINGBUF_H
+#include "py/gc.h"
+
#include <stdint.h>
typedef struct _ringbuf_t {
@@ -40,9 +42,9 @@ typedef struct _ringbuf_t {
// ringbuf_t buf = {buf_array, sizeof(buf_array)};
// Dynamic initialization. This creates root pointer!
-#define ringbuf_alloc(r, sz) \
+#define ringbuf_alloc(r, sz, long_lived) \
{ \
- (r)->buf = m_new(uint8_t, sz); \
+ (r)->buf = gc_alloc(sz, false, long_lived); \
(r)->size = sz; \
(r)->iget = (r)->iput = 0; \
}
@@ -71,4 +73,30 @@ static inline int ringbuf_put(ringbuf_t *r, uint8_t v) {
return 0;
}
+static inline uint16_t ringbuf_count(ringbuf_t *r)
+{
+ volatile int count = r->iput - r->iget;
+ if ( count < 0 ) {
+ count += r->size;
+ }
+
+ return (uint16_t) count;
+}
+
+static inline void ringbuf_clear(ringbuf_t *r)
+{
+ r->iput = r->iget = 0;
+}
+
+// will overwrite old data
+static inline void ringbuf_put_n(ringbuf_t* r, uint8_t* buf, uint8_t bufsize)
+{
+ for(uint8_t i=0; i < bufsize; i++) {
+ if ( ringbuf_put(r, buf[i]) < 0 ) {
+ // if full overwrite old data
+ (void) ringbuf_get(r);
+ ringbuf_put(r, buf[i]);
+ }
+ }
+}
#endif // MICROPY_INCLUDED_PY_RINGBUF_H
diff --git a/py/stream.c b/py/stream.c
index aca9b8460..9d8be445c 100644
--- a/py/stream.c
+++ b/py/stream.c
@@ -103,7 +103,7 @@ STATIC mp_obj_t stream_read_generic(size_t n_args, const mp_obj_t *args, byte fl
// CPython does a readall, but here we silently let negatives through,
// and they will cause a MemoryError.
mp_int_t sz;
- if (n_args == 1 || ((sz = mp_obj_get_int(args[1])) == -1)) {
+ if (n_args == 1 || args[1] == mp_const_none || ((sz = mp_obj_get_int(args[1])) == -1)) {
return stream_readall(args[0]);
}
diff --git a/shared-bindings/bleio/CharacteristicBuffer.c b/shared-bindings/bleio/CharacteristicBuffer.c
index 2bb4448c4..32629ca19 100644
--- a/shared-bindings/bleio/CharacteristicBuffer.c
+++ b/shared-bindings/bleio/CharacteristicBuffer.c
@@ -24,10 +24,21 @@
* THE SOFTWARE.
*/
+#include "py/mperrno.h"
+#include "py/ioctl.h"
#include "py/objproperty.h"
#include "py/runtime.h"
+#include "py/stream.h"
+
#include "shared-bindings/bleio/CharacteristicBuffer.h"
#include "shared-bindings/bleio/UUID.h"
+#include "shared-bindings/util.h"
+
+STATIC void raise_error_if_not_connected(bleio_characteristic_buffer_obj_t *self) {
+ if (!common_hal_bleio_characteristic_buffer_connected(self)) {
+ mp_raise_ValueError(translate("Not connected"));
+ }
+}
//| .. currentmodule:: bleio
//|
@@ -36,27 +47,34 @@
//|
//| Accumulates a Characteristic's incoming values in a FIFO buffer.
//|
-//| .. class:: CharacteristicBuffer(Characteristic, buffer_size=0)
+//| .. class:: CharacteristicBuffer(Characteristic, *, timeout=1, buffer_size=64)
//|
//| Create a new Characteristic object identified by the specified UUID.
//|
//| :param bleio.Characteristic characteristic: The characteristic to monitor
+//| :param int timeout: the timeout in seconds to wait for the first character and between subsequent characters.//|
//| :param int buffer_size: Size of ring buffer that stores incoming data coming from client.
//| Must be >= 1.
//|
STATIC mp_obj_t bleio_characteristic_buffer_make_new(const mp_obj_type_t *type, size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
- enum { ARG_characteristic, ARG_buffer_size, };
+ enum { ARG_characteristic, ARG_timeout, ARG_buffer_size, };
static const mp_arg_t allowed_args[] = {
{ MP_QSTR_characteristic, MP_ARG_REQUIRED | MP_ARG_OBJ },
- { MP_QSTR_buffer_size, MP_ARG_REQUIRED | MP_ARG_INT },
+ { MP_QSTR_timeout, MP_ARG_KW_ONLY | MP_ARG_OBJ, {.u_obj = MP_OBJ_NEW_SMALL_INT(1)} },
+ { MP_QSTR_buffer_size, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = 64} },
};
mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)];
mp_arg_parse_all(n_args, pos_args, kw_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args);
const mp_obj_t characteristic = args[ARG_characteristic].u_obj;
- const int buffer_size = args[ARG_buffer_size].u_int;
+ mp_float_t timeout = mp_obj_get_float(args[ARG_timeout].u_obj);
+ if (timeout < 0.0f) {
+ mp_raise_ValueError(translate("timeout must be >= 0.0"));
+ }
+
+ const int buffer_size = args[ARG_buffer_size].u_int;
if (buffer_size < 1) {
mp_raise_ValueError(translate("buffer_size must be >= 1"));
}
@@ -69,30 +87,117 @@ STATIC mp_obj_t bleio_characteristic_buffer_make_new(const mp_obj_type_t *type,
self->base.type = &bleio_characteristic_buffer_type;
self->characteristic = MP_OBJ_TO_PTR(characteristic);
- common_hal_bleio_characteristic_buffer_construct(self, self->characteristic, buffer_size);
+ common_hal_bleio_characteristic_buffer_construct(self, self->characteristic, timeout, buffer_size);
return MP_OBJ_FROM_PTR(self);
}
-
-//| .. method:: read()
+// These are standard stream methods. Code is in py/stream.c.
+//
+//| .. method:: read(nbytes=None)
+//|
+//| Read characters. If ``nbytes`` is specified then read at most that many
+//| bytes. Otherwise, read everything that arrives until the connection
+//| times out. Providing the number of bytes expected is highly recommended
+//| because it will be faster.
+//|
+//| :return: Data read
+//| :rtype: bytes or None
+//|
+//| .. method:: readinto(buf)
//|
-//| Read a single byte from the buffer. If no character is available, return None.
-STATIC mp_obj_t bleio_characteristic_buffer_read(mp_obj_t self_in) {
+//| Read bytes into the ``buf``. Read at most ``len(buf)`` bytes.
+//|
+//| :return: number of bytes read and stored into ``buf``
+//| :rtype: int or None (on a non-blocking error)
+//|
+//| .. method:: readline()
+//|
+//| Read a line, ending in a newline character.
+//|
+//| :return: the line read
+//| :rtype: int or None
+//|
+
+// These three methods are used by the shared stream methods.
+STATIC mp_uint_t bleio_characteristic_buffer_read(mp_obj_t self_in, void *buf_in, mp_uint_t size, int *errcode) {
bleio_characteristic_buffer_obj_t *self = MP_OBJ_TO_PTR(self_in);
+ raise_error_if_deinited(common_hal_bleio_characteristic_buffer_deinited(self));
+ raise_error_if_not_connected(self);
+ byte *buf = buf_in;
- int byte = common_hal_bleio_characteristic_buffer_read(self);
- if (byte == -1) {
- return mp_const_none;
+ // make sure we want at least 1 char
+ if (size == 0) {
+ return 0;
}
- return MP_OBJ_NEW_SMALL_INT(byte);
+ return common_hal_bleio_characteristic_buffer_read(self, buf, size, errcode);
}
-STATIC MP_DEFINE_CONST_FUN_OBJ_1(bleio_characteristic_buffer_read_obj, bleio_characteristic_buffer_read);
+
+STATIC mp_uint_t bleio_characteristic_buffer_write(mp_obj_t self_in, const void *buf_in, mp_uint_t size, int *errcode) {
+ mp_raise_NotImplementedError(translate("CharacteristicBuffer writing not provided"));
+ return 0;
+}
+
+STATIC mp_uint_t bleio_characteristic_buffer_ioctl(mp_obj_t self_in, mp_uint_t request, mp_uint_t arg, int *errcode) {
+ bleio_characteristic_buffer_obj_t *self = MP_OBJ_TO_PTR(self_in);
+ raise_error_if_deinited(common_hal_bleio_characteristic_buffer_deinited(self));
+ raise_error_if_not_connected(self);
+ if (!common_hal_bleio_characteristic_buffer_connected(self)) {
+ mp_raise_ValueError(translate("Not connected."));
+ }
+ mp_uint_t ret;
+ if (request == MP_IOCTL_POLL) {
+ mp_uint_t flags = arg;
+ ret = 0;
+ if ((flags & MP_IOCTL_POLL_RD) && common_hal_bleio_characteristic_buffer_rx_characters_available(self) > 0) {
+ ret |= MP_IOCTL_POLL_RD;
+ }
+// No writing provided.
+// if ((flags & MP_IOCTL_POLL_WR) && common_hal_busio_uart_ready_to_tx(self)) {
+// ret |= MP_IOCTL_POLL_WR;
+// }
+ } else {
+ *errcode = MP_EINVAL;
+ ret = MP_STREAM_ERROR;
+ }
+ return ret;
+}
+
+//| .. attribute:: in_waiting
+//|
+//| The number of bytes in the input buffer, available to be read
+//|
+STATIC mp_obj_t bleio_characteristic_buffer_obj_get_in_waiting(mp_obj_t self_in) {
+ bleio_characteristic_buffer_obj_t *self = MP_OBJ_TO_PTR(self_in);
+ raise_error_if_deinited(common_hal_bleio_characteristic_buffer_deinited(self));
+ return MP_OBJ_NEW_SMALL_INT(common_hal_bleio_characteristic_buffer_rx_characters_available(self));
+}
+MP_DEFINE_CONST_FUN_OBJ_1(bleio_characteristic_buffer_get_in_waiting_obj, bleio_characteristic_buffer_obj_get_in_waiting);
+
+const mp_obj_property_t bleio_characteristic_buffer_in_waiting_obj = {
+ .base.type = &mp_type_property,
+ .proxy = {(mp_obj_t)&bleio_characteristic_buffer_get_in_waiting_obj,
+ (mp_obj_t)&mp_const_none_obj,
+ (mp_obj_t)&mp_const_none_obj},
+};
+
+//| .. method:: reset_input_buffer()
+//|
+//| Discard any unread characters in the input buffer.
+//|
+STATIC mp_obj_t bleio_characteristic_buffer_obj_reset_input_buffer(mp_obj_t self_in) {
+ bleio_characteristic_buffer_obj_t *self = MP_OBJ_TO_PTR(self_in);
+ raise_error_if_deinited(common_hal_bleio_characteristic_buffer_deinited(self));
+ common_hal_bleio_characteristic_buffer_clear_rx_buffer(self);
+ return mp_const_none;
+}
+STATIC MP_DEFINE_CONST_FUN_OBJ_1(bleio_characteristic_buffer_reset_input_buffer_obj, bleio_characteristic_buffer_obj_reset_input_buffer);
//| .. method:: deinit()
//|
//| Disable permanently.
+//|
STATIC mp_obj_t bleio_characteristic_buffer_deinit(mp_obj_t self_in) {
bleio_characteristic_buffer_obj_t *self = MP_OBJ_TO_PTR(self_in);
common_hal_bleio_characteristic_buffer_deinit(self);
@@ -101,15 +206,39 @@ STATIC mp_obj_t bleio_characteristic_buffer_deinit(mp_obj_t self_in) {
STATIC MP_DEFINE_CONST_FUN_OBJ_1(bleio_characteristic_buffer_deinit_obj, bleio_characteristic_buffer_deinit);
STATIC const mp_rom_map_elem_t bleio_characteristic_buffer_locals_dict_table[] = {
- { MP_ROM_QSTR(MP_QSTR_read), MP_ROM_PTR(&bleio_characteristic_buffer_read_obj) },
{ MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&bleio_characteristic_buffer_deinit_obj) },
+
+ // Standard stream methods.
+ { MP_OBJ_NEW_QSTR(MP_QSTR_read), MP_ROM_PTR(&mp_stream_read_obj) },
+ { MP_OBJ_NEW_QSTR(MP_QSTR_readline), MP_ROM_PTR(&mp_stream_unbuffered_readline_obj)},
+ { MP_OBJ_NEW_QSTR(MP_QSTR_readinto), MP_ROM_PTR(&mp_stream_readinto_obj) },
+ // CharacteristicBuffer is currently read-only.
+ // { MP_OBJ_NEW_QSTR(MP_QSTR_write), MP_ROM_PTR(&mp_stream_write_obj) },
+
+ { MP_OBJ_NEW_QSTR(MP_QSTR_reset_input_buffer), MP_ROM_PTR(&bleio_characteristic_buffer_reset_input_buffer_obj) },
+ // Properties
+ { MP_ROM_QSTR(MP_QSTR_in_waiting), MP_ROM_PTR(&bleio_characteristic_buffer_in_waiting_obj) },
+
};
STATIC MP_DEFINE_CONST_DICT(bleio_characteristic_buffer_locals_dict, bleio_characteristic_buffer_locals_dict_table);
+STATIC const mp_stream_p_t characteristic_buffer_stream_p = {
+ .read = bleio_characteristic_buffer_read,
+ .write = bleio_characteristic_buffer_write,
+ .ioctl = bleio_characteristic_buffer_ioctl,
+ .is_text = false,
+ // Match PySerial when possible, such as disallowing optional length argument for .readinto()
+ .pyserial_compatibility = true,
+};
+
+
const mp_obj_type_t bleio_characteristic_buffer_type = {
{ &mp_type_type },
.name = MP_QSTR_CharacteristicBuffer,
.make_new = bleio_characteristic_buffer_make_new,
+ .getiter = mp_identity_getiter,
+ .iternext = mp_stream_unbuffered_iter,
+ .protocol = &characteristic_buffer_stream_p,
.locals_dict = (mp_obj_dict_t*)&bleio_characteristic_buffer_locals_dict
};
diff --git a/shared-bindings/bleio/CharacteristicBuffer.h b/shared-bindings/bleio/CharacteristicBuffer.h
index c5d7580da..f25017c19 100644
--- a/shared-bindings/bleio/CharacteristicBuffer.h
+++ b/shared-bindings/bleio/CharacteristicBuffer.h
@@ -31,9 +31,12 @@
extern const mp_obj_type_t bleio_characteristic_buffer_type;
-extern void common_hal_bleio_characteristic_buffer_construct(bleio_characteristic_buffer_obj_t *self, bleio_characteristic_obj_t *characteristic, size_t buffer_size);
-// Returns a uint8_t byte value, or -1 if no data is available.
-int common_hal_bleio_characteristic_buffer_read(bleio_characteristic_buffer_obj_t *self);
+extern void common_hal_bleio_characteristic_buffer_construct(bleio_characteristic_buffer_obj_t *self, bleio_characteristic_obj_t *characteristic, mp_float_t timeout, size_t buffer_size);
+int common_hal_bleio_characteristic_buffer_read(bleio_characteristic_buffer_obj_t *self, uint8_t *data, size_t len, int *errcode);
+uint32_t common_hal_bleio_characteristic_buffer_rx_characters_available(bleio_characteristic_buffer_obj_t *self);
+void common_hal_bleio_characteristic_buffer_clear_rx_buffer(bleio_characteristic_buffer_obj_t *self);
+bool common_hal_bleio_characteristic_buffer_deinited(bleio_characteristic_buffer_obj_t *self);
int common_hal_bleio_characteristic_buffer_deinit(bleio_characteristic_buffer_obj_t *self);
+bool common_hal_bleio_characteristic_buffer_connected(bleio_characteristic_buffer_obj_t *self);
#endif // MICROPY_INCLUDED_SHARED_BINDINGS_BLEIO_CHARACTERISTICBUFFER_H
diff --git a/shared-bindings/bleio/UUID.c b/shared-bindings/bleio/UUID.c
index f2df9d095..8b868a1ae 100644
--- a/shared-bindings/bleio/UUID.c
+++ b/shared-bindings/bleio/UUID.c
@@ -70,20 +70,51 @@ STATIC mp_obj_t bleio_uuid_make_new(const mp_obj_type_t *type, size_t n_args, co
common_hal_bleio_uuid_construct(self, uuid16, NULL);
} else {
- mp_buffer_info_t bufinfo;
- if (!mp_get_buffer(value, &bufinfo, MP_BUFFER_READ)) {
- mp_raise_ValueError(translate("UUID value is not int or byte buffer"));
- }
+ if (MP_OBJ_IS_STR(value)) {
+ // 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'
+ GET_STR_DATA_LEN(value, chars, len);
+ char hex[32];
+ // Validate length, hyphens, and hex digits.
+ bool good_uuid =
+ len == 36 && chars[8] == '-' && chars[13] == '-' && chars[18] == '-' && chars[23] == '-';
+ if (good_uuid) {
+ size_t hex_idx = 0;
+ for (int i = 0; i < len; i++) {
+ if (unichar_isxdigit(chars[i])) {
+ hex[hex_idx] = chars[i];
+ hex_idx++;
+ }
+ }
+ good_uuid = hex_idx == 32;
+ }
+ if (!good_uuid) {
+ mp_raise_ValueError(translate("UUID string not 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'"));
+ }
+
+ size_t hex_idx = 0;
+ for (int i = 15; i >= 0; i--) {
+ uuid128[i] = (unichar_xdigit_value(hex[hex_idx]) << 4) | unichar_xdigit_value(hex[hex_idx + 1]);
+ hex_idx += 2;
+ }
+ } else {
+ // Last possibility is that it's a buf.
+ mp_buffer_info_t bufinfo;
+ if (!mp_get_buffer(value, &bufinfo, MP_BUFFER_READ)) {
+ mp_raise_ValueError(translate("UUID value is not str, int or byte buffer"));
+ }
- if (bufinfo.len != 16) {
- mp_raise_ValueError(translate("Byte buffer must be 16 bytes."));
+ if (bufinfo.len != 16) {
+ mp_raise_ValueError(translate("Byte buffer must be 16 bytes."));
+ }
+
+ memcpy(uuid128, bufinfo.buf, 16);
}
- memcpy(uuid128, bufinfo.buf, 16);
+ // Str and bytes both get constructed the same way here.
uint32_t uuid16 = (uuid128[13] << 8) | uuid128[12];
uuid128[12] = 0;
uuid128[13] = 0;
- common_hal_bleio_uuid_construct(self, uuid16, bufinfo.buf);
+ common_hal_bleio_uuid_construct(self, uuid16, uuid128);
}
return MP_OBJ_FROM_PTR(self);
@@ -200,9 +231,32 @@ STATIC mp_obj_t bleio_uuid_binary_op(mp_binary_op_t op, mp_obj_t lhs_in, mp_obj_
}
}
+void bleio_uuid_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t kind) {
+ bleio_uuid_obj_t *self = MP_OBJ_TO_PTR(self_in);
+ uint32_t size = common_hal_bleio_uuid_get_size(self);
+ if (size == 16) {
+ mp_printf(print, "UUID(0x%04x)", common_hal_bleio_uuid_get_uuid16(self));
+ } else {
+ uint8_t uuid128[16];
+ (void) common_hal_bleio_uuid_get_uuid128(self, uuid128);
+ mp_printf(print, "UUID('"
+ "%02x%02x%02x%02x-"
+ "%02x%02x-"
+ "%02x%02x-"
+ "%02x%02x-"
+ "%02x%02x%02x%02x%02x%02x')",
+ uuid128[15], uuid128[14], uuid128[13], uuid128[12],
+ uuid128[11], uuid128[10],
+ uuid128[9], uuid128[8],
+ uuid128[7], uuid128[6],
+ uuid128[5], uuid128[4], uuid128[3], uuid128[2], uuid128[1], uuid128[0]);
+ }
+}
+
const mp_obj_type_t bleio_uuid_type = {
{ &mp_type_type },
.name = MP_QSTR_UUID,
+ .print = bleio_uuid_print,
.make_new = bleio_uuid_make_new,
.unary_op = bleio_uuid_unary_op,
.binary_op = bleio_uuid_binary_op,
diff --git a/shared-bindings/busio/UART.c b/shared-bindings/busio/UART.c
index cd0ca3f36..85bf498a4 100644
--- a/shared-bindings/busio/UART.c
+++ b/shared-bindings/busio/UART.c
@@ -62,7 +62,7 @@
//|
//| *New in CircuitPython 4.0:* ``timeout`` has incompatibly changed units from milliseconds to seconds.
//| The new upper limit on ``timeout`` is meant to catch mistaken use of milliseconds.
-
+//|
typedef struct {
mp_obj_base_t base;
} busio_uart_parity_obj_t;
@@ -172,7 +172,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(busio_uart___exit___obj, 4, 4, busio_
//| Read bytes into the ``buf``. Read at most ``len(buf)`` bytes.
//|
//| :return: number of bytes read and stored into ``buf``
-//| :rtype: bytes or None
+//| :rtype: int or None (on a non-blocking error)
//|
//| *New in CircuitPython 4.0:* No length parameter is permitted.