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

This commit is contained in:
Hierophect 2019-12-05 14:25:39 -05:00
commit 9b43d5ced4
124 changed files with 4757 additions and 2070 deletions

View File

@ -141,6 +141,7 @@ jobs:
- "robohatmm1_m4" - "robohatmm1_m4"
- "sam32" - "sam32"
- "serpente" - "serpente"
- "shirtty"
- "snekboard" - "snekboard"
- "sparkfun_lumidrive" - "sparkfun_lumidrive"
- "sparkfun_nrf52840_mini" - "sparkfun_nrf52840_mini"
@ -170,7 +171,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

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

@ -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"
@ -172,12 +173,13 @@ STATIC bool adapter_on_ble_evt(ble_evt_t *ble_evt, void *self_in) {
break; break;
} }
} }
// Central has connected. // Central has connected.
ble_gap_evt_connected_t* connected = &ble_evt->evt.gap_evt.params.connected; ble_gap_evt_connected_t* connected = &ble_evt->evt.gap_evt.params.connected;
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;
@ -209,7 +211,7 @@ STATIC bool adapter_on_ble_evt(ble_evt_t *ble_evt, void *self_in) {
obj->disconnect_reason = ble_evt->evt.gap_evt.params.disconnected.reason; obj->disconnect_reason = ble_evt->evt.gap_evt.params.disconnected.reason;
} }
self->connection_objs = NULL; self->connection_objs = NULL;
break; break;
} }
@ -227,13 +229,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 +270,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 +292,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 +344,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 +364,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;
} }
@ -384,7 +375,7 @@ mp_obj_t common_hal_bleio_adapter_start_scan(bleio_adapter_obj_t *self, uint8_t*
self->scan_results->common_hal_data = sd_data; self->scan_results->common_hal_data = sd_data;
sd_data->len = max_packet_size; sd_data->len = max_packet_size;
sd_data->p_data = raw_data + sizeof(ble_data_t); sd_data->p_data = raw_data + sizeof(ble_data_t);
ble_drv_add_event_handler(scan_on_ble_evt, self->scan_results); ble_drv_add_event_handler(scan_on_ble_evt, self->scan_results);
uint32_t nrf_timeout = SEC_TO_UNITS(timeout, UNIT_10_MS); uint32_t nrf_timeout = SEC_TO_UNITS(timeout, UNIT_10_MS);
@ -406,7 +397,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);
@ -431,7 +422,7 @@ STATIC bool connect_on_ble_evt(ble_evt_t *ble_evt, void *info_in) {
case BLE_GAP_EVT_CONNECTED: case BLE_GAP_EVT_CONNECTED:
info->conn_handle = ble_evt->evt.gap_evt.conn_handle; info->conn_handle = ble_evt->evt.gap_evt.conn_handle;
info->done = true; info->done = true;
break; break;
case BLE_GAP_EVT_TIMEOUT: case BLE_GAP_EVT_TIMEOUT:
@ -447,7 +438,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 +470,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 +480,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 +491,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;
} }
@ -558,12 +549,10 @@ 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); check_data_fit(advertising_data_bufinfo->len);
check_data_fit(scan_response_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.
@ -574,15 +563,15 @@ void common_hal_bleio_adapter_start_advertising(bleio_adapter_obj_t *self, bool
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_MAX * 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 +583,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,
@ -109,7 +110,7 @@ bool connection_on_ble_evt(ble_evt_t *ble_evt, void *self_in) {
// SoftDevice will respond to a length update request. // SoftDevice will respond to a length update request.
sd_ble_gap_data_length_update(self->conn_handle, NULL, NULL); sd_ble_gap_data_length_update(self->conn_handle, NULL, NULL);
break; break;
case BLE_GAP_EVT_DATA_LENGTH_UPDATE: // 0x24 case BLE_GAP_EVT_DATA_LENGTH_UPDATE: // 0x24
break; break;
@ -162,7 +163,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 {
@ -213,7 +215,7 @@ bool connection_on_ble_evt(ble_evt_t *ble_evt, void *self_in) {
if (dump_events) { if (dump_events) {
mp_printf(&mp_plat_print, "Unhandled connection event: 0x%04x\n", ble_evt->header.evt_id); 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 +230,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,22 +248,18 @@ 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);
} }
@ -263,11 +268,8 @@ STATIC bool discover_next_services(bleio_connection_internal_t* connection, uint
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 +518,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 +584,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;

View File

@ -60,6 +60,7 @@ 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;
} bleio_connection_internal_t; } bleio_connection_internal_t;

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) {
@ -133,11 +131,7 @@ 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;

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,12 @@ 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); check_nrf_error(sd_ble_gattc_read(conn_handle, handle, 0));
if (err_code != NRF_SUCCESS) {
mp_raise_OSError_msg_varg(translate("Failed initiate attribute read, err 0x%04x"), err_code);
}
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 +223,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,15 +158,17 @@ 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 (self->bytes_per_sample == 1 && self->channel_count == 1) { if(buffer != buffer_start) {
// For 8-bit mono, 4 copies of the final sample are required if (self->bytes_per_sample == 1 && self->channel_count == 1) {
self->hold_value = 0x01010101 * *(uint8_t*)(buffer-1); // For 8-bit mono, 4 copies of the final sample are required
} else if (self->bytes_per_sample == 2 && self->channel_count == 2) { self->hold_value = 0x01010101 * *(uint8_t*)(buffer-1);
// For 16-bit stereo, 1 copy of the final sample is required } else if (self->bytes_per_sample == 2 && self->channel_count == 2) {
self->hold_value = *(uint32_t*)(buffer-4); // For 16-bit stereo, 1 copy of the final sample is required
} else { self->hold_value = *(uint32_t*)(buffer-4);
// For 8-bit stereo and 16-bit mono, 2 copies of the final sample are required } else {
self->hold_value = 0x00010001 * *(uint16_t*)(buffer-2); // For 8-bit stereo and 16-bit mono, 2 copies of the final sample are required
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
@ -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; #endif
__HAL_RCC_SPI3_CLK_DISABLE(); return HAL_RCC_GetPCLK2Freq();
}
void spi_reset(void) {
uint16_t never_reset_mask = 0x00;
for(int i=0;i<MAX_SPI;i++) {
if (!never_reset_spi[i]) {
reserved_spi[i] = 0x00;
} else {
never_reset_mask |= 1<<i;
}
} }
#endif spi_clock_disable(ALL_CLOCKS & ~(never_reset_mask));
#ifdef SPI4
if(!never_reset_spi[3]) {
reserved_spi[3] = false;
__HAL_RCC_SPI4_CLK_DISABLE();
}
#endif
#ifdef SPI5
if(!never_reset_spi[4]) {
reserved_spi[4] = false;
__HAL_RCC_SPI5_CLK_DISABLE();
}
#endif
#ifdef SPI6
if(!never_reset_spi[5]) {
reserved_spi[5] = false;
__HAL_RCC_SPI6_CLK_DISABLE();
}
#endif
} }
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;
@ -362,10 +271,10 @@ bool common_hal_busio_spi_try_lock(busio_spi_obj_t *self) {
// __disable_irq(); // __disable_irq();
// __DMB(); // __DMB();
if (!self->has_lock) { if (!self->has_lock) {
grabbed_lock = true; grabbed_lock = true;
self->has_lock = true; self->has_lock = true;
} }
// __DMB(); // __DMB();
// __set_PRIMASK(store_primask); // __set_PRIMASK(store_primask);
@ -412,4 +321,46 @@ 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

@ -36,7 +36,7 @@
#include "supervisor/shared/translate.h" #include "supervisor/shared/translate.h"
#include "tick.h" #include "tick.h"
#include "stm32f4xx_hal.h" #include "stm32f4xx_hal.h"
#define ALL_UARTS 0xFFFF #define ALL_UARTS 0xFFFF
@ -55,7 +55,7 @@ void uart_reset(void) {
uart_clock_disable(ALL_UARTS); uart_clock_disable(ALL_UARTS);
} }
STATIC USART_TypeDef * assign_uart_or_throw(busio_uart_obj_t* self, bool pin_eval, STATIC USART_TypeDef * assign_uart_or_throw(busio_uart_obj_t* self, bool pin_eval,
int uart_index, bool uart_taken) { int uart_index, bool uart_taken) {
if (pin_eval) { if (pin_eval) {
//assign a root pointer pointer for IRQ //assign a root pointer pointer for IRQ
@ -82,7 +82,7 @@ void common_hal_busio_uart_construct(busio_uart_obj_t* self,
uint8_t rx_len = sizeof(mcu_uart_rx_list)/sizeof(*mcu_uart_rx_list); uint8_t rx_len = sizeof(mcu_uart_rx_list)/sizeof(*mcu_uart_rx_list);
bool uart_taken = false; bool uart_taken = false;
uint8_t uart_index = 0; //origin 0 corrected uint8_t uart_index = 0; //origin 0 corrected
//Can have both pins, or either //Can have both pins, or either
if ((tx != mp_const_none) && (rx != mp_const_none)) { if ((tx != mp_const_none) && (rx != mp_const_none)) {
//normal find loop if both pins exist //normal find loop if both pins exist
@ -90,7 +90,7 @@ void common_hal_busio_uart_construct(busio_uart_obj_t* self,
if (mcu_uart_tx_list[i].pin == tx) { if (mcu_uart_tx_list[i].pin == tx) {
//rx //rx
for (uint j = 0; j < rx_len; j++) { for (uint j = 0; j < rx_len; j++) {
if (mcu_uart_rx_list[j].pin == rx if (mcu_uart_rx_list[j].pin == rx
&& mcu_uart_rx_list[j].uart_index == mcu_uart_tx_list[i].uart_index) { && mcu_uart_rx_list[j].uart_index == mcu_uart_tx_list[i].uart_index) {
//keep looking if the UART is taken, edge case //keep looking if the UART is taken, edge case
if (reserved_uart[mcu_uart_tx_list[i].uart_index - 1]) { if (reserved_uart[mcu_uart_tx_list[i].uart_index - 1]) {
@ -106,7 +106,7 @@ void common_hal_busio_uart_construct(busio_uart_obj_t* self,
} }
} }
uart_index = self->tx->uart_index - 1; uart_index = self->tx->uart_index - 1;
USARTx = assign_uart_or_throw(self, (self->tx != NULL && self->rx != NULL), USARTx = assign_uart_or_throw(self, (self->tx != NULL && self->rx != NULL),
uart_index, uart_taken); uart_index, uart_taken);
} else if (tx == mp_const_none) { } else if (tx == mp_const_none) {
//If there is no tx, run only rx //If there is no tx, run only rx
@ -123,7 +123,7 @@ void common_hal_busio_uart_construct(busio_uart_obj_t* self,
} }
} }
uart_index = self->rx->uart_index - 1; uart_index = self->rx->uart_index - 1;
USARTx = assign_uart_or_throw(self, (self->rx != NULL), USARTx = assign_uart_or_throw(self, (self->rx != NULL),
uart_index, uart_taken); uart_index, uart_taken);
} else if (rx == mp_const_none) { } else if (rx == mp_const_none) {
//If there is no rx, run only tx //If there is no rx, run only tx
@ -140,7 +140,7 @@ void common_hal_busio_uart_construct(busio_uart_obj_t* self,
} }
} }
uart_index = self->tx->uart_index - 1; uart_index = self->tx->uart_index - 1;
USARTx = assign_uart_or_throw(self, (self->tx != NULL), USARTx = assign_uart_or_throw(self, (self->tx != NULL),
uart_index, uart_taken); uart_index, uart_taken);
} else { } else {
//both pins cannot be empty //both pins cannot be empty
@ -173,7 +173,7 @@ void common_hal_busio_uart_construct(busio_uart_obj_t* self,
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_PULLUP; GPIO_InitStruct.Pull = GPIO_PULLUP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
GPIO_InitStruct.Alternate = self->rx->altfn_index; GPIO_InitStruct.Alternate = self->rx->altfn_index;
HAL_GPIO_Init(pin_port(rx->port), &GPIO_InitStruct); HAL_GPIO_Init(pin_port(rx->port), &GPIO_InitStruct);
} }
@ -186,7 +186,7 @@ void common_hal_busio_uart_construct(busio_uart_obj_t* self,
self->handle.Init.BaudRate = baudrate; self->handle.Init.BaudRate = baudrate;
self->handle.Init.WordLength = (bits == 9) ? UART_WORDLENGTH_9B : UART_WORDLENGTH_8B; self->handle.Init.WordLength = (bits == 9) ? UART_WORDLENGTH_9B : UART_WORDLENGTH_8B;
self->handle.Init.StopBits = (stop > 1) ? UART_STOPBITS_2 : UART_STOPBITS_1; self->handle.Init.StopBits = (stop > 1) ? UART_STOPBITS_2 : UART_STOPBITS_1;
self->handle.Init.Parity = (parity == PARITY_ODD) ? UART_PARITY_ODD : self->handle.Init.Parity = (parity == PARITY_ODD) ? UART_PARITY_ODD :
(parity == PARITY_EVEN) ? UART_PARITY_EVEN : (parity == PARITY_EVEN) ? UART_PARITY_EVEN :
UART_PARITY_NONE; UART_PARITY_NONE;
self->handle.Init.Mode = (self->tx != NULL && self->rx != NULL) ? UART_MODE_TX_RX : self->handle.Init.Mode = (self->tx != NULL && self->rx != NULL) ? UART_MODE_TX_RX :
@ -234,7 +234,7 @@ bool common_hal_busio_uart_deinited(busio_uart_obj_t *self) {
void common_hal_busio_uart_deinit(busio_uart_obj_t *self) { void common_hal_busio_uart_deinit(busio_uart_obj_t *self) {
if (common_hal_busio_uart_deinited(self)) return; if (common_hal_busio_uart_deinited(self)) return;
reset_pin_number(self->tx->pin->port,self->tx->pin->number); reset_pin_number(self->tx->pin->port,self->tx->pin->number);
reset_pin_number(self->rx->pin->port,self->rx->pin->number); reset_pin_number(self->rx->pin->port,self->rx->pin->number);
self->tx = mp_const_none; self->tx = mp_const_none;
@ -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) {
@ -279,7 +279,7 @@ size_t common_hal_busio_uart_read(busio_uart_obj_t *self, uint8_t *data, size_t
*errcode = EAGAIN; *errcode = EAGAIN;
return MP_STREAM_ERROR; return MP_STREAM_ERROR;
} }
return rx_bytes; return rx_bytes;
} }
// Write characters. // Write characters.
@ -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;
} }
@ -312,7 +314,7 @@ void HAL_UART_RxCpltCallback(UART_HandleTypeDef *handle)
} }
ringbuf_put_n(&context->rbuf, &context->rx_char, 1); ringbuf_put_n(&context->rbuf, &context->rx_char, 1);
errflag = HAL_UART_Receive_IT(handle, &context->rx_char, 1); errflag = HAL_UART_Receive_IT(handle, &context->rx_char, 1);
return; return;
} }
} }
@ -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);
} }
@ -414,71 +424,71 @@ STATIC void uart_clock_enable(uint16_t mask) {
if (mask & (1 << 0)) { if (mask & (1 << 0)) {
__HAL_RCC_USART1_FORCE_RESET(); __HAL_RCC_USART1_FORCE_RESET();
__HAL_RCC_USART1_RELEASE_RESET(); __HAL_RCC_USART1_RELEASE_RESET();
__HAL_RCC_USART1_CLK_ENABLE(); __HAL_RCC_USART1_CLK_ENABLE();
} }
#endif #endif
#ifdef USART2 #ifdef USART2
if (mask & (1 << 1)) { if (mask & (1 << 1)) {
__HAL_RCC_USART2_FORCE_RESET(); __HAL_RCC_USART2_FORCE_RESET();
__HAL_RCC_USART2_RELEASE_RESET(); __HAL_RCC_USART2_RELEASE_RESET();
__HAL_RCC_USART2_CLK_ENABLE(); __HAL_RCC_USART2_CLK_ENABLE();
} }
#endif #endif
#ifdef USART3 #ifdef USART3
if (mask & (1 << 2)) { if (mask & (1 << 2)) {
__HAL_RCC_USART3_FORCE_RESET(); __HAL_RCC_USART3_FORCE_RESET();
__HAL_RCC_USART3_RELEASE_RESET(); __HAL_RCC_USART3_RELEASE_RESET();
__HAL_RCC_USART3_CLK_ENABLE(); __HAL_RCC_USART3_CLK_ENABLE();
} }
#endif #endif
#ifdef UART4 #ifdef UART4
if (mask & (1 << 3)) { if (mask & (1 << 3)) {
__HAL_RCC_UART4_FORCE_RESET(); __HAL_RCC_UART4_FORCE_RESET();
__HAL_RCC_UART4_RELEASE_RESET(); __HAL_RCC_UART4_RELEASE_RESET();
__HAL_RCC_UART4_CLK_ENABLE(); __HAL_RCC_UART4_CLK_ENABLE();
} }
#endif #endif
#ifdef UART5 #ifdef UART5
if (mask & (1 << 4)) { if (mask & (1 << 4)) {
__HAL_RCC_UART5_FORCE_RESET(); __HAL_RCC_UART5_FORCE_RESET();
__HAL_RCC_UART5_RELEASE_RESET(); __HAL_RCC_UART5_RELEASE_RESET();
__HAL_RCC_UART5_CLK_ENABLE(); __HAL_RCC_UART5_CLK_ENABLE();
} }
#endif #endif
#ifdef USART6 #ifdef USART6
if (mask & (1 << 5)) { if (mask & (1 << 5)) {
__HAL_RCC_USART6_FORCE_RESET(); __HAL_RCC_USART6_FORCE_RESET();
__HAL_RCC_USART6_RELEASE_RESET(); __HAL_RCC_USART6_RELEASE_RESET();
__HAL_RCC_USART6_CLK_ENABLE(); __HAL_RCC_USART6_CLK_ENABLE();
} }
#endif #endif
#ifdef UART7 #ifdef UART7
if (mask & (1 << 6)) { if (mask & (1 << 6)) {
__HAL_RCC_UART7_FORCE_RESET(); __HAL_RCC_UART7_FORCE_RESET();
__HAL_RCC_UART7_RELEASE_RESET(); __HAL_RCC_UART7_RELEASE_RESET();
__HAL_RCC_UART7_CLK_ENABLE(); __HAL_RCC_UART7_CLK_ENABLE();
} }
#endif #endif
#ifdef UART8 #ifdef UART8
if (mask & (1 << 7)) { if (mask & (1 << 7)) {
__HAL_RCC_UART8_FORCE_RESET(); __HAL_RCC_UART8_FORCE_RESET();
__HAL_RCC_UART8_RELEASE_RESET(); __HAL_RCC_UART8_RELEASE_RESET();
__HAL_RCC_UART8_CLK_ENABLE(); __HAL_RCC_UART8_CLK_ENABLE();
} }
#endif #endif
#ifdef UART9 #ifdef UART9
if (mask & (1 << 8)) { if (mask & (1 << 8)) {
__HAL_RCC_UART9_FORCE_RESET(); __HAL_RCC_UART9_FORCE_RESET();
__HAL_RCC_UART9_RELEASE_RESET(); __HAL_RCC_UART9_RELEASE_RESET();
__HAL_RCC_UART9_CLK_ENABLE(); __HAL_RCC_UART9_CLK_ENABLE();
} }
#endif #endif
#ifdef UART10 #ifdef UART10
if (mask & (1 << 9)) { if (mask & (1 << 9)) {
__HAL_RCC_UART10_FORCE_RESET(); __HAL_RCC_UART10_FORCE_RESET();
__HAL_RCC_UART10_RELEASE_RESET(); __HAL_RCC_UART10_RELEASE_RESET();
__HAL_RCC_UART10_CLK_ENABLE(); __HAL_RCC_UART10_CLK_ENABLE();
} }
#endif #endif
} }
@ -487,71 +497,71 @@ STATIC void uart_clock_disable(uint16_t mask) {
if (mask & (1 << 0)) { if (mask & (1 << 0)) {
__HAL_RCC_USART1_FORCE_RESET(); __HAL_RCC_USART1_FORCE_RESET();
__HAL_RCC_USART1_RELEASE_RESET(); __HAL_RCC_USART1_RELEASE_RESET();
__HAL_RCC_USART1_CLK_DISABLE(); __HAL_RCC_USART1_CLK_DISABLE();
} }
#endif #endif
#ifdef USART2 #ifdef USART2
if (mask & (1 << 1)) { if (mask & (1 << 1)) {
__HAL_RCC_USART2_FORCE_RESET(); __HAL_RCC_USART2_FORCE_RESET();
__HAL_RCC_USART2_RELEASE_RESET(); __HAL_RCC_USART2_RELEASE_RESET();
__HAL_RCC_USART2_CLK_DISABLE(); __HAL_RCC_USART2_CLK_DISABLE();
} }
#endif #endif
#ifdef USART3 #ifdef USART3
if (mask & (1 << 2)) { if (mask & (1 << 2)) {
__HAL_RCC_USART3_FORCE_RESET(); __HAL_RCC_USART3_FORCE_RESET();
__HAL_RCC_USART3_RELEASE_RESET(); __HAL_RCC_USART3_RELEASE_RESET();
__HAL_RCC_USART3_CLK_DISABLE(); __HAL_RCC_USART3_CLK_DISABLE();
} }
#endif #endif
#ifdef UART4 #ifdef UART4
if (mask & (1 << 3)) { if (mask & (1 << 3)) {
__HAL_RCC_UART4_FORCE_RESET(); __HAL_RCC_UART4_FORCE_RESET();
__HAL_RCC_UART4_RELEASE_RESET(); __HAL_RCC_UART4_RELEASE_RESET();
__HAL_RCC_UART4_CLK_DISABLE(); __HAL_RCC_UART4_CLK_DISABLE();
} }
#endif #endif
#ifdef UART5 #ifdef UART5
if (mask & (1 << 4)) { if (mask & (1 << 4)) {
__HAL_RCC_UART5_FORCE_RESET(); __HAL_RCC_UART5_FORCE_RESET();
__HAL_RCC_UART5_RELEASE_RESET(); __HAL_RCC_UART5_RELEASE_RESET();
__HAL_RCC_UART5_CLK_DISABLE(); __HAL_RCC_UART5_CLK_DISABLE();
} }
#endif #endif
#ifdef USART6 #ifdef USART6
if (mask & (1 << 5)) { if (mask & (1 << 5)) {
__HAL_RCC_USART6_FORCE_RESET(); __HAL_RCC_USART6_FORCE_RESET();
__HAL_RCC_USART6_RELEASE_RESET(); __HAL_RCC_USART6_RELEASE_RESET();
__HAL_RCC_USART6_CLK_DISABLE(); __HAL_RCC_USART6_CLK_DISABLE();
} }
#endif #endif
#ifdef UART7 #ifdef UART7
if (mask & (1 << 6)) { if (mask & (1 << 6)) {
__HAL_RCC_UART7_FORCE_RESET(); __HAL_RCC_UART7_FORCE_RESET();
__HAL_RCC_UART7_RELEASE_RESET(); __HAL_RCC_UART7_RELEASE_RESET();
__HAL_RCC_UART7_CLK_DISABLE(); __HAL_RCC_UART7_CLK_DISABLE();
} }
#endif #endif
#ifdef UART8 #ifdef UART8
if (mask & (1 << 7)) { if (mask & (1 << 7)) {
__HAL_RCC_UART8_FORCE_RESET(); __HAL_RCC_UART8_FORCE_RESET();
__HAL_RCC_UART8_RELEASE_RESET(); __HAL_RCC_UART8_RELEASE_RESET();
__HAL_RCC_UART8_CLK_DISABLE(); __HAL_RCC_UART8_CLK_DISABLE();
} }
#endif #endif
#ifdef UART9 #ifdef UART9
if (mask & (1 << 8)) { if (mask & (1 << 8)) {
__HAL_RCC_UART9_FORCE_RESET(); __HAL_RCC_UART9_FORCE_RESET();
__HAL_RCC_UART9_RELEASE_RESET(); __HAL_RCC_UART9_RELEASE_RESET();
__HAL_RCC_UART9_CLK_DISABLE(); __HAL_RCC_UART9_CLK_DISABLE();
} }
#endif #endif
#ifdef UART10 #ifdef UART10
if (mask & (1 << 9)) { if (mask & (1 << 9)) {
__HAL_RCC_UART10_FORCE_RESET(); __HAL_RCC_UART10_FORCE_RESET();
__HAL_RCC_UART10_RELEASE_RESET(); __HAL_RCC_UART10_RELEASE_RESET();
__HAL_RCC_UART10_CLK_DISABLE(); __HAL_RCC_UART10_CLK_DISABLE();
} }
#endif #endif
} }

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

@ -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,14 +653,14 @@ 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

View File

@ -53,7 +53,7 @@ ifndef CIRCUITPY_DEFAULT_BUILD
endif endif
# Some features have no unique HAL component, and thus there's never # Some features have no unique HAL component, and thus there's never
# a reason to not include them. # a reason to not include them.
ifndef CIRCUITPY_ALWAYS_BUILD ifndef CIRCUITPY_ALWAYS_BUILD
CIRCUITPY_ALWAYS_BUILD = 1 CIRCUITPY_ALWAYS_BUILD = 1
endif endif
@ -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

@ -321,7 +321,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 +331,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);

View File

@ -55,6 +55,6 @@ void common_hal_bleio_adapter_stop_scan(bleio_adapter_obj_t *self);
bool common_hal_bleio_adapter_get_connected(bleio_adapter_obj_t *self); bool common_hal_bleio_adapter_get_connected(bleio_adapter_obj_t *self);
mp_obj_t common_hal_bleio_adapter_get_connections(bleio_adapter_obj_t *self); mp_obj_t common_hal_bleio_adapter_get_connections(bleio_adapter_obj_t *self);
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);
#endif // MICROPY_INCLUDED_SHARED_BINDINGS_BLEIO_ADAPTER_H #endif // MICROPY_INCLUDED_SHARED_BINDINGS_BLEIO_ADAPTER_H

View File

@ -94,12 +94,12 @@ STATIC mp_obj_t bleio_characteristic_add_to_service(size_t n_args, const mp_obj_
const mp_obj_t service_obj = args[ARG_service].u_obj; const mp_obj_t service_obj = args[ARG_service].u_obj;
if (!MP_OBJ_IS_TYPE(service_obj, &bleio_service_type)) { if (!MP_OBJ_IS_TYPE(service_obj, &bleio_service_type)) {
mp_raise_ValueError(translate("Expected a Service")); mp_raise_TypeError(translate("Expected a Service"));
} }
const mp_obj_t uuid_obj = args[ARG_uuid].u_obj; const mp_obj_t uuid_obj = args[ARG_uuid].u_obj;
if (!MP_OBJ_IS_TYPE(uuid_obj, &bleio_uuid_type)) { if (!MP_OBJ_IS_TYPE(uuid_obj, &bleio_uuid_type)) {
mp_raise_ValueError(translate("Expected a UUID")); mp_raise_TypeError(translate("Expected a UUID"));
} }
const bleio_characteristic_properties_t properties = args[ARG_properties].u_int; const bleio_characteristic_properties_t properties = args[ARG_properties].u_int;
@ -168,7 +168,7 @@ const mp_obj_property_t bleio_characteristic_properties_obj = {
//| .. attribute:: uuid //| .. attribute:: uuid
//| //|
//| The UUID of this characteristic. (read-only) //| The UUID of this characteristic. (read-only)
//| //|
//| Will be ``None`` if the 128-bit UUID for this characteristic is not known. //| Will be ``None`` if the 128-bit UUID for this characteristic is not known.
//| //|
STATIC mp_obj_t bleio_characteristic_get_uuid(mp_obj_t self_in) { STATIC mp_obj_t bleio_characteristic_get_uuid(mp_obj_t self_in) {

View File

@ -30,13 +30,14 @@
#include "py/runtime.h" #include "py/runtime.h"
#include "py/stream.h" #include "py/stream.h"
#include "shared-bindings/_bleio/__init__.h"
#include "shared-bindings/_bleio/CharacteristicBuffer.h" #include "shared-bindings/_bleio/CharacteristicBuffer.h"
#include "shared-bindings/_bleio/UUID.h" #include "shared-bindings/_bleio/UUID.h"
#include "shared-bindings/util.h" #include "shared-bindings/util.h"
STATIC void raise_error_if_not_connected(bleio_characteristic_buffer_obj_t *self) { STATIC void raise_error_if_not_connected(bleio_characteristic_buffer_obj_t *self) {
if (!common_hal_bleio_characteristic_buffer_connected(self)) { if (!common_hal_bleio_characteristic_buffer_connected(self)) {
mp_raise_ValueError(translate("Not connected")); mp_raise_bleio_ConnectionError(translate("Not connected"));
} }
} }
@ -83,7 +84,7 @@ STATIC mp_obj_t bleio_characteristic_buffer_make_new(const mp_obj_type_t *type,
} }
if (!MP_OBJ_IS_TYPE(characteristic, &bleio_characteristic_type)) { if (!MP_OBJ_IS_TYPE(characteristic, &bleio_characteristic_type)) {
mp_raise_ValueError(translate("Expected a Characteristic")); mp_raise_TypeError(translate("Expected a Characteristic"));
} }
bleio_characteristic_buffer_obj_t *self = m_new_obj(bleio_characteristic_buffer_obj_t); bleio_characteristic_buffer_obj_t *self = m_new_obj(bleio_characteristic_buffer_obj_t);
@ -151,9 +152,6 @@ STATIC mp_uint_t bleio_characteristic_buffer_ioctl(mp_obj_t self_in, mp_uint_t r
bleio_characteristic_buffer_obj_t *self = MP_OBJ_TO_PTR(self_in); bleio_characteristic_buffer_obj_t *self = MP_OBJ_TO_PTR(self_in);
check_for_deinit(self); check_for_deinit(self);
raise_error_if_not_connected(self); raise_error_if_not_connected(self);
if (!common_hal_bleio_characteristic_buffer_connected(self)) {
mp_raise_ValueError(translate("Not connected"));
}
mp_uint_t ret; mp_uint_t ret;
if (request == MP_IOCTL_POLL) { if (request == MP_IOCTL_POLL) {
mp_uint_t flags = arg; mp_uint_t flags = arg;

View File

@ -36,6 +36,7 @@
#include "py/objproperty.h" #include "py/objproperty.h"
#include "py/objstr.h" #include "py/objstr.h"
#include "py/runtime.h" #include "py/runtime.h"
#include "shared-bindings/_bleio/__init__.h"
#include "shared-bindings/_bleio/Adapter.h" #include "shared-bindings/_bleio/Adapter.h"
#include "shared-bindings/_bleio/Address.h" #include "shared-bindings/_bleio/Address.h"
#include "shared-bindings/_bleio/Characteristic.h" #include "shared-bindings/_bleio/Characteristic.h"
@ -67,7 +68,7 @@
STATIC void ensure_connected(bleio_connection_obj_t *self) { STATIC void ensure_connected(bleio_connection_obj_t *self) {
if (!common_hal_bleio_connection_get_connected(self)) { if (!common_hal_bleio_connection_get_connected(self)) {
mp_raise_ValueError(translate("Connection has been disconnected and can no longer be used. Create a new connection.")); mp_raise_bleio_ConnectionError(translate("Connection has been disconnected and can no longer be used. Create a new connection."));
} }
} }
@ -79,18 +80,39 @@ STATIC void ensure_connected(bleio_connection_obj_t *self) {
//| //|
//| .. method:: disconnect() //| .. method:: disconnect()
//| //|
//| Disconnects from the remote peripheral. //| Disconnects from the remote peripheral. Does nothing if already disconnected.
//| //|
STATIC mp_obj_t bleio_connection_disconnect(mp_obj_t self_in) { STATIC mp_obj_t bleio_connection_disconnect(mp_obj_t self_in) {
bleio_connection_obj_t *self = MP_OBJ_TO_PTR(self_in); bleio_connection_obj_t *self = MP_OBJ_TO_PTR(self_in);
ensure_connected(self); // common_hal_bleio_connection_disconnect() does nothing if already disconnected.
common_hal_bleio_connection_disconnect(self->connection); common_hal_bleio_connection_disconnect(self->connection);
return mp_const_none; return mp_const_none;
} }
STATIC MP_DEFINE_CONST_FUN_OBJ_1(bleio_connection_disconnect_obj, bleio_connection_disconnect); STATIC MP_DEFINE_CONST_FUN_OBJ_1(bleio_connection_disconnect_obj, bleio_connection_disconnect);
//| .. method:: pair(*, bond=True)
//|
//| Pair to the peer to improve security.
//|
STATIC mp_obj_t bleio_connection_pair(mp_uint_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
bleio_connection_obj_t *self = MP_OBJ_TO_PTR(pos_args[0]);
enum { ARG_bond };
static const mp_arg_t allowed_args[] = {
{ MP_QSTR_bond, MP_ARG_BOOL, {.u_bool = true} },
};
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);
ensure_connected(self);
common_hal_bleio_connection_pair(self->connection, args[ARG_bond].u_bool);
return mp_const_none;
}
STATIC MP_DEFINE_CONST_FUN_OBJ_KW(bleio_connection_pair_obj, 1, bleio_connection_pair);
//| .. method:: discover_remote_services(service_uuids_whitelist=None) //| .. method:: discover_remote_services(service_uuids_whitelist=None)
//| //|
//| Do BLE discovery for all services or for the given service UUIDS, //| Do BLE discovery for all services or for the given service UUIDS,
@ -98,19 +120,19 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_1(bleio_connection_disconnect_obj, bleio_connecti
//| `Connection.connected` must be True. //| `Connection.connected` must be True.
//| //|
//| :param iterable service_uuids_whitelist: //| :param iterable service_uuids_whitelist:
//| //|
//| an iterable of :py:class:~`UUID` objects for the services provided by the peripheral //| an iterable of :py:class:~`UUID` objects for the services provided by the peripheral
//| that you want to use. //| that you want to use.
//| //|
//| The peripheral may provide more services, but services not listed are ignored //| The peripheral may provide more services, but services not listed are ignored
//| and will not be returned. //| and will not be returned.
//| //|
//| If service_uuids_whitelist is None, then all services will undergo discovery, which can be //| If service_uuids_whitelist is None, then all services will undergo discovery, which can be
//| slow. //| slow.
//| //|
//| If the service UUID is 128-bit, or its characteristic UUID's are 128-bit, you //| If the service UUID is 128-bit, or its characteristic UUID's are 128-bit, you
//| you must have already created a :py:class:~`UUID` object for that UUID in order for the //| you must have already created a :py:class:~`UUID` object for that UUID in order for the
//| service or characteristic to be discovered. Creating the UUID causes the UUID to be //| service or characteristic to be discovered. Creating the UUID causes the UUID to be
//| registered for use. (This restriction may be lifted in the future.) //| registered for use. (This restriction may be lifted in the future.)
//| //|
//| :return: A tuple of `_bleio.Service` objects provided by the remote peripheral. //| :return: A tuple of `_bleio.Service` objects provided by the remote peripheral.
@ -136,7 +158,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_KW(bleio_connection_discover_remote_services_obj,
//| .. attribute:: connected //| .. attribute:: connected
//| //|
//| True if connected to a remote peer. //| True if connected to the remote peer.
//| //|
STATIC mp_obj_t bleio_connection_get_connected(mp_obj_t self_in) { STATIC mp_obj_t bleio_connection_get_connected(mp_obj_t self_in) {
bleio_connection_obj_t *self = MP_OBJ_TO_PTR(self_in); bleio_connection_obj_t *self = MP_OBJ_TO_PTR(self_in);
@ -152,13 +174,34 @@ const mp_obj_property_t bleio_connection_connected_obj = {
(mp_obj_t)&mp_const_none_obj }, (mp_obj_t)&mp_const_none_obj },
}; };
//| .. attribute:: paired
//|
//| True if paired to the remote peer.
//|
STATIC mp_obj_t bleio_connection_get_paired(mp_obj_t self_in) {
bleio_connection_obj_t *self = MP_OBJ_TO_PTR(self_in);
return mp_obj_new_bool(common_hal_bleio_connection_get_paired(self));
}
STATIC MP_DEFINE_CONST_FUN_OBJ_1(bleio_connection_get_paired_obj, bleio_connection_get_paired);
const mp_obj_property_t bleio_connection_paired_obj = {
.base.type = &mp_type_property,
.proxy = { (mp_obj_t)&bleio_connection_get_paired_obj,
(mp_obj_t)&mp_const_none_obj,
(mp_obj_t)&mp_const_none_obj },
};
STATIC const mp_rom_map_elem_t bleio_connection_locals_dict_table[] = { STATIC const mp_rom_map_elem_t bleio_connection_locals_dict_table[] = {
// Methods // Methods
{ MP_ROM_QSTR(MP_QSTR_pair), MP_ROM_PTR(&bleio_connection_pair_obj) },
{ MP_ROM_QSTR(MP_QSTR_disconnect), MP_ROM_PTR(&bleio_connection_disconnect_obj) }, { MP_ROM_QSTR(MP_QSTR_disconnect), MP_ROM_PTR(&bleio_connection_disconnect_obj) },
{ MP_ROM_QSTR(MP_QSTR_discover_remote_services), MP_ROM_PTR(&bleio_connection_discover_remote_services_obj) }, { MP_ROM_QSTR(MP_QSTR_discover_remote_services), MP_ROM_PTR(&bleio_connection_discover_remote_services_obj) },
// Properties // Properties
{ MP_ROM_QSTR(MP_QSTR_connected), MP_ROM_PTR(&bleio_connection_connected_obj) }, { MP_ROM_QSTR(MP_QSTR_connected), MP_ROM_PTR(&bleio_connection_connected_obj) },
{ MP_ROM_QSTR(MP_QSTR_paired), MP_ROM_PTR(&bleio_connection_paired_obj) },
}; };
STATIC MP_DEFINE_CONST_DICT(bleio_connection_locals_dict, bleio_connection_locals_dict_table); STATIC MP_DEFINE_CONST_DICT(bleio_connection_locals_dict, bleio_connection_locals_dict_table);

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