Merge remote-tracking branch 'origin/main' into defining_parameters
This commit is contained in:
commit
5fa7186396
|
@ -460,7 +460,7 @@ Renders as:
|
||||||
|
|
||||||
Documentation References to other Libraries
|
Documentation References to other Libraries
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
When you need to reference documentation in other libraries you should include the class by using single
|
When you need to make references to documentation in other libraries you should refer the class using single
|
||||||
backticks ``:class:`~adafruit_motor.servo.Servo```. You must also add the reference in the ``conf.py`` file in the
|
backticks ``:class:`~adafruit_motor.servo.Servo```. You must also add the reference in the ``conf.py`` file in the
|
||||||
``intersphinx_mapping section`` by adding a new entry::
|
``intersphinx_mapping section`` by adding a new entry::
|
||||||
|
|
||||||
|
|
73
locale/ID.po
73
locale/ID.po
|
@ -6,7 +6,7 @@ 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: 2021-01-04 12:55-0600\n"
|
"POT-Creation-Date: 2021-01-04 12:55-0600\n"
|
||||||
"PO-Revision-Date: 2021-04-07 12:23+0000\n"
|
"PO-Revision-Date: 2021-04-28 16:11+0000\n"
|
||||||
"Last-Translator: Reza Almanda <rezaalmanda27@gmail.com>\n"
|
"Last-Translator: Reza Almanda <rezaalmanda27@gmail.com>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
"Language: ID\n"
|
"Language: ID\n"
|
||||||
|
@ -14,7 +14,7 @@ msgstr ""
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||||
"X-Generator: Weblate 4.6-dev\n"
|
"X-Generator: Weblate 4.7-dev\n"
|
||||||
|
|
||||||
#: main.c
|
#: main.c
|
||||||
msgid ""
|
msgid ""
|
||||||
|
@ -698,6 +698,7 @@ msgstr ""
|
||||||
"digunakan"
|
"digunakan"
|
||||||
|
|
||||||
#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
|
#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
|
||||||
|
#: ports/nrf/common-hal/alarm/pin/PinAlarm.c
|
||||||
msgid "Cannot wake on pin edge. Only level."
|
msgid "Cannot wake on pin edge. Only level."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -753,14 +754,6 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Koneksi telah terputus dan tidak dapat lagi digunakan. Buat koneksi baru."
|
"Koneksi telah terputus dan tidak dapat lagi digunakan. Buat koneksi baru."
|
||||||
|
|
||||||
#: py/persistentcode.c
|
|
||||||
msgid "Corrupt .mpy file"
|
|
||||||
msgstr "File .mpy rusak"
|
|
||||||
|
|
||||||
#: py/emitglue.c
|
|
||||||
msgid "Corrupt raw code"
|
|
||||||
msgstr "Kode raw rusak"
|
|
||||||
|
|
||||||
#: ports/cxd56/common-hal/camera/Camera.c
|
#: ports/cxd56/common-hal/camera/Camera.c
|
||||||
msgid "Could not initialize Camera"
|
msgid "Could not initialize Camera"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -1315,7 +1308,8 @@ msgstr "Fase tidak valid"
|
||||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
|
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
|
||||||
#: ports/atmel-samd/common-hal/touchio/TouchIn.c
|
#: ports/atmel-samd/common-hal/touchio/TouchIn.c
|
||||||
#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
|
#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
|
||||||
#: ports/esp32s2/common-hal/touchio/TouchIn.c shared-bindings/pwmio/PWMOut.c
|
#: ports/esp32s2/common-hal/touchio/TouchIn.c
|
||||||
|
#: ports/nrf/common-hal/alarm/pin/PinAlarm.c shared-bindings/pwmio/PWMOut.c
|
||||||
#: shared-module/rgbmatrix/RGBMatrix.c
|
#: shared-module/rgbmatrix/RGBMatrix.c
|
||||||
msgid "Invalid pin"
|
msgid "Invalid pin"
|
||||||
msgstr "Pin tidak valid"
|
msgstr "Pin tidak valid"
|
||||||
|
@ -1670,11 +1664,11 @@ msgstr "Hanya 8 atau 16 bit mono dengan "
|
||||||
|
|
||||||
#: ports/esp32s2/common-hal/wifi/__init__.c
|
#: ports/esp32s2/common-hal/wifi/__init__.c
|
||||||
msgid "Only IPv4 addresses supported"
|
msgid "Only IPv4 addresses supported"
|
||||||
msgstr ""
|
msgstr "Hanya alamat IPv4 yang didukung"
|
||||||
|
|
||||||
#: ports/esp32s2/common-hal/socketpool/SocketPool.c
|
#: ports/esp32s2/common-hal/socketpool/SocketPool.c
|
||||||
msgid "Only IPv4 sockets supported"
|
msgid "Only IPv4 sockets supported"
|
||||||
msgstr ""
|
msgstr "Hanysa socket IPv4 yang didukung"
|
||||||
|
|
||||||
#: shared-module/displayio/OnDiskBitmap.c
|
#: shared-module/displayio/OnDiskBitmap.c
|
||||||
#, c-format
|
#, c-format
|
||||||
|
@ -1698,6 +1692,7 @@ msgid "Only one TouchAlarm can be set in deep sleep."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ports/esp32s2/common-hal/alarm/time/TimeAlarm.c
|
#: ports/esp32s2/common-hal/alarm/time/TimeAlarm.c
|
||||||
|
#: ports/nrf/common-hal/alarm/time/TimeAlarm.c
|
||||||
msgid "Only one alarm.time alarm can be set."
|
msgid "Only one alarm.time alarm can be set."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -1715,15 +1710,15 @@ msgstr ""
|
||||||
|
|
||||||
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
||||||
msgid "Operation timed out"
|
msgid "Operation timed out"
|
||||||
msgstr ""
|
msgstr "Waktu habis"
|
||||||
|
|
||||||
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
||||||
msgid "Out of memory"
|
msgid "Out of memory"
|
||||||
msgstr ""
|
msgstr "Kehabisan memori"
|
||||||
|
|
||||||
#: ports/esp32s2/common-hal/socketpool/SocketPool.c
|
#: ports/esp32s2/common-hal/socketpool/SocketPool.c
|
||||||
msgid "Out of sockets"
|
msgid "Out of sockets"
|
||||||
msgstr ""
|
msgstr "Kehabisan socket"
|
||||||
|
|
||||||
#: ports/raspberrypi/bindings/rp2pio/StateMachine.c
|
#: ports/raspberrypi/bindings/rp2pio/StateMachine.c
|
||||||
msgid "Out-buffer elements must be <= 4 bytes long"
|
msgid "Out-buffer elements must be <= 4 bytes long"
|
||||||
|
@ -1769,7 +1764,7 @@ msgstr "ParallelBus belum didukung"
|
||||||
|
|
||||||
#: ports/esp32s2/common-hal/audiobusio/__init__.c
|
#: ports/esp32s2/common-hal/audiobusio/__init__.c
|
||||||
msgid "Peripheral in use"
|
msgid "Peripheral in use"
|
||||||
msgstr ""
|
msgstr "Periferal sedang digunakan"
|
||||||
|
|
||||||
#: py/moduerrno.c
|
#: py/moduerrno.c
|
||||||
msgid "Permission denied"
|
msgid "Permission denied"
|
||||||
|
@ -1781,7 +1776,7 @@ msgstr ""
|
||||||
|
|
||||||
#: ports/raspberrypi/common-hal/rp2pio/StateMachine.c
|
#: ports/raspberrypi/common-hal/rp2pio/StateMachine.c
|
||||||
msgid "Pin count too large"
|
msgid "Pin count too large"
|
||||||
msgstr ""
|
msgstr "Jumlah pin terlalu besar"
|
||||||
|
|
||||||
#: ports/atmel-samd/common-hal/analogio/AnalogIn.c
|
#: ports/atmel-samd/common-hal/analogio/AnalogIn.c
|
||||||
#: ports/cxd56/common-hal/analogio/AnalogIn.c
|
#: ports/cxd56/common-hal/analogio/AnalogIn.c
|
||||||
|
@ -1823,7 +1818,7 @@ msgstr ""
|
||||||
|
|
||||||
#: ports/raspberrypi/common-hal/rotaryio/IncrementalEncoder.c
|
#: ports/raspberrypi/common-hal/rotaryio/IncrementalEncoder.c
|
||||||
msgid "Pins must be sequential"
|
msgid "Pins must be sequential"
|
||||||
msgstr ""
|
msgstr "Pin harus berurutan"
|
||||||
|
|
||||||
#: ports/raspberrypi/common-hal/audiopwmio/PWMAudioOut.c
|
#: ports/raspberrypi/common-hal/audiopwmio/PWMAudioOut.c
|
||||||
msgid "Pins must share PWM slice"
|
msgid "Pins must share PWM slice"
|
||||||
|
@ -2623,10 +2618,6 @@ msgstr "hanya mampu memiliki hingga 4 parameter untuk Thumb assembly"
|
||||||
msgid "can only have up to 4 parameters to Xtensa assembly"
|
msgid "can only have up to 4 parameters to Xtensa assembly"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: py/persistentcode.c
|
|
||||||
msgid "can only save bytecode"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: py/objtype.c
|
#: py/objtype.c
|
||||||
msgid "can't add special method to already-subclassed class"
|
msgid "can't add special method to already-subclassed class"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -3139,6 +3130,14 @@ msgstr "identifier didefinisi ulang sebagai global"
|
||||||
msgid "identifier redefined as nonlocal"
|
msgid "identifier redefined as nonlocal"
|
||||||
msgstr "identifier didefinisi ulang sebagai nonlocal"
|
msgstr "identifier didefinisi ulang sebagai nonlocal"
|
||||||
|
|
||||||
|
#: py/persistentcode.c
|
||||||
|
msgid "incompatible .mpy file"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: py/persistentcode.c
|
||||||
|
msgid "incompatible native .mpy architecture"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/objstr.c
|
#: py/objstr.c
|
||||||
msgid "incomplete format"
|
msgid "incomplete format"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -3258,6 +3257,10 @@ msgstr ""
|
||||||
msgid "interval must be in range %s-%s"
|
msgid "interval must be in range %s-%s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: py/compile.c
|
||||||
|
msgid "invalid architecture"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: lib/netutils/netutils.c
|
#: lib/netutils/netutils.c
|
||||||
msgid "invalid arguments"
|
msgid "invalid arguments"
|
||||||
msgstr "argumen-argumen tidak valid"
|
msgstr "argumen-argumen tidak valid"
|
||||||
|
@ -3267,10 +3270,6 @@ msgstr "argumen-argumen tidak valid"
|
||||||
msgid "invalid bits_per_pixel %d, must be, 1, 4, 8, 16, 24, or 32"
|
msgid "invalid bits_per_pixel %d, must be, 1, 4, 8, 16, 24, or 32"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: extmod/modussl_axtls.c
|
|
||||||
msgid "invalid cert"
|
|
||||||
msgstr "cert tidak valid"
|
|
||||||
|
|
||||||
#: py/compile.c
|
#: py/compile.c
|
||||||
msgid "invalid decorator"
|
msgid "invalid decorator"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -3301,10 +3300,6 @@ msgstr ""
|
||||||
msgid "invalid hostname"
|
msgid "invalid hostname"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: extmod/modussl_axtls.c
|
|
||||||
msgid "invalid key"
|
|
||||||
msgstr "key tidak valid"
|
|
||||||
|
|
||||||
#: py/compile.c
|
#: py/compile.c
|
||||||
msgid "invalid micropython decorator"
|
msgid "invalid micropython decorator"
|
||||||
msgstr "micropython decorator tidak valid"
|
msgstr "micropython decorator tidak valid"
|
||||||
|
@ -4247,11 +4242,11 @@ msgstr ""
|
||||||
|
|
||||||
#: ports/esp32s2/common-hal/wifi/Radio.c
|
#: ports/esp32s2/common-hal/wifi/Radio.c
|
||||||
msgid "wifi is not enabled"
|
msgid "wifi is not enabled"
|
||||||
msgstr ""
|
msgstr "wifi tidak diaktifkan"
|
||||||
|
|
||||||
#: shared-bindings/_bleio/Adapter.c
|
#: shared-bindings/_bleio/Adapter.c
|
||||||
msgid "window must be <= interval"
|
msgid "window must be <= interval"
|
||||||
msgstr ""
|
msgstr "jendela harus <= interval"
|
||||||
|
|
||||||
#: extmod/ulab/code/numpy/numerical/numerical.c
|
#: extmod/ulab/code/numpy/numerical/numerical.c
|
||||||
msgid "wrong axis index"
|
msgid "wrong axis index"
|
||||||
|
@ -4314,6 +4309,18 @@ msgstr "zi harus berjenis float"
|
||||||
msgid "zi must be of shape (n_section, 2)"
|
msgid "zi must be of shape (n_section, 2)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "Corrupt .mpy file"
|
||||||
|
#~ msgstr "File .mpy rusak"
|
||||||
|
|
||||||
|
#~ msgid "Corrupt raw code"
|
||||||
|
#~ msgstr "Kode raw rusak"
|
||||||
|
|
||||||
|
#~ msgid "invalid cert"
|
||||||
|
#~ msgstr "cert tidak valid"
|
||||||
|
|
||||||
|
#~ msgid "invalid key"
|
||||||
|
#~ msgstr "key tidak valid"
|
||||||
|
|
||||||
#~ msgid "Viper functions don't currently support more than 4 arguments"
|
#~ msgid "Viper functions don't currently support more than 4 arguments"
|
||||||
#~ msgstr "Fungsi Viper saat ini tidak mendukung lebih dari 4 argumen"
|
#~ msgstr "Fungsi Viper saat ini tidak mendukung lebih dari 4 argumen"
|
||||||
|
|
||||||
|
|
|
@ -681,6 +681,7 @@ msgid "Cannot vary frequency on a timer that is already in use"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
|
#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
|
||||||
|
#: ports/nrf/common-hal/alarm/pin/PinAlarm.c
|
||||||
msgid "Cannot wake on pin edge. Only level."
|
msgid "Cannot wake on pin edge. Only level."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -1285,7 +1286,8 @@ msgstr ""
|
||||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
|
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
|
||||||
#: ports/atmel-samd/common-hal/touchio/TouchIn.c
|
#: ports/atmel-samd/common-hal/touchio/TouchIn.c
|
||||||
#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
|
#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
|
||||||
#: ports/esp32s2/common-hal/touchio/TouchIn.c shared-bindings/pwmio/PWMOut.c
|
#: ports/esp32s2/common-hal/touchio/TouchIn.c
|
||||||
|
#: ports/nrf/common-hal/alarm/pin/PinAlarm.c shared-bindings/pwmio/PWMOut.c
|
||||||
#: shared-module/rgbmatrix/RGBMatrix.c
|
#: shared-module/rgbmatrix/RGBMatrix.c
|
||||||
msgid "Invalid pin"
|
msgid "Invalid pin"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -1663,6 +1665,7 @@ msgid "Only one TouchAlarm can be set in deep sleep."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ports/esp32s2/common-hal/alarm/time/TimeAlarm.c
|
#: ports/esp32s2/common-hal/alarm/time/TimeAlarm.c
|
||||||
|
#: ports/nrf/common-hal/alarm/time/TimeAlarm.c
|
||||||
msgid "Only one alarm.time alarm can be set."
|
msgid "Only one alarm.time alarm can be set."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|
37
locale/cs.po
37
locale/cs.po
|
@ -684,6 +684,7 @@ msgid "Cannot vary frequency on a timer that is already in use"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
|
#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
|
||||||
|
#: ports/nrf/common-hal/alarm/pin/PinAlarm.c
|
||||||
msgid "Cannot wake on pin edge. Only level."
|
msgid "Cannot wake on pin edge. Only level."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -736,14 +737,6 @@ msgid ""
|
||||||
"connection."
|
"connection."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: py/persistentcode.c
|
|
||||||
msgid "Corrupt .mpy file"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: py/emitglue.c
|
|
||||||
msgid "Corrupt raw code"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ports/cxd56/common-hal/camera/Camera.c
|
#: ports/cxd56/common-hal/camera/Camera.c
|
||||||
msgid "Could not initialize Camera"
|
msgid "Could not initialize Camera"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -1296,7 +1289,8 @@ msgstr ""
|
||||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
|
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
|
||||||
#: ports/atmel-samd/common-hal/touchio/TouchIn.c
|
#: ports/atmel-samd/common-hal/touchio/TouchIn.c
|
||||||
#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
|
#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
|
||||||
#: ports/esp32s2/common-hal/touchio/TouchIn.c shared-bindings/pwmio/PWMOut.c
|
#: ports/esp32s2/common-hal/touchio/TouchIn.c
|
||||||
|
#: ports/nrf/common-hal/alarm/pin/PinAlarm.c shared-bindings/pwmio/PWMOut.c
|
||||||
#: shared-module/rgbmatrix/RGBMatrix.c
|
#: shared-module/rgbmatrix/RGBMatrix.c
|
||||||
msgid "Invalid pin"
|
msgid "Invalid pin"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -1674,6 +1668,7 @@ msgid "Only one TouchAlarm can be set in deep sleep."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ports/esp32s2/common-hal/alarm/time/TimeAlarm.c
|
#: ports/esp32s2/common-hal/alarm/time/TimeAlarm.c
|
||||||
|
#: ports/nrf/common-hal/alarm/time/TimeAlarm.c
|
||||||
msgid "Only one alarm.time alarm can be set."
|
msgid "Only one alarm.time alarm can be set."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -2577,10 +2572,6 @@ msgstr ""
|
||||||
msgid "can only have up to 4 parameters to Xtensa assembly"
|
msgid "can only have up to 4 parameters to Xtensa assembly"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: py/persistentcode.c
|
|
||||||
msgid "can only save bytecode"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: py/objtype.c
|
#: py/objtype.c
|
||||||
msgid "can't add special method to already-subclassed class"
|
msgid "can't add special method to already-subclassed class"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -3093,6 +3084,14 @@ msgstr ""
|
||||||
msgid "identifier redefined as nonlocal"
|
msgid "identifier redefined as nonlocal"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: py/persistentcode.c
|
||||||
|
msgid "incompatible .mpy file"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: py/persistentcode.c
|
||||||
|
msgid "incompatible native .mpy architecture"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/objstr.c
|
#: py/objstr.c
|
||||||
msgid "incomplete format"
|
msgid "incomplete format"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -3212,6 +3211,10 @@ msgstr ""
|
||||||
msgid "interval must be in range %s-%s"
|
msgid "interval must be in range %s-%s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: py/compile.c
|
||||||
|
msgid "invalid architecture"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: lib/netutils/netutils.c
|
#: lib/netutils/netutils.c
|
||||||
msgid "invalid arguments"
|
msgid "invalid arguments"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -3221,10 +3224,6 @@ msgstr ""
|
||||||
msgid "invalid bits_per_pixel %d, must be, 1, 4, 8, 16, 24, or 32"
|
msgid "invalid bits_per_pixel %d, must be, 1, 4, 8, 16, 24, or 32"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: extmod/modussl_axtls.c
|
|
||||||
msgid "invalid cert"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: py/compile.c
|
#: py/compile.c
|
||||||
msgid "invalid decorator"
|
msgid "invalid decorator"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -3255,10 +3254,6 @@ msgstr ""
|
||||||
msgid "invalid hostname"
|
msgid "invalid hostname"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: extmod/modussl_axtls.c
|
|
||||||
msgid "invalid key"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: py/compile.c
|
#: py/compile.c
|
||||||
msgid "invalid micropython decorator"
|
msgid "invalid micropython decorator"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
|
@ -694,6 +694,7 @@ msgstr ""
|
||||||
"Die Frequenz eines bereits verwendeten Timers kann nicht variiert werden"
|
"Die Frequenz eines bereits verwendeten Timers kann nicht variiert werden"
|
||||||
|
|
||||||
#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
|
#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
|
||||||
|
#: ports/nrf/common-hal/alarm/pin/PinAlarm.c
|
||||||
msgid "Cannot wake on pin edge. Only level."
|
msgid "Cannot wake on pin edge. Only level."
|
||||||
msgstr "Kann nicht auf Flanke wecken, nur auf Level."
|
msgstr "Kann nicht auf Flanke wecken, nur auf Level."
|
||||||
|
|
||||||
|
@ -751,14 +752,6 @@ msgstr ""
|
||||||
"Die Verbindung wurde getrennt und kann nicht mehr verwendet werden. "
|
"Die Verbindung wurde getrennt und kann nicht mehr verwendet werden. "
|
||||||
"Erstellen Sie eine neue Verbindung."
|
"Erstellen Sie eine neue Verbindung."
|
||||||
|
|
||||||
#: py/persistentcode.c
|
|
||||||
msgid "Corrupt .mpy file"
|
|
||||||
msgstr "Beschädigte .mpy Datei"
|
|
||||||
|
|
||||||
#: py/emitglue.c
|
|
||||||
msgid "Corrupt raw code"
|
|
||||||
msgstr "Beschädigter raw code"
|
|
||||||
|
|
||||||
#: ports/cxd56/common-hal/camera/Camera.c
|
#: ports/cxd56/common-hal/camera/Camera.c
|
||||||
msgid "Could not initialize Camera"
|
msgid "Could not initialize Camera"
|
||||||
msgstr "Konnte Kamera nicht initialisieren"
|
msgstr "Konnte Kamera nicht initialisieren"
|
||||||
|
@ -1316,7 +1309,8 @@ msgstr "Ungültige Phase"
|
||||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
|
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
|
||||||
#: ports/atmel-samd/common-hal/touchio/TouchIn.c
|
#: ports/atmel-samd/common-hal/touchio/TouchIn.c
|
||||||
#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
|
#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
|
||||||
#: ports/esp32s2/common-hal/touchio/TouchIn.c shared-bindings/pwmio/PWMOut.c
|
#: ports/esp32s2/common-hal/touchio/TouchIn.c
|
||||||
|
#: ports/nrf/common-hal/alarm/pin/PinAlarm.c shared-bindings/pwmio/PWMOut.c
|
||||||
#: shared-module/rgbmatrix/RGBMatrix.c
|
#: shared-module/rgbmatrix/RGBMatrix.c
|
||||||
msgid "Invalid pin"
|
msgid "Invalid pin"
|
||||||
msgstr "Ungültiger Pin"
|
msgstr "Ungültiger Pin"
|
||||||
|
@ -1701,6 +1695,7 @@ msgid "Only one TouchAlarm can be set in deep sleep."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ports/esp32s2/common-hal/alarm/time/TimeAlarm.c
|
#: ports/esp32s2/common-hal/alarm/time/TimeAlarm.c
|
||||||
|
#: ports/nrf/common-hal/alarm/time/TimeAlarm.c
|
||||||
msgid "Only one alarm.time alarm can be set."
|
msgid "Only one alarm.time alarm can be set."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -2636,10 +2631,6 @@ msgstr "kann nur bis zu 4 Parameter für die Thumb assembly haben"
|
||||||
msgid "can only have up to 4 parameters to Xtensa assembly"
|
msgid "can only have up to 4 parameters to Xtensa assembly"
|
||||||
msgstr "kann nur bis zu 4 Parameter für die Xtensa assembly haben"
|
msgstr "kann nur bis zu 4 Parameter für die Xtensa assembly haben"
|
||||||
|
|
||||||
#: py/persistentcode.c
|
|
||||||
msgid "can only save bytecode"
|
|
||||||
msgstr "kann nur Bytecode speichern"
|
|
||||||
|
|
||||||
#: py/objtype.c
|
#: py/objtype.c
|
||||||
msgid "can't add special method to already-subclassed class"
|
msgid "can't add special method to already-subclassed class"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -3166,6 +3157,14 @@ msgstr "Bezeichner als global neu definiert"
|
||||||
msgid "identifier redefined as nonlocal"
|
msgid "identifier redefined as nonlocal"
|
||||||
msgstr "Bezeichner als nonlocal definiert"
|
msgstr "Bezeichner als nonlocal definiert"
|
||||||
|
|
||||||
|
#: py/persistentcode.c
|
||||||
|
msgid "incompatible .mpy file"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: py/persistentcode.c
|
||||||
|
msgid "incompatible native .mpy architecture"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/objstr.c
|
#: py/objstr.c
|
||||||
msgid "incomplete format"
|
msgid "incomplete format"
|
||||||
msgstr "unvollständiges Format"
|
msgstr "unvollständiges Format"
|
||||||
|
@ -3285,6 +3284,10 @@ msgstr ""
|
||||||
msgid "interval must be in range %s-%s"
|
msgid "interval must be in range %s-%s"
|
||||||
msgstr "Das Intervall muss im Bereich %s-%s sein"
|
msgstr "Das Intervall muss im Bereich %s-%s sein"
|
||||||
|
|
||||||
|
#: py/compile.c
|
||||||
|
msgid "invalid architecture"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: lib/netutils/netutils.c
|
#: lib/netutils/netutils.c
|
||||||
msgid "invalid arguments"
|
msgid "invalid arguments"
|
||||||
msgstr "ungültige argumente"
|
msgstr "ungültige argumente"
|
||||||
|
@ -3294,10 +3297,6 @@ msgstr "ungültige argumente"
|
||||||
msgid "invalid bits_per_pixel %d, must be, 1, 4, 8, 16, 24, or 32"
|
msgid "invalid bits_per_pixel %d, must be, 1, 4, 8, 16, 24, or 32"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: extmod/modussl_axtls.c
|
|
||||||
msgid "invalid cert"
|
|
||||||
msgstr "ungültiges cert"
|
|
||||||
|
|
||||||
#: py/compile.c
|
#: py/compile.c
|
||||||
msgid "invalid decorator"
|
msgid "invalid decorator"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -3328,10 +3327,6 @@ msgstr "ungültiger Formatbezeichner"
|
||||||
msgid "invalid hostname"
|
msgid "invalid hostname"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: extmod/modussl_axtls.c
|
|
||||||
msgid "invalid key"
|
|
||||||
msgstr "ungültiger Schlüssel"
|
|
||||||
|
|
||||||
#: py/compile.c
|
#: py/compile.c
|
||||||
msgid "invalid micropython decorator"
|
msgid "invalid micropython decorator"
|
||||||
msgstr "ungültiger micropython decorator"
|
msgstr "ungültiger micropython decorator"
|
||||||
|
@ -4357,6 +4352,21 @@ msgstr ""
|
||||||
msgid "zi must be of shape (n_section, 2)"
|
msgid "zi must be of shape (n_section, 2)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "Corrupt .mpy file"
|
||||||
|
#~ msgstr "Beschädigte .mpy Datei"
|
||||||
|
|
||||||
|
#~ msgid "Corrupt raw code"
|
||||||
|
#~ msgstr "Beschädigter raw code"
|
||||||
|
|
||||||
|
#~ msgid "can only save bytecode"
|
||||||
|
#~ msgstr "kann nur Bytecode speichern"
|
||||||
|
|
||||||
|
#~ msgid "invalid cert"
|
||||||
|
#~ msgstr "ungültiges cert"
|
||||||
|
|
||||||
|
#~ msgid "invalid key"
|
||||||
|
#~ msgstr "ungültiger Schlüssel"
|
||||||
|
|
||||||
#~ msgid "Viper functions don't currently support more than 4 arguments"
|
#~ msgid "Viper functions don't currently support more than 4 arguments"
|
||||||
#~ msgstr "Viper-Funktionen unterstützen derzeit nicht mehr als 4 Argumente"
|
#~ msgstr "Viper-Funktionen unterstützen derzeit nicht mehr als 4 Argumente"
|
||||||
|
|
||||||
|
|
37
locale/el.po
37
locale/el.po
|
@ -681,6 +681,7 @@ msgid "Cannot vary frequency on a timer that is already in use"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
|
#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
|
||||||
|
#: ports/nrf/common-hal/alarm/pin/PinAlarm.c
|
||||||
msgid "Cannot wake on pin edge. Only level."
|
msgid "Cannot wake on pin edge. Only level."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -733,14 +734,6 @@ msgid ""
|
||||||
"connection."
|
"connection."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: py/persistentcode.c
|
|
||||||
msgid "Corrupt .mpy file"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: py/emitglue.c
|
|
||||||
msgid "Corrupt raw code"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ports/cxd56/common-hal/camera/Camera.c
|
#: ports/cxd56/common-hal/camera/Camera.c
|
||||||
msgid "Could not initialize Camera"
|
msgid "Could not initialize Camera"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -1293,7 +1286,8 @@ msgstr ""
|
||||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
|
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
|
||||||
#: ports/atmel-samd/common-hal/touchio/TouchIn.c
|
#: ports/atmel-samd/common-hal/touchio/TouchIn.c
|
||||||
#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
|
#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
|
||||||
#: ports/esp32s2/common-hal/touchio/TouchIn.c shared-bindings/pwmio/PWMOut.c
|
#: ports/esp32s2/common-hal/touchio/TouchIn.c
|
||||||
|
#: ports/nrf/common-hal/alarm/pin/PinAlarm.c shared-bindings/pwmio/PWMOut.c
|
||||||
#: shared-module/rgbmatrix/RGBMatrix.c
|
#: shared-module/rgbmatrix/RGBMatrix.c
|
||||||
msgid "Invalid pin"
|
msgid "Invalid pin"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -1671,6 +1665,7 @@ msgid "Only one TouchAlarm can be set in deep sleep."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ports/esp32s2/common-hal/alarm/time/TimeAlarm.c
|
#: ports/esp32s2/common-hal/alarm/time/TimeAlarm.c
|
||||||
|
#: ports/nrf/common-hal/alarm/time/TimeAlarm.c
|
||||||
msgid "Only one alarm.time alarm can be set."
|
msgid "Only one alarm.time alarm can be set."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -2574,10 +2569,6 @@ msgstr ""
|
||||||
msgid "can only have up to 4 parameters to Xtensa assembly"
|
msgid "can only have up to 4 parameters to Xtensa assembly"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: py/persistentcode.c
|
|
||||||
msgid "can only save bytecode"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: py/objtype.c
|
#: py/objtype.c
|
||||||
msgid "can't add special method to already-subclassed class"
|
msgid "can't add special method to already-subclassed class"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -3090,6 +3081,14 @@ msgstr ""
|
||||||
msgid "identifier redefined as nonlocal"
|
msgid "identifier redefined as nonlocal"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: py/persistentcode.c
|
||||||
|
msgid "incompatible .mpy file"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: py/persistentcode.c
|
||||||
|
msgid "incompatible native .mpy architecture"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/objstr.c
|
#: py/objstr.c
|
||||||
msgid "incomplete format"
|
msgid "incomplete format"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -3209,6 +3208,10 @@ msgstr ""
|
||||||
msgid "interval must be in range %s-%s"
|
msgid "interval must be in range %s-%s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: py/compile.c
|
||||||
|
msgid "invalid architecture"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: lib/netutils/netutils.c
|
#: lib/netutils/netutils.c
|
||||||
msgid "invalid arguments"
|
msgid "invalid arguments"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -3218,10 +3221,6 @@ msgstr ""
|
||||||
msgid "invalid bits_per_pixel %d, must be, 1, 4, 8, 16, 24, or 32"
|
msgid "invalid bits_per_pixel %d, must be, 1, 4, 8, 16, 24, or 32"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: extmod/modussl_axtls.c
|
|
||||||
msgid "invalid cert"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: py/compile.c
|
#: py/compile.c
|
||||||
msgid "invalid decorator"
|
msgid "invalid decorator"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -3252,10 +3251,6 @@ msgstr ""
|
||||||
msgid "invalid hostname"
|
msgid "invalid hostname"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: extmod/modussl_axtls.c
|
|
||||||
msgid "invalid key"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: py/compile.c
|
#: py/compile.c
|
||||||
msgid "invalid micropython decorator"
|
msgid "invalid micropython decorator"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
|
@ -692,6 +692,7 @@ msgid "Cannot vary frequency on a timer that is already in use"
|
||||||
msgstr "Cannot vary frequency on a timer that is already in use"
|
msgstr "Cannot vary frequency on a timer that is already in use"
|
||||||
|
|
||||||
#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
|
#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
|
||||||
|
#: ports/nrf/common-hal/alarm/pin/PinAlarm.c
|
||||||
msgid "Cannot wake on pin edge. Only level."
|
msgid "Cannot wake on pin edge. Only level."
|
||||||
msgstr "Cannot wake on pin edge. Only level."
|
msgstr "Cannot wake on pin edge. Only level."
|
||||||
|
|
||||||
|
@ -748,14 +749,6 @@ msgstr ""
|
||||||
"Connection has been disconnected and can no longer be used. Create a new "
|
"Connection has been disconnected and can no longer be used. Create a new "
|
||||||
"connection."
|
"connection."
|
||||||
|
|
||||||
#: py/persistentcode.c
|
|
||||||
msgid "Corrupt .mpy file"
|
|
||||||
msgstr "Corrupt .mpy file"
|
|
||||||
|
|
||||||
#: py/emitglue.c
|
|
||||||
msgid "Corrupt raw code"
|
|
||||||
msgstr "Corrupt raw code"
|
|
||||||
|
|
||||||
#: ports/cxd56/common-hal/camera/Camera.c
|
#: ports/cxd56/common-hal/camera/Camera.c
|
||||||
msgid "Could not initialize Camera"
|
msgid "Could not initialize Camera"
|
||||||
msgstr "Could not initialise camera"
|
msgstr "Could not initialise camera"
|
||||||
|
@ -1310,7 +1303,8 @@ msgstr "Invalid phase"
|
||||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
|
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
|
||||||
#: ports/atmel-samd/common-hal/touchio/TouchIn.c
|
#: ports/atmel-samd/common-hal/touchio/TouchIn.c
|
||||||
#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
|
#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
|
||||||
#: ports/esp32s2/common-hal/touchio/TouchIn.c shared-bindings/pwmio/PWMOut.c
|
#: ports/esp32s2/common-hal/touchio/TouchIn.c
|
||||||
|
#: ports/nrf/common-hal/alarm/pin/PinAlarm.c shared-bindings/pwmio/PWMOut.c
|
||||||
#: shared-module/rgbmatrix/RGBMatrix.c
|
#: shared-module/rgbmatrix/RGBMatrix.c
|
||||||
msgid "Invalid pin"
|
msgid "Invalid pin"
|
||||||
msgstr "Invalid pin"
|
msgstr "Invalid pin"
|
||||||
|
@ -1692,6 +1686,7 @@ msgid "Only one TouchAlarm can be set in deep sleep."
|
||||||
msgstr "Only one TouchAlarm can be set in deep sleep."
|
msgstr "Only one TouchAlarm can be set in deep sleep."
|
||||||
|
|
||||||
#: ports/esp32s2/common-hal/alarm/time/TimeAlarm.c
|
#: ports/esp32s2/common-hal/alarm/time/TimeAlarm.c
|
||||||
|
#: ports/nrf/common-hal/alarm/time/TimeAlarm.c
|
||||||
msgid "Only one alarm.time alarm can be set."
|
msgid "Only one alarm.time alarm can be set."
|
||||||
msgstr "Only one alarm.time alarm can be set."
|
msgstr "Only one alarm.time alarm can be set."
|
||||||
|
|
||||||
|
@ -2618,10 +2613,6 @@ msgstr "Can only have up to 4 parameters to thumb assembly"
|
||||||
msgid "can only have up to 4 parameters to Xtensa assembly"
|
msgid "can only have up to 4 parameters to Xtensa assembly"
|
||||||
msgstr "Can only have up to 4 parameters to xtensa assembly"
|
msgstr "Can only have up to 4 parameters to xtensa assembly"
|
||||||
|
|
||||||
#: py/persistentcode.c
|
|
||||||
msgid "can only save bytecode"
|
|
||||||
msgstr "Can only save bytecode"
|
|
||||||
|
|
||||||
#: py/objtype.c
|
#: py/objtype.c
|
||||||
msgid "can't add special method to already-subclassed class"
|
msgid "can't add special method to already-subclassed class"
|
||||||
msgstr "Can't add special method to already-subclassed class"
|
msgstr "Can't add special method to already-subclassed class"
|
||||||
|
@ -3137,6 +3128,14 @@ msgstr "identifier redefined as global"
|
||||||
msgid "identifier redefined as nonlocal"
|
msgid "identifier redefined as nonlocal"
|
||||||
msgstr "identifier redefined as nonlocal"
|
msgstr "identifier redefined as nonlocal"
|
||||||
|
|
||||||
|
#: py/persistentcode.c
|
||||||
|
msgid "incompatible .mpy file"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: py/persistentcode.c
|
||||||
|
msgid "incompatible native .mpy architecture"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/objstr.c
|
#: py/objstr.c
|
||||||
msgid "incomplete format"
|
msgid "incomplete format"
|
||||||
msgstr "incomplete format"
|
msgstr "incomplete format"
|
||||||
|
@ -3256,6 +3255,10 @@ msgstr "interp is defined for 1D arrays of equal length"
|
||||||
msgid "interval must be in range %s-%s"
|
msgid "interval must be in range %s-%s"
|
||||||
msgstr "interval must be in range %s-%s"
|
msgstr "interval must be in range %s-%s"
|
||||||
|
|
||||||
|
#: py/compile.c
|
||||||
|
msgid "invalid architecture"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: lib/netutils/netutils.c
|
#: lib/netutils/netutils.c
|
||||||
msgid "invalid arguments"
|
msgid "invalid arguments"
|
||||||
msgstr "invalid arguments"
|
msgstr "invalid arguments"
|
||||||
|
@ -3265,10 +3268,6 @@ msgstr "invalid arguments"
|
||||||
msgid "invalid bits_per_pixel %d, must be, 1, 4, 8, 16, 24, or 32"
|
msgid "invalid bits_per_pixel %d, must be, 1, 4, 8, 16, 24, or 32"
|
||||||
msgstr "invalid bits_per_pixel %d, must be, 1, 4, 8, 16, 24, or 32"
|
msgstr "invalid bits_per_pixel %d, must be, 1, 4, 8, 16, 24, or 32"
|
||||||
|
|
||||||
#: extmod/modussl_axtls.c
|
|
||||||
msgid "invalid cert"
|
|
||||||
msgstr "invalid cert"
|
|
||||||
|
|
||||||
#: py/compile.c
|
#: py/compile.c
|
||||||
msgid "invalid decorator"
|
msgid "invalid decorator"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -3299,10 +3298,6 @@ msgstr "invalid format specifier"
|
||||||
msgid "invalid hostname"
|
msgid "invalid hostname"
|
||||||
msgstr "invalid hostname"
|
msgstr "invalid hostname"
|
||||||
|
|
||||||
#: extmod/modussl_axtls.c
|
|
||||||
msgid "invalid key"
|
|
||||||
msgstr "invalid key"
|
|
||||||
|
|
||||||
#: py/compile.c
|
#: py/compile.c
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid "invalid micropython decorator"
|
msgid "invalid micropython decorator"
|
||||||
|
@ -4314,6 +4309,21 @@ msgstr "zi must be of float type"
|
||||||
msgid "zi must be of shape (n_section, 2)"
|
msgid "zi must be of shape (n_section, 2)"
|
||||||
msgstr "zi must be of shape (n_section, 2)"
|
msgstr "zi must be of shape (n_section, 2)"
|
||||||
|
|
||||||
|
#~ msgid "Corrupt .mpy file"
|
||||||
|
#~ msgstr "Corrupt .mpy file"
|
||||||
|
|
||||||
|
#~ msgid "Corrupt raw code"
|
||||||
|
#~ msgstr "Corrupt raw code"
|
||||||
|
|
||||||
|
#~ msgid "can only save bytecode"
|
||||||
|
#~ msgstr "Can only save bytecode"
|
||||||
|
|
||||||
|
#~ msgid "invalid cert"
|
||||||
|
#~ msgstr "invalid cert"
|
||||||
|
|
||||||
|
#~ msgid "invalid key"
|
||||||
|
#~ msgstr "invalid key"
|
||||||
|
|
||||||
#~ msgid "Viper functions don't currently support more than 4 arguments"
|
#~ msgid "Viper functions don't currently support more than 4 arguments"
|
||||||
#~ msgstr "Viper functions don't currently support more than 4 arguments"
|
#~ msgstr "Viper functions don't currently support more than 4 arguments"
|
||||||
|
|
||||||
|
|
54
locale/es.po
54
locale/es.po
|
@ -8,7 +8,7 @@ msgstr ""
|
||||||
"Project-Id-Version: \n"
|
"Project-Id-Version: \n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2021-01-04 12:55-0600\n"
|
"POT-Creation-Date: 2021-01-04 12:55-0600\n"
|
||||||
"PO-Revision-Date: 2021-04-25 18:43+0000\n"
|
"PO-Revision-Date: 2021-04-28 16:11+0000\n"
|
||||||
"Last-Translator: Alvaro Figueroa <alvaro@greencore.co.cr>\n"
|
"Last-Translator: Alvaro Figueroa <alvaro@greencore.co.cr>\n"
|
||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
"Language: es\n"
|
"Language: es\n"
|
||||||
|
@ -701,6 +701,7 @@ msgid "Cannot vary frequency on a timer that is already in use"
|
||||||
msgstr "No puede variar la frecuencia en un temporizador que ya está en uso"
|
msgstr "No puede variar la frecuencia en un temporizador que ya está en uso"
|
||||||
|
|
||||||
#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
|
#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
|
||||||
|
#: ports/nrf/common-hal/alarm/pin/PinAlarm.c
|
||||||
msgid "Cannot wake on pin edge. Only level."
|
msgid "Cannot wake on pin edge. Only level."
|
||||||
msgstr "No puede despertar en pin edge, solo en nivel."
|
msgstr "No puede despertar en pin edge, solo en nivel."
|
||||||
|
|
||||||
|
@ -757,14 +758,6 @@ msgstr ""
|
||||||
"La conexión se ha desconectado y ya no se puede usar. Crea una nueva "
|
"La conexión se ha desconectado y ya no se puede usar. Crea una nueva "
|
||||||
"conexión."
|
"conexión."
|
||||||
|
|
||||||
#: py/persistentcode.c
|
|
||||||
msgid "Corrupt .mpy file"
|
|
||||||
msgstr "Archivo .mpy corrupto"
|
|
||||||
|
|
||||||
#: py/emitglue.c
|
|
||||||
msgid "Corrupt raw code"
|
|
||||||
msgstr "Código crudo corrupto"
|
|
||||||
|
|
||||||
#: ports/cxd56/common-hal/camera/Camera.c
|
#: ports/cxd56/common-hal/camera/Camera.c
|
||||||
msgid "Could not initialize Camera"
|
msgid "Could not initialize Camera"
|
||||||
msgstr "No se puede inicializar Camera"
|
msgstr "No se puede inicializar Camera"
|
||||||
|
@ -1327,7 +1320,8 @@ msgstr "Fase inválida"
|
||||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
|
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
|
||||||
#: ports/atmel-samd/common-hal/touchio/TouchIn.c
|
#: ports/atmel-samd/common-hal/touchio/TouchIn.c
|
||||||
#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
|
#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
|
||||||
#: ports/esp32s2/common-hal/touchio/TouchIn.c shared-bindings/pwmio/PWMOut.c
|
#: ports/esp32s2/common-hal/touchio/TouchIn.c
|
||||||
|
#: ports/nrf/common-hal/alarm/pin/PinAlarm.c shared-bindings/pwmio/PWMOut.c
|
||||||
#: shared-module/rgbmatrix/RGBMatrix.c
|
#: shared-module/rgbmatrix/RGBMatrix.c
|
||||||
msgid "Invalid pin"
|
msgid "Invalid pin"
|
||||||
msgstr "Pin inválido"
|
msgstr "Pin inválido"
|
||||||
|
@ -1715,6 +1709,7 @@ msgid "Only one TouchAlarm can be set in deep sleep."
|
||||||
msgstr "Solamente una TouchAlarm puede ser configurada durante deep sleep."
|
msgstr "Solamente una TouchAlarm puede ser configurada durante deep sleep."
|
||||||
|
|
||||||
#: ports/esp32s2/common-hal/alarm/time/TimeAlarm.c
|
#: ports/esp32s2/common-hal/alarm/time/TimeAlarm.c
|
||||||
|
#: ports/nrf/common-hal/alarm/time/TimeAlarm.c
|
||||||
msgid "Only one alarm.time alarm can be set."
|
msgid "Only one alarm.time alarm can be set."
|
||||||
msgstr "Solamente una alarm.time puede ser configurada."
|
msgstr "Solamente una alarm.time puede ser configurada."
|
||||||
|
|
||||||
|
@ -2651,10 +2646,6 @@ msgstr "solo puede tener hasta 4 parámetros para ensamblar Thumb"
|
||||||
msgid "can only have up to 4 parameters to Xtensa assembly"
|
msgid "can only have up to 4 parameters to Xtensa assembly"
|
||||||
msgstr "solo puede tener hasta 4 parámetros para ensamblador Xtensa"
|
msgstr "solo puede tener hasta 4 parámetros para ensamblador Xtensa"
|
||||||
|
|
||||||
#: py/persistentcode.c
|
|
||||||
msgid "can only save bytecode"
|
|
||||||
msgstr "solo puede almacenar bytecode"
|
|
||||||
|
|
||||||
#: py/objtype.c
|
#: py/objtype.c
|
||||||
msgid "can't add special method to already-subclassed class"
|
msgid "can't add special method to already-subclassed class"
|
||||||
msgstr "no se puede agregar un método a una clase ya subclasificada"
|
msgstr "no se puede agregar un método a una clase ya subclasificada"
|
||||||
|
@ -3174,6 +3165,14 @@ msgstr "identificador redefinido como global"
|
||||||
msgid "identifier redefined as nonlocal"
|
msgid "identifier redefined as nonlocal"
|
||||||
msgstr "identificador redefinido como nonlocal"
|
msgstr "identificador redefinido como nonlocal"
|
||||||
|
|
||||||
|
#: py/persistentcode.c
|
||||||
|
msgid "incompatible .mpy file"
|
||||||
|
msgstr "archivo .mpy incompatible"
|
||||||
|
|
||||||
|
#: py/persistentcode.c
|
||||||
|
msgid "incompatible native .mpy architecture"
|
||||||
|
msgstr "arquitectura nativa de .mpy incompatible"
|
||||||
|
|
||||||
#: py/objstr.c
|
#: py/objstr.c
|
||||||
msgid "incomplete format"
|
msgid "incomplete format"
|
||||||
msgstr "formato incompleto"
|
msgstr "formato incompleto"
|
||||||
|
@ -3293,6 +3292,10 @@ msgstr "interp está definido para arreglos de 1D del mismo tamaño"
|
||||||
msgid "interval must be in range %s-%s"
|
msgid "interval must be in range %s-%s"
|
||||||
msgstr "el intervalo debe ser der rango %s-%s"
|
msgstr "el intervalo debe ser der rango %s-%s"
|
||||||
|
|
||||||
|
#: py/compile.c
|
||||||
|
msgid "invalid architecture"
|
||||||
|
msgstr "arquitectura inválida"
|
||||||
|
|
||||||
#: lib/netutils/netutils.c
|
#: lib/netutils/netutils.c
|
||||||
msgid "invalid arguments"
|
msgid "invalid arguments"
|
||||||
msgstr "argumentos inválidos"
|
msgstr "argumentos inválidos"
|
||||||
|
@ -3302,10 +3305,6 @@ msgstr "argumentos inválidos"
|
||||||
msgid "invalid bits_per_pixel %d, must be, 1, 4, 8, 16, 24, or 32"
|
msgid "invalid bits_per_pixel %d, must be, 1, 4, 8, 16, 24, or 32"
|
||||||
msgstr "los bits_per_pixel %d no son validos, deben ser 1, 4, 8, 16, 24 o 32"
|
msgstr "los bits_per_pixel %d no son validos, deben ser 1, 4, 8, 16, 24 o 32"
|
||||||
|
|
||||||
#: extmod/modussl_axtls.c
|
|
||||||
msgid "invalid cert"
|
|
||||||
msgstr "certificado inválido"
|
|
||||||
|
|
||||||
#: py/compile.c
|
#: py/compile.c
|
||||||
msgid "invalid decorator"
|
msgid "invalid decorator"
|
||||||
msgstr "decorador invalido"
|
msgstr "decorador invalido"
|
||||||
|
@ -3336,10 +3335,6 @@ msgstr "especificador de formato inválido"
|
||||||
msgid "invalid hostname"
|
msgid "invalid hostname"
|
||||||
msgstr "hostname inválido"
|
msgstr "hostname inválido"
|
||||||
|
|
||||||
#: extmod/modussl_axtls.c
|
|
||||||
msgid "invalid key"
|
|
||||||
msgstr "llave inválida"
|
|
||||||
|
|
||||||
#: py/compile.c
|
#: py/compile.c
|
||||||
msgid "invalid micropython decorator"
|
msgid "invalid micropython decorator"
|
||||||
msgstr "decorador de micropython inválido"
|
msgstr "decorador de micropython inválido"
|
||||||
|
@ -4358,6 +4353,21 @@ msgstr "zi debe ser de tipo flotante"
|
||||||
msgid "zi must be of shape (n_section, 2)"
|
msgid "zi must be of shape (n_section, 2)"
|
||||||
msgstr "zi debe ser una forma (n_section,2)"
|
msgstr "zi debe ser una forma (n_section,2)"
|
||||||
|
|
||||||
|
#~ msgid "Corrupt .mpy file"
|
||||||
|
#~ msgstr "Archivo .mpy corrupto"
|
||||||
|
|
||||||
|
#~ msgid "Corrupt raw code"
|
||||||
|
#~ msgstr "Código crudo corrupto"
|
||||||
|
|
||||||
|
#~ msgid "can only save bytecode"
|
||||||
|
#~ msgstr "solo puede almacenar bytecode"
|
||||||
|
|
||||||
|
#~ msgid "invalid cert"
|
||||||
|
#~ msgstr "certificado inválido"
|
||||||
|
|
||||||
|
#~ msgid "invalid key"
|
||||||
|
#~ msgstr "llave inválida"
|
||||||
|
|
||||||
#~ msgid "Viper functions don't currently support more than 4 arguments"
|
#~ msgid "Viper functions don't currently support more than 4 arguments"
|
||||||
#~ msgstr "funciones Viper no soportan por el momento, más de 4 argumentos"
|
#~ msgstr "funciones Viper no soportan por el momento, más de 4 argumentos"
|
||||||
|
|
||||||
|
|
|
@ -688,6 +688,7 @@ msgid "Cannot vary frequency on a timer that is already in use"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
|
#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
|
||||||
|
#: ports/nrf/common-hal/alarm/pin/PinAlarm.c
|
||||||
msgid "Cannot wake on pin edge. Only level."
|
msgid "Cannot wake on pin edge. Only level."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -741,14 +742,6 @@ msgid ""
|
||||||
"connection."
|
"connection."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: py/persistentcode.c
|
|
||||||
msgid "Corrupt .mpy file"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: py/emitglue.c
|
|
||||||
msgid "Corrupt raw code"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ports/cxd56/common-hal/camera/Camera.c
|
#: ports/cxd56/common-hal/camera/Camera.c
|
||||||
msgid "Could not initialize Camera"
|
msgid "Could not initialize Camera"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -1308,7 +1301,8 @@ msgstr "Mali ang phase"
|
||||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
|
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
|
||||||
#: ports/atmel-samd/common-hal/touchio/TouchIn.c
|
#: ports/atmel-samd/common-hal/touchio/TouchIn.c
|
||||||
#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
|
#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
|
||||||
#: ports/esp32s2/common-hal/touchio/TouchIn.c shared-bindings/pwmio/PWMOut.c
|
#: ports/esp32s2/common-hal/touchio/TouchIn.c
|
||||||
|
#: ports/nrf/common-hal/alarm/pin/PinAlarm.c shared-bindings/pwmio/PWMOut.c
|
||||||
#: shared-module/rgbmatrix/RGBMatrix.c
|
#: shared-module/rgbmatrix/RGBMatrix.c
|
||||||
msgid "Invalid pin"
|
msgid "Invalid pin"
|
||||||
msgstr "Mali ang pin"
|
msgstr "Mali ang pin"
|
||||||
|
@ -1689,6 +1683,7 @@ msgid "Only one TouchAlarm can be set in deep sleep."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ports/esp32s2/common-hal/alarm/time/TimeAlarm.c
|
#: ports/esp32s2/common-hal/alarm/time/TimeAlarm.c
|
||||||
|
#: ports/nrf/common-hal/alarm/time/TimeAlarm.c
|
||||||
msgid "Only one alarm.time alarm can be set."
|
msgid "Only one alarm.time alarm can be set."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -2603,10 +2598,6 @@ msgstr "maaari lamang magkaroon ng hanggang 4 na parameter sa Thumb assembly"
|
||||||
msgid "can only have up to 4 parameters to Xtensa assembly"
|
msgid "can only have up to 4 parameters to Xtensa assembly"
|
||||||
msgstr "maaari lamang magkaroon ng hanggang 4 na parameter sa Xtensa assembly"
|
msgstr "maaari lamang magkaroon ng hanggang 4 na parameter sa Xtensa assembly"
|
||||||
|
|
||||||
#: py/persistentcode.c
|
|
||||||
msgid "can only save bytecode"
|
|
||||||
msgstr "maaring i-save lamang ang bytecode"
|
|
||||||
|
|
||||||
#: py/objtype.c
|
#: py/objtype.c
|
||||||
msgid "can't add special method to already-subclassed class"
|
msgid "can't add special method to already-subclassed class"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -3131,6 +3122,14 @@ msgstr "identifier ginawang global"
|
||||||
msgid "identifier redefined as nonlocal"
|
msgid "identifier redefined as nonlocal"
|
||||||
msgstr "identifier ginawang nonlocal"
|
msgstr "identifier ginawang nonlocal"
|
||||||
|
|
||||||
|
#: py/persistentcode.c
|
||||||
|
msgid "incompatible .mpy file"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: py/persistentcode.c
|
||||||
|
msgid "incompatible native .mpy architecture"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/objstr.c
|
#: py/objstr.c
|
||||||
msgid "incomplete format"
|
msgid "incomplete format"
|
||||||
msgstr "hindi kumpleto ang format"
|
msgstr "hindi kumpleto ang format"
|
||||||
|
@ -3250,6 +3249,10 @@ msgstr ""
|
||||||
msgid "interval must be in range %s-%s"
|
msgid "interval must be in range %s-%s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: py/compile.c
|
||||||
|
msgid "invalid architecture"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: lib/netutils/netutils.c
|
#: lib/netutils/netutils.c
|
||||||
msgid "invalid arguments"
|
msgid "invalid arguments"
|
||||||
msgstr "mali ang mga argumento"
|
msgstr "mali ang mga argumento"
|
||||||
|
@ -3259,10 +3262,6 @@ msgstr "mali ang mga argumento"
|
||||||
msgid "invalid bits_per_pixel %d, must be, 1, 4, 8, 16, 24, or 32"
|
msgid "invalid bits_per_pixel %d, must be, 1, 4, 8, 16, 24, or 32"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: extmod/modussl_axtls.c
|
|
||||||
msgid "invalid cert"
|
|
||||||
msgstr "mali ang cert"
|
|
||||||
|
|
||||||
#: py/compile.c
|
#: py/compile.c
|
||||||
msgid "invalid decorator"
|
msgid "invalid decorator"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -3293,10 +3292,6 @@ msgstr "mali ang format specifier"
|
||||||
msgid "invalid hostname"
|
msgid "invalid hostname"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: extmod/modussl_axtls.c
|
|
||||||
msgid "invalid key"
|
|
||||||
msgstr "mali ang key"
|
|
||||||
|
|
||||||
#: py/compile.c
|
#: py/compile.c
|
||||||
msgid "invalid micropython decorator"
|
msgid "invalid micropython decorator"
|
||||||
msgstr "mali ang micropython decorator"
|
msgstr "mali ang micropython decorator"
|
||||||
|
@ -4317,6 +4312,15 @@ msgstr ""
|
||||||
msgid "zi must be of shape (n_section, 2)"
|
msgid "zi must be of shape (n_section, 2)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "can only save bytecode"
|
||||||
|
#~ msgstr "maaring i-save lamang ang bytecode"
|
||||||
|
|
||||||
|
#~ msgid "invalid cert"
|
||||||
|
#~ msgstr "mali ang cert"
|
||||||
|
|
||||||
|
#~ msgid "invalid key"
|
||||||
|
#~ msgstr "mali ang key"
|
||||||
|
|
||||||
#~ msgid "Viper functions don't currently support more than 4 arguments"
|
#~ msgid "Viper functions don't currently support more than 4 arguments"
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
#~ "Ang mga function ng Viper ay kasalukuyang hindi sumusuporta sa higit sa 4 "
|
#~ "Ang mga function ng Viper ay kasalukuyang hindi sumusuporta sa higit sa 4 "
|
||||||
|
|
54
locale/fr.po
54
locale/fr.po
|
@ -8,7 +8,7 @@ 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: 2021-01-04 12:55-0600\n"
|
"POT-Creation-Date: 2021-01-04 12:55-0600\n"
|
||||||
"PO-Revision-Date: 2021-04-24 14:29+0000\n"
|
"PO-Revision-Date: 2021-04-28 16:11+0000\n"
|
||||||
"Last-Translator: Hugo Dahl <hugo@code-jedi.com>\n"
|
"Last-Translator: Hugo Dahl <hugo@code-jedi.com>\n"
|
||||||
"Language: fr\n"
|
"Language: fr\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
|
@ -707,6 +707,7 @@ msgid "Cannot vary frequency on a timer that is already in use"
|
||||||
msgstr "Impossible de faire varier la fréquence sur un minuteur déjà utilisée"
|
msgstr "Impossible de faire varier la fréquence sur un minuteur déjà utilisée"
|
||||||
|
|
||||||
#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
|
#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
|
||||||
|
#: ports/nrf/common-hal/alarm/pin/PinAlarm.c
|
||||||
msgid "Cannot wake on pin edge. Only level."
|
msgid "Cannot wake on pin edge. Only level."
|
||||||
msgstr "Ne peut reveillé sur le board de broche. Seuleument à niveau."
|
msgstr "Ne peut reveillé sur le board de broche. Seuleument à niveau."
|
||||||
|
|
||||||
|
@ -764,14 +765,6 @@ msgstr ""
|
||||||
"La connexion a été déconnectée et ne peut plus être utilisée. Créez une "
|
"La connexion a été déconnectée et ne peut plus être utilisée. Créez une "
|
||||||
"nouvelle connexion."
|
"nouvelle connexion."
|
||||||
|
|
||||||
#: py/persistentcode.c
|
|
||||||
msgid "Corrupt .mpy file"
|
|
||||||
msgstr "Fichier .mpy corrompu"
|
|
||||||
|
|
||||||
#: py/emitglue.c
|
|
||||||
msgid "Corrupt raw code"
|
|
||||||
msgstr "Code brut corrompu"
|
|
||||||
|
|
||||||
#: ports/cxd56/common-hal/camera/Camera.c
|
#: ports/cxd56/common-hal/camera/Camera.c
|
||||||
msgid "Could not initialize Camera"
|
msgid "Could not initialize Camera"
|
||||||
msgstr "Impossible d'initialiser Camera"
|
msgstr "Impossible d'initialiser Camera"
|
||||||
|
@ -1339,7 +1332,8 @@ msgstr "Phase invalide"
|
||||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
|
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
|
||||||
#: ports/atmel-samd/common-hal/touchio/TouchIn.c
|
#: ports/atmel-samd/common-hal/touchio/TouchIn.c
|
||||||
#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
|
#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
|
||||||
#: ports/esp32s2/common-hal/touchio/TouchIn.c shared-bindings/pwmio/PWMOut.c
|
#: ports/esp32s2/common-hal/touchio/TouchIn.c
|
||||||
|
#: ports/nrf/common-hal/alarm/pin/PinAlarm.c shared-bindings/pwmio/PWMOut.c
|
||||||
#: shared-module/rgbmatrix/RGBMatrix.c
|
#: shared-module/rgbmatrix/RGBMatrix.c
|
||||||
msgid "Invalid pin"
|
msgid "Invalid pin"
|
||||||
msgstr "Broche invalide"
|
msgstr "Broche invalide"
|
||||||
|
@ -1725,6 +1719,7 @@ msgid "Only one TouchAlarm can be set in deep sleep."
|
||||||
msgstr "Seulement une TouchAlarm peu être réglée en someil profond."
|
msgstr "Seulement une TouchAlarm peu être réglée en someil profond."
|
||||||
|
|
||||||
#: ports/esp32s2/common-hal/alarm/time/TimeAlarm.c
|
#: ports/esp32s2/common-hal/alarm/time/TimeAlarm.c
|
||||||
|
#: ports/nrf/common-hal/alarm/time/TimeAlarm.c
|
||||||
msgid "Only one alarm.time alarm can be set."
|
msgid "Only one alarm.time alarm can be set."
|
||||||
msgstr "Seulement une alarme alarm.time peut être réglée."
|
msgstr "Seulement une alarme alarm.time peut être réglée."
|
||||||
|
|
||||||
|
@ -2666,10 +2661,6 @@ msgstr "il peut y avoir jusqu'à 4 paramètres pour l'assemblage Thumb"
|
||||||
msgid "can only have up to 4 parameters to Xtensa assembly"
|
msgid "can only have up to 4 parameters to Xtensa assembly"
|
||||||
msgstr "maximum 4 paramètres pour l'assembleur Xtensa"
|
msgstr "maximum 4 paramètres pour l'assembleur Xtensa"
|
||||||
|
|
||||||
#: py/persistentcode.c
|
|
||||||
msgid "can only save bytecode"
|
|
||||||
msgstr "ne peut sauvegarder que du bytecode"
|
|
||||||
|
|
||||||
#: py/objtype.c
|
#: py/objtype.c
|
||||||
msgid "can't add special method to already-subclassed class"
|
msgid "can't add special method to already-subclassed class"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -3197,6 +3188,14 @@ msgstr "identifiant redéfini comme global"
|
||||||
msgid "identifier redefined as nonlocal"
|
msgid "identifier redefined as nonlocal"
|
||||||
msgstr "identifiant redéfini comme nonlocal"
|
msgstr "identifiant redéfini comme nonlocal"
|
||||||
|
|
||||||
|
#: py/persistentcode.c
|
||||||
|
msgid "incompatible .mpy file"
|
||||||
|
msgstr "Fichier .mpy incompatible"
|
||||||
|
|
||||||
|
#: py/persistentcode.c
|
||||||
|
msgid "incompatible native .mpy architecture"
|
||||||
|
msgstr "architecture native .mpy incompatible"
|
||||||
|
|
||||||
#: py/objstr.c
|
#: py/objstr.c
|
||||||
msgid "incomplete format"
|
msgid "incomplete format"
|
||||||
msgstr "format incomplet"
|
msgstr "format incomplet"
|
||||||
|
@ -3317,6 +3316,10 @@ msgstr "interp est défini pour les matrices 1D de longueur égale"
|
||||||
msgid "interval must be in range %s-%s"
|
msgid "interval must be in range %s-%s"
|
||||||
msgstr "interval doit être dans la portée %s-%s"
|
msgstr "interval doit être dans la portée %s-%s"
|
||||||
|
|
||||||
|
#: py/compile.c
|
||||||
|
msgid "invalid architecture"
|
||||||
|
msgstr "architecture invalide"
|
||||||
|
|
||||||
#: lib/netutils/netutils.c
|
#: lib/netutils/netutils.c
|
||||||
msgid "invalid arguments"
|
msgid "invalid arguments"
|
||||||
msgstr "arguments invalides"
|
msgstr "arguments invalides"
|
||||||
|
@ -3326,10 +3329,6 @@ msgstr "arguments invalides"
|
||||||
msgid "invalid bits_per_pixel %d, must be, 1, 4, 8, 16, 24, or 32"
|
msgid "invalid bits_per_pixel %d, must be, 1, 4, 8, 16, 24, or 32"
|
||||||
msgstr "bits_per_pixel %d est invalid, doit être 1, 4, 8, 16, 24 ou 32"
|
msgstr "bits_per_pixel %d est invalid, doit être 1, 4, 8, 16, 24 ou 32"
|
||||||
|
|
||||||
#: extmod/modussl_axtls.c
|
|
||||||
msgid "invalid cert"
|
|
||||||
msgstr "certificat invalide"
|
|
||||||
|
|
||||||
#: py/compile.c
|
#: py/compile.c
|
||||||
msgid "invalid decorator"
|
msgid "invalid decorator"
|
||||||
msgstr "décorateur invalide"
|
msgstr "décorateur invalide"
|
||||||
|
@ -3360,10 +3359,6 @@ msgstr "spécification de format invalide"
|
||||||
msgid "invalid hostname"
|
msgid "invalid hostname"
|
||||||
msgstr "hostname incorrect"
|
msgstr "hostname incorrect"
|
||||||
|
|
||||||
#: extmod/modussl_axtls.c
|
|
||||||
msgid "invalid key"
|
|
||||||
msgstr "clé invalide"
|
|
||||||
|
|
||||||
#: py/compile.c
|
#: py/compile.c
|
||||||
msgid "invalid micropython decorator"
|
msgid "invalid micropython decorator"
|
||||||
msgstr "décorateur micropython invalide"
|
msgstr "décorateur micropython invalide"
|
||||||
|
@ -4384,6 +4379,21 @@ msgstr "zi doit être de type float"
|
||||||
msgid "zi must be of shape (n_section, 2)"
|
msgid "zi must be of shape (n_section, 2)"
|
||||||
msgstr "zi doit être de forme (n_section, 2)"
|
msgstr "zi doit être de forme (n_section, 2)"
|
||||||
|
|
||||||
|
#~ msgid "Corrupt .mpy file"
|
||||||
|
#~ msgstr "Fichier .mpy corrompu"
|
||||||
|
|
||||||
|
#~ msgid "Corrupt raw code"
|
||||||
|
#~ msgstr "Code brut corrompu"
|
||||||
|
|
||||||
|
#~ msgid "can only save bytecode"
|
||||||
|
#~ msgstr "ne peut sauvegarder que du bytecode"
|
||||||
|
|
||||||
|
#~ msgid "invalid cert"
|
||||||
|
#~ msgstr "certificat invalide"
|
||||||
|
|
||||||
|
#~ msgid "invalid key"
|
||||||
|
#~ msgstr "clé invalide"
|
||||||
|
|
||||||
#~ msgid "Viper functions don't currently support more than 4 arguments"
|
#~ msgid "Viper functions don't currently support more than 4 arguments"
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
#~ "les fonctions de Viper ne supportent pas plus de 4 arguments actuellement"
|
#~ "les fonctions de Viper ne supportent pas plus de 4 arguments actuellement"
|
||||||
|
|
37
locale/hi.po
37
locale/hi.po
|
@ -681,6 +681,7 @@ msgid "Cannot vary frequency on a timer that is already in use"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
|
#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
|
||||||
|
#: ports/nrf/common-hal/alarm/pin/PinAlarm.c
|
||||||
msgid "Cannot wake on pin edge. Only level."
|
msgid "Cannot wake on pin edge. Only level."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -733,14 +734,6 @@ msgid ""
|
||||||
"connection."
|
"connection."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: py/persistentcode.c
|
|
||||||
msgid "Corrupt .mpy file"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: py/emitglue.c
|
|
||||||
msgid "Corrupt raw code"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ports/cxd56/common-hal/camera/Camera.c
|
#: ports/cxd56/common-hal/camera/Camera.c
|
||||||
msgid "Could not initialize Camera"
|
msgid "Could not initialize Camera"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -1293,7 +1286,8 @@ msgstr ""
|
||||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
|
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
|
||||||
#: ports/atmel-samd/common-hal/touchio/TouchIn.c
|
#: ports/atmel-samd/common-hal/touchio/TouchIn.c
|
||||||
#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
|
#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
|
||||||
#: ports/esp32s2/common-hal/touchio/TouchIn.c shared-bindings/pwmio/PWMOut.c
|
#: ports/esp32s2/common-hal/touchio/TouchIn.c
|
||||||
|
#: ports/nrf/common-hal/alarm/pin/PinAlarm.c shared-bindings/pwmio/PWMOut.c
|
||||||
#: shared-module/rgbmatrix/RGBMatrix.c
|
#: shared-module/rgbmatrix/RGBMatrix.c
|
||||||
msgid "Invalid pin"
|
msgid "Invalid pin"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -1671,6 +1665,7 @@ msgid "Only one TouchAlarm can be set in deep sleep."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ports/esp32s2/common-hal/alarm/time/TimeAlarm.c
|
#: ports/esp32s2/common-hal/alarm/time/TimeAlarm.c
|
||||||
|
#: ports/nrf/common-hal/alarm/time/TimeAlarm.c
|
||||||
msgid "Only one alarm.time alarm can be set."
|
msgid "Only one alarm.time alarm can be set."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -2574,10 +2569,6 @@ msgstr ""
|
||||||
msgid "can only have up to 4 parameters to Xtensa assembly"
|
msgid "can only have up to 4 parameters to Xtensa assembly"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: py/persistentcode.c
|
|
||||||
msgid "can only save bytecode"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: py/objtype.c
|
#: py/objtype.c
|
||||||
msgid "can't add special method to already-subclassed class"
|
msgid "can't add special method to already-subclassed class"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -3090,6 +3081,14 @@ msgstr ""
|
||||||
msgid "identifier redefined as nonlocal"
|
msgid "identifier redefined as nonlocal"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: py/persistentcode.c
|
||||||
|
msgid "incompatible .mpy file"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: py/persistentcode.c
|
||||||
|
msgid "incompatible native .mpy architecture"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/objstr.c
|
#: py/objstr.c
|
||||||
msgid "incomplete format"
|
msgid "incomplete format"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -3209,6 +3208,10 @@ msgstr ""
|
||||||
msgid "interval must be in range %s-%s"
|
msgid "interval must be in range %s-%s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: py/compile.c
|
||||||
|
msgid "invalid architecture"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: lib/netutils/netutils.c
|
#: lib/netutils/netutils.c
|
||||||
msgid "invalid arguments"
|
msgid "invalid arguments"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -3218,10 +3221,6 @@ msgstr ""
|
||||||
msgid "invalid bits_per_pixel %d, must be, 1, 4, 8, 16, 24, or 32"
|
msgid "invalid bits_per_pixel %d, must be, 1, 4, 8, 16, 24, or 32"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: extmod/modussl_axtls.c
|
|
||||||
msgid "invalid cert"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: py/compile.c
|
#: py/compile.c
|
||||||
msgid "invalid decorator"
|
msgid "invalid decorator"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -3252,10 +3251,6 @@ msgstr ""
|
||||||
msgid "invalid hostname"
|
msgid "invalid hostname"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: extmod/modussl_axtls.c
|
|
||||||
msgid "invalid key"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: py/compile.c
|
#: py/compile.c
|
||||||
msgid "invalid micropython decorator"
|
msgid "invalid micropython decorator"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
|
@ -698,6 +698,7 @@ msgid "Cannot vary frequency on a timer that is already in use"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
|
#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
|
||||||
|
#: ports/nrf/common-hal/alarm/pin/PinAlarm.c
|
||||||
msgid "Cannot wake on pin edge. Only level."
|
msgid "Cannot wake on pin edge. Only level."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -751,14 +752,6 @@ msgid ""
|
||||||
"connection."
|
"connection."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: py/persistentcode.c
|
|
||||||
msgid "Corrupt .mpy file"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: py/emitglue.c
|
|
||||||
msgid "Corrupt raw code"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ports/cxd56/common-hal/camera/Camera.c
|
#: ports/cxd56/common-hal/camera/Camera.c
|
||||||
msgid "Could not initialize Camera"
|
msgid "Could not initialize Camera"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -1319,7 +1312,8 @@ msgstr "Fase non valida"
|
||||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
|
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
|
||||||
#: ports/atmel-samd/common-hal/touchio/TouchIn.c
|
#: ports/atmel-samd/common-hal/touchio/TouchIn.c
|
||||||
#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
|
#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
|
||||||
#: ports/esp32s2/common-hal/touchio/TouchIn.c shared-bindings/pwmio/PWMOut.c
|
#: ports/esp32s2/common-hal/touchio/TouchIn.c
|
||||||
|
#: ports/nrf/common-hal/alarm/pin/PinAlarm.c shared-bindings/pwmio/PWMOut.c
|
||||||
#: shared-module/rgbmatrix/RGBMatrix.c
|
#: shared-module/rgbmatrix/RGBMatrix.c
|
||||||
msgid "Invalid pin"
|
msgid "Invalid pin"
|
||||||
msgstr "Pin non valido"
|
msgstr "Pin non valido"
|
||||||
|
@ -1703,6 +1697,7 @@ msgid "Only one TouchAlarm can be set in deep sleep."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ports/esp32s2/common-hal/alarm/time/TimeAlarm.c
|
#: ports/esp32s2/common-hal/alarm/time/TimeAlarm.c
|
||||||
|
#: ports/nrf/common-hal/alarm/time/TimeAlarm.c
|
||||||
msgid "Only one alarm.time alarm can be set."
|
msgid "Only one alarm.time alarm can be set."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -2621,10 +2616,6 @@ msgstr "sono disponibili fino a 4 parametri per il Xtensa assembly"
|
||||||
msgid "can only have up to 4 parameters to Xtensa assembly"
|
msgid "can only have up to 4 parameters to Xtensa assembly"
|
||||||
msgstr "sono disponibili fino a 4 parametri per il Xtensa assembly"
|
msgstr "sono disponibili fino a 4 parametri per il Xtensa assembly"
|
||||||
|
|
||||||
#: py/persistentcode.c
|
|
||||||
msgid "can only save bytecode"
|
|
||||||
msgstr "È possibile salvare solo bytecode"
|
|
||||||
|
|
||||||
#: py/objtype.c
|
#: py/objtype.c
|
||||||
msgid "can't add special method to already-subclassed class"
|
msgid "can't add special method to already-subclassed class"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -3144,6 +3135,14 @@ msgstr "identificatore ridefinito come globale"
|
||||||
msgid "identifier redefined as nonlocal"
|
msgid "identifier redefined as nonlocal"
|
||||||
msgstr "identificatore ridefinito come nonlocal"
|
msgstr "identificatore ridefinito come nonlocal"
|
||||||
|
|
||||||
|
#: py/persistentcode.c
|
||||||
|
msgid "incompatible .mpy file"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: py/persistentcode.c
|
||||||
|
msgid "incompatible native .mpy architecture"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/objstr.c
|
#: py/objstr.c
|
||||||
msgid "incomplete format"
|
msgid "incomplete format"
|
||||||
msgstr "formato incompleto"
|
msgstr "formato incompleto"
|
||||||
|
@ -3263,6 +3262,10 @@ msgstr ""
|
||||||
msgid "interval must be in range %s-%s"
|
msgid "interval must be in range %s-%s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: py/compile.c
|
||||||
|
msgid "invalid architecture"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: lib/netutils/netutils.c
|
#: lib/netutils/netutils.c
|
||||||
msgid "invalid arguments"
|
msgid "invalid arguments"
|
||||||
msgstr "argomenti non validi"
|
msgstr "argomenti non validi"
|
||||||
|
@ -3272,10 +3275,6 @@ msgstr "argomenti non validi"
|
||||||
msgid "invalid bits_per_pixel %d, must be, 1, 4, 8, 16, 24, or 32"
|
msgid "invalid bits_per_pixel %d, must be, 1, 4, 8, 16, 24, or 32"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: extmod/modussl_axtls.c
|
|
||||||
msgid "invalid cert"
|
|
||||||
msgstr "certificato non valido"
|
|
||||||
|
|
||||||
#: py/compile.c
|
#: py/compile.c
|
||||||
msgid "invalid decorator"
|
msgid "invalid decorator"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -3306,10 +3305,6 @@ msgstr "specificatore di formato non valido"
|
||||||
msgid "invalid hostname"
|
msgid "invalid hostname"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: extmod/modussl_axtls.c
|
|
||||||
msgid "invalid key"
|
|
||||||
msgstr "chiave non valida"
|
|
||||||
|
|
||||||
#: py/compile.c
|
#: py/compile.c
|
||||||
msgid "invalid micropython decorator"
|
msgid "invalid micropython decorator"
|
||||||
msgstr "decoratore non valido in micropython"
|
msgstr "decoratore non valido in micropython"
|
||||||
|
@ -4336,6 +4331,15 @@ msgstr ""
|
||||||
msgid "zi must be of shape (n_section, 2)"
|
msgid "zi must be of shape (n_section, 2)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "can only save bytecode"
|
||||||
|
#~ msgstr "È possibile salvare solo bytecode"
|
||||||
|
|
||||||
|
#~ msgid "invalid cert"
|
||||||
|
#~ msgstr "certificato non valido"
|
||||||
|
|
||||||
|
#~ msgid "invalid key"
|
||||||
|
#~ msgstr "chiave non valida"
|
||||||
|
|
||||||
#~ msgid "Viper functions don't currently support more than 4 arguments"
|
#~ msgid "Viper functions don't currently support more than 4 arguments"
|
||||||
#~ msgstr "Le funzioni Viper non supportano più di 4 argomenti al momento"
|
#~ msgstr "Le funzioni Viper non supportano più di 4 argomenti al momento"
|
||||||
|
|
||||||
|
|
49
locale/ja.po
49
locale/ja.po
|
@ -690,6 +690,7 @@ msgid "Cannot vary frequency on a timer that is already in use"
|
||||||
msgstr "使用中のタイマー上では周波数を変えられません"
|
msgstr "使用中のタイマー上では周波数を変えられません"
|
||||||
|
|
||||||
#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
|
#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
|
||||||
|
#: ports/nrf/common-hal/alarm/pin/PinAlarm.c
|
||||||
msgid "Cannot wake on pin edge. Only level."
|
msgid "Cannot wake on pin edge. Only level."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -744,14 +745,6 @@ msgid ""
|
||||||
"connection."
|
"connection."
|
||||||
msgstr "接続は切断済みでもう使えません。新しい接続を作成してください"
|
msgstr "接続は切断済みでもう使えません。新しい接続を作成してください"
|
||||||
|
|
||||||
#: py/persistentcode.c
|
|
||||||
msgid "Corrupt .mpy file"
|
|
||||||
msgstr "破損した .mpy ファイル"
|
|
||||||
|
|
||||||
#: py/emitglue.c
|
|
||||||
msgid "Corrupt raw code"
|
|
||||||
msgstr "破損したraw code"
|
|
||||||
|
|
||||||
#: ports/cxd56/common-hal/camera/Camera.c
|
#: ports/cxd56/common-hal/camera/Camera.c
|
||||||
msgid "Could not initialize Camera"
|
msgid "Could not initialize Camera"
|
||||||
msgstr "カメラを初期化できません"
|
msgstr "カメラを初期化できません"
|
||||||
|
@ -1306,7 +1299,8 @@ msgstr "不正なphase"
|
||||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
|
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
|
||||||
#: ports/atmel-samd/common-hal/touchio/TouchIn.c
|
#: ports/atmel-samd/common-hal/touchio/TouchIn.c
|
||||||
#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
|
#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
|
||||||
#: ports/esp32s2/common-hal/touchio/TouchIn.c shared-bindings/pwmio/PWMOut.c
|
#: ports/esp32s2/common-hal/touchio/TouchIn.c
|
||||||
|
#: ports/nrf/common-hal/alarm/pin/PinAlarm.c shared-bindings/pwmio/PWMOut.c
|
||||||
#: shared-module/rgbmatrix/RGBMatrix.c
|
#: shared-module/rgbmatrix/RGBMatrix.c
|
||||||
msgid "Invalid pin"
|
msgid "Invalid pin"
|
||||||
msgstr "不正なピン"
|
msgstr "不正なピン"
|
||||||
|
@ -1686,6 +1680,7 @@ msgid "Only one TouchAlarm can be set in deep sleep."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ports/esp32s2/common-hal/alarm/time/TimeAlarm.c
|
#: ports/esp32s2/common-hal/alarm/time/TimeAlarm.c
|
||||||
|
#: ports/nrf/common-hal/alarm/time/TimeAlarm.c
|
||||||
msgid "Only one alarm.time alarm can be set."
|
msgid "Only one alarm.time alarm can be set."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -2597,10 +2592,6 @@ msgstr ""
|
||||||
msgid "can only have up to 4 parameters to Xtensa assembly"
|
msgid "can only have up to 4 parameters to Xtensa assembly"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: py/persistentcode.c
|
|
||||||
msgid "can only save bytecode"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: py/objtype.c
|
#: py/objtype.c
|
||||||
msgid "can't add special method to already-subclassed class"
|
msgid "can't add special method to already-subclassed class"
|
||||||
msgstr "サブクラス化済みのクラスに特殊メソッドを追加できません"
|
msgstr "サブクラス化済みのクラスに特殊メソッドを追加できません"
|
||||||
|
@ -3117,6 +3108,14 @@ msgstr ""
|
||||||
msgid "identifier redefined as nonlocal"
|
msgid "identifier redefined as nonlocal"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: py/persistentcode.c
|
||||||
|
msgid "incompatible .mpy file"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: py/persistentcode.c
|
||||||
|
msgid "incompatible native .mpy architecture"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/objstr.c
|
#: py/objstr.c
|
||||||
msgid "incomplete format"
|
msgid "incomplete format"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -3237,6 +3236,10 @@ msgstr ""
|
||||||
msgid "interval must be in range %s-%s"
|
msgid "interval must be in range %s-%s"
|
||||||
msgstr "intervalは%s-%sの範囲でなければなりません"
|
msgstr "intervalは%s-%sの範囲でなければなりません"
|
||||||
|
|
||||||
|
#: py/compile.c
|
||||||
|
msgid "invalid architecture"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: lib/netutils/netutils.c
|
#: lib/netutils/netutils.c
|
||||||
msgid "invalid arguments"
|
msgid "invalid arguments"
|
||||||
msgstr "不正な引数"
|
msgstr "不正な引数"
|
||||||
|
@ -3246,10 +3249,6 @@ msgstr "不正な引数"
|
||||||
msgid "invalid bits_per_pixel %d, must be, 1, 4, 8, 16, 24, or 32"
|
msgid "invalid bits_per_pixel %d, must be, 1, 4, 8, 16, 24, or 32"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: extmod/modussl_axtls.c
|
|
||||||
msgid "invalid cert"
|
|
||||||
msgstr "不正な証明書"
|
|
||||||
|
|
||||||
#: py/compile.c
|
#: py/compile.c
|
||||||
msgid "invalid decorator"
|
msgid "invalid decorator"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -3280,10 +3279,6 @@ msgstr ""
|
||||||
msgid "invalid hostname"
|
msgid "invalid hostname"
|
||||||
msgstr "不正なホスト名"
|
msgstr "不正なホスト名"
|
||||||
|
|
||||||
#: extmod/modussl_axtls.c
|
|
||||||
msgid "invalid key"
|
|
||||||
msgstr "不正な鍵"
|
|
||||||
|
|
||||||
#: py/compile.c
|
#: py/compile.c
|
||||||
msgid "invalid micropython decorator"
|
msgid "invalid micropython decorator"
|
||||||
msgstr "不正なmicropythonデコレータ"
|
msgstr "不正なmicropythonデコレータ"
|
||||||
|
@ -4295,6 +4290,18 @@ msgstr "ziはfloat値でなければなりません"
|
||||||
msgid "zi must be of shape (n_section, 2)"
|
msgid "zi must be of shape (n_section, 2)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "Corrupt .mpy file"
|
||||||
|
#~ msgstr "破損した .mpy ファイル"
|
||||||
|
|
||||||
|
#~ msgid "Corrupt raw code"
|
||||||
|
#~ msgstr "破損したraw code"
|
||||||
|
|
||||||
|
#~ msgid "invalid cert"
|
||||||
|
#~ msgstr "不正な証明書"
|
||||||
|
|
||||||
|
#~ msgid "invalid key"
|
||||||
|
#~ msgstr "不正な鍵"
|
||||||
|
|
||||||
#~ msgid "parameter annotation must be an identifier"
|
#~ msgid "parameter annotation must be an identifier"
|
||||||
#~ msgstr "引数アノテーションは識別子でなければなりません"
|
#~ msgstr "引数アノテーションは識別子でなければなりません"
|
||||||
|
|
||||||
|
|
43
locale/ko.po
43
locale/ko.po
|
@ -684,6 +684,7 @@ msgid "Cannot vary frequency on a timer that is already in use"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
|
#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
|
||||||
|
#: ports/nrf/common-hal/alarm/pin/PinAlarm.c
|
||||||
msgid "Cannot wake on pin edge. Only level."
|
msgid "Cannot wake on pin edge. Only level."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -736,14 +737,6 @@ msgid ""
|
||||||
"connection."
|
"connection."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: py/persistentcode.c
|
|
||||||
msgid "Corrupt .mpy file"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: py/emitglue.c
|
|
||||||
msgid "Corrupt raw code"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ports/cxd56/common-hal/camera/Camera.c
|
#: ports/cxd56/common-hal/camera/Camera.c
|
||||||
msgid "Could not initialize Camera"
|
msgid "Could not initialize Camera"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -1296,7 +1289,8 @@ msgstr "단계가 잘못되었습니다"
|
||||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
|
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
|
||||||
#: ports/atmel-samd/common-hal/touchio/TouchIn.c
|
#: ports/atmel-samd/common-hal/touchio/TouchIn.c
|
||||||
#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
|
#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
|
||||||
#: ports/esp32s2/common-hal/touchio/TouchIn.c shared-bindings/pwmio/PWMOut.c
|
#: ports/esp32s2/common-hal/touchio/TouchIn.c
|
||||||
|
#: ports/nrf/common-hal/alarm/pin/PinAlarm.c shared-bindings/pwmio/PWMOut.c
|
||||||
#: shared-module/rgbmatrix/RGBMatrix.c
|
#: shared-module/rgbmatrix/RGBMatrix.c
|
||||||
msgid "Invalid pin"
|
msgid "Invalid pin"
|
||||||
msgstr "핀이 잘못되었습니다"
|
msgstr "핀이 잘못되었습니다"
|
||||||
|
@ -1674,6 +1668,7 @@ msgid "Only one TouchAlarm can be set in deep sleep."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ports/esp32s2/common-hal/alarm/time/TimeAlarm.c
|
#: ports/esp32s2/common-hal/alarm/time/TimeAlarm.c
|
||||||
|
#: ports/nrf/common-hal/alarm/time/TimeAlarm.c
|
||||||
msgid "Only one alarm.time alarm can be set."
|
msgid "Only one alarm.time alarm can be set."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -2578,10 +2573,6 @@ msgstr ""
|
||||||
msgid "can only have up to 4 parameters to Xtensa assembly"
|
msgid "can only have up to 4 parameters to Xtensa assembly"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: py/persistentcode.c
|
|
||||||
msgid "can only save bytecode"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: py/objtype.c
|
#: py/objtype.c
|
||||||
msgid "can't add special method to already-subclassed class"
|
msgid "can't add special method to already-subclassed class"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -3094,6 +3085,14 @@ msgstr ""
|
||||||
msgid "identifier redefined as nonlocal"
|
msgid "identifier redefined as nonlocal"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: py/persistentcode.c
|
||||||
|
msgid "incompatible .mpy file"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: py/persistentcode.c
|
||||||
|
msgid "incompatible native .mpy architecture"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/objstr.c
|
#: py/objstr.c
|
||||||
msgid "incomplete format"
|
msgid "incomplete format"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -3213,6 +3212,10 @@ msgstr ""
|
||||||
msgid "interval must be in range %s-%s"
|
msgid "interval must be in range %s-%s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: py/compile.c
|
||||||
|
msgid "invalid architecture"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: lib/netutils/netutils.c
|
#: lib/netutils/netutils.c
|
||||||
msgid "invalid arguments"
|
msgid "invalid arguments"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -3222,10 +3225,6 @@ msgstr ""
|
||||||
msgid "invalid bits_per_pixel %d, must be, 1, 4, 8, 16, 24, or 32"
|
msgid "invalid bits_per_pixel %d, must be, 1, 4, 8, 16, 24, or 32"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: extmod/modussl_axtls.c
|
|
||||||
msgid "invalid cert"
|
|
||||||
msgstr "cert가 유효하지 않습니다"
|
|
||||||
|
|
||||||
#: py/compile.c
|
#: py/compile.c
|
||||||
msgid "invalid decorator"
|
msgid "invalid decorator"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -3256,10 +3255,6 @@ msgstr "형식 지정자(format specifier)가 유효하지 않습니다"
|
||||||
msgid "invalid hostname"
|
msgid "invalid hostname"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: extmod/modussl_axtls.c
|
|
||||||
msgid "invalid key"
|
|
||||||
msgstr "키가 유효하지 않습니다"
|
|
||||||
|
|
||||||
#: py/compile.c
|
#: py/compile.c
|
||||||
msgid "invalid micropython decorator"
|
msgid "invalid micropython decorator"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -4268,6 +4263,12 @@ msgstr ""
|
||||||
msgid "zi must be of shape (n_section, 2)"
|
msgid "zi must be of shape (n_section, 2)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "invalid cert"
|
||||||
|
#~ msgstr "cert가 유효하지 않습니다"
|
||||||
|
|
||||||
|
#~ msgid "invalid key"
|
||||||
|
#~ msgstr "키가 유효하지 않습니다"
|
||||||
|
|
||||||
#~ msgid "bits must be 7, 8 or 9"
|
#~ msgid "bits must be 7, 8 or 9"
|
||||||
#~ msgstr "비트(bits)는 7, 8 또는 9 여야합니다"
|
#~ msgstr "비트(bits)는 7, 8 또는 9 여야합니다"
|
||||||
|
|
||||||
|
|
52
locale/nl.po
52
locale/nl.po
|
@ -688,6 +688,7 @@ msgid "Cannot vary frequency on a timer that is already in use"
|
||||||
msgstr "Kan de frequentie van een timer die al in gebruik is niet variëren"
|
msgstr "Kan de frequentie van een timer die al in gebruik is niet variëren"
|
||||||
|
|
||||||
#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
|
#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
|
||||||
|
#: ports/nrf/common-hal/alarm/pin/PinAlarm.c
|
||||||
msgid "Cannot wake on pin edge. Only level."
|
msgid "Cannot wake on pin edge. Only level."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -744,14 +745,6 @@ msgstr ""
|
||||||
"Verbinding is verbroken en kan niet langer gebruikt worden. Creëer een "
|
"Verbinding is verbroken en kan niet langer gebruikt worden. Creëer een "
|
||||||
"nieuwe verbinding."
|
"nieuwe verbinding."
|
||||||
|
|
||||||
#: py/persistentcode.c
|
|
||||||
msgid "Corrupt .mpy file"
|
|
||||||
msgstr "Corrupt .mpy bestand"
|
|
||||||
|
|
||||||
#: py/emitglue.c
|
|
||||||
msgid "Corrupt raw code"
|
|
||||||
msgstr "Corrupt raw code"
|
|
||||||
|
|
||||||
#: ports/cxd56/common-hal/camera/Camera.c
|
#: ports/cxd56/common-hal/camera/Camera.c
|
||||||
msgid "Could not initialize Camera"
|
msgid "Could not initialize Camera"
|
||||||
msgstr "Kon camera niet initialiseren"
|
msgstr "Kon camera niet initialiseren"
|
||||||
|
@ -1307,7 +1300,8 @@ msgstr "Ongeldige fase"
|
||||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
|
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
|
||||||
#: ports/atmel-samd/common-hal/touchio/TouchIn.c
|
#: ports/atmel-samd/common-hal/touchio/TouchIn.c
|
||||||
#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
|
#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
|
||||||
#: ports/esp32s2/common-hal/touchio/TouchIn.c shared-bindings/pwmio/PWMOut.c
|
#: ports/esp32s2/common-hal/touchio/TouchIn.c
|
||||||
|
#: ports/nrf/common-hal/alarm/pin/PinAlarm.c shared-bindings/pwmio/PWMOut.c
|
||||||
#: shared-module/rgbmatrix/RGBMatrix.c
|
#: shared-module/rgbmatrix/RGBMatrix.c
|
||||||
msgid "Invalid pin"
|
msgid "Invalid pin"
|
||||||
msgstr "Ongeldige pin"
|
msgstr "Ongeldige pin"
|
||||||
|
@ -1691,6 +1685,7 @@ msgid "Only one TouchAlarm can be set in deep sleep."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ports/esp32s2/common-hal/alarm/time/TimeAlarm.c
|
#: ports/esp32s2/common-hal/alarm/time/TimeAlarm.c
|
||||||
|
#: ports/nrf/common-hal/alarm/time/TimeAlarm.c
|
||||||
msgid "Only one alarm.time alarm can be set."
|
msgid "Only one alarm.time alarm can be set."
|
||||||
msgstr "Slechts één alarm.time alarm kan worden ingesteld."
|
msgstr "Slechts één alarm.time alarm kan worden ingesteld."
|
||||||
|
|
||||||
|
@ -2625,10 +2620,6 @@ msgstr "kan slechts 4 parameters aan Thumb assembly geven"
|
||||||
msgid "can only have up to 4 parameters to Xtensa assembly"
|
msgid "can only have up to 4 parameters to Xtensa assembly"
|
||||||
msgstr "kan slechts 4 parameters aan Xtensa assembly geven"
|
msgstr "kan slechts 4 parameters aan Xtensa assembly geven"
|
||||||
|
|
||||||
#: py/persistentcode.c
|
|
||||||
msgid "can only save bytecode"
|
|
||||||
msgstr "kan alleen byte-code opslaan"
|
|
||||||
|
|
||||||
#: py/objtype.c
|
#: py/objtype.c
|
||||||
msgid "can't add special method to already-subclassed class"
|
msgid "can't add special method to already-subclassed class"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -3146,6 +3137,14 @@ msgstr "identifier is opnieuw gedefinieerd als global"
|
||||||
msgid "identifier redefined as nonlocal"
|
msgid "identifier redefined as nonlocal"
|
||||||
msgstr "identifier is opnieuw gedefinieerd als nonlocal"
|
msgstr "identifier is opnieuw gedefinieerd als nonlocal"
|
||||||
|
|
||||||
|
#: py/persistentcode.c
|
||||||
|
msgid "incompatible .mpy file"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: py/persistentcode.c
|
||||||
|
msgid "incompatible native .mpy architecture"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/objstr.c
|
#: py/objstr.c
|
||||||
msgid "incomplete format"
|
msgid "incomplete format"
|
||||||
msgstr "incompleet formaat"
|
msgstr "incompleet formaat"
|
||||||
|
@ -3265,6 +3264,10 @@ msgstr "interp is gedefinieerd voor eendimensionale arrays van gelijke lengte"
|
||||||
msgid "interval must be in range %s-%s"
|
msgid "interval must be in range %s-%s"
|
||||||
msgstr "interval moet binnen bereik %s-%s vallen"
|
msgstr "interval moet binnen bereik %s-%s vallen"
|
||||||
|
|
||||||
|
#: py/compile.c
|
||||||
|
msgid "invalid architecture"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: lib/netutils/netutils.c
|
#: lib/netutils/netutils.c
|
||||||
msgid "invalid arguments"
|
msgid "invalid arguments"
|
||||||
msgstr "ongeldige argumenten"
|
msgstr "ongeldige argumenten"
|
||||||
|
@ -3274,10 +3277,6 @@ msgstr "ongeldige argumenten"
|
||||||
msgid "invalid bits_per_pixel %d, must be, 1, 4, 8, 16, 24, or 32"
|
msgid "invalid bits_per_pixel %d, must be, 1, 4, 8, 16, 24, or 32"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: extmod/modussl_axtls.c
|
|
||||||
msgid "invalid cert"
|
|
||||||
msgstr "ongeldig certificaat"
|
|
||||||
|
|
||||||
#: py/compile.c
|
#: py/compile.c
|
||||||
msgid "invalid decorator"
|
msgid "invalid decorator"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -3308,10 +3307,6 @@ msgstr "ongeldige formaatspecificatie"
|
||||||
msgid "invalid hostname"
|
msgid "invalid hostname"
|
||||||
msgstr "onjuiste hostnaam"
|
msgstr "onjuiste hostnaam"
|
||||||
|
|
||||||
#: extmod/modussl_axtls.c
|
|
||||||
msgid "invalid key"
|
|
||||||
msgstr "ongeldige sleutel"
|
|
||||||
|
|
||||||
#: py/compile.c
|
#: py/compile.c
|
||||||
msgid "invalid micropython decorator"
|
msgid "invalid micropython decorator"
|
||||||
msgstr "ongeldige micropython decorator"
|
msgstr "ongeldige micropython decorator"
|
||||||
|
@ -4326,6 +4321,21 @@ msgstr "zi moet van type float zijn"
|
||||||
msgid "zi must be of shape (n_section, 2)"
|
msgid "zi must be of shape (n_section, 2)"
|
||||||
msgstr "zi moet vorm (n_section, 2) hebben"
|
msgstr "zi moet vorm (n_section, 2) hebben"
|
||||||
|
|
||||||
|
#~ msgid "Corrupt .mpy file"
|
||||||
|
#~ msgstr "Corrupt .mpy bestand"
|
||||||
|
|
||||||
|
#~ msgid "Corrupt raw code"
|
||||||
|
#~ msgstr "Corrupt raw code"
|
||||||
|
|
||||||
|
#~ msgid "can only save bytecode"
|
||||||
|
#~ msgstr "kan alleen byte-code opslaan"
|
||||||
|
|
||||||
|
#~ msgid "invalid cert"
|
||||||
|
#~ msgstr "ongeldig certificaat"
|
||||||
|
|
||||||
|
#~ msgid "invalid key"
|
||||||
|
#~ msgstr "ongeldige sleutel"
|
||||||
|
|
||||||
#~ msgid "Viper functions don't currently support more than 4 arguments"
|
#~ msgid "Viper functions don't currently support more than 4 arguments"
|
||||||
#~ msgstr "Viper-functies ondersteunen momenteel niet meer dan 4 argumenten"
|
#~ msgstr "Viper-functies ondersteunen momenteel niet meer dan 4 argumenten"
|
||||||
|
|
||||||
|
|
49
locale/pl.po
49
locale/pl.po
|
@ -688,6 +688,7 @@ msgid "Cannot vary frequency on a timer that is already in use"
|
||||||
msgstr "Nie można zmieniać częstotliwości timera, który jest już używany"
|
msgstr "Nie można zmieniać częstotliwości timera, który jest już używany"
|
||||||
|
|
||||||
#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
|
#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
|
||||||
|
#: ports/nrf/common-hal/alarm/pin/PinAlarm.c
|
||||||
msgid "Cannot wake on pin edge. Only level."
|
msgid "Cannot wake on pin edge. Only level."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -744,14 +745,6 @@ msgstr ""
|
||||||
"Połączenie zostało rozłączone i nie można go już używać. Utwórz nowe "
|
"Połączenie zostało rozłączone i nie można go już używać. Utwórz nowe "
|
||||||
"połączenie."
|
"połączenie."
|
||||||
|
|
||||||
#: py/persistentcode.c
|
|
||||||
msgid "Corrupt .mpy file"
|
|
||||||
msgstr "Uszkodzony plik .mpy"
|
|
||||||
|
|
||||||
#: py/emitglue.c
|
|
||||||
msgid "Corrupt raw code"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ports/cxd56/common-hal/camera/Camera.c
|
#: ports/cxd56/common-hal/camera/Camera.c
|
||||||
msgid "Could not initialize Camera"
|
msgid "Could not initialize Camera"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -1306,7 +1299,8 @@ msgstr "Zła faza"
|
||||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
|
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
|
||||||
#: ports/atmel-samd/common-hal/touchio/TouchIn.c
|
#: ports/atmel-samd/common-hal/touchio/TouchIn.c
|
||||||
#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
|
#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
|
||||||
#: ports/esp32s2/common-hal/touchio/TouchIn.c shared-bindings/pwmio/PWMOut.c
|
#: ports/esp32s2/common-hal/touchio/TouchIn.c
|
||||||
|
#: ports/nrf/common-hal/alarm/pin/PinAlarm.c shared-bindings/pwmio/PWMOut.c
|
||||||
#: shared-module/rgbmatrix/RGBMatrix.c
|
#: shared-module/rgbmatrix/RGBMatrix.c
|
||||||
msgid "Invalid pin"
|
msgid "Invalid pin"
|
||||||
msgstr "Zła nóżka"
|
msgstr "Zła nóżka"
|
||||||
|
@ -1684,6 +1678,7 @@ msgid "Only one TouchAlarm can be set in deep sleep."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ports/esp32s2/common-hal/alarm/time/TimeAlarm.c
|
#: ports/esp32s2/common-hal/alarm/time/TimeAlarm.c
|
||||||
|
#: ports/nrf/common-hal/alarm/time/TimeAlarm.c
|
||||||
msgid "Only one alarm.time alarm can be set."
|
msgid "Only one alarm.time alarm can be set."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -2593,10 +2588,6 @@ msgstr "asembler Thumb może przyjąć do 4 parameterów"
|
||||||
msgid "can only have up to 4 parameters to Xtensa assembly"
|
msgid "can only have up to 4 parameters to Xtensa assembly"
|
||||||
msgstr "asembler Xtensa może przyjąć do 4 parameterów"
|
msgstr "asembler Xtensa może przyjąć do 4 parameterów"
|
||||||
|
|
||||||
#: py/persistentcode.c
|
|
||||||
msgid "can only save bytecode"
|
|
||||||
msgstr "można zapisać tylko bytecode"
|
|
||||||
|
|
||||||
#: py/objtype.c
|
#: py/objtype.c
|
||||||
msgid "can't add special method to already-subclassed class"
|
msgid "can't add special method to already-subclassed class"
|
||||||
msgstr "nie można dodać specjalnej metody do podklasy"
|
msgstr "nie można dodać specjalnej metody do podklasy"
|
||||||
|
@ -3110,6 +3101,14 @@ msgstr "nazwa przedefiniowana jako globalna"
|
||||||
msgid "identifier redefined as nonlocal"
|
msgid "identifier redefined as nonlocal"
|
||||||
msgstr "nazwa przedefiniowana jako nielokalna"
|
msgstr "nazwa przedefiniowana jako nielokalna"
|
||||||
|
|
||||||
|
#: py/persistentcode.c
|
||||||
|
msgid "incompatible .mpy file"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: py/persistentcode.c
|
||||||
|
msgid "incompatible native .mpy architecture"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/objstr.c
|
#: py/objstr.c
|
||||||
msgid "incomplete format"
|
msgid "incomplete format"
|
||||||
msgstr "niepełny format"
|
msgstr "niepełny format"
|
||||||
|
@ -3229,6 +3228,10 @@ msgstr ""
|
||||||
msgid "interval must be in range %s-%s"
|
msgid "interval must be in range %s-%s"
|
||||||
msgstr "interwał musi mieścić się w zakresie %s-%s"
|
msgstr "interwał musi mieścić się w zakresie %s-%s"
|
||||||
|
|
||||||
|
#: py/compile.c
|
||||||
|
msgid "invalid architecture"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: lib/netutils/netutils.c
|
#: lib/netutils/netutils.c
|
||||||
msgid "invalid arguments"
|
msgid "invalid arguments"
|
||||||
msgstr "złe arguemnty"
|
msgstr "złe arguemnty"
|
||||||
|
@ -3238,10 +3241,6 @@ msgstr "złe arguemnty"
|
||||||
msgid "invalid bits_per_pixel %d, must be, 1, 4, 8, 16, 24, or 32"
|
msgid "invalid bits_per_pixel %d, must be, 1, 4, 8, 16, 24, or 32"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: extmod/modussl_axtls.c
|
|
||||||
msgid "invalid cert"
|
|
||||||
msgstr "zły ceryfikat"
|
|
||||||
|
|
||||||
#: py/compile.c
|
#: py/compile.c
|
||||||
msgid "invalid decorator"
|
msgid "invalid decorator"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -3272,10 +3271,6 @@ msgstr "zła specyfikacja formatu"
|
||||||
msgid "invalid hostname"
|
msgid "invalid hostname"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: extmod/modussl_axtls.c
|
|
||||||
msgid "invalid key"
|
|
||||||
msgstr "zły klucz"
|
|
||||||
|
|
||||||
#: py/compile.c
|
#: py/compile.c
|
||||||
msgid "invalid micropython decorator"
|
msgid "invalid micropython decorator"
|
||||||
msgstr "zły dekorator micropythona"
|
msgstr "zły dekorator micropythona"
|
||||||
|
@ -4286,6 +4281,18 @@ msgstr ""
|
||||||
msgid "zi must be of shape (n_section, 2)"
|
msgid "zi must be of shape (n_section, 2)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "Corrupt .mpy file"
|
||||||
|
#~ msgstr "Uszkodzony plik .mpy"
|
||||||
|
|
||||||
|
#~ msgid "can only save bytecode"
|
||||||
|
#~ msgstr "można zapisać tylko bytecode"
|
||||||
|
|
||||||
|
#~ msgid "invalid cert"
|
||||||
|
#~ msgstr "zły ceryfikat"
|
||||||
|
|
||||||
|
#~ msgid "invalid key"
|
||||||
|
#~ msgstr "zły klucz"
|
||||||
|
|
||||||
#~ msgid "Viper functions don't currently support more than 4 arguments"
|
#~ msgid "Viper functions don't currently support more than 4 arguments"
|
||||||
#~ msgstr "Funkcje Viper nie obsługują obecnie więcej niż 4 argumentów"
|
#~ msgstr "Funkcje Viper nie obsługują obecnie więcej niż 4 argumentów"
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@ 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: 2021-01-04 12:55-0600\n"
|
"POT-Creation-Date: 2021-01-04 12:55-0600\n"
|
||||||
"PO-Revision-Date: 2021-04-25 18:43+0000\n"
|
"PO-Revision-Date: 2021-04-28 16:11+0000\n"
|
||||||
"Last-Translator: Wellington Terumi Uemura <wellingtonuemura@gmail.com>\n"
|
"Last-Translator: Wellington Terumi Uemura <wellingtonuemura@gmail.com>\n"
|
||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
"Language: pt_BR\n"
|
"Language: pt_BR\n"
|
||||||
|
@ -705,6 +705,7 @@ msgid "Cannot vary frequency on a timer that is already in use"
|
||||||
msgstr "Não é possível variar a frequência em um timer que já esteja em uso"
|
msgstr "Não é possível variar a frequência em um timer que já esteja em uso"
|
||||||
|
|
||||||
#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
|
#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
|
||||||
|
#: ports/nrf/common-hal/alarm/pin/PinAlarm.c
|
||||||
msgid "Cannot wake on pin edge. Only level."
|
msgid "Cannot wake on pin edge. Only level."
|
||||||
msgstr "Não é possível acordar (wake) no pino edge. Nível apenas."
|
msgstr "Não é possível acordar (wake) no pino edge. Nível apenas."
|
||||||
|
|
||||||
|
@ -761,14 +762,6 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"A conexão foi desconectada e não pode mais ser usada. Crie uma nova conexão."
|
"A conexão foi desconectada e não pode mais ser usada. Crie uma nova conexão."
|
||||||
|
|
||||||
#: py/persistentcode.c
|
|
||||||
msgid "Corrupt .mpy file"
|
|
||||||
msgstr "Arquivo .mpy corrompido"
|
|
||||||
|
|
||||||
#: py/emitglue.c
|
|
||||||
msgid "Corrupt raw code"
|
|
||||||
msgstr "Código bruto corrompido"
|
|
||||||
|
|
||||||
#: ports/cxd56/common-hal/camera/Camera.c
|
#: ports/cxd56/common-hal/camera/Camera.c
|
||||||
msgid "Could not initialize Camera"
|
msgid "Could not initialize Camera"
|
||||||
msgstr "Não foi possível inicializar a Câmera"
|
msgstr "Não foi possível inicializar a Câmera"
|
||||||
|
@ -1330,7 +1323,8 @@ msgstr "Fase Inválida"
|
||||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
|
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
|
||||||
#: ports/atmel-samd/common-hal/touchio/TouchIn.c
|
#: ports/atmel-samd/common-hal/touchio/TouchIn.c
|
||||||
#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
|
#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
|
||||||
#: ports/esp32s2/common-hal/touchio/TouchIn.c shared-bindings/pwmio/PWMOut.c
|
#: ports/esp32s2/common-hal/touchio/TouchIn.c
|
||||||
|
#: ports/nrf/common-hal/alarm/pin/PinAlarm.c shared-bindings/pwmio/PWMOut.c
|
||||||
#: shared-module/rgbmatrix/RGBMatrix.c
|
#: shared-module/rgbmatrix/RGBMatrix.c
|
||||||
msgid "Invalid pin"
|
msgid "Invalid pin"
|
||||||
msgstr "Pino inválido"
|
msgstr "Pino inválido"
|
||||||
|
@ -1715,6 +1709,7 @@ msgid "Only one TouchAlarm can be set in deep sleep."
|
||||||
msgstr "Apenas um TouchAlarm pode ser colocado em deep sleep."
|
msgstr "Apenas um TouchAlarm pode ser colocado em deep sleep."
|
||||||
|
|
||||||
#: ports/esp32s2/common-hal/alarm/time/TimeAlarm.c
|
#: ports/esp32s2/common-hal/alarm/time/TimeAlarm.c
|
||||||
|
#: ports/nrf/common-hal/alarm/time/TimeAlarm.c
|
||||||
msgid "Only one alarm.time alarm can be set."
|
msgid "Only one alarm.time alarm can be set."
|
||||||
msgstr "Apenas um alarme alarm.time pode ser definido."
|
msgstr "Apenas um alarme alarm.time pode ser definido."
|
||||||
|
|
||||||
|
@ -2658,10 +2653,6 @@ msgstr "só pode haver até 4 parâmetros para a montagem Thumb"
|
||||||
msgid "can only have up to 4 parameters to Xtensa assembly"
|
msgid "can only have up to 4 parameters to Xtensa assembly"
|
||||||
msgstr "só pode haver até 4 parâmetros para a montagem Xtensa"
|
msgstr "só pode haver até 4 parâmetros para a montagem Xtensa"
|
||||||
|
|
||||||
#: py/persistentcode.c
|
|
||||||
msgid "can only save bytecode"
|
|
||||||
msgstr "apenas o bytecode pode ser salvo"
|
|
||||||
|
|
||||||
#: py/objtype.c
|
#: py/objtype.c
|
||||||
msgid "can't add special method to already-subclassed class"
|
msgid "can't add special method to already-subclassed class"
|
||||||
msgstr "não é possível adicionar o método especial à classe já subclassificada"
|
msgstr "não é possível adicionar o método especial à classe já subclassificada"
|
||||||
|
@ -3183,6 +3174,14 @@ msgstr "o identificador foi redefinido como global"
|
||||||
msgid "identifier redefined as nonlocal"
|
msgid "identifier redefined as nonlocal"
|
||||||
msgstr "o identificador foi redefinido como não-local"
|
msgstr "o identificador foi redefinido como não-local"
|
||||||
|
|
||||||
|
#: py/persistentcode.c
|
||||||
|
msgid "incompatible .mpy file"
|
||||||
|
msgstr "arquivo .mpy incompatível"
|
||||||
|
|
||||||
|
#: py/persistentcode.c
|
||||||
|
msgid "incompatible native .mpy architecture"
|
||||||
|
msgstr "arquivo .mpy com arquitetura nativa incompatível"
|
||||||
|
|
||||||
#: py/objstr.c
|
#: py/objstr.c
|
||||||
msgid "incomplete format"
|
msgid "incomplete format"
|
||||||
msgstr "formato incompleto"
|
msgstr "formato incompleto"
|
||||||
|
@ -3303,6 +3302,10 @@ msgstr "o interp é definido para matrizes 1D de igual comprimento"
|
||||||
msgid "interval must be in range %s-%s"
|
msgid "interval must be in range %s-%s"
|
||||||
msgstr "o intervalo deve estar entre %s-%s"
|
msgstr "o intervalo deve estar entre %s-%s"
|
||||||
|
|
||||||
|
#: py/compile.c
|
||||||
|
msgid "invalid architecture"
|
||||||
|
msgstr "arquitetura inválida"
|
||||||
|
|
||||||
#: lib/netutils/netutils.c
|
#: lib/netutils/netutils.c
|
||||||
msgid "invalid arguments"
|
msgid "invalid arguments"
|
||||||
msgstr "argumentos inválidos"
|
msgstr "argumentos inválidos"
|
||||||
|
@ -3312,10 +3315,6 @@ msgstr "argumentos inválidos"
|
||||||
msgid "invalid bits_per_pixel %d, must be, 1, 4, 8, 16, 24, or 32"
|
msgid "invalid bits_per_pixel %d, must be, 1, 4, 8, 16, 24, or 32"
|
||||||
msgstr "bits_per_pixel %d é inválido, deve ser, 1, 4, 8, 16, 24, ou 32"
|
msgstr "bits_per_pixel %d é inválido, deve ser, 1, 4, 8, 16, 24, ou 32"
|
||||||
|
|
||||||
#: extmod/modussl_axtls.c
|
|
||||||
msgid "invalid cert"
|
|
||||||
msgstr "certificado inválido"
|
|
||||||
|
|
||||||
#: py/compile.c
|
#: py/compile.c
|
||||||
msgid "invalid decorator"
|
msgid "invalid decorator"
|
||||||
msgstr "decorador inválido"
|
msgstr "decorador inválido"
|
||||||
|
@ -3346,10 +3345,6 @@ msgstr "o especificador do formato é inválido"
|
||||||
msgid "invalid hostname"
|
msgid "invalid hostname"
|
||||||
msgstr "o nome do host é inválido"
|
msgstr "o nome do host é inválido"
|
||||||
|
|
||||||
#: extmod/modussl_axtls.c
|
|
||||||
msgid "invalid key"
|
|
||||||
msgstr "chave inválida"
|
|
||||||
|
|
||||||
#: py/compile.c
|
#: py/compile.c
|
||||||
msgid "invalid micropython decorator"
|
msgid "invalid micropython decorator"
|
||||||
msgstr "o decorador micropython é inválido"
|
msgstr "o decorador micropython é inválido"
|
||||||
|
@ -4370,6 +4365,21 @@ msgstr "zi deve ser de um tipo float"
|
||||||
msgid "zi must be of shape (n_section, 2)"
|
msgid "zi must be of shape (n_section, 2)"
|
||||||
msgstr "zi deve estar na forma (n_section, 2)"
|
msgstr "zi deve estar na forma (n_section, 2)"
|
||||||
|
|
||||||
|
#~ msgid "Corrupt .mpy file"
|
||||||
|
#~ msgstr "Arquivo .mpy corrompido"
|
||||||
|
|
||||||
|
#~ msgid "Corrupt raw code"
|
||||||
|
#~ msgstr "Código bruto corrompido"
|
||||||
|
|
||||||
|
#~ msgid "can only save bytecode"
|
||||||
|
#~ msgstr "apenas o bytecode pode ser salvo"
|
||||||
|
|
||||||
|
#~ msgid "invalid cert"
|
||||||
|
#~ msgstr "certificado inválido"
|
||||||
|
|
||||||
|
#~ msgid "invalid key"
|
||||||
|
#~ msgstr "chave inválida"
|
||||||
|
|
||||||
#~ msgid "Viper functions don't currently support more than 4 arguments"
|
#~ msgid "Viper functions don't currently support more than 4 arguments"
|
||||||
#~ msgstr "Atualmente, as funções do Viper não suportam mais de 4 argumentos"
|
#~ msgstr "Atualmente, as funções do Viper não suportam mais de 4 argumentos"
|
||||||
|
|
||||||
|
|
54
locale/sv.po
54
locale/sv.po
|
@ -6,7 +6,7 @@ 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: 2021-01-04 12:55-0600\n"
|
"POT-Creation-Date: 2021-01-04 12:55-0600\n"
|
||||||
"PO-Revision-Date: 2021-04-24 14:29+0000\n"
|
"PO-Revision-Date: 2021-04-28 16:11+0000\n"
|
||||||
"Last-Translator: Jonny Bergdahl <jonny@bergdahl.it>\n"
|
"Last-Translator: Jonny Bergdahl <jonny@bergdahl.it>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
"Language: sv\n"
|
"Language: sv\n"
|
||||||
|
@ -694,6 +694,7 @@ msgid "Cannot vary frequency on a timer that is already in use"
|
||||||
msgstr "Det går inte att ändra frekvensen på en timer som redan används"
|
msgstr "Det går inte att ändra frekvensen på en timer som redan används"
|
||||||
|
|
||||||
#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
|
#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
|
||||||
|
#: ports/nrf/common-hal/alarm/pin/PinAlarm.c
|
||||||
msgid "Cannot wake on pin edge. Only level."
|
msgid "Cannot wake on pin edge. Only level."
|
||||||
msgstr "Kan inte vakna på nivåskift, enbart nivå."
|
msgstr "Kan inte vakna på nivåskift, enbart nivå."
|
||||||
|
|
||||||
|
@ -750,14 +751,6 @@ msgstr ""
|
||||||
"Anslutningen har kopplats bort och kan inte längre användas. Skapa en ny "
|
"Anslutningen har kopplats bort och kan inte längre användas. Skapa en ny "
|
||||||
"anslutning."
|
"anslutning."
|
||||||
|
|
||||||
#: py/persistentcode.c
|
|
||||||
msgid "Corrupt .mpy file"
|
|
||||||
msgstr "Skadad .mpy-fil"
|
|
||||||
|
|
||||||
#: py/emitglue.c
|
|
||||||
msgid "Corrupt raw code"
|
|
||||||
msgstr "Korrupt rå kod"
|
|
||||||
|
|
||||||
#: ports/cxd56/common-hal/camera/Camera.c
|
#: ports/cxd56/common-hal/camera/Camera.c
|
||||||
msgid "Could not initialize Camera"
|
msgid "Could not initialize Camera"
|
||||||
msgstr "Kunde inte initiera Camera"
|
msgstr "Kunde inte initiera Camera"
|
||||||
|
@ -1314,7 +1307,8 @@ msgstr "Ogiltig fas"
|
||||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
|
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
|
||||||
#: ports/atmel-samd/common-hal/touchio/TouchIn.c
|
#: ports/atmel-samd/common-hal/touchio/TouchIn.c
|
||||||
#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
|
#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
|
||||||
#: ports/esp32s2/common-hal/touchio/TouchIn.c shared-bindings/pwmio/PWMOut.c
|
#: ports/esp32s2/common-hal/touchio/TouchIn.c
|
||||||
|
#: ports/nrf/common-hal/alarm/pin/PinAlarm.c shared-bindings/pwmio/PWMOut.c
|
||||||
#: shared-module/rgbmatrix/RGBMatrix.c
|
#: shared-module/rgbmatrix/RGBMatrix.c
|
||||||
msgid "Invalid pin"
|
msgid "Invalid pin"
|
||||||
msgstr "Ogiltig pinne"
|
msgstr "Ogiltig pinne"
|
||||||
|
@ -1698,6 +1692,7 @@ msgid "Only one TouchAlarm can be set in deep sleep."
|
||||||
msgstr "Endast ett TouchAlarm kan ställas in för djupsömn."
|
msgstr "Endast ett TouchAlarm kan ställas in för djupsömn."
|
||||||
|
|
||||||
#: ports/esp32s2/common-hal/alarm/time/TimeAlarm.c
|
#: ports/esp32s2/common-hal/alarm/time/TimeAlarm.c
|
||||||
|
#: ports/nrf/common-hal/alarm/time/TimeAlarm.c
|
||||||
msgid "Only one alarm.time alarm can be set."
|
msgid "Only one alarm.time alarm can be set."
|
||||||
msgstr "Endast ett alarm.time kan ställas in."
|
msgstr "Endast ett alarm.time kan ställas in."
|
||||||
|
|
||||||
|
@ -2628,10 +2623,6 @@ msgstr "kan bara ha upp till 4 parametrar för Thumbs assembly"
|
||||||
msgid "can only have up to 4 parameters to Xtensa assembly"
|
msgid "can only have up to 4 parameters to Xtensa assembly"
|
||||||
msgstr "kan bara ha upp till 4 parametrar att Xtensa assembly"
|
msgstr "kan bara ha upp till 4 parametrar att Xtensa assembly"
|
||||||
|
|
||||||
#: py/persistentcode.c
|
|
||||||
msgid "can only save bytecode"
|
|
||||||
msgstr "kan bara spara bytecode"
|
|
||||||
|
|
||||||
#: py/objtype.c
|
#: py/objtype.c
|
||||||
msgid "can't add special method to already-subclassed class"
|
msgid "can't add special method to already-subclassed class"
|
||||||
msgstr "kan inte lägga till särskild metod för redan subklassad klass"
|
msgstr "kan inte lägga till särskild metod för redan subklassad klass"
|
||||||
|
@ -3149,6 +3140,14 @@ msgstr "identifieraren omdefinierad till global"
|
||||||
msgid "identifier redefined as nonlocal"
|
msgid "identifier redefined as nonlocal"
|
||||||
msgstr "identifieraren omdefinierad som icke-lokal"
|
msgstr "identifieraren omdefinierad som icke-lokal"
|
||||||
|
|
||||||
|
#: py/persistentcode.c
|
||||||
|
msgid "incompatible .mpy file"
|
||||||
|
msgstr "inkompatibel .mpy-fil"
|
||||||
|
|
||||||
|
#: py/persistentcode.c
|
||||||
|
msgid "incompatible native .mpy architecture"
|
||||||
|
msgstr "inkompatibel nativ .mpy-arkitektur"
|
||||||
|
|
||||||
#: py/objstr.c
|
#: py/objstr.c
|
||||||
msgid "incomplete format"
|
msgid "incomplete format"
|
||||||
msgstr "ofullständigt format"
|
msgstr "ofullständigt format"
|
||||||
|
@ -3268,6 +3267,10 @@ msgstr "interp är definierad för 1D-matriser med samma längd"
|
||||||
msgid "interval must be in range %s-%s"
|
msgid "interval must be in range %s-%s"
|
||||||
msgstr "interval måste vara i intervallet %s-%s"
|
msgstr "interval måste vara i intervallet %s-%s"
|
||||||
|
|
||||||
|
#: py/compile.c
|
||||||
|
msgid "invalid architecture"
|
||||||
|
msgstr "ogiltig arkitektur"
|
||||||
|
|
||||||
#: lib/netutils/netutils.c
|
#: lib/netutils/netutils.c
|
||||||
msgid "invalid arguments"
|
msgid "invalid arguments"
|
||||||
msgstr "ogiltiga argument"
|
msgstr "ogiltiga argument"
|
||||||
|
@ -3277,10 +3280,6 @@ msgstr "ogiltiga argument"
|
||||||
msgid "invalid bits_per_pixel %d, must be, 1, 4, 8, 16, 24, or 32"
|
msgid "invalid bits_per_pixel %d, must be, 1, 4, 8, 16, 24, or 32"
|
||||||
msgstr "ogiltig bits_per_pixel %d, måste vara 1, 4, 8, 16, 24 eller 32"
|
msgstr "ogiltig bits_per_pixel %d, måste vara 1, 4, 8, 16, 24 eller 32"
|
||||||
|
|
||||||
#: extmod/modussl_axtls.c
|
|
||||||
msgid "invalid cert"
|
|
||||||
msgstr "ogiltigt certifikat"
|
|
||||||
|
|
||||||
#: py/compile.c
|
#: py/compile.c
|
||||||
msgid "invalid decorator"
|
msgid "invalid decorator"
|
||||||
msgstr "ogiltig dekorator"
|
msgstr "ogiltig dekorator"
|
||||||
|
@ -3311,10 +3310,6 @@ msgstr "ogiltig formatspecificerare"
|
||||||
msgid "invalid hostname"
|
msgid "invalid hostname"
|
||||||
msgstr "Ogiltigt värdnamn"
|
msgstr "Ogiltigt värdnamn"
|
||||||
|
|
||||||
#: extmod/modussl_axtls.c
|
|
||||||
msgid "invalid key"
|
|
||||||
msgstr "ogiltig nyckel"
|
|
||||||
|
|
||||||
#: py/compile.c
|
#: py/compile.c
|
||||||
msgid "invalid micropython decorator"
|
msgid "invalid micropython decorator"
|
||||||
msgstr "ogiltig mikropython-dekorator"
|
msgstr "ogiltig mikropython-dekorator"
|
||||||
|
@ -4329,6 +4324,21 @@ msgstr "zi måste vara av typ float"
|
||||||
msgid "zi must be of shape (n_section, 2)"
|
msgid "zi must be of shape (n_section, 2)"
|
||||||
msgstr "zi måste vara i formen (n_section, 2)"
|
msgstr "zi måste vara i formen (n_section, 2)"
|
||||||
|
|
||||||
|
#~ msgid "Corrupt .mpy file"
|
||||||
|
#~ msgstr "Skadad .mpy-fil"
|
||||||
|
|
||||||
|
#~ msgid "Corrupt raw code"
|
||||||
|
#~ msgstr "Korrupt rå kod"
|
||||||
|
|
||||||
|
#~ msgid "can only save bytecode"
|
||||||
|
#~ msgstr "kan bara spara bytecode"
|
||||||
|
|
||||||
|
#~ msgid "invalid cert"
|
||||||
|
#~ msgstr "ogiltigt certifikat"
|
||||||
|
|
||||||
|
#~ msgid "invalid key"
|
||||||
|
#~ msgstr "ogiltig nyckel"
|
||||||
|
|
||||||
#~ msgid "Viper functions don't currently support more than 4 arguments"
|
#~ msgid "Viper functions don't currently support more than 4 arguments"
|
||||||
#~ msgstr "Viper-funktioner stöder för närvarande inte mer än fyra argument"
|
#~ msgstr "Viper-funktioner stöder för närvarande inte mer än fyra argument"
|
||||||
|
|
||||||
|
|
|
@ -695,6 +695,7 @@ msgid "Cannot vary frequency on a timer that is already in use"
|
||||||
msgstr "Wúfǎ gēnggǎi yǐ zài shǐyòng de jìshí qì shàng de pínlǜ"
|
msgstr "Wúfǎ gēnggǎi yǐ zài shǐyòng de jìshí qì shàng de pínlǜ"
|
||||||
|
|
||||||
#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
|
#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
|
||||||
|
#: ports/nrf/common-hal/alarm/pin/PinAlarm.c
|
||||||
msgid "Cannot wake on pin edge. Only level."
|
msgid "Cannot wake on pin edge. Only level."
|
||||||
msgstr "wú fǎ zài yǐn jiǎo biān yuán huàn xǐng. jǐn jí bié."
|
msgstr "wú fǎ zài yǐn jiǎo biān yuán huàn xǐng. jǐn jí bié."
|
||||||
|
|
||||||
|
@ -749,14 +750,6 @@ msgid ""
|
||||||
"connection."
|
"connection."
|
||||||
msgstr "Liánjiē yǐ duàn kāi, wúfǎ zài shǐyòng. Chuàngjiàn yīgè xīn de liánjiē."
|
msgstr "Liánjiē yǐ duàn kāi, wúfǎ zài shǐyòng. Chuàngjiàn yīgè xīn de liánjiē."
|
||||||
|
|
||||||
#: py/persistentcode.c
|
|
||||||
msgid "Corrupt .mpy file"
|
|
||||||
msgstr "Fǔbài de .mpy wénjiàn"
|
|
||||||
|
|
||||||
#: py/emitglue.c
|
|
||||||
msgid "Corrupt raw code"
|
|
||||||
msgstr "Sǔnhuài de yuánshǐ dàimǎ"
|
|
||||||
|
|
||||||
#: ports/cxd56/common-hal/camera/Camera.c
|
#: ports/cxd56/common-hal/camera/Camera.c
|
||||||
msgid "Could not initialize Camera"
|
msgid "Could not initialize Camera"
|
||||||
msgstr "Wúfǎ chūshǐhuà xiàngjī"
|
msgstr "Wúfǎ chūshǐhuà xiàngjī"
|
||||||
|
@ -1316,7 +1309,8 @@ msgstr "Jiēduàn wúxiào"
|
||||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
|
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
|
||||||
#: ports/atmel-samd/common-hal/touchio/TouchIn.c
|
#: ports/atmel-samd/common-hal/touchio/TouchIn.c
|
||||||
#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
|
#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
|
||||||
#: ports/esp32s2/common-hal/touchio/TouchIn.c shared-bindings/pwmio/PWMOut.c
|
#: ports/esp32s2/common-hal/touchio/TouchIn.c
|
||||||
|
#: ports/nrf/common-hal/alarm/pin/PinAlarm.c shared-bindings/pwmio/PWMOut.c
|
||||||
#: shared-module/rgbmatrix/RGBMatrix.c
|
#: shared-module/rgbmatrix/RGBMatrix.c
|
||||||
msgid "Invalid pin"
|
msgid "Invalid pin"
|
||||||
msgstr "Wúxiào de yǐn jiǎo"
|
msgstr "Wúxiào de yǐn jiǎo"
|
||||||
|
@ -1700,6 +1694,7 @@ msgid "Only one TouchAlarm can be set in deep sleep."
|
||||||
msgstr "zhǐ yǒu yí gè chù mō bì kě yǐ shè zhì zài shēn dù shuì mián."
|
msgstr "zhǐ yǒu yí gè chù mō bì kě yǐ shè zhì zài shēn dù shuì mián."
|
||||||
|
|
||||||
#: ports/esp32s2/common-hal/alarm/time/TimeAlarm.c
|
#: ports/esp32s2/common-hal/alarm/time/TimeAlarm.c
|
||||||
|
#: ports/nrf/common-hal/alarm/time/TimeAlarm.c
|
||||||
msgid "Only one alarm.time alarm can be set."
|
msgid "Only one alarm.time alarm can be set."
|
||||||
msgstr "zhǐ néng shè zhì yí gè bào jǐng."
|
msgstr "zhǐ néng shè zhì yí gè bào jǐng."
|
||||||
|
|
||||||
|
@ -2626,10 +2621,6 @@ msgstr "zhǐyǒu Thumb zǔjiàn zuìduō 4 cānshù"
|
||||||
msgid "can only have up to 4 parameters to Xtensa assembly"
|
msgid "can only have up to 4 parameters to Xtensa assembly"
|
||||||
msgstr "zhǐyǒu Xtensa zǔjiàn zuìduō 4 cānshù"
|
msgstr "zhǐyǒu Xtensa zǔjiàn zuìduō 4 cānshù"
|
||||||
|
|
||||||
#: py/persistentcode.c
|
|
||||||
msgid "can only save bytecode"
|
|
||||||
msgstr "zhǐ néng bǎocún zì jié mǎ jìlù"
|
|
||||||
|
|
||||||
#: py/objtype.c
|
#: py/objtype.c
|
||||||
msgid "can't add special method to already-subclassed class"
|
msgid "can't add special method to already-subclassed class"
|
||||||
msgstr "wúfǎ tiānjiā tèshū fāngfǎ dào zi fēnlèi lèi"
|
msgstr "wúfǎ tiānjiā tèshū fāngfǎ dào zi fēnlèi lèi"
|
||||||
|
@ -3148,6 +3139,14 @@ msgstr "biāozhì fú chóngxīn dìngyì wèi quánjú"
|
||||||
msgid "identifier redefined as nonlocal"
|
msgid "identifier redefined as nonlocal"
|
||||||
msgstr "biāozhì fú chóngxīn dìngyì wéi fēi běndì"
|
msgstr "biāozhì fú chóngxīn dìngyì wéi fēi běndì"
|
||||||
|
|
||||||
|
#: py/persistentcode.c
|
||||||
|
msgid "incompatible .mpy file"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: py/persistentcode.c
|
||||||
|
msgid "incompatible native .mpy architecture"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/objstr.c
|
#: py/objstr.c
|
||||||
msgid "incomplete format"
|
msgid "incomplete format"
|
||||||
msgstr "géshì bù wánzhěng"
|
msgstr "géshì bù wánzhěng"
|
||||||
|
@ -3267,6 +3266,10 @@ msgstr "interp shì wèi děng zhǎng de 1D shùzǔ dìngyì de"
|
||||||
msgid "interval must be in range %s-%s"
|
msgid "interval must be in range %s-%s"
|
||||||
msgstr "Jiàngé bìxū zài %s-%s fànwéi nèi"
|
msgstr "Jiàngé bìxū zài %s-%s fànwéi nèi"
|
||||||
|
|
||||||
|
#: py/compile.c
|
||||||
|
msgid "invalid architecture"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: lib/netutils/netutils.c
|
#: lib/netutils/netutils.c
|
||||||
msgid "invalid arguments"
|
msgid "invalid arguments"
|
||||||
msgstr "wúxiào de cānshù"
|
msgstr "wúxiào de cānshù"
|
||||||
|
@ -3276,10 +3279,6 @@ msgstr "wúxiào de cānshù"
|
||||||
msgid "invalid bits_per_pixel %d, must be, 1, 4, 8, 16, 24, or 32"
|
msgid "invalid bits_per_pixel %d, must be, 1, 4, 8, 16, 24, or 32"
|
||||||
msgstr "wú xiào bits_per_pixel %d, bì xū shì, 1, 4, 8, 16, 24, huò 32"
|
msgstr "wú xiào bits_per_pixel %d, bì xū shì, 1, 4, 8, 16, 24, huò 32"
|
||||||
|
|
||||||
#: extmod/modussl_axtls.c
|
|
||||||
msgid "invalid cert"
|
|
||||||
msgstr "zhèngshū wúxiào"
|
|
||||||
|
|
||||||
#: py/compile.c
|
#: py/compile.c
|
||||||
msgid "invalid decorator"
|
msgid "invalid decorator"
|
||||||
msgstr "wú xiào zhuāng shì"
|
msgstr "wú xiào zhuāng shì"
|
||||||
|
@ -3310,10 +3309,6 @@ msgstr "wúxiào de géshì biāozhù"
|
||||||
msgid "invalid hostname"
|
msgid "invalid hostname"
|
||||||
msgstr "wú xiào zhǔ jī míng"
|
msgstr "wú xiào zhǔ jī míng"
|
||||||
|
|
||||||
#: extmod/modussl_axtls.c
|
|
||||||
msgid "invalid key"
|
|
||||||
msgstr "wúxiào de mì yào"
|
|
||||||
|
|
||||||
#: py/compile.c
|
#: py/compile.c
|
||||||
msgid "invalid micropython decorator"
|
msgid "invalid micropython decorator"
|
||||||
msgstr "wúxiào de MicroPython zhuāngshì qì"
|
msgstr "wúxiào de MicroPython zhuāngshì qì"
|
||||||
|
@ -4325,6 +4320,21 @@ msgstr "zi bìxū wèi fú diǎn xíng"
|
||||||
msgid "zi must be of shape (n_section, 2)"
|
msgid "zi must be of shape (n_section, 2)"
|
||||||
msgstr "zi bìxū jùyǒu xíngzhuàng (n_section,2)"
|
msgstr "zi bìxū jùyǒu xíngzhuàng (n_section,2)"
|
||||||
|
|
||||||
|
#~ msgid "Corrupt .mpy file"
|
||||||
|
#~ msgstr "Fǔbài de .mpy wénjiàn"
|
||||||
|
|
||||||
|
#~ msgid "Corrupt raw code"
|
||||||
|
#~ msgstr "Sǔnhuài de yuánshǐ dàimǎ"
|
||||||
|
|
||||||
|
#~ msgid "can only save bytecode"
|
||||||
|
#~ msgstr "zhǐ néng bǎocún zì jié mǎ jìlù"
|
||||||
|
|
||||||
|
#~ msgid "invalid cert"
|
||||||
|
#~ msgstr "zhèngshū wúxiào"
|
||||||
|
|
||||||
|
#~ msgid "invalid key"
|
||||||
|
#~ msgstr "wúxiào de mì yào"
|
||||||
|
|
||||||
#~ msgid "Viper functions don't currently support more than 4 arguments"
|
#~ msgid "Viper functions don't currently support more than 4 arguments"
|
||||||
#~ msgstr "Viper hánshù mùqián bù zhīchí chāoguò 4 gè cānshù"
|
#~ msgstr "Viper hánshù mùqián bù zhīchí chāoguò 4 gè cānshù"
|
||||||
|
|
||||||
|
|
1
main.c
1
main.c
|
@ -427,6 +427,7 @@ STATIC bool run_code_py(safe_mode_t safe_mode) {
|
||||||
// it may also return due to another interrupt, that's why we check
|
// it may also return due to another interrupt, that's why we check
|
||||||
// for deep sleep alarms above. If it wasn't a deep sleep alarm,
|
// for deep sleep alarms above. If it wasn't a deep sleep alarm,
|
||||||
// then we'll idle here again.
|
// then we'll idle here again.
|
||||||
|
|
||||||
#if CIRCUITPY_ALARM
|
#if CIRCUITPY_ALARM
|
||||||
common_hal_alarm_pretending_deep_sleep();
|
common_hal_alarm_pretending_deep_sleep();
|
||||||
#else
|
#else
|
||||||
|
|
|
@ -94,6 +94,11 @@ else
|
||||||
CFLAGS += -flto -flto-partition=none
|
CFLAGS += -flto -flto-partition=none
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifeq ($(NRF_DEBUG_PRINT), 1)
|
||||||
|
CFLAGS += -DNRF_DEBUG_PRINT=1
|
||||||
|
SRC_SUPERVISOR += supervisor/debug_uart.c
|
||||||
|
endif
|
||||||
|
|
||||||
# option to override compiler optimization level, set in boards/$(BOARD)/mpconfigboard.mk
|
# option to override compiler optimization level, set in boards/$(BOARD)/mpconfigboard.mk
|
||||||
CFLAGS += $(OPTIMIZATION_FLAGS)
|
CFLAGS += $(OPTIMIZATION_FLAGS)
|
||||||
|
|
||||||
|
|
|
@ -7,6 +7,7 @@ MCU_CHIP = nrf52833
|
||||||
|
|
||||||
INTERNAL_FLASH_FILESYSTEM = 1
|
INTERNAL_FLASH_FILESYSTEM = 1
|
||||||
|
|
||||||
|
CIRCUITPY_ALARM = 0
|
||||||
CIRCUITPY_AUDIOMP3 = 0
|
CIRCUITPY_AUDIOMP3 = 0
|
||||||
CIRCUITPY_BITBANGIO = 0
|
CIRCUITPY_BITBANGIO = 0
|
||||||
CIRCUITPY_BITMAPTOOLS = 0
|
CIRCUITPY_BITMAPTOOLS = 0
|
||||||
|
|
|
@ -10,6 +10,7 @@ MCU_CHIP = nrf52833
|
||||||
|
|
||||||
INTERNAL_FLASH_FILESYSTEM = 1
|
INTERNAL_FLASH_FILESYSTEM = 1
|
||||||
|
|
||||||
|
CIRCUITPY_ALARM = 0
|
||||||
CIRCUITPY_AESIO = 1
|
CIRCUITPY_AESIO = 1
|
||||||
CIRCUITPY_AUDIOMP3 = 0
|
CIRCUITPY_AUDIOMP3 = 0
|
||||||
CIRCUITPY_BITMAPTOOLS = 0
|
CIRCUITPY_BITMAPTOOLS = 0
|
||||||
|
@ -24,6 +25,8 @@ CIRCUITPY_MSGPACK = 0
|
||||||
CIRCUITPY_NEOPIXEL_WRITE = 0
|
CIRCUITPY_NEOPIXEL_WRITE = 0
|
||||||
CIRCUITPY_NVM = 0
|
CIRCUITPY_NVM = 0
|
||||||
CIRCUITPY_PIXELBUF = 0
|
CIRCUITPY_PIXELBUF = 0
|
||||||
|
CIRCUITPY_PULSEIO = 0
|
||||||
|
CIRCUITPY_PWMIO = 1
|
||||||
CIRCUITPY_RGBMATRIX = 0
|
CIRCUITPY_RGBMATRIX = 0
|
||||||
CIRCUITPY_ROTARYIO = 0
|
CIRCUITPY_ROTARYIO = 0
|
||||||
CIRCUITPY_RTC = 1
|
CIRCUITPY_RTC = 1
|
||||||
|
|
|
@ -0,0 +1,118 @@
|
||||||
|
/*
|
||||||
|
* This file is part of the MicroPython project, http://micropython.org/
|
||||||
|
*
|
||||||
|
* The MIT License (MIT)
|
||||||
|
*
|
||||||
|
* Copyright (c) 2021 Junji Sakai
|
||||||
|
*
|
||||||
|
* 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 <string.h>
|
||||||
|
#include "py/runtime.h"
|
||||||
|
#include "common-hal/alarm/__init__.h"
|
||||||
|
#include "common-hal/alarm/SleepMemory.h"
|
||||||
|
#include "nrf_power.h"
|
||||||
|
|
||||||
|
#ifdef NRF_DEBUG_PRINT
|
||||||
|
extern void dbg_dump_RAMreg(void);
|
||||||
|
#include "supervisor/serial.h" // dbg_printf()
|
||||||
|
#endif
|
||||||
|
|
||||||
|
__attribute__((section(".uninitialized"))) static uint8_t _sleepmem[SLEEP_MEMORY_LENGTH];
|
||||||
|
__attribute__((section(".uninitialized"))) uint8_t sleepmem_wakeup_event;
|
||||||
|
__attribute__((section(".uninitialized"))) uint8_t sleepmem_wakeup_pin;
|
||||||
|
__attribute__((section(".uninitialized"))) static uint32_t _sleepmem_magicnum;
|
||||||
|
#define SLEEP_MEMORY_DATA_GUARD 0xad0000af
|
||||||
|
#define SLEEP_MEMORY_DATA_GUARD_MASK 0xff0000ff
|
||||||
|
|
||||||
|
static int is_sleep_memory_valid(void) {
|
||||||
|
if ((_sleepmem_magicnum & SLEEP_MEMORY_DATA_GUARD_MASK)
|
||||||
|
== SLEEP_MEMORY_DATA_GUARD) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void set_memory_retention(void) {
|
||||||
|
// set RAM[n].POWER register for RAM retention
|
||||||
|
// nRF52840 has RAM[0..7].Section[0..1] and RAM[8].Section[0..5]
|
||||||
|
// nRF52833 has RAM[0..7].Section[0..1] and RAM[8].Section[0,1]
|
||||||
|
for(int block = 0; block <= 7; ++block) {
|
||||||
|
nrf_power_rampower_mask_on(NRF_POWER, block,
|
||||||
|
NRF_POWER_RAMPOWER_S0RETENTION_MASK |
|
||||||
|
NRF_POWER_RAMPOWER_S1RETENTION_MASK);
|
||||||
|
};
|
||||||
|
#ifdef NRF52840
|
||||||
|
nrf_power_rampower_mask_on(NRF_POWER, 8,
|
||||||
|
NRF_POWER_RAMPOWER_S0RETENTION_MASK |
|
||||||
|
NRF_POWER_RAMPOWER_S1RETENTION_MASK |
|
||||||
|
NRF_POWER_RAMPOWER_S2RETENTION_MASK |
|
||||||
|
NRF_POWER_RAMPOWER_S3RETENTION_MASK |
|
||||||
|
NRF_POWER_RAMPOWER_S4RETENTION_MASK |
|
||||||
|
NRF_POWER_RAMPOWER_S5RETENTION_MASK);
|
||||||
|
#endif
|
||||||
|
#ifdef NRF52833
|
||||||
|
nrf_power_rampower_mask_on(NRF_POWER, 8,
|
||||||
|
NRF_POWER_RAMPOWER_S0RETENTION_MASK |
|
||||||
|
NRF_POWER_RAMPOWER_S1RETENTION_MASK);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
static void initialize_sleep_memory(void) {
|
||||||
|
memset((uint8_t *)_sleepmem, 0, SLEEP_MEMORY_LENGTH);
|
||||||
|
sleepmem_wakeup_event = 0;
|
||||||
|
sleepmem_wakeup_pin = 0;
|
||||||
|
|
||||||
|
set_memory_retention();
|
||||||
|
#ifdef NRF_DEBUG_PRINT
|
||||||
|
//dbg_dump_RAMreg();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
_sleepmem_magicnum = SLEEP_MEMORY_DATA_GUARD;
|
||||||
|
}
|
||||||
|
|
||||||
|
void alarm_sleep_memory_reset(void) {
|
||||||
|
if (!is_sleep_memory_valid()) {
|
||||||
|
initialize_sleep_memory();
|
||||||
|
#ifdef NRF_DEBUG_PRINT
|
||||||
|
dbg_printf("sleep memory initialized\r\n");
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t common_hal_alarm_sleep_memory_get_length(alarm_sleep_memory_obj_t *self) {
|
||||||
|
return sizeof(_sleepmem);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool common_hal_alarm_sleep_memory_set_bytes(alarm_sleep_memory_obj_t *self, uint32_t start_index, const uint8_t* values, uint32_t len) {
|
||||||
|
if (start_index + len > sizeof(_sleepmem)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
memcpy((uint8_t *) (_sleepmem + start_index), values, len);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void common_hal_alarm_sleep_memory_get_bytes(alarm_sleep_memory_obj_t *self, uint32_t start_index, uint8_t* values, uint32_t len) {
|
||||||
|
if (start_index + len > sizeof(_sleepmem)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
memcpy(values, (uint8_t *) (_sleepmem + start_index), len);
|
||||||
|
}
|
|
@ -0,0 +1,41 @@
|
||||||
|
/*
|
||||||
|
* This file is part of the MicroPython project, http://micropython.org/
|
||||||
|
*
|
||||||
|
* The MIT License (MIT)
|
||||||
|
*
|
||||||
|
* Copyright (c) 2021 Junji Sakai
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in
|
||||||
|
* all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
* THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef MICROPY_INCLUDED_NRF_COMMON_HAL_ALARM_SLEEPMEMORY_H
|
||||||
|
#define MICROPY_INCLUDED_NRF_COMMON_HAL_ALARM_SLEEPMEMORY_H
|
||||||
|
|
||||||
|
#include "py/obj.h"
|
||||||
|
|
||||||
|
#define SLEEP_MEMORY_LENGTH (256)
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
mp_obj_base_t base;
|
||||||
|
} alarm_sleep_memory_obj_t;
|
||||||
|
|
||||||
|
extern void set_memory_retention(void);
|
||||||
|
extern void alarm_sleep_memory_reset(void);
|
||||||
|
|
||||||
|
#endif // MICROPY_INCLUDED_NRF_COMMON_HAL_ALARM_SLEEPMEMORY_H
|
|
@ -0,0 +1,349 @@
|
||||||
|
/*
|
||||||
|
* This file is part of the MicroPython project, http://micropython.org/
|
||||||
|
*
|
||||||
|
* The MIT License (MIT)
|
||||||
|
*
|
||||||
|
* Copyright (c) 2020 Scott Shawcroft for Adafruit Industries
|
||||||
|
* Copyright (c) 2020 Dan Halbert for Adafruit Industries
|
||||||
|
* Copyright (c) 2021 Junji Sakai
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in
|
||||||
|
* all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
* THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "py/gc.h"
|
||||||
|
#include "py/obj.h"
|
||||||
|
#include "py/objtuple.h"
|
||||||
|
#include "py/runtime.h"
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#include "shared-bindings/alarm/__init__.h"
|
||||||
|
#include "shared-bindings/alarm/SleepMemory.h"
|
||||||
|
#include "shared-bindings/alarm/pin/PinAlarm.h"
|
||||||
|
#include "shared-bindings/alarm/time/TimeAlarm.h"
|
||||||
|
#include "shared-bindings/alarm/touch/TouchAlarm.h"
|
||||||
|
#include "shared-bindings/time/__init__.h"
|
||||||
|
|
||||||
|
#include "supervisor/port.h"
|
||||||
|
#include "supervisor/serial.h" // serial_connected()
|
||||||
|
#ifdef NRF_DEBUG_PRINT
|
||||||
|
#include "supervisor/serial.h" // dbg_printf()
|
||||||
|
extern int dbg_check_RTCprescaler(void);
|
||||||
|
#endif
|
||||||
|
#include "supervisor/qspi_flash.h"
|
||||||
|
|
||||||
|
#include "nrf.h"
|
||||||
|
#include "nrf_power.h"
|
||||||
|
#include "nrfx.h"
|
||||||
|
#include "nrfx_gpiote.h"
|
||||||
|
|
||||||
|
// Singleton instance of SleepMemory.
|
||||||
|
const alarm_sleep_memory_obj_t alarm_sleep_memory_obj = {
|
||||||
|
.base = {
|
||||||
|
.type = &alarm_sleep_memory_type,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
void alarm_reset(void) {
|
||||||
|
alarm_sleep_memory_reset();
|
||||||
|
alarm_pin_pinalarm_reset();
|
||||||
|
alarm_time_timealarm_reset();
|
||||||
|
alarm_touch_touchalarm_reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
extern uint32_t reset_reason_saved;
|
||||||
|
STATIC nrf_sleep_source_t _get_wakeup_cause(void) {
|
||||||
|
if (alarm_pin_pinalarm_woke_us_up()) {
|
||||||
|
return NRF_SLEEP_WAKEUP_GPIO;
|
||||||
|
}
|
||||||
|
if (alarm_time_timealarm_woke_us_up()) {
|
||||||
|
return NRF_SLEEP_WAKEUP_TIMER;
|
||||||
|
}
|
||||||
|
if (alarm_touch_touchalarm_woke_us_up()) {
|
||||||
|
return NRF_SLEEP_WAKEUP_TOUCHPAD;
|
||||||
|
}
|
||||||
|
if (reset_reason_saved & NRF_POWER_RESETREAS_RESETPIN_MASK) {
|
||||||
|
return NRF_SLEEP_WAKEUP_RESETPIN;
|
||||||
|
}
|
||||||
|
else if (reset_reason_saved & NRF_POWER_RESETREAS_OFF_MASK) {
|
||||||
|
return NRF_SLEEP_WAKEUP_GPIO;
|
||||||
|
}
|
||||||
|
else if (reset_reason_saved & NRF_POWER_RESETREAS_VBUS_MASK) {
|
||||||
|
return NRF_SLEEP_WAKEUP_VBUS;
|
||||||
|
}
|
||||||
|
return NRF_SLEEP_WAKEUP_UNDEFINED;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef NRF_DEBUG_PRINT
|
||||||
|
static const char* cause_str[] = {
|
||||||
|
"UNDEFINED",
|
||||||
|
"GPIO",
|
||||||
|
"TIMER",
|
||||||
|
"TOUCHPAD",
|
||||||
|
"VBUS",
|
||||||
|
"RESETPIN",
|
||||||
|
};
|
||||||
|
void print_wakeup_cause(nrf_sleep_source_t cause) {
|
||||||
|
if (cause >= 0 && cause < NRF_SLEEP_WAKEUP_ZZZ) {
|
||||||
|
dbg_printf("wakeup cause = NRF_SLEEP_WAKEUP_%s\r\n",
|
||||||
|
cause_str[(int)cause]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
bool common_hal_alarm_woken_from_sleep(void) {
|
||||||
|
nrf_sleep_source_t cause = _get_wakeup_cause();
|
||||||
|
#ifdef NRF_DEBUG_PRINT
|
||||||
|
if (cause != NRF_SLEEP_WAKEUP_UNDEFINED) {
|
||||||
|
//print_wakeup_cause(cause);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
return (cause == NRF_SLEEP_WAKEUP_GPIO || cause == NRF_SLEEP_WAKEUP_TIMER
|
||||||
|
|| cause == NRF_SLEEP_WAKEUP_TOUCHPAD);
|
||||||
|
}
|
||||||
|
|
||||||
|
STATIC mp_obj_t _get_wake_alarm(size_t n_alarms, const mp_obj_t *alarms) {
|
||||||
|
nrf_sleep_source_t cause = _get_wakeup_cause();
|
||||||
|
switch (cause) {
|
||||||
|
case NRF_SLEEP_WAKEUP_TIMER: {
|
||||||
|
return alarm_time_timealarm_get_wakeup_alarm(n_alarms, alarms);
|
||||||
|
}
|
||||||
|
case NRF_SLEEP_WAKEUP_TOUCHPAD: {
|
||||||
|
return alarm_touch_touchalarm_get_wakeup_alarm(n_alarms, alarms);
|
||||||
|
}
|
||||||
|
case NRF_SLEEP_WAKEUP_GPIO: {
|
||||||
|
return alarm_pin_pinalarm_get_wakeup_alarm(n_alarms, alarms);
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return mp_const_none;
|
||||||
|
}
|
||||||
|
|
||||||
|
mp_obj_t common_hal_alarm_get_wake_alarm(void) {
|
||||||
|
mp_obj_t obj = _get_wake_alarm(0, NULL);
|
||||||
|
return obj;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set up light sleep or deep sleep alarms.
|
||||||
|
STATIC void _setup_sleep_alarms(bool deep_sleep, size_t n_alarms, const mp_obj_t *alarms) {
|
||||||
|
alarm_pin_pinalarm_set_alarms(deep_sleep, n_alarms, alarms);
|
||||||
|
alarm_time_timealarm_set_alarms(deep_sleep, n_alarms, alarms);
|
||||||
|
alarm_touch_touchalarm_set_alarm(deep_sleep, n_alarms, alarms);
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: this handles all possible types of wakeup, which is redundant with main.
|
||||||
|
// revise to extract all parts essential to enabling sleep wakeup, but leave the
|
||||||
|
// alarm/non-alarm sorting to the existing main loop.
|
||||||
|
void system_on_idle_until_alarm(int64_t timediff_ms, uint32_t prescaler) {
|
||||||
|
bool have_timeout = false;
|
||||||
|
uint64_t start_tick = 0, end_tick = 0;
|
||||||
|
int64_t tickdiff;
|
||||||
|
|
||||||
|
#if defined(MICROPY_QSPI_CS)
|
||||||
|
qspi_flash_enter_sleep();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (timediff_ms != -1) {
|
||||||
|
have_timeout = true;
|
||||||
|
#if 0
|
||||||
|
int64_t now = common_hal_time_monotonic_ms();
|
||||||
|
dbg_printf("now_ms=%ld timediff_ms=%ld\r\n", (long)now, (long)timediff_ms);
|
||||||
|
#endif
|
||||||
|
if (timediff_ms < 0) timediff_ms = 0;
|
||||||
|
if (prescaler == 0) {
|
||||||
|
// 1 tick = 1/1024 sec = 1000/1024 ms
|
||||||
|
// -> 1 ms = 1024/1000 ticks
|
||||||
|
tickdiff = (mp_uint_t)(timediff_ms * 1024 / 1000); // ms -> ticks
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// 1 tick = prescaler/1024 sec = prescaler*1000/1024 ms
|
||||||
|
// -> 1ms = 1024/(1000*prescaler) ticks
|
||||||
|
tickdiff = (mp_uint_t)(timediff_ms * 1024 / (1000 * prescaler));
|
||||||
|
}
|
||||||
|
start_tick = port_get_raw_ticks(NULL);
|
||||||
|
end_tick = start_tick + tickdiff;
|
||||||
|
}
|
||||||
|
#if 0
|
||||||
|
dbg_printf("start_tick=%ld end_tick=%ld have_timeout=%c\r\n", (long)start_tick, (long)end_tick, have_timeout ? 'T' : 'F');
|
||||||
|
#endif
|
||||||
|
|
||||||
|
int64_t remaining;
|
||||||
|
sleepmem_wakeup_event = SLEEPMEM_WAKEUP_BY_NONE;
|
||||||
|
sleepmem_wakeup_pin = WAKEUP_PIN_UNDEF;
|
||||||
|
|
||||||
|
#ifdef NRF_DEBUG_PRINT
|
||||||
|
int ct = 40;
|
||||||
|
char reason = '?';
|
||||||
|
#define WAKEUP_REASON(x) reason = (x)
|
||||||
|
#else
|
||||||
|
#define WAKEUP_REASON(x)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
while(1) {
|
||||||
|
if (mp_hal_is_interrupted()) {
|
||||||
|
WAKEUP_REASON('I');
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (serial_connected() && serial_bytes_available()) {
|
||||||
|
WAKEUP_REASON('S');
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
RUN_BACKGROUND_TASKS;
|
||||||
|
if (common_hal_alarm_woken_from_sleep()) {
|
||||||
|
WAKEUP_REASON('W');
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (have_timeout) {
|
||||||
|
remaining = end_tick - port_get_raw_ticks(NULL);
|
||||||
|
// We break a bit early so we don't risk setting the alarm before the time when we call
|
||||||
|
// sleep.
|
||||||
|
if (remaining < 1) {
|
||||||
|
WAKEUP_REASON('t');
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
port_interrupt_after_ticks(remaining);
|
||||||
|
}
|
||||||
|
// Idle until an interrupt happens.
|
||||||
|
port_idle_until_interrupt();
|
||||||
|
#ifdef NRF_DEBUG_PRINT
|
||||||
|
if (ct > 0) {
|
||||||
|
dbg_printf("_");
|
||||||
|
--ct;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
if (have_timeout) {
|
||||||
|
remaining = end_tick - port_get_raw_ticks(NULL);
|
||||||
|
if (remaining <= 0) {
|
||||||
|
sleepmem_wakeup_event = SLEEPMEM_WAKEUP_BY_TIMER;
|
||||||
|
WAKEUP_REASON('T');
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#ifdef NRF_DEBUG_PRINT
|
||||||
|
dbg_printf("%c\r\n", reason);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(MICROPY_QSPI_CS)
|
||||||
|
qspi_flash_exit_sleep();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef NRF_DEBUG_PRINT
|
||||||
|
tickdiff = port_get_raw_ticks(NULL) - start_tick;
|
||||||
|
double sec;
|
||||||
|
if (prescaler == 0) {
|
||||||
|
sec = (double)tickdiff / 1024;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
sec = (double)(tickdiff * prescaler) / 1024;
|
||||||
|
}
|
||||||
|
dbg_printf("lapse %6.1f sec\r\n", sec);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
mp_obj_t common_hal_alarm_light_sleep_until_alarms(size_t n_alarms, const mp_obj_t *alarms) {
|
||||||
|
mp_obj_t wake_alarm;
|
||||||
|
alarm_time_timealarm_clear_wakeup_time();
|
||||||
|
_setup_sleep_alarms(false, n_alarms, alarms);
|
||||||
|
|
||||||
|
#ifdef NRF_DEBUG_PRINT
|
||||||
|
dbg_printf("\r\nlight sleep...");
|
||||||
|
#endif
|
||||||
|
|
||||||
|
int64_t timediff_ms = alarm_time_timealarm_get_wakeup_timediff_ms();
|
||||||
|
system_on_idle_until_alarm(timediff_ms, 0);
|
||||||
|
|
||||||
|
if (mp_hal_is_interrupted()) {
|
||||||
|
wake_alarm = mp_const_none;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
wake_alarm = _get_wake_alarm(n_alarms, alarms);
|
||||||
|
}
|
||||||
|
alarm_reset();
|
||||||
|
return wake_alarm;
|
||||||
|
}
|
||||||
|
|
||||||
|
void common_hal_alarm_set_deep_sleep_alarms(size_t n_alarms, const mp_obj_t *alarms) {
|
||||||
|
alarm_time_timealarm_clear_wakeup_time();
|
||||||
|
_setup_sleep_alarms(true, n_alarms, alarms);
|
||||||
|
}
|
||||||
|
|
||||||
|
#define PRESCALER_VALUE_IN_DEEP_SLEEP (1024)
|
||||||
|
|
||||||
|
void NORETURN common_hal_alarm_enter_deep_sleep(void) {
|
||||||
|
alarm_pin_pinalarm_prepare_for_deep_sleep();
|
||||||
|
alarm_time_timealarm_prepare_for_deep_sleep();
|
||||||
|
|
||||||
|
#ifdef NRF_DEBUG_PRINT
|
||||||
|
dbg_printf("\r\ndeep sleep...");
|
||||||
|
#endif
|
||||||
|
int64_t timediff_ms = alarm_time_timealarm_get_wakeup_timediff_ms();
|
||||||
|
tick_set_prescaler(PRESCALER_VALUE_IN_DEEP_SLEEP -1);
|
||||||
|
#ifdef NRF_DEBUG_PRINT
|
||||||
|
dbg_check_RTCprescaler(); //XXX
|
||||||
|
#endif
|
||||||
|
system_on_idle_until_alarm(timediff_ms, PRESCALER_VALUE_IN_DEEP_SLEEP);
|
||||||
|
|
||||||
|
#ifdef NRF_DEBUG_PRINT
|
||||||
|
dbg_printf("RESET...\r\n\r\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
|
reset_cpu();
|
||||||
|
|
||||||
|
// should not reach here..
|
||||||
|
while(1) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
// old version deep sleep code that was used in common_hal_alarm_enter_deep_sleep()
|
||||||
|
// for anyone who might want true System OFF sleep ..
|
||||||
|
#if 0
|
||||||
|
void OLD_go_system_off(void) {
|
||||||
|
sleepmem_wakeup_event = SLEEPMEM_WAKEUP_BY_NONE;
|
||||||
|
sleepmem_wakeup_pin = WAKEUP_PIN_UNDEF;
|
||||||
|
uint8_t sd_enabled;
|
||||||
|
sd_softdevice_is_enabled(&sd_enabled);
|
||||||
|
set_memory_retention();
|
||||||
|
dbg_printf("OLD go system off.. %d\r\n", sd_enabled);
|
||||||
|
if (sd_enabled) {
|
||||||
|
sd_power_system_off();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
NRF_POWER->SYSTEMOFF = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
void common_hal_alarm_pretending_deep_sleep(void) {
|
||||||
|
alarm_pin_pinalarm_prepare_for_deep_sleep();
|
||||||
|
alarm_time_timealarm_prepare_for_deep_sleep();
|
||||||
|
|
||||||
|
#ifdef NRF_DEBUG_PRINT
|
||||||
|
dbg_printf("\r\npretending to deep sleep...");
|
||||||
|
#endif
|
||||||
|
|
||||||
|
int64_t timediff_ms = alarm_time_timealarm_get_wakeup_timediff_ms();
|
||||||
|
system_on_idle_until_alarm(timediff_ms, 0);
|
||||||
|
|
||||||
|
alarm_reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
void common_hal_alarm_gc_collect(void) {
|
||||||
|
gc_collect_ptr(shared_alarm_get_wake_alarm());
|
||||||
|
}
|
|
@ -0,0 +1,56 @@
|
||||||
|
/*
|
||||||
|
* This file is part of the MicroPython project, http://micropython.org/
|
||||||
|
*
|
||||||
|
* The MIT License (MIT)
|
||||||
|
*
|
||||||
|
* Copyright (c) 2020 Dan Halbert for Adafruit Industries.
|
||||||
|
* Copyright (c) 2021 Junji Sakai
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in
|
||||||
|
* all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
* THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef MICROPY_INCLUDED_NRF_COMMON_HAL_ALARM__INIT__H
|
||||||
|
#define MICROPY_INCLUDED_NRF_COMMON_HAL_ALARM__INIT__H
|
||||||
|
|
||||||
|
#include "common-hal/alarm/SleepMemory.h"
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
NRF_SLEEP_WAKEUP_UNDEFINED,
|
||||||
|
NRF_SLEEP_WAKEUP_GPIO,
|
||||||
|
NRF_SLEEP_WAKEUP_TIMER,
|
||||||
|
NRF_SLEEP_WAKEUP_TOUCHPAD,
|
||||||
|
NRF_SLEEP_WAKEUP_VBUS,
|
||||||
|
NRF_SLEEP_WAKEUP_RESETPIN,
|
||||||
|
NRF_SLEEP_WAKEUP_ZZZ
|
||||||
|
} nrf_sleep_source_t;
|
||||||
|
|
||||||
|
extern const alarm_sleep_memory_obj_t alarm_sleep_memory_obj;
|
||||||
|
|
||||||
|
enum {
|
||||||
|
SLEEPMEM_WAKEUP_BY_NONE = 0,
|
||||||
|
SLEEPMEM_WAKEUP_BY_PIN = 1,
|
||||||
|
SLEEPMEM_WAKEUP_BY_TIMER = 2,
|
||||||
|
};
|
||||||
|
#define WAKEUP_PIN_UNDEF 0xFF
|
||||||
|
extern uint8_t sleepmem_wakeup_event;
|
||||||
|
extern uint8_t sleepmem_wakeup_pin;
|
||||||
|
|
||||||
|
extern void alarm_reset(void);
|
||||||
|
|
||||||
|
#endif // MICROPY_INCLUDED_NRF_COMMON_HAL_ALARM__INIT__H
|
|
@ -0,0 +1,242 @@
|
||||||
|
/*
|
||||||
|
* This file is part of the MicroPython project, http://micropython.org/
|
||||||
|
*
|
||||||
|
* The MIT License (MIT)
|
||||||
|
*
|
||||||
|
* Copyright (c) 2020 Dan Halbert for Adafruit Industries
|
||||||
|
* Copyright (c) 2020 Scott Shawcroft for Adafruit Industries
|
||||||
|
* Copyright (c) 2021 Junji Sakai
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in
|
||||||
|
* all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
* THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "py/runtime.h"
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <assert.h>
|
||||||
|
|
||||||
|
#include "shared-bindings/alarm/pin/PinAlarm.h"
|
||||||
|
#include "shared-bindings/microcontroller/__init__.h"
|
||||||
|
#include "shared-bindings/microcontroller/Pin.h"
|
||||||
|
#include "common-hal/alarm/__init__.h"
|
||||||
|
|
||||||
|
#include "nrfx.h"
|
||||||
|
#include "nrf_gpio.h"
|
||||||
|
#include "nrfx_gpiote.h"
|
||||||
|
#include "nrf_soc.h"
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#include "supervisor/serial.h" // dbg_print
|
||||||
|
|
||||||
|
#define WPIN_UNUSED 0xFF
|
||||||
|
volatile char _pinhandler_gpiote_count;
|
||||||
|
static bool pins_configured = false;
|
||||||
|
|
||||||
|
extern uint32_t reset_reason_saved;
|
||||||
|
extern void dbg_dump_GPIOregs(void);
|
||||||
|
|
||||||
|
void common_hal_alarm_pin_pinalarm_construct(alarm_pin_pinalarm_obj_t *self, mcu_pin_obj_t *pin, bool value, bool edge, bool pull) {
|
||||||
|
if (edge) {
|
||||||
|
mp_raise_ValueError(translate("Cannot wake on pin edge. Only level."));
|
||||||
|
}
|
||||||
|
if (pin->number >= NUMBER_OF_PINS) {
|
||||||
|
mp_raise_ValueError(translate("Invalid pin"));
|
||||||
|
}
|
||||||
|
self->pin = pin;
|
||||||
|
self->value = value;
|
||||||
|
self->pull = pull;
|
||||||
|
}
|
||||||
|
|
||||||
|
mcu_pin_obj_t *common_hal_alarm_pin_pinalarm_get_pin(alarm_pin_pinalarm_obj_t *self) {
|
||||||
|
return self->pin;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool common_hal_alarm_pin_pinalarm_get_value(alarm_pin_pinalarm_obj_t *self) {
|
||||||
|
return self->value;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool common_hal_alarm_pin_pinalarm_get_edge(alarm_pin_pinalarm_obj_t *self) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool common_hal_alarm_pin_pinalarm_get_pull(alarm_pin_pinalarm_obj_t *self) {
|
||||||
|
return self->pull;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void pinalarm_gpiote_handler(nrfx_gpiote_pin_t pin, nrf_gpiote_polarity_t action) {
|
||||||
|
++_pinhandler_gpiote_count;
|
||||||
|
sleepmem_wakeup_event = SLEEPMEM_WAKEUP_BY_PIN;
|
||||||
|
sleepmem_wakeup_pin = pin & 0xFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool alarm_pin_pinalarm_woke_us_up(void) {
|
||||||
|
return (sleepmem_wakeup_event == SLEEPMEM_WAKEUP_BY_PIN &&
|
||||||
|
sleepmem_wakeup_pin != WAKEUP_PIN_UNDEF);
|
||||||
|
}
|
||||||
|
|
||||||
|
mp_obj_t alarm_pin_pinalarm_get_wakeup_alarm(size_t n_alarms, const mp_obj_t *alarms) {
|
||||||
|
// First, check to see if we match any given alarms.
|
||||||
|
for (size_t i = 0; i < n_alarms; i++) {
|
||||||
|
if (!mp_obj_is_type(alarms[i], &alarm_pin_pinalarm_type)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
alarm_pin_pinalarm_obj_t *alarm = MP_OBJ_TO_PTR(alarms[i]);
|
||||||
|
if (alarm->pin->number == sleepmem_wakeup_pin) {
|
||||||
|
return alarms[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
alarm_pin_pinalarm_obj_t *alarm = m_new_obj(alarm_pin_pinalarm_obj_t);
|
||||||
|
alarm->base.type = &alarm_pin_pinalarm_type;
|
||||||
|
alarm->pin = NULL;
|
||||||
|
// Map the pin number back to a pin object.
|
||||||
|
for (size_t i = 0; i < mcu_pin_globals.map.used; i++) {
|
||||||
|
const mcu_pin_obj_t* pin_obj = MP_OBJ_TO_PTR(mcu_pin_globals.map.table[i].value);
|
||||||
|
if ((size_t) pin_obj->number == sleepmem_wakeup_pin) {
|
||||||
|
alarm->pin = mcu_pin_globals.map.table[i].value;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return alarm;
|
||||||
|
}
|
||||||
|
|
||||||
|
// These must be static because we need to configure pulls later, right before
|
||||||
|
// deep sleep.
|
||||||
|
static uint64_t high_alarms = 0;
|
||||||
|
static uint64_t low_alarms = 0;
|
||||||
|
static uint64_t pull_pins = 0;
|
||||||
|
|
||||||
|
void alarm_pin_pinalarm_reset(void) {
|
||||||
|
for (size_t i = 0; i < 64; i++) {
|
||||||
|
uint64_t mask = 1ull << i;
|
||||||
|
bool high = (high_alarms & mask) != 0;
|
||||||
|
bool low = (low_alarms & mask) != 0;
|
||||||
|
if (!(high || low)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
reset_pin_number(i);
|
||||||
|
nrfx_gpiote_in_event_disable((nrfx_gpiote_pin_t)i);
|
||||||
|
nrfx_gpiote_in_uninit((nrfx_gpiote_pin_t)i);
|
||||||
|
}
|
||||||
|
|
||||||
|
high_alarms = 0;
|
||||||
|
low_alarms = 0;
|
||||||
|
pull_pins = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void configure_pins_for_sleep(void) {
|
||||||
|
nrfx_err_t err;
|
||||||
|
if ( nrfx_gpiote_is_init() ) {
|
||||||
|
nrfx_gpiote_uninit();
|
||||||
|
}
|
||||||
|
err = nrfx_gpiote_init(NRFX_GPIOTE_CONFIG_IRQ_PRIORITY);
|
||||||
|
assert(err == NRFX_SUCCESS);
|
||||||
|
(void)err; // to suppress unused warning
|
||||||
|
|
||||||
|
_pinhandler_gpiote_count = 0;
|
||||||
|
|
||||||
|
nrfx_gpiote_in_config_t cfg = {
|
||||||
|
.sense = NRF_GPIOTE_POLARITY_TOGGLE,
|
||||||
|
.pull = NRF_GPIO_PIN_PULLUP,
|
||||||
|
.is_watcher = false,
|
||||||
|
.hi_accuracy = true,
|
||||||
|
.skip_gpio_setup = false
|
||||||
|
};
|
||||||
|
for(size_t i = 0; i < 64; ++i) {
|
||||||
|
uint64_t mask = 1ull << i;
|
||||||
|
if (((high_alarms & mask) == 0) && ((low_alarms & mask) == 0)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (((high_alarms & mask) != 0) && ((low_alarms & mask) == 0)) {
|
||||||
|
cfg.sense = NRF_GPIOTE_POLARITY_LOTOHI;
|
||||||
|
cfg.pull = ((pull_pins & mask) != 0) ?
|
||||||
|
NRF_GPIO_PIN_PULLDOWN : NRF_GPIO_PIN_NOPULL;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if (((high_alarms & mask) == 0) && ((low_alarms & mask) != 0)) {
|
||||||
|
cfg.sense = NRF_GPIOTE_POLARITY_HITOLO;
|
||||||
|
cfg.pull = ((pull_pins & mask) != 0) ?
|
||||||
|
NRF_GPIO_PIN_PULLUP : NRF_GPIO_PIN_NOPULL;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
cfg.sense = NRF_GPIOTE_POLARITY_TOGGLE;
|
||||||
|
cfg.pull = NRF_GPIO_PIN_NOPULL;
|
||||||
|
}
|
||||||
|
err = nrfx_gpiote_in_init((nrfx_gpiote_pin_t)i, &cfg,
|
||||||
|
pinalarm_gpiote_handler);
|
||||||
|
assert(err == NRFX_SUCCESS);
|
||||||
|
nrfx_gpiote_in_event_enable((nrfx_gpiote_pin_t)i, true);
|
||||||
|
if (((high_alarms & mask) != 0) && ((low_alarms & mask) == 0)) {
|
||||||
|
nrf_gpio_cfg_sense_set((uint32_t)i, NRF_GPIO_PIN_SENSE_HIGH);
|
||||||
|
}
|
||||||
|
if (((high_alarms & mask) == 0) && ((low_alarms & mask) != 0)) {
|
||||||
|
nrf_gpio_cfg_sense_set((uint32_t)i, NRF_GPIO_PIN_SENSE_LOW);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void alarm_pin_pinalarm_set_alarms(bool deep_sleep, size_t n_alarms, const mp_obj_t *alarms) {
|
||||||
|
// Bitmask of wake up settings.
|
||||||
|
size_t high_count = 0;
|
||||||
|
size_t low_count = 0;
|
||||||
|
int pin_number = -1;
|
||||||
|
|
||||||
|
for (size_t i = 0; i < n_alarms; i++) {
|
||||||
|
if (!mp_obj_is_type(alarms[i], &alarm_pin_pinalarm_type)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
alarm_pin_pinalarm_obj_t *alarm = MP_OBJ_TO_PTR(alarms[i]);
|
||||||
|
|
||||||
|
pin_number = alarm->pin->number;
|
||||||
|
//dbg_printf("alarm_pin_pinalarm_set_alarms(pin#=%d, val=%d, pull=%d)\r\n", pin_number, alarm->value, alarm->pull);
|
||||||
|
if (alarm->value) {
|
||||||
|
high_alarms |= 1ull << pin_number;
|
||||||
|
high_count++;
|
||||||
|
} else {
|
||||||
|
low_alarms |= 1ull << pin_number;
|
||||||
|
low_count++;
|
||||||
|
}
|
||||||
|
if (alarm->pull) {
|
||||||
|
pull_pins |= 1ull << pin_number;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (pin_number != -1) {
|
||||||
|
if (!deep_sleep) {
|
||||||
|
configure_pins_for_sleep();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// we don't setup gpio HW here but do them in
|
||||||
|
// alarm_pin_pinalarm_prepare_for_deep_sleep() below
|
||||||
|
reset_reason_saved = 0;
|
||||||
|
pins_configured = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
//dbg_printf("alarm_pin_pinalarm_set_alarms() no valid pins\r\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void alarm_pin_pinalarm_prepare_for_deep_sleep(void) {
|
||||||
|
if (!pins_configured) {
|
||||||
|
configure_pins_for_sleep();
|
||||||
|
pins_configured = true;
|
||||||
|
#ifdef NRF_DEBUG_PRINT
|
||||||
|
//dbg_dump_GPIOregs();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,41 @@
|
||||||
|
/*
|
||||||
|
* This file is part of the MicroPython project, http://micropython.org/
|
||||||
|
*
|
||||||
|
* The MIT License (MIT)
|
||||||
|
*
|
||||||
|
* Copyright (c) 2021 Junji Sakai
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in
|
||||||
|
* all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
* THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "py/obj.h"
|
||||||
|
#include "py/objtuple.h"
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
mp_obj_base_t base;
|
||||||
|
mcu_pin_obj_t *pin;
|
||||||
|
bool value;
|
||||||
|
bool pull;
|
||||||
|
} alarm_pin_pinalarm_obj_t;
|
||||||
|
|
||||||
|
void alarm_pin_pinalarm_reset(void);
|
||||||
|
void alarm_pin_pinalarm_set_alarms(bool deep_sleep, size_t n_alarms, const mp_obj_t *alarms);
|
||||||
|
void alarm_pin_pinalarm_prepare_for_deep_sleep(void);
|
||||||
|
mp_obj_t alarm_pin_pinalarm_get_wakeup_alarm(size_t n_alarms, const mp_obj_t *alarms);
|
||||||
|
bool alarm_pin_pinalarm_woke_us_up(void);
|
|
@ -0,0 +1,102 @@
|
||||||
|
/*
|
||||||
|
* This file is part of the MicroPython project, http://micropython.org/
|
||||||
|
*
|
||||||
|
* The MIT License (MIT)
|
||||||
|
*
|
||||||
|
* Copyright (c) 2020 Dan Halbert for Adafruit Industries
|
||||||
|
* Copyright (c) 2021 Junji Sakai
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in
|
||||||
|
* all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
* THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "py/runtime.h"
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
#include "common-hal/alarm/__init__.h"
|
||||||
|
#include "shared-bindings/alarm/time/TimeAlarm.h"
|
||||||
|
#include "shared-bindings/time/__init__.h"
|
||||||
|
|
||||||
|
void common_hal_alarm_time_timealarm_construct(alarm_time_timealarm_obj_t *self, mp_float_t monotonic_time) {
|
||||||
|
self->monotonic_time = monotonic_time;
|
||||||
|
}
|
||||||
|
|
||||||
|
mp_float_t common_hal_alarm_time_timealarm_get_monotonic_time(alarm_time_timealarm_obj_t *self) {
|
||||||
|
return self->monotonic_time;
|
||||||
|
}
|
||||||
|
|
||||||
|
mp_obj_t alarm_time_timealarm_get_wakeup_alarm(size_t n_alarms, const mp_obj_t *alarms) {
|
||||||
|
// First, check to see if we match
|
||||||
|
for (size_t i = 0; i < n_alarms; i++) {
|
||||||
|
if (mp_obj_is_type(alarms[i], &alarm_time_timealarm_type)) {
|
||||||
|
return alarms[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
alarm_time_timealarm_obj_t *timer = m_new_obj(alarm_time_timealarm_obj_t);
|
||||||
|
timer->base.type = &alarm_time_timealarm_type;
|
||||||
|
// TODO: Set monotonic_time based on the RTC state.
|
||||||
|
timer->monotonic_time = 0.0f;
|
||||||
|
return timer;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool alarm_time_timealarm_woke_us_up(void) {
|
||||||
|
return sleepmem_wakeup_event == SLEEPMEM_WAKEUP_BY_TIMER;
|
||||||
|
}
|
||||||
|
|
||||||
|
int64_t wakeup_time_saved =0;
|
||||||
|
|
||||||
|
int64_t alarm_time_timealarm_get_wakeup_timediff_ms(void) {
|
||||||
|
if (wakeup_time_saved == 0) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
return wakeup_time_saved - common_hal_time_monotonic_ms();
|
||||||
|
}
|
||||||
|
|
||||||
|
void alarm_time_timealarm_clear_wakeup_time(void) {
|
||||||
|
wakeup_time_saved = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void alarm_time_timealarm_reset(void) {
|
||||||
|
port_disable_interrupt_after_ticks_ch(1);
|
||||||
|
wakeup_time_saved = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void alarm_time_timealarm_set_alarms(bool deep_sleep, size_t n_alarms, const mp_obj_t *alarms) {
|
||||||
|
bool timealarm_set = false;
|
||||||
|
alarm_time_timealarm_obj_t *timealarm = MP_OBJ_NULL;
|
||||||
|
wakeup_time_saved = 0;
|
||||||
|
|
||||||
|
for (size_t i = 0; i < n_alarms; i++) {
|
||||||
|
if (!mp_obj_is_type(alarms[i], &alarm_time_timealarm_type)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (timealarm_set) {
|
||||||
|
mp_raise_ValueError(translate("Only one alarm.time alarm can be set."));
|
||||||
|
}
|
||||||
|
timealarm = MP_OBJ_TO_PTR(alarms[i]);
|
||||||
|
timealarm_set = true;
|
||||||
|
}
|
||||||
|
if (!timealarm_set) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
wakeup_time_saved = (int64_t)(timealarm->monotonic_time * 1000.0f);
|
||||||
|
}
|
||||||
|
|
||||||
|
void alarm_time_timealarm_prepare_for_deep_sleep(void) {
|
||||||
|
}
|
|
@ -0,0 +1,50 @@
|
||||||
|
/*
|
||||||
|
* This file is part of the MicroPython project, http://micropython.org/
|
||||||
|
*
|
||||||
|
* The MIT License (MIT)
|
||||||
|
*
|
||||||
|
* Copyright (c) 2021 Junji Sakai
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in
|
||||||
|
* all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
* THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#include "py/obj.h"
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
mp_obj_base_t base;
|
||||||
|
mp_float_t monotonic_time; // values compatible with time.monotonic_time()
|
||||||
|
} alarm_time_timealarm_obj_t;
|
||||||
|
|
||||||
|
extern volatile int rtc_woke_up_counter;
|
||||||
|
extern void port_disable_interrupt_after_ticks_ch(uint32_t channel);
|
||||||
|
extern void port_interrupt_after_ticks_ch(uint32_t channel, uint32_t ticks);
|
||||||
|
|
||||||
|
// Find the alarm object that caused us to wake up or create an equivalent one.
|
||||||
|
mp_obj_t alarm_time_timealarm_get_wakeup_alarm(size_t n_alarms, const mp_obj_t *alarms);
|
||||||
|
// Check for the wake up alarm from pretend deep sleep.
|
||||||
|
bool alarm_time_timealarm_woke_us_up(void);
|
||||||
|
void alarm_time_timealarm_set_alarms(bool deep_sleep, size_t n_alarms, const mp_obj_t *alarms);
|
||||||
|
void alarm_time_timealarm_reset(void);
|
||||||
|
|
||||||
|
extern void alarm_time_timealarm_prepare_for_deep_sleep(void);
|
||||||
|
extern int64_t alarm_time_timealarm_get_wakeup_timediff_ms(void);
|
||||||
|
extern void alarm_time_timealarm_clear_wakeup_time(void);
|
||||||
|
extern void dbg_dump_RTCreg(void);
|
||||||
|
extern void tick_set_prescaler(uint32_t prescaler_val);
|
|
@ -0,0 +1,53 @@
|
||||||
|
/*
|
||||||
|
* This file is part of the MicroPython project, http://micropython.org/
|
||||||
|
*
|
||||||
|
* The MIT License (MIT)
|
||||||
|
*
|
||||||
|
* Copyright (c) 2020 microDev
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in
|
||||||
|
* all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
* THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "py/runtime.h"
|
||||||
|
#include "shared-bindings/alarm/touch/TouchAlarm.h"
|
||||||
|
#include "shared-bindings/microcontroller/__init__.h"
|
||||||
|
|
||||||
|
//static volatile bool woke_up = false;
|
||||||
|
|
||||||
|
void common_hal_alarm_touch_touchalarm_construct(alarm_touch_touchalarm_obj_t *self, const mcu_pin_obj_t *pin) {
|
||||||
|
mp_raise_NotImplementedError(NULL);
|
||||||
|
(void)pin;
|
||||||
|
}
|
||||||
|
|
||||||
|
mp_obj_t alarm_touch_touchalarm_get_wakeup_alarm(const size_t n_alarms, const mp_obj_t *alarms) {
|
||||||
|
return mp_const_none;
|
||||||
|
}
|
||||||
|
|
||||||
|
void alarm_touch_touchalarm_set_alarm(const bool deep_sleep, const size_t n_alarms, const mp_obj_t *alarms) {
|
||||||
|
}
|
||||||
|
|
||||||
|
void alarm_touch_touchalarm_prepare_for_deep_sleep(void) {
|
||||||
|
}
|
||||||
|
|
||||||
|
bool alarm_touch_touchalarm_woke_us_up(void) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void alarm_touch_touchalarm_reset(void) {
|
||||||
|
}
|
|
@ -0,0 +1,46 @@
|
||||||
|
/*
|
||||||
|
* This file is part of the MicroPython project, http://micropython.org/
|
||||||
|
*
|
||||||
|
* The MIT License (MIT)
|
||||||
|
*
|
||||||
|
* Copyright (c) 2020 microDev
|
||||||
|
*
|
||||||
|
* 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_COMMON_HAL_ALARM_TOUCH_TOUCHALARM_H
|
||||||
|
#define MICROPY_INCLUDED_COMMON_HAL_ALARM_TOUCH_TOUCHALARM_H
|
||||||
|
|
||||||
|
#include "py/obj.h"
|
||||||
|
#include "common-hal/microcontroller/Pin.h"
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
mp_obj_base_t base;
|
||||||
|
const mcu_pin_obj_t *pin;
|
||||||
|
} alarm_touch_touchalarm_obj_t;
|
||||||
|
|
||||||
|
// Find the alarm object that caused us to wake up or create an equivalent one.
|
||||||
|
mp_obj_t alarm_touch_touchalarm_get_wakeup_alarm(const size_t n_alarms, const mp_obj_t *alarms);
|
||||||
|
// Check for the wake up alarm from pretend deep sleep.
|
||||||
|
void alarm_touch_touchalarm_set_alarm(const bool deep_sleep, const size_t n_alarms, const mp_obj_t *alarms);
|
||||||
|
void alarm_touch_touchalarm_prepare_for_deep_sleep(void);
|
||||||
|
bool alarm_touch_touchalarm_woke_us_up(void);
|
||||||
|
void alarm_touch_touchalarm_reset(void);
|
||||||
|
|
||||||
|
#endif // MICROPY_INCLUDED_COMMON_HAL_ALARM_TOUCH_TOUCHALARM_H
|
|
@ -127,5 +127,24 @@ void common_hal_mcu_processor_get_uid(uint8_t raw_id[]) {
|
||||||
}
|
}
|
||||||
|
|
||||||
mcu_reset_reason_t common_hal_mcu_processor_get_reset_reason(void) {
|
mcu_reset_reason_t common_hal_mcu_processor_get_reset_reason(void) {
|
||||||
return RESET_REASON_UNKNOWN;
|
mcu_reset_reason_t r = RESET_REASON_UNKNOWN;
|
||||||
|
if (reset_reason_saved == 0) {
|
||||||
|
r = RESET_REASON_POWER_ON;
|
||||||
|
}
|
||||||
|
else if (reset_reason_saved & POWER_RESETREAS_RESETPIN_Msk) {
|
||||||
|
r = RESET_REASON_RESET_PIN;
|
||||||
|
}
|
||||||
|
else if (reset_reason_saved & POWER_RESETREAS_DOG_Msk) {
|
||||||
|
r = RESET_REASON_WATCHDOG;
|
||||||
|
}
|
||||||
|
else if (reset_reason_saved & POWER_RESETREAS_SREQ_Msk) {
|
||||||
|
r = RESET_REASON_SOFTWARE;
|
||||||
|
}
|
||||||
|
else if ((reset_reason_saved & POWER_RESETREAS_OFF_Msk) ||
|
||||||
|
(reset_reason_saved & POWER_RESETREAS_LPCOMP_Msk) ||
|
||||||
|
(reset_reason_saved & POWER_RESETREAS_NFC_Msk) ||
|
||||||
|
(reset_reason_saved & POWER_RESETREAS_VBUS_Msk)) {
|
||||||
|
r = RESET_REASON_DEEP_SLEEP_ALARM;
|
||||||
|
}
|
||||||
|
return r;
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,4 +36,6 @@ typedef struct {
|
||||||
// Stores no state currently.
|
// Stores no state currently.
|
||||||
} mcu_processor_obj_t;
|
} mcu_processor_obj_t;
|
||||||
|
|
||||||
|
extern uint32_t reset_reason_saved;
|
||||||
|
|
||||||
#endif // MICROPY_INCLUDED_NRF_COMMON_HAL_MICROCONTROLLER_PROCESSOR_H
|
#endif // MICROPY_INCLUDED_NRF_COMMON_HAL_MICROCONTROLLER_PROCESSOR_H
|
||||||
|
|
|
@ -46,6 +46,9 @@ CIRCUITPY_FRAMEBUFFERIO ?= 1
|
||||||
CIRCUITPY_COUNTIO ?= 1
|
CIRCUITPY_COUNTIO ?= 1
|
||||||
CIRCUITPY_WATCHDOG ?= 1
|
CIRCUITPY_WATCHDOG ?= 1
|
||||||
|
|
||||||
|
# Sleep and Wakeup
|
||||||
|
CIRCUITPY_ALARM ?= 1
|
||||||
|
|
||||||
# nRF52840-specific
|
# nRF52840-specific
|
||||||
|
|
||||||
ifeq ($(MCU_CHIP),nrf52840)
|
ifeq ($(MCU_CHIP),nrf52840)
|
||||||
|
|
|
@ -116,7 +116,7 @@
|
||||||
|
|
||||||
// GPIO interrupt
|
// GPIO interrupt
|
||||||
#define NRFX_GPIOTE_ENABLED 1
|
#define NRFX_GPIOTE_ENABLED 1
|
||||||
#define NRFX_GPIOTE_CONFIG_NUM_OF_LOW_POWER_EVENTS 1
|
#define NRFX_GPIOTE_CONFIG_NUM_OF_LOW_POWER_EVENTS 2
|
||||||
#define NRFX_GPIOTE_CONFIG_IRQ_PRIORITY 7
|
#define NRFX_GPIOTE_CONFIG_IRQ_PRIORITY 7
|
||||||
|
|
||||||
// NVM controller
|
// NVM controller
|
||||||
|
|
|
@ -0,0 +1,234 @@
|
||||||
|
/*
|
||||||
|
* This file is part of the MicroPython project, http://micropython.org/
|
||||||
|
*
|
||||||
|
* The MIT License (MIT)
|
||||||
|
*
|
||||||
|
* Copyright (c) 2021 Jun2Sak
|
||||||
|
*
|
||||||
|
* 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 <stdio.h>
|
||||||
|
#include <stdarg.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#ifdef NRF_DEBUG_PRINT
|
||||||
|
|
||||||
|
#define DEBUG_UART_TXPIN 26
|
||||||
|
#define DEBUG_UART_RXPIN 15
|
||||||
|
|
||||||
|
#include "nrfx.h"
|
||||||
|
#include "nrf_uart.h"
|
||||||
|
#include "nrf_gpio.h"
|
||||||
|
#include "nrf_rtc.h"
|
||||||
|
#include "nrfx_uarte.h"
|
||||||
|
#include "nrfx_rtc.h"
|
||||||
|
#include "supervisor/serial.h" // dbg_printf()
|
||||||
|
#include "shared-bindings/microcontroller/Processor.h"
|
||||||
|
#include "common-hal/alarm/__init__.h"
|
||||||
|
|
||||||
|
extern const nrfx_rtc_t rtc_instance; // port.c
|
||||||
|
extern uint32_t reset_reason_saved;
|
||||||
|
|
||||||
|
const nrfx_uarte_t _dbg_uart_inst = NRFX_UARTE_INSTANCE(1);
|
||||||
|
static int _dbg_uart_initialized = 0;
|
||||||
|
#define DBG_PBUF_LEN 80
|
||||||
|
static char _dbg_pbuf[DBG_PBUF_LEN+1];
|
||||||
|
|
||||||
|
void _debug_uart_uninit(void) {
|
||||||
|
nrf_gpio_cfg(DEBUG_UART_TXPIN,
|
||||||
|
NRF_GPIO_PIN_DIR_INPUT,
|
||||||
|
NRF_GPIO_PIN_INPUT_DISCONNECT,
|
||||||
|
NRF_GPIO_PIN_NOPULL,
|
||||||
|
NRF_GPIO_PIN_S0S1,
|
||||||
|
NRF_GPIO_PIN_NOSENSE);
|
||||||
|
nrfx_uarte_uninit(&_dbg_uart_inst);
|
||||||
|
}
|
||||||
|
|
||||||
|
void _debug_uart_init(void) {
|
||||||
|
//if (_dbg_uart_initialized) return;
|
||||||
|
nrfx_uarte_config_t config = {
|
||||||
|
.pseltxd = DEBUG_UART_TXPIN,
|
||||||
|
.pselrxd = DEBUG_UART_RXPIN,
|
||||||
|
.pselcts = NRF_UARTE_PSEL_DISCONNECTED,
|
||||||
|
.pselrts = NRF_UARTE_PSEL_DISCONNECTED,
|
||||||
|
.p_context = NULL,
|
||||||
|
.baudrate = NRF_UART_BAUDRATE_115200,
|
||||||
|
.interrupt_priority = 7,
|
||||||
|
.hal_cfg = {
|
||||||
|
.hwfc = NRF_UARTE_HWFC_DISABLED,
|
||||||
|
.parity = NRF_UARTE_PARITY_EXCLUDED
|
||||||
|
}
|
||||||
|
};
|
||||||
|
nrfx_uarte_init(&_dbg_uart_inst, &config, NULL);
|
||||||
|
// drive config
|
||||||
|
nrf_gpio_cfg(config.pseltxd,
|
||||||
|
NRF_GPIO_PIN_DIR_OUTPUT,
|
||||||
|
NRF_GPIO_PIN_INPUT_DISCONNECT,
|
||||||
|
NRF_GPIO_PIN_PULLUP, // orig=NOPULL
|
||||||
|
NRF_GPIO_PIN_H0H1, // orig=S0S1
|
||||||
|
NRF_GPIO_PIN_NOSENSE);
|
||||||
|
_dbg_uart_initialized = 1;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
void _debug_print_substr(const char* text, uint32_t length) {
|
||||||
|
char* data = (char*)text;
|
||||||
|
int siz;
|
||||||
|
while(length != 0) {
|
||||||
|
if (length <= DBG_PBUF_LEN) {
|
||||||
|
siz = length;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
siz = DBG_PBUF_LEN;
|
||||||
|
}
|
||||||
|
memcpy(_dbg_pbuf, data, siz);
|
||||||
|
_dbg_pbuf[siz] = 0;
|
||||||
|
nrfx_uarte_tx(&_dbg_uart_inst, (uint8_t const*)_dbg_pbuf, siz);
|
||||||
|
data += siz;
|
||||||
|
length -= siz;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void _debug_uart_deinit(void) {
|
||||||
|
nrfx_uarte_uninit(&_dbg_uart_inst);
|
||||||
|
}
|
||||||
|
|
||||||
|
int dbg_printf(const char *fmt, ...) {
|
||||||
|
va_list ap;
|
||||||
|
va_start(ap, fmt);
|
||||||
|
int ret = vprintf(fmt, ap);
|
||||||
|
va_end(ap);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
void dbg_dump_RTCreg(void) {
|
||||||
|
dbg_printf("\r\nRTC2\r\n");
|
||||||
|
NRF_RTC_Type *r = rtc_instance.p_reg;
|
||||||
|
dbg_printf("PRESCALER=%08X, ", (int)r->PRESCALER);
|
||||||
|
dbg_printf("COUNTER=%08X ", (int)r->COUNTER);
|
||||||
|
dbg_printf("INTENSET=%08X ", (int)r->INTENSET);
|
||||||
|
dbg_printf("EVTENSET=%08X\r\n", (int)r->EVTENSET);
|
||||||
|
dbg_printf("EVENTS_COMPARE[0..3]=%X,%X,%X,%X ", (int)r->EVENTS_COMPARE[0], (int)r->EVENTS_COMPARE[1], (int)r->EVENTS_COMPARE[2], (int)r->EVENTS_COMPARE[3]);
|
||||||
|
dbg_printf("CC[0..3]=%08X,%08X,%08X,%08X\r\n", (int)r->CC[0], (int)r->CC[1], (int)r->CC[2], (int)r->CC[3]);
|
||||||
|
}
|
||||||
|
|
||||||
|
int dbg_check_RTCprescaler(void) {
|
||||||
|
NRF_RTC_Type *r = rtc_instance.p_reg;
|
||||||
|
if ((int)r->PRESCALER == 0) {
|
||||||
|
dbg_printf("****** PRESCALER == 0\r\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void dbg_dump_RAMreg(void) {
|
||||||
|
int i;
|
||||||
|
for(i = 0; i <= 8; ++i) {
|
||||||
|
dbg_printf(" RAM%d:%08X", i, (int)(NRF_POWER->RAM[i].POWER));
|
||||||
|
if (i==4) dbg_printf("\r\n");
|
||||||
|
}
|
||||||
|
dbg_printf("\r\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
void dbg_dump_GPIOregs(void) {
|
||||||
|
int i, port, col;
|
||||||
|
|
||||||
|
NRF_GPIO_Type *gpio[] = { NRF_P0, NRF_P1 };
|
||||||
|
const char cnf_pull_chr[] = "-D*U"; // pull down, pull up
|
||||||
|
const char cnf_sense_chr[] = "-?HL"; // sense high, sense low
|
||||||
|
for(port=0, col=0; port<=1; ++port) {
|
||||||
|
for(i=0; i<32; ++i) {
|
||||||
|
uint32_t cnf = gpio[port]->PIN_CNF[i];
|
||||||
|
if (cnf != 0x0002) { // changed from default value
|
||||||
|
dbg_printf("[%d_%02d]:%c%c%c%d%c ", port, i,
|
||||||
|
(cnf & 1) ? 'O' : 'I', // output, input
|
||||||
|
(cnf & 2) ? 'd' : 'c', // disconnected, connected
|
||||||
|
cnf_pull_chr[(cnf >> 2) & 3],
|
||||||
|
(int)((cnf >> 8) & 7), // drive config 0-7
|
||||||
|
cnf_sense_chr[(cnf >> 16) & 3]);
|
||||||
|
if (++col >= 6) {
|
||||||
|
dbg_printf("\r\n");
|
||||||
|
col = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (col > 0) dbg_printf("\r\n");
|
||||||
|
|
||||||
|
dbg_printf("GPIOTE\r\n");
|
||||||
|
NRF_GPIOTE_Type const *reg = NRF_GPIOTE;
|
||||||
|
const char config_mode_chr[] = "-E-T"; // event, task
|
||||||
|
const char config_pol_chr[] = "-HLT"; // low-to-Hi, hi-to-Low, Toggle
|
||||||
|
const char config_outinit_chr[] = "01"; // initial value is 0 or 1
|
||||||
|
for(i=0, col=0; i<8; ++i) {
|
||||||
|
uint32_t conf = reg->CONFIG[i];
|
||||||
|
if (conf != 0) { // changed from default value
|
||||||
|
dbg_printf("CONFIG[%d]:%d_%02d,%c%c%c ", i,
|
||||||
|
(int)((conf >> 13) & 1), (int)((conf >> 8) & 0x1F),
|
||||||
|
config_mode_chr[conf & 3],
|
||||||
|
config_pol_chr[(conf >> 16) & 3],
|
||||||
|
(conf & 3) == 3 ?
|
||||||
|
config_outinit_chr[(conf >> 20) & 1] : '-');
|
||||||
|
if (++col >= 4) {
|
||||||
|
dbg_printf("\r\n");
|
||||||
|
col = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (col > 0) dbg_printf("\r\n");
|
||||||
|
for(i=0; i<8; ++i) {
|
||||||
|
dbg_printf("EVENTS_IN[%d]:%X ", i, (int)(reg->EVENTS_IN[i]));
|
||||||
|
if ((i & 3) == 3) dbg_printf("\r\n");
|
||||||
|
}
|
||||||
|
dbg_printf("EVENTS_PORT:%X INTENSET:%08X\r\n",
|
||||||
|
(int)(reg->EVENTS_PORT), (int)(reg->INTENSET));
|
||||||
|
}
|
||||||
|
|
||||||
|
void dbg_dumpQSPIreg(void) {
|
||||||
|
uint32_t r;
|
||||||
|
dbg_printf("QSPI\r\n");
|
||||||
|
r = NRF_QSPI->IFCONFIG0;
|
||||||
|
dbg_printf("IFCONFIG0 READ=%ld write=%ld ADDR=%ld DPM=%ld PPSIZE=%ld\r\n",
|
||||||
|
r & 7, (r >> 3) & 7, (r >> 6) & 1, (r >> 7) & 1, (r >> 12) & 1);
|
||||||
|
r = NRF_QSPI->IFCONFIG1;
|
||||||
|
dbg_printf("IFCONFIG1 SCKDELAY=%ld SPIMODE=%ld SCKFREQ=%ld\r\n",
|
||||||
|
r & 0xFF, (r >> 25) & 1, (r >> 28) & 0xF);
|
||||||
|
r = NRF_QSPI->STATUS;
|
||||||
|
dbg_printf("STATUS DPM=%ld READY=%ld SREG=0x%02lX\r\n",
|
||||||
|
(r >> 2) & 1, (r >> 3) & 1, (r >> 24) & 0xFF);
|
||||||
|
r = NRF_QSPI->DPMDUR;
|
||||||
|
dbg_printf("DPMDUR ENTER=%ld EXIT=%ld\r\n", r & 0xFFFF, (r >> 16) & 0xFFFF);
|
||||||
|
}
|
||||||
|
|
||||||
|
void dbg_dump_reset_reason(void) {
|
||||||
|
int reset_reason = (int)common_hal_mcu_processor_get_reset_reason();
|
||||||
|
const char* rr_str[] = {
|
||||||
|
"POWER_ON", "BROWNOUT", "SOFTWARE", "DEEPSLEEPALARM",
|
||||||
|
"RESET_PIN", "WATCHDOG", "UNKNOWN"
|
||||||
|
};
|
||||||
|
dbg_printf("reset_reason=%s\r\n", rr_str[reset_reason]);
|
||||||
|
}
|
||||||
|
|
||||||
|
#else /*!NRF_DEBUG_PRINT*/
|
||||||
|
int dbg_printf(const char *fmt, ...) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif /*!NRF_DEBUG_PRINT*/
|
|
@ -4,6 +4,7 @@
|
||||||
* The MIT License (MIT)
|
* The MIT License (MIT)
|
||||||
*
|
*
|
||||||
* Copyright (c) 2017 Scott Shawcroft for Adafruit Industries
|
* Copyright (c) 2017 Scott Shawcroft for Adafruit Industries
|
||||||
|
* Copyright (c) 2021 Junji Sakai
|
||||||
*
|
*
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
* of this software and associated documentation files (the "Software"), to deal
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
@ -51,6 +52,7 @@
|
||||||
#include "common-hal/rtc/RTC.h"
|
#include "common-hal/rtc/RTC.h"
|
||||||
#include "common-hal/neopixel_write/__init__.h"
|
#include "common-hal/neopixel_write/__init__.h"
|
||||||
#include "common-hal/watchdog/WatchDogTimer.h"
|
#include "common-hal/watchdog/WatchDogTimer.h"
|
||||||
|
#include "common-hal/alarm/__init__.h"
|
||||||
|
|
||||||
#include "shared-bindings/microcontroller/__init__.h"
|
#include "shared-bindings/microcontroller/__init__.h"
|
||||||
#include "shared-bindings/rtc/__init__.h"
|
#include "shared-bindings/rtc/__init__.h"
|
||||||
|
@ -73,9 +75,14 @@ static void power_warning_handler(void) {
|
||||||
reset_into_safe_mode(BROWNOUT);
|
reset_into_safe_mode(BROWNOUT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef NRF_DEBUG_PRINT
|
||||||
|
extern void _debug_uart_init(void);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
uint32_t reset_reason_saved = 0;
|
||||||
const nrfx_rtc_t rtc_instance = NRFX_RTC_INSTANCE(2);
|
const nrfx_rtc_t rtc_instance = NRFX_RTC_INSTANCE(2);
|
||||||
|
|
||||||
const nrfx_rtc_config_t rtc_config = {
|
nrfx_rtc_config_t rtc_config = {
|
||||||
.prescaler = RTC_FREQ_TO_PRESCALER(0x8000),
|
.prescaler = RTC_FREQ_TO_PRESCALER(0x8000),
|
||||||
.reliable = 0,
|
.reliable = 0,
|
||||||
.tick_latency = 0,
|
.tick_latency = 0,
|
||||||
|
@ -100,6 +107,12 @@ void rtc_handler(nrfx_rtc_int_type_t int_type) {
|
||||||
supervisor_tick();
|
supervisor_tick();
|
||||||
} else if (int_type == NRFX_RTC_INT_COMPARE0) {
|
} else if (int_type == NRFX_RTC_INT_COMPARE0) {
|
||||||
nrfx_rtc_cc_set(&rtc_instance, 0, 0, false);
|
nrfx_rtc_cc_set(&rtc_instance, 0, 0, false);
|
||||||
|
} else if (int_type == NRFX_RTC_INT_COMPARE1) {
|
||||||
|
// used in light sleep
|
||||||
|
#if CIRCUITPY_ALARM
|
||||||
|
sleepmem_wakeup_event = SLEEPMEM_WAKEUP_BY_TIMER;
|
||||||
|
#endif
|
||||||
|
nrfx_rtc_cc_set(&rtc_instance, 1, 0, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -124,6 +137,22 @@ void tick_init(void) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void tick_uninit(void) {
|
||||||
|
nrfx_rtc_counter_clear(&rtc_instance);
|
||||||
|
nrfx_rtc_disable(&rtc_instance);
|
||||||
|
nrfx_rtc_uninit(&rtc_instance);
|
||||||
|
}
|
||||||
|
|
||||||
|
void tick_set_prescaler(uint32_t prescaler_val) {
|
||||||
|
tick_uninit();
|
||||||
|
// update of prescaler value sometimes fails if we skip this delay..
|
||||||
|
NRFX_DELAY_US(1000);
|
||||||
|
uint16_t prescaler_saved = rtc_config.prescaler;
|
||||||
|
rtc_config.prescaler = prescaler_val;
|
||||||
|
tick_init();
|
||||||
|
rtc_config.prescaler = prescaler_saved;
|
||||||
|
}
|
||||||
|
|
||||||
safe_mode_t port_init(void) {
|
safe_mode_t port_init(void) {
|
||||||
nrf_peripherals_clocks_init();
|
nrf_peripherals_clocks_init();
|
||||||
|
|
||||||
|
@ -153,11 +182,21 @@ safe_mode_t port_init(void) {
|
||||||
analogin_init();
|
analogin_init();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
reset_reason_saved = NRF_POWER->RESETREAS;
|
||||||
|
// clear all RESET reason bits
|
||||||
|
NRF_POWER->RESETREAS = reset_reason_saved;
|
||||||
|
// clear wakeup event/pin when reset by reset-pin
|
||||||
|
if (reset_reason_saved & NRF_POWER_RESETREAS_RESETPIN_MASK) {
|
||||||
|
#if CIRCUITPY_ALARM
|
||||||
|
sleepmem_wakeup_event = SLEEPMEM_WAKEUP_BY_NONE;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
// If the board was reset by the WatchDogTimer, we may
|
// If the board was reset by the WatchDogTimer, we may
|
||||||
// need to boot into safe mode. Reset the RESETREAS bit
|
// need to boot into safe mode. Reset the RESETREAS bit
|
||||||
// for the WatchDogTimer so we don't encounter this the
|
// for the WatchDogTimer so we don't encounter this the
|
||||||
// next time we reboot.
|
// next time we reboot.
|
||||||
if (NRF_POWER->RESETREAS & POWER_RESETREAS_DOG_Msk) {
|
if (reset_reason_saved & POWER_RESETREAS_DOG_Msk) {
|
||||||
NRF_POWER->RESETREAS = POWER_RESETREAS_DOG_Msk;
|
NRF_POWER->RESETREAS = POWER_RESETREAS_DOG_Msk;
|
||||||
uint32_t usb_reg = NRF_POWER->USBREGSTATUS;
|
uint32_t usb_reg = NRF_POWER->USBREGSTATUS;
|
||||||
|
|
||||||
|
@ -219,6 +258,10 @@ void reset_port(void) {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
reset_all_pins();
|
reset_all_pins();
|
||||||
|
|
||||||
|
#ifdef NRF_DEBUG_PRINT
|
||||||
|
_debug_uart_init();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void reset_to_bootloader(void) {
|
void reset_to_bootloader(void) {
|
||||||
|
@ -295,7 +338,7 @@ void port_disable_tick(void) {
|
||||||
nrfx_rtc_tick_disable(&rtc_instance);
|
nrfx_rtc_tick_disable(&rtc_instance);
|
||||||
}
|
}
|
||||||
|
|
||||||
void port_interrupt_after_ticks(uint32_t ticks) {
|
void port_interrupt_after_ticks_ch(uint32_t channel, uint32_t ticks) {
|
||||||
uint32_t current_ticks = nrfx_rtc_counter_get(&rtc_instance);
|
uint32_t current_ticks = nrfx_rtc_counter_get(&rtc_instance);
|
||||||
uint32_t diff = 3;
|
uint32_t diff = 3;
|
||||||
if (ticks > diff) {
|
if (ticks > diff) {
|
||||||
|
@ -304,7 +347,15 @@ void port_interrupt_after_ticks(uint32_t ticks) {
|
||||||
if (diff > 0xffffff) {
|
if (diff > 0xffffff) {
|
||||||
diff = 0xffffff;
|
diff = 0xffffff;
|
||||||
}
|
}
|
||||||
nrfx_rtc_cc_set(&rtc_instance, 0, current_ticks + diff, true);
|
nrfx_rtc_cc_set(&rtc_instance, channel, current_ticks + diff, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
void port_disable_interrupt_after_ticks_ch(uint32_t channel) {
|
||||||
|
nrfx_rtc_cc_disable(&rtc_instance, channel);
|
||||||
|
}
|
||||||
|
|
||||||
|
void port_interrupt_after_ticks(uint32_t ticks) {
|
||||||
|
port_interrupt_after_ticks_ch(0, ticks);
|
||||||
}
|
}
|
||||||
|
|
||||||
void port_idle_until_interrupt(void) {
|
void port_idle_until_interrupt(void) {
|
||||||
|
@ -355,3 +406,9 @@ void HardFault_Handler(void) {
|
||||||
asm ("nop;");
|
asm ("nop;");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if CIRCUITPY_ALARM
|
||||||
|
// in case boards/xxx/board.c does not provide board_deinit()
|
||||||
|
MP_WEAK void board_deinit(void) {
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
|
@ -37,6 +37,31 @@
|
||||||
|
|
||||||
#include "supervisor/shared/external_flash/common_commands.h"
|
#include "supervisor/shared/external_flash/common_commands.h"
|
||||||
#include "supervisor/shared/external_flash/qspi_flash.h"
|
#include "supervisor/shared/external_flash/qspi_flash.h"
|
||||||
|
#ifdef NRF_DEBUG_PRINT
|
||||||
|
#include "supervisor/serial.h" // dbg_printf()
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef QSPI_FLASH_POWERDOWN
|
||||||
|
// Parameters for external QSPI Flash power-down
|
||||||
|
// for W25Q128FV,
|
||||||
|
// tDP (nCS high to Power-down mode) = 3us
|
||||||
|
// tRES (nCS high to Standby mode) = 3us
|
||||||
|
// sck_delay = max(tDP, tRES) / 62.5ns = 48 -> 50 (w/ margin)
|
||||||
|
#define DUR_DPM_ENTER 1 // tDP in (256*62.5ns) units
|
||||||
|
#define DUR_DPM_EXIT 1 // tRES in (256*62.5ns) units
|
||||||
|
#define SCK_DELAY 50 // max(tDP, tRES) in (62.5ns) units
|
||||||
|
// wait necessary just after DPM enter/exit (cut and try)
|
||||||
|
#define WAIT_AFTER_DPM_ENTER 10 // usec
|
||||||
|
#define WAIT_AFTER_DPM_EXIT 50 // usec
|
||||||
|
|
||||||
|
static int sck_delay_saved = 0;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef NRF_DEBUG_PRINT
|
||||||
|
extern void dbg_dumpQSPIreg(void);
|
||||||
|
#else
|
||||||
|
#define dbg_dumpQSPIreg(...)
|
||||||
|
#endif
|
||||||
|
|
||||||
// When USB is disconnected, disable QSPI in sleep mode to save energy
|
// When USB is disconnected, disable QSPI in sleep mode to save energy
|
||||||
void qspi_disable(void) {
|
void qspi_disable(void) {
|
||||||
|
@ -188,7 +213,11 @@ void spi_flash_init(void) {
|
||||||
.readoc = NRF_QSPI_READOC_FASTREAD,
|
.readoc = NRF_QSPI_READOC_FASTREAD,
|
||||||
.writeoc = NRF_QSPI_WRITEOC_PP,
|
.writeoc = NRF_QSPI_WRITEOC_PP,
|
||||||
.addrmode = NRF_QSPI_ADDRMODE_24BIT,
|
.addrmode = NRF_QSPI_ADDRMODE_24BIT,
|
||||||
|
#ifdef QSPI_FLASH_POWERDOWN
|
||||||
|
.dpmconfig = true
|
||||||
|
#else
|
||||||
.dpmconfig = false
|
.dpmconfig = false
|
||||||
|
#endif
|
||||||
},
|
},
|
||||||
.phy_if = {
|
.phy_if = {
|
||||||
.sck_freq = NRF_QSPI_FREQ_32MDIV16, // Start at a slow 2MHz and speed up once we know what we're talking to.
|
.sck_freq = NRF_QSPI_FREQ_32MDIV16, // Start at a slow 2MHz and speed up once we know what we're talking to.
|
||||||
|
@ -213,6 +242,13 @@ void spi_flash_init(void) {
|
||||||
|
|
||||||
// No callback for blocking API
|
// No callback for blocking API
|
||||||
nrfx_qspi_init(&qspi_cfg, NULL, NULL);
|
nrfx_qspi_init(&qspi_cfg, NULL, NULL);
|
||||||
|
|
||||||
|
#ifdef QSPI_FLASH_POWERDOWN
|
||||||
|
// If pin-reset while flash is in power-down mode,
|
||||||
|
// the flash cannot accept any commands. Send CMD_WAKE to release it.
|
||||||
|
spi_flash_write_command(CMD_WAKE, NULL, 0);
|
||||||
|
NRFX_DELAY_US(WAIT_AFTER_DPM_EXIT);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void spi_flash_init_device(const external_flash_device *device) {
|
void spi_flash_init_device(const external_flash_device *device) {
|
||||||
|
@ -236,3 +272,61 @@ void spi_flash_init_device(const external_flash_device *device) {
|
||||||
NRF_QSPI->IFCONFIG1 &= ~QSPI_IFCONFIG1_SCKFREQ_Msk;
|
NRF_QSPI->IFCONFIG1 &= ~QSPI_IFCONFIG1_SCKFREQ_Msk;
|
||||||
NRF_QSPI->IFCONFIG1 |= sckfreq << QSPI_IFCONFIG1_SCKFREQ_Pos;
|
NRF_QSPI->IFCONFIG1 |= sckfreq << QSPI_IFCONFIG1_SCKFREQ_Pos;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void qspi_flash_enter_sleep(void) {
|
||||||
|
#ifdef QSPI_FLASH_POWERDOWN
|
||||||
|
uint32_t r;
|
||||||
|
NRF_QSPI->DPMDUR =
|
||||||
|
((DUR_DPM_ENTER & 0xFFFF) << 16) | (DUR_DPM_EXIT & 0xFFFF);
|
||||||
|
// set sck_delay tempolarily
|
||||||
|
r = NRF_QSPI->IFCONFIG1;
|
||||||
|
sck_delay_saved = (r & QSPI_IFCONFIG1_SCKDELAY_Msk)
|
||||||
|
>> QSPI_IFCONFIG1_SCKDELAY_Pos;
|
||||||
|
NRF_QSPI->IFCONFIG1
|
||||||
|
= (NRF_QSPI->IFCONFIG1 & ~QSPI_IFCONFIG1_SCKDELAY_Msk)
|
||||||
|
| (SCK_DELAY << QSPI_IFCONFIG1_SCKDELAY_Pos);
|
||||||
|
|
||||||
|
// enabling IFCONFIG0.DPMENABLE here won't work.
|
||||||
|
// -> do it in spi_flash_init()
|
||||||
|
//NRF_QSPI->IFCONFIG0 |= QSPI_IFCONFIG0_DPMENABLE_Msk;
|
||||||
|
//dbg_dumpQSPIreg();
|
||||||
|
|
||||||
|
// enter deep power-down mode (DPM)
|
||||||
|
NRF_QSPI->IFCONFIG1 |= QSPI_IFCONFIG1_DPMEN_Msk;
|
||||||
|
NRFX_DELAY_US(WAIT_AFTER_DPM_ENTER);
|
||||||
|
if (!(NRF_QSPI->STATUS & QSPI_STATUS_DPM_Msk)) {
|
||||||
|
#ifdef NRF_DEBUG_PRINT
|
||||||
|
dbg_printf("qspi flash: DPM failed\r\n");
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
qspi_disable();
|
||||||
|
//dbg_dumpQSPIreg();
|
||||||
|
}
|
||||||
|
|
||||||
|
void qspi_flash_exit_sleep(void) {
|
||||||
|
qspi_enable();
|
||||||
|
|
||||||
|
#ifdef QSPI_FLASH_POWERDOWN
|
||||||
|
if (NRF_QSPI->STATUS & QSPI_STATUS_DPM_Msk) {
|
||||||
|
// exit deep power-down mode
|
||||||
|
NRF_QSPI->IFCONFIG1 &= ~QSPI_IFCONFIG1_DPMEN_Msk;
|
||||||
|
NRFX_DELAY_US(WAIT_AFTER_DPM_EXIT);
|
||||||
|
|
||||||
|
if (NRF_QSPI->STATUS & QSPI_STATUS_DPM_Msk) {
|
||||||
|
#ifdef NRF_DEBUG_PRINT
|
||||||
|
dbg_printf("qspi flash: exiting DPM failed\r\n");
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
// restore sck_delay
|
||||||
|
if (sck_delay_saved == 0) {
|
||||||
|
sck_delay_saved = 10; // default
|
||||||
|
}
|
||||||
|
NRF_QSPI->IFCONFIG1
|
||||||
|
= (NRF_QSPI->IFCONFIG1 & ~QSPI_IFCONFIG1_SCKDELAY_Msk)
|
||||||
|
| (sck_delay_saved << QSPI_IFCONFIG1_SCKDELAY_Pos);
|
||||||
|
}
|
||||||
|
//dbg_dumpQSPIreg();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
extern void qspi_flash_enter_sleep(void);
|
||||||
|
extern void qspi_flash_exit_sleep(void);
|
|
@ -244,6 +244,7 @@ const mp_obj_module_t alarm_module = {
|
||||||
};
|
};
|
||||||
|
|
||||||
extern void port_idle_until_interrupt(void);
|
extern void port_idle_until_interrupt(void);
|
||||||
|
|
||||||
MP_WEAK void common_hal_alarm_pretending_deep_sleep(void) {
|
MP_WEAK void common_hal_alarm_pretending_deep_sleep(void) {
|
||||||
port_idle_until_interrupt();
|
port_idle_until_interrupt();
|
||||||
}
|
}
|
||||||
|
|
|
@ -49,7 +49,7 @@
|
||||||
//| but the `displayio.Bitmap.dirty` method must be used to inform
|
//| but the `displayio.Bitmap.dirty` method must be used to inform
|
||||||
//| displayio when a bitmap was modified through the buffer interface.
|
//| displayio when a bitmap was modified through the buffer interface.
|
||||||
//|
|
//|
|
||||||
//| `bitmaptools.arrayblit` can also be useful to omve data efficiently
|
//| `bitmaptools.arrayblit` can also be useful to move data efficiently
|
||||||
//| into a Bitmap.
|
//| into a Bitmap.
|
||||||
//| """
|
//| """
|
||||||
//|
|
//|
|
||||||
|
|
|
@ -29,6 +29,7 @@
|
||||||
|
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
#include "py/mpconfig.h"
|
#include "py/mpconfig.h"
|
||||||
|
|
||||||
|
@ -47,4 +48,7 @@ char serial_read(void);
|
||||||
bool serial_bytes_available(void);
|
bool serial_bytes_available(void);
|
||||||
bool serial_connected(void);
|
bool serial_connected(void);
|
||||||
|
|
||||||
|
// XXX used in nrf52-sleep debug
|
||||||
|
int dbg_printf(const char *fmt, ...)__attribute__((format (printf, 1, 2)));
|
||||||
|
|
||||||
#endif // MICROPY_INCLUDED_SUPERVISOR_SERIAL_H
|
#endif // MICROPY_INCLUDED_SUPERVISOR_SERIAL_H
|
||||||
|
|
|
@ -37,6 +37,12 @@
|
||||||
|
|
||||||
#include "tusb.h"
|
#include "tusb.h"
|
||||||
|
|
||||||
|
#ifdef NRF_DEBUG_PRINT
|
||||||
|
// XXX these functions are in nrf/supervisor/debug_uart.c
|
||||||
|
extern void _debug_uart_init(void);
|
||||||
|
extern void _debug_print_substr(const char *text, uint32_t length);
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Note: DEBUG_UART currently only works on STM32,
|
* Note: DEBUG_UART currently only works on STM32,
|
||||||
* enabling on another platform will cause a crash.
|
* enabling on another platform will cause a crash.
|
||||||
|
@ -64,10 +70,17 @@ void serial_early_init(void) {
|
||||||
buf_array, true);
|
buf_array, true);
|
||||||
common_hal_busio_uart_never_reset(&debug_uart);
|
common_hal_busio_uart_never_reset(&debug_uart);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef NRF_DEBUG_PRINT
|
||||||
|
_debug_uart_init();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void serial_init(void) {
|
void serial_init(void) {
|
||||||
usb_init();
|
usb_init();
|
||||||
|
#ifdef NRF_DEBUG_PRINT
|
||||||
|
_debug_uart_init();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
bool serial_connected(void) {
|
bool serial_connected(void) {
|
||||||
|
@ -146,8 +159,14 @@ void serial_write_substring(const char *text, uint32_t length) {
|
||||||
|
|
||||||
#if defined(DEBUG_UART_TX) && defined(DEBUG_UART_RX)
|
#if defined(DEBUG_UART_TX) && defined(DEBUG_UART_RX)
|
||||||
int uart_errcode;
|
int uart_errcode;
|
||||||
|
|
||||||
common_hal_busio_uart_write(&debug_uart, (const uint8_t *)text, length, &uart_errcode);
|
common_hal_busio_uart_write(&debug_uart, (const uint8_t *)text, length, &uart_errcode);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef NRF_DEBUG_PRINT
|
||||||
|
_debug_print_substr(text, length);
|
||||||
|
#endif
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void serial_write(const char *text) {
|
void serial_write(const char *text) {
|
||||||
|
|
Loading…
Reference in New Issue