Merge branch 'adafruit:main' into main

This commit is contained in:
dronecz 2022-11-10 21:47:23 +01:00 committed by GitHub
commit a37c36c383
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
41 changed files with 2500 additions and 936 deletions

@ -1 +1 @@
Subproject commit d0a07e14adcd71a7c22bcceb16c55aadb5e0d104
Subproject commit cc93ff18c3a20b25396cb2babaee8ed33bb79528

View File

@ -116,10 +116,6 @@ msgstr "%q sedang digunakan"
msgid "%q index out of range"
msgstr "%q indeks di luar batas"
#: py/obj.c
msgid "%q indices must be integers, not %s"
msgstr "indeks %q harus bilangan bulat, bukan %s"
#: shared-module/bitbangio/SPI.c
msgid "%q init failed"
msgstr ""
@ -2372,10 +2368,6 @@ msgstr ""
msgid "WatchDogTimer.mode cannot be changed once set to WatchDogMode.RESET"
msgstr ""
#: shared-bindings/watchdog/WatchDogTimer.c
msgid "WatchDogTimer.timeout must be greater than 0"
msgstr ""
#: py/builtinhelp.c
#, c-format
msgid ""
@ -3197,10 +3189,6 @@ msgstr ""
msgid "index out of range"
msgstr "index keluar dari jangkauan"
#: py/obj.c
msgid "indices must be integers"
msgstr ""
#: extmod/ulab/code/ndarray.c
msgid "indices must be integers, slices, or Boolean lists"
msgstr ""
@ -3617,10 +3605,6 @@ msgstr ""
msgid "no such attribute"
msgstr ""
#: shared-bindings/usb_hid/__init__.c
msgid "non-Device in %q"
msgstr ""
#: ports/espressif/common-hal/_bleio/Connection.c
#: ports/nrf/common-hal/_bleio/Connection.c
msgid "non-UUID found in service_uuids_whitelist"
@ -3746,10 +3730,20 @@ msgid "offset out of bounds"
msgstr "modul tidak ditemukan"
#: ports/nrf/common-hal/audiobusio/PDMIn.c
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only bit_depth=16 is supported"
msgstr ""
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only mono is supported"
msgstr ""
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only oversample=64 is supported"
msgstr ""
#: ports/nrf/common-hal/audiobusio/PDMIn.c
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only sample_rate=16000 is supported"
msgstr ""
@ -3895,11 +3889,6 @@ msgstr ""
msgid "relative import"
msgstr "relative import"
#: py/obj.c
#, c-format
msgid "requested length %d but object has length %d"
msgstr ""
#: extmod/ulab/code/ndarray_operators.c
msgid "results cannot be cast to specified type"
msgstr ""
@ -3963,10 +3952,6 @@ msgstr ""
msgid "sign not allowed with integer format specifier 'c'"
msgstr ""
#: py/objstr.c
msgid "single '}' encountered in format string"
msgstr ""
#: extmod/ulab/code/ulab_tools.c
msgid "size is defined for ndarrays only"
msgstr ""
@ -4079,10 +4064,6 @@ msgstr "sintaksis error pada JSON"
msgid "syntax error in uctypes descriptor"
msgstr "sintaksis error pada pendeskripsi uctypes"
#: shared-bindings/touchio/TouchIn.c
msgid "threshold must be in the range 0-65536"
msgstr ""
#: shared-bindings/time/__init__.c
msgid "time.struct_time() takes a 9-sequence"
msgstr ""
@ -4094,10 +4075,6 @@ msgstr ""
msgid "timeout duration exceeded the maximum supported value"
msgstr ""
#: shared-bindings/busio/UART.c
msgid "timeout must be 0.0-100.0 seconds"
msgstr ""
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "timeout must be < 655.35 secs"
msgstr ""
@ -4151,10 +4128,6 @@ msgstr ""
msgid "trapz is defined for 1D iterables"
msgstr ""
#: py/obj.c
msgid "tuple/list has wrong length"
msgstr ""
#: ports/espressif/common-hal/canio/CAN.c
#, c-format
msgid "twai_driver_install returned esp-idf error #%d"
@ -4233,7 +4206,8 @@ msgid "unknown type '%q'"
msgstr ""
#: py/objstr.c
msgid "unmatched '{' in format"
#, c-format
msgid "unmatched '%c' in format"
msgstr ""
#: py/objtype.c py/runtime.c
@ -4304,10 +4278,6 @@ msgstr ""
msgid "watchdog not initialized"
msgstr ""
#: shared-bindings/watchdog/WatchDogTimer.c
msgid "watchdog timeout must be greater than 0"
msgstr ""
#: shared-bindings/is31fl3741/FrameBuffer.c
msgid "width must be greater than zero"
msgstr ""
@ -4395,6 +4365,9 @@ msgstr "zi harus berjenis float"
msgid "zi must be of shape (n_section, 2)"
msgstr "Zi harus berbentuk (n_section, 2)"
#~ msgid "%q indices must be integers, not %s"
#~ msgstr "indeks %q harus bilangan bulat, bukan %s"
#~ msgid "To exit, please reset the board without "
#~ msgstr "Untuk keluar, silahkan reset board tanpa "

View File

@ -3698,10 +3698,20 @@ msgid "offset out of bounds"
msgstr ""
#: ports/nrf/common-hal/audiobusio/PDMIn.c
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only bit_depth=16 is supported"
msgstr ""
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only mono is supported"
msgstr ""
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only oversample=64 is supported"
msgstr ""
#: ports/nrf/common-hal/audiobusio/PDMIn.c
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only sample_rate=16000 is supported"
msgstr ""

View File

@ -117,10 +117,6 @@ msgstr "%q se právě používá"
msgid "%q index out of range"
msgstr "Index %q je mimo rozsah"
#: py/obj.c
msgid "%q indices must be integers, not %s"
msgstr "Indexy %q musí být celá čísla, nikoli %s"
#: shared-module/bitbangio/SPI.c
msgid "%q init failed"
msgstr "Inicializace %q selhala"
@ -2359,10 +2355,6 @@ msgstr ""
msgid "WatchDogTimer.mode cannot be changed once set to WatchDogMode.RESET"
msgstr ""
#: shared-bindings/watchdog/WatchDogTimer.c
msgid "WatchDogTimer.timeout must be greater than 0"
msgstr ""
#: py/builtinhelp.c
#, c-format
msgid ""
@ -3184,10 +3176,6 @@ msgstr ""
msgid "index out of range"
msgstr ""
#: py/obj.c
msgid "indices must be integers"
msgstr ""
#: extmod/ulab/code/ndarray.c
msgid "indices must be integers, slices, or Boolean lists"
msgstr ""
@ -3604,10 +3592,6 @@ msgstr ""
msgid "no such attribute"
msgstr ""
#: shared-bindings/usb_hid/__init__.c
msgid "non-Device in %q"
msgstr ""
#: ports/espressif/common-hal/_bleio/Connection.c
#: ports/nrf/common-hal/_bleio/Connection.c
msgid "non-UUID found in service_uuids_whitelist"
@ -3732,10 +3716,20 @@ msgid "offset out of bounds"
msgstr ""
#: ports/nrf/common-hal/audiobusio/PDMIn.c
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only bit_depth=16 is supported"
msgstr ""
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only mono is supported"
msgstr ""
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only oversample=64 is supported"
msgstr ""
#: ports/nrf/common-hal/audiobusio/PDMIn.c
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only sample_rate=16000 is supported"
msgstr ""
@ -3881,11 +3875,6 @@ msgstr ""
msgid "relative import"
msgstr ""
#: py/obj.c
#, c-format
msgid "requested length %d but object has length %d"
msgstr ""
#: extmod/ulab/code/ndarray_operators.c
msgid "results cannot be cast to specified type"
msgstr ""
@ -3949,10 +3938,6 @@ msgstr ""
msgid "sign not allowed with integer format specifier 'c'"
msgstr ""
#: py/objstr.c
msgid "single '}' encountered in format string"
msgstr ""
#: extmod/ulab/code/ulab_tools.c
msgid "size is defined for ndarrays only"
msgstr ""
@ -4065,10 +4050,6 @@ msgstr ""
msgid "syntax error in uctypes descriptor"
msgstr ""
#: shared-bindings/touchio/TouchIn.c
msgid "threshold must be in the range 0-65536"
msgstr ""
#: shared-bindings/time/__init__.c
msgid "time.struct_time() takes a 9-sequence"
msgstr ""
@ -4080,10 +4061,6 @@ msgstr ""
msgid "timeout duration exceeded the maximum supported value"
msgstr ""
#: shared-bindings/busio/UART.c
msgid "timeout must be 0.0-100.0 seconds"
msgstr ""
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "timeout must be < 655.35 secs"
msgstr ""
@ -4137,10 +4114,6 @@ msgstr ""
msgid "trapz is defined for 1D iterables"
msgstr ""
#: py/obj.c
msgid "tuple/list has wrong length"
msgstr ""
#: ports/espressif/common-hal/canio/CAN.c
#, c-format
msgid "twai_driver_install returned esp-idf error #%d"
@ -4219,7 +4192,8 @@ msgid "unknown type '%q'"
msgstr ""
#: py/objstr.c
msgid "unmatched '{' in format"
#, c-format
msgid "unmatched '%c' in format"
msgstr ""
#: py/objtype.c py/runtime.c
@ -4290,10 +4264,6 @@ msgstr ""
msgid "watchdog not initialized"
msgstr ""
#: shared-bindings/watchdog/WatchDogTimer.c
msgid "watchdog timeout must be greater than 0"
msgstr ""
#: shared-bindings/is31fl3741/FrameBuffer.c
msgid "width must be greater than zero"
msgstr ""
@ -4381,6 +4351,9 @@ msgstr ""
msgid "zi must be of shape (n_section, 2)"
msgstr ""
#~ msgid "%q indices must be integers, not %s"
#~ msgstr "Indexy %q musí být celá čísla, nikoli %s"
#~ msgid "Firmware image is invalid"
#~ msgstr "Obraz firmwaru je nevalidní"

View File

@ -6,7 +6,7 @@ msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-01-04 12:55-0600\n"
"PO-Revision-Date: 2022-10-13 06:43+0000\n"
"PO-Revision-Date: 2022-11-09 19:20+0000\n"
"Last-Translator: Ettore Atalan <atalanttore@googlemail.com>\n"
"Language: de_DE\n"
"MIME-Version: 1.0\n"
@ -38,7 +38,7 @@ msgid ""
"https://github.com/adafruit/circuitpython/issues\n"
msgstr ""
"\n"
"Bitte melden Sie ein Problem mit dem Inhalt Ihres CIRCUITPY-Laufwerks unter\n"
"Bitte melde ein Problem mit dem Inhalt Ihres CIRCUITPY-Laufwerks unter\n"
"https://github.com/adafruit/circuitpython/issues\n"
#: py/obj.c
@ -69,7 +69,7 @@ msgstr "%%c erwartet Int oder Char"
#: main.c
#, c-format
msgid "%02X"
msgstr ""
msgstr "%02X"
#: shared-bindings/rgbmatrix/RGBMatrix.c
#, c-format
@ -118,10 +118,6 @@ msgstr "%q in Benutzung"
msgid "%q index out of range"
msgstr "Der Index %q befindet sich außerhalb des Bereiches"
#: py/obj.c
msgid "%q indices must be integers, not %s"
msgstr "%q Indizes müssen Integer sein, nicht %s"
#: shared-module/bitbangio/SPI.c
msgid "%q init failed"
msgstr "%q Initialisierung ist gescheitert"
@ -559,8 +555,8 @@ msgid ""
"Auto-reload is on. Simply save files over USB to run them or enter REPL to "
"disable.\n"
msgstr ""
"Automatisches Neuladen ist aktiv. Speichere Dateien über USB um sie "
"auszuführen oder verbinde dich mit der REPL zum Deaktivieren.\n"
"Automatisches Neuladen ist aktiviert. Speichere Dateien einfach über USB, um "
"sie auszuführen, oder gib REPL ein, um sie zu deaktivieren.\n"
#: ports/espressif/common-hal/canio/CAN.c
msgid "Baudrate not supported by peripheral"
@ -600,7 +596,7 @@ msgstr "Sowohl RX als auch TX sind zu Flusssteuerung erforderlich"
#: ports/atmel-samd/boards/circuitplayground_express_displayio/mpconfigboard.h
#: ports/atmel-samd/boards/meowmeow/mpconfigboard.h
msgid "Both buttons were pressed at start up.\n"
msgstr ""
msgstr "Beim Starten wurden beide Tasten gedrückt.\n"
#: ports/atmel-samd/common-hal/rotaryio/IncrementalEncoder.c
msgid "Both pins must support hardware interrupts"
@ -670,7 +666,7 @@ msgstr "Bus-Pin %d wird schon benutzt"
#: ports/espressif/boards/m5stack_core_basic/mpconfigboard.h
#: ports/espressif/boards/m5stack_core_fire/mpconfigboard.h
msgid "Button A was pressed at start up.\n"
msgstr ""
msgstr "Beim Starten wurde Taste A gedrückt.\n"
#: shared-bindings/_bleio/UUID.c
msgid "Byte buffer must be 16 bytes."
@ -824,8 +820,8 @@ msgid ""
"Connection has been disconnected and can no longer be used. Create a new "
"connection."
msgstr ""
"Die Verbindung wurde getrennt und kann nicht mehr verwendet werden. "
"Erstellen Sie eine neue Verbindung."
"Die Verbindung wurde getrennt und kann nicht mehr verwendet werden. Erstelle "
"eine neue Verbindung."
#: py/persistentcode.c
msgid "Corrupt .mpy file"
@ -861,7 +857,7 @@ msgstr "DAC-Kanal-Initialisierungsfehler"
#: ports/stm/common-hal/analogio/AnalogOut.c
msgid "DAC Device Init Error"
msgstr "DAC Device Initialisierungs-Fehler"
msgstr "DAC-Gerät-Initialisierungsfehler"
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
msgid "DAC already in use"
@ -960,7 +956,7 @@ msgstr "Erwartete ein %q oder %q"
#: shared-bindings/alarm/__init__.c
msgid "Expected an %q"
msgstr ""
msgstr "Erwartet ein %q"
#: ports/espressif/common-hal/_bleio/Adapter.c
#: ports/nrf/common-hal/_bleio/Adapter.c
@ -1086,7 +1082,7 @@ msgstr "Die Funktion erwartet, dass der 'lock'-Befehl zuvor ausgeführt wurde"
#: ports/cxd56/common-hal/gnss/GNSS.c
msgid "GNSS init"
msgstr "GNSS Initialisierung"
msgstr "GNSS-Initialisierung"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c
msgid "Generic Failure"
@ -1109,7 +1105,7 @@ msgstr "Hald-Duplex SPI is tnicht implementiert"
#: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/canio/CAN.c
#: ports/stm/common-hal/sdioio/SDCard.c
msgid "Hardware busy, try alternative pins"
msgstr "Hardware beschäftigt, versuchen Sie alternative Pins"
msgstr "Hardware beschäftigt, versuche alternative Pins"
#: ports/mimxrt10xx/common-hal/busio/UART.c ports/stm/common-hal/busio/UART.c
msgid "Hardware in use, try alternative pins"
@ -1121,7 +1117,7 @@ msgstr "Lese/Schreibe-operation an geschlossener Datei"
#: ports/stm/common-hal/busio/I2C.c
msgid "I2C init error"
msgstr "I2C Initialisierungsfehler"
msgstr "I2C-Initialisierungsfehler"
#: ports/raspberrypi/common-hal/busio/I2C.c
#: ports/raspberrypi/common-hal/i2ctarget/I2CTarget.c
@ -1146,8 +1142,8 @@ msgid ""
"Incompatible .mpy file. Please update all .mpy files. See http://adafru.it/"
"mpy-update for more info."
msgstr ""
"Inkompatible mpy-Datei. Bitte aktualisieren Sie alle mpy-Dateien. Siehe "
"http://adafru.it/mpy-update für weitere Informationen."
"Inkompatible .mpy-Datei. Bitte aktualisiere alle .mpy-Dateien. Siehe http://"
"adafru.it/mpy-update für weitere Informationen."
#: shared-bindings/_pew/PewPew.c
msgid "Incorrect buffer size"
@ -1783,8 +1779,8 @@ msgid ""
"constructor"
msgstr ""
"Pinbelegung verwendet %d Bytes pro Element, was mehr als die idealen %d "
"Bytes verbraucht. Wenn dies nicht vermieden werden kann, übergeben Sie "
"allow_inefficient = True an den Konstruktor"
"Bytes verbraucht. Wenn dies nicht vermieden werden kann, übergib "
"allow_inefficient=True an den Konstruktor"
#: ports/raspberrypi/common-hal/imagecapture/ParallelImageCapture.c
msgid "Pins must be sequential"
@ -1923,7 +1919,7 @@ msgstr "SD-Card CSD-Format nicht unterstützt"
#: ports/cxd56/common-hal/sdioio/SDCard.c
msgid "SDCard init"
msgstr "SDCard Initialisierung"
msgstr "SDCard-Initialisierung"
#: ports/stm/common-hal/sdioio/SDCard.c
#, c-format
@ -1941,7 +1937,7 @@ msgstr "SPI-Konfiguration fehlgeschlagen"
#: ports/stm/common-hal/busio/SPI.c
msgid "SPI init error"
msgstr "SPI Initialisierungsfehler"
msgstr "SPI-Initialisierungsfehler"
#: ports/raspberrypi/common-hal/busio/SPI.c
msgid "SPI peripheral in use"
@ -1958,7 +1954,7 @@ msgstr "Maßstabs-Abmeßungen müssen durch 3 teilbar sein"
#: ports/espressif/common-hal/_bleio/Adapter.c
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Scan already in progess. Stop with stop_scan."
msgstr "Scannen Sie bereits in Bearbeitung. Stoppen Sie mit stop_scan."
msgstr "Scannen bereits in Bearbeitung. Stoppe mit stop_scan."
#: ports/atmel-samd/common-hal/audiobusio/I2SOut.c
#: ports/atmel-samd/common-hal/audiobusio/PDMIn.c
@ -2000,7 +1996,7 @@ msgstr "Quell- und Zielbuffer müssen gleich lang sein"
#: shared-bindings/paralleldisplay/ParallelBus.c
msgid "Specify exactly one of data0 or data_pins"
msgstr "Geben Sie genau einen von data0 oder data_pins an"
msgstr "Gib genau einen von data0 oder data_pins an"
#: extmod/modure.c
msgid "Splitting with sub-captures"
@ -2016,11 +2012,11 @@ msgstr "Stereo rechts muss sich auf PWM-Kanal B befinden"
#: ports/mimxrt10xx/common-hal/busio/UART.c ports/stm/common-hal/busio/UART.c
msgid "Supply at least one UART pin"
msgstr "Geben Sie mindestens einen UART-Pin an"
msgstr "Gib mindestens einen UART-Pin an"
#: shared-bindings/alarm/time/TimeAlarm.c
msgid "Supply one of monotonic_time or epoch_time"
msgstr "Geben Sie entweder monotonic_time oder epoch_time an"
msgstr "Gib entweder monotonic_time oder epoch_time an"
#: shared-bindings/gnss/GNSS.c
msgid "System entry must be gnss.SatelliteSystem"
@ -2032,7 +2028,7 @@ msgstr "Zeitüberschreitung beim Auslesen der Temperatur"
#: supervisor/shared/safe_mode.c
msgid "The BOOT button was pressed at start up.\n"
msgstr ""
msgstr "Beim Starten wurde die Taste BOOT gedrückt.\n"
#: supervisor/shared/safe_mode.c
msgid ""
@ -2040,15 +2036,15 @@ msgid ""
"Increase the stack size if you know how. If not:"
msgstr ""
"Der Heap von CircuitPython wurde beschädigt, weil der Stack zu klein war.\n"
"Vergrößern Sie den Stack, wenn Sie wissen, wie. Wenn nicht:"
"Vergrößere den Stack, wenn du weißt, wie. Wenn nicht:"
#: ports/espressif/boards/adafruit_feather_esp32_v2/mpconfigboard.h
msgid "The SW38 button was pressed at start up.\n"
msgstr ""
msgstr "Beim Starten wurde die Taste SW38 gedrückt.\n"
#: ports/espressif/boards/hardkernel_odroid_go/mpconfigboard.h
msgid "The VOLUME button was pressed at start up.\n"
msgstr ""
msgstr "Beim Starten wurde die Taste VOLUME gedrückt.\n"
#: supervisor/shared/safe_mode.c
msgid ""
@ -2056,15 +2052,15 @@ msgid ""
"exit safe mode."
msgstr ""
"Das Modul `microcontroller` wurde zum Booten in den abgesicherten Modus "
"verwendet. Drücken Sie Reset, um den abgesicherten Modus zu verlassen."
"verwendet. Drücke Reset, um den abgesicherten Modus zu verlassen."
#: ports/espressif/boards/m5stack_atom_lite/mpconfigboard.h
msgid "The central button was pressed at start up.\n"
msgstr ""
msgstr "Beim Starten wurde die zentrale Taste gedrückt.\n"
#: ports/nrf/boards/aramcon2_badge/mpconfigboard.h
msgid "The left button was pressed at start up.\n"
msgstr ""
msgstr "Beim Starten wurde die linke Taste gedrückt.\n"
#: shared-bindings/rgbmatrix/RGBMatrix.c
msgid "The length of rgb_pins must be 6, 12, 18, 24, or 30"
@ -2076,10 +2072,9 @@ msgid ""
"enough power for the whole circuit and press reset (after ejecting "
"CIRCUITPY)."
msgstr ""
"Der Mikrocontroller hatte einen Stromausfall. Vergewissern Sie sich, dass "
"die\n"
"Stromversorgung genügend Strom für die gesamte Schaltung liefert und drücken "
"Sie Reset (nach dem Auswerfen von CIRCUITPY)."
"Der Mikrocontroller hatte einen Stromausfall. Vergewisser dich, dass die\n"
"Stromversorgung genügend Strom für die gesamte Schaltung liefert und\n"
"drücke Reset (nach dem Auswerfen von CIRCUITPY)."
#: shared-module/audiomixer/MixerVoice.c
msgid "The sample's bits_per_sample does not match the mixer's"
@ -2137,6 +2132,8 @@ msgstr ""
#: supervisor/shared/safe_mode.c
msgid "To exit, please reset the board without requesting safe mode."
msgstr ""
"Zum Beenden setze bitte das Board zurück, ohne den abgesicherten Modus "
"aufzurufen."
#: ports/atmel-samd/common-hal/audiobusio/I2SOut.c
msgid "Too many channels in sample"
@ -2180,11 +2177,11 @@ msgstr "UART wird de-initialisiert"
#: ports/atmel-samd/common-hal/busio/UART.c ports/cxd56/common-hal/busio/UART.c
#: ports/espressif/common-hal/busio/UART.c ports/stm/common-hal/busio/UART.c
msgid "UART init"
msgstr "UART Initialisierung"
msgstr "UART-Initialisierung"
#: ports/stm/common-hal/busio/UART.c
msgid "UART re-init"
msgstr "UART wird wieder Initialisiert"
msgstr "UART wird erneut Initialisiert"
#: ports/stm/common-hal/busio/UART.c
msgid "UART write"
@ -2192,7 +2189,7 @@ msgstr "UART wird geschrieben"
#: main.c
msgid "UID:"
msgstr ""
msgstr "UID:"
#: shared-module/usb_hid/Device.c
msgid "USB busy"
@ -2406,10 +2403,6 @@ msgstr ""
"WatchDogTimer.mode kann nicht geändert werden, nachdem er auf WatchDogMode."
"RESET gesetzt wurde"
#: shared-bindings/watchdog/WatchDogTimer.c
msgid "WatchDogTimer.timeout must be greater than 0"
msgstr "WatchDogTimer.timeout muss größer als 0 sein"
#: py/builtinhelp.c
#, c-format
msgid ""
@ -2440,7 +2433,7 @@ msgstr "Schreiben nicht unterstüzt für diese Charakteristik"
#: supervisor/shared/safe_mode.c
msgid "You are in safe mode because:\n"
msgstr "Du bist im abgesicherten Modus weil:\n"
msgstr "Du befindest dich im abgesicherten Modus, weil:\n"
#: supervisor/shared/safe_mode.c
msgid ""
@ -2529,7 +2522,7 @@ msgstr "Versuch (arg)min/(arg)max einer leeren Sequenz zu holen"
#: extmod/ulab/code/numpy/numerical.c
msgid "attempt to get argmin/argmax of an empty sequence"
msgstr "Sie haben versucht argmin/argmax einer leeren Sequenz zu erhalten"
msgstr "Versuch, argmin/argmax einer leeren Sequenz zu ermitteln"
#: py/objstr.c
msgid "attributes not supported yet"
@ -3254,10 +3247,6 @@ msgstr "Index ist außerhalb der Grenzen"
msgid "index out of range"
msgstr "index außerhalb der Reichweite"
#: py/obj.c
msgid "indices must be integers"
msgstr "Indizes müssen Integer sein"
#: extmod/ulab/code/ndarray.c
msgid "indices must be integers, slices, or Boolean lists"
msgstr "Indizes müssen Integer, Slices oder Boolesche Listen sein"
@ -3461,8 +3450,8 @@ msgstr ""
#: py/argcheck.c
msgid "keyword argument(s) not yet implemented - use normal args instead"
msgstr ""
"Schlüsselwort-Argument(e) noch nicht implementiert - verwenden Sie "
"stattdessen normale Argumente"
"Schlüsselwort-Argument(e) noch nicht implementiert - verwende stattdessen "
"normale Argumente"
#: py/bc.c
msgid "keywords must be strings"
@ -3680,10 +3669,6 @@ msgstr "keine Antwort von der SD-Karte"
msgid "no such attribute"
msgstr "kein solches Attribut"
#: shared-bindings/usb_hid/__init__.c
msgid "non-Device in %q"
msgstr "Nicht-Gerät in %q"
#: ports/espressif/common-hal/_bleio/Connection.c
#: ports/nrf/common-hal/_bleio/Connection.c
msgid "non-UUID found in service_uuids_whitelist"
@ -3810,10 +3795,20 @@ msgid "offset out of bounds"
msgstr "offset außerhalb der Grenzen"
#: ports/nrf/common-hal/audiobusio/PDMIn.c
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only bit_depth=16 is supported"
msgstr "nur eine bit_depth=16 wird unterstützt"
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only mono is supported"
msgstr ""
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only oversample=64 is supported"
msgstr ""
#: ports/nrf/common-hal/audiobusio/PDMIn.c
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only sample_rate=16000 is supported"
msgstr "nur eine sample_rate=16000 wird unterstützt"
@ -3962,11 +3957,6 @@ msgstr "Real- und Imaginärteile müssen gleich lang sein"
msgid "relative import"
msgstr "relativer Import"
#: py/obj.c
#, c-format
msgid "requested length %d but object has length %d"
msgstr "die ersuchte Länge ist %d, aber das Objekt hat eine Länge von %d"
#: extmod/ulab/code/ndarray_operators.c
msgid "results cannot be cast to specified type"
msgstr "Ergebnisse können nicht in den angegebenen Typ umgewandelt werden"
@ -4030,10 +4020,6 @@ msgstr "Vorzeichen nicht erlaubt in einem String formatierungs specifier"
msgid "sign not allowed with integer format specifier 'c'"
msgstr "Vorzeichen mit ganzzahligem Formatbezeichner 'c' nicht erlaubt"
#: py/objstr.c
msgid "single '}' encountered in format string"
msgstr "einzelne '}' in Formatierungs-String gefunden"
#: extmod/ulab/code/ulab_tools.c
msgid "size is defined for ndarrays only"
msgstr "Größe ist nur für ndarrays definiert"
@ -4116,8 +4102,7 @@ msgstr "String Indizes müssen Integer sein, nicht %q"
#: py/stream.c
msgid "string not supported; use bytes or bytearray"
msgstr ""
"Zeichenfolgen werden nicht unterstützt; Verwenden Sie bytes oder bytearray"
msgstr "Zeichenfolgen werden nicht unterstützt; verwende bytes oder bytearray"
#: extmod/moductypes.c
msgid "struct: can't index"
@ -4147,10 +4132,6 @@ msgstr "Syntaxfehler in JSON"
msgid "syntax error in uctypes descriptor"
msgstr "Syntaxfehler in uctypes Deskriptor"
#: shared-bindings/touchio/TouchIn.c
msgid "threshold must be in the range 0-65536"
msgstr "threshold muss im Intervall 0-65536 liegen"
#: shared-bindings/time/__init__.c
msgid "time.struct_time() takes a 9-sequence"
msgstr "time.struct_time() nimmt eine 9-Sequenz an"
@ -4162,10 +4143,6 @@ msgstr "time.struct_time() nimmt eine 9-Sequenz an"
msgid "timeout duration exceeded the maximum supported value"
msgstr "Das Zeitlimit hat den maximal zulässigen Wert überschritten"
#: shared-bindings/busio/UART.c
msgid "timeout must be 0.0-100.0 seconds"
msgstr "Das Zeitlimit muss 0,0-100,0 Sekunden betragen"
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "timeout must be < 655.35 secs"
msgstr "timeout muss kleiner als 655.35 Sekunden sein"
@ -4180,7 +4157,7 @@ msgstr "Zeitlimit beim warten auf v2 Karte"
#: ports/stm/common-hal/pwmio/PWMOut.c
msgid "timer re-init"
msgstr "Timer wird neu initialisiert"
msgstr "Timer wird erneut initialisiert"
#: shared-bindings/time/__init__.c
msgid "timestamp out of range for platform time_t"
@ -4219,10 +4196,6 @@ msgstr "trapz ist für 1D-Arrays gleicher Länge definiert"
msgid "trapz is defined for 1D iterables"
msgstr "trapz ist für 1D-Iterables definiert"
#: py/obj.c
msgid "tuple/list has wrong length"
msgstr "tupel/list hat falsche Länge"
#: ports/espressif/common-hal/canio/CAN.c
#, c-format
msgid "twai_driver_install returned esp-idf error #%d"
@ -4303,8 +4276,9 @@ msgid "unknown type '%q'"
msgstr "unbekannter Typ '%q'"
#: py/objstr.c
msgid "unmatched '{' in format"
msgstr "'{' ohne passende Zuordnung im Format"
#, c-format
msgid "unmatched '%c' in format"
msgstr ""
#: py/objtype.c py/runtime.c
msgid "unreadable attribute"
@ -4374,10 +4348,6 @@ msgstr "value_count muss größer als 0 sein"
msgid "watchdog not initialized"
msgstr "watchdog nicht initialisiert"
#: shared-bindings/watchdog/WatchDogTimer.c
msgid "watchdog timeout must be greater than 0"
msgstr "watchdog Zeitlimit muss größer als 0 sein"
#: shared-bindings/is31fl3741/FrameBuffer.c
msgid "width must be greater than zero"
msgstr "Breite muss größer als 0 sein"
@ -4465,6 +4435,40 @@ msgstr "zi muss eine Gleitkommazahl sein"
msgid "zi must be of shape (n_section, 2)"
msgstr "zi muss die Form (n_section, 2) haben"
#~ msgid "%q indices must be integers, not %s"
#~ msgstr "%q Indizes müssen Integer sein, nicht %s"
#~ msgid "WatchDogTimer.timeout must be greater than 0"
#~ msgstr "WatchDogTimer.timeout muss größer als 0 sein"
#~ msgid "indices must be integers"
#~ msgstr "Indizes müssen Integer sein"
#~ msgid "non-Device in %q"
#~ msgstr "Nicht-Gerät in %q"
#, c-format
#~ msgid "requested length %d but object has length %d"
#~ msgstr "die ersuchte Länge ist %d, aber das Objekt hat eine Länge von %d"
#~ msgid "single '}' encountered in format string"
#~ msgstr "einzelne '}' in Formatierungs-String gefunden"
#~ msgid "threshold must be in the range 0-65536"
#~ msgstr "threshold muss im Intervall 0-65536 liegen"
#~ msgid "timeout must be 0.0-100.0 seconds"
#~ msgstr "Das Zeitlimit muss 0,0-100,0 Sekunden betragen"
#~ msgid "tuple/list has wrong length"
#~ msgstr "tupel/list hat falsche Länge"
#~ msgid "unmatched '{' in format"
#~ msgstr "'{' ohne passende Zuordnung im Format"
#~ msgid "watchdog timeout must be greater than 0"
#~ msgstr "watchdog Zeitlimit muss größer als 0 sein"
#~ msgid "To exit, please reset the board without "
#~ msgstr "Zum beenden, resette bitte das board ohne "

View File

@ -122,10 +122,6 @@ msgstr "%q είναι σε χρήση"
msgid "%q index out of range"
msgstr "%q δείκτης εκτός εμβέλειας"
#: py/obj.c
msgid "%q indices must be integers, not %s"
msgstr "%q δείκτες πρέπει να είναι ακέραιοι, όχι %s"
#: shared-module/bitbangio/SPI.c
msgid "%q init failed"
msgstr "%q εκκίνηση απέτυχε"
@ -2368,10 +2364,6 @@ msgstr ""
msgid "WatchDogTimer.mode cannot be changed once set to WatchDogMode.RESET"
msgstr ""
#: shared-bindings/watchdog/WatchDogTimer.c
msgid "WatchDogTimer.timeout must be greater than 0"
msgstr ""
#: py/builtinhelp.c
#, c-format
msgid ""
@ -3193,10 +3185,6 @@ msgstr ""
msgid "index out of range"
msgstr ""
#: py/obj.c
msgid "indices must be integers"
msgstr ""
#: extmod/ulab/code/ndarray.c
msgid "indices must be integers, slices, or Boolean lists"
msgstr ""
@ -3613,10 +3601,6 @@ msgstr ""
msgid "no such attribute"
msgstr ""
#: shared-bindings/usb_hid/__init__.c
msgid "non-Device in %q"
msgstr ""
#: ports/espressif/common-hal/_bleio/Connection.c
#: ports/nrf/common-hal/_bleio/Connection.c
msgid "non-UUID found in service_uuids_whitelist"
@ -3741,10 +3725,20 @@ msgid "offset out of bounds"
msgstr ""
#: ports/nrf/common-hal/audiobusio/PDMIn.c
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only bit_depth=16 is supported"
msgstr ""
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only mono is supported"
msgstr ""
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only oversample=64 is supported"
msgstr ""
#: ports/nrf/common-hal/audiobusio/PDMIn.c
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only sample_rate=16000 is supported"
msgstr ""
@ -3890,11 +3884,6 @@ msgstr ""
msgid "relative import"
msgstr ""
#: py/obj.c
#, c-format
msgid "requested length %d but object has length %d"
msgstr ""
#: extmod/ulab/code/ndarray_operators.c
msgid "results cannot be cast to specified type"
msgstr ""
@ -3958,10 +3947,6 @@ msgstr ""
msgid "sign not allowed with integer format specifier 'c'"
msgstr ""
#: py/objstr.c
msgid "single '}' encountered in format string"
msgstr ""
#: extmod/ulab/code/ulab_tools.c
msgid "size is defined for ndarrays only"
msgstr ""
@ -4074,10 +4059,6 @@ msgstr ""
msgid "syntax error in uctypes descriptor"
msgstr ""
#: shared-bindings/touchio/TouchIn.c
msgid "threshold must be in the range 0-65536"
msgstr ""
#: shared-bindings/time/__init__.c
msgid "time.struct_time() takes a 9-sequence"
msgstr ""
@ -4089,10 +4070,6 @@ msgstr ""
msgid "timeout duration exceeded the maximum supported value"
msgstr ""
#: shared-bindings/busio/UART.c
msgid "timeout must be 0.0-100.0 seconds"
msgstr ""
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "timeout must be < 655.35 secs"
msgstr ""
@ -4146,10 +4123,6 @@ msgstr ""
msgid "trapz is defined for 1D iterables"
msgstr ""
#: py/obj.c
msgid "tuple/list has wrong length"
msgstr ""
#: ports/espressif/common-hal/canio/CAN.c
#, c-format
msgid "twai_driver_install returned esp-idf error #%d"
@ -4228,7 +4201,8 @@ msgid "unknown type '%q'"
msgstr ""
#: py/objstr.c
msgid "unmatched '{' in format"
#, c-format
msgid "unmatched '%c' in format"
msgstr ""
#: py/objtype.c py/runtime.c
@ -4299,10 +4273,6 @@ msgstr ""
msgid "watchdog not initialized"
msgstr ""
#: shared-bindings/watchdog/WatchDogTimer.c
msgid "watchdog timeout must be greater than 0"
msgstr ""
#: shared-bindings/is31fl3741/FrameBuffer.c
msgid "width must be greater than zero"
msgstr ""
@ -4390,6 +4360,9 @@ msgstr ""
msgid "zi must be of shape (n_section, 2)"
msgstr ""
#~ msgid "%q indices must be integers, not %s"
#~ msgstr "%q δείκτες πρέπει να είναι ακέραιοι, όχι %s"
#~ msgid "%q must be >= 0"
#~ msgstr "%q πρέπει να είναι >= 0"

View File

@ -120,10 +120,6 @@ msgstr "%q in use"
msgid "%q index out of range"
msgstr "%q index out of range"
#: py/obj.c
msgid "%q indices must be integers, not %s"
msgstr "%q indices must be integers, not %s"
#: shared-module/bitbangio/SPI.c
msgid "%q init failed"
msgstr ""
@ -2374,10 +2370,6 @@ msgstr "WatchDogTimer is not currently running"
msgid "WatchDogTimer.mode cannot be changed once set to WatchDogMode.RESET"
msgstr "WatchDogTimer.mode cannot be changed once set to WatchDogMode.RESET"
#: shared-bindings/watchdog/WatchDogTimer.c
msgid "WatchDogTimer.timeout must be greater than 0"
msgstr "WatchDogTimer.timeout must be greater than 0"
#: py/builtinhelp.c
#, c-format
msgid ""
@ -3203,10 +3195,6 @@ msgstr "index is out of bounds"
msgid "index out of range"
msgstr "index out of range"
#: py/obj.c
msgid "indices must be integers"
msgstr "indices must be integers"
#: extmod/ulab/code/ndarray.c
msgid "indices must be integers, slices, or Boolean lists"
msgstr "indices must be integers, slices, or Boolean lists"
@ -3623,10 +3611,6 @@ msgstr "no response from SD card"
msgid "no such attribute"
msgstr "no such attribute"
#: shared-bindings/usb_hid/__init__.c
msgid "non-Device in %q"
msgstr "non-Device in %q"
#: ports/espressif/common-hal/_bleio/Connection.c
#: ports/nrf/common-hal/_bleio/Connection.c
msgid "non-UUID found in service_uuids_whitelist"
@ -3751,10 +3735,20 @@ msgid "offset out of bounds"
msgstr "offset out of bounds"
#: ports/nrf/common-hal/audiobusio/PDMIn.c
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only bit_depth=16 is supported"
msgstr "only bit_depth=16 is supported"
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only mono is supported"
msgstr ""
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only oversample=64 is supported"
msgstr ""
#: ports/nrf/common-hal/audiobusio/PDMIn.c
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only sample_rate=16000 is supported"
msgstr "only sample_rate=16000 is supported"
@ -3900,11 +3894,6 @@ msgstr "real and imaginary parts must be of equal length"
msgid "relative import"
msgstr "relative import"
#: py/obj.c
#, c-format
msgid "requested length %d but object has length %d"
msgstr "requested length %d but object has length %d"
#: extmod/ulab/code/ndarray_operators.c
msgid "results cannot be cast to specified type"
msgstr "results cannot be cast to specified type"
@ -3968,10 +3957,6 @@ msgstr "sign not allowed in string format specifier"
msgid "sign not allowed with integer format specifier 'c'"
msgstr "sign not allowed with integer format specifier 'c'"
#: py/objstr.c
msgid "single '}' encountered in format string"
msgstr "single '}' encountered in format string"
#: extmod/ulab/code/ulab_tools.c
msgid "size is defined for ndarrays only"
msgstr "size is defined for ndarrays only"
@ -4084,10 +4069,6 @@ msgstr "syntax error in JSON"
msgid "syntax error in uctypes descriptor"
msgstr "syntax error in uctypes descriptor"
#: shared-bindings/touchio/TouchIn.c
msgid "threshold must be in the range 0-65536"
msgstr "threshold must be in the range 0-65536"
#: shared-bindings/time/__init__.c
msgid "time.struct_time() takes a 9-sequence"
msgstr "time.struct_time() takes a 9-sequence"
@ -4099,10 +4080,6 @@ msgstr "time.struct_time() takes a 9-sequence"
msgid "timeout duration exceeded the maximum supported value"
msgstr "timeout duration exceeded the maximum supported value"
#: shared-bindings/busio/UART.c
msgid "timeout must be 0.0-100.0 seconds"
msgstr "timeout must be 0.0-100.0 seconds"
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "timeout must be < 655.35 secs"
msgstr "timeout must be < 655.35 secs"
@ -4156,10 +4133,6 @@ msgstr "trapz is defined for 1D arrays of equal length"
msgid "trapz is defined for 1D iterables"
msgstr "trapz is defined for 1D iterables"
#: py/obj.c
msgid "tuple/list has wrong length"
msgstr "tuple/list has wrong length"
#: ports/espressif/common-hal/canio/CAN.c
#, c-format
msgid "twai_driver_install returned esp-idf error #%d"
@ -4238,8 +4211,9 @@ msgid "unknown type '%q'"
msgstr "unknown type '%q'"
#: py/objstr.c
msgid "unmatched '{' in format"
msgstr "unmatched '{' in format"
#, c-format
msgid "unmatched '%c' in format"
msgstr ""
#: py/objtype.c py/runtime.c
msgid "unreadable attribute"
@ -4309,10 +4283,6 @@ msgstr "value_count must be > 0"
msgid "watchdog not initialized"
msgstr "WatchDog not initialised"
#: shared-bindings/watchdog/WatchDogTimer.c
msgid "watchdog timeout must be greater than 0"
msgstr "WatchDog timeout must be greater than 0"
#: shared-bindings/is31fl3741/FrameBuffer.c
msgid "width must be greater than zero"
msgstr "width must be greater than zero"
@ -4400,6 +4370,40 @@ msgstr "zi must be of float type"
msgid "zi must be of shape (n_section, 2)"
msgstr "zi must be of shape (n_section, 2)"
#~ msgid "%q indices must be integers, not %s"
#~ msgstr "%q indices must be integers, not %s"
#~ msgid "WatchDogTimer.timeout must be greater than 0"
#~ msgstr "WatchDogTimer.timeout must be greater than 0"
#~ msgid "indices must be integers"
#~ msgstr "indices must be integers"
#~ msgid "non-Device in %q"
#~ msgstr "non-Device in %q"
#, c-format
#~ msgid "requested length %d but object has length %d"
#~ msgstr "requested length %d but object has length %d"
#~ msgid "single '}' encountered in format string"
#~ msgstr "single '}' encountered in format string"
#~ msgid "threshold must be in the range 0-65536"
#~ msgstr "threshold must be in the range 0-65536"
#~ msgid "timeout must be 0.0-100.0 seconds"
#~ msgstr "timeout must be 0.0-100.0 seconds"
#~ msgid "tuple/list has wrong length"
#~ msgstr "tuple/list has wrong length"
#~ msgid "unmatched '{' in format"
#~ msgstr "unmatched '{' in format"
#~ msgid "watchdog timeout must be greater than 0"
#~ msgstr "WatchDog timeout must be greater than 0"
#~ msgid "To exit, please reset the board without "
#~ msgstr "To exit, please reset the board without "

View File

@ -122,10 +122,6 @@ msgstr "%q está siendo utilizado"
msgid "%q index out of range"
msgstr "%q indice fuera de rango"
#: py/obj.c
msgid "%q indices must be integers, not %s"
msgstr "%q indices deben ser enteros, no %s"
#: shared-module/bitbangio/SPI.c
msgid "%q init failed"
msgstr "%q inicializado fallido"
@ -2409,10 +2405,6 @@ msgstr ""
"WatchDogTimer.mode no se puede modificar luego de configurar WatchDogMode."
"RESET"
#: shared-bindings/watchdog/WatchDogTimer.c
msgid "WatchDogTimer.timeout must be greater than 0"
msgstr "WatchDogTimer.timeout debe ser mayor a 0"
#: py/builtinhelp.c
#, c-format
msgid ""
@ -3243,10 +3235,6 @@ msgstr "el índice está fuera de límites"
msgid "index out of range"
msgstr "index fuera de rango"
#: py/obj.c
msgid "indices must be integers"
msgstr "indices deben ser enteros"
#: extmod/ulab/code/ndarray.c
msgid "indices must be integers, slices, or Boolean lists"
msgstr "los índices deben ser enteros, particiones o listas de booleanos"
@ -3667,10 +3655,6 @@ msgstr "no hay respuesta de la tarjeta SD"
msgid "no such attribute"
msgstr "no hay tal atributo"
#: shared-bindings/usb_hid/__init__.c
msgid "non-Device in %q"
msgstr "hay un no-Device en %q"
#: ports/espressif/common-hal/_bleio/Connection.c
#: ports/nrf/common-hal/_bleio/Connection.c
msgid "non-UUID found in service_uuids_whitelist"
@ -3798,10 +3782,20 @@ msgid "offset out of bounds"
msgstr "offset fuera de límites"
#: ports/nrf/common-hal/audiobusio/PDMIn.c
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only bit_depth=16 is supported"
msgstr "solo se admite bit_depth=16"
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only mono is supported"
msgstr ""
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only oversample=64 is supported"
msgstr ""
#: ports/nrf/common-hal/audiobusio/PDMIn.c
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only sample_rate=16000 is supported"
msgstr "solo se admite sample_rate=16000"
@ -3947,11 +3941,6 @@ msgstr "las partes reales e imaginarias deben ser de igual longitud"
msgid "relative import"
msgstr "import relativo"
#: py/obj.c
#, c-format
msgid "requested length %d but object has length %d"
msgstr "longitud solicitada %d pero el objeto tiene longitud %d"
#: extmod/ulab/code/ndarray_operators.c
msgid "results cannot be cast to specified type"
msgstr "resultados no pueden aplicar cast a un tipo específico"
@ -4015,10 +4004,6 @@ msgstr "signo no permitido en el espeficador de string format"
msgid "sign not allowed with integer format specifier 'c'"
msgstr "signo no permitido con el especificador integer format 'c'"
#: py/objstr.c
msgid "single '}' encountered in format string"
msgstr "un solo '}' encontrado en format string"
#: extmod/ulab/code/ulab_tools.c
msgid "size is defined for ndarrays only"
msgstr "el tamaño se define solo para ndarrays"
@ -4131,10 +4116,6 @@ msgstr "error de sintaxis en JSON"
msgid "syntax error in uctypes descriptor"
msgstr "error de sintaxis en el descriptor uctypes"
#: shared-bindings/touchio/TouchIn.c
msgid "threshold must be in the range 0-65536"
msgstr "limite debe ser en el rango 0-65536"
#: shared-bindings/time/__init__.c
msgid "time.struct_time() takes a 9-sequence"
msgstr "time.struct_time() toma un sequencio 9"
@ -4147,10 +4128,6 @@ msgid "timeout duration exceeded the maximum supported value"
msgstr ""
"la duración de tiempo de espera ha excedido la capacidad máxima del valor"
#: shared-bindings/busio/UART.c
msgid "timeout must be 0.0-100.0 seconds"
msgstr "el tiempo de espera debe ser 0.0-100.0 segundos"
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "timeout must be < 655.35 secs"
msgstr "timeout debe ser < 655.35 segundos"
@ -4204,10 +4181,6 @@ msgstr "trapz está definido para arreglos 1D de igual tamaño"
msgid "trapz is defined for 1D iterables"
msgstr "trapz está definido para iterables 1D"
#: py/obj.c
msgid "tuple/list has wrong length"
msgstr "tupla/lista tiene una longitud incorrecta"
#: ports/espressif/common-hal/canio/CAN.c
#, c-format
msgid "twai_driver_install returned esp-idf error #%d"
@ -4286,8 +4259,9 @@ msgid "unknown type '%q'"
msgstr "tipo desconocido '%q'"
#: py/objstr.c
msgid "unmatched '{' in format"
msgstr "No coinciden '{' en format"
#, c-format
msgid "unmatched '%c' in format"
msgstr ""
#: py/objtype.c py/runtime.c
msgid "unreadable attribute"
@ -4357,10 +4331,6 @@ msgstr "value_count debe ser > 0"
msgid "watchdog not initialized"
msgstr "watchdog no inicializado"
#: shared-bindings/watchdog/WatchDogTimer.c
msgid "watchdog timeout must be greater than 0"
msgstr "el tiempo de espera del perro guardián debe ser mayor a 0"
#: shared-bindings/is31fl3741/FrameBuffer.c
msgid "width must be greater than zero"
msgstr "el ancho debe ser mayor que cero"
@ -4448,6 +4418,40 @@ msgstr "zi debe ser de tipo flotante"
msgid "zi must be of shape (n_section, 2)"
msgstr "zi debe ser una forma (n_section,2)"
#~ msgid "%q indices must be integers, not %s"
#~ msgstr "%q indices deben ser enteros, no %s"
#~ msgid "WatchDogTimer.timeout must be greater than 0"
#~ msgstr "WatchDogTimer.timeout debe ser mayor a 0"
#~ msgid "indices must be integers"
#~ msgstr "indices deben ser enteros"
#~ msgid "non-Device in %q"
#~ msgstr "hay un no-Device en %q"
#, c-format
#~ msgid "requested length %d but object has length %d"
#~ msgstr "longitud solicitada %d pero el objeto tiene longitud %d"
#~ msgid "single '}' encountered in format string"
#~ msgstr "un solo '}' encontrado en format string"
#~ msgid "threshold must be in the range 0-65536"
#~ msgstr "limite debe ser en el rango 0-65536"
#~ msgid "timeout must be 0.0-100.0 seconds"
#~ msgstr "el tiempo de espera debe ser 0.0-100.0 segundos"
#~ msgid "tuple/list has wrong length"
#~ msgstr "tupla/lista tiene una longitud incorrecta"
#~ msgid "unmatched '{' in format"
#~ msgstr "No coinciden '{' en format"
#~ msgid "watchdog timeout must be greater than 0"
#~ msgstr "el tiempo de espera del perro guardián debe ser mayor a 0"
#~ msgid "To exit, please reset the board without "
#~ msgstr "Para salir, por favor reinicia la tarjeta sin "

View File

@ -111,10 +111,6 @@ msgstr "%q ay ginagamit"
msgid "%q index out of range"
msgstr "%q indeks wala sa sakop"
#: py/obj.c
msgid "%q indices must be integers, not %s"
msgstr "%q indeks ay dapat integers, hindi %s"
#: shared-module/bitbangio/SPI.c
msgid "%q init failed"
msgstr ""
@ -2360,10 +2356,6 @@ msgstr ""
msgid "WatchDogTimer.mode cannot be changed once set to WatchDogMode.RESET"
msgstr ""
#: shared-bindings/watchdog/WatchDogTimer.c
msgid "WatchDogTimer.timeout must be greater than 0"
msgstr ""
#: py/builtinhelp.c
#, c-format
msgid ""
@ -3197,10 +3189,6 @@ msgstr ""
msgid "index out of range"
msgstr "index wala sa sakop"
#: py/obj.c
msgid "indices must be integers"
msgstr "ang mga indeks ay dapat na integer"
#: extmod/ulab/code/ndarray.c
msgid "indices must be integers, slices, or Boolean lists"
msgstr ""
@ -3621,10 +3609,6 @@ msgstr ""
msgid "no such attribute"
msgstr "walang ganoon na attribute"
#: shared-bindings/usb_hid/__init__.c
msgid "non-Device in %q"
msgstr ""
#: ports/espressif/common-hal/_bleio/Connection.c
#: ports/nrf/common-hal/_bleio/Connection.c
msgid "non-UUID found in service_uuids_whitelist"
@ -3750,10 +3734,20 @@ msgid "offset out of bounds"
msgstr "wala sa sakop ang address"
#: ports/nrf/common-hal/audiobusio/PDMIn.c
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only bit_depth=16 is supported"
msgstr ""
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only mono is supported"
msgstr ""
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only oversample=64 is supported"
msgstr ""
#: ports/nrf/common-hal/audiobusio/PDMIn.c
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only sample_rate=16000 is supported"
msgstr ""
@ -3900,11 +3894,6 @@ msgstr ""
msgid "relative import"
msgstr "relative import"
#: py/obj.c
#, c-format
msgid "requested length %d but object has length %d"
msgstr "hiniling ang haba %d ngunit may haba ang object na %d"
#: extmod/ulab/code/ndarray_operators.c
msgid "results cannot be cast to specified type"
msgstr ""
@ -3968,10 +3957,6 @@ msgstr "sign hindi maaring string format specifier"
msgid "sign not allowed with integer format specifier 'c'"
msgstr "sign hindi maari sa integer format specifier 'c'"
#: py/objstr.c
msgid "single '}' encountered in format string"
msgstr "isang '}' nasalubong sa format string"
#: extmod/ulab/code/ulab_tools.c
msgid "size is defined for ndarrays only"
msgstr ""
@ -4084,10 +4069,6 @@ msgstr "sintaks error sa JSON"
msgid "syntax error in uctypes descriptor"
msgstr "may pagkakamali sa sintaks sa uctypes descriptor"
#: shared-bindings/touchio/TouchIn.c
msgid "threshold must be in the range 0-65536"
msgstr "ang threshold ay dapat sa range 0-65536"
#: shared-bindings/time/__init__.c
msgid "time.struct_time() takes a 9-sequence"
msgstr "time.struct_time() kumukuha ng 9-sequence"
@ -4099,10 +4080,6 @@ msgstr "time.struct_time() kumukuha ng 9-sequence"
msgid "timeout duration exceeded the maximum supported value"
msgstr ""
#: shared-bindings/busio/UART.c
msgid "timeout must be 0.0-100.0 seconds"
msgstr ""
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "timeout must be < 655.35 secs"
msgstr ""
@ -4156,10 +4133,6 @@ msgstr ""
msgid "trapz is defined for 1D iterables"
msgstr ""
#: py/obj.c
msgid "tuple/list has wrong length"
msgstr "mali ang haba ng tuple/list"
#: ports/espressif/common-hal/canio/CAN.c
#, c-format
msgid "twai_driver_install returned esp-idf error #%d"
@ -4238,8 +4211,9 @@ msgid "unknown type '%q'"
msgstr "hindi malaman ang type '%q'"
#: py/objstr.c
msgid "unmatched '{' in format"
msgstr "hindi tugma ang '{' sa format"
#, c-format
msgid "unmatched '%c' in format"
msgstr ""
#: py/objtype.c py/runtime.c
msgid "unreadable attribute"
@ -4309,10 +4283,6 @@ msgstr ""
msgid "watchdog not initialized"
msgstr ""
#: shared-bindings/watchdog/WatchDogTimer.c
msgid "watchdog timeout must be greater than 0"
msgstr ""
#: shared-bindings/is31fl3741/FrameBuffer.c
msgid "width must be greater than zero"
msgstr ""
@ -4402,6 +4372,28 @@ msgstr ""
msgid "zi must be of shape (n_section, 2)"
msgstr ""
#~ msgid "%q indices must be integers, not %s"
#~ msgstr "%q indeks ay dapat integers, hindi %s"
#~ msgid "indices must be integers"
#~ msgstr "ang mga indeks ay dapat na integer"
#, c-format
#~ msgid "requested length %d but object has length %d"
#~ msgstr "hiniling ang haba %d ngunit may haba ang object na %d"
#~ msgid "single '}' encountered in format string"
#~ msgstr "isang '}' nasalubong sa format string"
#~ msgid "threshold must be in the range 0-65536"
#~ msgstr "ang threshold ay dapat sa range 0-65536"
#~ msgid "tuple/list has wrong length"
#~ msgstr "mali ang haba ng tuple/list"
#~ msgid "unmatched '{' in format"
#~ msgstr "hindi tugma ang '{' sa format"
#~ msgid "To exit, please reset the board without "
#~ msgstr "Para lumabas, paki-reset ang board na wala ang "

View File

@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: 0.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-01-04 12:55-0600\n"
"PO-Revision-Date: 2022-08-29 18:20+0000\n"
"Last-Translator: Maxime Leroy <lisacintosh@gmail.com>\n"
"PO-Revision-Date: 2022-11-09 19:20+0000\n"
"Last-Translator: Deleted User <noreply+52049@weblate.org>\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 4.14.1-dev\n"
"X-Generator: Weblate 4.15-dev\n"
#: main.c
msgid ""
@ -73,7 +73,7 @@ msgstr "%%c nécessite un chiffre entier 'int' ou un caractère 'char'"
#: main.c
#, c-format
msgid "%02X"
msgstr ""
msgstr "%02X"
#: shared-bindings/rgbmatrix/RGBMatrix.c
#, c-format
@ -122,10 +122,6 @@ msgstr "%q en cours d'utilisation"
msgid "%q index out of range"
msgstr "index %q hors de portée"
#: py/obj.c
msgid "%q indices must be integers, not %s"
msgstr "les indices %q doivent être des entiers, pas %s"
#: shared-module/bitbangio/SPI.c
msgid "%q init failed"
msgstr "échec de l'initialisation %q"
@ -177,7 +173,7 @@ msgstr "%q doit être >= %d"
#: shared-bindings/analogbufio/BufferedIn.c
#: shared-bindings/audiocore/RawSample.c
msgid "%q must be a bytearray or array of type 'h', 'H', 'b', or 'B'"
msgstr ""
msgstr "%q doit être a bytearray ou array de type 'h', 'H', 'b', ou 'B'"
#: py/argcheck.c
msgid "%q must be a string"
@ -606,7 +602,7 @@ msgstr "RX et TX requis pour le contrôle de flux"
#: ports/atmel-samd/boards/circuitplayground_express_displayio/mpconfigboard.h
#: ports/atmel-samd/boards/meowmeow/mpconfigboard.h
msgid "Both buttons were pressed at start up.\n"
msgstr ""
msgstr "Les deux boutons étaient pressés au démarrage.\n"
#: ports/atmel-samd/common-hal/rotaryio/IncrementalEncoder.c
msgid "Both pins must support hardware interrupts"
@ -676,7 +672,7 @@ msgstr "La broche %d du bus est déjà utilisée"
#: ports/espressif/boards/m5stack_core_basic/mpconfigboard.h
#: ports/espressif/boards/m5stack_core_fire/mpconfigboard.h
msgid "Button A was pressed at start up.\n"
msgstr ""
msgstr "Le bouton A était pressé au démarrage.\n"
#: shared-bindings/_bleio/UUID.c
msgid "Byte buffer must be 16 bytes."
@ -971,7 +967,7 @@ msgstr "Attendu un %q"
#: ports/raspberrypi/bindings/cyw43/__init__.c
msgid "Expected a %q or %q"
msgstr ""
msgstr "Attendu un %q ou %q"
#: shared-bindings/alarm/__init__.c
msgid "Expected an %q"
@ -1058,16 +1054,16 @@ msgstr "Filtres trop complexe"
#: ports/espressif/common-hal/dualbank/__init__.c
msgid "Firmware is duplicate"
msgstr ""
msgstr "Le logiciel est identique"
#: ports/espressif/common-hal/dualbank/__init__.c
msgid "Firmware is invalid"
msgstr ""
msgstr "Logiciel invalide"
#: ports/espressif/common-hal/coproc/Coproc.c
#: ports/espressif/common-hal/dualbank/__init__.c
msgid "Firmware is too big"
msgstr ""
msgstr "Logiciel trop volumineux"
#: shared-bindings/bitmaptools/__init__.c
msgid "For L8 colorspace, input bitmap must have 8 bits per pixel"
@ -1601,11 +1597,11 @@ msgstr "Aucun minuteur disponible"
#: supervisor/shared/safe_mode.c
msgid "Nordic system firmware failure assertion."
msgstr "Assertion échouée du logiciel systême Nordic."
msgstr "Assertion échouée du logiciel système Nordic."
#: ports/nrf/common-hal/_bleio/__init__.c
msgid "Nordic system firmware out of memory"
msgstr "Logiciel systême Nordic hors de mémoire"
msgstr "Logiciel système Nordic n'a plus de mémoire"
#: shared-bindings/ipaddress/IPv4Address.c shared-bindings/ipaddress/__init__.c
msgid "Not a valid IP string"
@ -1697,7 +1693,7 @@ msgstr ""
#: ports/espressif/common-hal/alarm/coproc/CoprocAlarm.c
#: ports/espressif/common-hal/alarm/touch/TouchAlarm.c
msgid "Only one %q can be set in deep sleep."
msgstr ""
msgstr "Une seul %q autorisée en sommeil profond."
#: ports/espressif/common-hal/i2ctarget/I2CTarget.c
#: ports/raspberrypi/common-hal/i2ctarget/I2CTarget.c
@ -1733,7 +1729,7 @@ msgstr "Timeout de l'opération"
#: ports/espressif/common-hal/espidf/__init__.c ports/espressif/esp_error.c
msgid "Out of memory"
msgstr "Hors de mémoire"
msgstr "Mémoire insuffisante"
#: ports/espressif/common-hal/socketpool/Socket.c
#: ports/raspberrypi/common-hal/socketpool/Socket.c
@ -2062,7 +2058,7 @@ msgstr "Délais de lecture de température dépassée"
#: supervisor/shared/safe_mode.c
msgid "The BOOT button was pressed at start up.\n"
msgstr ""
msgstr "Le bouton BOOT était pressé au démarrage.\n"
#: supervisor/shared/safe_mode.c
msgid ""
@ -2074,11 +2070,11 @@ msgstr ""
#: ports/espressif/boards/adafruit_feather_esp32_v2/mpconfigboard.h
msgid "The SW38 button was pressed at start up.\n"
msgstr ""
msgstr "Le bouton SW38 était pressé au démarrage.\n"
#: ports/espressif/boards/hardkernel_odroid_go/mpconfigboard.h
msgid "The VOLUME button was pressed at start up.\n"
msgstr ""
msgstr "Le bouton VOLUME était pressé au démarrage.\n"
#: supervisor/shared/safe_mode.c
msgid ""
@ -2090,11 +2086,11 @@ msgstr ""
#: ports/espressif/boards/m5stack_atom_lite/mpconfigboard.h
msgid "The central button was pressed at start up.\n"
msgstr ""
msgstr "Le bouton central était pressé au démarrage.\n"
#: ports/nrf/boards/aramcon2_badge/mpconfigboard.h
msgid "The left button was pressed at start up.\n"
msgstr ""
msgstr "Le bouton gauche était pressé au démarrage.\n"
#: shared-bindings/rgbmatrix/RGBMatrix.c
msgid "The length of rgb_pins must be 6, 12, 18, 24, or 30"
@ -2164,7 +2160,7 @@ msgstr "Le délai est trop long : le délai maximal est de %d secondes"
#: supervisor/shared/safe_mode.c
msgid "To exit, please reset the board without requesting safe mode."
msgstr ""
msgstr "Pour le quitter, redémarrez sans demander le mode sans-échec."
#: ports/atmel-samd/common-hal/audiobusio/I2SOut.c
msgid "Too many channels in sample"
@ -2219,8 +2215,9 @@ msgid "UART write"
msgstr "Écriture UART"
#: main.c
#, fuzzy
msgid "UID:"
msgstr ""
msgstr "UID:"
#: shared-module/usb_hid/Device.c
msgid "USB busy"
@ -2288,7 +2285,7 @@ msgstr "Impossible de lancer la requête mDNS"
#: shared-bindings/coproc/CoprocMemory.c
msgid "Unable to write"
msgstr ""
msgstr "Écriture impossible"
#: shared-bindings/nvm/ByteArray.c
msgid "Unable to write to nvm."
@ -2340,22 +2337,22 @@ msgstr "Erreur de sécurité inconnue : 0x%04x"
#: ports/espressif/common-hal/_bleio/__init__.c
#, c-format
msgid "Unknown system firmware error at %s:%d: %d"
msgstr "Erreur du firmware système inconnue à %s:%d : %d"
msgstr "Erreur du logiciel système inconnue à %s:%d : %d"
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Unknown system firmware error: %04x"
msgstr "Faute inconnue du logiciel systême : %04x"
msgstr "Faute inconnue du logiciel système : %04x"
#: ports/espressif/common-hal/_bleio/__init__.c
#, c-format
msgid "Unknown system firmware error: %d"
msgstr "Erreur du firmware système inconnue : %d"
msgstr "Erreur du logiciel système inconnue : %d"
#: ports/raspberrypi/common-hal/wifi/__init__.c
#, c-format
msgid "Unkown error code %d"
msgstr ""
msgstr "Erreur inconnue %d"
#: shared-bindings/adafruit_pixelbuf/PixelBuf.c
#, c-format
@ -2435,10 +2432,6 @@ msgstr ""
"WatchDogTimer.mode ne peut pas être changé une fois réglé à WatchDogMode."
"RESET"
#: shared-bindings/watchdog/WatchDogTimer.c
msgid "WatchDogTimer.timeout must be greater than 0"
msgstr "WatchDogTimer.timeout doit être supérieur à 0"
#: py/builtinhelp.c
#, c-format
msgid ""
@ -2516,7 +2509,7 @@ msgstr "Le paramêtre argsort doit être un ndarray"
#: extmod/ulab/code/numpy/numerical.c
msgid "argsort is not implemented for flattened arrays"
msgstr "argsort n'est pas mis en œuvre pour les matrices aplatis"
msgstr "argsort n'est pas implémenté pour les matrices aplaties"
#: py/runtime.c shared-bindings/supervisor/__init__.c
msgid "argument has wrong type"
@ -3047,6 +3040,8 @@ msgid ""
"esp32_camera.Camera requires reserved PSRAM to be configured. See the "
"documentation for instructions."
msgstr ""
"esp32_camera.Camera nécessite la configuration de PSRAM réservée. Se référer "
"à la documentation."
#: py/runtime.c
msgid "exceptions must derive from BaseException"
@ -3280,10 +3275,6 @@ msgstr "l'index est hors limites"
msgid "index out of range"
msgstr "index est hors bornes"
#: py/obj.c
msgid "indices must be integers"
msgstr "les indices doivent être des entiers"
#: extmod/ulab/code/ndarray.c
msgid "indices must be integers, slices, or Boolean lists"
msgstr ""
@ -3707,10 +3698,6 @@ msgstr "pas de réponse de la carte SD"
msgid "no such attribute"
msgstr "pas de tel attribut"
#: shared-bindings/usb_hid/__init__.c
msgid "non-Device in %q"
msgstr "aucun appareil dans %q"
#: ports/espressif/common-hal/_bleio/Connection.c
#: ports/nrf/common-hal/_bleio/Connection.c
msgid "non-UUID found in service_uuids_whitelist"
@ -3838,10 +3825,20 @@ msgid "offset out of bounds"
msgstr "décalage hors limites"
#: ports/nrf/common-hal/audiobusio/PDMIn.c
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only bit_depth=16 is supported"
msgstr "seul bit_depth = 16 est pris en charge"
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only mono is supported"
msgstr ""
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only oversample=64 is supported"
msgstr ""
#: ports/nrf/common-hal/audiobusio/PDMIn.c
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only sample_rate=16000 is supported"
msgstr "seul sample_rate = 16000 est pris en charge"
@ -3989,11 +3986,6 @@ msgstr "les parties réelles et imaginaires doivent être de longueur égale"
msgid "relative import"
msgstr "import relatif"
#: py/obj.c
#, c-format
msgid "requested length %d but object has length %d"
msgstr "la longueur requise est %d mais l'objet est long de %d"
#: extmod/ulab/code/ndarray_operators.c
msgid "results cannot be cast to specified type"
msgstr "résultats ne peuvent être transformé au type spécifié"
@ -4057,10 +4049,6 @@ msgstr "signe non autorisé dans les spéc. de formats de chaînes de caractère
msgid "sign not allowed with integer format specifier 'c'"
msgstr "signe non autorisé avec la spéc. de format d'entier 'c'"
#: py/objstr.c
msgid "single '}' encountered in format string"
msgstr "'}' seule rencontrée dans une chaîne de format"
#: extmod/ulab/code/ulab_tools.c
msgid "size is defined for ndarrays only"
msgstr "la taille n'est définie que pour les ndarrays"
@ -4174,10 +4162,6 @@ msgstr "erreur de syntaxe JSON"
msgid "syntax error in uctypes descriptor"
msgstr "erreur de syntaxe dans le descripteur d'uctypes"
#: shared-bindings/touchio/TouchIn.c
msgid "threshold must be in the range 0-65536"
msgstr "le seuil doit être dans la portée 0-65536"
#: shared-bindings/time/__init__.c
msgid "time.struct_time() takes a 9-sequence"
msgstr "time.struct_time() prend une séquence de longueur 9"
@ -4189,10 +4173,6 @@ msgstr "time.struct_time() prend une séquence de longueur 9"
msgid "timeout duration exceeded the maximum supported value"
msgstr "le délai d'expiration a dépassé la valeur maximale prise en charge"
#: shared-bindings/busio/UART.c
msgid "timeout must be 0.0-100.0 seconds"
msgstr "le délai doit être compris entre 0.0 et 100.0 secondes"
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "timeout must be < 655.35 secs"
msgstr "le délai (timeout) doit être < 655.35 secondes"
@ -4246,10 +4226,6 @@ msgstr "trapz n'est défini que pour des matrices 1D de longueur égales"
msgid "trapz is defined for 1D iterables"
msgstr "trapz est défini pour les 1D itérables"
#: py/obj.c
msgid "tuple/list has wrong length"
msgstr "tuple/liste a une mauvaise longueur"
#: ports/espressif/common-hal/canio/CAN.c
#, c-format
msgid "twai_driver_install returned esp-idf error #%d"
@ -4328,8 +4304,9 @@ msgid "unknown type '%q'"
msgstr "type '%q' inconnu"
#: py/objstr.c
msgid "unmatched '{' in format"
msgstr "'{' sans correspondance dans le format"
#, c-format
msgid "unmatched '%c' in format"
msgstr "'%c' sans correspondance dans le format"
#: py/objtype.c py/runtime.c
msgid "unreadable attribute"
@ -4399,10 +4376,6 @@ msgstr "'value_count' doit être > 0"
msgid "watchdog not initialized"
msgstr "chien de garde (watchdog) non initialisé"
#: shared-bindings/watchdog/WatchDogTimer.c
msgid "watchdog timeout must be greater than 0"
msgstr "watchdog timeout doit être supérieur à 0"
#: shared-bindings/is31fl3741/FrameBuffer.c
msgid "width must be greater than zero"
msgstr "width doit être plus que zero"
@ -4414,7 +4387,7 @@ msgstr "wifi nest pas activé"
#: ports/raspberrypi/common-hal/wifi/Monitor.c
msgid "wifi.Monitor not available"
msgstr ""
msgstr "wifi.Monitor non disponible"
#: shared-bindings/_bleio/Adapter.c
msgid "window must be <= interval"
@ -4490,6 +4463,40 @@ msgstr "zi doit être de type float"
msgid "zi must be of shape (n_section, 2)"
msgstr "zi doit être de forme (n_section, 2)"
#~ msgid "%q indices must be integers, not %s"
#~ msgstr "les indices %q doivent être des entiers, pas %s"
#~ msgid "WatchDogTimer.timeout must be greater than 0"
#~ msgstr "WatchDogTimer.timeout doit être supérieur à 0"
#~ msgid "indices must be integers"
#~ msgstr "les indices doivent être des entiers"
#~ msgid "non-Device in %q"
#~ msgstr "aucun appareil dans %q"
#, c-format
#~ msgid "requested length %d but object has length %d"
#~ msgstr "la longueur requise est %d mais l'objet est long de %d"
#~ msgid "single '}' encountered in format string"
#~ msgstr "'}' seule rencontrée dans une chaîne de format"
#~ msgid "threshold must be in the range 0-65536"
#~ msgstr "le seuil doit être dans la portée 0-65536"
#~ msgid "timeout must be 0.0-100.0 seconds"
#~ msgstr "le délai doit être compris entre 0.0 et 100.0 secondes"
#~ msgid "tuple/list has wrong length"
#~ msgstr "tuple/liste a une mauvaise longueur"
#~ msgid "unmatched '{' in format"
#~ msgstr "'{' sans correspondance dans le format"
#~ msgid "watchdog timeout must be greater than 0"
#~ msgstr "watchdog timeout doit être supérieur à 0"
#~ msgid "To exit, please reset the board without "
#~ msgstr "Pour quitter, SVP redémarrez la carte sans "

View File

@ -110,10 +110,6 @@ msgstr ""
msgid "%q index out of range"
msgstr ""
#: py/obj.c
msgid "%q indices must be integers, not %s"
msgstr ""
#: shared-module/bitbangio/SPI.c
msgid "%q init failed"
msgstr ""
@ -2341,10 +2337,6 @@ msgstr ""
msgid "WatchDogTimer.mode cannot be changed once set to WatchDogMode.RESET"
msgstr ""
#: shared-bindings/watchdog/WatchDogTimer.c
msgid "WatchDogTimer.timeout must be greater than 0"
msgstr ""
#: py/builtinhelp.c
#, c-format
msgid ""
@ -3166,10 +3158,6 @@ msgstr ""
msgid "index out of range"
msgstr ""
#: py/obj.c
msgid "indices must be integers"
msgstr ""
#: extmod/ulab/code/ndarray.c
msgid "indices must be integers, slices, or Boolean lists"
msgstr ""
@ -3586,10 +3574,6 @@ msgstr ""
msgid "no such attribute"
msgstr ""
#: shared-bindings/usb_hid/__init__.c
msgid "non-Device in %q"
msgstr ""
#: ports/espressif/common-hal/_bleio/Connection.c
#: ports/nrf/common-hal/_bleio/Connection.c
msgid "non-UUID found in service_uuids_whitelist"
@ -3714,10 +3698,20 @@ msgid "offset out of bounds"
msgstr ""
#: ports/nrf/common-hal/audiobusio/PDMIn.c
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only bit_depth=16 is supported"
msgstr ""
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only mono is supported"
msgstr ""
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only oversample=64 is supported"
msgstr ""
#: ports/nrf/common-hal/audiobusio/PDMIn.c
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only sample_rate=16000 is supported"
msgstr ""
@ -3863,11 +3857,6 @@ msgstr ""
msgid "relative import"
msgstr ""
#: py/obj.c
#, c-format
msgid "requested length %d but object has length %d"
msgstr ""
#: extmod/ulab/code/ndarray_operators.c
msgid "results cannot be cast to specified type"
msgstr ""
@ -3931,10 +3920,6 @@ msgstr ""
msgid "sign not allowed with integer format specifier 'c'"
msgstr ""
#: py/objstr.c
msgid "single '}' encountered in format string"
msgstr ""
#: extmod/ulab/code/ulab_tools.c
msgid "size is defined for ndarrays only"
msgstr ""
@ -4047,10 +4032,6 @@ msgstr ""
msgid "syntax error in uctypes descriptor"
msgstr ""
#: shared-bindings/touchio/TouchIn.c
msgid "threshold must be in the range 0-65536"
msgstr ""
#: shared-bindings/time/__init__.c
msgid "time.struct_time() takes a 9-sequence"
msgstr ""
@ -4062,10 +4043,6 @@ msgstr ""
msgid "timeout duration exceeded the maximum supported value"
msgstr ""
#: shared-bindings/busio/UART.c
msgid "timeout must be 0.0-100.0 seconds"
msgstr ""
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "timeout must be < 655.35 secs"
msgstr ""
@ -4119,10 +4096,6 @@ msgstr ""
msgid "trapz is defined for 1D iterables"
msgstr ""
#: py/obj.c
msgid "tuple/list has wrong length"
msgstr ""
#: ports/espressif/common-hal/canio/CAN.c
#, c-format
msgid "twai_driver_install returned esp-idf error #%d"
@ -4201,7 +4174,8 @@ msgid "unknown type '%q'"
msgstr ""
#: py/objstr.c
msgid "unmatched '{' in format"
#, c-format
msgid "unmatched '%c' in format"
msgstr ""
#: py/objtype.c py/runtime.c
@ -4272,10 +4246,6 @@ msgstr ""
msgid "watchdog not initialized"
msgstr ""
#: shared-bindings/watchdog/WatchDogTimer.c
msgid "watchdog timeout must be greater than 0"
msgstr ""
#: shared-bindings/is31fl3741/FrameBuffer.c
msgid "width must be greater than zero"
msgstr ""

View File

@ -117,10 +117,6 @@ msgstr "%q in uso"
msgid "%q index out of range"
msgstr "indice %q fuori intervallo"
#: py/obj.c
msgid "%q indices must be integers, not %s"
msgstr "gli indici %q devono essere interi, non %s"
#: shared-module/bitbangio/SPI.c
msgid "%q init failed"
msgstr ""
@ -2370,10 +2366,6 @@ msgstr ""
msgid "WatchDogTimer.mode cannot be changed once set to WatchDogMode.RESET"
msgstr ""
#: shared-bindings/watchdog/WatchDogTimer.c
msgid "WatchDogTimer.timeout must be greater than 0"
msgstr ""
#: py/builtinhelp.c
#, c-format
msgid ""
@ -3205,10 +3197,6 @@ msgstr ""
msgid "index out of range"
msgstr "indice fuori intervallo"
#: py/obj.c
msgid "indices must be integers"
msgstr "gli indici devono essere interi"
#: extmod/ulab/code/ndarray.c
msgid "indices must be integers, slices, or Boolean lists"
msgstr ""
@ -3630,10 +3618,6 @@ msgstr ""
msgid "no such attribute"
msgstr "attributo inesistente"
#: shared-bindings/usb_hid/__init__.c
msgid "non-Device in %q"
msgstr ""
#: ports/espressif/common-hal/_bleio/Connection.c
#: ports/nrf/common-hal/_bleio/Connection.c
msgid "non-UUID found in service_uuids_whitelist"
@ -3761,10 +3745,20 @@ msgid "offset out of bounds"
msgstr "indirizzo fuori limite"
#: ports/nrf/common-hal/audiobusio/PDMIn.c
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only bit_depth=16 is supported"
msgstr ""
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only mono is supported"
msgstr ""
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only oversample=64 is supported"
msgstr ""
#: ports/nrf/common-hal/audiobusio/PDMIn.c
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only sample_rate=16000 is supported"
msgstr ""
@ -3913,11 +3907,6 @@ msgstr ""
msgid "relative import"
msgstr "importazione relativa"
#: py/obj.c
#, c-format
msgid "requested length %d but object has length %d"
msgstr "lunghezza %d richiesta ma l'oggetto ha lunghezza %d"
#: extmod/ulab/code/ndarray_operators.c
msgid "results cannot be cast to specified type"
msgstr ""
@ -3981,10 +3970,6 @@ msgstr "segno non permesso nello spcificatore di formato della stringa"
msgid "sign not allowed with integer format specifier 'c'"
msgstr "segno non permesso nello spcificatore di formato 'c' della stringa"
#: py/objstr.c
msgid "single '}' encountered in format string"
msgstr "'}' singolo presente nella stringa di formattazione"
#: extmod/ulab/code/ulab_tools.c
msgid "size is defined for ndarrays only"
msgstr ""
@ -4097,10 +4082,6 @@ msgstr "errore di sintassi nel JSON"
msgid "syntax error in uctypes descriptor"
msgstr "errore di sintassi nel descrittore uctypes"
#: shared-bindings/touchio/TouchIn.c
msgid "threshold must be in the range 0-65536"
msgstr "la soglia deve essere nell'intervallo 0-65536"
#: shared-bindings/time/__init__.c
msgid "time.struct_time() takes a 9-sequence"
msgstr ""
@ -4112,10 +4093,6 @@ msgstr ""
msgid "timeout duration exceeded the maximum supported value"
msgstr ""
#: shared-bindings/busio/UART.c
msgid "timeout must be 0.0-100.0 seconds"
msgstr ""
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "timeout must be < 655.35 secs"
msgstr ""
@ -4169,10 +4146,6 @@ msgstr ""
msgid "trapz is defined for 1D iterables"
msgstr ""
#: py/obj.c
msgid "tuple/list has wrong length"
msgstr "tupla/lista ha la lunghezza sbagliata"
#: ports/espressif/common-hal/canio/CAN.c
#, c-format
msgid "twai_driver_install returned esp-idf error #%d"
@ -4251,8 +4224,9 @@ msgid "unknown type '%q'"
msgstr "tipo '%q' sconosciuto"
#: py/objstr.c
msgid "unmatched '{' in format"
msgstr "'{' spaiato nella stringa di formattazione"
#, c-format
msgid "unmatched '%c' in format"
msgstr ""
#: py/objtype.c py/runtime.c
msgid "unreadable attribute"
@ -4322,10 +4296,6 @@ msgstr ""
msgid "watchdog not initialized"
msgstr ""
#: shared-bindings/watchdog/WatchDogTimer.c
msgid "watchdog timeout must be greater than 0"
msgstr ""
#: shared-bindings/is31fl3741/FrameBuffer.c
msgid "width must be greater than zero"
msgstr ""
@ -4415,6 +4385,28 @@ msgstr ""
msgid "zi must be of shape (n_section, 2)"
msgstr ""
#~ msgid "%q indices must be integers, not %s"
#~ msgstr "gli indici %q devono essere interi, non %s"
#~ msgid "indices must be integers"
#~ msgstr "gli indici devono essere interi"
#, c-format
#~ msgid "requested length %d but object has length %d"
#~ msgstr "lunghezza %d richiesta ma l'oggetto ha lunghezza %d"
#~ msgid "single '}' encountered in format string"
#~ msgstr "'}' singolo presente nella stringa di formattazione"
#~ msgid "threshold must be in the range 0-65536"
#~ msgstr "la soglia deve essere nell'intervallo 0-65536"
#~ msgid "tuple/list has wrong length"
#~ msgstr "tupla/lista ha la lunghezza sbagliata"
#~ msgid "unmatched '{' in format"
#~ msgstr "'{' spaiato nella stringa di formattazione"
#~ msgid "To exit, please reset the board without "
#~ msgstr "Per uscire resettare la scheda senza "

View File

@ -115,10 +115,6 @@ msgstr "%qは使用中"
msgid "%q index out of range"
msgstr "%q インデックスは範囲外"
#: py/obj.c
msgid "%q indices must be integers, not %s"
msgstr ""
#: shared-module/bitbangio/SPI.c
msgid "%q init failed"
msgstr ""
@ -2355,10 +2351,6 @@ msgstr "WatchDogTimerは現在動作していません"
msgid "WatchDogTimer.mode cannot be changed once set to WatchDogMode.RESET"
msgstr "WatchDogTimer.modeはいったんWatchDogMode.RESETに設定すると変更不可"
#: shared-bindings/watchdog/WatchDogTimer.c
msgid "WatchDogTimer.timeout must be greater than 0"
msgstr "WatchDogTimer.timeoutは0以上でなければなりません"
#: py/builtinhelp.c
#, c-format
msgid ""
@ -3184,10 +3176,6 @@ msgstr ""
msgid "index out of range"
msgstr "インデクスが範囲外"
#: py/obj.c
msgid "indices must be integers"
msgstr "インデクスは整数でなければなりません"
#: extmod/ulab/code/ndarray.c
msgid "indices must be integers, slices, or Boolean lists"
msgstr ""
@ -3605,10 +3593,6 @@ msgstr "SDカードからの応答がありません"
msgid "no such attribute"
msgstr "指定の属性はありません"
#: shared-bindings/usb_hid/__init__.c
msgid "non-Device in %q"
msgstr ""
#: ports/espressif/common-hal/_bleio/Connection.c
#: ports/nrf/common-hal/_bleio/Connection.c
msgid "non-UUID found in service_uuids_whitelist"
@ -3733,10 +3717,20 @@ msgid "offset out of bounds"
msgstr ""
#: ports/nrf/common-hal/audiobusio/PDMIn.c
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only bit_depth=16 is supported"
msgstr "bit_depth=16のみ対応しています"
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only mono is supported"
msgstr ""
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only oversample=64 is supported"
msgstr ""
#: ports/nrf/common-hal/audiobusio/PDMIn.c
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only sample_rate=16000 is supported"
msgstr ""
@ -3884,11 +3878,6 @@ msgstr "実数部と虚数部は同じ長さでなければなりません"
msgid "relative import"
msgstr "相対インポート"
#: py/obj.c
#, c-format
msgid "requested length %d but object has length %d"
msgstr "必要な長さは%dですがオブジェクトの長さは%d"
#: extmod/ulab/code/ndarray_operators.c
msgid "results cannot be cast to specified type"
msgstr ""
@ -3952,10 +3941,6 @@ msgstr "文字列フォーマット指定子で符号は使えません"
msgid "sign not allowed with integer format specifier 'c'"
msgstr "整数フォーマット指定子'c'で符号は使えません"
#: py/objstr.c
msgid "single '}' encountered in format string"
msgstr "文字列フォーマット中に孤立した '}' があります"
#: extmod/ulab/code/ulab_tools.c
msgid "size is defined for ndarrays only"
msgstr ""
@ -4068,10 +4053,6 @@ msgstr "JSONに構文エラーがあります"
msgid "syntax error in uctypes descriptor"
msgstr "uctypedディスクリプタの構文エラー"
#: shared-bindings/touchio/TouchIn.c
msgid "threshold must be in the range 0-65536"
msgstr "threshouldは0から65536まで"
#: shared-bindings/time/__init__.c
msgid "time.struct_time() takes a 9-sequence"
msgstr "time.struct_time()は9要素のシーケンスを受け取ります"
@ -4083,10 +4064,6 @@ msgstr "time.struct_time()は9要素のシーケンスを受け取ります"
msgid "timeout duration exceeded the maximum supported value"
msgstr "タイムアウト長は対応する最大値を超えています"
#: shared-bindings/busio/UART.c
msgid "timeout must be 0.0-100.0 seconds"
msgstr "timeoutは0.0〜100.0秒でなければなりません"
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "timeout must be < 655.35 secs"
msgstr ""
@ -4140,10 +4117,6 @@ msgstr "trapzは同じ長さの1次元arrayに対して定義されています"
msgid "trapz is defined for 1D iterables"
msgstr ""
#: py/obj.c
msgid "tuple/list has wrong length"
msgstr "タプル/リストの長さが正しくありません"
#: ports/espressif/common-hal/canio/CAN.c
#, c-format
msgid "twai_driver_install returned esp-idf error #%d"
@ -4222,8 +4195,9 @@ msgid "unknown type '%q'"
msgstr "不明な型 '%q'"
#: py/objstr.c
msgid "unmatched '{' in format"
msgstr "書式中にマッチしない '{' があります"
#, c-format
msgid "unmatched '%c' in format"
msgstr ""
#: py/objtype.c py/runtime.c
msgid "unreadable attribute"
@ -4293,10 +4267,6 @@ msgstr "value_countは0より大きくなければなりません"
msgid "watchdog not initialized"
msgstr ""
#: shared-bindings/watchdog/WatchDogTimer.c
msgid "watchdog timeout must be greater than 0"
msgstr "watchdogのtimeoutは0以上でなければなりません"
#: shared-bindings/is31fl3741/FrameBuffer.c
msgid "width must be greater than zero"
msgstr ""
@ -4384,6 +4354,34 @@ msgstr "ziはfloat値でなければなりません"
msgid "zi must be of shape (n_section, 2)"
msgstr ""
#~ msgid "WatchDogTimer.timeout must be greater than 0"
#~ msgstr "WatchDogTimer.timeoutは0以上でなければなりません"
#~ msgid "indices must be integers"
#~ msgstr "インデクスは整数でなければなりません"
#, c-format
#~ msgid "requested length %d but object has length %d"
#~ msgstr "必要な長さは%dですがオブジェクトの長さは%d"
#~ msgid "single '}' encountered in format string"
#~ msgstr "文字列フォーマット中に孤立した '}' があります"
#~ msgid "threshold must be in the range 0-65536"
#~ msgstr "threshouldは0から65536まで"
#~ msgid "timeout must be 0.0-100.0 seconds"
#~ msgstr "timeoutは0.0〜100.0秒でなければなりません"
#~ msgid "tuple/list has wrong length"
#~ msgstr "タプル/リストの長さが正しくありません"
#~ msgid "unmatched '{' in format"
#~ msgstr "書式中にマッチしない '{' があります"
#~ msgid "watchdog timeout must be greater than 0"
#~ msgstr "watchdogのtimeoutは0以上でなければなりません"
#~ msgid "Stream missing readinto() or write() method."
#~ msgstr "ストリームにreadinto()またはwrite()メソッドがありません"

View File

@ -111,10 +111,6 @@ msgstr "%q 사용 중입니다"
msgid "%q index out of range"
msgstr "%q 인덱스 범위를 벗어났습니다"
#: py/obj.c
msgid "%q indices must be integers, not %s"
msgstr "%q 인덱스는 %s 가 아닌 정수 여야합니다"
#: shared-module/bitbangio/SPI.c
msgid "%q init failed"
msgstr ""
@ -2345,10 +2341,6 @@ msgstr ""
msgid "WatchDogTimer.mode cannot be changed once set to WatchDogMode.RESET"
msgstr ""
#: shared-bindings/watchdog/WatchDogTimer.c
msgid "WatchDogTimer.timeout must be greater than 0"
msgstr ""
#: py/builtinhelp.c
#, c-format
msgid ""
@ -3170,10 +3162,6 @@ msgstr ""
msgid "index out of range"
msgstr ""
#: py/obj.c
msgid "indices must be integers"
msgstr ""
#: extmod/ulab/code/ndarray.c
msgid "indices must be integers, slices, or Boolean lists"
msgstr ""
@ -3590,10 +3578,6 @@ msgstr ""
msgid "no such attribute"
msgstr ""
#: shared-bindings/usb_hid/__init__.c
msgid "non-Device in %q"
msgstr ""
#: ports/espressif/common-hal/_bleio/Connection.c
#: ports/nrf/common-hal/_bleio/Connection.c
msgid "non-UUID found in service_uuids_whitelist"
@ -3718,10 +3702,20 @@ msgid "offset out of bounds"
msgstr ""
#: ports/nrf/common-hal/audiobusio/PDMIn.c
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only bit_depth=16 is supported"
msgstr ""
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only mono is supported"
msgstr ""
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only oversample=64 is supported"
msgstr ""
#: ports/nrf/common-hal/audiobusio/PDMIn.c
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only sample_rate=16000 is supported"
msgstr ""
@ -3867,11 +3861,6 @@ msgstr ""
msgid "relative import"
msgstr ""
#: py/obj.c
#, c-format
msgid "requested length %d but object has length %d"
msgstr ""
#: extmod/ulab/code/ndarray_operators.c
msgid "results cannot be cast to specified type"
msgstr ""
@ -3935,10 +3924,6 @@ msgstr ""
msgid "sign not allowed with integer format specifier 'c'"
msgstr ""
#: py/objstr.c
msgid "single '}' encountered in format string"
msgstr ""
#: extmod/ulab/code/ulab_tools.c
msgid "size is defined for ndarrays only"
msgstr ""
@ -4051,10 +4036,6 @@ msgstr ""
msgid "syntax error in uctypes descriptor"
msgstr ""
#: shared-bindings/touchio/TouchIn.c
msgid "threshold must be in the range 0-65536"
msgstr ""
#: shared-bindings/time/__init__.c
msgid "time.struct_time() takes a 9-sequence"
msgstr ""
@ -4066,10 +4047,6 @@ msgstr ""
msgid "timeout duration exceeded the maximum supported value"
msgstr ""
#: shared-bindings/busio/UART.c
msgid "timeout must be 0.0-100.0 seconds"
msgstr ""
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "timeout must be < 655.35 secs"
msgstr ""
@ -4123,10 +4100,6 @@ msgstr ""
msgid "trapz is defined for 1D iterables"
msgstr ""
#: py/obj.c
msgid "tuple/list has wrong length"
msgstr ""
#: ports/espressif/common-hal/canio/CAN.c
#, c-format
msgid "twai_driver_install returned esp-idf error #%d"
@ -4205,7 +4178,8 @@ msgid "unknown type '%q'"
msgstr ""
#: py/objstr.c
msgid "unmatched '{' in format"
#, c-format
msgid "unmatched '%c' in format"
msgstr ""
#: py/objtype.c py/runtime.c
@ -4276,10 +4250,6 @@ msgstr ""
msgid "watchdog not initialized"
msgstr ""
#: shared-bindings/watchdog/WatchDogTimer.c
msgid "watchdog timeout must be greater than 0"
msgstr ""
#: shared-bindings/is31fl3741/FrameBuffer.c
msgid "width must be greater than zero"
msgstr ""
@ -4367,6 +4337,9 @@ msgstr ""
msgid "zi must be of shape (n_section, 2)"
msgstr ""
#~ msgid "%q indices must be integers, not %s"
#~ msgstr "%q 인덱스는 %s 가 아닌 정수 여야합니다"
#~ msgid "%q must be >= 1"
#~ msgstr "%q 는 >=1이어야합니다"

View File

@ -113,10 +113,6 @@ msgstr "%q in gebruik"
msgid "%q index out of range"
msgstr "%q index buiten bereik"
#: py/obj.c
msgid "%q indices must be integers, not %s"
msgstr "%q indexen moeten integers zijn, niet %s"
#: shared-module/bitbangio/SPI.c
msgid "%q init failed"
msgstr ""
@ -2371,10 +2367,6 @@ msgstr ""
"WatchDogTimer.mode kan niet worden gewijzigd zodra de modus is ingesteld op "
"WatchDogMode.RESET"
#: shared-bindings/watchdog/WatchDogTimer.c
msgid "WatchDogTimer.timeout must be greater than 0"
msgstr "WatchDogTimer.timeout moet groter dan 0 zijn"
#: py/builtinhelp.c
#, c-format
msgid ""
@ -3200,10 +3192,6 @@ msgstr "index is buiten bereik"
msgid "index out of range"
msgstr "index is buiten bereik"
#: py/obj.c
msgid "indices must be integers"
msgstr "indices moeten integers zijn"
#: extmod/ulab/code/ndarray.c
msgid "indices must be integers, slices, or Boolean lists"
msgstr "indices moeten integers, segmenten (slices) of Boolean lijsten zijn"
@ -3623,10 +3611,6 @@ msgstr "geen antwoord van SD kaart"
msgid "no such attribute"
msgstr "niet zo'n attribuut"
#: shared-bindings/usb_hid/__init__.c
msgid "non-Device in %q"
msgstr ""
#: ports/espressif/common-hal/_bleio/Connection.c
#: ports/nrf/common-hal/_bleio/Connection.c
msgid "non-UUID found in service_uuids_whitelist"
@ -3751,10 +3735,20 @@ msgid "offset out of bounds"
msgstr "offset buiten bereik"
#: ports/nrf/common-hal/audiobusio/PDMIn.c
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only bit_depth=16 is supported"
msgstr "alleen bit_depth=16 wordt ondersteund"
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only mono is supported"
msgstr ""
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only oversample=64 is supported"
msgstr ""
#: ports/nrf/common-hal/audiobusio/PDMIn.c
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only sample_rate=16000 is supported"
msgstr "alleen sample_rate=16000 wordt ondersteund"
@ -3900,11 +3894,6 @@ msgstr "reëel en imaginair deel moeten gelijke lengte hebben"
msgid "relative import"
msgstr "relatieve import"
#: py/obj.c
#, c-format
msgid "requested length %d but object has length %d"
msgstr "gevraagde lengte is %d maar object heeft lengte %d"
#: extmod/ulab/code/ndarray_operators.c
msgid "results cannot be cast to specified type"
msgstr "resultaat kan niet naar gespecificeerd type geconverteerd worden"
@ -3968,10 +3957,6 @@ msgstr "teken niet toegestaan in string formaatspecificatie"
msgid "sign not allowed with integer format specifier 'c'"
msgstr "teken niet toegestaan bij integer formaatspecificatie 'c'"
#: py/objstr.c
msgid "single '}' encountered in format string"
msgstr "enkele '}' aangetroffen in formaat tekenreeks (string)"
#: extmod/ulab/code/ulab_tools.c
msgid "size is defined for ndarrays only"
msgstr "omvang is alleen voor ndarrays gedefinieerd"
@ -4084,10 +4069,6 @@ msgstr "syntaxisfout in JSON"
msgid "syntax error in uctypes descriptor"
msgstr "syntaxisfout in uctypes aanduiding"
#: shared-bindings/touchio/TouchIn.c
msgid "threshold must be in the range 0-65536"
msgstr "drempelwaarde moet in het bereik 0-65536 liggen"
#: shared-bindings/time/__init__.c
msgid "time.struct_time() takes a 9-sequence"
msgstr "time.struct_time() accepteert een 9-rij"
@ -4099,10 +4080,6 @@ msgstr "time.struct_time() accepteert een 9-rij"
msgid "timeout duration exceeded the maximum supported value"
msgstr "time-outduur is groter dan de ondersteunde maximale waarde"
#: shared-bindings/busio/UART.c
msgid "timeout must be 0.0-100.0 seconds"
msgstr "timeout moet tussen 0.0 en 100.0 seconden zijn"
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "timeout must be < 655.35 secs"
msgstr ""
@ -4156,10 +4133,6 @@ msgstr "trapz is gedefinieerd voor eendimensionale arrays van gelijke lengte"
msgid "trapz is defined for 1D iterables"
msgstr ""
#: py/obj.c
msgid "tuple/list has wrong length"
msgstr "tuple of lijst heeft onjuiste lengte"
#: ports/espressif/common-hal/canio/CAN.c
#, c-format
msgid "twai_driver_install returned esp-idf error #%d"
@ -4238,8 +4211,9 @@ msgid "unknown type '%q'"
msgstr "onbekend type '%q'"
#: py/objstr.c
msgid "unmatched '{' in format"
msgstr "'{' zonder overeenkomst in formaat"
#, c-format
msgid "unmatched '%c' in format"
msgstr ""
#: py/objtype.c py/runtime.c
msgid "unreadable attribute"
@ -4309,10 +4283,6 @@ msgstr "value_count moet groter dan 0 zijn"
msgid "watchdog not initialized"
msgstr "watchdog niet geïnitialiseerd"
#: shared-bindings/watchdog/WatchDogTimer.c
msgid "watchdog timeout must be greater than 0"
msgstr "watchdog time-out moet groter zijn dan 0"
#: shared-bindings/is31fl3741/FrameBuffer.c
msgid "width must be greater than zero"
msgstr "breedte moet groter dan nul zijn"
@ -4400,6 +4370,37 @@ msgstr "zi moet van type float zijn"
msgid "zi must be of shape (n_section, 2)"
msgstr "zi moet vorm (n_section, 2) hebben"
#~ msgid "%q indices must be integers, not %s"
#~ msgstr "%q indexen moeten integers zijn, niet %s"
#~ msgid "WatchDogTimer.timeout must be greater than 0"
#~ msgstr "WatchDogTimer.timeout moet groter dan 0 zijn"
#~ msgid "indices must be integers"
#~ msgstr "indices moeten integers zijn"
#, c-format
#~ msgid "requested length %d but object has length %d"
#~ msgstr "gevraagde lengte is %d maar object heeft lengte %d"
#~ msgid "single '}' encountered in format string"
#~ msgstr "enkele '}' aangetroffen in formaat tekenreeks (string)"
#~ msgid "threshold must be in the range 0-65536"
#~ msgstr "drempelwaarde moet in het bereik 0-65536 liggen"
#~ msgid "timeout must be 0.0-100.0 seconds"
#~ msgstr "timeout moet tussen 0.0 en 100.0 seconden zijn"
#~ msgid "tuple/list has wrong length"
#~ msgstr "tuple of lijst heeft onjuiste lengte"
#~ msgid "unmatched '{' in format"
#~ msgstr "'{' zonder overeenkomst in formaat"
#~ msgid "watchdog timeout must be greater than 0"
#~ msgstr "watchdog time-out moet groter zijn dan 0"
#~ msgid "To exit, please reset the board without "
#~ msgstr "Om te beëindigen, reset het bord zonder "

View File

@ -115,10 +115,6 @@ msgstr "%q w użyciu"
msgid "%q index out of range"
msgstr "%q poza zakresem"
#: py/obj.c
msgid "%q indices must be integers, not %s"
msgstr "%q indeks musi być liczbą całkowitą, a nie %s"
#: shared-module/bitbangio/SPI.c
msgid "%q init failed"
msgstr ""
@ -2352,10 +2348,6 @@ msgstr ""
msgid "WatchDogTimer.mode cannot be changed once set to WatchDogMode.RESET"
msgstr ""
#: shared-bindings/watchdog/WatchDogTimer.c
msgid "WatchDogTimer.timeout must be greater than 0"
msgstr "WatchDogTimer.timeout musi być większe od 0"
#: py/builtinhelp.c
#, c-format
msgid ""
@ -3178,10 +3170,6 @@ msgstr "indeks jest poza zakresem"
msgid "index out of range"
msgstr "indeks poza zakresem"
#: py/obj.c
msgid "indices must be integers"
msgstr "indeksy muszą być całkowite"
#: extmod/ulab/code/ndarray.c
msgid "indices must be integers, slices, or Boolean lists"
msgstr ""
@ -3598,10 +3586,6 @@ msgstr ""
msgid "no such attribute"
msgstr "nie ma takiego atrybutu"
#: shared-bindings/usb_hid/__init__.c
msgid "non-Device in %q"
msgstr ""
#: ports/espressif/common-hal/_bleio/Connection.c
#: ports/nrf/common-hal/_bleio/Connection.c
msgid "non-UUID found in service_uuids_whitelist"
@ -3726,10 +3710,20 @@ msgid "offset out of bounds"
msgstr "offset poza zakresem"
#: ports/nrf/common-hal/audiobusio/PDMIn.c
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only bit_depth=16 is supported"
msgstr "obsługiwane jest tylko bit_depth=16"
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only mono is supported"
msgstr ""
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only oversample=64 is supported"
msgstr ""
#: ports/nrf/common-hal/audiobusio/PDMIn.c
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only sample_rate=16000 is supported"
msgstr "obsługiwane jest tylko sample_rate=16000"
@ -3876,11 +3870,6 @@ msgstr "rzeczywiste i urojone części muszą mieć jednakową długość"
msgid "relative import"
msgstr "relatywny import"
#: py/obj.c
#, c-format
msgid "requested length %d but object has length %d"
msgstr "zażądano długości %d ale obiekt ma długość %d"
#: extmod/ulab/code/ndarray_operators.c
msgid "results cannot be cast to specified type"
msgstr ""
@ -3944,10 +3933,6 @@ msgstr "znak jest niedopuszczalny w specyfikacji formatu łańcucha"
msgid "sign not allowed with integer format specifier 'c'"
msgstr "znak jest niedopuszczalny w specyfikacji 'c'"
#: py/objstr.c
msgid "single '}' encountered in format string"
msgstr "pojedynczy '}' w specyfikacji formatu"
#: extmod/ulab/code/ulab_tools.c
msgid "size is defined for ndarrays only"
msgstr ""
@ -4060,10 +4045,6 @@ msgstr "błąd składni w JSON"
msgid "syntax error in uctypes descriptor"
msgstr "błąd składni w deskryptorze uctypes"
#: shared-bindings/touchio/TouchIn.c
msgid "threshold must be in the range 0-65536"
msgstr "threshold musi być w zakresie 0-65536"
#: shared-bindings/time/__init__.c
msgid "time.struct_time() takes a 9-sequence"
msgstr "time.struct_time() wymaga 9-elementowej sekwencji"
@ -4075,10 +4056,6 @@ msgstr "time.struct_time() wymaga 9-elementowej sekwencji"
msgid "timeout duration exceeded the maximum supported value"
msgstr ""
#: shared-bindings/busio/UART.c
msgid "timeout must be 0.0-100.0 seconds"
msgstr ""
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "timeout must be < 655.35 secs"
msgstr ""
@ -4132,10 +4109,6 @@ msgstr ""
msgid "trapz is defined for 1D iterables"
msgstr ""
#: py/obj.c
msgid "tuple/list has wrong length"
msgstr "krotka/lista ma złą długość"
#: ports/espressif/common-hal/canio/CAN.c
#, c-format
msgid "twai_driver_install returned esp-idf error #%d"
@ -4214,8 +4187,9 @@ msgid "unknown type '%q'"
msgstr "zły typ '%q'"
#: py/objstr.c
msgid "unmatched '{' in format"
msgstr "niepasujące '{' for formacie"
#, c-format
msgid "unmatched '%c' in format"
msgstr ""
#: py/objtype.c py/runtime.c
msgid "unreadable attribute"
@ -4285,10 +4259,6 @@ msgstr "value_count musi być > 0"
msgid "watchdog not initialized"
msgstr ""
#: shared-bindings/watchdog/WatchDogTimer.c
msgid "watchdog timeout must be greater than 0"
msgstr ""
#: shared-bindings/is31fl3741/FrameBuffer.c
msgid "width must be greater than zero"
msgstr "szerokość musi być większa niż zero"
@ -4376,6 +4346,31 @@ msgstr ""
msgid "zi must be of shape (n_section, 2)"
msgstr ""
#~ msgid "%q indices must be integers, not %s"
#~ msgstr "%q indeks musi być liczbą całkowitą, a nie %s"
#~ msgid "WatchDogTimer.timeout must be greater than 0"
#~ msgstr "WatchDogTimer.timeout musi być większe od 0"
#~ msgid "indices must be integers"
#~ msgstr "indeksy muszą być całkowite"
#, c-format
#~ msgid "requested length %d but object has length %d"
#~ msgstr "zażądano długości %d ale obiekt ma długość %d"
#~ msgid "single '}' encountered in format string"
#~ msgstr "pojedynczy '}' w specyfikacji formatu"
#~ msgid "threshold must be in the range 0-65536"
#~ msgstr "threshold musi być w zakresie 0-65536"
#~ msgid "tuple/list has wrong length"
#~ msgstr "krotka/lista ma złą długość"
#~ msgid "unmatched '{' in format"
#~ msgstr "niepasujące '{' for formacie"
#~ msgid "To exit, please reset the board without "
#~ msgstr "By wyjść, proszę zresetować płytkę bez "

View File

@ -6,7 +6,7 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-01-04 12:55-0600\n"
"PO-Revision-Date: 2022-11-02 09:33+0000\n"
"PO-Revision-Date: 2022-11-09 10:48+0000\n"
"Last-Translator: Wellington Terumi Uemura <wellingtonuemura@gmail.com>\n"
"Language-Team: \n"
"Language: pt_BR\n"
@ -14,7 +14,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 4.14.2-dev\n"
"X-Generator: Weblate 4.15-dev\n"
#: main.c
msgid ""
@ -119,10 +119,6 @@ msgstr "%q em uso"
msgid "%q index out of range"
msgstr "O índice %q está fora do intervalo"
#: py/obj.c
msgid "%q indices must be integers, not %s"
msgstr "Os índices %q devem ser inteiros, e não %s"
#: shared-module/bitbangio/SPI.c
msgid "%q init failed"
msgstr "a inicialização do %q falhou"
@ -2417,10 +2413,6 @@ msgstr ""
"O WatchDogTimer.mode não pode ser alterado uma vez definido para "
"WatchDogMode.RESET"
#: shared-bindings/watchdog/WatchDogTimer.c
msgid "WatchDogTimer.timeout must be greater than 0"
msgstr "O WatchDogTimer.timeout deve ser maior que 0"
#: py/builtinhelp.c
#, c-format
msgid ""
@ -3260,10 +3252,6 @@ msgstr "o índice está fora dos limites"
msgid "index out of range"
msgstr "Índice fora do intervalo"
#: py/obj.c
msgid "indices must be integers"
msgstr "os índices devem ser inteiros"
#: extmod/ulab/code/ndarray.c
msgid "indices must be integers, slices, or Boolean lists"
msgstr "os índices devem ser números inteiros, fatias ou listas booleanas"
@ -3686,10 +3674,6 @@ msgstr "não houve resposta do cartão SD"
msgid "no such attribute"
msgstr "não há tal atributo"
#: shared-bindings/usb_hid/__init__.c
msgid "non-Device in %q"
msgstr "não dispositivo em %q"
#: ports/espressif/common-hal/_bleio/Connection.c
#: ports/nrf/common-hal/_bleio/Connection.c
msgid "non-UUID found in service_uuids_whitelist"
@ -3814,10 +3798,20 @@ msgid "offset out of bounds"
msgstr "desvio fora dos limites"
#: ports/nrf/common-hal/audiobusio/PDMIn.c
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only bit_depth=16 is supported"
msgstr "apenas bit_depth = 16 é compatível"
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only mono is supported"
msgstr ""
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only oversample=64 is supported"
msgstr ""
#: ports/nrf/common-hal/audiobusio/PDMIn.c
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only sample_rate=16000 is supported"
msgstr "apenas sample_rate = 16000 é compatível"
@ -3968,11 +3962,6 @@ msgstr "partes reais e imaginárias devem ter o mesmo comprimento"
msgid "relative import"
msgstr "importação relativa"
#: py/obj.c
#, c-format
msgid "requested length %d but object has length %d"
msgstr "o comprimento solicitado %d, porém o objeto tem comprimento %d"
#: extmod/ulab/code/ndarray_operators.c
msgid "results cannot be cast to specified type"
msgstr "os resultados não podem ser lançados para um determinado tipo"
@ -4036,10 +4025,6 @@ msgstr "sinal não permitido no especificador do formato da sequência"
msgid "sign not allowed with integer format specifier 'c'"
msgstr "sinal não permitido com o especificador no formato inteiro 'c'"
#: py/objstr.c
msgid "single '}' encountered in format string"
msgstr "único '}' encontrado na string do formato"
#: extmod/ulab/code/ulab_tools.c
msgid "size is defined for ndarrays only"
msgstr "o tamanho é definido apenas para os ndarrays"
@ -4152,10 +4137,6 @@ msgstr "erro de sintaxe no JSON"
msgid "syntax error in uctypes descriptor"
msgstr "houve um erro de sintaxe no descritor uctypes"
#: shared-bindings/touchio/TouchIn.c
msgid "threshold must be in the range 0-65536"
msgstr "Limite deve estar no alcance de 0-65536"
#: shared-bindings/time/__init__.c
msgid "time.struct_time() takes a 9-sequence"
msgstr "time.struct_time() leva uma sequência com 9"
@ -4167,10 +4148,6 @@ msgstr "time.struct_time() leva uma sequência com 9"
msgid "timeout duration exceeded the maximum supported value"
msgstr "a duração do tempo limite excedeu o valor máximo suportado"
#: shared-bindings/busio/UART.c
msgid "timeout must be 0.0-100.0 seconds"
msgstr "o tempo limite deve ser entre 0.0 a 100.0 segundos"
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "timeout must be < 655.35 secs"
msgstr "o tempo limite deve ser < 655.35 seg"
@ -4224,10 +4201,6 @@ msgstr "o trapz está definido para 1D arrays de igual tamanho"
msgid "trapz is defined for 1D iterables"
msgstr "o trapz é definido para iteráveis 1D"
#: py/obj.c
msgid "tuple/list has wrong length"
msgstr "a tupla/lista está com tamanho incorreto"
#: ports/espressif/common-hal/canio/CAN.c
#, c-format
msgid "twai_driver_install returned esp-idf error #%d"
@ -4306,8 +4279,9 @@ msgid "unknown type '%q'"
msgstr "tipo desconhecido '%q'"
#: py/objstr.c
msgid "unmatched '{' in format"
msgstr "um '{' sem par no formato"
#, c-format
msgid "unmatched '%c' in format"
msgstr "'%c' sem correspondência no formato"
#: py/objtype.c py/runtime.c
msgid "unreadable attribute"
@ -4377,10 +4351,6 @@ msgstr "o value_count deve ser > 0"
msgid "watchdog not initialized"
msgstr "o watchdog não foi inicializado"
#: shared-bindings/watchdog/WatchDogTimer.c
msgid "watchdog timeout must be greater than 0"
msgstr "o tempo limite do watchdog deve ser maior que 0"
#: shared-bindings/is31fl3741/FrameBuffer.c
msgid "width must be greater than zero"
msgstr "a largura deve ser maior que zero"
@ -4468,6 +4438,40 @@ msgstr "zi deve ser de um tipo float"
msgid "zi must be of shape (n_section, 2)"
msgstr "zi deve estar na forma (n_section, 2)"
#~ msgid "%q indices must be integers, not %s"
#~ msgstr "Os índices %q devem ser inteiros, e não %s"
#~ msgid "WatchDogTimer.timeout must be greater than 0"
#~ msgstr "O WatchDogTimer.timeout deve ser maior que 0"
#~ msgid "indices must be integers"
#~ msgstr "os índices devem ser inteiros"
#~ msgid "non-Device in %q"
#~ msgstr "não dispositivo em %q"
#, c-format
#~ msgid "requested length %d but object has length %d"
#~ msgstr "o comprimento solicitado %d, porém o objeto tem comprimento %d"
#~ msgid "single '}' encountered in format string"
#~ msgstr "único '}' encontrado na string do formato"
#~ msgid "threshold must be in the range 0-65536"
#~ msgstr "Limite deve estar no alcance de 0-65536"
#~ msgid "timeout must be 0.0-100.0 seconds"
#~ msgstr "o tempo limite deve ser entre 0.0 a 100.0 segundos"
#~ msgid "tuple/list has wrong length"
#~ msgstr "a tupla/lista está com tamanho incorreto"
#~ msgid "unmatched '{' in format"
#~ msgstr "um '{' sem par no formato"
#~ msgid "watchdog timeout must be greater than 0"
#~ msgstr "o tempo limite do watchdog deve ser maior que 0"
#~ msgid "To exit, please reset the board without "
#~ msgstr "Para sair, por favor, reinicie a placa sem "

View File

@ -118,10 +118,6 @@ msgstr "%q используется"
msgid "%q index out of range"
msgstr "Индекс %q вне диапазона"
#: py/obj.c
msgid "%q indices must be integers, not %s"
msgstr "Индексы %q должны быть целыми числами, а не %s"
#: shared-module/bitbangio/SPI.c
msgid "%q init failed"
msgstr ""
@ -2390,10 +2386,6 @@ msgstr ""
msgid "WatchDogTimer.mode cannot be changed once set to WatchDogMode.RESET"
msgstr ""
#: shared-bindings/watchdog/WatchDogTimer.c
msgid "WatchDogTimer.timeout must be greater than 0"
msgstr ""
#: py/builtinhelp.c
#, c-format
msgid ""
@ -3215,10 +3207,6 @@ msgstr ""
msgid "index out of range"
msgstr ""
#: py/obj.c
msgid "indices must be integers"
msgstr ""
#: extmod/ulab/code/ndarray.c
msgid "indices must be integers, slices, or Boolean lists"
msgstr ""
@ -3635,10 +3623,6 @@ msgstr ""
msgid "no such attribute"
msgstr ""
#: shared-bindings/usb_hid/__init__.c
msgid "non-Device in %q"
msgstr ""
#: ports/espressif/common-hal/_bleio/Connection.c
#: ports/nrf/common-hal/_bleio/Connection.c
msgid "non-UUID found in service_uuids_whitelist"
@ -3763,10 +3747,20 @@ msgid "offset out of bounds"
msgstr ""
#: ports/nrf/common-hal/audiobusio/PDMIn.c
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only bit_depth=16 is supported"
msgstr ""
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only mono is supported"
msgstr ""
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only oversample=64 is supported"
msgstr ""
#: ports/nrf/common-hal/audiobusio/PDMIn.c
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only sample_rate=16000 is supported"
msgstr ""
@ -3912,11 +3906,6 @@ msgstr ""
msgid "relative import"
msgstr ""
#: py/obj.c
#, c-format
msgid "requested length %d but object has length %d"
msgstr ""
#: extmod/ulab/code/ndarray_operators.c
msgid "results cannot be cast to specified type"
msgstr ""
@ -3980,10 +3969,6 @@ msgstr ""
msgid "sign not allowed with integer format specifier 'c'"
msgstr ""
#: py/objstr.c
msgid "single '}' encountered in format string"
msgstr ""
#: extmod/ulab/code/ulab_tools.c
msgid "size is defined for ndarrays only"
msgstr ""
@ -4096,10 +4081,6 @@ msgstr ""
msgid "syntax error in uctypes descriptor"
msgstr ""
#: shared-bindings/touchio/TouchIn.c
msgid "threshold must be in the range 0-65536"
msgstr ""
#: shared-bindings/time/__init__.c
msgid "time.struct_time() takes a 9-sequence"
msgstr ""
@ -4111,10 +4092,6 @@ msgstr ""
msgid "timeout duration exceeded the maximum supported value"
msgstr ""
#: shared-bindings/busio/UART.c
msgid "timeout must be 0.0-100.0 seconds"
msgstr ""
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "timeout must be < 655.35 secs"
msgstr ""
@ -4168,10 +4145,6 @@ msgstr ""
msgid "trapz is defined for 1D iterables"
msgstr ""
#: py/obj.c
msgid "tuple/list has wrong length"
msgstr ""
#: ports/espressif/common-hal/canio/CAN.c
#, c-format
msgid "twai_driver_install returned esp-idf error #%d"
@ -4250,7 +4223,8 @@ msgid "unknown type '%q'"
msgstr ""
#: py/objstr.c
msgid "unmatched '{' in format"
#, c-format
msgid "unmatched '%c' in format"
msgstr ""
#: py/objtype.c py/runtime.c
@ -4321,10 +4295,6 @@ msgstr ""
msgid "watchdog not initialized"
msgstr ""
#: shared-bindings/watchdog/WatchDogTimer.c
msgid "watchdog timeout must be greater than 0"
msgstr ""
#: shared-bindings/is31fl3741/FrameBuffer.c
msgid "width must be greater than zero"
msgstr ""
@ -4412,6 +4382,9 @@ msgstr "zi должно быть типа float"
msgid "zi must be of shape (n_section, 2)"
msgstr "zi должен иметь форму (n_section, 2)"
#~ msgid "%q indices must be integers, not %s"
#~ msgstr "Индексы %q должны быть целыми числами, а не %s"
#~ msgid "Firmware image is invalid"
#~ msgstr "Образ прошивки неправильный"

View File

@ -6,7 +6,7 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-01-04 12:55-0600\n"
"PO-Revision-Date: 2022-10-31 13:02+0000\n"
"PO-Revision-Date: 2022-11-09 10:48+0000\n"
"Last-Translator: Jonny Bergdahl <jonny@bergdahl.it>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: sv\n"
@ -14,7 +14,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.14.2-dev\n"
"X-Generator: Weblate 4.15-dev\n"
#: main.c
msgid ""
@ -118,10 +118,6 @@ msgstr "%q används redan"
msgid "%q index out of range"
msgstr "Index %q ligger utanför intervallet"
#: py/obj.c
msgid "%q indices must be integers, not %s"
msgstr "Indexet %q måste vara ett heltal, inte %s"
#: shared-module/bitbangio/SPI.c
msgid "%q init failed"
msgstr "%q init misslyckades"
@ -2389,10 +2385,6 @@ msgid "WatchDogTimer.mode cannot be changed once set to WatchDogMode.RESET"
msgstr ""
"WatchDogTimer.mode kan inte ändras när den är inställd på WatchDogMode.RESET"
#: shared-bindings/watchdog/WatchDogTimer.c
msgid "WatchDogTimer.timeout must be greater than 0"
msgstr "WatchDogTimer.timeout måste vara större än 0"
#: py/builtinhelp.c
#, c-format
msgid ""
@ -3228,10 +3220,6 @@ msgstr "index är utanför gränserna"
msgid "index out of range"
msgstr "index utanför intervallet"
#: py/obj.c
msgid "indices must be integers"
msgstr "index måste vara heltal"
#: extmod/ulab/code/ndarray.c
msgid "indices must be integers, slices, or Boolean lists"
msgstr "index måste vara heltal, slices, eller Boolean-listor"
@ -3651,10 +3639,6 @@ msgstr "inget svar från SD-kort"
msgid "no such attribute"
msgstr "inget sådant attribut"
#: shared-bindings/usb_hid/__init__.c
msgid "non-Device in %q"
msgstr "icke-enhet i %q"
#: ports/espressif/common-hal/_bleio/Connection.c
#: ports/nrf/common-hal/_bleio/Connection.c
msgid "non-UUID found in service_uuids_whitelist"
@ -3779,10 +3763,20 @@ msgid "offset out of bounds"
msgstr "offset utanför gränserna"
#: ports/nrf/common-hal/audiobusio/PDMIn.c
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only bit_depth=16 is supported"
msgstr "bara bit_depth=16 stöds"
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only mono is supported"
msgstr ""
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only oversample=64 is supported"
msgstr ""
#: ports/nrf/common-hal/audiobusio/PDMIn.c
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only sample_rate=16000 is supported"
msgstr "enbart sample_rate=16000 stöds"
@ -3929,11 +3923,6 @@ msgstr "verkliga och imaginära delar måste ha samma längd"
msgid "relative import"
msgstr "relativ import"
#: py/obj.c
#, c-format
msgid "requested length %d but object has length %d"
msgstr "begärd längd %d men objektet har längden %d"
#: extmod/ulab/code/ndarray_operators.c
msgid "results cannot be cast to specified type"
msgstr "resultaten kan inte castas till angiven typ"
@ -3997,10 +3986,6 @@ msgstr "tecknet tillåts inte i strängformatspecificerare"
msgid "sign not allowed with integer format specifier 'c'"
msgstr "tecken tillåts inte med heltalsformatspecificeraren 'c'"
#: py/objstr.c
msgid "single '}' encountered in format string"
msgstr "Enkelt '}' påträffades i formatsträngen"
#: extmod/ulab/code/ulab_tools.c
msgid "size is defined for ndarrays only"
msgstr "storlek är enbart definierad ndarrays"
@ -4113,10 +4098,6 @@ msgstr "syntaxfel i JSON"
msgid "syntax error in uctypes descriptor"
msgstr "syntaxfel i uctypes deskriptor"
#: shared-bindings/touchio/TouchIn.c
msgid "threshold must be in the range 0-65536"
msgstr "tröskelvärdet måste ligga i intervallet 0-65536"
#: shared-bindings/time/__init__.c
msgid "time.struct_time() takes a 9-sequence"
msgstr "time.struct_time() kräver en 9-sekvens"
@ -4128,10 +4109,6 @@ msgstr "time.struct_time() kräver en 9-sekvens"
msgid "timeout duration exceeded the maximum supported value"
msgstr "timeout-längd överskred det maximala värde som stöds"
#: shared-bindings/busio/UART.c
msgid "timeout must be 0.0-100.0 seconds"
msgstr "timeout måste vara 0.0-100.0 sekunder"
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "timeout must be < 655.35 secs"
msgstr "timeout måste vara < 655,35 sekunder"
@ -4185,10 +4162,6 @@ msgstr "trapz är definierad för 1D-matriser med samma längd"
msgid "trapz is defined for 1D iterables"
msgstr "trapz är definierat för 1D-iterabla"
#: py/obj.c
msgid "tuple/list has wrong length"
msgstr "tupel/lista har fel längd"
#: ports/espressif/common-hal/canio/CAN.c
#, c-format
msgid "twai_driver_install returned esp-idf error #%d"
@ -4267,8 +4240,9 @@ msgid "unknown type '%q'"
msgstr "okänd typ '%q'"
#: py/objstr.c
msgid "unmatched '{' in format"
msgstr "omatchad '{' i format"
#, c-format
msgid "unmatched '%c' in format"
msgstr "Omatchad '%c' i format"
#: py/objtype.c py/runtime.c
msgid "unreadable attribute"
@ -4338,10 +4312,6 @@ msgstr "value_count måste vara > 0"
msgid "watchdog not initialized"
msgstr "watchdog är inte initierad"
#: shared-bindings/watchdog/WatchDogTimer.c
msgid "watchdog timeout must be greater than 0"
msgstr "watchdog timeout måste vara större än 0"
#: shared-bindings/is31fl3741/FrameBuffer.c
msgid "width must be greater than zero"
msgstr "width måste vara större än noll"
@ -4429,6 +4399,40 @@ msgstr "zi måste vara av typ float"
msgid "zi must be of shape (n_section, 2)"
msgstr "zi måste vara i formen (n_section, 2)"
#~ msgid "%q indices must be integers, not %s"
#~ msgstr "Indexet %q måste vara ett heltal, inte %s"
#~ msgid "WatchDogTimer.timeout must be greater than 0"
#~ msgstr "WatchDogTimer.timeout måste vara större än 0"
#~ msgid "indices must be integers"
#~ msgstr "index måste vara heltal"
#~ msgid "non-Device in %q"
#~ msgstr "icke-enhet i %q"
#, c-format
#~ msgid "requested length %d but object has length %d"
#~ msgstr "begärd längd %d men objektet har längden %d"
#~ msgid "single '}' encountered in format string"
#~ msgstr "Enkelt '}' påträffades i formatsträngen"
#~ msgid "threshold must be in the range 0-65536"
#~ msgstr "tröskelvärdet måste ligga i intervallet 0-65536"
#~ msgid "timeout must be 0.0-100.0 seconds"
#~ msgstr "timeout måste vara 0.0-100.0 sekunder"
#~ msgid "tuple/list has wrong length"
#~ msgstr "tupel/lista har fel längd"
#~ msgid "unmatched '{' in format"
#~ msgstr "omatchad '{' i format"
#~ msgid "watchdog timeout must be greater than 0"
#~ msgstr "watchdog timeout måste vara större än 0"
#~ msgid "To exit, please reset the board without "
#~ msgstr "För att avsluta, gör reset på kortet utan "

View File

@ -122,10 +122,6 @@ msgstr "%q kullanımda"
msgid "%q index out of range"
msgstr "%q indeksi aralık dışında"
#: py/obj.c
msgid "%q indices must be integers, not %s"
msgstr "%q indeksleri integer olmalı, %s değil"
#: shared-module/bitbangio/SPI.c
msgid "%q init failed"
msgstr "%q init başarısız oldu"
@ -2361,10 +2357,6 @@ msgstr ""
msgid "WatchDogTimer.mode cannot be changed once set to WatchDogMode.RESET"
msgstr ""
#: shared-bindings/watchdog/WatchDogTimer.c
msgid "WatchDogTimer.timeout must be greater than 0"
msgstr ""
#: py/builtinhelp.c
#, c-format
msgid ""
@ -3186,10 +3178,6 @@ msgstr ""
msgid "index out of range"
msgstr ""
#: py/obj.c
msgid "indices must be integers"
msgstr ""
#: extmod/ulab/code/ndarray.c
msgid "indices must be integers, slices, or Boolean lists"
msgstr ""
@ -3606,10 +3594,6 @@ msgstr ""
msgid "no such attribute"
msgstr ""
#: shared-bindings/usb_hid/__init__.c
msgid "non-Device in %q"
msgstr ""
#: ports/espressif/common-hal/_bleio/Connection.c
#: ports/nrf/common-hal/_bleio/Connection.c
msgid "non-UUID found in service_uuids_whitelist"
@ -3734,10 +3718,20 @@ msgid "offset out of bounds"
msgstr ""
#: ports/nrf/common-hal/audiobusio/PDMIn.c
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only bit_depth=16 is supported"
msgstr ""
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only mono is supported"
msgstr ""
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only oversample=64 is supported"
msgstr ""
#: ports/nrf/common-hal/audiobusio/PDMIn.c
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only sample_rate=16000 is supported"
msgstr ""
@ -3883,11 +3877,6 @@ msgstr ""
msgid "relative import"
msgstr ""
#: py/obj.c
#, c-format
msgid "requested length %d but object has length %d"
msgstr ""
#: extmod/ulab/code/ndarray_operators.c
msgid "results cannot be cast to specified type"
msgstr ""
@ -3951,10 +3940,6 @@ msgstr ""
msgid "sign not allowed with integer format specifier 'c'"
msgstr ""
#: py/objstr.c
msgid "single '}' encountered in format string"
msgstr ""
#: extmod/ulab/code/ulab_tools.c
msgid "size is defined for ndarrays only"
msgstr ""
@ -4067,10 +4052,6 @@ msgstr ""
msgid "syntax error in uctypes descriptor"
msgstr ""
#: shared-bindings/touchio/TouchIn.c
msgid "threshold must be in the range 0-65536"
msgstr ""
#: shared-bindings/time/__init__.c
msgid "time.struct_time() takes a 9-sequence"
msgstr ""
@ -4082,10 +4063,6 @@ msgstr ""
msgid "timeout duration exceeded the maximum supported value"
msgstr ""
#: shared-bindings/busio/UART.c
msgid "timeout must be 0.0-100.0 seconds"
msgstr ""
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "timeout must be < 655.35 secs"
msgstr ""
@ -4139,10 +4116,6 @@ msgstr ""
msgid "trapz is defined for 1D iterables"
msgstr ""
#: py/obj.c
msgid "tuple/list has wrong length"
msgstr ""
#: ports/espressif/common-hal/canio/CAN.c
#, c-format
msgid "twai_driver_install returned esp-idf error #%d"
@ -4221,7 +4194,8 @@ msgid "unknown type '%q'"
msgstr ""
#: py/objstr.c
msgid "unmatched '{' in format"
#, c-format
msgid "unmatched '%c' in format"
msgstr ""
#: py/objtype.c py/runtime.c
@ -4292,10 +4266,6 @@ msgstr ""
msgid "watchdog not initialized"
msgstr ""
#: shared-bindings/watchdog/WatchDogTimer.c
msgid "watchdog timeout must be greater than 0"
msgstr ""
#: shared-bindings/is31fl3741/FrameBuffer.c
msgid "width must be greater than zero"
msgstr ""
@ -4383,6 +4353,9 @@ msgstr ""
msgid "zi must be of shape (n_section, 2)"
msgstr ""
#~ msgid "%q indices must be integers, not %s"
#~ msgstr "%q indeksleri integer olmalı, %s değil"
#~ msgid "%q must be >= 0"
#~ msgstr "%q >= 0 olmalıdır"

View File

@ -121,10 +121,6 @@ msgstr "%q zhèngzài bèi shǐyòng"
msgid "%q index out of range"
msgstr "%q suǒyǐn chāochū fànwéi"
#: py/obj.c
msgid "%q indices must be integers, not %s"
msgstr "%q suǒyǐn bìxū shì zhěngshù, ér bùshì %s"
#: shared-module/bitbangio/SPI.c
msgid "%q init failed"
msgstr "%q chūshǐhuà shībài"
@ -2392,10 +2388,6 @@ msgid "WatchDogTimer.mode cannot be changed once set to WatchDogMode.RESET"
msgstr ""
"Yīdàn shèzhì wèi WatchDogMode.RESET, zé bùnéng gēnggǎi WatchDogTimer.Mode"
#: shared-bindings/watchdog/WatchDogTimer.c
msgid "WatchDogTimer.timeout must be greater than 0"
msgstr "WatchDogTimer.Timeout bìxū dàyú 0"
#: py/builtinhelp.c
#, c-format
msgid ""
@ -3230,10 +3222,6 @@ msgstr "suǒyǐn chāochū fànwéi"
msgid "index out of range"
msgstr "suǒyǐn chāochū fànwéi"
#: py/obj.c
msgid "indices must be integers"
msgstr "suǒyǐn bìxū shì zhěngshù"
#: extmod/ulab/code/ndarray.c
msgid "indices must be integers, slices, or Boolean lists"
msgstr "suǒyǐn bìxū shì zhěngshù, qiēpiàn huò bù'ěr zhí lièbiǎo"
@ -3651,10 +3639,6 @@ msgstr "SD kǎ wú huíyīng"
msgid "no such attribute"
msgstr "méiyǒu cǐ shǔxìng"
#: shared-bindings/usb_hid/__init__.c
msgid "non-Device in %q"
msgstr "fēi shè bèi zài %q"
#: ports/espressif/common-hal/_bleio/Connection.c
#: ports/nrf/common-hal/_bleio/Connection.c
msgid "non-UUID found in service_uuids_whitelist"
@ -3779,10 +3763,20 @@ msgid "offset out of bounds"
msgstr "piānlí biānjiè"
#: ports/nrf/common-hal/audiobusio/PDMIn.c
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only bit_depth=16 is supported"
msgstr "Jǐn zhīchí wèi shēndù = 16"
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only mono is supported"
msgstr ""
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only oversample=64 is supported"
msgstr ""
#: ports/nrf/common-hal/audiobusio/PDMIn.c
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only sample_rate=16000 is supported"
msgstr "Jǐn zhīchí cǎiyàng lǜ = 16000"
@ -3928,11 +3922,6 @@ msgstr "shí bù hé xū bù bìxū děng zhǎng"
msgid "relative import"
msgstr "xiāngduì dǎorù"
#: py/obj.c
#, c-format
msgid "requested length %d but object has length %d"
msgstr "qǐngqiú chángdù %d dàn duìxiàng chángdù %d"
#: extmod/ulab/code/ndarray_operators.c
msgid "results cannot be cast to specified type"
msgstr "wú fǎ jiāng jié guǒ qiáng zhì zhuǎn huàn dào zhǐ dìng lèi xíng"
@ -3996,10 +3985,6 @@ msgstr "zìfú chuàn géshì shuōmíng fú zhōng bù yǔnxǔ shǐyòng fúhà
msgid "sign not allowed with integer format specifier 'c'"
msgstr "zhěngshù géshì shuōmíng fú 'c' bù yǔnxǔ shǐyòng fúhào"
#: py/objstr.c
msgid "single '}' encountered in format string"
msgstr "zài géshì zìfú chuàn zhōng yù dào de dāngè '}'"
#: extmod/ulab/code/ulab_tools.c
msgid "size is defined for ndarrays only"
msgstr "dàxiǎo jǐn wèi ndarrays dìngyì"
@ -4115,10 +4100,6 @@ msgstr "JSON yǔfǎ cuòwù"
msgid "syntax error in uctypes descriptor"
msgstr "uctypes miáoshù fú zhōng de yǔfǎ cuòwù"
#: shared-bindings/touchio/TouchIn.c
msgid "threshold must be in the range 0-65536"
msgstr "yùzhí bìxū zài fànwéi 0-65536"
#: shared-bindings/time/__init__.c
msgid "time.struct_time() takes a 9-sequence"
msgstr "time.struct_time() xūyào 9 xùliè"
@ -4130,10 +4111,6 @@ msgstr "time.struct_time() xūyào 9 xùliè"
msgid "timeout duration exceeded the maximum supported value"
msgstr "chāoshí shíjiān chāoguò zuìdà zhīchí zhí"
#: shared-bindings/busio/UART.c
msgid "timeout must be 0.0-100.0 seconds"
msgstr "Chāo shí shíjiān bìxū wèi 0.0 Dào 100.0 Miǎo"
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "timeout must be < 655.35 secs"
msgstr "chāo shí bì xū < 655.35 miǎo"
@ -4187,10 +4164,6 @@ msgstr "Trapz shì wèi děng zhǎng de 1D shùzǔ dìngyì de"
msgid "trapz is defined for 1D iterables"
msgstr "tī xíng dìng yì wéi yì wéi kě dié dài duì xiàng"
#: py/obj.c
msgid "tuple/list has wrong length"
msgstr "yuán zǔ/lièbiǎo chángdù cuòwù"
#: ports/espressif/common-hal/canio/CAN.c
#, c-format
msgid "twai_driver_install returned esp-idf error #%d"
@ -4269,8 +4242,9 @@ msgid "unknown type '%q'"
msgstr "wèizhī lèixíng '%q'"
#: py/objstr.c
msgid "unmatched '{' in format"
msgstr "géshì wèi pǐpèi '{'"
#, c-format
msgid "unmatched '%c' in format"
msgstr ""
#: py/objtype.c py/runtime.c
msgid "unreadable attribute"
@ -4340,10 +4314,6 @@ msgstr "zhí jìshù bìxū wèi > 0"
msgid "watchdog not initialized"
msgstr "wèi chū shǐ huà jiān shì qì"
#: shared-bindings/watchdog/WatchDogTimer.c
msgid "watchdog timeout must be greater than 0"
msgstr "kān mén gǒu chāoshí bìxū dàyú 0"
#: shared-bindings/is31fl3741/FrameBuffer.c
msgid "width must be greater than zero"
msgstr "kuāndù bìxū dàyú líng"
@ -4431,6 +4401,40 @@ msgstr "zi bìxū wèi fú diǎn xíng"
msgid "zi must be of shape (n_section, 2)"
msgstr "zi bìxū jùyǒu xíngzhuàng (n_section,2)"
#~ msgid "%q indices must be integers, not %s"
#~ msgstr "%q suǒyǐn bìxū shì zhěngshù, ér bùshì %s"
#~ msgid "WatchDogTimer.timeout must be greater than 0"
#~ msgstr "WatchDogTimer.Timeout bìxū dàyú 0"
#~ msgid "indices must be integers"
#~ msgstr "suǒyǐn bìxū shì zhěngshù"
#~ msgid "non-Device in %q"
#~ msgstr "fēi shè bèi zài %q"
#, c-format
#~ msgid "requested length %d but object has length %d"
#~ msgstr "qǐngqiú chángdù %d dàn duìxiàng chángdù %d"
#~ msgid "single '}' encountered in format string"
#~ msgstr "zài géshì zìfú chuàn zhōng yù dào de dāngè '}'"
#~ msgid "threshold must be in the range 0-65536"
#~ msgstr "yùzhí bìxū zài fànwéi 0-65536"
#~ msgid "timeout must be 0.0-100.0 seconds"
#~ msgstr "Chāo shí shíjiān bìxū wèi 0.0 Dào 100.0 Miǎo"
#~ msgid "tuple/list has wrong length"
#~ msgstr "yuán zǔ/lièbiǎo chángdù cuòwù"
#~ msgid "unmatched '{' in format"
#~ msgstr "géshì wèi pǐpèi '{'"
#~ msgid "watchdog timeout must be greater than 0"
#~ msgstr "kān mén gǒu chāoshí bìxū dàyú 0"
#~ msgid "To exit, please reset the board without "
#~ msgstr "Yào tuìchū, qǐng chóng zhì bǎnkuài ér bùyòng "

View File

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

View File

@ -0,0 +1,45 @@
/*
* This file is part of the MicroPython project, http://micropython.org/
*
* The MIT License (MIT)
*
* Copyright (c) 2016 Glenn Ruben Bakke
* Copyright (c) 2018 Dan Halbert for Adafruit Industries
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
#include "nrfx/hal/nrf_gpio.h"
#define MICROPY_HW_BOARD_NAME "PillBug"
#define MICROPY_HW_MCU_NAME "nRF52840"
#define MICROPY_HW_LED_STATUS (&pin_P0_20)
#define BOARD_HAS_CRYSTAL 1
#define DEFAULT_I2C_BUS_SCL (&pin_P0_13)
#define DEFAULT_I2C_BUS_SDA (&pin_P0_15)
#define DEFAULT_SPI_BUS_SCK (&pin_P1_08)
#define DEFAULT_SPI_BUS_MOSI (&pin_P0_11)
#define DEFAULT_SPI_BUS_MISO (&pin_P0_26)
#define DEFAULT_UART_BUS_RX (&pin_P0_08)
#define DEFAULT_UART_BUS_TX (&pin_P0_06)

View File

@ -0,0 +1,8 @@
USB_VID = 0x16D0
USB_PID = 0x10ED
USB_PRODUCT = "PillBug"
USB_MANUFACTURER = "Mechwild"
MCU_CHIP = nrf52840
INTERNAL_FLASH_FILESYSTEM = 1

View File

@ -0,0 +1,64 @@
#include "shared-bindings/board/__init__.h"
STATIC const mp_rom_map_elem_t board_module_globals_table[] = {
CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS
{ MP_ROM_QSTR(MP_QSTR_P0_02), MP_ROM_PTR(&pin_P0_02) },
{ MP_ROM_QSTR(MP_QSTR_P0_04), MP_ROM_PTR(&pin_P0_04) },
{ MP_ROM_QSTR(MP_QSTR_P0_06), MP_ROM_PTR(&pin_P0_06) },
{ MP_ROM_QSTR(MP_QSTR_P0_08), MP_ROM_PTR(&pin_P0_08) },
{ MP_ROM_QSTR(MP_QSTR_P0_09), MP_ROM_PTR(&pin_P0_09) },
{ MP_ROM_QSTR(MP_QSTR_P0_10), MP_ROM_PTR(&pin_P0_10) },
{ MP_ROM_QSTR(MP_QSTR_P0_11), MP_ROM_PTR(&pin_P0_11) },
{ MP_ROM_QSTR(MP_QSTR_P0_12), MP_ROM_PTR(&pin_P0_12) },
{ MP_ROM_QSTR(MP_QSTR_P0_13), MP_ROM_PTR(&pin_P0_13) },
{ MP_ROM_QSTR(MP_QSTR_P0_15), MP_ROM_PTR(&pin_P0_15) },
{ MP_ROM_QSTR(MP_QSTR_P0_17), MP_ROM_PTR(&pin_P0_17) },
{ MP_ROM_QSTR(MP_QSTR_P0_20), MP_ROM_PTR(&pin_P0_20) },
{ MP_ROM_QSTR(MP_QSTR_P0_22), MP_ROM_PTR(&pin_P0_22) },
{ MP_ROM_QSTR(MP_QSTR_P0_24), MP_ROM_PTR(&pin_P0_24) },
{ MP_ROM_QSTR(MP_QSTR_P0_26), MP_ROM_PTR(&pin_P0_26) },
{ MP_ROM_QSTR(MP_QSTR_P0_29), MP_ROM_PTR(&pin_P0_29) },
{ MP_ROM_QSTR(MP_QSTR_P0_31), MP_ROM_PTR(&pin_P0_31) },
{ MP_ROM_QSTR(MP_QSTR_P1_00), MP_ROM_PTR(&pin_P1_00) },
{ MP_ROM_QSTR(MP_QSTR_P1_01), MP_ROM_PTR(&pin_P1_01) },
{ MP_ROM_QSTR(MP_QSTR_P1_02), MP_ROM_PTR(&pin_P1_02) },
{ MP_ROM_QSTR(MP_QSTR_P1_04), MP_ROM_PTR(&pin_P1_04) },
{ MP_ROM_QSTR(MP_QSTR_P1_06), MP_ROM_PTR(&pin_P1_06) },
{ MP_ROM_QSTR(MP_QSTR_P1_07), MP_ROM_PTR(&pin_P1_07) },
{ MP_ROM_QSTR(MP_QSTR_P1_11), MP_ROM_PTR(&pin_P1_11) },
{ MP_ROM_QSTR(MP_QSTR_P1_13), MP_ROM_PTR(&pin_P1_13) },
{ MP_ROM_QSTR(MP_QSTR_P1_15), MP_ROM_PTR(&pin_P1_15) },
{ MP_ROM_QSTR(MP_QSTR_AIN0), MP_ROM_PTR(&pin_P0_02) },
{ MP_ROM_QSTR(MP_QSTR_AIN2), MP_ROM_PTR(&pin_P0_03) },
{ MP_ROM_QSTR(MP_QSTR_AIN5), MP_ROM_PTR(&pin_P0_29) },
{ MP_ROM_QSTR(MP_QSTR_AIN7), MP_ROM_PTR(&pin_P0_31) },
{ MP_ROM_QSTR(MP_QSTR_NFC1), MP_ROM_PTR(&pin_P0_09) },
{ MP_ROM_QSTR(MP_QSTR_NFC2), MP_ROM_PTR(&pin_P0_10) },
{ MP_ROM_QSTR(MP_QSTR_VOLTAGE_MONITOR), MP_ROM_PTR(&pin_P0_04) }, // Read battery voltage divider
{ MP_ROM_QSTR(MP_QSTR_BATTERY), MP_ROM_PTR(&pin_P0_04) },
{ MP_ROM_QSTR(MP_QSTR_VCC_OFF), MP_ROM_PTR(&pin_P1_07) }, // External VCC by MOSFET
{ MP_ROM_QSTR(MP_QSTR_LED), MP_ROM_PTR(&pin_P0_20) }, // Blue LED, HIGH sets to on
{ MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_P0_08) },
{ MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_P0_06) },
{ MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_P0_13) },
{ MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_P0_15) },
{ MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_P1_13) },
{ MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_P0_10) },
{ MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_P1_11) },
{ MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) },
{ MP_ROM_QSTR(MP_QSTR_SPI), MP_ROM_PTR(&board_spi_obj) },
{ MP_ROM_QSTR(MP_QSTR_UART), MP_ROM_PTR(&board_uart_obj) },
};
MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table);

View File

@ -234,6 +234,17 @@ SRC_C += \
peripherals/stm32$(MCU_SERIES_LOWER)/$(MCU_VARIANT_LOWER)/periph.c \
packages/$(MCU_PACKAGE).c
ifneq ($(CIRCUITPY_AUDIOBUSIO_PDMIN),0)
SRC_C += \
common-hal/audiobusio/MEMS_Audio.c \
common-hal/audiobusio/MEMS_Audio_ll_stm32l4.c \
common-hal/audiobusio/OpenPDMFilter.c
SRC_STM32 += \
$(HAL_DIR)/Src/stm32$(MCU_SERIES_LOWER)xx_hal_sai.c
endif
ifneq ($(CIRCUITPY_USB),0)
SRC_C += lib/tinyusb/src/portable/st/synopsys/dcd_synopsys.c
endif

View File

@ -15,61 +15,42 @@ LD_DEFAULT = boards/STM32L4R5_default.ld
LD_BOOT = boards/STM32L4R5_boot.ld
UF2_OFFSET = 0x8010000
UF2_BOOTLOADER ?= 1
CIRCUITPY_BUILD_EXTENSIONS = bin,uf2
# Turn all of the below off while trying to get the thing to run
# These modules are implemented in ports/<port>/common-hal:
# Typically the first module to create
CIRCUITPY_MICROCONTROLLER = 1
CIRCUITPY_ALARM = 1
# Typically the second module to create
CIRCUITPY_DIGITALIO = 1
# Other modules:
CIRCUITPY_OS = 1
CIRCUITPY_STORAGE = 1
CIRCUITPY_USB_MSC = 1
CIRCUITPY_UDB_CDC = 1
CIRCUITPY_USB_VENDOR = 1
CIRCUITPY_NVM = 0
CIRCUITPY_ANALOGIO = 1
CIRCUITPY_AUDIOBUSIO = 1
CIRCUITPY_AUDIOBUSIO_I2SOUT = 0
CIRCUITPY_AUDIOBUSIO_PDMIN = 1
CIRCUITPY_AUDIOPWMIO = 1
CIRCUITPY_BITBANGIO = 1
CIRCUITPY_BLEIO = 0
CIRCUITPY_BLEIO_HCI = 0
CIRCUITPY_BUSDEVICE = 0
CIRCUITPY_BUSIO = 1
CIRCUITPY_CANIO = 0
CIRCUITPY_DIGITALIO = 1
CIRCUITPY_DISPLAYIO = 1
CIRCUITPY_ENABLE_MPY_NATIVE = 1
CIRCUITPY_I2CTARGET = 0
CIRCUITPY_KEYPAD = 1
CIRCUITPY_MICROCONTROLLER = 1
CIRCUITPY_NEOPIXEL_WRITE = 0
CIRCUITPY_NVM = 0
CIRCUITPY_OS = 1
CIRCUITPY_PIXELBUF = 0
CIRCUITPY_PULSEIO = 1
CIRCUITPY_PWMIO = 1
CIRCUITPY_AUDIOPWMIO = 1
CIRCUITPY_CANIO = 0
CIRCUITPY_AUDIOBUSIO = 0
CIRCUITPY_I2CTARGET = 0
# Requires SPI, PulseIO (stub ok):
CIRCUITPY_DISPLAYIO = 0
# These modules are implemented in shared-module/ - they can be included in
# any port once their prerequisites in common-hal are complete.
# Requires DigitalIO:
CIRCUITPY_BITBANGIO = 1
# Requires neopixel_write or SPI (dotstar)
CIRCUITPY_PIXELBUF = 0
# Requires OS
CIRCUITPY_RANDOM = 1
# Requires Microcontroller
CIRCUITPY_TOUCHIO = 1
# Requires USB
CIRCUITPY_USB_HID = 0
CIRCUITPY_USB_MIDI = 0
# Does nothing without I2C
CIRCUITPY_REQUIRE_I2C_PULLUPS = 0
# No requirements, but takes extra flash
CIRCUITPY_ULAB = 1
# requires SPI
CIRCUITPY_SDCARDIO = 0
CIRCUITPY_BLEIO_HCI = 0
CIRCUITPY_BLEIO = 0
CIRCUITPY_BUSDEVICE = 0
CIRCUITPY_KEYPAD = 1
CIRCUITPY_RGBMATRIX = 0
CIRCUITPY_RTC = 1
CIRCUITPY_BUILD_EXTENSIONS = bin,uf2
CIRCUITPY_SDCARDIO = 0
CIRCUITPY_STORAGE = 1
CIRCUITPY_TOUCHIO = 1
CIRCUITPY_UDB_CDC = 1
CIRCUITPY_ULAB = 1
CIRCUITPY_USB_HID = 0
CIRCUITPY_USB_MIDI = 0
CIRCUITPY_USB_MSC = 1
CIRCUITPY_USB_VENDOR = 1

View File

@ -129,5 +129,8 @@ STATIC const mp_rom_map_elem_t board_module_globals_table[] = {
{ MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) },
{ MP_ROM_QSTR(MP_QSTR_SPI), MP_ROM_PTR(&board_spi_obj) },
{ MP_ROM_QSTR(MP_QSTR_UART), MP_ROM_PTR(&board_uart_obj) },
{ MP_ROM_QSTR(MP_QSTR_MICROPHONE_CLOCK), MP_ROM_PTR(&pin_PA03) },
{ MP_ROM_QSTR(MP_QSTR_MICROPHONE_DATA), MP_ROM_PTR(&pin_PC03) },
};
MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table);

View File

@ -0,0 +1 @@
// Although IS2Out is not enabled on the STM32L4 family, this file is still required for the build to pass

View File

@ -0,0 +1 @@
// Although IS2Out is not enabled on the STM32L4 family, this file is still required for the build to pass

View File

@ -0,0 +1,96 @@
/*
* The MIT License (MIT)
*
* Copyright (c) 2022 Matthew McGowan for Blues Inc.
*
* 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 <assert.h>
#include <stm32l4xx_hal.h>
#include "MEMS_Audio.h"
#include "MEMS_Audio_ll.h"
static void default_pcm_data_available(MemsAudio *audio, pcm_sample_t *pcmSamples, size_t pcmLength) {
}
/**
* @brief Initializes the MemsAudio instance. Only one instance can be initialized and used at a given time.
*
* @param audio
* @return mems_audio_err_t
*/
mems_audio_err_t mems_audio_init(MemsAudio *audio) {
if (!audio->pcm_data_available) {
audio->pcm_data_available = default_pcm_data_available;
}
return mems_audio_ll_init(audio);
}
/**
* @brief Uninitializes the MemsAudio instance.
*
* @param audio
* @return mems_audio_err_t
*/
mems_audio_err_t mems_audio_uninit(MemsAudio *audio) {
return mems_audio_ll_uninit(audio);
}
/**
* @brief Asynchronously records audio.
*
* @param audio
* @param pdmBuffer
* @param pdmBufferLength
* @return mems_audio_err_t
*/
mems_audio_err_t mems_audio_record(MemsAudio *audio) {
return mems_audio_ll_record(audio);
}
/**
* @brief Pause recording audio.
*/
mems_audio_err_t mems_audio_pause(MemsAudio *audio) {
return mems_audio_ll_pause(audio);
}
/**
* @brief Resume recording audio.
*
* @param audio
* @return mems_audio_err_t
*/
mems_audio_err_t mems_audio_resume(MemsAudio *audio) {
return mems_audio_ll_resume(audio);
}
/**
* @brief Stop recording audio and
*
* @param audio
* @return mems_audio_err_t
*/
mems_audio_err_t mems_audio_stop(MemsAudio *audio) {
return mems_audio_ll_stop(audio);
}

View File

@ -0,0 +1,156 @@
/*
* The MIT License (MIT)
*
* Copyright (c) 2022 Matthew McGowan for Blues Inc.
*
* 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 _MEMS_AUDIO_H_
#define _MEMS_AUDIO_H_
#include <stdint.h>
#include <stddef.h>
#ifdef __cplusplus
extern "C" {
#endif
/**
* @brief How many milliseconds of audio can fit in the audio buffer(s).
* Interrupts for recieved data fire at half this duration / twice the frequency.
*/
#ifndef MEMS_AUDIO_MS_BUFFER
#define MEMS_AUDIO_MS_BUFFER (1)
#endif
/**
* @brief The number of bits per sample of the PCM output
*/
#define PCM_OUT_RESOLUTION 16
/**
* @brief The output frequency of PCM samples in Hz.
*/
#define PCM_OUT_SAMPLING_FREQUENCY 16000
/**
* @brief type for describing error conditions.
*/
typedef int32_t mems_audio_err_t;
/**
* @brief The datatype that holds an output PCM sample.
*/
typedef int16_t pcm_sample_t;
_Static_assert(PCM_OUT_RESOLUTION==16, "Output PCM resolution must be 16-bits");
typedef enum {
MEMS_AUDIO_OK = 0,
MEMS_AUDIO_ERROR_ALREADY_INITIALIZED = -1,
MEMS_AUDIO_ERROR_NOT_INITIALIZED = -2
} mems_audio_err_enum_t;
#define IS_MEMS_AUDIO_ERROR(e) (e)
#define CHECK_MEMS_AUDIO_ERROR(e) { if (IS_MEMS_AUDIO_ERROR(e)) return e; }
#define CHECK_MEMS_AUDIO_INITIALIZED(x) { if (!x) return MEMS_AUDIO_ERROR_NOT_INITIALIZED; }
typedef struct MemsAudio_t MemsAudio;
/**
* @brief Callback informing that PCM samples are available for processing.
*/
typedef void (*pcm_data_available_t)(MemsAudio* audio, pcm_sample_t* pcmSamples, size_t pcmLength);
/**
* @brief MemsAudio manages the filter, buffers and callbacks used to capture PDM audio samples and convert to PCM.
*
*/
typedef struct MemsAudio_t {
/**
* @brief The buffer to store PCM audio samples
*/
volatile pcm_sample_t* volatile pcmOutputBuffer;
/**
* @brief The length of the PCM buffer. SHould be at least MEMS_AUDIO_PCM_BUFFER_LENGTH
*/
volatile size_t pcmOutputBufferLength;
/**
* @brief Optional callback for when PCM data is available.
*/
pcm_data_available_t pcm_data_available;
void* audioImpl;
void* userData;
} MemsAudio;
mems_audio_err_t mems_audio_init(MemsAudio* audio);
/**
* @brief Uninitializes the MemsAudio instance.
*
* @param audio
* @return mems_audio_err_t
*/
mems_audio_err_t mems_audio_uninit(MemsAudio* audio);
/**
* @brief Asynchronously records audio.
*
* @param audio
* @param pdmBuffer
* @param pdmBufferLength
* @return mems_audio_err_t
*/
mems_audio_err_t mems_audio_record(MemsAudio* audio);
/**
* @brief Pause recording audio.
*/
mems_audio_err_t mems_audio_pause(MemsAudio* audio);
/**
* @brief Resume recording audio.
*
* @param audio
* @return mems_audio_err_t
*/
mems_audio_err_t mems_audio_resume(MemsAudio* audio);
/**
* @brief Stop recording audio and
*
* @param audio
* @return mems_audio_err_t
*/
mems_audio_err_t mems_audio_stop(MemsAudio* audio);
#ifdef __cplusplus
}
#endif
#endif // _MEMS_AUDIO_H_

View File

@ -0,0 +1,75 @@
/*
* The MIT License (MIT)
*
* Copyright (c) 2022 Matthew McGowan for Blues Inc.
*
* 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 _MEMS_AUDIO_LL_H_
#define _MEMS_AUDIO_LL_H_
#include "MEMS_Audio.h"
#ifdef __cplusplus
extern "C" {
#endif
mems_audio_err_t mems_audio_ll_init(MemsAudio *audio);
mems_audio_err_t mems_audio_ll_uninit(MemsAudio *audio);
/**
* @brief Asynchronously records audio.
*
* @param audio
* @param pdmBuffer
* @param pdmBufferLength
* @return mems_audio_err_t
*/
mems_audio_err_t mems_audio_ll_record(MemsAudio *audio);
/**
* @brief Pause recording audio.
*/
mems_audio_err_t mems_audio_ll_pause(MemsAudio *audio);
/**
* @brief Resume recording audio.
*
* @param audio
* @return mems_audio_err_t
*/
mems_audio_err_t mems_audio_ll_resume(MemsAudio *audio);
/**
* @brief Stop recording audio and
*
* @param audio
* @return mems_audio_err_t
*/
mems_audio_err_t mems_audio_ll_stop(MemsAudio *audio);
#ifdef __cplusplus
}
#endif
#endif // _MEMS_AUDIO_LL_H_

View File

@ -0,0 +1,386 @@
/*
* The MIT License (MIT)
*
* Copyright (c) 2022 Matthew McGowan for Blues Inc.
*
* 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 <stm32l4xx_hal.h>
#include "MEMS_Audio_ll_stm32l4.h"
#include "MEMS_Audio.h"
/**
* @brief The implementation is a singleton.
*
*/
MemsAudio_STM32L4SAIPDM* volatile audioImpl;
static mems_audio_err_t MX_DMA_Init(void);
static mems_audio_err_t MX_DMA_Uninit(void);
static mems_audio_err_t MX_SAI1_Init(void);
#define CHECK_HAL_ERROR(x, e) \
{ \
if ((x) != HAL_OK) \
return e; \
}
/**
* @brief Checks the HAL return code and returns from a void function on error. The
* error is saved to lastError.
*/
#define CHECK_HAL_ERROR_VOID(x, e) \
{ \
if ((x) != HAL_OK) { \
audioImpl->lastError = e; \
return; \
} \
}
#define CHECK_MEMS_AUDIO_ERROR_LAST() \
{ \
if (audioImpl->lastError != MEMS_AUDIO_OK) \
return audioImpl->lastError; \
}
static bool default_pdm_data_available(MemsAudio_STM32L4SAIPDM* audio, pdm_sample_t* pdmSamples, size_t count)
{
return true;
}
int filter_pdm(MemsAudio_STM32L4SAIPDM* impl, pdm_sample_t* input, pcm_sample_t* output)
{
if (impl->filter.Decimation==64) {
Open_PDM_Filter_64(input, output, 1, &impl->filter);
}
else {
Open_PDM_Filter_128(input, output, 1, &impl->filter);
}
return impl->filter.nSamples;
}
static void mems_audio_init_filter(MemsAudio_STM32L4SAIPDM *impl)
{
TPDMFilter_InitStruct* filter = &impl->filter;
filter->Fs = PCM_OUT_SAMPLING_FREQUENCY;
filter->nSamples = MEMS_AUDIO_PCM_BUFFER_LENGTH;
filter->LP_HZ = PCM_OUT_SAMPLING_FREQUENCY / 2; // The Nyquist frequency
filter->HP_HZ = 10; // high pass to remove DC offset
filter->In_MicChannels = 1;
filter->Out_MicChannels = 1;
filter->Decimation = PDM_IN_DECIMATION_FACTOR;
Open_PDM_Filter_Init(filter);
}
volatile unsigned ignore_dma_count;
/**
* @brief Converts PDM samples
*
* @param pdmBuffer The buffer holding the PDM samples
* @param pdmBufferLength The number of samples available
*/
void pdm2pcm(uint8_t *pdmBuffer, size_t pdmBufferLength)
{
MemsAudio_STM32L4SAIPDM *impl = audioImpl;
if (impl)
{
bool convert = impl->discard_dma || impl->pdm_data_available(impl, pdmBuffer, pdmBufferLength);
if (convert)
{
MemsAudio* audio = impl->audio;
filter_pdm(impl, pdmBuffer, (pcm_sample_t*)audio->pcmOutputBuffer);
if (!impl->discard_dma)
audio->pcm_data_available(audio, (pcm_sample_t*)audio->pcmOutputBuffer, impl->filter.nSamples);
else
impl->discard_dma--;
}
}
}
/**
* @brief Initialize the PDM interface ready to begin capture.
* @retval
*/
mems_audio_err_t mems_audio_ll_init(MemsAudio *audio)
{
mems_audio_init_filter(audioImpl);
if (!audioImpl->pdm_data_available) {
audioImpl->pdm_data_available = &default_pdm_data_available;
}
CHECK_MEMS_AUDIO_ERROR(MX_DMA_Init());
CHECK_MEMS_AUDIO_ERROR(MX_SAI1_Init());
return MEMS_AUDIO_OK;
}
mems_audio_err_t uninit(void) {
if (audioImpl) {
MemsAudio_STM32L4SAIPDM* impl = audioImpl;
audioImpl = NULL;
mems_audio_ll_stop(impl->audio);
CHECK_HAL_ERROR(HAL_SAI_DeInit(&impl->hSAI_BlockA1), MEMS_AUDIO_ERROR_SAI_DEINIT);
CHECK_MEMS_AUDIO_ERROR(MX_DMA_Uninit());
}
return MEMS_AUDIO_OK;
}
/**
* @brief Uninitialize low level PDM capture
*/
mems_audio_err_t mems_audio_ll_uninit(MemsAudio *audio)
{
if (audioImpl->audio == audio) {
uninit();
}
return MEMS_AUDIO_OK;
}
mems_audio_err_t mems_audio_ll_record(MemsAudio *audio)
{
audioImpl->discard_dma = (100/MEMS_AUDIO_MS_BUFFER)+1;
CHECK_HAL_ERROR(HAL_SAI_Receive_DMA(&audioImpl->hSAI_BlockA1, audioImpl->pdmBuffer, audioImpl->pdmBufferLength),
MEMS_AUDIO_ERROR_DMA_START);
return MEMS_AUDIO_OK;
}
mems_audio_err_t mems_audio_ll_stop(MemsAudio *audio)
{
CHECK_HAL_ERROR(HAL_SAI_DMAStop(&audioImpl->hSAI_BlockA1), MEMS_AUDIO_ERROR_DMA_STOP);
return MEMS_AUDIO_OK;
}
mems_audio_err_t mems_audio_ll_pause(MemsAudio *audio)
{
CHECK_HAL_ERROR(HAL_SAI_DMAPause(&audioImpl->hSAI_BlockA1), MEMS_AUDIO_ERROR_DMA_PAUSE);
return MEMS_AUDIO_OK;
}
mems_audio_err_t mems_audio_ll_resume(MemsAudio *audio)
{
CHECK_HAL_ERROR(HAL_SAI_DMAResume(&audioImpl->hSAI_BlockA1), MEMS_AUDIO_ERROR_DMA_RESUME);
return MEMS_AUDIO_OK;
}
/**
* @brief SAI1 Initialization Function
* @param None
* @retval None
*/
static mems_audio_err_t MX_SAI1_Init(void)
{
__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_GPIOC_CLK_ENABLE();
SAI_HandleTypeDef hSAI_BlockA1 = {0};
MemsAudio_STM32L4SAIPDM* impl = audioImpl;
CHECK_MEMS_AUDIO_INITIALIZED(impl);
hSAI_BlockA1.Instance = SAI1_Block_A;
hSAI_BlockA1.Init.Protocol = SAI_FREE_PROTOCOL;
hSAI_BlockA1.Init.AudioMode = SAI_MODEMASTER_RX;
/* The PDM interface provides 8 1-bit samples at a time */
hSAI_BlockA1.Init.DataSize = SAI_DATASIZE_8;
hSAI_BlockA1.Init.FirstBit = SAI_FIRSTBIT_MSB;
hSAI_BlockA1.Init.ClockStrobing = SAI_CLOCKSTROBING_FALLINGEDGE;
hSAI_BlockA1.Init.Synchro = SAI_ASYNCHRONOUS; /* asynchronous - not chained to other SAI blocks */
hSAI_BlockA1.Init.OutputDrive = SAI_OUTPUTDRIVE_DISABLE; /* Not driving the primary SAI clock */
hSAI_BlockA1.Init.NoDivider = SAI_MASTERDIVIDER_DISABLE;
hSAI_BlockA1.Init.MckOverSampling = SAI_MCK_OVERSAMPLING_DISABLE;
hSAI_BlockA1.Init.FIFOThreshold = SAI_FIFOTHRESHOLD_FULL;
hSAI_BlockA1.Init.MonoStereoMode = SAI_MONOMODE; /* PDM is intrinsicly stereo, sampling on */
hSAI_BlockA1.Init.CompandingMode = SAI_NOCOMPANDING;
hSAI_BlockA1.Init.PdmInit.Activation = ENABLE; /* Enable PDM interface in the SAI */
hSAI_BlockA1.Init.PdmInit.MicPairsNbr = 1; /* 1 pair - 2 mics */
hSAI_BlockA1.Init.PdmInit.ClockEnable = SAI_PDM_CLOCK1_ENABLE;
hSAI_BlockA1.FrameInit.FrameLength = 16;
hSAI_BlockA1.FrameInit.ActiveFrameLength = 1;
hSAI_BlockA1.FrameInit.FSDefinition = SAI_FS_STARTFRAME; /* FS is not really used */
hSAI_BlockA1.FrameInit.FSPolarity = SAI_FS_ACTIVE_HIGH;
hSAI_BlockA1.FrameInit.FSOffset = SAI_FS_FIRSTBIT;
hSAI_BlockA1.SlotInit.FirstBitOffset = 0;
hSAI_BlockA1.SlotInit.SlotSize = SAI_SLOTSIZE_DATASIZE;
hSAI_BlockA1.SlotInit.SlotNumber = 2;
hSAI_BlockA1.SlotInit.SlotActive = 0x0001;
impl->hSAI_BlockA1 = hSAI_BlockA1;
CHECK_HAL_ERROR(HAL_SAI_Init(&impl->hSAI_BlockA1), MEMS_AUDIO_ERROR_SAI_INIT);
CHECK_MEMS_AUDIO_ERROR_LAST();
return MEMS_AUDIO_OK;
}
#define MEMS_AUDIO_DMA_IRQn DMA1_Channel6_IRQn
#define MEMS_AUDIO_DMA_CHANNEL DMA1_Channel6
#define MEMS_AUDIO_DMA_PRIORITY 6
#define DMA_HANDLER DMA1_Channel6_IRQHandler
void HAL_SAI_MspInit(SAI_HandleTypeDef *hsai)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
RCC_PeriphCLKInitTypeDef PeriphClkInit = {0};
/* SAI1 */
MemsAudio_STM32L4SAIPDM* impl = audioImpl;
if (hsai->Instance == SAI1_Block_A && impl)
{
PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_SAI1;
PeriphClkInit.Sai1ClockSelection = RCC_SAI1CLKSOURCE_PLLSAI1;
PeriphClkInit.PLLSAI1.PLLSAI1Source = RCC_PLLSOURCE_MSI;
PeriphClkInit.PLLSAI1.PLLSAI1M = MEMS_AUDIO_CLOCK_PLLM;
PeriphClkInit.PLLSAI1.PLLSAI1N = MEMS_AUDIO_CLOCK_PLLN;
PeriphClkInit.PLLSAI1.PLLSAI1P = MEMS_AUDIO_CLOCK_PLLP;
PeriphClkInit.PLLSAI1.PLLSAI1Q = RCC_PLLQ_DIV2;
PeriphClkInit.PLLSAI1.PLLSAI1R = RCC_PLLR_DIV2;
PeriphClkInit.PLLSAI1.PLLSAI1ClockOut = RCC_PLLSAI1_SAI1CLK;
CHECK_HAL_ERROR_VOID(HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit), MEMS_AUDIO_ERROR_SAI_CLOCK);
if (impl->SAI1_client == 0)
{
__HAL_RCC_SAI1_CLK_ENABLE();
}
impl->SAI1_client++;
/**SAI1_A_Block_A GPIO Configuration
PC3 ------> SAI1_D1
PA3 ------> SAI1_CK1
*/
GPIO_InitStruct.Pin = GPIO_PIN_3;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
GPIO_InitStruct.Alternate = GPIO_AF3_SAI1;
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
GPIO_InitStruct.Pin = GPIO_PIN_3;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
GPIO_InitStruct.Alternate = GPIO_AF3_SAI1;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
/* Peripheral DMA init*/
DMA_HandleTypeDef hdma_sai1_a = {0};
hdma_sai1_a.Instance = MEMS_AUDIO_DMA_CHANNEL;
hdma_sai1_a.Init.Request = DMA_REQUEST_SAI1_A;
hdma_sai1_a.Init.Direction = DMA_PERIPH_TO_MEMORY;
hdma_sai1_a.Init.PeriphInc = DMA_PINC_DISABLE;
hdma_sai1_a.Init.MemInc = DMA_MINC_ENABLE;
hdma_sai1_a.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
hdma_sai1_a.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
hdma_sai1_a.Init.Mode = DMA_CIRCULAR;
hdma_sai1_a.Init.Priority = DMA_PRIORITY_HIGH;
impl->hdma_sai1_a = hdma_sai1_a;
CHECK_HAL_ERROR_VOID(HAL_DMA_Init(&impl->hdma_sai1_a), MEMS_AUDIO_ERROR_SAI_DMA_INIT);
/* Several peripheral DMA handle pointers point to the same DMA handle.
Be aware that there is only one channel to perform all the requested DMAs. */
__HAL_LINKDMA(hsai, hdmarx, impl->hdma_sai1_a);
__HAL_LINKDMA(hsai, hdmatx, impl->hdma_sai1_a);
}
}
void HAL_SAI_MspDeInit(SAI_HandleTypeDef *hsai)
{
/* SAI1 */
MemsAudio_STM32L4SAIPDM* impl = audioImpl;
if (hsai->Instance == SAI1_Block_A && impl)
{
impl->SAI1_client--;
if (impl->SAI1_client == 0)
{
/* Peripheral clock disable */
__HAL_RCC_SAI1_CLK_DISABLE();
}
/**SAI1_A_Block_A GPIO Configuration
PC3 ------> SAI1_D1
PA3 ------> SAI1_CK1
*/
HAL_GPIO_DeInit(GPIOC, GPIO_PIN_3);
HAL_GPIO_DeInit(GPIOA, GPIO_PIN_3);
/* SAI1 DMA Deinit */
HAL_DMA_DeInit(hsai->hdmarx);
HAL_DMA_DeInit(hsai->hdmatx);
}
}
/**
* @brief Initialize the DMA peripheral
*
*/
static mems_audio_err_t MX_DMA_Init(void)
{
/* DMA controller clock enable */
__HAL_RCC_DMAMUX1_CLK_ENABLE();
__HAL_RCC_DMA1_CLK_ENABLE();
/* DMA interrupt init */
/* DMA1_Channel1_IRQn interrupt configuration */
HAL_NVIC_SetPriority(MEMS_AUDIO_DMA_IRQn, MEMS_AUDIO_DMA_PRIORITY, 0);
HAL_NVIC_EnableIRQ(MEMS_AUDIO_DMA_IRQn);
return MEMS_AUDIO_OK;
}
static mems_audio_err_t MX_DMA_Uninit(void)
{
HAL_NVIC_DisableIRQ(MEMS_AUDIO_DMA_IRQn);
return MEMS_AUDIO_OK;
}
/**
* @brief Global handler for the DMA interrupt. Forwards to the HAL for further processing.
*
*/
void DMA_HANDLER(void)
{
HAL_DMA_IRQHandler(&audioImpl->hdma_sai1_a);
}
/**
* @brief Converts PDM samples in the upper half of the PDM buffer.
*
* @param hSai
*/
void HAL_SAI_RxHalfCpltCallback(SAI_HandleTypeDef *hSai)
{
(void)hSai;
pdm2pcm(audioImpl->pdmBuffer, audioImpl->pdmBufferLength>>1);
}
/**
* @brief Converts PDM samples in the upper half of the PDM buffer.
*
* @param hSai
*/
void HAL_SAI_RxCpltCallback(SAI_HandleTypeDef *hSai)
{
(void)hSai;
pdm2pcm(audioImpl->pdmBuffer+(audioImpl->pdmBufferLength>>1), audioImpl->pdmBufferLength>>1);
}
mems_audio_err_t mems_audio_init_stm32l4_sai_pdm(MemsAudio* audio, MemsAudio_STM32L4SAIPDM* impl)
{
uninit();
audioImpl = impl;
impl->audio = audio;
return mems_audio_init(audio);
}

View File

@ -0,0 +1,209 @@
/*
* The MIT License (MIT)
*
* Copyright (c) 2022 Matthew McGowan for Blues Inc.
*
* 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 _MEMS_AUDIO_LL_STM32L4_H_
#define _MEMS_AUDIO_LL_STM32L4_H_
#include <stdbool.h>
#include <assert.h>
#include <stm32l4xx_hal.h>
#include "OpenPDMFilter.h"
#include "MEMS_Audio.h"
#include "MEMS_Audio_ll.h"
#ifdef __cplusplus
extern "C" {
#endif
/**
* @brief The SAI PDM interface captures 8 bits from the PDM signal.
*/
typedef uint8_t pdm_sample_t;
/**
* @brief The PDM sample frequency in kHz. (Bit samples per millisecond.)
*/
#define PDM_IN_FREQUENCY_KHZ 1024
#define PDM_IN_FREQUENCY (PDM_IN_FREQUENCY_KHZ * 1000)
/**
* @brief The number of channels of audio captured
*/
#define PDM_IN_CHANNELS 1
/**
* @brief The decimation of the PDM bit stream to produce PCM samples at the desired output rate.
*/
#define PDM_IN_DECIMATION_FACTOR 64
/**
* @brief The number of pdm samples captured per millisecond from the PDM interface.
*/
#define MEMS_AUDIO_PDM_SAMPLES_PER_MS ((PDM_IN_FREQUENCY_KHZ / (sizeof(pdm_sample_t) * 8)) * PDM_IN_CHANNELS)
/**
* @brief The size of the buffer used to hold PDM samples prior to conversion to PCM.
* Each half of the buffer generates an interrupt.
*/
#define MEMS_AUDIO_PDM_BUFFER_LENGTH (MEMS_AUDIO_PDM_SAMPLES_PER_MS * MEMS_AUDIO_MS_BUFFER * 2)
/**
* @brief The length of the PCM buffer required to hold converted samples.
*/
#define MEMS_AUDIO_PCM_BUFFER_LENGTH (PCM_OUT_SAMPLING_FREQUENCY * MEMS_AUDIO_MS_BUFFER / 1000)
/**
* Presently the internal PDM parameters and output PCM parameters are fixed for the values given here.
*/
/**
* @brief 128 point decimation did not work with the OpenPDMFilter and just produced PCM output
* approaching a square wave.
*/
_Static_assert(PDM_IN_DECIMATION_FACTOR == 64 || PDM_IN_DECIMATION_FACTOR == 128, "A decomation factor of 64 or 128 is supported at present.");
/**
* @brief The PDM bitstream frequency divided by the decimation factor should be the same as the desired output PCM frequency.
*/
_Static_assert(PDM_IN_FREQUENCY / PDM_IN_DECIMATION_FACTOR == PCM_OUT_SAMPLING_FREQUENCY, "PDM output frequency should equal the input frequency divided by the decimation factor.");
//
// SAI PDM interface clock configuration
//
#define MEMS_AUDIO_MSI_FREQUENCY (48 * 1000 * 1000)
#define MEMS_AUDIO_CLOCK_PLLM (15)
#define MEMS_AUDIO_CLOCK_PLLN (16)
#define MEMS_AUDIO_CLOCK_PLLP (RCC_PLLP_DIV25)
/**
* @brief The SAI PDM clock should be twice the desired PDM bitstream frequency
*/
_Static_assert((MEMS_AUDIO_MSI_FREQUENCY / MEMS_AUDIO_CLOCK_PLLM * MEMS_AUDIO_CLOCK_PLLN / MEMS_AUDIO_CLOCK_PLLP) == (PDM_IN_FREQUENCY_KHZ * 1000 * 2), "PDM clock should be twice the PDM sample frequency.");
typedef struct MemsAudio_STM32L4SAIPDM_t MemsAudio_STM32L4SAIPDM;
/**
* @brief Callback informing that PDM samples are available for processing.
* @param audio The MemsAudio instance
* @return `false` to skip conversion of PDM to PCM. `true` to convert the PDM samples to PCM.
*/
typedef bool (*pdm_data_available_t)(MemsAudio_STM32L4SAIPDM *audio, pdm_sample_t *pdmSamples, size_t pdmLength);
/**
* @brief Implementation details for the STM32 SAI PDM implementation.
*
*/
/**
* @brief Audio capture from a MEMS microphone on the STM32L4 using the SAI PDM interface.
*/
typedef struct MemsAudio_STM32L4SAIPDM_t {
MemsAudio *audio;
/**
* @brief The last error that happened in a void function (e.g. HAL callback)
*/
mems_audio_err_t lastError;
/**
* @brief The buffer to store PDM audio samples
*/
pdm_sample_t *pdmBuffer;
/**
* @brief The length of the PDM buffer. Should be at least MEMS_AUDIO_PDM_BUFFER_LENGTH
*/
size_t pdmBufferLength;
/**
* @brief Optional callback for when PDM data is available.
*/
pdm_data_available_t pdm_data_available;
/**
* @brief A cound of the number of PDM clients in use.
*/
uint32_t SAI1_client;
/**
* @brief The SAI peripheral handle being used for SAI A subclock 1.
*/
SAI_HandleTypeDef hSAI_BlockA1;
/**
* @brief The DMA handle to transfer SAI data from the peripheral to memory.
*/
DMA_HandleTypeDef hdma_sai1_a;
/**
* @brief An instance of the PDM filter that performs decimation, and high and low pass filtering.
* Unlike the DFSDM peripheral, the SAI PDM interface doesn't perform these operations in hardware.
*/
TPDMFilter_InitStruct filter;
/**
* @brief The number of DMA transfers to ignore after starting recording.
*/
volatile uint16_t discard_dma;
} MemsAudio_STM32L4SAIPDM;
/**
* @brief Creates a MemsAudio instance that retrieves PDM samples from SAI A block 1 via the PDM interface,
* decimates and filters these in software to produce the PCM output stream.
*
* @param audio
* @param implementation
* @return meems_audio_error_t
*/
mems_audio_err_t mems_audio_init_stm32l4_sai_pdm(MemsAudio *audio, MemsAudio_STM32L4SAIPDM *implementation);
/**
* @brief Implementation-specific error codes.
*
*/
typedef enum mems_audio_err_stm32l4_t {
MEMS_AUDIO_ERROR_SAI_DMA_INIT = 1,
MEMS_AUDIO_ERROR_SAI_CLOCK = 2,
MEMS_AUDIO_ERROR_SAI_INIT = 3,
MEMS_AUDIO_ERROR_SAI_DEINIT = 4,
MEMS_AUDIO_ERROR_DMA_START = 5,
MEMS_AUDIO_ERROR_DMA_STOP = 6,
MEMS_AUDIO_ERROR_DMA_PAUSE = 7,
MEMS_AUDIO_ERROR_DMA_RESUME = 8
} mems_audio_err_stm32l4_t;
#ifdef __cplusplus
}
#endif
#endif // _MEMS_AUDIO_LL_STM32L4_H_

View File

@ -0,0 +1,302 @@
/**
*******************************************************************************
* @file OpenPDMFilter.c
* @author CL
* @version V1.0.0
* @date 9-September-2015
* @brief Open PDM audio software decoding Library.
* This Library is used to decode and reconstruct the audio signal
* produced by ST MEMS microphone (MP45Dxxx, MP34Dxxx).
*******************************************************************************
* @attention
*
* <h2><center>&copy; COPYRIGHT 2018 STMicroelectronics</center></h2>
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*******************************************************************************
*/
/* Includes ------------------------------------------------------------------*/
#include "OpenPDMFilter.h"
/* Functions -----------------------------------------------------------------*/
#ifdef USE_LUT
int32_t filter_table_mono_64(lut_t lut, uint8_t *data, uint8_t sincn) {
return (int32_t)
lut[data[0]][0][sincn] +
lut[data[1]][1][sincn] +
lut[data[2]][2][sincn] +
lut[data[3]][3][sincn] +
lut[data[4]][4][sincn] +
lut[data[5]][5][sincn] +
lut[data[6]][6][sincn] +
lut[data[7]][7][sincn];
}
int32_t filter_table_stereo_64(lut_t lut, uint8_t *data, uint8_t sincn) {
return (int32_t)
lut[data[0]][0][sincn] +
lut[data[2]][1][sincn] +
lut[data[4]][2][sincn] +
lut[data[6]][3][sincn] +
lut[data[8]][4][sincn] +
lut[data[10]][5][sincn] +
lut[data[12]][6][sincn] +
lut[data[14]][7][sincn];
}
#if DECIMATION_MAX == 128
int32_t filter_table_mono_128(lut_t lut, uint8_t *data, uint8_t sincn) {
return (int32_t)
lut[data[0]][0][sincn] +
lut[data[1]][1][sincn] +
lut[data[2]][2][sincn] +
lut[data[3]][3][sincn] +
lut[data[4]][4][sincn] +
lut[data[5]][5][sincn] +
lut[data[6]][6][sincn] +
lut[data[7]][7][sincn] +
lut[data[8]][8][sincn] +
lut[data[9]][9][sincn] +
lut[data[10]][10][sincn] +
lut[data[11]][11][sincn] +
lut[data[12]][12][sincn] +
lut[data[13]][13][sincn] +
lut[data[14]][14][sincn] +
lut[data[15]][15][sincn];
}
int32_t filter_table_stereo_128(lut_t lut, uint8_t *data, uint8_t sincn) {
return (int32_t)
lut[data[0]][0][sincn] +
lut[data[2]][1][sincn] +
lut[data[4]][2][sincn] +
lut[data[6]][3][sincn] +
lut[data[8]][4][sincn] +
lut[data[10]][5][sincn] +
lut[data[12]][6][sincn] +
lut[data[14]][7][sincn] +
lut[data[16]][8][sincn] +
lut[data[18]][9][sincn] +
lut[data[20]][10][sincn] +
lut[data[22]][11][sincn] +
lut[data[24]][12][sincn] +
lut[data[26]][13][sincn] +
lut[data[28]][14][sincn] +
lut[data[30]][15][sincn];
}
#endif
int32_t (*filter_tables_64[2])(lut_t lut, uint8_t *data, uint8_t sincn) = {filter_table_mono_64, filter_table_stereo_64};
#if DECIMATION_MAX == 128
int32_t (*filter_tables_128[2])(lut_t lut, uint8_t *data, uint8_t sincn) = {filter_table_mono_128, filter_table_stereo_128};
#endif
#else
int32_t filter_table(uint8_t *data, uint8_t sincn, TPDMFilter_InitStruct *param) {
uint8_t c, i;
uint16_t data_index = 0;
uint32_t *coef_p = &param->coef[sincn][0];
int32_t F = 0;
uint8_t decimation = param->Decimation;
uint8_t channels = param->In_MicChannels;
for (i = 0; i < decimation; i += 8) {
c = data[data_index];
F += ((c >> 7)) * coef_p[i ] +
((c >> 6) & 0x01) * coef_p[i + 1] +
((c >> 5) & 0x01) * coef_p[i + 2] +
((c >> 4) & 0x01) * coef_p[i + 3] +
((c >> 3) & 0x01) * coef_p[i + 4] +
((c >> 2) & 0x01) * coef_p[i + 5] +
((c >> 1) & 0x01) * coef_p[i + 6] +
((c) & 0x01) * coef_p[i + 7];
data_index += channels;
}
return F;
}
#endif
void convolve(uint32_t Signal[] /* SignalLen */, unsigned short SignalLen,
uint32_t Kernel[] /* KernelLen */, unsigned short KernelLen,
uint32_t Result[] /* SignalLen + KernelLen - 1 */) {
uint16_t n;
for (n = 0; n < SignalLen + KernelLen - 1; n++)
{
unsigned short kmin, kmax, k;
Result[n] = 0;
kmin = (n >= KernelLen - 1) ? n - (KernelLen - 1) : 0;
kmax = (n < SignalLen - 1) ? n : SignalLen - 1;
for (k = kmin; k <= kmax; k++) {
Result[n] += Signal[k] * Kernel[n - k];
}
}
}
void Open_PDM_Filter_Init(TPDMFilter_InitStruct *Param) {
uint16_t i, j;
int64_t sum = 0;
uint8_t decimation = Param->Decimation;
for (i = 0; i < SINCN; i++) {
Param->Coef[i] = 0;
Param->bit[i] = 0;
}
for (i = 0; i < decimation; i++) {
Param->sinc1[i] = 1;
}
Param->OldOut = Param->OldIn = Param->OldZ = 0;
Param->LP_ALFA = (Param->LP_HZ != 0 ? (uint16_t)((float)Param->LP_HZ * 256 / (Param->LP_HZ + Param->Fs / (2 * 3.14159))) : 0);
Param->HP_ALFA = (Param->HP_HZ != 0 ? (uint16_t)((float)Param->Fs * 256 / (2 * 3.14159 * Param->HP_HZ + Param->Fs)) : 0);
Param->FilterLen = decimation * SINCN;
Param->sinc[0] = 0;
Param->sinc[decimation * SINCN - 1] = 0;
convolve(Param->sinc1, decimation, Param->sinc1, decimation, Param->sinc2);
convolve(Param->sinc2, (decimation << 1) - 1, Param->sinc1, decimation, &Param->sinc[1]);
for (j = 0; j < SINCN; j++) {
for (i = 0; i < decimation; i++) {
Param->coef[j][i] = Param->sinc[j * decimation + i];
sum += Param->sinc[j * decimation + i];
}
}
Param->sub_const = sum >> 1;
uint32_t div_const = Param->sub_const * Param->MaxVolume / 32768 / FILTER_GAIN;
Param->div_const = (div_const == 0 ? 1 : div_const);
#ifdef USE_LUT
/* Look-Up Table. */
uint16_t c, d, s;
for (s = 0; s < SINCN; s++)
{
uint32_t *coef_p = &Param->coef[s][0];
for (c = 0; c < 256; c++) {
for (d = 0; d < decimation / 8; d++) {
Param->lut[c][d][s] = ((c >> 7)) * coef_p[d * 8 ] +
((c >> 6) & 0x01) * coef_p[d * 8 + 1] +
((c >> 5) & 0x01) * coef_p[d * 8 + 2] +
((c >> 4) & 0x01) * coef_p[d * 8 + 3] +
((c >> 3) & 0x01) * coef_p[d * 8 + 4] +
((c >> 2) & 0x01) * coef_p[d * 8 + 5] +
((c >> 1) & 0x01) * coef_p[d * 8 + 6] +
((c) & 0x01) * coef_p[d * 8 + 7];
}
}
}
#endif
}
int Open_PDM_Filter_64(uint8_t *data, int16_t *dataOut, uint16_t volume, TPDMFilter_InitStruct *Param) {
uint8_t i, data_out_index;
uint8_t channels = Param->In_MicChannels;
uint8_t data_inc = ((DECIMATION_MAX >> 4) * channels);
int64_t Z, Z0, Z1, Z2;
int64_t OldOut, OldIn, OldZ;
OldOut = Param->OldOut;
OldIn = Param->OldIn;
OldZ = Param->OldZ;
#ifdef USE_LUT
uint8_t j = channels - 1;
#endif
for (i = 0, data_out_index = 0; i < Param->nSamples; i++, data_out_index += channels) {
#ifdef USE_LUT
Z0 = filter_tables_64[j](Param->lut, data, 0);
Z1 = filter_tables_64[j](Param->lut, data, 1);
Z2 = filter_tables_64[j](Param->lut, data, 2);
#else
Z0 = filter_table(data, 0, Param);
Z1 = filter_table(data, 1, Param);
Z2 = filter_table(data, 2, Param);
#endif
Z = Param->Coef[1] + Z2 - Param->sub_const;
Param->Coef[1] = Param->Coef[0] + Z1;
Param->Coef[0] = Z0;
OldOut = (Param->HP_ALFA * (OldOut + Z - OldIn)) >> 8;
OldIn = Z;
OldZ = ((256 - Param->LP_ALFA) * OldZ + Param->LP_ALFA * OldOut) >> 8;
Z = OldZ * volume;
Z = RoundDiv(Z, (Param->div_const));
Z = SaturaLH(Z, -32700, 32700);
dataOut[data_out_index] = Z;
data += data_inc;
}
Param->OldOut = OldOut;
Param->OldIn = OldIn;
Param->OldZ = OldZ;
return data_out_index;
}
#if DECIMATION_MAX == 128
int Open_PDM_Filter_128(uint8_t *data, int16_t *dataOut, uint16_t volume, TPDMFilter_InitStruct *Param) {
uint8_t i, data_out_index;
uint8_t channels = Param->In_MicChannels;
uint8_t data_inc = ((DECIMATION_MAX >> 3) * channels);
int64_t Z, Z0, Z1, Z2;
int64_t OldOut, OldIn, OldZ;
OldOut = Param->OldOut;
OldIn = Param->OldIn;
OldZ = Param->OldZ;
#ifdef USE_LUT
uint8_t j = channels - 1;
#endif
for (i = 0, data_out_index = 0; i < Param->nSamples; i++, data_out_index += channels) {
#ifdef USE_LUT
Z0 = filter_tables_128[j](Param->lut, data, 0);
Z1 = filter_tables_128[j](Param->lut, data, 1);
Z2 = filter_tables_128[j](Param->lut, data, 2);
#else
Z0 = filter_table(data, 0, Param);
Z1 = filter_table(data, 1, Param);
Z2 = filter_table(data, 2, Param);
#endif
Z = Param->Coef[1] + Z2 - Param->sub_const;
Param->Coef[1] = Param->Coef[0] + Z1;
Param->Coef[0] = Z0;
OldOut = (Param->HP_ALFA * (OldOut + Z - OldIn)) >> 8;
OldIn = Z;
OldZ = ((256 - Param->LP_ALFA) * OldZ + Param->LP_ALFA * OldOut) >> 8;
Z = OldZ * volume;
Z = RoundDiv(Z, (Param->div_const));
Z = SaturaLH(Z, -32700, 32700);
dataOut[data_out_index] = Z;
data += data_inc;
}
Param->OldOut = OldOut;
Param->OldIn = OldIn;
Param->OldZ = OldZ;
return data_out_index;
}
#endif

View File

@ -0,0 +1,112 @@
/**
*******************************************************************************
* @file OpenPDMFilter.h
* @author CL
* @version V1.0.0
* @date 9-September-2015
* @brief Header file for Open PDM audio software decoding Library.
* This Library is used to decode and reconstruct the audio signal
* produced by ST MEMS microphone (MP45Dxxx, MP34Dxxx).
*******************************************************************************
* @attention
*
* <h2><center>&copy; COPYRIGHT 2018 STMicroelectronics</center></h2>
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*******************************************************************************
*/
/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __OPENPDMFILTER_H
#define __OPENPDMFILTER_H
#ifdef __cplusplus
extern "C" {
#endif
/* Includes ------------------------------------------------------------------*/
#include <stdint.h>
/* Definitions ---------------------------------------------------------------*/
/*
* Enable to use a Look-Up Table to improve performances while using more FLASH
* and RAM memory.
* Note: Without Look-Up Table up to stereo@16KHz configuration is supported.
*/
#define USE_LUT
#define SINCN 3
#define DECIMATION_MAX 128 // can be 128 but this didn't work for me
#define FILTER_GAIN 16
#define HTONS(A) ((((uint16_t)(A) & 0xff00) >> 8) | \
(((uint16_t)(A) & 0x00ff) << 8))
#define RoundDiv(a, b) (((a) > 0) ? (((a) + (b) / 2) / (b)) : (((a) - (b) / 2) / (b)))
#define SaturaLH(N, L, H) (((N) < (L)) ? (L) : (((N) > (H)) ? (H) : (N)))
/* Types ---------------------------------------------------------------------*/
typedef int32_t lut_t[256][DECIMATION_MAX / 8][SINCN];
typedef struct
{
/* Public */
uint16_t LP_HZ;
uint16_t HP_HZ;
uint16_t Fs;
unsigned int nSamples;
uint8_t In_MicChannels;
uint8_t Out_MicChannels;
uint8_t Decimation;
uint8_t MaxVolume;
/* Private */
uint32_t Coef[SINCN];
uint16_t FilterLen;
int64_t OldOut, OldIn, OldZ;
uint16_t LP_ALFA;
uint16_t HP_ALFA;
uint16_t bit[5];
uint16_t byte;
uint32_t div_const;
int64_t sub_const;
uint32_t sinc[DECIMATION_MAX * SINCN];
uint32_t sinc1[DECIMATION_MAX];
uint32_t sinc2[DECIMATION_MAX * 2];
uint32_t coef[SINCN][DECIMATION_MAX];
#ifdef USE_LUT
lut_t lut;
#endif
} TPDMFilter_InitStruct;
/* Exported functions ------------------------------------------------------- */
void Open_PDM_Filter_Init(TPDMFilter_InitStruct *init_struct);
int Open_PDM_Filter_64(uint8_t *data, int16_t *data_out, uint16_t mic_gain, TPDMFilter_InitStruct *init_struct);
#if DECIMATION_MAX == 128
int Open_PDM_Filter_128(uint8_t *data, int16_t *data_out, uint16_t mic_gain, TPDMFilter_InitStruct *init_struct);
#endif
#ifdef __cplusplus
}
#endif
#endif // __OPENPDMFILTER_H
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/

View File

@ -0,0 +1,199 @@
/*
* This file is part of the MicroPython project, http://micropython.org/
*
* The MIT License (MIT)
*
* Copyright (c) 2022 Matthew McGowan for Blues Inc.
*
* 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 <stdint.h>
#include "common-hal/audiobusio/PDMIn.h"
#include "shared-bindings/audiobusio/PDMIn.h"
#include "shared-bindings/microcontroller/Pin.h"
#include "py/runtime.h"
#include "supervisor/memory.h"
#include "MEMS_Audio_ll_stm32l4.h"
MemsAudio memsAudio;
MemsAudio_STM32L4SAIPDM memsAudioImpl;
pdm_sample_t pdmBuffer[MEMS_AUDIO_PDM_BUFFER_LENGTH];
audiobusio_pdmin_obj_t *instance;
static bool pdm_data_available(MemsAudio_STM32L4SAIPDM *impl, uint8_t *pdmBuffer, size_t pdmBufferLength);
// Caller validates that pins are free.
void common_hal_audiobusio_pdmin_construct(audiobusio_pdmin_obj_t *self,
const mcu_pin_obj_t *clock_pin,
const mcu_pin_obj_t *data_pin,
uint32_t sample_rate,
uint8_t bit_depth,
bool mono,
uint8_t oversample) {
self->sample_rate = sample_rate;
self->mono = mono;
self->oversample = oversample;
self->recording_complete = true;
if (!mono) {
mp_raise_ValueError(translate("only mono is supported"));
}
if (sample_rate != 16000) {
mp_raise_ValueError(translate("only sample_rate=16000 is supported"));
}
if (bit_depth != 16) {
mp_raise_ValueError(translate("only bit_depth=16 is supported"));
}
if (oversample != 64) {
mp_raise_ValueError(translate("only oversample=64 is supported"));
}
// wait for the previous instance to finish.
if (instance) {
common_hal_audiobusio_pdmin_deinit(instance);
}
instance = self;
memset(&memsAudio, 0, sizeof(memsAudio));
memset(&memsAudioImpl, 0, sizeof(memsAudioImpl));
common_hal_mcu_pin_claim(clock_pin);
self->clock_pin = clock_pin;
common_hal_mcu_pin_claim(data_pin);
self->data_pin = data_pin;
self->audio = &memsAudio;
self->audio_impl = &memsAudioImpl;
self->audio_impl->pdmBuffer = pdmBuffer;
self->audio_impl->pdmBufferLength = sizeof(pdmBuffer) / sizeof(pdmBuffer[0]);
self->audio_impl->pdm_data_available = pdm_data_available;
mems_audio_init_stm32l4_sai_pdm(self->audio, self->audio_impl);
mems_audio_record(self->audio);
mems_audio_pause(self->audio);
}
bool common_hal_audiobusio_pdmin_deinited(audiobusio_pdmin_obj_t *self) {
return self->clock_pin == NULL;
}
void wait_dma_complete(audiobusio_pdmin_obj_t *self) {
while (!self->recording_complete) {
MICROPY_VM_HOOK_LOOP;
}
}
void common_hal_audiobusio_pdmin_deinit(audiobusio_pdmin_obj_t *self) {
if (instance != self) {
return;
}
instance = NULL;
if (self->audio) {
wait_dma_complete(self);
mems_audio_stop(self->audio);
mems_audio_uninit(self->audio);
self->audio = NULL;
self->audio_impl = NULL;
}
if (self->data_pin) {
common_hal_reset_pin(self->data_pin);
self->data_pin = NULL;
}
if (self->clock_pin) {
common_hal_reset_pin(self->clock_pin);
self->clock_pin = NULL;
}
}
uint8_t common_hal_audiobusio_pdmin_get_bit_depth(audiobusio_pdmin_obj_t *self) {
return 16;
}
uint32_t common_hal_audiobusio_pdmin_get_sample_rate(audiobusio_pdmin_obj_t *self) {
return 16000;
}
static bool pdm_data_available(MemsAudio_STM32L4SAIPDM *impl, uint8_t *pdmBuffer, size_t pdmBufferLength) {
// update the filter with the correct number of samples
audiobusio_pdmin_obj_t *pdmIn = (audiobusio_pdmin_obj_t *)(impl->audio->userData);
MemsAudio *audio = impl->audio;
uint32_t pcmSamplesAvailable = pdmBufferLength * 8 / PDM_IN_DECIMATION_FACTOR;
if (pcmSamplesAvailable > audio->pcmOutputBufferLength) {
pcmSamplesAvailable = audio->pcmOutputBufferLength;
}
// ensure the filter doesn't try to produce more samples than available
pdmIn->audio_impl->filter.nSamples = pcmSamplesAvailable;
return pcmSamplesAvailable > 0;
}
static void pcm_data_available(MemsAudio *audio, int16_t *pcmBuffer, size_t pcmBufferLength) {
// data is already in the output buffer
audiobusio_pdmin_obj_t *pdmIn = (audiobusio_pdmin_obj_t *)(audio->userData);
// if DMA copies more data than will fit into the output buffer, crop the length to what will fit
if (audio->pcmOutputBufferLength < pcmBufferLength) {
pcmBufferLength = audio->pcmOutputBufferLength;
}
audio->pcmOutputBuffer += pcmBufferLength;
audio->pcmOutputBufferLength -= pcmBufferLength;
if (audio->pcmOutputBufferLength == 0) {
pdmIn->recording_complete = true;
mems_audio_pause(audio);
}
}
uint32_t common_hal_audiobusio_pdmin_record_to_buffer(audiobusio_pdmin_obj_t *self,
uint16_t *output_buffer, uint32_t output_buffer_length) {
MemsAudio *audio = self->audio;
wait_dma_complete(self);
audio->pcmOutputBuffer = (int16_t *)output_buffer;
audio->pcmOutputBufferLength = output_buffer_length;
audio->pcm_data_available = pcm_data_available;
audio->userData = self; /// reference back to the PDMIn instance
self->recording_complete = false;
mems_audio_err_t err = mems_audio_resume(audio);
if (!IS_MEMS_AUDIO_ERROR(err)) {
wait_dma_complete(self);
}
mems_audio_pause(audio);
int samples_output = (int)(output_buffer_length) - audio->pcmOutputBufferLength;
// convert from signed to unsigned (min-point moves from 0 to 32k)
for (int i = 0; i < samples_output; i++) {
output_buffer[i] += 0x8000;
}
return samples_output;
}

View File

@ -0,0 +1,56 @@
/*
* This file is part of the MicroPython project, http://micropython.org/
*
* The MIT License (MIT)
*
* Copyright (c) 2022 Matthew McGowan for Blues Inc.
*
* 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_STM_COMMON_HAL_AUDIOBUSIO_AUDIOOUT_H
#define MICROPY_INCLUDED_STM_COMMON_HAL_AUDIOBUSIO_AUDIOOUT_H
#include <stdint.h>
#include "py/obj.h"
#include "peripherals/pins.h"
#include "supervisor/memory.h"
typedef struct MemsAudio_t MemsAudio;
typedef struct MemsAudio_STM32L4SAIPDM_t MemsAudio_STM32L4SAIPDM;
typedef struct {
mp_obj_base_t base;
const mcu_pin_obj_t *clock_pin;
const mcu_pin_obj_t *data_pin;
uint32_t sample_rate;
uint8_t bit_depth;
bool mono;
uint8_t oversample;
supervisor_allocation *audio_allocation;
MemsAudio *audio;
MemsAudio_STM32L4SAIPDM *audio_impl;
/**
* @brief Flag to indicate from the ISR that recording is complete.
*/
volatile bool recording_complete;
} audiobusio_pdmin_obj_t;
#endif

View File

@ -58,6 +58,9 @@ enum {
#endif
+ CIRCUITPY_PORT_NUM_SUPERVISOR_ALLOCATIONS
#if CIRCUITPY_AUDIOBUSIO_PDMIN
+ 1
#endif
,
CIRCUITPY_SUPERVISOR_MOVABLE_ALLOC_COUNT =