Merge branch 'adafruit:main' into main

This commit is contained in:
Dogus Cendek 2023-03-29 11:22:26 +03:00 committed by GitHub
commit af081f51a5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
72 changed files with 1444 additions and 277 deletions

View File

@ -77,6 +77,7 @@ needs_sphinx = '1.3'
extensions = [
'sphinx.ext.autodoc',
'sphinx.ext.doctest',
"sphinxcontrib.jquery",
'sphinxcontrib.rsvgconverter',
'sphinx.ext.intersphinx',
'sphinx.ext.todo',

View File

@ -403,10 +403,6 @@ msgstr "0.0 ke kompleks berpangkat"
msgid "3-arg pow() not supported"
msgstr "pow() 3-arg tidak didukung"
#: shared-module/msgpack/__init__.c
msgid "64 bit types"
msgstr ""
#: ports/atmel-samd/common-hal/alarm/pin/PinAlarm.c
#: ports/atmel-samd/common-hal/countio/Counter.c
#: ports/atmel-samd/common-hal/rotaryio/IncrementalEncoder.c
@ -1283,6 +1279,10 @@ msgstr ""
msgid "Invalid data_pins[%d]"
msgstr ""
#: shared-module/msgpack/__init__.c
msgid "Invalid format"
msgstr ""
#: shared-module/audiocore/WaveFile.c
msgid "Invalid format chunk size"
msgstr "Ukuran potongan format tidak valid"

View File

@ -400,10 +400,6 @@ msgstr ""
msgid "3-arg pow() not supported"
msgstr ""
#: shared-module/msgpack/__init__.c
msgid "64 bit types"
msgstr ""
#: ports/atmel-samd/common-hal/alarm/pin/PinAlarm.c
#: ports/atmel-samd/common-hal/countio/Counter.c
#: ports/atmel-samd/common-hal/rotaryio/IncrementalEncoder.c
@ -1271,6 +1267,10 @@ msgstr ""
msgid "Invalid data_pins[%d]"
msgstr ""
#: shared-module/msgpack/__init__.c
msgid "Invalid format"
msgstr ""
#: shared-module/audiocore/WaveFile.c
msgid "Invalid format chunk size"
msgstr ""

View File

@ -404,10 +404,6 @@ msgstr ""
msgid "3-arg pow() not supported"
msgstr "pow() nepodporuje 3 argumenty"
#: shared-module/msgpack/__init__.c
msgid "64 bit types"
msgstr "64 bit typy"
#: ports/atmel-samd/common-hal/alarm/pin/PinAlarm.c
#: ports/atmel-samd/common-hal/countio/Counter.c
#: ports/atmel-samd/common-hal/rotaryio/IncrementalEncoder.c
@ -1283,6 +1279,10 @@ msgstr ""
msgid "Invalid data_pins[%d]"
msgstr "Chybný data_pin[%d]"
#: shared-module/msgpack/__init__.c
msgid "Invalid format"
msgstr ""
#: shared-module/audiocore/WaveFile.c
msgid "Invalid format chunk size"
msgstr "Neplatná velikost bloku"
@ -4382,6 +4382,9 @@ msgstr ""
msgid "zi must be of shape (n_section, 2)"
msgstr ""
#~ msgid "64 bit types"
#~ msgstr "64 bit typy"
#~ msgid "No key was specified"
#~ msgstr "Nebyl zadán klíč"

View File

@ -6,14 +6,14 @@ msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-01-04 12:55-0600\n"
"PO-Revision-Date: 2023-03-01 17:39+0000\n"
"Last-Translator: Ettore Atalan <atalanttore@googlemail.com>\n"
"PO-Revision-Date: 2023-03-28 14:18+0000\n"
"Last-Translator: Luc <some_physics@live.com>\n"
"Language: de_DE\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.16\n"
"X-Generator: Weblate 4.17-dev\n"
#: main.c
msgid ""
@ -37,12 +37,17 @@ msgid ""
"Please file an issue with your program at https://github.com/adafruit/"
"circuitpython/issues."
msgstr ""
"\n"
"Bitte erstellen Sie ein Problem (Issue) für Ihr Programm unter https://"
"github.com/adafruit/circuitpython/issues."
#: supervisor/shared/safe_mode.c
msgid ""
"\n"
"Press reset to exit safe mode.\n"
msgstr ""
"\n"
"Drücke Reset, um den Sicherheitsmodus zu beenden.\n"
#: supervisor/shared/safe_mode.c
msgid ""
@ -189,7 +194,7 @@ msgstr "%q muss >= %d sein"
#: shared-bindings/analogbufio/BufferedIn.c
msgid "%q must be a bytearray or array of type 'H' or 'B'"
msgstr ""
msgstr "%q muss ein Bytearray oder ein Array vom Typ 'H' oder 'B' sein"
#: shared-bindings/audiocore/RawSample.c
msgid "%q must be a bytearray or array of type 'h', 'H', 'b', or 'B'"
@ -198,7 +203,7 @@ msgstr ""
#: ports/espressif/common-hal/analogbufio/BufferedIn.c
msgid "%q must be array of type 'H'"
msgstr ""
msgstr "%q muss ein Array vom Typ 'H' sein"
#: ports/raspberrypi/bindings/cyw43/__init__.c py/argcheck.c py/objexcept.c
#: shared-bindings/canio/CAN.c shared-bindings/digitalio/Pull.c
@ -409,10 +414,6 @@ msgstr "0.0 zu einer komplexen Potenz"
msgid "3-arg pow() not supported"
msgstr "3-arg pow() wird nicht unterstützt"
#: shared-module/msgpack/__init__.c
msgid "64 bit types"
msgstr "64 bit-Typen"
#: ports/atmel-samd/common-hal/alarm/pin/PinAlarm.c
#: ports/atmel-samd/common-hal/countio/Counter.c
#: ports/atmel-samd/common-hal/rotaryio/IncrementalEncoder.c
@ -526,7 +527,7 @@ msgstr "Sucht bereits nach Wifi-Netzwerken"
#: shared-module/os/getenv.c
#, c-format
msgid "An error occurred while retrieving '%s':\n"
msgstr ""
msgstr "Ein Fehler ist aufgetreten beim Abfragen von '%s':\n"
#: ports/stm/common-hal/audiopwmio/PWMAudioOut.c
msgid "Another PWMAudioOut is already active"
@ -602,7 +603,7 @@ msgstr "Bitmap-Grösse und Bits pro Wert müssen übereinstimmen"
#: supervisor/shared/safe_mode.c
msgid "Boot device must be first (interface #0)."
msgstr ""
msgstr "Boot-Device muss an erster Stelle kommen (Interface #0)."
#: ports/mimxrt10xx/common-hal/busio/UART.c
msgid "Both RX and TX required for flow control"
@ -792,9 +793,8 @@ msgstr ""
"Die Frequenz eines bereits verwendeten Timers kann nicht variiert werden"
#: ports/nrf/common-hal/alarm/pin/PinAlarm.c
#, fuzzy
msgid "Cannot wake on pin edge, only level"
msgstr "Kann nicht durch \"Pin edge\" geweckt werden nur durch \"level\""
msgstr "Kann nicht durch Flanke an Pin geweckt werden, sondern nur durch Pegel"
#: ports/espressif/common-hal/alarm/pin/PinAlarm.c
msgid "Cannot wake on pin edge. Only level."
@ -826,11 +826,11 @@ msgstr ""
#: shared-bindings/bitmaptools/__init__.c
msgid "Coordinate arrays have different lengths"
msgstr ""
msgstr "Koordinaten-Arrays haben unterschiedliche Längen"
#: shared-bindings/bitmaptools/__init__.c
msgid "Coordinate arrays types have different sizes"
msgstr ""
msgstr "Typen der Koordinaten-Arrays haben unterschiedliche Längen"
#: py/persistentcode.c
msgid "Corrupt .mpy file"
@ -951,7 +951,7 @@ msgstr "Fehler in regex"
#: supervisor/shared/safe_mode.c
msgid "Error in safemode.py."
msgstr ""
msgstr "Fehler in safemode.py."
#: shared-bindings/socketpool/Socket.c shared-bindings/ssl/SSLSocket.c
msgid "Error: Failure to bind"
@ -1028,7 +1028,7 @@ msgstr "Interner Flash konnte nicht geschrieben werden."
#: supervisor/shared/safe_mode.c
msgid "Fault detected by hardware."
msgstr ""
msgstr "Hardware hat Fehler festgestellt."
#: py/moduerrno.c
msgid "File exists"
@ -1121,12 +1121,13 @@ msgstr "Hardware in Benutzung, probiere alternative Pins"
#: supervisor/shared/safe_mode.c
msgid "Heap allocation when VM not running."
msgstr ""
msgstr "Allokation auf Heap während VM nicht läuft."
#: supervisor/shared/safe_mode.c
msgid ""
"Heap was corrupted because the stack was too small. Increase stack size."
msgstr ""
"Heap wurde beschädigt, weil der Stack zu klein war. Bitte Stack vergrößern."
#: extmod/vfs_posix_file.c py/objstringio.c
msgid "I/O operation on closed file"
@ -1250,7 +1251,7 @@ msgstr "Der Interne WatchDog Timer ist abgelaufen."
#: supervisor/shared/safe_mode.c
msgid "Interrupt error."
msgstr ""
msgstr "Interrupt Fehler."
#: ports/mimxrt10xx/common-hal/pwmio/PWMOut.c py/argcheck.c
#: shared-bindings/digitalio/DigitalInOut.c
@ -1278,7 +1279,7 @@ msgstr "Ungültige BSSID"
#: main.c
msgid "Invalid CIRCUITPY_PYSTACK_SIZE\n"
msgstr ""
msgstr "Ungültiger Wert CIRCUITPY_PYSTACK_SIZE\n"
#: shared-bindings/wifi/Radio.c
msgid "Invalid MAC address"
@ -1302,6 +1303,10 @@ msgstr "Ungültiges Byte %.*s"
msgid "Invalid data_pins[%d]"
msgstr "Ungültige data_pins[%d]"
#: shared-module/msgpack/__init__.c
msgid "Invalid format"
msgstr ""
#: shared-module/audiocore/WaveFile.c
msgid "Invalid format chunk size"
msgstr "Ungültige format chunk size"
@ -1325,7 +1330,7 @@ msgstr "Ungültiger Zustand"
#: shared-module/os/getenv.c
msgid "Invalid unicode escape"
msgstr ""
msgstr "Ungültiges Unicode-Escape-Zeichen"
#: shared-bindings/aesio/aes.c
msgid "Key must be 16, 24, or 32 bytes long"
@ -1720,7 +1725,7 @@ msgstr "Zeit für Vorgang abgelaufen"
#: ports/raspberrypi/common-hal/mdns/Server.c
msgid "Out of MDNS service slots"
msgstr ""
msgstr "Keine freien Slots für MDNS-Dienst mehr verfügbar"
#: ports/espressif/common-hal/espidf/__init__.c
msgid "Out of memory"
@ -1826,7 +1831,7 @@ msgstr "Polygone brauchen mindestens 3 Punkte"
#: shared-bindings/_bleio/Adapter.c
msgid "Prefix buffer must be on the heap"
msgstr "Der Präfix-Puffer muss sich auf dem Heap befinden"
msgstr "Präfix-Puffer muss sich auf dem Heap befinden"
#: main.c
msgid "Press any key to enter the REPL. Use CTRL-D to reload.\n"
@ -1874,7 +1879,7 @@ msgstr "RNG DeInit-Fehler"
#: ports/stm/common-hal/os/__init__.c
msgid "RNG Init Error"
msgstr "RNG Init-Fehler"
msgstr "RNG-Init-Fehler"
#: ports/atmel-samd/common-hal/busio/UART.c ports/cxd56/common-hal/busio/UART.c
#: ports/nrf/common-hal/busio/UART.c ports/stm/common-hal/busio/UART.c
@ -1977,7 +1982,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 progress. Stop with stop_scan."
msgstr ""
msgstr "Scan läuft schon. Stoppen mit stop_scan."
#: ports/atmel-samd/common-hal/audiobusio/I2SOut.c
#: ports/atmel-samd/common-hal/audiobusio/PDMIn.c
@ -2015,7 +2020,7 @@ msgstr "SocketPool kann nur mit wifi.radio verwendet werden"
#: shared-bindings/aesio/aes.c
msgid "Source and destination buffers must be the same length"
msgstr "Quell- und Zielbuffer müssen gleich lang sein"
msgstr "Quell- und Zielpuffer müssen gleich lang sein"
#: shared-bindings/paralleldisplay/ParallelBus.c
msgid "Specify exactly one of data0 or data_pins"
@ -2035,7 +2040,7 @@ msgstr "Stereo rechts muss sich auf PWM-Kanal B befinden"
#: ports/raspberrypi/common-hal/wifi/Radio.c
msgid "Stopping AP is not supported."
msgstr ""
msgstr "Das Stoppen des AP wird nicht unterstützt."
#: shared-bindings/alarm/time/TimeAlarm.c
msgid "Supply one of monotonic_time or epoch_time"
@ -2052,6 +2057,8 @@ msgstr "Zeitüberschreitung beim Auslesen der Temperatur"
#: supervisor/shared/safe_mode.c
msgid "The `microcontroller` module was used to boot into safe mode."
msgstr ""
"Das 'microcontroller'-Modul wurde benutzt, um in den Sichheitsmodus zu "
"booten."
#: py/obj.c
msgid "The above exception was the direct cause of the following exception:"
@ -2065,6 +2072,8 @@ msgstr "Die Länge von rgb_pins muss 6, 12, 18, 24 oder 30 betragen"
#: supervisor/shared/safe_mode.c
msgid "The power dipped. Make sure you are providing enough power."
msgstr ""
"Die Spannung ist eingebrochen. Stelle sicher, dass genügend Leistung "
"verfügbar ist."
#: shared-module/audiomixer/MixerVoice.c
msgid "The sample's bits_per_sample does not match the mixer's"
@ -2073,7 +2082,7 @@ msgstr ""
#: shared-module/audiomixer/MixerVoice.c
msgid "The sample's channel count does not match the mixer's"
msgstr "Die Kanalanzahl des Samples stimmt nicht mit der des Mixers überein"
msgstr "Die Kanalanzahl des Samples stimmt nicht mit der des Mischers überein"
#: shared-module/audiomixer/MixerVoice.c
msgid "The sample's sample rate does not match the mixer's"
@ -2081,12 +2090,11 @@ msgstr "Die Abtastrate der Probe stimmt nicht mit der des Mischers überein"
#: shared-module/audiomixer/MixerVoice.c
msgid "The sample's signedness does not match the mixer's"
msgstr ""
"Die Art des Vorzeichens des Samples stimmt nicht mit dem des Mixers überein"
msgstr "Der Vorzeichentyp des Samples stimmt nicht mit dem des Mixers überein"
#: supervisor/shared/safe_mode.c
msgid "Third-party firmware fatal error."
msgstr ""
msgstr "Fataler Fehler bei Drittanbieter-Firmware."
#: shared-module/imagecapture/ParallelImageCapture.c
msgid "This microcontroller does not support continuous capture."
@ -2106,7 +2114,7 @@ msgstr "Die Kachelhöhe muss die Bitmaphöhe genau teilen"
#: shared-bindings/displayio/TileGrid.c shared-module/displayio/TileGrid.c
msgid "Tile index out of bounds"
msgstr "Kachel index außerhalb der Grenzen"
msgstr "Kachelindex außerhalb der Grenzen"
#: shared-bindings/displayio/TileGrid.c
msgid "Tile width must exactly divide bitmap width"
@ -2133,7 +2141,7 @@ msgstr "Zu viele Kanäle im sample."
#: shared-module/displayio/__init__.c
msgid "Too many display busses"
msgstr "Zu viele Display Busse"
msgstr "Zu viele Anzeigebusse"
#: shared-module/displayio/__init__.c
msgid "Too many displays"
@ -2169,7 +2177,7 @@ msgstr "UART-Initialisierung"
#: ports/raspberrypi/common-hal/busio/UART.c
msgid "UART peripheral in use"
msgstr ""
msgstr "UART-Endgerät in Benutzung"
#: ports/stm/common-hal/busio/UART.c
msgid "UART re-init"
@ -2220,12 +2228,12 @@ msgstr "Konnte keine Buffer für Vorzeichenumwandlung allozieren"
#: supervisor/shared/safe_mode.c
msgid "Unable to allocate the heap."
msgstr ""
msgstr "Keine Allokation auf dem Heap möglich."
#: ports/espressif/common-hal/analogbufio/BufferedIn.c
#, c-format
msgid "Unable to configure ADC DMA controller, ErrorCode:%d"
msgstr ""
msgstr "ADC-DMA-Controller konnte nicht konfiguriert werden, Fehlercode: %d"
#: ports/espressif/common-hal/busio/I2C.c
msgid "Unable to create lock"
@ -2248,7 +2256,7 @@ msgstr "Parser konnte nicht gestartet werden"
#: ports/espressif/common-hal/analogbufio/BufferedIn.c
#, c-format
msgid "Unable to initialize ADC DMA controller, ErrorCode:%d"
msgstr ""
msgstr "ADC-DMA-Controller konnte nicht initialisiert werden, Fehlercode: %d"
#: shared-module/displayio/OnDiskBitmap.c
msgid "Unable to read color palette data"
@ -2257,7 +2265,7 @@ msgstr "Konnte Farbpalettendaten nicht lesen"
#: ports/espressif/common-hal/analogbufio/BufferedIn.c
#, c-format
msgid "Unable to start ADC DMA controller, ErrorCode:%d"
msgstr ""
msgstr "ADC-DMA-Controller konnte nicht gestartet werden, Fehlercode: %d"
#: ports/espressif/common-hal/mdns/Server.c
#: ports/raspberrypi/common-hal/mdns/Server.c
@ -2298,7 +2306,7 @@ msgstr "Unbekannter BLE-Fehler: %d"
#: ports/raspberrypi/common-hal/wifi/__init__.c
#, c-format
msgid "Unknown error code %d"
msgstr ""
msgstr "Unbekannter Fehlercode %d"
#: shared-bindings/wifi/Radio.c
#, c-format
@ -2376,7 +2384,7 @@ msgstr "Update fehlgeschlagen"
#: ports/nrf/common-hal/_bleio/Characteristic.c
#: ports/nrf/common-hal/_bleio/Descriptor.c
msgid "Value length != required fixed length"
msgstr "Wert Länge != Erforderliche feste Länge"
msgstr "Länge des Wertes != Erforderliche feste Länge"
#: ports/espressif/common-hal/_bleio/Characteristic.c
#: ports/espressif/common-hal/_bleio/Descriptor.c
@ -2437,11 +2445,11 @@ msgstr "Wi-Fi: "
#: ports/raspberrypi/common-hal/wifi/Radio.c
msgid "Wifi is in access point mode."
msgstr ""
msgstr "Das Wifi ist im Accesspoint-Modus."
#: ports/raspberrypi/common-hal/wifi/Radio.c
msgid "Wifi is in station mode."
msgstr ""
msgstr "Das Wifi ist im Station-Modus."
#: ports/raspberrypi/common-hal/wifi/Radio.c
msgid "Wifi is not enabled"
@ -2454,59 +2462,59 @@ msgstr "Aufgeweckt durch Alarm.\n"
#: ports/espressif/common-hal/_bleio/PacketBuffer.c
#: ports/nrf/common-hal/_bleio/PacketBuffer.c
msgid "Writes not supported on Characteristic"
msgstr "Schreiben nicht unterstüzt für diese Charakteristik"
msgstr "Schreiben für diese Charakteristik nicht unterstützt"
#: ports/atmel-samd/boards/circuitplayground_express/mpconfigboard.h
#: ports/atmel-samd/boards/circuitplayground_express_crickit/mpconfigboard.h
#: ports/atmel-samd/boards/circuitplayground_express_displayio/mpconfigboard.h
#: ports/atmel-samd/boards/meowmeow/mpconfigboard.h
msgid "You pressed both buttons at start up."
msgstr ""
msgstr "Beide Knöpfe wurden beim Starten gedrückt."
#: ports/espressif/boards/m5stack_core_basic/mpconfigboard.h
#: ports/espressif/boards/m5stack_core_fire/mpconfigboard.h
#: ports/espressif/boards/m5stack_stick_c/mpconfigboard.h
msgid "You pressed button A at start up."
msgstr ""
msgstr "Knopf A wurde beim Starten gedrückt."
#: supervisor/shared/safe_mode.c
msgid "You pressed the BOOT button at start up"
msgstr ""
msgstr "Der BOOT-Knopf wurde beim Starten gedrückt."
#: ports/espressif/boards/adafruit_huzzah32_breakout/mpconfigboard.h
msgid "You pressed the GPIO0 button at start up."
msgstr ""
msgstr "Der GPIO0-Knopf wurde beim Starten gedrückt."
#: ports/espressif/boards/espressif_esp32_lyrat/mpconfigboard.h
msgid "You pressed the Rec button at start up."
msgstr ""
msgstr "Der Rec-Knopf wurde beim Starten gedrückt."
#: ports/espressif/boards/adafruit_feather_esp32_v2/mpconfigboard.h
msgid "You pressed the SW38 button at start up."
msgstr ""
msgstr "Der SW38-Knopf wurde beim Starten gedrückt."
#: ports/espressif/boards/hardkernel_odroid_go/mpconfigboard.h
msgid "You pressed the VOLUME button at start up."
msgstr ""
msgstr "Der VOLUME-Knopf wurde beim Starten gedrückt."
#: ports/espressif/boards/m5stack_atom_echo/mpconfigboard.h
#: ports/espressif/boards/m5stack_atom_lite/mpconfigboard.h
#: ports/espressif/boards/m5stack_atom_matrix/mpconfigboard.h
#: ports/espressif/boards/m5stack_atom_u/mpconfigboard.h
msgid "You pressed the central button at start up."
msgstr ""
msgstr "Der zentrale Knopf wurde beim Starten gedrückt."
#: ports/nrf/boards/aramcon2_badge/mpconfigboard.h
msgid "You pressed the left button at start up."
msgstr ""
msgstr "Der linke Knopf wurde beim Starten gedrückt."
#: supervisor/shared/safe_mode.c
msgid "You pressed the reset button during boot."
msgstr ""
msgstr "Der Reset-Knopf wurde beim Booten gedrückt."
#: supervisor/shared/micropython.c
msgid "[truncated due to length]"
msgstr ""
msgstr "[abgeschnitten wegen der Länge]"
#: py/objtype.c
msgid "__init__() should return None"
@ -2579,7 +2587,7 @@ msgstr "Das Array hat zu viele Dimensionen"
#: extmod/ulab/code/ndarray.c
msgid "array is too big"
msgstr ""
msgstr "Array ist zu groß"
#: py/objarray.c shared-bindings/alarm/SleepMemory.c
#: shared-bindings/memorymap/AddressRange.c shared-bindings/nvm/ByteArray.c
@ -2794,8 +2802,8 @@ msgstr "kann keinen relativen Import durchführen"
#: py/objgenerator.c
msgid "can't send non-None value to a just-started generator"
msgstr ""
"Nicht \"None\" Werte können nicht an einen gerade gestarteten Generator "
"gesendet werden"
"Nicht-None-Wert kann nicht an einen gerade gestarteten Generator gesendet "
"werden"
#: shared-module/sdcardio/SDCard.c
msgid "can't set 512 block size"
@ -2807,7 +2815,7 @@ msgstr "kann Attribut nicht setzen"
#: py/runtime.c shared-bindings/supervisor/Runtime.c
msgid "can't set attribute '%q'"
msgstr ""
msgstr "Attribut '%q' kann nicht gesetzt werden"
#: py/emitnative.c
msgid "can't store '%q'"
@ -2877,7 +2885,7 @@ msgstr "Kanal wird erneut initialisiert"
#: shared-bindings/_stage/Text.c
msgid "chars buffer too small"
msgstr "(char) Zeichenpuffer zu klein"
msgstr "Zeichenpuffer zu klein"
#: py/modbuiltins.c
msgid "chr() arg not in range(0x110000)"
@ -2943,7 +2951,7 @@ msgstr "Convolve-Argumente müssen ndarrays sein"
#: extmod/ulab/code/numpy/filter.c
msgid "convolve arguments must not be empty"
msgstr "Convolve Argumente dürfen nicht leer sein"
msgstr "Faltungsargumente dürfen nicht leer sein"
#: extmod/ulab/code/numpy/io/io.c
msgid "corrupted file"
@ -2994,8 +3002,8 @@ msgstr "default ist keine Funktion"
msgid ""
"destination buffer must be a bytearray or array of type 'B' for bit_depth = 8"
msgstr ""
"Der Zielbuffer muss ein Bytearray oder ein Array vom Typ 'B' für bit_depth = "
"8 sein"
"Zielpuffer muss ein Bytearray oder ein Array vom Typ 'B' für bit_depth = 8 "
"sein"
#: shared-bindings/audiobusio/PDMIn.c
msgid "destination buffer must be an array of type 'H' for bit_depth = 16"
@ -3055,7 +3063,7 @@ msgstr "leere Sequenz"
#: py/objstr.c
msgid "end of format while looking for conversion specifier"
msgstr "Ende des Formats wärend der Suche nach einem conversion specifier"
msgstr "Ende des Formats bei der Suche nach einem Konvertierungsspezifizierer"
#: shared-bindings/alarm/time/TimeAlarm.c
msgid "epoch_time not supported on this board"
@ -3071,6 +3079,8 @@ msgid ""
"espcamera.Camera requires reserved PSRAM to be configured. See the "
"documentation for instructions."
msgstr ""
"espcamera.Camera benötigt reservierten PSRAM um konfiguriert zu werden. "
"Siehe Dokumentation für Anweisungen."
#: py/runtime.c
msgid "exceptions must derive from BaseException"
@ -3290,7 +3300,7 @@ msgstr "Index ist außerhalb der Grenzen"
#: shared-bindings/_pixelmap/PixelMap.c
msgid "index must be tuple or int"
msgstr ""
msgstr "Index muss tuple oder int sein"
#: extmod/ulab/code/numpy/numerical.c extmod/ulab/code/ulab_tools.c
#: ports/espressif/common-hal/pulseio/PulseIn.c
@ -3482,7 +3492,7 @@ msgstr "issubclass() arg 2 muss eine Klasse oder ein Tupel von Klassen sein"
#: extmod/ulab/code/numpy/linalg/linalg.c
msgid "iterations did not converge"
msgstr "Iterationen sind nicht konvergiert (converged)"
msgstr "Iterationen sind nicht konvergiert"
#: py/objstr.c
msgid "join expects a list of str/bytes objects consistent with self object"
@ -3550,7 +3560,7 @@ msgstr "mDNS funktioniert nur mit integriertem WiFi"
#: py/parse.c
msgid "malformed f-string"
msgstr "fehlformatierter f-string"
msgstr "fehlerhafter F-String"
#: shared-bindings/_stage/Layer.c
msgid "map buffer too small"
@ -3634,7 +3644,7 @@ msgstr "Mehrfache Vererbung nicht unterstützt"
#: py/emitnative.c
msgid "must raise an object"
msgstr "muss ein Objekt verursachen (raise)"
msgstr "muss ein Objekt aufwerfen (raise)"
#: py/modbuiltins.c
msgid "must use keyword argument for key function"
@ -3654,7 +3664,7 @@ msgstr "native Methode zu groß"
#: py/emitnative.c
msgid "native yield"
msgstr "native Ausbeute (yield)"
msgstr "natives yield"
#: py/runtime.c
#, c-format
@ -3667,15 +3677,15 @@ msgstr "negative Fakultät"
#: py/objint_longlong.c py/objint_mpz.c py/runtime.c
msgid "negative power with no float support"
msgstr "negative Potenz ohne Gleitkomma (float) Unterstützung"
msgstr "negative Potenz ohne Gleitkomma(float)-Unterstützung"
#: py/objint_mpz.c py/runtime.c
msgid "negative shift count"
msgstr "Negative shift Anzahl"
msgstr "Negative Anzahl an Verschiebungen"
#: shared-bindings/_pixelmap/PixelMap.c
msgid "nested index must be int"
msgstr ""
msgstr "verschachtelter Index muss int sein"
#: shared-module/sdcardio/SDCard.c
msgid "no SD card"
@ -3683,11 +3693,11 @@ msgstr "keine SD-Karte"
#: py/vm.c
msgid "no active exception to reraise"
msgstr "Keine aktive Ausnahme zu verusachen (raise)"
msgstr "Keine aktive Ausnahme zum Wiederaufwerfen (reraise)"
#: py/compile.c
msgid "no binding for nonlocal found"
msgstr "Kein Binding für nonlocal gefunden"
msgstr "Keine Bindung für nichtlokale Variable gefunden"
#: shared-module/msgpack/__init__.c
msgid "no default packer"
@ -3717,7 +3727,7 @@ msgstr "kein solches Attribut"
#: ports/espressif/common-hal/_bleio/Connection.c
#: ports/nrf/common-hal/_bleio/Connection.c
msgid "non-UUID found in service_uuids_whitelist"
msgstr "non-UUID gefunden in service_uuids_whitelist"
msgstr "Nicht-UUID in service_uuids_whitelist gefunden"
#: py/compile.c
msgid "non-default argument follows default argument"
@ -3733,7 +3743,7 @@ msgstr "Nicht-Schlüsselwort arg nach * / **"
#: py/compile.c
msgid "non-keyword arg after keyword arg"
msgstr "Nicht-Schlüsselwort Argument nach Schlüsselwort Argument"
msgstr "Nicht-Schlüsselwort-Argument nach Schlüsselwort-Argument"
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "non-zero timeout must be > 0.01"
@ -3750,11 +3760,12 @@ msgstr "keine 128-bit UUID"
#: py/objstr.c
msgid "not all arguments converted during string formatting"
msgstr ""
"Nicht alle Argumente wurden während der Formatierung des Strings konvertiert"
"Nicht alle Argumente wurden während der Formatierung der Zeichenfolge "
"konvertiert"
#: py/objstr.c
msgid "not enough arguments for format string"
msgstr "Nicht genügend Argumente für den Formatierungs-String"
msgstr "Nicht genügend Argumente für die Formatzeichenfolge"
#: extmod/ulab/code/numpy/carray/carray_tools.c
msgid "not implemented for complex dtype"
@ -3850,11 +3861,11 @@ msgstr "nur Mono wird unterstützt"
#: extmod/ulab/code/numpy/create.c
msgid "only ndarrays can be concatenated"
msgstr ""
msgstr "nur ndarrays können aneinandergehängt werden"
#: ports/stm/common-hal/audiobusio/PDMIn.c
msgid "only oversample=64 is supported"
msgstr ""
msgstr "nur oversample=64 wird unterstützt"
#: ports/nrf/common-hal/audiobusio/PDMIn.c
#: ports/stm/common-hal/audiobusio/PDMIn.c
@ -3891,7 +3902,7 @@ msgstr "Operation wird nur für boolesche 1D-Arrays implementiert"
#: extmod/ulab/code/numpy/numerical.c
msgid "operation is not implemented on ndarrays"
msgstr "Die Operation ist für ndarrays nicht implementiert"
msgstr "Operation ist auf ndarrays nicht implementiert"
#: extmod/ulab/code/ndarray.c
msgid "operation is not supported for given type"
@ -3943,7 +3954,7 @@ msgstr "Die Parameter müssen Register der Reihenfolge a2 bis a5 sein"
#: py/emitinlinethumb.c
msgid "parameters must be registers in sequence r0 to r3"
msgstr "Die Parameter müssen Register der Reihenfolge r0 bis r3 sein"
msgstr "Parameter müssen Register im Bereich von r0 bis r3 sein"
#: shared-bindings/bitmaptools/__init__.c shared-bindings/displayio/Bitmap.c
msgid "pixel coordinates out of bounds"
@ -3984,7 +3995,7 @@ msgstr "pow() drittes Argument darf nicht 0 sein"
#: py/objint_mpz.c
msgid "pow() with 3 arguments requires integers"
msgstr "pow() mit 3 Argumenten erfordert Integer"
msgstr "pow() mit 3 Argumenten erfordert ganze Zahlen"
#: ports/raspberrypi/common-hal/rp2pio/StateMachine.c
msgid "pull masks conflict with direction masks"
@ -4016,7 +4027,7 @@ msgstr "Rückgabewert-Beschreibung muss ein Identifier sein"
#: py/emitnative.c
msgid "return expected '%q' but got '%q'"
msgstr "Rückgabe erwartet '%q', aber '%q' erhalten"
msgstr "Rückgabe (return) erwartet '%q', hat aber '%q' erhalten"
#: shared-bindings/rgbmatrix/RGBMatrix.c
#, c-format
@ -4026,7 +4037,7 @@ msgstr "rgb_pins[%d] dupliziert eine andere Pinbelegung"
#: shared-bindings/rgbmatrix/RGBMatrix.c
#, c-format
msgid "rgb_pins[%d] is not on the same port as clock"
msgstr "rgb_pins [%d] befindet sich nicht am selben Port wie clock"
msgstr "rgb_pins[%d] befindet sich nicht am selben Port wie clock"
#: extmod/ulab/code/numpy/numerical.c
msgid "roll argument must be an ndarray"
@ -4063,7 +4074,7 @@ msgstr "kurze Lektüre"
#: py/objstr.c
msgid "sign not allowed in string format specifier"
msgstr "Vorzeichen nicht erlaubt in einem String formatierungs specifier"
msgstr "Vorzeichen im Zeichenfolgenformatbezeichner nicht zulässig"
#: py/objstr.c
msgid "sign not allowed with integer format specifier 'c'"
@ -4095,7 +4106,7 @@ msgstr "weicher reboot\n"
#: extmod/ulab/code/numpy/numerical.c
msgid "sort argument must be an ndarray"
msgstr "sortierungs Argument muss ein ndarray sein"
msgstr "Sortierungsargument muss ein ndarray sein"
#: extmod/ulab/code/scipy/signal/signal.c
msgid "sos array must be of shape (n_section, 6)"
@ -4215,7 +4226,7 @@ msgstr "zu viele Lokale für die native Methode"
#: py/runtime.c
#, c-format
msgid "too many values to unpack (expected %d)"
msgstr "zu viele Werte zum Auspacken (erwartet %d)"
msgstr "zu viele Werte zum Auspacken (%d erwartet)"
#: extmod/ulab/code/numpy/approx.c
msgid "trapz is defined for 1D arrays of equal length"
@ -4249,7 +4260,7 @@ msgstr "Typ ist kein akzeptierter Basis-Typ"
#: py/objgenerator.c py/runtime.c
msgid "type object '%q' has no attribute '%q'"
msgstr "Typ vom Objekt '%q' hat kein Attribut '%q'"
msgstr "Typ-Objekt '%q' hat kein Attribut '%q'"
#: py/objtype.c
msgid "type takes 1 or 3 arguments"
@ -4279,7 +4290,7 @@ msgstr "unerwartetes Schlüsselwort-Argument '%q'"
#: py/lexer.c
msgid "unicode name escapes"
msgstr "Unicode Name ausgebrochen (escaped)"
msgstr "Escaping von Unicode-Namen"
#: py/parse.c
msgid "unindent doesn't match any outer indent level"
@ -4288,7 +4299,7 @@ msgstr "unindent stimmt mit keiner äußeren Einrückungsebene überein"
#: py/objstr.c
#, c-format
msgid "unknown conversion specifier %c"
msgstr "unbekannter Konvertierungs specifier %c"
msgstr "unbekannter Konvertierungsspezifizierer %c"
#: py/objstr.c
msgid "unknown format code '%c' for object of type '%q'"
@ -4305,7 +4316,7 @@ msgstr "unbekannter Typ '%q'"
#: py/objstr.c
#, c-format
msgid "unmatched '%c' in format"
msgstr ""
msgstr "'%c' in Format konnte nicht zugeordnet werden"
#: py/objtype.c py/runtime.c
msgid "unreadable attribute"
@ -4458,6 +4469,9 @@ 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 "64 bit types"
#~ msgstr "64 bit-Typen"
#~ msgid "No key was specified"
#~ msgstr "Es wurde kein Schlüssel angegeben"

View File

@ -408,11 +408,6 @@ msgstr "0.0 σε μία σύνθετη δύναμη"
msgid "3-arg pow() not supported"
msgstr "pow() με 3 παραμέτρους δεν υποστηρίζεται"
#: shared-module/msgpack/__init__.c
#, fuzzy
msgid "64 bit types"
msgstr "64 bit τύποι"
#: ports/atmel-samd/common-hal/alarm/pin/PinAlarm.c
#: ports/atmel-samd/common-hal/countio/Counter.c
#: ports/atmel-samd/common-hal/rotaryio/IncrementalEncoder.c
@ -1292,6 +1287,10 @@ msgstr ""
msgid "Invalid data_pins[%d]"
msgstr ""
#: shared-module/msgpack/__init__.c
msgid "Invalid format"
msgstr ""
#: shared-module/audiocore/WaveFile.c
msgid "Invalid format chunk size"
msgstr ""
@ -4390,6 +4389,10 @@ msgstr ""
msgid "zi must be of shape (n_section, 2)"
msgstr ""
#, fuzzy
#~ msgid "64 bit types"
#~ msgstr "64 bit τύποι"
#~ msgid "%q pin invalid"
#~ msgstr "%q άκυρο pin"

View File

@ -407,10 +407,6 @@ msgstr "0.0 to a complex power"
msgid "3-arg pow() not supported"
msgstr "3-arg pow() not supported"
#: shared-module/msgpack/__init__.c
msgid "64 bit types"
msgstr "64 bit types"
#: ports/atmel-samd/common-hal/alarm/pin/PinAlarm.c
#: ports/atmel-samd/common-hal/countio/Counter.c
#: ports/atmel-samd/common-hal/rotaryio/IncrementalEncoder.c
@ -1284,6 +1280,10 @@ msgstr ""
msgid "Invalid data_pins[%d]"
msgstr "Invalid data_pins[%d]"
#: shared-module/msgpack/__init__.c
msgid "Invalid format"
msgstr ""
#: shared-module/audiocore/WaveFile.c
msgid "Invalid format chunk size"
msgstr "Invalid format chunk size"
@ -4393,6 +4393,9 @@ 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 "64 bit types"
#~ msgstr "64 bit types"
#~ msgid "No key was specified"
#~ msgstr "No key was specified"

View File

@ -415,10 +415,6 @@ msgstr "0.0 a una potencia compleja"
msgid "3-arg pow() not supported"
msgstr "pow() con 3 argumentos no soportado"
#: shared-module/msgpack/__init__.c
msgid "64 bit types"
msgstr "tipos de 64 bit"
#: ports/atmel-samd/common-hal/alarm/pin/PinAlarm.c
#: ports/atmel-samd/common-hal/countio/Counter.c
#: ports/atmel-samd/common-hal/rotaryio/IncrementalEncoder.c
@ -1317,6 +1313,10 @@ msgstr "byte %.*s Inválido"
msgid "Invalid data_pins[%d]"
msgstr "Inválidos los data_pins[%d]"
#: shared-module/msgpack/__init__.c
msgid "Invalid format"
msgstr ""
#: shared-module/audiocore/WaveFile.c
msgid "Invalid format chunk size"
msgstr "Formato de fragmento de formato no válido"
@ -4466,6 +4466,9 @@ 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 "64 bit types"
#~ msgstr "tipos de 64 bit"
#~ msgid "No key was specified"
#~ msgstr "No se especificó ninguna llave"

View File

@ -402,10 +402,6 @@ msgstr "0.0 para sa complex power"
msgid "3-arg pow() not supported"
msgstr "3-arg pow() hindi suportado"
#: shared-module/msgpack/__init__.c
msgid "64 bit types"
msgstr ""
#: ports/atmel-samd/common-hal/alarm/pin/PinAlarm.c
#: ports/atmel-samd/common-hal/countio/Counter.c
#: ports/atmel-samd/common-hal/rotaryio/IncrementalEncoder.c
@ -1283,6 +1279,10 @@ msgstr ""
msgid "Invalid data_pins[%d]"
msgstr ""
#: shared-module/msgpack/__init__.c
msgid "Invalid format"
msgstr ""
#: shared-module/audiocore/WaveFile.c
msgid "Invalid format chunk size"
msgstr "Mali ang format ng chunk size"

View File

@ -412,10 +412,6 @@ msgstr "0.0 à une puissance complexe"
msgid "3-arg pow() not supported"
msgstr "pow() non supporté avec 3 paramètres"
#: shared-module/msgpack/__init__.c
msgid "64 bit types"
msgstr "types à 64 bit"
#: ports/atmel-samd/common-hal/alarm/pin/PinAlarm.c
#: ports/atmel-samd/common-hal/countio/Counter.c
#: ports/atmel-samd/common-hal/rotaryio/IncrementalEncoder.c
@ -1323,6 +1319,10 @@ msgstr "Octet invalide %.*s"
msgid "Invalid data_pins[%d]"
msgstr "data_pins[%d] invalide"
#: shared-module/msgpack/__init__.c
msgid "Invalid format"
msgstr ""
#: shared-module/audiocore/WaveFile.c
msgid "Invalid format chunk size"
msgstr "Taille de bloc de formatage invalide"
@ -4485,6 +4485,9 @@ 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 "64 bit types"
#~ msgstr "types à 64 bit"
#~ msgid "No key was specified"
#~ msgstr "Aucune clé n'a été spécifiée"

View File

@ -400,10 +400,6 @@ msgstr ""
msgid "3-arg pow() not supported"
msgstr ""
#: shared-module/msgpack/__init__.c
msgid "64 bit types"
msgstr ""
#: ports/atmel-samd/common-hal/alarm/pin/PinAlarm.c
#: ports/atmel-samd/common-hal/countio/Counter.c
#: ports/atmel-samd/common-hal/rotaryio/IncrementalEncoder.c
@ -1271,6 +1267,10 @@ msgstr ""
msgid "Invalid data_pins[%d]"
msgstr ""
#: shared-module/msgpack/__init__.c
msgid "Invalid format"
msgstr ""
#: shared-module/audiocore/WaveFile.c
msgid "Invalid format chunk size"
msgstr ""

View File

@ -405,10 +405,6 @@ msgstr "0.0 elevato alla potenza di un numero complesso"
msgid "3-arg pow() not supported"
msgstr "pow() con tre argmomenti non supportata"
#: shared-module/msgpack/__init__.c
msgid "64 bit types"
msgstr "Tipo 64 bits"
#: ports/atmel-samd/common-hal/alarm/pin/PinAlarm.c
#: ports/atmel-samd/common-hal/countio/Counter.c
#: ports/atmel-samd/common-hal/rotaryio/IncrementalEncoder.c
@ -1285,6 +1281,10 @@ msgstr ""
msgid "Invalid data_pins[%d]"
msgstr ""
#: shared-module/msgpack/__init__.c
msgid "Invalid format"
msgstr ""
#: shared-module/audiocore/WaveFile.c
msgid "Invalid format chunk size"
msgstr ""
@ -4415,6 +4415,9 @@ msgstr ""
msgid "zi must be of shape (n_section, 2)"
msgstr ""
#~ msgid "64 bit types"
#~ msgstr "Tipo 64 bits"
#~ msgid "too many arguments provided with the given format"
#~ msgstr "troppi argomenti forniti con il formato specificato"

View File

@ -407,10 +407,6 @@ msgstr "0.0を複素数でべき乗"
msgid "3-arg pow() not supported"
msgstr "引数3つのpow()は非対応"
#: shared-module/msgpack/__init__.c
msgid "64 bit types"
msgstr ""
#: ports/atmel-samd/common-hal/alarm/pin/PinAlarm.c
#: ports/atmel-samd/common-hal/countio/Counter.c
#: ports/atmel-samd/common-hal/rotaryio/IncrementalEncoder.c
@ -1284,6 +1280,10 @@ msgstr ""
msgid "Invalid data_pins[%d]"
msgstr ""
#: shared-module/msgpack/__init__.c
msgid "Invalid format"
msgstr ""
#: shared-module/audiocore/WaveFile.c
msgid "Invalid format chunk size"
msgstr "フォーマットチャンクのサイズが不正"

View File

@ -401,10 +401,6 @@ msgstr ""
msgid "3-arg pow() not supported"
msgstr ""
#: shared-module/msgpack/__init__.c
msgid "64 bit types"
msgstr ""
#: ports/atmel-samd/common-hal/alarm/pin/PinAlarm.c
#: ports/atmel-samd/common-hal/countio/Counter.c
#: ports/atmel-samd/common-hal/rotaryio/IncrementalEncoder.c
@ -1274,6 +1270,10 @@ msgstr ""
msgid "Invalid data_pins[%d]"
msgstr ""
#: shared-module/msgpack/__init__.c
msgid "Invalid format"
msgstr ""
#: shared-module/audiocore/WaveFile.c
msgid "Invalid format chunk size"
msgstr "형식 청크 크기가 잘못되었습니다"

View File

@ -400,10 +400,6 @@ msgstr "0.0 tot een complexe macht"
msgid "3-arg pow() not supported"
msgstr "3-arg pow() niet ondersteund"
#: shared-module/msgpack/__init__.c
msgid "64 bit types"
msgstr ""
#: ports/atmel-samd/common-hal/alarm/pin/PinAlarm.c
#: ports/atmel-samd/common-hal/countio/Counter.c
#: ports/atmel-samd/common-hal/rotaryio/IncrementalEncoder.c
@ -1279,6 +1275,10 @@ msgstr ""
msgid "Invalid data_pins[%d]"
msgstr ""
#: shared-module/msgpack/__init__.c
msgid "Invalid format"
msgstr ""
#: shared-module/audiocore/WaveFile.c
msgid "Invalid format chunk size"
msgstr "Ongeldig formaat stuk grootte"

View File

@ -402,10 +402,6 @@ msgstr "0.0 do potęgi zespolonej"
msgid "3-arg pow() not supported"
msgstr "3-argumentowy pow() jest niewspierany"
#: shared-module/msgpack/__init__.c
msgid "64 bit types"
msgstr ""
#: ports/atmel-samd/common-hal/alarm/pin/PinAlarm.c
#: ports/atmel-samd/common-hal/countio/Counter.c
#: ports/atmel-samd/common-hal/rotaryio/IncrementalEncoder.c
@ -1279,6 +1275,10 @@ msgstr ""
msgid "Invalid data_pins[%d]"
msgstr ""
#: shared-module/msgpack/__init__.c
msgid "Invalid format"
msgstr ""
#: shared-module/audiocore/WaveFile.c
msgid "Invalid format chunk size"
msgstr "Zła wielkość fragmentu formatu"

View File

@ -417,10 +417,6 @@ msgstr "0,0 para uma potência complexa"
msgid "3-arg pow() not supported"
msgstr "3-arg pow() não compatível"
#: shared-module/msgpack/__init__.c
msgid "64 bit types"
msgstr "Tipos 64 bit"
#: ports/atmel-samd/common-hal/alarm/pin/PinAlarm.c
#: ports/atmel-samd/common-hal/countio/Counter.c
#: ports/atmel-samd/common-hal/rotaryio/IncrementalEncoder.c
@ -1313,6 +1309,10 @@ msgstr "Byte %.*s inválido"
msgid "Invalid data_pins[%d]"
msgstr "data_pins[%d] inválido"
#: shared-module/msgpack/__init__.c
msgid "Invalid format"
msgstr ""
#: shared-module/audiocore/WaveFile.c
msgid "Invalid format chunk size"
msgstr "Tamanho do pedaço de formato inválido"
@ -4466,6 +4466,9 @@ 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 "64 bit types"
#~ msgstr "Tipos 64 bit"
#~ msgid "No key was specified"
#~ msgstr "Nenhuma chave foi definida"

View File

@ -407,10 +407,6 @@ msgstr "0.0 в комплексную степень"
msgid "3-arg pow() not supported"
msgstr "3-аргументный pow() не поддерживается"
#: shared-module/msgpack/__init__.c
msgid "64 bit types"
msgstr "64-битные типы"
#: ports/atmel-samd/common-hal/alarm/pin/PinAlarm.c
#: ports/atmel-samd/common-hal/countio/Counter.c
#: ports/atmel-samd/common-hal/rotaryio/IncrementalEncoder.c
@ -1316,6 +1312,10 @@ msgstr "Неверный байт %.*s"
msgid "Invalid data_pins[%d]"
msgstr "Неверный data_pins[%d]"
#: shared-module/msgpack/__init__.c
msgid "Invalid format"
msgstr ""
#: shared-module/audiocore/WaveFile.c
msgid "Invalid format chunk size"
msgstr "Неверный размер блока формата"
@ -4430,6 +4430,9 @@ msgstr "zi должно быть типа float"
msgid "zi must be of shape (n_section, 2)"
msgstr "zi должен иметь форму (n_section, 2)"
#~ msgid "64 bit types"
#~ msgstr "64-битные типы"
#~ msgid "No key was specified"
#~ msgstr "Ключ не был указан"

View File

@ -414,10 +414,6 @@ msgstr "0,0 till ett komplext nummer"
msgid "3-arg pow() not supported"
msgstr "3-arguments pow() stöds inte"
#: shared-module/msgpack/__init__.c
msgid "64 bit types"
msgstr "64-bitars typer"
#: ports/atmel-samd/common-hal/alarm/pin/PinAlarm.c
#: ports/atmel-samd/common-hal/countio/Counter.c
#: ports/atmel-samd/common-hal/rotaryio/IncrementalEncoder.c
@ -1298,6 +1294,10 @@ msgstr "Ogiltig byte %.*s"
msgid "Invalid data_pins[%d]"
msgstr "Ogiltig data_pins[%d]"
#: shared-module/msgpack/__init__.c
msgid "Invalid format"
msgstr ""
#: shared-module/audiocore/WaveFile.c
msgid "Invalid format chunk size"
msgstr "Ogiltig formatsegmentstorlek"
@ -4428,6 +4428,9 @@ 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 "64 bit types"
#~ msgstr "64-bitars typer"
#~ msgid "No key was specified"
#~ msgstr "Ingen nyckel angavs"

View File

@ -409,10 +409,6 @@ msgstr "0.0'dan bir karmaşık güce"
msgid "3-arg pow() not supported"
msgstr "3-argümanlı pow() desteklenmemektedir"
#: shared-module/msgpack/__init__.c
msgid "64 bit types"
msgstr "64 bit tipler"
#: ports/atmel-samd/common-hal/alarm/pin/PinAlarm.c
#: ports/atmel-samd/common-hal/countio/Counter.c
#: ports/atmel-samd/common-hal/rotaryio/IncrementalEncoder.c
@ -1290,6 +1286,10 @@ msgstr ""
msgid "Invalid data_pins[%d]"
msgstr "Geçersiz veri_pini [%d]"
#: shared-module/msgpack/__init__.c
msgid "Invalid format"
msgstr ""
#: shared-module/audiocore/WaveFile.c
msgid "Invalid format chunk size"
msgstr "Geçersiz biçim yığın boyutu"
@ -4389,6 +4389,9 @@ msgstr ""
msgid "zi must be of shape (n_section, 2)"
msgstr ""
#~ msgid "64 bit types"
#~ msgstr "64 bit tipler"
#~ msgid "%q pin invalid"
#~ msgstr "%q pini geçersiz"

View File

@ -416,10 +416,6 @@ msgstr "0.0 de fùshù cì mì"
msgid "3-arg pow() not supported"
msgstr "bù zhī chí 3-arg pow()"
#: shared-module/msgpack/__init__.c
msgid "64 bit types"
msgstr "64 wèi lèixíng"
#: ports/atmel-samd/common-hal/alarm/pin/PinAlarm.c
#: ports/atmel-samd/common-hal/countio/Counter.c
#: ports/atmel-samd/common-hal/rotaryio/IncrementalEncoder.c
@ -1305,6 +1301,10 @@ msgstr "wú xiào zì jié %.*s"
msgid "Invalid data_pins[%d]"
msgstr "wú xiào data_pins[%d]"
#: shared-module/msgpack/__init__.c
msgid "Invalid format"
msgstr ""
#: shared-module/audiocore/WaveFile.c
msgid "Invalid format chunk size"
msgstr "Géshì kuài dàxiǎo wúxiào"
@ -4434,6 +4434,9 @@ 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 "64 bit types"
#~ msgstr "64 wèi lèixíng"
#~ msgid "No key was specified"
#~ msgstr "Wèi zhǐdìng mì yào"

View File

@ -53,7 +53,7 @@ static void espnow_check_for_deinit(espnow_obj_t *self) {
//| class ESPNow:
//| """Provides access to the ESP-NOW protocol."""
//|
//| def __init__(self, buffer_size: Optional[int], phy_rate: Optional[int]) -> None:
//| def __init__(self, buffer_size: int = 526, phy_rate: int = 0) -> None:
//| """Allocate and initialize `ESPNow` instance as a singleton.
//|
//| :param int buffer_size: The size of the internal ring buffer. Default: 526 bytes.

View File

@ -40,10 +40,11 @@
//| def __init__(
//| self,
//| mac: bytes,
//| *,
//| lmk: Optional[bytes],
//| channel: int = 0,
//| interface: int = 0,
//| encrypt: bool = False,
//| encrypted: bool = False,
//| ) -> None:
//| """Construct a new peer object.
//|
@ -51,17 +52,17 @@
//| :param bytes lmk: The Local Master Key (lmk) of the peer.
//| :param int channel: The peer's channel. Default: 0 ie. use the current channel.
//| :param int interface: The WiFi interface to use. Default: 0 ie. STA.
//| :param bool encrypt: Whether or not to use encryption.
//| :param bool encrypted: Whether or not to use encryption.
//| """
//| ...
STATIC mp_obj_t espnow_peer_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) {
enum { ARG_mac, ARG_lmk, ARG_channel, ARG_interface, ARG_encrypt };
enum { ARG_mac, ARG_lmk, ARG_channel, ARG_interface, ARG_encrypted };
static const mp_arg_t allowed_args[] = {
{ MP_QSTR_mac, MP_ARG_OBJ | MP_ARG_REQUIRED },
{ MP_QSTR_lmk, MP_ARG_OBJ, { .u_obj = mp_const_none } },
{ MP_QSTR_channel, MP_ARG_INT, { .u_obj = mp_const_none } },
{ MP_QSTR_interface,MP_ARG_INT, { .u_obj = mp_const_none } },
{ MP_QSTR_encrypt, MP_ARG_BOOL,{ .u_obj = mp_const_none } },
{ MP_QSTR_lmk, MP_ARG_OBJ | MP_ARG_KW_ONLY, { .u_obj = mp_const_none } },
{ MP_QSTR_channel, MP_ARG_INT | MP_ARG_KW_ONLY, { .u_int = 0 } },
{ MP_QSTR_interface,MP_ARG_INT | MP_ARG_KW_ONLY, { .u_int = 0 } },
{ MP_QSTR_encrypted,MP_ARG_BOOL | MP_ARG_KW_ONLY, { .u_bool = false } },
};
mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)];
@ -77,20 +78,11 @@ STATIC mp_obj_t espnow_peer_make_new(const mp_obj_type_t *type, size_t n_args, s
memcpy(self->peer_info.peer_addr, common_hal_espnow_get_bytes_len(args[ARG_mac].u_obj, ESP_NOW_ETH_ALEN), ESP_NOW_ETH_ALEN);
const mp_obj_t channel = args[ARG_channel].u_obj;
if (channel != mp_const_none) {
self->peer_info.channel = mp_arg_validate_int_range(mp_obj_get_int(channel), 0, 14, MP_QSTR_channel);
}
self->peer_info.channel = mp_arg_validate_int_range(args[ARG_channel].u_int, 0, 14, MP_QSTR_channel);
const mp_obj_t interface = args[ARG_interface].u_obj;
if (interface != mp_const_none) {
self->peer_info.ifidx = (wifi_interface_t)mp_arg_validate_int_range(mp_obj_get_int(interface), 0, 1, MP_QSTR_interface);
}
self->peer_info.ifidx = (wifi_interface_t)mp_arg_validate_int_range(args[ARG_interface].u_int, 0, 1, MP_QSTR_interface);
const mp_obj_t encrypt = args[ARG_encrypt].u_obj;
if (encrypt != mp_const_none) {
self->peer_info.encrypt = mp_obj_is_true(encrypt);
}
self->peer_info.encrypt = args[ARG_encrypted].u_bool;
const mp_obj_t lmk = args[ARG_lmk].u_obj;
if (lmk != mp_const_none) {

View File

@ -1,5 +1,5 @@
CIRCUITPY_CREATOR_ID = 0x00001209
CIRCUITPY_CREATION_ID = 0x0032D001
CIRCUITPY_CREATOR_ID = 0x19231923
CIRCUITPY_CREATION_ID = 0x00320001
IDF_TARGET = esp32

View File

@ -1,5 +1,5 @@
CIRCUITPY_CREATOR_ID = 0x00001209
CIRCUITPY_CREATION_ID = 0x0032D002
CIRCUITPY_CREATOR_ID = 0x19231923
CIRCUITPY_CREATION_ID = 0x00320002
IDF_TARGET = esp32

View File

@ -0,0 +1,32 @@
/*
* This file is part of the MicroPython project, http://micropython.org/
*
* The MIT License (MIT)
*
* Copyright (c) 2020 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"
#include "mpconfigboard.h"
#include "shared-bindings/microcontroller/Pin.h"
// Use the MP_WEAK supervisor/shared/board.c versions of routines not defined here.

View File

@ -0,0 +1,47 @@
/*
* This file is part of the MicroPython project, http://micropython.org/
*
* The MIT License (MIT)
*
* Copyright (c) 2019 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.
*/
// Micropython setup
#define MICROPY_HW_BOARD_NAME "Deneyap Kart 1A v2"
#define MICROPY_HW_MCU_NAME "ESP32S3"
#define MICROPY_HW_NEOPIXEL (&pin_GPIO33)
#define CIRCUITPY_STATUS_LED_POWER (&pin_GPIO21)
#define MICROPY_HW_LED_STATUS (&pin_GPIO13)
#define DEFAULT_I2C_BUS_SCL (&pin_GPIO4)
#define DEFAULT_I2C_BUS_SDA (&pin_GPIO3)
#define DEFAULT_SPI_BUS_SCK (&pin_GPIO36)
#define DEFAULT_SPI_BUS_MOSI (&pin_GPIO35)
#define DEFAULT_SPI_BUS_MISO (&pin_GPIO37)
#define DEFAULT_UART_BUS_RX (&pin_GPIO38)
#define DEFAULT_UART_BUS_TX (&pin_GPIO39)
#define DOUBLE_TAP_PIN (&pin_GPIO34)

View File

@ -0,0 +1,12 @@
USB_VID = 0x239A
USB_PID = 0x8148
USB_PRODUCT = "Deneyap Kart 1A v2"
USB_MANUFACTURER = "Turkish Technology Team Foundation"
IDF_TARGET = esp32s3
CIRCUITPY_ESP_FLASH_MODE = dio
CIRCUITPY_ESP_FLASH_FREQ = 80m
CIRCUITPY_ESP_FLASH_SIZE = 4MB
CIRCUITPY_ESPCAMERA = 0

View File

@ -0,0 +1,73 @@
#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_BUTTON), MP_ROM_PTR(&pin_GPIO0) },
{ MP_ROM_QSTR(MP_QSTR_BOOT0), MP_ROM_PTR(&pin_GPIO0) },
{ MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_GPIO0) },
{ MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO3) },
{ MP_ROM_QSTR(MP_QSTR_D3), MP_ROM_PTR(&pin_GPIO3) },
{ MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_GPIO4) },
{ MP_ROM_QSTR(MP_QSTR_D4), MP_ROM_PTR(&pin_GPIO4) },
{ MP_ROM_QSTR(MP_QSTR_D5), MP_ROM_PTR(&pin_GPIO5) },
{ MP_ROM_QSTR(MP_QSTR_D6), MP_ROM_PTR(&pin_GPIO6) },
{ MP_ROM_QSTR(MP_QSTR_I2C_POWER), MP_ROM_PTR(&pin_GPIO7) },
{ MP_ROM_QSTR(MP_QSTR_D7), MP_ROM_PTR(&pin_GPIO7) },
{ MP_ROM_QSTR(MP_QSTR_A5), MP_ROM_PTR(&pin_GPIO8) },
{ MP_ROM_QSTR(MP_QSTR_D8), MP_ROM_PTR(&pin_GPIO8) },
{ MP_ROM_QSTR(MP_QSTR_D9), MP_ROM_PTR(&pin_GPIO9) },
{ MP_ROM_QSTR(MP_QSTR_D10), MP_ROM_PTR(&pin_GPIO10) },
{ MP_ROM_QSTR(MP_QSTR_D11), MP_ROM_PTR(&pin_GPIO11) },
{ MP_ROM_QSTR(MP_QSTR_D12), MP_ROM_PTR(&pin_GPIO12) },
{ MP_ROM_QSTR(MP_QSTR_LED), MP_ROM_PTR(&pin_GPIO13) },
{ MP_ROM_QSTR(MP_QSTR_D13), MP_ROM_PTR(&pin_GPIO13) },
{ MP_ROM_QSTR(MP_QSTR_L), MP_ROM_PTR(&pin_GPIO13) },
{ MP_ROM_QSTR(MP_QSTR_A4), MP_ROM_PTR(&pin_GPIO14) },
{ MP_ROM_QSTR(MP_QSTR_D14), MP_ROM_PTR(&pin_GPIO14) },
{ MP_ROM_QSTR(MP_QSTR_A3), MP_ROM_PTR(&pin_GPIO15) },
{ MP_ROM_QSTR(MP_QSTR_D15), MP_ROM_PTR(&pin_GPIO15) },
{ MP_ROM_QSTR(MP_QSTR_A2), MP_ROM_PTR(&pin_GPIO16) },
{ MP_ROM_QSTR(MP_QSTR_D16), MP_ROM_PTR(&pin_GPIO16) },
{ MP_ROM_QSTR(MP_QSTR_A1), MP_ROM_PTR(&pin_GPIO17) },
{ MP_ROM_QSTR(MP_QSTR_D17), MP_ROM_PTR(&pin_GPIO17) },
{ MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_GPIO18) },
{ MP_ROM_QSTR(MP_QSTR_D18), MP_ROM_PTR(&pin_GPIO18) },
{ MP_ROM_QSTR(MP_QSTR_NEOPIXEL_POWER), MP_ROM_PTR(&pin_GPIO21) },
{ MP_ROM_QSTR(MP_QSTR_NEOPIXEL), MP_ROM_PTR(&pin_GPIO33) },
{ MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_GPIO35) },
{ MP_ROM_QSTR(MP_QSTR_D35), MP_ROM_PTR(&pin_GPIO35) },
{ MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_GPIO36) },
{ MP_ROM_QSTR(MP_QSTR_D36), MP_ROM_PTR(&pin_GPIO36) },
{ MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_GPIO37) },
{ MP_ROM_QSTR(MP_QSTR_D37), MP_ROM_PTR(&pin_GPIO37) },
{ MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_GPIO38) },
{ MP_ROM_QSTR(MP_QSTR_D38), MP_ROM_PTR(&pin_GPIO38) },
{ MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO39) },
{ MP_ROM_QSTR(MP_QSTR_D39), MP_ROM_PTR(&pin_GPIO39) },
{ MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) },
{ MP_ROM_QSTR(MP_QSTR_STEMMA_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

@ -0,0 +1,47 @@
#
# Component config
#
#
# ESP32S3-Specific
#
CONFIG_ESP32S3_SPIRAM_SUPPORT=y
#
# SPI RAM config
#
# CONFIG_SPIRAM_MODE_QUAD is not set
CONFIG_SPIRAM_MODE_OCT=y
# CONFIG_SPIRAM_TYPE_AUTO is not set
# CONFIG_SPIRAM_TYPE_ESPPSRAM16 is not set
# CONFIG_SPIRAM_TYPE_ESPPSRAM32 is not set
CONFIG_SPIRAM_TYPE_ESPPSRAM64=y
CONFIG_SPIRAM_SIZE=8388608
#
# PSRAM Clock and CS IO for ESP32S3
#
CONFIG_DEFAULT_PSRAM_CLK_IO=30
CONFIG_DEFAULT_PSRAM_CS_IO=26
# end of PSRAM Clock and CS IO for ESP32S3
# CONFIG_SPIRAM_FETCH_INSTRUCTIONS is not set
# CONFIG_SPIRAM_RODATA is not set
# CONFIG_SPIRAM_SPEED_120M is not set
CONFIG_SPIRAM_SPEED_80M=y
# CONFIG_SPIRAM_SPEED_40M is not set
CONFIG_SPIRAM=y
CONFIG_SPIRAM_BOOT_INIT=y
# CONFIG_SPIRAM_IGNORE_NOTFOUND is not set
CONFIG_SPIRAM_USE_MEMMAP=y
# CONFIG_SPIRAM_USE_CAPS_ALLOC is not set
# CONFIG_SPIRAM_USE_MALLOC is not set
CONFIG_SPIRAM_MEMTEST=y
# end of SPI RAM config
# end of ESP32S3-Specific
#
# LWIP
#
CONFIG_LWIP_LOCAL_HOSTNAME="espressif-esp32s3"
# end of LWIP
# end of Component config

View File

@ -1,5 +1,5 @@
CIRCUITPY_CREATOR_ID = 0x00001209
CIRCUITPY_CREATION_ID = 0x0032D003
CIRCUITPY_CREATOR_ID = 0x19231923
CIRCUITPY_CREATION_ID = 0x00C30001
IDF_TARGET = esp32c3

View File

@ -0,0 +1,31 @@
/*
* This file is part of the MicroPython project, http://micropython.org/
*
* The MIT License (MIT)
*
* Copyright (c) 2020 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"
#include "mpconfigboard.h"
#include "shared-bindings/microcontroller/Pin.h"
// Use the MP_WEAK supervisor/shared/board.c versions of routines not defined here.

View File

@ -0,0 +1,39 @@
/*
* This file is part of the MicroPython project, http://micropython.org/
*
* The MIT License (MIT)
*
* Copyright (c) 2019 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.
*/
// Micropython setup
#define MICROPY_HW_BOARD_NAME "Deneyap Mini"
#define MICROPY_HW_MCU_NAME "ESP32S2"
#define CIRCUITPY_BOARD_I2C (1)
#define CIRCUITPY_BOARD_I2C_PIN {{.scl = &pin_GPIO37, .sda = &pin_GPIO36}}
#define CIRCUITPY_BOARD_SPI (1)
#define CIRCUITPY_BOARD_SPI_PIN {{.clock = &pin_GPIO38, .mosi = &pin_GPIO40, .miso = &pin_GPIO39}}
#define CIRCUITPY_BOARD_UART (1)
#define CIRCUITPY_BOARD_UART_PIN {{.tx = &pin_GPIO43, .rx = &pin_GPIO44}}

View File

@ -0,0 +1,12 @@
USB_VID = 0x303A
USB_PID = 0x8142
USB_PRODUCT = "Deneyap Mini"
USB_MANUFACTURER = "Turkish Technology Team Foundation"
IDF_TARGET = esp32s2
CIRCUITPY_ESP_FLASH_MODE = dio
CIRCUITPY_ESP_FLASH_FREQ = 80m
CIRCUITPY_ESP_FLASH_SIZE = 4MB
CIRCUITPY_ESPCAMERA = 0

View File

@ -0,0 +1,89 @@
#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_RX), MP_ROM_PTR(&pin_GPIO44) },
{ MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_GPIO44) },
{ MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO43) },
{ MP_ROM_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_GPIO43) },
{ MP_ROM_QSTR(MP_QSTR_D2), MP_ROM_PTR(&pin_GPIO42) },
{ MP_ROM_QSTR(MP_QSTR_PWM0), MP_ROM_PTR(&pin_GPIO42) },
{ MP_ROM_QSTR(MP_QSTR_D3), MP_ROM_PTR(&pin_GPIO41) },
{ MP_ROM_QSTR(MP_QSTR_PWM1), MP_ROM_PTR(&pin_GPIO41) },
{ MP_ROM_QSTR(MP_QSTR_MO), MP_ROM_PTR(&pin_GPIO40) },
{ MP_ROM_QSTR(MP_QSTR_D4), MP_ROM_PTR(&pin_GPIO40) },
{ MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_GPIO40) },
{ MP_ROM_QSTR(MP_QSTR_MI), MP_ROM_PTR(&pin_GPIO39) },
{ MP_ROM_QSTR(MP_QSTR_D5), MP_ROM_PTR(&pin_GPIO39) },
{ MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_GPIO39) },
{ MP_ROM_QSTR(MP_QSTR_MC), MP_ROM_PTR(&pin_GPIO38) },
{ MP_ROM_QSTR(MP_QSTR_D6), MP_ROM_PTR(&pin_GPIO38) },
{ MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_GPIO38) },
{ MP_ROM_QSTR(MP_QSTR_SC), MP_ROM_PTR(&pin_GPIO37) },
{ MP_ROM_QSTR(MP_QSTR_D7), MP_ROM_PTR(&pin_GPIO37) },
{ MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_GPIO37) },
{ MP_ROM_QSTR(MP_QSTR_SD), MP_ROM_PTR(&pin_GPIO36) },
{ MP_ROM_QSTR(MP_QSTR_D8), MP_ROM_PTR(&pin_GPIO36) },
{ MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO36) },
{ MP_ROM_QSTR(MP_QSTR_D9), MP_ROM_PTR(&pin_GPIO26) },
{ MP_ROM_QSTR(MP_QSTR_D10), MP_ROM_PTR(&pin_GPIO21) },
{ MP_ROM_QSTR(MP_QSTR_SS), MP_ROM_PTR(&pin_GPIO21) },
{ MP_ROM_QSTR(MP_QSTR_DA1), MP_ROM_PTR(&pin_GPIO18) },
{ MP_ROM_QSTR(MP_QSTR_D11), MP_ROM_PTR(&pin_GPIO18) },
{ MP_ROM_QSTR(MP_QSTR_DAC1), MP_ROM_PTR(&pin_GPIO18) },
{ MP_ROM_QSTR(MP_QSTR_DA0), MP_ROM_PTR(&pin_GPIO17) },
{ MP_ROM_QSTR(MP_QSTR_D12), MP_ROM_PTR(&pin_GPIO17) },
{ MP_ROM_QSTR(MP_QSTR_DAC0), MP_ROM_PTR(&pin_GPIO17) },
{ MP_ROM_QSTR(MP_QSTR_BT), MP_ROM_PTR(&pin_GPIO0) },
{ MP_ROM_QSTR(MP_QSTR_D13), MP_ROM_PTR(&pin_GPIO0) },
{ MP_ROM_QSTR(MP_QSTR_GPKEY), MP_ROM_PTR(&pin_GPIO0) },
{ MP_ROM_QSTR(MP_QSTR_D14), MP_ROM_PTR(&pin_GPIO35) },
{ MP_ROM_QSTR(MP_QSTR_LEDB), MP_ROM_PTR(&pin_GPIO35) },
{ MP_ROM_QSTR(MP_QSTR_D15), MP_ROM_PTR(&pin_GPIO33) },
{ MP_ROM_QSTR(MP_QSTR_LEDG), MP_ROM_PTR(&pin_GPIO33) },
{ MP_ROM_QSTR(MP_QSTR_D16), MP_ROM_PTR(&pin_GPIO34) },
{ MP_ROM_QSTR(MP_QSTR_LEDR), MP_ROM_PTR(&pin_GPIO34) },
{ MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_GPIO8) },
{ MP_ROM_QSTR(MP_QSTR_T0), MP_ROM_PTR(&pin_GPIO8) },
{ MP_ROM_QSTR(MP_QSTR_A1), MP_ROM_PTR(&pin_GPIO9) },
{ MP_ROM_QSTR(MP_QSTR_T1), MP_ROM_PTR(&pin_GPIO9) },
{ MP_ROM_QSTR(MP_QSTR_A2), MP_ROM_PTR(&pin_GPIO10) },
{ MP_ROM_QSTR(MP_QSTR_T2), MP_ROM_PTR(&pin_GPIO10) },
{ MP_ROM_QSTR(MP_QSTR_A3), MP_ROM_PTR(&pin_GPIO11) },
{ MP_ROM_QSTR(MP_QSTR_T3), MP_ROM_PTR(&pin_GPIO11) },
{ MP_ROM_QSTR(MP_QSTR_A4), MP_ROM_PTR(&pin_GPIO12) },
{ MP_ROM_QSTR(MP_QSTR_T4), MP_ROM_PTR(&pin_GPIO12) },
{ MP_ROM_QSTR(MP_QSTR_A5), MP_ROM_PTR(&pin_GPIO13) },
{ MP_ROM_QSTR(MP_QSTR_T5), MP_ROM_PTR(&pin_GPIO13) },
{ MP_ROM_QSTR(MP_QSTR_A6), MP_ROM_PTR(&pin_GPIO16) },
{ MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) },
{ MP_ROM_QSTR(MP_QSTR_STEMMA_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

@ -0,0 +1,4 @@
# LWIP
#
CONFIG_LWIP_LOCAL_HOSTNAME="DeneyapMini"
# end of LWIP

View File

@ -0,0 +1,32 @@
/*
* This file is part of the MicroPython project, http://micropython.org/
*
* The MIT License (MIT)
*
* Copyright (c) 2020 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"
#include "mpconfigboard.h"
#include "shared-bindings/microcontroller/Pin.h"
// Use the MP_WEAK supervisor/shared/board.c versions of routines not defined here.

View File

@ -0,0 +1,39 @@
/*
* This file is part of the MicroPython project, http://micropython.org/
*
* The MIT License (MIT)
*
* Copyright (c) 2019 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.
*/
// Micropython setup
#define MICROPY_HW_BOARD_NAME "Deneyap Mini v2"
#define MICROPY_HW_MCU_NAME "ESP32S2"
#define CIRCUITPY_BOARD_I2C (1)
#define CIRCUITPY_BOARD_I2C_PIN {{.scl = &pin_GPIO37, .sda = &pin_GPIO36}}
#define CIRCUITPY_BOARD_SPI (1)
#define CIRCUITPY_BOARD_SPI_PIN {{.clock = &pin_GPIO38, .mosi = &pin_GPIO40, .miso = &pin_GPIO39}}
#define CIRCUITPY_BOARD_UART (1)
#define CIRCUITPY_BOARD_UART_PIN {{.tx = &pin_GPIO43, .rx = &pin_GPIO44}}

View File

@ -0,0 +1,11 @@
USB_VID = 0x303A
USB_PID = 0x8145
USB_PRODUCT = "Deneyap Mini v2"
USB_MANUFACTURER = "Turkish Technology Team Foundation"
IDF_TARGET = esp32s2
CIRCUITPY_ESP_FLASH_MODE = dio
CIRCUITPY_ESP_FLASH_FREQ = 80m
CIRCUITPY_ESP_FLASH_SIZE = 4MB

View File

@ -0,0 +1,85 @@
#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_RX), MP_ROM_PTR(&pin_GPIO44) },
{ MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_GPIO44) },
{ MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO43) },
{ MP_ROM_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_GPIO43) },
{ MP_ROM_QSTR(MP_QSTR_D2), MP_ROM_PTR(&pin_GPIO42) },
{ MP_ROM_QSTR(MP_QSTR_PWM0), MP_ROM_PTR(&pin_GPIO42) },
{ MP_ROM_QSTR(MP_QSTR_D3), MP_ROM_PTR(&pin_GPIO41) },
{ MP_ROM_QSTR(MP_QSTR_PWM1), MP_ROM_PTR(&pin_GPIO41) },
{ MP_ROM_QSTR(MP_QSTR_MO), MP_ROM_PTR(&pin_GPIO40) },
{ MP_ROM_QSTR(MP_QSTR_D4), MP_ROM_PTR(&pin_GPIO40) },
{ MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_GPIO40) },
{ MP_ROM_QSTR(MP_QSTR_MI), MP_ROM_PTR(&pin_GPIO39) },
{ MP_ROM_QSTR(MP_QSTR_D5), MP_ROM_PTR(&pin_GPIO39) },
{ MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_GPIO39) },
{ MP_ROM_QSTR(MP_QSTR_MC), MP_ROM_PTR(&pin_GPIO38) },
{ MP_ROM_QSTR(MP_QSTR_D6), MP_ROM_PTR(&pin_GPIO38) },
{ MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_GPIO38) },
{ MP_ROM_QSTR(MP_QSTR_SC), MP_ROM_PTR(&pin_GPIO37) },
{ MP_ROM_QSTR(MP_QSTR_D7), MP_ROM_PTR(&pin_GPIO37) },
{ MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_GPIO37) },
{ MP_ROM_QSTR(MP_QSTR_SD), MP_ROM_PTR(&pin_GPIO36) },
{ MP_ROM_QSTR(MP_QSTR_D8), MP_ROM_PTR(&pin_GPIO36) },
{ MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO36) },
{ MP_ROM_QSTR(MP_QSTR_D9), MP_ROM_PTR(&pin_GPIO26) },
{ MP_ROM_QSTR(MP_QSTR_D10), MP_ROM_PTR(&pin_GPIO21) },
{ MP_ROM_QSTR(MP_QSTR_SS), MP_ROM_PTR(&pin_GPIO21) },
{ MP_ROM_QSTR(MP_QSTR_DA1), MP_ROM_PTR(&pin_GPIO18) },
{ MP_ROM_QSTR(MP_QSTR_D11), MP_ROM_PTR(&pin_GPIO18) },
{ MP_ROM_QSTR(MP_QSTR_DAC1), MP_ROM_PTR(&pin_GPIO18) },
{ MP_ROM_QSTR(MP_QSTR_DA0), MP_ROM_PTR(&pin_GPIO17) },
{ MP_ROM_QSTR(MP_QSTR_D12), MP_ROM_PTR(&pin_GPIO17) },
{ MP_ROM_QSTR(MP_QSTR_DAC0), MP_ROM_PTR(&pin_GPIO17) },
{ MP_ROM_QSTR(MP_QSTR_D13), MP_ROM_PTR(&pin_GPIO0) },
{ MP_ROM_QSTR(MP_QSTR_GPKEY), MP_ROM_PTR(&pin_GPIO0) },
{ MP_ROM_QSTR(MP_QSTR_D14), MP_ROM_PTR(&pin_GPIO33) },
{ MP_ROM_QSTR(MP_QSTR_RGBLED), MP_ROM_PTR(&pin_GPIO33) },
{ MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_GPIO7) },
{ MP_ROM_QSTR(MP_QSTR_T0), MP_ROM_PTR(&pin_GPIO7) },
{ MP_ROM_QSTR(MP_QSTR_A1), MP_ROM_PTR(&pin_GPIO8) },
{ MP_ROM_QSTR(MP_QSTR_T1), MP_ROM_PTR(&pin_GPIO8) },
{ MP_ROM_QSTR(MP_QSTR_A2), MP_ROM_PTR(&pin_GPIO9) },
{ MP_ROM_QSTR(MP_QSTR_T2), MP_ROM_PTR(&pin_GPIO9) },
{ MP_ROM_QSTR(MP_QSTR_A3), MP_ROM_PTR(&pin_GPIO10) },
{ MP_ROM_QSTR(MP_QSTR_T3), MP_ROM_PTR(&pin_GPIO10) },
{ MP_ROM_QSTR(MP_QSTR_A4), MP_ROM_PTR(&pin_GPIO11) },
{ MP_ROM_QSTR(MP_QSTR_T4), MP_ROM_PTR(&pin_GPIO11) },
{ MP_ROM_QSTR(MP_QSTR_A5), MP_ROM_PTR(&pin_GPIO12) },
{ MP_ROM_QSTR(MP_QSTR_T5), MP_ROM_PTR(&pin_GPIO12) },
{ MP_ROM_QSTR(MP_QSTR_A6), MP_ROM_PTR(&pin_GPIO13) },
{ MP_ROM_QSTR(MP_QSTR_T6), MP_ROM_PTR(&pin_GPIO13) },
{ MP_ROM_QSTR(MP_QSTR_A7), MP_ROM_PTR(&pin_GPIO16) },
{ MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) },
{ MP_ROM_QSTR(MP_QSTR_STEMMA_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

@ -0,0 +1,37 @@
CONFIG_ESP32S2_SPIRAM_SUPPORT=y
#
# SPI RAM config
#
# CONFIG_SPIRAM_TYPE_AUTO is not set
CONFIG_SPIRAM_TYPE_ESPPSRAM16=y
# CONFIG_SPIRAM_TYPE_ESPPSRAM32 is not set
# CONFIG_SPIRAM_TYPE_ESPPSRAM64 is not set
CONFIG_SPIRAM_SIZE=2097152
# end of SPI RAM config
CONFIG_DEFAULT_PSRAM_CLK_IO=30
#
# PSRAM clock and cs IO for ESP32S2
#
CONFIG_DEFAULT_PSRAM_CS_IO=26
# end of PSRAM clock and cs IO for ESP32S2
# CONFIG_SPIRAM_FETCH_INSTRUCTIONS is not set
# CONFIG_SPIRAM_RODATA is not set
# CONFIG_SPIRAM_SPEED_80M is not set
CONFIG_SPIRAM_SPEED_40M=y
# CONFIG_SPIRAM_SPEED_26M is not set
# CONFIG_SPIRAM_SPEED_20M is not set
CONFIG_SPIRAM=y
CONFIG_SPIRAM_BOOT_INIT=y
# CONFIG_SPIRAM_IGNORE_NOTFOUND is not set
CONFIG_SPIRAM_USE_MEMMAP=y
# CONFIG_SPIRAM_USE_CAPS_ALLOC is not set
# CONFIG_SPIRAM_USE_MALLOC is not set
CONFIG_SPIRAM_MEMTEST=y
# CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY is not set
#
# LWIP
#
CONFIG_LWIP_LOCAL_HOSTNAME="DeneyapMini_v2"
# end of LWIP

View File

@ -0,0 +1,29 @@
/*
* This file is part of the MicroPython project, http://micropython.org/
*
* The MIT License (MIT)
*
* Copyright (c) 2020 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,36 @@
/*
* This file is part of the MicroPython project, http://micropython.org/
*
* The MIT License (MIT)
*
* Copyright (c) 2019 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.
*/
// Micropython setup
#define MICROPY_HW_BOARD_NAME "M5Stack AtomS3 Lite"
#define MICROPY_HW_MCU_NAME "ESP32S3"
#define MICROPY_HW_NEOPIXEL (&pin_GPIO35)
#define CIRCUITPY_BOARD_I2C (2)
#define CIRCUITPY_BOARD_I2C_PIN {{.scl = &pin_GPIO39, .sda = &pin_GPIO38}, \
{.scl = &pin_GPIO1, .sda = &pin_GPIO2}}

View File

@ -0,0 +1,11 @@
USB_VID = 0x303A
USB_PID = 0x815F
USB_PRODUCT = "M5Stack AtomS3 Lite"
USB_MANUFACTURER = "M5Stack"
IDF_TARGET = esp32s3
CIRCUITPY_ESP_FLASH_MODE = qio
CIRCUITPY_ESP_FLASH_FREQ = 80m
CIRCUITPY_ESP_FLASH_SIZE = 8MB
CIRCUITPY_ESPCAMERA = 0

View File

@ -0,0 +1,42 @@
#include "shared-bindings/board/__init__.h"
CIRCUITPY_BOARD_BUS_SINGLETON(porta_i2c, i2c, 1)
STATIC const mp_rom_map_elem_t board_module_globals_table[] = {
CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS
{ MP_ROM_QSTR(MP_QSTR_PORTA_SCL), MP_ROM_PTR(&pin_GPIO1) },
{ MP_ROM_QSTR(MP_QSTR_A1), MP_ROM_PTR(&pin_GPIO1) },
{ MP_ROM_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_GPIO1) },
{ MP_ROM_QSTR(MP_QSTR_PORTA_SDA), MP_ROM_PTR(&pin_GPIO2) },
{ MP_ROM_QSTR(MP_QSTR_A2), MP_ROM_PTR(&pin_GPIO2) },
{ MP_ROM_QSTR(MP_QSTR_D2), MP_ROM_PTR(&pin_GPIO2) },
{ MP_ROM_QSTR(MP_QSTR_A4), MP_ROM_PTR(&pin_GPIO5) },
{ MP_ROM_QSTR(MP_QSTR_D5), MP_ROM_PTR(&pin_GPIO5) },
{ MP_ROM_QSTR(MP_QSTR_A5), MP_ROM_PTR(&pin_GPIO6) },
{ MP_ROM_QSTR(MP_QSTR_D6), MP_ROM_PTR(&pin_GPIO6) },
{ MP_ROM_QSTR(MP_QSTR_A6), MP_ROM_PTR(&pin_GPIO7) },
{ MP_ROM_QSTR(MP_QSTR_D7), MP_ROM_PTR(&pin_GPIO7) },
{ MP_ROM_QSTR(MP_QSTR_A7), MP_ROM_PTR(&pin_GPIO8) },
{ MP_ROM_QSTR(MP_QSTR_D8), MP_ROM_PTR(&pin_GPIO8) },
{ MP_ROM_QSTR(MP_QSTR_D39), MP_ROM_PTR(&pin_GPIO39) },
{ MP_ROM_QSTR(MP_QSTR_D38), MP_ROM_PTR(&pin_GPIO38) },
{ MP_ROM_QSTR(MP_QSTR_NEOPIXEL), MP_ROM_PTR(&pin_GPIO35) },
{ MP_ROM_QSTR(MP_QSTR_BTN), MP_ROM_PTR(&pin_GPIO41) },
{ MP_ROM_QSTR(MP_QSTR_IR_LED), MP_ROM_PTR(&pin_GPIO4) },
{ MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) },
{ MP_ROM_QSTR(MP_QSTR_PORTA_I2C), MP_ROM_PTR(&board_porta_i2c_obj) },
};
MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table);

View File

@ -0,0 +1,7 @@
CONFIG_ESP32S3_SPIRAM_SUPPORT=n
#
# LWIP
#
CONFIG_LWIP_LOCAL_HOSTNAME="espressif-esp32s3"
# end of LWIP

View File

@ -26,16 +26,13 @@
#pragma once
// Some boards don't implement I2SOut, so suppress any routines from here.
#if CIRCUITPY_AUDIOBUSIO_I2SOUT
#include "supervisor/background_callback.h"
#include "common-hal/microcontroller/Pin.h"
#include "common-hal/audiobusio/__init__.h"
// Some boards don't implement I2SOut, so suppress any routines from here.
#if CIRCUITPY_AUDIOBUSIO_I2SOUT
#include "sdk/drivers/sai/fsl_sai.h"
typedef struct {
mp_obj_base_t base;
i2s_t i2s;

View File

@ -42,18 +42,23 @@
/*
* AUDIO PLL setting: Frequency = Fref * (DIV_SELECT + NUM / DENOM)
* = 24 * (32 + 77/100)
* = 786.48 MHz
* = 24 * (32 + 96 / 125) = 24 * (32.768)
* = 786.432 MHz = 48kHz * 16384
*
* This default clocking is used during initial configuration; it also works well for
* frequencies that evenly divide 192kHz, such as 8/12/24/48kHz. However, it doesn't work
* well for 44.1/22/11kHz, so there's the possibility of using a different
* setting when playing a particular sample.
*/
const clock_audio_pll_config_t audioPllConfig = {
.loopDivider = 32, /* PLL loop divider. Valid range for DIV_SELECT divider value: 27~54. */
.postDivider = 1, /* Divider after the PLL, should only be 1, 2, 4, 8, 16. */
.numerator = 77, /* 30 bit numerator of fractional loop divider. */
.denominator = 100, /* 30 bit denominator of fractional loop divider */
.numerator = 96, /* 30 bit numerator of fractional loop divider. */
.denominator = 125, /* 30 bit denominator of fractional loop divider */
};
static I2S_Type *const i2s_instances[] = I2S_BASE_PTRS;
static uint8_t i2s_in_use;
static uint8_t i2s_in_use, i2s_playing;
static I2S_Type *SAI_GetPeripheral(int idx) {
if (idx < 0 || idx >= (int)MP_ARRAY_SIZE(i2s_instances)) {
@ -344,7 +349,11 @@ void port_i2s_deinit(i2s_t *self) {
}
SAI_TransferAbortSend(self->peripheral, &self->handle);
i2s_clock_off(self->peripheral);
i2s_in_use &= ~(1 << SAI_GetInstance(self->peripheral));
uint32_t instance_mask = 1 << SAI_GetInstance(self->peripheral);
i2s_in_use &= ~instance_mask;
i2s_playing &= ~instance_mask;
if (!i2s_in_use) {
CCM_ANALOG->PLL_AUDIO = CCM_ANALOG_PLL_AUDIO_BYPASS_MASK | CCM_ANALOG_PLL_AUDIO_POWERDOWN_MASK | CCM_ANALOG_PLL_AUDIO_BYPASS_CLK_SRC(kCLOCK_PllClkSrc24M);
}
@ -354,13 +363,51 @@ void port_i2s_deinit(i2s_t *self) {
}
}
static uint32_t gcd(uint32_t a, uint32_t b) {
while (b) {
uint32_t tmp = a % b;
a = b;
b = tmp;
}
return a;
}
static void set_sai_clocking_for_sample_rate(uint32_t sample_rate) {
mp_arg_validate_int_range((mp_uint_t)sample_rate, 4000, 192000, MP_QSTR_sample_rate);
uint32_t target_rate = sample_rate;
// ensure the PWM rate of MQS will be adequately high
while (target_rate < 175000) {
target_rate <<= 1;
}
target_rate *= 4096; // various prescalers divide by this much
uint32_t div = gcd(target_rate % 24000000, 24000000);
clock_audio_pll_config_t config = {
.loopDivider = target_rate / 24000000,
.postDivider = 1,
.numerator = (target_rate % 24000000) / div,
.denominator = 24000000 / div,
};
CLOCK_InitAudioPll(&config);
}
void port_i2s_play(i2s_t *self, mp_obj_t sample, bool loop) {
self->sample = sample;
self->loop = loop;
self->bytes_per_sample = audiosample_bits_per_sample(sample) / 8;
self->channel_count = audiosample_channel_count(sample);
int instance = SAI_GetInstance(self->peripheral);
i2s_playing |= (1 << instance);
uint32_t sample_rate = audiosample_sample_rate(sample);
if (sample_rate != self->sample_rate) {
if (__builtin_popcount(i2s_playing) <= 1) {
// as this is the first/only i2s instance playing audio, we can
// safely change the overall clock used by the SAI peripheral, to
// get more accurate frequency reproduction. If another i2s
// instance is playing, then we can't touch the audio PLL and have
// to live with what we can get, which may be inaccurate
set_sai_clocking_for_sample_rate(sample_rate);
}
SAI_TxSetBitClockRate(self->peripheral, SAI_CLOCK_FREQ, sample_rate, 16, 2);
self->sample_rate = sample_rate;
}

View File

@ -0,0 +1,158 @@
/*
* This file is part of the MicroPython project, http://micropython.org/
*
* The MIT License (MIT)
*
* Copyright (c) 2020 Jeff Epler 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 <stdint.h>
#include <string.h>
#include "mpconfigport.h"
#include "py/gc.h"
#include "py/mperrno.h"
#include "py/runtime.h"
#include "common-hal/audiobusio/__init__.h"
#include "common-hal/audiopwmio/PWMAudioOut.h"
#include "shared-bindings/audiopwmio/PWMAudioOut.h"
#include "shared-bindings/microcontroller/Pin.h"
#include "supervisor/shared/translate/translate.h"
#include "supervisor/shared/tick.h"
// Where required we use identifier names that are required by NXP's
// API, even though they do not conform to the naming standards that Adafruit
// strives to adhere to. https://www.adafruit.com/blacklivesmatter
#include "sdk/drivers/sai/fsl_sai.h"
STATIC void config_periph_pin(const mcu_periph_obj_t *periph) {
if (!periph) {
return;
}
if (periph->pin->mux_reg) {
IOMUXC_SetPinMux(
periph->pin->mux_reg, periph->mux_mode,
periph->input_reg, periph->input_idx,
0,
1);
}
IOMUXC_SetPinConfig(0, 0, 0, 0,
periph->pin->cfg_reg,
IOMUXC_SW_PAD_CTL_PAD_HYS(0)
| IOMUXC_SW_PAD_CTL_PAD_PUS(0)
| IOMUXC_SW_PAD_CTL_PAD_PUE(0)
| IOMUXC_SW_PAD_CTL_PAD_PKE(1)
| IOMUXC_SW_PAD_CTL_PAD_ODE(0)
| IOMUXC_SW_PAD_CTL_PAD_SPEED(2)
| IOMUXC_SW_PAD_CTL_PAD_DSE(4)
| IOMUXC_SW_PAD_CTL_PAD_SRE(0));
}
static void config_mqs(void) {
CCM->CCGR0 = (CCM->CCGR0 & (~CCM_CCGR0_CG2_MASK)) | CCM_CCGR0_CG2(3); /* Enable MQS hmclk. */
IOMUXC_MQSEnterSoftwareReset(IOMUXC_GPR, true); /* Reset MQS. */
IOMUXC_MQSEnterSoftwareReset(IOMUXC_GPR, false); /* Release reset MQS. */
IOMUXC_MQSEnable(IOMUXC_GPR, true); /* Enable MQS. */
IOMUXC_MQSConfig(IOMUXC_GPR, kIOMUXC_MqsPwmOverSampleRate64, 0u); /* 98.304MHz/64/(0+1) = 1.536MHz
Higher frequency PWM involves less low frequen cy harmonic.*/
}
// Caller validates that pins are free.
void common_hal_audiopwmio_pwmaudioout_construct(audiopwmio_pwmaudioout_obj_t *self,
const mcu_pin_obj_t *left_channel, const mcu_pin_obj_t *right_channel, uint16_t default_value) {
int instance = -1;
const mcu_periph_obj_t *left_periph = find_pin_function(mcu_mqs_left_list, left_channel, &instance, MP_QSTR_left_channel);
const mcu_periph_obj_t *right_periph = find_pin_function(mcu_mqs_right_list, right_channel, &instance, MP_QSTR_right_channel);
sai_transceiver_t config;
SAI_GetClassicI2SConfig(&config, kSAI_WordWidth16bits, kSAI_Stereo, 1U << 0u);
config.frameSync.frameSyncEarly = false;
config.frameSync.frameSyncPolarity = kSAI_PolarityActiveHigh;
// config.syncMode = kSAI_ModeAsync;
config.fifo.fifoPacking = kSAI_FifoPackingDisabled;
// These identifier names are required by NXP's API, even though they do
// not conform to the naming standards that Adafruit strives to adhere to.
// https://www.adafruit.com/blacklivesmatter
// config.masterSlave = kSAI_Master;
port_i2s_initialize(&self->i2s, instance, &config);
self->left_channel = left_channel;
self->right_channel = right_channel;
claim_pin(left_channel);
claim_pin(right_channel);
config_periph_pin(left_periph);
config_periph_pin(right_periph);
config_mqs();
}
bool common_hal_audiopwmio_pwmaudioout_deinited(audiopwmio_pwmaudioout_obj_t *self) {
return port_i2s_deinited(&self->i2s);
}
void common_hal_audiopwmio_pwmaudioout_deinit(audiopwmio_pwmaudioout_obj_t *self) {
if (common_hal_audiopwmio_pwmaudioout_deinited(self)) {
return;
}
port_i2s_deinit(&self->i2s);
common_hal_reset_pin(self->left_channel);
self->left_channel = NULL;
common_hal_reset_pin(self->right_channel);
self->right_channel = NULL;
IOMUXC_MQSEnterSoftwareReset(IOMUXC_GPR, true); /* Reset MQS. */
CCM->CCGR0 = CCM->CCGR0 & (~CCM_CCGR0_CG2_MASK); /* Disable MQS hmclk. */
}
void common_hal_audiopwmio_pwmaudioout_play(audiopwmio_pwmaudioout_obj_t *self,
mp_obj_t sample, bool loop) {
if (common_hal_audiopwmio_pwmaudioout_get_playing(self)) {
common_hal_audiopwmio_pwmaudioout_stop(self);
}
port_i2s_play(&self->i2s, sample, loop);
}
void common_hal_audiopwmio_pwmaudioout_pause(audiopwmio_pwmaudioout_obj_t *self) {
port_i2s_pause(&self->i2s);
}
void common_hal_audiopwmio_pwmaudioout_resume(audiopwmio_pwmaudioout_obj_t *self) {
port_i2s_resume(&self->i2s);
}
bool common_hal_audiopwmio_pwmaudioout_get_paused(audiopwmio_pwmaudioout_obj_t *self) {
return port_i2s_get_paused(&self->i2s);
}
void common_hal_audiopwmio_pwmaudioout_stop(audiopwmio_pwmaudioout_obj_t *self) {
port_i2s_stop(&self->i2s);
}
bool common_hal_audiopwmio_pwmaudioout_get_playing(audiopwmio_pwmaudioout_obj_t *self) {
return port_i2s_get_playing(&self->i2s);
}

View File

@ -0,0 +1,41 @@
/*
* This file is part of the MicroPython project, http://micropython.org/
*
* The MIT License (MIT)
*
* Copyright (c) 2020 Jeff Epler 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.
*/
#pragma once
#if CIRCUITPY_AUDIOBUSIO_I2SOUT
#include "supervisor/background_callback.h"
#include "common-hal/microcontroller/Pin.h"
#include "common-hal/audiobusio/__init__.h"
typedef struct {
mp_obj_base_t base;
i2s_t i2s;
const mcu_pin_obj_t *left_channel, *right_channel;
} audiopwmio_pwmaudioout_obj_t;
#endif

View File

@ -17,6 +17,7 @@ CIRCUITPY_AUDIOCORE = 1
CIRCUITPY_AUDIOIO = 0
CIRCUITPY_AUDIOMIXER = 1
CIRCUITPY_AUDIOMP3 = 1
CIRCUITPY_AUDIOPWMIO = 1
CIRCUITPY_BUSDEVICE = 1
CIRCUITPY_COUNTIO = 0
CIRCUITPY_FREQUENCYIO = 0

View File

@ -169,25 +169,31 @@ const mcu_pwm_obj_t mcu_pwm_list[20] = {
const mcu_periph_obj_t mcu_sai_rx_bclk_list[] = {
PERIPH_PIN(1, 0, 0, 0, &pin_GPIO_08),
PERIPH_PIN(2, 1, 0, 0, &pin_GPIO_00),
PERIPH_PIN(3, 1, 0, 0, &pin_GPIO_00),
};
const mcu_periph_obj_t mcu_sai_rx_data0_list[] = {
PERIPH_PIN(1, 0, 0, 0, &pin_GPIO_03),
PERIPH_PIN(2, 1, 0, 0, &pin_GPIO_SD_03),
PERIPH_PIN(3, 1, 0, 0, &pin_GPIO_SD_03),
};
const mcu_periph_obj_t mcu_sai_rx_sync_list[] = {
PERIPH_PIN(1, 0, 0, 0, &pin_GPIO_02),
PERIPH_PIN(2, 1, 0, 0, &pin_GPIO_SD_04),
PERIPH_PIN(3, 1, 0, 0, &pin_GPIO_SD_04),
};
const mcu_periph_obj_t mcu_sai_tx_bclk_list[] = {
PERIPH_PIN(1, 0, 0, 0, &pin_GPIO_06),
PERIPH_PIN(2, 1, 0, 0, &pin_GPIO_SD_01),
PERIPH_PIN(3, 1, 0, 0, &pin_GPIO_SD_01),
};
const mcu_periph_obj_t mcu_sai_tx_data0_list[] = {
PERIPH_PIN(1, 0, 0, 0, &pin_GPIO_04),
PERIPH_PIN(2, 1, 0, 0, &pin_GPIO_SD_02),
PERIPH_PIN(3, 1, 0, 0, &pin_GPIO_SD_02),
};
const mcu_periph_obj_t mcu_sai_tx_sync_list[] = {
PERIPH_PIN(1, 0, 0, 0, &pin_GPIO_07),
PERIPH_PIN(2, 1, 0, 0, &pin_GPIO_SD_00),
PERIPH_PIN(3, 1, 0, 0, &pin_GPIO_SD_00),
};
const mcu_periph_obj_t mcu_mqs_left_list[] = {
PERIPH_PIN(3, 4, 0, 0, &pin_GPIO_AD_01),
};
const mcu_periph_obj_t mcu_mqs_right_list[] = {
PERIPH_PIN(3, 4, 0, 0, &pin_GPIO_AD_02),
};

View File

@ -54,4 +54,7 @@ extern const mcu_periph_obj_t mcu_sai_tx_bclk_list[2];
extern const mcu_periph_obj_t mcu_sai_tx_data0_list[2];
extern const mcu_periph_obj_t mcu_sai_tx_sync_list[2];
extern const mcu_periph_obj_t mcu_mqs_left_list[1];
extern const mcu_periph_obj_t mcu_mqs_right_list[1];
#endif // MICROPY_INCLUDED_MIMXRT10XX_MIMXRT1011_PERIPHERALS_MIMXRT1011_PERIPH_H

View File

@ -311,3 +311,13 @@ const mcu_periph_obj_t mcu_sai_tx_sync_list[] = {
PERIPH_PIN(3, 3, 0, 0, &pin_GPIO_EMC_34),
PERIPH_PIN(3, 3, 0, 0, &pin_GPIO_SD_B1_07),
};
const mcu_periph_obj_t mcu_mqs_left_list[] = {
PERIPH_PIN(3, 1, 0, 0, &pin_GPIO_AD_B0_07),
PERIPH_PIN(3, 2, 0, 0, &pin_GPIO_EMC_17),
PERIPH_PIN(3, 3, 0, 0, &pin_GPIO_EMC_38),
};
const mcu_periph_obj_t mcu_mqs_right_list[] = {
PERIPH_PIN(3, 1, 0, 0, &pin_GPIO_AD_B0_06),
PERIPH_PIN(3, 2, 0, 0, &pin_GPIO_EMC_16),
PERIPH_PIN(3, 3, 0, 0, &pin_GPIO_EMC_37),
};

View File

@ -53,3 +53,6 @@ extern const mcu_periph_obj_t mcu_sai_rx_sync_list[7];
extern const mcu_periph_obj_t mcu_sai_tx_bclk_list[7];
extern const mcu_periph_obj_t mcu_sai_tx_data0_list[7];
extern const mcu_periph_obj_t mcu_sai_tx_sync_list[7];
extern const mcu_periph_obj_t mcu_mqs_left_list[3];
extern const mcu_periph_obj_t mcu_mqs_right_list[3];

View File

@ -362,3 +362,13 @@ const mcu_periph_obj_t mcu_sai_tx_sync_list[] = {
PERIPH_PIN(3, 3, 0, 0, &pin_GPIO_EMC_39),
PERIPH_PIN(3, 8, 0, 0, &pin_GPIO_SD_B1_02),
};
const mcu_periph_obj_t mcu_mqs_left_list[] = {
PERIPH_PIN(3, 3, 0, 0, &pin_GPIO_EMC_14),
PERIPH_PIN(3, 2, 0, 0, &pin_GPIO_B0_01),
PERIPH_PIN(3, 1, 0, 0, &pin_GPIO_AD_B0_05),
};
const mcu_periph_obj_t mcu_mqs_right_list[] = {
PERIPH_PIN(3, 3, 0, 0, &pin_GPIO_EMC_13),
PERIPH_PIN(3, 2, 0, 0, &pin_GPIO_B0_00),
PERIPH_PIN(3, 1, 0, 0, &pin_GPIO_AD_B0_04),
};

View File

@ -54,4 +54,7 @@ extern const mcu_periph_obj_t mcu_sai_tx_bclk_list[7];
extern const mcu_periph_obj_t mcu_sai_tx_data0_list[7];
extern const mcu_periph_obj_t mcu_sai_tx_sync_list[7];
extern const mcu_periph_obj_t mcu_mqs_left_list[3];
extern const mcu_periph_obj_t mcu_mqs_right_list[3];
#endif // MICROPY_INCLUDED_MIMXRT10XX_MIMXRT1062_PERIPHERALS_MIMXRT1011_PERIPH_H

View File

@ -1,7 +1,7 @@
#define MICROPY_HW_BOARD_NAME "Adafruit Feather RP2040 DVI"
#define MICROPY_HW_MCU_NAME "rp2040"
#define MICROPY_HW_NEOPIXEL (&pin_GPIO16)
#define MICROPY_HW_NEOPIXEL (&pin_GPIO4)
#define DEFAULT_I2C_BUS_SCL (&pin_GPIO3)
#define DEFAULT_I2C_BUS_SDA (&pin_GPIO2)

View File

@ -9,21 +9,7 @@ STATIC const mp_rom_map_elem_t board_module_globals_table[] = {
{ MP_ROM_QSTR(MP_QSTR_A3), MP_ROM_PTR(&pin_GPIO29) },
{ MP_ROM_QSTR(MP_QSTR_D24), MP_ROM_PTR(&pin_GPIO24) },
{ MP_ROM_QSTR(MP_QSTR_D25), MP_ROM_PTR(&pin_GPIO25) },
{ MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_GPIO14) },
{ MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_GPIO15) },
{ MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_GPIO8) },
{ MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_GPIO1) },
{ MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_GPIO1) },
{ MP_ROM_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_GPIO0) },
{ MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO0) },
{ MP_ROM_QSTR(MP_QSTR_D4), MP_ROM_PTR(&pin_GPIO4) },
{ MP_ROM_QSTR(MP_QSTR_BOOT), MP_ROM_PTR(&pin_GPIO7) },
{ MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO2) },
{ MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_GPIO3) },
{ MP_ROM_QSTR(MP_QSTR_D5), MP_ROM_PTR(&pin_GPIO5) },
{ MP_ROM_QSTR(MP_QSTR_D6), MP_ROM_PTR(&pin_GPIO6) },
{ MP_ROM_QSTR(MP_QSTR_D9), MP_ROM_PTR(&pin_GPIO9) },
@ -31,10 +17,29 @@ STATIC const mp_rom_map_elem_t board_module_globals_table[] = {
{ MP_ROM_QSTR(MP_QSTR_D11), MP_ROM_PTR(&pin_GPIO11) },
{ MP_ROM_QSTR(MP_QSTR_D12), MP_ROM_PTR(&pin_GPIO12) },
{ MP_ROM_QSTR(MP_QSTR_D13), MP_ROM_PTR(&pin_GPIO13) },
{ MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_GPIO1) },
{ MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_GPIO1) },
{ MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO0) },
{ MP_ROM_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_GPIO0) },
{ MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_GPIO14) },
{ MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_GPIO15) },
{ MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_GPIO8) },
{ MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO2) },
{ MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_GPIO3) },
{ MP_ROM_QSTR(MP_QSTR_BUTTON), MP_ROM_PTR(&pin_GPIO7) },
{ MP_ROM_QSTR(MP_QSTR_BOOT), MP_ROM_PTR(&pin_GPIO7) },
{ MP_ROM_QSTR(MP_QSTR_D7), MP_ROM_PTR(&pin_GPIO7) },
{ MP_ROM_QSTR(MP_QSTR_LED), MP_ROM_PTR(&pin_GPIO13) },
{ MP_ROM_QSTR(MP_QSTR_D13), MP_ROM_PTR(&pin_GPIO13) },
{ MP_ROM_QSTR(MP_QSTR_NEOPIXEL), MP_ROM_PTR(&pin_GPIO4) },
{ MP_ROM_QSTR(MP_QSTR_D4), MP_ROM_PTR(&pin_GPIO4) },
{ MP_ROM_QSTR(MP_QSTR_CKN), MP_ROM_PTR(&pin_GPIO16) },
{ MP_ROM_QSTR(MP_QSTR_CKP), MP_ROM_PTR(&pin_GPIO17) },
{ MP_ROM_QSTR(MP_QSTR_D0N), MP_ROM_PTR(&pin_GPIO18) },

View File

@ -0,0 +1,29 @@
/*
* This file is part of the MicroPython project, http://micropython.org/
*
* The MIT License (MIT)
*
* Copyright (c) 2021 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,14 @@
#define MICROPY_HW_BOARD_NAME "Adafruit Feather RP2040 RFM"
#define MICROPY_HW_MCU_NAME "rp2040"
#define MICROPY_HW_NEOPIXEL (&pin_GPIO4)
#define DEFAULT_I2C_BUS_SCL (&pin_GPIO3)
#define DEFAULT_I2C_BUS_SDA (&pin_GPIO2)
#define DEFAULT_SPI_BUS_SCK (&pin_GPIO14)
#define DEFAULT_SPI_BUS_MOSI (&pin_GPIO15)
#define DEFAULT_SPI_BUS_MISO (&pin_GPIO8)
#define DEFAULT_UART_BUS_RX (&pin_GPIO1)
#define DEFAULT_UART_BUS_TX (&pin_GPIO0)

View File

@ -0,0 +1,9 @@
USB_VID = 0x239A
USB_PID = 0x812E
USB_PRODUCT = "Feather RP2040 RFM"
USB_MANUFACTURER = "Adafruit"
CHIP_VARIANT = RP2040
CHIP_FAMILY = rp2
EXTERNAL_FLASH_DEVICES = "GD25Q64C,W25Q64JVxQ"

View File

@ -0,0 +1,4 @@
// Put board-specific pico-sdk definitions here. This file must exist.
// Allow extra time for xosc to start.
#define PICO_XOSC_STARTUP_DELAY_MULTIPLIER 64

View File

@ -0,0 +1,57 @@
#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_A0), MP_ROM_PTR(&pin_GPIO26) },
{ MP_ROM_QSTR(MP_QSTR_A1), MP_ROM_PTR(&pin_GPIO27) },
{ MP_ROM_QSTR(MP_QSTR_A2), MP_ROM_PTR(&pin_GPIO28) },
{ MP_ROM_QSTR(MP_QSTR_A3), MP_ROM_PTR(&pin_GPIO29) },
{ MP_ROM_QSTR(MP_QSTR_D24), MP_ROM_PTR(&pin_GPIO24) },
{ MP_ROM_QSTR(MP_QSTR_D25), MP_ROM_PTR(&pin_GPIO25) },
{ MP_ROM_QSTR(MP_QSTR_D5), MP_ROM_PTR(&pin_GPIO5) },
{ MP_ROM_QSTR(MP_QSTR_D6), MP_ROM_PTR(&pin_GPIO6) },
{ MP_ROM_QSTR(MP_QSTR_D9), MP_ROM_PTR(&pin_GPIO9) },
{ MP_ROM_QSTR(MP_QSTR_D10), MP_ROM_PTR(&pin_GPIO10) },
{ MP_ROM_QSTR(MP_QSTR_D11), MP_ROM_PTR(&pin_GPIO11) },
{ MP_ROM_QSTR(MP_QSTR_D12), MP_ROM_PTR(&pin_GPIO12) },
{ MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_GPIO1) },
{ MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_GPIO1) },
{ MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO0) },
{ MP_ROM_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_GPIO0) },
{ MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_GPIO14) },
{ MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_GPIO15) },
{ MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_GPIO8) },
{ MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO2) },
{ MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_GPIO3) },
{ MP_ROM_QSTR(MP_QSTR_BUTTON), MP_ROM_PTR(&pin_GPIO7) },
{ MP_ROM_QSTR(MP_QSTR_BOOT), MP_ROM_PTR(&pin_GPIO7) },
{ MP_ROM_QSTR(MP_QSTR_D7), MP_ROM_PTR(&pin_GPIO7) },
{ MP_ROM_QSTR(MP_QSTR_LED), MP_ROM_PTR(&pin_GPIO13) },
{ MP_ROM_QSTR(MP_QSTR_D13), MP_ROM_PTR(&pin_GPIO13) },
{ MP_ROM_QSTR(MP_QSTR_NEOPIXEL), MP_ROM_PTR(&pin_GPIO4) },
{ MP_ROM_QSTR(MP_QSTR_D4), MP_ROM_PTR(&pin_GPIO4) },
{ MP_ROM_QSTR(MP_QSTR_RFM_CS), MP_ROM_PTR(&pin_GPIO16) },
{ MP_ROM_QSTR(MP_QSTR_RFM_RST), MP_ROM_PTR(&pin_GPIO17) },
{ MP_ROM_QSTR(MP_QSTR_RFM_IO5), MP_ROM_PTR(&pin_GPIO18) },
{ MP_ROM_QSTR(MP_QSTR_RFM_IO3), MP_ROM_PTR(&pin_GPIO19) },
{ MP_ROM_QSTR(MP_QSTR_RFM_IO4), MP_ROM_PTR(&pin_GPIO20) },
{ MP_ROM_QSTR(MP_QSTR_RFM_IO0), MP_ROM_PTR(&pin_GPIO21) },
{ MP_ROM_QSTR(MP_QSTR_RFM_IO1), MP_ROM_PTR(&pin_GPIO22) },
{ MP_ROM_QSTR(MP_QSTR_RFM_IO2), MP_ROM_PTR(&pin_GPIO23) },
{ MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) },
{ MP_ROM_QSTR(MP_QSTR_STEMMA_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

@ -13,6 +13,7 @@ sphinx!=5.2.0.post0
sphinx-autoapi
sphinx-rtd-theme
sphinxcontrib-svg2pdfconverter
sphinxcontrib-jquery
readthedocs-sphinx-search
myst-parser

View File

@ -56,6 +56,10 @@
//| :param int quiescent_value: The output value when no signal is present. Samples should start
//| and end with this value to prevent audible popping.
//|
//| **Limitations:** On mimxrt10xx, low sample rates may have an audible
//| "carrier" frequency. The manufacturer datasheet states that the "MQS" peripheral
//| is intended for 44 kHz or 48kHz input signals.
//|
//| Simple 8ksps 440 Hz sin wave::
//|
//| import audiocore
@ -114,7 +118,12 @@ STATIC mp_obj_t audiopwmio_pwmaudioout_make_new(const mp_obj_type_t *type, size_
validate_obj_is_free_pin_or_none(args[ARG_right_channel].u_obj, MP_QSTR_right_channel);
// create AudioOut object from the given pin
audiopwmio_pwmaudioout_obj_t *self = m_new_obj(audiopwmio_pwmaudioout_obj_t);
// The object is made long-lived because many implementations keep
// a pointer to the object (e.g., for the interrupt handler), which
// will not work properly if the object is moved. It is created
// with a finaliser as some ports use these (rather than 'reset' functions)
// to ensure resources are collected at interpreter shutdown.
audiopwmio_pwmaudioout_obj_t *self = m_new_ll_obj_with_finaliser(audiopwmio_pwmaudioout_obj_t);
self->base.type = &audiopwmio_pwmaudioout_type;
common_hal_audiopwmio_pwmaudioout_construct(self, left_channel_pin, right_channel_pin, args[ARG_quiescent_value].u_int);
@ -249,6 +258,7 @@ MP_PROPERTY_GETTER(audiopwmio_pwmaudioout_paused_obj,
STATIC const mp_rom_map_elem_t audiopwmio_pwmaudioout_locals_dict_table[] = {
// Methods
{ MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&audiopwmio_pwmaudioout_deinit_obj) },
{ MP_ROM_QSTR(MP_QSTR___del__), MP_ROM_PTR(&audiopwmio_pwmaudioout_deinit_obj) },
{ MP_ROM_QSTR(MP_QSTR___enter__), MP_ROM_PTR(&default___enter___obj) },
{ MP_ROM_QSTR(MP_QSTR___exit__), MP_ROM_PTR(&audiopwmio_pwmaudioout___exit___obj) },
{ MP_ROM_QSTR(MP_QSTR_play), MP_ROM_PTR(&audiopwmio_pwmaudioout_play_obj) },

View File

@ -62,14 +62,11 @@
//| ...
STATIC mp_obj_t displayio_bitmap_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) {
mp_arg_check_num(n_args, n_kw, 3, 3, false);
uint32_t width = mp_obj_get_int(all_args[0]);
uint32_t height = mp_obj_get_int(all_args[1]);
uint32_t value_count = mp_obj_get_int(all_args[2]);
uint32_t width = mp_arg_validate_int_range(mp_obj_get_int(all_args[0]), 1, 32767, MP_QSTR_width);
uint32_t height = mp_arg_validate_int_range(mp_obj_get_int(all_args[1]), 1, 32767, MP_QSTR_height);
uint32_t value_count = mp_arg_validate_int_range(mp_obj_get_int(all_args[2]), 1, 65535, MP_QSTR_value_count);
uint32_t bits = 1;
if (value_count == 0) {
mp_raise_ValueError(translate("value_count must be > 0"));
}
while ((value_count - 1) >> bits) {
if (bits < 8) {
bits <<= 1;
@ -154,28 +151,24 @@ STATIC mp_obj_t bitmap_subscr(mp_obj_t self_in, mp_obj_t index_obj, mp_obj_t val
uint16_t x = 0;
uint16_t y = 0;
if (mp_obj_is_small_int(index_obj)) {
mp_int_t i = MP_OBJ_SMALL_INT_VALUE(index_obj);
mp_int_t i = mp_arg_validate_int_min(MP_OBJ_SMALL_INT_VALUE(index_obj), 0, MP_QSTR_index);
uint16_t width = common_hal_displayio_bitmap_get_width(self);
x = i % width;
y = i / width;
} else {
mp_obj_t *items;
mp_obj_get_array_fixed_n(index_obj, 2, &items);
x = mp_obj_get_int(items[0]);
y = mp_obj_get_int(items[1]);
if (x >= common_hal_displayio_bitmap_get_width(self) || y >= common_hal_displayio_bitmap_get_height(self)) {
mp_raise_IndexError(translate("pixel coordinates out of bounds"));
}
x = mp_arg_validate_int_range(mp_obj_get_int(items[0]), 0, self->width - 1, MP_QSTR_x);
y = mp_arg_validate_int_range(mp_obj_get_int(items[1]), 0, self->height - 1, MP_QSTR_y);
}
if (value_obj == MP_OBJ_SENTINEL) {
// load
return MP_OBJ_NEW_SMALL_INT(common_hal_displayio_bitmap_get_pixel(self, x, y));
} else {
mp_uint_t value = (mp_uint_t)mp_obj_get_int(value_obj);
if ((value >> common_hal_displayio_bitmap_get_bits_per_value(self)) != 0) {
mp_raise_ValueError(translate("pixel value requires too many bits"));
}
mp_uint_t value = (mp_uint_t)mp_arg_validate_int_range(
mp_obj_get_int(value_obj), 0,
(UINT32_MAX >> (32 - common_hal_displayio_bitmap_get_bits_per_value(self))), MP_QSTR_value);
common_hal_displayio_bitmap_set_pixel(self, x, y, value);
}
return mp_const_none;
@ -226,8 +219,9 @@ STATIC mp_obj_t displayio_bitmap_obj_blit(size_t n_args, const mp_obj_t *pos_arg
displayio_bitmap_t *self = MP_OBJ_TO_PTR(pos_args[0]);
check_for_deinit(self);
int16_t x = args[ARG_x].u_int;
int16_t y = args[ARG_y].u_int;
// Check x,y are within self (target) bitmap boundary
int16_t x = mp_arg_validate_int_range(args[ARG_x].u_int, 0, self->width - 1, MP_QSTR_x);
int16_t y = mp_arg_validate_int_range(args[ARG_y].u_int, 0, self->height - 1, MP_QSTR_y);
displayio_bitmap_t *source = mp_arg_validate_type(args[ARG_source].u_obj, &displayio_bitmap_type, MP_QSTR_source_bitmap);
@ -237,32 +231,21 @@ STATIC mp_obj_t displayio_bitmap_obj_blit(size_t n_args, const mp_obj_t *pos_arg
mp_raise_ValueError(translate("source palette too large"));
}
int16_t x1 = args[ARG_x1].u_int;
int16_t y1 = args[ARG_y1].u_int;
// Check x1,y1,x2,y2 are within source bitmap boundary
int16_t x1 = mp_arg_validate_int_range(args[ARG_x1].u_int, 0, source->width - 1, MP_QSTR_x1);
int16_t y1 = mp_arg_validate_int_range(args[ARG_y1].u_int, 0, source->height - 1, MP_QSTR_y1);
int16_t x2, y2;
// if x2 or y2 is None, then set as the maximum size of the source bitmap
if (args[ARG_x2].u_obj == mp_const_none) {
x2 = source->width;
} else {
x2 = mp_obj_get_int(args[ARG_x2].u_obj);
x2 = mp_arg_validate_int_range(mp_obj_get_int(args[ARG_x2].u_obj), 0, source->width, MP_QSTR_x2);
}
// int16_t y2;
if (args[ARG_y2].u_obj == mp_const_none) {
y2 = source->height;
} else {
y2 = mp_obj_get_int(args[ARG_y2].u_obj);
}
// Check x,y are within self (target) bitmap boundary
if ((x < 0) || (y < 0) || (x > self->width) || (y > self->height)) {
mp_raise_ValueError(translate("out of range of target"));
}
// Check x1,y1,x2,y2 are within source bitmap boundary
if ((x1 < 0) || (x1 > source->width) ||
(y1 < 0) || (y1 > source->height) ||
(x2 < 0) || (x2 > source->width) ||
(y2 < 0) || (y2 > source->height)) {
mp_raise_ValueError(translate("out of range of source"));
y2 = mp_arg_validate_int_range(mp_obj_get_int(args[ARG_y2].u_obj), 0, source->height, MP_QSTR_y2);
}
// Ensure x1 < x2 and y1 < y2
@ -301,10 +284,7 @@ STATIC mp_obj_t displayio_bitmap_obj_fill(mp_obj_t self_in, mp_obj_t value_obj)
displayio_bitmap_t *self = MP_OBJ_TO_PTR(self_in);
check_for_deinit(self);
mp_uint_t value = (mp_uint_t)mp_obj_get_int(value_obj);
if ((value >> common_hal_displayio_bitmap_get_bits_per_value(self)) != 0) {
mp_raise_ValueError(translate("pixel value requires too many bits"));
}
mp_uint_t value = (mp_uint_t)mp_arg_validate_int_range(mp_obj_get_int(value_obj), 0,(1u << common_hal_displayio_bitmap_get_bits_per_value(self)) - 1,MP_QSTR_value);
common_hal_displayio_bitmap_fill(self, value);
return mp_const_none;

View File

@ -56,7 +56,7 @@ STATIC mp_obj_t displayio_group_make_new(const mp_obj_type_t *type, size_t n_arg
mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)];
mp_arg_parse_all_kw_array(n_args, n_kw, all_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args);
mp_int_t scale = mp_arg_validate_int_min(args[ARG_scale].u_int, 1, MP_QSTR_scale);
mp_int_t scale = mp_arg_validate_int_range(args[ARG_scale].u_int, 1, 32767,MP_QSTR_scale);
displayio_group_t *self = m_new_obj(displayio_group_t);
self->base.type = &displayio_group_type;

View File

@ -61,7 +61,7 @@ STATIC mp_obj_t displayio_palette_make_new(const mp_obj_type_t *type, size_t n_a
displayio_palette_t *self = m_new_obj(displayio_palette_t);
self->base.type = &displayio_palette_type;
common_hal_displayio_palette_construct(self, args[ARG_color_count].u_int, args[ARG_dither].u_bool);
common_hal_displayio_palette_construct(self, mp_arg_validate_int_range(args[ARG_color_count].u_int, 1, 32767, MP_QSTR_color_count), args[ARG_dither].u_bool);
return MP_OBJ_FROM_PTR(self);
}

View File

@ -102,6 +102,16 @@ STATIC uint32_t read4(msgpack_stream_t *s) {
return res;
}
STATIC uint64_t read8(msgpack_stream_t *s) {
uint64_t res = 0;
read(s, &res, 8);
int n = 1;
if (*(char *)&n == 1) {
res = __builtin_bswap64(res);
}
return res;
}
STATIC size_t read_size(msgpack_stream_t *s, uint8_t len_index) {
size_t res = 0;
switch (len_index) {
@ -207,7 +217,7 @@ STATIC void pack_bin(msgpack_stream_t *s, const uint8_t *data, size_t len) {
}
}
STATIC void pack_ext(msgpack_stream_t *s, int8_t code, const uint8_t *data, size_t len) {
STATIC void pack_ext(msgpack_stream_t *s, int8_t code, const uint8_t *data, size_t len) {
if (len == 1) {
write1(s, 0xd4);
} else if (len == 2) {
@ -424,22 +434,39 @@ STATIC mp_obj_t unpack(msgpack_stream_t *s, mp_obj_t ext_hook, bool use_list) {
return unpack_bytes(s, read_size(s, code - 0xc4));
}
case 0xcc: // uint8
return MP_OBJ_NEW_SMALL_INT((uint8_t)read1(s));
case 0xd0: // int8
return MP_OBJ_NEW_SMALL_INT((int8_t)read1(s));
case 0xcd: // uint16
return MP_OBJ_NEW_SMALL_INT((uint16_t)read2(s));
case 0xd1: // int16
return MP_OBJ_NEW_SMALL_INT((int16_t)read2(s));
case 0xce: // uint32
return mp_obj_new_int_from_uint((uint32_t)read4(s));
case 0xd2: // int32
return MP_OBJ_NEW_SMALL_INT((int32_t)read4(s));
case 0xca: {
union Float { mp_float_t f;
uint32_t u;
return mp_obj_new_int((int32_t)read4(s));
case 0xcf: // uint 64
return mp_obj_new_int_from_ull((uint64_t)read8(s));
case 0xd3: // int 64
return mp_obj_new_int_from_ll((int64_t)read8(s));
case 0xca: { // float
union Float {
mp_float_t f;
uint32_t u;
};
union Float data;
data.u = read4(s);
return mp_obj_new_float(data.f);
}
case 0xcb: { // double
union Double {
uint64_t u;
double d;
};
union Double data;
data.u = read8(s);
return mp_obj_new_float_from_d(data.d);
}
case 0xd9:
case 0xda:
case 0xdb: {
@ -483,11 +510,8 @@ STATIC mp_obj_t unpack(msgpack_stream_t *s, mp_obj_t ext_hook, bool use_list) {
// ext 8, 16, 32
return unpack_ext(s, read_size(s, code - 0xc7), ext_hook);
case 0xc1: // never used
case 0xcb: // float 64
case 0xcf: // uint 64
case 0xd3: // int 64
default:
mp_raise_NotImplementedError(translate("64 bit types"));
mp_raise_ValueError(translate("Invalid format"));
}
}