Merge remote-tracking branch 'upstream/master' into stm32-meowbit

This commit is contained in:
Hierophect 2019-12-09 12:29:00 -05:00
commit b0a5e81c46
130 changed files with 4963 additions and 2112 deletions

View File

@ -140,6 +140,7 @@ jobs:
- "robohatmm1_m4" - "robohatmm1_m4"
- "sam32" - "sam32"
- "serpente" - "serpente"
- "shirtty"
- "snekboard" - "snekboard"
- "sparkfun_lumidrive" - "sparkfun_lumidrive"
- "sparkfun_nrf52840_mini" - "sparkfun_nrf52840_mini"
@ -168,7 +169,8 @@ jobs:
run: | run: |
sudo apt-get install -y gettext sudo apt-get install -y gettext
pip install requests sh click setuptools awscli pip install requests sh click setuptools awscli
wget https://s3.amazonaws.com/adafruit-circuit-python/gcc-arm-embedded_7-2018q2-1~xenial1_amd64.deb && sudo dpkg -i gcc-arm-embedded*_amd64.deb wget https://developer.arm.com/-/media/Files/downloads/gnu-rm/9-2019q4/RC2.1/gcc-arm-none-eabi-9-2019-q4-major-x86_64-linux.tar.bz2
sudo tar -C /usr --strip-components=1 -xaf gcc-arm-none-eabi-9-2019-q4-major-x86_64-linux.tar.bz2
- name: Versions - name: Versions
run: | run: |
gcc --version gcc --version

3
.gitmodules vendored
View File

@ -76,7 +76,8 @@
[submodule "lib/tinyusb"] [submodule "lib/tinyusb"]
path = lib/tinyusb path = lib/tinyusb
url = https://github.com/hathach/tinyusb.git url = https://github.com/hathach/tinyusb.git
branch = develop branch = master
fetchRecurseSubmodules = false
[submodule "tools/huffman"] [submodule "tools/huffman"]
path = tools/huffman path = tools/huffman
url = https://github.com/tannewt/huffman.git url = https://github.com/tannewt/huffman.git

View File

@ -52,7 +52,7 @@
#include <string.h> #include <string.h>
#include <stdlib.h> #include <stdlib.h>
#include "tick.h" #include "supervisor/shared/tick.h"
//#include "Ethernet/socket.h" //#include "Ethernet/socket.h"
//#include "Internet/DNS/dns.h" //#include "Internet/DNS/dns.h"
@ -125,7 +125,7 @@ uint16_t DNS_MSGID; // DNS message ID
uint32_t HAL_GetTick(void) { uint32_t HAL_GetTick(void) {
return ticks_ms; return supervisor_ticks_ms32();
} }
uint32_t hal_sys_tick; uint32_t hal_sys_tick;

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-10-21 19:50-0700\n" "POT-Creation-Date: 2019-11-27 14:54-0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -488,11 +488,6 @@ msgstr ""
msgid "Corrupt raw code" msgid "Corrupt raw code"
msgstr "" msgstr ""
#: ports/nrf/common-hal/_bleio/UUID.c
#, c-format
msgid "Could not decode ble_uuid, err 0x%04x"
msgstr ""
#: ports/atmel-samd/common-hal/busio/UART.c #: ports/atmel-samd/common-hal/busio/UART.c
msgid "Could not initialize UART" msgid "Could not initialize UART"
msgstr "Tidak dapat menginisialisasi UART" msgstr "Tidak dapat menginisialisasi UART"
@ -587,11 +582,6 @@ msgstr ""
msgid "Expected tuple of length %d, got %d" msgid "Expected tuple of length %d, got %d"
msgstr "" msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Failed initiate attribute read, err 0x%04x"
msgstr ""
#: shared-bindings/ps2io/Ps2.c #: shared-bindings/ps2io/Ps2.c
msgid "Failed sending command." msgid "Failed sending command."
msgstr "" msgstr ""
@ -601,15 +591,6 @@ msgstr ""
msgid "Failed to acquire mutex, err 0x%04x" msgid "Failed to acquire mutex, err 0x%04x"
msgstr "Gagal untuk mendapatkan mutex, status: 0x%08lX" msgstr "Gagal untuk mendapatkan mutex, status: 0x%08lX"
#: ports/nrf/common-hal/_bleio/Service.c
msgid "Failed to add characteristic, NRF_ERROR_%q"
msgstr ""
#: ports/nrf/common-hal/_bleio/Characteristic.c
#, c-format
msgid "Failed to add descriptor, err 0x%04x"
msgstr ""
#: ports/atmel-samd/common-hal/busio/UART.c ports/nrf/common-hal/busio/UART.c #: ports/atmel-samd/common-hal/busio/UART.c ports/nrf/common-hal/busio/UART.c
msgid "Failed to allocate RX buffer" msgid "Failed to allocate RX buffer"
msgstr "Gagal untuk mengalokasikan buffer RX" msgstr "Gagal untuk mengalokasikan buffer RX"
@ -620,10 +601,6 @@ msgstr "Gagal untuk mengalokasikan buffer RX"
msgid "Failed to allocate RX buffer of %d bytes" msgid "Failed to allocate RX buffer of %d bytes"
msgstr "Gagal untuk megalokasikan buffer RX dari %d byte" msgstr "Gagal untuk megalokasikan buffer RX dari %d byte"
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Failed to change softdevice state, NRF_ERROR_%q"
msgstr ""
#: ports/nrf/common-hal/_bleio/Adapter.c #: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Failed to connect: internal error" msgid "Failed to connect: internal error"
msgstr "" msgstr ""
@ -632,96 +609,11 @@ msgstr ""
msgid "Failed to connect: timeout" msgid "Failed to connect: timeout"
msgstr "" msgstr ""
#: ports/nrf/common-hal/_bleio/Service.c
msgid "Failed to create service, NRF_ERROR_%q"
msgstr ""
#: ports/nrf/common-hal/_bleio/Connection.c
#, fuzzy
msgid "Failed to discover services"
msgstr "Gagal untuk menemukan layanan, status: 0x%08lX"
#: ports/nrf/common-hal/_bleio/Adapter.c
#, fuzzy
msgid "Failed to get local address"
msgstr "Gagal untuk mendapatkan alamat lokal, error: 0x%08lX"
#: ports/nrf/common-hal/_bleio/Adapter.c
#, fuzzy
msgid "Failed to get softdevice state"
msgstr "Gagal untuk mendapatkan status softdevice, error: 0x%08lX"
#: ports/nrf/common-hal/_bleio/Characteristic.c
#, c-format
msgid "Failed to notify or indicate attribute value, err 0x%04x"
msgstr ""
#: ports/nrf/common-hal/_bleio/Connection.c
msgid "Failed to pair"
msgstr ""
#: ports/nrf/common-hal/_bleio/Characteristic.c
#, fuzzy, c-format
msgid "Failed to read CCCD value, err 0x%04x"
msgstr "Gagal untuk membaca nilai atribut, status: 0x%08lX"
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Failed to read attribute value, err 0x%04x"
msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
#, fuzzy, c-format
msgid "Failed to read gatts value, err 0x%04x"
msgstr "Gagal untuk menulis nilai gatts, status: 0x%08lX"
#: ports/nrf/common-hal/_bleio/UUID.c
#, fuzzy, c-format
msgid "Failed to register Vendor-Specific UUID, err 0x%04x"
msgstr "Gagal untuk menambahkan Vendor Spesific UUID, status: 0x%08lX"
#: ports/nrf/sd_mutex.c #: ports/nrf/sd_mutex.c
#, fuzzy, c-format #, fuzzy, c-format
msgid "Failed to release mutex, err 0x%04x" msgid "Failed to release mutex, err 0x%04x"
msgstr "Gagal untuk melepaskan mutex, status: 0x%08lX" msgstr "Gagal untuk melepaskan mutex, status: 0x%08lX"
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Failed to start advertising, NRF_ERROR_%q"
msgstr ""
#: ports/nrf/common-hal/_bleio/Adapter.c
#, c-format
msgid "Failed to start connecting, error 0x%04x"
msgstr ""
#: ports/nrf/common-hal/_bleio/Connection.c
msgid "Failed to start pairing, NRF_ERROR_%q"
msgstr ""
#: ports/nrf/common-hal/_bleio/Adapter.c
#, fuzzy, c-format
msgid "Failed to start scanning, err 0x%04x"
msgstr "Gagal untuk melakukan scanning, status: 0x%08lX"
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Failed to stop advertising, NRF_ERROR_%q"
msgstr ""
#: ports/nrf/common-hal/_bleio/Characteristic.c
#, c-format
msgid "Failed to write CCCD, err 0x%04x"
msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
#, fuzzy, c-format
msgid "Failed to write attribute value, err 0x%04x"
msgstr "Gagal untuk menulis nilai atribut, status: 0x%08lX"
#: ports/nrf/common-hal/_bleio/__init__.c
#, fuzzy, c-format
msgid "Failed to write gatts value, err 0x%04x"
msgstr "Gagal untuk menulis nilai gatts, status: 0x%08lX"
#: py/moduerrno.c #: py/moduerrno.c
msgid "File exists" msgid "File exists"
msgstr "" msgstr ""
@ -784,6 +676,14 @@ msgstr ""
msgid "Input/output error" msgid "Input/output error"
msgstr "" msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
msgid "Insufficient authentication"
msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
msgid "Insufficient encryption"
msgstr ""
#: ports/atmel-samd/common-hal/audiobusio/I2SOut.c #: ports/atmel-samd/common-hal/audiobusio/I2SOut.c
#: ports/atmel-samd/common-hal/audiobusio/PDMIn.c #: ports/atmel-samd/common-hal/audiobusio/PDMIn.c
msgid "Invalid %q pin" msgid "Invalid %q pin"
@ -1138,7 +1038,7 @@ msgid "Running in safe mode! Not running saved code.\n"
msgstr "" msgstr ""
"Berjalan di mode aman(safe mode)! tidak menjalankan kode yang tersimpan.\n" "Berjalan di mode aman(safe mode)! tidak menjalankan kode yang tersimpan.\n"
#: ports/atmel-samd/common-hal/busio/I2C.c #: ports/atmel-samd/common-hal/busio/I2C.c ports/nrf/common-hal/busio/I2C.c
msgid "SDA or SCL needs a pull up" msgid "SDA or SCL needs a pull up"
msgstr "SDA atau SCL membutuhkan pull up" msgstr "SDA atau SCL membutuhkan pull up"
@ -1323,11 +1223,32 @@ msgstr ""
msgid "Unexpected nrfx uuid type" msgid "Unexpected nrfx uuid type"
msgstr "" msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Unknown gatt error: 0x%04x"
msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Unknown security error: 0x%04x"
msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Unknown soft device error: %04x"
msgstr ""
#: shared-bindings/_pixelbuf/PixelBuf.c #: shared-bindings/_pixelbuf/PixelBuf.c
#, c-format #, c-format
msgid "Unmatched number of items on RHS (expected %d, got %d)." msgid "Unmatched number of items on RHS (expected %d, got %d)."
msgstr "" msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
msgid ""
"Unspecified issue. Can be that the pairing prompt on the other device was "
"declined or ignored."
msgstr ""
#: ports/atmel-samd/common-hal/busio/I2C.c #: ports/atmel-samd/common-hal/busio/I2C.c
msgid "Unsupported baudrate" msgid "Unsupported baudrate"
msgstr "Baudrate tidak didukung" msgstr "Baudrate tidak didukung"
@ -2533,12 +2454,8 @@ msgstr ""
msgid "time.struct_time() takes a 9-sequence" msgid "time.struct_time() takes a 9-sequence"
msgstr "" msgstr ""
#: shared-bindings/time/__init__.c
msgid "time.struct_time() takes exactly 1 argument"
msgstr ""
#: shared-bindings/busio/UART.c #: shared-bindings/busio/UART.c
msgid "timeout >100 (units are now seconds, not msecs)" msgid "timeout must be 0.0-100.0 seconds"
msgstr "" msgstr ""
#: shared-bindings/_bleio/CharacteristicBuffer.c #: shared-bindings/_bleio/CharacteristicBuffer.c
@ -2765,7 +2682,7 @@ msgstr ""
#~ msgid "Failed to acquire mutex" #~ msgid "Failed to acquire mutex"
#~ msgstr "Gagal untuk mendapatkan mutex, status: 0x%08lX" #~ msgstr "Gagal untuk mendapatkan mutex, status: 0x%08lX"
#, fuzzy, c-format #, fuzzy
#~ msgid "Failed to add characteristic, err 0x%04x" #~ msgid "Failed to add characteristic, err 0x%04x"
#~ msgstr "Gagal untuk menambahkan karakteristik, status: 0x%08lX" #~ msgstr "Gagal untuk menambahkan karakteristik, status: 0x%08lX"
@ -2773,7 +2690,7 @@ msgstr ""
#~ msgid "Failed to add service" #~ msgid "Failed to add service"
#~ msgstr "Gagal untuk menambahkan layanan, status: 0x%08lX" #~ msgstr "Gagal untuk menambahkan layanan, status: 0x%08lX"
#, fuzzy, c-format #, fuzzy
#~ msgid "Failed to add service, err 0x%04x" #~ msgid "Failed to add service, err 0x%04x"
#~ msgstr "Gagal untuk menambahkan layanan, status: 0x%08lX" #~ msgstr "Gagal untuk menambahkan layanan, status: 0x%08lX"
@ -2789,7 +2706,7 @@ msgstr ""
#~ msgid "Failed to continue scanning" #~ msgid "Failed to continue scanning"
#~ msgstr "Gagal untuk melanjutkan scanning, status: 0x%08lX" #~ msgstr "Gagal untuk melanjutkan scanning, status: 0x%08lX"
#, fuzzy, c-format #, fuzzy
#~ msgid "Failed to continue scanning, err 0x%04x" #~ msgid "Failed to continue scanning, err 0x%04x"
#~ msgstr "Gagal untuk melanjutkan scanning, status: 0x%08lX" #~ msgstr "Gagal untuk melanjutkan scanning, status: 0x%08lX"
@ -2797,14 +2714,38 @@ msgstr ""
#~ msgid "Failed to create mutex" #~ msgid "Failed to create mutex"
#~ msgstr "Gagal untuk membuat mutex, status: 0x%08lX" #~ msgstr "Gagal untuk membuat mutex, status: 0x%08lX"
#, fuzzy
#~ msgid "Failed to discover services"
#~ msgstr "Gagal untuk menemukan layanan, status: 0x%08lX"
#, fuzzy
#~ msgid "Failed to get local address"
#~ msgstr "Gagal untuk mendapatkan alamat lokal, error: 0x%08lX"
#, fuzzy
#~ msgid "Failed to get softdevice state"
#~ msgstr "Gagal untuk mendapatkan status softdevice, error: 0x%08lX"
#, fuzzy #, fuzzy
#~ msgid "Failed to notify or indicate attribute value, err %0x04x" #~ msgid "Failed to notify or indicate attribute value, err %0x04x"
#~ msgstr "Gagal untuk melaporkan nilai atribut, status: 0x%08lX" #~ msgstr "Gagal untuk melaporkan nilai atribut, status: 0x%08lX"
#, fuzzy
#~ msgid "Failed to read CCCD value, err 0x%04x"
#~ msgstr "Gagal untuk membaca nilai atribut, status: 0x%08lX"
#, fuzzy #, fuzzy
#~ msgid "Failed to read attribute value, err %0x04x" #~ msgid "Failed to read attribute value, err %0x04x"
#~ msgstr "Gagal untuk membaca nilai atribut, status: 0x%08lX" #~ msgstr "Gagal untuk membaca nilai atribut, status: 0x%08lX"
#, fuzzy
#~ msgid "Failed to read gatts value, err 0x%04x"
#~ msgstr "Gagal untuk menulis nilai gatts, status: 0x%08lX"
#, fuzzy
#~ msgid "Failed to register Vendor-Specific UUID, err 0x%04x"
#~ msgstr "Gagal untuk menambahkan Vendor Spesific UUID, status: 0x%08lX"
#, fuzzy #, fuzzy
#~ msgid "Failed to release mutex" #~ msgid "Failed to release mutex"
#~ msgstr "Gagal untuk melepaskan mutex, status: 0x%08lX" #~ msgstr "Gagal untuk melepaskan mutex, status: 0x%08lX"
@ -2813,7 +2754,7 @@ msgstr ""
#~ msgid "Failed to start advertising" #~ msgid "Failed to start advertising"
#~ msgstr "Gagal untuk memulai advertisement, status: 0x%08lX" #~ msgstr "Gagal untuk memulai advertisement, status: 0x%08lX"
#, fuzzy, c-format #, fuzzy
#~ msgid "Failed to start advertising, err 0x%04x" #~ msgid "Failed to start advertising, err 0x%04x"
#~ msgstr "Gagal untuk memulai advertisement, status: 0x%08lX" #~ msgstr "Gagal untuk memulai advertisement, status: 0x%08lX"
@ -2821,14 +2762,26 @@ msgstr ""
#~ msgid "Failed to start scanning" #~ msgid "Failed to start scanning"
#~ msgstr "Gagal untuk melakukan scanning, status: 0x%08lX" #~ msgstr "Gagal untuk melakukan scanning, status: 0x%08lX"
#, fuzzy
#~ msgid "Failed to start scanning, err 0x%04x"
#~ msgstr "Gagal untuk melakukan scanning, status: 0x%08lX"
#, fuzzy #, fuzzy
#~ msgid "Failed to stop advertising" #~ msgid "Failed to stop advertising"
#~ msgstr "Gagal untuk memberhentikan advertisement, status: 0x%08lX" #~ msgstr "Gagal untuk memberhentikan advertisement, status: 0x%08lX"
#, fuzzy, c-format #, fuzzy
#~ msgid "Failed to stop advertising, err 0x%04x" #~ msgid "Failed to stop advertising, err 0x%04x"
#~ msgstr "Gagal untuk memberhentikan advertisement, status: 0x%08lX" #~ msgstr "Gagal untuk memberhentikan advertisement, status: 0x%08lX"
#, fuzzy
#~ msgid "Failed to write attribute value, err 0x%04x"
#~ msgstr "Gagal untuk menulis nilai atribut, status: 0x%08lX"
#, fuzzy
#~ msgid "Failed to write gatts value, err 0x%04x"
#~ msgstr "Gagal untuk menulis nilai gatts, status: 0x%08lX"
#~ msgid "GPIO16 does not support pull up." #~ msgid "GPIO16 does not support pull up."
#~ msgstr "GPIO16 tidak mendukung pull up" #~ msgstr "GPIO16 tidak mendukung pull up"
@ -2878,7 +2831,7 @@ msgstr ""
#~ msgid "STA required" #~ msgid "STA required"
#~ msgstr "STA dibutuhkan" #~ msgstr "STA dibutuhkan"
#, fuzzy, c-format #, fuzzy
#~ msgid "Soft device assert, id: 0x%08lX, pc: 0x%08lX" #~ msgid "Soft device assert, id: 0x%08lX, pc: 0x%08lX"
#~ msgstr "Dukungan soft device, id: 0x%08lX, pc: 0x%08l" #~ msgstr "Dukungan soft device, id: 0x%08lX, pc: 0x%08l"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-10-21 19:50-0700\n" "POT-Creation-Date: 2019-11-27 14:54-0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -478,11 +478,6 @@ msgstr ""
msgid "Corrupt raw code" msgid "Corrupt raw code"
msgstr "" msgstr ""
#: ports/nrf/common-hal/_bleio/UUID.c
#, c-format
msgid "Could not decode ble_uuid, err 0x%04x"
msgstr ""
#: ports/atmel-samd/common-hal/busio/UART.c #: ports/atmel-samd/common-hal/busio/UART.c
msgid "Could not initialize UART" msgid "Could not initialize UART"
msgstr "" msgstr ""
@ -576,11 +571,6 @@ msgstr ""
msgid "Expected tuple of length %d, got %d" msgid "Expected tuple of length %d, got %d"
msgstr "" msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Failed initiate attribute read, err 0x%04x"
msgstr ""
#: shared-bindings/ps2io/Ps2.c #: shared-bindings/ps2io/Ps2.c
msgid "Failed sending command." msgid "Failed sending command."
msgstr "" msgstr ""
@ -590,15 +580,6 @@ msgstr ""
msgid "Failed to acquire mutex, err 0x%04x" msgid "Failed to acquire mutex, err 0x%04x"
msgstr "" msgstr ""
#: ports/nrf/common-hal/_bleio/Service.c
msgid "Failed to add characteristic, NRF_ERROR_%q"
msgstr ""
#: ports/nrf/common-hal/_bleio/Characteristic.c
#, c-format
msgid "Failed to add descriptor, err 0x%04x"
msgstr ""
#: ports/atmel-samd/common-hal/busio/UART.c ports/nrf/common-hal/busio/UART.c #: ports/atmel-samd/common-hal/busio/UART.c ports/nrf/common-hal/busio/UART.c
msgid "Failed to allocate RX buffer" msgid "Failed to allocate RX buffer"
msgstr "" msgstr ""
@ -609,10 +590,6 @@ msgstr ""
msgid "Failed to allocate RX buffer of %d bytes" msgid "Failed to allocate RX buffer of %d bytes"
msgstr "" msgstr ""
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Failed to change softdevice state, NRF_ERROR_%q"
msgstr ""
#: ports/nrf/common-hal/_bleio/Adapter.c #: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Failed to connect: internal error" msgid "Failed to connect: internal error"
msgstr "" msgstr ""
@ -621,93 +598,11 @@ msgstr ""
msgid "Failed to connect: timeout" msgid "Failed to connect: timeout"
msgstr "" msgstr ""
#: ports/nrf/common-hal/_bleio/Service.c
msgid "Failed to create service, NRF_ERROR_%q"
msgstr ""
#: ports/nrf/common-hal/_bleio/Connection.c
msgid "Failed to discover services"
msgstr ""
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Failed to get local address"
msgstr ""
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Failed to get softdevice state"
msgstr ""
#: ports/nrf/common-hal/_bleio/Characteristic.c
#, c-format
msgid "Failed to notify or indicate attribute value, err 0x%04x"
msgstr ""
#: ports/nrf/common-hal/_bleio/Connection.c
msgid "Failed to pair"
msgstr ""
#: ports/nrf/common-hal/_bleio/Characteristic.c
#, c-format
msgid "Failed to read CCCD value, err 0x%04x"
msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Failed to read attribute value, err 0x%04x"
msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Failed to read gatts value, err 0x%04x"
msgstr ""
#: ports/nrf/common-hal/_bleio/UUID.c
#, c-format
msgid "Failed to register Vendor-Specific UUID, err 0x%04x"
msgstr ""
#: ports/nrf/sd_mutex.c #: ports/nrf/sd_mutex.c
#, c-format #, c-format
msgid "Failed to release mutex, err 0x%04x" msgid "Failed to release mutex, err 0x%04x"
msgstr "" msgstr ""
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Failed to start advertising, NRF_ERROR_%q"
msgstr ""
#: ports/nrf/common-hal/_bleio/Adapter.c
#, c-format
msgid "Failed to start connecting, error 0x%04x"
msgstr ""
#: ports/nrf/common-hal/_bleio/Connection.c
msgid "Failed to start pairing, NRF_ERROR_%q"
msgstr ""
#: ports/nrf/common-hal/_bleio/Adapter.c
#, c-format
msgid "Failed to start scanning, err 0x%04x"
msgstr ""
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Failed to stop advertising, NRF_ERROR_%q"
msgstr ""
#: ports/nrf/common-hal/_bleio/Characteristic.c
#, c-format
msgid "Failed to write CCCD, err 0x%04x"
msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Failed to write attribute value, err 0x%04x"
msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Failed to write gatts value, err 0x%04x"
msgstr ""
#: py/moduerrno.c #: py/moduerrno.c
msgid "File exists" msgid "File exists"
msgstr "" msgstr ""
@ -770,6 +665,14 @@ msgstr ""
msgid "Input/output error" msgid "Input/output error"
msgstr "" msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
msgid "Insufficient authentication"
msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
msgid "Insufficient encryption"
msgstr ""
#: ports/atmel-samd/common-hal/audiobusio/I2SOut.c #: ports/atmel-samd/common-hal/audiobusio/I2SOut.c
#: ports/atmel-samd/common-hal/audiobusio/PDMIn.c #: ports/atmel-samd/common-hal/audiobusio/PDMIn.c
msgid "Invalid %q pin" msgid "Invalid %q pin"
@ -1119,7 +1022,7 @@ msgstr ""
msgid "Running in safe mode! Not running saved code.\n" msgid "Running in safe mode! Not running saved code.\n"
msgstr "" msgstr ""
#: ports/atmel-samd/common-hal/busio/I2C.c #: ports/atmel-samd/common-hal/busio/I2C.c ports/nrf/common-hal/busio/I2C.c
msgid "SDA or SCL needs a pull up" msgid "SDA or SCL needs a pull up"
msgstr "" msgstr ""
@ -1301,11 +1204,32 @@ msgstr ""
msgid "Unexpected nrfx uuid type" msgid "Unexpected nrfx uuid type"
msgstr "" msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Unknown gatt error: 0x%04x"
msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Unknown security error: 0x%04x"
msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Unknown soft device error: %04x"
msgstr ""
#: shared-bindings/_pixelbuf/PixelBuf.c #: shared-bindings/_pixelbuf/PixelBuf.c
#, c-format #, c-format
msgid "Unmatched number of items on RHS (expected %d, got %d)." msgid "Unmatched number of items on RHS (expected %d, got %d)."
msgstr "" msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
msgid ""
"Unspecified issue. Can be that the pairing prompt on the other device was "
"declined or ignored."
msgstr ""
#: ports/atmel-samd/common-hal/busio/I2C.c #: ports/atmel-samd/common-hal/busio/I2C.c
msgid "Unsupported baudrate" msgid "Unsupported baudrate"
msgstr "" msgstr ""
@ -2499,12 +2423,8 @@ msgstr ""
msgid "time.struct_time() takes a 9-sequence" msgid "time.struct_time() takes a 9-sequence"
msgstr "" msgstr ""
#: shared-bindings/time/__init__.c
msgid "time.struct_time() takes exactly 1 argument"
msgstr ""
#: shared-bindings/busio/UART.c #: shared-bindings/busio/UART.c
msgid "timeout >100 (units are now seconds, not msecs)" msgid "timeout must be 0.0-100.0 seconds"
msgstr "" msgstr ""
#: shared-bindings/_bleio/CharacteristicBuffer.c #: shared-bindings/_bleio/CharacteristicBuffer.c

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: \n" "Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-10-21 19:50-0700\n" "POT-Creation-Date: 2019-11-27 14:54-0500\n"
"PO-Revision-Date: 2018-07-27 11:55-0700\n" "PO-Revision-Date: 2018-07-27 11:55-0700\n"
"Last-Translator: Pascal Deneaux\n" "Last-Translator: Pascal Deneaux\n"
"Language-Team: Sebastian Plamauer, Pascal Deneaux\n" "Language-Team: Sebastian Plamauer, Pascal Deneaux\n"
@ -482,11 +482,6 @@ msgstr "Beschädigte .mpy Datei"
msgid "Corrupt raw code" msgid "Corrupt raw code"
msgstr "Beschädigter raw code" msgstr "Beschädigter raw code"
#: ports/nrf/common-hal/_bleio/UUID.c
#, c-format
msgid "Could not decode ble_uuid, err 0x%04x"
msgstr "Konnte ble_uuid nicht decodieren. Status: 0x%04x"
#: ports/atmel-samd/common-hal/busio/UART.c #: ports/atmel-samd/common-hal/busio/UART.c
msgid "Could not initialize UART" msgid "Could not initialize UART"
msgstr "Konnte UART nicht initialisieren" msgstr "Konnte UART nicht initialisieren"
@ -580,11 +575,6 @@ msgstr "Erwartet eine Adresse"
msgid "Expected tuple of length %d, got %d" msgid "Expected tuple of length %d, got %d"
msgstr "Habe ein Tupel der Länge %d erwartet aber %d erhalten" msgstr "Habe ein Tupel der Länge %d erwartet aber %d erhalten"
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Failed initiate attribute read, err 0x%04x"
msgstr ""
#: shared-bindings/ps2io/Ps2.c #: shared-bindings/ps2io/Ps2.c
msgid "Failed sending command." msgid "Failed sending command."
msgstr "Kommando nicht gesendet." msgstr "Kommando nicht gesendet."
@ -594,15 +584,6 @@ msgstr "Kommando nicht gesendet."
msgid "Failed to acquire mutex, err 0x%04x" msgid "Failed to acquire mutex, err 0x%04x"
msgstr "Mutex konnte nicht akquiriert werden. Status: 0x%04x" msgstr "Mutex konnte nicht akquiriert werden. Status: 0x%04x"
#: ports/nrf/common-hal/_bleio/Service.c
msgid "Failed to add characteristic, NRF_ERROR_%q"
msgstr ""
#: ports/nrf/common-hal/_bleio/Characteristic.c
#, c-format
msgid "Failed to add descriptor, err 0x%04x"
msgstr "Deskriptor konnte nicht hinzugefügt werden. Status: 0x%04x"
#: ports/atmel-samd/common-hal/busio/UART.c ports/nrf/common-hal/busio/UART.c #: ports/atmel-samd/common-hal/busio/UART.c ports/nrf/common-hal/busio/UART.c
msgid "Failed to allocate RX buffer" msgid "Failed to allocate RX buffer"
msgstr "Konnte keinen RX Buffer allozieren" msgstr "Konnte keinen RX Buffer allozieren"
@ -613,10 +594,6 @@ msgstr "Konnte keinen RX Buffer allozieren"
msgid "Failed to allocate RX buffer of %d bytes" msgid "Failed to allocate RX buffer of %d bytes"
msgstr "Konnte keine RX Buffer mit %d allozieren" msgstr "Konnte keine RX Buffer mit %d allozieren"
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Failed to change softdevice state, NRF_ERROR_%q"
msgstr ""
#: ports/nrf/common-hal/_bleio/Adapter.c #: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Failed to connect: internal error" msgid "Failed to connect: internal error"
msgstr "" msgstr ""
@ -625,93 +602,11 @@ msgstr ""
msgid "Failed to connect: timeout" msgid "Failed to connect: timeout"
msgstr "Verbindung nicht erfolgreich: timeout" msgstr "Verbindung nicht erfolgreich: timeout"
#: ports/nrf/common-hal/_bleio/Service.c
msgid "Failed to create service, NRF_ERROR_%q"
msgstr ""
#: ports/nrf/common-hal/_bleio/Connection.c
msgid "Failed to discover services"
msgstr "Es konnten keine Dienste gefunden werden"
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Failed to get local address"
msgstr "Lokale Adresse konnte nicht abgerufen werden"
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Failed to get softdevice state"
msgstr "Fehler beim Abrufen des Softdevice-Status"
#: ports/nrf/common-hal/_bleio/Characteristic.c
#, c-format
msgid "Failed to notify or indicate attribute value, err 0x%04x"
msgstr ""
#: ports/nrf/common-hal/_bleio/Connection.c
msgid "Failed to pair"
msgstr "Koppeln fehlgeschlagen"
#: ports/nrf/common-hal/_bleio/Characteristic.c
#, c-format
msgid "Failed to read CCCD value, err 0x%04x"
msgstr "Kann CCCD value nicht lesen. Status: 0x%04x"
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Failed to read attribute value, err 0x%04x"
msgstr "Kann Attributwert nicht lesen, Status: 0x%04x"
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Failed to read gatts value, err 0x%04x"
msgstr "gatts value konnte nicht gelesen werden. Status: 0x%04x"
#: ports/nrf/common-hal/_bleio/UUID.c
#, c-format
msgid "Failed to register Vendor-Specific UUID, err 0x%04x"
msgstr "Kann keine herstellerspezifische UUID hinzufügen. Status: 0x%04x"
#: ports/nrf/sd_mutex.c #: ports/nrf/sd_mutex.c
#, c-format #, c-format
msgid "Failed to release mutex, err 0x%04x" msgid "Failed to release mutex, err 0x%04x"
msgstr "Mutex konnte nicht freigegeben werden. Status: 0x%04x" msgstr "Mutex konnte nicht freigegeben werden. Status: 0x%04x"
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Failed to start advertising, NRF_ERROR_%q"
msgstr ""
#: ports/nrf/common-hal/_bleio/Adapter.c
#, c-format
msgid "Failed to start connecting, error 0x%04x"
msgstr "Verbindung konnte nicht hergestellt werden. Status: 0x%04x"
#: ports/nrf/common-hal/_bleio/Connection.c
msgid "Failed to start pairing, NRF_ERROR_%q"
msgstr ""
#: ports/nrf/common-hal/_bleio/Adapter.c
#, c-format
msgid "Failed to start scanning, err 0x%04x"
msgstr "Der Scanvorgang kann nicht gestartet werden. Status: 0x%04x"
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Failed to stop advertising, NRF_ERROR_%q"
msgstr ""
#: ports/nrf/common-hal/_bleio/Characteristic.c
#, c-format
msgid "Failed to write CCCD, err 0x%04x"
msgstr "Konnte CCCD nicht schreiben, Status: 0x%04x"
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Failed to write attribute value, err 0x%04x"
msgstr "Kann den Attributwert nicht schreiben. Status: 0x%04x"
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Failed to write gatts value, err 0x%04x"
msgstr "gatts value konnte nicht geschrieben werden. Status: 0x%04x"
#: py/moduerrno.c #: py/moduerrno.c
msgid "File exists" msgid "File exists"
msgstr "Datei existiert" msgstr "Datei existiert"
@ -736,7 +631,9 @@ msgstr ""
#: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c #: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c
msgid "Frequency captured is above capability. Capture Paused." msgid "Frequency captured is above capability. Capture Paused."
msgstr "Die aufgezeichnete Frequenz liegt über der Leistungsgrenze. Aufnahme angehalten." msgstr ""
"Die aufgezeichnete Frequenz liegt über der Leistungsgrenze. Aufnahme "
"angehalten."
#: shared-bindings/bitbangio/I2C.c shared-bindings/bitbangio/SPI.c #: shared-bindings/bitbangio/I2C.c shared-bindings/bitbangio/SPI.c
#: shared-bindings/busio/I2C.c shared-bindings/busio/SPI.c #: shared-bindings/busio/I2C.c shared-bindings/busio/SPI.c
@ -776,6 +673,14 @@ msgstr "Inkorrekte Puffergröße"
msgid "Input/output error" msgid "Input/output error"
msgstr "Eingabe-/Ausgabefehler" msgstr "Eingabe-/Ausgabefehler"
#: ports/nrf/common-hal/_bleio/__init__.c
msgid "Insufficient authentication"
msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
msgid "Insufficient encryption"
msgstr ""
#: ports/atmel-samd/common-hal/audiobusio/I2SOut.c #: ports/atmel-samd/common-hal/audiobusio/I2SOut.c
#: ports/atmel-samd/common-hal/audiobusio/PDMIn.c #: ports/atmel-samd/common-hal/audiobusio/PDMIn.c
msgid "Invalid %q pin" msgid "Invalid %q pin"
@ -1140,7 +1045,7 @@ msgstr "Sicherheitsmodus aktiv! Automatisches Neuladen ist deaktiviert.\n"
msgid "Running in safe mode! Not running saved code.\n" msgid "Running in safe mode! Not running saved code.\n"
msgstr "Sicherheitsmodus aktiv! Gespeicherter Code wird nicht ausgeführt\n" msgstr "Sicherheitsmodus aktiv! Gespeicherter Code wird nicht ausgeführt\n"
#: ports/atmel-samd/common-hal/busio/I2C.c #: ports/atmel-samd/common-hal/busio/I2C.c ports/nrf/common-hal/busio/I2C.c
msgid "SDA or SCL needs a pull up" msgid "SDA or SCL needs a pull up"
msgstr "SDA oder SCL brauchen pull up" msgstr "SDA oder SCL brauchen pull up"
@ -1336,6 +1241,21 @@ msgstr "Schreiben in nvm nicht möglich."
msgid "Unexpected nrfx uuid type" msgid "Unexpected nrfx uuid type"
msgstr "Unerwarteter nrfx uuid-Typ" msgstr "Unerwarteter nrfx uuid-Typ"
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Unknown gatt error: 0x%04x"
msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Unknown security error: 0x%04x"
msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Unknown soft device error: %04x"
msgstr ""
#: shared-bindings/_pixelbuf/PixelBuf.c #: shared-bindings/_pixelbuf/PixelBuf.c
#, c-format #, c-format
msgid "Unmatched number of items on RHS (expected %d, got %d)." msgid "Unmatched number of items on RHS (expected %d, got %d)."
@ -1343,6 +1263,12 @@ msgstr ""
"Nicht übereinstimmende Anzahl von Elementen auf der rechten Seite (erwartet " "Nicht übereinstimmende Anzahl von Elementen auf der rechten Seite (erwartet "
"%d, %d erhalten)." "%d, %d erhalten)."
#: ports/nrf/common-hal/_bleio/__init__.c
msgid ""
"Unspecified issue. Can be that the pairing prompt on the other device was "
"declined or ignored."
msgstr ""
#: ports/atmel-samd/common-hal/busio/I2C.c #: ports/atmel-samd/common-hal/busio/I2C.c
msgid "Unsupported baudrate" msgid "Unsupported baudrate"
msgstr "Baudrate wird nicht unterstützt" msgstr "Baudrate wird nicht unterstützt"
@ -2558,12 +2484,8 @@ msgstr "threshold muss im Intervall 0-65536 liegen"
msgid "time.struct_time() takes a 9-sequence" msgid "time.struct_time() takes a 9-sequence"
msgstr "" msgstr ""
#: shared-bindings/time/__init__.c
msgid "time.struct_time() takes exactly 1 argument"
msgstr ""
#: shared-bindings/busio/UART.c #: shared-bindings/busio/UART.c
msgid "timeout >100 (units are now seconds, not msecs)" msgid "timeout must be 0.0-100.0 seconds"
msgstr "" msgstr ""
#: shared-bindings/_bleio/CharacteristicBuffer.c #: shared-bindings/_bleio/CharacteristicBuffer.c
@ -2794,6 +2716,9 @@ msgstr ""
#~ msgid "Characteristic already in use by another Service." #~ msgid "Characteristic already in use by another Service."
#~ msgstr "Characteristic wird bereits von einem anderen Dienst verwendet." #~ msgstr "Characteristic wird bereits von einem anderen Dienst verwendet."
#~ msgid "Could not decode ble_uuid, err 0x%04x"
#~ msgstr "Konnte ble_uuid nicht decodieren. Status: 0x%04x"
#~ msgid "Data too large for the advertisement packet" #~ msgid "Data too large for the advertisement packet"
#~ msgstr "Daten sind zu groß für das advertisement packet" #~ msgstr "Daten sind zu groß für das advertisement packet"
@ -2816,14 +2741,15 @@ msgstr ""
#~ msgid "Failed to acquire mutex" #~ msgid "Failed to acquire mutex"
#~ msgstr "Akquirieren des Mutex gescheitert" #~ msgstr "Akquirieren des Mutex gescheitert"
#, c-format
#~ msgid "Failed to add characteristic, err 0x%04x" #~ msgid "Failed to add characteristic, err 0x%04x"
#~ msgstr "Hinzufügen des Characteristic ist gescheitert. Status: 0x%04x" #~ msgstr "Hinzufügen des Characteristic ist gescheitert. Status: 0x%04x"
#~ msgid "Failed to add descriptor, err 0x%04x"
#~ msgstr "Deskriptor konnte nicht hinzugefügt werden. Status: 0x%04x"
#~ msgid "Failed to add service" #~ msgid "Failed to add service"
#~ msgstr "Dienst konnte nicht hinzugefügt werden" #~ msgstr "Dienst konnte nicht hinzugefügt werden"
#, c-format
#~ msgid "Failed to add service, err 0x%04x" #~ msgid "Failed to add service, err 0x%04x"
#~ msgstr "Dienst konnte nicht hinzugefügt werden. Status: 0x%04x" #~ msgstr "Dienst konnte nicht hinzugefügt werden. Status: 0x%04x"
@ -2836,47 +2762,81 @@ msgstr ""
#~ msgid "Failed to continue scanning" #~ msgid "Failed to continue scanning"
#~ msgstr "Der Scanvorgang kann nicht fortgesetzt werden" #~ msgstr "Der Scanvorgang kann nicht fortgesetzt werden"
#, c-format
#~ msgid "Failed to continue scanning, err 0x%04x" #~ msgid "Failed to continue scanning, err 0x%04x"
#~ msgstr "Der Scanvorgang kann nicht fortgesetzt werden. Status: 0x%04x" #~ msgstr "Der Scanvorgang kann nicht fortgesetzt werden. Status: 0x%04x"
#~ msgid "Failed to create mutex" #~ msgid "Failed to create mutex"
#~ msgstr "Erstellen des Mutex ist fehlgeschlagen" #~ msgstr "Erstellen des Mutex ist fehlgeschlagen"
#~ msgid "Failed to discover services"
#~ msgstr "Es konnten keine Dienste gefunden werden"
#~ msgid "Failed to get local address"
#~ msgstr "Lokale Adresse konnte nicht abgerufen werden"
#~ msgid "Failed to get softdevice state"
#~ msgstr "Fehler beim Abrufen des Softdevice-Status"
#~ msgid "Failed to notify or indicate attribute value, err %0x04x" #~ msgid "Failed to notify or indicate attribute value, err %0x04x"
#~ msgstr "Kann den Attributwert nicht mitteilen. Status: 0x%04x" #~ msgstr "Kann den Attributwert nicht mitteilen. Status: 0x%04x"
#~ msgid "Failed to pair"
#~ msgstr "Koppeln fehlgeschlagen"
#~ msgid "Failed to read CCCD value, err 0x%04x"
#~ msgstr "Kann CCCD value nicht lesen. Status: 0x%04x"
#~ msgid "Failed to read attribute value, err %0x04x" #~ msgid "Failed to read attribute value, err %0x04x"
#~ msgstr "Kann den Attributwert nicht lesen. Status: 0x%04x" #~ msgstr "Kann den Attributwert nicht lesen. Status: 0x%04x"
#~ msgid "Failed to read attribute value, err 0x%04x"
#~ msgstr "Kann Attributwert nicht lesen, Status: 0x%04x"
#~ msgid "Failed to read gatts value, err 0x%04x"
#~ msgstr "gatts value konnte nicht gelesen werden. Status: 0x%04x"
#~ msgid "Failed to register Vendor-Specific UUID, err 0x%04x"
#~ msgstr "Kann keine herstellerspezifische UUID hinzufügen. Status: 0x%04x"
#~ msgid "Failed to release mutex" #~ msgid "Failed to release mutex"
#~ msgstr "Loslassen des Mutex gescheitert" #~ msgstr "Loslassen des Mutex gescheitert"
#, c-format
#~ msgid "Failed to set device name, err 0x%04x" #~ msgid "Failed to set device name, err 0x%04x"
#~ msgstr "Gerätename konnte nicht gesetzt werden, Status: 0x%04x" #~ msgstr "Gerätename konnte nicht gesetzt werden, Status: 0x%04x"
#~ msgid "Failed to start advertising" #~ msgid "Failed to start advertising"
#~ msgstr "Kann advertisement nicht starten" #~ msgstr "Kann advertisement nicht starten"
#, c-format
#~ msgid "Failed to start advertising, err 0x%04x" #~ msgid "Failed to start advertising, err 0x%04x"
#~ msgstr "Kann advertisement nicht starten. Status: 0x%04x" #~ msgstr "Kann advertisement nicht starten. Status: 0x%04x"
#, c-format #~ msgid "Failed to start connecting, error 0x%04x"
#~ msgstr "Verbindung konnte nicht hergestellt werden. Status: 0x%04x"
#~ msgid "Failed to start pairing, error 0x%04x" #~ msgid "Failed to start pairing, error 0x%04x"
#~ msgstr "Starten des Koppelns fehlgeschlagen, Status: 0x%04x" #~ msgstr "Starten des Koppelns fehlgeschlagen, Status: 0x%04x"
#~ msgid "Failed to start scanning" #~ msgid "Failed to start scanning"
#~ msgstr "Der Scanvorgang kann nicht gestartet werden" #~ msgstr "Der Scanvorgang kann nicht gestartet werden"
#~ msgid "Failed to start scanning, err 0x%04x"
#~ msgstr "Der Scanvorgang kann nicht gestartet werden. Status: 0x%04x"
#~ msgid "Failed to stop advertising" #~ msgid "Failed to stop advertising"
#~ msgstr "Kann advertisement nicht stoppen" #~ msgstr "Kann advertisement nicht stoppen"
#, c-format
#~ msgid "Failed to stop advertising, err 0x%04x" #~ msgid "Failed to stop advertising, err 0x%04x"
#~ msgstr "Kann advertisement nicht stoppen. Status: 0x%04x" #~ msgstr "Kann advertisement nicht stoppen. Status: 0x%04x"
#~ msgid "Failed to write CCCD, err 0x%04x"
#~ msgstr "Konnte CCCD nicht schreiben, Status: 0x%04x"
#~ msgid "Failed to write attribute value, err 0x%04x"
#~ msgstr "Kann den Attributwert nicht schreiben. Status: 0x%04x"
#~ msgid "Failed to write gatts value, err 0x%04x"
#~ msgstr "gatts value konnte nicht geschrieben werden. Status: 0x%04x"
#~ msgid "Function requires lock." #~ msgid "Function requires lock."
#~ msgstr "" #~ msgstr ""
#~ "Die Funktion erwartet, dass der 'lock'-Befehl zuvor ausgeführt wurde" #~ "Die Funktion erwartet, dass der 'lock'-Befehl zuvor ausgeführt wurde"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: \n" "Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-10-21 19:50-0700\n" "POT-Creation-Date: 2019-11-27 14:54-0500\n"
"PO-Revision-Date: 2018-07-27 11:55-0700\n" "PO-Revision-Date: 2018-07-27 11:55-0700\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: \n" "Language-Team: \n"
@ -478,11 +478,6 @@ msgstr ""
msgid "Corrupt raw code" msgid "Corrupt raw code"
msgstr "" msgstr ""
#: ports/nrf/common-hal/_bleio/UUID.c
#, c-format
msgid "Could not decode ble_uuid, err 0x%04x"
msgstr ""
#: ports/atmel-samd/common-hal/busio/UART.c #: ports/atmel-samd/common-hal/busio/UART.c
msgid "Could not initialize UART" msgid "Could not initialize UART"
msgstr "" msgstr ""
@ -576,11 +571,6 @@ msgstr ""
msgid "Expected tuple of length %d, got %d" msgid "Expected tuple of length %d, got %d"
msgstr "" msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Failed initiate attribute read, err 0x%04x"
msgstr ""
#: shared-bindings/ps2io/Ps2.c #: shared-bindings/ps2io/Ps2.c
msgid "Failed sending command." msgid "Failed sending command."
msgstr "" msgstr ""
@ -590,15 +580,6 @@ msgstr ""
msgid "Failed to acquire mutex, err 0x%04x" msgid "Failed to acquire mutex, err 0x%04x"
msgstr "" msgstr ""
#: ports/nrf/common-hal/_bleio/Service.c
msgid "Failed to add characteristic, NRF_ERROR_%q"
msgstr ""
#: ports/nrf/common-hal/_bleio/Characteristic.c
#, c-format
msgid "Failed to add descriptor, err 0x%04x"
msgstr ""
#: ports/atmel-samd/common-hal/busio/UART.c ports/nrf/common-hal/busio/UART.c #: ports/atmel-samd/common-hal/busio/UART.c ports/nrf/common-hal/busio/UART.c
msgid "Failed to allocate RX buffer" msgid "Failed to allocate RX buffer"
msgstr "" msgstr ""
@ -609,10 +590,6 @@ msgstr ""
msgid "Failed to allocate RX buffer of %d bytes" msgid "Failed to allocate RX buffer of %d bytes"
msgstr "" msgstr ""
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Failed to change softdevice state, NRF_ERROR_%q"
msgstr ""
#: ports/nrf/common-hal/_bleio/Adapter.c #: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Failed to connect: internal error" msgid "Failed to connect: internal error"
msgstr "" msgstr ""
@ -621,93 +598,11 @@ msgstr ""
msgid "Failed to connect: timeout" msgid "Failed to connect: timeout"
msgstr "" msgstr ""
#: ports/nrf/common-hal/_bleio/Service.c
msgid "Failed to create service, NRF_ERROR_%q"
msgstr ""
#: ports/nrf/common-hal/_bleio/Connection.c
msgid "Failed to discover services"
msgstr ""
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Failed to get local address"
msgstr ""
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Failed to get softdevice state"
msgstr ""
#: ports/nrf/common-hal/_bleio/Characteristic.c
#, c-format
msgid "Failed to notify or indicate attribute value, err 0x%04x"
msgstr ""
#: ports/nrf/common-hal/_bleio/Connection.c
msgid "Failed to pair"
msgstr ""
#: ports/nrf/common-hal/_bleio/Characteristic.c
#, c-format
msgid "Failed to read CCCD value, err 0x%04x"
msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Failed to read attribute value, err 0x%04x"
msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Failed to read gatts value, err 0x%04x"
msgstr ""
#: ports/nrf/common-hal/_bleio/UUID.c
#, c-format
msgid "Failed to register Vendor-Specific UUID, err 0x%04x"
msgstr ""
#: ports/nrf/sd_mutex.c #: ports/nrf/sd_mutex.c
#, c-format #, c-format
msgid "Failed to release mutex, err 0x%04x" msgid "Failed to release mutex, err 0x%04x"
msgstr "" msgstr ""
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Failed to start advertising, NRF_ERROR_%q"
msgstr ""
#: ports/nrf/common-hal/_bleio/Adapter.c
#, c-format
msgid "Failed to start connecting, error 0x%04x"
msgstr ""
#: ports/nrf/common-hal/_bleio/Connection.c
msgid "Failed to start pairing, NRF_ERROR_%q"
msgstr ""
#: ports/nrf/common-hal/_bleio/Adapter.c
#, c-format
msgid "Failed to start scanning, err 0x%04x"
msgstr ""
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Failed to stop advertising, NRF_ERROR_%q"
msgstr ""
#: ports/nrf/common-hal/_bleio/Characteristic.c
#, c-format
msgid "Failed to write CCCD, err 0x%04x"
msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Failed to write attribute value, err 0x%04x"
msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Failed to write gatts value, err 0x%04x"
msgstr ""
#: py/moduerrno.c #: py/moduerrno.c
msgid "File exists" msgid "File exists"
msgstr "" msgstr ""
@ -770,6 +665,14 @@ msgstr ""
msgid "Input/output error" msgid "Input/output error"
msgstr "" msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
msgid "Insufficient authentication"
msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
msgid "Insufficient encryption"
msgstr ""
#: ports/atmel-samd/common-hal/audiobusio/I2SOut.c #: ports/atmel-samd/common-hal/audiobusio/I2SOut.c
#: ports/atmel-samd/common-hal/audiobusio/PDMIn.c #: ports/atmel-samd/common-hal/audiobusio/PDMIn.c
msgid "Invalid %q pin" msgid "Invalid %q pin"
@ -1119,7 +1022,7 @@ msgstr ""
msgid "Running in safe mode! Not running saved code.\n" msgid "Running in safe mode! Not running saved code.\n"
msgstr "" msgstr ""
#: ports/atmel-samd/common-hal/busio/I2C.c #: ports/atmel-samd/common-hal/busio/I2C.c ports/nrf/common-hal/busio/I2C.c
msgid "SDA or SCL needs a pull up" msgid "SDA or SCL needs a pull up"
msgstr "" msgstr ""
@ -1301,11 +1204,32 @@ msgstr ""
msgid "Unexpected nrfx uuid type" msgid "Unexpected nrfx uuid type"
msgstr "" msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Unknown gatt error: 0x%04x"
msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Unknown security error: 0x%04x"
msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Unknown soft device error: %04x"
msgstr ""
#: shared-bindings/_pixelbuf/PixelBuf.c #: shared-bindings/_pixelbuf/PixelBuf.c
#, c-format #, c-format
msgid "Unmatched number of items on RHS (expected %d, got %d)." msgid "Unmatched number of items on RHS (expected %d, got %d)."
msgstr "" msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
msgid ""
"Unspecified issue. Can be that the pairing prompt on the other device was "
"declined or ignored."
msgstr ""
#: ports/atmel-samd/common-hal/busio/I2C.c #: ports/atmel-samd/common-hal/busio/I2C.c
msgid "Unsupported baudrate" msgid "Unsupported baudrate"
msgstr "" msgstr ""
@ -2499,12 +2423,8 @@ msgstr ""
msgid "time.struct_time() takes a 9-sequence" msgid "time.struct_time() takes a 9-sequence"
msgstr "" msgstr ""
#: shared-bindings/time/__init__.c
msgid "time.struct_time() takes exactly 1 argument"
msgstr ""
#: shared-bindings/busio/UART.c #: shared-bindings/busio/UART.c
msgid "timeout >100 (units are now seconds, not msecs)" msgid "timeout must be 0.0-100.0 seconds"
msgstr "" msgstr ""
#: shared-bindings/_bleio/CharacteristicBuffer.c #: shared-bindings/_bleio/CharacteristicBuffer.c

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: \n" "Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-10-21 19:50-0700\n" "POT-Creation-Date: 2019-11-27 14:54-0500\n"
"PO-Revision-Date: 2018-07-27 11:55-0700\n" "PO-Revision-Date: 2018-07-27 11:55-0700\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: @sommersoft, @MrCertainly\n" "Language-Team: @sommersoft, @MrCertainly\n"
@ -482,11 +482,6 @@ msgstr ""
msgid "Corrupt raw code" msgid "Corrupt raw code"
msgstr "" msgstr ""
#: ports/nrf/common-hal/_bleio/UUID.c
#, c-format
msgid "Could not decode ble_uuid, err 0x%04x"
msgstr ""
#: ports/atmel-samd/common-hal/busio/UART.c #: ports/atmel-samd/common-hal/busio/UART.c
msgid "Could not initialize UART" msgid "Could not initialize UART"
msgstr "" msgstr ""
@ -580,11 +575,6 @@ msgstr ""
msgid "Expected tuple of length %d, got %d" msgid "Expected tuple of length %d, got %d"
msgstr "" msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Failed initiate attribute read, err 0x%04x"
msgstr ""
#: shared-bindings/ps2io/Ps2.c #: shared-bindings/ps2io/Ps2.c
msgid "Failed sending command." msgid "Failed sending command."
msgstr "" msgstr ""
@ -594,15 +584,6 @@ msgstr ""
msgid "Failed to acquire mutex, err 0x%04x" msgid "Failed to acquire mutex, err 0x%04x"
msgstr "" msgstr ""
#: ports/nrf/common-hal/_bleio/Service.c
msgid "Failed to add characteristic, NRF_ERROR_%q"
msgstr ""
#: ports/nrf/common-hal/_bleio/Characteristic.c
#, c-format
msgid "Failed to add descriptor, err 0x%04x"
msgstr ""
#: ports/atmel-samd/common-hal/busio/UART.c ports/nrf/common-hal/busio/UART.c #: ports/atmel-samd/common-hal/busio/UART.c ports/nrf/common-hal/busio/UART.c
msgid "Failed to allocate RX buffer" msgid "Failed to allocate RX buffer"
msgstr "" msgstr ""
@ -613,10 +594,6 @@ msgstr ""
msgid "Failed to allocate RX buffer of %d bytes" msgid "Failed to allocate RX buffer of %d bytes"
msgstr "" msgstr ""
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Failed to change softdevice state, NRF_ERROR_%q"
msgstr ""
#: ports/nrf/common-hal/_bleio/Adapter.c #: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Failed to connect: internal error" msgid "Failed to connect: internal error"
msgstr "" msgstr ""
@ -625,93 +602,11 @@ msgstr ""
msgid "Failed to connect: timeout" msgid "Failed to connect: timeout"
msgstr "" msgstr ""
#: ports/nrf/common-hal/_bleio/Service.c
msgid "Failed to create service, NRF_ERROR_%q"
msgstr ""
#: ports/nrf/common-hal/_bleio/Connection.c
msgid "Failed to discover services"
msgstr ""
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Failed to get local address"
msgstr ""
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Failed to get softdevice state"
msgstr ""
#: ports/nrf/common-hal/_bleio/Characteristic.c
#, c-format
msgid "Failed to notify or indicate attribute value, err 0x%04x"
msgstr ""
#: ports/nrf/common-hal/_bleio/Connection.c
msgid "Failed to pair"
msgstr ""
#: ports/nrf/common-hal/_bleio/Characteristic.c
#, c-format
msgid "Failed to read CCCD value, err 0x%04x"
msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Failed to read attribute value, err 0x%04x"
msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Failed to read gatts value, err 0x%04x"
msgstr ""
#: ports/nrf/common-hal/_bleio/UUID.c
#, c-format
msgid "Failed to register Vendor-Specific UUID, err 0x%04x"
msgstr ""
#: ports/nrf/sd_mutex.c #: ports/nrf/sd_mutex.c
#, c-format #, c-format
msgid "Failed to release mutex, err 0x%04x" msgid "Failed to release mutex, err 0x%04x"
msgstr "" msgstr ""
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Failed to start advertising, NRF_ERROR_%q"
msgstr ""
#: ports/nrf/common-hal/_bleio/Adapter.c
#, c-format
msgid "Failed to start connecting, error 0x%04x"
msgstr ""
#: ports/nrf/common-hal/_bleio/Connection.c
msgid "Failed to start pairing, NRF_ERROR_%q"
msgstr ""
#: ports/nrf/common-hal/_bleio/Adapter.c
#, c-format
msgid "Failed to start scanning, err 0x%04x"
msgstr ""
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Failed to stop advertising, NRF_ERROR_%q"
msgstr ""
#: ports/nrf/common-hal/_bleio/Characteristic.c
#, c-format
msgid "Failed to write CCCD, err 0x%04x"
msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Failed to write attribute value, err 0x%04x"
msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Failed to write gatts value, err 0x%04x"
msgstr ""
#: py/moduerrno.c #: py/moduerrno.c
msgid "File exists" msgid "File exists"
msgstr "" msgstr ""
@ -774,6 +669,14 @@ msgstr ""
msgid "Input/output error" msgid "Input/output error"
msgstr "" msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
msgid "Insufficient authentication"
msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
msgid "Insufficient encryption"
msgstr ""
#: ports/atmel-samd/common-hal/audiobusio/I2SOut.c #: ports/atmel-samd/common-hal/audiobusio/I2SOut.c
#: ports/atmel-samd/common-hal/audiobusio/PDMIn.c #: ports/atmel-samd/common-hal/audiobusio/PDMIn.c
msgid "Invalid %q pin" msgid "Invalid %q pin"
@ -1123,7 +1026,7 @@ msgstr "Runnin' in safe mode! Auto-reload be off.\n"
msgid "Running in safe mode! Not running saved code.\n" msgid "Running in safe mode! Not running saved code.\n"
msgstr "Runnin' in safe mode! Nay runnin' saved code.\n" msgstr "Runnin' in safe mode! Nay runnin' saved code.\n"
#: ports/atmel-samd/common-hal/busio/I2C.c #: ports/atmel-samd/common-hal/busio/I2C.c ports/nrf/common-hal/busio/I2C.c
msgid "SDA or SCL needs a pull up" msgid "SDA or SCL needs a pull up"
msgstr "" msgstr ""
@ -1305,11 +1208,32 @@ msgstr ""
msgid "Unexpected nrfx uuid type" msgid "Unexpected nrfx uuid type"
msgstr "" msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Unknown gatt error: 0x%04x"
msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Unknown security error: 0x%04x"
msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Unknown soft device error: %04x"
msgstr ""
#: shared-bindings/_pixelbuf/PixelBuf.c #: shared-bindings/_pixelbuf/PixelBuf.c
#, c-format #, c-format
msgid "Unmatched number of items on RHS (expected %d, got %d)." msgid "Unmatched number of items on RHS (expected %d, got %d)."
msgstr "" msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
msgid ""
"Unspecified issue. Can be that the pairing prompt on the other device was "
"declined or ignored."
msgstr ""
#: ports/atmel-samd/common-hal/busio/I2C.c #: ports/atmel-samd/common-hal/busio/I2C.c
msgid "Unsupported baudrate" msgid "Unsupported baudrate"
msgstr "" msgstr ""
@ -2503,12 +2427,8 @@ msgstr ""
msgid "time.struct_time() takes a 9-sequence" msgid "time.struct_time() takes a 9-sequence"
msgstr "" msgstr ""
#: shared-bindings/time/__init__.c
msgid "time.struct_time() takes exactly 1 argument"
msgstr ""
#: shared-bindings/busio/UART.c #: shared-bindings/busio/UART.c
msgid "timeout >100 (units are now seconds, not msecs)" msgid "timeout must be 0.0-100.0 seconds"
msgstr "" msgstr ""
#: shared-bindings/_bleio/CharacteristicBuffer.c #: shared-bindings/_bleio/CharacteristicBuffer.c

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: \n" "Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-10-21 19:50-0700\n" "POT-Creation-Date: 2019-11-27 14:54-0500\n"
"PO-Revision-Date: 2018-08-24 22:56-0500\n" "PO-Revision-Date: 2018-08-24 22:56-0500\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: \n" "Language-Team: \n"
@ -486,11 +486,6 @@ msgstr ""
msgid "Corrupt raw code" msgid "Corrupt raw code"
msgstr "" msgstr ""
#: ports/nrf/common-hal/_bleio/UUID.c
#, c-format
msgid "Could not decode ble_uuid, err 0x%04x"
msgstr "No se puede descodificar ble_uuid, err 0x%04x"
#: ports/atmel-samd/common-hal/busio/UART.c #: ports/atmel-samd/common-hal/busio/UART.c
msgid "Could not initialize UART" msgid "Could not initialize UART"
msgstr "No se puede inicializar la UART" msgstr "No se puede inicializar la UART"
@ -584,11 +579,6 @@ msgstr ""
msgid "Expected tuple of length %d, got %d" msgid "Expected tuple of length %d, got %d"
msgstr "Se esperaba un tuple de %d, se obtuvo %d" msgstr "Se esperaba un tuple de %d, se obtuvo %d"
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Failed initiate attribute read, err 0x%04x"
msgstr ""
#: shared-bindings/ps2io/Ps2.c #: shared-bindings/ps2io/Ps2.c
msgid "Failed sending command." msgid "Failed sending command."
msgstr "Fallo enviando comando" msgstr "Fallo enviando comando"
@ -598,15 +588,6 @@ msgstr "Fallo enviando comando"
msgid "Failed to acquire mutex, err 0x%04x" msgid "Failed to acquire mutex, err 0x%04x"
msgstr "No se puede adquirir el mutex, status: 0x%08lX" msgstr "No se puede adquirir el mutex, status: 0x%08lX"
#: ports/nrf/common-hal/_bleio/Service.c
msgid "Failed to add characteristic, NRF_ERROR_%q"
msgstr ""
#: ports/nrf/common-hal/_bleio/Characteristic.c
#, c-format
msgid "Failed to add descriptor, err 0x%04x"
msgstr ""
#: ports/atmel-samd/common-hal/busio/UART.c ports/nrf/common-hal/busio/UART.c #: ports/atmel-samd/common-hal/busio/UART.c ports/nrf/common-hal/busio/UART.c
msgid "Failed to allocate RX buffer" msgid "Failed to allocate RX buffer"
msgstr "Ha fallado la asignación del buffer RX" msgstr "Ha fallado la asignación del buffer RX"
@ -617,10 +598,6 @@ msgstr "Ha fallado la asignación del buffer RX"
msgid "Failed to allocate RX buffer of %d bytes" msgid "Failed to allocate RX buffer of %d bytes"
msgstr "Falló la asignación del buffer RX de %d bytes" msgstr "Falló la asignación del buffer RX de %d bytes"
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Failed to change softdevice state, NRF_ERROR_%q"
msgstr ""
#: ports/nrf/common-hal/_bleio/Adapter.c #: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Failed to connect: internal error" msgid "Failed to connect: internal error"
msgstr "" msgstr ""
@ -629,94 +606,11 @@ msgstr ""
msgid "Failed to connect: timeout" msgid "Failed to connect: timeout"
msgstr "" msgstr ""
#: ports/nrf/common-hal/_bleio/Service.c
msgid "Failed to create service, NRF_ERROR_%q"
msgstr ""
#: ports/nrf/common-hal/_bleio/Connection.c
#, fuzzy
msgid "Failed to discover services"
msgstr "No se puede descubrir servicios"
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Failed to get local address"
msgstr "No se puede obtener la dirección local"
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Failed to get softdevice state"
msgstr "No se puede obtener el estado del softdevice"
#: ports/nrf/common-hal/_bleio/Characteristic.c
#, c-format
msgid "Failed to notify or indicate attribute value, err 0x%04x"
msgstr "Error al notificar o indicar el valor del atributo, err 0x%04x"
#: ports/nrf/common-hal/_bleio/Connection.c
msgid "Failed to pair"
msgstr ""
#: ports/nrf/common-hal/_bleio/Characteristic.c
#, c-format
msgid "Failed to read CCCD value, err 0x%04x"
msgstr "No se puede leer el valor del atributo. err 0x%02x"
#: ports/nrf/common-hal/_bleio/__init__.c
#, fuzzy, c-format
msgid "Failed to read attribute value, err 0x%04x"
msgstr "Error al leer valor del atributo, err 0x%04"
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Failed to read gatts value, err 0x%04x"
msgstr "No se puede escribir el valor del atributo. status: 0x%02x"
#: ports/nrf/common-hal/_bleio/UUID.c
#, c-format
msgid "Failed to register Vendor-Specific UUID, err 0x%04x"
msgstr "Fallo al registrar el Vendor-Specific UUID, err 0x%04x"
#: ports/nrf/sd_mutex.c #: ports/nrf/sd_mutex.c
#, c-format #, c-format
msgid "Failed to release mutex, err 0x%04x" msgid "Failed to release mutex, err 0x%04x"
msgstr "No se puede liberar el mutex, err 0x%04x" msgstr "No se puede liberar el mutex, err 0x%04x"
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Failed to start advertising, NRF_ERROR_%q"
msgstr ""
#: ports/nrf/common-hal/_bleio/Adapter.c
#, c-format
msgid "Failed to start connecting, error 0x%04x"
msgstr ""
#: ports/nrf/common-hal/_bleio/Connection.c
msgid "Failed to start pairing, NRF_ERROR_%q"
msgstr ""
#: ports/nrf/common-hal/_bleio/Adapter.c
#, c-format
msgid "Failed to start scanning, err 0x%04x"
msgstr "No se puede iniciar el escaneo. err 0x%04x"
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Failed to stop advertising, NRF_ERROR_%q"
msgstr ""
#: ports/nrf/common-hal/_bleio/Characteristic.c
#, c-format
msgid "Failed to write CCCD, err 0x%04x"
msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Failed to write attribute value, err 0x%04x"
msgstr "No se puede escribir el valor del atributo. err: 0x%04x"
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Failed to write gatts value, err 0x%04x"
msgstr "No se puede escribir el valor del atributo. err: 0x%04x"
#: py/moduerrno.c #: py/moduerrno.c
msgid "File exists" msgid "File exists"
msgstr "El archivo ya existe" msgstr "El archivo ya existe"
@ -781,6 +675,14 @@ msgstr "Tamaño incorrecto del buffer"
msgid "Input/output error" msgid "Input/output error"
msgstr "error Input/output" msgstr "error Input/output"
#: ports/nrf/common-hal/_bleio/__init__.c
msgid "Insufficient authentication"
msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
msgid "Insufficient encryption"
msgstr ""
#: ports/atmel-samd/common-hal/audiobusio/I2SOut.c #: ports/atmel-samd/common-hal/audiobusio/I2SOut.c
#: ports/atmel-samd/common-hal/audiobusio/PDMIn.c #: ports/atmel-samd/common-hal/audiobusio/PDMIn.c
msgid "Invalid %q pin" msgid "Invalid %q pin"
@ -1145,7 +1047,7 @@ msgstr "Ejecutando en modo seguro! La auto-recarga esta deshabilitada.\n"
msgid "Running in safe mode! Not running saved code.\n" msgid "Running in safe mode! Not running saved code.\n"
msgstr "Ejecutando en modo seguro! No se esta ejecutando el código guardado.\n" msgstr "Ejecutando en modo seguro! No se esta ejecutando el código guardado.\n"
#: ports/atmel-samd/common-hal/busio/I2C.c #: ports/atmel-samd/common-hal/busio/I2C.c ports/nrf/common-hal/busio/I2C.c
msgid "SDA or SCL needs a pull up" msgid "SDA or SCL needs a pull up"
msgstr "SDA o SCL necesitan una pull up" msgstr "SDA o SCL necesitan una pull up"
@ -1339,11 +1241,32 @@ msgstr "Imposible escribir en nvm"
msgid "Unexpected nrfx uuid type" msgid "Unexpected nrfx uuid type"
msgstr "Tipo de uuid nrfx inesperado" msgstr "Tipo de uuid nrfx inesperado"
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Unknown gatt error: 0x%04x"
msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Unknown security error: 0x%04x"
msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Unknown soft device error: %04x"
msgstr ""
#: shared-bindings/_pixelbuf/PixelBuf.c #: shared-bindings/_pixelbuf/PixelBuf.c
#, c-format #, c-format
msgid "Unmatched number of items on RHS (expected %d, got %d)." msgid "Unmatched number of items on RHS (expected %d, got %d)."
msgstr "Número incomparable de elementos en RHS (%d esperado,%d obtenido)" msgstr "Número incomparable de elementos en RHS (%d esperado,%d obtenido)"
#: ports/nrf/common-hal/_bleio/__init__.c
msgid ""
"Unspecified issue. Can be that the pairing prompt on the other device was "
"declined or ignored."
msgstr ""
#: ports/atmel-samd/common-hal/busio/I2C.c #: ports/atmel-samd/common-hal/busio/I2C.c
msgid "Unsupported baudrate" msgid "Unsupported baudrate"
msgstr "Baudrate no soportado" msgstr "Baudrate no soportado"
@ -2564,13 +2487,9 @@ msgstr "limite debe ser en el rango 0-65536"
msgid "time.struct_time() takes a 9-sequence" msgid "time.struct_time() takes a 9-sequence"
msgstr "time.struct_time() toma un sequencio 9" msgstr "time.struct_time() toma un sequencio 9"
#: shared-bindings/time/__init__.c
msgid "time.struct_time() takes exactly 1 argument"
msgstr "time.struct_time() acepta exactamente 1 argumento"
#: shared-bindings/busio/UART.c #: shared-bindings/busio/UART.c
msgid "timeout >100 (units are now seconds, not msecs)" msgid "timeout must be 0.0-100.0 seconds"
msgstr "timepo muerto >100 (unidades en segundos)" msgstr ""
#: shared-bindings/_bleio/CharacteristicBuffer.c #: shared-bindings/_bleio/CharacteristicBuffer.c
msgid "timeout must be >= 0.0" msgid "timeout must be >= 0.0"
@ -2795,6 +2714,9 @@ msgstr "paso cero"
#~ msgid "Characteristic already in use by another Service." #~ msgid "Characteristic already in use by another Service."
#~ msgstr "Características ya esta en uso por otro Serivice" #~ msgstr "Características ya esta en uso por otro Serivice"
#~ msgid "Could not decode ble_uuid, err 0x%04x"
#~ msgstr "No se puede descodificar ble_uuid, err 0x%04x"
#, fuzzy #, fuzzy
#~ msgid "Data too large for the advertisement packet" #~ msgid "Data too large for the advertisement packet"
#~ msgstr "Los datos no caben en el paquete de anuncio." #~ msgstr "Los datos no caben en el paquete de anuncio."
@ -2815,7 +2737,7 @@ msgstr "paso cero"
#~ msgid "Failed to acquire mutex" #~ msgid "Failed to acquire mutex"
#~ msgstr "No se puede adquirir el mutex, status: 0x%08lX" #~ msgstr "No se puede adquirir el mutex, status: 0x%08lX"
#, fuzzy, c-format #, fuzzy
#~ msgid "Failed to add characteristic, err 0x%04x" #~ msgid "Failed to add characteristic, err 0x%04x"
#~ msgstr "Fallo al añadir caracteristica, err: 0x%08lX" #~ msgstr "Fallo al añadir caracteristica, err: 0x%08lX"
@ -2823,7 +2745,6 @@ msgstr "paso cero"
#~ msgid "Failed to add service" #~ msgid "Failed to add service"
#~ msgstr "No se puede detener el anuncio. status: 0x%02x" #~ msgstr "No se puede detener el anuncio. status: 0x%02x"
#, c-format
#~ msgid "Failed to add service, err 0x%04x" #~ msgid "Failed to add service, err 0x%04x"
#~ msgstr "Fallo al agregar servicio. err: 0x%02x" #~ msgstr "Fallo al agregar servicio. err: 0x%02x"
@ -2838,7 +2759,6 @@ msgstr "paso cero"
#~ msgid "Failed to continue scanning" #~ msgid "Failed to continue scanning"
#~ msgstr "No se puede iniciar el escaneo. status: 0x%02x" #~ msgstr "No se puede iniciar el escaneo. status: 0x%02x"
#, c-format
#~ msgid "Failed to continue scanning, err 0x%04x" #~ msgid "Failed to continue scanning, err 0x%04x"
#~ msgstr "No se puede iniciar el escaneo. err: 0x%02x" #~ msgstr "No se puede iniciar el escaneo. err: 0x%02x"
@ -2846,14 +2766,40 @@ msgstr "paso cero"
#~ msgid "Failed to create mutex" #~ msgid "Failed to create mutex"
#~ msgstr "No se puede leer el valor del atributo. status 0x%02x" #~ msgstr "No se puede leer el valor del atributo. status 0x%02x"
#, fuzzy
#~ msgid "Failed to discover services"
#~ msgstr "No se puede descubrir servicios"
#~ msgid "Failed to get local address"
#~ msgstr "No se puede obtener la dirección local"
#~ msgid "Failed to get softdevice state"
#~ msgstr "No se puede obtener el estado del softdevice"
#, fuzzy #, fuzzy
#~ msgid "Failed to notify or indicate attribute value, err %0x04x" #~ msgid "Failed to notify or indicate attribute value, err %0x04x"
#~ msgstr "No se puede notificar el valor del anuncio. status: 0x%02x" #~ msgstr "No se puede notificar el valor del anuncio. status: 0x%02x"
#~ msgid "Failed to notify or indicate attribute value, err 0x%04x"
#~ msgstr "Error al notificar o indicar el valor del atributo, err 0x%04x"
#~ msgid "Failed to read CCCD value, err 0x%04x"
#~ msgstr "No se puede leer el valor del atributo. err 0x%02x"
#, fuzzy #, fuzzy
#~ msgid "Failed to read attribute value, err %0x04x" #~ msgid "Failed to read attribute value, err %0x04x"
#~ msgstr "No se puede leer el valor del atributo. status 0x%02x" #~ msgstr "No se puede leer el valor del atributo. status 0x%02x"
#, fuzzy
#~ msgid "Failed to read attribute value, err 0x%04x"
#~ msgstr "Error al leer valor del atributo, err 0x%04"
#~ msgid "Failed to read gatts value, err 0x%04x"
#~ msgstr "No se puede escribir el valor del atributo. status: 0x%02x"
#~ msgid "Failed to register Vendor-Specific UUID, err 0x%04x"
#~ msgstr "Fallo al registrar el Vendor-Specific UUID, err 0x%04x"
#, fuzzy #, fuzzy
#~ msgid "Failed to release mutex" #~ msgid "Failed to release mutex"
#~ msgstr "No se puede liberar el mutex, status: 0x%08lX" #~ msgstr "No se puede liberar el mutex, status: 0x%08lX"
@ -2862,7 +2808,6 @@ msgstr "paso cero"
#~ msgid "Failed to start advertising" #~ msgid "Failed to start advertising"
#~ msgstr "No se puede inicar el anuncio. status: 0x%02x" #~ msgstr "No se puede inicar el anuncio. status: 0x%02x"
#, c-format
#~ msgid "Failed to start advertising, err 0x%04x" #~ msgid "Failed to start advertising, err 0x%04x"
#~ msgstr "No se puede inicar el anuncio. err: 0x%04x" #~ msgstr "No se puede inicar el anuncio. err: 0x%04x"
@ -2870,14 +2815,22 @@ msgstr "paso cero"
#~ msgid "Failed to start scanning" #~ msgid "Failed to start scanning"
#~ msgstr "No se puede iniciar el escaneo. status: 0x%02x" #~ msgstr "No se puede iniciar el escaneo. status: 0x%02x"
#~ msgid "Failed to start scanning, err 0x%04x"
#~ msgstr "No se puede iniciar el escaneo. err 0x%04x"
#, fuzzy #, fuzzy
#~ msgid "Failed to stop advertising" #~ msgid "Failed to stop advertising"
#~ msgstr "No se puede detener el anuncio. status: 0x%02x" #~ msgstr "No se puede detener el anuncio. status: 0x%02x"
#, c-format
#~ msgid "Failed to stop advertising, err 0x%04x" #~ msgid "Failed to stop advertising, err 0x%04x"
#~ msgstr "No se puede detener el anuncio. err: 0x%04x" #~ msgstr "No se puede detener el anuncio. err: 0x%04x"
#~ msgid "Failed to write attribute value, err 0x%04x"
#~ msgstr "No se puede escribir el valor del atributo. err: 0x%04x"
#~ msgid "Failed to write gatts value, err 0x%04x"
#~ msgstr "No se puede escribir el valor del atributo. err: 0x%04x"
#~ msgid "Function requires lock." #~ msgid "Function requires lock."
#~ msgstr "La función requiere lock" #~ msgstr "La función requiere lock"
@ -2952,7 +2905,6 @@ msgstr "paso cero"
#~ msgid "STA required" #~ msgid "STA required"
#~ msgstr "STA requerido" #~ msgstr "STA requerido"
#, c-format
#~ msgid "Soft device assert, id: 0x%08lX, pc: 0x%08lX" #~ msgid "Soft device assert, id: 0x%08lX, pc: 0x%08lX"
#~ msgstr "Soft device assert, id: 0x%08lX, pc: 0x%08lX" #~ msgstr "Soft device assert, id: 0x%08lX, pc: 0x%08lX"
@ -3075,6 +3027,12 @@ msgstr "paso cero"
#~ msgid "tile index out of bounds" #~ msgid "tile index out of bounds"
#~ msgstr "el indice del tile fuera de limite" #~ msgstr "el indice del tile fuera de limite"
#~ msgid "time.struct_time() takes exactly 1 argument"
#~ msgstr "time.struct_time() acepta exactamente 1 argumento"
#~ msgid "timeout >100 (units are now seconds, not msecs)"
#~ msgstr "timepo muerto >100 (unidades en segundos)"
#~ msgid "too many arguments" #~ msgid "too many arguments"
#~ msgstr "muchos argumentos" #~ msgstr "muchos argumentos"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: \n" "Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-10-21 19:50-0700\n" "POT-Creation-Date: 2019-11-27 14:54-0500\n"
"PO-Revision-Date: 2018-12-20 22:15-0800\n" "PO-Revision-Date: 2018-12-20 22:15-0800\n"
"Last-Translator: Timothy <me@timothygarcia.ca>\n" "Last-Translator: Timothy <me@timothygarcia.ca>\n"
"Language-Team: fil\n" "Language-Team: fil\n"
@ -487,11 +487,6 @@ msgstr ""
msgid "Corrupt raw code" msgid "Corrupt raw code"
msgstr "" msgstr ""
#: ports/nrf/common-hal/_bleio/UUID.c
#, c-format
msgid "Could not decode ble_uuid, err 0x%04x"
msgstr ""
#: ports/atmel-samd/common-hal/busio/UART.c #: ports/atmel-samd/common-hal/busio/UART.c
msgid "Could not initialize UART" msgid "Could not initialize UART"
msgstr "Hindi ma-initialize ang UART" msgstr "Hindi ma-initialize ang UART"
@ -590,11 +585,6 @@ msgstr ""
msgid "Expected tuple of length %d, got %d" msgid "Expected tuple of length %d, got %d"
msgstr "" msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Failed initiate attribute read, err 0x%04x"
msgstr ""
#: shared-bindings/ps2io/Ps2.c #: shared-bindings/ps2io/Ps2.c
msgid "Failed sending command." msgid "Failed sending command."
msgstr "" msgstr ""
@ -604,15 +594,6 @@ msgstr ""
msgid "Failed to acquire mutex, err 0x%04x" msgid "Failed to acquire mutex, err 0x%04x"
msgstr "Nabigo sa pag kuha ng mutex, status: 0x%08lX" msgstr "Nabigo sa pag kuha ng mutex, status: 0x%08lX"
#: ports/nrf/common-hal/_bleio/Service.c
msgid "Failed to add characteristic, NRF_ERROR_%q"
msgstr ""
#: ports/nrf/common-hal/_bleio/Characteristic.c
#, c-format
msgid "Failed to add descriptor, err 0x%04x"
msgstr ""
#: ports/atmel-samd/common-hal/busio/UART.c ports/nrf/common-hal/busio/UART.c #: ports/atmel-samd/common-hal/busio/UART.c ports/nrf/common-hal/busio/UART.c
msgid "Failed to allocate RX buffer" msgid "Failed to allocate RX buffer"
msgstr "Nabigong ilaan ang RX buffer" msgstr "Nabigong ilaan ang RX buffer"
@ -623,10 +604,6 @@ msgstr "Nabigong ilaan ang RX buffer"
msgid "Failed to allocate RX buffer of %d bytes" msgid "Failed to allocate RX buffer of %d bytes"
msgstr "Nabigong ilaan ang RX buffer ng %d bytes" msgstr "Nabigong ilaan ang RX buffer ng %d bytes"
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Failed to change softdevice state, NRF_ERROR_%q"
msgstr ""
#: ports/nrf/common-hal/_bleio/Adapter.c #: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Failed to connect: internal error" msgid "Failed to connect: internal error"
msgstr "" msgstr ""
@ -635,96 +612,11 @@ msgstr ""
msgid "Failed to connect: timeout" msgid "Failed to connect: timeout"
msgstr "" msgstr ""
#: ports/nrf/common-hal/_bleio/Service.c
msgid "Failed to create service, NRF_ERROR_%q"
msgstr ""
#: ports/nrf/common-hal/_bleio/Connection.c
#, fuzzy
msgid "Failed to discover services"
msgstr "Nabigo sa pagdiscover ng services, status: 0x%08lX"
#: ports/nrf/common-hal/_bleio/Adapter.c
#, fuzzy
msgid "Failed to get local address"
msgstr "Nabigo sa pagkuha ng local na address, , error: 0x%08lX"
#: ports/nrf/common-hal/_bleio/Adapter.c
#, fuzzy
msgid "Failed to get softdevice state"
msgstr "Nabigo sa pagkuha ng softdevice state, error: 0x%08lX"
#: ports/nrf/common-hal/_bleio/Characteristic.c
#, c-format
msgid "Failed to notify or indicate attribute value, err 0x%04x"
msgstr ""
#: ports/nrf/common-hal/_bleio/Connection.c
msgid "Failed to pair"
msgstr ""
#: ports/nrf/common-hal/_bleio/Characteristic.c
#, fuzzy, c-format
msgid "Failed to read CCCD value, err 0x%04x"
msgstr "Hindi mabasa ang value ng attribute, status: 0x%08lX"
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Failed to read attribute value, err 0x%04x"
msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
#, fuzzy, c-format
msgid "Failed to read gatts value, err 0x%04x"
msgstr "Hindi maisulat ang gatts value, status: 0x%08lX"
#: ports/nrf/common-hal/_bleio/UUID.c
#, fuzzy, c-format
msgid "Failed to register Vendor-Specific UUID, err 0x%04x"
msgstr "Hindi matagumpay ang paglagay ng Vender Specific UUID, status: 0x%08lX"
#: ports/nrf/sd_mutex.c #: ports/nrf/sd_mutex.c
#, fuzzy, c-format #, fuzzy, c-format
msgid "Failed to release mutex, err 0x%04x" msgid "Failed to release mutex, err 0x%04x"
msgstr "Nabigo sa pagrelease ng mutex, status: 0x%08lX" msgstr "Nabigo sa pagrelease ng mutex, status: 0x%08lX"
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Failed to start advertising, NRF_ERROR_%q"
msgstr ""
#: ports/nrf/common-hal/_bleio/Adapter.c
#, c-format
msgid "Failed to start connecting, error 0x%04x"
msgstr ""
#: ports/nrf/common-hal/_bleio/Connection.c
msgid "Failed to start pairing, NRF_ERROR_%q"
msgstr ""
#: ports/nrf/common-hal/_bleio/Adapter.c
#, fuzzy, c-format
msgid "Failed to start scanning, err 0x%04x"
msgstr "Hindi masimulaan mag i-scan, status: 0x%0xlX"
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Failed to stop advertising, NRF_ERROR_%q"
msgstr ""
#: ports/nrf/common-hal/_bleio/Characteristic.c
#, c-format
msgid "Failed to write CCCD, err 0x%04x"
msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
#, fuzzy, c-format
msgid "Failed to write attribute value, err 0x%04x"
msgstr "Hindi maisulat ang attribute value, status: 0x%08lX"
#: ports/nrf/common-hal/_bleio/__init__.c
#, fuzzy, c-format
msgid "Failed to write gatts value, err 0x%04x"
msgstr "Hindi maisulat ang gatts value, status: 0x%08lX"
#: py/moduerrno.c #: py/moduerrno.c
msgid "File exists" msgid "File exists"
msgstr "Mayroong file" msgstr "Mayroong file"
@ -789,6 +681,14 @@ msgstr ""
msgid "Input/output error" msgid "Input/output error"
msgstr "May mali sa Input/Output" msgstr "May mali sa Input/Output"
#: ports/nrf/common-hal/_bleio/__init__.c
msgid "Insufficient authentication"
msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
msgid "Insufficient encryption"
msgstr ""
#: ports/atmel-samd/common-hal/audiobusio/I2SOut.c #: ports/atmel-samd/common-hal/audiobusio/I2SOut.c
#: ports/atmel-samd/common-hal/audiobusio/PDMIn.c #: ports/atmel-samd/common-hal/audiobusio/PDMIn.c
msgid "Invalid %q pin" msgid "Invalid %q pin"
@ -1151,7 +1051,7 @@ msgstr "Tumatakbo sa safe mode! Awtomatikong pag re-reload ay OFF.\n"
msgid "Running in safe mode! Not running saved code.\n" msgid "Running in safe mode! Not running saved code.\n"
msgstr "Tumatakbo sa safe mode! Hindi tumatakbo ang nai-save na code.\n" msgstr "Tumatakbo sa safe mode! Hindi tumatakbo ang nai-save na code.\n"
#: ports/atmel-samd/common-hal/busio/I2C.c #: ports/atmel-samd/common-hal/busio/I2C.c ports/nrf/common-hal/busio/I2C.c
msgid "SDA or SCL needs a pull up" msgid "SDA or SCL needs a pull up"
msgstr "Kailangan ng pull up resistors ang SDA o SCL" msgstr "Kailangan ng pull up resistors ang SDA o SCL"
@ -1344,11 +1244,32 @@ msgstr "Hindi ma i-sulat sa NVM."
msgid "Unexpected nrfx uuid type" msgid "Unexpected nrfx uuid type"
msgstr "hindi inaasahang indent" msgstr "hindi inaasahang indent"
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Unknown gatt error: 0x%04x"
msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Unknown security error: 0x%04x"
msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Unknown soft device error: %04x"
msgstr ""
#: shared-bindings/_pixelbuf/PixelBuf.c #: shared-bindings/_pixelbuf/PixelBuf.c
#, c-format #, c-format
msgid "Unmatched number of items on RHS (expected %d, got %d)." msgid "Unmatched number of items on RHS (expected %d, got %d)."
msgstr "" msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
msgid ""
"Unspecified issue. Can be that the pairing prompt on the other device was "
"declined or ignored."
msgstr ""
#: ports/atmel-samd/common-hal/busio/I2C.c #: ports/atmel-samd/common-hal/busio/I2C.c
msgid "Unsupported baudrate" msgid "Unsupported baudrate"
msgstr "Hindi supportadong baudrate" msgstr "Hindi supportadong baudrate"
@ -2574,13 +2495,9 @@ msgstr "ang threshold ay dapat sa range 0-65536"
msgid "time.struct_time() takes a 9-sequence" msgid "time.struct_time() takes a 9-sequence"
msgstr "time.struct_time() kumukuha ng 9-sequence" msgstr "time.struct_time() kumukuha ng 9-sequence"
#: shared-bindings/time/__init__.c
msgid "time.struct_time() takes exactly 1 argument"
msgstr "time.struct_time() kumukuha ng 1 argument"
#: shared-bindings/busio/UART.c #: shared-bindings/busio/UART.c
msgid "timeout >100 (units are now seconds, not msecs)" msgid "timeout must be 0.0-100.0 seconds"
msgstr "timeout >100 (units ay seconds, hindi na msecs)" msgstr ""
#: shared-bindings/_bleio/CharacteristicBuffer.c #: shared-bindings/_bleio/CharacteristicBuffer.c
#, fuzzy #, fuzzy
@ -2820,7 +2737,7 @@ msgstr "zero step"
#~ msgid "Failed to acquire mutex" #~ msgid "Failed to acquire mutex"
#~ msgstr "Nabigo sa pag kuha ng mutex, status: 0x%08lX" #~ msgstr "Nabigo sa pag kuha ng mutex, status: 0x%08lX"
#, fuzzy, c-format #, fuzzy
#~ msgid "Failed to add characteristic, err 0x%04x" #~ msgid "Failed to add characteristic, err 0x%04x"
#~ msgstr "Nabigo sa paglagay ng characteristic, status: 0x%08lX" #~ msgstr "Nabigo sa paglagay ng characteristic, status: 0x%08lX"
@ -2828,7 +2745,7 @@ msgstr "zero step"
#~ msgid "Failed to add service" #~ msgid "Failed to add service"
#~ msgstr "Hindi matagumpay ang paglagay ng service, status: 0x%08lX" #~ msgstr "Hindi matagumpay ang paglagay ng service, status: 0x%08lX"
#, fuzzy, c-format #, fuzzy
#~ msgid "Failed to add service, err 0x%04x" #~ msgid "Failed to add service, err 0x%04x"
#~ msgstr "Hindi matagumpay ang paglagay ng service, status: 0x%08lX" #~ msgstr "Hindi matagumpay ang paglagay ng service, status: 0x%08lX"
@ -2844,7 +2761,7 @@ msgstr "zero step"
#~ msgid "Failed to continue scanning" #~ msgid "Failed to continue scanning"
#~ msgstr "Hindi maituloy ang pag scan, status: 0x%0xlX" #~ msgstr "Hindi maituloy ang pag scan, status: 0x%0xlX"
#, fuzzy, c-format #, fuzzy
#~ msgid "Failed to continue scanning, err 0x%04x" #~ msgid "Failed to continue scanning, err 0x%04x"
#~ msgstr "Hindi maituloy ang pag scan, status: 0x%0xlX" #~ msgstr "Hindi maituloy ang pag scan, status: 0x%0xlX"
@ -2852,14 +2769,39 @@ msgstr "zero step"
#~ msgid "Failed to create mutex" #~ msgid "Failed to create mutex"
#~ msgstr "Hindi matagumpay ang pagbuo ng mutex, status: 0x%0xlX" #~ msgstr "Hindi matagumpay ang pagbuo ng mutex, status: 0x%0xlX"
#, fuzzy
#~ msgid "Failed to discover services"
#~ msgstr "Nabigo sa pagdiscover ng services, status: 0x%08lX"
#, fuzzy
#~ msgid "Failed to get local address"
#~ msgstr "Nabigo sa pagkuha ng local na address, , error: 0x%08lX"
#, fuzzy
#~ msgid "Failed to get softdevice state"
#~ msgstr "Nabigo sa pagkuha ng softdevice state, error: 0x%08lX"
#, fuzzy #, fuzzy
#~ msgid "Failed to notify or indicate attribute value, err %0x04x" #~ msgid "Failed to notify or indicate attribute value, err %0x04x"
#~ msgstr "Hindi mabalitaan ang attribute value, status: 0x%08lX" #~ msgstr "Hindi mabalitaan ang attribute value, status: 0x%08lX"
#, fuzzy
#~ msgid "Failed to read CCCD value, err 0x%04x"
#~ msgstr "Hindi mabasa ang value ng attribute, status: 0x%08lX"
#, fuzzy #, fuzzy
#~ msgid "Failed to read attribute value, err %0x04x" #~ msgid "Failed to read attribute value, err %0x04x"
#~ msgstr "Hindi mabasa ang value ng attribute, status: 0x%08lX" #~ msgstr "Hindi mabasa ang value ng attribute, status: 0x%08lX"
#, fuzzy
#~ msgid "Failed to read gatts value, err 0x%04x"
#~ msgstr "Hindi maisulat ang gatts value, status: 0x%08lX"
#, fuzzy
#~ msgid "Failed to register Vendor-Specific UUID, err 0x%04x"
#~ msgstr ""
#~ "Hindi matagumpay ang paglagay ng Vender Specific UUID, status: 0x%08lX"
#, fuzzy #, fuzzy
#~ msgid "Failed to release mutex" #~ msgid "Failed to release mutex"
#~ msgstr "Nabigo sa pagrelease ng mutex, status: 0x%08lX" #~ msgstr "Nabigo sa pagrelease ng mutex, status: 0x%08lX"
@ -2868,7 +2810,7 @@ msgstr "zero step"
#~ msgid "Failed to start advertising" #~ msgid "Failed to start advertising"
#~ msgstr "Hindi masimulaan ang advertisement, status: 0x%08lX" #~ msgstr "Hindi masimulaan ang advertisement, status: 0x%08lX"
#, fuzzy, c-format #, fuzzy
#~ msgid "Failed to start advertising, err 0x%04x" #~ msgid "Failed to start advertising, err 0x%04x"
#~ msgstr "Hindi masimulaan ang advertisement, status: 0x%08lX" #~ msgstr "Hindi masimulaan ang advertisement, status: 0x%08lX"
@ -2876,14 +2818,26 @@ msgstr "zero step"
#~ msgid "Failed to start scanning" #~ msgid "Failed to start scanning"
#~ msgstr "Hindi masimulaan mag i-scan, status: 0x%0xlX" #~ msgstr "Hindi masimulaan mag i-scan, status: 0x%0xlX"
#, fuzzy
#~ msgid "Failed to start scanning, err 0x%04x"
#~ msgstr "Hindi masimulaan mag i-scan, status: 0x%0xlX"
#, fuzzy #, fuzzy
#~ msgid "Failed to stop advertising" #~ msgid "Failed to stop advertising"
#~ msgstr "Hindi mahinto ang advertisement, status: 0x%08lX" #~ msgstr "Hindi mahinto ang advertisement, status: 0x%08lX"
#, fuzzy, c-format #, fuzzy
#~ msgid "Failed to stop advertising, err 0x%04x" #~ msgid "Failed to stop advertising, err 0x%04x"
#~ msgstr "Hindi mahinto ang advertisement, status: 0x%08lX" #~ msgstr "Hindi mahinto ang advertisement, status: 0x%08lX"
#, fuzzy
#~ msgid "Failed to write attribute value, err 0x%04x"
#~ msgstr "Hindi maisulat ang attribute value, status: 0x%08lX"
#, fuzzy
#~ msgid "Failed to write gatts value, err 0x%04x"
#~ msgstr "Hindi maisulat ang gatts value, status: 0x%08lX"
#~ msgid "Function requires lock." #~ msgid "Function requires lock."
#~ msgstr "Kailangan ng lock ang function." #~ msgstr "Kailangan ng lock ang function."
@ -3048,6 +3002,12 @@ msgstr "zero step"
#~ msgid "scan failed" #~ msgid "scan failed"
#~ msgstr "nabigo ang pag-scan" #~ msgstr "nabigo ang pag-scan"
#~ msgid "time.struct_time() takes exactly 1 argument"
#~ msgstr "time.struct_time() kumukuha ng 1 argument"
#~ msgid "timeout >100 (units are now seconds, not msecs)"
#~ msgstr "timeout >100 (units ay seconds, hindi na msecs)"
#~ msgid "too many arguments" #~ msgid "too many arguments"
#~ msgstr "masyadong maraming argumento" #~ msgstr "masyadong maraming argumento"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: 0.1\n" "Project-Id-Version: 0.1\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-10-21 19:50-0700\n" "POT-Creation-Date: 2019-11-27 14:54-0500\n"
"PO-Revision-Date: 2019-04-14 20:05+0100\n" "PO-Revision-Date: 2019-04-14 20:05+0100\n"
"Last-Translator: Pierrick Couturier <arofarn@arofarn.info>\n" "Last-Translator: Pierrick Couturier <arofarn@arofarn.info>\n"
"Language-Team: fr\n" "Language-Team: fr\n"
@ -493,11 +493,6 @@ msgstr ""
msgid "Corrupt raw code" msgid "Corrupt raw code"
msgstr "" msgstr ""
#: ports/nrf/common-hal/_bleio/UUID.c
#, c-format
msgid "Could not decode ble_uuid, err 0x%04x"
msgstr "Impossible de décoder le 'ble_uuid', err 0x%04x"
#: ports/atmel-samd/common-hal/busio/UART.c #: ports/atmel-samd/common-hal/busio/UART.c
msgid "Could not initialize UART" msgid "Could not initialize UART"
msgstr "L'UART n'a pu être initialisé" msgstr "L'UART n'a pu être initialisé"
@ -594,11 +589,6 @@ msgstr ""
msgid "Expected tuple of length %d, got %d" msgid "Expected tuple of length %d, got %d"
msgstr "Tuple de longueur %d attendu, obtenu %d" msgstr "Tuple de longueur %d attendu, obtenu %d"
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Failed initiate attribute read, err 0x%04x"
msgstr ""
#: shared-bindings/ps2io/Ps2.c #: shared-bindings/ps2io/Ps2.c
msgid "Failed sending command." msgid "Failed sending command."
msgstr "" msgstr ""
@ -608,15 +598,6 @@ msgstr ""
msgid "Failed to acquire mutex, err 0x%04x" msgid "Failed to acquire mutex, err 0x%04x"
msgstr "Echec de l'obtention de mutex, err 0x%04x" msgstr "Echec de l'obtention de mutex, err 0x%04x"
#: ports/nrf/common-hal/_bleio/Service.c
msgid "Failed to add characteristic, NRF_ERROR_%q"
msgstr ""
#: ports/nrf/common-hal/_bleio/Characteristic.c
#, c-format
msgid "Failed to add descriptor, err 0x%04x"
msgstr ""
#: ports/atmel-samd/common-hal/busio/UART.c ports/nrf/common-hal/busio/UART.c #: ports/atmel-samd/common-hal/busio/UART.c ports/nrf/common-hal/busio/UART.c
msgid "Failed to allocate RX buffer" msgid "Failed to allocate RX buffer"
msgstr "Echec de l'allocation du tampon RX" msgstr "Echec de l'allocation du tampon RX"
@ -627,10 +608,6 @@ msgstr "Echec de l'allocation du tampon RX"
msgid "Failed to allocate RX buffer of %d bytes" msgid "Failed to allocate RX buffer of %d bytes"
msgstr "Echec de l'allocation de %d octets du tampon RX" msgstr "Echec de l'allocation de %d octets du tampon RX"
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Failed to change softdevice state, NRF_ERROR_%q"
msgstr ""
#: ports/nrf/common-hal/_bleio/Adapter.c #: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Failed to connect: internal error" msgid "Failed to connect: internal error"
msgstr "" msgstr ""
@ -639,97 +616,11 @@ msgstr ""
msgid "Failed to connect: timeout" msgid "Failed to connect: timeout"
msgstr "" msgstr ""
#: ports/nrf/common-hal/_bleio/Service.c
msgid "Failed to create service, NRF_ERROR_%q"
msgstr ""
#: ports/nrf/common-hal/_bleio/Connection.c
#, fuzzy
msgid "Failed to discover services"
msgstr "Echec de la découverte de services"
#: ports/nrf/common-hal/_bleio/Adapter.c
#, fuzzy
msgid "Failed to get local address"
msgstr "Echec de l'obtention de l'adresse locale"
#: ports/nrf/common-hal/_bleio/Adapter.c
#, fuzzy
msgid "Failed to get softdevice state"
msgstr "Echec de l'obtention de l'état du périphérique"
#: ports/nrf/common-hal/_bleio/Characteristic.c
#, c-format
msgid "Failed to notify or indicate attribute value, err 0x%04x"
msgstr ""
"Impossible de notifier ou d'indiquer la valeur de l'attribut, err 0x%04x"
#: ports/nrf/common-hal/_bleio/Connection.c
msgid "Failed to pair"
msgstr ""
#: ports/nrf/common-hal/_bleio/Characteristic.c
#, fuzzy, c-format
msgid "Failed to read CCCD value, err 0x%04x"
msgstr "Impossible de lire la valeur 'CCCD', err 0x%04x"
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Failed to read attribute value, err 0x%04x"
msgstr "Impossible de lire la valeur de l'attribut, err 0x%04x"
#: ports/nrf/common-hal/_bleio/__init__.c
#, fuzzy, c-format
msgid "Failed to read gatts value, err 0x%04x"
msgstr "Impossible de lire la valeur de 'gatts', err 0x%04x"
#: ports/nrf/common-hal/_bleio/UUID.c
#, fuzzy, c-format
msgid "Failed to register Vendor-Specific UUID, err 0x%04x"
msgstr "Echec de l'ajout de l'UUID du fournisseur, err 0x%04x"
#: ports/nrf/sd_mutex.c #: ports/nrf/sd_mutex.c
#, fuzzy, c-format #, fuzzy, c-format
msgid "Failed to release mutex, err 0x%04x" msgid "Failed to release mutex, err 0x%04x"
msgstr "Impossible de libérer mutex, err 0x%04x" msgstr "Impossible de libérer mutex, err 0x%04x"
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Failed to start advertising, NRF_ERROR_%q"
msgstr ""
#: ports/nrf/common-hal/_bleio/Adapter.c
#, c-format
msgid "Failed to start connecting, error 0x%04x"
msgstr ""
#: ports/nrf/common-hal/_bleio/Connection.c
msgid "Failed to start pairing, NRF_ERROR_%q"
msgstr ""
#: ports/nrf/common-hal/_bleio/Adapter.c
#, fuzzy, c-format
msgid "Failed to start scanning, err 0x%04x"
msgstr "Impossible de commencer à scanner, err 0x%04x"
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Failed to stop advertising, NRF_ERROR_%q"
msgstr ""
#: ports/nrf/common-hal/_bleio/Characteristic.c
#, c-format
msgid "Failed to write CCCD, err 0x%04x"
msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
#, fuzzy, c-format
msgid "Failed to write attribute value, err 0x%04x"
msgstr "Impossible d'écrire la valeur de l'attribut, err 0x%04x"
#: ports/nrf/common-hal/_bleio/__init__.c
#, fuzzy, c-format
msgid "Failed to write gatts value, err 0x%04x"
msgstr "Impossible d'écrire la valeur de 'gatts', err 0x%04x"
#: py/moduerrno.c #: py/moduerrno.c
msgid "File exists" msgid "File exists"
msgstr "Le fichier existe" msgstr "Le fichier existe"
@ -794,6 +685,14 @@ msgstr "Taille de tampon incorrecte"
msgid "Input/output error" msgid "Input/output error"
msgstr "Erreur d'entrée/sortie" msgstr "Erreur d'entrée/sortie"
#: ports/nrf/common-hal/_bleio/__init__.c
msgid "Insufficient authentication"
msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
msgid "Insufficient encryption"
msgstr ""
#: ports/atmel-samd/common-hal/audiobusio/I2SOut.c #: ports/atmel-samd/common-hal/audiobusio/I2SOut.c
#: ports/atmel-samd/common-hal/audiobusio/PDMIn.c #: ports/atmel-samd/common-hal/audiobusio/PDMIn.c
msgid "Invalid %q pin" msgid "Invalid %q pin"
@ -1166,7 +1065,7 @@ msgstr "Mode sans-échec! Auto-chargement désactivé.\n"
msgid "Running in safe mode! Not running saved code.\n" msgid "Running in safe mode! Not running saved code.\n"
msgstr "Mode sans-échec! Le code sauvegardé n'est pas éxecuté.\n" msgstr "Mode sans-échec! Le code sauvegardé n'est pas éxecuté.\n"
#: ports/atmel-samd/common-hal/busio/I2C.c #: ports/atmel-samd/common-hal/busio/I2C.c ports/nrf/common-hal/busio/I2C.c
msgid "SDA or SCL needs a pull up" msgid "SDA or SCL needs a pull up"
msgstr "SDA ou SCL a besoin d'une résistance de tirage ('pull up')" msgstr "SDA ou SCL a besoin d'une résistance de tirage ('pull up')"
@ -1367,12 +1266,33 @@ msgstr "Impossible d'écrire sur la mémoire non-volatile."
msgid "Unexpected nrfx uuid type" msgid "Unexpected nrfx uuid type"
msgstr "Type inattendu pour l'uuid nrfx" msgstr "Type inattendu pour l'uuid nrfx"
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Unknown gatt error: 0x%04x"
msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Unknown security error: 0x%04x"
msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Unknown soft device error: %04x"
msgstr ""
#: shared-bindings/_pixelbuf/PixelBuf.c #: shared-bindings/_pixelbuf/PixelBuf.c
#, c-format #, c-format
msgid "Unmatched number of items on RHS (expected %d, got %d)." msgid "Unmatched number of items on RHS (expected %d, got %d)."
msgstr "" msgstr ""
"Pas de correspondance du nombres d'éléments à droite (attendu %d, obtenu %d)" "Pas de correspondance du nombres d'éléments à droite (attendu %d, obtenu %d)"
#: ports/nrf/common-hal/_bleio/__init__.c
msgid ""
"Unspecified issue. Can be that the pairing prompt on the other device was "
"declined or ignored."
msgstr ""
#: ports/atmel-samd/common-hal/busio/I2C.c #: ports/atmel-samd/common-hal/busio/I2C.c
msgid "Unsupported baudrate" msgid "Unsupported baudrate"
msgstr "Débit non supporté" msgstr "Débit non supporté"
@ -2615,13 +2535,9 @@ msgstr "le seuil doit être dans la gamme 0-65536"
msgid "time.struct_time() takes a 9-sequence" msgid "time.struct_time() takes a 9-sequence"
msgstr "time.struct_time() prend une séquence de longueur 9" msgstr "time.struct_time() prend une séquence de longueur 9"
#: shared-bindings/time/__init__.c
msgid "time.struct_time() takes exactly 1 argument"
msgstr "time.struct_time() prend exactement 1 argument"
#: shared-bindings/busio/UART.c #: shared-bindings/busio/UART.c
msgid "timeout >100 (units are now seconds, not msecs)" msgid "timeout must be 0.0-100.0 seconds"
msgstr "timeout >100 (exprimé en secondes, pas en ms)" msgstr ""
#: shared-bindings/_bleio/CharacteristicBuffer.c #: shared-bindings/_bleio/CharacteristicBuffer.c
#, fuzzy #, fuzzy
@ -2849,6 +2765,9 @@ msgstr "'step' nul"
#~ msgid "Characteristic already in use by another Service." #~ msgid "Characteristic already in use by another Service."
#~ msgstr "'Characteristic' déjà en utilisation par un autre service" #~ msgstr "'Characteristic' déjà en utilisation par un autre service"
#~ msgid "Could not decode ble_uuid, err 0x%04x"
#~ msgstr "Impossible de décoder le 'ble_uuid', err 0x%04x"
#~ msgid "Data too large for the advertisement packet" #~ msgid "Data too large for the advertisement packet"
#~ msgstr "Données trop volumineuses pour le paquet de diffusion" #~ msgstr "Données trop volumineuses pour le paquet de diffusion"
@ -2868,7 +2787,7 @@ msgstr "'step' nul"
#~ msgid "Failed to acquire mutex" #~ msgid "Failed to acquire mutex"
#~ msgstr "Echec de l'obtention de mutex" #~ msgstr "Echec de l'obtention de mutex"
#, fuzzy, c-format #, fuzzy
#~ msgid "Failed to add characteristic, err 0x%04x" #~ msgid "Failed to add characteristic, err 0x%04x"
#~ msgstr "Echec de l'ajout de caractéristique, err 0x%04x" #~ msgstr "Echec de l'ajout de caractéristique, err 0x%04x"
@ -2876,7 +2795,7 @@ msgstr "'step' nul"
#~ msgid "Failed to add service" #~ msgid "Failed to add service"
#~ msgstr "Echec de l'ajout de service" #~ msgstr "Echec de l'ajout de service"
#, fuzzy, c-format #, fuzzy
#~ msgid "Failed to add service, err 0x%04x" #~ msgid "Failed to add service, err 0x%04x"
#~ msgstr "Echec de l'ajout de service, err 0x%04x" #~ msgstr "Echec de l'ajout de service, err 0x%04x"
@ -2892,7 +2811,7 @@ msgstr "'step' nul"
#~ msgid "Failed to continue scanning" #~ msgid "Failed to continue scanning"
#~ msgstr "Impossible de poursuivre le scan" #~ msgstr "Impossible de poursuivre le scan"
#, fuzzy, c-format #, fuzzy
#~ msgid "Failed to continue scanning, err 0x%04x" #~ msgid "Failed to continue scanning, err 0x%04x"
#~ msgstr "Impossible de poursuivre le scan, err 0x%04x" #~ msgstr "Impossible de poursuivre le scan, err 0x%04x"
@ -2900,14 +2819,45 @@ msgstr "'step' nul"
#~ msgid "Failed to create mutex" #~ msgid "Failed to create mutex"
#~ msgstr "Echec de la création de mutex" #~ msgstr "Echec de la création de mutex"
#, fuzzy
#~ msgid "Failed to discover services"
#~ msgstr "Echec de la découverte de services"
#, fuzzy
#~ msgid "Failed to get local address"
#~ msgstr "Echec de l'obtention de l'adresse locale"
#, fuzzy
#~ msgid "Failed to get softdevice state"
#~ msgstr "Echec de l'obtention de l'état du périphérique"
#, fuzzy #, fuzzy
#~ msgid "Failed to notify or indicate attribute value, err %0x04x" #~ msgid "Failed to notify or indicate attribute value, err %0x04x"
#~ msgstr "Impossible de notifier la valeur de l'attribut. status: 0x%08lX" #~ msgstr "Impossible de notifier la valeur de l'attribut. status: 0x%08lX"
#~ msgid "Failed to notify or indicate attribute value, err 0x%04x"
#~ msgstr ""
#~ "Impossible de notifier ou d'indiquer la valeur de l'attribut, err 0x%04x"
#, fuzzy
#~ msgid "Failed to read CCCD value, err 0x%04x"
#~ msgstr "Impossible de lire la valeur 'CCCD', err 0x%04x"
#, fuzzy #, fuzzy
#~ msgid "Failed to read attribute value, err %0x04x" #~ msgid "Failed to read attribute value, err %0x04x"
#~ msgstr "Impossible de lire la valeur de l'attribut. status: 0x%08lX" #~ msgstr "Impossible de lire la valeur de l'attribut. status: 0x%08lX"
#~ msgid "Failed to read attribute value, err 0x%04x"
#~ msgstr "Impossible de lire la valeur de l'attribut, err 0x%04x"
#, fuzzy
#~ msgid "Failed to read gatts value, err 0x%04x"
#~ msgstr "Impossible de lire la valeur de 'gatts', err 0x%04x"
#, fuzzy
#~ msgid "Failed to register Vendor-Specific UUID, err 0x%04x"
#~ msgstr "Echec de l'ajout de l'UUID du fournisseur, err 0x%04x"
#, fuzzy #, fuzzy
#~ msgid "Failed to release mutex" #~ msgid "Failed to release mutex"
#~ msgstr "Impossible de libérer mutex" #~ msgstr "Impossible de libérer mutex"
@ -2916,7 +2866,7 @@ msgstr "'step' nul"
#~ msgid "Failed to start advertising" #~ msgid "Failed to start advertising"
#~ msgstr "Echec du démarrage de la diffusion" #~ msgstr "Echec du démarrage de la diffusion"
#, fuzzy, c-format #, fuzzy
#~ msgid "Failed to start advertising, err 0x%04x" #~ msgid "Failed to start advertising, err 0x%04x"
#~ msgstr "Impossible de commencer à diffuser, err 0x%04x" #~ msgstr "Impossible de commencer à diffuser, err 0x%04x"
@ -2924,14 +2874,26 @@ msgstr "'step' nul"
#~ msgid "Failed to start scanning" #~ msgid "Failed to start scanning"
#~ msgstr "Impossible de commencer à scanner" #~ msgstr "Impossible de commencer à scanner"
#, fuzzy
#~ msgid "Failed to start scanning, err 0x%04x"
#~ msgstr "Impossible de commencer à scanner, err 0x%04x"
#, fuzzy #, fuzzy
#~ msgid "Failed to stop advertising" #~ msgid "Failed to stop advertising"
#~ msgstr "Echec de l'arrêt de diffusion" #~ msgstr "Echec de l'arrêt de diffusion"
#, fuzzy, c-format #, fuzzy
#~ msgid "Failed to stop advertising, err 0x%04x" #~ msgid "Failed to stop advertising, err 0x%04x"
#~ msgstr "Echec de l'arrêt de diffusion, err 0x%04x" #~ msgstr "Echec de l'arrêt de diffusion, err 0x%04x"
#, fuzzy
#~ msgid "Failed to write attribute value, err 0x%04x"
#~ msgstr "Impossible d'écrire la valeur de l'attribut, err 0x%04x"
#, fuzzy
#~ msgid "Failed to write gatts value, err 0x%04x"
#~ msgstr "Impossible d'écrire la valeur de 'gatts', err 0x%04x"
#~ msgid "Function requires lock." #~ msgid "Function requires lock."
#~ msgstr "La fonction nécessite un verrou." #~ msgstr "La fonction nécessite un verrou."
@ -3003,7 +2965,6 @@ msgstr "'step' nul"
#~ msgid "STA required" #~ msgid "STA required"
#~ msgstr "'STA' requis" #~ msgstr "'STA' requis"
#, c-format
#~ msgid "Soft device assert, id: 0x%08lX, pc: 0x%08lX" #~ msgid "Soft device assert, id: 0x%08lX, pc: 0x%08lX"
#~ msgstr "Assertion en mode 'soft-device', id: 0x%08lX, pc: 0x%08lX" #~ msgstr "Assertion en mode 'soft-device', id: 0x%08lX, pc: 0x%08lX"
@ -3123,6 +3084,12 @@ msgstr "'step' nul"
#~ msgid "tile index out of bounds" #~ msgid "tile index out of bounds"
#~ msgstr "indice de tuile hors limites" #~ msgstr "indice de tuile hors limites"
#~ msgid "time.struct_time() takes exactly 1 argument"
#~ msgstr "time.struct_time() prend exactement 1 argument"
#~ msgid "timeout >100 (units are now seconds, not msecs)"
#~ msgstr "timeout >100 (exprimé en secondes, pas en ms)"
#~ msgid "too many arguments" #~ msgid "too many arguments"
#~ msgstr "trop d'arguments" #~ msgstr "trop d'arguments"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-10-21 19:50-0700\n" "POT-Creation-Date: 2019-11-27 14:54-0500\n"
"PO-Revision-Date: 2018-10-02 16:27+0200\n" "PO-Revision-Date: 2018-10-02 16:27+0200\n"
"Last-Translator: Enrico Paganin <enrico.paganin@mail.com>\n" "Last-Translator: Enrico Paganin <enrico.paganin@mail.com>\n"
"Language-Team: \n" "Language-Team: \n"
@ -488,11 +488,6 @@ msgstr ""
msgid "Corrupt raw code" msgid "Corrupt raw code"
msgstr "" msgstr ""
#: ports/nrf/common-hal/_bleio/UUID.c
#, c-format
msgid "Could not decode ble_uuid, err 0x%04x"
msgstr ""
#: ports/atmel-samd/common-hal/busio/UART.c #: ports/atmel-samd/common-hal/busio/UART.c
msgid "Could not initialize UART" msgid "Could not initialize UART"
msgstr "Impossibile inizializzare l'UART" msgstr "Impossibile inizializzare l'UART"
@ -590,11 +585,6 @@ msgstr ""
msgid "Expected tuple of length %d, got %d" msgid "Expected tuple of length %d, got %d"
msgstr "" msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Failed initiate attribute read, err 0x%04x"
msgstr ""
#: shared-bindings/ps2io/Ps2.c #: shared-bindings/ps2io/Ps2.c
msgid "Failed sending command." msgid "Failed sending command."
msgstr "" msgstr ""
@ -604,15 +594,6 @@ msgstr ""
msgid "Failed to acquire mutex, err 0x%04x" msgid "Failed to acquire mutex, err 0x%04x"
msgstr "Impossibile leggere valore dell'attributo. status: 0x%02x" msgstr "Impossibile leggere valore dell'attributo. status: 0x%02x"
#: ports/nrf/common-hal/_bleio/Service.c
msgid "Failed to add characteristic, NRF_ERROR_%q"
msgstr ""
#: ports/nrf/common-hal/_bleio/Characteristic.c
#, c-format
msgid "Failed to add descriptor, err 0x%04x"
msgstr ""
#: ports/atmel-samd/common-hal/busio/UART.c ports/nrf/common-hal/busio/UART.c #: ports/atmel-samd/common-hal/busio/UART.c ports/nrf/common-hal/busio/UART.c
msgid "Failed to allocate RX buffer" msgid "Failed to allocate RX buffer"
msgstr "Impossibile allocare buffer RX" msgstr "Impossibile allocare buffer RX"
@ -623,10 +604,6 @@ msgstr "Impossibile allocare buffer RX"
msgid "Failed to allocate RX buffer of %d bytes" msgid "Failed to allocate RX buffer of %d bytes"
msgstr "Fallita allocazione del buffer RX di %d byte" msgstr "Fallita allocazione del buffer RX di %d byte"
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Failed to change softdevice state, NRF_ERROR_%q"
msgstr ""
#: ports/nrf/common-hal/_bleio/Adapter.c #: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Failed to connect: internal error" msgid "Failed to connect: internal error"
msgstr "" msgstr ""
@ -635,95 +612,11 @@ msgstr ""
msgid "Failed to connect: timeout" msgid "Failed to connect: timeout"
msgstr "" msgstr ""
#: ports/nrf/common-hal/_bleio/Service.c
msgid "Failed to create service, NRF_ERROR_%q"
msgstr ""
#: ports/nrf/common-hal/_bleio/Connection.c
#, fuzzy
msgid "Failed to discover services"
msgstr "Impossibile fermare advertisement. status: 0x%02x"
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Failed to get local address"
msgstr ""
#: ports/nrf/common-hal/_bleio/Adapter.c
#, fuzzy
msgid "Failed to get softdevice state"
msgstr "Impossibile fermare advertisement. status: 0x%02x"
#: ports/nrf/common-hal/_bleio/Characteristic.c
#, c-format
msgid "Failed to notify or indicate attribute value, err 0x%04x"
msgstr "Notificamento o indicazione di attribute value fallito, err 0x%04x"
#: ports/nrf/common-hal/_bleio/Connection.c
msgid "Failed to pair"
msgstr ""
#: ports/nrf/common-hal/_bleio/Characteristic.c
#, fuzzy, c-format
msgid "Failed to read CCCD value, err 0x%04x"
msgstr "Impossibile leggere valore dell'attributo. status: 0x%02x"
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Failed to read attribute value, err 0x%04x"
msgstr "Tentative leggere attribute value fallito, err 0x%04x"
#: ports/nrf/common-hal/_bleio/__init__.c
#, fuzzy, c-format
msgid "Failed to read gatts value, err 0x%04x"
msgstr "Impossibile scrivere valore dell'attributo. status: 0x%02x"
#: ports/nrf/common-hal/_bleio/UUID.c
#, fuzzy, c-format
msgid "Failed to register Vendor-Specific UUID, err 0x%04x"
msgstr "Non è possibile aggiungere l'UUID del vendor specifico da 128-bit"
#: ports/nrf/sd_mutex.c #: ports/nrf/sd_mutex.c
#, fuzzy, c-format #, fuzzy, c-format
msgid "Failed to release mutex, err 0x%04x" msgid "Failed to release mutex, err 0x%04x"
msgstr "Impossibile leggere valore dell'attributo. status: 0x%02x" msgstr "Impossibile leggere valore dell'attributo. status: 0x%02x"
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Failed to start advertising, NRF_ERROR_%q"
msgstr ""
#: ports/nrf/common-hal/_bleio/Adapter.c
#, c-format
msgid "Failed to start connecting, error 0x%04x"
msgstr ""
#: ports/nrf/common-hal/_bleio/Connection.c
msgid "Failed to start pairing, NRF_ERROR_%q"
msgstr ""
#: ports/nrf/common-hal/_bleio/Adapter.c
#, fuzzy, c-format
msgid "Failed to start scanning, err 0x%04x"
msgstr "Impossible iniziare la scansione. status: 0x%02x"
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Failed to stop advertising, NRF_ERROR_%q"
msgstr ""
#: ports/nrf/common-hal/_bleio/Characteristic.c
#, c-format
msgid "Failed to write CCCD, err 0x%04x"
msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
#, fuzzy, c-format
msgid "Failed to write attribute value, err 0x%04x"
msgstr "Impossibile scrivere valore dell'attributo. status: 0x%02x"
#: ports/nrf/common-hal/_bleio/__init__.c
#, fuzzy, c-format
msgid "Failed to write gatts value, err 0x%04x"
msgstr "Impossibile scrivere valore dell'attributo. status: 0x%02x"
#: py/moduerrno.c #: py/moduerrno.c
msgid "File exists" msgid "File exists"
msgstr "File esistente" msgstr "File esistente"
@ -788,6 +681,14 @@ msgstr ""
msgid "Input/output error" msgid "Input/output error"
msgstr "Errore input/output" msgstr "Errore input/output"
#: ports/nrf/common-hal/_bleio/__init__.c
msgid "Insufficient authentication"
msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
msgid "Insufficient encryption"
msgstr ""
#: ports/atmel-samd/common-hal/audiobusio/I2SOut.c #: ports/atmel-samd/common-hal/audiobusio/I2SOut.c
#: ports/atmel-samd/common-hal/audiobusio/PDMIn.c #: ports/atmel-samd/common-hal/audiobusio/PDMIn.c
msgid "Invalid %q pin" msgid "Invalid %q pin"
@ -1155,7 +1056,7 @@ msgstr "Modalità sicura in esecuzione! Auto-reload disattivato.\n"
msgid "Running in safe mode! Not running saved code.\n" msgid "Running in safe mode! Not running saved code.\n"
msgstr "Modalità sicura in esecuzione! Codice salvato non in esecuzione.\n" msgstr "Modalità sicura in esecuzione! Codice salvato non in esecuzione.\n"
#: ports/atmel-samd/common-hal/busio/I2C.c #: ports/atmel-samd/common-hal/busio/I2C.c ports/nrf/common-hal/busio/I2C.c
msgid "SDA or SCL needs a pull up" msgid "SDA or SCL needs a pull up"
msgstr "SDA o SCL necessitano un pull-up" msgstr "SDA o SCL necessitano un pull-up"
@ -1343,11 +1244,32 @@ msgstr "Imposibile scrivere su nvm."
msgid "Unexpected nrfx uuid type" msgid "Unexpected nrfx uuid type"
msgstr "indentazione inaspettata" msgstr "indentazione inaspettata"
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Unknown gatt error: 0x%04x"
msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Unknown security error: 0x%04x"
msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Unknown soft device error: %04x"
msgstr ""
#: shared-bindings/_pixelbuf/PixelBuf.c #: shared-bindings/_pixelbuf/PixelBuf.c
#, c-format #, c-format
msgid "Unmatched number of items on RHS (expected %d, got %d)." msgid "Unmatched number of items on RHS (expected %d, got %d)."
msgstr "" msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
msgid ""
"Unspecified issue. Can be that the pairing prompt on the other device was "
"declined or ignored."
msgstr ""
#: ports/atmel-samd/common-hal/busio/I2C.c #: ports/atmel-samd/common-hal/busio/I2C.c
msgid "Unsupported baudrate" msgid "Unsupported baudrate"
msgstr "baudrate non supportato" msgstr "baudrate non supportato"
@ -2572,12 +2494,8 @@ msgstr "la soglia deve essere nell'intervallo 0-65536"
msgid "time.struct_time() takes a 9-sequence" msgid "time.struct_time() takes a 9-sequence"
msgstr "" msgstr ""
#: shared-bindings/time/__init__.c
msgid "time.struct_time() takes exactly 1 argument"
msgstr "time.struct_time() prende esattamente un argomento"
#: shared-bindings/busio/UART.c #: shared-bindings/busio/UART.c
msgid "timeout >100 (units are now seconds, not msecs)" msgid "timeout must be 0.0-100.0 seconds"
msgstr "" msgstr ""
#: shared-bindings/_bleio/CharacteristicBuffer.c #: shared-bindings/_bleio/CharacteristicBuffer.c
@ -2824,7 +2742,7 @@ msgstr "zero step"
#~ msgid "Failed to acquire mutex" #~ msgid "Failed to acquire mutex"
#~ msgstr "Impossibile allocare buffer RX" #~ msgstr "Impossibile allocare buffer RX"
#, fuzzy, c-format #, fuzzy
#~ msgid "Failed to add characteristic, err 0x%04x" #~ msgid "Failed to add characteristic, err 0x%04x"
#~ msgstr "Impossibile fermare advertisement. status: 0x%02x" #~ msgstr "Impossibile fermare advertisement. status: 0x%02x"
@ -2832,7 +2750,7 @@ msgstr "zero step"
#~ msgid "Failed to add service" #~ msgid "Failed to add service"
#~ msgstr "Impossibile fermare advertisement. status: 0x%02x" #~ msgstr "Impossibile fermare advertisement. status: 0x%02x"
#, fuzzy, c-format #, fuzzy
#~ msgid "Failed to add service, err 0x%04x" #~ msgid "Failed to add service, err 0x%04x"
#~ msgstr "Impossibile fermare advertisement. status: 0x%02x" #~ msgstr "Impossibile fermare advertisement. status: 0x%02x"
@ -2848,7 +2766,7 @@ msgstr "zero step"
#~ msgid "Failed to continue scanning" #~ msgid "Failed to continue scanning"
#~ msgstr "Impossible iniziare la scansione. status: 0x%02x" #~ msgstr "Impossible iniziare la scansione. status: 0x%02x"
#, fuzzy, c-format #, fuzzy
#~ msgid "Failed to continue scanning, err 0x%04x" #~ msgid "Failed to continue scanning, err 0x%04x"
#~ msgstr "Impossible iniziare la scansione. status: 0x%02x" #~ msgstr "Impossible iniziare la scansione. status: 0x%02x"
@ -2856,14 +2774,40 @@ msgstr "zero step"
#~ msgid "Failed to create mutex" #~ msgid "Failed to create mutex"
#~ msgstr "Impossibile leggere valore dell'attributo. status: 0x%02x" #~ msgstr "Impossibile leggere valore dell'attributo. status: 0x%02x"
#, fuzzy
#~ msgid "Failed to discover services"
#~ msgstr "Impossibile fermare advertisement. status: 0x%02x"
#, fuzzy
#~ msgid "Failed to get softdevice state"
#~ msgstr "Impossibile fermare advertisement. status: 0x%02x"
#, fuzzy #, fuzzy
#~ msgid "Failed to notify or indicate attribute value, err %0x04x" #~ msgid "Failed to notify or indicate attribute value, err %0x04x"
#~ msgstr "Impossibile notificare valore dell'attributo. status: 0x%02x" #~ msgstr "Impossibile notificare valore dell'attributo. status: 0x%02x"
#~ msgid "Failed to notify or indicate attribute value, err 0x%04x"
#~ msgstr "Notificamento o indicazione di attribute value fallito, err 0x%04x"
#, fuzzy
#~ msgid "Failed to read CCCD value, err 0x%04x"
#~ msgstr "Impossibile leggere valore dell'attributo. status: 0x%02x"
#, fuzzy #, fuzzy
#~ msgid "Failed to read attribute value, err %0x04x" #~ msgid "Failed to read attribute value, err %0x04x"
#~ msgstr "Impossibile leggere valore dell'attributo. status: 0x%02x" #~ msgstr "Impossibile leggere valore dell'attributo. status: 0x%02x"
#~ msgid "Failed to read attribute value, err 0x%04x"
#~ msgstr "Tentative leggere attribute value fallito, err 0x%04x"
#, fuzzy
#~ msgid "Failed to read gatts value, err 0x%04x"
#~ msgstr "Impossibile scrivere valore dell'attributo. status: 0x%02x"
#, fuzzy
#~ msgid "Failed to register Vendor-Specific UUID, err 0x%04x"
#~ msgstr "Non è possibile aggiungere l'UUID del vendor specifico da 128-bit"
#, fuzzy #, fuzzy
#~ msgid "Failed to release mutex" #~ msgid "Failed to release mutex"
#~ msgstr "Impossibile leggere valore dell'attributo. status: 0x%02x" #~ msgstr "Impossibile leggere valore dell'attributo. status: 0x%02x"
@ -2872,7 +2816,7 @@ msgstr "zero step"
#~ msgid "Failed to start advertising" #~ msgid "Failed to start advertising"
#~ msgstr "Impossibile avviare advertisement. status: 0x%02x" #~ msgstr "Impossibile avviare advertisement. status: 0x%02x"
#, fuzzy, c-format #, fuzzy
#~ msgid "Failed to start advertising, err 0x%04x" #~ msgid "Failed to start advertising, err 0x%04x"
#~ msgstr "Impossibile avviare advertisement. status: 0x%02x" #~ msgstr "Impossibile avviare advertisement. status: 0x%02x"
@ -2880,14 +2824,26 @@ msgstr "zero step"
#~ msgid "Failed to start scanning" #~ msgid "Failed to start scanning"
#~ msgstr "Impossible iniziare la scansione. status: 0x%02x" #~ msgstr "Impossible iniziare la scansione. status: 0x%02x"
#, fuzzy
#~ msgid "Failed to start scanning, err 0x%04x"
#~ msgstr "Impossible iniziare la scansione. status: 0x%02x"
#, fuzzy #, fuzzy
#~ msgid "Failed to stop advertising" #~ msgid "Failed to stop advertising"
#~ msgstr "Impossibile fermare advertisement. status: 0x%02x" #~ msgstr "Impossibile fermare advertisement. status: 0x%02x"
#, fuzzy, c-format #, fuzzy
#~ msgid "Failed to stop advertising, err 0x%04x" #~ msgid "Failed to stop advertising, err 0x%04x"
#~ msgstr "Impossibile fermare advertisement. status: 0x%02x" #~ msgstr "Impossibile fermare advertisement. status: 0x%02x"
#, fuzzy
#~ msgid "Failed to write attribute value, err 0x%04x"
#~ msgstr "Impossibile scrivere valore dell'attributo. status: 0x%02x"
#, fuzzy
#~ msgid "Failed to write gatts value, err 0x%04x"
#~ msgstr "Impossibile scrivere valore dell'attributo. status: 0x%02x"
#~ msgid "GPIO16 does not support pull up." #~ msgid "GPIO16 does not support pull up."
#~ msgstr "GPIO16 non supporta pull-up" #~ msgstr "GPIO16 non supporta pull-up"
@ -3046,6 +3002,9 @@ msgstr "zero step"
#~ msgid "scan failed" #~ msgid "scan failed"
#~ msgstr "scansione fallita" #~ msgstr "scansione fallita"
#~ msgid "time.struct_time() takes exactly 1 argument"
#~ msgstr "time.struct_time() prende esattamente un argomento"
#~ msgid "too many arguments" #~ msgid "too many arguments"
#~ msgstr "troppi argomenti" #~ msgstr "troppi argomenti"

2645
locale/ko.po Normal file

File diff suppressed because it is too large Load Diff

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: \n" "Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-10-21 19:50-0700\n" "POT-Creation-Date: 2019-11-27 14:54-0500\n"
"PO-Revision-Date: 2019-03-19 18:37-0700\n" "PO-Revision-Date: 2019-03-19 18:37-0700\n"
"Last-Translator: Radomir Dopieralski <circuitpython@sheep.art.pl>\n" "Last-Translator: Radomir Dopieralski <circuitpython@sheep.art.pl>\n"
"Language-Team: pl\n" "Language-Team: pl\n"
@ -481,11 +481,6 @@ msgstr ""
msgid "Corrupt raw code" msgid "Corrupt raw code"
msgstr "" msgstr ""
#: ports/nrf/common-hal/_bleio/UUID.c
#, c-format
msgid "Could not decode ble_uuid, err 0x%04x"
msgstr "Nie można zdekodować ble_uuid, błąd 0x%04x"
#: ports/atmel-samd/common-hal/busio/UART.c #: ports/atmel-samd/common-hal/busio/UART.c
msgid "Could not initialize UART" msgid "Could not initialize UART"
msgstr "Ustawienie UART nie powiodło się" msgstr "Ustawienie UART nie powiodło się"
@ -579,11 +574,6 @@ msgstr ""
msgid "Expected tuple of length %d, got %d" msgid "Expected tuple of length %d, got %d"
msgstr "Oczekiwano krotkę długości %d, otrzymano %d" msgstr "Oczekiwano krotkę długości %d, otrzymano %d"
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Failed initiate attribute read, err 0x%04x"
msgstr ""
#: shared-bindings/ps2io/Ps2.c #: shared-bindings/ps2io/Ps2.c
msgid "Failed sending command." msgid "Failed sending command."
msgstr "" msgstr ""
@ -593,15 +583,6 @@ msgstr ""
msgid "Failed to acquire mutex, err 0x%04x" msgid "Failed to acquire mutex, err 0x%04x"
msgstr "Nie udało się uzyskać blokady, błąd 0x$04x" msgstr "Nie udało się uzyskać blokady, błąd 0x$04x"
#: ports/nrf/common-hal/_bleio/Service.c
msgid "Failed to add characteristic, NRF_ERROR_%q"
msgstr ""
#: ports/nrf/common-hal/_bleio/Characteristic.c
#, c-format
msgid "Failed to add descriptor, err 0x%04x"
msgstr ""
#: ports/atmel-samd/common-hal/busio/UART.c ports/nrf/common-hal/busio/UART.c #: ports/atmel-samd/common-hal/busio/UART.c ports/nrf/common-hal/busio/UART.c
msgid "Failed to allocate RX buffer" msgid "Failed to allocate RX buffer"
msgstr "Nie udała się alokacja bufora RX" msgstr "Nie udała się alokacja bufora RX"
@ -612,10 +593,6 @@ msgstr "Nie udała się alokacja bufora RX"
msgid "Failed to allocate RX buffer of %d bytes" msgid "Failed to allocate RX buffer of %d bytes"
msgstr "Nie udała się alokacja %d bajtów na bufor RX" msgstr "Nie udała się alokacja %d bajtów na bufor RX"
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Failed to change softdevice state, NRF_ERROR_%q"
msgstr ""
#: ports/nrf/common-hal/_bleio/Adapter.c #: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Failed to connect: internal error" msgid "Failed to connect: internal error"
msgstr "" msgstr ""
@ -624,93 +601,11 @@ msgstr ""
msgid "Failed to connect: timeout" msgid "Failed to connect: timeout"
msgstr "" msgstr ""
#: ports/nrf/common-hal/_bleio/Service.c
msgid "Failed to create service, NRF_ERROR_%q"
msgstr ""
#: ports/nrf/common-hal/_bleio/Connection.c
msgid "Failed to discover services"
msgstr "Nie udało się odkryć serwisów"
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Failed to get local address"
msgstr "Nie udało się uzyskać lokalnego adresu"
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Failed to get softdevice state"
msgstr "Nie udało się odczytać stanu softdevice"
#: ports/nrf/common-hal/_bleio/Characteristic.c
#, c-format
msgid "Failed to notify or indicate attribute value, err 0x%04x"
msgstr "Nie udało się powiadomić o wartości atrybutu, błąd 0x%04x"
#: ports/nrf/common-hal/_bleio/Connection.c
msgid "Failed to pair"
msgstr ""
#: ports/nrf/common-hal/_bleio/Characteristic.c
#, c-format
msgid "Failed to read CCCD value, err 0x%04x"
msgstr "Nie udało się odczytać CCCD, błąd 0x%04x"
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Failed to read attribute value, err 0x%04x"
msgstr "Nie udało się odczytać wartości atrybutu, błąd 0x%04x"
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Failed to read gatts value, err 0x%04x"
msgstr "Nie udało się odczytać gatts, błąd 0x%04x"
#: ports/nrf/common-hal/_bleio/UUID.c
#, c-format
msgid "Failed to register Vendor-Specific UUID, err 0x%04x"
msgstr "Nie udało się zarejestrować UUID dostawcy, błąd 0x%04x"
#: ports/nrf/sd_mutex.c #: ports/nrf/sd_mutex.c
#, c-format #, c-format
msgid "Failed to release mutex, err 0x%04x" msgid "Failed to release mutex, err 0x%04x"
msgstr "Nie udało się zwolnić blokady, błąd 0x%04x" msgstr "Nie udało się zwolnić blokady, błąd 0x%04x"
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Failed to start advertising, NRF_ERROR_%q"
msgstr ""
#: ports/nrf/common-hal/_bleio/Adapter.c
#, c-format
msgid "Failed to start connecting, error 0x%04x"
msgstr ""
#: ports/nrf/common-hal/_bleio/Connection.c
msgid "Failed to start pairing, NRF_ERROR_%q"
msgstr ""
#: ports/nrf/common-hal/_bleio/Adapter.c
#, c-format
msgid "Failed to start scanning, err 0x%04x"
msgstr "Nie udało się rozpocząć skanowania, błąd 0x%04x"
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Failed to stop advertising, NRF_ERROR_%q"
msgstr ""
#: ports/nrf/common-hal/_bleio/Characteristic.c
#, c-format
msgid "Failed to write CCCD, err 0x%04x"
msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Failed to write attribute value, err 0x%04x"
msgstr "Nie udało się zapisać atrybutu, błąd 0x%04x"
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Failed to write gatts value, err 0x%04x"
msgstr "Nie udało się zapisać gatts, błąd 0x%04x"
#: py/moduerrno.c #: py/moduerrno.c
msgid "File exists" msgid "File exists"
msgstr "Plik istnieje" msgstr "Plik istnieje"
@ -775,6 +670,14 @@ msgstr "Niewłaściwa wielkość bufora"
msgid "Input/output error" msgid "Input/output error"
msgstr "Błąd I/O" msgstr "Błąd I/O"
#: ports/nrf/common-hal/_bleio/__init__.c
msgid "Insufficient authentication"
msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
msgid "Insufficient encryption"
msgstr ""
#: ports/atmel-samd/common-hal/audiobusio/I2SOut.c #: ports/atmel-samd/common-hal/audiobusio/I2SOut.c
#: ports/atmel-samd/common-hal/audiobusio/PDMIn.c #: ports/atmel-samd/common-hal/audiobusio/PDMIn.c
msgid "Invalid %q pin" msgid "Invalid %q pin"
@ -1129,7 +1032,7 @@ msgstr "Uruchomiony tryb bezpieczeństwa! Samo-przeładowanie wyłączone.\n"
msgid "Running in safe mode! Not running saved code.\n" msgid "Running in safe mode! Not running saved code.\n"
msgstr "Uruchomiony tryb bezpieczeństwa! Zapisany kod nie jest uruchamiany.\n" msgstr "Uruchomiony tryb bezpieczeństwa! Zapisany kod nie jest uruchamiany.\n"
#: ports/atmel-samd/common-hal/busio/I2C.c #: ports/atmel-samd/common-hal/busio/I2C.c ports/nrf/common-hal/busio/I2C.c
msgid "SDA or SCL needs a pull up" msgid "SDA or SCL needs a pull up"
msgstr "SDA lub SCL wymagają podciągnięcia" msgstr "SDA lub SCL wymagają podciągnięcia"
@ -1321,11 +1224,32 @@ msgstr "Błąd zapisu do NVM."
msgid "Unexpected nrfx uuid type" msgid "Unexpected nrfx uuid type"
msgstr "Nieoczekiwany typ nrfx uuid." msgstr "Nieoczekiwany typ nrfx uuid."
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Unknown gatt error: 0x%04x"
msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Unknown security error: 0x%04x"
msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Unknown soft device error: %04x"
msgstr ""
#: shared-bindings/_pixelbuf/PixelBuf.c #: shared-bindings/_pixelbuf/PixelBuf.c
#, c-format #, c-format
msgid "Unmatched number of items on RHS (expected %d, got %d)." msgid "Unmatched number of items on RHS (expected %d, got %d)."
msgstr "Zła liczba obiektów po prawej stronie (oczekiwano %d, jest %d)." msgstr "Zła liczba obiektów po prawej stronie (oczekiwano %d, jest %d)."
#: ports/nrf/common-hal/_bleio/__init__.c
msgid ""
"Unspecified issue. Can be that the pairing prompt on the other device was "
"declined or ignored."
msgstr ""
#: ports/atmel-samd/common-hal/busio/I2C.c #: ports/atmel-samd/common-hal/busio/I2C.c
msgid "Unsupported baudrate" msgid "Unsupported baudrate"
msgstr "Zła szybkość transmisji" msgstr "Zła szybkość transmisji"
@ -2526,13 +2450,9 @@ msgstr "threshold musi być w zakresie 0-65536"
msgid "time.struct_time() takes a 9-sequence" msgid "time.struct_time() takes a 9-sequence"
msgstr "time.struct_time() wymaga 9-elementowej sekwencji" msgstr "time.struct_time() wymaga 9-elementowej sekwencji"
#: shared-bindings/time/__init__.c
msgid "time.struct_time() takes exactly 1 argument"
msgstr "time.struct_time() wymaga jednego argumentu"
#: shared-bindings/busio/UART.c #: shared-bindings/busio/UART.c
msgid "timeout >100 (units are now seconds, not msecs)" msgid "timeout must be 0.0-100.0 seconds"
msgstr "timeout > 100 (jednostkami są sekundy)" msgstr ""
#: shared-bindings/_bleio/CharacteristicBuffer.c #: shared-bindings/_bleio/CharacteristicBuffer.c
msgid "timeout must be >= 0.0" msgid "timeout must be >= 0.0"
@ -2740,20 +2660,22 @@ msgstr "zerowy krok"
#~ msgid "Characteristic already in use by another Service." #~ msgid "Characteristic already in use by another Service."
#~ msgstr "Charakterystyka w użyciu w innym serwisie" #~ msgstr "Charakterystyka w użyciu w innym serwisie"
#~ msgid "Could not decode ble_uuid, err 0x%04x"
#~ msgstr "Nie można zdekodować ble_uuid, błąd 0x%04x"
#~ msgid "Data too large for the advertisement packet" #~ msgid "Data too large for the advertisement packet"
#~ msgstr "Zbyt dużo danych pakietu rozgłoszeniowego" #~ msgstr "Zbyt dużo danych pakietu rozgłoszeniowego"
#~ msgid "Failed to acquire mutex" #~ msgid "Failed to acquire mutex"
#~ msgstr "Nie udało się uzyskać blokady" #~ msgstr "Nie udało się uzyskać blokady"
#, fuzzy, c-format #, fuzzy
#~ msgid "Failed to add characteristic, err 0x%04x" #~ msgid "Failed to add characteristic, err 0x%04x"
#~ msgstr "Nie udało się dodać charakterystyki, błąd 0x$04x" #~ msgstr "Nie udało się dodać charakterystyki, błąd 0x$04x"
#~ msgid "Failed to add service" #~ msgid "Failed to add service"
#~ msgstr "Nie udało się dodać serwisu" #~ msgstr "Nie udało się dodać serwisu"
#, c-format
#~ msgid "Failed to add service, err 0x%04x" #~ msgid "Failed to add service, err 0x%04x"
#~ msgstr "Nie udało się dodać serwisu, błąd 0x%04x" #~ msgstr "Nie udało się dodać serwisu, błąd 0x%04x"
@ -2766,33 +2688,63 @@ msgstr "zerowy krok"
#~ msgid "Failed to continue scanning" #~ msgid "Failed to continue scanning"
#~ msgstr "Nie udała się kontynuacja skanowania" #~ msgstr "Nie udała się kontynuacja skanowania"
#, c-format
#~ msgid "Failed to continue scanning, err 0x%04x" #~ msgid "Failed to continue scanning, err 0x%04x"
#~ msgstr "Nie udała się kontynuacja skanowania, błąd 0x%04x" #~ msgstr "Nie udała się kontynuacja skanowania, błąd 0x%04x"
#~ msgid "Failed to create mutex" #~ msgid "Failed to create mutex"
#~ msgstr "Nie udało się stworzyć blokady" #~ msgstr "Nie udało się stworzyć blokady"
#~ msgid "Failed to discover services"
#~ msgstr "Nie udało się odkryć serwisów"
#~ msgid "Failed to get local address"
#~ msgstr "Nie udało się uzyskać lokalnego adresu"
#~ msgid "Failed to get softdevice state"
#~ msgstr "Nie udało się odczytać stanu softdevice"
#~ msgid "Failed to notify or indicate attribute value, err 0x%04x"
#~ msgstr "Nie udało się powiadomić o wartości atrybutu, błąd 0x%04x"
#~ msgid "Failed to read CCCD value, err 0x%04x"
#~ msgstr "Nie udało się odczytać CCCD, błąd 0x%04x"
#~ msgid "Failed to read attribute value, err 0x%04x"
#~ msgstr "Nie udało się odczytać wartości atrybutu, błąd 0x%04x"
#~ msgid "Failed to read gatts value, err 0x%04x"
#~ msgstr "Nie udało się odczytać gatts, błąd 0x%04x"
#~ msgid "Failed to register Vendor-Specific UUID, err 0x%04x"
#~ msgstr "Nie udało się zarejestrować UUID dostawcy, błąd 0x%04x"
#~ msgid "Failed to release mutex" #~ msgid "Failed to release mutex"
#~ msgstr "Nie udało się zwolnić blokady" #~ msgstr "Nie udało się zwolnić blokady"
#~ msgid "Failed to start advertising" #~ msgid "Failed to start advertising"
#~ msgstr "Nie udało się rozpocząć rozgłaszania" #~ msgstr "Nie udało się rozpocząć rozgłaszania"
#, c-format
#~ msgid "Failed to start advertising, err 0x%04x" #~ msgid "Failed to start advertising, err 0x%04x"
#~ msgstr "Nie udało się rozpocząć rozgłaszania, błąd 0x%04x" #~ msgstr "Nie udało się rozpocząć rozgłaszania, błąd 0x%04x"
#~ msgid "Failed to start scanning" #~ msgid "Failed to start scanning"
#~ msgstr "Nie udało się rozpocząć skanowania" #~ msgstr "Nie udało się rozpocząć skanowania"
#~ msgid "Failed to start scanning, err 0x%04x"
#~ msgstr "Nie udało się rozpocząć skanowania, błąd 0x%04x"
#~ msgid "Failed to stop advertising" #~ msgid "Failed to stop advertising"
#~ msgstr "Nie udało się zatrzymać rozgłaszania" #~ msgstr "Nie udało się zatrzymać rozgłaszania"
#, c-format
#~ msgid "Failed to stop advertising, err 0x%04x" #~ msgid "Failed to stop advertising, err 0x%04x"
#~ msgstr "Nie udało się zatrzymać rozgłaszania, błąd 0x%04x" #~ msgstr "Nie udało się zatrzymać rozgłaszania, błąd 0x%04x"
#~ msgid "Failed to write attribute value, err 0x%04x"
#~ msgstr "Nie udało się zapisać atrybutu, błąd 0x%04x"
#~ msgid "Failed to write gatts value, err 0x%04x"
#~ msgstr "Nie udało się zapisać gatts, błąd 0x%04x"
#~ msgid "Invalid bit clock pin" #~ msgid "Invalid bit clock pin"
#~ msgstr "Zła nóżka zegara" #~ msgstr "Zła nóżka zegara"
@ -2810,7 +2762,6 @@ msgstr "zerowy krok"
#~ "bpp given" #~ "bpp given"
#~ msgstr "Wspierane są tylko pliki BMP czarno-białe, 8bpp i 16bpp: %d bpp " #~ msgstr "Wspierane są tylko pliki BMP czarno-białe, 8bpp i 16bpp: %d bpp "
#, c-format
#~ msgid "Soft device assert, id: 0x%08lX, pc: 0x%08lX" #~ msgid "Soft device assert, id: 0x%08lX, pc: 0x%08lX"
#~ msgstr "Soft device assert, id: 0x%08lX, pc: 0x%08lX" #~ msgstr "Soft device assert, id: 0x%08lX, pc: 0x%08lX"
@ -2841,3 +2792,9 @@ msgstr "zerowy krok"
#~ msgid "tile index out of bounds" #~ msgid "tile index out of bounds"
#~ msgstr "indeks kafelka poza zakresem" #~ msgstr "indeks kafelka poza zakresem"
#~ msgid "time.struct_time() takes exactly 1 argument"
#~ msgstr "time.struct_time() wymaga jednego argumentu"
#~ msgid "timeout >100 (units are now seconds, not msecs)"
#~ msgstr "timeout > 100 (jednostkami są sekundy)"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-10-21 19:50-0700\n" "POT-Creation-Date: 2019-11-27 14:54-0500\n"
"PO-Revision-Date: 2018-10-02 21:14-0000\n" "PO-Revision-Date: 2018-10-02 21:14-0000\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: \n" "Language-Team: \n"
@ -484,11 +484,6 @@ msgstr ""
msgid "Corrupt raw code" msgid "Corrupt raw code"
msgstr "" msgstr ""
#: ports/nrf/common-hal/_bleio/UUID.c
#, c-format
msgid "Could not decode ble_uuid, err 0x%04x"
msgstr ""
#: ports/atmel-samd/common-hal/busio/UART.c #: ports/atmel-samd/common-hal/busio/UART.c
msgid "Could not initialize UART" msgid "Could not initialize UART"
msgstr "Não foi possível inicializar o UART" msgstr "Não foi possível inicializar o UART"
@ -585,11 +580,6 @@ msgstr ""
msgid "Expected tuple of length %d, got %d" msgid "Expected tuple of length %d, got %d"
msgstr "" msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Failed initiate attribute read, err 0x%04x"
msgstr ""
#: shared-bindings/ps2io/Ps2.c #: shared-bindings/ps2io/Ps2.c
msgid "Failed sending command." msgid "Failed sending command."
msgstr "Falha ao enviar comando." msgstr "Falha ao enviar comando."
@ -599,15 +589,6 @@ msgstr "Falha ao enviar comando."
msgid "Failed to acquire mutex, err 0x%04x" msgid "Failed to acquire mutex, err 0x%04x"
msgstr "Não é possível ler o valor do atributo. status: 0x%02x" msgstr "Não é possível ler o valor do atributo. status: 0x%02x"
#: ports/nrf/common-hal/_bleio/Service.c
msgid "Failed to add characteristic, NRF_ERROR_%q"
msgstr ""
#: ports/nrf/common-hal/_bleio/Characteristic.c
#, c-format
msgid "Failed to add descriptor, err 0x%04x"
msgstr ""
#: ports/atmel-samd/common-hal/busio/UART.c ports/nrf/common-hal/busio/UART.c #: ports/atmel-samd/common-hal/busio/UART.c ports/nrf/common-hal/busio/UART.c
msgid "Failed to allocate RX buffer" msgid "Failed to allocate RX buffer"
msgstr "Falha ao alocar buffer RX" msgstr "Falha ao alocar buffer RX"
@ -618,10 +599,6 @@ msgstr "Falha ao alocar buffer RX"
msgid "Failed to allocate RX buffer of %d bytes" msgid "Failed to allocate RX buffer of %d bytes"
msgstr "Falha ao alocar buffer RX de %d bytes" msgstr "Falha ao alocar buffer RX de %d bytes"
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Failed to change softdevice state, NRF_ERROR_%q"
msgstr ""
#: ports/nrf/common-hal/_bleio/Adapter.c #: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Failed to connect: internal error" msgid "Failed to connect: internal error"
msgstr "" msgstr ""
@ -630,95 +607,11 @@ msgstr ""
msgid "Failed to connect: timeout" msgid "Failed to connect: timeout"
msgstr "" msgstr ""
#: ports/nrf/common-hal/_bleio/Service.c
msgid "Failed to create service, NRF_ERROR_%q"
msgstr ""
#: ports/nrf/common-hal/_bleio/Connection.c
#, fuzzy
msgid "Failed to discover services"
msgstr "Não pode parar propaganda. status: 0x%02x"
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Failed to get local address"
msgstr ""
#: ports/nrf/common-hal/_bleio/Adapter.c
#, fuzzy
msgid "Failed to get softdevice state"
msgstr "Não pode parar propaganda. status: 0x%02x"
#: ports/nrf/common-hal/_bleio/Characteristic.c
#, c-format
msgid "Failed to notify or indicate attribute value, err 0x%04x"
msgstr ""
#: ports/nrf/common-hal/_bleio/Connection.c
msgid "Failed to pair"
msgstr ""
#: ports/nrf/common-hal/_bleio/Characteristic.c
#, fuzzy, c-format
msgid "Failed to read CCCD value, err 0x%04x"
msgstr "Não é possível ler o valor do atributo. status: 0x%02x"
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Failed to read attribute value, err 0x%04x"
msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
#, fuzzy, c-format
msgid "Failed to read gatts value, err 0x%04x"
msgstr "Não é possível gravar o valor do atributo. status: 0x%02x"
#: ports/nrf/common-hal/_bleio/UUID.c
#, fuzzy, c-format
msgid "Failed to register Vendor-Specific UUID, err 0x%04x"
msgstr "Não é possível adicionar o UUID de 128 bits específico do fornecedor."
#: ports/nrf/sd_mutex.c #: ports/nrf/sd_mutex.c
#, fuzzy, c-format #, fuzzy, c-format
msgid "Failed to release mutex, err 0x%04x" msgid "Failed to release mutex, err 0x%04x"
msgstr "Não é possível ler o valor do atributo. status: 0x%02x" msgstr "Não é possível ler o valor do atributo. status: 0x%02x"
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Failed to start advertising, NRF_ERROR_%q"
msgstr ""
#: ports/nrf/common-hal/_bleio/Adapter.c
#, c-format
msgid "Failed to start connecting, error 0x%04x"
msgstr ""
#: ports/nrf/common-hal/_bleio/Connection.c
msgid "Failed to start pairing, NRF_ERROR_%q"
msgstr ""
#: ports/nrf/common-hal/_bleio/Adapter.c
#, fuzzy, c-format
msgid "Failed to start scanning, err 0x%04x"
msgstr "Não é possível iniciar o anúncio. status: 0x%02x"
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Failed to stop advertising, NRF_ERROR_%q"
msgstr ""
#: ports/nrf/common-hal/_bleio/Characteristic.c
#, c-format
msgid "Failed to write CCCD, err 0x%04x"
msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
#, fuzzy, c-format
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/__init__.c
#, fuzzy, c-format
msgid "Failed to write gatts value, err 0x%04x"
msgstr "Não é possível gravar o valor do atributo. status: 0x%02x"
#: py/moduerrno.c #: py/moduerrno.c
msgid "File exists" msgid "File exists"
msgstr "Arquivo já existe" msgstr "Arquivo já existe"
@ -781,6 +674,14 @@ msgstr ""
msgid "Input/output error" msgid "Input/output error"
msgstr "" msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
msgid "Insufficient authentication"
msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
msgid "Insufficient encryption"
msgstr ""
#: ports/atmel-samd/common-hal/audiobusio/I2SOut.c #: ports/atmel-samd/common-hal/audiobusio/I2SOut.c
#: ports/atmel-samd/common-hal/audiobusio/PDMIn.c #: ports/atmel-samd/common-hal/audiobusio/PDMIn.c
msgid "Invalid %q pin" msgid "Invalid %q pin"
@ -1138,7 +1039,7 @@ msgstr "Rodando em modo seguro! Atualização automática está desligada.\n"
msgid "Running in safe mode! Not running saved code.\n" msgid "Running in safe mode! Not running saved code.\n"
msgstr "Rodando em modo seguro! Não está executando o código salvo.\n" msgstr "Rodando em modo seguro! Não está executando o código salvo.\n"
#: ports/atmel-samd/common-hal/busio/I2C.c #: ports/atmel-samd/common-hal/busio/I2C.c ports/nrf/common-hal/busio/I2C.c
msgid "SDA or SCL needs a pull up" msgid "SDA or SCL needs a pull up"
msgstr "SDA ou SCL precisa de um pull up" msgstr "SDA ou SCL precisa de um pull up"
@ -1320,11 +1221,32 @@ msgstr "Não é possível gravar no nvm."
msgid "Unexpected nrfx uuid type" msgid "Unexpected nrfx uuid type"
msgstr "" msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Unknown gatt error: 0x%04x"
msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Unknown security error: 0x%04x"
msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Unknown soft device error: %04x"
msgstr ""
#: shared-bindings/_pixelbuf/PixelBuf.c #: shared-bindings/_pixelbuf/PixelBuf.c
#, c-format #, c-format
msgid "Unmatched number of items on RHS (expected %d, got %d)." msgid "Unmatched number of items on RHS (expected %d, got %d)."
msgstr "" msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
msgid ""
"Unspecified issue. Can be that the pairing prompt on the other device was "
"declined or ignored."
msgstr ""
#: ports/atmel-samd/common-hal/busio/I2C.c #: ports/atmel-samd/common-hal/busio/I2C.c
msgid "Unsupported baudrate" msgid "Unsupported baudrate"
msgstr "Taxa de transmissão não suportada" msgstr "Taxa de transmissão não suportada"
@ -2525,12 +2447,8 @@ msgstr "Limite deve estar no alcance de 0-65536"
msgid "time.struct_time() takes a 9-sequence" msgid "time.struct_time() takes a 9-sequence"
msgstr "" msgstr ""
#: shared-bindings/time/__init__.c
msgid "time.struct_time() takes exactly 1 argument"
msgstr ""
#: shared-bindings/busio/UART.c #: shared-bindings/busio/UART.c
msgid "timeout >100 (units are now seconds, not msecs)" msgid "timeout must be 0.0-100.0 seconds"
msgstr "" msgstr ""
#: shared-bindings/_bleio/CharacteristicBuffer.c #: shared-bindings/_bleio/CharacteristicBuffer.c
@ -2754,7 +2672,7 @@ msgstr "passo zero"
#~ msgid "Failed to acquire mutex" #~ msgid "Failed to acquire mutex"
#~ msgstr "Falha ao alocar buffer RX" #~ msgstr "Falha ao alocar buffer RX"
#, fuzzy, c-format #, fuzzy
#~ msgid "Failed to add characteristic, err 0x%04x" #~ msgid "Failed to add characteristic, err 0x%04x"
#~ msgstr "Não pode parar propaganda. status: 0x%02x" #~ msgstr "Não pode parar propaganda. status: 0x%02x"
@ -2762,7 +2680,7 @@ msgstr "passo zero"
#~ msgid "Failed to add service" #~ msgid "Failed to add service"
#~ msgstr "Não pode parar propaganda. status: 0x%02x" #~ msgstr "Não pode parar propaganda. status: 0x%02x"
#, fuzzy, c-format #, fuzzy
#~ msgid "Failed to add service, err 0x%04x" #~ msgid "Failed to add service, err 0x%04x"
#~ msgstr "Não pode parar propaganda. status: 0x%02x" #~ msgstr "Não pode parar propaganda. status: 0x%02x"
@ -2770,7 +2688,7 @@ msgstr "passo zero"
#~ msgid "Failed to change softdevice state" #~ msgid "Failed to change softdevice state"
#~ msgstr "Não pode parar propaganda. status: 0x%02x" #~ msgstr "Não pode parar propaganda. status: 0x%02x"
#, fuzzy, c-format #, fuzzy
#~ msgid "Failed to continue scanning, err 0x%04x" #~ msgid "Failed to continue scanning, err 0x%04x"
#~ msgstr "Não é possível iniciar o anúncio. status: 0x%02x" #~ msgstr "Não é possível iniciar o anúncio. status: 0x%02x"
@ -2778,14 +2696,35 @@ msgstr "passo zero"
#~ msgid "Failed to create mutex" #~ msgid "Failed to create mutex"
#~ msgstr "Não é possível ler o valor do atributo. status: 0x%02x" #~ msgstr "Não é possível ler o valor do atributo. status: 0x%02x"
#, fuzzy
#~ msgid "Failed to discover services"
#~ msgstr "Não pode parar propaganda. status: 0x%02x"
#, fuzzy
#~ msgid "Failed to get softdevice state"
#~ msgstr "Não pode parar propaganda. status: 0x%02x"
#, fuzzy #, fuzzy
#~ msgid "Failed to notify or indicate attribute value, err %0x04x" #~ msgid "Failed to notify or indicate attribute value, err %0x04x"
#~ msgstr "Não é possível gravar o valor do atributo. status: 0x%02x" #~ msgstr "Não é possível gravar o valor do atributo. status: 0x%02x"
#, fuzzy
#~ msgid "Failed to read CCCD value, err 0x%04x"
#~ msgstr "Não é possível ler o valor do atributo. status: 0x%02x"
#, fuzzy #, fuzzy
#~ msgid "Failed to read attribute value, err %0x04x" #~ msgid "Failed to read attribute value, err %0x04x"
#~ msgstr "Não é possível ler o valor do atributo. status: 0x%02x" #~ msgstr "Não é possível ler o valor do atributo. status: 0x%02x"
#, fuzzy
#~ msgid "Failed to read gatts value, err 0x%04x"
#~ msgstr "Não é possível gravar o valor do atributo. status: 0x%02x"
#, fuzzy
#~ msgid "Failed to register Vendor-Specific UUID, err 0x%04x"
#~ msgstr ""
#~ "Não é possível adicionar o UUID de 128 bits específico do fornecedor."
#, fuzzy #, fuzzy
#~ msgid "Failed to release mutex" #~ msgid "Failed to release mutex"
#~ msgstr "Não é possível ler o valor do atributo. status: 0x%02x" #~ msgstr "Não é possível ler o valor do atributo. status: 0x%02x"
@ -2794,7 +2733,7 @@ msgstr "passo zero"
#~ msgid "Failed to start advertising" #~ msgid "Failed to start advertising"
#~ msgstr "Não é possível iniciar o anúncio. status: 0x%02x" #~ msgstr "Não é possível iniciar o anúncio. status: 0x%02x"
#, fuzzy, c-format #, fuzzy
#~ msgid "Failed to start advertising, err 0x%04x" #~ msgid "Failed to start advertising, err 0x%04x"
#~ msgstr "Não é possível iniciar o anúncio. status: 0x%02x" #~ msgstr "Não é possível iniciar o anúncio. status: 0x%02x"
@ -2802,14 +2741,26 @@ msgstr "passo zero"
#~ msgid "Failed to start scanning" #~ msgid "Failed to start scanning"
#~ msgstr "Não é possível iniciar o anúncio. status: 0x%02x" #~ msgstr "Não é possível iniciar o anúncio. status: 0x%02x"
#, fuzzy
#~ msgid "Failed to start scanning, err 0x%04x"
#~ msgstr "Não é possível iniciar o anúncio. status: 0x%02x"
#, fuzzy #, fuzzy
#~ msgid "Failed to stop advertising" #~ msgid "Failed to stop advertising"
#~ msgstr "Não pode parar propaganda. status: 0x%02x" #~ msgstr "Não pode parar propaganda. status: 0x%02x"
#, fuzzy, c-format #, fuzzy
#~ msgid "Failed to stop advertising, err 0x%04x" #~ msgid "Failed to stop advertising, err 0x%04x"
#~ msgstr "Não pode parar propaganda. status: 0x%02x" #~ msgstr "Não pode parar propaganda. status: 0x%02x"
#, fuzzy
#~ msgid "Failed to write attribute value, err 0x%04x"
#~ msgstr "Não é possível gravar o valor do atributo. status: 0x%02x"
#, fuzzy
#~ msgid "Failed to write gatts value, err 0x%04x"
#~ msgstr "Não é possível gravar o valor do atributo. status: 0x%02x"
#~ msgid "GPIO16 does not support pull up." #~ msgid "GPIO16 does not support pull up."
#~ msgstr "GPIO16 não suporta pull up." #~ msgstr "GPIO16 não suporta pull up."

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: circuitpython-cn\n" "Project-Id-Version: circuitpython-cn\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-10-21 19:50-0700\n" "POT-Creation-Date: 2019-11-27 14:54-0500\n"
"PO-Revision-Date: 2019-04-13 10:10-0700\n" "PO-Revision-Date: 2019-04-13 10:10-0700\n"
"Last-Translator: hexthat\n" "Last-Translator: hexthat\n"
"Language-Team: Chinese Hanyu Pinyin\n" "Language-Team: Chinese Hanyu Pinyin\n"
@ -482,11 +482,6 @@ msgstr "Fǔbài de .mpy wénjiàn"
msgid "Corrupt raw code" msgid "Corrupt raw code"
msgstr "Sǔnhuài de yuánshǐ dàimǎ" msgstr "Sǔnhuài de yuánshǐ dàimǎ"
#: ports/nrf/common-hal/_bleio/UUID.c
#, c-format
msgid "Could not decode ble_uuid, err 0x%04x"
msgstr "Wúfǎ jiěmǎ kě dú_uuid, err 0x%04x"
#: ports/atmel-samd/common-hal/busio/UART.c #: ports/atmel-samd/common-hal/busio/UART.c
msgid "Could not initialize UART" msgid "Could not initialize UART"
msgstr "Wúfǎ chūshǐhuà UART" msgstr "Wúfǎ chūshǐhuà UART"
@ -580,11 +575,6 @@ msgstr "Qídài yīgè dìzhǐ"
msgid "Expected tuple of length %d, got %d" msgid "Expected tuple of length %d, got %d"
msgstr "Qīwàng de chángdù wèi %d de yuán zǔ, dédào %d" msgstr "Qīwàng de chángdù wèi %d de yuán zǔ, dédào %d"
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Failed initiate attribute read, err 0x%04x"
msgstr ""
#: shared-bindings/ps2io/Ps2.c #: shared-bindings/ps2io/Ps2.c
msgid "Failed sending command." msgid "Failed sending command."
msgstr "Fāsòng mìnglìng shībài." msgstr "Fāsòng mìnglìng shībài."
@ -594,15 +584,6 @@ msgstr "Fāsòng mìnglìng shībài."
msgid "Failed to acquire mutex, err 0x%04x" msgid "Failed to acquire mutex, err 0x%04x"
msgstr "Wúfǎ huòdé mutex, err 0x%04x" msgstr "Wúfǎ huòdé mutex, err 0x%04x"
#: ports/nrf/common-hal/_bleio/Service.c
msgid "Failed to add characteristic, NRF_ERROR_%q"
msgstr ""
#: ports/nrf/common-hal/_bleio/Characteristic.c
#, c-format
msgid "Failed to add descriptor, err 0x%04x"
msgstr "Wúfǎ tiānjiā miáoshù fú, err 0x%04x"
#: ports/atmel-samd/common-hal/busio/UART.c ports/nrf/common-hal/busio/UART.c #: ports/atmel-samd/common-hal/busio/UART.c ports/nrf/common-hal/busio/UART.c
msgid "Failed to allocate RX buffer" msgid "Failed to allocate RX buffer"
msgstr "Fēnpèi RX huǎnchōng shībài" msgstr "Fēnpèi RX huǎnchōng shībài"
@ -613,10 +594,6 @@ msgstr "Fēnpèi RX huǎnchōng shībài"
msgid "Failed to allocate RX buffer of %d bytes" msgid "Failed to allocate RX buffer of %d bytes"
msgstr "Fēnpèi RX huǎnchōng qū%d zì jié shībài" msgstr "Fēnpèi RX huǎnchōng qū%d zì jié shībài"
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Failed to change softdevice state, NRF_ERROR_%q"
msgstr ""
#: ports/nrf/common-hal/_bleio/Adapter.c #: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Failed to connect: internal error" msgid "Failed to connect: internal error"
msgstr "" msgstr ""
@ -625,93 +602,11 @@ msgstr ""
msgid "Failed to connect: timeout" msgid "Failed to connect: timeout"
msgstr "Liánjiē shībài: Chāoshí" msgstr "Liánjiē shībài: Chāoshí"
#: ports/nrf/common-hal/_bleio/Service.c
msgid "Failed to create service, NRF_ERROR_%q"
msgstr ""
#: ports/nrf/common-hal/_bleio/Connection.c
msgid "Failed to discover services"
msgstr "Fāxiàn fúwù shībài"
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Failed to get local address"
msgstr "Huòqǔ běndì dìzhǐ shībài"
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Failed to get softdevice state"
msgstr "Wúfǎ huòdé ruǎnjiàn shèbèi zhuàngtài"
#: ports/nrf/common-hal/_bleio/Characteristic.c
#, c-format
msgid "Failed to notify or indicate attribute value, err 0x%04x"
msgstr "Wúfǎ tōngzhī huò xiǎnshì shǔxìng zhí, err 0x%04x"
#: ports/nrf/common-hal/_bleio/Connection.c
msgid "Failed to pair"
msgstr "Pèiduì shībài"
#: ports/nrf/common-hal/_bleio/Characteristic.c
#, c-format
msgid "Failed to read CCCD value, err 0x%04x"
msgstr "Dòu qǔ CCCD zhí, err 0x%04x shībài"
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Failed to read attribute value, err 0x%04x"
msgstr "Dòu qǔ shǔxìng zhí shībài, err 0x%04x"
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Failed to read gatts value, err 0x%04x"
msgstr "Wúfǎ dòu qǔ gatts zhí, err 0x%04x"
#: ports/nrf/common-hal/_bleio/UUID.c
#, c-format
msgid "Failed to register Vendor-Specific UUID, err 0x%04x"
msgstr "Wúfǎ zhùcè màizhǔ tèdìng de UUID, err 0x%04x"
#: ports/nrf/sd_mutex.c #: ports/nrf/sd_mutex.c
#, c-format #, c-format
msgid "Failed to release mutex, err 0x%04x" msgid "Failed to release mutex, err 0x%04x"
msgstr "Wúfǎ shìfàng mutex, err 0x%04x" msgstr "Wúfǎ shìfàng mutex, err 0x%04x"
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Failed to start advertising, NRF_ERROR_%q"
msgstr ""
#: ports/nrf/common-hal/_bleio/Adapter.c
#, c-format
msgid "Failed to start connecting, error 0x%04x"
msgstr "Wúfǎ kāishǐ liánjiē, cuòwù 0x%04x"
#: ports/nrf/common-hal/_bleio/Connection.c
msgid "Failed to start pairing, NRF_ERROR_%q"
msgstr ""
#: ports/nrf/common-hal/_bleio/Adapter.c
#, c-format
msgid "Failed to start scanning, err 0x%04x"
msgstr "Qǐdòng sǎomiáo shībài, err 0x%04x"
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Failed to stop advertising, NRF_ERROR_%q"
msgstr ""
#: ports/nrf/common-hal/_bleio/Characteristic.c
#, c-format
msgid "Failed to write CCCD, err 0x%04x"
msgstr "Wúfǎ xiě rù CCCD, cuòwù 0x%04x"
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Failed to write attribute value, err 0x%04x"
msgstr "Xiě rù shǔxìng zhí shībài, err 0x%04x"
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Failed to write gatts value, err 0x%04x"
msgstr "Xiě rù gatts zhí,err 0x%04x shībài"
#: py/moduerrno.c #: py/moduerrno.c
msgid "File exists" msgid "File exists"
msgstr "Wénjiàn cúnzài" msgstr "Wénjiàn cúnzài"
@ -776,6 +671,14 @@ msgstr "Huǎnchōng qū dàxiǎo bù zhèngquè"
msgid "Input/output error" msgid "Input/output error"
msgstr "Shūrù/shūchū cuòwù" msgstr "Shūrù/shūchū cuòwù"
#: ports/nrf/common-hal/_bleio/__init__.c
msgid "Insufficient authentication"
msgstr "Rènzhèng bùzú"
#: ports/nrf/common-hal/_bleio/__init__.c
msgid "Insufficient encryption"
msgstr "Jiāmì bùzú"
#: ports/atmel-samd/common-hal/audiobusio/I2SOut.c #: ports/atmel-samd/common-hal/audiobusio/I2SOut.c
#: ports/atmel-samd/common-hal/audiobusio/PDMIn.c #: ports/atmel-samd/common-hal/audiobusio/PDMIn.c
msgid "Invalid %q pin" msgid "Invalid %q pin"
@ -1133,7 +1036,7 @@ msgstr "Zài ānquán móshì xià yùnxíng! Zìdòng chóngxīn jiāzài yǐ g
msgid "Running in safe mode! Not running saved code.\n" msgid "Running in safe mode! Not running saved code.\n"
msgstr "Zài ānquán móshì xià yùnxíng! Bù yùnxíng yǐ bǎocún de dàimǎ.\n" msgstr "Zài ānquán móshì xià yùnxíng! Bù yùnxíng yǐ bǎocún de dàimǎ.\n"
#: ports/atmel-samd/common-hal/busio/I2C.c #: ports/atmel-samd/common-hal/busio/I2C.c ports/nrf/common-hal/busio/I2C.c
msgid "SDA or SCL needs a pull up" msgid "SDA or SCL needs a pull up"
msgstr "SDA huò SCL xūyào lādòng" msgstr "SDA huò SCL xūyào lādòng"
@ -1327,11 +1230,32 @@ msgstr "Wúfǎ xiě rù nvm."
msgid "Unexpected nrfx uuid type" msgid "Unexpected nrfx uuid type"
msgstr "Yìwài de nrfx uuid lèixíng" msgstr "Yìwài de nrfx uuid lèixíng"
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Unknown gatt error: 0x%04x"
msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Unknown security error: 0x%04x"
msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Unknown soft device error: %04x"
msgstr ""
#: shared-bindings/_pixelbuf/PixelBuf.c #: shared-bindings/_pixelbuf/PixelBuf.c
#, c-format #, c-format
msgid "Unmatched number of items on RHS (expected %d, got %d)." msgid "Unmatched number of items on RHS (expected %d, got %d)."
msgstr "RHS (yùqí %d, huòdé %d) shàng wèi pǐpèi de xiàngmù." msgstr "RHS (yùqí %d, huòdé %d) shàng wèi pǐpèi de xiàngmù."
#: ports/nrf/common-hal/_bleio/__init__.c
msgid ""
"Unspecified issue. Can be that the pairing prompt on the other device was "
"declined or ignored."
msgstr ""
#: ports/atmel-samd/common-hal/busio/I2C.c #: ports/atmel-samd/common-hal/busio/I2C.c
msgid "Unsupported baudrate" msgid "Unsupported baudrate"
msgstr "Bù zhīchí de baudrate" msgstr "Bù zhīchí de baudrate"
@ -2539,13 +2463,9 @@ msgstr "yùzhí bìxū zài fànwéi 0-65536"
msgid "time.struct_time() takes a 9-sequence" msgid "time.struct_time() takes a 9-sequence"
msgstr "time.struct_time() xūyào 9 xùliè" msgstr "time.struct_time() xūyào 9 xùliè"
#: shared-bindings/time/__init__.c
msgid "time.struct_time() takes exactly 1 argument"
msgstr "time.struct_time() xūyào wánquán 1 cānshù"
#: shared-bindings/busio/UART.c #: shared-bindings/busio/UART.c
msgid "timeout >100 (units are now seconds, not msecs)" msgid "timeout must be 0.0-100.0 seconds"
msgstr "chāoshí >100 (dānwèi shì miǎo, ér bùshì háomiǎo)" msgstr "Chāo shí shíjiān bìxū wèi 0.0 Dào 100.0 Miǎo"
#: shared-bindings/_bleio/CharacteristicBuffer.c #: shared-bindings/_bleio/CharacteristicBuffer.c
msgid "timeout must be >= 0.0" msgid "timeout must be >= 0.0"
@ -2756,6 +2676,9 @@ msgstr "líng bù"
#~ msgid "Characteristic already in use by another Service." #~ msgid "Characteristic already in use by another Service."
#~ msgstr "Qítā fúwù bùmén yǐ shǐyòng de gōngnéng." #~ msgstr "Qítā fúwù bùmén yǐ shǐyòng de gōngnéng."
#~ msgid "Could not decode ble_uuid, err 0x%04x"
#~ msgstr "Wúfǎ jiěmǎ kě dú_uuid, err 0x%04x"
#~ msgid "Data too large for the advertisement packet" #~ msgid "Data too large for the advertisement packet"
#~ msgstr "Guǎnggào bāo de shùjù tài dà" #~ msgstr "Guǎnggào bāo de shùjù tài dà"
@ -2765,21 +2688,21 @@ msgstr "líng bù"
#~ msgid "Failed to acquire mutex" #~ msgid "Failed to acquire mutex"
#~ msgstr "Wúfǎ huòdé mutex" #~ msgstr "Wúfǎ huòdé mutex"
#, c-format
#~ msgid "Failed to add characteristic, err 0x%04x" #~ msgid "Failed to add characteristic, err 0x%04x"
#~ msgstr "Tiānjiā tèxìng shībài, err 0x%04x" #~ msgstr "Tiānjiā tèxìng shībài, err 0x%04x"
#~ msgid "Failed to add descriptor, err 0x%04x"
#~ msgstr "Wúfǎ tiānjiā miáoshù fú, err 0x%04x"
#~ msgid "Failed to add service" #~ msgid "Failed to add service"
#~ msgstr "Tiānjiā fúwù shībài" #~ msgstr "Tiānjiā fúwù shībài"
#, c-format
#~ msgid "Failed to add service, err 0x%04x" #~ msgid "Failed to add service, err 0x%04x"
#~ msgstr "Tiānjiā fúwù shībài, err 0x%04x" #~ msgstr "Tiānjiā fúwù shībài, err 0x%04x"
#~ msgid "Failed to change softdevice state" #~ msgid "Failed to change softdevice state"
#~ msgstr "Gēnggǎi ruǎn shèbèi zhuàngtài shībài" #~ msgstr "Gēnggǎi ruǎn shèbèi zhuàngtài shībài"
#, c-format
#~ msgid "Failed to configure advertising, err 0x%04x" #~ msgid "Failed to configure advertising, err 0x%04x"
#~ msgstr "Wúfǎ pèizhì guǎnggào, cuòwù 0x%04x" #~ msgstr "Wúfǎ pèizhì guǎnggào, cuòwù 0x%04x"
@ -2789,41 +2712,78 @@ msgstr "líng bù"
#~ msgid "Failed to continue scanning" #~ msgid "Failed to continue scanning"
#~ msgstr "Jìxù sǎomiáo shībài" #~ msgstr "Jìxù sǎomiáo shībài"
#, c-format
#~ msgid "Failed to continue scanning, err 0x%04x" #~ msgid "Failed to continue scanning, err 0x%04x"
#~ msgstr "Jìxù sǎomiáo shībài, err 0x%04x" #~ msgstr "Jìxù sǎomiáo shībài, err 0x%04x"
#~ msgid "Failed to create mutex" #~ msgid "Failed to create mutex"
#~ msgstr "Wúfǎ chuàngjiàn hù chì suǒ" #~ msgstr "Wúfǎ chuàngjiàn hù chì suǒ"
#~ msgid "Failed to discover services"
#~ msgstr "Fāxiàn fúwù shībài"
#~ msgid "Failed to get local address"
#~ msgstr "Huòqǔ běndì dìzhǐ shībài"
#~ msgid "Failed to get softdevice state"
#~ msgstr "Wúfǎ huòdé ruǎnjiàn shèbèi zhuàngtài"
#~ msgid "Failed to notify or indicate attribute value, err 0x%04x"
#~ msgstr "Wúfǎ tōngzhī huò xiǎnshì shǔxìng zhí, err 0x%04x"
#~ msgid "Failed to pair"
#~ msgstr "Pèiduì shībài"
#~ msgid "Failed to read CCCD value, err 0x%04x"
#~ msgstr "Dòu qǔ CCCD zhí, err 0x%04x shībài"
#~ msgid "Failed to read attribute value, err 0x%04x"
#~ msgstr "Dòu qǔ shǔxìng zhí shībài, err 0x%04x"
#~ msgid "Failed to read gatts value, err 0x%04x"
#~ msgstr "Wúfǎ dòu qǔ gatts zhí, err 0x%04x"
#~ msgid "Failed to register Vendor-Specific UUID, err 0x%04x"
#~ msgstr "Wúfǎ zhùcè màizhǔ tèdìng de UUID, err 0x%04x"
#~ msgid "Failed to release mutex" #~ msgid "Failed to release mutex"
#~ msgstr "Wúfǎ shìfàng mutex" #~ msgstr "Wúfǎ shìfàng mutex"
#, c-format
#~ msgid "Failed to set device name, err 0x%04x" #~ msgid "Failed to set device name, err 0x%04x"
#~ msgstr "Wúfǎ shèzhì shèbèi míngchēng, cuòwù 0x%04x" #~ msgstr "Wúfǎ shèzhì shèbèi míngchēng, cuòwù 0x%04x"
#~ msgid "Failed to start advertising" #~ msgid "Failed to start advertising"
#~ msgstr "Qǐdòng guǎnggào shībài" #~ msgstr "Qǐdòng guǎnggào shībài"
#, c-format
#~ msgid "Failed to start advertising, err 0x%04x" #~ msgid "Failed to start advertising, err 0x%04x"
#~ msgstr "Qǐdòng guǎnggào shībài, err 0x%04x" #~ msgstr "Qǐdòng guǎnggào shībài, err 0x%04x"
#, c-format #~ msgid "Failed to start connecting, error 0x%04x"
#~ msgstr "Wúfǎ kāishǐ liánjiē, cuòwù 0x%04x"
#~ msgid "Failed to start pairing, error 0x%04x" #~ msgid "Failed to start pairing, error 0x%04x"
#~ msgstr "Wúfǎ kāishǐ pèiduì, cuòwù 0x%04x" #~ msgstr "Wúfǎ kāishǐ pèiduì, cuòwù 0x%04x"
#~ msgid "Failed to start scanning" #~ msgid "Failed to start scanning"
#~ msgstr "Qǐdòng sǎomiáo shībài" #~ msgstr "Qǐdòng sǎomiáo shībài"
#~ msgid "Failed to start scanning, err 0x%04x"
#~ msgstr "Qǐdòng sǎomiáo shībài, err 0x%04x"
#~ msgid "Failed to stop advertising" #~ msgid "Failed to stop advertising"
#~ msgstr "Wúfǎ tíngzhǐ guǎnggào" #~ msgstr "Wúfǎ tíngzhǐ guǎnggào"
#, c-format
#~ msgid "Failed to stop advertising, err 0x%04x" #~ msgid "Failed to stop advertising, err 0x%04x"
#~ msgstr "Wúfǎ tíngzhǐ guǎnggào, err 0x%04x" #~ msgstr "Wúfǎ tíngzhǐ guǎnggào, err 0x%04x"
#~ msgid "Failed to write CCCD, err 0x%04x"
#~ msgstr "Wúfǎ xiě rù CCCD, cuòwù 0x%04x"
#~ msgid "Failed to write attribute value, err 0x%04x"
#~ msgstr "Xiě rù shǔxìng zhí shībài, err 0x%04x"
#~ msgid "Failed to write gatts value, err 0x%04x"
#~ msgstr "Xiě rù gatts zhí,err 0x%04x shībài"
#~ msgid "Invalid bit clock pin" #~ msgid "Invalid bit clock pin"
#~ msgstr "Wúxiào de wèi shízhōng yǐn jiǎo" #~ msgstr "Wúxiào de wèi shízhōng yǐn jiǎo"
@ -2854,7 +2814,6 @@ msgstr "líng bù"
#~ msgstr "" #~ msgstr ""
#~ "Jǐn zhīchí dān sè, suǒyǐn 8bpp hé 16bpp huò gèng dà de BMP: %d bpp tígōng" #~ "Jǐn zhīchí dān sè, suǒyǐn 8bpp hé 16bpp huò gèng dà de BMP: %d bpp tígōng"
#, c-format
#~ msgid "Soft device assert, id: 0x%08lX, pc: 0x%08lX" #~ msgid "Soft device assert, id: 0x%08lX, pc: 0x%08lX"
#~ msgstr "Ruǎn shèbèi wéihù, id: 0X%08lX, pc: 0X%08lX" #~ msgstr "Ruǎn shèbèi wéihù, id: 0X%08lX, pc: 0X%08lX"
@ -2891,6 +2850,12 @@ msgstr "líng bù"
#~ msgid "tile index out of bounds" #~ msgid "tile index out of bounds"
#~ msgstr "kuài suǒyǐn chāochū fànwéi" #~ msgstr "kuài suǒyǐn chāochū fànwéi"
#~ msgid "time.struct_time() takes exactly 1 argument"
#~ msgstr "time.struct_time() xūyào wánquán 1 cānshù"
#~ msgid "timeout >100 (units are now seconds, not msecs)"
#~ msgstr "chāoshí >100 (dānwèi shì miǎo, ér bùshì háomiǎo)"
#~ msgid "too many arguments" #~ msgid "too many arguments"
#~ msgstr "tài duō cānshù" #~ msgstr "tài duō cānshù"

View File

@ -122,7 +122,16 @@ else
ifdef CFLAGS_INLINE_LIMIT ifdef CFLAGS_INLINE_LIMIT
CFLAGS += -finline-limit=$(CFLAGS_INLINE_LIMIT) CFLAGS += -finline-limit=$(CFLAGS_INLINE_LIMIT)
endif endif
CFLAGS += -flto -flto-partition=none CFLAGS += -flto -flto-partition=none
ifeq ($(CIRCUITPY_SMALL_BUILD),1)
CFLAGS += --param inline-unit-growth=15 --param max-inline-insns-auto=20
endif
ifdef CFLAGS_BOARD
CFLAGS += $(CFLAGS_BOARD)
endif
endif endif
CFLAGS += $(INC) -Wall -Werror -std=gnu11 -nostdlib $(BASE_CFLAGS) $(CFLAGS_MOD) $(COPT) CFLAGS += $(INC) -Wall -Werror -std=gnu11 -nostdlib $(BASE_CFLAGS) $(CFLAGS_MOD) $(COPT)

View File

@ -28,6 +28,7 @@
#include "audio_dma.h" #include "audio_dma.h"
#include "tick.h" #include "tick.h"
#include "supervisor/filesystem.h" #include "supervisor/filesystem.h"
#include "supervisor/shared/tick.h"
#include "supervisor/usb.h" #include "supervisor/usb.h"
#include "py/runtime.h" #include "py/runtime.h"
@ -44,6 +45,23 @@ bool stack_ok_so_far = true;
static bool running_background_tasks = false; static bool running_background_tasks = false;
#ifdef MONITOR_BACKGROUND_TASKS
// PB03 is physical pin "SCL" on the Metro M4 express
// so you can't use this code AND an i2c peripheral
// at the same time unless you change this
STATIC void start_background_task(void) {
REG_PORT_DIRSET1 = (1<<3);
REG_PORT_OUTSET1 = (1<<3);
}
STATIC void finish_background_task(void) {
REG_PORT_OUTCLR1 = (1<<3);
}
#else
STATIC void start_background_task(void) {}
STATIC void finish_background_task(void) {}
#endif
void background_tasks_reset(void) { void background_tasks_reset(void) {
running_background_tasks = false; running_background_tasks = false;
} }
@ -53,6 +71,9 @@ void run_background_tasks(void) {
if (running_background_tasks) { if (running_background_tasks) {
return; return;
} }
start_background_task();
assert_heap_ok(); assert_heap_ok();
running_background_tasks = true; running_background_tasks = true;
@ -71,9 +92,10 @@ void run_background_tasks(void) {
running_background_tasks = false; running_background_tasks = false;
assert_heap_ok(); assert_heap_ok();
last_finished_tick = ticks_ms; last_finished_tick = supervisor_ticks_ms64();
finish_background_task();
} }
bool background_tasks_ok(void) { bool background_tasks_ok(void) {
return ticks_ms - last_finished_tick < 1000; return supervisor_ticks_ms64() - last_finished_tick < 1000;
} }

View File

@ -11,6 +11,5 @@ QSPI_FLASH_FILESYSTEM = 1
EXTERNAL_FLASH_DEVICE_COUNT = 1 EXTERNAL_FLASH_DEVICE_COUNT = 1
EXTERNAL_FLASH_DEVICES = "W25Q128JV_PM" EXTERNAL_FLASH_DEVICES = "W25Q128JV_PM"
CIRCUITPY_PS2IO = 1
# No I2S on SAMD51G. # No I2S on SAMD51G.
CIRCUITPY_AUDIOBUSIO = 0 CIRCUITPY_AUDIOBUSIO = 0

View File

@ -11,7 +11,3 @@ QSPI_FLASH_FILESYSTEM = 1
EXTERNAL_FLASH_DEVICE_COUNT = 3 EXTERNAL_FLASH_DEVICE_COUNT = 3
EXTERNAL_FLASH_DEVICES = "GD25Q16C, W25Q16JV_IQ, W25Q16JV_IM" EXTERNAL_FLASH_DEVICES = "GD25Q16C, W25Q16JV_IQ, W25Q16JV_IM"
LONGINT_IMPL = MPZ LONGINT_IMPL = MPZ
CIRCUITPY_NETWORK = 1
MICROPY_PY_WIZNET5K = 5500
CIRCUITPY_PS2IO = 1

View File

@ -11,7 +11,3 @@ QSPI_FLASH_FILESYSTEM = 1
EXTERNAL_FLASH_DEVICE_COUNT = 1 EXTERNAL_FLASH_DEVICE_COUNT = 1
EXTERNAL_FLASH_DEVICES = GD25Q16C EXTERNAL_FLASH_DEVICES = GD25Q16C
LONGINT_IMPL = MPZ LONGINT_IMPL = MPZ
CIRCUITPY_NETWORK = 1
MICROPY_PY_WIZNET5K = 5500
CIRCUITPY_PS2IO = 1

View File

@ -11,5 +11,3 @@ QSPI_FLASH_FILESYSTEM = 1
EXTERNAL_FLASH_DEVICE_COUNT = 2 EXTERNAL_FLASH_DEVICE_COUNT = 2
EXTERNAL_FLASH_DEVICES = "W25Q64JV_IQ, GD25Q64C" EXTERNAL_FLASH_DEVICES = "W25Q64JV_IQ, GD25Q64C"
LONGINT_IMPL = MPZ LONGINT_IMPL = MPZ
CIRCUITPY_PS2IO = 1

View File

@ -11,7 +11,3 @@ QSPI_FLASH_FILESYSTEM = 1
EXTERNAL_FLASH_DEVICE_COUNT = 1 EXTERNAL_FLASH_DEVICE_COUNT = 1
EXTERNAL_FLASH_DEVICES = GD25Q64C EXTERNAL_FLASH_DEVICES = GD25Q64C
LONGINT_IMPL = MPZ LONGINT_IMPL = MPZ
CIRCUITPY_NETWORK = 1
MICROPY_PY_WIZNET5K = 5500
CIRCUITPY_PS2IO = 1

View File

@ -12,7 +12,6 @@ EXTERNAL_FLASH_DEVICE_COUNT = 1
EXTERNAL_FLASH_DEVICES = GD25Q16C EXTERNAL_FLASH_DEVICES = GD25Q16C
LONGINT_IMPL = MPZ LONGINT_IMPL = MPZ
CIRCUITPY_PS2IO = 1
# No I2S on SAMD51G # No I2S on SAMD51G
CIRCUITPY_AUDIOBUSIO = 0 CIRCUITPY_AUDIOBUSIO = 0

View File

@ -14,3 +14,5 @@ LONGINT_IMPL = MPZ
# Not needed. # Not needed.
CIRCUITPY_AUDIOBUSIO = 0 CIRCUITPY_AUDIOBUSIO = 0
CIRCUITPY_DISPLAYIO = 0 CIRCUITPY_DISPLAYIO = 0
CIRCUITPY_NETWORK = 0
CIRCUITPY_PS2IO = 0

View File

@ -11,7 +11,3 @@ QSPI_FLASH_FILESYSTEM = 1
EXTERNAL_FLASH_DEVICE_COUNT = 3 EXTERNAL_FLASH_DEVICE_COUNT = 3
EXTERNAL_FLASH_DEVICES = "S25FL116K, S25FL216K, GD25Q16C" EXTERNAL_FLASH_DEVICES = "S25FL116K, S25FL216K, GD25Q16C"
LONGINT_IMPL = MPZ LONGINT_IMPL = MPZ
CIRCUITPY_NETWORK = 1
MICROPY_PY_WIZNET5K = 5500
CIRCUITPY_PS2IO = 1

View File

@ -11,7 +11,3 @@ QSPI_FLASH_FILESYSTEM = 1
EXTERNAL_FLASH_DEVICE_COUNT = 3 EXTERNAL_FLASH_DEVICE_COUNT = 3
EXTERNAL_FLASH_DEVICES = "S25FL116K, S25FL216K, GD25Q16C" EXTERNAL_FLASH_DEVICES = "S25FL116K, S25FL216K, GD25Q16C"
LONGINT_IMPL = MPZ LONGINT_IMPL = MPZ
CIRCUITPY_NETWORK = 1
MICROPY_PY_WIZNET5K = 5500
CIRCUITPY_PS2IO = 1

View File

@ -12,7 +12,6 @@ EXTERNAL_FLASH_DEVICE_COUNT = 1
EXTERNAL_FLASH_DEVICES = "W25Q16JV_IM" EXTERNAL_FLASH_DEVICES = "W25Q16JV_IM"
LONGINT_IMPL = MPZ LONGINT_IMPL = MPZ
CIRCUITPY_PS2IO = 1
# No I2S on SAMD51G # No I2S on SAMD51G
CIRCUITPY_AUDIOBUSIO = 0 CIRCUITPY_AUDIOBUSIO = 0

View File

@ -11,6 +11,3 @@ QSPI_FLASH_FILESYSTEM = 1
EXTERNAL_FLASH_DEVICE_COUNT = 1 EXTERNAL_FLASH_DEVICE_COUNT = 1
EXTERNAL_FLASH_DEVICES = GD25Q64C EXTERNAL_FLASH_DEVICES = GD25Q64C
LONGINT_IMPL = MPZ LONGINT_IMPL = MPZ
CIRCUITPY_AUDIOIO = 1
CIRCUITPY_DISPLAYIO = 1

View File

@ -23,3 +23,5 @@ CIRCUITPY_USB_MIDI = 0
SUPEROPT_GC = 0 SUPEROPT_GC = 0
FROZEN_MPY_DIRS += $(TOP)/frozen/pew-pewpew-standalone-10.x FROZEN_MPY_DIRS += $(TOP)/frozen/pew-pewpew-standalone-10.x
CFLAGS_BOARD = --param max-inline-insns-auto=15

View File

@ -17,7 +17,9 @@ CIRCUITPY_BITBANGIO = 0
CIRCUITPY_FREQUENCYIO = 0 CIRCUITPY_FREQUENCYIO = 0
CIRCUITPY_I2CSLAVE = 0 CIRCUITPY_I2CSLAVE = 0
CIRCUITPY_NEOPIXEL_WRITE = 0 CIRCUITPY_NEOPIXEL_WRITE = 0
CIRCUITPY_NETWORK = 0
CIRCUITPY_PIXELBUF = 0 CIRCUITPY_PIXELBUF = 0
CIRCUITPY_PS2IO = 0
CIRCUITPY_RTC = 0 CIRCUITPY_RTC = 0
CIRCUITPY_TOUCHIO = 0 CIRCUITPY_TOUCHIO = 0
CIRCUITPY_USB_HID = 0 CIRCUITPY_USB_HID = 0

View File

@ -26,6 +26,8 @@ CIRCUITPY_SMALL_BUILD = 1
SUPEROPT_GC = 0 SUPEROPT_GC = 0
# Include these Python libraries in firmware. # Include these Python libraries in firmware.
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_DotStar # FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_DotStar
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_HID FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_HID
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_IRRemote FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_IRRemote
CFLAGS_BOARD = --param max-inline-insns-auto=12

View File

@ -12,8 +12,6 @@ EXTERNAL_FLASH_DEVICE_COUNT = 1
EXTERNAL_FLASH_DEVICES = GD25Q16C EXTERNAL_FLASH_DEVICES = GD25Q16C
LONGINT_IMPL = MPZ LONGINT_IMPL = MPZ
CIRCUITPY_AUDIOIO = 1
CIRCUITPY_DISPLAYIO = 1
CIRCUITPY_GAMEPAD = 1 CIRCUITPY_GAMEPAD = 1
CIRCUITPY_GAMEPADSHIFT = 1 CIRCUITPY_GAMEPADSHIFT = 1
CIRCUITPY_STAGE = 1 CIRCUITPY_STAGE = 1

View File

@ -12,8 +12,6 @@ EXTERNAL_FLASH_DEVICE_COUNT = 1
EXTERNAL_FLASH_DEVICES = GD25Q16C EXTERNAL_FLASH_DEVICES = GD25Q16C
LONGINT_IMPL = MPZ LONGINT_IMPL = MPZ
CIRCUITPY_AUDIOIO = 1
CIRCUITPY_DISPLAYIO = 1
CIRCUITPY_GAMEPAD = 1 CIRCUITPY_GAMEPAD = 1
CIRCUITPY_GAMEPADSHIFT = 1 CIRCUITPY_GAMEPADSHIFT = 1
CIRCUITPY_STAGE = 1 CIRCUITPY_STAGE = 1

View File

@ -12,8 +12,6 @@ EXTERNAL_FLASH_DEVICE_COUNT = 1
EXTERNAL_FLASH_DEVICES = GD25Q64C EXTERNAL_FLASH_DEVICES = GD25Q64C
LONGINT_IMPL = MPZ LONGINT_IMPL = MPZ
CIRCUITPY_AUDIOIO = 1
CIRCUITPY_DISPLAYIO = 1
CIRCUITPY_GAMEPAD = 1 CIRCUITPY_GAMEPAD = 1
CIRCUITPY_GAMEPADSHIFT = 1 CIRCUITPY_GAMEPADSHIFT = 1
CIRCUITPY_STAGE = 1 CIRCUITPY_STAGE = 1

View File

@ -12,8 +12,6 @@ EXTERNAL_FLASH_DEVICE_COUNT = 1
EXTERNAL_FLASH_DEVICES = GD25Q64C EXTERNAL_FLASH_DEVICES = GD25Q64C
LONGINT_IMPL = MPZ LONGINT_IMPL = MPZ
CIRCUITPY_AUDIOIO = 1
CIRCUITPY_DISPLAYIO = 1
CIRCUITPY_GAMEPAD = 1 CIRCUITPY_GAMEPAD = 1
CIRCUITPY_GAMEPADSHIFT = 1 CIRCUITPY_GAMEPADSHIFT = 1
CIRCUITPY_STAGE = 1 CIRCUITPY_STAGE = 1

View File

@ -12,3 +12,8 @@ LONGINT_IMPL = NONE
CIRCUITPY_SMALL_BUILD = 1 CIRCUITPY_SMALL_BUILD = 1
SUPEROPT_GC = 0 SUPEROPT_GC = 0
CFLAGS_BOARD = --param max-inline-insns-auto=15
ifeq ($(TRANSLATION), zh_Latn_pinyin)
CFLAGS_INLINE_LIMIT = 35
endif

View File

@ -14,7 +14,6 @@ EXTERNAL_FLASH_DEVICE_COUNT = 1
EXTERNAL_FLASH_DEVICES = "W25Q64JV_IQ" EXTERNAL_FLASH_DEVICES = "W25Q64JV_IQ"
LONGINT_IMPL = MPZ LONGINT_IMPL = MPZ
CIRCUITPY_PS2IO = 1
# No I2S on SAMD51G # No I2S on SAMD51G
CIRCUITPY_AUDIOBUSIO = 0 CIRCUITPY_AUDIOBUSIO = 0
# Make room for more stuff # Make room for more stuff

View File

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

View File

@ -0,0 +1,67 @@
#define MICROPY_HW_BOARD_NAME "@sarfata shIRtty"
#define MICROPY_HW_MCU_NAME "samd21e18"
#define MICROPY_HW_LED_STATUS (&pin_PA16)
#define MICROPY_PORT_A (PORT_PA00 | PORT_PA01)
#define MICROPY_PORT_B (0)
#define MICROPY_PORT_C (0)
#define CIRCUITPY_INTERNAL_NVM_SIZE 256
#define BOARD_FLASH_SIZE (0x00040000 - 0x2000 - 0x010000 - CIRCUITPY_INTERNAL_NVM_SIZE)
// #define IGNORE_PIN_PA00 1
// #define IGNORE_PIN_PA01 1
// #define IGNORE_PIN_PA02 1
#define IGNORE_PIN_PA03 1
#define IGNORE_PIN_PA04 1
#define IGNORE_PIN_PA05 1
#define IGNORE_PIN_PA11 1
#define IGNORE_PIN_PA12 1
#define IGNORE_PIN_PA13 1
#define IGNORE_PIN_PA17 1
#define IGNORE_PIN_PA18 1
#define IGNORE_PIN_PA19 1
#define IGNORE_PIN_PA20 1
#define IGNORE_PIN_PA21 1
#define IGNORE_PIN_PA22 1
// USB is always used internally so skip the pin objects for it.
#define IGNORE_PIN_PA24 1
#define IGNORE_PIN_PA25 1
#define IGNORE_PIN_PA27 1
#define IGNORE_PIN_PA28 1
#define IGNORE_PIN_PA30 1
#define IGNORE_PIN_PA31 1
#define IGNORE_PIN_PB01 1
#define IGNORE_PIN_PB02 1
#define IGNORE_PIN_PB03 1
#define IGNORE_PIN_PB04 1
#define IGNORE_PIN_PB05 1
#define IGNORE_PIN_PB06 1
#define IGNORE_PIN_PB07 1
#define IGNORE_PIN_PB08 1
#define IGNORE_PIN_PB09 1
#define IGNORE_PIN_PB10 1
#define IGNORE_PIN_PB11 1
#define IGNORE_PIN_PB12 1
#define IGNORE_PIN_PB13 1
#define IGNORE_PIN_PB14 1
#define IGNORE_PIN_PB15 1
#define IGNORE_PIN_PB16 1
#define IGNORE_PIN_PB17 1
#define IGNORE_PIN_PB22 1
#define IGNORE_PIN_PB23 1
#define IGNORE_PIN_PB30 1
#define IGNORE_PIN_PB31 1
#define IGNORE_PIN_PB00 1
#define DEFAULT_I2C_BUS_SCL (&pin_PA09)
#define DEFAULT_I2C_BUS_SDA (&pin_PA08)
#define DEFAULT_SPI_BUS_SCK (&pin_PA07)
#define DEFAULT_SPI_BUS_MOSI (&pin_PA06)
#define DEFAULT_SPI_BUS_MISO (&pin_PA09)
#define DEFAULT_UART_BUS_RX (&pin_PA07)
#define DEFAULT_UART_BUS_TX (&pin_PA06)

View File

@ -0,0 +1,16 @@
LD_FILE = boards/samd21x18-bootloader.ld
USB_VID = 0x239A
USB_PID = 0x806C
USB_PRODUCT = "shIRtty"
USB_MANUFACTURER = "@sarfata"
CHIP_VARIANT = SAMD21E18A
CHIP_FAMILY = samd21
INTERNAL_FLASH_FILESYSTEM = 1
LONGINT_IMPL = NONE
CIRCUITPY_SMALL_BUILD = 1
CIRCUITPY_I2CSLAVE = 1
CIRCUITPY_TOUCHIO = 0
SUPEROPT_GC = 0

View File

@ -0,0 +1,36 @@
#include "shared-bindings/board/__init__.h"
STATIC const mp_rom_map_elem_t board_global_dict_table[] = {
{ MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_PA08) },
{ MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_PA08) },
{ MP_ROM_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_PA10) },
{ MP_ROM_QSTR(MP_QSTR_IR_RX), MP_ROM_PTR(&pin_PA10) },
{ MP_ROM_QSTR(MP_QSTR_D2), MP_ROM_PTR(&pin_PA09) },
{ MP_ROM_QSTR(MP_QSTR_A2), MP_ROM_PTR(&pin_PA09) },
{ MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_PA09) },
{ MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_PA09) },
{ MP_ROM_QSTR(MP_QSTR_D3), MP_ROM_PTR(&pin_PA07) },
{ MP_ROM_QSTR(MP_QSTR_A3), MP_ROM_PTR(&pin_PA07) },
{ MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_PA07) },
{ MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_PA07) },
{ MP_ROM_QSTR(MP_QSTR_D4), MP_ROM_PTR(&pin_PA06) },
{ MP_ROM_QSTR(MP_QSTR_A4), MP_ROM_PTR(&pin_PA06) },
{ MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_PA06) },
{ MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_PA06) },
{ MP_ROM_QSTR(MP_QSTR_D5), MP_ROM_PTR(&pin_PA14) },
{ MP_ROM_QSTR(MP_QSTR_D6), MP_ROM_PTR(&pin_PA15) },
{ MP_ROM_QSTR(MP_QSTR_D7), MP_ROM_PTR(&pin_PA16) },
{ MP_ROM_QSTR(MP_QSTR_D8), MP_ROM_PTR(&pin_PA23) },
{ MP_ROM_QSTR(MP_QSTR_IR_TX), MP_ROM_PTR(&pin_PA23) },
{ MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) },
{ MP_ROM_QSTR(MP_QSTR_UART), MP_ROM_PTR(&board_uart_obj) },
{ MP_ROM_QSTR(MP_QSTR_SPI), MP_ROM_PTR(&board_spi_obj) },
};
MP_DEFINE_CONST_DICT(board_module_globals, board_global_dict_table);

View File

@ -12,7 +12,6 @@ EXTERNAL_FLASH_DEVICE_COUNT = 2
EXTERNAL_FLASH_DEVICES = "W25Q64JV_IQ, GD25Q64C" EXTERNAL_FLASH_DEVICES = "W25Q64JV_IQ, GD25Q64C"
LONGINT_IMPL = MPZ LONGINT_IMPL = MPZ
CIRCUITPY_PS2IO = 1
# No I2S on SAMD51G # No I2S on SAMD51G
CIRCUITPY_AUDIOBUSIO = 0 CIRCUITPY_AUDIOBUSIO = 0

View File

@ -12,3 +12,9 @@ LONGINT_IMPL = NONE
CIRCUITPY_SMALL_BUILD = 1 CIRCUITPY_SMALL_BUILD = 1
SUPEROPT_GC = 0 SUPEROPT_GC = 0
CFLAGS_BOARD = --param max-inline-insns-auto=15
ifeq ($(TRANSLATION), zh_Latn_pinyin)
CFLAGS_INLINE_LIMIT = 35
endif

View File

@ -6,6 +6,7 @@ USB_VID = 0x239A
USB_PID = 0x8062 USB_PID = 0x8062
USB_PRODUCT = "Sol" USB_PRODUCT = "Sol"
USB_MANUFACTURER = "Winterbloom" USB_MANUFACTURER = "Winterbloom"
USB_INTERFACE_NAME = "Sol"
CHIP_VARIANT = SAMD51J20A CHIP_VARIANT = SAMD51J20A
CHIP_FAMILY = samd51 CHIP_FAMILY = samd51

View File

@ -34,8 +34,7 @@
#include "py/runtime.h" #include "py/runtime.h"
#include "py/stream.h" #include "py/stream.h"
#include "supervisor/shared/translate.h" #include "supervisor/shared/translate.h"
#include "supervisor/shared/tick.h"
#include "tick.h"
#include "hpl_sercom_config.h" #include "hpl_sercom_config.h"
#include "peripheral_clk_config.h" #include "peripheral_clk_config.h"
@ -272,10 +271,10 @@ size_t common_hal_busio_uart_read(busio_uart_obj_t *self, uint8_t *data, size_t
usart_async_get_io_descriptor(usart_desc_p, &io); usart_async_get_io_descriptor(usart_desc_p, &io);
size_t total_read = 0; size_t total_read = 0;
uint64_t start_ticks = ticks_ms; uint64_t start_ticks = supervisor_ticks_ms64();
// Busy-wait until timeout or until we've read enough chars. // Busy-wait until timeout or until we've read enough chars.
while (ticks_ms - start_ticks <= self->timeout_ms) { while (supervisor_ticks_ms64() - start_ticks <= self->timeout_ms) {
// Read as many chars as we can right now, up to len. // Read as many chars as we can right now, up to len.
size_t num_read = io_read(io, data, len); size_t num_read = io_read(io, data, len);
@ -289,7 +288,7 @@ size_t common_hal_busio_uart_read(busio_uart_obj_t *self, uint8_t *data, size_t
} }
if (num_read > 0) { if (num_read > 0) {
// Reset the timeout on every character read. // Reset the timeout on every character read.
start_ticks = ticks_ms; start_ticks = supervisor_ticks_ms64();
} }
RUN_BACKGROUND_TASKS; RUN_BACKGROUND_TASKS;
// Allow user to break out of a timeout with a KeyboardInterrupt. // Allow user to break out of a timeout with a KeyboardInterrupt.
@ -323,29 +322,23 @@ size_t common_hal_busio_uart_write(busio_uart_obj_t *self, const uint8_t *data,
struct io_descriptor *io; struct io_descriptor *io;
usart_async_get_io_descriptor(usart_desc_p, &io); usart_async_get_io_descriptor(usart_desc_p, &io);
// Start writing characters. This is non-blocking and will
// return immediately after setting up the write.
if (io_write(io, data, len) < 0) { if (io_write(io, data, len) < 0) {
*errcode = MP_EAGAIN; *errcode = MP_EAGAIN;
return MP_STREAM_ERROR; return MP_STREAM_ERROR;
} }
// Wait until write is complete or timeout. // Busy-wait until all characters transmitted.
bool done = false; struct usart_async_status async_status;
uint64_t start_ticks = ticks_ms; while (true) {
// Busy-wait for timeout. usart_async_get_status(usart_desc_p, &async_status);
while (ticks_ms - start_ticks < self->timeout_ms) { if (async_status.txcnt >= len) {
if (usart_async_is_tx_empty(usart_desc_p)) {
done = true;
break; break;
} }
RUN_BACKGROUND_TASKS; RUN_BACKGROUND_TASKS;
} }
if (!done) {
*errcode = MP_EAGAIN;
return MP_STREAM_ERROR;
}
// All the characters got written.
return len; return len;
} }
@ -368,6 +361,14 @@ void common_hal_busio_uart_set_baudrate(busio_uart_obj_t *self, uint32_t baudrat
self->baudrate = baudrate; self->baudrate = baudrate;
} }
mp_float_t common_hal_busio_uart_get_timeout(busio_uart_obj_t *self) {
return (mp_float_t) (self->timeout_ms / 1000.0f);
}
void common_hal_busio_uart_set_timeout(busio_uart_obj_t *self, mp_float_t timeout) {
self->timeout_ms = timeout * 1000;
}
uint32_t common_hal_busio_uart_rx_characters_available(busio_uart_obj_t *self) { uint32_t common_hal_busio_uart_rx_characters_available(busio_uart_obj_t *self) {
// This assignment is only here because the usart_async routines take a *const argument. // This assignment is only here because the usart_async routines take a *const argument.
struct usart_async_descriptor * const usart_desc_p = (struct usart_async_descriptor * const) &self->usart_desc; struct usart_async_descriptor * const usart_desc_p = (struct usart_async_descriptor * const) &self->usart_desc;
@ -383,12 +384,14 @@ void common_hal_busio_uart_clear_rx_buffer(busio_uart_obj_t *self) {
} }
// True if there are no characters still to be written.
bool common_hal_busio_uart_ready_to_tx(busio_uart_obj_t *self) { bool common_hal_busio_uart_ready_to_tx(busio_uart_obj_t *self) {
if (self->tx_pin == NO_PIN) { if (self->tx_pin == NO_PIN) {
return false; return false;
} }
// This assignment is only here because the usart_async routines take a *const argument. // This assignment is only here because the usart_async routines take a *const argument.
const struct _usart_async_device * const usart_device_p = struct usart_async_descriptor * const usart_desc_p = (struct usart_async_descriptor * const) &self->usart_desc;
(struct _usart_async_device * const) &self->usart_desc.device; struct usart_async_status async_status;
return _usart_async_is_byte_sent(usart_device_p); usart_async_get_status(usart_desc_p, &async_status);
return !(async_status.flags & USART_ASYNC_STATUS_BUSY);
} }

View File

@ -28,10 +28,10 @@
#include "shared-bindings/time/__init__.h" #include "shared-bindings/time/__init__.h"
#include "tick.h" #include "supervisor/shared/tick.h"
inline uint64_t common_hal_time_monotonic() { inline uint64_t common_hal_time_monotonic() {
return ticks_ms; return supervisor_ticks_ms64();
} }
void common_hal_time_delay_ms(uint32_t delay) { void common_hal_time_delay_ms(uint32_t delay) {

View File

@ -16,10 +16,18 @@ endif
# Put samd21-only choices here. # Put samd21-only choices here.
ifeq ($(CHIP_FAMILY),samd21) ifeq ($(CHIP_FAMILY),samd21)
# frequencyio not yet verified as working on SAMD21. # frequencyio not yet verified as working on SAMD21, though make it possible to override.
ifndef CIRCUITPY_AUDIOMIXER
CIRCUITPY_AUDIOMIXER = 0 CIRCUITPY_AUDIOMIXER = 0
endif
ifndef CIRCUITPY_FREQUENCYIO
CIRCUITPY_FREQUENCYIO = 0 CIRCUITPY_FREQUENCYIO = 0
endif
ifndef CIRCUITPY_TOUCHIO_USE_NATIVE
CIRCUITPY_TOUCHIO_USE_NATIVE = 1 CIRCUITPY_TOUCHIO_USE_NATIVE = 1
endif
# SAMD21 needs separate endpoint pairs for MSC BULK IN and BULK OUT, otherwise it's erratic. # SAMD21 needs separate endpoint pairs for MSC BULK IN and BULK OUT, otherwise it's erratic.
USB_MSC_EP_NUM_OUT = 1 USB_MSC_EP_NUM_OUT = 1
@ -27,8 +35,24 @@ endif
# Put samd51-only choices here. # Put samd51-only choices here.
ifeq ($(CHIP_FAMILY),samd51) ifeq ($(CHIP_FAMILY),samd51)
CIRCUITPY_SAMD = 1 # No native touchio on SAMD51.
CIRCUITPY_TOUCHIO_USE_NATIVE = 0 CIRCUITPY_TOUCHIO_USE_NATIVE = 0
# The ifndef's allow overriding in mpconfigboard.mk.
ifndef CIRCUITPY_NETWORK
CIRCUITPY_NETWORK = 1
MICROPY_PY_WIZNET5K = 5500
endif
ifndef CIRCUITPY_PS2IO
CIRCUITPY_PS2IO = 1
endif
ifndef CIRCUITPY_SAMD
CIRCUITPY_SAMD = 1
endif
endif endif
INTERNAL_LIBM = 1 INTERNAL_LIBM = 1

View File

@ -45,12 +45,12 @@
#include "mpconfigboard.h" #include "mpconfigboard.h"
#include "mphalport.h" #include "mphalport.h"
#include "reset.h" #include "reset.h"
#include "tick.h" #include "supervisor/shared/tick.h"
extern uint32_t common_hal_mcu_processor_get_frequency(void); extern uint32_t common_hal_mcu_processor_get_frequency(void);
void mp_hal_delay_ms(mp_uint_t delay) { void mp_hal_delay_ms(mp_uint_t delay) {
uint64_t start_tick = ticks_ms; uint64_t start_tick = supervisor_ticks_ms64();
uint64_t duration = 0; uint64_t duration = 0;
while (duration < delay) { while (duration < delay) {
RUN_BACKGROUND_TASKS; RUN_BACKGROUND_TASKS;
@ -59,7 +59,7 @@ void mp_hal_delay_ms(mp_uint_t delay) {
MP_STATE_VM(mp_pending_exception) == MP_OBJ_FROM_PTR(&MP_STATE_VM(mp_reload_exception))) { MP_STATE_VM(mp_pending_exception) == MP_OBJ_FROM_PTR(&MP_STATE_VM(mp_reload_exception))) {
break; break;
} }
duration = (ticks_ms - start_tick); duration = (supervisor_ticks_ms64() - start_tick);
// TODO(tannewt): Go to sleep for a little while while we wait. // TODO(tannewt): Go to sleep for a little while while we wait.
} }
} }

View File

@ -31,11 +31,11 @@
#include "lib/oofatfs/ff.h" #include "lib/oofatfs/ff.h"
// Global millisecond tick count (driven by SysTick interrupt). #include "supervisor/shared/tick.h"
extern volatile uint64_t ticks_ms;
// Global millisecond tick count (driven by SysTick interrupt).
static inline mp_uint_t mp_hal_ticks_ms(void) { static inline mp_uint_t mp_hal_ticks_ms(void) {
return ticks_ms; return supervisor_ticks_ms32();
} }
// Number of bytes in receive buffer // Number of bytes in receive buffer
volatile uint8_t usb_rx_count; volatile uint8_t usb_rx_count;

View File

@ -28,47 +28,21 @@
#include "peripheral_clk_config.h" #include "peripheral_clk_config.h"
#include "supervisor/shared/autoreload.h" #include "supervisor/shared/tick.h"
#include "supervisor/filesystem.h"
#include "shared-bindings/microcontroller/__init__.h" #include "shared-bindings/microcontroller/__init__.h"
#include "shared-bindings/microcontroller/Processor.h" #include "shared-bindings/microcontroller/Processor.h"
#if CIRCUITPY_GAMEPAD
#include "shared-module/gamepad/__init__.h"
#endif
#if CIRCUITPY_GAMEPADSHIFT
#include "shared-module/gamepadshift/__init__.h"
#endif
// Global millisecond tick count
volatile uint64_t ticks_ms = 0;
void SysTick_Handler(void) { void SysTick_Handler(void) {
// SysTick interrupt handler called when the SysTick timer reaches zero // SysTick interrupt handler called when the SysTick timer reaches zero
// (every millisecond). // (every millisecond).
common_hal_mcu_disable_interrupts(); common_hal_mcu_disable_interrupts();
ticks_ms += 1;
// Read the control register to reset the COUNTFLAG. // Read the control register to reset the COUNTFLAG.
(void) SysTick->CTRL; (void) SysTick->CTRL;
common_hal_mcu_enable_interrupts(); common_hal_mcu_enable_interrupts();
#if CIRCUITPY_FILESYSTEM_FLUSH_INTERVAL_MS > 0 // Do things common to all ports when the tick occurs
filesystem_tick(); supervisor_tick();
#endif
#ifdef CIRCUITPY_AUTORELOAD_DELAY_MS
autoreload_tick();
#endif
#ifdef CIRCUITPY_GAMEPAD_TICKS
if (!(ticks_ms & CIRCUITPY_GAMEPAD_TICKS)) {
#if CIRCUITPY_GAMEPAD
gamepad_tick();
#endif
#if CIRCUITPY_GAMEPADSHIFT
gamepadshift_tick();
#endif
}
#endif
} }
void tick_init() { void tick_init() {
@ -115,7 +89,7 @@ void current_tick(uint64_t* ms, uint32_t* us_until_ms) {
uint32_t tick_status = SysTick->CTRL; uint32_t tick_status = SysTick->CTRL;
uint32_t current_us = SysTick->VAL; uint32_t current_us = SysTick->VAL;
uint32_t tick_status2 = SysTick->CTRL; uint32_t tick_status2 = SysTick->CTRL;
uint64_t current_ms = ticks_ms; uint64_t current_ms = supervisor_ticks_ms64();
// The second clause ensures our value actually rolled over. Its possible it hit zero between // The second clause ensures our value actually rolled over. Its possible it hit zero between
// the VAL read and CTRL read. // the VAL read and CTRL read.
if ((tick_status & SysTick_CTRL_COUNTFLAG_Msk) != 0 || if ((tick_status & SysTick_CTRL_COUNTFLAG_Msk) != 0 ||
@ -129,5 +103,5 @@ void current_tick(uint64_t* ms, uint32_t* us_until_ms) {
void wait_until(uint64_t ms, uint32_t us_until_ms) { void wait_until(uint64_t ms, uint32_t us_until_ms) {
uint32_t ticks_per_us = common_hal_mcu_processor_get_frequency() / 1000 / 1000; uint32_t ticks_per_us = common_hal_mcu_processor_get_frequency() / 1000 / 1000;
while (ticks_ms <= ms && SysTick->VAL / ticks_per_us >= us_until_ms) {} while (supervisor_ticks_ms64() <= ms && SysTick->VAL / ticks_per_us >= us_until_ms) {}
} }

View File

@ -28,8 +28,6 @@
#include "py/mpconfig.h" #include "py/mpconfig.h"
extern volatile uint64_t ticks_ms;
extern struct timer_descriptor ms_timer; extern struct timer_descriptor ms_timer;
void tick_init(void); void tick_init(void);

View File

@ -102,7 +102,7 @@ void common_hal_busio_uart_construct(busio_uart_obj_t *self,
self->tx_pin = tx; self->tx_pin = tx;
self->rx_pin = rx; self->rx_pin = rx;
self->baudrate = baudrate; self->baudrate = baudrate;
self->timeout = timeout; self->timeout_us = timeout * 1000000;
} }
void common_hal_busio_uart_deinit(busio_uart_obj_t *self) { void common_hal_busio_uart_deinit(busio_uart_obj_t *self) {
@ -135,7 +135,7 @@ size_t common_hal_busio_uart_read(busio_uart_obj_t *self, uint8_t *data, size_t
FD_SET(busio_uart_dev[self->number].fd, &rfds); FD_SET(busio_uart_dev[self->number].fd, &rfds);
tv.tv_sec = 0; tv.tv_sec = 0;
tv.tv_usec = self->timeout * 1000; tv.tv_usec = self->timeout_us;
retval = select(busio_uart_dev[self->number].fd + 1, &rfds, NULL, NULL, &tv); retval = select(busio_uart_dev[self->number].fd + 1, &rfds, NULL, NULL, &tv);
@ -172,6 +172,14 @@ void common_hal_busio_uart_set_baudrate(busio_uart_obj_t *self, uint32_t baudrat
ioctl(busio_uart_dev[self->number].fd, TCFLSH, (long unsigned int)NULL); ioctl(busio_uart_dev[self->number].fd, TCFLSH, (long unsigned int)NULL);
} }
mp_float_t common_hal_busio_uart_get_timeout(busio_uart_obj_t *self) {
return (mp_float_t) (self->timeout_us / 1000000.0f);
}
void common_hal_busio_uart_set_timeout(busio_uart_obj_t *self, mp_float_t timeout) {
self->timeout_us = timeout * 1000000;
}
uint32_t common_hal_busio_uart_rx_characters_available(busio_uart_obj_t *self) { uint32_t common_hal_busio_uart_rx_characters_available(busio_uart_obj_t *self) {
int count = 0; int count = 0;

View File

@ -37,7 +37,7 @@ typedef struct {
const mcu_pin_obj_t *tx_pin; const mcu_pin_obj_t *tx_pin;
const mcu_pin_obj_t *rx_pin; const mcu_pin_obj_t *rx_pin;
uint32_t baudrate; uint32_t baudrate;
uint32_t timeout; uint32_t timeout_us;
} busio_uart_obj_t; } busio_uart_obj_t;
void busio_uart_reset(void); void busio_uart_reset(void);

View File

@ -26,10 +26,10 @@
#include "py/mphal.h" #include "py/mphal.h"
#include "tick.h" #include "supervisor/shared/tick.h"
uint64_t common_hal_time_monotonic(void) { uint64_t common_hal_time_monotonic(void) {
return ticks_ms; return supervisor_ticks_ms64();
} }
void common_hal_time_delay_ms(uint32_t delay) { void common_hal_time_delay_ms(uint32_t delay) {

View File

@ -31,7 +31,7 @@
#include "py/mpstate.h" #include "py/mpstate.h"
#include "tick.h" #include "supervisor/shared/tick.h"
#define DELAY_CORRECTION (700) #define DELAY_CORRECTION (700)
#define DELAY_INTERVAL (50) #define DELAY_INTERVAL (50)
@ -57,7 +57,7 @@ mp_uint_t mp_hal_ticks_cpu(void) {
} }
void mp_hal_delay_ms(mp_uint_t delay) { void mp_hal_delay_ms(mp_uint_t delay) {
uint64_t start_tick = ticks_ms; uint64_t start_tick = supervisor_ticks_ms64();
uint64_t duration = 0; uint64_t duration = 0;
while (duration < delay) { while (duration < delay) {
#ifdef MICROPY_VM_HOOK_LOOP #ifdef MICROPY_VM_HOOK_LOOP
@ -68,7 +68,7 @@ void mp_hal_delay_ms(mp_uint_t delay) {
MP_STATE_VM(mp_pending_exception) == MP_OBJ_FROM_PTR(&MP_STATE_VM(mp_reload_exception))) { MP_STATE_VM(mp_pending_exception) == MP_OBJ_FROM_PTR(&MP_STATE_VM(mp_reload_exception))) {
break; break;
} }
duration = (ticks_ms - start_tick); duration = (supervisor_ticks_ms64() - start_tick);
// TODO(tannewt): Go to sleep for a little while while we wait. // TODO(tannewt): Go to sleep for a little while while we wait.
} }
} }

View File

@ -31,6 +31,4 @@
#include "lib/utils/interrupt_char.h" #include "lib/utils/interrupt_char.h"
extern volatile uint64_t ticks_ms;
#endif // MICROPY_INCLUDED_CXD56_MPHALPORT_H #endif // MICROPY_INCLUDED_CXD56_MPHALPORT_H

View File

@ -27,19 +27,10 @@
#include "tick.h" #include "tick.h"
#include "supervisor/shared/autoreload.h" #include "supervisor/shared/autoreload.h"
#include "supervisor/filesystem.h" #include "supervisor/shared/tick.h"
// Global millisecond tick count
volatile uint64_t ticks_ms = 0;
void board_timerhook(void) void board_timerhook(void)
{ {
ticks_ms += 1; // Do things common to all ports when the tick occurs
supervisor_tick();
#if CIRCUITPY_FILESYSTEM_FLUSH_INTERVAL_MS > 0
filesystem_tick();
#endif
#ifdef CIRCUITPY_AUTORELOAD_DELAY_MS
autoreload_tick();
#endif
} }

View File

@ -29,6 +29,4 @@
#include "py/mpconfig.h" #include "py/mpconfig.h"
extern volatile uint64_t ticks_ms;
#endif // MICROPY_INCLUDED_CXD56_TICK_H #endif // MICROPY_INCLUDED_CXD56_TICK_H

View File

@ -134,6 +134,9 @@ void SD_EVT_IRQHandler(void) {
} }
ble_evt_t* event = (ble_evt_t *)m_ble_evt_buf; ble_evt_t* event = (ble_evt_t *)m_ble_evt_buf;
#if CIRCUITPY_VERBOSE_BLE
mp_printf(&mp_plat_print, "BLE event: 0x%04x\n", event->header.evt_id);
#endif
if (supervisor_bluetooth_hook(event)) { if (supervisor_bluetooth_hook(event)) {
continue; continue;
@ -145,8 +148,11 @@ void SD_EVT_IRQHandler(void) {
done = it->func(event, it->param) || done; done = it->func(event, it->param) || done;
it = it->next; it = it->next;
} }
if (!done) { #if CIRCUITPY_VERBOSE_BLE
//mp_printf(&mp_plat_print, "Unhandled ble event: 0x%04x\n", event->header.evt_id); if (event->header.evt_id == BLE_GATTS_EVT_WRITE) {
} ble_gatts_evt_write_t* write_evt = &event->evt.gatts_evt.params.write;
mp_printf(&mp_plat_print, "Write to: UUID(0x%04x) handle %x of length %d auth %x\n", write_evt->uuid.uuid, write_evt->handle, write_evt->len, write_evt->auth_required);
}
#endif
} }
} }

View File

@ -40,6 +40,7 @@
#include "py/objstr.h" #include "py/objstr.h"
#include "py/runtime.h" #include "py/runtime.h"
#include "supervisor/shared/safe_mode.h" #include "supervisor/shared/safe_mode.h"
#include "supervisor/shared/tick.h"
#include "supervisor/usb.h" #include "supervisor/usb.h"
#include "shared-bindings/_bleio/__init__.h" #include "shared-bindings/_bleio/__init__.h"
#include "shared-bindings/_bleio/Adapter.h" #include "shared-bindings/_bleio/Adapter.h"
@ -178,9 +179,19 @@ STATIC bool adapter_on_ble_evt(ble_evt_t *ble_evt, void *self_in) {
connection->conn_handle = ble_evt->evt.gap_evt.conn_handle; connection->conn_handle = ble_evt->evt.gap_evt.conn_handle;
connection->connection_obj = mp_const_none; connection->connection_obj = mp_const_none;
connection->pair_status = PAIR_NOT_PAIRED;
ble_drv_add_event_handler_entry(&connection->handler_entry, connection_on_ble_evt, connection); ble_drv_add_event_handler_entry(&connection->handler_entry, connection_on_ble_evt, connection);
self->connection_objs = NULL; self->connection_objs = NULL;
// Save the current connection parameters.
memcpy(&connection->conn_params, &connected->conn_params, sizeof(ble_gap_conn_params_t));
#if CIRCUITPY_VERBOSE_BLE
ble_gap_conn_params_t *cp = &connected->conn_params;
mp_printf(&mp_plat_print, "conn params: min_ci %d max_ci %d s_l %d sup_timeout %d\n", cp->min_conn_interval, cp->max_conn_interval, cp->slave_latency, cp->conn_sup_timeout);
#endif
// See if connection interval set by Central is out of range. // See if connection interval set by Central is out of range.
// If so, negotiate our preferred range. // If so, negotiate our preferred range.
ble_gap_conn_params_t conn_params; ble_gap_conn_params_t conn_params;
@ -227,13 +238,7 @@ STATIC bool adapter_on_ble_evt(ble_evt_t *ble_evt, void *self_in) {
} }
STATIC void get_address(bleio_adapter_obj_t *self, ble_gap_addr_t *address) { STATIC void get_address(bleio_adapter_obj_t *self, ble_gap_addr_t *address) {
uint32_t err_code; check_nrf_error(sd_ble_gap_addr_get(address));
err_code = sd_ble_gap_addr_get(address);
if (err_code != NRF_SUCCESS) {
mp_raise_OSError_msg(translate("Failed to get local address"));
}
} }
char default_ble_name[] = { 'C', 'I', 'R', 'C', 'U', 'I', 'T', 'P', 'Y', 0, 0, 0, 0 , 0}; char default_ble_name[] = { 'C', 'I', 'R', 'C', 'U', 'I', 'T', 'P', 'Y', 0, 0, 0, 0 , 0};
@ -274,9 +279,7 @@ void common_hal_bleio_adapter_set_enabled(bleio_adapter_obj_t *self, bool enable
// Re-init USB hardware // Re-init USB hardware
init_usb_hardware(); init_usb_hardware();
if (err_code != NRF_SUCCESS) { check_nrf_error(err_code);
mp_raise_OSError_msg_varg(translate("Failed to change softdevice state, NRF_ERROR_%q"), MP_OBJ_QSTR_VALUE(base_error_messages[err_code - NRF_ERROR_BASE_NUM]));
}
// Add a handler for incoming peripheral connections. // Add a handler for incoming peripheral connections.
if (enabled) { if (enabled) {
@ -298,10 +301,7 @@ void common_hal_bleio_adapter_set_enabled(bleio_adapter_obj_t *self, bool enable
bool common_hal_bleio_adapter_get_enabled(bleio_adapter_obj_t *self) { bool common_hal_bleio_adapter_get_enabled(bleio_adapter_obj_t *self) {
uint8_t is_enabled; uint8_t is_enabled;
const uint32_t err_code = sd_softdevice_is_enabled(&is_enabled); check_nrf_error(sd_softdevice_is_enabled(&is_enabled));
if (err_code != NRF_SUCCESS) {
mp_raise_OSError_msg(translate("Failed to get softdevice state"));
}
return is_enabled; return is_enabled;
} }
@ -353,7 +353,7 @@ STATIC bool scan_on_ble_evt(ble_evt_t *ble_evt, void *scan_results_in) {
ble_gap_evt_adv_report_t *report = &ble_evt->evt.gap_evt.params.adv_report; ble_gap_evt_adv_report_t *report = &ble_evt->evt.gap_evt.params.adv_report;
shared_module_bleio_scanresults_append(scan_results, shared_module_bleio_scanresults_append(scan_results,
ticks_ms, supervisor_ticks_ms64(),
report->type.connectable, report->type.connectable,
report->type.scan_response, report->type.scan_response,
report->rssi, report->rssi,
@ -373,7 +373,7 @@ STATIC bool scan_on_ble_evt(ble_evt_t *ble_evt, void *scan_results_in) {
mp_obj_t common_hal_bleio_adapter_start_scan(bleio_adapter_obj_t *self, uint8_t* prefixes, size_t prefix_length, bool extended, mp_int_t buffer_size, mp_float_t timeout, mp_float_t interval, mp_float_t window, mp_int_t minimum_rssi, bool active) { mp_obj_t common_hal_bleio_adapter_start_scan(bleio_adapter_obj_t *self, uint8_t* prefixes, size_t prefix_length, bool extended, mp_int_t buffer_size, mp_float_t timeout, mp_float_t interval, mp_float_t window, mp_int_t minimum_rssi, bool active) {
if (self->scan_results != NULL) { if (self->scan_results != NULL) {
if (!shared_module_bleio_scanresults_get_done(self->scan_results)) { if (!shared_module_bleio_scanresults_get_done(self->scan_results)) {
mp_raise_RuntimeError(translate("Scan already in progess. Stop with stop_scan.")); mp_raise_bleio_BluetoothError(translate("Scan already in progess. Stop with stop_scan."));
} }
self->scan_results = NULL; self->scan_results = NULL;
} }
@ -406,7 +406,7 @@ mp_obj_t common_hal_bleio_adapter_start_scan(bleio_adapter_obj_t *self, uint8_t*
if (err_code != NRF_SUCCESS) { if (err_code != NRF_SUCCESS) {
self->scan_results = NULL; self->scan_results = NULL;
ble_drv_remove_event_handler(scan_on_ble_evt, self->scan_results); ble_drv_remove_event_handler(scan_on_ble_evt, self->scan_results);
mp_raise_OSError_msg_varg(translate("Failed to start scanning, err 0x%04x"), err_code); check_nrf_error(err_code);
} }
return MP_OBJ_FROM_PTR(self->scan_results); return MP_OBJ_FROM_PTR(self->scan_results);
@ -447,7 +447,7 @@ STATIC bool connect_on_ble_evt(ble_evt_t *ble_evt, void *info_in) {
return true; return true;
} }
mp_obj_t common_hal_bleio_adapter_connect(bleio_adapter_obj_t *self, bleio_address_obj_t *address, mp_float_t timeout, bool pair) { mp_obj_t common_hal_bleio_adapter_connect(bleio_adapter_obj_t *self, bleio_address_obj_t *address, mp_float_t timeout) {
ble_gap_addr_t addr; ble_gap_addr_t addr;
@ -479,7 +479,7 @@ mp_obj_t common_hal_bleio_adapter_connect(bleio_adapter_obj_t *self, bleio_addre
if (err_code != NRF_SUCCESS) { if (err_code != NRF_SUCCESS) {
ble_drv_remove_event_handler(connect_on_ble_evt, &event_info); ble_drv_remove_event_handler(connect_on_ble_evt, &event_info);
mp_raise_OSError_msg_varg(translate("Failed to start connecting, error 0x%04x"), err_code); check_nrf_error(err_code);
} }
while (!event_info.done) { while (!event_info.done) {
@ -489,7 +489,7 @@ mp_obj_t common_hal_bleio_adapter_connect(bleio_adapter_obj_t *self, bleio_addre
ble_drv_remove_event_handler(connect_on_ble_evt, &event_info); ble_drv_remove_event_handler(connect_on_ble_evt, &event_info);
if (event_info.conn_handle == BLE_CONN_HANDLE_INVALID) { if (event_info.conn_handle == BLE_CONN_HANDLE_INVALID) {
mp_raise_OSError_msg(translate("Failed to connect: timeout")); mp_raise_bleio_BluetoothError(translate("Failed to connect: timeout"));
} }
// Make the connection object and return it. // Make the connection object and return it.
@ -500,7 +500,7 @@ mp_obj_t common_hal_bleio_adapter_connect(bleio_adapter_obj_t *self, bleio_addre
} }
} }
mp_raise_OSError_msg(translate("Failed to connect: internal error")); mp_raise_bleio_BluetoothError(translate("Failed to connect: internal error"));
return mp_const_none; return mp_const_none;
} }
@ -508,8 +508,9 @@ mp_obj_t common_hal_bleio_adapter_connect(bleio_adapter_obj_t *self, bleio_addre
// The nRF SD 6.1.0 can only do one concurrent advertisement so share the advertising handle. // The nRF SD 6.1.0 can only do one concurrent advertisement so share the advertising handle.
uint8_t adv_handle = BLE_GAP_ADV_SET_HANDLE_NOT_SET; uint8_t adv_handle = BLE_GAP_ADV_SET_HANDLE_NOT_SET;
STATIC void check_data_fit(size_t data_len) { STATIC void check_data_fit(size_t data_len, bool connectable) {
if (data_len > BLE_GAP_ADV_SET_DATA_SIZE_MAX) { if (data_len > BLE_GAP_ADV_SET_DATA_SIZE_EXTENDED_MAX_SUPPORTED ||
(connectable && data_len > BLE_GAP_ADV_SET_DATA_SIZE_EXTENDED_CONNECTABLE_MAX_SUPPORTED)) {
mp_raise_ValueError(translate("Data too large for advertisement packet")); mp_raise_ValueError(translate("Data too large for advertisement packet"));
} }
} }
@ -525,11 +526,31 @@ uint32_t _common_hal_bleio_adapter_start_advertising(bleio_adapter_obj_t *self,
common_hal_bleio_adapter_stop_advertising(self); common_hal_bleio_adapter_stop_advertising(self);
} }
bool extended = advertising_data_len > BLE_GAP_ADV_SET_DATA_SIZE_MAX ||
scan_response_data_len > BLE_GAP_ADV_SET_DATA_SIZE_MAX;
uint8_t adv_type;
if (extended) {
if (connectable) {
adv_type = BLE_GAP_ADV_TYPE_EXTENDED_CONNECTABLE_NONSCANNABLE_UNDIRECTED;
} else if (scan_response_data_len > 0) {
adv_type = BLE_GAP_ADV_TYPE_EXTENDED_NONCONNECTABLE_SCANNABLE_UNDIRECTED;
} else {
adv_type = BLE_GAP_ADV_TYPE_EXTENDED_NONCONNECTABLE_NONSCANNABLE_UNDIRECTED;
}
} else if (connectable) {
adv_type = BLE_GAP_ADV_TYPE_CONNECTABLE_SCANNABLE_UNDIRECTED;
} else if (scan_response_data_len > 0) {
adv_type = BLE_GAP_ADV_TYPE_NONCONNECTABLE_SCANNABLE_UNDIRECTED;
} else {
adv_type = BLE_GAP_ADV_TYPE_NONCONNECTABLE_NONSCANNABLE_UNDIRECTED;
}
uint32_t err_code; uint32_t err_code;
ble_gap_adv_params_t adv_params = { ble_gap_adv_params_t adv_params = {
.interval = SEC_TO_UNITS(interval, UNIT_0_625_MS), .interval = SEC_TO_UNITS(interval, UNIT_0_625_MS),
.properties.type = connectable ? BLE_GAP_ADV_TYPE_CONNECTABLE_SCANNABLE_UNDIRECTED .properties.type = adv_type,
: BLE_GAP_ADV_TYPE_NONCONNECTABLE_NONSCANNABLE_UNDIRECTED,
.duration = BLE_GAP_ADV_TIMEOUT_GENERAL_UNLIMITED, .duration = BLE_GAP_ADV_TIMEOUT_GENERAL_UNLIMITED,
.filter_policy = BLE_GAP_ADV_FP_ANY, .filter_policy = BLE_GAP_ADV_FP_ANY,
.primary_phy = BLE_GAP_PHY_1MBPS, .primary_phy = BLE_GAP_PHY_1MBPS,
@ -558,31 +579,29 @@ uint32_t _common_hal_bleio_adapter_start_advertising(bleio_adapter_obj_t *self,
void common_hal_bleio_adapter_start_advertising(bleio_adapter_obj_t *self, bool connectable, mp_float_t interval, mp_buffer_info_t *advertising_data_bufinfo, mp_buffer_info_t *scan_response_data_bufinfo) { void common_hal_bleio_adapter_start_advertising(bleio_adapter_obj_t *self, bool connectable, mp_float_t interval, mp_buffer_info_t *advertising_data_bufinfo, mp_buffer_info_t *scan_response_data_bufinfo) {
if (self->current_advertising_data != NULL && self->current_advertising_data == self->advertising_data) { if (self->current_advertising_data != NULL && self->current_advertising_data == self->advertising_data) {
mp_raise_OSError_msg(translate("Already advertising.")); mp_raise_bleio_BluetoothError(translate("Already advertising."));
} }
// interval value has already been validated. // interval value has already been validated.
uint32_t err_code; check_data_fit(advertising_data_bufinfo->len, connectable);
check_data_fit(scan_response_data_bufinfo->len, connectable);
check_data_fit(advertising_data_bufinfo->len);
check_data_fit(scan_response_data_bufinfo->len);
// The advertising data buffers must not move, because the SoftDevice depends on them. // The advertising data buffers must not move, because the SoftDevice depends on them.
// So make them long-lived and reuse them onwards. // So make them long-lived and reuse them onwards.
if (self->advertising_data == NULL) { if (self->advertising_data == NULL) {
self->advertising_data = (uint8_t *) gc_alloc(BLE_GAP_ADV_SET_DATA_SIZE_MAX * sizeof(uint8_t), false, true); self->advertising_data = (uint8_t *) gc_alloc(BLE_GAP_ADV_SET_DATA_SIZE_EXTENDED_MAX_SUPPORTED * sizeof(uint8_t), false, true);
} }
if (self->scan_response_data == NULL) { if (self->scan_response_data == NULL) {
self->scan_response_data = (uint8_t *) gc_alloc(BLE_GAP_ADV_SET_DATA_SIZE_MAX * sizeof(uint8_t), false, true); self->scan_response_data = (uint8_t *) gc_alloc(BLE_GAP_ADV_SET_DATA_SIZE_EXTENDED_MAX_SUPPORTED * sizeof(uint8_t), false, true);
} }
memcpy(self->advertising_data, advertising_data_bufinfo->buf, advertising_data_bufinfo->len); memcpy(self->advertising_data, advertising_data_bufinfo->buf, advertising_data_bufinfo->len);
memcpy(self->scan_response_data, scan_response_data_bufinfo->buf, scan_response_data_bufinfo->len); memcpy(self->scan_response_data, scan_response_data_bufinfo->buf, scan_response_data_bufinfo->len);
err_code = _common_hal_bleio_adapter_start_advertising(self, connectable, interval, self->advertising_data, advertising_data_bufinfo->len, self->scan_response_data, scan_response_data_bufinfo->len); check_nrf_error(_common_hal_bleio_adapter_start_advertising(self, connectable, interval,
self->advertising_data,
if (err_code != NRF_SUCCESS) { advertising_data_bufinfo->len,
mp_raise_OSError_msg_varg(translate("Failed to start advertising, NRF_ERROR_%q"), MP_OBJ_QSTR_VALUE(base_error_messages[err_code - NRF_ERROR_BASE_NUM])); self->scan_response_data,
} scan_response_data_bufinfo->len));
} }
void common_hal_bleio_adapter_stop_advertising(bleio_adapter_obj_t *self) { void common_hal_bleio_adapter_stop_advertising(bleio_adapter_obj_t *self) {
@ -594,7 +613,7 @@ void common_hal_bleio_adapter_stop_advertising(bleio_adapter_obj_t *self) {
self->current_advertising_data = NULL; self->current_advertising_data = NULL;
if ((err_code != NRF_SUCCESS) && (err_code != NRF_ERROR_INVALID_STATE)) { if ((err_code != NRF_SUCCESS) && (err_code != NRF_ERROR_INVALID_STATE)) {
mp_raise_OSError_msg_varg(translate("Failed to stop advertising, NRF_ERROR_%q"), MP_OBJ_QSTR_VALUE(base_error_messages[err_code - NRF_ERROR_BASE_NUM])); check_nrf_error(err_code);
} }
} }

View File

@ -46,8 +46,8 @@ STATIC uint16_t characteristic_get_cccd(uint16_t cccd_handle, uint16_t conn_hand
if (err_code == BLE_ERROR_GATTS_SYS_ATTR_MISSING) { if (err_code == BLE_ERROR_GATTS_SYS_ATTR_MISSING) {
// CCCD is not set, so say that neither Notify nor Indicate is enabled. // CCCD is not set, so say that neither Notify nor Indicate is enabled.
cccd = 0; cccd = 0;
} else if (err_code != NRF_SUCCESS) { } else {
mp_raise_OSError_msg_varg(translate("Failed to read CCCD value, err 0x%04x"), err_code); check_nrf_error(err_code);
} }
return cccd; return cccd;
@ -78,7 +78,7 @@ STATIC void characteristic_gatts_notify_indicate(uint16_t handle, uint16_t conn_
} }
// Some real error has occurred. // Some real error has occurred.
mp_raise_OSError_msg_varg(translate("Failed to notify or indicate attribute value, err 0x%04x"), err_code); check_nrf_error(err_code);
} }
} }
@ -213,11 +213,7 @@ void common_hal_bleio_characteristic_add_descriptor(bleio_characteristic_obj_t *
.max_len = descriptor->max_length, .max_len = descriptor->max_length,
}; };
uint32_t err_code = sd_ble_gatts_descriptor_add(self->handle, &desc_attr, &descriptor->handle); check_nrf_error(sd_ble_gatts_descriptor_add(self->handle, &desc_attr, &descriptor->handle));
if (err_code != NRF_SUCCESS) {
mp_raise_OSError_msg_varg(translate("Failed to add descriptor, err 0x%04x"), err_code);
}
descriptor->next = self->descriptor_list; descriptor->next = self->descriptor_list;
self->descriptor_list = descriptor; self->descriptor_list = descriptor;
@ -225,11 +221,11 @@ void common_hal_bleio_characteristic_add_descriptor(bleio_characteristic_obj_t *
void common_hal_bleio_characteristic_set_cccd(bleio_characteristic_obj_t *self, bool notify, bool indicate) { void common_hal_bleio_characteristic_set_cccd(bleio_characteristic_obj_t *self, bool notify, bool indicate) {
if (self->cccd_handle == BLE_GATT_HANDLE_INVALID) { if (self->cccd_handle == BLE_GATT_HANDLE_INVALID) {
mp_raise_ValueError(translate("No CCCD for this Characteristic")); mp_raise_bleio_BluetoothError(translate("No CCCD for this Characteristic"));
} }
if (!common_hal_bleio_service_get_is_remote(self->service)) { if (!common_hal_bleio_service_get_is_remote(self->service)) {
mp_raise_ValueError(translate("Can't set CCCD on local Characteristic")); mp_raise_bleio_RoleError(translate("Can't set CCCD on local Characteristic"));
} }
const uint16_t conn_handle = bleio_connection_get_conn_handle(self->service->connection); const uint16_t conn_handle = bleio_connection_get_conn_handle(self->service->connection);
@ -261,7 +257,7 @@ void common_hal_bleio_characteristic_set_cccd(bleio_characteristic_obj_t *self,
} }
// Some real error occurred. // Some real error occurred.
mp_raise_OSError_msg_varg(translate("Failed to write CCCD, err 0x%04x"), err_code); check_nrf_error(err_code);
} }
} }

View File

@ -39,6 +39,7 @@
#include "shared-bindings/_bleio/__init__.h" #include "shared-bindings/_bleio/__init__.h"
#include "shared-bindings/_bleio/Connection.h" #include "shared-bindings/_bleio/Connection.h"
#include "supervisor/shared/tick.h"
#include "common-hal/_bleio/CharacteristicBuffer.h" #include "common-hal/_bleio/CharacteristicBuffer.h"
STATIC void write_to_ringbuf(bleio_characteristic_buffer_obj_t *self, uint8_t *data, uint16_t len) { STATIC void write_to_ringbuf(bleio_characteristic_buffer_obj_t *self, uint8_t *data, uint16_t len) {
@ -100,10 +101,10 @@ void common_hal_bleio_characteristic_buffer_construct(bleio_characteristic_buffe
} }
int common_hal_bleio_characteristic_buffer_read(bleio_characteristic_buffer_obj_t *self, uint8_t *data, size_t len, int *errcode) { 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; uint64_t start_ticks = supervisor_ticks_ms64();
// Wait for all bytes received or timeout // Wait for all bytes received or timeout
while ( (ringbuf_count(&self->ringbuf) < len) && (ticks_ms - start_ticks < self->timeout_ms) ) { while ( (ringbuf_count(&self->ringbuf) < len) && (supervisor_ticks_ms64() - start_ticks < self->timeout_ms) ) {
RUN_BACKGROUND_TASKS; RUN_BACKGROUND_TASKS;
// Allow user to break out of a timeout with a KeyboardInterrupt. // Allow user to break out of a timeout with a KeyboardInterrupt.
if ( mp_hal_is_interrupted() ) { if ( mp_hal_is_interrupted() ) {

View File

@ -34,6 +34,7 @@
#include "ble_drv.h" #include "ble_drv.h"
#include "ble_hci.h" #include "ble_hci.h"
#include "nrf_soc.h" #include "nrf_soc.h"
#include "lib/utils/interrupt_char.h"
#include "py/gc.h" #include "py/gc.h"
#include "py/objlist.h" #include "py/objlist.h"
#include "py/objstr.h" #include "py/objstr.h"
@ -51,7 +52,7 @@
#define BLE_AD_TYPE_FLAGS_DATA_SIZE 1 #define BLE_AD_TYPE_FLAGS_DATA_SIZE 1
static const ble_gap_sec_params_t pairing_sec_params = { static const ble_gap_sec_params_t pairing_sec_params = {
.bond = 1, .bond = 0,
.mitm = 0, .mitm = 0,
.lesc = 0, .lesc = 0,
.keypress = 0, .keypress = 0,
@ -69,8 +70,6 @@ static volatile bool m_discovery_successful;
static bleio_service_obj_t *m_char_discovery_service; static bleio_service_obj_t *m_char_discovery_service;
static bleio_characteristic_obj_t *m_desc_discovery_characteristic; static bleio_characteristic_obj_t *m_desc_discovery_characteristic;
bool dump_events = false;
bool connection_on_ble_evt(ble_evt_t *ble_evt, void *self_in) { bool connection_on_ble_evt(ble_evt_t *ble_evt, void *self_in) {
bleio_connection_internal_t *self = (bleio_connection_internal_t*)self_in; bleio_connection_internal_t *self = (bleio_connection_internal_t*)self_in;
@ -83,16 +82,9 @@ bool connection_on_ble_evt(ble_evt_t *ble_evt, void *self_in) {
return false; return false;
} }
// For debugging.
if (dump_events) {
mp_printf(&mp_plat_print, "Connection event: 0x%04x\n", ble_evt->header.evt_id);
}
switch (ble_evt->header.evt_id) { switch (ble_evt->header.evt_id) {
case BLE_GAP_EVT_DISCONNECTED: case BLE_GAP_EVT_DISCONNECTED:
break; break;
case BLE_GAP_EVT_CONN_PARAM_UPDATE: // 0x12
break;
case BLE_GAP_EVT_PHY_UPDATE_REQUEST: { case BLE_GAP_EVT_PHY_UPDATE_REQUEST: {
ble_gap_phys_t const phys = { ble_gap_phys_t const phys = {
.rx_phys = BLE_GAP_PHY_AUTO, .rx_phys = BLE_GAP_PHY_AUTO,
@ -123,15 +115,61 @@ bool connection_on_ble_evt(ble_evt_t *ble_evt, void *self_in) {
sd_ble_gatts_sys_attr_set(self->conn_handle, NULL, 0, 0); sd_ble_gatts_sys_attr_set(self->conn_handle, NULL, 0, 0);
break; break;
#if CIRCUITPY_VERBOSE_BLE
// Use read authorization to snoop on all reads when doing verbose debugging.
case BLE_GATTS_EVT_RW_AUTHORIZE_REQUEST: {
ble_gatts_evt_rw_authorize_request_t *request =
&ble_evt->evt.gatts_evt.params.authorize_request;
mp_printf(&mp_plat_print, "Read %x offset %d ", request->request.read.handle, request->request.read.offset);
uint8_t value_bytes[22];
ble_gatts_value_t value;
value.offset = request->request.read.offset;
value.len = 22;
value.p_value = value_bytes;
sd_ble_gatts_value_get(self->conn_handle, request->request.read.handle, &value);
size_t len = value.len;
if (len > 22) {
len = 22;
}
for (uint8_t i = 0; i < len; i++) {
mp_printf(&mp_plat_print, " %02x", value_bytes[i]);
}
mp_printf(&mp_plat_print, "\n");
ble_gatts_rw_authorize_reply_params_t reply;
reply.type = request->type;
reply.params.read.gatt_status = BLE_GATT_STATUS_SUCCESS;
reply.params.read.update = false;
reply.params.read.offset = request->request.read.offset;
sd_ble_gatts_rw_authorize_reply(self->conn_handle, &reply);
break;
}
#endif
case BLE_GATTS_EVT_HVN_TX_COMPLETE: // Capture this for now. 0x55 case BLE_GATTS_EVT_HVN_TX_COMPLETE: // Capture this for now. 0x55
break; break;
case BLE_GAP_EVT_CONN_PARAM_UPDATE_REQUEST: { case BLE_GAP_EVT_CONN_PARAM_UPDATE_REQUEST: {
self->conn_params_updating = true;
ble_gap_evt_conn_param_update_request_t *request = ble_gap_evt_conn_param_update_request_t *request =
&ble_evt->evt.gap_evt.params.conn_param_update_request; &ble_evt->evt.gap_evt.params.conn_param_update_request;
sd_ble_gap_conn_param_update(self->conn_handle, &request->conn_params); sd_ble_gap_conn_param_update(self->conn_handle, &request->conn_params);
break; break;
} }
case BLE_GAP_EVT_CONN_PARAM_UPDATE: { // 0x12
ble_gap_evt_conn_param_update_t *result =
&ble_evt->evt.gap_evt.params.conn_param_update;
#if CIRCUITPY_VERBOSE_BLE
ble_gap_conn_params_t *cp = &ble_evt->evt.gap_evt.params.conn_param_update.conn_params;
mp_printf(&mp_plat_print, "conn params updated: min_ci %d max_ci %d s_l %d sup_timeout %d\n", cp->min_conn_interval, cp->max_conn_interval, cp->slave_latency, cp->conn_sup_timeout);
#endif
memcpy(&self->conn_params, &result->conn_params, sizeof(ble_gap_conn_params_t));
self->conn_params_updating = false;
break;
}
case BLE_GAP_EVT_SEC_PARAMS_REQUEST: { case BLE_GAP_EVT_SEC_PARAMS_REQUEST: {
ble_gap_sec_keyset_t keyset = { ble_gap_sec_keyset_t keyset = {
.keys_own = { .keys_own = {
@ -162,7 +200,8 @@ bool connection_on_ble_evt(ble_evt_t *ble_evt, void *self_in) {
case BLE_GAP_EVT_AUTH_STATUS: { // 0x19 case BLE_GAP_EVT_AUTH_STATUS: { // 0x19
// Pairing process completed // Pairing process completed
ble_gap_evt_auth_status_t* status = &ble_evt->evt.gap_evt.params.auth_status; ble_gap_evt_auth_status_t* status = &ble_evt->evt.gap_evt.params.auth_status;
if (BLE_GAP_SEC_STATUS_SUCCESS == status->auth_status) { self->sec_status = status->auth_status;
if (status->auth_status == BLE_GAP_SEC_STATUS_SUCCESS) {
// TODO _ediv = bonding_keys->own_enc.master_id.ediv; // TODO _ediv = bonding_keys->own_enc.master_id.ediv;
self->pair_status = PAIR_PAIRED; self->pair_status = PAIR_PAIRED;
} else { } else {
@ -209,11 +248,6 @@ bool connection_on_ble_evt(ble_evt_t *ble_evt, void *self_in) {
default: default:
// For debugging.
if (dump_events) {
mp_printf(&mp_plat_print, "Unhandled connection event: 0x%04x\n", ble_evt->header.evt_id);
}
return false; return false;
} }
return true; return true;
@ -228,6 +262,13 @@ void bleio_connection_clear(bleio_connection_internal_t *self) {
memset(&self->bonding_keys, 0, sizeof(self->bonding_keys)); memset(&self->bonding_keys, 0, sizeof(self->bonding_keys));
} }
bool common_hal_bleio_connection_get_paired(bleio_connection_obj_t *self) {
if (self->connection == NULL) {
return false;
}
return self->connection->pair_status == PAIR_PAIRED;
}
bool common_hal_bleio_connection_get_connected(bleio_connection_obj_t *self) { bool common_hal_bleio_connection_get_connected(bleio_connection_obj_t *self) {
if (self->connection == NULL) { if (self->connection == NULL) {
return false; return false;
@ -239,35 +280,47 @@ void common_hal_bleio_connection_disconnect(bleio_connection_internal_t *self) {
sd_ble_gap_disconnect(self->conn_handle, BLE_HCI_REMOTE_USER_TERMINATED_CONNECTION); sd_ble_gap_disconnect(self->conn_handle, BLE_HCI_REMOTE_USER_TERMINATED_CONNECTION);
} }
void common_hal_bleio_connection_pair(bleio_connection_internal_t *self) { void common_hal_bleio_connection_pair(bleio_connection_internal_t *self, bool bond) {
self->pair_status = PAIR_WAITING; self->pair_status = PAIR_WAITING;
uint32_t err_code = sd_ble_gap_authenticate(self->conn_handle, &pairing_sec_params); check_nrf_error(sd_ble_gap_authenticate(self->conn_handle, &pairing_sec_params));
if (err_code != NRF_SUCCESS) { while (self->pair_status == PAIR_WAITING && !mp_hal_is_interrupted()) {
mp_raise_OSError_msg_varg(translate("Failed to start pairing, NRF_ERROR_%q"), MP_OBJ_QSTR_VALUE(base_error_messages[err_code - NRF_ERROR_BASE_NUM]));
}
while (self->pair_status == PAIR_WAITING) {
RUN_BACKGROUND_TASKS; RUN_BACKGROUND_TASKS;
} }
if (mp_hal_is_interrupted()) {
if (self->pair_status == PAIR_NOT_PAIRED) { return;
mp_raise_OSError_msg(translate("Failed to pair"));
} }
check_sec_status(self->sec_status);
} }
mp_float_t common_hal_bleio_connection_get_connection_interval(bleio_connection_internal_t *self) {
while (self->conn_params_updating && !mp_hal_is_interrupted()) {
RUN_BACKGROUND_TASKS;
}
return 1.25f * self->conn_params.min_conn_interval;
}
void common_hal_bleio_connection_set_connection_interval(bleio_connection_internal_t *self, mp_float_t new_interval) {
self->conn_params_updating = true;
uint16_t interval = new_interval / 1.25f;
self->conn_params.min_conn_interval = interval;
self->conn_params.max_conn_interval = interval;
uint32_t status = NRF_ERROR_BUSY;
while (status == NRF_ERROR_BUSY) {
status = sd_ble_gap_conn_param_update(self->conn_handle, &self->conn_params);
RUN_BACKGROUND_TASKS;
}
check_nrf_error(status);
}
// service_uuid may be NULL, to discover all services. // service_uuid may be NULL, to discover all services.
STATIC bool discover_next_services(bleio_connection_internal_t* connection, uint16_t start_handle, ble_uuid_t *service_uuid) { STATIC bool discover_next_services(bleio_connection_internal_t* connection, uint16_t start_handle, ble_uuid_t *service_uuid) {
m_discovery_successful = false; m_discovery_successful = false;
m_discovery_in_process = true; m_discovery_in_process = true;
uint32_t err_code = sd_ble_gattc_primary_services_discover(connection->conn_handle, start_handle, service_uuid); check_nrf_error(sd_ble_gattc_primary_services_discover(connection->conn_handle,
start_handle, service_uuid));
if (err_code != NRF_SUCCESS) {
mp_raise_OSError_msg(translate("Failed to discover services"));
}
// Wait for a discovery event. // Wait for a discovery event.
while (m_discovery_in_process) { while (m_discovery_in_process) {
@ -516,7 +569,7 @@ STATIC void discover_remote_services(bleio_connection_internal_t *self, mp_obj_t
mp_obj_t uuid_obj; mp_obj_t uuid_obj;
while ((uuid_obj = mp_iternext(iterable)) != MP_OBJ_STOP_ITERATION) { while ((uuid_obj = mp_iternext(iterable)) != MP_OBJ_STOP_ITERATION) {
if (!MP_OBJ_IS_TYPE(uuid_obj, &bleio_uuid_type)) { if (!MP_OBJ_IS_TYPE(uuid_obj, &bleio_uuid_type)) {
mp_raise_ValueError(translate("non-UUID found in service_uuids_whitelist")); mp_raise_TypeError(translate("non-UUID found in service_uuids_whitelist"));
} }
bleio_uuid_obj_t *uuid = MP_OBJ_TO_PTR(uuid_obj); bleio_uuid_obj_t *uuid = MP_OBJ_TO_PTR(uuid_obj);
@ -582,10 +635,9 @@ STATIC void discover_remote_services(bleio_connection_internal_t *self, mp_obj_t
// discovery call returns nothing. // discovery call returns nothing.
// discover_next_descriptors() appends to the descriptor_list. // discover_next_descriptors() appends to the descriptor_list.
while (next_desc_start_handle <= service->end_handle && while (next_desc_start_handle <= service->end_handle &&
next_desc_start_handle < next_desc_end_handle && next_desc_start_handle <= next_desc_end_handle &&
discover_next_descriptors(self, characteristic, discover_next_descriptors(self, characteristic,
next_desc_start_handle, next_desc_end_handle)) { next_desc_start_handle, next_desc_end_handle)) {
// Get the most recently discovered descriptor, and then ask for descriptors // Get the most recently discovered descriptor, and then ask for descriptors
// whose handles start after that descriptor's handle. // whose handles start after that descriptor's handle.
const bleio_descriptor_obj_t *descriptor = characteristic->descriptor_list; const bleio_descriptor_obj_t *descriptor = characteristic->descriptor_list;
@ -599,8 +651,10 @@ STATIC void discover_remote_services(bleio_connection_internal_t *self, mp_obj_t
ble_drv_remove_event_handler(discovery_on_ble_evt, self); ble_drv_remove_event_handler(discovery_on_ble_evt, self);
} }
mp_obj_tuple_t *common_hal_bleio_connection_discover_remote_services(bleio_connection_obj_t *self, mp_obj_t service_uuids_whitelist) { mp_obj_tuple_t *common_hal_bleio_connection_discover_remote_services(bleio_connection_obj_t *self, mp_obj_t service_uuids_whitelist) {
discover_remote_services(self->connection, service_uuids_whitelist); discover_remote_services(self->connection, service_uuids_whitelist);
bleio_connection_ensure_connected(self);
// Convert to a tuple and then clear the list so the callee will take ownership. // Convert to a tuple and then clear the list so the callee will take ownership.
mp_obj_tuple_t *services_tuple = service_linked_list_to_tuple(self->connection->remote_service_list); mp_obj_tuple_t *services_tuple = service_linked_list_to_tuple(self->connection->remote_service_list);
self->connection->remote_service_list = NULL; self->connection->remote_service_list = NULL;
@ -608,7 +662,6 @@ mp_obj_tuple_t *common_hal_bleio_connection_discover_remote_services(bleio_conne
return services_tuple; return services_tuple;
} }
uint16_t bleio_connection_get_conn_handle(bleio_connection_obj_t *self) { uint16_t bleio_connection_get_conn_handle(bleio_connection_obj_t *self) {
if (self == NULL || self->connection == NULL) { if (self == NULL || self->connection == NULL) {
return BLE_CONN_HANDLE_INVALID; return BLE_CONN_HANDLE_INVALID;

View File

@ -60,8 +60,11 @@ typedef struct {
bonding_keys_t bonding_keys; bonding_keys_t bonding_keys;
uint16_t ediv; uint16_t ediv;
pair_status_t pair_status; pair_status_t pair_status;
uint8_t sec_status; // Internal security status.
mp_obj_t connection_obj; mp_obj_t connection_obj;
ble_drv_evt_handler_entry_t handler_entry; ble_drv_evt_handler_entry_t handler_entry;
ble_gap_conn_params_t conn_params;
volatile bool conn_params_updating;
} bleio_connection_internal_t; } bleio_connection_internal_t;
typedef struct { typedef struct {

View File

@ -56,10 +56,8 @@ uint32_t _common_hal_bleio_service_construct(bleio_service_obj_t *self, bleio_uu
} }
void common_hal_bleio_service_construct(bleio_service_obj_t *self, bleio_uuid_obj_t *uuid, bool is_secondary) { void common_hal_bleio_service_construct(bleio_service_obj_t *self, bleio_uuid_obj_t *uuid, bool is_secondary) {
const uint32_t err_code = _common_hal_bleio_service_construct(self, uuid, is_secondary, mp_obj_new_list(0, NULL)); check_nrf_error(_common_hal_bleio_service_construct(self, uuid, is_secondary,
if (err_code != NRF_SUCCESS) { mp_obj_new_list(0, NULL)));
mp_raise_OSError_msg_varg(translate("Failed to create service, NRF_ERROR_%q"), MP_OBJ_QSTR_VALUE(base_error_messages[err_code - NRF_ERROR_BASE_NUM]));
}
} }
void bleio_service_from_connection(bleio_service_obj_t *self, mp_obj_t connection) { void bleio_service_from_connection(bleio_service_obj_t *self, mp_obj_t connection) {
@ -121,6 +119,10 @@ void common_hal_bleio_service_add_characteristic(bleio_service_obj_t *self,
bleio_attribute_gatts_set_security_mode(&char_attr_md.read_perm, characteristic->read_perm); bleio_attribute_gatts_set_security_mode(&char_attr_md.read_perm, characteristic->read_perm);
bleio_attribute_gatts_set_security_mode(&char_attr_md.write_perm, characteristic->write_perm); bleio_attribute_gatts_set_security_mode(&char_attr_md.write_perm, characteristic->write_perm);
#if CIRCUITPY_VERBOSE_BLE
// Turn on read authorization so that we receive an event to print on every read.
char_attr_md.rd_auth = true;
#endif
ble_gatts_attr_t char_attr = { ble_gatts_attr_t char_attr = {
.p_uuid = &char_uuid, .p_uuid = &char_uuid,
@ -133,16 +135,15 @@ void common_hal_bleio_service_add_characteristic(bleio_service_obj_t *self,
ble_gatts_char_handles_t char_handles; ble_gatts_char_handles_t char_handles;
uint32_t err_code; check_nrf_error(sd_ble_gatts_characteristic_add(self->handle, &char_md, &char_attr, &char_handles));
err_code = sd_ble_gatts_characteristic_add(self->handle, &char_md, &char_attr, &char_handles);
if (err_code != NRF_SUCCESS) {
mp_raise_OSError_msg_varg(translate("Failed to add characteristic, NRF_ERROR_%q"), MP_OBJ_QSTR_VALUE(base_error_messages[err_code - NRF_ERROR_BASE_NUM]));
}
characteristic->user_desc_handle = char_handles.user_desc_handle; characteristic->user_desc_handle = char_handles.user_desc_handle;
characteristic->cccd_handle = char_handles.cccd_handle; characteristic->cccd_handle = char_handles.cccd_handle;
characteristic->sccd_handle = char_handles.sccd_handle; characteristic->sccd_handle = char_handles.sccd_handle;
characteristic->handle = char_handles.value_handle; characteristic->handle = char_handles.value_handle;
#if CIRCUITPY_VERBOSE_BLE
mp_printf(&mp_plat_print, "Char handle %x user %x cccd %x sccd %x\n", characteristic->handle, characteristic->user_desc_handle, characteristic->cccd_handle, characteristic->sccd_handle);
#endif
mp_obj_list_append(self->characteristic_list, MP_OBJ_FROM_PTR(characteristic)); mp_obj_list_append(self->characteristic_list, MP_OBJ_FROM_PTR(characteristic));
} }

View File

@ -49,10 +49,7 @@ void common_hal_bleio_uuid_construct(bleio_uuid_obj_t *self, uint32_t uuid16, co
memcpy(vs_uuid.uuid128, uuid128, sizeof(vs_uuid.uuid128)); memcpy(vs_uuid.uuid128, uuid128, sizeof(vs_uuid.uuid128));
// Register this vendor-specific UUID. Bytes 12 and 13 will be zero. // Register this vendor-specific UUID. Bytes 12 and 13 will be zero.
const uint32_t err_code = sd_ble_uuid_vs_add(&vs_uuid, &self->nrf_ble_uuid.type); check_nrf_error(sd_ble_uuid_vs_add(&vs_uuid, &self->nrf_ble_uuid.type));
if (err_code != NRF_SUCCESS) {
mp_raise_OSError_msg_varg(translate("Failed to register Vendor-Specific UUID, err 0x%04x"), err_code);
}
vm_used_ble = true; vm_used_ble = true;
} }
} }
@ -67,11 +64,7 @@ uint32_t common_hal_bleio_uuid_get_uuid16(bleio_uuid_obj_t *self) {
void common_hal_bleio_uuid_get_uuid128(bleio_uuid_obj_t *self, uint8_t uuid128[16]) { void common_hal_bleio_uuid_get_uuid128(bleio_uuid_obj_t *self, uint8_t uuid128[16]) {
uint8_t length; uint8_t length;
const uint32_t err_code = sd_ble_uuid_encode(&self->nrf_ble_uuid, &length, uuid128); check_nrf_error(sd_ble_uuid_encode(&self->nrf_ble_uuid, &length, uuid128));
if (err_code != NRF_SUCCESS) {
mp_raise_OSError_msg_varg(translate("Could not decode ble_uuid, err 0x%04x"), err_code);
}
} }
void common_hal_bleio_uuid_pack_into(bleio_uuid_obj_t *self, uint8_t* buf) { void common_hal_bleio_uuid_pack_into(bleio_uuid_obj_t *self, uint8_t* buf) {
@ -85,7 +78,7 @@ void common_hal_bleio_uuid_pack_into(bleio_uuid_obj_t *self, uint8_t* buf) {
void bleio_uuid_construct_from_nrf_ble_uuid(bleio_uuid_obj_t *self, ble_uuid_t *nrf_ble_uuid) { void bleio_uuid_construct_from_nrf_ble_uuid(bleio_uuid_obj_t *self, ble_uuid_t *nrf_ble_uuid) {
if (nrf_ble_uuid->type == BLE_UUID_TYPE_UNKNOWN) { if (nrf_ble_uuid->type == BLE_UUID_TYPE_UNKNOWN) {
mp_raise_RuntimeError(translate("Unexpected nrfx uuid type")); mp_raise_bleio_BluetoothError(translate("Unexpected nrfx uuid type"));
} }
self->nrf_ble_uuid.uuid = nrf_ble_uuid->uuid; self->nrf_ble_uuid.uuid = nrf_ble_uuid->uuid;
self->nrf_ble_uuid.type = nrf_ble_uuid->type; self->nrf_ble_uuid.type = nrf_ble_uuid->type;

View File

@ -40,28 +40,49 @@
#include "common-hal/_bleio/__init__.h" #include "common-hal/_bleio/__init__.h"
const mp_obj_t base_error_messages[20] = { void check_nrf_error(uint32_t err_code) {
MP_ROM_QSTR(MP_QSTR_SUCCESS), if (err_code == NRF_SUCCESS) {
MP_ROM_QSTR(MP_QSTR_SVC_HANDLER_MISSING), return;
MP_ROM_QSTR(MP_QSTR_SOFTDEVICE_NOT_ENABLED), }
MP_ROM_QSTR(MP_QSTR_INTERNAL), switch (err_code) {
MP_ROM_QSTR(MP_QSTR_NO_MEM), case NRF_ERROR_TIMEOUT:
MP_ROM_QSTR(MP_QSTR_NOT_FOUND), mp_raise_msg(&mp_type_TimeoutError, NULL);
MP_ROM_QSTR(MP_QSTR_NOT_SUPPORTED), return;
MP_ROM_QSTR(MP_QSTR_INVALID_PARAM), default:
MP_ROM_QSTR(MP_QSTR_INVALID_STATE), mp_raise_bleio_BluetoothError(translate("Unknown soft device error: %04x"), err_code);
MP_ROM_QSTR(MP_QSTR_INVALID_LENGTH), break;
MP_ROM_QSTR(MP_QSTR_INVALID_FLAGS), }
MP_ROM_QSTR(MP_QSTR_INVALID_DATA), }
MP_ROM_QSTR(MP_QSTR_DATA_SIZE),
MP_ROM_QSTR(MP_QSTR_TIMEOUT), void check_gatt_status(uint16_t gatt_status) {
MP_ROM_QSTR(MP_QSTR_NULL), if (gatt_status == BLE_GATT_STATUS_SUCCESS) {
MP_ROM_QSTR(MP_QSTR_FORBIDDEN), return;
MP_ROM_QSTR(MP_QSTR_INVALID_ADDR), }
MP_ROM_QSTR(MP_QSTR_BUSY), switch (gatt_status) {
MP_ROM_QSTR(MP_QSTR_CONN_COUNT), case BLE_GATT_STATUS_ATTERR_INSUF_AUTHENTICATION:
MP_ROM_QSTR(MP_QSTR_RESOURCES), mp_raise_bleio_SecurityError(translate("Insufficient authentication"));
}; return;
case BLE_GATT_STATUS_ATTERR_INSUF_ENCRYPTION:
mp_raise_bleio_SecurityError(translate("Insufficient encryption"));
return;
default:
mp_raise_bleio_BluetoothError(translate("Unknown gatt error: 0x%04x"), gatt_status);
}
}
void check_sec_status(uint8_t sec_status) {
if (sec_status == BLE_GAP_SEC_STATUS_SUCCESS) {
return;
}
switch (sec_status) {
case BLE_GAP_SEC_STATUS_UNSPECIFIED:
mp_raise_bleio_SecurityError(translate("Unspecified issue. Can be that the pairing prompt on the other device was declined or ignored."));
return;
default:
mp_raise_bleio_SecurityError(translate("Unknown security error: 0x%04x"), sec_status);
}
}
// Turn off BLE on a reset or reload. // Turn off BLE on a reset or reload.
void bleio_reset() { void bleio_reset() {
@ -85,7 +106,7 @@ bleio_adapter_obj_t common_hal_bleio_adapter_obj = {
void common_hal_bleio_check_connected(uint16_t conn_handle) { void common_hal_bleio_check_connected(uint16_t conn_handle) {
if (conn_handle == BLE_CONN_HANDLE_INVALID) { if (conn_handle == BLE_CONN_HANDLE_INVALID) {
mp_raise_OSError_msg(translate("Not connected")); mp_raise_bleio_ConnectionError(translate("Not connected"));
} }
} }
@ -99,10 +120,7 @@ size_t common_hal_bleio_gatts_read(uint16_t handle, uint16_t conn_handle, uint8_
.len = len, .len = len,
}; };
uint32_t err_code = sd_ble_gatts_value_get(conn_handle, handle, &gatts_value); check_nrf_error(sd_ble_gatts_value_get(conn_handle, handle, &gatts_value));
if (err_code != NRF_SUCCESS) {
mp_raise_OSError_msg_varg(translate("Failed to read gatts value, err 0x%04x"), err_code);
}
return gatts_value.len; return gatts_value.len;
} }
@ -116,10 +134,7 @@ void common_hal_bleio_gatts_write(uint16_t handle, uint16_t conn_handle, mp_buff
.len = bufinfo->len, .len = bufinfo->len,
}; };
const uint32_t err_code = sd_ble_gatts_value_set(conn_handle, handle, &gatts_value); check_nrf_error(sd_ble_gatts_value_set(conn_handle, handle, &gatts_value));
if (err_code != NRF_SUCCESS) {
mp_raise_OSError_msg_varg(translate("Failed to write gatts value, err 0x%04x"), err_code);
}
} }
typedef struct { typedef struct {
@ -172,17 +187,16 @@ size_t common_hal_bleio_gattc_read(uint16_t handle, uint16_t conn_handle, uint8_
read_info.done = false; read_info.done = false;
ble_drv_add_event_handler(_on_gattc_read_rsp_evt, &read_info); ble_drv_add_event_handler(_on_gattc_read_rsp_evt, &read_info);
const uint32_t err_code = sd_ble_gattc_read(conn_handle, handle, 0); uint32_t nrf_error = NRF_ERROR_BUSY;
if (err_code != NRF_SUCCESS) { while (nrf_error == NRF_ERROR_BUSY) {
mp_raise_OSError_msg_varg(translate("Failed initiate attribute read, err 0x%04x"), err_code); nrf_error = sd_ble_gattc_read(conn_handle, handle, 0);
} }
check_nrf_error(nrf_error);
while (!read_info.done) { while (!read_info.done) {
RUN_BACKGROUND_TASKS; RUN_BACKGROUND_TASKS;
} }
if (read_info.status != BLE_GATT_STATUS_SUCCESS) { check_gatt_status(read_info.status);
mp_raise_OSError_msg_varg(translate("Failed to read attribute value, err 0x%04x"), read_info.status);
}
ble_drv_remove_event_handler(_on_gattc_read_rsp_evt, &read_info); ble_drv_remove_event_handler(_on_gattc_read_rsp_evt, &read_info);
return read_info.final_len; return read_info.final_len;
@ -213,7 +227,7 @@ void common_hal_bleio_gattc_write(uint16_t handle, uint16_t conn_handle, mp_buff
} }
// Some real error occurred. // Some real error occurred.
mp_raise_OSError_msg_varg(translate("Failed to write attribute value, err 0x%04x"), err_code); check_nrf_error(err_code);
} }
} }

View File

@ -39,7 +39,10 @@ typedef struct {
// 20 bytes max (23 - 3). // 20 bytes max (23 - 3).
#define GATT_MAX_DATA_LENGTH (BLE_GATT_ATT_MTU_DEFAULT - 3) #define GATT_MAX_DATA_LENGTH (BLE_GATT_ATT_MTU_DEFAULT - 3)
const mp_obj_t base_error_messages[20]; // These helpers raise the appropriate exceptions if the code doesn't equal success.
void check_nrf_error(uint32_t err_code);
void check_gatt_status(uint16_t gatt_status);
void check_sec_status(uint8_t sec_status);
// Track if the user code modified the BLE state to know if we need to undo it on reload. // Track if the user code modified the BLE state to know if we need to undo it on reload.
bool vm_used_ble; bool vm_used_ble;

View File

@ -108,6 +108,7 @@ void choose_i2s_clocking(audiobusio_i2sout_obj_t *self, uint32_t sample_rate) {
static void i2s_buffer_fill(audiobusio_i2sout_obj_t* self) { static void i2s_buffer_fill(audiobusio_i2sout_obj_t* self) {
void *buffer = self->buffers[self->next_buffer]; void *buffer = self->buffers[self->next_buffer];
void *buffer_start = buffer;
NRF_I2S->TXD.PTR = (uintptr_t)buffer; NRF_I2S->TXD.PTR = (uintptr_t)buffer;
self->next_buffer = !self->next_buffer; self->next_buffer = !self->next_buffer;
size_t bytesleft = self->buffer_length; size_t bytesleft = self->buffer_length;
@ -139,14 +140,14 @@ static void i2s_buffer_fill(audiobusio_i2sout_obj_t* self) {
uint16_t *bp = (uint16_t*)buffer; uint16_t *bp = (uint16_t*)buffer;
uint16_t *be = (uint16_t*)(buffer + bytecount); uint16_t *be = (uint16_t*)(buffer + bytecount);
uint16_t *sp = (uint16_t*)self->sample_data; uint16_t *sp = (uint16_t*)self->sample_data;
for (; bp != be; bp++) { for (; bp < be;) {
*bp++ = *sp++ + 0x8000; *bp++ = *sp++ + 0x8000;
} }
} else { } else {
uint8_t *bp = (uint8_t*)buffer; uint8_t *bp = (uint8_t*)buffer;
uint8_t *be = (uint8_t*)(buffer + bytecount); uint8_t *be = (uint8_t*)(buffer + bytecount);
uint8_t *sp = (uint8_t*)self->sample_data; uint8_t *sp = (uint8_t*)self->sample_data;
for (; bp != be; bp++) { for (; bp < be;) {
*bp++ = *sp++ + 0x80; *bp++ = *sp++ + 0x80;
} }
} }
@ -157,6 +158,7 @@ static void i2s_buffer_fill(audiobusio_i2sout_obj_t* self) {
// Find the last frame of real audio data and replicate its samples until // Find the last frame of real audio data and replicate its samples until
// you have 32 bits worth, which is the fundamental unit of nRF I2S DMA // you have 32 bits worth, which is the fundamental unit of nRF I2S DMA
if(buffer != buffer_start) {
if (self->bytes_per_sample == 1 && self->channel_count == 1) { if (self->bytes_per_sample == 1 && self->channel_count == 1) {
// For 8-bit mono, 4 copies of the final sample are required // For 8-bit mono, 4 copies of the final sample are required
self->hold_value = 0x01010101 * *(uint8_t*)(buffer-1); self->hold_value = 0x01010101 * *(uint8_t*)(buffer-1);
@ -167,6 +169,7 @@ static void i2s_buffer_fill(audiobusio_i2sout_obj_t* self) {
// For 8-bit stereo and 16-bit mono, 2 copies of the final sample are required // For 8-bit stereo and 16-bit mono, 2 copies of the final sample are required
self->hold_value = 0x00010001 * *(uint16_t*)(buffer-2); self->hold_value = 0x00010001 * *(uint16_t*)(buffer-2);
} }
}
// Emulate pausing and stopping by filling the DMA buffer with copies of // Emulate pausing and stopping by filling the DMA buffer with copies of
// the last sample. This includes the case where this iteration of // the last sample. This includes the case where this iteration of
@ -218,6 +221,8 @@ void common_hal_audiobusio_i2sout_deinit(audiobusio_i2sout_obj_t* self) {
if (common_hal_audiobusio_i2sout_deinited(self)) { if (common_hal_audiobusio_i2sout_deinited(self)) {
return; return;
} }
NRF_I2S->TASKS_STOP = 1;
NRF_I2S->ENABLE = I2S_ENABLE_ENABLE_Disabled;
reset_pin_number(self->bit_clock_pin_number); reset_pin_number(self->bit_clock_pin_number);
self->bit_clock_pin_number = 0xff; self->bit_clock_pin_number = 0xff;
reset_pin_number(self->word_select_pin_number); reset_pin_number(self->word_select_pin_number);
@ -240,12 +245,20 @@ void common_hal_audiobusio_i2sout_play(audiobusio_i2sout_obj_t* self,
uint32_t max_buffer_length; uint32_t max_buffer_length;
bool single_buffer, samples_signed; bool single_buffer, samples_signed;
audiosample_get_buffer_structure(sample, /* single channel */ false, audiosample_get_buffer_structure(sample, /* single channel */ true,
&single_buffer, &samples_signed, &max_buffer_length, &single_buffer, &samples_signed, &max_buffer_length,
&self->channel_count); &self->channel_count);
self->single_buffer = single_buffer; self->single_buffer = single_buffer;
self->samples_signed = samples_signed; self->samples_signed = samples_signed;
NRF_I2S->CONFIG.SWIDTH = self->bytes_per_sample == 1
? I2S_CONFIG_SWIDTH_SWIDTH_8Bit
: I2S_CONFIG_SWIDTH_SWIDTH_16Bit;
NRF_I2S->CONFIG.CHANNELS = self->channel_count == 1
? I2S_CONFIG_CHANNELS_CHANNELS_Left
: I2S_CONFIG_CHANNELS_CHANNELS_Stereo;
choose_i2s_clocking(self, sample_rate); choose_i2s_clocking(self, sample_rate);
/* Allocate buffers based on a maximum duration /* Allocate buffers based on a maximum duration
* This duration was chosen empirically based on what would * This duration was chosen empirically based on what would
@ -269,9 +282,6 @@ void common_hal_audiobusio_i2sout_play(audiobusio_i2sout_obj_t* self,
self->stopping = false; self->stopping = false;
i2s_buffer_fill(self); i2s_buffer_fill(self);
NRF_I2S->CONFIG.CHANNELS = self->channel_count == 1 ? I2S_CONFIG_CHANNELS_CHANNELS_Left : I2S_CONFIG_CHANNELS_CHANNELS_Stereo;
NRF_I2S->RXTXD.MAXCNT = self->buffer_length / 4; NRF_I2S->RXTXD.MAXCNT = self->buffer_length / 4;
NRF_I2S->ENABLE = I2S_ENABLE_ENABLE_Enabled; NRF_I2S->ENABLE = I2S_ENABLE_ENABLE_Enabled;

View File

@ -231,10 +231,10 @@ size_t common_hal_busio_uart_read(busio_uart_obj_t *self, uint8_t *data, size_t
} }
size_t rx_bytes = 0; size_t rx_bytes = 0;
uint64_t start_ticks = ticks_ms; uint64_t start_ticks = supervisor_ticks_ms64();
// Wait for all bytes received or timeout // Wait for all bytes received or timeout
while ( (ringbuf_count(&self->rbuf) < len) && (ticks_ms - start_ticks < self->timeout_ms) ) { while ( (ringbuf_count(&self->rbuf) < len) && (supervisor_ticks_ms64() - start_ticks < self->timeout_ms) ) {
RUN_BACKGROUND_TASKS; RUN_BACKGROUND_TASKS;
// Allow user to break out of a timeout with a KeyboardInterrupt. // Allow user to break out of a timeout with a KeyboardInterrupt.
if ( mp_hal_is_interrupted() ) { if ( mp_hal_is_interrupted() ) {
@ -265,19 +265,6 @@ size_t common_hal_busio_uart_write (busio_uart_obj_t *self, const uint8_t *data,
if ( len == 0 ) return 0; if ( len == 0 ) return 0;
uint64_t start_ticks = ticks_ms;
// Wait for on-going transfer to complete
while ( nrfx_uarte_tx_in_progress(self->uarte) && (ticks_ms - start_ticks < self->timeout_ms) ) {
RUN_BACKGROUND_TASKS;
}
// Time up
if ( !(ticks_ms - start_ticks < self->timeout_ms) ) {
*errcode = MP_EAGAIN;
return MP_STREAM_ERROR;
}
// EasyDMA can only access SRAM // EasyDMA can only access SRAM
uint8_t * tx_buf = (uint8_t*) data; uint8_t * tx_buf = (uint8_t*) data;
if ( !nrfx_is_in_ram(data) ) { if ( !nrfx_is_in_ram(data) ) {
@ -290,7 +277,8 @@ size_t common_hal_busio_uart_write (busio_uart_obj_t *self, const uint8_t *data,
_VERIFY_ERR(*errcode); _VERIFY_ERR(*errcode);
(*errcode) = 0; (*errcode) = 0;
while ( nrfx_uarte_tx_in_progress(self->uarte) && (ticks_ms - start_ticks < self->timeout_ms) ) { // Wait for write to complete.
while ( nrfx_uarte_tx_in_progress(self->uarte) ) {
RUN_BACKGROUND_TASKS; RUN_BACKGROUND_TASKS;
} }
@ -310,6 +298,14 @@ void common_hal_busio_uart_set_baudrate(busio_uart_obj_t *self, uint32_t baudrat
nrf_uarte_baudrate_set(self->uarte->p_reg, get_nrf_baud(baudrate)); nrf_uarte_baudrate_set(self->uarte->p_reg, get_nrf_baud(baudrate));
} }
mp_float_t common_hal_busio_uart_get_timeout(busio_uart_obj_t *self) {
return (mp_float_t) (self->timeout_ms / 1000.0f);
}
void common_hal_busio_uart_set_timeout(busio_uart_obj_t *self, mp_float_t timeout) {
self->timeout_ms = timeout * 1000;
}
uint32_t common_hal_busio_uart_rx_characters_available(busio_uart_obj_t *self) { uint32_t common_hal_busio_uart_rx_characters_available(busio_uart_obj_t *self) {
return ringbuf_count(&self->rbuf); return ringbuf_count(&self->rbuf);
} }

View File

@ -29,7 +29,7 @@
#include "tick.h" #include "tick.h"
uint64_t common_hal_time_monotonic(void) { uint64_t common_hal_time_monotonic(void) {
return ticks_ms; return supervisor_ticks_ms64();
} }
void common_hal_time_delay_ms(uint32_t delay) { void common_hal_time_delay_ms(uint32_t delay) {

View File

@ -11,20 +11,33 @@ USB_SERIAL_NUMBER_LENGTH = 16
LONGINT_IMPL = MPZ LONGINT_IMPL = MPZ
# Audio via PWM # Audio via PWM
ifndef CIRCUITPY_AUDIOCORE
CIRCUITPY_AUDIOCORE = 1 CIRCUITPY_AUDIOCORE = 1
endif
CIRCUITPY_AUDIOIO = 0 CIRCUITPY_AUDIOIO = 0
# The ifndef's allow overriding in mpconfigboard.mk.
ifndef CIRCUITPY_AUDIOMIXER
CIRCUITPY_AUDIOMIXER = 1 CIRCUITPY_AUDIOMIXER = 1
endif
ifndef CIRCUITPY_AUDIOPWMIO
CIRCUITPY_AUDIOPWMIO = 1 CIRCUITPY_AUDIOPWMIO = 1
endif
ifndef CIRCUITPY_AUDIOBUSIO
CIRCUITPY_AUDIOBUSIO = 1 CIRCUITPY_AUDIOBUSIO = 1
endif
# No I2CSlave implementation # No I2CSlave implementation
CIRCUITPY_I2CSLAVE = 0 CIRCUITPY_I2CSLAVE = 0
# enable NVM
CIRCUITPY_NVM = 1
# enable RTC # enable RTC
ifndef CIRCUITPY_RTC
CIRCUITPY_RTC = 1 CIRCUITPY_RTC = 1
endif
# frequencyio not yet implemented # frequencyio not yet implemented
CIRCUITPY_FREQUENCYIO = 0 CIRCUITPY_FREQUENCYIO = 0

View File

@ -31,12 +31,13 @@
#include "py/mphal.h" #include "py/mphal.h"
#include "py/mpstate.h" #include "py/mpstate.h"
#include "py/gc.h" #include "py/gc.h"
#include "supervisor/shared/tick.h"
/*------------------------------------------------------------------*/ /*------------------------------------------------------------------*/
/* delay /* delay
*------------------------------------------------------------------*/ *------------------------------------------------------------------*/
void mp_hal_delay_ms(mp_uint_t delay) { void mp_hal_delay_ms(mp_uint_t delay) {
uint64_t start_tick = ticks_ms; uint64_t start_tick = supervisor_ticks_ms64();
uint64_t duration = 0; uint64_t duration = 0;
while (duration < delay) { while (duration < delay) {
RUN_BACKGROUND_TASKS; RUN_BACKGROUND_TASKS;
@ -45,7 +46,7 @@ void mp_hal_delay_ms(mp_uint_t delay) {
MP_STATE_VM(mp_pending_exception) == MP_OBJ_FROM_PTR(&MP_STATE_VM(mp_reload_exception))) { MP_STATE_VM(mp_pending_exception) == MP_OBJ_FROM_PTR(&MP_STATE_VM(mp_reload_exception))) {
break; break;
} }
duration = (ticks_ms - start_tick); duration = (supervisor_ticks_ms64() - start_tick);
// TODO(tannewt): Go to sleep for a little while while we wait. // TODO(tannewt): Go to sleep for a little while while we wait.
} }
} }

View File

@ -33,12 +33,11 @@
#include "lib/utils/interrupt_char.h" #include "lib/utils/interrupt_char.h"
#include "nrfx_uarte.h" #include "nrfx_uarte.h"
#include "py/mpconfig.h" #include "py/mpconfig.h"
#include "supervisor/shared/tick.h"
extern nrfx_uarte_t serial_instance; extern nrfx_uarte_t serial_instance;
extern volatile uint64_t ticks_ms; #define mp_hal_ticks_ms() ((mp_uint_t) supervisor_ticks_ms32())
#define mp_hal_ticks_ms() ((mp_uint_t) ticks_ms)
#define mp_hal_delay_us(us) NRFX_DELAY_US((uint32_t) (us)) #define mp_hal_delay_us(us) NRFX_DELAY_US((uint32_t) (us))
bool mp_hal_stdin_any(void); bool mp_hal_stdin_any(void);

View File

@ -26,31 +26,14 @@
#include "tick.h" #include "tick.h"
#include "supervisor/shared/autoreload.h" #include "supervisor/shared/tick.h"
#include "supervisor/filesystem.h"
#include "shared-module/gamepad/__init__.h" #include "shared-module/gamepad/__init__.h"
#include "shared-bindings/microcontroller/Processor.h" #include "shared-bindings/microcontroller/Processor.h"
#include "nrf.h" #include "nrf.h"
// Global millisecond tick count
volatile uint64_t ticks_ms = 0;
void SysTick_Handler(void) { void SysTick_Handler(void) {
// SysTick interrupt handler called when the SysTick timer reaches zero // Do things common to all ports when the tick occurs
// (every millisecond). supervisor_tick();
ticks_ms += 1;
#if CIRCUITPY_FILESYSTEM_FLUSH_INTERVAL_MS > 0
filesystem_tick();
#endif
#ifdef CIRCUITPY_AUTORELOAD_DELAY_MS
autoreload_tick();
#endif
#ifdef CIRCUITPY_GAMEPAD_TICKS
if (!(ticks_ms & CIRCUITPY_GAMEPAD_TICKS)) {
gamepad_tick();
}
#endif
} }
void tick_init() { void tick_init() {
@ -61,11 +44,11 @@ void tick_init() {
void tick_delay(uint32_t us) { void tick_delay(uint32_t us) {
uint32_t ticks_per_us = common_hal_mcu_processor_get_frequency() / 1000 / 1000; uint32_t ticks_per_us = common_hal_mcu_processor_get_frequency() / 1000 / 1000;
uint32_t us_between_ticks = SysTick->VAL / ticks_per_us; uint32_t us_between_ticks = SysTick->VAL / ticks_per_us;
uint64_t start_ms = ticks_ms; uint64_t start_ms = supervisor_ticks_ms64();
while (us > 1000) { while (us > 1000) {
while (ticks_ms == start_ms) {} while (supervisor_ticks_ms64() == start_ms) {}
us -= us_between_ticks; us -= us_between_ticks;
start_ms = ticks_ms; start_ms = supervisor_ticks_ms64();
us_between_ticks = 1000; us_between_ticks = 1000;
} }
while (SysTick->VAL > ((us_between_ticks - us) * ticks_per_us)) {} while (SysTick->VAL > ((us_between_ticks - us) * ticks_per_us)) {}
@ -74,11 +57,11 @@ void tick_delay(uint32_t us) {
// us counts down! // us counts down!
void current_tick(uint64_t* ms, uint32_t* us_until_ms) { void current_tick(uint64_t* ms, uint32_t* us_until_ms) {
uint32_t ticks_per_us = common_hal_mcu_processor_get_frequency() / 1000 / 1000; uint32_t ticks_per_us = common_hal_mcu_processor_get_frequency() / 1000 / 1000;
*ms = ticks_ms; *ms = supervisor_ticks_ms64();
*us_until_ms = SysTick->VAL / ticks_per_us; *us_until_ms = SysTick->VAL / ticks_per_us;
} }
void wait_until(uint64_t ms, uint32_t us_until_ms) { void wait_until(uint64_t ms, uint32_t us_until_ms) {
uint32_t ticks_per_us = common_hal_mcu_processor_get_frequency() / 1000 / 1000; uint32_t ticks_per_us = common_hal_mcu_processor_get_frequency() / 1000 / 1000;
while(ticks_ms <= ms && SysTick->VAL / ticks_per_us >= us_until_ms) {} while(supervisor_ticks_ms64() <= ms && SysTick->VAL / ticks_per_us >= us_until_ms) {}
} }

View File

@ -30,8 +30,6 @@
#include <stdint.h> #include <stdint.h>
extern volatile uint64_t ticks_ms;
extern struct timer_descriptor ms_timer; extern struct timer_descriptor ms_timer;
void tick_init(void); void tick_init(void);

View File

@ -36,6 +36,7 @@
#include "common-hal/microcontroller/Pin.h" #include "common-hal/microcontroller/Pin.h"
STATIC bool reserved_i2c[3]; STATIC bool reserved_i2c[3];
STATIC bool never_reset[3];
void i2c_reset(void) { void i2c_reset(void) {
//Note: I2Cs are also forcibly reset in construct, due to silicon error //Note: I2Cs are also forcibly reset in construct, due to silicon error
@ -48,11 +49,24 @@ void i2c_reset(void) {
__HAL_RCC_I2C2_CLK_DISABLE(); __HAL_RCC_I2C2_CLK_DISABLE();
#endif #endif
#ifdef I2C3 #ifdef I2C3
reserved_i2c[3] = false; reserved_i2c[2] = false;
__HAL_RCC_I2C3_CLK_DISABLE(); __HAL_RCC_I2C3_CLK_DISABLE();
#endif #endif
} }
void common_hal_busio_i2c_never_reset(busio_i2c_obj_t *self) {
for (size_t i = 0 ; i < MP_ARRAY_SIZE(mcu_i2c_banks); i++) {
if (self->handle.Instance == mcu_i2c_banks[i]) {
never_reset[i] = true;
never_reset_pin_number(self->scl->pin->port, self->scl->pin->number);
never_reset_pin_number(self->sda->pin->port, self->scl->pin->number);
break;
}
}
}
void common_hal_busio_i2c_construct(busio_i2c_obj_t *self, void common_hal_busio_i2c_construct(busio_i2c_obj_t *self,
const mcu_pin_obj_t* scl, const mcu_pin_obj_t* sda, uint32_t frequency, uint32_t timeout) { const mcu_pin_obj_t* scl, const mcu_pin_obj_t* sda, uint32_t frequency, uint32_t timeout) {
@ -166,19 +180,22 @@ void common_hal_busio_i2c_deinit(busio_i2c_obj_t *self) {
} }
#ifdef I2C1 #ifdef I2C1
if(self->handle.Instance==I2C1) { if(self->handle.Instance==I2C1) {
reserved_i2c[0] = 0; never_reset[0] = false;
reserved_i2c[0] = false;
__HAL_RCC_I2C1_CLK_DISABLE(); __HAL_RCC_I2C1_CLK_DISABLE();
} }
#endif #endif
#ifdef I2C2 #ifdef I2C2
if(self->handle.Instance==I2C2) { if(self->handle.Instance==I2C2) {
reserved_i2c[1] = 0; never_reset[1] = false;
reserved_i2c[1] = false;
__HAL_RCC_I2C2_CLK_DISABLE(); __HAL_RCC_I2C2_CLK_DISABLE();
} }
#endif #endif
#ifdef I2C3 #ifdef I2C3
if(self->handle.Instance==I2C3) { if(self->handle.Instance==I2C3) {
reserved_i2c[3] = 0; never_reset[2] = false;
reserved_i2c[2] = false;
__HAL_RCC_I2C3_CLK_DISABLE(); __HAL_RCC_I2C3_CLK_DISABLE();
} }
#endif #endif

View File

@ -36,46 +36,37 @@
#include "supervisor/shared/translate.h" #include "supervisor/shared/translate.h"
#include "common-hal/microcontroller/Pin.h" #include "common-hal/microcontroller/Pin.h"
STATIC bool reserved_spi[6]; #define MAX_SPI 6 //TODO; replace this as part of periph cleanup
STATIC bool never_reset_spi[6]; #define ALL_CLOCKS 0xFF
void spi_reset(void) { //arrays use 0 based numbering: SPI1 is stored at index 0
#ifdef SPI1 STATIC bool reserved_spi[MAX_SPI];
if(!never_reset_spi[0]) { STATIC bool never_reset_spi[MAX_SPI];
reserved_spi[0] = false;
__HAL_RCC_SPI1_CLK_DISABLE(); STATIC void spi_clock_enable(uint8_t mask);
} STATIC void spi_clock_disable(uint8_t mask);
#endif
STATIC uint32_t get_busclock(SPI_TypeDef * instance) {
//SPI2 and 3 are on PCLK1, if they exist.
#ifdef SPI2 #ifdef SPI2
if(!never_reset_spi[1]) { if(instance == SPI2) return HAL_RCC_GetPCLK1Freq();
reserved_spi[1] = false;
__HAL_RCC_SPI2_CLK_DISABLE();
}
#endif #endif
#ifdef SPI3 #ifdef SPI3
if(!never_reset_spi[2]) { if(instance == SPI3) return HAL_RCC_GetPCLK1Freq();
reserved_spi[2] = false;
__HAL_RCC_SPI3_CLK_DISABLE();
}
#endif #endif
#ifdef SPI4 return HAL_RCC_GetPCLK2Freq();
if(!never_reset_spi[3]) {
reserved_spi[3] = false;
__HAL_RCC_SPI4_CLK_DISABLE();
} }
#endif
#ifdef SPI5 void spi_reset(void) {
if(!never_reset_spi[4]) { uint16_t never_reset_mask = 0x00;
reserved_spi[4] = false; for(int i=0;i<MAX_SPI;i++) {
__HAL_RCC_SPI5_CLK_DISABLE(); if (!never_reset_spi[i]) {
reserved_spi[i] = 0x00;
} else {
never_reset_mask |= 1<<i;
} }
#endif
#ifdef SPI6
if(!never_reset_spi[5]) {
reserved_spi[5] = false;
__HAL_RCC_SPI6_CLK_DISABLE();
} }
#endif spi_clock_disable(ALL_CLOCKS & ~(never_reset_mask));
} }
void common_hal_busio_spi_construct(busio_spi_obj_t *self, void common_hal_busio_spi_construct(busio_spi_obj_t *self,
@ -152,42 +143,8 @@ void common_hal_busio_spi_construct(busio_spi_obj_t *self,
GPIO_InitStruct.Alternate = self->miso->altfn_index; GPIO_InitStruct.Alternate = self->miso->altfn_index;
HAL_GPIO_Init(pin_port(miso->port), &GPIO_InitStruct); HAL_GPIO_Init(pin_port(miso->port), &GPIO_InitStruct);
#ifdef SPI1 spi_clock_enable(1<<(self->sck->spi_index - 1));
if(SPIx==SPI1) { reserved_spi[self->sck->spi_index - 1] = true;
reserved_spi[0] = true;
__HAL_RCC_SPI1_CLK_ENABLE();
}
#endif
#ifdef SPI2
if(SPIx==SPI2) {
reserved_spi[1] = true;
__HAL_RCC_SPI2_CLK_ENABLE();
}
#endif
#ifdef SPI3
if(SPIx==SPI3) {
reserved_spi[2] = true;
__HAL_RCC_SPI3_CLK_ENABLE();
}
#endif
#ifdef SPI4
if(SPIx==SPI4) {
reserved_spi[3] = true;
__HAL_RCC_SPI4_CLK_ENABLE();
}
#endif
#ifdef SPI5
if(SPIx==SPI5) {
reserved_spi[4] = true;
__HAL_RCC_SPI5_CLK_ENABLE();
}
#endif
#ifdef SPI6
if(SPIx==SPI6) {
reserved_spi[5] = true;
__HAL_RCC_SPI6_CLK_ENABLE();
}
#endif
self->handle.Instance = SPIx; self->handle.Instance = SPIx;
self->handle.Init.Mode = SPI_MODE_MASTER; self->handle.Init.Mode = SPI_MODE_MASTER;
@ -205,10 +162,10 @@ void common_hal_busio_spi_construct(busio_spi_obj_t *self,
{ {
mp_raise_ValueError(translate("SPI Init Error")); mp_raise_ValueError(translate("SPI Init Error"));
} }
self->baudrate = (HAL_RCC_GetPCLK2Freq()/16); self->baudrate = (get_busclock(SPIx)/16);
self->prescaler = 16; self->prescaler = 16;
self->polarity = 0; self->polarity = 0;
self->phase = 1; self->phase = 0;
self->bits = 8; self->bits = 8;
claim_pin(sck); claim_pin(sck);
@ -233,42 +190,10 @@ bool common_hal_busio_spi_deinited(busio_spi_obj_t *self) {
} }
void common_hal_busio_spi_deinit(busio_spi_obj_t *self) { void common_hal_busio_spi_deinit(busio_spi_obj_t *self) {
#ifdef SPI1 spi_clock_disable(1<<(self->sck->spi_index - 1));
if(self->handle.Instance==SPI1) { reserved_spi[self->sck->spi_index - 1] = false;
reserved_spi[0] = false; never_reset_spi[self->sck->spi_index - 1] = false;
__HAL_RCC_SPI1_CLK_DISABLE();
}
#endif
#ifdef SPI2
if(self->handle.Instance==SPI2) {
reserved_spi[1] = false;
__HAL_RCC_SPI2_CLK_DISABLE();
}
#endif
#ifdef SPI3
if(self->handle.Instance==SPI3) {
reserved_spi[2] = false;
__HAL_RCC_SPI3_CLK_DISABLE();
}
#endif
#ifdef SPI4
if(self->handle.Instance==SPI4) {
reserved_spi[3] = false;
__HAL_RCC_SPI4_CLK_DISABLE();
}
#endif
#ifdef SPI5
if(self->handle.Instance==SPI5) {
reserved_spi[4] = false;
__HAL_RCC_SPI5_CLK_DISABLE();
}
#endif
#ifdef SPI6
if(self->handle.Instance==SPI6) {
reserved_spi[5] = false;
__HAL_RCC_SPI6_CLK_DISABLE();
}
#endif
reset_pin_number(self->sck->pin->port,self->sck->pin->number); reset_pin_number(self->sck->pin->port,self->sck->pin->number);
reset_pin_number(self->mosi->pin->port,self->mosi->pin->number); reset_pin_number(self->mosi->pin->port,self->mosi->pin->number);
reset_pin_number(self->miso->pin->port,self->miso->pin->number); reset_pin_number(self->miso->pin->port,self->miso->pin->number);
@ -277,7 +202,7 @@ void common_hal_busio_spi_deinit(busio_spi_obj_t *self) {
self->miso = mp_const_none; self->miso = mp_const_none;
} }
static uint32_t stm32_baud_to_spi_div(uint32_t baudrate, uint16_t * prescaler) { STATIC uint32_t stm32_baud_to_spi_div(uint32_t baudrate, uint16_t * prescaler, uint32_t busclock) {
static const uint32_t baud_map[8][2] = { static const uint32_t baud_map[8][2] = {
{2,SPI_BAUDRATEPRESCALER_2}, {2,SPI_BAUDRATEPRESCALER_2},
{4,SPI_BAUDRATEPRESCALER_4}, {4,SPI_BAUDRATEPRESCALER_4},
@ -292,7 +217,7 @@ static uint32_t stm32_baud_to_spi_div(uint32_t baudrate, uint16_t * prescaler) {
uint16_t divisor; uint16_t divisor;
do { do {
divisor = baud_map[i][0]; divisor = baud_map[i][0];
if (baudrate >= (HAL_RCC_GetPCLK2Freq()/divisor)) { if (baudrate >= (busclock/divisor)) {
*prescaler = divisor; *prescaler = divisor;
return baud_map[i][1]; return baud_map[i][1];
} }
@ -312,28 +237,12 @@ bool common_hal_busio_spi_configure(busio_spi_obj_t *self,
//Deinit SPI //Deinit SPI
HAL_SPI_DeInit(&self->handle); HAL_SPI_DeInit(&self->handle);
if (bits == 8) { self->handle.Init.DataSize = (bits == 16) ? SPI_DATASIZE_16BIT : SPI_DATASIZE_8BIT;
self->handle.Init.DataSize = SPI_DATASIZE_8BIT; self->handle.Init.CLKPolarity = (polarity) ? SPI_POLARITY_HIGH : SPI_POLARITY_LOW;
} else if (bits == 16) { self->handle.Init.CLKPhase = (phase) ? SPI_PHASE_2EDGE : SPI_PHASE_1EDGE;
self->handle.Init.DataSize = SPI_DATASIZE_16BIT;
} else {
return false;
}
if (polarity) {
self->handle.Init.CLKPolarity = SPI_POLARITY_HIGH;
} else {
self->handle.Init.CLKPolarity = SPI_POLARITY_LOW;
}
if (phase) {
self->handle.Init.CLKPhase = SPI_PHASE_2EDGE;
} else {
self->handle.Init.CLKPhase = SPI_PHASE_1EDGE;
}
self->handle.Init.BaudRatePrescaler = stm32_baud_to_spi_div(baudrate, &self->prescaler);
self->handle.Init.BaudRatePrescaler = stm32_baud_to_spi_div(baudrate, &self->prescaler,
get_busclock(self->handle.Instance));
self->handle.Init.Mode = SPI_MODE_MASTER; self->handle.Init.Mode = SPI_MODE_MASTER;
self->handle.Init.Direction = SPI_DIRECTION_2LINES; self->handle.Init.Direction = SPI_DIRECTION_2LINES;
self->handle.Init.NSS = SPI_NSS_SOFT; self->handle.Init.NSS = SPI_NSS_SOFT;
@ -413,3 +322,45 @@ uint8_t common_hal_busio_spi_get_phase(busio_spi_obj_t* self) {
uint8_t common_hal_busio_spi_get_polarity(busio_spi_obj_t* self) { uint8_t common_hal_busio_spi_get_polarity(busio_spi_obj_t* self) {
return self->polarity; return self->polarity;
} }
STATIC void spi_clock_enable(uint8_t mask) {
#ifdef SPI1
if (mask & 1<<0) __HAL_RCC_SPI1_CLK_ENABLE();
#endif
#ifdef SPI2
if (mask & 1<<1) __HAL_RCC_SPI2_CLK_ENABLE();
#endif
#ifdef SPI3
if (mask & 1<<2) __HAL_RCC_SPI3_CLK_ENABLE();
#endif
#ifdef SPI4
if (mask & 1<<3) __HAL_RCC_SPI4_CLK_ENABLE();
#endif
#ifdef SPI5
if (mask & 1<<4) __HAL_RCC_SPI5_CLK_ENABLE();
#endif
#ifdef SPI6
if (mask & 1<<5) __HAL_RCC_SPI6_CLK_ENABLE();
#endif
}
STATIC void spi_clock_disable(uint8_t mask) {
#ifdef SPI1
if (mask & 1<<0) __HAL_RCC_SPI1_CLK_DISABLE();
#endif
#ifdef SPI2
if (mask & 1<<1) __HAL_RCC_SPI2_CLK_DISABLE();
#endif
#ifdef SPI3
if (mask & 1<<2) __HAL_RCC_SPI3_CLK_DISABLE();
#endif
#ifdef SPI4
if (mask & 1<<3) __HAL_RCC_SPI4_CLK_DISABLE();
#endif
#ifdef SPI5
if (mask & 1<<4) __HAL_RCC_SPI5_CLK_DISABLE();
#endif
#ifdef SPI6
if (mask & 1<<5) __HAL_RCC_SPI6_CLK_DISABLE();
#endif
}

View File

@ -250,10 +250,10 @@ size_t common_hal_busio_uart_read(busio_uart_obj_t *self, uint8_t *data, size_t
} }
size_t rx_bytes = 0; size_t rx_bytes = 0;
uint64_t start_ticks = ticks_ms; uint64_t start_ticks = supervisor_ticks_ms64();
// Wait for all bytes received or timeout, same as nrf // Wait for all bytes received or timeout, same as nrf
while ( (ringbuf_count(&self->rbuf) < len) && (ticks_ms - start_ticks < self->timeout_ms) ) { while ( (ringbuf_count(&self->rbuf) < len) && (supervisor_ticks_ms64() - start_ticks < self->timeout_ms) ) {
RUN_BACKGROUND_TASKS; RUN_BACKGROUND_TASKS;
//restart if it failed in the callback //restart if it failed in the callback
if (errflag != HAL_OK) { if (errflag != HAL_OK) {
@ -290,13 +290,15 @@ size_t common_hal_busio_uart_write(busio_uart_obj_t *self, const uint8_t *data,
bool write_err = false; //write error shouldn't disable interrupts bool write_err = false; //write error shouldn't disable interrupts
HAL_NVIC_DisableIRQ(self->irq); HAL_NVIC_DisableIRQ(self->irq);
if (HAL_UART_Transmit(&self->handle, (uint8_t*)data, len, self->timeout_ms) != HAL_OK) { if (HAL_UART_Transmit(&self->handle, (uint8_t*)data, len, HAL_MAX_DELAY) != HAL_OK) {
write_err = true; write_err = true;
} }
HAL_UART_Receive_IT(&self->handle, &self->rx_char, 1); HAL_UART_Receive_IT(&self->handle, &self->rx_char, 1);
HAL_NVIC_EnableIRQ(self->irq); HAL_NVIC_EnableIRQ(self->irq);
if (write_err) mp_raise_ValueError(translate("UART write error")); if (write_err) {
mp_raise_ValueError(translate("UART write error"));
}
return len; return len;
} }
@ -360,6 +362,14 @@ void common_hal_busio_uart_set_baudrate(busio_uart_obj_t *self, uint32_t baudrat
self->baudrate = baudrate; self->baudrate = baudrate;
} }
mp_float_t common_hal_busio_uart_get_timeout(busio_uart_obj_t *self) {
return (mp_float_t) (self->timeout_ms / 1000.0f);
}
void common_hal_busio_uart_set_timeout(busio_uart_obj_t *self, mp_float_t timeout) {
self->timeout_ms = timeout * 1000;
}
uint32_t common_hal_busio_uart_rx_characters_available(busio_uart_obj_t *self) { uint32_t common_hal_busio_uart_rx_characters_available(busio_uart_obj_t *self) {
return ringbuf_count(&self->rbuf); return ringbuf_count(&self->rbuf);
} }

View File

@ -47,7 +47,7 @@ digitalinout_result_t common_hal_digitalio_digitalinout_construct(
GPIO_InitStruct.Pin = pin_mask(self->pin->number); GPIO_InitStruct.Pin = pin_mask(self->pin->number);
GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
HAL_GPIO_Init(pin_port(self->pin->port), &GPIO_InitStruct); HAL_GPIO_Init(pin_port(self->pin->port), &GPIO_InitStruct);
return DIGITALINOUT_OK; return DIGITALINOUT_OK;
@ -73,7 +73,7 @@ void common_hal_digitalio_digitalinout_switch_to_input(
GPIO_InitStruct.Pin = pin_mask(self->pin->number); GPIO_InitStruct.Pin = pin_mask(self->pin->number);
GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
HAL_GPIO_Init(pin_port(self->pin->port), &GPIO_InitStruct); HAL_GPIO_Init(pin_port(self->pin->port), &GPIO_InitStruct);
common_hal_digitalio_digitalinout_set_pull(self, pull); common_hal_digitalio_digitalinout_set_pull(self, pull);
@ -114,7 +114,7 @@ void common_hal_digitalio_digitalinout_set_drive_mode(
GPIO_InitStruct.Mode = (drive_mode == DRIVE_MODE_OPEN_DRAIN ? GPIO_InitStruct.Mode = (drive_mode == DRIVE_MODE_OPEN_DRAIN ?
GPIO_MODE_OUTPUT_OD : GPIO_MODE_OUTPUT_PP); GPIO_MODE_OUTPUT_OD : GPIO_MODE_OUTPUT_PP);
GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
HAL_GPIO_Init(pin_port(self->pin->port), &GPIO_InitStruct); HAL_GPIO_Init(pin_port(self->pin->port), &GPIO_InitStruct);
} }

View File

@ -0,0 +1,68 @@
/*
* This file is part of the MicroPython project, http://micropython.org/
*
* The MIT License (MIT)
*
* Copyright (c) 2019 Lucian Copeland for Adafruit Industries
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
#include "shared-bindings/displayio/ParallelBus.h"
#include <stdint.h>
#include "common-hal/microcontroller/Pin.h"
#include "py/runtime.h"
#include "shared-bindings/digitalio/DigitalInOut.h"
#include "shared-bindings/microcontroller/__init__.h"
#include "tick.h"
void common_hal_displayio_parallelbus_construct(displayio_parallelbus_obj_t* self,
const mcu_pin_obj_t* data0, const mcu_pin_obj_t* command, const mcu_pin_obj_t* chip_select,
const mcu_pin_obj_t* write, const mcu_pin_obj_t* read, const mcu_pin_obj_t* reset) {
mp_raise_NotImplementedError(translate("ParallelBus not yet supported"));
}
void common_hal_displayio_parallelbus_deinit(displayio_parallelbus_obj_t* self) {
}
bool common_hal_displayio_parallelbus_reset(mp_obj_t obj) {
return false;
}
bool common_hal_displayio_parallelbus_bus_free(mp_obj_t obj) {
return false;
}
bool common_hal_displayio_parallelbus_begin_transaction(mp_obj_t obj) {
return false;
}
void common_hal_displayio_parallelbus_send(mp_obj_t obj, display_byte_type_t byte_type, display_chip_select_behavior_t chip_select, uint8_t *data, uint32_t data_length) {
}
void common_hal_displayio_parallelbus_end_transaction(mp_obj_t obj) {
}

View File

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

View File

@ -48,9 +48,9 @@ STATIC uint32_t get_us(void) {
uint32_t ticks_per_us = HAL_RCC_GetSysClockFreq()/1000000; uint32_t ticks_per_us = HAL_RCC_GetSysClockFreq()/1000000;
uint32_t micros, sys_cycles; uint32_t micros, sys_cycles;
do { do {
micros = ticks_ms; micros = supervisor_ticks_ms32();
sys_cycles = SysTick->VAL; //counts backwards sys_cycles = SysTick->VAL; //counts backwards
} while (micros != ticks_ms); //try again if ticks_ms rolled over } while (micros != supervisor_ticks_ms32()); //try again if ticks_ms rolled over
return (micros * 1000) + (ticks_per_us * 1000 - sys_cycles) / ticks_per_us; return (micros * 1000) + (ticks_per_us * 1000 - sys_cycles) / ticks_per_us;
} }

View File

@ -28,6 +28,8 @@
#include "shared-bindings/neopixel_write/__init__.h" #include "shared-bindings/neopixel_write/__init__.h"
#include "tick.h" #include "tick.h"
#include "py/mperrno.h"
#include "py/runtime.h"
#include "common-hal/microcontroller/Pin.h" #include "common-hal/microcontroller/Pin.h"
#include "stm32f4xx_hal.h" #include "stm32f4xx_hal.h"
#include "stm32f4xx_ll_gpio.h" #include "stm32f4xx_ll_gpio.h"
@ -40,6 +42,9 @@ uint32_t next_start_tick_us = 1000;
#define MAGIC_800_T0H 2800000 // ~0.36 us -> 0.44 field #define MAGIC_800_T0H 2800000 // ~0.36 us -> 0.44 field
#define MAGIC_800_T1H 1350000 // ~0.74 us -> 0.84 field #define MAGIC_800_T1H 1350000 // ~0.74 us -> 0.84 field
#pragma GCC push_options
#pragma GCC optimize ("Os")
void common_hal_neopixel_write (const digitalio_digitalinout_obj_t* digitalinout, uint8_t *pixels, void common_hal_neopixel_write (const digitalio_digitalinout_obj_t* digitalinout, uint8_t *pixels,
uint32_t numBytes) { uint32_t numBytes) {
uint8_t *p = pixels, *end = p + numBytes, pix = *p++, mask = 0x80; uint8_t *p = pixels, *end = p + numBytes, pix = *p++, mask = 0x80;
@ -48,7 +53,7 @@ void common_hal_neopixel_write (const digitalio_digitalinout_obj_t* digitalinout
//assumes 800_000Hz frequency //assumes 800_000Hz frequency
//Theoretical values here are 800_000 -> 1.25us, 2500000->0.4us, 1250000->0.8us //Theoretical values here are 800_000 -> 1.25us, 2500000->0.4us, 1250000->0.8us
//But they don't work, possibly due to bad optimization? Use tested magic values instead //TODO: try to get dynamic weighting working again
uint32_t sys_freq = HAL_RCC_GetSysClockFreq(); uint32_t sys_freq = HAL_RCC_GetSysClockFreq();
uint32_t interval = sys_freq/MAGIC_800_INT; uint32_t interval = sys_freq/MAGIC_800_INT;
uint32_t t0 = (sys_freq/MAGIC_800_T0H); uint32_t t0 = (sys_freq/MAGIC_800_T0H);
@ -63,23 +68,22 @@ void common_hal_neopixel_write (const digitalio_digitalinout_obj_t* digitalinout
__disable_irq(); __disable_irq();
// Enable DWT in debug core. Useable when interrupts disabled, as opposed to Systick->VAL // Enable DWT in debug core. Useable when interrupts disabled, as opposed to Systick->VAL
//ITM->LAR = 0xC5ACCE55; //this should be required but isn't
CoreDebug->DEMCR |= CoreDebug_DEMCR_TRCENA_Msk; CoreDebug->DEMCR |= CoreDebug_DEMCR_TRCENA_Msk;
DWT->CTRL |= DWT_CTRL_CYCCNTENA_Msk; DWT->CTRL |= DWT_CTRL_CYCCNTENA_Msk;
DWT->CYCCNT = 0; DWT->CYCCNT = 0;
for(;;) { for(;;) {
cyc = (pix & mask) ? t1 : t0;
start = DWT->CYCCNT; start = DWT->CYCCNT;
LL_GPIO_SetOutputPin(p_port, p_mask); LL_GPIO_SetOutputPin(p_port, p_mask);
cyc = (pix & mask) ? t1 : t0; while((DWT->CYCCNT - start) < cyc);
while(DWT->CYCCNT - start < cyc);
LL_GPIO_ResetOutputPin(p_port, p_mask); LL_GPIO_ResetOutputPin(p_port, p_mask);
while((DWT->CYCCNT - start) < interval);
if(!(mask >>= 1)) { if(!(mask >>= 1)) {
if(p >= end) break; if(p >= end) break;
pix = *p++; pix = *p++;
mask = 0x80; mask = 0x80;
} }
while(DWT->CYCCNT - start < interval); //wait for interval to finish
} }
// Enable interrupts again // Enable interrupts again
@ -94,3 +98,5 @@ void common_hal_neopixel_write (const digitalio_digitalinout_obj_t* digitalinout
next_start_tick_us -= 100; next_start_tick_us -= 100;
} }
} }
#pragma GCC pop_options

View File

@ -29,7 +29,7 @@
#include "tick.h" #include "tick.h"
uint64_t common_hal_time_monotonic(void) { uint64_t common_hal_time_monotonic(void) {
return ticks_ms; return supervisor_ticks_ms64();
} }
void common_hal_time_delay_ms(uint32_t delay) { void common_hal_time_delay_ms(uint32_t delay) {

View File

@ -15,18 +15,59 @@ LONGINT_IMPL = MPZ
#Reduced feature set for early port #Reduced feature set for early port
CIRCUITPY_MINIMAL_BUILD = 1 CIRCUITPY_MINIMAL_BUILD = 1
# The ifndef's allow overriding in mpconfigboard.mk.
ifndef CIRCUITPY_BOARD
CIRCUITPY_BOARD = 1 CIRCUITPY_BOARD = 1
endif
ifndef CIRCUITPY_DIGITALIO
CIRCUITPY_DIGITALIO = 1 CIRCUITPY_DIGITALIO = 1
endif
ifndef CIRCUITPY_ANALOGIO
CIRCUITPY_ANALOGIO = 1 CIRCUITPY_ANALOGIO = 1
endif
ifndef CIRCUITPY_MICROCONTROLLER
CIRCUITPY_MICROCONTROLLER = 1 CIRCUITPY_MICROCONTROLLER = 1
endif
ifndef CIRCUITPY_BUSIO
CIRCUITPY_BUSIO = 1 CIRCUITPY_BUSIO = 1
endif
ifndef CIRCUITPY_PULSEIO
CIRCUITPY_PULSEIO = 1 CIRCUITPY_PULSEIO = 1
endif
ifndef CIRCUITPY_OS
CIRCUITPY_OS = 1 CIRCUITPY_OS = 1
endif
ifndef CIRCUITPY_STORAGE
CIRCUITPY_STORAGE = 1 CIRCUITPY_STORAGE = 1
endif
ifndef CIRCUITPY_RANDOM
CIRCUITPY_RANDOM = 1 CIRCUITPY_RANDOM = 1
endif
ifndef CRICUITPY_USB_HID
CIRCUITPY_USB_HID = 1 CIRCUITPY_USB_HID = 1
endif
ifndef CIRCUITPY_USB_MIDI
CIRCUITPY_USB_MIDI = 1 CIRCUITPY_USB_MIDI = 1
endif
ifndef CIRCUITPY_NEOPIXEL_WRITE
CIRCUITPY_NEOPIXEL_WRITE = 1 CIRCUITPY_NEOPIXEL_WRITE = 1
endif
ifndef
CIRCUITPY_DISPLAYIO = 1
endif
#ifeq ($(MCU_SUB_VARIANT), stm32f412zx) #ifeq ($(MCU_SUB_VARIANT), stm32f412zx)
#endif #endif

View File

@ -31,11 +31,13 @@
#include "py/mpstate.h" #include "py/mpstate.h"
#include "py/gc.h" #include "py/gc.h"
#include "supervisor/shared/tick.h"
/*------------------------------------------------------------------*/ /*------------------------------------------------------------------*/
/* delay /* delay
*------------------------------------------------------------------*/ *------------------------------------------------------------------*/
void mp_hal_delay_ms(mp_uint_t delay) { void mp_hal_delay_ms(mp_uint_t delay) {
uint64_t start_tick = ticks_ms; uint64_t start_tick = supervisor_ticks_ms64();
uint64_t duration = 0; uint64_t duration = 0;
while (duration < delay) { while (duration < delay) {
#ifdef MICROPY_VM_HOOK_LOOP #ifdef MICROPY_VM_HOOK_LOOP
@ -46,7 +48,7 @@ void mp_hal_delay_ms(mp_uint_t delay) {
MP_STATE_VM(mp_pending_exception) == MP_OBJ_FROM_PTR(&MP_STATE_VM(mp_reload_exception))) { MP_STATE_VM(mp_pending_exception) == MP_OBJ_FROM_PTR(&MP_STATE_VM(mp_reload_exception))) {
break; break;
} }
duration = (ticks_ms - start_tick); duration = (supervisor_ticks_ms64() - start_tick);
// TODO(tannewt): Go to sleep for a little while while we wait. // TODO(tannewt): Go to sleep for a little while while we wait.
} }
} }

View File

@ -32,10 +32,10 @@
#include "lib/utils/interrupt_char.h" #include "lib/utils/interrupt_char.h"
#include "py/mpconfig.h" #include "py/mpconfig.h"
#include "supervisor/shared/tick.h"
extern volatile uint64_t ticks_ms;
#define mp_hal_ticks_ms() ((mp_uint_t) ticks_ms) #define mp_hal_ticks_ms() ((mp_uint_t) supervisor_ticks_ms32())
//#define mp_hal_delay_us(us) NRFX_DELAY_US((uint32_t) (us)) //#define mp_hal_delay_us(us) NRFX_DELAY_US((uint32_t) (us))
bool mp_hal_stdin_any(void); bool mp_hal_stdin_any(void);

View File

@ -26,37 +26,23 @@
#include "tick.h" #include "tick.h"
#include "supervisor/shared/autoreload.h"
#include "supervisor/filesystem.h" #include "supervisor/filesystem.h"
#include "shared-module/gamepad/__init__.h" #include "supervisor/shared/tick.h"
#include "shared-bindings/microcontroller/Processor.h" #include "shared-bindings/microcontroller/Processor.h"
#include "stm32f4xx.h" #include "stm32f4xx.h"
// Global millisecond tick count
volatile uint64_t ticks_ms = 0;
void SysTick_Handler(void) { void SysTick_Handler(void) {
// SysTick interrupt handler called when the SysTick timer reaches zero // SysTick interrupt handler called when the SysTick timer reaches zero
// (every millisecond). // (every millisecond).
ticks_ms += 1;
#if CIRCUITPY_FILESYSTEM_FLUSH_INTERVAL_MS > 0 // Do things common to all ports when the tick occurs
filesystem_tick(); supervisor_tick();
#endif
#ifdef CIRCUITPY_AUTORELOAD_DELAY_MS
autoreload_tick();
#endif
#ifdef CIRCUITPY_GAMEPAD_TICKS
if (!(ticks_ms & CIRCUITPY_GAMEPAD_TICKS)) {
gamepad_tick();
}
#endif
} }
uint32_t HAL_GetTick(void) //override ST HAL uint32_t HAL_GetTick(void) //override ST HAL
{ {
return (uint32_t)ticks_ms; return (uint32_t)supervisor_ticks_ms32();
} }
void tick_init() { void tick_init() {
@ -72,11 +58,11 @@ void tick_init() {
void tick_delay(uint32_t us) { void tick_delay(uint32_t us) {
uint32_t ticks_per_us = SystemCoreClock / 1000 / 1000; uint32_t ticks_per_us = SystemCoreClock / 1000 / 1000;
uint32_t us_between_ticks = SysTick->VAL / ticks_per_us; uint32_t us_between_ticks = SysTick->VAL / ticks_per_us;
uint64_t start_ms = ticks_ms; uint64_t start_ms = supervisor_ticks_ms64();
while (us > 1000) { while (us > 1000) {
while (ticks_ms == start_ms) {} while (supervisor_ticks_ms64() == start_ms) {}
us -= us_between_ticks; us -= us_between_ticks;
start_ms = ticks_ms; start_ms = supervisor_ticks_ms64();
us_between_ticks = 1000; us_between_ticks = 1000;
} }
while (SysTick->VAL > ((us_between_ticks - us) * ticks_per_us)) {} while (SysTick->VAL > ((us_between_ticks - us) * ticks_per_us)) {}
@ -85,11 +71,11 @@ void tick_delay(uint32_t us) {
// us counts down! // us counts down!
void current_tick(uint64_t* ms, uint32_t* us_until_ms) { void current_tick(uint64_t* ms, uint32_t* us_until_ms) {
uint32_t ticks_per_us = SystemCoreClock / 1000 / 1000; uint32_t ticks_per_us = SystemCoreClock / 1000 / 1000;
*ms = ticks_ms; *ms = supervisor_ticks_ms32();
*us_until_ms = SysTick->VAL / ticks_per_us; *us_until_ms = SysTick->VAL / ticks_per_us;
} }
void wait_until(uint64_t ms, uint32_t us_until_ms) { void wait_until(uint64_t ms, uint32_t us_until_ms) {
uint32_t ticks_per_us = SystemCoreClock / 1000 / 1000; uint32_t ticks_per_us = SystemCoreClock / 1000 / 1000;
while(ticks_ms <= ms && SysTick->VAL / ticks_per_us >= us_until_ms) {} while(supervisor_ticks_ms64() <= ms && SysTick->VAL / ticks_per_us >= us_until_ms) {}
} }

View File

@ -30,8 +30,6 @@
#include <stdint.h> #include <stdint.h>
extern volatile uint64_t ticks_ms;
extern struct timer_descriptor ms_timer; extern struct timer_descriptor ms_timer;
void tick_init(void); void tick_init(void);

View File

@ -28,11 +28,12 @@
// sure that the same feature set and settings are used, such as in atmel-samd // sure that the same feature set and settings are used, such as in atmel-samd
// and nrf. // and nrf.
#include <stdint.h>
#ifndef __INCLUDED_MPCONFIG_CIRCUITPY_H #ifndef __INCLUDED_MPCONFIG_CIRCUITPY_H
#define __INCLUDED_MPCONFIG_CIRCUITPY_H #define __INCLUDED_MPCONFIG_CIRCUITPY_H
#include <stdint.h>
#include <stdatomic.h>
// This is CircuitPython. // This is CircuitPython.
#define CIRCUITPY 1 #define CIRCUITPY 1
@ -652,17 +653,19 @@ extern const struct _mp_obj_module_t ustack_module;
FLASH_ROOT_POINTERS \ FLASH_ROOT_POINTERS \
NETWORK_ROOT_POINTERS \ NETWORK_ROOT_POINTERS \
void run_background_tasks(void); void supervisor_run_background_tasks_if_tick(void);
#define RUN_BACKGROUND_TASKS (run_background_tasks()) #define RUN_BACKGROUND_TASKS (supervisor_run_background_tasks_if_tick())
// TODO: Used in wiznet5k driver, but may not be needed in the long run. // TODO: Used in wiznet5k driver, but may not be needed in the long run.
#define MICROPY_THREAD_YIELD() #define MICROPY_THREAD_YIELD()
#define MICROPY_VM_HOOK_LOOP run_background_tasks(); #define MICROPY_VM_HOOK_LOOP RUN_BACKGROUND_TASKS;
#define MICROPY_VM_HOOK_RETURN run_background_tasks(); #define MICROPY_VM_HOOK_RETURN RUN_BACKGROUND_TASKS;
#define CIRCUITPY_AUTORELOAD_DELAY_MS 500 #define CIRCUITPY_AUTORELOAD_DELAY_MS 500
#define CIRCUITPY_FILESYSTEM_FLUSH_INTERVAL_MS 1000 #define CIRCUITPY_FILESYSTEM_FLUSH_INTERVAL_MS 1000
#define CIRCUITPY_BOOT_OUTPUT_FILE "/boot_out.txt" #define CIRCUITPY_BOOT_OUTPUT_FILE "/boot_out.txt"
#define CIRCUITPY_VERBOSE_BLE 0
#endif // __INCLUDED_MPCONFIG_CIRCUITPY_H #endif // __INCLUDED_MPCONFIG_CIRCUITPY_H

View File

@ -170,7 +170,7 @@ CIRCUITPY_NEOPIXEL_WRITE = $(CIRCUITPY_DEFAULT_BUILD)
endif endif
CFLAGS += -DCIRCUITPY_NEOPIXEL_WRITE=$(CIRCUITPY_NEOPIXEL_WRITE) CFLAGS += -DCIRCUITPY_NEOPIXEL_WRITE=$(CIRCUITPY_NEOPIXEL_WRITE)
# Only certain boards support NETWORK (Ethernet) # Enabled on SAMD51. Won't fit on SAMD21 builds. Not tested on nRF or STM32F4 builds.
ifndef CIRCUITPY_NETWORK ifndef CIRCUITPY_NETWORK
CIRCUITPY_NETWORK = 0 CIRCUITPY_NETWORK = 0
endif endif

View File

@ -775,13 +775,22 @@ STATIC bool compile_built_in_decorator(compiler_t *comp, int name_len, mp_parse_
qstr attr = MP_PARSE_NODE_LEAF_ARG(name_nodes[1]); qstr attr = MP_PARSE_NODE_LEAF_ARG(name_nodes[1]);
if (attr == MP_QSTR_bytecode) { if (attr == MP_QSTR_bytecode) {
*emit_options = MP_EMIT_OPT_BYTECODE; *emit_options = MP_EMIT_OPT_BYTECODE;
#if MICROPY_EMIT_NATIVE // @micropython.native decorator.
} else if (attr == MP_QSTR_native) { } else if (attr == MP_QSTR_native) {
// Different from MicroPython: native doesn't raise SyntaxError if native support isn't
// compiled, it just passes through the function unmodified.
#if MICROPY_EMIT_NATIVE
*emit_options = MP_EMIT_OPT_NATIVE_PYTHON; *emit_options = MP_EMIT_OPT_NATIVE_PYTHON;
#else
return true;
#endif
#if MICROPY_EMIT_NATIVE
// @micropython.viper decorator.
} else if (attr == MP_QSTR_viper) { } else if (attr == MP_QSTR_viper) {
*emit_options = MP_EMIT_OPT_VIPER; *emit_options = MP_EMIT_OPT_VIPER;
#endif #endif
#if MICROPY_EMIT_INLINE_ASM #if MICROPY_EMIT_INLINE_ASM
// @micropython.asm_thumb decorator.
} else if (attr == ASM_DECORATOR_QSTR) { } else if (attr == ASM_DECORATOR_QSTR) {
*emit_options = MP_EMIT_OPT_ASM; *emit_options = MP_EMIT_OPT_ASM;
#endif #endif

10
py/gc.c
View File

@ -53,9 +53,6 @@
// detect untraced object still in use // detect untraced object still in use
#define CLEAR_ON_SWEEP (0) #define CLEAR_ON_SWEEP (0)
#define WORDS_PER_BLOCK ((MICROPY_BYTES_PER_GC_BLOCK) / BYTES_PER_WORD)
#define BYTES_PER_BLOCK (MICROPY_BYTES_PER_GC_BLOCK)
// ATB = allocation table byte // ATB = allocation table byte
// 0b00 = FREE -- free block // 0b00 = FREE -- free block
// 0b01 = HEAD -- head of a chain of blocks // 0b01 = HEAD -- head of a chain of blocks
@ -209,13 +206,6 @@ bool gc_is_locked(void) {
return MP_STATE_MEM(gc_lock_depth) != 0; return MP_STATE_MEM(gc_lock_depth) != 0;
} }
// ptr should be of type void*
#define VERIFY_PTR(ptr) ( \
((uintptr_t)(ptr) & (BYTES_PER_BLOCK - 1)) == 0 /* must be aligned on a block */ \
&& ptr >= (void*)MP_STATE_MEM(gc_pool_start) /* must be above start of pool */ \
&& ptr < (void*)MP_STATE_MEM(gc_pool_end) /* must be below end of pool */ \
)
#ifndef TRACE_MARK #ifndef TRACE_MARK
#if DEBUG_PRINT #if DEBUG_PRINT
#define TRACE_MARK(block, ptr) DEBUG_printf("gc_mark(%p)\n", ptr) #define TRACE_MARK(block, ptr) DEBUG_printf("gc_mark(%p)\n", ptr)

11
py/gc.h
View File

@ -29,8 +29,19 @@
#include <stdint.h> #include <stdint.h>
#include "py/mpconfig.h" #include "py/mpconfig.h"
#include "py/mpstate.h"
#include "py/misc.h" #include "py/misc.h"
#define WORDS_PER_BLOCK ((MICROPY_BYTES_PER_GC_BLOCK) / BYTES_PER_WORD)
#define BYTES_PER_BLOCK (MICROPY_BYTES_PER_GC_BLOCK)
// ptr should be of type void*
#define VERIFY_PTR(ptr) ( \
((uintptr_t)(ptr) & (BYTES_PER_BLOCK - 1)) == 0 /* must be aligned on a block */ \
&& ptr >= (void*)MP_STATE_MEM(gc_pool_start) /* must be above start of pool */ \
&& ptr < (void*)MP_STATE_MEM(gc_pool_end) /* must be below end of pool */ \
)
void gc_init(void *start, void *end); void gc_init(void *start, void *end);
void gc_deinit(void); void gc_deinit(void);

View File

@ -126,6 +126,11 @@ mp_obj_t make_obj_long_lived(mp_obj_t obj, uint8_t max_depth){
if (obj == NULL) { if (obj == NULL) {
return obj; return obj;
} }
// If not in the GC pool, do nothing. This can happen (at least) when
// there are frozen mp_type_bytes objects in ROM.
if (!VERIFY_PTR((void *)obj)) {
return obj;
}
if (MP_OBJ_IS_TYPE(obj, &mp_type_fun_bc)) { if (MP_OBJ_IS_TYPE(obj, &mp_type_fun_bc)) {
mp_obj_fun_bc_t *fun_bc = MP_OBJ_TO_PTR(obj); mp_obj_fun_bc_t *fun_bc = MP_OBJ_TO_PTR(obj);
return MP_OBJ_FROM_PTR(make_fun_bc_long_lived(fun_bc, max_depth)); return MP_OBJ_FROM_PTR(make_fun_bc_long_lived(fun_bc, max_depth));

View File

@ -103,14 +103,10 @@ def compute_huffman_coding(translations, qstrs, compression_filename):
# go through each qstr and print it out # go through each qstr and print it out
for _, _, qstr in qstrs.values(): for _, _, qstr in qstrs.values():
all_strings.append(qstr) all_strings.append(qstr)
all_strings_concat = "".join(all_strings).encode("utf-8") all_strings_concat = "".join(all_strings)
counts = collections.Counter(all_strings_concat) counts = collections.Counter(all_strings_concat)
# add other values
for i in range(256):
if i not in counts:
counts[i] = 0
cb = huffman.codebook(counts.items()) cb = huffman.codebook(counts.items())
values = bytearray() values = []
length_count = {} length_count = {}
renumbered = 0 renumbered = 0
last_l = None last_l = None
@ -124,26 +120,27 @@ def compute_huffman_coding(translations, qstrs, compression_filename):
if last_l: if last_l:
renumbered <<= (l - last_l) renumbered <<= (l - last_l)
canonical[ch] = '{0:0{width}b}'.format(renumbered, width=l) canonical[ch] = '{0:0{width}b}'.format(renumbered, width=l)
if chr(ch) in C_ESCAPES: s = C_ESCAPES.get(ch, ch)
s = C_ESCAPES[chr(ch)] print("//", ord(ch), s, counts[ch], canonical[ch], renumbered)
else:
s = chr(ch)
print("//", ch, s, counts[ch], canonical[ch], renumbered)
renumbered += 1 renumbered += 1
last_l = l last_l = l
lengths = bytearray() lengths = bytearray()
for i in range(1, max(length_count) + 1): print("// length count", length_count)
for i in range(1, max(length_count) + 2):
lengths.append(length_count.get(i, 0)) lengths.append(length_count.get(i, 0))
print("// values", values, "lengths", len(lengths), lengths)
print("// estimated total memory size", len(lengths) + 2*len(values) + sum(len(cb[u]) for u in all_strings_concat))
print("//", values, lengths) print("//", values, lengths)
values_type = "uint16_t" if max(ord(u) for u in values) > 255 else "uint8_t"
with open(compression_filename, "w") as f: with open(compression_filename, "w") as f:
f.write("const uint8_t lengths[] = {{ {} }};\n".format(", ".join(map(str, lengths)))) f.write("const uint8_t lengths[] = {{ {} }};\n".format(", ".join(map(str, lengths))))
f.write("const uint8_t values[256] = {{ {} }};\n".format(", ".join(map(str, values)))) f.write("const {} values[] = {{ {} }};\n".format(values_type, ", ".join(str(ord(u)) for u in values)))
return values, lengths return values, lengths
def decompress(encoding_table, length, encoded): def decompress(encoding_table, length, encoded):
values, lengths = encoding_table values, lengths = encoding_table
#print(l, encoded) #print(l, encoded)
dec = bytearray(length) dec = []
this_byte = 0 this_byte = 0
this_bit = 7 this_bit = 7
b = encoded[this_byte] b = encoded[this_byte]
@ -173,14 +170,14 @@ def decompress(encoding_table, length, encoded):
searched_length += lengths[bit_length] searched_length += lengths[bit_length]
v = values[searched_length + bits - max_code] v = values[searched_length + bits - max_code]
dec[i] = v dec.append(v)
return dec return ''.join(dec)
def compress(encoding_table, decompressed): def compress(encoding_table, decompressed):
if not isinstance(decompressed, bytes): if not isinstance(decompressed, str):
raise TypeError() raise TypeError()
values, lengths = encoding_table values, lengths = encoding_table
enc = bytearray(len(decompressed) * 2) enc = bytearray(len(decompressed) * 3)
#print(decompressed) #print(decompressed)
#print(lengths) #print(lengths)
current_bit = 7 current_bit = 7
@ -228,7 +225,7 @@ def compress(encoding_table, decompressed):
if current_bit != 7: if current_bit != 7:
current_byte += 1 current_byte += 1
if current_byte > len(decompressed): if current_byte > len(decompressed):
print("Note: compression increased length", repr(decompressed.decode('utf-8')), len(decompressed), current_byte, file=sys.stderr) print("Note: compression increased length", repr(decompressed), len(decompressed), current_byte, file=sys.stderr)
return enc[:current_byte] return enc[:current_byte]
def qstr_escape(qst): def qstr_escape(qst):
@ -347,9 +344,9 @@ def print_qstr_data(encoding_table, qcfgs, qstrs, i18ns):
total_text_compressed_size = 0 total_text_compressed_size = 0
for original, translation in i18ns: for original, translation in i18ns:
translation_encoded = translation.encode("utf-8") translation_encoded = translation.encode("utf-8")
compressed = compress(encoding_table, translation_encoded) compressed = compress(encoding_table, translation)
total_text_compressed_size += len(compressed) total_text_compressed_size += len(compressed)
decompressed = decompress(encoding_table, len(translation_encoded), compressed).decode("utf-8") decompressed = decompress(encoding_table, len(translation_encoded), compressed)
for c in C_ESCAPES: for c in C_ESCAPES:
decompressed = decompressed.replace(c, C_ESCAPES[c]) decompressed = decompressed.replace(c, C_ESCAPES[c])
print("TRANSLATION(\"{}\", {}, {{ {} }}) // {}".format(original, len(translation_encoded)+1, ", ".join(["0x{:02x}".format(x) for x in compressed]), decompressed)) print("TRANSLATION(\"{}\", {}, {{ {} }}) // {}".format(original, len(translation_encoded)+1, ", ".join(["0x{:02x}".format(x) for x in compressed]), decompressed))

View File

@ -31,8 +31,6 @@
#include "extmod/vfs.h" #include "extmod/vfs.h"
// #include "py/mpstate.h"
// #include "py/nlr.h"
#include "py/parsenum.h" #include "py/parsenum.h"
#include "py/compile.h" #include "py/compile.h"
#include "py/objstr.h" #include "py/objstr.h"

View File

@ -144,6 +144,9 @@ const mp_obj_property_t bleio_adapter_name_obj = {
//| Starts advertising until `stop_advertising` is called or if connectable, another device //| Starts advertising until `stop_advertising` is called or if connectable, another device
//| connects to us. //| connects to us.
//| //|
//| .. warning: If data is longer than 31 bytes, then this will automatically advertise as an
//| extended advertisement that older BLE 4.x clients won't be able to scan for.
//|
//| :param buf data: advertising data packet bytes //| :param buf data: advertising data packet bytes
//| :param buf scan_response: scan response data packet bytes. ``None`` if no scan response is needed. //| :param buf scan_response: scan response data packet bytes. ``None`` if no scan response is needed.
//| :param bool connectable: If `True` then other devices are allowed to connect to this peripheral. //| :param bool connectable: If `True` then other devices are allowed to connect to this peripheral.
@ -321,7 +324,7 @@ const mp_obj_property_t bleio_adapter_connections_obj = {
(mp_obj_t)&mp_const_none_obj }, (mp_obj_t)&mp_const_none_obj },
}; };
//| .. method:: connect(address, *, timeout, pair=False) //| .. method:: connect(address, *, timeout)
//| //|
//| Attempts a connection to the device with the given address. //| Attempts a connection to the device with the given address.
//| //|
@ -331,24 +334,23 @@ const mp_obj_property_t bleio_adapter_connections_obj = {
STATIC mp_obj_t bleio_adapter_connect(mp_uint_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { STATIC mp_obj_t bleio_adapter_connect(mp_uint_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
bleio_adapter_obj_t *self = MP_OBJ_TO_PTR(pos_args[0]); bleio_adapter_obj_t *self = MP_OBJ_TO_PTR(pos_args[0]);
enum { ARG_address, ARG_timeout, ARG_pair }; enum { ARG_address, ARG_timeout };
static const mp_arg_t allowed_args[] = { static const mp_arg_t allowed_args[] = {
{ MP_QSTR_address, MP_ARG_REQUIRED | MP_ARG_OBJ }, { MP_QSTR_address, MP_ARG_REQUIRED | MP_ARG_OBJ },
{ MP_QSTR_timeout, MP_ARG_KW_ONLY | MP_ARG_REQUIRED | MP_ARG_OBJ }, { MP_QSTR_timeout, MP_ARG_KW_ONLY | MP_ARG_REQUIRED | MP_ARG_OBJ },
{ MP_QSTR_pair, MP_ARG_KW_ONLY | MP_ARG_BOOL, { .u_bool = false } },
}; };
mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)]; mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)];
mp_arg_parse_all(n_args - 1, pos_args + 1, kw_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args); mp_arg_parse_all(n_args - 1, pos_args + 1, kw_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args);
if (!MP_OBJ_IS_TYPE(args[ARG_address].u_obj, &bleio_address_type)) { if (!MP_OBJ_IS_TYPE(args[ARG_address].u_obj, &bleio_address_type)) {
mp_raise_ValueError(translate("Expected an Address")); mp_raise_TypeError(translate("Expected an Address"));
} }
bleio_address_obj_t *address = MP_OBJ_TO_PTR(args[ARG_address].u_obj); bleio_address_obj_t *address = MP_OBJ_TO_PTR(args[ARG_address].u_obj);
mp_float_t timeout = mp_obj_get_float(args[ARG_timeout].u_obj); mp_float_t timeout = mp_obj_get_float(args[ARG_timeout].u_obj);
return common_hal_bleio_adapter_connect(self, address, timeout, args[ARG_pair].u_bool); return common_hal_bleio_adapter_connect(self, address, timeout);
} }
STATIC MP_DEFINE_CONST_FUN_OBJ_KW(bleio_adapter_connect_obj, 2, bleio_adapter_connect); STATIC MP_DEFINE_CONST_FUN_OBJ_KW(bleio_adapter_connect_obj, 2, bleio_adapter_connect);

Some files were not shown because too many files have changed in this diff Show More