Merge adafruit/main latest
This commit is contained in:
commit
a9f6d147c4
11
.github/workflows/build.yml
vendored
11
.github/workflows/build.yml
vendored
@ -36,7 +36,7 @@ jobs:
|
||||
- name: Install deps
|
||||
run: |
|
||||
sudo apt-get install -y eatmydata
|
||||
sudo eatmydata apt-get install -y gettext librsvg2-bin mingw-w64
|
||||
sudo eatmydata apt-get install -y gettext librsvg2-bin mingw-w64 latexmk texlive-fonts-recommended texlive-latex-recommended texlive-latex-extra
|
||||
pip install requests sh click setuptools cpp-coveralls "Sphinx<4" sphinx-rtd-theme recommonmark sphinx-autoapi sphinxcontrib-svg2pdfconverter polib pyyaml astroid isort black awscli
|
||||
- name: Versions
|
||||
run: |
|
||||
@ -73,12 +73,19 @@ jobs:
|
||||
with:
|
||||
name: stubs
|
||||
path: circuitpython-stubs*
|
||||
- name: Docs
|
||||
- name: Test Documentation Build (HTML)
|
||||
run: sphinx-build -E -W -b html -D version=${{ env.CP_VERSION }} -D release=${{ env.CP_VERSION }} . _build/html
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: docs
|
||||
path: _build/html
|
||||
- name: Test Documentation Build (LaTeX/PDF)
|
||||
run: |
|
||||
make latexpdf
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: docs
|
||||
path: _build/latex
|
||||
- name: Translations
|
||||
run: make check-translate
|
||||
- name: New boards check
|
||||
|
3
.gitmodules
vendored
3
.gitmodules
vendored
@ -147,3 +147,6 @@
|
||||
[submodule "ports/esp32s2/esp-idf"]
|
||||
path = ports/esp32s2/esp-idf
|
||||
url = https://github.com/tannewt/esp-idf.git
|
||||
[submodule "frozen/Adafruit_CircuitPython_RFM9x"]
|
||||
path = frozen/Adafruit_CircuitPython_RFM9x
|
||||
url = https://github.com/adafruit/Adafruit_CircuitPython_RFM9x.git
|
||||
|
@ -12,6 +12,9 @@ submodules:
|
||||
include:
|
||||
- extmod/ulab
|
||||
|
||||
formats:
|
||||
- pdf
|
||||
|
||||
python:
|
||||
version: 3
|
||||
install:
|
||||
|
@ -6,18 +6,28 @@ def rstjinja(app, docname, source):
|
||||
Render our pages as a jinja template for fancy templating goodness.
|
||||
"""
|
||||
# Make sure we're outputting HTML
|
||||
if app.builder.format != 'html':
|
||||
if app.builder.format not in ("html", "latex"):
|
||||
return
|
||||
|
||||
# we only want our one jinja template to run through this func
|
||||
if "shared-bindings/support_matrix" not in docname:
|
||||
return
|
||||
|
||||
src = source[0]
|
||||
src = rendered = source[0]
|
||||
print(docname)
|
||||
rendered = app.builder.templates.render_string(
|
||||
src, app.config.html_context
|
||||
)
|
||||
|
||||
if app.builder.format == "html":
|
||||
rendered = app.builder.templates.render_string(
|
||||
src, app.config.html_context
|
||||
)
|
||||
else:
|
||||
from sphinx.util.template import BaseRenderer
|
||||
renderer = BaseRenderer()
|
||||
rendered = renderer.render_string(
|
||||
src,
|
||||
app.config.html_context
|
||||
)
|
||||
|
||||
source[0] = rendered
|
||||
|
||||
def setup(app):
|
||||
|
1
frozen/Adafruit_CircuitPython_RFM9x
Submodule
1
frozen/Adafruit_CircuitPython_RFM9x
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit cfffc233784961929d722ea4e9acfe5786790609
|
@ -144,7 +144,7 @@ int readline_process_char(int c) {
|
||||
goto right_arrow_key;
|
||||
} else if (c == CHAR_CTRL_K) {
|
||||
// CTRL-K is kill from cursor to end-of-line, inclusive
|
||||
vstr_cut_tail_bytes(rl.line, last_line_len - rl.cursor_pos);
|
||||
vstr_cut_tail_bytes(rl.line, rl.line->len - rl.cursor_pos);
|
||||
// set redraw parameters
|
||||
redraw_from_cursor = true;
|
||||
} else if (c == CHAR_CTRL_N) {
|
||||
@ -155,6 +155,7 @@ int readline_process_char(int c) {
|
||||
goto up_arrow_key;
|
||||
} else if (c == CHAR_CTRL_U) {
|
||||
// CTRL-U is kill from beginning-of-line up to cursor
|
||||
cont_chars = count_cont_bytes(rl.line->buf+rl.orig_line_len, rl.line->buf+rl.cursor_pos);
|
||||
vstr_cut_out_bytes(rl.line, rl.orig_line_len, rl.cursor_pos - rl.orig_line_len);
|
||||
// set redraw parameters
|
||||
redraw_step_back = rl.cursor_pos - rl.orig_line_len;
|
||||
@ -342,6 +343,7 @@ left_arrow_key:
|
||||
if (c == '~') {
|
||||
if (rl.escape_seq_buf[0] == '1' || rl.escape_seq_buf[0] == '7') {
|
||||
home_key:
|
||||
cont_chars = count_cont_bytes(rl.line->buf+rl.orig_line_len, rl.line->buf+rl.cursor_pos);
|
||||
redraw_step_back = rl.cursor_pos - rl.orig_line_len;
|
||||
} else if (rl.escape_seq_buf[0] == '4' || rl.escape_seq_buf[0] == '8') {
|
||||
end_key:
|
||||
@ -352,7 +354,12 @@ end_key:
|
||||
delete_key:
|
||||
#endif
|
||||
if (rl.cursor_pos < rl.line->len) {
|
||||
vstr_cut_out_bytes(rl.line, rl.cursor_pos, 1);
|
||||
size_t len = 1;
|
||||
while (UTF8_IS_CONT(rl.line->buf[rl.cursor_pos+len]) &&
|
||||
rl.cursor_pos+len < rl.line->len) {
|
||||
len++;
|
||||
}
|
||||
vstr_cut_out_bytes(rl.line, rl.cursor_pos, len);
|
||||
redraw_from_cursor = true;
|
||||
}
|
||||
} else {
|
||||
|
311
locale/ID.po
311
locale/ID.po
@ -5,7 +5,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-07-28 16:57-0500\n"
|
||||
"POT-Creation-Date: 2020-08-18 11:19-0400\n"
|
||||
"PO-Revision-Date: 2020-07-06 18:10+0000\n"
|
||||
"Last-Translator: oon arfiandwi <oon.arfiandwi@gmail.com>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@ -72,13 +72,17 @@ msgstr ""
|
||||
msgid "%q in use"
|
||||
msgstr "%q sedang digunakan"
|
||||
|
||||
#: py/obj.c
|
||||
#: extmod/moductypes.c ports/atmel-samd/common-hal/pulseio/PulseIn.c
|
||||
#: ports/cxd56/common-hal/pulseio/PulseIn.c
|
||||
#: ports/nrf/common-hal/pulseio/PulseIn.c
|
||||
#: ports/stm/common-hal/pulseio/PulseIn.c py/obj.c py/objstr.c
|
||||
#: py/objstrunicode.c
|
||||
msgid "%q index out of range"
|
||||
msgstr "%q indeks di luar batas"
|
||||
|
||||
#: py/obj.c
|
||||
msgid "%q indices must be integers, not %s"
|
||||
msgstr "indeks %q harus bilangan bulat, bukan %s"
|
||||
msgid "%q indices must be integers, not %q"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/vectorio/Polygon.c
|
||||
msgid "%q list must be a list"
|
||||
@ -116,6 +120,42 @@ msgstr "%q() mengambil posisi argumen %d tapi %d yang diberikan"
|
||||
msgid "'%q' argument required"
|
||||
msgstr "'%q' argumen dibutuhkan"
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%q' object cannot assign attribute '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/proto.c
|
||||
msgid "'%q' object does not support '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
msgid "'%q' object does not support item assignment"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
msgid "'%q' object does not support item deletion"
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%q' object has no attribute '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%q' object is not an iterator"
|
||||
msgstr ""
|
||||
|
||||
#: py/objtype.c py/runtime.c
|
||||
msgid "'%q' object is not callable"
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%q' object is not iterable"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
msgid "'%q' object is not subscriptable"
|
||||
msgstr ""
|
||||
|
||||
#: py/emitinlinethumb.c py/emitinlinextensa.c
|
||||
#, c-format
|
||||
msgid "'%s' expects a label"
|
||||
@ -166,48 +206,6 @@ msgstr "'%s' integer %d tidak dalam kisaran %d..%d"
|
||||
msgid "'%s' integer 0x%x does not fit in mask 0x%x"
|
||||
msgstr "'%s' integer 0x%x tidak cukup didalam mask 0x%x"
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%s' object cannot assign attribute '%q'"
|
||||
msgstr "Objek '%s' tidak dapat menetapkan atribut '%q'"
|
||||
|
||||
#: py/proto.c
|
||||
msgid "'%s' object does not support '%q'"
|
||||
msgstr "Objek '%s' tidak mendukung '%q'"
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "'%s' object does not support item assignment"
|
||||
msgstr "Objek '%s' tidak mendukung penetapan item"
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "'%s' object does not support item deletion"
|
||||
msgstr "Objek '%s' tidak mendukung penghapusan item"
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%s' object has no attribute '%q'"
|
||||
msgstr "Objek '%s' tidak memiliki atribut '%q'"
|
||||
|
||||
#: py/runtime.c
|
||||
#, c-format
|
||||
msgid "'%s' object is not an iterator"
|
||||
msgstr "Objek '%s' bukan iterator"
|
||||
|
||||
#: py/objtype.c py/runtime.c
|
||||
#, c-format
|
||||
msgid "'%s' object is not callable"
|
||||
msgstr "Objek '%s' tidak dapat dipanggil"
|
||||
|
||||
#: py/runtime.c
|
||||
#, c-format
|
||||
msgid "'%s' object is not iterable"
|
||||
msgstr "'%s' objek tidak dapat diulang"
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "'%s' object is not subscriptable"
|
||||
msgstr "Objek '%s' tidak dapat disubkripsikan"
|
||||
|
||||
#: py/objstr.c
|
||||
msgid "'=' alignment not allowed in string format specifier"
|
||||
msgstr "'=' perataan tidak diizinkan dalam penentu format string"
|
||||
@ -457,6 +455,10 @@ msgstr "Panjang buffer %d terlalu besar. Itu harus kurang dari %d"
|
||||
msgid "Buffer length must be a multiple of 512"
|
||||
msgstr "Panjang buffer harus kelipatan 512"
|
||||
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c
|
||||
msgid "Buffer must be a multiple of 512 bytes"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/bitbangio/I2C.c shared-bindings/busio/I2C.c
|
||||
msgid "Buffer must be at least length 1"
|
||||
msgstr "Penyangga harus memiliki panjang setidaknya 1"
|
||||
@ -658,6 +660,10 @@ msgstr "Tidak dapat menginisialisasi ulang timer"
|
||||
msgid "Could not restart PWM"
|
||||
msgstr "Tidak dapat memulai ulang PWM"
|
||||
|
||||
#: shared-bindings/_bleio/Adapter.c
|
||||
msgid "Could not set address"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/pulseio/PWMOut.c
|
||||
msgid "Could not start PWM"
|
||||
msgstr "Tidak dapat memulai PWM"
|
||||
@ -758,7 +764,7 @@ msgstr "Error pada regex"
|
||||
|
||||
#: shared-bindings/aesio/aes.c shared-bindings/busio/SPI.c
|
||||
#: shared-bindings/microcontroller/Pin.c
|
||||
#: shared-bindings/neopixel_write/__init__.c shared-bindings/pulseio/PulseOut.c
|
||||
#: shared-bindings/neopixel_write/__init__.c
|
||||
#: shared-bindings/terminalio/Terminal.c
|
||||
msgid "Expected a %q"
|
||||
msgstr "Diharapkan %q"
|
||||
@ -841,6 +847,11 @@ msgstr "Gagal menulis flash internal."
|
||||
msgid "File exists"
|
||||
msgstr "File sudah ada"
|
||||
|
||||
#: shared-module/framebufferio/FramebufferDisplay.c
|
||||
#, c-format
|
||||
msgid "Framebuffer requires %d bytes"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c
|
||||
msgid "Frequency captured is above capability. Capture Paused."
|
||||
msgstr ""
|
||||
@ -866,7 +877,7 @@ msgid "Group full"
|
||||
msgstr "Grup penuh"
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/I2C.c
|
||||
#: ports/stm/common-hal/busio/SPI.c
|
||||
#: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/sdioio/SDCard.c
|
||||
msgid "Hardware busy, try alternative pins"
|
||||
msgstr "Perangkat keras sibuk, coba pin alternatif"
|
||||
|
||||
@ -882,6 +893,10 @@ msgstr "operasi I/O pada file tertutup"
|
||||
msgid "I2C Init Error"
|
||||
msgstr "Gagal Inisialisasi I2C"
|
||||
|
||||
#: shared-bindings/audiobusio/I2SOut.c
|
||||
msgid "I2SOut not available"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
#, c-format
|
||||
msgid "IV must be %d bytes long"
|
||||
@ -929,6 +944,11 @@ msgstr ""
|
||||
msgid "Invalid %q pin"
|
||||
msgstr "%q pada tidak valid"
|
||||
|
||||
#: ports/stm/common-hal/busio/I2C.c ports/stm/common-hal/busio/SPI.c
|
||||
#: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/sdioio/SDCard.c
|
||||
msgid "Invalid %q pin selection"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/analogio/AnalogIn.c
|
||||
msgid "Invalid ADC Unit value"
|
||||
msgstr "Nilai Unit ADC tidak valid"
|
||||
@ -941,24 +961,12 @@ msgstr "File BMP tidak valid"
|
||||
msgid "Invalid DAC pin supplied"
|
||||
msgstr "Pin DAC yang diberikan tidak valid"
|
||||
|
||||
#: ports/stm/common-hal/busio/I2C.c
|
||||
msgid "Invalid I2C pin selection"
|
||||
msgstr "Pilihan pin I2C tidak valid"
|
||||
|
||||
#: ports/atmel-samd/common-hal/pulseio/PWMOut.c
|
||||
#: ports/cxd56/common-hal/pulseio/PWMOut.c
|
||||
#: ports/nrf/common-hal/pulseio/PWMOut.c shared-bindings/pulseio/PWMOut.c
|
||||
msgid "Invalid PWM frequency"
|
||||
msgstr "Frekuensi PWM tidak valid"
|
||||
|
||||
#: ports/stm/common-hal/busio/SPI.c
|
||||
msgid "Invalid SPI pin selection"
|
||||
msgstr "Pilihan pin SPI tidak valid"
|
||||
|
||||
#: ports/stm/common-hal/busio/UART.c
|
||||
msgid "Invalid UART pin selection"
|
||||
msgstr "Pilihan pin UART tidak valid"
|
||||
|
||||
#: py/moduerrno.c shared-module/rgbmatrix/RGBMatrix.c
|
||||
msgid "Invalid argument"
|
||||
msgstr "Argumen tidak valid"
|
||||
@ -1255,6 +1263,10 @@ msgstr "Tidak dapat menyambungkan ke AP"
|
||||
msgid "Not playing"
|
||||
msgstr ""
|
||||
|
||||
#: main.c
|
||||
msgid "Not running saved code.\n"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/util.c
|
||||
msgid ""
|
||||
"Object has been deinitialized and can no longer be used. Create a new object."
|
||||
@ -1340,8 +1352,13 @@ msgstr "Tambahkan module apapun pada filesystem\n"
|
||||
msgid "Polygon needs at least 3 points"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/ps2io/Ps2.c
|
||||
msgid "Pop from an empty Ps2 buffer"
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseOut.c
|
||||
#: ports/cxd56/common-hal/pulseio/PulseOut.c
|
||||
#: ports/nrf/common-hal/pulseio/PulseOut.c
|
||||
#: ports/stm/common-hal/pulseio/PulseOut.c
|
||||
msgid ""
|
||||
"Port does not accept pins or frequency. "
|
||||
"Construct and pass a PWMOut Carrier instead"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/_bleio/Adapter.c
|
||||
@ -1358,6 +1375,10 @@ msgstr ""
|
||||
msgid "Pull not used when direction is output."
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/ref/pulseout-pre-timeralloc.c
|
||||
msgid "PulseOut not supported on this chip"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/os/__init__.c
|
||||
msgid "RNG DeInit Error"
|
||||
msgstr ""
|
||||
@ -1419,13 +1440,8 @@ msgid "Row entry must be digitalio.DigitalInOut"
|
||||
msgstr ""
|
||||
|
||||
#: main.c
|
||||
msgid "Running in safe mode! Auto-reload is off.\n"
|
||||
msgstr "Berjalan di mode aman(safe mode)! Auto-reload tidak aktif.\n"
|
||||
|
||||
#: main.c
|
||||
msgid "Running in safe mode! Not running saved code.\n"
|
||||
msgid "Running in safe mode! "
|
||||
msgstr ""
|
||||
"Berjalan di mode aman(safe mode)! tidak menjalankan kode yang tersimpan.\n"
|
||||
|
||||
#: shared-module/sdcardio/SDCard.c
|
||||
msgid "SD card CSD format not supported"
|
||||
@ -1436,6 +1452,16 @@ msgstr ""
|
||||
msgid "SDA or SCL needs a pull up"
|
||||
msgstr "SDA atau SCL membutuhkan pull up"
|
||||
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c
|
||||
#, c-format
|
||||
msgid "SDIO GetCardInfo Error %d"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c
|
||||
#, c-format
|
||||
msgid "SDIO Init Error %d"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/busio/SPI.c
|
||||
msgid "SPI Init Error"
|
||||
msgstr ""
|
||||
@ -1792,8 +1818,7 @@ msgid "__init__() should return None"
|
||||
msgstr ""
|
||||
|
||||
#: py/objtype.c
|
||||
#, c-format
|
||||
msgid "__init__() should return None, not '%s'"
|
||||
msgid "__init__() should return None, not '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/objobject.c
|
||||
@ -1948,7 +1973,7 @@ msgstr "byte > 8 bit tidak didukung"
|
||||
msgid "bytes value out of range"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/bindings/samd/Clock.c
|
||||
#: ports/atmel-samd/bindings/samd/Clock.c ports/atmel-samd/common-hal/rtc/RTC.c
|
||||
msgid "calibration is out of range"
|
||||
msgstr "kalibrasi keluar dari jangkauan"
|
||||
|
||||
@ -1980,47 +2005,17 @@ msgstr ""
|
||||
msgid "can't assign to expression"
|
||||
msgstr "tidak dapat menetapkan ke ekspresi"
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "can't convert %s to complex"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "can't convert %s to float"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "can't convert %s to int"
|
||||
#: py/obj.c py/objint.c shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
#: shared-module/_pixelbuf/PixelBuf.c
|
||||
msgid "can't convert %q to %q"
|
||||
msgstr ""
|
||||
|
||||
#: py/objstr.c
|
||||
msgid "can't convert '%q' object to %q implicitly"
|
||||
msgstr ""
|
||||
|
||||
#: py/objint.c
|
||||
msgid "can't convert NaN to int"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
msgid "can't convert address to int"
|
||||
msgstr ""
|
||||
|
||||
#: py/objint.c
|
||||
msgid "can't convert inf to int"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
msgid "can't convert to complex"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
msgid "can't convert to float"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
msgid "can't convert to int"
|
||||
msgid "can't convert to %q"
|
||||
msgstr ""
|
||||
|
||||
#: py/objstr.c
|
||||
@ -2428,7 +2423,7 @@ msgstr "fungsi kehilangan argumen keyword '%q' yang dibutuhkan"
|
||||
msgid "function missing required positional argument #%d"
|
||||
msgstr "fungsi kehilangan argumen posisi #%d yang dibutuhkan"
|
||||
|
||||
#: py/argcheck.c py/bc.c py/objnamedtuple.c
|
||||
#: py/argcheck.c py/bc.c py/objnamedtuple.c shared-bindings/time/__init__.c
|
||||
#, c-format
|
||||
msgid "function takes %d positional arguments but %d were given"
|
||||
msgstr "fungsi mengambil posisi argumen %d tapi %d yang diberikan"
|
||||
@ -2477,10 +2472,7 @@ msgstr "lapisan (padding) tidak benar"
|
||||
msgid "index is out of bounds"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c
|
||||
#: ports/cxd56/common-hal/pulseio/PulseIn.c
|
||||
#: ports/nrf/common-hal/pulseio/PulseIn.c
|
||||
#: ports/stm/common-hal/pulseio/PulseIn.c py/obj.c
|
||||
#: py/obj.c
|
||||
msgid "index out of range"
|
||||
msgstr "index keluar dari jangkauan"
|
||||
|
||||
@ -2836,8 +2828,7 @@ msgid "number of points must be at least 2"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "object '%s' is not a tuple or list"
|
||||
msgid "object '%q' is not a tuple or list"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
@ -2873,8 +2864,7 @@ msgid "object not iterable"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "object of type '%s' has no len()"
|
||||
msgid "object of type '%q' has no len()"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
@ -2968,20 +2958,9 @@ msgstr ""
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c
|
||||
#: ports/cxd56/common-hal/pulseio/PulseIn.c
|
||||
#: ports/nrf/common-hal/pulseio/PulseIn.c
|
||||
#: ports/stm/common-hal/pulseio/PulseIn.c
|
||||
msgid "pop from an empty PulseIn"
|
||||
msgstr "Muncul dari PulseIn yang kosong"
|
||||
|
||||
#: py/objset.c
|
||||
msgid "pop from an empty set"
|
||||
msgstr ""
|
||||
|
||||
#: py/objlist.c
|
||||
msgid "pop from empty list"
|
||||
msgstr ""
|
||||
|
||||
#: py/objdict.c
|
||||
msgid "popitem(): dictionary is empty"
|
||||
#: ports/stm/common-hal/pulseio/PulseIn.c py/objdict.c py/objlist.c py/objset.c
|
||||
#: shared-bindings/ps2io/Ps2.c
|
||||
msgid "pop from empty %q"
|
||||
msgstr ""
|
||||
|
||||
#: py/objint_mpz.c
|
||||
@ -3138,12 +3117,7 @@ msgid "stream operation not supported"
|
||||
msgstr ""
|
||||
|
||||
#: py/objstrunicode.c
|
||||
msgid "string index out of range"
|
||||
msgstr ""
|
||||
|
||||
#: py/objstrunicode.c
|
||||
#, c-format
|
||||
msgid "string indices must be integers, not %s"
|
||||
msgid "string indices must be integers, not %q"
|
||||
msgstr ""
|
||||
|
||||
#: py/stream.c
|
||||
@ -3154,10 +3128,6 @@ msgstr ""
|
||||
msgid "struct: cannot index"
|
||||
msgstr "struct: tidak bisa melakukan index"
|
||||
|
||||
#: extmod/moductypes.c
|
||||
msgid "struct: index out of range"
|
||||
msgstr "struct: index keluar dari jangkauan"
|
||||
|
||||
#: extmod/moductypes.c
|
||||
msgid "struct: no fields"
|
||||
msgstr "struct: tidak ada fields"
|
||||
@ -3228,7 +3198,7 @@ msgstr ""
|
||||
msgid "trapz is defined for 1D arrays of equal length"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/linalg/linalg.c py/objstr.c
|
||||
#: extmod/ulab/code/linalg/linalg.c
|
||||
msgid "tuple index out of range"
|
||||
msgstr ""
|
||||
|
||||
@ -3236,10 +3206,6 @@ msgstr ""
|
||||
msgid "tuple/list has wrong length"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/_pixelbuf/PixelBuf.c
|
||||
msgid "tuple/list required on RHS"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c ports/nrf/common-hal/busio/UART.c
|
||||
#: shared-bindings/busio/UART.c
|
||||
msgid "tx and rx cannot both be None"
|
||||
@ -3295,8 +3261,7 @@ msgid "unknown conversion specifier %c"
|
||||
msgstr ""
|
||||
|
||||
#: py/objstr.c
|
||||
#, c-format
|
||||
msgid "unknown format code '%c' for object of type '%s'"
|
||||
msgid "unknown format code '%c' for object of type '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/compile.c
|
||||
@ -3336,7 +3301,7 @@ msgid "unsupported format character '%c' (0x%x) at index %d"
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "unsupported type for %q: '%s'"
|
||||
msgid "unsupported type for %q: '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
@ -3344,7 +3309,7 @@ msgid "unsupported type for operator"
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "unsupported types for %q: '%s', '%s'"
|
||||
msgid "unsupported types for %q: '%q', '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/objint.c
|
||||
@ -3424,6 +3389,58 @@ msgstr ""
|
||||
msgid "zi must be of shape (n_section, 2)"
|
||||
msgstr ""
|
||||
|
||||
#~ msgid "%q indices must be integers, not %s"
|
||||
#~ msgstr "indeks %q harus bilangan bulat, bukan %s"
|
||||
|
||||
#~ msgid "'%s' object cannot assign attribute '%q'"
|
||||
#~ msgstr "Objek '%s' tidak dapat menetapkan atribut '%q'"
|
||||
|
||||
#~ msgid "'%s' object does not support '%q'"
|
||||
#~ msgstr "Objek '%s' tidak mendukung '%q'"
|
||||
|
||||
#~ msgid "'%s' object does not support item assignment"
|
||||
#~ msgstr "Objek '%s' tidak mendukung penetapan item"
|
||||
|
||||
#~ msgid "'%s' object does not support item deletion"
|
||||
#~ msgstr "Objek '%s' tidak mendukung penghapusan item"
|
||||
|
||||
#~ msgid "'%s' object has no attribute '%q'"
|
||||
#~ msgstr "Objek '%s' tidak memiliki atribut '%q'"
|
||||
|
||||
#~ msgid "'%s' object is not an iterator"
|
||||
#~ msgstr "Objek '%s' bukan iterator"
|
||||
|
||||
#~ msgid "'%s' object is not callable"
|
||||
#~ msgstr "Objek '%s' tidak dapat dipanggil"
|
||||
|
||||
#~ msgid "'%s' object is not iterable"
|
||||
#~ msgstr "'%s' objek tidak dapat diulang"
|
||||
|
||||
#~ msgid "'%s' object is not subscriptable"
|
||||
#~ msgstr "Objek '%s' tidak dapat disubkripsikan"
|
||||
|
||||
#~ msgid "Invalid I2C pin selection"
|
||||
#~ msgstr "Pilihan pin I2C tidak valid"
|
||||
|
||||
#~ msgid "Invalid SPI pin selection"
|
||||
#~ msgstr "Pilihan pin SPI tidak valid"
|
||||
|
||||
#~ msgid "Invalid UART pin selection"
|
||||
#~ msgstr "Pilihan pin UART tidak valid"
|
||||
|
||||
#~ msgid "Running in safe mode! Auto-reload is off.\n"
|
||||
#~ msgstr "Berjalan di mode aman(safe mode)! Auto-reload tidak aktif.\n"
|
||||
|
||||
#~ msgid "Running in safe mode! Not running saved code.\n"
|
||||
#~ msgstr ""
|
||||
#~ "Berjalan di mode aman(safe mode)! tidak menjalankan kode yang tersimpan.\n"
|
||||
|
||||
#~ msgid "pop from an empty PulseIn"
|
||||
#~ msgstr "Muncul dari PulseIn yang kosong"
|
||||
|
||||
#~ msgid "struct: index out of range"
|
||||
#~ msgstr "struct: index keluar dari jangkauan"
|
||||
|
||||
#~ msgid "'async for' or 'async with' outside async function"
|
||||
#~ msgstr "'async for' atau 'async with' di luar fungsi async"
|
||||
|
||||
|
@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-08-14 14:20-0500\n"
|
||||
"POT-Creation-Date: 2020-08-21 14:36-0500\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@ -82,6 +82,7 @@ msgstr ""
|
||||
msgid "%q list must be a list"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/memorymonitor/AllocationAlarm 2.c
|
||||
#: shared-bindings/memorymonitor/AllocationAlarm.c
|
||||
msgid "%q must be >= 0"
|
||||
msgstr ""
|
||||
@ -89,6 +90,7 @@ msgstr ""
|
||||
#: shared-bindings/_bleio/CharacteristicBuffer.c
|
||||
#: shared-bindings/_bleio/PacketBuffer.c shared-bindings/displayio/Group.c
|
||||
#: shared-bindings/displayio/Shape.c
|
||||
#: shared-bindings/memorymonitor/AllocationAlarm 2.c
|
||||
#: shared-bindings/memorymonitor/AllocationAlarm.c
|
||||
#: shared-bindings/vectorio/Circle.c shared-bindings/vectorio/Rectangle.c
|
||||
msgid "%q must be >= 1"
|
||||
@ -330,7 +332,9 @@ msgstr ""
|
||||
msgid "Already advertising."
|
||||
msgstr ""
|
||||
|
||||
#: shared-module/memorymonitor/AllocationAlarm 2.c
|
||||
#: shared-module/memorymonitor/AllocationAlarm.c
|
||||
#: shared-module/memorymonitor/AllocationSize 2.c
|
||||
#: shared-module/memorymonitor/AllocationSize.c
|
||||
msgid "Already running"
|
||||
msgstr ""
|
||||
@ -370,6 +374,7 @@ msgstr ""
|
||||
msgid "At most %d %q may be specified (not %d)"
|
||||
msgstr ""
|
||||
|
||||
#: shared-module/memorymonitor/AllocationAlarm 2.c
|
||||
#: shared-module/memorymonitor/AllocationAlarm.c
|
||||
#, c-format
|
||||
msgid "Attempt to allocate %d blocks"
|
||||
@ -451,7 +456,8 @@ msgid "Buffer length %d too big. It must be less than %d"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/sdioio/SDCard.c
|
||||
#: ports/cxd56/common-hal/sdioio/SDCard.c shared-module/sdcardio/SDCard.c
|
||||
#: ports/cxd56/common-hal/sdioio/SDCard.c shared-module/sdcardio/SDCard 2.c
|
||||
#: shared-module/sdcardio/SDCard.c
|
||||
msgid "Buffer length must be a multiple of 512"
|
||||
msgstr ""
|
||||
|
||||
@ -503,6 +509,7 @@ msgid "Cannot blit: source palette too large."
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/displayio/Bitmap.c
|
||||
#: shared-bindings/memorymonitor/AllocationSize 2.c
|
||||
#: shared-bindings/memorymonitor/AllocationSize.c
|
||||
#: shared-bindings/pulseio/PulseIn.c
|
||||
msgid "Cannot delete values"
|
||||
@ -756,7 +763,7 @@ msgstr ""
|
||||
|
||||
#: shared-bindings/aesio/aes.c shared-bindings/busio/SPI.c
|
||||
#: shared-bindings/microcontroller/Pin.c
|
||||
#: shared-bindings/neopixel_write/__init__.c shared-bindings/pulseio/PulseOut.c
|
||||
#: shared-bindings/neopixel_write/__init__.c
|
||||
#: shared-bindings/terminalio/Terminal.c
|
||||
msgid "Expected a %q"
|
||||
msgstr ""
|
||||
@ -924,7 +931,7 @@ msgstr ""
|
||||
msgid "Internal error #%d"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/sdioio/SDCard.c
|
||||
#: shared-bindings/sdioio/SDCard 2.c shared-bindings/sdioio/SDCard.c
|
||||
msgid "Invalid %q"
|
||||
msgstr ""
|
||||
|
||||
@ -1340,6 +1347,15 @@ msgstr ""
|
||||
msgid "Polygon needs at least 3 points"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseOut.c
|
||||
#: ports/cxd56/common-hal/pulseio/PulseOut.c
|
||||
#: ports/nrf/common-hal/pulseio/PulseOut.c
|
||||
#: ports/stm/common-hal/pulseio/PulseOut.c
|
||||
msgid ""
|
||||
"Port does not accept pins or frequency. "
|
||||
"Construct and pass a PWMOut Carrier instead"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/_bleio/Adapter.c
|
||||
msgid "Prefix buffer must be on the heap"
|
||||
msgstr ""
|
||||
@ -1382,6 +1398,7 @@ msgstr ""
|
||||
msgid "Random number generation error"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/memorymonitor/AllocationSize 2.c
|
||||
#: shared-bindings/memorymonitor/AllocationSize.c
|
||||
#: shared-bindings/pulseio/PulseIn.c
|
||||
msgid "Read-only"
|
||||
@ -1415,7 +1432,7 @@ msgstr ""
|
||||
msgid "Running in safe mode! "
|
||||
msgstr ""
|
||||
|
||||
#: shared-module/sdcardio/SDCard.c
|
||||
#: shared-module/sdcardio/SDCard 2.c shared-module/sdcardio/SDCard.c
|
||||
msgid "SD card CSD format not supported"
|
||||
msgstr ""
|
||||
|
||||
@ -1474,6 +1491,7 @@ msgstr ""
|
||||
|
||||
#: shared-bindings/displayio/Bitmap.c shared-bindings/displayio/Group.c
|
||||
#: shared-bindings/displayio/TileGrid.c
|
||||
#: shared-bindings/memorymonitor/AllocationSize 2.c
|
||||
#: shared-bindings/memorymonitor/AllocationSize.c
|
||||
#: shared-bindings/pulseio/PulseIn.c
|
||||
msgid "Slices not supported"
|
||||
@ -1499,7 +1517,7 @@ msgstr ""
|
||||
msgid "Supply at least one UART pin"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/gnss/GNSS.c
|
||||
#: shared-bindings/gnss/GNSS 2.c shared-bindings/gnss/GNSS.c
|
||||
msgid "System entry must be gnss.SatelliteSystem"
|
||||
msgstr ""
|
||||
|
||||
@ -1803,10 +1821,12 @@ msgstr ""
|
||||
msgid "address %08x is not aligned to %d bytes"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/i2cperipheral/I2CPeripheral 2.c
|
||||
#: shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
msgid "address out of bounds"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/i2cperipheral/I2CPeripheral 2.c
|
||||
#: shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
msgid "addresses is empty"
|
||||
msgstr ""
|
||||
@ -1969,7 +1989,9 @@ msgstr ""
|
||||
msgid "can't assign to expression"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c py/objint.c shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
#: py/obj.c py/objint.c shared-bindings/i2cperipheral/I2CPeripheral 2.c
|
||||
#: shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
#: shared-module/_pixelbuf/PixelBuf.c
|
||||
msgid "can't convert %q to %q"
|
||||
msgstr ""
|
||||
|
||||
@ -2029,7 +2051,7 @@ msgstr ""
|
||||
msgid "can't send non-None value to a just-started generator"
|
||||
msgstr ""
|
||||
|
||||
#: shared-module/sdcardio/SDCard.c
|
||||
#: shared-module/sdcardio/SDCard 2.c shared-module/sdcardio/SDCard.c
|
||||
msgid "can't set 512 block size"
|
||||
msgstr ""
|
||||
|
||||
@ -2159,7 +2181,7 @@ msgstr ""
|
||||
msgid "could not invert Vandermonde matrix"
|
||||
msgstr ""
|
||||
|
||||
#: shared-module/sdcardio/SDCard.c
|
||||
#: shared-module/sdcardio/SDCard 2.c shared-module/sdcardio/SDCard.c
|
||||
msgid "couldn't determine SD card version"
|
||||
msgstr ""
|
||||
|
||||
@ -2717,7 +2739,7 @@ msgstr ""
|
||||
msgid "negative shift count"
|
||||
msgstr ""
|
||||
|
||||
#: shared-module/sdcardio/SDCard.c
|
||||
#: shared-module/sdcardio/SDCard 2.c shared-module/sdcardio/SDCard.c
|
||||
msgid "no SD card"
|
||||
msgstr ""
|
||||
|
||||
@ -2742,7 +2764,7 @@ msgstr ""
|
||||
msgid "no reset pin available"
|
||||
msgstr ""
|
||||
|
||||
#: shared-module/sdcardio/SDCard.c
|
||||
#: shared-module/sdcardio/SDCard 2.c shared-module/sdcardio/SDCard.c
|
||||
msgid "no response from SD card"
|
||||
msgstr ""
|
||||
|
||||
@ -3130,11 +3152,11 @@ msgstr ""
|
||||
msgid "timeout must be >= 0.0"
|
||||
msgstr ""
|
||||
|
||||
#: shared-module/sdcardio/SDCard.c
|
||||
#: shared-module/sdcardio/SDCard 2.c shared-module/sdcardio/SDCard.c
|
||||
msgid "timeout waiting for v1 card"
|
||||
msgstr ""
|
||||
|
||||
#: shared-module/sdcardio/SDCard.c
|
||||
#: shared-module/sdcardio/SDCard 2.c shared-module/sdcardio/SDCard.c
|
||||
msgid "timeout waiting for v2 card"
|
||||
msgstr ""
|
||||
|
||||
@ -3167,10 +3189,6 @@ msgstr ""
|
||||
msgid "tuple/list has wrong length"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/_pixelbuf/PixelBuf.c
|
||||
msgid "tuple/list required on RHS"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c ports/nrf/common-hal/busio/UART.c
|
||||
#: shared-bindings/busio/UART.c
|
||||
msgid "tx and rx cannot both be None"
|
||||
|
275
locale/cs.po
275
locale/cs.po
@ -5,7 +5,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-07-28 16:57-0500\n"
|
||||
"POT-Creation-Date: 2020-08-18 11:19-0400\n"
|
||||
"PO-Revision-Date: 2020-05-24 03:22+0000\n"
|
||||
"Last-Translator: dronecz <mzuzelka@gmail.com>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@ -44,11 +44,11 @@ msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
msgid " File \"%q\""
|
||||
msgstr " Soubor \"% q\""
|
||||
msgstr " Soubor \"%q\""
|
||||
|
||||
#: py/obj.c
|
||||
msgid " File \"%q\", line %d"
|
||||
msgstr " Soubor \"% q\", řádek% d"
|
||||
msgstr " Soubor \"%q\", řádek %d"
|
||||
|
||||
#: main.c
|
||||
msgid " output:\n"
|
||||
@ -57,7 +57,7 @@ msgstr " výstup:\n"
|
||||
#: py/objstr.c
|
||||
#, c-format
|
||||
msgid "%%c requires int or char"
|
||||
msgstr "%% c vyžaduje int nebo char"
|
||||
msgstr "%%c vyžaduje int nebo char"
|
||||
|
||||
#: shared-bindings/rgbmatrix/RGBMatrix.c
|
||||
#, c-format
|
||||
@ -72,17 +72,21 @@ msgstr ""
|
||||
msgid "%q in use"
|
||||
msgstr "%q se nyní používá"
|
||||
|
||||
#: py/obj.c
|
||||
#: extmod/moductypes.c ports/atmel-samd/common-hal/pulseio/PulseIn.c
|
||||
#: ports/cxd56/common-hal/pulseio/PulseIn.c
|
||||
#: ports/nrf/common-hal/pulseio/PulseIn.c
|
||||
#: ports/stm/common-hal/pulseio/PulseIn.c py/obj.c py/objstr.c
|
||||
#: py/objstrunicode.c
|
||||
msgid "%q index out of range"
|
||||
msgstr "%q index je mimo rozsah"
|
||||
|
||||
#: py/obj.c
|
||||
msgid "%q indices must be integers, not %s"
|
||||
msgstr "Indexy% q musí být celá čísla, nikoli% s"
|
||||
msgid "%q indices must be integers, not %q"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/vectorio/Polygon.c
|
||||
msgid "%q list must be a list"
|
||||
msgstr "Seznam% q musí být seznam"
|
||||
msgstr "Seznam %q musí být seznam"
|
||||
|
||||
#: shared-bindings/memorymonitor/AllocationAlarm.c
|
||||
msgid "%q must be >= 0"
|
||||
@ -94,11 +98,11 @@ msgstr ""
|
||||
#: shared-bindings/memorymonitor/AllocationAlarm.c
|
||||
#: shared-bindings/vectorio/Circle.c shared-bindings/vectorio/Rectangle.c
|
||||
msgid "%q must be >= 1"
|
||||
msgstr "% q musí být > = 1"
|
||||
msgstr " %q musí být > = 1"
|
||||
|
||||
#: shared-module/vectorio/Polygon.c
|
||||
msgid "%q must be a tuple of length 2"
|
||||
msgstr "% q musí být n-tice délky 2"
|
||||
msgstr " %q musí být n-tice délky 2"
|
||||
|
||||
#: ports/atmel-samd/common-hal/sdioio/SDCard.c
|
||||
msgid "%q pin invalid"
|
||||
@ -106,7 +110,7 @@ msgstr ""
|
||||
|
||||
#: shared-bindings/fontio/BuiltinFont.c
|
||||
msgid "%q should be an int"
|
||||
msgstr "% q by měl být int"
|
||||
msgstr " %q by měl být int"
|
||||
|
||||
#: py/bc.c py/objnamedtuple.c
|
||||
msgid "%q() takes %d positional arguments but %d were given"
|
||||
@ -116,6 +120,42 @@ msgstr ""
|
||||
msgid "'%q' argument required"
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%q' object cannot assign attribute '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/proto.c
|
||||
msgid "'%q' object does not support '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
msgid "'%q' object does not support item assignment"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
msgid "'%q' object does not support item deletion"
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%q' object has no attribute '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%q' object is not an iterator"
|
||||
msgstr ""
|
||||
|
||||
#: py/objtype.c py/runtime.c
|
||||
msgid "'%q' object is not callable"
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%q' object is not iterable"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
msgid "'%q' object is not subscriptable"
|
||||
msgstr ""
|
||||
|
||||
#: py/emitinlinethumb.c py/emitinlinextensa.c
|
||||
#, c-format
|
||||
msgid "'%s' expects a label"
|
||||
@ -166,48 +206,6 @@ msgstr ""
|
||||
msgid "'%s' integer 0x%x does not fit in mask 0x%x"
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%s' object cannot assign attribute '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/proto.c
|
||||
msgid "'%s' object does not support '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "'%s' object does not support item assignment"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "'%s' object does not support item deletion"
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%s' object has no attribute '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
#, c-format
|
||||
msgid "'%s' object is not an iterator"
|
||||
msgstr ""
|
||||
|
||||
#: py/objtype.c py/runtime.c
|
||||
#, c-format
|
||||
msgid "'%s' object is not callable"
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
#, c-format
|
||||
msgid "'%s' object is not iterable"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "'%s' object is not subscriptable"
|
||||
msgstr ""
|
||||
|
||||
#: py/objstr.c
|
||||
msgid "'=' alignment not allowed in string format specifier"
|
||||
msgstr ""
|
||||
@ -455,6 +453,10 @@ msgstr ""
|
||||
msgid "Buffer length must be a multiple of 512"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c
|
||||
msgid "Buffer must be a multiple of 512 bytes"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/bitbangio/I2C.c shared-bindings/busio/I2C.c
|
||||
msgid "Buffer must be at least length 1"
|
||||
msgstr ""
|
||||
@ -645,6 +647,10 @@ msgstr ""
|
||||
msgid "Could not restart PWM"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/_bleio/Adapter.c
|
||||
msgid "Could not set address"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/pulseio/PWMOut.c
|
||||
msgid "Could not start PWM"
|
||||
msgstr ""
|
||||
@ -744,7 +750,7 @@ msgstr ""
|
||||
|
||||
#: shared-bindings/aesio/aes.c shared-bindings/busio/SPI.c
|
||||
#: shared-bindings/microcontroller/Pin.c
|
||||
#: shared-bindings/neopixel_write/__init__.c shared-bindings/pulseio/PulseOut.c
|
||||
#: shared-bindings/neopixel_write/__init__.c
|
||||
#: shared-bindings/terminalio/Terminal.c
|
||||
msgid "Expected a %q"
|
||||
msgstr ""
|
||||
@ -827,6 +833,11 @@ msgstr ""
|
||||
msgid "File exists"
|
||||
msgstr ""
|
||||
|
||||
#: shared-module/framebufferio/FramebufferDisplay.c
|
||||
#, c-format
|
||||
msgid "Framebuffer requires %d bytes"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c
|
||||
msgid "Frequency captured is above capability. Capture Paused."
|
||||
msgstr ""
|
||||
@ -851,7 +862,7 @@ msgid "Group full"
|
||||
msgstr ""
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/I2C.c
|
||||
#: ports/stm/common-hal/busio/SPI.c
|
||||
#: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/sdioio/SDCard.c
|
||||
msgid "Hardware busy, try alternative pins"
|
||||
msgstr ""
|
||||
|
||||
@ -867,6 +878,10 @@ msgstr ""
|
||||
msgid "I2C Init Error"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/audiobusio/I2SOut.c
|
||||
msgid "I2SOut not available"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
#, c-format
|
||||
msgid "IV must be %d bytes long"
|
||||
@ -912,6 +927,11 @@ msgstr ""
|
||||
msgid "Invalid %q pin"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/busio/I2C.c ports/stm/common-hal/busio/SPI.c
|
||||
#: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/sdioio/SDCard.c
|
||||
msgid "Invalid %q pin selection"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/analogio/AnalogIn.c
|
||||
msgid "Invalid ADC Unit value"
|
||||
msgstr ""
|
||||
@ -924,24 +944,12 @@ msgstr ""
|
||||
msgid "Invalid DAC pin supplied"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/busio/I2C.c
|
||||
msgid "Invalid I2C pin selection"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/pulseio/PWMOut.c
|
||||
#: ports/cxd56/common-hal/pulseio/PWMOut.c
|
||||
#: ports/nrf/common-hal/pulseio/PWMOut.c shared-bindings/pulseio/PWMOut.c
|
||||
msgid "Invalid PWM frequency"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/busio/SPI.c
|
||||
msgid "Invalid SPI pin selection"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/busio/UART.c
|
||||
msgid "Invalid UART pin selection"
|
||||
msgstr ""
|
||||
|
||||
#: py/moduerrno.c shared-module/rgbmatrix/RGBMatrix.c
|
||||
msgid "Invalid argument"
|
||||
msgstr ""
|
||||
@ -1237,6 +1245,10 @@ msgstr ""
|
||||
msgid "Not playing"
|
||||
msgstr ""
|
||||
|
||||
#: main.c
|
||||
msgid "Not running saved code.\n"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/util.c
|
||||
msgid ""
|
||||
"Object has been deinitialized and can no longer be used. Create a new object."
|
||||
@ -1322,8 +1334,13 @@ msgstr ""
|
||||
msgid "Polygon needs at least 3 points"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/ps2io/Ps2.c
|
||||
msgid "Pop from an empty Ps2 buffer"
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseOut.c
|
||||
#: ports/cxd56/common-hal/pulseio/PulseOut.c
|
||||
#: ports/nrf/common-hal/pulseio/PulseOut.c
|
||||
#: ports/stm/common-hal/pulseio/PulseOut.c
|
||||
msgid ""
|
||||
"Port does not accept pins or frequency. "
|
||||
"Construct and pass a PWMOut Carrier instead"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/_bleio/Adapter.c
|
||||
@ -1338,6 +1355,10 @@ msgstr ""
|
||||
msgid "Pull not used when direction is output."
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/ref/pulseout-pre-timeralloc.c
|
||||
msgid "PulseOut not supported on this chip"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/os/__init__.c
|
||||
msgid "RNG DeInit Error"
|
||||
msgstr ""
|
||||
@ -1398,11 +1419,7 @@ msgid "Row entry must be digitalio.DigitalInOut"
|
||||
msgstr ""
|
||||
|
||||
#: main.c
|
||||
msgid "Running in safe mode! Auto-reload is off.\n"
|
||||
msgstr ""
|
||||
|
||||
#: main.c
|
||||
msgid "Running in safe mode! Not running saved code.\n"
|
||||
msgid "Running in safe mode! "
|
||||
msgstr ""
|
||||
|
||||
#: shared-module/sdcardio/SDCard.c
|
||||
@ -1414,6 +1431,16 @@ msgstr ""
|
||||
msgid "SDA or SCL needs a pull up"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c
|
||||
#, c-format
|
||||
msgid "SDIO GetCardInfo Error %d"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c
|
||||
#, c-format
|
||||
msgid "SDIO Init Error %d"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/busio/SPI.c
|
||||
msgid "SPI Init Error"
|
||||
msgstr ""
|
||||
@ -1763,8 +1790,7 @@ msgid "__init__() should return None"
|
||||
msgstr ""
|
||||
|
||||
#: py/objtype.c
|
||||
#, c-format
|
||||
msgid "__init__() should return None, not '%s'"
|
||||
msgid "__init__() should return None, not '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/objobject.c
|
||||
@ -1918,7 +1944,7 @@ msgstr ""
|
||||
msgid "bytes value out of range"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/bindings/samd/Clock.c
|
||||
#: ports/atmel-samd/bindings/samd/Clock.c ports/atmel-samd/common-hal/rtc/RTC.c
|
||||
msgid "calibration is out of range"
|
||||
msgstr ""
|
||||
|
||||
@ -1950,47 +1976,17 @@ msgstr ""
|
||||
msgid "can't assign to expression"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "can't convert %s to complex"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "can't convert %s to float"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "can't convert %s to int"
|
||||
#: py/obj.c py/objint.c shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
#: shared-module/_pixelbuf/PixelBuf.c
|
||||
msgid "can't convert %q to %q"
|
||||
msgstr ""
|
||||
|
||||
#: py/objstr.c
|
||||
msgid "can't convert '%q' object to %q implicitly"
|
||||
msgstr ""
|
||||
|
||||
#: py/objint.c
|
||||
msgid "can't convert NaN to int"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
msgid "can't convert address to int"
|
||||
msgstr ""
|
||||
|
||||
#: py/objint.c
|
||||
msgid "can't convert inf to int"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
msgid "can't convert to complex"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
msgid "can't convert to float"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
msgid "can't convert to int"
|
||||
msgid "can't convert to %q"
|
||||
msgstr ""
|
||||
|
||||
#: py/objstr.c
|
||||
@ -2398,7 +2394,7 @@ msgstr ""
|
||||
msgid "function missing required positional argument #%d"
|
||||
msgstr ""
|
||||
|
||||
#: py/argcheck.c py/bc.c py/objnamedtuple.c
|
||||
#: py/argcheck.c py/bc.c py/objnamedtuple.c shared-bindings/time/__init__.c
|
||||
#, c-format
|
||||
msgid "function takes %d positional arguments but %d were given"
|
||||
msgstr ""
|
||||
@ -2447,10 +2443,7 @@ msgstr ""
|
||||
msgid "index is out of bounds"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c
|
||||
#: ports/cxd56/common-hal/pulseio/PulseIn.c
|
||||
#: ports/nrf/common-hal/pulseio/PulseIn.c
|
||||
#: ports/stm/common-hal/pulseio/PulseIn.c py/obj.c
|
||||
#: py/obj.c
|
||||
msgid "index out of range"
|
||||
msgstr ""
|
||||
|
||||
@ -2806,8 +2799,7 @@ msgid "number of points must be at least 2"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "object '%s' is not a tuple or list"
|
||||
msgid "object '%q' is not a tuple or list"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
@ -2843,8 +2835,7 @@ msgid "object not iterable"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "object of type '%s' has no len()"
|
||||
msgid "object of type '%q' has no len()"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
@ -2937,20 +2928,9 @@ msgstr ""
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c
|
||||
#: ports/cxd56/common-hal/pulseio/PulseIn.c
|
||||
#: ports/nrf/common-hal/pulseio/PulseIn.c
|
||||
#: ports/stm/common-hal/pulseio/PulseIn.c
|
||||
msgid "pop from an empty PulseIn"
|
||||
msgstr ""
|
||||
|
||||
#: py/objset.c
|
||||
msgid "pop from an empty set"
|
||||
msgstr ""
|
||||
|
||||
#: py/objlist.c
|
||||
msgid "pop from empty list"
|
||||
msgstr ""
|
||||
|
||||
#: py/objdict.c
|
||||
msgid "popitem(): dictionary is empty"
|
||||
#: ports/stm/common-hal/pulseio/PulseIn.c py/objdict.c py/objlist.c py/objset.c
|
||||
#: shared-bindings/ps2io/Ps2.c
|
||||
msgid "pop from empty %q"
|
||||
msgstr ""
|
||||
|
||||
#: py/objint_mpz.c
|
||||
@ -3107,12 +3087,7 @@ msgid "stream operation not supported"
|
||||
msgstr ""
|
||||
|
||||
#: py/objstrunicode.c
|
||||
msgid "string index out of range"
|
||||
msgstr ""
|
||||
|
||||
#: py/objstrunicode.c
|
||||
#, c-format
|
||||
msgid "string indices must be integers, not %s"
|
||||
msgid "string indices must be integers, not %q"
|
||||
msgstr ""
|
||||
|
||||
#: py/stream.c
|
||||
@ -3123,10 +3098,6 @@ msgstr ""
|
||||
msgid "struct: cannot index"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/moductypes.c
|
||||
msgid "struct: index out of range"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/moductypes.c
|
||||
msgid "struct: no fields"
|
||||
msgstr ""
|
||||
@ -3196,7 +3167,7 @@ msgstr ""
|
||||
msgid "trapz is defined for 1D arrays of equal length"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/linalg/linalg.c py/objstr.c
|
||||
#: extmod/ulab/code/linalg/linalg.c
|
||||
msgid "tuple index out of range"
|
||||
msgstr ""
|
||||
|
||||
@ -3204,10 +3175,6 @@ msgstr ""
|
||||
msgid "tuple/list has wrong length"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/_pixelbuf/PixelBuf.c
|
||||
msgid "tuple/list required on RHS"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c ports/nrf/common-hal/busio/UART.c
|
||||
#: shared-bindings/busio/UART.c
|
||||
msgid "tx and rx cannot both be None"
|
||||
@ -3263,8 +3230,7 @@ msgid "unknown conversion specifier %c"
|
||||
msgstr ""
|
||||
|
||||
#: py/objstr.c
|
||||
#, c-format
|
||||
msgid "unknown format code '%c' for object of type '%s'"
|
||||
msgid "unknown format code '%c' for object of type '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/compile.c
|
||||
@ -3304,7 +3270,7 @@ msgid "unsupported format character '%c' (0x%x) at index %d"
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "unsupported type for %q: '%s'"
|
||||
msgid "unsupported type for %q: '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
@ -3312,7 +3278,7 @@ msgid "unsupported type for operator"
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "unsupported types for %q: '%s', '%s'"
|
||||
msgid "unsupported types for %q: '%q', '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/objint.c
|
||||
@ -3391,3 +3357,6 @@ msgstr ""
|
||||
#: extmod/ulab/code/filter/filter.c
|
||||
msgid "zi must be of shape (n_section, 2)"
|
||||
msgstr ""
|
||||
|
||||
#~ msgid "%q indices must be integers, not %s"
|
||||
#~ msgstr "Indexy %q musí být celá čísla, nikoli %s"
|
||||
|
402
locale/de_DE.po
402
locale/de_DE.po
@ -5,7 +5,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-07-28 16:57-0500\n"
|
||||
"POT-Creation-Date: 2020-08-18 11:19-0400\n"
|
||||
"PO-Revision-Date: 2020-06-16 18:24+0000\n"
|
||||
"Last-Translator: Andreas Buchen <andreas.buchen@gmail.com>\n"
|
||||
"Language: de_DE\n"
|
||||
@ -71,13 +71,17 @@ msgstr ""
|
||||
msgid "%q in use"
|
||||
msgstr "%q in Benutzung"
|
||||
|
||||
#: py/obj.c
|
||||
#: extmod/moductypes.c ports/atmel-samd/common-hal/pulseio/PulseIn.c
|
||||
#: ports/cxd56/common-hal/pulseio/PulseIn.c
|
||||
#: ports/nrf/common-hal/pulseio/PulseIn.c
|
||||
#: ports/stm/common-hal/pulseio/PulseIn.c py/obj.c py/objstr.c
|
||||
#: py/objstrunicode.c
|
||||
msgid "%q index out of range"
|
||||
msgstr "Der Index %q befindet sich außerhalb des Bereiches"
|
||||
|
||||
#: py/obj.c
|
||||
msgid "%q indices must be integers, not %s"
|
||||
msgstr "%q Indizes müssen Integer sein, nicht %s"
|
||||
msgid "%q indices must be integers, not %q"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/vectorio/Polygon.c
|
||||
msgid "%q list must be a list"
|
||||
@ -115,6 +119,42 @@ msgstr "%q() nimmt %d Argumente ohne Keyword an, aber es wurden %d angegeben"
|
||||
msgid "'%q' argument required"
|
||||
msgstr "'%q' Argument erforderlich"
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%q' object cannot assign attribute '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/proto.c
|
||||
msgid "'%q' object does not support '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
msgid "'%q' object does not support item assignment"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
msgid "'%q' object does not support item deletion"
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%q' object has no attribute '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%q' object is not an iterator"
|
||||
msgstr ""
|
||||
|
||||
#: py/objtype.c py/runtime.c
|
||||
msgid "'%q' object is not callable"
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%q' object is not iterable"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
msgid "'%q' object is not subscriptable"
|
||||
msgstr ""
|
||||
|
||||
#: py/emitinlinethumb.c py/emitinlinextensa.c
|
||||
#, c-format
|
||||
msgid "'%s' expects a label"
|
||||
@ -165,48 +205,6 @@ msgstr "'%s' integer %d ist nicht im Bereich %d..%d"
|
||||
msgid "'%s' integer 0x%x does not fit in mask 0x%x"
|
||||
msgstr "'%s' Integer 0x%x passt nicht in Maske 0x%x"
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%s' object cannot assign attribute '%q'"
|
||||
msgstr "Das Objekt '%s' kann das Attribut '%q' nicht zuweisen"
|
||||
|
||||
#: py/proto.c
|
||||
msgid "'%s' object does not support '%q'"
|
||||
msgstr "Das Objekt '%s' unterstützt '%q' nicht"
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "'%s' object does not support item assignment"
|
||||
msgstr "'%s' Objekt unterstützt keine Zuweisung von Elementen"
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "'%s' object does not support item deletion"
|
||||
msgstr "'%s' Objekt unterstützt das Löschen von Elementen nicht"
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%s' object has no attribute '%q'"
|
||||
msgstr "'%s' Objekt hat kein Attribut '%q'"
|
||||
|
||||
#: py/runtime.c
|
||||
#, c-format
|
||||
msgid "'%s' object is not an iterator"
|
||||
msgstr "'%s' Objekt ist kein Iterator"
|
||||
|
||||
#: py/objtype.c py/runtime.c
|
||||
#, c-format
|
||||
msgid "'%s' object is not callable"
|
||||
msgstr "'%s' object ist nicht aufrufbar"
|
||||
|
||||
#: py/runtime.c
|
||||
#, c-format
|
||||
msgid "'%s' object is not iterable"
|
||||
msgstr "'%s' Objekt nicht iterierbar"
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "'%s' object is not subscriptable"
|
||||
msgstr "'%s' Objekt hat keine '__getitem__'-Methode (not subscriptable)"
|
||||
|
||||
#: py/objstr.c
|
||||
msgid "'=' alignment not allowed in string format specifier"
|
||||
msgstr "'='-Ausrichtung ist im String-Formatbezeichner nicht zulässig"
|
||||
@ -458,6 +456,10 @@ msgstr "Die Pufferlänge %d ist zu groß. Sie muss kleiner als %d sein"
|
||||
msgid "Buffer length must be a multiple of 512"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c
|
||||
msgid "Buffer must be a multiple of 512 bytes"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/bitbangio/I2C.c shared-bindings/busio/I2C.c
|
||||
msgid "Buffer must be at least length 1"
|
||||
msgstr "Der Puffer muss eine Mindestenslänge von 1 haben"
|
||||
@ -655,6 +657,10 @@ msgstr "Timer konnte nicht neu gestartet werden"
|
||||
msgid "Could not restart PWM"
|
||||
msgstr "PWM konnte nicht neu gestartet werden"
|
||||
|
||||
#: shared-bindings/_bleio/Adapter.c
|
||||
msgid "Could not set address"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/pulseio/PWMOut.c
|
||||
msgid "Could not start PWM"
|
||||
msgstr "PWM konnte nicht gestartet werden"
|
||||
@ -754,7 +760,7 @@ msgstr "Fehler in regex"
|
||||
|
||||
#: shared-bindings/aesio/aes.c shared-bindings/busio/SPI.c
|
||||
#: shared-bindings/microcontroller/Pin.c
|
||||
#: shared-bindings/neopixel_write/__init__.c shared-bindings/pulseio/PulseOut.c
|
||||
#: shared-bindings/neopixel_write/__init__.c
|
||||
#: shared-bindings/terminalio/Terminal.c
|
||||
msgid "Expected a %q"
|
||||
msgstr "Erwartet ein(e) %q"
|
||||
@ -838,6 +844,11 @@ msgstr "Interner Flash konnte nicht geschrieben werden."
|
||||
msgid "File exists"
|
||||
msgstr "Datei existiert"
|
||||
|
||||
#: shared-module/framebufferio/FramebufferDisplay.c
|
||||
#, c-format
|
||||
msgid "Framebuffer requires %d bytes"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c
|
||||
msgid "Frequency captured is above capability. Capture Paused."
|
||||
msgstr ""
|
||||
@ -866,7 +877,7 @@ msgid "Group full"
|
||||
msgstr "Gruppe voll"
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/I2C.c
|
||||
#: ports/stm/common-hal/busio/SPI.c
|
||||
#: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/sdioio/SDCard.c
|
||||
msgid "Hardware busy, try alternative pins"
|
||||
msgstr "Hardware beschäftigt, versuchen Sie alternative Pins"
|
||||
|
||||
@ -882,6 +893,10 @@ msgstr "Lese/Schreibe-operation an geschlossener Datei"
|
||||
msgid "I2C Init Error"
|
||||
msgstr "I2C-Init-Fehler"
|
||||
|
||||
#: shared-bindings/audiobusio/I2SOut.c
|
||||
msgid "I2SOut not available"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
#, c-format
|
||||
msgid "IV must be %d bytes long"
|
||||
@ -929,6 +944,11 @@ msgstr ""
|
||||
msgid "Invalid %q pin"
|
||||
msgstr "Ungültiger %q pin"
|
||||
|
||||
#: ports/stm/common-hal/busio/I2C.c ports/stm/common-hal/busio/SPI.c
|
||||
#: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/sdioio/SDCard.c
|
||||
msgid "Invalid %q pin selection"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/analogio/AnalogIn.c
|
||||
msgid "Invalid ADC Unit value"
|
||||
msgstr "Ungültiger ADC-Einheitenwert"
|
||||
@ -941,24 +961,12 @@ msgstr "Ungültige BMP-Datei"
|
||||
msgid "Invalid DAC pin supplied"
|
||||
msgstr "Ungültiger DAC-Pin angegeben"
|
||||
|
||||
#: ports/stm/common-hal/busio/I2C.c
|
||||
msgid "Invalid I2C pin selection"
|
||||
msgstr "Ungültige I2C-Pinauswahl"
|
||||
|
||||
#: ports/atmel-samd/common-hal/pulseio/PWMOut.c
|
||||
#: ports/cxd56/common-hal/pulseio/PWMOut.c
|
||||
#: ports/nrf/common-hal/pulseio/PWMOut.c shared-bindings/pulseio/PWMOut.c
|
||||
msgid "Invalid PWM frequency"
|
||||
msgstr "Ungültige PWM Frequenz"
|
||||
|
||||
#: ports/stm/common-hal/busio/SPI.c
|
||||
msgid "Invalid SPI pin selection"
|
||||
msgstr "Ungültige SPI-Pin-Auswahl"
|
||||
|
||||
#: ports/stm/common-hal/busio/UART.c
|
||||
msgid "Invalid UART pin selection"
|
||||
msgstr "Ungültige UART-Pinauswahl"
|
||||
|
||||
#: py/moduerrno.c shared-module/rgbmatrix/RGBMatrix.c
|
||||
msgid "Invalid argument"
|
||||
msgstr "Ungültiges Argument"
|
||||
@ -1256,6 +1264,10 @@ msgstr "Nicht verbunden"
|
||||
msgid "Not playing"
|
||||
msgstr "Spielt nicht ab"
|
||||
|
||||
#: main.c
|
||||
msgid "Not running saved code.\n"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/util.c
|
||||
msgid ""
|
||||
"Object has been deinitialized and can no longer be used. Create a new object."
|
||||
@ -1350,9 +1362,14 @@ msgstr "und alle Module im Dateisystem \n"
|
||||
msgid "Polygon needs at least 3 points"
|
||||
msgstr "Polygone brauchen mindestens 3 Punkte"
|
||||
|
||||
#: shared-bindings/ps2io/Ps2.c
|
||||
msgid "Pop from an empty Ps2 buffer"
|
||||
msgstr "Pop aus einem leeren Ps2-Puffer"
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseOut.c
|
||||
#: ports/cxd56/common-hal/pulseio/PulseOut.c
|
||||
#: ports/nrf/common-hal/pulseio/PulseOut.c
|
||||
#: ports/stm/common-hal/pulseio/PulseOut.c
|
||||
msgid ""
|
||||
"Port does not accept pins or frequency. "
|
||||
"Construct and pass a PWMOut Carrier instead"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/_bleio/Adapter.c
|
||||
msgid "Prefix buffer must be on the heap"
|
||||
@ -1368,6 +1385,10 @@ msgstr ""
|
||||
msgid "Pull not used when direction is output."
|
||||
msgstr "Pull wird nicht verwendet, wenn die Richtung output ist."
|
||||
|
||||
#: ports/stm/ref/pulseout-pre-timeralloc.c
|
||||
msgid "PulseOut not supported on this chip"
|
||||
msgstr "PulseOut wird auf diesem Chip nicht unterstützt"
|
||||
|
||||
#: ports/stm/common-hal/os/__init__.c
|
||||
msgid "RNG DeInit Error"
|
||||
msgstr "RNG DeInit-Fehler"
|
||||
@ -1428,12 +1449,8 @@ msgid "Row entry must be digitalio.DigitalInOut"
|
||||
msgstr "Zeileneintrag muss ein digitalio.DigitalInOut sein"
|
||||
|
||||
#: main.c
|
||||
msgid "Running in safe mode! Auto-reload is off.\n"
|
||||
msgstr "Sicherheitsmodus aktiv! Automatisches Neuladen ist deaktiviert.\n"
|
||||
|
||||
#: main.c
|
||||
msgid "Running in safe mode! Not running saved code.\n"
|
||||
msgstr "Sicherheitsmodus aktiv! Gespeicherter Code wird nicht ausgeführt\n"
|
||||
msgid "Running in safe mode! "
|
||||
msgstr ""
|
||||
|
||||
#: shared-module/sdcardio/SDCard.c
|
||||
msgid "SD card CSD format not supported"
|
||||
@ -1444,6 +1461,16 @@ msgstr ""
|
||||
msgid "SDA or SCL needs a pull up"
|
||||
msgstr "SDA oder SCL brauchen pull up"
|
||||
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c
|
||||
#, c-format
|
||||
msgid "SDIO GetCardInfo Error %d"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c
|
||||
#, c-format
|
||||
msgid "SDIO Init Error %d"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/busio/SPI.c
|
||||
msgid "SPI Init Error"
|
||||
msgstr "SPI-Init-Fehler"
|
||||
@ -1820,9 +1847,8 @@ msgid "__init__() should return None"
|
||||
msgstr "__init__() sollte None zurückgeben"
|
||||
|
||||
#: py/objtype.c
|
||||
#, c-format
|
||||
msgid "__init__() should return None, not '%s'"
|
||||
msgstr "__init__() sollte None zurückgeben, nicht '%s'"
|
||||
msgid "__init__() should return None, not '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/objobject.c
|
||||
msgid "__new__ arg must be a user-type"
|
||||
@ -1975,7 +2001,7 @@ msgstr "bytes mit mehr als 8 bits werden nicht unterstützt"
|
||||
msgid "bytes value out of range"
|
||||
msgstr "Byte-Wert außerhalb des Bereichs"
|
||||
|
||||
#: ports/atmel-samd/bindings/samd/Clock.c
|
||||
#: ports/atmel-samd/bindings/samd/Clock.c ports/atmel-samd/common-hal/rtc/RTC.c
|
||||
msgid "calibration is out of range"
|
||||
msgstr "Kalibrierung ist außerhalb der Reichweite"
|
||||
|
||||
@ -2009,48 +2035,18 @@ msgstr ""
|
||||
msgid "can't assign to expression"
|
||||
msgstr "kann keinem Ausdruck zuweisen"
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "can't convert %s to complex"
|
||||
msgstr "kann %s nicht nach complex konvertieren"
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "can't convert %s to float"
|
||||
msgstr "kann %s nicht nach float konvertieren"
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "can't convert %s to int"
|
||||
msgstr "kann %s nicht nach int konvertieren"
|
||||
#: py/obj.c py/objint.c shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
#: shared-module/_pixelbuf/PixelBuf.c
|
||||
msgid "can't convert %q to %q"
|
||||
msgstr ""
|
||||
|
||||
#: py/objstr.c
|
||||
msgid "can't convert '%q' object to %q implicitly"
|
||||
msgstr "Kann '%q' Objekt nicht implizit nach %q konvertieren"
|
||||
|
||||
#: py/objint.c
|
||||
msgid "can't convert NaN to int"
|
||||
msgstr "kann NaN nicht nach int konvertieren"
|
||||
|
||||
#: shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
msgid "can't convert address to int"
|
||||
msgstr "kann Adresse nicht in int konvertieren"
|
||||
|
||||
#: py/objint.c
|
||||
msgid "can't convert inf to int"
|
||||
msgstr "kann inf nicht nach int konvertieren"
|
||||
|
||||
#: py/obj.c
|
||||
msgid "can't convert to complex"
|
||||
msgstr "kann nicht nach complex konvertieren"
|
||||
|
||||
#: py/obj.c
|
||||
msgid "can't convert to float"
|
||||
msgstr "kann nicht nach float konvertieren"
|
||||
|
||||
#: py/obj.c
|
||||
msgid "can't convert to int"
|
||||
msgstr "kann nicht nach int konvertieren"
|
||||
msgid "can't convert to %q"
|
||||
msgstr ""
|
||||
|
||||
#: py/objstr.c
|
||||
msgid "can't convert to str implicitly"
|
||||
@ -2468,7 +2464,7 @@ msgstr "Funktion vermisst benötigtes Keyword-Argumente '%q'"
|
||||
msgid "function missing required positional argument #%d"
|
||||
msgstr "Funktion vermisst benötigtes Argumente ohne Keyword #%d"
|
||||
|
||||
#: py/argcheck.c py/bc.c py/objnamedtuple.c
|
||||
#: py/argcheck.c py/bc.c py/objnamedtuple.c shared-bindings/time/__init__.c
|
||||
#, c-format
|
||||
msgid "function takes %d positional arguments but %d were given"
|
||||
msgstr ""
|
||||
@ -2518,10 +2514,7 @@ msgstr "padding ist inkorrekt"
|
||||
msgid "index is out of bounds"
|
||||
msgstr "Index ist außerhalb der Grenzen"
|
||||
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c
|
||||
#: ports/cxd56/common-hal/pulseio/PulseIn.c
|
||||
#: ports/nrf/common-hal/pulseio/PulseIn.c
|
||||
#: ports/stm/common-hal/pulseio/PulseIn.c py/obj.c
|
||||
#: py/obj.c
|
||||
msgid "index out of range"
|
||||
msgstr "index außerhalb der Reichweite"
|
||||
|
||||
@ -2884,9 +2877,8 @@ msgid "number of points must be at least 2"
|
||||
msgstr "Die Anzahl der Punkte muss mindestens 2 betragen"
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "object '%s' is not a tuple or list"
|
||||
msgstr "Objekt '%s' ist weder tupel noch list"
|
||||
msgid "object '%q' is not a tuple or list"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
msgid "object does not support item assignment"
|
||||
@ -2921,9 +2913,8 @@ msgid "object not iterable"
|
||||
msgstr "Objekt nicht iterierbar"
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "object of type '%s' has no len()"
|
||||
msgstr "Objekt vom Typ '%s' hat keine len()"
|
||||
msgid "object of type '%q' has no len()"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
msgid "object with buffer protocol required"
|
||||
@ -3018,21 +3009,10 @@ msgstr "Polygon kann nur in einem übergeordneten Element registriert werden"
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c
|
||||
#: ports/cxd56/common-hal/pulseio/PulseIn.c
|
||||
#: ports/nrf/common-hal/pulseio/PulseIn.c
|
||||
#: ports/stm/common-hal/pulseio/PulseIn.c
|
||||
msgid "pop from an empty PulseIn"
|
||||
msgstr "pop von einem leeren PulseIn"
|
||||
|
||||
#: py/objset.c
|
||||
msgid "pop from an empty set"
|
||||
msgstr "pop von einer leeren Menge (set)"
|
||||
|
||||
#: py/objlist.c
|
||||
msgid "pop from empty list"
|
||||
msgstr "pop von einer leeren Liste"
|
||||
|
||||
#: py/objdict.c
|
||||
msgid "popitem(): dictionary is empty"
|
||||
msgstr "popitem(): dictionary ist leer"
|
||||
#: ports/stm/common-hal/pulseio/PulseIn.c py/objdict.c py/objlist.c py/objset.c
|
||||
#: shared-bindings/ps2io/Ps2.c
|
||||
msgid "pop from empty %q"
|
||||
msgstr ""
|
||||
|
||||
#: py/objint_mpz.c
|
||||
msgid "pow() 3rd argument cannot be 0"
|
||||
@ -3190,13 +3170,8 @@ msgid "stream operation not supported"
|
||||
msgstr "stream operation ist nicht unterstützt"
|
||||
|
||||
#: py/objstrunicode.c
|
||||
msgid "string index out of range"
|
||||
msgstr "String index außerhalb des Bereiches"
|
||||
|
||||
#: py/objstrunicode.c
|
||||
#, c-format
|
||||
msgid "string indices must be integers, not %s"
|
||||
msgstr "String indizes müssen Integer sein, nicht %s"
|
||||
msgid "string indices must be integers, not %q"
|
||||
msgstr ""
|
||||
|
||||
#: py/stream.c
|
||||
msgid "string not supported; use bytes or bytearray"
|
||||
@ -3207,10 +3182,6 @@ msgstr ""
|
||||
msgid "struct: cannot index"
|
||||
msgstr "struct: kann nicht indexieren"
|
||||
|
||||
#: extmod/moductypes.c
|
||||
msgid "struct: index out of range"
|
||||
msgstr "struct: index außerhalb gültigen Bereichs"
|
||||
|
||||
#: extmod/moductypes.c
|
||||
msgid "struct: no fields"
|
||||
msgstr "struct: keine Felder"
|
||||
@ -3280,7 +3251,7 @@ msgstr "zu viele Werte zum Auspacken (erwartet %d)"
|
||||
msgid "trapz is defined for 1D arrays of equal length"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/linalg/linalg.c py/objstr.c
|
||||
#: extmod/ulab/code/linalg/linalg.c
|
||||
msgid "tuple index out of range"
|
||||
msgstr "Tupelindex außerhalb des Bereichs"
|
||||
|
||||
@ -3288,10 +3259,6 @@ msgstr "Tupelindex außerhalb des Bereichs"
|
||||
msgid "tuple/list has wrong length"
|
||||
msgstr "tupel/list hat falsche Länge"
|
||||
|
||||
#: shared-bindings/_pixelbuf/PixelBuf.c
|
||||
msgid "tuple/list required on RHS"
|
||||
msgstr "Tupel / Liste auf RHS erforderlich"
|
||||
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c ports/nrf/common-hal/busio/UART.c
|
||||
#: shared-bindings/busio/UART.c
|
||||
msgid "tx and rx cannot both be None"
|
||||
@ -3351,9 +3318,8 @@ msgid "unknown conversion specifier %c"
|
||||
msgstr "unbekannter Konvertierungs specifier %c"
|
||||
|
||||
#: py/objstr.c
|
||||
#, c-format
|
||||
msgid "unknown format code '%c' for object of type '%s'"
|
||||
msgstr "unbekannter Formatcode '%c' für Objekt vom Typ '%s'"
|
||||
msgid "unknown format code '%c' for object of type '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/compile.c
|
||||
msgid "unknown type"
|
||||
@ -3392,16 +3358,16 @@ msgid "unsupported format character '%c' (0x%x) at index %d"
|
||||
msgstr "nicht unterstütztes Formatzeichen '%c' (0x%x) bei Index %d"
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "unsupported type for %q: '%s'"
|
||||
msgstr "nicht unterstützter Type für %q: '%s'"
|
||||
msgid "unsupported type for %q: '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "unsupported type for operator"
|
||||
msgstr "nicht unterstützter Typ für Operator"
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "unsupported types for %q: '%s', '%s'"
|
||||
msgstr "nicht unterstützte Typen für %q: '%s', '%s'"
|
||||
msgid "unsupported types for %q: '%q', '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/objint.c
|
||||
#, c-format
|
||||
@ -3480,12 +3446,126 @@ msgstr ""
|
||||
msgid "zi must be of shape (n_section, 2)"
|
||||
msgstr ""
|
||||
|
||||
#~ msgid "tuple/list required on RHS"
|
||||
#~ msgstr "Tupel / Liste auf RHS erforderlich"
|
||||
|
||||
#~ msgid "%q indices must be integers, not %s"
|
||||
#~ msgstr "%q Indizes müssen Integer sein, nicht %s"
|
||||
|
||||
#~ msgid "'%s' object cannot assign attribute '%q'"
|
||||
#~ msgstr "Das Objekt '%s' kann das Attribut '%q' nicht zuweisen"
|
||||
|
||||
#~ msgid "'%s' object does not support '%q'"
|
||||
#~ msgstr "Das Objekt '%s' unterstützt '%q' nicht"
|
||||
|
||||
#~ msgid "'%s' object does not support item assignment"
|
||||
#~ msgstr "'%s' Objekt unterstützt keine Zuweisung von Elementen"
|
||||
|
||||
#~ msgid "'%s' object does not support item deletion"
|
||||
#~ msgstr "'%s' Objekt unterstützt das Löschen von Elementen nicht"
|
||||
|
||||
#~ msgid "'%s' object has no attribute '%q'"
|
||||
#~ msgstr "'%s' Objekt hat kein Attribut '%q'"
|
||||
|
||||
#~ msgid "'%s' object is not an iterator"
|
||||
#~ msgstr "'%s' Objekt ist kein Iterator"
|
||||
|
||||
#~ msgid "'%s' object is not callable"
|
||||
#~ msgstr "'%s' object ist nicht aufrufbar"
|
||||
|
||||
#~ msgid "'%s' object is not iterable"
|
||||
#~ msgstr "'%s' Objekt nicht iterierbar"
|
||||
|
||||
#~ msgid "'%s' object is not subscriptable"
|
||||
#~ msgstr "'%s' Objekt hat keine '__getitem__'-Methode (not subscriptable)"
|
||||
|
||||
#~ msgid "Invalid I2C pin selection"
|
||||
#~ msgstr "Ungültige I2C-Pinauswahl"
|
||||
|
||||
#~ msgid "Invalid SPI pin selection"
|
||||
#~ msgstr "Ungültige SPI-Pin-Auswahl"
|
||||
|
||||
#~ msgid "Invalid UART pin selection"
|
||||
#~ msgstr "Ungültige UART-Pinauswahl"
|
||||
|
||||
#~ msgid "Pop from an empty Ps2 buffer"
|
||||
#~ msgstr "Pop aus einem leeren Ps2-Puffer"
|
||||
|
||||
#~ msgid "Running in safe mode! Auto-reload is off.\n"
|
||||
#~ msgstr "Sicherheitsmodus aktiv! Automatisches Neuladen ist deaktiviert.\n"
|
||||
|
||||
#~ msgid "Running in safe mode! Not running saved code.\n"
|
||||
#~ msgstr "Sicherheitsmodus aktiv! Gespeicherter Code wird nicht ausgeführt\n"
|
||||
|
||||
#~ msgid "__init__() should return None, not '%s'"
|
||||
#~ msgstr "__init__() sollte None zurückgeben, nicht '%s'"
|
||||
|
||||
#~ msgid "can't convert %s to complex"
|
||||
#~ msgstr "kann %s nicht nach complex konvertieren"
|
||||
|
||||
#~ msgid "can't convert %s to float"
|
||||
#~ msgstr "kann %s nicht nach float konvertieren"
|
||||
|
||||
#~ msgid "can't convert %s to int"
|
||||
#~ msgstr "kann %s nicht nach int konvertieren"
|
||||
|
||||
#~ msgid "can't convert NaN to int"
|
||||
#~ msgstr "kann NaN nicht nach int konvertieren"
|
||||
|
||||
#~ msgid "can't convert address to int"
|
||||
#~ msgstr "kann Adresse nicht in int konvertieren"
|
||||
|
||||
#~ msgid "can't convert inf to int"
|
||||
#~ msgstr "kann inf nicht nach int konvertieren"
|
||||
|
||||
#~ msgid "can't convert to complex"
|
||||
#~ msgstr "kann nicht nach complex konvertieren"
|
||||
|
||||
#~ msgid "can't convert to float"
|
||||
#~ msgstr "kann nicht nach float konvertieren"
|
||||
|
||||
#~ msgid "can't convert to int"
|
||||
#~ msgstr "kann nicht nach int konvertieren"
|
||||
|
||||
#~ msgid "object '%s' is not a tuple or list"
|
||||
#~ msgstr "Objekt '%s' ist weder tupel noch list"
|
||||
|
||||
#~ msgid "object of type '%s' has no len()"
|
||||
#~ msgstr "Objekt vom Typ '%s' hat keine len()"
|
||||
|
||||
#~ msgid "pop from an empty PulseIn"
|
||||
#~ msgstr "pop von einem leeren PulseIn"
|
||||
|
||||
#~ msgid "pop from an empty set"
|
||||
#~ msgstr "pop von einer leeren Menge (set)"
|
||||
|
||||
#~ msgid "pop from empty list"
|
||||
#~ msgstr "pop von einer leeren Liste"
|
||||
|
||||
#~ msgid "popitem(): dictionary is empty"
|
||||
#~ msgstr "popitem(): dictionary ist leer"
|
||||
|
||||
#~ msgid "string index out of range"
|
||||
#~ msgstr "String index außerhalb des Bereiches"
|
||||
|
||||
#~ msgid "string indices must be integers, not %s"
|
||||
#~ msgstr "String indizes müssen Integer sein, nicht %s"
|
||||
|
||||
#~ msgid "struct: index out of range"
|
||||
#~ msgstr "struct: index außerhalb gültigen Bereichs"
|
||||
|
||||
#~ msgid "unknown format code '%c' for object of type '%s'"
|
||||
#~ msgstr "unbekannter Formatcode '%c' für Objekt vom Typ '%s'"
|
||||
|
||||
#~ msgid "unsupported type for %q: '%s'"
|
||||
#~ msgstr "nicht unterstützter Type für %q: '%s'"
|
||||
|
||||
#~ msgid "unsupported types for %q: '%s', '%s'"
|
||||
#~ msgstr "nicht unterstützte Typen für %q: '%s', '%s'"
|
||||
|
||||
#~ msgid "'async for' or 'async with' outside async function"
|
||||
#~ msgstr "'async for' oder 'async with' außerhalb der asynchronen Funktion"
|
||||
|
||||
#~ msgid "PulseOut not supported on this chip"
|
||||
#~ msgstr "PulseOut wird auf diesem Chip nicht unterstützt"
|
||||
|
||||
#~ msgid "PulseIn not supported on this chip"
|
||||
#~ msgstr "PulseIn wird auf diesem Chip nicht unterstützt"
|
||||
|
||||
|
417
locale/es.po
417
locale/es.po
@ -7,8 +7,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-07-28 16:57-0500\n"
|
||||
"PO-Revision-Date: 2020-07-24 21:12+0000\n"
|
||||
"POT-Creation-Date: 2020-08-18 11:19-0400\n"
|
||||
"PO-Revision-Date: 2020-08-17 21:11+0000\n"
|
||||
"Last-Translator: Alvaro Figueroa <alvaro@greencore.co.cr>\n"
|
||||
"Language-Team: \n"
|
||||
"Language: es\n"
|
||||
@ -75,13 +75,17 @@ msgstr "%q fallo: %d"
|
||||
msgid "%q in use"
|
||||
msgstr "%q está siendo utilizado"
|
||||
|
||||
#: py/obj.c
|
||||
#: extmod/moductypes.c ports/atmel-samd/common-hal/pulseio/PulseIn.c
|
||||
#: ports/cxd56/common-hal/pulseio/PulseIn.c
|
||||
#: ports/nrf/common-hal/pulseio/PulseIn.c
|
||||
#: ports/stm/common-hal/pulseio/PulseIn.c py/obj.c py/objstr.c
|
||||
#: py/objstrunicode.c
|
||||
msgid "%q index out of range"
|
||||
msgstr "%q indice fuera de rango"
|
||||
|
||||
#: py/obj.c
|
||||
msgid "%q indices must be integers, not %s"
|
||||
msgstr "%q indices deben ser enteros, no %s"
|
||||
msgid "%q indices must be integers, not %q"
|
||||
msgstr "índices %q deben ser enteros, no %q"
|
||||
|
||||
#: shared-bindings/vectorio/Polygon.c
|
||||
msgid "%q list must be a list"
|
||||
@ -119,6 +123,42 @@ msgstr "%q() toma %d argumentos posicionales pero %d fueron dados"
|
||||
msgid "'%q' argument required"
|
||||
msgstr "argumento '%q' requerido"
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%q' object cannot assign attribute '%q'"
|
||||
msgstr "el objeto '%q' no puede asignar el atributo '%q'"
|
||||
|
||||
#: py/proto.c
|
||||
msgid "'%q' object does not support '%q'"
|
||||
msgstr "objeto '%q' no tiene capacidad '%q'"
|
||||
|
||||
#: py/obj.c
|
||||
msgid "'%q' object does not support item assignment"
|
||||
msgstr "objeto '%q' no tiene capacidad de asignado de artículo"
|
||||
|
||||
#: py/obj.c
|
||||
msgid "'%q' object does not support item deletion"
|
||||
msgstr "objeto '%q' no tiene capacidad de borrado de artículo"
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%q' object has no attribute '%q'"
|
||||
msgstr "objeto '%q' no tiene atributo '%q'"
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%q' object is not an iterator"
|
||||
msgstr "objeto '%q' no es un iterador"
|
||||
|
||||
#: py/objtype.c py/runtime.c
|
||||
msgid "'%q' object is not callable"
|
||||
msgstr "objeto '%q' no es llamable"
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%q' object is not iterable"
|
||||
msgstr "objeto '%q' no es iterable"
|
||||
|
||||
#: py/obj.c
|
||||
msgid "'%q' object is not subscriptable"
|
||||
msgstr "objeto '%q' no es subscribible"
|
||||
|
||||
#: py/emitinlinethumb.c py/emitinlinextensa.c
|
||||
#, c-format
|
||||
msgid "'%s' expects a label"
|
||||
@ -169,48 +209,6 @@ msgstr "'%s' entero %d no esta dentro del rango %d..%d"
|
||||
msgid "'%s' integer 0x%x does not fit in mask 0x%x"
|
||||
msgstr "'%s' entero 0x%x no cabe en la máscara 0x%x"
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%s' object cannot assign attribute '%q'"
|
||||
msgstr "El objeto '%s' no puede asignar al atributo '%q'"
|
||||
|
||||
#: py/proto.c
|
||||
msgid "'%s' object does not support '%q'"
|
||||
msgstr "El objeto '%s' no admite '%q'"
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "'%s' object does not support item assignment"
|
||||
msgstr "el objeto '%s' no soporta la asignación de elementos"
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "'%s' object does not support item deletion"
|
||||
msgstr "objeto '%s' no soporta la eliminación de elementos"
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%s' object has no attribute '%q'"
|
||||
msgstr "objeto '%s' no tiene atributo '%q'"
|
||||
|
||||
#: py/runtime.c
|
||||
#, c-format
|
||||
msgid "'%s' object is not an iterator"
|
||||
msgstr "objeto '%s' no es un iterator"
|
||||
|
||||
#: py/objtype.c py/runtime.c
|
||||
#, c-format
|
||||
msgid "'%s' object is not callable"
|
||||
msgstr "objeto '%s' no puede ser llamado"
|
||||
|
||||
#: py/runtime.c
|
||||
#, c-format
|
||||
msgid "'%s' object is not iterable"
|
||||
msgstr "objeto '%s' no es iterable"
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "'%s' object is not subscriptable"
|
||||
msgstr "el objeto '%s' no es suscriptable"
|
||||
|
||||
#: py/objstr.c
|
||||
msgid "'=' alignment not allowed in string format specifier"
|
||||
msgstr "'=' alineación no permitida en el especificador string format"
|
||||
@ -229,7 +227,7 @@ msgstr "'await' fuera de la función"
|
||||
|
||||
#: py/compile.c
|
||||
msgid "'await', 'async for' or 'async with' outside async function"
|
||||
msgstr ""
|
||||
msgstr "'await', 'async for' o 'async with' fuera de la función async"
|
||||
|
||||
#: py/compile.c
|
||||
msgid "'break' outside loop"
|
||||
@ -464,6 +462,10 @@ msgstr "La longitud del buffer %d es muy grande. Debe ser menor a %d"
|
||||
msgid "Buffer length must be a multiple of 512"
|
||||
msgstr "El tamaño del búfer debe ser múltiplo de 512"
|
||||
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c
|
||||
msgid "Buffer must be a multiple of 512 bytes"
|
||||
msgstr "Búfer deber ser un múltiplo de 512 bytes"
|
||||
|
||||
#: shared-bindings/bitbangio/I2C.c shared-bindings/busio/I2C.c
|
||||
msgid "Buffer must be at least length 1"
|
||||
msgstr "Buffer debe ser de longitud 1 como minimo"
|
||||
@ -660,6 +662,10 @@ msgstr "No se pudo reiniciar el temporizador"
|
||||
msgid "Could not restart PWM"
|
||||
msgstr "No se pudo reiniciar el PWM"
|
||||
|
||||
#: shared-bindings/_bleio/Adapter.c
|
||||
msgid "Could not set address"
|
||||
msgstr "No se puede definir la dirección"
|
||||
|
||||
#: ports/stm/common-hal/pulseio/PWMOut.c
|
||||
msgid "Could not start PWM"
|
||||
msgstr "No se pudo iniciar el PWM"
|
||||
@ -759,7 +765,7 @@ msgstr "Error en regex"
|
||||
|
||||
#: shared-bindings/aesio/aes.c shared-bindings/busio/SPI.c
|
||||
#: shared-bindings/microcontroller/Pin.c
|
||||
#: shared-bindings/neopixel_write/__init__.c shared-bindings/pulseio/PulseOut.c
|
||||
#: shared-bindings/neopixel_write/__init__.c
|
||||
#: shared-bindings/terminalio/Terminal.c
|
||||
msgid "Expected a %q"
|
||||
msgstr "Se espera un %q"
|
||||
@ -842,6 +848,11 @@ msgstr "Error al escribir al flash interno."
|
||||
msgid "File exists"
|
||||
msgstr "El archivo ya existe"
|
||||
|
||||
#: shared-module/framebufferio/FramebufferDisplay.c
|
||||
#, c-format
|
||||
msgid "Framebuffer requires %d bytes"
|
||||
msgstr "Framebuffer requiere %d bytes"
|
||||
|
||||
#: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c
|
||||
msgid "Frequency captured is above capability. Capture Paused."
|
||||
msgstr "Frecuencia capturada por encima de la capacidad. Captura en pausa."
|
||||
@ -867,7 +878,7 @@ msgid "Group full"
|
||||
msgstr "Group lleno"
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/I2C.c
|
||||
#: ports/stm/common-hal/busio/SPI.c
|
||||
#: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/sdioio/SDCard.c
|
||||
msgid "Hardware busy, try alternative pins"
|
||||
msgstr "Hardware ocupado, pruebe pines alternativos"
|
||||
|
||||
@ -883,6 +894,10 @@ msgstr "Operación I/O en archivo cerrado"
|
||||
msgid "I2C Init Error"
|
||||
msgstr "Error de inicio de I2C"
|
||||
|
||||
#: shared-bindings/audiobusio/I2SOut.c
|
||||
msgid "I2SOut not available"
|
||||
msgstr "I2SOut no disponible"
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
#, c-format
|
||||
msgid "IV must be %d bytes long"
|
||||
@ -930,6 +945,11 @@ msgstr "%q inválido"
|
||||
msgid "Invalid %q pin"
|
||||
msgstr "Pin %q inválido"
|
||||
|
||||
#: ports/stm/common-hal/busio/I2C.c ports/stm/common-hal/busio/SPI.c
|
||||
#: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/sdioio/SDCard.c
|
||||
msgid "Invalid %q pin selection"
|
||||
msgstr "selección inválida de pin %q"
|
||||
|
||||
#: ports/stm/common-hal/analogio/AnalogIn.c
|
||||
msgid "Invalid ADC Unit value"
|
||||
msgstr "Valor de unidad de ADC no válido"
|
||||
@ -942,24 +962,12 @@ msgstr "Archivo BMP inválido"
|
||||
msgid "Invalid DAC pin supplied"
|
||||
msgstr "Pin suministrado inválido para DAC"
|
||||
|
||||
#: ports/stm/common-hal/busio/I2C.c
|
||||
msgid "Invalid I2C pin selection"
|
||||
msgstr "Selección de pin I2C no válida"
|
||||
|
||||
#: ports/atmel-samd/common-hal/pulseio/PWMOut.c
|
||||
#: ports/cxd56/common-hal/pulseio/PWMOut.c
|
||||
#: ports/nrf/common-hal/pulseio/PWMOut.c shared-bindings/pulseio/PWMOut.c
|
||||
msgid "Invalid PWM frequency"
|
||||
msgstr "Frecuencia PWM inválida"
|
||||
|
||||
#: ports/stm/common-hal/busio/SPI.c
|
||||
msgid "Invalid SPI pin selection"
|
||||
msgstr "Selección de pin SPI no válida"
|
||||
|
||||
#: ports/stm/common-hal/busio/UART.c
|
||||
msgid "Invalid UART pin selection"
|
||||
msgstr "Selección de pin UART no válida"
|
||||
|
||||
#: py/moduerrno.c shared-module/rgbmatrix/RGBMatrix.c
|
||||
msgid "Invalid argument"
|
||||
msgstr "Argumento inválido"
|
||||
@ -1255,6 +1263,10 @@ msgstr "No conectado"
|
||||
msgid "Not playing"
|
||||
msgstr "No reproduciendo"
|
||||
|
||||
#: main.c
|
||||
msgid "Not running saved code.\n"
|
||||
msgstr "No ejecutando el código almacenado.\n"
|
||||
|
||||
#: shared-bindings/util.c
|
||||
msgid ""
|
||||
"Object has been deinitialized and can no longer be used. Create a new object."
|
||||
@ -1350,9 +1362,14 @@ msgstr "Además de cualquier módulo en el sistema de archivos\n"
|
||||
msgid "Polygon needs at least 3 points"
|
||||
msgstr "El polígono necesita al menos 3 puntos"
|
||||
|
||||
#: shared-bindings/ps2io/Ps2.c
|
||||
msgid "Pop from an empty Ps2 buffer"
|
||||
msgstr "Pop de un buffer Ps2 vacio"
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseOut.c
|
||||
#: ports/cxd56/common-hal/pulseio/PulseOut.c
|
||||
#: ports/nrf/common-hal/pulseio/PulseOut.c
|
||||
#: ports/stm/common-hal/pulseio/PulseOut.c
|
||||
msgid ""
|
||||
"Port does not accept pins or frequency. "
|
||||
"Construct and pass a PWMOut Carrier instead"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/_bleio/Adapter.c
|
||||
msgid "Prefix buffer must be on the heap"
|
||||
@ -1367,6 +1384,10 @@ msgstr ""
|
||||
msgid "Pull not used when direction is output."
|
||||
msgstr "Pull no se usa cuando la dirección es output."
|
||||
|
||||
#: ports/stm/ref/pulseout-pre-timeralloc.c
|
||||
msgid "PulseOut not supported on this chip"
|
||||
msgstr "PulseOut no es compatible con este chip"
|
||||
|
||||
#: ports/stm/common-hal/os/__init__.c
|
||||
msgid "RNG DeInit Error"
|
||||
msgstr "Error de desinicializado del RNG"
|
||||
@ -1427,12 +1448,8 @@ msgid "Row entry must be digitalio.DigitalInOut"
|
||||
msgstr "La entrada de la fila debe ser digitalio.DigitalInOut"
|
||||
|
||||
#: main.c
|
||||
msgid "Running in safe mode! Auto-reload is off.\n"
|
||||
msgstr "Ejecutando en modo seguro! La auto-recarga esta deshabilitada.\n"
|
||||
|
||||
#: main.c
|
||||
msgid "Running in safe mode! Not running saved code.\n"
|
||||
msgstr "Ejecutando en modo seguro! No se esta ejecutando el código guardado.\n"
|
||||
msgid "Running in safe mode! "
|
||||
msgstr "¡Corriendo en modo seguro! "
|
||||
|
||||
#: shared-module/sdcardio/SDCard.c
|
||||
msgid "SD card CSD format not supported"
|
||||
@ -1443,6 +1460,16 @@ msgstr "Sin capacidad para formato CSD para tarjeta SD"
|
||||
msgid "SDA or SCL needs a pull up"
|
||||
msgstr "SDA o SCL necesitan una pull up"
|
||||
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c
|
||||
#, c-format
|
||||
msgid "SDIO GetCardInfo Error %d"
|
||||
msgstr "Error SDIO GetCardInfo %d"
|
||||
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c
|
||||
#, c-format
|
||||
msgid "SDIO Init Error %d"
|
||||
msgstr "Error de iniciado de SDIO %d"
|
||||
|
||||
#: ports/stm/common-hal/busio/SPI.c
|
||||
msgid "SPI Init Error"
|
||||
msgstr "Error de inicio de SPI"
|
||||
@ -1817,9 +1844,8 @@ msgid "__init__() should return None"
|
||||
msgstr "__init__() deberia devolver None"
|
||||
|
||||
#: py/objtype.c
|
||||
#, c-format
|
||||
msgid "__init__() should return None, not '%s'"
|
||||
msgstr "__init__() deberia devolver None, no '%s'"
|
||||
msgid "__init__() should return None, not '%q'"
|
||||
msgstr "__init__() debe retornar None, no '%q'"
|
||||
|
||||
#: py/objobject.c
|
||||
msgid "__new__ arg must be a user-type"
|
||||
@ -1864,7 +1890,7 @@ msgstr "el argumento tiene un tipo erroneo"
|
||||
|
||||
#: extmod/ulab/code/linalg/linalg.c
|
||||
msgid "argument must be ndarray"
|
||||
msgstr ""
|
||||
msgstr "argumento debe ser ndarray"
|
||||
|
||||
#: py/argcheck.c shared-bindings/_stage/__init__.c
|
||||
#: shared-bindings/digitalio/DigitalInOut.c shared-bindings/gamepad/GamePad.c
|
||||
@ -1972,7 +1998,7 @@ msgstr "bytes > 8 bits no soportados"
|
||||
msgid "bytes value out of range"
|
||||
msgstr "valor de bytes fuera de rango"
|
||||
|
||||
#: ports/atmel-samd/bindings/samd/Clock.c
|
||||
#: ports/atmel-samd/bindings/samd/Clock.c ports/atmel-samd/common-hal/rtc/RTC.c
|
||||
msgid "calibration is out of range"
|
||||
msgstr "calibration esta fuera de rango"
|
||||
|
||||
@ -2004,48 +2030,18 @@ msgstr "no se puede agregar un método a una clase ya subclasificada"
|
||||
msgid "can't assign to expression"
|
||||
msgstr "no se puede asignar a la expresión"
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "can't convert %s to complex"
|
||||
msgstr "no se puede convertir %s a complejo"
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "can't convert %s to float"
|
||||
msgstr "no se puede convertir %s a float"
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "can't convert %s to int"
|
||||
msgstr "no se puede convertir %s a int"
|
||||
#: py/obj.c py/objint.c shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
#: shared-module/_pixelbuf/PixelBuf.c
|
||||
msgid "can't convert %q to %q"
|
||||
msgstr "no puede convertir %q a %q"
|
||||
|
||||
#: py/objstr.c
|
||||
msgid "can't convert '%q' object to %q implicitly"
|
||||
msgstr "no se puede convertir el objeto '%q' a %q implícitamente"
|
||||
|
||||
#: py/objint.c
|
||||
msgid "can't convert NaN to int"
|
||||
msgstr "no se puede convertir Nan a int"
|
||||
|
||||
#: shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
msgid "can't convert address to int"
|
||||
msgstr "no se puede convertir address a int"
|
||||
|
||||
#: py/objint.c
|
||||
msgid "can't convert inf to int"
|
||||
msgstr "no se puede convertir inf en int"
|
||||
|
||||
#: py/obj.c
|
||||
msgid "can't convert to complex"
|
||||
msgstr "no se puede convertir a complejo"
|
||||
|
||||
#: py/obj.c
|
||||
msgid "can't convert to float"
|
||||
msgstr "no se puede convertir a float"
|
||||
|
||||
#: py/obj.c
|
||||
msgid "can't convert to int"
|
||||
msgstr "no se puede convertir a int"
|
||||
msgid "can't convert to %q"
|
||||
msgstr "no puede convertir a %q"
|
||||
|
||||
#: py/objstr.c
|
||||
msgid "can't convert to str implicitly"
|
||||
@ -2459,7 +2455,7 @@ msgstr "la función requiere del argumento por palabra clave '%q'"
|
||||
msgid "function missing required positional argument #%d"
|
||||
msgstr "la función requiere del argumento posicional #%d"
|
||||
|
||||
#: py/argcheck.c py/bc.c py/objnamedtuple.c
|
||||
#: py/argcheck.c py/bc.c py/objnamedtuple.c shared-bindings/time/__init__.c
|
||||
#, c-format
|
||||
msgid "function takes %d positional arguments but %d were given"
|
||||
msgstr "la función toma %d argumentos posicionales pero le fueron dados %d"
|
||||
@ -2508,10 +2504,7 @@ msgstr "relleno (padding) incorrecto"
|
||||
msgid "index is out of bounds"
|
||||
msgstr "el índice está fuera de límites"
|
||||
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c
|
||||
#: ports/cxd56/common-hal/pulseio/PulseIn.c
|
||||
#: ports/nrf/common-hal/pulseio/PulseIn.c
|
||||
#: ports/stm/common-hal/pulseio/PulseIn.c py/obj.c
|
||||
#: py/obj.c
|
||||
msgid "index out of range"
|
||||
msgstr "index fuera de rango"
|
||||
|
||||
@ -2873,9 +2866,8 @@ msgid "number of points must be at least 2"
|
||||
msgstr "el número de puntos debe ser al menos 2"
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "object '%s' is not a tuple or list"
|
||||
msgstr "el objeto '%s' no es una tupla o lista"
|
||||
msgid "object '%q' is not a tuple or list"
|
||||
msgstr "objeto '%q' no es tupla o lista"
|
||||
|
||||
#: py/obj.c
|
||||
msgid "object does not support item assignment"
|
||||
@ -2910,9 +2902,8 @@ msgid "object not iterable"
|
||||
msgstr "objeto no iterable"
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "object of type '%s' has no len()"
|
||||
msgstr "el objeto de tipo '%s' no tiene len()"
|
||||
msgid "object of type '%q' has no len()"
|
||||
msgstr "objeto de tipo '%q' no tiene len()"
|
||||
|
||||
#: py/obj.c
|
||||
msgid "object with buffer protocol required"
|
||||
@ -3004,21 +2995,10 @@ msgstr "el polígono solo se puede registrar en uno de los padres"
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c
|
||||
#: ports/cxd56/common-hal/pulseio/PulseIn.c
|
||||
#: ports/nrf/common-hal/pulseio/PulseIn.c
|
||||
#: ports/stm/common-hal/pulseio/PulseIn.c
|
||||
msgid "pop from an empty PulseIn"
|
||||
msgstr "pop de un PulseIn vacío"
|
||||
|
||||
#: py/objset.c
|
||||
msgid "pop from an empty set"
|
||||
msgstr "pop desde un set vacío"
|
||||
|
||||
#: py/objlist.c
|
||||
msgid "pop from empty list"
|
||||
msgstr "pop desde una lista vacía"
|
||||
|
||||
#: py/objdict.c
|
||||
msgid "popitem(): dictionary is empty"
|
||||
msgstr "popitem(): diccionario vacío"
|
||||
#: ports/stm/common-hal/pulseio/PulseIn.c py/objdict.c py/objlist.c py/objset.c
|
||||
#: shared-bindings/ps2io/Ps2.c
|
||||
msgid "pop from empty %q"
|
||||
msgstr "pop desde %q vacía"
|
||||
|
||||
#: py/objint_mpz.c
|
||||
msgid "pow() 3rd argument cannot be 0"
|
||||
@ -3176,13 +3156,8 @@ msgid "stream operation not supported"
|
||||
msgstr "operación stream no soportada"
|
||||
|
||||
#: py/objstrunicode.c
|
||||
msgid "string index out of range"
|
||||
msgstr "string index fuera de rango"
|
||||
|
||||
#: py/objstrunicode.c
|
||||
#, c-format
|
||||
msgid "string indices must be integers, not %s"
|
||||
msgstr "índices de string deben ser enteros, no %s"
|
||||
msgid "string indices must be integers, not %q"
|
||||
msgstr "índices de cadena deben ser enteros, no %q"
|
||||
|
||||
#: py/stream.c
|
||||
msgid "string not supported; use bytes or bytearray"
|
||||
@ -3192,10 +3167,6 @@ msgstr "string no soportado; usa bytes o bytearray"
|
||||
msgid "struct: cannot index"
|
||||
msgstr "struct: no se puede indexar"
|
||||
|
||||
#: extmod/moductypes.c
|
||||
msgid "struct: index out of range"
|
||||
msgstr "struct: index fuera de rango"
|
||||
|
||||
#: extmod/moductypes.c
|
||||
msgid "struct: no fields"
|
||||
msgstr "struct: sin campos"
|
||||
@ -3264,9 +3235,9 @@ msgstr "demasiados valores para descomprimir (%d esperado)"
|
||||
|
||||
#: extmod/ulab/code/approx/approx.c
|
||||
msgid "trapz is defined for 1D arrays of equal length"
|
||||
msgstr ""
|
||||
msgstr "trapz está definido para arreglos 1D de igual tamaño"
|
||||
|
||||
#: extmod/ulab/code/linalg/linalg.c py/objstr.c
|
||||
#: extmod/ulab/code/linalg/linalg.c
|
||||
msgid "tuple index out of range"
|
||||
msgstr "tuple index fuera de rango"
|
||||
|
||||
@ -3274,10 +3245,6 @@ msgstr "tuple index fuera de rango"
|
||||
msgid "tuple/list has wrong length"
|
||||
msgstr "tupla/lista tiene una longitud incorrecta"
|
||||
|
||||
#: shared-bindings/_pixelbuf/PixelBuf.c
|
||||
msgid "tuple/list required on RHS"
|
||||
msgstr "tuple/lista se require en RHS"
|
||||
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c ports/nrf/common-hal/busio/UART.c
|
||||
#: shared-bindings/busio/UART.c
|
||||
msgid "tx and rx cannot both be None"
|
||||
@ -3333,9 +3300,8 @@ msgid "unknown conversion specifier %c"
|
||||
msgstr "especificador de conversión %c desconocido"
|
||||
|
||||
#: py/objstr.c
|
||||
#, c-format
|
||||
msgid "unknown format code '%c' for object of type '%s'"
|
||||
msgstr "codigo format desconocido '%c' para el typo de objeto '%s'"
|
||||
msgid "unknown format code '%c' for object of type '%q'"
|
||||
msgstr "formato de código desconocicdo '%c' para objeto de tipo '%q'"
|
||||
|
||||
#: py/compile.c
|
||||
msgid "unknown type"
|
||||
@ -3374,16 +3340,16 @@ msgid "unsupported format character '%c' (0x%x) at index %d"
|
||||
msgstr "carácter no soportado '%c' (0x%x) en índice %d"
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "unsupported type for %q: '%s'"
|
||||
msgstr "tipo no soportado para %q: '%s'"
|
||||
msgid "unsupported type for %q: '%q'"
|
||||
msgstr "tipo no soportado para %q: '%q'"
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "unsupported type for operator"
|
||||
msgstr "tipo de operador no soportado"
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "unsupported types for %q: '%s', '%s'"
|
||||
msgstr "tipos no soportados para %q: '%s', '%s'"
|
||||
msgid "unsupported types for %q: '%q', '%q'"
|
||||
msgstr "tipos no soportados para %q: '%q', '%q'"
|
||||
|
||||
#: py/objint.c
|
||||
#, c-format
|
||||
@ -3396,7 +3362,7 @@ msgstr "value_count debe ser > 0"
|
||||
|
||||
#: extmod/ulab/code/linalg/linalg.c
|
||||
msgid "vectors must have same lengths"
|
||||
msgstr ""
|
||||
msgstr "los vectores deben tener el mismo tamaño"
|
||||
|
||||
#: shared-bindings/watchdog/WatchDogTimer.c
|
||||
msgid "watchdog timeout must be greater than 0"
|
||||
@ -3462,15 +3428,130 @@ 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 "tuple/list required on RHS"
|
||||
#~ msgstr "tuple/lista se require en RHS"
|
||||
|
||||
#~ msgid "%q indices must be integers, not %s"
|
||||
#~ msgstr "%q indices deben ser enteros, no %s"
|
||||
|
||||
#~ msgid "'%s' object cannot assign attribute '%q'"
|
||||
#~ msgstr "El objeto '%s' no puede asignar al atributo '%q'"
|
||||
|
||||
#~ msgid "'%s' object does not support '%q'"
|
||||
#~ msgstr "El objeto '%s' no admite '%q'"
|
||||
|
||||
#~ msgid "'%s' object does not support item assignment"
|
||||
#~ msgstr "el objeto '%s' no soporta la asignación de elementos"
|
||||
|
||||
#~ msgid "'%s' object does not support item deletion"
|
||||
#~ msgstr "objeto '%s' no soporta la eliminación de elementos"
|
||||
|
||||
#~ msgid "'%s' object has no attribute '%q'"
|
||||
#~ msgstr "objeto '%s' no tiene atributo '%q'"
|
||||
|
||||
#~ msgid "'%s' object is not an iterator"
|
||||
#~ msgstr "objeto '%s' no es un iterator"
|
||||
|
||||
#~ msgid "'%s' object is not callable"
|
||||
#~ msgstr "objeto '%s' no puede ser llamado"
|
||||
|
||||
#~ msgid "'%s' object is not iterable"
|
||||
#~ msgstr "objeto '%s' no es iterable"
|
||||
|
||||
#~ msgid "'%s' object is not subscriptable"
|
||||
#~ msgstr "el objeto '%s' no es suscriptable"
|
||||
|
||||
#~ msgid "Invalid I2C pin selection"
|
||||
#~ msgstr "Selección de pin I2C no válida"
|
||||
|
||||
#~ msgid "Invalid SPI pin selection"
|
||||
#~ msgstr "Selección de pin SPI no válida"
|
||||
|
||||
#~ msgid "Invalid UART pin selection"
|
||||
#~ msgstr "Selección de pin UART no válida"
|
||||
|
||||
#~ msgid "Pop from an empty Ps2 buffer"
|
||||
#~ msgstr "Pop de un buffer Ps2 vacio"
|
||||
|
||||
#~ msgid "Running in safe mode! Auto-reload is off.\n"
|
||||
#~ msgstr "Ejecutando en modo seguro! La auto-recarga esta deshabilitada.\n"
|
||||
|
||||
#~ msgid "Running in safe mode! Not running saved code.\n"
|
||||
#~ msgstr ""
|
||||
#~ "Ejecutando en modo seguro! No se esta ejecutando el código guardado.\n"
|
||||
|
||||
#~ msgid "__init__() should return None, not '%s'"
|
||||
#~ msgstr "__init__() deberia devolver None, no '%s'"
|
||||
|
||||
#~ msgid "can't convert %s to complex"
|
||||
#~ msgstr "no se puede convertir %s a complejo"
|
||||
|
||||
#~ msgid "can't convert %s to float"
|
||||
#~ msgstr "no se puede convertir %s a float"
|
||||
|
||||
#~ msgid "can't convert %s to int"
|
||||
#~ msgstr "no se puede convertir %s a int"
|
||||
|
||||
#~ msgid "can't convert NaN to int"
|
||||
#~ msgstr "no se puede convertir Nan a int"
|
||||
|
||||
#~ msgid "can't convert address to int"
|
||||
#~ msgstr "no se puede convertir address a int"
|
||||
|
||||
#~ msgid "can't convert inf to int"
|
||||
#~ msgstr "no se puede convertir inf en int"
|
||||
|
||||
#~ msgid "can't convert to complex"
|
||||
#~ msgstr "no se puede convertir a complejo"
|
||||
|
||||
#~ msgid "can't convert to float"
|
||||
#~ msgstr "no se puede convertir a float"
|
||||
|
||||
#~ msgid "can't convert to int"
|
||||
#~ msgstr "no se puede convertir a int"
|
||||
|
||||
#~ msgid "object '%s' is not a tuple or list"
|
||||
#~ msgstr "el objeto '%s' no es una tupla o lista"
|
||||
|
||||
#~ msgid "object of type '%s' has no len()"
|
||||
#~ msgstr "el objeto de tipo '%s' no tiene len()"
|
||||
|
||||
#~ msgid "pop from an empty PulseIn"
|
||||
#~ msgstr "pop de un PulseIn vacío"
|
||||
|
||||
#~ msgid "pop from an empty set"
|
||||
#~ msgstr "pop desde un set vacío"
|
||||
|
||||
#~ msgid "pop from empty list"
|
||||
#~ msgstr "pop desde una lista vacía"
|
||||
|
||||
#~ msgid "popitem(): dictionary is empty"
|
||||
#~ msgstr "popitem(): diccionario vacío"
|
||||
|
||||
#~ msgid "string index out of range"
|
||||
#~ msgstr "string index fuera de rango"
|
||||
|
||||
#~ msgid "string indices must be integers, not %s"
|
||||
#~ msgstr "índices de string deben ser enteros, no %s"
|
||||
|
||||
#~ msgid "struct: index out of range"
|
||||
#~ msgstr "struct: index fuera de rango"
|
||||
|
||||
#~ msgid "unknown format code '%c' for object of type '%s'"
|
||||
#~ msgstr "codigo format desconocido '%c' para el typo de objeto '%s'"
|
||||
|
||||
#~ msgid "unsupported type for %q: '%s'"
|
||||
#~ msgstr "tipo no soportado para %q: '%s'"
|
||||
|
||||
#~ msgid "unsupported types for %q: '%s', '%s'"
|
||||
#~ msgstr "tipos no soportados para %q: '%s', '%s'"
|
||||
|
||||
#~ msgid "'%q' object is not bytes-like"
|
||||
#~ msgstr "el objeto '%q' no es similar a bytes"
|
||||
|
||||
#~ msgid "'async for' or 'async with' outside async function"
|
||||
#~ msgstr "'async for' o 'async with' fuera de la función async"
|
||||
|
||||
#~ msgid "PulseOut not supported on this chip"
|
||||
#~ msgstr "PulseOut no es compatible con este chip"
|
||||
|
||||
#~ msgid "PulseIn not supported on this chip"
|
||||
#~ msgstr "PulseIn no es compatible con este chip"
|
||||
|
||||
@ -3717,8 +3798,8 @@ msgstr "zi debe ser una forma (n_section,2)"
|
||||
#~ "Only monochrome, indexed 8bpp, and 16bpp or greater BMPs supported: %d "
|
||||
#~ "bpp given"
|
||||
#~ msgstr ""
|
||||
#~ "Solo se admiten BMP monocromos, indexados de 8bpp y 16bpp o superiores:% "
|
||||
#~ "d bppdado"
|
||||
#~ "Solo se admiten BMP monocromos, indexados de 8bpp y 16bpp o superiores:%d "
|
||||
#~ "bppdado"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "Only slices with step=1 (aka None) are supported"
|
||||
|
378
locale/fil.po
378
locale/fil.po
@ -5,7 +5,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-07-28 16:57-0500\n"
|
||||
"POT-Creation-Date: 2020-08-18 11:19-0400\n"
|
||||
"PO-Revision-Date: 2018-12-20 22:15-0800\n"
|
||||
"Last-Translator: Timothy <me@timothygarcia.ca>\n"
|
||||
"Language-Team: fil\n"
|
||||
@ -64,13 +64,17 @@ msgstr ""
|
||||
msgid "%q in use"
|
||||
msgstr "%q ay ginagamit"
|
||||
|
||||
#: py/obj.c
|
||||
#: extmod/moductypes.c ports/atmel-samd/common-hal/pulseio/PulseIn.c
|
||||
#: ports/cxd56/common-hal/pulseio/PulseIn.c
|
||||
#: ports/nrf/common-hal/pulseio/PulseIn.c
|
||||
#: ports/stm/common-hal/pulseio/PulseIn.c py/obj.c py/objstr.c
|
||||
#: py/objstrunicode.c
|
||||
msgid "%q index out of range"
|
||||
msgstr "%q indeks wala sa sakop"
|
||||
|
||||
#: py/obj.c
|
||||
msgid "%q indices must be integers, not %s"
|
||||
msgstr "%q indeks ay dapat integers, hindi %s"
|
||||
msgid "%q indices must be integers, not %q"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/vectorio/Polygon.c
|
||||
msgid "%q list must be a list"
|
||||
@ -111,6 +115,42 @@ msgstr ""
|
||||
msgid "'%q' argument required"
|
||||
msgstr "'%q' argument kailangan"
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%q' object cannot assign attribute '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/proto.c
|
||||
msgid "'%q' object does not support '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
msgid "'%q' object does not support item assignment"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
msgid "'%q' object does not support item deletion"
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%q' object has no attribute '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%q' object is not an iterator"
|
||||
msgstr ""
|
||||
|
||||
#: py/objtype.c py/runtime.c
|
||||
msgid "'%q' object is not callable"
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%q' object is not iterable"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
msgid "'%q' object is not subscriptable"
|
||||
msgstr ""
|
||||
|
||||
#: py/emitinlinethumb.c py/emitinlinextensa.c
|
||||
#, c-format
|
||||
msgid "'%s' expects a label"
|
||||
@ -161,48 +201,6 @@ msgstr "'%s' integer %d ay wala sa sakop ng %d..%d"
|
||||
msgid "'%s' integer 0x%x does not fit in mask 0x%x"
|
||||
msgstr "'%s' integer 0x%x ay wala sa mask na sakop ng 0x%x"
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%s' object cannot assign attribute '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/proto.c
|
||||
msgid "'%s' object does not support '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "'%s' object does not support item assignment"
|
||||
msgstr "'%s' object hindi sumusuporta ng item assignment"
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "'%s' object does not support item deletion"
|
||||
msgstr "'%s' object ay hindi sumusuporta sa pagtanggal ng item"
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%s' object has no attribute '%q'"
|
||||
msgstr "'%s' object ay walang attribute '%q'"
|
||||
|
||||
#: py/runtime.c
|
||||
#, c-format
|
||||
msgid "'%s' object is not an iterator"
|
||||
msgstr "'%s' object ay hindi iterator"
|
||||
|
||||
#: py/objtype.c py/runtime.c
|
||||
#, c-format
|
||||
msgid "'%s' object is not callable"
|
||||
msgstr "'%s' object hindi matatawag"
|
||||
|
||||
#: py/runtime.c
|
||||
#, c-format
|
||||
msgid "'%s' object is not iterable"
|
||||
msgstr "'%s' object ay hindi ma i-iterable"
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "'%s' object is not subscriptable"
|
||||
msgstr "'%s' object ay hindi maaaring i-subscript"
|
||||
|
||||
#: py/objstr.c
|
||||
msgid "'=' alignment not allowed in string format specifier"
|
||||
msgstr "'=' Gindi pinapayagan ang alignment sa pag specify ng string format"
|
||||
@ -453,6 +451,10 @@ msgstr ""
|
||||
msgid "Buffer length must be a multiple of 512"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c
|
||||
msgid "Buffer must be a multiple of 512 bytes"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/bitbangio/I2C.c shared-bindings/busio/I2C.c
|
||||
msgid "Buffer must be at least length 1"
|
||||
msgstr "Buffer dapat ay hindi baba sa 1 na haba"
|
||||
@ -646,6 +648,10 @@ msgstr ""
|
||||
msgid "Could not restart PWM"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/_bleio/Adapter.c
|
||||
msgid "Could not set address"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/pulseio/PWMOut.c
|
||||
msgid "Could not start PWM"
|
||||
msgstr ""
|
||||
@ -748,7 +754,7 @@ msgstr "May pagkakamali sa REGEX"
|
||||
|
||||
#: shared-bindings/aesio/aes.c shared-bindings/busio/SPI.c
|
||||
#: shared-bindings/microcontroller/Pin.c
|
||||
#: shared-bindings/neopixel_write/__init__.c shared-bindings/pulseio/PulseOut.c
|
||||
#: shared-bindings/neopixel_write/__init__.c
|
||||
#: shared-bindings/terminalio/Terminal.c
|
||||
msgid "Expected a %q"
|
||||
msgstr "Umasa ng %q"
|
||||
@ -833,6 +839,11 @@ msgstr ""
|
||||
msgid "File exists"
|
||||
msgstr "Mayroong file"
|
||||
|
||||
#: shared-module/framebufferio/FramebufferDisplay.c
|
||||
#, c-format
|
||||
msgid "Framebuffer requires %d bytes"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c
|
||||
msgid "Frequency captured is above capability. Capture Paused."
|
||||
msgstr ""
|
||||
@ -857,7 +868,7 @@ msgid "Group full"
|
||||
msgstr "Puno ang group"
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/I2C.c
|
||||
#: ports/stm/common-hal/busio/SPI.c
|
||||
#: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/sdioio/SDCard.c
|
||||
msgid "Hardware busy, try alternative pins"
|
||||
msgstr ""
|
||||
|
||||
@ -873,6 +884,10 @@ msgstr "I/O operasyon sa saradong file"
|
||||
msgid "I2C Init Error"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/audiobusio/I2SOut.c
|
||||
msgid "I2SOut not available"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
#, c-format
|
||||
msgid "IV must be %d bytes long"
|
||||
@ -920,6 +935,11 @@ msgstr ""
|
||||
msgid "Invalid %q pin"
|
||||
msgstr "Mali ang %q pin"
|
||||
|
||||
#: ports/stm/common-hal/busio/I2C.c ports/stm/common-hal/busio/SPI.c
|
||||
#: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/sdioio/SDCard.c
|
||||
msgid "Invalid %q pin selection"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/analogio/AnalogIn.c
|
||||
msgid "Invalid ADC Unit value"
|
||||
msgstr ""
|
||||
@ -932,24 +952,12 @@ msgstr "Mali ang BMP file"
|
||||
msgid "Invalid DAC pin supplied"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/busio/I2C.c
|
||||
msgid "Invalid I2C pin selection"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/pulseio/PWMOut.c
|
||||
#: ports/cxd56/common-hal/pulseio/PWMOut.c
|
||||
#: ports/nrf/common-hal/pulseio/PWMOut.c shared-bindings/pulseio/PWMOut.c
|
||||
msgid "Invalid PWM frequency"
|
||||
msgstr "Mali ang PWM frequency"
|
||||
|
||||
#: ports/stm/common-hal/busio/SPI.c
|
||||
msgid "Invalid SPI pin selection"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/busio/UART.c
|
||||
msgid "Invalid UART pin selection"
|
||||
msgstr ""
|
||||
|
||||
#: py/moduerrno.c shared-module/rgbmatrix/RGBMatrix.c
|
||||
msgid "Invalid argument"
|
||||
msgstr "Maling argumento"
|
||||
@ -1246,6 +1254,10 @@ msgstr "Hindi maka connect sa AP"
|
||||
msgid "Not playing"
|
||||
msgstr "Hindi playing"
|
||||
|
||||
#: main.c
|
||||
msgid "Not running saved code.\n"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/util.c
|
||||
msgid ""
|
||||
"Object has been deinitialized and can no longer be used. Create a new object."
|
||||
@ -1334,8 +1346,13 @@ msgstr "Kasama ang kung ano pang modules na sa filesystem\n"
|
||||
msgid "Polygon needs at least 3 points"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/ps2io/Ps2.c
|
||||
msgid "Pop from an empty Ps2 buffer"
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseOut.c
|
||||
#: ports/cxd56/common-hal/pulseio/PulseOut.c
|
||||
#: ports/nrf/common-hal/pulseio/PulseOut.c
|
||||
#: ports/stm/common-hal/pulseio/PulseOut.c
|
||||
msgid ""
|
||||
"Port does not accept pins or frequency. "
|
||||
"Construct and pass a PWMOut Carrier instead"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/_bleio/Adapter.c
|
||||
@ -1352,6 +1369,10 @@ msgstr ""
|
||||
msgid "Pull not used when direction is output."
|
||||
msgstr "Pull hindi ginagamit kapag ang direksyon ay output."
|
||||
|
||||
#: ports/stm/ref/pulseout-pre-timeralloc.c
|
||||
msgid "PulseOut not supported on this chip"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/os/__init__.c
|
||||
msgid "RNG DeInit Error"
|
||||
msgstr ""
|
||||
@ -1413,12 +1434,8 @@ msgid "Row entry must be digitalio.DigitalInOut"
|
||||
msgstr ""
|
||||
|
||||
#: main.c
|
||||
msgid "Running in safe mode! Auto-reload is off.\n"
|
||||
msgstr "Tumatakbo sa safe mode! Awtomatikong pag re-reload ay OFF.\n"
|
||||
|
||||
#: main.c
|
||||
msgid "Running in safe mode! Not running saved code.\n"
|
||||
msgstr "Tumatakbo sa safe mode! Hindi tumatakbo ang nai-save na code.\n"
|
||||
msgid "Running in safe mode! "
|
||||
msgstr ""
|
||||
|
||||
#: shared-module/sdcardio/SDCard.c
|
||||
msgid "SD card CSD format not supported"
|
||||
@ -1429,6 +1446,16 @@ msgstr ""
|
||||
msgid "SDA or SCL needs a pull up"
|
||||
msgstr "Kailangan ng pull up resistors ang SDA o SCL"
|
||||
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c
|
||||
#, c-format
|
||||
msgid "SDIO GetCardInfo Error %d"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c
|
||||
#, c-format
|
||||
msgid "SDIO Init Error %d"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/busio/SPI.c
|
||||
msgid "SPI Init Error"
|
||||
msgstr ""
|
||||
@ -1788,9 +1815,8 @@ msgid "__init__() should return None"
|
||||
msgstr "__init __ () dapat magbalik na None"
|
||||
|
||||
#: py/objtype.c
|
||||
#, c-format
|
||||
msgid "__init__() should return None, not '%s'"
|
||||
msgstr "__init__() dapat magbalink na None, hindi '%s'"
|
||||
msgid "__init__() should return None, not '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/objobject.c
|
||||
msgid "__new__ arg must be a user-type"
|
||||
@ -1944,7 +1970,7 @@ msgstr "hindi sinusuportahan ang bytes > 8 bits"
|
||||
msgid "bytes value out of range"
|
||||
msgstr "bytes value wala sa sakop"
|
||||
|
||||
#: ports/atmel-samd/bindings/samd/Clock.c
|
||||
#: ports/atmel-samd/bindings/samd/Clock.c ports/atmel-samd/common-hal/rtc/RTC.c
|
||||
msgid "calibration is out of range"
|
||||
msgstr "kalibrasion ay wala sa sakop"
|
||||
|
||||
@ -1977,48 +2003,18 @@ msgstr ""
|
||||
msgid "can't assign to expression"
|
||||
msgstr "hindi ma i-assign sa expression"
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "can't convert %s to complex"
|
||||
msgstr "hindi ma-convert %s sa complex"
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "can't convert %s to float"
|
||||
msgstr "hindi ma-convert %s sa int"
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "can't convert %s to int"
|
||||
msgstr "hindi ma-convert %s sa int"
|
||||
#: py/obj.c py/objint.c shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
#: shared-module/_pixelbuf/PixelBuf.c
|
||||
msgid "can't convert %q to %q"
|
||||
msgstr ""
|
||||
|
||||
#: py/objstr.c
|
||||
msgid "can't convert '%q' object to %q implicitly"
|
||||
msgstr "hindi maaaring i-convert ang '%q' na bagay sa %q nang walang pahiwatig"
|
||||
|
||||
#: py/objint.c
|
||||
msgid "can't convert NaN to int"
|
||||
msgstr "hindi ma i-convert NaN sa int"
|
||||
|
||||
#: shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
msgid "can't convert address to int"
|
||||
msgstr "hindi ma i-convert ang address sa INT"
|
||||
|
||||
#: py/objint.c
|
||||
msgid "can't convert inf to int"
|
||||
msgstr "hindi ma i-convert inf sa int"
|
||||
|
||||
#: py/obj.c
|
||||
msgid "can't convert to complex"
|
||||
msgstr "hindi ma-convert sa complex"
|
||||
|
||||
#: py/obj.c
|
||||
msgid "can't convert to float"
|
||||
msgstr "hindi ma-convert sa float"
|
||||
|
||||
#: py/obj.c
|
||||
msgid "can't convert to int"
|
||||
msgstr "hindi ma-convert sa int"
|
||||
msgid "can't convert to %q"
|
||||
msgstr ""
|
||||
|
||||
#: py/objstr.c
|
||||
msgid "can't convert to str implicitly"
|
||||
@ -2051,7 +2047,7 @@ msgstr "hindi puede ang maraming *x"
|
||||
|
||||
#: py/emitnative.c
|
||||
msgid "can't implicitly convert '%q' to 'bool'"
|
||||
msgstr "hindi maaaring ma-convert ang '% qt' sa 'bool'"
|
||||
msgstr "hindi maaaring ma-convert ang ' %q' sa 'bool'"
|
||||
|
||||
#: py/emitnative.c
|
||||
msgid "can't load from '%q'"
|
||||
@ -2435,7 +2431,7 @@ msgstr "function nangangailangan ng keyword argument '%q'"
|
||||
msgid "function missing required positional argument #%d"
|
||||
msgstr "function nangangailangan ng positional argument #%d"
|
||||
|
||||
#: py/argcheck.c py/bc.c py/objnamedtuple.c
|
||||
#: py/argcheck.c py/bc.c py/objnamedtuple.c shared-bindings/time/__init__.c
|
||||
#, c-format
|
||||
msgid "function takes %d positional arguments but %d were given"
|
||||
msgstr ""
|
||||
@ -2485,10 +2481,7 @@ msgstr "mali ang padding"
|
||||
msgid "index is out of bounds"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c
|
||||
#: ports/cxd56/common-hal/pulseio/PulseIn.c
|
||||
#: ports/nrf/common-hal/pulseio/PulseIn.c
|
||||
#: ports/stm/common-hal/pulseio/PulseIn.c py/obj.c
|
||||
#: py/obj.c
|
||||
msgid "index out of range"
|
||||
msgstr "index wala sa sakop"
|
||||
|
||||
@ -2848,9 +2841,8 @@ msgid "number of points must be at least 2"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "object '%s' is not a tuple or list"
|
||||
msgstr "object '%s' ay hindi tuple o list"
|
||||
msgid "object '%q' is not a tuple or list"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
msgid "object does not support item assignment"
|
||||
@ -2885,9 +2877,8 @@ msgid "object not iterable"
|
||||
msgstr "object hindi ma i-iterable"
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "object of type '%s' has no len()"
|
||||
msgstr "object na type '%s' walang len()"
|
||||
msgid "object of type '%q' has no len()"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
msgid "object with buffer protocol required"
|
||||
@ -2981,21 +2972,10 @@ msgstr ""
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c
|
||||
#: ports/cxd56/common-hal/pulseio/PulseIn.c
|
||||
#: ports/nrf/common-hal/pulseio/PulseIn.c
|
||||
#: ports/stm/common-hal/pulseio/PulseIn.c
|
||||
msgid "pop from an empty PulseIn"
|
||||
msgstr "pop mula sa walang laman na PulseIn"
|
||||
|
||||
#: py/objset.c
|
||||
msgid "pop from an empty set"
|
||||
msgstr "pop sa walang laman na set"
|
||||
|
||||
#: py/objlist.c
|
||||
msgid "pop from empty list"
|
||||
msgstr "pop galing sa walang laman na list"
|
||||
|
||||
#: py/objdict.c
|
||||
msgid "popitem(): dictionary is empty"
|
||||
msgstr "popitem(): dictionary ay walang laman"
|
||||
#: ports/stm/common-hal/pulseio/PulseIn.c py/objdict.c py/objlist.c py/objset.c
|
||||
#: shared-bindings/ps2io/Ps2.c
|
||||
msgid "pop from empty %q"
|
||||
msgstr ""
|
||||
|
||||
#: py/objint_mpz.c
|
||||
msgid "pow() 3rd argument cannot be 0"
|
||||
@ -3154,13 +3134,8 @@ msgid "stream operation not supported"
|
||||
msgstr "stream operation hindi sinusuportahan"
|
||||
|
||||
#: py/objstrunicode.c
|
||||
msgid "string index out of range"
|
||||
msgstr "indeks ng string wala sa sakop"
|
||||
|
||||
#: py/objstrunicode.c
|
||||
#, c-format
|
||||
msgid "string indices must be integers, not %s"
|
||||
msgstr "ang indeks ng string ay dapat na integer, hindi %s"
|
||||
msgid "string indices must be integers, not %q"
|
||||
msgstr ""
|
||||
|
||||
#: py/stream.c
|
||||
msgid "string not supported; use bytes or bytearray"
|
||||
@ -3170,10 +3145,6 @@ msgstr "string hindi supportado; gumamit ng bytes o kaya bytearray"
|
||||
msgid "struct: cannot index"
|
||||
msgstr "struct: hindi ma-index"
|
||||
|
||||
#: extmod/moductypes.c
|
||||
msgid "struct: index out of range"
|
||||
msgstr "struct: index hindi maabot"
|
||||
|
||||
#: extmod/moductypes.c
|
||||
msgid "struct: no fields"
|
||||
msgstr "struct: walang fields"
|
||||
@ -3244,7 +3215,7 @@ msgstr "masyadong maraming values para i-unpact (umaasa ng %d)"
|
||||
msgid "trapz is defined for 1D arrays of equal length"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/linalg/linalg.c py/objstr.c
|
||||
#: extmod/ulab/code/linalg/linalg.c
|
||||
msgid "tuple index out of range"
|
||||
msgstr "indeks ng tuple wala sa sakop"
|
||||
|
||||
@ -3252,10 +3223,6 @@ msgstr "indeks ng tuple wala sa sakop"
|
||||
msgid "tuple/list has wrong length"
|
||||
msgstr "mali ang haba ng tuple/list"
|
||||
|
||||
#: shared-bindings/_pixelbuf/PixelBuf.c
|
||||
msgid "tuple/list required on RHS"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c ports/nrf/common-hal/busio/UART.c
|
||||
#: shared-bindings/busio/UART.c
|
||||
msgid "tx and rx cannot both be None"
|
||||
@ -3311,9 +3278,8 @@ msgid "unknown conversion specifier %c"
|
||||
msgstr "hindi alam ang conversion specifier na %c"
|
||||
|
||||
#: py/objstr.c
|
||||
#, c-format
|
||||
msgid "unknown format code '%c' for object of type '%s'"
|
||||
msgstr "hindi alam ang format code '%c' para sa object na ang type ay '%s'"
|
||||
msgid "unknown format code '%c' for object of type '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/compile.c
|
||||
msgid "unknown type"
|
||||
@ -3352,16 +3318,16 @@ msgid "unsupported format character '%c' (0x%x) at index %d"
|
||||
msgstr "hindi sinusuportahan ang format character na '%c' (0x%x) sa index %d"
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "unsupported type for %q: '%s'"
|
||||
msgstr "hindi sinusuportahang type para sa %q: '%s'"
|
||||
msgid "unsupported type for %q: '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "unsupported type for operator"
|
||||
msgstr "hindi sinusuportahang type para sa operator"
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "unsupported types for %q: '%s', '%s'"
|
||||
msgstr "hindi sinusuportahang type para sa %q: '%s', '%s'"
|
||||
msgid "unsupported types for %q: '%q', '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/objint.c
|
||||
#, c-format
|
||||
@ -3442,6 +3408,102 @@ msgstr ""
|
||||
msgid "zi must be of shape (n_section, 2)"
|
||||
msgstr ""
|
||||
|
||||
#~ msgid "%q indices must be integers, not %s"
|
||||
#~ msgstr "%q indeks ay dapat integers, hindi %s"
|
||||
|
||||
#~ msgid "'%s' object does not support item assignment"
|
||||
#~ msgstr "'%s' object hindi sumusuporta ng item assignment"
|
||||
|
||||
#~ msgid "'%s' object does not support item deletion"
|
||||
#~ msgstr "'%s' object ay hindi sumusuporta sa pagtanggal ng item"
|
||||
|
||||
#~ msgid "'%s' object has no attribute '%q'"
|
||||
#~ msgstr "'%s' object ay walang attribute '%q'"
|
||||
|
||||
#~ msgid "'%s' object is not an iterator"
|
||||
#~ msgstr "'%s' object ay hindi iterator"
|
||||
|
||||
#~ msgid "'%s' object is not callable"
|
||||
#~ msgstr "'%s' object hindi matatawag"
|
||||
|
||||
#~ msgid "'%s' object is not iterable"
|
||||
#~ msgstr "'%s' object ay hindi ma i-iterable"
|
||||
|
||||
#~ msgid "'%s' object is not subscriptable"
|
||||
#~ msgstr "'%s' object ay hindi maaaring i-subscript"
|
||||
|
||||
#~ msgid "Running in safe mode! Auto-reload is off.\n"
|
||||
#~ msgstr "Tumatakbo sa safe mode! Awtomatikong pag re-reload ay OFF.\n"
|
||||
|
||||
#~ msgid "Running in safe mode! Not running saved code.\n"
|
||||
#~ msgstr "Tumatakbo sa safe mode! Hindi tumatakbo ang nai-save na code.\n"
|
||||
|
||||
#~ msgid "__init__() should return None, not '%s'"
|
||||
#~ msgstr "__init__() dapat magbalink na None, hindi '%s'"
|
||||
|
||||
#~ msgid "can't convert %s to complex"
|
||||
#~ msgstr "hindi ma-convert %s sa complex"
|
||||
|
||||
#~ msgid "can't convert %s to float"
|
||||
#~ msgstr "hindi ma-convert %s sa int"
|
||||
|
||||
#~ msgid "can't convert %s to int"
|
||||
#~ msgstr "hindi ma-convert %s sa int"
|
||||
|
||||
#~ msgid "can't convert NaN to int"
|
||||
#~ msgstr "hindi ma i-convert NaN sa int"
|
||||
|
||||
#~ msgid "can't convert address to int"
|
||||
#~ msgstr "hindi ma i-convert ang address sa INT"
|
||||
|
||||
#~ msgid "can't convert inf to int"
|
||||
#~ msgstr "hindi ma i-convert inf sa int"
|
||||
|
||||
#~ msgid "can't convert to complex"
|
||||
#~ msgstr "hindi ma-convert sa complex"
|
||||
|
||||
#~ msgid "can't convert to float"
|
||||
#~ msgstr "hindi ma-convert sa float"
|
||||
|
||||
#~ msgid "can't convert to int"
|
||||
#~ msgstr "hindi ma-convert sa int"
|
||||
|
||||
#~ msgid "object '%s' is not a tuple or list"
|
||||
#~ msgstr "object '%s' ay hindi tuple o list"
|
||||
|
||||
#~ msgid "object of type '%s' has no len()"
|
||||
#~ msgstr "object na type '%s' walang len()"
|
||||
|
||||
#~ msgid "pop from an empty PulseIn"
|
||||
#~ msgstr "pop mula sa walang laman na PulseIn"
|
||||
|
||||
#~ msgid "pop from an empty set"
|
||||
#~ msgstr "pop sa walang laman na set"
|
||||
|
||||
#~ msgid "pop from empty list"
|
||||
#~ msgstr "pop galing sa walang laman na list"
|
||||
|
||||
#~ msgid "popitem(): dictionary is empty"
|
||||
#~ msgstr "popitem(): dictionary ay walang laman"
|
||||
|
||||
#~ msgid "string index out of range"
|
||||
#~ msgstr "indeks ng string wala sa sakop"
|
||||
|
||||
#~ msgid "string indices must be integers, not %s"
|
||||
#~ msgstr "ang indeks ng string ay dapat na integer, hindi %s"
|
||||
|
||||
#~ msgid "struct: index out of range"
|
||||
#~ msgstr "struct: index hindi maabot"
|
||||
|
||||
#~ msgid "unknown format code '%c' for object of type '%s'"
|
||||
#~ msgstr "hindi alam ang format code '%c' para sa object na ang type ay '%s'"
|
||||
|
||||
#~ msgid "unsupported type for %q: '%s'"
|
||||
#~ msgstr "hindi sinusuportahang type para sa %q: '%s'"
|
||||
|
||||
#~ msgid "unsupported types for %q: '%s', '%s'"
|
||||
#~ msgstr "hindi sinusuportahang type para sa %q: '%s', '%s'"
|
||||
|
||||
#~ msgid "AP required"
|
||||
#~ msgstr "AP kailangan"
|
||||
|
||||
|
403
locale/fr.po
403
locale/fr.po
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: 0.1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-07-28 16:57-0500\n"
|
||||
"POT-Creation-Date: 2020-08-18 11:19-0400\n"
|
||||
"PO-Revision-Date: 2020-07-27 21:27+0000\n"
|
||||
"Last-Translator: Nathan <bonnemainsnathan@gmail.com>\n"
|
||||
"Language: fr\n"
|
||||
@ -76,13 +76,17 @@ msgstr "Échec de %q : %d"
|
||||
msgid "%q in use"
|
||||
msgstr "%q utilisé"
|
||||
|
||||
#: py/obj.c
|
||||
#: extmod/moductypes.c ports/atmel-samd/common-hal/pulseio/PulseIn.c
|
||||
#: ports/cxd56/common-hal/pulseio/PulseIn.c
|
||||
#: ports/nrf/common-hal/pulseio/PulseIn.c
|
||||
#: ports/stm/common-hal/pulseio/PulseIn.c py/obj.c py/objstr.c
|
||||
#: py/objstrunicode.c
|
||||
msgid "%q index out of range"
|
||||
msgstr "index %q hors gamme"
|
||||
|
||||
#: py/obj.c
|
||||
msgid "%q indices must be integers, not %s"
|
||||
msgstr "les indices %q doivent être des entiers, pas %s"
|
||||
msgid "%q indices must be integers, not %q"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/vectorio/Polygon.c
|
||||
msgid "%q list must be a list"
|
||||
@ -120,6 +124,42 @@ msgstr "%q() prend %d arguments positionnels mais %d ont été donnés"
|
||||
msgid "'%q' argument required"
|
||||
msgstr "'%q' argument requis"
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%q' object cannot assign attribute '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/proto.c
|
||||
msgid "'%q' object does not support '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
msgid "'%q' object does not support item assignment"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
msgid "'%q' object does not support item deletion"
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%q' object has no attribute '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%q' object is not an iterator"
|
||||
msgstr ""
|
||||
|
||||
#: py/objtype.c py/runtime.c
|
||||
msgid "'%q' object is not callable"
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%q' object is not iterable"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
msgid "'%q' object is not subscriptable"
|
||||
msgstr ""
|
||||
|
||||
#: py/emitinlinethumb.c py/emitinlinextensa.c
|
||||
#, c-format
|
||||
msgid "'%s' expects a label"
|
||||
@ -170,48 +210,6 @@ msgstr "'%s' l'entier %d n'est pas dans la gamme %d..%d"
|
||||
msgid "'%s' integer 0x%x does not fit in mask 0x%x"
|
||||
msgstr "'%s' l'entier 0x%x ne correspond pas au masque 0x%x"
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%s' object cannot assign attribute '%q'"
|
||||
msgstr "L'objet '%s' ne peut pas attribuer '%q'"
|
||||
|
||||
#: py/proto.c
|
||||
msgid "'%s' object does not support '%q'"
|
||||
msgstr "L'objet '%s' ne prend pas en charge '%q'"
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "'%s' object does not support item assignment"
|
||||
msgstr "l'objet '%s' ne supporte pas l'assignation d'éléments"
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "'%s' object does not support item deletion"
|
||||
msgstr "l'objet '%s' ne supporte pas la suppression d'éléments"
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%s' object has no attribute '%q'"
|
||||
msgstr "l'objet '%s' n'a pas d'attribut '%q'"
|
||||
|
||||
#: py/runtime.c
|
||||
#, c-format
|
||||
msgid "'%s' object is not an iterator"
|
||||
msgstr "l'objet '%s' n'est pas un itérateur"
|
||||
|
||||
#: py/objtype.c py/runtime.c
|
||||
#, c-format
|
||||
msgid "'%s' object is not callable"
|
||||
msgstr "l'objet '%s' n'est pas appelable"
|
||||
|
||||
#: py/runtime.c
|
||||
#, c-format
|
||||
msgid "'%s' object is not iterable"
|
||||
msgstr "l'objet '%s' n'est pas itérable"
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "'%s' object is not subscriptable"
|
||||
msgstr "l'objet '%s' n'est pas sous-scriptable"
|
||||
|
||||
#: py/objstr.c
|
||||
msgid "'=' alignment not allowed in string format specifier"
|
||||
msgstr "'=' alignement non autorisé dans la spéc. de format de chaîne"
|
||||
@ -464,6 +462,10 @@ msgstr "La longueur du tampon %d est trop grande. Il doit être inférieur à %d
|
||||
msgid "Buffer length must be a multiple of 512"
|
||||
msgstr "La longueur de la mémoire tampon doit être un multiple de 512"
|
||||
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c
|
||||
msgid "Buffer must be a multiple of 512 bytes"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/bitbangio/I2C.c shared-bindings/busio/I2C.c
|
||||
msgid "Buffer must be at least length 1"
|
||||
msgstr "Le tampon doit être de longueur au moins 1"
|
||||
@ -663,6 +665,10 @@ msgstr "Impossible de réinitialiser le minuteur"
|
||||
msgid "Could not restart PWM"
|
||||
msgstr "Impossible de redémarrer PWM"
|
||||
|
||||
#: shared-bindings/_bleio/Adapter.c
|
||||
msgid "Could not set address"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/pulseio/PWMOut.c
|
||||
msgid "Could not start PWM"
|
||||
msgstr "Impossible de démarrer PWM"
|
||||
@ -762,7 +768,7 @@ msgstr "Erreur dans l'expression régulière"
|
||||
|
||||
#: shared-bindings/aesio/aes.c shared-bindings/busio/SPI.c
|
||||
#: shared-bindings/microcontroller/Pin.c
|
||||
#: shared-bindings/neopixel_write/__init__.c shared-bindings/pulseio/PulseOut.c
|
||||
#: shared-bindings/neopixel_write/__init__.c
|
||||
#: shared-bindings/terminalio/Terminal.c
|
||||
msgid "Expected a %q"
|
||||
msgstr "Attendu un %q"
|
||||
@ -846,6 +852,11 @@ msgstr "Échec de l'écriture du flash interne."
|
||||
msgid "File exists"
|
||||
msgstr "Le fichier existe"
|
||||
|
||||
#: shared-module/framebufferio/FramebufferDisplay.c
|
||||
#, c-format
|
||||
msgid "Framebuffer requires %d bytes"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c
|
||||
msgid "Frequency captured is above capability. Capture Paused."
|
||||
msgstr "La fréquence capturée est au delà des capacités. Capture en pause."
|
||||
@ -871,7 +882,7 @@ msgid "Group full"
|
||||
msgstr "Groupe plein"
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/I2C.c
|
||||
#: ports/stm/common-hal/busio/SPI.c
|
||||
#: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/sdioio/SDCard.c
|
||||
msgid "Hardware busy, try alternative pins"
|
||||
msgstr "Matériel occupé, essayez d'autres broches"
|
||||
|
||||
@ -887,6 +898,10 @@ msgstr "opération d'E/S sur un fichier fermé"
|
||||
msgid "I2C Init Error"
|
||||
msgstr "Erreur d'initialisation I2C"
|
||||
|
||||
#: shared-bindings/audiobusio/I2SOut.c
|
||||
msgid "I2SOut not available"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
#, c-format
|
||||
msgid "IV must be %d bytes long"
|
||||
@ -934,6 +949,11 @@ msgstr "%q invalide"
|
||||
msgid "Invalid %q pin"
|
||||
msgstr "Broche invalide pour '%q'"
|
||||
|
||||
#: ports/stm/common-hal/busio/I2C.c ports/stm/common-hal/busio/SPI.c
|
||||
#: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/sdioio/SDCard.c
|
||||
msgid "Invalid %q pin selection"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/analogio/AnalogIn.c
|
||||
msgid "Invalid ADC Unit value"
|
||||
msgstr "Valeur d'unité ADC non valide"
|
||||
@ -946,24 +966,12 @@ msgstr "Fichier BMP invalide"
|
||||
msgid "Invalid DAC pin supplied"
|
||||
msgstr "Broche DAC non valide fournie"
|
||||
|
||||
#: ports/stm/common-hal/busio/I2C.c
|
||||
msgid "Invalid I2C pin selection"
|
||||
msgstr "Sélection de broches I2C non valide"
|
||||
|
||||
#: ports/atmel-samd/common-hal/pulseio/PWMOut.c
|
||||
#: ports/cxd56/common-hal/pulseio/PWMOut.c
|
||||
#: ports/nrf/common-hal/pulseio/PWMOut.c shared-bindings/pulseio/PWMOut.c
|
||||
msgid "Invalid PWM frequency"
|
||||
msgstr "Fréquence de PWM invalide"
|
||||
|
||||
#: ports/stm/common-hal/busio/SPI.c
|
||||
msgid "Invalid SPI pin selection"
|
||||
msgstr "Sélection de broches SPI non valide"
|
||||
|
||||
#: ports/stm/common-hal/busio/UART.c
|
||||
msgid "Invalid UART pin selection"
|
||||
msgstr "Sélection de broches UART non valide"
|
||||
|
||||
#: py/moduerrno.c shared-module/rgbmatrix/RGBMatrix.c
|
||||
msgid "Invalid argument"
|
||||
msgstr "Argument invalide"
|
||||
@ -1259,6 +1267,10 @@ msgstr "Non connecté"
|
||||
msgid "Not playing"
|
||||
msgstr "Ne joue pas"
|
||||
|
||||
#: main.c
|
||||
msgid "Not running saved code.\n"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/util.c
|
||||
msgid ""
|
||||
"Object has been deinitialized and can no longer be used. Create a new object."
|
||||
@ -1357,9 +1369,14 @@ msgstr "Ainsi que tout autre module présent sur le système de fichiers\n"
|
||||
msgid "Polygon needs at least 3 points"
|
||||
msgstr "Polygone a besoin d’au moins 3 points"
|
||||
|
||||
#: shared-bindings/ps2io/Ps2.c
|
||||
msgid "Pop from an empty Ps2 buffer"
|
||||
msgstr "Pop à partir d'un tampon Ps2 vide"
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseOut.c
|
||||
#: ports/cxd56/common-hal/pulseio/PulseOut.c
|
||||
#: ports/nrf/common-hal/pulseio/PulseOut.c
|
||||
#: ports/stm/common-hal/pulseio/PulseOut.c
|
||||
msgid ""
|
||||
"Port does not accept pins or frequency. "
|
||||
"Construct and pass a PWMOut Carrier instead"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/_bleio/Adapter.c
|
||||
msgid "Prefix buffer must be on the heap"
|
||||
@ -1373,6 +1390,10 @@ msgstr "Appuyez sur une touche pour entrer sur REPL ou CTRL-D pour recharger."
|
||||
msgid "Pull not used when direction is output."
|
||||
msgstr "Le tirage 'pull' n'est pas utilisé quand la direction est 'output'."
|
||||
|
||||
#: ports/stm/ref/pulseout-pre-timeralloc.c
|
||||
msgid "PulseOut not supported on this chip"
|
||||
msgstr "PulseOut non pris en charge sur cette puce"
|
||||
|
||||
#: ports/stm/common-hal/os/__init__.c
|
||||
msgid "RNG DeInit Error"
|
||||
msgstr "Erreur RNG DeInit"
|
||||
@ -1433,12 +1454,8 @@ msgid "Row entry must be digitalio.DigitalInOut"
|
||||
msgstr "L'entrée de ligne 'Row' doit être un digitalio.DigitalInOut"
|
||||
|
||||
#: main.c
|
||||
msgid "Running in safe mode! Auto-reload is off.\n"
|
||||
msgstr "Mode sans-échec ! Auto-chargement désactivé.\n"
|
||||
|
||||
#: main.c
|
||||
msgid "Running in safe mode! Not running saved code.\n"
|
||||
msgstr "Mode sans-échec ! Le code sauvegardé n'est pas éxecuté.\n"
|
||||
msgid "Running in safe mode! "
|
||||
msgstr ""
|
||||
|
||||
#: shared-module/sdcardio/SDCard.c
|
||||
msgid "SD card CSD format not supported"
|
||||
@ -1449,6 +1466,16 @@ msgstr "Le format de carte SD CSD n'est pas pris en charge"
|
||||
msgid "SDA or SCL needs a pull up"
|
||||
msgstr "SDA ou SCL a besoin d'une résistance de tirage ('pull up')"
|
||||
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c
|
||||
#, c-format
|
||||
msgid "SDIO GetCardInfo Error %d"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c
|
||||
#, c-format
|
||||
msgid "SDIO Init Error %d"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/busio/SPI.c
|
||||
msgid "SPI Init Error"
|
||||
msgstr "Erreur d'initialisation SPI"
|
||||
@ -1824,9 +1851,8 @@ msgid "__init__() should return None"
|
||||
msgstr "__init__() doit retourner None"
|
||||
|
||||
#: py/objtype.c
|
||||
#, c-format
|
||||
msgid "__init__() should return None, not '%s'"
|
||||
msgstr "__init__() doit retourner None, pas '%s'"
|
||||
msgid "__init__() should return None, not '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/objobject.c
|
||||
msgid "__new__ arg must be a user-type"
|
||||
@ -1979,7 +2005,7 @@ msgstr "octets > 8 bits non supporté"
|
||||
msgid "bytes value out of range"
|
||||
msgstr "valeur des octets hors bornes"
|
||||
|
||||
#: ports/atmel-samd/bindings/samd/Clock.c
|
||||
#: ports/atmel-samd/bindings/samd/Clock.c ports/atmel-samd/common-hal/rtc/RTC.c
|
||||
msgid "calibration is out of range"
|
||||
msgstr "étalonnage hors bornes"
|
||||
|
||||
@ -2012,48 +2038,18 @@ msgstr ""
|
||||
msgid "can't assign to expression"
|
||||
msgstr "ne peut pas assigner à une expression"
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "can't convert %s to complex"
|
||||
msgstr "ne peut convertir %s en nombre complexe"
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "can't convert %s to float"
|
||||
msgstr "ne peut convertir %s en nombre à virgule flottante 'float'"
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "can't convert %s to int"
|
||||
msgstr "ne peut convertir %s en entier 'int'"
|
||||
#: py/obj.c py/objint.c shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
#: shared-module/_pixelbuf/PixelBuf.c
|
||||
msgid "can't convert %q to %q"
|
||||
msgstr ""
|
||||
|
||||
#: py/objstr.c
|
||||
msgid "can't convert '%q' object to %q implicitly"
|
||||
msgstr "impossible de convertir l'objet '%q' en '%q' implicitement"
|
||||
|
||||
#: py/objint.c
|
||||
msgid "can't convert NaN to int"
|
||||
msgstr "on ne peut convertir NaN en entier 'int'"
|
||||
|
||||
#: shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
msgid "can't convert address to int"
|
||||
msgstr "ne peut convertir l'adresse en entier 'int'"
|
||||
|
||||
#: py/objint.c
|
||||
msgid "can't convert inf to int"
|
||||
msgstr "on ne peut convertir l'infini 'inf' en entier 'int'"
|
||||
|
||||
#: py/obj.c
|
||||
msgid "can't convert to complex"
|
||||
msgstr "ne peut convertir en nombre complexe"
|
||||
|
||||
#: py/obj.c
|
||||
msgid "can't convert to float"
|
||||
msgstr "ne peut convertir en nombre à virgule flottante 'float'"
|
||||
|
||||
#: py/obj.c
|
||||
msgid "can't convert to int"
|
||||
msgstr "ne peut convertir en entier 'int'"
|
||||
msgid "can't convert to %q"
|
||||
msgstr ""
|
||||
|
||||
#: py/objstr.c
|
||||
msgid "can't convert to str implicitly"
|
||||
@ -2476,7 +2472,7 @@ msgstr "il manque l'argument nommé obligatoire '%q'"
|
||||
msgid "function missing required positional argument #%d"
|
||||
msgstr "il manque l'argument positionnel obligatoire #%d"
|
||||
|
||||
#: py/argcheck.c py/bc.c py/objnamedtuple.c
|
||||
#: py/argcheck.c py/bc.c py/objnamedtuple.c shared-bindings/time/__init__.c
|
||||
#, c-format
|
||||
msgid "function takes %d positional arguments but %d were given"
|
||||
msgstr "la fonction prend %d argument(s) positionnels mais %d ont été donné(s)"
|
||||
@ -2525,10 +2521,7 @@ msgstr "espacement incorrect"
|
||||
msgid "index is out of bounds"
|
||||
msgstr "l'index est hors limites"
|
||||
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c
|
||||
#: ports/cxd56/common-hal/pulseio/PulseIn.c
|
||||
#: ports/nrf/common-hal/pulseio/PulseIn.c
|
||||
#: ports/stm/common-hal/pulseio/PulseIn.c py/obj.c
|
||||
#: py/obj.c
|
||||
msgid "index out of range"
|
||||
msgstr "index hors gamme"
|
||||
|
||||
@ -2891,9 +2884,8 @@ msgid "number of points must be at least 2"
|
||||
msgstr "le nombre de points doit être d'au moins 2"
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "object '%s' is not a tuple or list"
|
||||
msgstr "l'objet '%s' n'est pas un tuple ou une liste"
|
||||
msgid "object '%q' is not a tuple or list"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
msgid "object does not support item assignment"
|
||||
@ -2928,9 +2920,8 @@ msgid "object not iterable"
|
||||
msgstr "objet non itérable"
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "object of type '%s' has no len()"
|
||||
msgstr "l'objet de type '%s' n'a pas de len()"
|
||||
msgid "object of type '%q' has no len()"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
msgid "object with buffer protocol required"
|
||||
@ -3025,21 +3016,10 @@ msgstr "le polygone ne peut être enregistré que dans un parent"
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c
|
||||
#: ports/cxd56/common-hal/pulseio/PulseIn.c
|
||||
#: ports/nrf/common-hal/pulseio/PulseIn.c
|
||||
#: ports/stm/common-hal/pulseio/PulseIn.c
|
||||
msgid "pop from an empty PulseIn"
|
||||
msgstr "'pop' d'une entrée PulseIn vide"
|
||||
|
||||
#: py/objset.c
|
||||
msgid "pop from an empty set"
|
||||
msgstr "'pop' d'un ensemble set vide"
|
||||
|
||||
#: py/objlist.c
|
||||
msgid "pop from empty list"
|
||||
msgstr "'pop' d'une liste vide"
|
||||
|
||||
#: py/objdict.c
|
||||
msgid "popitem(): dictionary is empty"
|
||||
msgstr "popitem() : dictionnaire vide"
|
||||
#: ports/stm/common-hal/pulseio/PulseIn.c py/objdict.c py/objlist.c py/objset.c
|
||||
#: shared-bindings/ps2io/Ps2.c
|
||||
msgid "pop from empty %q"
|
||||
msgstr ""
|
||||
|
||||
#: py/objint_mpz.c
|
||||
msgid "pow() 3rd argument cannot be 0"
|
||||
@ -3197,13 +3177,8 @@ msgid "stream operation not supported"
|
||||
msgstr "opération de flux non supportée"
|
||||
|
||||
#: py/objstrunicode.c
|
||||
msgid "string index out of range"
|
||||
msgstr "index de chaîne hors gamme"
|
||||
|
||||
#: py/objstrunicode.c
|
||||
#, c-format
|
||||
msgid "string indices must be integers, not %s"
|
||||
msgstr "les indices de chaîne de caractères doivent être des entiers, pas %s"
|
||||
msgid "string indices must be integers, not %q"
|
||||
msgstr ""
|
||||
|
||||
#: py/stream.c
|
||||
msgid "string not supported; use bytes or bytearray"
|
||||
@ -3214,10 +3189,6 @@ msgstr ""
|
||||
msgid "struct: cannot index"
|
||||
msgstr "struct : indexage impossible"
|
||||
|
||||
#: extmod/moductypes.c
|
||||
msgid "struct: index out of range"
|
||||
msgstr "struct : index hors limites"
|
||||
|
||||
#: extmod/moductypes.c
|
||||
msgid "struct: no fields"
|
||||
msgstr "struct : aucun champs"
|
||||
@ -3287,7 +3258,7 @@ msgstr "trop de valeur à dégrouper (%d attendues)"
|
||||
msgid "trapz is defined for 1D arrays of equal length"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/linalg/linalg.c py/objstr.c
|
||||
#: extmod/ulab/code/linalg/linalg.c
|
||||
msgid "tuple index out of range"
|
||||
msgstr "index du tuple hors gamme"
|
||||
|
||||
@ -3295,10 +3266,6 @@ msgstr "index du tuple hors gamme"
|
||||
msgid "tuple/list has wrong length"
|
||||
msgstr "tuple/liste a une mauvaise longueur"
|
||||
|
||||
#: shared-bindings/_pixelbuf/PixelBuf.c
|
||||
msgid "tuple/list required on RHS"
|
||||
msgstr "tuple ou liste requis en partie droite"
|
||||
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c ports/nrf/common-hal/busio/UART.c
|
||||
#: shared-bindings/busio/UART.c
|
||||
msgid "tx and rx cannot both be None"
|
||||
@ -3354,9 +3321,8 @@ msgid "unknown conversion specifier %c"
|
||||
msgstr "spécification %c de conversion inconnue"
|
||||
|
||||
#: py/objstr.c
|
||||
#, c-format
|
||||
msgid "unknown format code '%c' for object of type '%s'"
|
||||
msgstr "code de format '%c' inconnu pour un objet de type '%s'"
|
||||
msgid "unknown format code '%c' for object of type '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/compile.c
|
||||
msgid "unknown type"
|
||||
@ -3395,16 +3361,16 @@ msgid "unsupported format character '%c' (0x%x) at index %d"
|
||||
msgstr "caractère de format '%c' (0x%x) non supporté à l'index %d"
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "unsupported type for %q: '%s'"
|
||||
msgstr "type non supporté pour %q : '%s'"
|
||||
msgid "unsupported type for %q: '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "unsupported type for operator"
|
||||
msgstr "type non supporté pour l'opérateur"
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "unsupported types for %q: '%s', '%s'"
|
||||
msgstr "type non supporté pour %q : '%s', '%s'"
|
||||
msgid "unsupported types for %q: '%q', '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/objint.c
|
||||
#, c-format
|
||||
@ -3483,12 +3449,127 @@ msgstr ""
|
||||
msgid "zi must be of shape (n_section, 2)"
|
||||
msgstr ""
|
||||
|
||||
#~ msgid "tuple/list required on RHS"
|
||||
#~ msgstr "tuple ou liste requis en partie droite"
|
||||
|
||||
#~ msgid "%q indices must be integers, not %s"
|
||||
#~ msgstr "les indices %q doivent être des entiers, pas %s"
|
||||
|
||||
#~ msgid "'%s' object cannot assign attribute '%q'"
|
||||
#~ msgstr "L'objet '%s' ne peut pas attribuer '%q'"
|
||||
|
||||
#~ msgid "'%s' object does not support '%q'"
|
||||
#~ msgstr "L'objet '%s' ne prend pas en charge '%q'"
|
||||
|
||||
#~ msgid "'%s' object does not support item assignment"
|
||||
#~ msgstr "l'objet '%s' ne supporte pas l'assignation d'éléments"
|
||||
|
||||
#~ msgid "'%s' object does not support item deletion"
|
||||
#~ msgstr "l'objet '%s' ne supporte pas la suppression d'éléments"
|
||||
|
||||
#~ msgid "'%s' object has no attribute '%q'"
|
||||
#~ msgstr "l'objet '%s' n'a pas d'attribut '%q'"
|
||||
|
||||
#~ msgid "'%s' object is not an iterator"
|
||||
#~ msgstr "l'objet '%s' n'est pas un itérateur"
|
||||
|
||||
#~ msgid "'%s' object is not callable"
|
||||
#~ msgstr "l'objet '%s' n'est pas appelable"
|
||||
|
||||
#~ msgid "'%s' object is not iterable"
|
||||
#~ msgstr "l'objet '%s' n'est pas itérable"
|
||||
|
||||
#~ msgid "'%s' object is not subscriptable"
|
||||
#~ msgstr "l'objet '%s' n'est pas sous-scriptable"
|
||||
|
||||
#~ msgid "Invalid I2C pin selection"
|
||||
#~ msgstr "Sélection de broches I2C non valide"
|
||||
|
||||
#~ msgid "Invalid SPI pin selection"
|
||||
#~ msgstr "Sélection de broches SPI non valide"
|
||||
|
||||
#~ msgid "Invalid UART pin selection"
|
||||
#~ msgstr "Sélection de broches UART non valide"
|
||||
|
||||
#~ msgid "Pop from an empty Ps2 buffer"
|
||||
#~ msgstr "Pop à partir d'un tampon Ps2 vide"
|
||||
|
||||
#~ msgid "Running in safe mode! Auto-reload is off.\n"
|
||||
#~ msgstr "Mode sans-échec ! Auto-chargement désactivé.\n"
|
||||
|
||||
#~ msgid "Running in safe mode! Not running saved code.\n"
|
||||
#~ msgstr "Mode sans-échec ! Le code sauvegardé n'est pas éxecuté.\n"
|
||||
|
||||
#~ msgid "__init__() should return None, not '%s'"
|
||||
#~ msgstr "__init__() doit retourner None, pas '%s'"
|
||||
|
||||
#~ msgid "can't convert %s to complex"
|
||||
#~ msgstr "ne peut convertir %s en nombre complexe"
|
||||
|
||||
#~ msgid "can't convert %s to float"
|
||||
#~ msgstr "ne peut convertir %s en nombre à virgule flottante 'float'"
|
||||
|
||||
#~ msgid "can't convert %s to int"
|
||||
#~ msgstr "ne peut convertir %s en entier 'int'"
|
||||
|
||||
#~ msgid "can't convert NaN to int"
|
||||
#~ msgstr "on ne peut convertir NaN en entier 'int'"
|
||||
|
||||
#~ msgid "can't convert address to int"
|
||||
#~ msgstr "ne peut convertir l'adresse en entier 'int'"
|
||||
|
||||
#~ msgid "can't convert inf to int"
|
||||
#~ msgstr "on ne peut convertir l'infini 'inf' en entier 'int'"
|
||||
|
||||
#~ msgid "can't convert to complex"
|
||||
#~ msgstr "ne peut convertir en nombre complexe"
|
||||
|
||||
#~ msgid "can't convert to float"
|
||||
#~ msgstr "ne peut convertir en nombre à virgule flottante 'float'"
|
||||
|
||||
#~ msgid "can't convert to int"
|
||||
#~ msgstr "ne peut convertir en entier 'int'"
|
||||
|
||||
#~ msgid "object '%s' is not a tuple or list"
|
||||
#~ msgstr "l'objet '%s' n'est pas un tuple ou une liste"
|
||||
|
||||
#~ msgid "object of type '%s' has no len()"
|
||||
#~ msgstr "l'objet de type '%s' n'a pas de len()"
|
||||
|
||||
#~ msgid "pop from an empty PulseIn"
|
||||
#~ msgstr "'pop' d'une entrée PulseIn vide"
|
||||
|
||||
#~ msgid "pop from an empty set"
|
||||
#~ msgstr "'pop' d'un ensemble set vide"
|
||||
|
||||
#~ msgid "pop from empty list"
|
||||
#~ msgstr "'pop' d'une liste vide"
|
||||
|
||||
#~ msgid "popitem(): dictionary is empty"
|
||||
#~ msgstr "popitem() : dictionnaire vide"
|
||||
|
||||
#~ msgid "string index out of range"
|
||||
#~ msgstr "index de chaîne hors gamme"
|
||||
|
||||
#~ msgid "string indices must be integers, not %s"
|
||||
#~ msgstr ""
|
||||
#~ "les indices de chaîne de caractères doivent être des entiers, pas %s"
|
||||
|
||||
#~ msgid "struct: index out of range"
|
||||
#~ msgstr "struct : index hors limites"
|
||||
|
||||
#~ msgid "unknown format code '%c' for object of type '%s'"
|
||||
#~ msgstr "code de format '%c' inconnu pour un objet de type '%s'"
|
||||
|
||||
#~ msgid "unsupported type for %q: '%s'"
|
||||
#~ msgstr "type non supporté pour %q : '%s'"
|
||||
|
||||
#~ msgid "unsupported types for %q: '%s', '%s'"
|
||||
#~ msgstr "type non supporté pour %q : '%s', '%s'"
|
||||
|
||||
#~ msgid "'async for' or 'async with' outside async function"
|
||||
#~ msgstr "'async for' ou 'async with' sans fonction asynchrone extérieure"
|
||||
|
||||
#~ msgid "PulseOut not supported on this chip"
|
||||
#~ msgstr "PulseOut non pris en charge sur cette puce"
|
||||
|
||||
#~ msgid "PulseIn not supported on this chip"
|
||||
#~ msgstr "PulseIn non pris en charge sur cette puce"
|
||||
|
||||
|
256
locale/hi.po
256
locale/hi.po
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-07-28 16:57-0500\n"
|
||||
"POT-Creation-Date: 2020-08-18 11:19-0400\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: Automatically generated\n"
|
||||
"Language-Team: none\n"
|
||||
@ -65,12 +65,16 @@ msgstr ""
|
||||
msgid "%q in use"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
#: extmod/moductypes.c ports/atmel-samd/common-hal/pulseio/PulseIn.c
|
||||
#: ports/cxd56/common-hal/pulseio/PulseIn.c
|
||||
#: ports/nrf/common-hal/pulseio/PulseIn.c
|
||||
#: ports/stm/common-hal/pulseio/PulseIn.c py/obj.c py/objstr.c
|
||||
#: py/objstrunicode.c
|
||||
msgid "%q index out of range"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
msgid "%q indices must be integers, not %s"
|
||||
msgid "%q indices must be integers, not %q"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/vectorio/Polygon.c
|
||||
@ -109,6 +113,42 @@ msgstr ""
|
||||
msgid "'%q' argument required"
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%q' object cannot assign attribute '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/proto.c
|
||||
msgid "'%q' object does not support '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
msgid "'%q' object does not support item assignment"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
msgid "'%q' object does not support item deletion"
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%q' object has no attribute '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%q' object is not an iterator"
|
||||
msgstr ""
|
||||
|
||||
#: py/objtype.c py/runtime.c
|
||||
msgid "'%q' object is not callable"
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%q' object is not iterable"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
msgid "'%q' object is not subscriptable"
|
||||
msgstr ""
|
||||
|
||||
#: py/emitinlinethumb.c py/emitinlinextensa.c
|
||||
#, c-format
|
||||
msgid "'%s' expects a label"
|
||||
@ -159,48 +199,6 @@ msgstr ""
|
||||
msgid "'%s' integer 0x%x does not fit in mask 0x%x"
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%s' object cannot assign attribute '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/proto.c
|
||||
msgid "'%s' object does not support '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "'%s' object does not support item assignment"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "'%s' object does not support item deletion"
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%s' object has no attribute '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
#, c-format
|
||||
msgid "'%s' object is not an iterator"
|
||||
msgstr ""
|
||||
|
||||
#: py/objtype.c py/runtime.c
|
||||
#, c-format
|
||||
msgid "'%s' object is not callable"
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
#, c-format
|
||||
msgid "'%s' object is not iterable"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "'%s' object is not subscriptable"
|
||||
msgstr ""
|
||||
|
||||
#: py/objstr.c
|
||||
msgid "'=' alignment not allowed in string format specifier"
|
||||
msgstr ""
|
||||
@ -448,6 +446,10 @@ msgstr ""
|
||||
msgid "Buffer length must be a multiple of 512"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c
|
||||
msgid "Buffer must be a multiple of 512 bytes"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/bitbangio/I2C.c shared-bindings/busio/I2C.c
|
||||
msgid "Buffer must be at least length 1"
|
||||
msgstr ""
|
||||
@ -638,6 +640,10 @@ msgstr ""
|
||||
msgid "Could not restart PWM"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/_bleio/Adapter.c
|
||||
msgid "Could not set address"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/pulseio/PWMOut.c
|
||||
msgid "Could not start PWM"
|
||||
msgstr ""
|
||||
@ -737,7 +743,7 @@ msgstr ""
|
||||
|
||||
#: shared-bindings/aesio/aes.c shared-bindings/busio/SPI.c
|
||||
#: shared-bindings/microcontroller/Pin.c
|
||||
#: shared-bindings/neopixel_write/__init__.c shared-bindings/pulseio/PulseOut.c
|
||||
#: shared-bindings/neopixel_write/__init__.c
|
||||
#: shared-bindings/terminalio/Terminal.c
|
||||
msgid "Expected a %q"
|
||||
msgstr ""
|
||||
@ -820,6 +826,11 @@ msgstr ""
|
||||
msgid "File exists"
|
||||
msgstr ""
|
||||
|
||||
#: shared-module/framebufferio/FramebufferDisplay.c
|
||||
#, c-format
|
||||
msgid "Framebuffer requires %d bytes"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c
|
||||
msgid "Frequency captured is above capability. Capture Paused."
|
||||
msgstr ""
|
||||
@ -844,7 +855,7 @@ msgid "Group full"
|
||||
msgstr ""
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/I2C.c
|
||||
#: ports/stm/common-hal/busio/SPI.c
|
||||
#: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/sdioio/SDCard.c
|
||||
msgid "Hardware busy, try alternative pins"
|
||||
msgstr ""
|
||||
|
||||
@ -860,6 +871,10 @@ msgstr ""
|
||||
msgid "I2C Init Error"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/audiobusio/I2SOut.c
|
||||
msgid "I2SOut not available"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
#, c-format
|
||||
msgid "IV must be %d bytes long"
|
||||
@ -905,6 +920,11 @@ msgstr ""
|
||||
msgid "Invalid %q pin"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/busio/I2C.c ports/stm/common-hal/busio/SPI.c
|
||||
#: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/sdioio/SDCard.c
|
||||
msgid "Invalid %q pin selection"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/analogio/AnalogIn.c
|
||||
msgid "Invalid ADC Unit value"
|
||||
msgstr ""
|
||||
@ -917,24 +937,12 @@ msgstr ""
|
||||
msgid "Invalid DAC pin supplied"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/busio/I2C.c
|
||||
msgid "Invalid I2C pin selection"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/pulseio/PWMOut.c
|
||||
#: ports/cxd56/common-hal/pulseio/PWMOut.c
|
||||
#: ports/nrf/common-hal/pulseio/PWMOut.c shared-bindings/pulseio/PWMOut.c
|
||||
msgid "Invalid PWM frequency"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/busio/SPI.c
|
||||
msgid "Invalid SPI pin selection"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/busio/UART.c
|
||||
msgid "Invalid UART pin selection"
|
||||
msgstr ""
|
||||
|
||||
#: py/moduerrno.c shared-module/rgbmatrix/RGBMatrix.c
|
||||
msgid "Invalid argument"
|
||||
msgstr ""
|
||||
@ -1230,6 +1238,10 @@ msgstr ""
|
||||
msgid "Not playing"
|
||||
msgstr ""
|
||||
|
||||
#: main.c
|
||||
msgid "Not running saved code.\n"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/util.c
|
||||
msgid ""
|
||||
"Object has been deinitialized and can no longer be used. Create a new object."
|
||||
@ -1315,8 +1327,13 @@ msgstr ""
|
||||
msgid "Polygon needs at least 3 points"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/ps2io/Ps2.c
|
||||
msgid "Pop from an empty Ps2 buffer"
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseOut.c
|
||||
#: ports/cxd56/common-hal/pulseio/PulseOut.c
|
||||
#: ports/nrf/common-hal/pulseio/PulseOut.c
|
||||
#: ports/stm/common-hal/pulseio/PulseOut.c
|
||||
msgid ""
|
||||
"Port does not accept pins or frequency. "
|
||||
"Construct and pass a PWMOut Carrier instead"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/_bleio/Adapter.c
|
||||
@ -1331,6 +1348,10 @@ msgstr ""
|
||||
msgid "Pull not used when direction is output."
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/ref/pulseout-pre-timeralloc.c
|
||||
msgid "PulseOut not supported on this chip"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/os/__init__.c
|
||||
msgid "RNG DeInit Error"
|
||||
msgstr ""
|
||||
@ -1391,11 +1412,7 @@ msgid "Row entry must be digitalio.DigitalInOut"
|
||||
msgstr ""
|
||||
|
||||
#: main.c
|
||||
msgid "Running in safe mode! Auto-reload is off.\n"
|
||||
msgstr ""
|
||||
|
||||
#: main.c
|
||||
msgid "Running in safe mode! Not running saved code.\n"
|
||||
msgid "Running in safe mode! "
|
||||
msgstr ""
|
||||
|
||||
#: shared-module/sdcardio/SDCard.c
|
||||
@ -1407,6 +1424,16 @@ msgstr ""
|
||||
msgid "SDA or SCL needs a pull up"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c
|
||||
#, c-format
|
||||
msgid "SDIO GetCardInfo Error %d"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c
|
||||
#, c-format
|
||||
msgid "SDIO Init Error %d"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/busio/SPI.c
|
||||
msgid "SPI Init Error"
|
||||
msgstr ""
|
||||
@ -1756,8 +1783,7 @@ msgid "__init__() should return None"
|
||||
msgstr ""
|
||||
|
||||
#: py/objtype.c
|
||||
#, c-format
|
||||
msgid "__init__() should return None, not '%s'"
|
||||
msgid "__init__() should return None, not '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/objobject.c
|
||||
@ -1911,7 +1937,7 @@ msgstr ""
|
||||
msgid "bytes value out of range"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/bindings/samd/Clock.c
|
||||
#: ports/atmel-samd/bindings/samd/Clock.c ports/atmel-samd/common-hal/rtc/RTC.c
|
||||
msgid "calibration is out of range"
|
||||
msgstr ""
|
||||
|
||||
@ -1943,47 +1969,17 @@ msgstr ""
|
||||
msgid "can't assign to expression"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "can't convert %s to complex"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "can't convert %s to float"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "can't convert %s to int"
|
||||
#: py/obj.c py/objint.c shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
#: shared-module/_pixelbuf/PixelBuf.c
|
||||
msgid "can't convert %q to %q"
|
||||
msgstr ""
|
||||
|
||||
#: py/objstr.c
|
||||
msgid "can't convert '%q' object to %q implicitly"
|
||||
msgstr ""
|
||||
|
||||
#: py/objint.c
|
||||
msgid "can't convert NaN to int"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
msgid "can't convert address to int"
|
||||
msgstr ""
|
||||
|
||||
#: py/objint.c
|
||||
msgid "can't convert inf to int"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
msgid "can't convert to complex"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
msgid "can't convert to float"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
msgid "can't convert to int"
|
||||
msgid "can't convert to %q"
|
||||
msgstr ""
|
||||
|
||||
#: py/objstr.c
|
||||
@ -2391,7 +2387,7 @@ msgstr ""
|
||||
msgid "function missing required positional argument #%d"
|
||||
msgstr ""
|
||||
|
||||
#: py/argcheck.c py/bc.c py/objnamedtuple.c
|
||||
#: py/argcheck.c py/bc.c py/objnamedtuple.c shared-bindings/time/__init__.c
|
||||
#, c-format
|
||||
msgid "function takes %d positional arguments but %d were given"
|
||||
msgstr ""
|
||||
@ -2440,10 +2436,7 @@ msgstr ""
|
||||
msgid "index is out of bounds"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c
|
||||
#: ports/cxd56/common-hal/pulseio/PulseIn.c
|
||||
#: ports/nrf/common-hal/pulseio/PulseIn.c
|
||||
#: ports/stm/common-hal/pulseio/PulseIn.c py/obj.c
|
||||
#: py/obj.c
|
||||
msgid "index out of range"
|
||||
msgstr ""
|
||||
|
||||
@ -2799,8 +2792,7 @@ msgid "number of points must be at least 2"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "object '%s' is not a tuple or list"
|
||||
msgid "object '%q' is not a tuple or list"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
@ -2836,8 +2828,7 @@ msgid "object not iterable"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "object of type '%s' has no len()"
|
||||
msgid "object of type '%q' has no len()"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
@ -2930,20 +2921,9 @@ msgstr ""
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c
|
||||
#: ports/cxd56/common-hal/pulseio/PulseIn.c
|
||||
#: ports/nrf/common-hal/pulseio/PulseIn.c
|
||||
#: ports/stm/common-hal/pulseio/PulseIn.c
|
||||
msgid "pop from an empty PulseIn"
|
||||
msgstr ""
|
||||
|
||||
#: py/objset.c
|
||||
msgid "pop from an empty set"
|
||||
msgstr ""
|
||||
|
||||
#: py/objlist.c
|
||||
msgid "pop from empty list"
|
||||
msgstr ""
|
||||
|
||||
#: py/objdict.c
|
||||
msgid "popitem(): dictionary is empty"
|
||||
#: ports/stm/common-hal/pulseio/PulseIn.c py/objdict.c py/objlist.c py/objset.c
|
||||
#: shared-bindings/ps2io/Ps2.c
|
||||
msgid "pop from empty %q"
|
||||
msgstr ""
|
||||
|
||||
#: py/objint_mpz.c
|
||||
@ -3100,12 +3080,7 @@ msgid "stream operation not supported"
|
||||
msgstr ""
|
||||
|
||||
#: py/objstrunicode.c
|
||||
msgid "string index out of range"
|
||||
msgstr ""
|
||||
|
||||
#: py/objstrunicode.c
|
||||
#, c-format
|
||||
msgid "string indices must be integers, not %s"
|
||||
msgid "string indices must be integers, not %q"
|
||||
msgstr ""
|
||||
|
||||
#: py/stream.c
|
||||
@ -3116,10 +3091,6 @@ msgstr ""
|
||||
msgid "struct: cannot index"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/moductypes.c
|
||||
msgid "struct: index out of range"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/moductypes.c
|
||||
msgid "struct: no fields"
|
||||
msgstr ""
|
||||
@ -3189,7 +3160,7 @@ msgstr ""
|
||||
msgid "trapz is defined for 1D arrays of equal length"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/linalg/linalg.c py/objstr.c
|
||||
#: extmod/ulab/code/linalg/linalg.c
|
||||
msgid "tuple index out of range"
|
||||
msgstr ""
|
||||
|
||||
@ -3197,10 +3168,6 @@ msgstr ""
|
||||
msgid "tuple/list has wrong length"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/_pixelbuf/PixelBuf.c
|
||||
msgid "tuple/list required on RHS"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c ports/nrf/common-hal/busio/UART.c
|
||||
#: shared-bindings/busio/UART.c
|
||||
msgid "tx and rx cannot both be None"
|
||||
@ -3256,8 +3223,7 @@ msgid "unknown conversion specifier %c"
|
||||
msgstr ""
|
||||
|
||||
#: py/objstr.c
|
||||
#, c-format
|
||||
msgid "unknown format code '%c' for object of type '%s'"
|
||||
msgid "unknown format code '%c' for object of type '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/compile.c
|
||||
@ -3297,7 +3263,7 @@ msgid "unsupported format character '%c' (0x%x) at index %d"
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "unsupported type for %q: '%s'"
|
||||
msgid "unsupported type for %q: '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
@ -3305,7 +3271,7 @@ msgid "unsupported type for operator"
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "unsupported types for %q: '%s', '%s'"
|
||||
msgid "unsupported types for %q: '%q', '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/objint.c
|
||||
|
377
locale/it_IT.po
377
locale/it_IT.po
@ -6,7 +6,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-07-28 16:57-0500\n"
|
||||
"POT-Creation-Date: 2020-08-18 11:19-0400\n"
|
||||
"PO-Revision-Date: 2018-10-02 16:27+0200\n"
|
||||
"Last-Translator: Enrico Paganin <enrico.paganin@mail.com>\n"
|
||||
"Language-Team: \n"
|
||||
@ -64,13 +64,17 @@ msgstr ""
|
||||
msgid "%q in use"
|
||||
msgstr "%q in uso"
|
||||
|
||||
#: py/obj.c
|
||||
#: extmod/moductypes.c ports/atmel-samd/common-hal/pulseio/PulseIn.c
|
||||
#: ports/cxd56/common-hal/pulseio/PulseIn.c
|
||||
#: ports/nrf/common-hal/pulseio/PulseIn.c
|
||||
#: ports/stm/common-hal/pulseio/PulseIn.c py/obj.c py/objstr.c
|
||||
#: py/objstrunicode.c
|
||||
msgid "%q index out of range"
|
||||
msgstr "indice %q fuori intervallo"
|
||||
|
||||
#: py/obj.c
|
||||
msgid "%q indices must be integers, not %s"
|
||||
msgstr "gli indici %q devono essere interi, non %s"
|
||||
msgid "%q indices must be integers, not %q"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/vectorio/Polygon.c
|
||||
msgid "%q list must be a list"
|
||||
@ -110,6 +114,42 @@ msgstr "%q() prende %d argomenti posizionali ma ne sono stati forniti %d"
|
||||
msgid "'%q' argument required"
|
||||
msgstr "'%q' argomento richiesto"
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%q' object cannot assign attribute '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/proto.c
|
||||
msgid "'%q' object does not support '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
msgid "'%q' object does not support item assignment"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
msgid "'%q' object does not support item deletion"
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%q' object has no attribute '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%q' object is not an iterator"
|
||||
msgstr ""
|
||||
|
||||
#: py/objtype.c py/runtime.c
|
||||
msgid "'%q' object is not callable"
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%q' object is not iterable"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
msgid "'%q' object is not subscriptable"
|
||||
msgstr ""
|
||||
|
||||
#: py/emitinlinethumb.c py/emitinlinextensa.c
|
||||
#, c-format
|
||||
msgid "'%s' expects a label"
|
||||
@ -160,48 +200,6 @@ msgstr "intero '%s' non è nell'intervallo %d..%d"
|
||||
msgid "'%s' integer 0x%x does not fit in mask 0x%x"
|
||||
msgstr "intero '%s' non è nell'intervallo %d..%d"
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%s' object cannot assign attribute '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/proto.c
|
||||
msgid "'%s' object does not support '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "'%s' object does not support item assignment"
|
||||
msgstr "oggeto '%s' non supporta assengnamento di item"
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "'%s' object does not support item deletion"
|
||||
msgstr "oggeto '%s' non supporta eliminamento di item"
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%s' object has no attribute '%q'"
|
||||
msgstr "l'oggetto '%s' non ha l'attributo '%q'"
|
||||
|
||||
#: py/runtime.c
|
||||
#, c-format
|
||||
msgid "'%s' object is not an iterator"
|
||||
msgstr "l'oggetto '%s' non è un iteratore"
|
||||
|
||||
#: py/objtype.c py/runtime.c
|
||||
#, c-format
|
||||
msgid "'%s' object is not callable"
|
||||
msgstr "oggeto '%s' non è chiamabile"
|
||||
|
||||
#: py/runtime.c
|
||||
#, c-format
|
||||
msgid "'%s' object is not iterable"
|
||||
msgstr "l'oggetto '%s' non è iterabile"
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "'%s' object is not subscriptable"
|
||||
msgstr "oggeto '%s' non è "
|
||||
|
||||
#: py/objstr.c
|
||||
msgid "'=' alignment not allowed in string format specifier"
|
||||
msgstr "aligniamento '=' non è permesso per il specificatore formato string"
|
||||
@ -453,6 +451,10 @@ msgstr ""
|
||||
msgid "Buffer length must be a multiple of 512"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c
|
||||
msgid "Buffer must be a multiple of 512 bytes"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/bitbangio/I2C.c shared-bindings/busio/I2C.c
|
||||
msgid "Buffer must be at least length 1"
|
||||
msgstr "Il buffer deve essere lungo almeno 1"
|
||||
@ -647,6 +649,10 @@ msgstr ""
|
||||
msgid "Could not restart PWM"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/_bleio/Adapter.c
|
||||
msgid "Could not set address"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/pulseio/PWMOut.c
|
||||
msgid "Could not start PWM"
|
||||
msgstr ""
|
||||
@ -748,7 +754,7 @@ msgstr "Errore nella regex"
|
||||
|
||||
#: shared-bindings/aesio/aes.c shared-bindings/busio/SPI.c
|
||||
#: shared-bindings/microcontroller/Pin.c
|
||||
#: shared-bindings/neopixel_write/__init__.c shared-bindings/pulseio/PulseOut.c
|
||||
#: shared-bindings/neopixel_write/__init__.c
|
||||
#: shared-bindings/terminalio/Terminal.c
|
||||
msgid "Expected a %q"
|
||||
msgstr "Atteso un %q"
|
||||
@ -833,6 +839,11 @@ msgstr ""
|
||||
msgid "File exists"
|
||||
msgstr "File esistente"
|
||||
|
||||
#: shared-module/framebufferio/FramebufferDisplay.c
|
||||
#, c-format
|
||||
msgid "Framebuffer requires %d bytes"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c
|
||||
msgid "Frequency captured is above capability. Capture Paused."
|
||||
msgstr ""
|
||||
@ -857,7 +868,7 @@ msgid "Group full"
|
||||
msgstr "Gruppo pieno"
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/I2C.c
|
||||
#: ports/stm/common-hal/busio/SPI.c
|
||||
#: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/sdioio/SDCard.c
|
||||
msgid "Hardware busy, try alternative pins"
|
||||
msgstr ""
|
||||
|
||||
@ -873,6 +884,10 @@ msgstr "operazione I/O su file chiuso"
|
||||
msgid "I2C Init Error"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/audiobusio/I2SOut.c
|
||||
msgid "I2SOut not available"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
#, c-format
|
||||
msgid "IV must be %d bytes long"
|
||||
@ -920,6 +935,11 @@ msgstr ""
|
||||
msgid "Invalid %q pin"
|
||||
msgstr "Pin %q non valido"
|
||||
|
||||
#: ports/stm/common-hal/busio/I2C.c ports/stm/common-hal/busio/SPI.c
|
||||
#: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/sdioio/SDCard.c
|
||||
msgid "Invalid %q pin selection"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/analogio/AnalogIn.c
|
||||
msgid "Invalid ADC Unit value"
|
||||
msgstr ""
|
||||
@ -932,24 +952,12 @@ msgstr "File BMP non valido"
|
||||
msgid "Invalid DAC pin supplied"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/busio/I2C.c
|
||||
msgid "Invalid I2C pin selection"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/pulseio/PWMOut.c
|
||||
#: ports/cxd56/common-hal/pulseio/PWMOut.c
|
||||
#: ports/nrf/common-hal/pulseio/PWMOut.c shared-bindings/pulseio/PWMOut.c
|
||||
msgid "Invalid PWM frequency"
|
||||
msgstr "Frequenza PWM non valida"
|
||||
|
||||
#: ports/stm/common-hal/busio/SPI.c
|
||||
msgid "Invalid SPI pin selection"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/busio/UART.c
|
||||
msgid "Invalid UART pin selection"
|
||||
msgstr ""
|
||||
|
||||
#: py/moduerrno.c shared-module/rgbmatrix/RGBMatrix.c
|
||||
msgid "Invalid argument"
|
||||
msgstr "Argomento non valido"
|
||||
@ -1250,6 +1258,10 @@ msgstr "Impossible connettersi all'AP"
|
||||
msgid "Not playing"
|
||||
msgstr "In pausa"
|
||||
|
||||
#: main.c
|
||||
msgid "Not running saved code.\n"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/util.c
|
||||
msgid ""
|
||||
"Object has been deinitialized and can no longer be used. Create a new object."
|
||||
@ -1344,8 +1356,13 @@ msgstr "Imposssibile rimontare il filesystem"
|
||||
msgid "Polygon needs at least 3 points"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/ps2io/Ps2.c
|
||||
msgid "Pop from an empty Ps2 buffer"
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseOut.c
|
||||
#: ports/cxd56/common-hal/pulseio/PulseOut.c
|
||||
#: ports/nrf/common-hal/pulseio/PulseOut.c
|
||||
#: ports/stm/common-hal/pulseio/PulseOut.c
|
||||
msgid ""
|
||||
"Port does not accept pins or frequency. "
|
||||
"Construct and pass a PWMOut Carrier instead"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/_bleio/Adapter.c
|
||||
@ -1361,6 +1378,10 @@ msgstr ""
|
||||
msgid "Pull not used when direction is output."
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/ref/pulseout-pre-timeralloc.c
|
||||
msgid "PulseOut not supported on this chip"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/os/__init__.c
|
||||
msgid "RNG DeInit Error"
|
||||
msgstr ""
|
||||
@ -1422,12 +1443,8 @@ msgid "Row entry must be digitalio.DigitalInOut"
|
||||
msgstr ""
|
||||
|
||||
#: main.c
|
||||
msgid "Running in safe mode! Auto-reload is off.\n"
|
||||
msgstr "Modalità sicura in esecuzione! Auto-reload disattivato.\n"
|
||||
|
||||
#: main.c
|
||||
msgid "Running in safe mode! Not running saved code.\n"
|
||||
msgstr "Modalità sicura in esecuzione! Codice salvato non in esecuzione.\n"
|
||||
msgid "Running in safe mode! "
|
||||
msgstr ""
|
||||
|
||||
#: shared-module/sdcardio/SDCard.c
|
||||
msgid "SD card CSD format not supported"
|
||||
@ -1438,6 +1455,16 @@ msgstr ""
|
||||
msgid "SDA or SCL needs a pull up"
|
||||
msgstr "SDA o SCL necessitano un pull-up"
|
||||
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c
|
||||
#, c-format
|
||||
msgid "SDIO GetCardInfo Error %d"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c
|
||||
#, c-format
|
||||
msgid "SDIO Init Error %d"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/busio/SPI.c
|
||||
msgid "SPI Init Error"
|
||||
msgstr ""
|
||||
@ -1791,9 +1818,8 @@ msgid "__init__() should return None"
|
||||
msgstr "__init__() deve ritornare None"
|
||||
|
||||
#: py/objtype.c
|
||||
#, c-format
|
||||
msgid "__init__() should return None, not '%s'"
|
||||
msgstr "__init__() deve ritornare None, non '%s'"
|
||||
msgid "__init__() should return None, not '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/objobject.c
|
||||
msgid "__new__ arg must be a user-type"
|
||||
@ -1949,7 +1975,7 @@ msgstr "byte > 8 bit non supportati"
|
||||
msgid "bytes value out of range"
|
||||
msgstr "valore byte fuori intervallo"
|
||||
|
||||
#: ports/atmel-samd/bindings/samd/Clock.c
|
||||
#: ports/atmel-samd/bindings/samd/Clock.c ports/atmel-samd/common-hal/rtc/RTC.c
|
||||
msgid "calibration is out of range"
|
||||
msgstr "la calibrazione è fuori intervallo"
|
||||
|
||||
@ -1982,48 +2008,18 @@ msgstr ""
|
||||
msgid "can't assign to expression"
|
||||
msgstr "impossibile assegnare all'espressione"
|
||||
|
||||
#: py/obj.c
|
||||
#, fuzzy, c-format
|
||||
msgid "can't convert %s to complex"
|
||||
msgstr "non è possibile convertire a complex"
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "can't convert %s to float"
|
||||
msgstr "non è possibile convertire %s a float"
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "can't convert %s to int"
|
||||
msgstr "non è possibile convertire %s a int"
|
||||
#: py/obj.c py/objint.c shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
#: shared-module/_pixelbuf/PixelBuf.c
|
||||
msgid "can't convert %q to %q"
|
||||
msgstr ""
|
||||
|
||||
#: py/objstr.c
|
||||
msgid "can't convert '%q' object to %q implicitly"
|
||||
msgstr "impossibile convertire l'oggetto '%q' implicitamente in %q"
|
||||
|
||||
#: py/objint.c
|
||||
msgid "can't convert NaN to int"
|
||||
msgstr "impossibile convertire NaN in int"
|
||||
|
||||
#: shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
msgid "can't convert address to int"
|
||||
msgstr "impossible convertire indirizzo in int"
|
||||
|
||||
#: py/objint.c
|
||||
msgid "can't convert inf to int"
|
||||
msgstr "impossibile convertire inf in int"
|
||||
|
||||
#: py/obj.c
|
||||
msgid "can't convert to complex"
|
||||
msgstr "non è possibile convertire a complex"
|
||||
|
||||
#: py/obj.c
|
||||
msgid "can't convert to float"
|
||||
msgstr "non è possibile convertire a float"
|
||||
|
||||
#: py/obj.c
|
||||
msgid "can't convert to int"
|
||||
msgstr "non è possibile convertire a int"
|
||||
msgid "can't convert to %q"
|
||||
msgstr ""
|
||||
|
||||
#: py/objstr.c
|
||||
msgid "can't convert to str implicitly"
|
||||
@ -2436,7 +2432,7 @@ msgstr "argomento nominato '%q' mancante alla funzione"
|
||||
msgid "function missing required positional argument #%d"
|
||||
msgstr "mancante il #%d argomento posizonale obbligatorio della funzione"
|
||||
|
||||
#: py/argcheck.c py/bc.c py/objnamedtuple.c
|
||||
#: py/argcheck.c py/bc.c py/objnamedtuple.c shared-bindings/time/__init__.c
|
||||
#, c-format
|
||||
msgid "function takes %d positional arguments but %d were given"
|
||||
msgstr ""
|
||||
@ -2486,10 +2482,7 @@ msgstr "padding incorretto"
|
||||
msgid "index is out of bounds"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c
|
||||
#: ports/cxd56/common-hal/pulseio/PulseIn.c
|
||||
#: ports/nrf/common-hal/pulseio/PulseIn.c
|
||||
#: ports/stm/common-hal/pulseio/PulseIn.c py/obj.c
|
||||
#: py/obj.c
|
||||
msgid "index out of range"
|
||||
msgstr "indice fuori intervallo"
|
||||
|
||||
@ -2853,9 +2846,8 @@ msgid "number of points must be at least 2"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "object '%s' is not a tuple or list"
|
||||
msgstr "oggetto '%s' non è una tupla o una lista"
|
||||
msgid "object '%q' is not a tuple or list"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
msgid "object does not support item assignment"
|
||||
@ -2890,9 +2882,8 @@ msgid "object not iterable"
|
||||
msgstr "oggetto non iterabile"
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "object of type '%s' has no len()"
|
||||
msgstr "l'oggetto di tipo '%s' non implementa len()"
|
||||
msgid "object of type '%q' has no len()"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
msgid "object with buffer protocol required"
|
||||
@ -2988,21 +2979,10 @@ msgstr ""
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c
|
||||
#: ports/cxd56/common-hal/pulseio/PulseIn.c
|
||||
#: ports/nrf/common-hal/pulseio/PulseIn.c
|
||||
#: ports/stm/common-hal/pulseio/PulseIn.c
|
||||
msgid "pop from an empty PulseIn"
|
||||
msgstr "pop sun un PulseIn vuoto"
|
||||
|
||||
#: py/objset.c
|
||||
msgid "pop from an empty set"
|
||||
msgstr "pop da un set vuoto"
|
||||
|
||||
#: py/objlist.c
|
||||
msgid "pop from empty list"
|
||||
msgstr "pop da una lista vuota"
|
||||
|
||||
#: py/objdict.c
|
||||
msgid "popitem(): dictionary is empty"
|
||||
msgstr "popitem(): il dizionario è vuoto"
|
||||
#: ports/stm/common-hal/pulseio/PulseIn.c py/objdict.c py/objlist.c py/objset.c
|
||||
#: shared-bindings/ps2io/Ps2.c
|
||||
msgid "pop from empty %q"
|
||||
msgstr ""
|
||||
|
||||
#: py/objint_mpz.c
|
||||
msgid "pow() 3rd argument cannot be 0"
|
||||
@ -3161,13 +3141,8 @@ msgid "stream operation not supported"
|
||||
msgstr "operazione di stream non supportata"
|
||||
|
||||
#: py/objstrunicode.c
|
||||
msgid "string index out of range"
|
||||
msgstr "indice della stringa fuori intervallo"
|
||||
|
||||
#: py/objstrunicode.c
|
||||
#, c-format
|
||||
msgid "string indices must be integers, not %s"
|
||||
msgstr "indici della stringa devono essere interi, non %s"
|
||||
msgid "string indices must be integers, not %q"
|
||||
msgstr ""
|
||||
|
||||
#: py/stream.c
|
||||
msgid "string not supported; use bytes or bytearray"
|
||||
@ -3177,10 +3152,6 @@ msgstr ""
|
||||
msgid "struct: cannot index"
|
||||
msgstr "struct: impossibile indicizzare"
|
||||
|
||||
#: extmod/moductypes.c
|
||||
msgid "struct: index out of range"
|
||||
msgstr "struct: indice fuori intervallo"
|
||||
|
||||
#: extmod/moductypes.c
|
||||
msgid "struct: no fields"
|
||||
msgstr "struct: nessun campo"
|
||||
@ -3251,7 +3222,7 @@ msgstr "troppi valori da scompattare (%d attesi)"
|
||||
msgid "trapz is defined for 1D arrays of equal length"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/linalg/linalg.c py/objstr.c
|
||||
#: extmod/ulab/code/linalg/linalg.c
|
||||
msgid "tuple index out of range"
|
||||
msgstr "indice della tupla fuori intervallo"
|
||||
|
||||
@ -3259,10 +3230,6 @@ msgstr "indice della tupla fuori intervallo"
|
||||
msgid "tuple/list has wrong length"
|
||||
msgstr "tupla/lista ha la lunghezza sbagliata"
|
||||
|
||||
#: shared-bindings/_pixelbuf/PixelBuf.c
|
||||
msgid "tuple/list required on RHS"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c ports/nrf/common-hal/busio/UART.c
|
||||
#: shared-bindings/busio/UART.c
|
||||
msgid "tx and rx cannot both be None"
|
||||
@ -3318,9 +3285,8 @@ msgid "unknown conversion specifier %c"
|
||||
msgstr "specificatore di conversione %s sconosciuto"
|
||||
|
||||
#: py/objstr.c
|
||||
#, c-format
|
||||
msgid "unknown format code '%c' for object of type '%s'"
|
||||
msgstr "codice di formattaione '%c' sconosciuto per oggetto di tipo '%s'"
|
||||
msgid "unknown format code '%c' for object of type '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/compile.c
|
||||
msgid "unknown type"
|
||||
@ -3359,16 +3325,16 @@ msgid "unsupported format character '%c' (0x%x) at index %d"
|
||||
msgstr "carattere di formattazione '%c' (0x%x) non supportato all indice %d"
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "unsupported type for %q: '%s'"
|
||||
msgstr "tipo non supportato per %q: '%s'"
|
||||
msgid "unsupported type for %q: '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "unsupported type for operator"
|
||||
msgstr "tipo non supportato per l'operando"
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "unsupported types for %q: '%s', '%s'"
|
||||
msgstr "tipi non supportati per %q: '%s', '%s'"
|
||||
msgid "unsupported types for %q: '%q', '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/objint.c
|
||||
#, c-format
|
||||
@ -3449,6 +3415,103 @@ msgstr ""
|
||||
msgid "zi must be of shape (n_section, 2)"
|
||||
msgstr ""
|
||||
|
||||
#~ msgid "%q indices must be integers, not %s"
|
||||
#~ msgstr "gli indici %q devono essere interi, non %s"
|
||||
|
||||
#~ msgid "'%s' object does not support item assignment"
|
||||
#~ msgstr "oggeto '%s' non supporta assengnamento di item"
|
||||
|
||||
#~ msgid "'%s' object does not support item deletion"
|
||||
#~ msgstr "oggeto '%s' non supporta eliminamento di item"
|
||||
|
||||
#~ msgid "'%s' object has no attribute '%q'"
|
||||
#~ msgstr "l'oggetto '%s' non ha l'attributo '%q'"
|
||||
|
||||
#~ msgid "'%s' object is not an iterator"
|
||||
#~ msgstr "l'oggetto '%s' non è un iteratore"
|
||||
|
||||
#~ msgid "'%s' object is not callable"
|
||||
#~ msgstr "oggeto '%s' non è chiamabile"
|
||||
|
||||
#~ msgid "'%s' object is not iterable"
|
||||
#~ msgstr "l'oggetto '%s' non è iterabile"
|
||||
|
||||
#~ msgid "'%s' object is not subscriptable"
|
||||
#~ msgstr "oggeto '%s' non è "
|
||||
|
||||
#~ msgid "Running in safe mode! Auto-reload is off.\n"
|
||||
#~ msgstr "Modalità sicura in esecuzione! Auto-reload disattivato.\n"
|
||||
|
||||
#~ msgid "Running in safe mode! Not running saved code.\n"
|
||||
#~ msgstr "Modalità sicura in esecuzione! Codice salvato non in esecuzione.\n"
|
||||
|
||||
#~ msgid "__init__() should return None, not '%s'"
|
||||
#~ msgstr "__init__() deve ritornare None, non '%s'"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "can't convert %s to complex"
|
||||
#~ msgstr "non è possibile convertire a complex"
|
||||
|
||||
#~ msgid "can't convert %s to float"
|
||||
#~ msgstr "non è possibile convertire %s a float"
|
||||
|
||||
#~ msgid "can't convert %s to int"
|
||||
#~ msgstr "non è possibile convertire %s a int"
|
||||
|
||||
#~ msgid "can't convert NaN to int"
|
||||
#~ msgstr "impossibile convertire NaN in int"
|
||||
|
||||
#~ msgid "can't convert address to int"
|
||||
#~ msgstr "impossible convertire indirizzo in int"
|
||||
|
||||
#~ msgid "can't convert inf to int"
|
||||
#~ msgstr "impossibile convertire inf in int"
|
||||
|
||||
#~ msgid "can't convert to complex"
|
||||
#~ msgstr "non è possibile convertire a complex"
|
||||
|
||||
#~ msgid "can't convert to float"
|
||||
#~ msgstr "non è possibile convertire a float"
|
||||
|
||||
#~ msgid "can't convert to int"
|
||||
#~ msgstr "non è possibile convertire a int"
|
||||
|
||||
#~ msgid "object '%s' is not a tuple or list"
|
||||
#~ msgstr "oggetto '%s' non è una tupla o una lista"
|
||||
|
||||
#~ msgid "object of type '%s' has no len()"
|
||||
#~ msgstr "l'oggetto di tipo '%s' non implementa len()"
|
||||
|
||||
#~ msgid "pop from an empty PulseIn"
|
||||
#~ msgstr "pop sun un PulseIn vuoto"
|
||||
|
||||
#~ msgid "pop from an empty set"
|
||||
#~ msgstr "pop da un set vuoto"
|
||||
|
||||
#~ msgid "pop from empty list"
|
||||
#~ msgstr "pop da una lista vuota"
|
||||
|
||||
#~ msgid "popitem(): dictionary is empty"
|
||||
#~ msgstr "popitem(): il dizionario è vuoto"
|
||||
|
||||
#~ msgid "string index out of range"
|
||||
#~ msgstr "indice della stringa fuori intervallo"
|
||||
|
||||
#~ msgid "string indices must be integers, not %s"
|
||||
#~ msgstr "indici della stringa devono essere interi, non %s"
|
||||
|
||||
#~ msgid "struct: index out of range"
|
||||
#~ msgstr "struct: indice fuori intervallo"
|
||||
|
||||
#~ msgid "unknown format code '%c' for object of type '%s'"
|
||||
#~ msgstr "codice di formattaione '%c' sconosciuto per oggetto di tipo '%s'"
|
||||
|
||||
#~ msgid "unsupported type for %q: '%s'"
|
||||
#~ msgstr "tipo non supportato per %q: '%s'"
|
||||
|
||||
#~ msgid "unsupported types for %q: '%s', '%s'"
|
||||
#~ msgstr "tipi non supportati per %q: '%s', '%s'"
|
||||
|
||||
#~ msgid "AP required"
|
||||
#~ msgstr "AP richiesto"
|
||||
|
||||
|
539
locale/ja.po
539
locale/ja.po
File diff suppressed because it is too large
Load Diff
276
locale/ko.po
276
locale/ko.po
@ -6,7 +6,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-07-28 16:57-0500\n"
|
||||
"POT-Creation-Date: 2020-08-18 11:19-0400\n"
|
||||
"PO-Revision-Date: 2019-05-06 14:22-0700\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@ -66,13 +66,17 @@ msgstr ""
|
||||
msgid "%q in use"
|
||||
msgstr "%q 사용 중입니다"
|
||||
|
||||
#: py/obj.c
|
||||
#: extmod/moductypes.c ports/atmel-samd/common-hal/pulseio/PulseIn.c
|
||||
#: ports/cxd56/common-hal/pulseio/PulseIn.c
|
||||
#: ports/nrf/common-hal/pulseio/PulseIn.c
|
||||
#: ports/stm/common-hal/pulseio/PulseIn.c py/obj.c py/objstr.c
|
||||
#: py/objstrunicode.c
|
||||
msgid "%q index out of range"
|
||||
msgstr "%q 인덱스 범위를 벗어났습니다"
|
||||
|
||||
#: py/obj.c
|
||||
msgid "%q indices must be integers, not %s"
|
||||
msgstr "%q 인덱스는 %s 가 아닌 정수 여야합니다"
|
||||
msgid "%q indices must be integers, not %q"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/vectorio/Polygon.c
|
||||
msgid "%q list must be a list"
|
||||
@ -110,6 +114,42 @@ msgstr ""
|
||||
msgid "'%q' argument required"
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%q' object cannot assign attribute '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/proto.c
|
||||
msgid "'%q' object does not support '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
msgid "'%q' object does not support item assignment"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
msgid "'%q' object does not support item deletion"
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%q' object has no attribute '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%q' object is not an iterator"
|
||||
msgstr ""
|
||||
|
||||
#: py/objtype.c py/runtime.c
|
||||
msgid "'%q' object is not callable"
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%q' object is not iterable"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
msgid "'%q' object is not subscriptable"
|
||||
msgstr ""
|
||||
|
||||
#: py/emitinlinethumb.c py/emitinlinextensa.c
|
||||
#, c-format
|
||||
msgid "'%s' expects a label"
|
||||
@ -160,48 +200,6 @@ msgstr ""
|
||||
msgid "'%s' integer 0x%x does not fit in mask 0x%x"
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%s' object cannot assign attribute '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/proto.c
|
||||
msgid "'%s' object does not support '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "'%s' object does not support item assignment"
|
||||
msgstr "'%s' 을 지정할 수 없습니다"
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "'%s' object does not support item deletion"
|
||||
msgstr "'%s' 은 삭제할 수 없습니다"
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%s' object has no attribute '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
#, c-format
|
||||
msgid "'%s' object is not an iterator"
|
||||
msgstr "'%s' 은 수정할 수 없습니다"
|
||||
|
||||
#: py/objtype.c py/runtime.c
|
||||
#, c-format
|
||||
msgid "'%s' object is not callable"
|
||||
msgstr "'%s' 을 검색 할 수 없습니다"
|
||||
|
||||
#: py/runtime.c
|
||||
#, c-format
|
||||
msgid "'%s' object is not iterable"
|
||||
msgstr "'%s' 은 변경할 수 없습니다"
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "'%s' object is not subscriptable"
|
||||
msgstr ""
|
||||
|
||||
#: py/objstr.c
|
||||
msgid "'=' alignment not allowed in string format specifier"
|
||||
msgstr ""
|
||||
@ -451,6 +449,10 @@ msgstr ""
|
||||
msgid "Buffer length must be a multiple of 512"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c
|
||||
msgid "Buffer must be a multiple of 512 bytes"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/bitbangio/I2C.c shared-bindings/busio/I2C.c
|
||||
msgid "Buffer must be at least length 1"
|
||||
msgstr "잘못된 크기의 버퍼. >1 여야합니다"
|
||||
@ -641,6 +643,10 @@ msgstr ""
|
||||
msgid "Could not restart PWM"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/_bleio/Adapter.c
|
||||
msgid "Could not set address"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/pulseio/PWMOut.c
|
||||
msgid "Could not start PWM"
|
||||
msgstr ""
|
||||
@ -740,7 +746,7 @@ msgstr "Regex에 오류가 있습니다."
|
||||
|
||||
#: shared-bindings/aesio/aes.c shared-bindings/busio/SPI.c
|
||||
#: shared-bindings/microcontroller/Pin.c
|
||||
#: shared-bindings/neopixel_write/__init__.c shared-bindings/pulseio/PulseOut.c
|
||||
#: shared-bindings/neopixel_write/__init__.c
|
||||
#: shared-bindings/terminalio/Terminal.c
|
||||
msgid "Expected a %q"
|
||||
msgstr "%q 이 예상되었습니다."
|
||||
@ -823,6 +829,11 @@ msgstr ""
|
||||
msgid "File exists"
|
||||
msgstr ""
|
||||
|
||||
#: shared-module/framebufferio/FramebufferDisplay.c
|
||||
#, c-format
|
||||
msgid "Framebuffer requires %d bytes"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c
|
||||
msgid "Frequency captured is above capability. Capture Paused."
|
||||
msgstr ""
|
||||
@ -847,7 +858,7 @@ msgid "Group full"
|
||||
msgstr ""
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/I2C.c
|
||||
#: ports/stm/common-hal/busio/SPI.c
|
||||
#: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/sdioio/SDCard.c
|
||||
msgid "Hardware busy, try alternative pins"
|
||||
msgstr ""
|
||||
|
||||
@ -863,6 +874,10 @@ msgstr ""
|
||||
msgid "I2C Init Error"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/audiobusio/I2SOut.c
|
||||
msgid "I2SOut not available"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
#, c-format
|
||||
msgid "IV must be %d bytes long"
|
||||
@ -908,6 +923,11 @@ msgstr ""
|
||||
msgid "Invalid %q pin"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/busio/I2C.c ports/stm/common-hal/busio/SPI.c
|
||||
#: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/sdioio/SDCard.c
|
||||
msgid "Invalid %q pin selection"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/analogio/AnalogIn.c
|
||||
msgid "Invalid ADC Unit value"
|
||||
msgstr ""
|
||||
@ -920,24 +940,12 @@ msgstr ""
|
||||
msgid "Invalid DAC pin supplied"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/busio/I2C.c
|
||||
msgid "Invalid I2C pin selection"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/pulseio/PWMOut.c
|
||||
#: ports/cxd56/common-hal/pulseio/PWMOut.c
|
||||
#: ports/nrf/common-hal/pulseio/PWMOut.c shared-bindings/pulseio/PWMOut.c
|
||||
msgid "Invalid PWM frequency"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/busio/SPI.c
|
||||
msgid "Invalid SPI pin selection"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/busio/UART.c
|
||||
msgid "Invalid UART pin selection"
|
||||
msgstr ""
|
||||
|
||||
#: py/moduerrno.c shared-module/rgbmatrix/RGBMatrix.c
|
||||
msgid "Invalid argument"
|
||||
msgstr ""
|
||||
@ -1233,6 +1241,10 @@ msgstr ""
|
||||
msgid "Not playing"
|
||||
msgstr ""
|
||||
|
||||
#: main.c
|
||||
msgid "Not running saved code.\n"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/util.c
|
||||
msgid ""
|
||||
"Object has been deinitialized and can no longer be used. Create a new object."
|
||||
@ -1318,8 +1330,13 @@ msgstr ""
|
||||
msgid "Polygon needs at least 3 points"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/ps2io/Ps2.c
|
||||
msgid "Pop from an empty Ps2 buffer"
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseOut.c
|
||||
#: ports/cxd56/common-hal/pulseio/PulseOut.c
|
||||
#: ports/nrf/common-hal/pulseio/PulseOut.c
|
||||
#: ports/stm/common-hal/pulseio/PulseOut.c
|
||||
msgid ""
|
||||
"Port does not accept pins or frequency. "
|
||||
"Construct and pass a PWMOut Carrier instead"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/_bleio/Adapter.c
|
||||
@ -1334,6 +1351,10 @@ msgstr ""
|
||||
msgid "Pull not used when direction is output."
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/ref/pulseout-pre-timeralloc.c
|
||||
msgid "PulseOut not supported on this chip"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/os/__init__.c
|
||||
msgid "RNG DeInit Error"
|
||||
msgstr ""
|
||||
@ -1394,11 +1415,7 @@ msgid "Row entry must be digitalio.DigitalInOut"
|
||||
msgstr ""
|
||||
|
||||
#: main.c
|
||||
msgid "Running in safe mode! Auto-reload is off.\n"
|
||||
msgstr ""
|
||||
|
||||
#: main.c
|
||||
msgid "Running in safe mode! Not running saved code.\n"
|
||||
msgid "Running in safe mode! "
|
||||
msgstr ""
|
||||
|
||||
#: shared-module/sdcardio/SDCard.c
|
||||
@ -1410,6 +1427,16 @@ msgstr ""
|
||||
msgid "SDA or SCL needs a pull up"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c
|
||||
#, c-format
|
||||
msgid "SDIO GetCardInfo Error %d"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c
|
||||
#, c-format
|
||||
msgid "SDIO Init Error %d"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/busio/SPI.c
|
||||
msgid "SPI Init Error"
|
||||
msgstr ""
|
||||
@ -1760,8 +1787,7 @@ msgid "__init__() should return None"
|
||||
msgstr ""
|
||||
|
||||
#: py/objtype.c
|
||||
#, c-format
|
||||
msgid "__init__() should return None, not '%s'"
|
||||
msgid "__init__() should return None, not '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/objobject.c
|
||||
@ -1915,7 +1941,7 @@ msgstr ""
|
||||
msgid "bytes value out of range"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/bindings/samd/Clock.c
|
||||
#: ports/atmel-samd/bindings/samd/Clock.c ports/atmel-samd/common-hal/rtc/RTC.c
|
||||
msgid "calibration is out of range"
|
||||
msgstr ""
|
||||
|
||||
@ -1947,47 +1973,17 @@ msgstr ""
|
||||
msgid "can't assign to expression"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "can't convert %s to complex"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "can't convert %s to float"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "can't convert %s to int"
|
||||
#: py/obj.c py/objint.c shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
#: shared-module/_pixelbuf/PixelBuf.c
|
||||
msgid "can't convert %q to %q"
|
||||
msgstr ""
|
||||
|
||||
#: py/objstr.c
|
||||
msgid "can't convert '%q' object to %q implicitly"
|
||||
msgstr ""
|
||||
|
||||
#: py/objint.c
|
||||
msgid "can't convert NaN to int"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
msgid "can't convert address to int"
|
||||
msgstr ""
|
||||
|
||||
#: py/objint.c
|
||||
msgid "can't convert inf to int"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
msgid "can't convert to complex"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
msgid "can't convert to float"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
msgid "can't convert to int"
|
||||
msgid "can't convert to %q"
|
||||
msgstr ""
|
||||
|
||||
#: py/objstr.c
|
||||
@ -2395,7 +2391,7 @@ msgstr ""
|
||||
msgid "function missing required positional argument #%d"
|
||||
msgstr ""
|
||||
|
||||
#: py/argcheck.c py/bc.c py/objnamedtuple.c
|
||||
#: py/argcheck.c py/bc.c py/objnamedtuple.c shared-bindings/time/__init__.c
|
||||
#, c-format
|
||||
msgid "function takes %d positional arguments but %d were given"
|
||||
msgstr ""
|
||||
@ -2444,10 +2440,7 @@ msgstr ""
|
||||
msgid "index is out of bounds"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c
|
||||
#: ports/cxd56/common-hal/pulseio/PulseIn.c
|
||||
#: ports/nrf/common-hal/pulseio/PulseIn.c
|
||||
#: ports/stm/common-hal/pulseio/PulseIn.c py/obj.c
|
||||
#: py/obj.c
|
||||
msgid "index out of range"
|
||||
msgstr ""
|
||||
|
||||
@ -2803,8 +2796,7 @@ msgid "number of points must be at least 2"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "object '%s' is not a tuple or list"
|
||||
msgid "object '%q' is not a tuple or list"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
@ -2840,8 +2832,7 @@ msgid "object not iterable"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "object of type '%s' has no len()"
|
||||
msgid "object of type '%q' has no len()"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
@ -2934,20 +2925,9 @@ msgstr ""
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c
|
||||
#: ports/cxd56/common-hal/pulseio/PulseIn.c
|
||||
#: ports/nrf/common-hal/pulseio/PulseIn.c
|
||||
#: ports/stm/common-hal/pulseio/PulseIn.c
|
||||
msgid "pop from an empty PulseIn"
|
||||
msgstr ""
|
||||
|
||||
#: py/objset.c
|
||||
msgid "pop from an empty set"
|
||||
msgstr ""
|
||||
|
||||
#: py/objlist.c
|
||||
msgid "pop from empty list"
|
||||
msgstr ""
|
||||
|
||||
#: py/objdict.c
|
||||
msgid "popitem(): dictionary is empty"
|
||||
#: ports/stm/common-hal/pulseio/PulseIn.c py/objdict.c py/objlist.c py/objset.c
|
||||
#: shared-bindings/ps2io/Ps2.c
|
||||
msgid "pop from empty %q"
|
||||
msgstr ""
|
||||
|
||||
#: py/objint_mpz.c
|
||||
@ -3104,12 +3084,7 @@ msgid "stream operation not supported"
|
||||
msgstr ""
|
||||
|
||||
#: py/objstrunicode.c
|
||||
msgid "string index out of range"
|
||||
msgstr ""
|
||||
|
||||
#: py/objstrunicode.c
|
||||
#, c-format
|
||||
msgid "string indices must be integers, not %s"
|
||||
msgid "string indices must be integers, not %q"
|
||||
msgstr ""
|
||||
|
||||
#: py/stream.c
|
||||
@ -3120,10 +3095,6 @@ msgstr ""
|
||||
msgid "struct: cannot index"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/moductypes.c
|
||||
msgid "struct: index out of range"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/moductypes.c
|
||||
msgid "struct: no fields"
|
||||
msgstr ""
|
||||
@ -3193,7 +3164,7 @@ msgstr ""
|
||||
msgid "trapz is defined for 1D arrays of equal length"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/linalg/linalg.c py/objstr.c
|
||||
#: extmod/ulab/code/linalg/linalg.c
|
||||
msgid "tuple index out of range"
|
||||
msgstr ""
|
||||
|
||||
@ -3201,10 +3172,6 @@ msgstr ""
|
||||
msgid "tuple/list has wrong length"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/_pixelbuf/PixelBuf.c
|
||||
msgid "tuple/list required on RHS"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c ports/nrf/common-hal/busio/UART.c
|
||||
#: shared-bindings/busio/UART.c
|
||||
msgid "tx and rx cannot both be None"
|
||||
@ -3260,8 +3227,7 @@ msgid "unknown conversion specifier %c"
|
||||
msgstr ""
|
||||
|
||||
#: py/objstr.c
|
||||
#, c-format
|
||||
msgid "unknown format code '%c' for object of type '%s'"
|
||||
msgid "unknown format code '%c' for object of type '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/compile.c
|
||||
@ -3301,7 +3267,7 @@ msgid "unsupported format character '%c' (0x%x) at index %d"
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "unsupported type for %q: '%s'"
|
||||
msgid "unsupported type for %q: '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
@ -3309,7 +3275,7 @@ msgid "unsupported type for operator"
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "unsupported types for %q: '%s', '%s'"
|
||||
msgid "unsupported types for %q: '%q', '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/objint.c
|
||||
@ -3389,6 +3355,24 @@ msgstr ""
|
||||
msgid "zi must be of shape (n_section, 2)"
|
||||
msgstr ""
|
||||
|
||||
#~ msgid "%q indices must be integers, not %s"
|
||||
#~ msgstr "%q 인덱스는 %s 가 아닌 정수 여야합니다"
|
||||
|
||||
#~ msgid "'%s' object does not support item assignment"
|
||||
#~ msgstr "'%s' 을 지정할 수 없습니다"
|
||||
|
||||
#~ msgid "'%s' object does not support item deletion"
|
||||
#~ msgstr "'%s' 은 삭제할 수 없습니다"
|
||||
|
||||
#~ msgid "'%s' object is not an iterator"
|
||||
#~ msgstr "'%s' 은 수정할 수 없습니다"
|
||||
|
||||
#~ msgid "'%s' object is not callable"
|
||||
#~ msgstr "'%s' 을 검색 할 수 없습니다"
|
||||
|
||||
#~ msgid "'%s' object is not iterable"
|
||||
#~ msgstr "'%s' 은 변경할 수 없습니다"
|
||||
|
||||
#~ msgid "Can't add services in Central mode"
|
||||
#~ msgstr "센트랄(중앙) 모드에서는 서비스를 추가 할 수 없습니다"
|
||||
|
||||
|
423
locale/nl.po
423
locale/nl.po
@ -5,8 +5,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-07-28 16:57-0500\n"
|
||||
"PO-Revision-Date: 2020-07-27 21:27+0000\n"
|
||||
"POT-Creation-Date: 2020-08-18 11:19-0400\n"
|
||||
"PO-Revision-Date: 2020-08-10 19:59+0000\n"
|
||||
"Last-Translator: _fonzlate <vooralfred@gmail.com>\n"
|
||||
"Language-Team: none\n"
|
||||
"Language: nl\n"
|
||||
@ -72,13 +72,17 @@ msgstr "%q fout: %d"
|
||||
msgid "%q in use"
|
||||
msgstr "%q in gebruik"
|
||||
|
||||
#: py/obj.c
|
||||
#: extmod/moductypes.c ports/atmel-samd/common-hal/pulseio/PulseIn.c
|
||||
#: ports/cxd56/common-hal/pulseio/PulseIn.c
|
||||
#: ports/nrf/common-hal/pulseio/PulseIn.c
|
||||
#: ports/stm/common-hal/pulseio/PulseIn.c py/obj.c py/objstr.c
|
||||
#: py/objstrunicode.c
|
||||
msgid "%q index out of range"
|
||||
msgstr "%q index buiten bereik"
|
||||
|
||||
#: py/obj.c
|
||||
msgid "%q indices must be integers, not %s"
|
||||
msgstr "%q indexen moeten integers zijn, niet %s"
|
||||
msgid "%q indices must be integers, not %q"
|
||||
msgstr "%q indices moeten integers zijn, geen %q"
|
||||
|
||||
#: shared-bindings/vectorio/Polygon.c
|
||||
msgid "%q list must be a list"
|
||||
@ -116,6 +120,42 @@ msgstr "%q() verwacht %d positionele argumenten maar kreeg %d"
|
||||
msgid "'%q' argument required"
|
||||
msgstr "'%q' argument vereist"
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%q' object cannot assign attribute '%q'"
|
||||
msgstr "'%q' object kan attribuut ' %q' niet toewijzen"
|
||||
|
||||
#: py/proto.c
|
||||
msgid "'%q' object does not support '%q'"
|
||||
msgstr "'%q' object ondersteunt geen '%q'"
|
||||
|
||||
#: py/obj.c
|
||||
msgid "'%q' object does not support item assignment"
|
||||
msgstr "'%q' object ondersteunt toewijzing van items niet"
|
||||
|
||||
#: py/obj.c
|
||||
msgid "'%q' object does not support item deletion"
|
||||
msgstr "'%q' object ondersteunt verwijderen van items niet"
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%q' object has no attribute '%q'"
|
||||
msgstr "'%q' object heeft geen attribuut '%q'"
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%q' object is not an iterator"
|
||||
msgstr "'%q' object is geen iterator"
|
||||
|
||||
#: py/objtype.c py/runtime.c
|
||||
msgid "'%q' object is not callable"
|
||||
msgstr "'%q' object is niet aanroepbaar"
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%q' object is not iterable"
|
||||
msgstr "'%q' object is niet itereerbaar"
|
||||
|
||||
#: py/obj.c
|
||||
msgid "'%q' object is not subscriptable"
|
||||
msgstr "kan niet abonneren op '%q' object"
|
||||
|
||||
#: py/emitinlinethumb.c py/emitinlinextensa.c
|
||||
#, c-format
|
||||
msgid "'%s' expects a label"
|
||||
@ -166,48 +206,6 @@ msgstr "'%s' integer %d is niet in bereik %d..%d"
|
||||
msgid "'%s' integer 0x%x does not fit in mask 0x%x"
|
||||
msgstr "'%s' integer 0x%x past niet in mask 0x%x"
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%s' object cannot assign attribute '%q'"
|
||||
msgstr "'%s' object kan niet aan attribuut '%q' toewijzen"
|
||||
|
||||
#: py/proto.c
|
||||
msgid "'%s' object does not support '%q'"
|
||||
msgstr "'%s' object ondersteunt '%q' niet"
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "'%s' object does not support item assignment"
|
||||
msgstr "'%s' object ondersteunt item toewijzing niet"
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "'%s' object does not support item deletion"
|
||||
msgstr "'%s' object ondersteunt item verwijdering niet"
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%s' object has no attribute '%q'"
|
||||
msgstr "'%s' object heeft geen attribuut '%q'"
|
||||
|
||||
#: py/runtime.c
|
||||
#, c-format
|
||||
msgid "'%s' object is not an iterator"
|
||||
msgstr "'%s' object is geen iterator"
|
||||
|
||||
#: py/objtype.c py/runtime.c
|
||||
#, c-format
|
||||
msgid "'%s' object is not callable"
|
||||
msgstr "'%s' object is niet aanroepbaar"
|
||||
|
||||
#: py/runtime.c
|
||||
#, c-format
|
||||
msgid "'%s' object is not iterable"
|
||||
msgstr "'%s' object is niet itereerbaar"
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "'%s' object is not subscriptable"
|
||||
msgstr "'%s' object is niet onderschrijfbaar"
|
||||
|
||||
#: py/objstr.c
|
||||
msgid "'=' alignment not allowed in string format specifier"
|
||||
msgstr "'=' uitlijning niet toegestaan in string format specifier"
|
||||
@ -226,7 +224,7 @@ msgstr "'await' buiten de functie"
|
||||
|
||||
#: py/compile.c
|
||||
msgid "'await', 'async for' or 'async with' outside async function"
|
||||
msgstr ""
|
||||
msgstr "'await', 'async for' of 'async with' buiten async functie"
|
||||
|
||||
#: py/compile.c
|
||||
msgid "'break' outside loop"
|
||||
@ -457,6 +455,12 @@ msgstr "Buffer lengte %d te groot. Het moet kleiner zijn dan %d"
|
||||
msgid "Buffer length must be a multiple of 512"
|
||||
msgstr "Buffer lengte moet een veelvoud van 512 zijn"
|
||||
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c
|
||||
#, fuzzy
|
||||
#| msgid "Buffer length must be a multiple of 512"
|
||||
msgid "Buffer must be a multiple of 512 bytes"
|
||||
msgstr "Buffer lengte moet een veelvoud van 512 zijn"
|
||||
|
||||
#: shared-bindings/bitbangio/I2C.c shared-bindings/busio/I2C.c
|
||||
msgid "Buffer must be at least length 1"
|
||||
msgstr "Buffer moet op zijn minst lengte 1 zijn"
|
||||
@ -653,6 +657,12 @@ msgstr "Kan timer niet her-initialiseren"
|
||||
msgid "Could not restart PWM"
|
||||
msgstr "Kan PWM niet herstarten"
|
||||
|
||||
#: shared-bindings/_bleio/Adapter.c
|
||||
#, fuzzy
|
||||
#| msgid "Could not start PWM"
|
||||
msgid "Could not set address"
|
||||
msgstr "Kan PWM niet starten"
|
||||
|
||||
#: ports/stm/common-hal/pulseio/PWMOut.c
|
||||
msgid "Could not start PWM"
|
||||
msgstr "Kan PWM niet starten"
|
||||
@ -752,7 +762,7 @@ msgstr "Fout in regex"
|
||||
|
||||
#: shared-bindings/aesio/aes.c shared-bindings/busio/SPI.c
|
||||
#: shared-bindings/microcontroller/Pin.c
|
||||
#: shared-bindings/neopixel_write/__init__.c shared-bindings/pulseio/PulseOut.c
|
||||
#: shared-bindings/neopixel_write/__init__.c
|
||||
#: shared-bindings/terminalio/Terminal.c
|
||||
msgid "Expected a %q"
|
||||
msgstr "Verwacht een %q"
|
||||
@ -835,6 +845,11 @@ msgstr "Schrijven naar interne flash mislukt."
|
||||
msgid "File exists"
|
||||
msgstr "Bestand bestaat"
|
||||
|
||||
#: shared-module/framebufferio/FramebufferDisplay.c
|
||||
#, c-format
|
||||
msgid "Framebuffer requires %d bytes"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c
|
||||
msgid "Frequency captured is above capability. Capture Paused."
|
||||
msgstr ""
|
||||
@ -861,7 +876,7 @@ msgid "Group full"
|
||||
msgstr "Groep is vol"
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/I2C.c
|
||||
#: ports/stm/common-hal/busio/SPI.c
|
||||
#: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/sdioio/SDCard.c
|
||||
msgid "Hardware busy, try alternative pins"
|
||||
msgstr "Hardware bezig, probeer alternatieve pinnen"
|
||||
|
||||
@ -877,6 +892,10 @@ msgstr "I/O actie op gesloten bestand"
|
||||
msgid "I2C Init Error"
|
||||
msgstr "I2C Init Fout"
|
||||
|
||||
#: shared-bindings/audiobusio/I2SOut.c
|
||||
msgid "I2SOut not available"
|
||||
msgstr "I2SOut is niet beschikbaar"
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
#, c-format
|
||||
msgid "IV must be %d bytes long"
|
||||
@ -924,6 +943,13 @@ msgstr "Ongeldige %q"
|
||||
msgid "Invalid %q pin"
|
||||
msgstr "Ongeldige %q pin"
|
||||
|
||||
#: ports/stm/common-hal/busio/I2C.c ports/stm/common-hal/busio/SPI.c
|
||||
#: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/sdioio/SDCard.c
|
||||
#, fuzzy
|
||||
#| msgid "Invalid I2C pin selection"
|
||||
msgid "Invalid %q pin selection"
|
||||
msgstr "Ongeldige I2C pin selectie"
|
||||
|
||||
#: ports/stm/common-hal/analogio/AnalogIn.c
|
||||
msgid "Invalid ADC Unit value"
|
||||
msgstr "Ongeldige ADC Unit waarde"
|
||||
@ -936,24 +962,12 @@ msgstr "Ongeldig BMP bestand"
|
||||
msgid "Invalid DAC pin supplied"
|
||||
msgstr "Ongeldige DAC pin opgegeven"
|
||||
|
||||
#: ports/stm/common-hal/busio/I2C.c
|
||||
msgid "Invalid I2C pin selection"
|
||||
msgstr "Ongeldige I2C pin selectie"
|
||||
|
||||
#: ports/atmel-samd/common-hal/pulseio/PWMOut.c
|
||||
#: ports/cxd56/common-hal/pulseio/PWMOut.c
|
||||
#: ports/nrf/common-hal/pulseio/PWMOut.c shared-bindings/pulseio/PWMOut.c
|
||||
msgid "Invalid PWM frequency"
|
||||
msgstr "Ongeldige PWM frequentie"
|
||||
|
||||
#: ports/stm/common-hal/busio/SPI.c
|
||||
msgid "Invalid SPI pin selection"
|
||||
msgstr "Ongeldige SPI pin selectie"
|
||||
|
||||
#: ports/stm/common-hal/busio/UART.c
|
||||
msgid "Invalid UART pin selection"
|
||||
msgstr "Ongeldige UART pin selectie"
|
||||
|
||||
#: py/moduerrno.c shared-module/rgbmatrix/RGBMatrix.c
|
||||
msgid "Invalid argument"
|
||||
msgstr "Ongeldig argument"
|
||||
@ -1249,6 +1263,10 @@ msgstr "Niet verbonden"
|
||||
msgid "Not playing"
|
||||
msgstr "Wordt niet afgespeeld"
|
||||
|
||||
#: main.c
|
||||
msgid "Not running saved code.\n"
|
||||
msgstr "Opgeslagen code wordt niet uitgevoerd.\n"
|
||||
|
||||
#: shared-bindings/util.c
|
||||
msgid ""
|
||||
"Object has been deinitialized and can no longer be used. Create a new object."
|
||||
@ -1346,9 +1364,14 @@ msgstr "En iedere module in het bestandssysteem\n"
|
||||
msgid "Polygon needs at least 3 points"
|
||||
msgstr "Polygon heeft op zijn minst 3 punten nodig"
|
||||
|
||||
#: shared-bindings/ps2io/Ps2.c
|
||||
msgid "Pop from an empty Ps2 buffer"
|
||||
msgstr "Pop van een lege Ps2 buffer"
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseOut.c
|
||||
#: ports/cxd56/common-hal/pulseio/PulseOut.c
|
||||
#: ports/nrf/common-hal/pulseio/PulseOut.c
|
||||
#: ports/stm/common-hal/pulseio/PulseOut.c
|
||||
msgid ""
|
||||
"Port does not accept pins or frequency. "
|
||||
"Construct and pass a PWMOut Carrier instead"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/_bleio/Adapter.c
|
||||
msgid "Prefix buffer must be on the heap"
|
||||
@ -1364,6 +1387,10 @@ msgstr ""
|
||||
msgid "Pull not used when direction is output."
|
||||
msgstr "Pull niet gebruikt wanneer de richting output is."
|
||||
|
||||
#: ports/stm/ref/pulseout-pre-timeralloc.c
|
||||
msgid "PulseOut not supported on this chip"
|
||||
msgstr "PulseOut niet ondersteund door deze chip"
|
||||
|
||||
#: ports/stm/common-hal/os/__init__.c
|
||||
msgid "RNG DeInit Error"
|
||||
msgstr "RNG DeInit Fout"
|
||||
@ -1424,12 +1451,8 @@ msgid "Row entry must be digitalio.DigitalInOut"
|
||||
msgstr "Rij invoeging moet digitalio.DigitalInOut zijn"
|
||||
|
||||
#: main.c
|
||||
msgid "Running in safe mode! Auto-reload is off.\n"
|
||||
msgstr "Draaiende in veilige modus! Auto-herlaad is uit.\n"
|
||||
|
||||
#: main.c
|
||||
msgid "Running in safe mode! Not running saved code.\n"
|
||||
msgstr "Draaiende in veilige modus! Opgeslagen code wordt niet uitgevoerd.\n"
|
||||
msgid "Running in safe mode! "
|
||||
msgstr "Veilige modus wordt uitgevoerd! "
|
||||
|
||||
#: shared-module/sdcardio/SDCard.c
|
||||
msgid "SD card CSD format not supported"
|
||||
@ -1440,6 +1463,17 @@ msgstr "SD kaart CSD formaat niet ondersteund"
|
||||
msgid "SDA or SCL needs a pull up"
|
||||
msgstr "SDA of SCL hebben een pullup nodig"
|
||||
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c
|
||||
#, c-format
|
||||
msgid "SDIO GetCardInfo Error %d"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c
|
||||
#, fuzzy, c-format
|
||||
#| msgid "SPI Init Error"
|
||||
msgid "SDIO Init Error %d"
|
||||
msgstr "SPI Init Fout"
|
||||
|
||||
#: ports/stm/common-hal/busio/SPI.c
|
||||
msgid "SPI Init Error"
|
||||
msgstr "SPI Init Fout"
|
||||
@ -1810,9 +1844,8 @@ msgid "__init__() should return None"
|
||||
msgstr "__init __ () zou None moeten retourneren"
|
||||
|
||||
#: py/objtype.c
|
||||
#, c-format
|
||||
msgid "__init__() should return None, not '%s'"
|
||||
msgstr "__init __ () zou None moeten retouneren, niet '%s'"
|
||||
msgid "__init__() should return None, not '%q'"
|
||||
msgstr "__init__() moet None teruggeven, niet '%q'"
|
||||
|
||||
#: py/objobject.c
|
||||
msgid "__new__ arg must be a user-type"
|
||||
@ -1857,7 +1890,7 @@ msgstr "argument heeft onjuist type"
|
||||
|
||||
#: extmod/ulab/code/linalg/linalg.c
|
||||
msgid "argument must be ndarray"
|
||||
msgstr ""
|
||||
msgstr "argument moet ndarray zijn"
|
||||
|
||||
#: py/argcheck.c shared-bindings/_stage/__init__.c
|
||||
#: shared-bindings/digitalio/DigitalInOut.c shared-bindings/gamepad/GamePad.c
|
||||
@ -1965,7 +1998,7 @@ msgstr "butes > 8 niet ondersteund"
|
||||
msgid "bytes value out of range"
|
||||
msgstr "bytes waarde buiten bereik"
|
||||
|
||||
#: ports/atmel-samd/bindings/samd/Clock.c
|
||||
#: ports/atmel-samd/bindings/samd/Clock.c ports/atmel-samd/common-hal/rtc/RTC.c
|
||||
msgid "calibration is out of range"
|
||||
msgstr "calibration is buiten bereik"
|
||||
|
||||
@ -1998,48 +2031,18 @@ msgstr ""
|
||||
msgid "can't assign to expression"
|
||||
msgstr "kan niet toewijzen aan expressie"
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "can't convert %s to complex"
|
||||
msgstr "kan %s niet converteren naar een complex"
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "can't convert %s to float"
|
||||
msgstr "kan %s niet omzetten naar een float"
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "can't convert %s to int"
|
||||
msgstr "kan %s niet omzetten naar een int"
|
||||
#: py/obj.c py/objint.c shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
#: shared-module/_pixelbuf/PixelBuf.c
|
||||
msgid "can't convert %q to %q"
|
||||
msgstr "kan %q niet naar %q converteren"
|
||||
|
||||
#: py/objstr.c
|
||||
msgid "can't convert '%q' object to %q implicitly"
|
||||
msgstr "kan '%q' object niet omzetten naar %q impliciet"
|
||||
|
||||
#: py/objint.c
|
||||
msgid "can't convert NaN to int"
|
||||
msgstr "kan NaN niet omzetten naar int"
|
||||
|
||||
#: shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
msgid "can't convert address to int"
|
||||
msgstr "kan adres niet omzetten naar int"
|
||||
|
||||
#: py/objint.c
|
||||
msgid "can't convert inf to int"
|
||||
msgstr "kan inf niet omzetten naar int"
|
||||
|
||||
#: py/obj.c
|
||||
msgid "can't convert to complex"
|
||||
msgstr "kan niet omzetten naar complex"
|
||||
|
||||
#: py/obj.c
|
||||
msgid "can't convert to float"
|
||||
msgstr "kan niet omzetten naar float"
|
||||
|
||||
#: py/obj.c
|
||||
msgid "can't convert to int"
|
||||
msgstr "kan niet omzetten naar int"
|
||||
msgid "can't convert to %q"
|
||||
msgstr "kan niet naar %q converteren"
|
||||
|
||||
#: py/objstr.c
|
||||
msgid "can't convert to str implicitly"
|
||||
@ -2449,7 +2452,7 @@ msgstr "functie mist vereist sleutelwoord argument \"%q"
|
||||
msgid "function missing required positional argument #%d"
|
||||
msgstr "functie mist vereist positie-argument #%d"
|
||||
|
||||
#: py/argcheck.c py/bc.c py/objnamedtuple.c
|
||||
#: py/argcheck.c py/bc.c py/objnamedtuple.c shared-bindings/time/__init__.c
|
||||
#, c-format
|
||||
msgid "function takes %d positional arguments but %d were given"
|
||||
msgstr ""
|
||||
@ -2499,10 +2502,7 @@ msgstr "vulling (padding) is onjuist"
|
||||
msgid "index is out of bounds"
|
||||
msgstr "index is buiten bereik"
|
||||
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c
|
||||
#: ports/cxd56/common-hal/pulseio/PulseIn.c
|
||||
#: ports/nrf/common-hal/pulseio/PulseIn.c
|
||||
#: ports/stm/common-hal/pulseio/PulseIn.c py/obj.c
|
||||
#: py/obj.c
|
||||
msgid "index out of range"
|
||||
msgstr "index is buiten bereik"
|
||||
|
||||
@ -2564,7 +2564,7 @@ msgstr "integer vereist"
|
||||
|
||||
#: extmod/ulab/code/approx/approx.c
|
||||
msgid "interp is defined for 1D arrays of equal length"
|
||||
msgstr "interp is gedefinieerd for eendimensionale arrays van gelijke lengte"
|
||||
msgstr "interp is gedefinieerd voor eendimensionale arrays van gelijke lengte"
|
||||
|
||||
#: shared-bindings/_bleio/Adapter.c
|
||||
#, c-format
|
||||
@ -2861,9 +2861,8 @@ msgid "number of points must be at least 2"
|
||||
msgstr "aantal punten moet minimaal 2 zijn"
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "object '%s' is not a tuple or list"
|
||||
msgstr "object '%s' is geen tuple of lijst"
|
||||
msgid "object '%q' is not a tuple or list"
|
||||
msgstr "object '%q' is geen tuple of lijst"
|
||||
|
||||
#: py/obj.c
|
||||
msgid "object does not support item assignment"
|
||||
@ -2898,9 +2897,8 @@ msgid "object not iterable"
|
||||
msgstr "object niet itereerbaar"
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "object of type '%s' has no len()"
|
||||
msgstr "object van type '%s' heeft geen len()"
|
||||
msgid "object of type '%q' has no len()"
|
||||
msgstr "object van type '%q' heeft geen len()"
|
||||
|
||||
#: py/obj.c
|
||||
msgid "object with buffer protocol required"
|
||||
@ -2993,21 +2991,10 @@ msgstr ""
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c
|
||||
#: ports/cxd56/common-hal/pulseio/PulseIn.c
|
||||
#: ports/nrf/common-hal/pulseio/PulseIn.c
|
||||
#: ports/stm/common-hal/pulseio/PulseIn.c
|
||||
msgid "pop from an empty PulseIn"
|
||||
msgstr "pop van een lege PulseIn"
|
||||
|
||||
#: py/objset.c
|
||||
msgid "pop from an empty set"
|
||||
msgstr "pop van een lege set"
|
||||
|
||||
#: py/objlist.c
|
||||
msgid "pop from empty list"
|
||||
msgstr "pop van een lege lijst"
|
||||
|
||||
#: py/objdict.c
|
||||
msgid "popitem(): dictionary is empty"
|
||||
msgstr "popitem(): dictionary is leeg"
|
||||
#: ports/stm/common-hal/pulseio/PulseIn.c py/objdict.c py/objlist.c py/objset.c
|
||||
#: shared-bindings/ps2io/Ps2.c
|
||||
msgid "pop from empty %q"
|
||||
msgstr "pop van een lege %q"
|
||||
|
||||
#: py/objint_mpz.c
|
||||
msgid "pow() 3rd argument cannot be 0"
|
||||
@ -3165,13 +3152,8 @@ msgid "stream operation not supported"
|
||||
msgstr "stream operatie niet ondersteund"
|
||||
|
||||
#: py/objstrunicode.c
|
||||
msgid "string index out of range"
|
||||
msgstr "string index buiten bereik"
|
||||
|
||||
#: py/objstrunicode.c
|
||||
#, c-format
|
||||
msgid "string indices must be integers, not %s"
|
||||
msgstr "string indices moeten integer zijn, niet %s"
|
||||
msgid "string indices must be integers, not %q"
|
||||
msgstr "string indices moeten integers zijn, geen %q"
|
||||
|
||||
#: py/stream.c
|
||||
msgid "string not supported; use bytes or bytearray"
|
||||
@ -3181,10 +3163,6 @@ msgstr "string niet ondersteund; gebruik bytes of bytearray"
|
||||
msgid "struct: cannot index"
|
||||
msgstr "struct: kan niet indexeren"
|
||||
|
||||
#: extmod/moductypes.c
|
||||
msgid "struct: index out of range"
|
||||
msgstr "struct: index buiten bereik"
|
||||
|
||||
#: extmod/moductypes.c
|
||||
msgid "struct: no fields"
|
||||
msgstr "struct: geen velden"
|
||||
@ -3252,9 +3230,9 @@ msgstr "te veel waarden om uit te pakken (%d verwacht)"
|
||||
|
||||
#: extmod/ulab/code/approx/approx.c
|
||||
msgid "trapz is defined for 1D arrays of equal length"
|
||||
msgstr ""
|
||||
msgstr "trapz is gedefinieerd voor eendimensionale arrays van gelijke lengte"
|
||||
|
||||
#: extmod/ulab/code/linalg/linalg.c py/objstr.c
|
||||
#: extmod/ulab/code/linalg/linalg.c
|
||||
msgid "tuple index out of range"
|
||||
msgstr "tuple index buiten bereik"
|
||||
|
||||
@ -3262,10 +3240,6 @@ msgstr "tuple index buiten bereik"
|
||||
msgid "tuple/list has wrong length"
|
||||
msgstr "tuple of lijst heeft onjuiste lengte"
|
||||
|
||||
#: shared-bindings/_pixelbuf/PixelBuf.c
|
||||
msgid "tuple/list required on RHS"
|
||||
msgstr "tuple of lijst vereist op RHS"
|
||||
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c ports/nrf/common-hal/busio/UART.c
|
||||
#: shared-bindings/busio/UART.c
|
||||
msgid "tx and rx cannot both be None"
|
||||
@ -3321,9 +3295,8 @@ msgid "unknown conversion specifier %c"
|
||||
msgstr "onbekende conversiespecificatie %c"
|
||||
|
||||
#: py/objstr.c
|
||||
#, c-format
|
||||
msgid "unknown format code '%c' for object of type '%s'"
|
||||
msgstr "onbekende formaatcode '%c' voor object van type '%s'"
|
||||
msgid "unknown format code '%c' for object of type '%q'"
|
||||
msgstr "onbekende formaatcode '%c' voor object van type '%q'"
|
||||
|
||||
#: py/compile.c
|
||||
msgid "unknown type"
|
||||
@ -3362,16 +3335,16 @@ msgid "unsupported format character '%c' (0x%x) at index %d"
|
||||
msgstr "niet ondersteund formaatkarakter '%c' (0x%x) op index %d"
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "unsupported type for %q: '%s'"
|
||||
msgstr "niet ondersteund type voor %q: '%s'"
|
||||
msgid "unsupported type for %q: '%q'"
|
||||
msgstr "niet ondersteund type voor %q: '%q'"
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "unsupported type for operator"
|
||||
msgstr "niet ondersteund type voor operator"
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "unsupported types for %q: '%s', '%s'"
|
||||
msgstr "niet ondersteunde types voor %q: '%s', '%s'"
|
||||
msgid "unsupported types for %q: '%q', '%q'"
|
||||
msgstr "niet ondersteunde types voor %q: '%q', '%q'"
|
||||
|
||||
#: py/objint.c
|
||||
#, c-format
|
||||
@ -3384,7 +3357,7 @@ msgstr "value_count moet groter dan 0 zijn"
|
||||
|
||||
#: extmod/ulab/code/linalg/linalg.c
|
||||
msgid "vectors must have same lengths"
|
||||
msgstr ""
|
||||
msgstr "vectoren moeten van gelijke lengte zijn"
|
||||
|
||||
#: shared-bindings/watchdog/WatchDogTimer.c
|
||||
msgid "watchdog timeout must be greater than 0"
|
||||
@ -3450,15 +3423,124 @@ msgstr "zi moet van type float zijn"
|
||||
msgid "zi must be of shape (n_section, 2)"
|
||||
msgstr "zi moet vorm (n_section, 2) hebben"
|
||||
|
||||
#~ msgid "'%q' object is not bytes-like"
|
||||
#~ msgstr "'%q' object is niet bytes-achtig"
|
||||
#~ msgid "tuple/list required on RHS"
|
||||
#~ msgstr "tuple of lijst vereist op RHS"
|
||||
|
||||
#~ msgid "Invalid SPI pin selection"
|
||||
#~ msgstr "Ongeldige SPI pin selectie"
|
||||
|
||||
#~ msgid "Invalid UART pin selection"
|
||||
#~ msgstr "Ongeldige UART pin selectie"
|
||||
|
||||
#~ msgid "%q indices must be integers, not %s"
|
||||
#~ msgstr "%q indexen moeten integers zijn, niet %s"
|
||||
|
||||
#~ msgid "'%s' object cannot assign attribute '%q'"
|
||||
#~ msgstr "'%s' object kan niet aan attribuut '%q' toewijzen"
|
||||
|
||||
#~ msgid "'%s' object does not support '%q'"
|
||||
#~ msgstr "'%s' object ondersteunt '%q' niet"
|
||||
|
||||
#~ msgid "'%s' object does not support item assignment"
|
||||
#~ msgstr "'%s' object ondersteunt item toewijzing niet"
|
||||
|
||||
#~ msgid "'%s' object does not support item deletion"
|
||||
#~ msgstr "'%s' object ondersteunt item verwijdering niet"
|
||||
|
||||
#~ msgid "'%s' object has no attribute '%q'"
|
||||
#~ msgstr "'%s' object heeft geen attribuut '%q'"
|
||||
|
||||
#~ msgid "'%s' object is not an iterator"
|
||||
#~ msgstr "'%s' object is geen iterator"
|
||||
|
||||
#~ msgid "'%s' object is not callable"
|
||||
#~ msgstr "'%s' object is niet aanroepbaar"
|
||||
|
||||
#~ msgid "'%s' object is not iterable"
|
||||
#~ msgstr "'%s' object is niet itereerbaar"
|
||||
|
||||
#~ msgid "'%s' object is not subscriptable"
|
||||
#~ msgstr "'%s' object is niet onderschrijfbaar"
|
||||
|
||||
#~ msgid "Pop from an empty Ps2 buffer"
|
||||
#~ msgstr "Pop van een lege Ps2 buffer"
|
||||
|
||||
#~ msgid "Running in safe mode! Auto-reload is off.\n"
|
||||
#~ msgstr "Draaiende in veilige modus! Auto-herlaad is uit.\n"
|
||||
|
||||
#~ msgid "Running in safe mode! Not running saved code.\n"
|
||||
#~ msgstr ""
|
||||
#~ "Draaiende in veilige modus! Opgeslagen code wordt niet uitgevoerd.\n"
|
||||
|
||||
#~ msgid "__init__() should return None, not '%s'"
|
||||
#~ msgstr "__init __ () zou None moeten retouneren, niet '%s'"
|
||||
|
||||
#~ msgid "can't convert %s to complex"
|
||||
#~ msgstr "kan %s niet converteren naar een complex"
|
||||
|
||||
#~ msgid "can't convert %s to float"
|
||||
#~ msgstr "kan %s niet omzetten naar een float"
|
||||
|
||||
#~ msgid "can't convert %s to int"
|
||||
#~ msgstr "kan %s niet omzetten naar een int"
|
||||
|
||||
#~ msgid "can't convert NaN to int"
|
||||
#~ msgstr "kan NaN niet omzetten naar int"
|
||||
|
||||
#~ msgid "can't convert address to int"
|
||||
#~ msgstr "kan adres niet omzetten naar int"
|
||||
|
||||
#~ msgid "can't convert inf to int"
|
||||
#~ msgstr "kan inf niet omzetten naar int"
|
||||
|
||||
#~ msgid "can't convert to complex"
|
||||
#~ msgstr "kan niet omzetten naar complex"
|
||||
|
||||
#~ msgid "can't convert to float"
|
||||
#~ msgstr "kan niet omzetten naar float"
|
||||
|
||||
#~ msgid "can't convert to int"
|
||||
#~ msgstr "kan niet omzetten naar int"
|
||||
|
||||
#~ msgid "object '%s' is not a tuple or list"
|
||||
#~ msgstr "object '%s' is geen tuple of lijst"
|
||||
|
||||
#~ msgid "object of type '%s' has no len()"
|
||||
#~ msgstr "object van type '%s' heeft geen len()"
|
||||
|
||||
#~ msgid "pop from an empty PulseIn"
|
||||
#~ msgstr "pop van een lege PulseIn"
|
||||
|
||||
#~ msgid "pop from an empty set"
|
||||
#~ msgstr "pop van een lege set"
|
||||
|
||||
#~ msgid "pop from empty list"
|
||||
#~ msgstr "pop van een lege lijst"
|
||||
|
||||
#~ msgid "popitem(): dictionary is empty"
|
||||
#~ msgstr "popitem(): dictionary is leeg"
|
||||
|
||||
#~ msgid "string index out of range"
|
||||
#~ msgstr "string index buiten bereik"
|
||||
|
||||
#~ msgid "string indices must be integers, not %s"
|
||||
#~ msgstr "string indices moeten integer zijn, niet %s"
|
||||
|
||||
#~ msgid "struct: index out of range"
|
||||
#~ msgstr "struct: index buiten bereik"
|
||||
|
||||
#~ msgid "unknown format code '%c' for object of type '%s'"
|
||||
#~ msgstr "onbekende formaatcode '%c' voor object van type '%s'"
|
||||
|
||||
#~ msgid "unsupported type for %q: '%s'"
|
||||
#~ msgstr "niet ondersteund type voor %q: '%s'"
|
||||
|
||||
#~ msgid "unsupported types for %q: '%s', '%s'"
|
||||
#~ msgstr "niet ondersteunde types voor %q: '%s', '%s'"
|
||||
|
||||
#~ msgid "'async for' or 'async with' outside async function"
|
||||
#~ msgstr "'async for' of 'async with' buiten async functie"
|
||||
|
||||
#~ msgid "PulseOut not supported on this chip"
|
||||
#~ msgstr "PulseOut niet ondersteund door deze chip"
|
||||
|
||||
#~ msgid "PulseIn not supported on this chip"
|
||||
#~ msgstr "PusleIn niet ondersteund door deze chip"
|
||||
|
||||
@ -3485,3 +3567,6 @@ msgstr "zi moet vorm (n_section, 2) hebben"
|
||||
|
||||
#~ msgid "must specify all of sck/mosi/miso"
|
||||
#~ msgstr "sck/mosi/miso moeten alle gespecificeerd worden"
|
||||
|
||||
#~ msgid "'%q' object is not bytes-like"
|
||||
#~ msgstr "'%q' object is niet bytes-achtig"
|
||||
|
380
locale/pl.po
380
locale/pl.po
@ -6,7 +6,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-07-28 16:57-0500\n"
|
||||
"POT-Creation-Date: 2020-08-18 11:19-0400\n"
|
||||
"PO-Revision-Date: 2019-03-19 18:37-0700\n"
|
||||
"Last-Translator: Radomir Dopieralski <circuitpython@sheep.art.pl>\n"
|
||||
"Language-Team: pl\n"
|
||||
@ -66,13 +66,17 @@ msgstr ""
|
||||
msgid "%q in use"
|
||||
msgstr "%q w użyciu"
|
||||
|
||||
#: py/obj.c
|
||||
#: extmod/moductypes.c ports/atmel-samd/common-hal/pulseio/PulseIn.c
|
||||
#: ports/cxd56/common-hal/pulseio/PulseIn.c
|
||||
#: ports/nrf/common-hal/pulseio/PulseIn.c
|
||||
#: ports/stm/common-hal/pulseio/PulseIn.c py/obj.c py/objstr.c
|
||||
#: py/objstrunicode.c
|
||||
msgid "%q index out of range"
|
||||
msgstr "%q poza zakresem"
|
||||
|
||||
#: py/obj.c
|
||||
msgid "%q indices must be integers, not %s"
|
||||
msgstr "%q indeks musi być liczbą całkowitą, a nie %s"
|
||||
msgid "%q indices must be integers, not %q"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/vectorio/Polygon.c
|
||||
msgid "%q list must be a list"
|
||||
@ -110,6 +114,42 @@ msgstr "%q() bierze %d argumentów pozycyjnych, lecz podano %d"
|
||||
msgid "'%q' argument required"
|
||||
msgstr "'%q' wymaga argumentu"
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%q' object cannot assign attribute '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/proto.c
|
||||
msgid "'%q' object does not support '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
msgid "'%q' object does not support item assignment"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
msgid "'%q' object does not support item deletion"
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%q' object has no attribute '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%q' object is not an iterator"
|
||||
msgstr ""
|
||||
|
||||
#: py/objtype.c py/runtime.c
|
||||
msgid "'%q' object is not callable"
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%q' object is not iterable"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
msgid "'%q' object is not subscriptable"
|
||||
msgstr ""
|
||||
|
||||
#: py/emitinlinethumb.c py/emitinlinextensa.c
|
||||
#, c-format
|
||||
msgid "'%s' expects a label"
|
||||
@ -160,48 +200,6 @@ msgstr "'%s' liczba %d poza zakresem %d..%d"
|
||||
msgid "'%s' integer 0x%x does not fit in mask 0x%x"
|
||||
msgstr "'%s' liczba 0x%x nie pasuje do maski 0x%x"
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%s' object cannot assign attribute '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/proto.c
|
||||
msgid "'%s' object does not support '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "'%s' object does not support item assignment"
|
||||
msgstr "'%s' obiekt nie wspiera przypisania do elementów"
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "'%s' object does not support item deletion"
|
||||
msgstr "'%s' obiekt nie wspiera usuwania elementów"
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%s' object has no attribute '%q'"
|
||||
msgstr "'%s' obiekt nie ma atrybutu '%q'"
|
||||
|
||||
#: py/runtime.c
|
||||
#, c-format
|
||||
msgid "'%s' object is not an iterator"
|
||||
msgstr "'%s' obiekt nie jest iteratorem"
|
||||
|
||||
#: py/objtype.c py/runtime.c
|
||||
#, c-format
|
||||
msgid "'%s' object is not callable"
|
||||
msgstr "'%s' nie można wywoływać obiektu"
|
||||
|
||||
#: py/runtime.c
|
||||
#, c-format
|
||||
msgid "'%s' object is not iterable"
|
||||
msgstr "'%s' nie można iterować po obiekcie"
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "'%s' object is not subscriptable"
|
||||
msgstr "'%s' nie można indeksować obiektu"
|
||||
|
||||
#: py/objstr.c
|
||||
msgid "'=' alignment not allowed in string format specifier"
|
||||
msgstr "wyrównanie '=' niedozwolone w specyfikacji formatu"
|
||||
@ -451,6 +449,10 @@ msgstr ""
|
||||
msgid "Buffer length must be a multiple of 512"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c
|
||||
msgid "Buffer must be a multiple of 512 bytes"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/bitbangio/I2C.c shared-bindings/busio/I2C.c
|
||||
msgid "Buffer must be at least length 1"
|
||||
msgstr "Bufor musi mieć długość 1 lub więcej"
|
||||
@ -641,6 +643,10 @@ msgstr ""
|
||||
msgid "Could not restart PWM"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/_bleio/Adapter.c
|
||||
msgid "Could not set address"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/pulseio/PWMOut.c
|
||||
msgid "Could not start PWM"
|
||||
msgstr ""
|
||||
@ -740,7 +746,7 @@ msgstr "Błąd w regex"
|
||||
|
||||
#: shared-bindings/aesio/aes.c shared-bindings/busio/SPI.c
|
||||
#: shared-bindings/microcontroller/Pin.c
|
||||
#: shared-bindings/neopixel_write/__init__.c shared-bindings/pulseio/PulseOut.c
|
||||
#: shared-bindings/neopixel_write/__init__.c
|
||||
#: shared-bindings/terminalio/Terminal.c
|
||||
msgid "Expected a %q"
|
||||
msgstr "Oczekiwano %q"
|
||||
@ -823,6 +829,11 @@ msgstr ""
|
||||
msgid "File exists"
|
||||
msgstr "Plik istnieje"
|
||||
|
||||
#: shared-module/framebufferio/FramebufferDisplay.c
|
||||
#, c-format
|
||||
msgid "Framebuffer requires %d bytes"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c
|
||||
msgid "Frequency captured is above capability. Capture Paused."
|
||||
msgstr "Uzyskana częstotliwość jest niemożliwa. Spauzowano."
|
||||
@ -847,7 +858,7 @@ msgid "Group full"
|
||||
msgstr "Grupa pełna"
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/I2C.c
|
||||
#: ports/stm/common-hal/busio/SPI.c
|
||||
#: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/sdioio/SDCard.c
|
||||
msgid "Hardware busy, try alternative pins"
|
||||
msgstr ""
|
||||
|
||||
@ -863,6 +874,10 @@ msgstr "Operacja I/O na zamkniętym pliku"
|
||||
msgid "I2C Init Error"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/audiobusio/I2SOut.c
|
||||
msgid "I2SOut not available"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
#, c-format
|
||||
msgid "IV must be %d bytes long"
|
||||
@ -910,6 +925,11 @@ msgstr ""
|
||||
msgid "Invalid %q pin"
|
||||
msgstr "Zła nóżka %q"
|
||||
|
||||
#: ports/stm/common-hal/busio/I2C.c ports/stm/common-hal/busio/SPI.c
|
||||
#: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/sdioio/SDCard.c
|
||||
msgid "Invalid %q pin selection"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/analogio/AnalogIn.c
|
||||
msgid "Invalid ADC Unit value"
|
||||
msgstr ""
|
||||
@ -922,24 +942,12 @@ msgstr "Zły BMP"
|
||||
msgid "Invalid DAC pin supplied"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/busio/I2C.c
|
||||
msgid "Invalid I2C pin selection"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/pulseio/PWMOut.c
|
||||
#: ports/cxd56/common-hal/pulseio/PWMOut.c
|
||||
#: ports/nrf/common-hal/pulseio/PWMOut.c shared-bindings/pulseio/PWMOut.c
|
||||
msgid "Invalid PWM frequency"
|
||||
msgstr "Zła częstotliwość PWM"
|
||||
|
||||
#: ports/stm/common-hal/busio/SPI.c
|
||||
msgid "Invalid SPI pin selection"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/busio/UART.c
|
||||
msgid "Invalid UART pin selection"
|
||||
msgstr ""
|
||||
|
||||
#: py/moduerrno.c shared-module/rgbmatrix/RGBMatrix.c
|
||||
msgid "Invalid argument"
|
||||
msgstr "Zły argument"
|
||||
@ -1235,6 +1243,10 @@ msgstr "Nie podłączono"
|
||||
msgid "Not playing"
|
||||
msgstr "Nic nie jest odtwarzane"
|
||||
|
||||
#: main.c
|
||||
msgid "Not running saved code.\n"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/util.c
|
||||
msgid ""
|
||||
"Object has been deinitialized and can no longer be used. Create a new object."
|
||||
@ -1320,8 +1332,13 @@ msgstr "Oraz moduły w systemie plików\n"
|
||||
msgid "Polygon needs at least 3 points"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/ps2io/Ps2.c
|
||||
msgid "Pop from an empty Ps2 buffer"
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseOut.c
|
||||
#: ports/cxd56/common-hal/pulseio/PulseOut.c
|
||||
#: ports/nrf/common-hal/pulseio/PulseOut.c
|
||||
#: ports/stm/common-hal/pulseio/PulseOut.c
|
||||
msgid ""
|
||||
"Port does not accept pins or frequency. "
|
||||
"Construct and pass a PWMOut Carrier instead"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/_bleio/Adapter.c
|
||||
@ -1336,6 +1353,10 @@ msgstr "Dowolny klawisz aby uruchomić konsolę. CTRL-D aby przeładować."
|
||||
msgid "Pull not used when direction is output."
|
||||
msgstr "Podciągnięcie nieużywane w trybie wyjścia."
|
||||
|
||||
#: ports/stm/ref/pulseout-pre-timeralloc.c
|
||||
msgid "PulseOut not supported on this chip"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/os/__init__.c
|
||||
msgid "RNG DeInit Error"
|
||||
msgstr ""
|
||||
@ -1396,12 +1417,8 @@ msgid "Row entry must be digitalio.DigitalInOut"
|
||||
msgstr "Rzędy muszą być digitalio.DigitalInOut"
|
||||
|
||||
#: main.c
|
||||
msgid "Running in safe mode! Auto-reload is off.\n"
|
||||
msgstr "Uruchomiony tryb bezpieczeństwa! Samo-przeładowanie wyłączone.\n"
|
||||
|
||||
#: main.c
|
||||
msgid "Running in safe mode! Not running saved code.\n"
|
||||
msgstr "Uruchomiony tryb bezpieczeństwa! Zapisany kod nie jest uruchamiany.\n"
|
||||
msgid "Running in safe mode! "
|
||||
msgstr ""
|
||||
|
||||
#: shared-module/sdcardio/SDCard.c
|
||||
msgid "SD card CSD format not supported"
|
||||
@ -1412,6 +1429,16 @@ msgstr ""
|
||||
msgid "SDA or SCL needs a pull up"
|
||||
msgstr "SDA lub SCL wymagają podciągnięcia"
|
||||
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c
|
||||
#, c-format
|
||||
msgid "SDIO GetCardInfo Error %d"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c
|
||||
#, c-format
|
||||
msgid "SDIO Init Error %d"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/busio/SPI.c
|
||||
msgid "SPI Init Error"
|
||||
msgstr ""
|
||||
@ -1764,9 +1791,8 @@ msgid "__init__() should return None"
|
||||
msgstr "__init__() powinien zwracać None"
|
||||
|
||||
#: py/objtype.c
|
||||
#, c-format
|
||||
msgid "__init__() should return None, not '%s'"
|
||||
msgstr "__init__() powinien zwracać None, nie '%s'"
|
||||
msgid "__init__() should return None, not '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/objobject.c
|
||||
msgid "__new__ arg must be a user-type"
|
||||
@ -1919,7 +1945,7 @@ msgstr "bajty większe od 8 bitów są niewspierane"
|
||||
msgid "bytes value out of range"
|
||||
msgstr "wartość bytes poza zakresem"
|
||||
|
||||
#: ports/atmel-samd/bindings/samd/Clock.c
|
||||
#: ports/atmel-samd/bindings/samd/Clock.c ports/atmel-samd/common-hal/rtc/RTC.c
|
||||
msgid "calibration is out of range"
|
||||
msgstr "kalibracja poza zakresem"
|
||||
|
||||
@ -1951,48 +1977,18 @@ msgstr "nie można dodać specjalnej metody do podklasy"
|
||||
msgid "can't assign to expression"
|
||||
msgstr "przypisanie do wyrażenia"
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "can't convert %s to complex"
|
||||
msgstr "nie można skonwertować %s do complex"
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "can't convert %s to float"
|
||||
msgstr "nie można skonwertować %s do float"
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "can't convert %s to int"
|
||||
msgstr "nie można skonwertować %s do int"
|
||||
#: py/obj.c py/objint.c shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
#: shared-module/_pixelbuf/PixelBuf.c
|
||||
msgid "can't convert %q to %q"
|
||||
msgstr ""
|
||||
|
||||
#: py/objstr.c
|
||||
msgid "can't convert '%q' object to %q implicitly"
|
||||
msgstr "nie można automatycznie skonwertować '%q' do '%q'"
|
||||
|
||||
#: py/objint.c
|
||||
msgid "can't convert NaN to int"
|
||||
msgstr "nie można skonwertować NaN do int"
|
||||
|
||||
#: shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
msgid "can't convert address to int"
|
||||
msgstr "nie można skonwertować adresu do int"
|
||||
|
||||
#: py/objint.c
|
||||
msgid "can't convert inf to int"
|
||||
msgstr "nie można skonwertować inf do int"
|
||||
|
||||
#: py/obj.c
|
||||
msgid "can't convert to complex"
|
||||
msgstr "nie można skonwertować do complex"
|
||||
|
||||
#: py/obj.c
|
||||
msgid "can't convert to float"
|
||||
msgstr "nie można skonwertować do float"
|
||||
|
||||
#: py/obj.c
|
||||
msgid "can't convert to int"
|
||||
msgstr "nie można skonwertować do int"
|
||||
msgid "can't convert to %q"
|
||||
msgstr ""
|
||||
|
||||
#: py/objstr.c
|
||||
msgid "can't convert to str implicitly"
|
||||
@ -2400,7 +2396,7 @@ msgstr "brak wymaganego argumentu nazwanego '%q' funkcji"
|
||||
msgid "function missing required positional argument #%d"
|
||||
msgstr "brak wymaganego argumentu pozycyjnego #%d funkcji"
|
||||
|
||||
#: py/argcheck.c py/bc.c py/objnamedtuple.c
|
||||
#: py/argcheck.c py/bc.c py/objnamedtuple.c shared-bindings/time/__init__.c
|
||||
#, c-format
|
||||
msgid "function takes %d positional arguments but %d were given"
|
||||
msgstr "funkcja wymaga %d argumentów pozycyjnych, ale jest %d"
|
||||
@ -2449,10 +2445,7 @@ msgstr "złe wypełnienie"
|
||||
msgid "index is out of bounds"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c
|
||||
#: ports/cxd56/common-hal/pulseio/PulseIn.c
|
||||
#: ports/nrf/common-hal/pulseio/PulseIn.c
|
||||
#: ports/stm/common-hal/pulseio/PulseIn.c py/obj.c
|
||||
#: py/obj.c
|
||||
msgid "index out of range"
|
||||
msgstr "indeks poza zakresem"
|
||||
|
||||
@ -2808,9 +2801,8 @@ msgid "number of points must be at least 2"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "object '%s' is not a tuple or list"
|
||||
msgstr "obiekt '%s' nie jest krotką ani listą"
|
||||
msgid "object '%q' is not a tuple or list"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
msgid "object does not support item assignment"
|
||||
@ -2845,9 +2837,8 @@ msgid "object not iterable"
|
||||
msgstr "obiekt nie jest iterowalny"
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "object of type '%s' has no len()"
|
||||
msgstr "obiekt typu '%s' nie ma len()"
|
||||
msgid "object of type '%q' has no len()"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
msgid "object with buffer protocol required"
|
||||
@ -2940,21 +2931,10 @@ msgstr ""
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c
|
||||
#: ports/cxd56/common-hal/pulseio/PulseIn.c
|
||||
#: ports/nrf/common-hal/pulseio/PulseIn.c
|
||||
#: ports/stm/common-hal/pulseio/PulseIn.c
|
||||
msgid "pop from an empty PulseIn"
|
||||
msgstr "pop z pustego PulseIn"
|
||||
|
||||
#: py/objset.c
|
||||
msgid "pop from an empty set"
|
||||
msgstr "pop z pustego zbioru"
|
||||
|
||||
#: py/objlist.c
|
||||
msgid "pop from empty list"
|
||||
msgstr "pop z pustej listy"
|
||||
|
||||
#: py/objdict.c
|
||||
msgid "popitem(): dictionary is empty"
|
||||
msgstr "popitem(): słownik jest pusty"
|
||||
#: ports/stm/common-hal/pulseio/PulseIn.c py/objdict.c py/objlist.c py/objset.c
|
||||
#: shared-bindings/ps2io/Ps2.c
|
||||
msgid "pop from empty %q"
|
||||
msgstr ""
|
||||
|
||||
#: py/objint_mpz.c
|
||||
msgid "pow() 3rd argument cannot be 0"
|
||||
@ -3111,13 +3091,8 @@ msgid "stream operation not supported"
|
||||
msgstr "operacja na strumieniu nieobsługiwana"
|
||||
|
||||
#: py/objstrunicode.c
|
||||
msgid "string index out of range"
|
||||
msgstr "indeks łańcucha poza zakresem"
|
||||
|
||||
#: py/objstrunicode.c
|
||||
#, c-format
|
||||
msgid "string indices must be integers, not %s"
|
||||
msgstr "indeksy łańcucha muszą być całkowite, nie %s"
|
||||
msgid "string indices must be integers, not %q"
|
||||
msgstr ""
|
||||
|
||||
#: py/stream.c
|
||||
msgid "string not supported; use bytes or bytearray"
|
||||
@ -3127,10 +3102,6 @@ msgstr "łańcuchy nieobsługiwane; użyj bytes lub bytearray"
|
||||
msgid "struct: cannot index"
|
||||
msgstr "struct: nie można indeksować"
|
||||
|
||||
#: extmod/moductypes.c
|
||||
msgid "struct: index out of range"
|
||||
msgstr "struct: indeks poza zakresem"
|
||||
|
||||
#: extmod/moductypes.c
|
||||
msgid "struct: no fields"
|
||||
msgstr "struct: brak pól"
|
||||
@ -3200,7 +3171,7 @@ msgstr "zbyt wiele wartości do rozpakowania (oczekiwano %d)"
|
||||
msgid "trapz is defined for 1D arrays of equal length"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/linalg/linalg.c py/objstr.c
|
||||
#: extmod/ulab/code/linalg/linalg.c
|
||||
msgid "tuple index out of range"
|
||||
msgstr "indeks krotki poza zakresem"
|
||||
|
||||
@ -3208,10 +3179,6 @@ msgstr "indeks krotki poza zakresem"
|
||||
msgid "tuple/list has wrong length"
|
||||
msgstr "krotka/lista ma złą długość"
|
||||
|
||||
#: shared-bindings/_pixelbuf/PixelBuf.c
|
||||
msgid "tuple/list required on RHS"
|
||||
msgstr "wymagana krotka/lista po prawej stronie"
|
||||
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c ports/nrf/common-hal/busio/UART.c
|
||||
#: shared-bindings/busio/UART.c
|
||||
msgid "tx and rx cannot both be None"
|
||||
@ -3267,9 +3234,8 @@ msgid "unknown conversion specifier %c"
|
||||
msgstr "zła specyfikacja konwersji %c"
|
||||
|
||||
#: py/objstr.c
|
||||
#, c-format
|
||||
msgid "unknown format code '%c' for object of type '%s'"
|
||||
msgstr "zły kod formatowania '%c' dla obiektu typu '%s'"
|
||||
msgid "unknown format code '%c' for object of type '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/compile.c
|
||||
msgid "unknown type"
|
||||
@ -3308,16 +3274,16 @@ msgid "unsupported format character '%c' (0x%x) at index %d"
|
||||
msgstr "zły znak formatowania '%c' (0x%x) na pozycji %d"
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "unsupported type for %q: '%s'"
|
||||
msgstr "zły typ dla %q: '%s'"
|
||||
msgid "unsupported type for %q: '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "unsupported type for operator"
|
||||
msgstr "zły typ dla operatora"
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "unsupported types for %q: '%s', '%s'"
|
||||
msgstr "złe typy dla %q: '%s', '%s'"
|
||||
msgid "unsupported types for %q: '%q', '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/objint.c
|
||||
#, c-format
|
||||
@ -3396,6 +3362,106 @@ msgstr ""
|
||||
msgid "zi must be of shape (n_section, 2)"
|
||||
msgstr ""
|
||||
|
||||
#~ msgid "tuple/list required on RHS"
|
||||
#~ msgstr "wymagana krotka/lista po prawej stronie"
|
||||
|
||||
#~ msgid "%q indices must be integers, not %s"
|
||||
#~ msgstr "%q indeks musi być liczbą całkowitą, a nie %s"
|
||||
|
||||
#~ msgid "'%s' object does not support item assignment"
|
||||
#~ msgstr "'%s' obiekt nie wspiera przypisania do elementów"
|
||||
|
||||
#~ msgid "'%s' object does not support item deletion"
|
||||
#~ msgstr "'%s' obiekt nie wspiera usuwania elementów"
|
||||
|
||||
#~ msgid "'%s' object has no attribute '%q'"
|
||||
#~ msgstr "'%s' obiekt nie ma atrybutu '%q'"
|
||||
|
||||
#~ msgid "'%s' object is not an iterator"
|
||||
#~ msgstr "'%s' obiekt nie jest iteratorem"
|
||||
|
||||
#~ msgid "'%s' object is not callable"
|
||||
#~ msgstr "'%s' nie można wywoływać obiektu"
|
||||
|
||||
#~ msgid "'%s' object is not iterable"
|
||||
#~ msgstr "'%s' nie można iterować po obiekcie"
|
||||
|
||||
#~ msgid "'%s' object is not subscriptable"
|
||||
#~ msgstr "'%s' nie można indeksować obiektu"
|
||||
|
||||
#~ msgid "Running in safe mode! Auto-reload is off.\n"
|
||||
#~ msgstr "Uruchomiony tryb bezpieczeństwa! Samo-przeładowanie wyłączone.\n"
|
||||
|
||||
#~ msgid "Running in safe mode! Not running saved code.\n"
|
||||
#~ msgstr ""
|
||||
#~ "Uruchomiony tryb bezpieczeństwa! Zapisany kod nie jest uruchamiany.\n"
|
||||
|
||||
#~ msgid "__init__() should return None, not '%s'"
|
||||
#~ msgstr "__init__() powinien zwracać None, nie '%s'"
|
||||
|
||||
#~ msgid "can't convert %s to complex"
|
||||
#~ msgstr "nie można skonwertować %s do complex"
|
||||
|
||||
#~ msgid "can't convert %s to float"
|
||||
#~ msgstr "nie można skonwertować %s do float"
|
||||
|
||||
#~ msgid "can't convert %s to int"
|
||||
#~ msgstr "nie można skonwertować %s do int"
|
||||
|
||||
#~ msgid "can't convert NaN to int"
|
||||
#~ msgstr "nie można skonwertować NaN do int"
|
||||
|
||||
#~ msgid "can't convert address to int"
|
||||
#~ msgstr "nie można skonwertować adresu do int"
|
||||
|
||||
#~ msgid "can't convert inf to int"
|
||||
#~ msgstr "nie można skonwertować inf do int"
|
||||
|
||||
#~ msgid "can't convert to complex"
|
||||
#~ msgstr "nie można skonwertować do complex"
|
||||
|
||||
#~ msgid "can't convert to float"
|
||||
#~ msgstr "nie można skonwertować do float"
|
||||
|
||||
#~ msgid "can't convert to int"
|
||||
#~ msgstr "nie można skonwertować do int"
|
||||
|
||||
#~ msgid "object '%s' is not a tuple or list"
|
||||
#~ msgstr "obiekt '%s' nie jest krotką ani listą"
|
||||
|
||||
#~ msgid "object of type '%s' has no len()"
|
||||
#~ msgstr "obiekt typu '%s' nie ma len()"
|
||||
|
||||
#~ msgid "pop from an empty PulseIn"
|
||||
#~ msgstr "pop z pustego PulseIn"
|
||||
|
||||
#~ msgid "pop from an empty set"
|
||||
#~ msgstr "pop z pustego zbioru"
|
||||
|
||||
#~ msgid "pop from empty list"
|
||||
#~ msgstr "pop z pustej listy"
|
||||
|
||||
#~ msgid "popitem(): dictionary is empty"
|
||||
#~ msgstr "popitem(): słownik jest pusty"
|
||||
|
||||
#~ msgid "string index out of range"
|
||||
#~ msgstr "indeks łańcucha poza zakresem"
|
||||
|
||||
#~ msgid "string indices must be integers, not %s"
|
||||
#~ msgstr "indeksy łańcucha muszą być całkowite, nie %s"
|
||||
|
||||
#~ msgid "struct: index out of range"
|
||||
#~ msgstr "struct: indeks poza zakresem"
|
||||
|
||||
#~ msgid "unknown format code '%c' for object of type '%s'"
|
||||
#~ msgstr "zły kod formatowania '%c' dla obiektu typu '%s'"
|
||||
|
||||
#~ msgid "unsupported type for %q: '%s'"
|
||||
#~ msgstr "zły typ dla %q: '%s'"
|
||||
|
||||
#~ msgid "unsupported types for %q: '%s', '%s'"
|
||||
#~ msgstr "złe typy dla %q: '%s', '%s'"
|
||||
|
||||
#~ msgid "Address is not %d bytes long or is in wrong format"
|
||||
#~ msgstr "Adres nie ma długości %d bajtów lub zły format"
|
||||
|
||||
|
412
locale/pt_BR.po
412
locale/pt_BR.po
@ -5,8 +5,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-07-28 16:57-0500\n"
|
||||
"PO-Revision-Date: 2020-07-28 15:41+0000\n"
|
||||
"POT-Creation-Date: 2020-08-18 11:19-0400\n"
|
||||
"PO-Revision-Date: 2020-08-16 02:25+0000\n"
|
||||
"Last-Translator: Wellington Terumi Uemura <wellingtonuemura@gmail.com>\n"
|
||||
"Language-Team: \n"
|
||||
"Language: pt_BR\n"
|
||||
@ -72,13 +72,17 @@ msgstr "%q falha: %d"
|
||||
msgid "%q in use"
|
||||
msgstr "%q em uso"
|
||||
|
||||
#: py/obj.c
|
||||
#: extmod/moductypes.c ports/atmel-samd/common-hal/pulseio/PulseIn.c
|
||||
#: ports/cxd56/common-hal/pulseio/PulseIn.c
|
||||
#: ports/nrf/common-hal/pulseio/PulseIn.c
|
||||
#: ports/stm/common-hal/pulseio/PulseIn.c py/obj.c py/objstr.c
|
||||
#: py/objstrunicode.c
|
||||
msgid "%q index out of range"
|
||||
msgstr "O índice %q está fora do intervalo"
|
||||
|
||||
#: py/obj.c
|
||||
msgid "%q indices must be integers, not %s"
|
||||
msgstr "Os índices %q devem ser inteiros, e não %s"
|
||||
msgid "%q indices must be integers, not %q"
|
||||
msgstr "Os indicadores %q devem ser inteiros, não %q"
|
||||
|
||||
#: shared-bindings/vectorio/Polygon.c
|
||||
msgid "%q list must be a list"
|
||||
@ -116,6 +120,42 @@ msgstr "%q() recebe %d argumentos posicionais, porém %d foram informados"
|
||||
msgid "'%q' argument required"
|
||||
msgstr "'%q' argumento(s) requerido(s)"
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%q' object cannot assign attribute '%q'"
|
||||
msgstr "O objeto '%q' não pode definir o atributo '%q'"
|
||||
|
||||
#: py/proto.c
|
||||
msgid "'%q' object does not support '%q'"
|
||||
msgstr "O objeto '%q' não suporta '%q'"
|
||||
|
||||
#: py/obj.c
|
||||
msgid "'%q' object does not support item assignment"
|
||||
msgstr "O objeto '%q' não suporta a atribuição do item"
|
||||
|
||||
#: py/obj.c
|
||||
msgid "'%q' object does not support item deletion"
|
||||
msgstr "O objeto '%q' não suporta a exclusão dos itens"
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%q' object has no attribute '%q'"
|
||||
msgstr "O objeto '%q' não possui qualquer atributo '%q'"
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%q' object is not an iterator"
|
||||
msgstr "O objeto '%q' não é um iterador"
|
||||
|
||||
#: py/objtype.c py/runtime.c
|
||||
msgid "'%q' object is not callable"
|
||||
msgstr "O objeto '%s' não é invocável"
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%q' object is not iterable"
|
||||
msgstr "O objeto '%q' não é iterável"
|
||||
|
||||
#: py/obj.c
|
||||
msgid "'%q' object is not subscriptable"
|
||||
msgstr "O objeto '%q' não é subscritível"
|
||||
|
||||
#: py/emitinlinethumb.c py/emitinlinextensa.c
|
||||
#, c-format
|
||||
msgid "'%s' expects a label"
|
||||
@ -166,48 +206,6 @@ msgstr "O número inteiro '%s' %d não está dentro do intervalo %d..%d"
|
||||
msgid "'%s' integer 0x%x does not fit in mask 0x%x"
|
||||
msgstr "O número inteiro '%s' 0x%x não cabe na máscara 0x%x"
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%s' object cannot assign attribute '%q'"
|
||||
msgstr "O objeto '%s' não pode definir o atributo '%q'"
|
||||
|
||||
#: py/proto.c
|
||||
msgid "'%s' object does not support '%q'"
|
||||
msgstr "O objeto '%s' não é compatível com '%q'"
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "'%s' object does not support item assignment"
|
||||
msgstr "O objeto '%s' não compatível com a atribuição dos itens"
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "'%s' object does not support item deletion"
|
||||
msgstr "O objeto '%s' não é compatível com exclusão do item"
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%s' object has no attribute '%q'"
|
||||
msgstr "O objeto '%s' não possui o atributo '%q'"
|
||||
|
||||
#: py/runtime.c
|
||||
#, c-format
|
||||
msgid "'%s' object is not an iterator"
|
||||
msgstr "O objeto '%s' não é um iterador"
|
||||
|
||||
#: py/objtype.c py/runtime.c
|
||||
#, c-format
|
||||
msgid "'%s' object is not callable"
|
||||
msgstr "O objeto '%s' não é invocável"
|
||||
|
||||
#: py/runtime.c
|
||||
#, c-format
|
||||
msgid "'%s' object is not iterable"
|
||||
msgstr "O objeto '%s' não é iterável"
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "'%s' object is not subscriptable"
|
||||
msgstr "O objeto '%s' não é subroteirizável"
|
||||
|
||||
#: py/objstr.c
|
||||
msgid "'=' alignment not allowed in string format specifier"
|
||||
msgstr ""
|
||||
@ -465,6 +463,10 @@ msgstr "O tamanho do buffer %d é muito grande. Deve ser menor que %d"
|
||||
msgid "Buffer length must be a multiple of 512"
|
||||
msgstr "O comprimento do Buffer deve ser um múltiplo de 512"
|
||||
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c
|
||||
msgid "Buffer must be a multiple of 512 bytes"
|
||||
msgstr "O buffer deve ser um múltiplo de 512 bytes"
|
||||
|
||||
#: shared-bindings/bitbangio/I2C.c shared-bindings/busio/I2C.c
|
||||
msgid "Buffer must be at least length 1"
|
||||
msgstr "O comprimento do buffer deve ter pelo menos 1"
|
||||
@ -662,6 +664,10 @@ msgstr "Não foi possível reiniciar o temporizador"
|
||||
msgid "Could not restart PWM"
|
||||
msgstr "Não foi possível reiniciar o PWM"
|
||||
|
||||
#: shared-bindings/_bleio/Adapter.c
|
||||
msgid "Could not set address"
|
||||
msgstr "Não foi possível definir o endereço"
|
||||
|
||||
#: ports/stm/common-hal/pulseio/PWMOut.c
|
||||
msgid "Could not start PWM"
|
||||
msgstr "Não foi possível iniciar o PWM"
|
||||
@ -761,7 +767,7 @@ msgstr "Erro no regex"
|
||||
|
||||
#: shared-bindings/aesio/aes.c shared-bindings/busio/SPI.c
|
||||
#: shared-bindings/microcontroller/Pin.c
|
||||
#: shared-bindings/neopixel_write/__init__.c shared-bindings/pulseio/PulseOut.c
|
||||
#: shared-bindings/neopixel_write/__init__.c
|
||||
#: shared-bindings/terminalio/Terminal.c
|
||||
msgid "Expected a %q"
|
||||
msgstr "Esperado um"
|
||||
@ -844,6 +850,11 @@ msgstr "Falha ao gravar o flash interno."
|
||||
msgid "File exists"
|
||||
msgstr "Arquivo já existe"
|
||||
|
||||
#: shared-module/framebufferio/FramebufferDisplay.c
|
||||
#, c-format
|
||||
msgid "Framebuffer requires %d bytes"
|
||||
msgstr "O Framebuffer requer %d bytes"
|
||||
|
||||
#: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c
|
||||
msgid "Frequency captured is above capability. Capture Paused."
|
||||
msgstr ""
|
||||
@ -870,7 +881,7 @@ msgid "Group full"
|
||||
msgstr "Grupo cheio"
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/I2C.c
|
||||
#: ports/stm/common-hal/busio/SPI.c
|
||||
#: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/sdioio/SDCard.c
|
||||
msgid "Hardware busy, try alternative pins"
|
||||
msgstr "O hardware está ocupado, tente os pinos alternativos"
|
||||
|
||||
@ -886,6 +897,10 @@ msgstr "Operação I/O no arquivo fechado"
|
||||
msgid "I2C Init Error"
|
||||
msgstr "Erro de inicialização do I2C"
|
||||
|
||||
#: shared-bindings/audiobusio/I2SOut.c
|
||||
msgid "I2SOut not available"
|
||||
msgstr "O I2SOut não está disponível"
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
#, c-format
|
||||
msgid "IV must be %d bytes long"
|
||||
@ -933,6 +948,11 @@ msgstr "%q Inválido"
|
||||
msgid "Invalid %q pin"
|
||||
msgstr "Pino do %q inválido"
|
||||
|
||||
#: ports/stm/common-hal/busio/I2C.c ports/stm/common-hal/busio/SPI.c
|
||||
#: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/sdioio/SDCard.c
|
||||
msgid "Invalid %q pin selection"
|
||||
msgstr "Seleção inválida dos pinos %q"
|
||||
|
||||
#: ports/stm/common-hal/analogio/AnalogIn.c
|
||||
msgid "Invalid ADC Unit value"
|
||||
msgstr "Valor inválido da unidade ADC"
|
||||
@ -945,24 +965,12 @@ msgstr "Arquivo BMP inválido"
|
||||
msgid "Invalid DAC pin supplied"
|
||||
msgstr "O pino DAC informado é inválido"
|
||||
|
||||
#: ports/stm/common-hal/busio/I2C.c
|
||||
msgid "Invalid I2C pin selection"
|
||||
msgstr "A seleção dos pinos I2C é inválido"
|
||||
|
||||
#: ports/atmel-samd/common-hal/pulseio/PWMOut.c
|
||||
#: ports/cxd56/common-hal/pulseio/PWMOut.c
|
||||
#: ports/nrf/common-hal/pulseio/PWMOut.c shared-bindings/pulseio/PWMOut.c
|
||||
msgid "Invalid PWM frequency"
|
||||
msgstr "Frequência PWM inválida"
|
||||
|
||||
#: ports/stm/common-hal/busio/SPI.c
|
||||
msgid "Invalid SPI pin selection"
|
||||
msgstr "A seleção do pino SPI é inválido"
|
||||
|
||||
#: ports/stm/common-hal/busio/UART.c
|
||||
msgid "Invalid UART pin selection"
|
||||
msgstr "A seleção dos pinos UART é inválido"
|
||||
|
||||
#: py/moduerrno.c shared-module/rgbmatrix/RGBMatrix.c
|
||||
msgid "Invalid argument"
|
||||
msgstr "Argumento inválido"
|
||||
@ -1258,6 +1266,10 @@ msgstr "Não Conectado"
|
||||
msgid "Not playing"
|
||||
msgstr "Não está jogando"
|
||||
|
||||
#: main.c
|
||||
msgid "Not running saved code.\n"
|
||||
msgstr "O código salvo não está em execução.\n"
|
||||
|
||||
#: shared-bindings/util.c
|
||||
msgid ""
|
||||
"Object has been deinitialized and can no longer be used. Create a new object."
|
||||
@ -1355,9 +1367,14 @@ msgstr "Além de quaisquer módulos no sistema de arquivos\n"
|
||||
msgid "Polygon needs at least 3 points"
|
||||
msgstr "O Polígono precisa de pelo menos 3 pontos"
|
||||
|
||||
#: shared-bindings/ps2io/Ps2.c
|
||||
msgid "Pop from an empty Ps2 buffer"
|
||||
msgstr "Buffer Ps2 vazio"
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseOut.c
|
||||
#: ports/cxd56/common-hal/pulseio/PulseOut.c
|
||||
#: ports/nrf/common-hal/pulseio/PulseOut.c
|
||||
#: ports/stm/common-hal/pulseio/PulseOut.c
|
||||
msgid ""
|
||||
"Port does not accept pins or frequency. "
|
||||
"Construct and pass a PWMOut Carrier instead"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/_bleio/Adapter.c
|
||||
msgid "Prefix buffer must be on the heap"
|
||||
@ -1374,6 +1391,10 @@ msgstr ""
|
||||
msgid "Pull not used when direction is output."
|
||||
msgstr "O Pull não foi usado quando a direção for gerada."
|
||||
|
||||
#: ports/stm/ref/pulseout-pre-timeralloc.c
|
||||
msgid "PulseOut not supported on this chip"
|
||||
msgstr "O PulseOut não é compatível neste CI"
|
||||
|
||||
#: ports/stm/common-hal/os/__init__.c
|
||||
msgid "RNG DeInit Error"
|
||||
msgstr "Erro DeInit RNG"
|
||||
@ -1434,12 +1455,8 @@ msgid "Row entry must be digitalio.DigitalInOut"
|
||||
msgstr "A entrada da linha deve ser digitalio.DigitalInOut"
|
||||
|
||||
#: main.c
|
||||
msgid "Running in safe mode! Auto-reload is off.\n"
|
||||
msgstr "Rodando em modo seguro! Atualização automática está desligada.\n"
|
||||
|
||||
#: main.c
|
||||
msgid "Running in safe mode! Not running saved code.\n"
|
||||
msgstr "Rodando em modo seguro! Não está executando o código salvo.\n"
|
||||
msgid "Running in safe mode! "
|
||||
msgstr "Executando no modo de segurança! "
|
||||
|
||||
#: shared-module/sdcardio/SDCard.c
|
||||
msgid "SD card CSD format not supported"
|
||||
@ -1450,6 +1467,16 @@ msgstr "O formato CSD do Cartão SD não é compatível"
|
||||
msgid "SDA or SCL needs a pull up"
|
||||
msgstr "SDA ou SCL precisa de um pull up"
|
||||
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c
|
||||
#, c-format
|
||||
msgid "SDIO GetCardInfo Error %d"
|
||||
msgstr "Erro SDIO GetCardInfo %d"
|
||||
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c
|
||||
#, c-format
|
||||
msgid "SDIO Init Error %d"
|
||||
msgstr "Erro SDIO Init %d"
|
||||
|
||||
#: ports/stm/common-hal/busio/SPI.c
|
||||
msgid "SPI Init Error"
|
||||
msgstr "Houve um erro na inicialização SPI"
|
||||
@ -1825,9 +1852,8 @@ msgid "__init__() should return None"
|
||||
msgstr "O __init__() deve retornar Nenhum"
|
||||
|
||||
#: py/objtype.c
|
||||
#, c-format
|
||||
msgid "__init__() should return None, not '%s'"
|
||||
msgstr "O __init__() deve retornar Nenhum, não '%s'"
|
||||
msgid "__init__() should return None, not '%q'"
|
||||
msgstr "O __init__() deve retornar Nenhum, não '%q'"
|
||||
|
||||
#: py/objobject.c
|
||||
msgid "__new__ arg must be a user-type"
|
||||
@ -1872,7 +1898,7 @@ msgstr "argumento tem tipo errado"
|
||||
|
||||
#: extmod/ulab/code/linalg/linalg.c
|
||||
msgid "argument must be ndarray"
|
||||
msgstr ""
|
||||
msgstr "o argumento deve ser ndarray"
|
||||
|
||||
#: py/argcheck.c shared-bindings/_stage/__init__.c
|
||||
#: shared-bindings/digitalio/DigitalInOut.c shared-bindings/gamepad/GamePad.c
|
||||
@ -1980,7 +2006,7 @@ msgstr "bytes > 8 bits não suportado"
|
||||
msgid "bytes value out of range"
|
||||
msgstr "o valor dos bytes estão fora do alcance"
|
||||
|
||||
#: ports/atmel-samd/bindings/samd/Clock.c
|
||||
#: ports/atmel-samd/bindings/samd/Clock.c ports/atmel-samd/common-hal/rtc/RTC.c
|
||||
msgid "calibration is out of range"
|
||||
msgstr "Calibração está fora do intervalo"
|
||||
|
||||
@ -2012,48 +2038,18 @@ msgstr "não é possível adicionar o método especial à classe já subclassifi
|
||||
msgid "can't assign to expression"
|
||||
msgstr "a expressão não pode ser atribuída"
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "can't convert %s to complex"
|
||||
msgstr "Não é possível converter %s para complex"
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "can't convert %s to float"
|
||||
msgstr "Não é possível converter %s para float"
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "can't convert %s to int"
|
||||
msgstr "Não é possível converter %s para int"
|
||||
#: py/obj.c py/objint.c shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
#: shared-module/_pixelbuf/PixelBuf.c
|
||||
msgid "can't convert %q to %q"
|
||||
msgstr "não é possível converter %q para %q"
|
||||
|
||||
#: py/objstr.c
|
||||
msgid "can't convert '%q' object to %q implicitly"
|
||||
msgstr "não é possível converter implicitamente o objeto '%q' para %q"
|
||||
|
||||
#: py/objint.c
|
||||
msgid "can't convert NaN to int"
|
||||
msgstr "Não é possível converter NaN para int"
|
||||
|
||||
#: shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
msgid "can't convert address to int"
|
||||
msgstr "não é possível converter o endereço para int"
|
||||
|
||||
#: py/objint.c
|
||||
msgid "can't convert inf to int"
|
||||
msgstr "não é possível converter inf para int"
|
||||
|
||||
#: py/obj.c
|
||||
msgid "can't convert to complex"
|
||||
msgstr "não é possível converter para complex"
|
||||
|
||||
#: py/obj.c
|
||||
msgid "can't convert to float"
|
||||
msgstr "não é possível converter para float"
|
||||
|
||||
#: py/obj.c
|
||||
msgid "can't convert to int"
|
||||
msgstr "não é possível converter para int"
|
||||
msgid "can't convert to %q"
|
||||
msgstr "não é possível converter para %q"
|
||||
|
||||
#: py/objstr.c
|
||||
msgid "can't convert to str implicitly"
|
||||
@ -2470,7 +2466,7 @@ msgstr "falta apenas a palavra chave do argumento '%q' da função"
|
||||
msgid "function missing required positional argument #%d"
|
||||
msgstr "falta o argumento #%d da posição necessária da função"
|
||||
|
||||
#: py/argcheck.c py/bc.c py/objnamedtuple.c
|
||||
#: py/argcheck.c py/bc.c py/objnamedtuple.c shared-bindings/time/__init__.c
|
||||
#, c-format
|
||||
msgid "function takes %d positional arguments but %d were given"
|
||||
msgstr "função leva %d argumentos posicionais, mas apenas %d foram passadas"
|
||||
@ -2519,10 +2515,7 @@ msgstr "preenchimento incorreto"
|
||||
msgid "index is out of bounds"
|
||||
msgstr "o índice está fora dos limites"
|
||||
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c
|
||||
#: ports/cxd56/common-hal/pulseio/PulseIn.c
|
||||
#: ports/nrf/common-hal/pulseio/PulseIn.c
|
||||
#: ports/stm/common-hal/pulseio/PulseIn.c py/obj.c
|
||||
#: py/obj.c
|
||||
msgid "index out of range"
|
||||
msgstr "Índice fora do intervalo"
|
||||
|
||||
@ -2883,9 +2876,8 @@ msgid "number of points must be at least 2"
|
||||
msgstr "a quantidade dos pontos deve ser pelo menos 2"
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "object '%s' is not a tuple or list"
|
||||
msgstr "o objeto '%s' não é uma tupla ou uma lista"
|
||||
msgid "object '%q' is not a tuple or list"
|
||||
msgstr "o objeto '%q' não é uma tupla ou uma lista"
|
||||
|
||||
#: py/obj.c
|
||||
msgid "object does not support item assignment"
|
||||
@ -2920,9 +2912,8 @@ msgid "object not iterable"
|
||||
msgstr "objeto não iterável"
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "object of type '%s' has no len()"
|
||||
msgstr "O objeto do tipo '%s' não possui len()"
|
||||
msgid "object of type '%q' has no len()"
|
||||
msgstr "o objeto do tipo '%q' não tem len()"
|
||||
|
||||
#: py/obj.c
|
||||
msgid "object with buffer protocol required"
|
||||
@ -3019,21 +3010,10 @@ msgstr "o polígono só pode ser registrado em um pai"
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c
|
||||
#: ports/cxd56/common-hal/pulseio/PulseIn.c
|
||||
#: ports/nrf/common-hal/pulseio/PulseIn.c
|
||||
#: ports/stm/common-hal/pulseio/PulseIn.c
|
||||
msgid "pop from an empty PulseIn"
|
||||
msgstr "pop a partir de um PulseIn vazio"
|
||||
|
||||
#: py/objset.c
|
||||
msgid "pop from an empty set"
|
||||
msgstr "pop a partir de um conjunto vazio"
|
||||
|
||||
#: py/objlist.c
|
||||
msgid "pop from empty list"
|
||||
msgstr "pop a partir da lista vazia"
|
||||
|
||||
#: py/objdict.c
|
||||
msgid "popitem(): dictionary is empty"
|
||||
msgstr "popitem(): o dicionário está vazio"
|
||||
#: ports/stm/common-hal/pulseio/PulseIn.c py/objdict.c py/objlist.c py/objset.c
|
||||
#: shared-bindings/ps2io/Ps2.c
|
||||
msgid "pop from empty %q"
|
||||
msgstr "pop a partir do %q vazio"
|
||||
|
||||
#: py/objint_mpz.c
|
||||
msgid "pow() 3rd argument cannot be 0"
|
||||
@ -3070,7 +3050,7 @@ msgstr "a anotação do retorno deve ser um identificador"
|
||||
|
||||
#: py/emitnative.c
|
||||
msgid "return expected '%q' but got '%q'"
|
||||
msgstr "o retorno esperado era '%q', porém obteve '% q'"
|
||||
msgstr "o retorno esperado era '%q', porém obteve '%q'"
|
||||
|
||||
#: shared-bindings/rgbmatrix/RGBMatrix.c
|
||||
#, c-format
|
||||
@ -3191,13 +3171,8 @@ msgid "stream operation not supported"
|
||||
msgstr "a operação do fluxo não é compatível"
|
||||
|
||||
#: py/objstrunicode.c
|
||||
msgid "string index out of range"
|
||||
msgstr "o índice da string está fora do intervalo"
|
||||
|
||||
#: py/objstrunicode.c
|
||||
#, c-format
|
||||
msgid "string indices must be integers, not %s"
|
||||
msgstr "o índices das string devem ser números inteiros, não %s"
|
||||
msgid "string indices must be integers, not %q"
|
||||
msgstr "a sequência dos índices devem ser inteiros, não %q"
|
||||
|
||||
#: py/stream.c
|
||||
msgid "string not supported; use bytes or bytearray"
|
||||
@ -3207,10 +3182,6 @@ msgstr "a string não é compatível; use bytes ou bytearray"
|
||||
msgid "struct: cannot index"
|
||||
msgstr "struct: não pode indexar"
|
||||
|
||||
#: extmod/moductypes.c
|
||||
msgid "struct: index out of range"
|
||||
msgstr "struct: índice fora do intervalo"
|
||||
|
||||
#: extmod/moductypes.c
|
||||
msgid "struct: no fields"
|
||||
msgstr "struct: sem campos"
|
||||
@ -3278,9 +3249,9 @@ msgstr "valores demais para descompactar (esperado %d)"
|
||||
|
||||
#: extmod/ulab/code/approx/approx.c
|
||||
msgid "trapz is defined for 1D arrays of equal length"
|
||||
msgstr ""
|
||||
msgstr "o trapz está definido para 1D arrays de igual tamanho"
|
||||
|
||||
#: extmod/ulab/code/linalg/linalg.c py/objstr.c
|
||||
#: extmod/ulab/code/linalg/linalg.c
|
||||
msgid "tuple index out of range"
|
||||
msgstr "o índice da tupla está fora do intervalo"
|
||||
|
||||
@ -3288,10 +3259,6 @@ msgstr "o índice da tupla está fora do intervalo"
|
||||
msgid "tuple/list has wrong length"
|
||||
msgstr "a tupla/lista está com tamanho incorreto"
|
||||
|
||||
#: shared-bindings/_pixelbuf/PixelBuf.c
|
||||
msgid "tuple/list required on RHS"
|
||||
msgstr "a tupla/lista necessária no RHS"
|
||||
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c ports/nrf/common-hal/busio/UART.c
|
||||
#: shared-bindings/busio/UART.c
|
||||
msgid "tx and rx cannot both be None"
|
||||
@ -3347,9 +3314,8 @@ msgid "unknown conversion specifier %c"
|
||||
msgstr "especificador de conversão desconhecido %c"
|
||||
|
||||
#: py/objstr.c
|
||||
#, c-format
|
||||
msgid "unknown format code '%c' for object of type '%s'"
|
||||
msgstr "código de formato desconhecido '%c' para o objeto do tipo '%s'"
|
||||
msgid "unknown format code '%c' for object of type '%q'"
|
||||
msgstr "o formato do código '%c' é desconhecido para o objeto do tipo '%q'"
|
||||
|
||||
#: py/compile.c
|
||||
msgid "unknown type"
|
||||
@ -3388,16 +3354,16 @@ msgid "unsupported format character '%c' (0x%x) at index %d"
|
||||
msgstr "o caractere do formato não é compatível '%c' (0x%x) no índice %d"
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "unsupported type for %q: '%s'"
|
||||
msgstr "tipo não compatível para %q: '%s'"
|
||||
msgid "unsupported type for %q: '%q'"
|
||||
msgstr "tipo sem suporte para %q: '%q'"
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "unsupported type for operator"
|
||||
msgstr "tipo não compatível para o operador"
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "unsupported types for %q: '%s', '%s'"
|
||||
msgstr "tipos não compatíveis para %q: '%s', '%s'"
|
||||
msgid "unsupported types for %q: '%q', '%q'"
|
||||
msgstr "tipo sem suporte para %q: '%q', '%q'"
|
||||
|
||||
#: py/objint.c
|
||||
#, c-format
|
||||
@ -3410,7 +3376,7 @@ msgstr "o value_count deve ser > 0"
|
||||
|
||||
#: extmod/ulab/code/linalg/linalg.c
|
||||
msgid "vectors must have same lengths"
|
||||
msgstr ""
|
||||
msgstr "os vetores devem ter os mesmos comprimentos"
|
||||
|
||||
#: shared-bindings/watchdog/WatchDogTimer.c
|
||||
msgid "watchdog timeout must be greater than 0"
|
||||
@ -3476,15 +3442,129 @@ 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 "tuple/list required on RHS"
|
||||
#~ msgstr "a tupla/lista necessária no RHS"
|
||||
|
||||
#~ msgid "%q indices must be integers, not %s"
|
||||
#~ msgstr "Os índices %q devem ser inteiros, e não %s"
|
||||
|
||||
#~ msgid "'%s' object cannot assign attribute '%q'"
|
||||
#~ msgstr "O objeto '%s' não pode definir o atributo '%q'"
|
||||
|
||||
#~ msgid "'%s' object does not support '%q'"
|
||||
#~ msgstr "O objeto '%s' não é compatível com '%q'"
|
||||
|
||||
#~ msgid "'%s' object does not support item assignment"
|
||||
#~ msgstr "O objeto '%s' não compatível com a atribuição dos itens"
|
||||
|
||||
#~ msgid "'%s' object does not support item deletion"
|
||||
#~ msgstr "O objeto '%s' não é compatível com exclusão do item"
|
||||
|
||||
#~ msgid "'%s' object has no attribute '%q'"
|
||||
#~ msgstr "O objeto '%s' não possui o atributo '%q'"
|
||||
|
||||
#~ msgid "'%s' object is not an iterator"
|
||||
#~ msgstr "O objeto '%s' não é um iterador"
|
||||
|
||||
#~ msgid "'%s' object is not callable"
|
||||
#~ msgstr "O objeto '%s' não é invocável"
|
||||
|
||||
#~ msgid "'%s' object is not iterable"
|
||||
#~ msgstr "O objeto '%s' não é iterável"
|
||||
|
||||
#~ msgid "'%s' object is not subscriptable"
|
||||
#~ msgstr "O objeto '%s' não é subroteirizável"
|
||||
|
||||
#~ msgid "Invalid I2C pin selection"
|
||||
#~ msgstr "A seleção dos pinos I2C é inválido"
|
||||
|
||||
#~ msgid "Invalid SPI pin selection"
|
||||
#~ msgstr "A seleção do pino SPI é inválido"
|
||||
|
||||
#~ msgid "Invalid UART pin selection"
|
||||
#~ msgstr "A seleção dos pinos UART é inválido"
|
||||
|
||||
#~ msgid "Pop from an empty Ps2 buffer"
|
||||
#~ msgstr "Buffer Ps2 vazio"
|
||||
|
||||
#~ msgid "Running in safe mode! Auto-reload is off.\n"
|
||||
#~ msgstr "Rodando em modo seguro! Atualização automática está desligada.\n"
|
||||
|
||||
#~ msgid "Running in safe mode! Not running saved code.\n"
|
||||
#~ msgstr "Rodando em modo seguro! Não está executando o código salvo.\n"
|
||||
|
||||
#~ msgid "__init__() should return None, not '%s'"
|
||||
#~ msgstr "O __init__() deve retornar Nenhum, não '%s'"
|
||||
|
||||
#~ msgid "can't convert %s to complex"
|
||||
#~ msgstr "Não é possível converter %s para complex"
|
||||
|
||||
#~ msgid "can't convert %s to float"
|
||||
#~ msgstr "Não é possível converter %s para float"
|
||||
|
||||
#~ msgid "can't convert %s to int"
|
||||
#~ msgstr "Não é possível converter %s para int"
|
||||
|
||||
#~ msgid "can't convert NaN to int"
|
||||
#~ msgstr "Não é possível converter NaN para int"
|
||||
|
||||
#~ msgid "can't convert address to int"
|
||||
#~ msgstr "não é possível converter o endereço para int"
|
||||
|
||||
#~ msgid "can't convert inf to int"
|
||||
#~ msgstr "não é possível converter inf para int"
|
||||
|
||||
#~ msgid "can't convert to complex"
|
||||
#~ msgstr "não é possível converter para complex"
|
||||
|
||||
#~ msgid "can't convert to float"
|
||||
#~ msgstr "não é possível converter para float"
|
||||
|
||||
#~ msgid "can't convert to int"
|
||||
#~ msgstr "não é possível converter para int"
|
||||
|
||||
#~ msgid "object '%s' is not a tuple or list"
|
||||
#~ msgstr "o objeto '%s' não é uma tupla ou uma lista"
|
||||
|
||||
#~ msgid "object of type '%s' has no len()"
|
||||
#~ msgstr "O objeto do tipo '%s' não possui len()"
|
||||
|
||||
#~ msgid "pop from an empty PulseIn"
|
||||
#~ msgstr "pop a partir de um PulseIn vazio"
|
||||
|
||||
#~ msgid "pop from an empty set"
|
||||
#~ msgstr "pop a partir de um conjunto vazio"
|
||||
|
||||
#~ msgid "pop from empty list"
|
||||
#~ msgstr "pop a partir da lista vazia"
|
||||
|
||||
#~ msgid "popitem(): dictionary is empty"
|
||||
#~ msgstr "popitem(): o dicionário está vazio"
|
||||
|
||||
#~ msgid "string index out of range"
|
||||
#~ msgstr "o índice da string está fora do intervalo"
|
||||
|
||||
#~ msgid "string indices must be integers, not %s"
|
||||
#~ msgstr "o índices das string devem ser números inteiros, não %s"
|
||||
|
||||
#~ msgid "struct: index out of range"
|
||||
#~ msgstr "struct: índice fora do intervalo"
|
||||
|
||||
#~ msgid "unknown format code '%c' for object of type '%s'"
|
||||
#~ msgstr "código de formato desconhecido '%c' para o objeto do tipo '%s'"
|
||||
|
||||
#~ msgid "unsupported type for %q: '%s'"
|
||||
#~ msgstr "tipo não compatível para %q: '%s'"
|
||||
|
||||
#~ msgid "unsupported types for %q: '%s', '%s'"
|
||||
#~ msgstr "tipos não compatíveis para %q: '%s', '%s'"
|
||||
|
||||
#~ msgid "'%q' object is not bytes-like"
|
||||
#~ msgstr "objetos '%q' não são bytes-like"
|
||||
|
||||
#~ msgid "'async for' or 'async with' outside async function"
|
||||
#~ msgstr "'assíncrono para' ou 'assíncrono com' função assíncrona externa"
|
||||
|
||||
#~ msgid "PulseOut not supported on this chip"
|
||||
#~ msgstr "O PulseOut não é compatível neste CI"
|
||||
|
||||
#~ msgid "PulseIn not supported on this chip"
|
||||
#~ msgstr "O PulseIn não é compatível neste CI"
|
||||
|
||||
|
404
locale/sv.po
404
locale/sv.po
@ -5,7 +5,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-07-28 16:57-0500\n"
|
||||
"POT-Creation-Date: 2020-08-18 11:19-0400\n"
|
||||
"PO-Revision-Date: 2020-07-25 20:58+0000\n"
|
||||
"Last-Translator: Jonny Bergdahl <jonny@bergdahl.it>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@ -72,13 +72,17 @@ msgstr "%q-fel: %d"
|
||||
msgid "%q in use"
|
||||
msgstr "%q används redan"
|
||||
|
||||
#: py/obj.c
|
||||
#: extmod/moductypes.c ports/atmel-samd/common-hal/pulseio/PulseIn.c
|
||||
#: ports/cxd56/common-hal/pulseio/PulseIn.c
|
||||
#: ports/nrf/common-hal/pulseio/PulseIn.c
|
||||
#: ports/stm/common-hal/pulseio/PulseIn.c py/obj.c py/objstr.c
|
||||
#: py/objstrunicode.c
|
||||
msgid "%q index out of range"
|
||||
msgstr "Index %q ligger utanför intervallet"
|
||||
|
||||
#: py/obj.c
|
||||
msgid "%q indices must be integers, not %s"
|
||||
msgstr "Indexet %q måste vara ett heltal, inte %s"
|
||||
msgid "%q indices must be integers, not %q"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/vectorio/Polygon.c
|
||||
msgid "%q list must be a list"
|
||||
@ -116,6 +120,42 @@ msgstr "%q() kräver %d positionsargument men %d gavs"
|
||||
msgid "'%q' argument required"
|
||||
msgstr "'%q' argument krävs"
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%q' object cannot assign attribute '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/proto.c
|
||||
msgid "'%q' object does not support '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
msgid "'%q' object does not support item assignment"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
msgid "'%q' object does not support item deletion"
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%q' object has no attribute '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%q' object is not an iterator"
|
||||
msgstr ""
|
||||
|
||||
#: py/objtype.c py/runtime.c
|
||||
msgid "'%q' object is not callable"
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%q' object is not iterable"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
msgid "'%q' object is not subscriptable"
|
||||
msgstr ""
|
||||
|
||||
#: py/emitinlinethumb.c py/emitinlinextensa.c
|
||||
#, c-format
|
||||
msgid "'%s' expects a label"
|
||||
@ -166,48 +206,6 @@ msgstr "'%s' heltal %d ligger inte inom intervallet %d..%d"
|
||||
msgid "'%s' integer 0x%x does not fit in mask 0x%x"
|
||||
msgstr "'%s' heltal 0x%x ryms inte i mask 0x%x"
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%s' object cannot assign attribute '%q'"
|
||||
msgstr "Objektet '%s' kan inte tilldela attributet '%q'"
|
||||
|
||||
#: py/proto.c
|
||||
msgid "'%s' object does not support '%q'"
|
||||
msgstr "Objektet '%s' har inte stöd för '%q'"
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "'%s' object does not support item assignment"
|
||||
msgstr "Objektet '%s' stöder inte tilldelningen"
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "'%s' object does not support item deletion"
|
||||
msgstr "Objektet '%s' stöder inte borttagning av objekt"
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%s' object has no attribute '%q'"
|
||||
msgstr "Objektet '%s' har inget attribut '%q'"
|
||||
|
||||
#: py/runtime.c
|
||||
#, c-format
|
||||
msgid "'%s' object is not an iterator"
|
||||
msgstr "Objektet '%s' är inte en iterator"
|
||||
|
||||
#: py/objtype.c py/runtime.c
|
||||
#, c-format
|
||||
msgid "'%s' object is not callable"
|
||||
msgstr "Objektet '%s' kan inte anropas"
|
||||
|
||||
#: py/runtime.c
|
||||
#, c-format
|
||||
msgid "'%s' object is not iterable"
|
||||
msgstr "Objektet '%s' är inte itererable"
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "'%s' object is not subscriptable"
|
||||
msgstr "Objektet '%s' är inte indexbar"
|
||||
|
||||
#: py/objstr.c
|
||||
msgid "'=' alignment not allowed in string format specifier"
|
||||
msgstr "'='-justering tillåts inte i strängformatspecifikation"
|
||||
@ -457,6 +455,10 @@ msgstr "Buffertlängd %d för stor. Den måste vara mindre än %d"
|
||||
msgid "Buffer length must be a multiple of 512"
|
||||
msgstr "Buffertlängd måste vara en multipel av 512"
|
||||
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c
|
||||
msgid "Buffer must be a multiple of 512 bytes"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/bitbangio/I2C.c shared-bindings/busio/I2C.c
|
||||
msgid "Buffer must be at least length 1"
|
||||
msgstr "Bufferten måste ha minst längd 1"
|
||||
@ -653,6 +655,10 @@ msgstr "Det gick inte att återinitiera timern"
|
||||
msgid "Could not restart PWM"
|
||||
msgstr "Det gick inte att starta om PWM"
|
||||
|
||||
#: shared-bindings/_bleio/Adapter.c
|
||||
msgid "Could not set address"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/pulseio/PWMOut.c
|
||||
msgid "Could not start PWM"
|
||||
msgstr "Det gick inte att starta PWM"
|
||||
@ -752,7 +758,7 @@ msgstr "Fel i regex"
|
||||
|
||||
#: shared-bindings/aesio/aes.c shared-bindings/busio/SPI.c
|
||||
#: shared-bindings/microcontroller/Pin.c
|
||||
#: shared-bindings/neopixel_write/__init__.c shared-bindings/pulseio/PulseOut.c
|
||||
#: shared-bindings/neopixel_write/__init__.c
|
||||
#: shared-bindings/terminalio/Terminal.c
|
||||
msgid "Expected a %q"
|
||||
msgstr "Förväntade %q"
|
||||
@ -835,6 +841,11 @@ msgstr "Det gick inte att skriva till intern flash."
|
||||
msgid "File exists"
|
||||
msgstr "Filen finns redan"
|
||||
|
||||
#: shared-module/framebufferio/FramebufferDisplay.c
|
||||
#, c-format
|
||||
msgid "Framebuffer requires %d bytes"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c
|
||||
msgid "Frequency captured is above capability. Capture Paused."
|
||||
msgstr "Infångningsfrekvens är för hög. Infångning pausad."
|
||||
@ -859,7 +870,7 @@ msgid "Group full"
|
||||
msgstr "Gruppen är full"
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/I2C.c
|
||||
#: ports/stm/common-hal/busio/SPI.c
|
||||
#: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/sdioio/SDCard.c
|
||||
msgid "Hardware busy, try alternative pins"
|
||||
msgstr "Hårdvaran är upptagen, prova alternativa pinnar"
|
||||
|
||||
@ -875,6 +886,10 @@ msgstr "I/O-operation på stängd fil"
|
||||
msgid "I2C Init Error"
|
||||
msgstr "I2C init-fel"
|
||||
|
||||
#: shared-bindings/audiobusio/I2SOut.c
|
||||
msgid "I2SOut not available"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
#, c-format
|
||||
msgid "IV must be %d bytes long"
|
||||
@ -922,6 +937,11 @@ msgstr "Ogiltig %q"
|
||||
msgid "Invalid %q pin"
|
||||
msgstr "Ogiltig %q-pinne"
|
||||
|
||||
#: ports/stm/common-hal/busio/I2C.c ports/stm/common-hal/busio/SPI.c
|
||||
#: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/sdioio/SDCard.c
|
||||
msgid "Invalid %q pin selection"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/analogio/AnalogIn.c
|
||||
msgid "Invalid ADC Unit value"
|
||||
msgstr "Ogiltigt ADC-enhetsvärde"
|
||||
@ -934,24 +954,12 @@ msgstr "Ogiltig BMP-fil"
|
||||
msgid "Invalid DAC pin supplied"
|
||||
msgstr "Ogiltig DAC-pinne angiven"
|
||||
|
||||
#: ports/stm/common-hal/busio/I2C.c
|
||||
msgid "Invalid I2C pin selection"
|
||||
msgstr "Ogiltigt val av I2C-pinne"
|
||||
|
||||
#: ports/atmel-samd/common-hal/pulseio/PWMOut.c
|
||||
#: ports/cxd56/common-hal/pulseio/PWMOut.c
|
||||
#: ports/nrf/common-hal/pulseio/PWMOut.c shared-bindings/pulseio/PWMOut.c
|
||||
msgid "Invalid PWM frequency"
|
||||
msgstr "Ogiltig PWM-frekvens"
|
||||
|
||||
#: ports/stm/common-hal/busio/SPI.c
|
||||
msgid "Invalid SPI pin selection"
|
||||
msgstr "Ogiltigt val av SPI-pinne"
|
||||
|
||||
#: ports/stm/common-hal/busio/UART.c
|
||||
msgid "Invalid UART pin selection"
|
||||
msgstr "Ogiltigt val av UART-pinne"
|
||||
|
||||
#: py/moduerrno.c shared-module/rgbmatrix/RGBMatrix.c
|
||||
msgid "Invalid argument"
|
||||
msgstr "Ogiltigt argument"
|
||||
@ -1248,6 +1256,10 @@ msgstr "Inte ansluten"
|
||||
msgid "Not playing"
|
||||
msgstr "Ingen uppspelning"
|
||||
|
||||
#: main.c
|
||||
msgid "Not running saved code.\n"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/util.c
|
||||
msgid ""
|
||||
"Object has been deinitialized and can no longer be used. Create a new object."
|
||||
@ -1343,9 +1355,14 @@ msgstr "Plus eventuella moduler i filsystemet\n"
|
||||
msgid "Polygon needs at least 3 points"
|
||||
msgstr "Polygonen behöver minst 3 punkter"
|
||||
|
||||
#: shared-bindings/ps2io/Ps2.c
|
||||
msgid "Pop from an empty Ps2 buffer"
|
||||
msgstr "Pop från en tom Ps2-buffert"
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseOut.c
|
||||
#: ports/cxd56/common-hal/pulseio/PulseOut.c
|
||||
#: ports/nrf/common-hal/pulseio/PulseOut.c
|
||||
#: ports/stm/common-hal/pulseio/PulseOut.c
|
||||
msgid ""
|
||||
"Port does not accept pins or frequency. "
|
||||
"Construct and pass a PWMOut Carrier instead"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/_bleio/Adapter.c
|
||||
msgid "Prefix buffer must be on the heap"
|
||||
@ -1360,6 +1377,10 @@ msgstr ""
|
||||
msgid "Pull not used when direction is output."
|
||||
msgstr "Pull används inte när riktningen är output."
|
||||
|
||||
#: ports/stm/ref/pulseout-pre-timeralloc.c
|
||||
msgid "PulseOut not supported on this chip"
|
||||
msgstr "PulseIn stöds inte av detta chip"
|
||||
|
||||
#: ports/stm/common-hal/os/__init__.c
|
||||
msgid "RNG DeInit Error"
|
||||
msgstr "RNG DeInit-fel"
|
||||
@ -1420,12 +1441,8 @@ msgid "Row entry must be digitalio.DigitalInOut"
|
||||
msgstr "Radvärdet måste vara digitalio.DigitalInOut"
|
||||
|
||||
#: main.c
|
||||
msgid "Running in safe mode! Auto-reload is off.\n"
|
||||
msgstr "Kör i säkert läge! Autoladdning är avstängd.\n"
|
||||
|
||||
#: main.c
|
||||
msgid "Running in safe mode! Not running saved code.\n"
|
||||
msgstr "Kör i säkert läge! Sparad kod körs inte.\n"
|
||||
msgid "Running in safe mode! "
|
||||
msgstr ""
|
||||
|
||||
#: shared-module/sdcardio/SDCard.c
|
||||
msgid "SD card CSD format not supported"
|
||||
@ -1436,6 +1453,16 @@ msgstr "SD-kort CSD-format stöds inte"
|
||||
msgid "SDA or SCL needs a pull up"
|
||||
msgstr "SDA eller SCL behöver en pullup"
|
||||
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c
|
||||
#, c-format
|
||||
msgid "SDIO GetCardInfo Error %d"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c
|
||||
#, c-format
|
||||
msgid "SDIO Init Error %d"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/busio/SPI.c
|
||||
msgid "SPI Init Error"
|
||||
msgstr "SPI Init-fel"
|
||||
@ -1803,9 +1830,8 @@ msgid "__init__() should return None"
|
||||
msgstr "__init __ () ska returnera None"
|
||||
|
||||
#: py/objtype.c
|
||||
#, c-format
|
||||
msgid "__init__() should return None, not '%s'"
|
||||
msgstr "__init __ () ska returnera None, inte '%s'"
|
||||
msgid "__init__() should return None, not '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/objobject.c
|
||||
msgid "__new__ arg must be a user-type"
|
||||
@ -1958,7 +1984,7 @@ msgstr "bytes> 8 bitar stöds inte"
|
||||
msgid "bytes value out of range"
|
||||
msgstr "bytevärde utanför intervallet"
|
||||
|
||||
#: ports/atmel-samd/bindings/samd/Clock.c
|
||||
#: ports/atmel-samd/bindings/samd/Clock.c ports/atmel-samd/common-hal/rtc/RTC.c
|
||||
msgid "calibration is out of range"
|
||||
msgstr "kalibrering är utanför intervallet"
|
||||
|
||||
@ -1990,48 +2016,18 @@ msgstr "kan inte lägga till särskild metod för redan subklassad klass"
|
||||
msgid "can't assign to expression"
|
||||
msgstr "kan inte tilldela uttryck"
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "can't convert %s to complex"
|
||||
msgstr "kan inte konvertera %s till komplex"
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "can't convert %s to float"
|
||||
msgstr "kan inte konvertera %s till float"
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "can't convert %s to int"
|
||||
msgstr "kan inte konvertera %s till int"
|
||||
#: py/obj.c py/objint.c shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
#: shared-module/_pixelbuf/PixelBuf.c
|
||||
msgid "can't convert %q to %q"
|
||||
msgstr ""
|
||||
|
||||
#: py/objstr.c
|
||||
msgid "can't convert '%q' object to %q implicitly"
|
||||
msgstr "kan inte konvertera '%q' objekt implicit till %q"
|
||||
|
||||
#: py/objint.c
|
||||
msgid "can't convert NaN to int"
|
||||
msgstr "kan inte konvertera NaN till int"
|
||||
|
||||
#: shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
msgid "can't convert address to int"
|
||||
msgstr "kan inte konvertera address till int"
|
||||
|
||||
#: py/objint.c
|
||||
msgid "can't convert inf to int"
|
||||
msgstr "kan inte konvertera inf till int"
|
||||
|
||||
#: py/obj.c
|
||||
msgid "can't convert to complex"
|
||||
msgstr "kan inte konvertera till komplex"
|
||||
|
||||
#: py/obj.c
|
||||
msgid "can't convert to float"
|
||||
msgstr "kan inte konvertera till float"
|
||||
|
||||
#: py/obj.c
|
||||
msgid "can't convert to int"
|
||||
msgstr "kan inte konvertera till int"
|
||||
msgid "can't convert to %q"
|
||||
msgstr ""
|
||||
|
||||
#: py/objstr.c
|
||||
msgid "can't convert to str implicitly"
|
||||
@ -2115,7 +2111,7 @@ msgstr ""
|
||||
|
||||
#: py/objtype.c
|
||||
msgid "cannot create '%q' instances"
|
||||
msgstr "kan inte skapa instanser av '% q'"
|
||||
msgstr "kan inte skapa instanser av '%q'"
|
||||
|
||||
#: py/objtype.c
|
||||
msgid "cannot create instance"
|
||||
@ -2443,7 +2439,7 @@ msgstr "funktionen saknar det obligatoriska nyckelordsargumentet '%q'"
|
||||
msgid "function missing required positional argument #%d"
|
||||
msgstr "funktionen saknar det obligatoriska positionsargumentet #%d"
|
||||
|
||||
#: py/argcheck.c py/bc.c py/objnamedtuple.c
|
||||
#: py/argcheck.c py/bc.c py/objnamedtuple.c shared-bindings/time/__init__.c
|
||||
#, c-format
|
||||
msgid "function takes %d positional arguments but %d were given"
|
||||
msgstr "funktionen kräver %d positionsargument men %d angavs"
|
||||
@ -2492,10 +2488,7 @@ msgstr "felaktig utfyllnad"
|
||||
msgid "index is out of bounds"
|
||||
msgstr "index är utanför gränserna"
|
||||
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c
|
||||
#: ports/cxd56/common-hal/pulseio/PulseIn.c
|
||||
#: ports/nrf/common-hal/pulseio/PulseIn.c
|
||||
#: ports/stm/common-hal/pulseio/PulseIn.c py/obj.c
|
||||
#: py/obj.c
|
||||
msgid "index out of range"
|
||||
msgstr "index utanför intervallet"
|
||||
|
||||
@ -2854,9 +2847,8 @@ msgid "number of points must be at least 2"
|
||||
msgstr "antal punkter måste vara minst 2"
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "object '%s' is not a tuple or list"
|
||||
msgstr "objektet '%s' är inte en tupel eller lista"
|
||||
msgid "object '%q' is not a tuple or list"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
msgid "object does not support item assignment"
|
||||
@ -2891,9 +2883,8 @@ msgid "object not iterable"
|
||||
msgstr "objektet är inte iterable"
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
msgid "object of type '%s' has no len()"
|
||||
msgstr "objekt av typen '%s' har ingen len()"
|
||||
msgid "object of type '%q' has no len()"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
msgid "object with buffer protocol required"
|
||||
@ -2986,21 +2977,10 @@ msgstr "polygon kan endast registreras i en förälder"
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c
|
||||
#: ports/cxd56/common-hal/pulseio/PulseIn.c
|
||||
#: ports/nrf/common-hal/pulseio/PulseIn.c
|
||||
#: ports/stm/common-hal/pulseio/PulseIn.c
|
||||
msgid "pop from an empty PulseIn"
|
||||
msgstr "pop från en tom PulseIn"
|
||||
|
||||
#: py/objset.c
|
||||
msgid "pop from an empty set"
|
||||
msgstr "pop från en tom uppsättning"
|
||||
|
||||
#: py/objlist.c
|
||||
msgid "pop from empty list"
|
||||
msgstr "pop från tom lista"
|
||||
|
||||
#: py/objdict.c
|
||||
msgid "popitem(): dictionary is empty"
|
||||
msgstr "popitem(): ordlistan är tom"
|
||||
#: ports/stm/common-hal/pulseio/PulseIn.c py/objdict.c py/objlist.c py/objset.c
|
||||
#: shared-bindings/ps2io/Ps2.c
|
||||
msgid "pop from empty %q"
|
||||
msgstr ""
|
||||
|
||||
#: py/objint_mpz.c
|
||||
msgid "pow() 3rd argument cannot be 0"
|
||||
@ -3158,13 +3138,8 @@ msgid "stream operation not supported"
|
||||
msgstr "stream-åtgärd stöds inte"
|
||||
|
||||
#: py/objstrunicode.c
|
||||
msgid "string index out of range"
|
||||
msgstr "strängindex utanför intervallet"
|
||||
|
||||
#: py/objstrunicode.c
|
||||
#, c-format
|
||||
msgid "string indices must be integers, not %s"
|
||||
msgstr "strängindex måste vara heltal, inte %s"
|
||||
msgid "string indices must be integers, not %q"
|
||||
msgstr ""
|
||||
|
||||
#: py/stream.c
|
||||
msgid "string not supported; use bytes or bytearray"
|
||||
@ -3174,10 +3149,6 @@ msgstr "sträng stöds inte; använd bytes eller bytearray"
|
||||
msgid "struct: cannot index"
|
||||
msgstr "struct: kan inte indexera"
|
||||
|
||||
#: extmod/moductypes.c
|
||||
msgid "struct: index out of range"
|
||||
msgstr "struct: index utanför intervallet"
|
||||
|
||||
#: extmod/moductypes.c
|
||||
msgid "struct: no fields"
|
||||
msgstr "struct: inga fält"
|
||||
@ -3247,7 +3218,7 @@ msgstr "för många värden att packa upp (förväntat %d)"
|
||||
msgid "trapz is defined for 1D arrays of equal length"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/linalg/linalg.c py/objstr.c
|
||||
#: extmod/ulab/code/linalg/linalg.c
|
||||
msgid "tuple index out of range"
|
||||
msgstr "tupelindex utanför intervallet"
|
||||
|
||||
@ -3255,10 +3226,6 @@ msgstr "tupelindex utanför intervallet"
|
||||
msgid "tuple/list has wrong length"
|
||||
msgstr "tupel/lista har fel längd"
|
||||
|
||||
#: shared-bindings/_pixelbuf/PixelBuf.c
|
||||
msgid "tuple/list required on RHS"
|
||||
msgstr "tupel/lista krävs för RHS"
|
||||
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c ports/nrf/common-hal/busio/UART.c
|
||||
#: shared-bindings/busio/UART.c
|
||||
msgid "tx and rx cannot both be None"
|
||||
@ -3314,9 +3281,8 @@ msgid "unknown conversion specifier %c"
|
||||
msgstr "okänd konverteringsspecificerare %c"
|
||||
|
||||
#: py/objstr.c
|
||||
#, c-format
|
||||
msgid "unknown format code '%c' for object of type '%s'"
|
||||
msgstr "okänt format '%c' för objekt av typ '%s'"
|
||||
msgid "unknown format code '%c' for object of type '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/compile.c
|
||||
msgid "unknown type"
|
||||
@ -3355,16 +3321,16 @@ msgid "unsupported format character '%c' (0x%x) at index %d"
|
||||
msgstr "Formattecknet '%c' (0x%x) stöds inte vid index %d"
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "unsupported type for %q: '%s'"
|
||||
msgstr "typ som inte stöds för %q: '%s'"
|
||||
msgid "unsupported type for %q: '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "unsupported type for operator"
|
||||
msgstr "typ stöds inte för operatören"
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "unsupported types for %q: '%s', '%s'"
|
||||
msgstr "typ som inte stöds för %q: '%s', '%s'"
|
||||
msgid "unsupported types for %q: '%q', '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/objint.c
|
||||
#, c-format
|
||||
@ -3443,15 +3409,129 @@ 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 "tuple/list required on RHS"
|
||||
#~ msgstr "tupel/lista krävs för RHS"
|
||||
|
||||
#~ msgid "%q indices must be integers, not %s"
|
||||
#~ msgstr "Indexet %q måste vara ett heltal, inte %s"
|
||||
|
||||
#~ msgid "'%s' object cannot assign attribute '%q'"
|
||||
#~ msgstr "Objektet '%s' kan inte tilldela attributet '%q'"
|
||||
|
||||
#~ msgid "'%s' object does not support '%q'"
|
||||
#~ msgstr "Objektet '%s' har inte stöd för '%q'"
|
||||
|
||||
#~ msgid "'%s' object does not support item assignment"
|
||||
#~ msgstr "Objektet '%s' stöder inte tilldelningen"
|
||||
|
||||
#~ msgid "'%s' object does not support item deletion"
|
||||
#~ msgstr "Objektet '%s' stöder inte borttagning av objekt"
|
||||
|
||||
#~ msgid "'%s' object has no attribute '%q'"
|
||||
#~ msgstr "Objektet '%s' har inget attribut '%q'"
|
||||
|
||||
#~ msgid "'%s' object is not an iterator"
|
||||
#~ msgstr "Objektet '%s' är inte en iterator"
|
||||
|
||||
#~ msgid "'%s' object is not callable"
|
||||
#~ msgstr "Objektet '%s' kan inte anropas"
|
||||
|
||||
#~ msgid "'%s' object is not iterable"
|
||||
#~ msgstr "Objektet '%s' är inte itererable"
|
||||
|
||||
#~ msgid "'%s' object is not subscriptable"
|
||||
#~ msgstr "Objektet '%s' är inte indexbar"
|
||||
|
||||
#~ msgid "Invalid I2C pin selection"
|
||||
#~ msgstr "Ogiltigt val av I2C-pinne"
|
||||
|
||||
#~ msgid "Invalid SPI pin selection"
|
||||
#~ msgstr "Ogiltigt val av SPI-pinne"
|
||||
|
||||
#~ msgid "Invalid UART pin selection"
|
||||
#~ msgstr "Ogiltigt val av UART-pinne"
|
||||
|
||||
#~ msgid "Pop from an empty Ps2 buffer"
|
||||
#~ msgstr "Pop från en tom Ps2-buffert"
|
||||
|
||||
#~ msgid "Running in safe mode! Auto-reload is off.\n"
|
||||
#~ msgstr "Kör i säkert läge! Autoladdning är avstängd.\n"
|
||||
|
||||
#~ msgid "Running in safe mode! Not running saved code.\n"
|
||||
#~ msgstr "Kör i säkert läge! Sparad kod körs inte.\n"
|
||||
|
||||
#~ msgid "__init__() should return None, not '%s'"
|
||||
#~ msgstr "__init __ () ska returnera None, inte '%s'"
|
||||
|
||||
#~ msgid "can't convert %s to complex"
|
||||
#~ msgstr "kan inte konvertera %s till komplex"
|
||||
|
||||
#~ msgid "can't convert %s to float"
|
||||
#~ msgstr "kan inte konvertera %s till float"
|
||||
|
||||
#~ msgid "can't convert %s to int"
|
||||
#~ msgstr "kan inte konvertera %s till int"
|
||||
|
||||
#~ msgid "can't convert NaN to int"
|
||||
#~ msgstr "kan inte konvertera NaN till int"
|
||||
|
||||
#~ msgid "can't convert address to int"
|
||||
#~ msgstr "kan inte konvertera address till int"
|
||||
|
||||
#~ msgid "can't convert inf to int"
|
||||
#~ msgstr "kan inte konvertera inf till int"
|
||||
|
||||
#~ msgid "can't convert to complex"
|
||||
#~ msgstr "kan inte konvertera till komplex"
|
||||
|
||||
#~ msgid "can't convert to float"
|
||||
#~ msgstr "kan inte konvertera till float"
|
||||
|
||||
#~ msgid "can't convert to int"
|
||||
#~ msgstr "kan inte konvertera till int"
|
||||
|
||||
#~ msgid "object '%s' is not a tuple or list"
|
||||
#~ msgstr "objektet '%s' är inte en tupel eller lista"
|
||||
|
||||
#~ msgid "object of type '%s' has no len()"
|
||||
#~ msgstr "objekt av typen '%s' har ingen len()"
|
||||
|
||||
#~ msgid "pop from an empty PulseIn"
|
||||
#~ msgstr "pop från en tom PulseIn"
|
||||
|
||||
#~ msgid "pop from an empty set"
|
||||
#~ msgstr "pop från en tom uppsättning"
|
||||
|
||||
#~ msgid "pop from empty list"
|
||||
#~ msgstr "pop från tom lista"
|
||||
|
||||
#~ msgid "popitem(): dictionary is empty"
|
||||
#~ msgstr "popitem(): ordlistan är tom"
|
||||
|
||||
#~ msgid "string index out of range"
|
||||
#~ msgstr "strängindex utanför intervallet"
|
||||
|
||||
#~ msgid "string indices must be integers, not %s"
|
||||
#~ msgstr "strängindex måste vara heltal, inte %s"
|
||||
|
||||
#~ msgid "struct: index out of range"
|
||||
#~ msgstr "struct: index utanför intervallet"
|
||||
|
||||
#~ msgid "unknown format code '%c' for object of type '%s'"
|
||||
#~ msgstr "okänt format '%c' för objekt av typ '%s'"
|
||||
|
||||
#~ msgid "unsupported type for %q: '%s'"
|
||||
#~ msgstr "typ som inte stöds för %q: '%s'"
|
||||
|
||||
#~ msgid "unsupported types for %q: '%s', '%s'"
|
||||
#~ msgstr "typ som inte stöds för %q: '%s', '%s'"
|
||||
|
||||
#~ msgid "'%q' object is not bytes-like"
|
||||
#~ msgstr "%q-objektet är inte byte-lik"
|
||||
|
||||
#~ msgid "'async for' or 'async with' outside async function"
|
||||
#~ msgstr "'async for' eller 'async with' utanför async-funktion"
|
||||
|
||||
#~ msgid "PulseOut not supported on this chip"
|
||||
#~ msgstr "PulseIn stöds inte av detta chip"
|
||||
|
||||
#~ msgid "PulseIn not supported on this chip"
|
||||
#~ msgstr "PulseIn stöds inte av detta chip"
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -6,7 +6,6 @@ PROG=mpy-cross.static-raspbian
|
||||
BUILD=build-static-raspbian
|
||||
STATIC_BUILD=1
|
||||
|
||||
$(shell if ! [ -d pitools ]; then echo 1>&2 "Fetching pi build tools. This may take awhile."; git clone -q https://github.com/raspberrypi/tools.git --depth=1 pitools; fi)
|
||||
CROSS_COMPILE = pitools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf-
|
||||
include mpy-cross.mk
|
||||
|
||||
$(shell [ -d pitools ] || git clone --progress --verbose https://github.com/raspberrypi/tools.git --depth=1 pitools)
|
||||
|
@ -103,7 +103,7 @@ ifeq ($(CHIP_FAMILY), same54)
|
||||
PERIPHERALS_CHIP_FAMILY=sam_d5x_e5x
|
||||
OPTIMIZATION_FLAGS ?= -O2
|
||||
# TinyUSB defines
|
||||
CFLAGS += -DCFG_TUSB_MCU=OPT_MCU_SAMD51 -DCFG_TUD_MIDI_RX_BUFSIZE=128 -DCFG_TUD_CDC_RX_BUFSIZE=256 -DCFG_TUD_MIDI_TX_BUFSIZE=128 -DCFG_TUD_CDC_TX_BUFSIZE=256 -DCFG_TUD_MSC_BUFSIZE=1024
|
||||
CFLAGS += -DCFG_TUSB_MCU=OPT_MCU_SAME5X -DCFG_TUD_MIDI_RX_BUFSIZE=128 -DCFG_TUD_CDC_RX_BUFSIZE=256 -DCFG_TUD_MIDI_TX_BUFSIZE=128 -DCFG_TUD_CDC_TX_BUFSIZE=256 -DCFG_TUD_MSC_BUFSIZE=1024
|
||||
endif
|
||||
|
||||
# option to override default optimization level, set in boards/$(BOARD)/mpconfigboard.mk
|
||||
|
@ -15,5 +15,5 @@ CIRCUITPY_BITBANGIO = 0
|
||||
CIRCUITPY_I2CPERIPHERAL = 0
|
||||
CIRCUITPY_VECTORIO = 0
|
||||
|
||||
CFLAGS_INLINE_LIMIT = 60
|
||||
CFLAGS_INLINE_LIMIT = 50
|
||||
SUPEROPT_GC = 0
|
||||
|
@ -10,4 +10,22 @@ INTERNAL_FLASH_FILESYSTEM = 1
|
||||
LONGINT_IMPL = NONE
|
||||
CIRCUITPY_FULL_BUILD = 0
|
||||
|
||||
|
||||
# A number of modules are removed for RFM9x to make room for frozen libraries.
|
||||
# Many I/O functions are not available.
|
||||
CIRCUITPY_ANALOGIO = 0
|
||||
CIRCUITPY_PULSEIO = 0
|
||||
CIRCUITPY_NEOPIXEL_WRITE = 1
|
||||
CIRCUITPY_ROTARYIO = 0
|
||||
CIRCUITPY_RTC = 0
|
||||
CIRCUITPY_SAMD = 0
|
||||
CIRCUITPY_USB_MIDI = 0
|
||||
CIRCUITPY_USB_HID = 0
|
||||
CIRCUITPY_TOUCHIO = 0
|
||||
CFLAGS_INLINE_LIMIT = 35
|
||||
# Make more room.
|
||||
SUPEROPT_GC = 0
|
||||
|
||||
# Include these Python libraries in firmware.
|
||||
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_BusDevice
|
||||
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_RFM9x
|
||||
|
@ -7,8 +7,8 @@ CHIP_VARIANT = SAMD51G19A
|
||||
CHIP_FAMILY = samd51
|
||||
|
||||
QSPI_FLASH_FILESYSTEM = 1
|
||||
EXTERNAL_FLASH_DEVICE_COUNT = 1
|
||||
EXTERNAL_FLASH_DEVICES = "W25Q16JV_IM"
|
||||
EXTERNAL_FLASH_DEVICE_COUNT = 2
|
||||
EXTERNAL_FLASH_DEVICES = "W25Q16JV_IM, W25Q16JV_IQ"
|
||||
LONGINT_IMPL = MPZ
|
||||
|
||||
# No I2S on SAMD51G
|
||||
|
@ -96,7 +96,15 @@ void pulseout_reset() {
|
||||
}
|
||||
|
||||
void common_hal_pulseio_pulseout_construct(pulseio_pulseout_obj_t* self,
|
||||
const pulseio_pwmout_obj_t* carrier) {
|
||||
const pulseio_pwmout_obj_t* carrier,
|
||||
const mcu_pin_obj_t* pin,
|
||||
uint32_t frequency,
|
||||
uint16_t duty_cycle) {
|
||||
if (!carrier || pin || frequency) {
|
||||
mp_raise_NotImplementedError(translate("Port does not accept pins or frequency. \
|
||||
Construct and pass a PWMOut Carrier instead"));
|
||||
}
|
||||
|
||||
if (refcount == 0) {
|
||||
// Find a spare timer.
|
||||
Tc *tc = NULL;
|
||||
|
@ -47,6 +47,16 @@ USB_MSC_EP_NUM_OUT = 1
|
||||
|
||||
CIRCUITPY_ULAB = 0
|
||||
|
||||
ifeq ($(TRANSLATION), ja)
|
||||
RELEASE_NEEDS_CLEAN_BUILD = 1
|
||||
CIRCUITPY_TERMINALIO = 0
|
||||
endif
|
||||
|
||||
ifeq ($(TRANSLATION), ko)
|
||||
RELEASE_NEEDS_CLEAN_BUILD = 1
|
||||
CIRCUITPY_TERMINALIO = 0
|
||||
endif
|
||||
|
||||
endif # samd21
|
||||
|
||||
# Put samd51-only choices here.
|
||||
@ -81,3 +91,5 @@ endif # samd51
|
||||
INTERNAL_LIBM = 1
|
||||
|
||||
USB_SERIAL_NUMBER_LENGTH = 32
|
||||
|
||||
USB_NUM_EP = 8
|
||||
|
@ -58,8 +58,16 @@ static bool pulseout_timer_handler(unsigned int *next_interval_us, void *arg)
|
||||
return true;
|
||||
}
|
||||
|
||||
void common_hal_pulseio_pulseout_construct(pulseio_pulseout_obj_t *self,
|
||||
const pulseio_pwmout_obj_t *carrier) {
|
||||
void common_hal_pulseio_pulseout_construct(pulseio_pulseout_obj_t* self,
|
||||
const pulseio_pwmout_obj_t* carrier,
|
||||
const mcu_pin_obj_t* pin,
|
||||
uint32_t frequency,
|
||||
uint16_t duty_cycle) {
|
||||
if (!carrier || pin || frequency) {
|
||||
mp_raise_NotImplementedError(translate("Port does not accept pins or frequency. \
|
||||
Construct and pass a PWMOut Carrier instead"));
|
||||
}
|
||||
|
||||
if (pulse_fd < 0) {
|
||||
pulse_fd = open("/dev/timer0", O_RDONLY);
|
||||
}
|
||||
|
@ -36,6 +36,8 @@
|
||||
#include "boards/board.h"
|
||||
|
||||
#include "supervisor/port.h"
|
||||
#include "supervisor/background_callback.h"
|
||||
#include "supervisor/usb.h"
|
||||
#include "supervisor/shared/tick.h"
|
||||
|
||||
#include "common-hal/microcontroller/Pin.h"
|
||||
@ -114,6 +116,11 @@ uint32_t port_get_saved_word(void) {
|
||||
return _ebss;
|
||||
}
|
||||
|
||||
static background_callback_t callback;
|
||||
static void usb_background_do(void* unused) {
|
||||
usb_background();
|
||||
}
|
||||
|
||||
volatile bool _tick_enabled;
|
||||
void board_timerhook(void)
|
||||
{
|
||||
@ -121,6 +128,8 @@ void board_timerhook(void)
|
||||
if (_tick_enabled) {
|
||||
supervisor_tick();
|
||||
}
|
||||
|
||||
background_callback_add(&callback, usb_background_do, NULL);
|
||||
}
|
||||
|
||||
uint64_t port_get_raw_ticks(uint8_t* subticks) {
|
||||
|
@ -35,10 +35,17 @@
|
||||
#include "shared-module/displayio/__init__.h"
|
||||
#endif
|
||||
|
||||
#if CIRCUITPY_PULSEIO
|
||||
#include "common-hal/pulseio/PulseIn.h"
|
||||
#endif
|
||||
|
||||
|
||||
void port_background_task(void) {
|
||||
// Zero delay in case FreeRTOS wants to switch to something else.
|
||||
vTaskDelay(0);
|
||||
#if CIRCUITPY_PULSEIO
|
||||
pulsein_background();
|
||||
#endif
|
||||
}
|
||||
|
||||
void port_start_background_task(void) {}
|
||||
|
@ -42,5 +42,7 @@ STATIC const mp_rom_map_elem_t board_global_dict_table[] = {
|
||||
{ MP_ROM_QSTR(MP_QSTR_IO44), MP_ROM_PTR(&pin_GPIO44) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_IO45), MP_ROM_PTR(&pin_GPIO45) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_IO46), MP_ROM_PTR(&pin_GPIO46) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_NEOPIXEL), MP_ROM_PTR(&pin_GPIO18) },
|
||||
};
|
||||
MP_DEFINE_CONST_DICT(board_module_globals, board_global_dict_table);
|
||||
|
@ -93,6 +93,9 @@ void common_hal_neopixel_write (const digitalio_digitalinout_obj_t* digitalinout
|
||||
// Reserve channel
|
||||
uint8_t number = digitalinout->pin->number;
|
||||
rmt_channel_t channel = esp32s2_peripherals_find_and_reserve_rmt();
|
||||
if (channel == RMT_CHANNEL_MAX) {
|
||||
mp_raise_RuntimeError(translate("All timers in use"));
|
||||
}
|
||||
|
||||
// Configure Channel
|
||||
rmt_config_t config = RMT_DEFAULT_CONFIG_TX(number, channel);
|
||||
|
@ -25,51 +25,184 @@
|
||||
*/
|
||||
|
||||
#include "common-hal/pulseio/PulseIn.h"
|
||||
#include "shared-bindings/microcontroller/__init__.h"
|
||||
#include "py/runtime.h"
|
||||
|
||||
// STATIC void pulsein_handler(uint8_t num) {
|
||||
// }
|
||||
STATIC uint8_t refcount = 0;
|
||||
STATIC pulseio_pulsein_obj_t * handles[RMT_CHANNEL_MAX];
|
||||
|
||||
// Requires rmt.c void esp32s2_peripherals_reset_all(void) to reset
|
||||
|
||||
STATIC void update_internal_buffer(pulseio_pulsein_obj_t* self) {
|
||||
uint32_t length = 0;
|
||||
rmt_item32_t *items = (rmt_item32_t *) xRingbufferReceive(self->buf_handle, &length, 0);
|
||||
if (items) {
|
||||
length /= 4;
|
||||
for (size_t i=0; i < length; i++) {
|
||||
uint16_t pos = (self->start + self->len) % self->maxlen;
|
||||
self->buffer[pos] = items[i].duration0 * 3;
|
||||
// Check if second item exists before incrementing
|
||||
if (items[i].duration1) {
|
||||
self->buffer[pos+1] = items[i].duration1 * 3;
|
||||
if (self->len < (self->maxlen - 1)) {
|
||||
self->len += 2;
|
||||
} else {
|
||||
self->start += 2;
|
||||
}
|
||||
} else {
|
||||
if (self->len < self->maxlen) {
|
||||
self->len++;
|
||||
} else {
|
||||
self->start++;
|
||||
}
|
||||
}
|
||||
}
|
||||
vRingbufferReturnItem(self->buf_handle, (void *) items);
|
||||
}
|
||||
}
|
||||
|
||||
// We can't access the RMT interrupt, so we need a global service to prevent
|
||||
// the ringbuffer from overflowing and crashing the peripheral
|
||||
void pulsein_background(void) {
|
||||
for (size_t i = 0; i < RMT_CHANNEL_MAX; i++) {
|
||||
if (handles[i]) {
|
||||
update_internal_buffer(handles[i]);
|
||||
UBaseType_t items_waiting;
|
||||
vRingbufferGetInfo(handles[i]->buf_handle, NULL, NULL, NULL, NULL, &items_waiting);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void pulsein_reset(void) {
|
||||
for (size_t i = 0; i < RMT_CHANNEL_MAX; i++) {
|
||||
handles[i] = NULL;
|
||||
}
|
||||
supervisor_disable_tick();
|
||||
refcount = 0;
|
||||
}
|
||||
|
||||
void common_hal_pulseio_pulsein_construct(pulseio_pulsein_obj_t* self, const mcu_pin_obj_t* pin,
|
||||
uint16_t maxlen, bool idle_state) {
|
||||
mp_raise_NotImplementedError(translate("PulseIn not supported on this chip"));
|
||||
self->buffer = (uint16_t *) m_malloc(maxlen * sizeof(uint16_t), false);
|
||||
if (self->buffer == NULL) {
|
||||
mp_raise_msg_varg(&mp_type_MemoryError, translate("Failed to allocate RX buffer of %d bytes"), maxlen * sizeof(uint16_t));
|
||||
}
|
||||
self->pin = pin;
|
||||
self->maxlen = maxlen;
|
||||
self->idle_state = idle_state;
|
||||
self->start = 0;
|
||||
self->len = 0;
|
||||
self->paused = false;
|
||||
|
||||
// Set pull settings
|
||||
gpio_pullup_dis(pin->number);
|
||||
gpio_pulldown_dis(pin->number);
|
||||
if (idle_state) {
|
||||
gpio_pullup_en(pin->number);
|
||||
} else {
|
||||
gpio_pulldown_en(pin->number);
|
||||
}
|
||||
|
||||
// Find a free RMT Channel and configure it
|
||||
rmt_channel_t channel = esp32s2_peripherals_find_and_reserve_rmt();
|
||||
if (channel == RMT_CHANNEL_MAX) {
|
||||
mp_raise_RuntimeError(translate("All timers in use"));
|
||||
}
|
||||
rmt_config_t config = RMT_DEFAULT_CONFIG_RX(pin->number, channel);
|
||||
config.rx_config.filter_en = true;
|
||||
config.rx_config.idle_threshold = 30000; // 30*3=90ms idle required to register a sequence
|
||||
config.clk_div = 240; // All measurements are divided by 3 to accomodate 65ms pulses
|
||||
rmt_config(&config);
|
||||
rmt_driver_install(channel, 1000, 0); //TODO: pick a more specific buffer size?
|
||||
|
||||
// Store this object and the buffer handle for background updates
|
||||
self->channel = channel;
|
||||
handles[channel] = self;
|
||||
rmt_get_ringbuf_handle(channel, &(self->buf_handle));
|
||||
|
||||
// start RMT RX, and enable ticks so the core doesn't turn off.
|
||||
rmt_rx_start(channel, true);
|
||||
supervisor_enable_tick();
|
||||
refcount++;
|
||||
}
|
||||
|
||||
bool common_hal_pulseio_pulsein_deinited(pulseio_pulsein_obj_t* self) {
|
||||
return false;
|
||||
return handles[self->channel] ? false : true;
|
||||
}
|
||||
|
||||
void common_hal_pulseio_pulsein_deinit(pulseio_pulsein_obj_t* self) {
|
||||
handles[self->channel] = NULL;
|
||||
esp32s2_peripherals_free_rmt(self->channel);
|
||||
reset_pin_number(self->pin->number);
|
||||
refcount--;
|
||||
if (refcount == 0) {
|
||||
supervisor_disable_tick();
|
||||
}
|
||||
}
|
||||
|
||||
void common_hal_pulseio_pulsein_pause(pulseio_pulsein_obj_t* self) {
|
||||
self->paused = true;
|
||||
rmt_rx_stop(self->channel);
|
||||
}
|
||||
|
||||
void common_hal_pulseio_pulsein_resume(pulseio_pulsein_obj_t* self, uint16_t trigger_duration) {
|
||||
// Make sure we're paused.
|
||||
if ( !self->paused ) {
|
||||
common_hal_pulseio_pulsein_pause(self);
|
||||
}
|
||||
|
||||
if (trigger_duration > 0) {
|
||||
gpio_set_direction(self->pin->number, GPIO_MODE_DEF_OUTPUT);
|
||||
gpio_set_level(self->pin->number, !self->idle_state);
|
||||
common_hal_mcu_delay_us((uint32_t)trigger_duration);
|
||||
gpio_set_level(self->pin->number, self->idle_state);
|
||||
gpio_set_direction(self->pin->number, GPIO_MODE_INPUT); // should revert to pull direction
|
||||
}
|
||||
|
||||
self->paused = false;
|
||||
rmt_rx_start(self->channel, false);
|
||||
}
|
||||
|
||||
void common_hal_pulseio_pulsein_clear(pulseio_pulsein_obj_t* self) {
|
||||
// Buffer only updates in BG tasks or fetches, so no extra protection is needed
|
||||
self->start = 0;
|
||||
self->len = 0;
|
||||
}
|
||||
|
||||
uint16_t common_hal_pulseio_pulsein_get_item(pulseio_pulsein_obj_t* self, int16_t index) {
|
||||
return false;
|
||||
update_internal_buffer(self);
|
||||
if (index < 0) {
|
||||
index += self->len;
|
||||
}
|
||||
if (index < 0 || index >= self->len) {
|
||||
mp_raise_IndexError(translate("index out of range"));
|
||||
}
|
||||
uint16_t value = self->buffer[(self->start + index) % self->maxlen];
|
||||
return value;
|
||||
}
|
||||
|
||||
uint16_t common_hal_pulseio_pulsein_popleft(pulseio_pulsein_obj_t* self) {
|
||||
return false;
|
||||
update_internal_buffer(self);
|
||||
|
||||
if (self->len == 0) {
|
||||
mp_raise_IndexError(translate("pop from an empty PulseIn"));
|
||||
}
|
||||
|
||||
uint16_t value = self->buffer[self->start];
|
||||
self->start = (self->start + 1) % self->maxlen;
|
||||
self->len--;
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
uint16_t common_hal_pulseio_pulsein_get_maxlen(pulseio_pulsein_obj_t* self) {
|
||||
return false;
|
||||
return self->maxlen;
|
||||
}
|
||||
|
||||
bool common_hal_pulseio_pulsein_get_paused(pulseio_pulsein_obj_t* self) {
|
||||
return false;
|
||||
return self->paused;
|
||||
}
|
||||
|
||||
uint16_t common_hal_pulseio_pulsein_get_len(pulseio_pulsein_obj_t* self) {
|
||||
return false;
|
||||
return self->len;
|
||||
}
|
||||
|
@ -30,24 +30,27 @@
|
||||
#include "common-hal/microcontroller/Pin.h"
|
||||
|
||||
#include "py/obj.h"
|
||||
#include "driver/rmt.h"
|
||||
#include "rmt.h"
|
||||
|
||||
typedef struct {
|
||||
mp_obj_base_t base;
|
||||
|
||||
const mcu_pin_obj_t* pin;
|
||||
rmt_channel_t channel;
|
||||
bool idle_state;
|
||||
bool paused;
|
||||
volatile bool first_edge;
|
||||
|
||||
RingbufHandle_t buf_handle;
|
||||
|
||||
uint16_t* buffer;
|
||||
uint16_t maxlen;
|
||||
|
||||
volatile uint16_t start;
|
||||
volatile uint16_t len;
|
||||
volatile uint32_t last_overflow;
|
||||
volatile uint16_t last_count;
|
||||
} pulseio_pulsein_obj_t;
|
||||
|
||||
void pulsein_reset(void);
|
||||
void pulsein_background(void);
|
||||
|
||||
#endif // MICROPY_INCLUDED_ESP32S2_COMMON_HAL_PULSEIO_PULSEIN_H
|
||||
|
@ -29,32 +29,63 @@
|
||||
#include "shared-bindings/pulseio/PWMOut.h"
|
||||
#include "py/runtime.h"
|
||||
|
||||
// STATIC void turn_on(pulseio_pulseout_obj_t *pulseout) {
|
||||
// }
|
||||
|
||||
// STATIC void turn_off(pulseio_pulseout_obj_t *pulseout) {
|
||||
// }
|
||||
|
||||
// STATIC void start_timer(void) {
|
||||
// }
|
||||
|
||||
// STATIC void pulseout_event_handler(void) {
|
||||
// }
|
||||
|
||||
void pulseout_reset() {
|
||||
}
|
||||
// Requires rmt.c void esp32s2_peripherals_reset_all(void) to reset
|
||||
|
||||
void common_hal_pulseio_pulseout_construct(pulseio_pulseout_obj_t* self,
|
||||
const pulseio_pwmout_obj_t* carrier) {
|
||||
mp_raise_NotImplementedError(translate("PulseOut not supported on this chip"));
|
||||
const pulseio_pwmout_obj_t* carrier,
|
||||
const mcu_pin_obj_t* pin,
|
||||
uint32_t frequency,
|
||||
uint16_t duty_cycle) {
|
||||
if (carrier || !pin || !frequency) {
|
||||
mp_raise_NotImplementedError(translate("Port does not accept PWM carrier. \
|
||||
Pass a pin, frequency and duty cycle instead"));
|
||||
}
|
||||
|
||||
rmt_channel_t channel = esp32s2_peripherals_find_and_reserve_rmt();
|
||||
if (channel == RMT_CHANNEL_MAX) {
|
||||
mp_raise_RuntimeError(translate("All timers in use"));
|
||||
}
|
||||
|
||||
// Configure Channel
|
||||
rmt_config_t config = RMT_DEFAULT_CONFIG_TX(pin->number, channel);
|
||||
config.tx_config.carrier_en = true;
|
||||
config.tx_config.carrier_duty_percent = (duty_cycle * 100) / (1<<16);
|
||||
config.tx_config.carrier_freq_hz = frequency;
|
||||
config.clk_div = 80;
|
||||
|
||||
rmt_config(&config);
|
||||
rmt_driver_install(channel, 0, 0);
|
||||
|
||||
self->channel = channel;
|
||||
}
|
||||
|
||||
bool common_hal_pulseio_pulseout_deinited(pulseio_pulseout_obj_t* self) {
|
||||
return false;
|
||||
return (self->channel == RMT_CHANNEL_MAX);
|
||||
}
|
||||
|
||||
void common_hal_pulseio_pulseout_deinit(pulseio_pulseout_obj_t* self) {
|
||||
esp32s2_peripherals_free_rmt(self->channel);
|
||||
self->channel = RMT_CHANNEL_MAX;
|
||||
|
||||
}
|
||||
|
||||
void common_hal_pulseio_pulseout_send(pulseio_pulseout_obj_t* self, uint16_t* pulses, uint16_t length) {
|
||||
rmt_item32_t items[length];
|
||||
|
||||
// Circuitpython allows 16 bit pulse values, while ESP32 only allows 15 bits
|
||||
// Thus, we use entire items for one pulse, rather than switching inside each item
|
||||
for (size_t i = 0; i < length; i++) {
|
||||
// Setting the RMT duration to 0 has undefined behavior, so avoid that pre-emptively.
|
||||
if (pulses[i] == 0) {
|
||||
pulses[i] = 1;
|
||||
}
|
||||
uint32_t level = (i % 2) ? 0 : 1;
|
||||
const rmt_item32_t item = {{{ (pulses[i] & 0x8000 ? 0x7FFF : 1), level, (pulses[i] & 0x7FFF), level}}};
|
||||
items[i] = item;
|
||||
}
|
||||
|
||||
rmt_write_items(self->channel, items, length, true);
|
||||
while (rmt_wait_tx_done(self->channel, 0) != ESP_OK) {
|
||||
RUN_BACKGROUND_TASKS;
|
||||
}
|
||||
}
|
||||
|
@ -29,14 +29,14 @@
|
||||
|
||||
#include "common-hal/microcontroller/Pin.h"
|
||||
#include "common-hal/pulseio/PWMOut.h"
|
||||
#include "driver/rmt.h"
|
||||
#include "rmt.h"
|
||||
|
||||
#include "py/obj.h"
|
||||
|
||||
typedef struct {
|
||||
mp_obj_base_t base;
|
||||
pulseio_pwmout_obj_t *pwmout;
|
||||
rmt_channel_t channel;
|
||||
} pulseio_pulseout_obj_t;
|
||||
|
||||
void pulseout_reset(void);
|
||||
|
||||
#endif // MICROPY_INCLUDED_ESP32S2_COMMON_HAL_PULSEIO_PULSEOUT_H
|
||||
|
@ -28,19 +28,18 @@
|
||||
#ifndef ESP32S2_MPCONFIGPORT_H__
|
||||
#define ESP32S2_MPCONFIGPORT_H__
|
||||
|
||||
#define CIRCUITPY_INTERNAL_NVM_SIZE (0)
|
||||
#define MICROPY_NLR_THUMB (0)
|
||||
#define CIRCUITPY_INTERNAL_NVM_SIZE (0)
|
||||
#define MICROPY_NLR_THUMB (0)
|
||||
|
||||
#define MICROPY_PY_UJSON (0)
|
||||
#define MICROPY_USE_INTERNAL_PRINTF (0)
|
||||
#define MICROPY_PY_UJSON (0)
|
||||
#define MICROPY_USE_INTERNAL_PRINTF (0)
|
||||
|
||||
#include "py/circuitpy_mpconfig.h"
|
||||
|
||||
|
||||
#define MICROPY_PORT_ROOT_POINTERS \
|
||||
CIRCUITPY_COMMON_ROOT_POINTERS
|
||||
#define MICROPY_NLR_SETJMP (1)
|
||||
#define CIRCUITPY_DEFAULT_STACK_SIZE 0x6000
|
||||
#define MICROPY_NLR_SETJMP (1)
|
||||
#define CIRCUITPY_DEFAULT_STACK_SIZE (0x6000)
|
||||
|
||||
|
||||
#endif // __INCLUDED_ESP32S2_MPCONFIGPORT_H
|
||||
|
@ -29,6 +29,14 @@
|
||||
|
||||
bool rmt_reserved_channels[RMT_CHANNEL_MAX];
|
||||
|
||||
void esp32s2_peripherals_rmt_reset(void) {
|
||||
for (size_t i = 0; i < RMT_CHANNEL_MAX; i++) {
|
||||
if (rmt_reserved_channels[i]) {
|
||||
esp32s2_peripherals_free_rmt(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
rmt_channel_t esp32s2_peripherals_find_and_reserve_rmt(void) {
|
||||
for (size_t i = 0; i < RMT_CHANNEL_MAX; i++) {
|
||||
if (!rmt_reserved_channels[i]) {
|
||||
@ -36,8 +44,8 @@ rmt_channel_t esp32s2_peripherals_find_and_reserve_rmt(void) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
mp_raise_RuntimeError(translate("All timers in use"));
|
||||
return false;
|
||||
// Returning the max indicates a reservation failure.
|
||||
return RMT_CHANNEL_MAX;
|
||||
}
|
||||
|
||||
void esp32s2_peripherals_free_rmt(rmt_channel_t chan) {
|
||||
|
@ -31,6 +31,7 @@
|
||||
#include "driver/rmt.h"
|
||||
#include <stdint.h>
|
||||
|
||||
void esp32s2_peripherals_rmt_reset(void);
|
||||
rmt_channel_t esp32s2_peripherals_find_and_reserve_rmt(void);
|
||||
void esp32s2_peripherals_free_rmt(rmt_channel_t chan);
|
||||
|
||||
|
@ -39,9 +39,12 @@
|
||||
#include "common-hal/busio/SPI.h"
|
||||
#include "common-hal/busio/UART.h"
|
||||
#include "common-hal/pulseio/PWMOut.h"
|
||||
#include "common-hal/pulseio/PulseIn.h"
|
||||
#include "supervisor/memory.h"
|
||||
#include "supervisor/shared/tick.h"
|
||||
|
||||
#include "rmt.h"
|
||||
|
||||
STATIC esp_timer_handle_t _tick_timer;
|
||||
|
||||
void tick_timer_cb(void* arg) {
|
||||
@ -66,7 +69,9 @@ void reset_port(void) {
|
||||
vTaskDelay(4);
|
||||
|
||||
#if CIRCUITPY_PULSEIO
|
||||
esp32s2_peripherals_rmt_reset();
|
||||
pwmout_reset();
|
||||
pulsein_reset();
|
||||
#endif
|
||||
#if CIRCUITPY_BUSIO
|
||||
i2c_reset();
|
||||
|
@ -94,7 +94,10 @@ void pulseout_reset() {
|
||||
}
|
||||
|
||||
void common_hal_pulseio_pulseout_construct(pulseio_pulseout_obj_t* self,
|
||||
const pulseio_pwmout_obj_t* carrier) {
|
||||
const pulseio_pwmout_obj_t* carrier,
|
||||
const mcu_pin_obj_t* pin,
|
||||
uint32_t frequency,
|
||||
uint16_t duty_cycle) {
|
||||
// if (refcount == 0) {
|
||||
// // Find a spare timer.
|
||||
// Tc *tc = NULL;
|
||||
|
@ -6,10 +6,3 @@ USB_MANUFACTURER = "Arduino"
|
||||
MCU_CHIP = nrf52840
|
||||
|
||||
INTERNAL_FLASH_FILESYSTEM = 1
|
||||
|
||||
# Allocate two, not just one I2C peripheral, so that we have both
|
||||
# on-board and off-board I2C available.
|
||||
# When SPIM3 becomes available we'll be able to have two I2C and two SPI peripherals.
|
||||
# We use a CFLAGS define here because there are include order issues
|
||||
# if we try to include "mpconfigport.h" into nrfx_config.h .
|
||||
CFLAGS += -DCIRCUITPY_NRF_NUM_I2C=2
|
||||
|
@ -8,9 +8,3 @@ MCU_CHIP = nrf52840
|
||||
QSPI_FLASH_FILESYSTEM = 1
|
||||
EXTERNAL_FLASH_DEVICE_COUNT = 1
|
||||
EXTERNAL_FLASH_DEVICES = "GD25Q16C"
|
||||
|
||||
# Allocate two, not just one I2C peripheral for CPB, so that we have both
|
||||
# on-board and off-board I2C available.
|
||||
# We use a CFLAGS define here because there are include order issues
|
||||
# if we try to include "mpconfigport.h" into nrfx_config.h .
|
||||
CFLAGS += -DCIRCUITPY_NRF_NUM_I2C=2
|
||||
|
@ -18,13 +18,16 @@ MEMORY
|
||||
FLASH_BOOTLOADER_SETTINGS (r) : ORIGIN = ${BOOTLOADER_SETTINGS_START_ADDR}, LENGTH = ${BOOTLOADER_SETTINGS_SIZE}
|
||||
|
||||
|
||||
/* 0x2000000 - RAM:ORIGIN is reserved for Softdevice */
|
||||
/* SoftDevice 6.1.0 with 5 connections and various increases takes just under 64kiB.
|
||||
/* To measure the minimum required amount of memory for given configuration, set this number
|
||||
high enough to work and then check the mutation of the value done by sd_ble_enable. */
|
||||
SPIM3_RAM (rw) : ORIGIN = 0x20000000 + ${SOFTDEVICE_RAM_SIZE}, LENGTH = ${SPIM3_BUFFER_SIZE}
|
||||
RAM (xrw) : ORIGIN = 0x20000000 + ${SOFTDEVICE_RAM_SIZE} + ${SPIM3_BUFFER_SIZE}, LENGTH = ${RAM_SIZE} - ${SOFTDEVICE_RAM_SIZE} -${SPIM3_BUFFER_SIZE}
|
||||
|
||||
/* SoftDevice RAM must start at the beginning of RAM: 0x2000000 (RAM_START_ADDR).
|
||||
On nRF52840, the first 64kB of RAM is composed of 8 8kB RAM blocks. Above those is
|
||||
RAM block 8, which is 192kB.
|
||||
If SPIM3_BUFFER_RAM_SIZE is 8kB, as opposed to zero, it must be in the first 64kB of RAM.
|
||||
So the amount of RAM reserved for the SoftDevice must be no more than 56kB.
|
||||
*/
|
||||
RAM (xrw) : ORIGIN = ${RAM_START_ADDR}, LENGTH = ${RAM_SIZE}
|
||||
SD_RAM (rw) : ORIGIN = ${SOFTDEVICE_RAM_START_ADDR}, LENGTH = ${SOFTDEVICE_RAM_SIZE}
|
||||
SPIM3_RAM (rw) : ORIGIN = ${SPIM3_BUFFER_RAM_START_ADDR}, LENGTH = ${SPIM3_BUFFER_RAM_SIZE}
|
||||
APP_RAM (xrw) : ORIGIN = ${APP_RAM_START_ADDR}, LENGTH = ${APP_RAM_SIZE}
|
||||
}
|
||||
|
||||
/* produce a link error if there is not this amount of RAM available */
|
||||
@ -32,16 +35,16 @@ _minimum_heap_size = 0;
|
||||
|
||||
/* top end of the stack */
|
||||
|
||||
/*_stack_end = ORIGIN(RAM) + LENGTH(RAM);*/
|
||||
_estack = ORIGIN(RAM) + LENGTH(RAM);
|
||||
/*_stack_end = ORIGIN(APP_RAM) + LENGTH(APP_RAM);*/
|
||||
_estack = ORIGIN(APP_RAM) + LENGTH(APP_RAM);
|
||||
|
||||
/* RAM extents for the garbage collector */
|
||||
_ram_end = ORIGIN(RAM) + LENGTH(RAM);
|
||||
_ram_end = ORIGIN(APP_RAM) + LENGTH(APP_RAM);
|
||||
_heap_end = 0x20020000; /* tunable */
|
||||
|
||||
/* nrf52840 SPIM3 needs its own area to work around hardware problems. Nothing else may use this space. */
|
||||
_spim3_ram = ORIGIN(SPIM3_RAM);
|
||||
_spim3_ram_end = ORIGIN(SPIM3_RAM) + LENGTH(RAM);
|
||||
_spim3_ram_end = ORIGIN(SPIM3_RAM) + LENGTH(SPIM3_RAM);
|
||||
|
||||
/* define output sections */
|
||||
SECTIONS
|
||||
@ -87,7 +90,7 @@ SECTIONS
|
||||
|
||||
. = ALIGN(4);
|
||||
_edata = .; /* define a global symbol at data end; used by startup code in order to initialise the .data section in RAM */
|
||||
} >RAM
|
||||
} >APP_RAM
|
||||
|
||||
/* Zero-initialized data section */
|
||||
.bss :
|
||||
@ -100,7 +103,7 @@ SECTIONS
|
||||
|
||||
. = ALIGN(4);
|
||||
_ebss = .; /* define a global symbol at bss end; used by startup code and GC */
|
||||
} >RAM
|
||||
} >APP_RAM
|
||||
|
||||
/* Uninitialized data section
|
||||
Data placed into this section will remain unchanged across reboots. */
|
||||
@ -113,7 +116,7 @@ SECTIONS
|
||||
|
||||
. = ALIGN(4);
|
||||
_euninitialized = .; /* define a global symbol at uninitialized end; currently unused */
|
||||
} >RAM
|
||||
} >APP_RAM
|
||||
|
||||
/* this is to define the start of the heap, and make sure we have a minimum size */
|
||||
.heap :
|
||||
@ -123,7 +126,7 @@ SECTIONS
|
||||
PROVIDE ( _end = . );
|
||||
_heap_start = .; /* define a global symbol at heap start */
|
||||
. = . + _minimum_heap_size;
|
||||
} >RAM
|
||||
} >APP_RAM
|
||||
|
||||
/* this just checks there is enough RAM for the stack */
|
||||
.stack :
|
||||
@ -131,7 +134,7 @@ SECTIONS
|
||||
. = ALIGN(4);
|
||||
. = . + ${CIRCUITPY_DEFAULT_STACK_SIZE};
|
||||
. = ALIGN(4);
|
||||
} >RAM
|
||||
} >APP_RAM
|
||||
|
||||
/* Remove exception unwinding information, since Circuit Python
|
||||
does not support this GCC feature. */
|
||||
|
@ -8,10 +8,3 @@ MCU_CHIP = nrf52840
|
||||
QSPI_FLASH_FILESYSTEM = 1
|
||||
EXTERNAL_FLASH_DEVICE_COUNT = 1
|
||||
EXTERNAL_FLASH_DEVICES = "W25Q16JV_IQ"
|
||||
|
||||
# Allocate two, not just one I2C peripheral for Bluefi, so that we have both
|
||||
# on-board and off-board I2C available.
|
||||
# When SPIM3 becomes available we'll be able to have two I2C and two SPI peripherals.
|
||||
# We use a CFLAGS define here because there are include order issues
|
||||
# if we try to include "mpconfigport.h" into nrfx_config.h .
|
||||
CFLAGS += -DCIRCUITPY_NRF_NUM_I2C=2
|
||||
|
@ -46,3 +46,5 @@
|
||||
#define BLEIO_PERIPH_ROLE_COUNT 2
|
||||
#define BLEIO_TOTAL_CONNECTION_COUNT 2
|
||||
#define BLEIO_ATTR_TAB_SIZE (BLE_GATTS_ATTR_TAB_SIZE_DEFAULT * 2)
|
||||
|
||||
#define SOFTDEVICE_RAM_SIZE (32*1024)
|
||||
|
@ -27,9 +27,5 @@ CIRCUITPY_ULAB = 0
|
||||
|
||||
SUPEROPT_GC = 0
|
||||
|
||||
# These defines must be overridden before mpconfigboard.h is included, which is
|
||||
# why they are passed on the command line.
|
||||
CFLAGS += -DSPIM3_BUFFER_SIZE=0 -DSOFTDEVICE_RAM_SIZE='(32*1024)'
|
||||
|
||||
# Override optimization to keep binary small
|
||||
OPTIMIZATION_FLAGS = -Os
|
||||
|
@ -45,6 +45,9 @@
|
||||
#define BOOTLOADER_SIZE (0x4000) // 12 kiB
|
||||
#define CIRCUITPY_BLE_CONFIG_SIZE (12*1024)
|
||||
|
||||
#define DEFAULT_I2C_BUS_SCL (&pin_P0_08)
|
||||
#define DEFAULT_I2C_BUS_SDA (&pin_P1_09)
|
||||
|
||||
// Reduce nRF SoftRadio memory usage
|
||||
#define BLEIO_VS_UUID_COUNT 10
|
||||
#define BLEIO_HVN_TX_QUEUE_SIZE 2
|
||||
@ -52,3 +55,5 @@
|
||||
#define BLEIO_PERIPH_ROLE_COUNT 2
|
||||
#define BLEIO_TOTAL_CONNECTION_COUNT 2
|
||||
#define BLEIO_ATTR_TAB_SIZE (BLE_GATTS_ATTR_TAB_SIZE_DEFAULT * 2)
|
||||
|
||||
#define SOFTDEVICE_RAM_SIZE (32*1024)
|
||||
|
@ -29,9 +29,5 @@ CIRCUITPY_WATCHDOG = 1
|
||||
# Enable micropython.native
|
||||
#CIRCUITPY_ENABLE_MPY_NATIVE = 1
|
||||
|
||||
# These defines must be overridden before mpconfigboard.h is included, which is
|
||||
# why they are passed on the command line.
|
||||
CFLAGS += -DSPIM3_BUFFER_SIZE=0 -DSOFTDEVICE_RAM_SIZE='(32*1024)' -DNRFX_SPIM3_ENABLED=0
|
||||
|
||||
# Override optimization to keep binary small
|
||||
OPTIMIZATION_FLAGS = -Os
|
||||
|
@ -9,19 +9,15 @@ STATIC const mp_rom_map_elem_t board_module_globals_table[] = {
|
||||
{ MP_ROM_QSTR(MP_QSTR_NFC1), MP_ROM_PTR(&pin_P0_09) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_NFC2), MP_ROM_PTR(&pin_P0_10) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_I2S_LRCK), MP_ROM_PTR(&pin_P0_08) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_I2S_SDIN), MP_ROM_PTR(&pin_P1_09) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_I2S_SCK), MP_ROM_PTR(&pin_P0_12) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_LED), MP_ROM_PTR(&pin_P0_06) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_CHG), MP_ROM_PTR(&pin_P0_04) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_PWM), MP_ROM_PTR(&pin_P0_02) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_PWM_N), MP_ROM_PTR(&pin_P0_19) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_P0_08) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_P1_09) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_UART), MP_ROM_PTR(&board_uart_obj) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_SPI), MP_ROM_PTR(&board_spi_obj) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) },
|
||||
|
||||
};
|
||||
|
||||
MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table);
|
||||
|
@ -61,7 +61,7 @@
|
||||
#endif
|
||||
|
||||
#ifndef BLEIO_HVN_TX_QUEUE_SIZE
|
||||
#define BLEIO_HVN_TX_QUEUE_SIZE 9
|
||||
#define BLEIO_HVN_TX_QUEUE_SIZE 5
|
||||
#endif
|
||||
|
||||
#ifndef BLEIO_CENTRAL_ROLE_COUNT
|
||||
@ -120,11 +120,11 @@ STATIC uint32_t ble_stack_enable(void) {
|
||||
// Start with no event handlers, etc.
|
||||
ble_drv_reset();
|
||||
|
||||
// Set everything up to have one persistent code editing connection and one user managed
|
||||
// connection. In the future we could move .data and .bss to the other side of the stack and
|
||||
// In the future we might move .data and .bss to the other side of the stack and
|
||||
// dynamically adjust for different memory requirements of the SD based on boot.py
|
||||
// configuration.
|
||||
uint32_t app_ram_start = (uint32_t) &_ram_start;
|
||||
// configuration. But we still need to keep the SPIM3 buffer (if needed) in the first 64kB of RAM.
|
||||
|
||||
uint32_t sd_ram_end = SOFTDEVICE_RAM_START_ADDR + SOFTDEVICE_RAM_SIZE;
|
||||
|
||||
ble_cfg_t ble_conf;
|
||||
ble_conf.conn_cfg.conn_cfg_tag = BLE_CONN_CFG_TAG_CUSTOM;
|
||||
@ -135,7 +135,7 @@ STATIC uint32_t ble_stack_enable(void) {
|
||||
// Event length here can influence throughput so perhaps make multiple connection profiles
|
||||
// available.
|
||||
ble_conf.conn_cfg.params.gap_conn_cfg.event_length = BLE_GAP_EVENT_LENGTH_DEFAULT;
|
||||
err_code = sd_ble_cfg_set(BLE_CONN_CFG_GAP, &ble_conf, app_ram_start);
|
||||
err_code = sd_ble_cfg_set(BLE_CONN_CFG_GAP, &ble_conf, sd_ram_end);
|
||||
if (err_code != NRF_SUCCESS) {
|
||||
return err_code;
|
||||
}
|
||||
@ -147,7 +147,7 @@ STATIC uint32_t ble_stack_enable(void) {
|
||||
ble_conf.gap_cfg.role_count_cfg.periph_role_count = BLEIO_PERIPH_ROLE_COUNT;
|
||||
// central_role_count costs 648 bytes for 1 to 2, then ~1250 for each further increment.
|
||||
ble_conf.gap_cfg.role_count_cfg.central_role_count = BLEIO_CENTRAL_ROLE_COUNT;
|
||||
err_code = sd_ble_cfg_set(BLE_GAP_CFG_ROLE_COUNT, &ble_conf, app_ram_start);
|
||||
err_code = sd_ble_cfg_set(BLE_GAP_CFG_ROLE_COUNT, &ble_conf, sd_ram_end);
|
||||
if (err_code != NRF_SUCCESS) {
|
||||
return err_code;
|
||||
}
|
||||
@ -158,7 +158,7 @@ STATIC uint32_t ble_stack_enable(void) {
|
||||
// DevZone recommends not setting this directly, but instead changing gap_conn_cfg.event_length.
|
||||
// However, we are setting connection extension, so this seems to make sense.
|
||||
ble_conf.conn_cfg.params.gatts_conn_cfg.hvn_tx_queue_size = BLEIO_HVN_TX_QUEUE_SIZE;
|
||||
err_code = sd_ble_cfg_set(BLE_CONN_CFG_GATTS, &ble_conf, app_ram_start);
|
||||
err_code = sd_ble_cfg_set(BLE_CONN_CFG_GATTS, &ble_conf, sd_ram_end);
|
||||
if (err_code != NRF_SUCCESS) {
|
||||
return err_code;
|
||||
}
|
||||
@ -167,7 +167,7 @@ STATIC uint32_t ble_stack_enable(void) {
|
||||
memset(&ble_conf, 0, sizeof(ble_conf));
|
||||
ble_conf.conn_cfg.conn_cfg_tag = BLE_CONN_CFG_TAG_CUSTOM;
|
||||
ble_conf.conn_cfg.params.gatt_conn_cfg.att_mtu = BLE_GATTS_VAR_ATTR_LEN_MAX;
|
||||
err_code = sd_ble_cfg_set(BLE_CONN_CFG_GATT, &ble_conf, app_ram_start);
|
||||
err_code = sd_ble_cfg_set(BLE_CONN_CFG_GATT, &ble_conf, sd_ram_end);
|
||||
if (err_code != NRF_SUCCESS) {
|
||||
return err_code;
|
||||
}
|
||||
@ -177,7 +177,7 @@ STATIC uint32_t ble_stack_enable(void) {
|
||||
memset(&ble_conf, 0, sizeof(ble_conf));
|
||||
// Each increment to the BLE_GATTS_ATTR_TAB_SIZE_DEFAULT multiplier costs 1408 bytes.
|
||||
ble_conf.gatts_cfg.attr_tab_size.attr_tab_size = BLEIO_ATTR_TAB_SIZE;
|
||||
err_code = sd_ble_cfg_set(BLE_GATTS_CFG_ATTR_TAB_SIZE, &ble_conf, app_ram_start);
|
||||
err_code = sd_ble_cfg_set(BLE_GATTS_CFG_ATTR_TAB_SIZE, &ble_conf, sd_ram_end);
|
||||
if (err_code != NRF_SUCCESS) {
|
||||
return err_code;
|
||||
}
|
||||
@ -187,13 +187,15 @@ STATIC uint32_t ble_stack_enable(void) {
|
||||
memset(&ble_conf, 0, sizeof(ble_conf));
|
||||
// Each additional vs_uuid_count costs 16 bytes.
|
||||
ble_conf.common_cfg.vs_uuid_cfg.vs_uuid_count = BLEIO_VS_UUID_COUNT; // Defaults to 10.
|
||||
err_code = sd_ble_cfg_set(BLE_COMMON_CFG_VS_UUID, &ble_conf, app_ram_start);
|
||||
err_code = sd_ble_cfg_set(BLE_COMMON_CFG_VS_UUID, &ble_conf, sd_ram_end);
|
||||
if (err_code != NRF_SUCCESS) {
|
||||
return err_code;
|
||||
}
|
||||
|
||||
// This sets app_ram_start to the minimum value needed for the settings set above.
|
||||
err_code = sd_ble_enable(&app_ram_start);
|
||||
// This sets sd_ram_end to the minimum value needed for the settings set above.
|
||||
// You can set a breakpoint just after this call and examine sd_ram_end to see
|
||||
// how much RAM the SD needs with the configuration above.
|
||||
err_code = sd_ble_enable(&sd_ram_end);
|
||||
if (err_code != NRF_SUCCESS) {
|
||||
return err_code;
|
||||
}
|
||||
@ -483,8 +485,8 @@ mp_obj_t common_hal_bleio_adapter_start_scan(bleio_adapter_obj_t *self, uint8_t*
|
||||
err_code = sd_ble_gap_scan_start(&scan_params, sd_data);
|
||||
|
||||
if (err_code != NRF_SUCCESS) {
|
||||
self->scan_results = NULL;
|
||||
ble_drv_remove_event_handler(scan_on_ble_evt, self->scan_results);
|
||||
self->scan_results = NULL;
|
||||
check_nrf_error(err_code);
|
||||
}
|
||||
|
||||
|
@ -57,7 +57,7 @@ STATIC spim_peripheral_t spim_peripherals[] = {
|
||||
// Allocate SPIM3 first.
|
||||
{ .spim = NRFX_SPIM_INSTANCE(3),
|
||||
.max_frequency = 32000000,
|
||||
.max_xfer_size = MIN(SPIM3_BUFFER_SIZE, (1UL << SPIM3_EASYDMA_MAXCNT_SIZE) - 1)
|
||||
.max_xfer_size = MIN(SPIM3_BUFFER_RAM_SIZE, (1UL << SPIM3_EASYDMA_MAXCNT_SIZE) - 1)
|
||||
},
|
||||
#endif
|
||||
#if NRFX_CHECK(NRFX_SPIM2_ENABLED)
|
||||
@ -87,8 +87,7 @@ STATIC bool never_reset[MP_ARRAY_SIZE(spim_peripherals)];
|
||||
|
||||
// Separate RAM area for SPIM3 transmit buffer to avoid SPIM3 hardware errata.
|
||||
// https://infocenter.nordicsemi.com/index.jsp?topic=%2Ferrata_nRF52840_Rev2%2FERR%2FnRF52840%2FRev2%2Flatest%2Fanomaly_840_198.html
|
||||
extern uint32_t _spim3_ram;
|
||||
STATIC uint8_t *spim3_transmit_buffer = (uint8_t *) &_spim3_ram;
|
||||
STATIC uint8_t *spim3_transmit_buffer = (uint8_t *) SPIM3_BUFFER_RAM_START_ADDR;
|
||||
|
||||
void spi_reset(void) {
|
||||
for (size_t i = 0 ; i < MP_ARRAY_SIZE(spim_peripherals); i++) {
|
||||
|
@ -100,7 +100,15 @@ void pulseout_reset() {
|
||||
}
|
||||
|
||||
void common_hal_pulseio_pulseout_construct(pulseio_pulseout_obj_t* self,
|
||||
const pulseio_pwmout_obj_t* carrier) {
|
||||
const pulseio_pwmout_obj_t* carrier,
|
||||
const mcu_pin_obj_t* pin,
|
||||
uint32_t frequency,
|
||||
uint16_t duty_cycle) {
|
||||
if (!carrier || pin || frequency) {
|
||||
mp_raise_NotImplementedError(translate("Port does not accept pins or frequency. \
|
||||
Construct and pass a PWMOut Carrier instead"));
|
||||
}
|
||||
|
||||
if (refcount == 0) {
|
||||
timer = nrf_peripherals_allocate_timer_or_throw();
|
||||
}
|
||||
|
@ -10,6 +10,7 @@
|
||||
// START_LD_DEFINES
|
||||
|
||||
/*FLASH_SIZE=*/ FLASH_SIZE;
|
||||
/*RAM_START_ADDR=*/ RAM_START_ADDR;
|
||||
/*RAM_SIZE=*/ RAM_SIZE;
|
||||
|
||||
/*MBR_START_ADDR=*/ MBR_START_ADDR;
|
||||
@ -41,5 +42,11 @@
|
||||
/*BOOTLOADER_SETTINGS_START_ADDR=*/ BOOTLOADER_SETTINGS_START_ADDR;
|
||||
/*BOOTLOADER_SETTINGS_SIZE=*/ BOOTLOADER_SETTINGS_SIZE;
|
||||
|
||||
/*SOFTDEVICE_RAM_START_ADDR=*/ SOFTDEVICE_RAM_START_ADDR;
|
||||
/*SOFTDEVICE_RAM_SIZE=*/ SOFTDEVICE_RAM_SIZE;
|
||||
/*SPIM3_BUFFER_SIZE=*/ SPIM3_BUFFER_SIZE;
|
||||
|
||||
/*SPIM3_BUFFER_RAM_START_ADDR=*/ SPIM3_BUFFER_RAM_START_ADDR;
|
||||
/*SPIM3_BUFFER_RAM_SIZE=*/ SPIM3_BUFFER_RAM_SIZE;
|
||||
|
||||
/*APP_RAM_START_ADDR=*/ APP_RAM_START_ADDR;
|
||||
/*APP_RAM_SIZE=*/ APP_RAM_SIZE;
|
||||
|
@ -34,32 +34,6 @@
|
||||
#include "nrf_sdm.h" // for SD_FLASH_SIZE
|
||||
#include "peripherals/nrf/nvm.h" // for FLASH_PAGE_SIZE
|
||||
|
||||
// Max RAM used by SoftDevice. Can be changed when SoftDevice parameters are changed.
|
||||
// See common.template.ld.
|
||||
#ifndef SOFTDEVICE_RAM_SIZE
|
||||
#define SOFTDEVICE_RAM_SIZE (64*1024)
|
||||
#endif
|
||||
|
||||
#ifdef NRF52840
|
||||
#define MICROPY_PY_SYS_PLATFORM "nRF52840"
|
||||
#define FLASH_SIZE (0x100000) // 1MiB
|
||||
#define RAM_SIZE (0x40000) // 256 KiB
|
||||
// Special RAM area for SPIM3 transmit buffer, to work around hardware bug.
|
||||
// See common.template.ld.
|
||||
#define SPIM3_BUFFER_SIZE (8192)
|
||||
#endif
|
||||
|
||||
#ifdef NRF52833
|
||||
#define MICROPY_PY_SYS_PLATFORM "nRF52833"
|
||||
#define FLASH_SIZE (0x80000) // 512 KiB
|
||||
#define RAM_SIZE (0x20000) // 128 KiB
|
||||
// Special RAM area for SPIM3 transmit buffer, to work around hardware bug.
|
||||
// See common.template.ld.
|
||||
#ifndef SPIM3_BUFFER_SIZE
|
||||
#define SPIM3_BUFFER_SIZE (8192)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#define MICROPY_PY_COLLECTIONS_ORDEREDDICT (1)
|
||||
#define MICROPY_PY_FUNCTION_ATTRS (1)
|
||||
#define MICROPY_PY_IO (1)
|
||||
@ -69,7 +43,26 @@
|
||||
#define MICROPY_PY_UJSON (1)
|
||||
|
||||
// 24kiB stack
|
||||
#define CIRCUITPY_DEFAULT_STACK_SIZE 0x6000
|
||||
#define CIRCUITPY_DEFAULT_STACK_SIZE (24*1024)
|
||||
|
||||
#ifdef NRF52840
|
||||
#define MICROPY_PY_SYS_PLATFORM "nRF52840"
|
||||
#define FLASH_SIZE (1024*1024) // 1MiB
|
||||
#define RAM_SIZE (256*1024) // 256 KiB
|
||||
// Special RAM area for SPIM3 transmit buffer, to work around hardware bug.
|
||||
// See common.template.ld.
|
||||
#define SPIM3_BUFFER_RAM_SIZE (8*1024) // 8 KiB
|
||||
#endif
|
||||
|
||||
#ifdef NRF52833
|
||||
#define MICROPY_PY_SYS_PLATFORM "nRF52833"
|
||||
#define FLASH_SIZE (512*1024) // 512 KiB
|
||||
#define RAM_SIZE (128*1024) // 128 KiB
|
||||
// SPIM3 buffer is not needed on nRF52833: the SPIM3 hw bug is not present.
|
||||
#ifndef SPIM3_BUFFER_RAM_SIZE
|
||||
#define SPIM3_BUFFER_RAM_SIZE (0)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@ -79,7 +72,7 @@
|
||||
// Definitions that might be overriden by mpconfigboard.h
|
||||
|
||||
#ifndef CIRCUITPY_INTERNAL_NVM_SIZE
|
||||
#define CIRCUITPY_INTERNAL_NVM_SIZE (8192)
|
||||
#define CIRCUITPY_INTERNAL_NVM_SIZE (8*1024)
|
||||
#endif
|
||||
|
||||
#ifndef BOARD_HAS_32KHZ_XTAL
|
||||
@ -88,11 +81,11 @@
|
||||
#endif
|
||||
|
||||
#if INTERNAL_FLASH_FILESYSTEM
|
||||
#ifndef CIRCUITPY_INTERNAL_FLASH_FILESYSTEM_SIZE
|
||||
#define CIRCUITPY_INTERNAL_FLASH_FILESYSTEM_SIZE (256*1024)
|
||||
#endif
|
||||
#ifndef CIRCUITPY_INTERNAL_FLASH_FILESYSTEM_SIZE
|
||||
#define CIRCUITPY_INTERNAL_FLASH_FILESYSTEM_SIZE (256*1024)
|
||||
#endif
|
||||
#else
|
||||
#define CIRCUITPY_INTERNAL_FLASH_FILESYSTEM_SIZE (0)
|
||||
#define CIRCUITPY_INTERNAL_FLASH_FILESYSTEM_SIZE (0)
|
||||
#endif
|
||||
|
||||
// Flash layout, starting at 0x00000000
|
||||
@ -116,7 +109,7 @@
|
||||
|
||||
// SD_FLASH_SIZE is from nrf_sdm.h
|
||||
#define ISR_START_ADDR (SD_FLASH_START_ADDR + SD_FLASH_SIZE)
|
||||
#define ISR_SIZE (0x1000) // 4kiB
|
||||
#define ISR_SIZE (4*1024) // 4kiB
|
||||
|
||||
// Smallest unit of flash that can be erased.
|
||||
#define FLASH_ERASE_SIZE FLASH_PAGE_SIZE
|
||||
@ -127,12 +120,12 @@
|
||||
|
||||
// Bootloader values from https://github.com/adafruit/Adafruit_nRF52_Bootloader/blob/master/src/linker/s140_v6.ld
|
||||
#define BOOTLOADER_START_ADDR (FLASH_SIZE - BOOTLOADER_SIZE - BOOTLOADER_SETTINGS_SIZE - BOOTLOADER_MBR_SIZE)
|
||||
#define BOOTLOADER_MBR_SIZE (0x1000) // 4kib
|
||||
#define BOOTLOADER_MBR_SIZE (4*1024) // 4kib
|
||||
#ifndef BOOTLOADER_SIZE
|
||||
#define BOOTLOADER_SIZE (0xA000) // 40kiB
|
||||
#define BOOTLOADER_SIZE (40*1024) // 40kiB
|
||||
#endif
|
||||
#define BOOTLOADER_SETTINGS_START_ADDR (FLASH_SIZE - BOOTLOADER_SETTINGS_SIZE)
|
||||
#define BOOTLOADER_SETTINGS_SIZE (0x1000) // 4kiB
|
||||
#define BOOTLOADER_SETTINGS_SIZE (4*1024) // 4kiB
|
||||
|
||||
#define CIRCUITPY_INTERNAL_FLASH_FILESYSTEM_START_ADDR (BOOTLOADER_START_ADDR - CIRCUITPY_INTERNAL_FLASH_FILESYSTEM_SIZE)
|
||||
|
||||
@ -180,11 +173,46 @@
|
||||
#error No space left in flash for firmware after specifying other regions!
|
||||
#endif
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// RAM space definitions
|
||||
|
||||
#define MICROPY_PORT_ROOT_POINTERS \
|
||||
CIRCUITPY_COMMON_ROOT_POINTERS \
|
||||
uint16_t* pixels_pattern_heap; \
|
||||
ble_drv_evt_handler_entry_t* ble_drv_evt_handler_entries; \
|
||||
// Max RAM used by SoftDevice. Can be changed when SoftDevice parameters are changed.
|
||||
// On nRF52840, the first 64kB of RAM is composed of 8 8kB RAM blocks. Above those is
|
||||
// RAM block 8, which is 192kB.
|
||||
// If SPIM3_BUFFER_RAM_SIZE is 8kB, as opposed to zero, it must be in the first 64kB of RAM.
|
||||
// So the amount of RAM reserved for the SoftDevice must be no more than 56kB.
|
||||
// SoftDevice 6.1.0 with 5 connections and various increases can be made to use < 56kB.
|
||||
// To measure the minimum required amount of memory for given configuration, set this number
|
||||
// high enough to work and then check the mutation of the value done by sd_ble_enable().
|
||||
// See common.template.ld.
|
||||
#ifndef SOFTDEVICE_RAM_SIZE
|
||||
#define SOFTDEVICE_RAM_SIZE (56*1024)
|
||||
#endif
|
||||
|
||||
|
||||
#define RAM_START_ADDR (0x20000000)
|
||||
#define SOFTDEVICE_RAM_START_ADDR (RAM_START_ADDR)
|
||||
#define SPIM3_BUFFER_RAM_START_ADDR (SOFTDEVICE_RAM_START_ADDR + SOFTDEVICE_RAM_SIZE)
|
||||
#define APP_RAM_START_ADDR (SPIM3_BUFFER_RAM_START_ADDR + SPIM3_BUFFER_RAM_SIZE)
|
||||
#define APP_RAM_SIZE (RAM_START_ADDR + RAM_SIZE - APP_RAM_START_ADDR)
|
||||
|
||||
#if SPIM3_BUFFER_RAM_SIZE > 0 && SOFTDEVICE_RAM_SIZE + SPIM3_BUFFER_RAM_SIZE > (64*1024)
|
||||
#error SPIM3 buffer must be in the first 64kB of RAM.
|
||||
#endif
|
||||
|
||||
#if SOFTDEVICE_RAM_SIZE + SPIM3_BUFFER_RAM_SIZE + APP_RAM_SIZE > RAM_SIZE
|
||||
#error RAM size regions overflow RAM
|
||||
#endif
|
||||
|
||||
#if SOFTDEVICE_RAM_SIZE + SPIM3_BUFFER_RAM_SIZE + APP_RAM_SIZE < RAM_SIZE
|
||||
#error RAM size regions do not use all of RAM
|
||||
#endif
|
||||
|
||||
|
||||
#define MICROPY_PORT_ROOT_POINTERS \
|
||||
CIRCUITPY_COMMON_ROOT_POINTERS \
|
||||
uint16_t* pixels_pattern_heap; \
|
||||
ble_drv_evt_handler_entry_t* ble_drv_evt_handler_entries; \
|
||||
|
||||
|
||||
#endif // NRF5_MPCONFIGPORT_H__
|
||||
|
@ -5,7 +5,7 @@
|
||||
#define NRFX_POWER_ENABLED 1
|
||||
#define NRFX_POWER_DEFAULT_CONFIG_IRQ_PRIORITY 7
|
||||
|
||||
// NOTE: THIS WORKAROUND CAUSES BLE CODE TO CRASH.
|
||||
// NOTE: THIS WORKAROUND CAUSES BLE CODE TO CRASH. DO NOT USE.
|
||||
// It doesn't work with the SoftDevice.
|
||||
// See https://devzone.nordicsemi.com/f/nordic-q-a/33982/sdk-15-software-crash-during-spi-session
|
||||
// Turn on nrfx supported workarounds for errata in Rev1 of nRF52840
|
||||
|
@ -113,7 +113,15 @@ void pulseout_reset() {
|
||||
}
|
||||
|
||||
void common_hal_pulseio_pulseout_construct(pulseio_pulseout_obj_t* self,
|
||||
const pulseio_pwmout_obj_t* carrier) {
|
||||
const pulseio_pwmout_obj_t* carrier,
|
||||
const mcu_pin_obj_t* pin,
|
||||
uint32_t frequency,
|
||||
uint16_t duty_cycle) {
|
||||
if (!carrier || pin || frequency) {
|
||||
mp_raise_NotImplementedError(translate("Port does not accept pins or frequency. \
|
||||
Construct and pass a PWMOut Carrier instead"));
|
||||
}
|
||||
|
||||
// Add to active PulseOuts
|
||||
refcount++;
|
||||
TIM_TypeDef * tim_instance = stm_peripherals_find_timer();
|
||||
|
@ -145,7 +145,7 @@ ifeq ($(CIRCUITPY_DIGITALIO),1)
|
||||
SRC_PATTERNS += digitalio/%
|
||||
endif
|
||||
ifeq ($(CIRCUITPY_DISPLAYIO),1)
|
||||
SRC_PATTERNS += displayio/% terminalio/% fontio/%
|
||||
SRC_PATTERNS += displayio/%
|
||||
endif
|
||||
ifeq ($(CIRCUITPY_VECTORIO),1)
|
||||
SRC_PATTERNS += vectorio/%
|
||||
@ -237,6 +237,9 @@ endif
|
||||
ifeq ($(CIRCUITPY_SUPERVISOR),1)
|
||||
SRC_PATTERNS += supervisor/%
|
||||
endif
|
||||
ifeq ($(CIRCUITPY_TERMINALIO),1)
|
||||
SRC_PATTERNS += terminalio/% fontio/%
|
||||
endif
|
||||
ifeq ($(CIRCUITPY_TIME),1)
|
||||
SRC_PATTERNS += time/%
|
||||
endif
|
||||
|
@ -347,16 +347,20 @@ extern const struct _mp_obj_module_t displayio_module;
|
||||
extern const struct _mp_obj_module_t fontio_module;
|
||||
extern const struct _mp_obj_module_t terminalio_module;
|
||||
#define DISPLAYIO_MODULE { MP_OBJ_NEW_QSTR(MP_QSTR_displayio), (mp_obj_t)&displayio_module },
|
||||
#define FONTIO_MODULE { MP_OBJ_NEW_QSTR(MP_QSTR_fontio), (mp_obj_t)&fontio_module },
|
||||
#define TERMINALIO_MODULE { MP_OBJ_NEW_QSTR(MP_QSTR_terminalio), (mp_obj_t)&terminalio_module },
|
||||
#ifndef CIRCUITPY_DISPLAY_LIMIT
|
||||
#define CIRCUITPY_DISPLAY_LIMIT (1)
|
||||
#endif
|
||||
#else
|
||||
#define DISPLAYIO_MODULE
|
||||
#define CIRCUITPY_DISPLAY_LIMIT (0)
|
||||
#endif
|
||||
|
||||
#if CIRCUITPY_DISPLAYIO && CIRCUITPY_TERMINALIO
|
||||
#define FONTIO_MODULE { MP_OBJ_NEW_QSTR(MP_QSTR_fontio), (mp_obj_t)&fontio_module },
|
||||
#define TERMINALIO_MODULE { MP_OBJ_NEW_QSTR(MP_QSTR_terminalio), (mp_obj_t)&terminalio_module },
|
||||
#else
|
||||
#define FONTIO_MODULE
|
||||
#define TERMINALIO_MODULE
|
||||
#define CIRCUITPY_DISPLAY_LIMIT (0)
|
||||
#endif
|
||||
|
||||
#if CIRCUITPY_FRAMEBUFFERIO
|
||||
|
@ -195,6 +195,9 @@ CFLAGS += -DCIRCUITPY_STRUCT=$(CIRCUITPY_STRUCT)
|
||||
CIRCUITPY_SUPERVISOR ?= 1
|
||||
CFLAGS += -DCIRCUITPY_SUPERVISOR=$(CIRCUITPY_SUPERVISOR)
|
||||
|
||||
CIRCUITPY_TERMINALIO ?= $(CIRCUITPY_DISPLAYIO)
|
||||
CFLAGS += -DCIRCUITPY_TERMINALIO=$(CIRCUITPY_TERMINALIO)
|
||||
|
||||
CIRCUITPY_TIME ?= 1
|
||||
CFLAGS += -DCIRCUITPY_TIME=$(CIRCUITPY_TIME)
|
||||
|
||||
|
@ -102,10 +102,6 @@ def translate(translation_file, i18ns):
|
||||
|
||||
def compute_huffman_coding(translations, qstrs, compression_filename):
|
||||
all_strings = [x[1] for x in translations]
|
||||
|
||||
# go through each qstr and print it out
|
||||
for _, _, qstr in qstrs.values():
|
||||
all_strings.append(qstr)
|
||||
all_strings_concat = "".join(all_strings)
|
||||
counts = collections.Counter(all_strings_concat)
|
||||
cb = huffman.codebook(counts.items())
|
||||
@ -259,8 +255,6 @@ def compress(encoding_table, decompressed, encoded_length_bits, len_translation_
|
||||
current_bit -= 1
|
||||
if current_bit != 7:
|
||||
current_byte += 1
|
||||
if current_byte > len(decompressed):
|
||||
print("Note: compression increased length", repr(decompressed), len(decompressed), current_byte, file=sys.stderr)
|
||||
return enc[:current_byte]
|
||||
|
||||
def qstr_escape(qst):
|
||||
|
@ -40,6 +40,10 @@
|
||||
#include "shared-module/_pixelbuf/PixelBuf.h"
|
||||
#include "shared-bindings/digitalio/DigitalInOut.h"
|
||||
|
||||
#ifdef CIRCUITPY_ULAB
|
||||
#include "extmod/ulab/code/ndarray.h"
|
||||
#endif
|
||||
|
||||
extern const int32_t colorwheel(float pos);
|
||||
|
||||
static void parse_byteorder(mp_obj_t byteorder_obj, pixelbuf_byteorder_details_t* parsed);
|
||||
@ -305,6 +309,16 @@ STATIC mp_obj_t pixelbuf_pixelbuf_subscr(mp_obj_t self_in, mp_obj_t index_in, mp
|
||||
|
||||
size_t length = common_hal__pixelbuf_pixelbuf_get_len(self_in);
|
||||
mp_seq_get_fast_slice_indexes(length, index_in, &slice);
|
||||
static mp_obj_tuple_t flat_item_tuple = {
|
||||
.base = {&mp_type_tuple},
|
||||
.len = 0,
|
||||
.items = {
|
||||
mp_const_none,
|
||||
mp_const_none,
|
||||
mp_const_none,
|
||||
mp_const_none,
|
||||
}
|
||||
};
|
||||
|
||||
size_t slice_len;
|
||||
if (slice.step > 0) {
|
||||
@ -326,27 +340,13 @@ STATIC mp_obj_t pixelbuf_pixelbuf_subscr(mp_obj_t self_in, mp_obj_t index_in, mp
|
||||
} else { // Set
|
||||
#if MICROPY_PY_ARRAY_SLICE_ASSIGN
|
||||
|
||||
if (!(MP_OBJ_IS_TYPE(value, &mp_type_list) || MP_OBJ_IS_TYPE(value, &mp_type_tuple))) {
|
||||
mp_raise_ValueError(translate("tuple/list required on RHS"));
|
||||
}
|
||||
size_t num_items = mp_obj_get_int(mp_obj_len(value));
|
||||
|
||||
mp_obj_t *src_objs;
|
||||
size_t num_items;
|
||||
if (MP_OBJ_IS_TYPE(value, &mp_type_list)) {
|
||||
mp_obj_list_t *t = MP_OBJ_TO_PTR(value);
|
||||
num_items = t->len;
|
||||
src_objs = t->items;
|
||||
} else {
|
||||
mp_obj_tuple_t *l = MP_OBJ_TO_PTR(value);
|
||||
num_items = l->len;
|
||||
src_objs = l->items;
|
||||
if (num_items != slice_len && num_items != (slice_len * common_hal__pixelbuf_pixelbuf_get_bpp(self_in))) {
|
||||
mp_raise_ValueError_varg(translate("Unmatched number of items on RHS (expected %d, got %d)."), slice_len, num_items);
|
||||
}
|
||||
if (num_items != slice_len) {
|
||||
mp_raise_ValueError_varg(translate("Unmatched number of items on RHS (expected %d, got %d)."),
|
||||
slice_len, num_items);
|
||||
}
|
||||
|
||||
common_hal__pixelbuf_pixelbuf_set_pixels(self_in, slice.start, slice.step, slice_len, src_objs);
|
||||
common_hal__pixelbuf_pixelbuf_set_pixels(self_in, slice.start, slice.step, slice_len, value,
|
||||
num_items != slice_len ? &flat_item_tuple : mp_const_none);
|
||||
return mp_const_none;
|
||||
#else
|
||||
return MP_OBJ_NULL; // op not supported
|
||||
|
@ -47,6 +47,6 @@ void common_hal__pixelbuf_pixelbuf_fill(mp_obj_t self, mp_obj_t item);
|
||||
void common_hal__pixelbuf_pixelbuf_show(mp_obj_t self);
|
||||
mp_obj_t common_hal__pixelbuf_pixelbuf_get_pixel(mp_obj_t self, size_t index);
|
||||
void common_hal__pixelbuf_pixelbuf_set_pixel(mp_obj_t self, size_t index, mp_obj_t item);
|
||||
void common_hal__pixelbuf_pixelbuf_set_pixels(mp_obj_t self_in, size_t start, mp_int_t step, size_t slice_len, mp_obj_t* values);
|
||||
void common_hal__pixelbuf_pixelbuf_set_pixels(mp_obj_t self_in, size_t start, mp_int_t step, size_t slice_len, mp_obj_t* values, mp_obj_tuple_t *flatten_to);
|
||||
|
||||
#endif // CP_SHARED_BINDINGS_PIXELBUF_PIXELBUF_H
|
||||
|
54
shared-bindings/_typing/__init__ 2.pyi
Normal file
54
shared-bindings/_typing/__init__ 2.pyi
Normal file
@ -0,0 +1,54 @@
|
||||
"""Types for the C-level protocols"""
|
||||
|
||||
from typing import Union
|
||||
|
||||
import array
|
||||
import audiocore
|
||||
import audiomixer
|
||||
import audiomp3
|
||||
import rgbmatrix
|
||||
import ulab
|
||||
|
||||
ReadableBuffer = Union[
|
||||
bytes, bytearray, memoryview, array.array, ulab.array, rgbmatrix.RGBMatrix
|
||||
]
|
||||
"""Classes that implement the readable buffer protocol
|
||||
|
||||
- `bytes`
|
||||
- `bytearray`
|
||||
- `memoryview`
|
||||
- `array.array`
|
||||
- `ulab.array`
|
||||
- `rgbmatrix.RGBMatrix`
|
||||
"""
|
||||
|
||||
WriteableBuffer = Union[
|
||||
bytearray, memoryview, array.array, ulab.array, rgbmatrix.RGBMatrix
|
||||
]
|
||||
"""Classes that implement the writeable buffer protocol
|
||||
|
||||
- `bytearray`
|
||||
- `memoryview`
|
||||
- `array.array`
|
||||
- `ulab.array`
|
||||
- `rgbmatrix.RGBMatrix`
|
||||
"""
|
||||
|
||||
AudioSample = Union[
|
||||
audiocore.WaveFile, audiocore.RawSample, audiomixer.Mixer, audiomp3.MP3Decoder
|
||||
]
|
||||
"""Classes that implement the audiosample protocol
|
||||
|
||||
- `audiocore.WaveFile`
|
||||
- `audiocore.RawSample`
|
||||
- `audiomixer.Mixer`
|
||||
- `audiomp3.MP3Decoder`
|
||||
|
||||
You can play these back with `audioio.AudioOut`, `audiobusio.I2SOut` or `audiopwmio.PWMAudioOut`.
|
||||
"""
|
||||
|
||||
FrameBuffer = Union[rgbmatrix.RGBMatrix]
|
||||
"""Classes that implement the framebuffer protocol
|
||||
|
||||
- `rgbmatrix.RGBMatrix`
|
||||
"""
|
@ -172,7 +172,8 @@ STATIC mp_obj_t bitmap_subscr(mp_obj_t self_in, mp_obj_t index_obj, mp_obj_t val
|
||||
return mp_const_none;
|
||||
}
|
||||
|
||||
//| def blit(self, x: int, y: int, source_bitmap: bitmap, *, x1: int, y1: int, x2: int, y2: int, skip_index: int) -> Any:
|
||||
|
||||
//| def blit(self, x: int, y: int, source_bitmap: bitmap, *, x1: int, y1: int, x2: int, y2: int, skip_index: int) -> None:
|
||||
//| """Inserts the source_bitmap region defined by rectangular boundaries
|
||||
//| (x1,y1) and (x2,y2) into the bitmap at the specified (x,y) location.
|
||||
//| :param int x: Horizontal pixel location in bitmap where source_bitmap upper-left
|
||||
@ -294,11 +295,7 @@ MP_DEFINE_CONST_FUN_OBJ_2(displayio_bitmap_fill_obj, displayio_bitmap_obj_fill);
|
||||
STATIC const mp_rom_map_elem_t displayio_bitmap_locals_dict_table[] = {
|
||||
{ MP_ROM_QSTR(MP_QSTR_height), MP_ROM_PTR(&displayio_bitmap_height_obj) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_width), MP_ROM_PTR(&displayio_bitmap_width_obj) },
|
||||
<<<<<<< HEAD
|
||||
{ MP_ROM_QSTR(MP_QSTR_blit), MP_ROM_PTR(&displayio_bitmap_blit_obj) },
|
||||
=======
|
||||
{ MP_ROM_QSTR(MP_QSTR_insert), MP_ROM_PTR(&displayio_bitmap_insert_obj) }, // Added insert function 8/7/2020
|
||||
>>>>>>> upstream/master
|
||||
{ MP_ROM_QSTR(MP_QSTR_fill), MP_ROM_PTR(&displayio_bitmap_fill_obj) },
|
||||
|
||||
};
|
||||
|
205
shared-bindings/gnss/GNSS 2.c
Normal file
205
shared-bindings/gnss/GNSS 2.c
Normal file
@ -0,0 +1,205 @@
|
||||
// SPDX-FileCopyrightText: Sony Semiconductor Solutions Corporation
|
||||
//
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
#include "shared-bindings/gnss/GNSS.h"
|
||||
#include "shared-bindings/time/__init__.h"
|
||||
#include "shared-bindings/util.h"
|
||||
|
||||
#include "py/objproperty.h"
|
||||
#include "py/runtime.h"
|
||||
|
||||
//| class GNSS:
|
||||
//| """Get updated positioning information from Global Navigation Satellite System (GNSS)
|
||||
//|
|
||||
//| Usage::
|
||||
//|
|
||||
//| import gnss
|
||||
//| import time
|
||||
//|
|
||||
//| nav = gnss.GNSS([gnss.SatelliteSystem.GPS, gnss.SatelliteSystem.GLONASS])
|
||||
//| last_print = time.monotonic()
|
||||
//| while True:
|
||||
//| nav.update()
|
||||
//| current = time.monotonic()
|
||||
//| if current - last_print >= 1.0:
|
||||
//| last_print = current
|
||||
//| if nav.fix is gnss.PositionFix.INVALID:
|
||||
//| print("Waiting for fix...")
|
||||
//| continue
|
||||
//| print("Latitude: {0:.6f} degrees".format(nav.latitude))
|
||||
//| print("Longitude: {0:.6f} degrees".format(nav.longitude))"""
|
||||
//|
|
||||
|
||||
//| def __init__(self, system: Union[SatelliteSystem, List[SatelliteSystem]]) -> None:
|
||||
//| """Turn on the GNSS.
|
||||
//|
|
||||
//| :param system: satellite system to use"""
|
||||
//| ...
|
||||
//|
|
||||
STATIC mp_obj_t gnss_make_new(const mp_obj_type_t *type, size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
|
||||
gnss_obj_t *self = m_new_obj(gnss_obj_t);
|
||||
self->base.type = &gnss_type;
|
||||
enum { ARG_system };
|
||||
static const mp_arg_t allowed_args[] = {
|
||||
{ MP_QSTR_system, MP_ARG_REQUIRED | MP_ARG_OBJ },
|
||||
};
|
||||
mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)];
|
||||
mp_arg_parse_all(n_args, pos_args, kw_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args);
|
||||
|
||||
unsigned long selection = 0;
|
||||
if (MP_OBJ_IS_TYPE(args[ARG_system].u_obj, &gnss_satellitesystem_type)) {
|
||||
selection |= gnss_satellitesystem_obj_to_type(args[ARG_system].u_obj);
|
||||
} else if (MP_OBJ_IS_TYPE(args[ARG_system].u_obj, &mp_type_list)) {
|
||||
size_t systems_size = 0;
|
||||
mp_obj_t *systems;
|
||||
mp_obj_list_get(args[ARG_system].u_obj, &systems_size, &systems);
|
||||
for (size_t i = 0; i < systems_size; ++i) {
|
||||
if (!MP_OBJ_IS_TYPE(systems[i], &gnss_satellitesystem_type)) {
|
||||
mp_raise_TypeError(translate("System entry must be gnss.SatelliteSystem"));
|
||||
}
|
||||
selection |= gnss_satellitesystem_obj_to_type(systems[i]);
|
||||
}
|
||||
} else {
|
||||
mp_raise_TypeError(translate("System entry must be gnss.SatelliteSystem"));
|
||||
}
|
||||
|
||||
common_hal_gnss_construct(self, selection);
|
||||
return MP_OBJ_FROM_PTR(self);
|
||||
}
|
||||
|
||||
//| def deinit(self) -> None:
|
||||
//| """Turn off the GNSS."""
|
||||
//| ...
|
||||
//|
|
||||
STATIC mp_obj_t gnss_obj_deinit(mp_obj_t self_in) {
|
||||
gnss_obj_t *self = MP_OBJ_TO_PTR(self_in);
|
||||
common_hal_gnss_deinit(self);
|
||||
return mp_const_none;
|
||||
}
|
||||
MP_DEFINE_CONST_FUN_OBJ_1(gnss_deinit_obj, gnss_obj_deinit);
|
||||
|
||||
STATIC void check_for_deinit(gnss_obj_t *self) {
|
||||
if (common_hal_gnss_deinited(self)) {
|
||||
raise_deinited_error();
|
||||
}
|
||||
}
|
||||
|
||||
//| def update(self) -> None:
|
||||
//| """Update GNSS positioning information."""
|
||||
//| ...
|
||||
//|
|
||||
STATIC mp_obj_t gnss_obj_update(mp_obj_t self_in) {
|
||||
gnss_obj_t *self = MP_OBJ_TO_PTR(self_in);
|
||||
check_for_deinit(self);
|
||||
|
||||
common_hal_gnss_update(self);
|
||||
return mp_const_none;
|
||||
}
|
||||
MP_DEFINE_CONST_FUN_OBJ_1(gnss_update_obj, gnss_obj_update);
|
||||
|
||||
//| latitude: float
|
||||
//| """Latitude of current position in degrees (float)."""
|
||||
//|
|
||||
STATIC mp_obj_t gnss_obj_get_latitude(mp_obj_t self_in) {
|
||||
gnss_obj_t *self = MP_OBJ_TO_PTR(self_in);
|
||||
check_for_deinit(self);
|
||||
return mp_obj_new_float(common_hal_gnss_get_latitude(self));
|
||||
}
|
||||
MP_DEFINE_CONST_FUN_OBJ_1(gnss_get_latitude_obj, gnss_obj_get_latitude);
|
||||
|
||||
const mp_obj_property_t gnss_latitude_obj = {
|
||||
.base.type = &mp_type_property,
|
||||
.proxy = {(mp_obj_t)&gnss_get_latitude_obj,
|
||||
(mp_obj_t)&mp_const_none_obj,
|
||||
(mp_obj_t)&mp_const_none_obj},
|
||||
};
|
||||
|
||||
//| longitude: float
|
||||
//| """Longitude of current position in degrees (float)."""
|
||||
//|
|
||||
STATIC mp_obj_t gnss_obj_get_longitude(mp_obj_t self_in) {
|
||||
gnss_obj_t *self = MP_OBJ_TO_PTR(self_in);
|
||||
check_for_deinit(self);
|
||||
return mp_obj_new_float(common_hal_gnss_get_longitude(self));
|
||||
}
|
||||
MP_DEFINE_CONST_FUN_OBJ_1(gnss_get_longitude_obj, gnss_obj_get_longitude);
|
||||
|
||||
const mp_obj_property_t gnss_longitude_obj = {
|
||||
.base.type = &mp_type_property,
|
||||
.proxy = {(mp_obj_t)&gnss_get_longitude_obj,
|
||||
(mp_obj_t)&mp_const_none_obj,
|
||||
(mp_obj_t)&mp_const_none_obj},
|
||||
};
|
||||
|
||||
//| altitude: float
|
||||
//| """Altitude of current position in meters (float)."""
|
||||
//|
|
||||
STATIC mp_obj_t gnss_obj_get_altitude(mp_obj_t self_in) {
|
||||
gnss_obj_t *self = MP_OBJ_TO_PTR(self_in);
|
||||
check_for_deinit(self);
|
||||
return mp_obj_new_float(common_hal_gnss_get_altitude(self));
|
||||
}
|
||||
MP_DEFINE_CONST_FUN_OBJ_1(gnss_get_altitude_obj, gnss_obj_get_altitude);
|
||||
|
||||
const mp_obj_property_t gnss_altitude_obj = {
|
||||
.base.type = &mp_type_property,
|
||||
.proxy = {(mp_obj_t)&gnss_get_altitude_obj,
|
||||
(mp_obj_t)&mp_const_none_obj,
|
||||
(mp_obj_t)&mp_const_none_obj},
|
||||
};
|
||||
|
||||
//| timestamp: time.struct_time
|
||||
//| """Time when the position data was updated."""
|
||||
//|
|
||||
STATIC mp_obj_t gnss_obj_get_timestamp(mp_obj_t self_in) {
|
||||
gnss_obj_t *self = MP_OBJ_TO_PTR(self_in);
|
||||
check_for_deinit(self);
|
||||
timeutils_struct_time_t tm;
|
||||
common_hal_gnss_get_timestamp(self, &tm);
|
||||
return struct_time_from_tm(&tm);
|
||||
}
|
||||
MP_DEFINE_CONST_FUN_OBJ_1(gnss_get_timestamp_obj, gnss_obj_get_timestamp);
|
||||
|
||||
const mp_obj_property_t gnss_timestamp_obj = {
|
||||
.base.type = &mp_type_property,
|
||||
.proxy = {(mp_obj_t)&gnss_get_timestamp_obj,
|
||||
(mp_obj_t)&mp_const_none_obj,
|
||||
(mp_obj_t)&mp_const_none_obj},
|
||||
};
|
||||
|
||||
//| fix: PositionFix
|
||||
//| """Fix mode."""
|
||||
//|
|
||||
STATIC mp_obj_t gnss_obj_get_fix(mp_obj_t self_in) {
|
||||
gnss_obj_t *self = MP_OBJ_TO_PTR(self_in);
|
||||
check_for_deinit(self);
|
||||
return gnss_positionfix_type_to_obj(common_hal_gnss_get_fix(self));
|
||||
}
|
||||
MP_DEFINE_CONST_FUN_OBJ_1(gnss_get_fix_obj, gnss_obj_get_fix);
|
||||
|
||||
const mp_obj_property_t gnss_fix_obj = {
|
||||
.base.type = &mp_type_property,
|
||||
.proxy = {(mp_obj_t)&gnss_get_fix_obj,
|
||||
(mp_obj_t)&mp_const_none_obj,
|
||||
(mp_obj_t)&mp_const_none_obj},
|
||||
};
|
||||
|
||||
STATIC const mp_rom_map_elem_t gnss_locals_dict_table[] = {
|
||||
{ MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&gnss_deinit_obj) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_update), MP_ROM_PTR(&gnss_update_obj) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_latitude), MP_ROM_PTR(&gnss_latitude_obj) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_longitude), MP_ROM_PTR(&gnss_longitude_obj) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_altitude), MP_ROM_PTR(&gnss_altitude_obj) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_timestamp), MP_ROM_PTR(&gnss_timestamp_obj) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_fix), MP_ROM_PTR(&gnss_fix_obj) }
|
||||
};
|
||||
STATIC MP_DEFINE_CONST_DICT(gnss_locals_dict, gnss_locals_dict_table);
|
||||
|
||||
const mp_obj_type_t gnss_type = {
|
||||
{ &mp_type_type },
|
||||
.name = MP_QSTR_GNSS,
|
||||
.make_new = gnss_make_new,
|
||||
.locals_dict = (mp_obj_dict_t*)&gnss_locals_dict,
|
||||
};
|
27
shared-bindings/gnss/GNSS 2.h
Normal file
27
shared-bindings/gnss/GNSS 2.h
Normal file
@ -0,0 +1,27 @@
|
||||
// SPDX-FileCopyrightText: Sony Semiconductor Solutions Corporation
|
||||
//
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_GNSS_GNSS_H
|
||||
#define MICROPY_INCLUDED_SHARED_BINDINGS_GNSS_GNSS_H
|
||||
|
||||
#include "common-hal/gnss/GNSS.h"
|
||||
#include "shared-bindings/gnss/SatelliteSystem.h"
|
||||
#include "shared-bindings/gnss/PositionFix.h"
|
||||
|
||||
#include "lib/timeutils/timeutils.h"
|
||||
|
||||
extern const mp_obj_type_t gnss_type;
|
||||
|
||||
void common_hal_gnss_construct(gnss_obj_t *self, unsigned long selection);
|
||||
void common_hal_gnss_deinit(gnss_obj_t *self);
|
||||
bool common_hal_gnss_deinited(gnss_obj_t *self);
|
||||
void common_hal_gnss_update(gnss_obj_t *self);
|
||||
|
||||
mp_float_t common_hal_gnss_get_latitude(gnss_obj_t *self);
|
||||
mp_float_t common_hal_gnss_get_longitude(gnss_obj_t *self);
|
||||
mp_float_t common_hal_gnss_get_altitude(gnss_obj_t *self);
|
||||
void common_hal_gnss_get_timestamp(gnss_obj_t *self, timeutils_struct_time_t *tm);
|
||||
gnss_positionfix_t common_hal_gnss_get_fix(gnss_obj_t *self);
|
||||
|
||||
#endif // MICROPY_INCLUDED_SHARED_BINDINGS_GNSS_GNSS_H
|
80
shared-bindings/gnss/PositionFix 2.c
Normal file
80
shared-bindings/gnss/PositionFix 2.c
Normal file
@ -0,0 +1,80 @@
|
||||
// SPDX-FileCopyrightText: Sony Semiconductor Solutions Corporation
|
||||
//
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
#include "shared-bindings/gnss/PositionFix.h"
|
||||
|
||||
//| class PositionFix:
|
||||
//| """Position fix mode"""
|
||||
//|
|
||||
//| def __init__(self) -> None:
|
||||
//| """Enum-like class to define the position fix mode."""
|
||||
//|
|
||||
//| INVALID: PositionFix
|
||||
//| """No measurement."""
|
||||
//|
|
||||
//| FIX_2D: PositionFix
|
||||
//| """2D fix."""
|
||||
//|
|
||||
//| FIX_3D: PositionFix
|
||||
//| """3D fix."""
|
||||
//|
|
||||
const mp_obj_type_t gnss_positionfix_type;
|
||||
|
||||
const gnss_positionfix_obj_t gnss_positionfix_invalid_obj = {
|
||||
{ &gnss_positionfix_type },
|
||||
};
|
||||
|
||||
const gnss_positionfix_obj_t gnss_positionfix_fix2d_obj = {
|
||||
{ &gnss_positionfix_type },
|
||||
};
|
||||
|
||||
const gnss_positionfix_obj_t gnss_positionfix_fix3d_obj = {
|
||||
{ &gnss_positionfix_type },
|
||||
};
|
||||
|
||||
gnss_positionfix_t gnss_positionfix_obj_to_type(mp_obj_t obj) {
|
||||
gnss_positionfix_t posfix = POSITIONFIX_INVALID;
|
||||
if (obj == MP_ROM_PTR(&gnss_positionfix_fix2d_obj)) {
|
||||
posfix = POSITIONFIX_2D;
|
||||
} else if (obj == MP_ROM_PTR(&gnss_positionfix_fix3d_obj)) {
|
||||
posfix = POSITIONFIX_3D;
|
||||
}
|
||||
return posfix;
|
||||
}
|
||||
|
||||
mp_obj_t gnss_positionfix_type_to_obj(gnss_positionfix_t posfix) {
|
||||
switch (posfix) {
|
||||
case POSITIONFIX_2D:
|
||||
return (mp_obj_t)MP_ROM_PTR(&gnss_positionfix_fix2d_obj);
|
||||
case POSITIONFIX_3D:
|
||||
return (mp_obj_t)MP_ROM_PTR(&gnss_positionfix_fix3d_obj);
|
||||
case POSITIONFIX_INVALID:
|
||||
default:
|
||||
return (mp_obj_t)MP_ROM_PTR(&gnss_positionfix_invalid_obj);
|
||||
}
|
||||
}
|
||||
|
||||
STATIC const mp_rom_map_elem_t gnss_positionfix_locals_dict_table[] = {
|
||||
{MP_ROM_QSTR(MP_QSTR_INVALID), MP_ROM_PTR(&gnss_positionfix_invalid_obj)},
|
||||
{MP_ROM_QSTR(MP_QSTR_FIX_2D), MP_ROM_PTR(&gnss_positionfix_fix2d_obj)},
|
||||
{MP_ROM_QSTR(MP_QSTR_FIX_3D), MP_ROM_PTR(&gnss_positionfix_fix3d_obj)},
|
||||
};
|
||||
STATIC MP_DEFINE_CONST_DICT(gnss_positionfix_locals_dict, gnss_positionfix_locals_dict_table);
|
||||
|
||||
STATIC void gnss_positionfix_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t kind) {
|
||||
qstr posfix = MP_QSTR_INVALID;
|
||||
if (MP_OBJ_TO_PTR(self_in) == MP_ROM_PTR(&gnss_positionfix_fix2d_obj)) {
|
||||
posfix = MP_QSTR_FIX_2D;
|
||||
} else if (MP_OBJ_TO_PTR(self_in) == MP_ROM_PTR(&gnss_positionfix_fix3d_obj)) {
|
||||
posfix = MP_QSTR_FIX_3D;
|
||||
}
|
||||
mp_printf(print, "%q.%q.%q", MP_QSTR_gnss, MP_QSTR_PositionFix, posfix);
|
||||
}
|
||||
|
||||
const mp_obj_type_t gnss_positionfix_type = {
|
||||
{ &mp_type_type },
|
||||
.name = MP_QSTR_PositionFix,
|
||||
.print = gnss_positionfix_print,
|
||||
.locals_dict = (mp_obj_t)&gnss_positionfix_locals_dict,
|
||||
};
|
28
shared-bindings/gnss/PositionFix 2.h
Normal file
28
shared-bindings/gnss/PositionFix 2.h
Normal file
@ -0,0 +1,28 @@
|
||||
// SPDX-FileCopyrightText: Sony Semiconductor Solutions Corporation
|
||||
//
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_GNSS_POSITIONFIX_H
|
||||
#define MICROPY_INCLUDED_SHARED_BINDINGS_GNSS_POSITIONFIX_H
|
||||
|
||||
#include "py/obj.h"
|
||||
|
||||
typedef enum {
|
||||
POSITIONFIX_INVALID,
|
||||
POSITIONFIX_2D,
|
||||
POSITIONFIX_3D,
|
||||
} gnss_positionfix_t;
|
||||
|
||||
const mp_obj_type_t gnss_positionfix_type;
|
||||
|
||||
gnss_positionfix_t gnss_positionfix_obj_to_type(mp_obj_t obj);
|
||||
mp_obj_t gnss_positionfix_type_to_obj(gnss_positionfix_t mode);
|
||||
|
||||
typedef struct {
|
||||
mp_obj_base_t base;
|
||||
} gnss_positionfix_obj_t;
|
||||
extern const gnss_positionfix_obj_t gnss_positionfix_invalid_obj;
|
||||
extern const gnss_positionfix_obj_t gnss_positionfix_fix2d_obj;
|
||||
extern const gnss_positionfix_obj_t gnss_positionfix_fix3d_obj;
|
||||
|
||||
#endif // MICROPY_INCLUDED_SHARED_BINDINGS_GNSS_POSITIONFIX_H
|
113
shared-bindings/gnss/SatelliteSystem 2.c
Normal file
113
shared-bindings/gnss/SatelliteSystem 2.c
Normal file
@ -0,0 +1,113 @@
|
||||
// SPDX-FileCopyrightText: Sony Semiconductor Solutions Corporation
|
||||
//
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
#include "shared-bindings/gnss/SatelliteSystem.h"
|
||||
|
||||
//| class SatelliteSystem:
|
||||
//| """Satellite system type"""
|
||||
//|
|
||||
//| def __init__(self) -> None:
|
||||
//| """Enum-like class to define the satellite system type."""
|
||||
//|
|
||||
//| GPS: SatelliteSystem
|
||||
//| """Global Positioning System."""
|
||||
//|
|
||||
//| GLONASS: SatelliteSystem
|
||||
//| """GLObal NAvigation Satellite System."""
|
||||
//|
|
||||
//| SBAS: SatelliteSystem
|
||||
//| """Satellite Based Augmentation System."""
|
||||
//|
|
||||
//| QZSS_L1CA: SatelliteSystem
|
||||
//| """Quasi-Zenith Satellite System L1C/A."""
|
||||
//|
|
||||
//| QZSS_L1S: SatelliteSystem
|
||||
//| """Quasi-Zenith Satellite System L1S."""
|
||||
//|
|
||||
const mp_obj_type_t gnss_satellitesystem_type;
|
||||
|
||||
const gnss_satellitesystem_obj_t gnss_satellitesystem_gps_obj = {
|
||||
{ &gnss_satellitesystem_type },
|
||||
};
|
||||
|
||||
const gnss_satellitesystem_obj_t gnss_satellitesystem_glonass_obj = {
|
||||
{ &gnss_satellitesystem_type },
|
||||
};
|
||||
|
||||
const gnss_satellitesystem_obj_t gnss_satellitesystem_sbas_obj = {
|
||||
{ &gnss_satellitesystem_type },
|
||||
};
|
||||
|
||||
const gnss_satellitesystem_obj_t gnss_satellitesystem_qzss_l1ca_obj = {
|
||||
{ &gnss_satellitesystem_type },
|
||||
};
|
||||
|
||||
const gnss_satellitesystem_obj_t gnss_satellitesystem_qzss_l1s_obj = {
|
||||
{ &gnss_satellitesystem_type },
|
||||
};
|
||||
|
||||
gnss_satellitesystem_t gnss_satellitesystem_obj_to_type(mp_obj_t obj) {
|
||||
if (obj == MP_ROM_PTR(&gnss_satellitesystem_gps_obj)) {
|
||||
return SATELLITESYSTEM_GPS;
|
||||
} else if (obj == MP_ROM_PTR(&gnss_satellitesystem_glonass_obj)) {
|
||||
return SATELLITESYSTEM_GLONASS;
|
||||
} else if (obj == MP_ROM_PTR(&gnss_satellitesystem_sbas_obj)) {
|
||||
return SATELLITESYSTEM_SBAS;
|
||||
} else if (obj == MP_ROM_PTR(&gnss_satellitesystem_qzss_l1ca_obj)) {
|
||||
return SATELLITESYSTEM_QZSS_L1CA;
|
||||
} else if (obj == MP_ROM_PTR(&gnss_satellitesystem_qzss_l1s_obj)) {
|
||||
return SATELLITESYSTEM_QZSS_L1S;
|
||||
}
|
||||
return SATELLITESYSTEM_NONE;
|
||||
}
|
||||
|
||||
mp_obj_t gnss_satellitesystem_type_to_obj(gnss_satellitesystem_t system) {
|
||||
switch (system) {
|
||||
case SATELLITESYSTEM_GPS:
|
||||
return (mp_obj_t)MP_ROM_PTR(&gnss_satellitesystem_gps_obj);
|
||||
case SATELLITESYSTEM_GLONASS:
|
||||
return (mp_obj_t)MP_ROM_PTR(&gnss_satellitesystem_glonass_obj);
|
||||
case SATELLITESYSTEM_SBAS:
|
||||
return (mp_obj_t)MP_ROM_PTR(&gnss_satellitesystem_sbas_obj);
|
||||
case SATELLITESYSTEM_QZSS_L1CA:
|
||||
return (mp_obj_t)MP_ROM_PTR(&gnss_satellitesystem_qzss_l1ca_obj);
|
||||
case SATELLITESYSTEM_QZSS_L1S:
|
||||
return (mp_obj_t)MP_ROM_PTR(&gnss_satellitesystem_qzss_l1s_obj);
|
||||
case SATELLITESYSTEM_NONE:
|
||||
default:
|
||||
return (mp_obj_t)MP_ROM_PTR(&mp_const_none_obj);
|
||||
}
|
||||
}
|
||||
|
||||
STATIC const mp_rom_map_elem_t gnss_satellitesystem_locals_dict_table[] = {
|
||||
{MP_ROM_QSTR(MP_QSTR_GPS), MP_ROM_PTR(&gnss_satellitesystem_gps_obj)},
|
||||
{MP_ROM_QSTR(MP_QSTR_GLONASS), MP_ROM_PTR(&gnss_satellitesystem_glonass_obj)},
|
||||
{MP_ROM_QSTR(MP_QSTR_SBAS), MP_ROM_PTR(&gnss_satellitesystem_sbas_obj)},
|
||||
{MP_ROM_QSTR(MP_QSTR_QZSS_L1CA), MP_ROM_PTR(&gnss_satellitesystem_qzss_l1ca_obj)},
|
||||
{MP_ROM_QSTR(MP_QSTR_QZSS_L1S), MP_ROM_PTR(&gnss_satellitesystem_qzss_l1s_obj)},
|
||||
};
|
||||
STATIC MP_DEFINE_CONST_DICT(gnss_satellitesystem_locals_dict, gnss_satellitesystem_locals_dict_table);
|
||||
|
||||
STATIC void gnss_satellitesystem_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t kind) {
|
||||
qstr system = MP_QSTR_None;
|
||||
if (MP_OBJ_TO_PTR(self_in) == MP_ROM_PTR(&gnss_satellitesystem_gps_obj)) {
|
||||
system = MP_QSTR_GPS;
|
||||
} else if (MP_OBJ_TO_PTR(self_in) == MP_ROM_PTR(&gnss_satellitesystem_glonass_obj)) {
|
||||
system = MP_QSTR_GLONASS;
|
||||
} else if (MP_OBJ_TO_PTR(self_in) == MP_ROM_PTR(&gnss_satellitesystem_sbas_obj)) {
|
||||
system = MP_QSTR_SBAS;
|
||||
} else if (MP_OBJ_TO_PTR(self_in) == MP_ROM_PTR(&gnss_satellitesystem_qzss_l1ca_obj)) {
|
||||
system = MP_QSTR_QZSS_L1CA;
|
||||
} else if (MP_OBJ_TO_PTR(self_in) == MP_ROM_PTR(&gnss_satellitesystem_qzss_l1s_obj)) {
|
||||
system = MP_QSTR_QZSS_L1S;
|
||||
}
|
||||
mp_printf(print, "%q.%q.%q", MP_QSTR_gnss, MP_QSTR_SatelliteSystem, system);
|
||||
}
|
||||
|
||||
const mp_obj_type_t gnss_satellitesystem_type = {
|
||||
{ &mp_type_type },
|
||||
.name = MP_QSTR_SatelliteSystem,
|
||||
.print = gnss_satellitesystem_print,
|
||||
.locals_dict = (mp_obj_t)&gnss_satellitesystem_locals_dict,
|
||||
};
|
33
shared-bindings/gnss/SatelliteSystem 2.h
Normal file
33
shared-bindings/gnss/SatelliteSystem 2.h
Normal file
@ -0,0 +1,33 @@
|
||||
// SPDX-FileCopyrightText: Sony Semiconductor Solutions Corporation
|
||||
//
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_GNSS_SATELLITESYSTEM_H
|
||||
#define MICROPY_INCLUDED_SHARED_BINDINGS_GNSS_SATELLITESYSTEM_H
|
||||
|
||||
#include "py/obj.h"
|
||||
|
||||
typedef enum {
|
||||
SATELLITESYSTEM_NONE = 0,
|
||||
SATELLITESYSTEM_GPS = (1U << 0),
|
||||
SATELLITESYSTEM_GLONASS = (1U << 1),
|
||||
SATELLITESYSTEM_SBAS = (1U << 2),
|
||||
SATELLITESYSTEM_QZSS_L1CA = (1U << 3),
|
||||
SATELLITESYSTEM_QZSS_L1S = (1U << 4),
|
||||
} gnss_satellitesystem_t;
|
||||
|
||||
const mp_obj_type_t gnss_satellitesystem_type;
|
||||
|
||||
gnss_satellitesystem_t gnss_satellitesystem_obj_to_type(mp_obj_t obj);
|
||||
mp_obj_t gnss_satellitesystem_type_to_obj(gnss_satellitesystem_t mode);
|
||||
|
||||
typedef struct {
|
||||
mp_obj_base_t base;
|
||||
} gnss_satellitesystem_obj_t;
|
||||
extern const gnss_satellitesystem_obj_t gnss_satellitesystem_gps_obj;
|
||||
extern const gnss_satellitesystem_obj_t gnss_satellitesystem_glonass_obj;
|
||||
extern const gnss_satellitesystem_obj_t gnss_satellitesystem_sbas_obj;
|
||||
extern const gnss_satellitesystem_obj_t gnss_satellitesystem_qzss_l1ca_obj;
|
||||
extern const gnss_satellitesystem_obj_t gnss_satellitesystem_qzss_l1s_obj;
|
||||
|
||||
#endif // MICROPY_INCLUDED_SHARED_BINDINGS_GNSS_SATELLITESYSTEM_H
|
31
shared-bindings/gnss/__init__ 2.c
Normal file
31
shared-bindings/gnss/__init__ 2.c
Normal file
@ -0,0 +1,31 @@
|
||||
// SPDX-FileCopyrightText: Sony Semiconductor Solutions Corporation
|
||||
//
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
#include "py/obj.h"
|
||||
#include "py/runtime.h"
|
||||
#include "py/mphal.h"
|
||||
#include "shared-bindings/gnss/GNSS.h"
|
||||
#include "shared-bindings/gnss/SatelliteSystem.h"
|
||||
#include "shared-bindings/gnss/PositionFix.h"
|
||||
#include "shared-bindings/util.h"
|
||||
|
||||
//| """Global Navigation Satellite System
|
||||
//|
|
||||
//| The `gnss` module contains classes to control the GNSS and acquire positioning information."""
|
||||
//|
|
||||
STATIC const mp_rom_map_elem_t gnss_module_globals_table[] = {
|
||||
{ MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_gnss) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_GNSS), MP_ROM_PTR(&gnss_type) },
|
||||
|
||||
// Enum-like Classes.
|
||||
{ MP_ROM_QSTR(MP_QSTR_SatelliteSystem), MP_ROM_PTR(&gnss_satellitesystem_type) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_PositionFix), MP_ROM_PTR(&gnss_positionfix_type) },
|
||||
};
|
||||
|
||||
STATIC MP_DEFINE_CONST_DICT(gnss_module_globals, gnss_module_globals_table);
|
||||
|
||||
const mp_obj_module_t gnss_module = {
|
||||
.base = { &mp_type_module },
|
||||
.globals = (mp_obj_dict_t*)&gnss_module_globals,
|
||||
};
|
436
shared-bindings/i2cperipheral/I2CPeripheral 2.c
Normal file
436
shared-bindings/i2cperipheral/I2CPeripheral 2.c
Normal file
@ -0,0 +1,436 @@
|
||||
/*
|
||||
* This file is part of the MicroPython project, http://micropython.org/
|
||||
*
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2018 Noralf Trønnes
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "shared-bindings/microcontroller/Pin.h"
|
||||
#include "shared-bindings/i2cperipheral/I2CPeripheral.h"
|
||||
#include "shared-bindings/time/__init__.h"
|
||||
#include "shared-bindings/util.h"
|
||||
|
||||
#include "lib/utils/buffer_helper.h"
|
||||
#include "lib/utils/context_manager_helpers.h"
|
||||
#include "lib/utils/interrupt_char.h"
|
||||
|
||||
#include "py/mperrno.h"
|
||||
#include "py/mphal.h"
|
||||
#include "py/obj.h"
|
||||
#include "py/objproperty.h"
|
||||
#include "py/runtime.h"
|
||||
|
||||
STATIC mp_obj_t mp_obj_new_i2cperipheral_i2c_peripheral_request(i2cperipheral_i2c_peripheral_obj_t *peripheral, uint8_t address, bool is_read, bool is_restart) {
|
||||
i2cperipheral_i2c_peripheral_request_obj_t *self = m_new_obj(i2cperipheral_i2c_peripheral_request_obj_t);
|
||||
self->base.type = &i2cperipheral_i2c_peripheral_request_type;
|
||||
self->peripheral = peripheral;
|
||||
self->address = address;
|
||||
self->is_read = is_read;
|
||||
self->is_restart = is_restart;
|
||||
return (mp_obj_t)self;
|
||||
}
|
||||
|
||||
//| class I2CPeripheral:
|
||||
//| """Two wire serial protocol peripheral"""
|
||||
//|
|
||||
//| def __init__(self, scl: microcontroller.Pin, sda: microcontroller.Pin, addresses: Sequence[int], smbus: bool = False) -> None:
|
||||
//| """I2C is a two-wire protocol for communicating between devices.
|
||||
//| This implements the peripheral (sensor, secondary) side.
|
||||
//|
|
||||
//| :param ~microcontroller.Pin scl: The clock pin
|
||||
//| :param ~microcontroller.Pin sda: The data pin
|
||||
//| :param addresses: The I2C addresses to respond to (how many is hw dependent).
|
||||
//| :type addresses: list[int]
|
||||
//| :param bool smbus: Use SMBUS timings if the hardware supports it"""
|
||||
//| ...
|
||||
//|
|
||||
STATIC mp_obj_t i2cperipheral_i2c_peripheral_make_new(const mp_obj_type_t *type, size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
|
||||
i2cperipheral_i2c_peripheral_obj_t *self = m_new_obj(i2cperipheral_i2c_peripheral_obj_t);
|
||||
self->base.type = &i2cperipheral_i2c_peripheral_type;
|
||||
enum { ARG_scl, ARG_sda, ARG_addresses, ARG_smbus };
|
||||
static const mp_arg_t allowed_args[] = {
|
||||
{ MP_QSTR_scl, MP_ARG_REQUIRED | MP_ARG_OBJ },
|
||||
{ MP_QSTR_sda, MP_ARG_REQUIRED | MP_ARG_OBJ },
|
||||
{ MP_QSTR_addresses, MP_ARG_REQUIRED | MP_ARG_OBJ },
|
||||
{ MP_QSTR_smbus, MP_ARG_KW_ONLY | MP_ARG_BOOL, {.u_bool = false} },
|
||||
};
|
||||
mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)];
|
||||
mp_arg_parse_all(n_args, pos_args, kw_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args);
|
||||
|
||||
const mcu_pin_obj_t* scl = validate_obj_is_free_pin(args[ARG_scl].u_obj);
|
||||
const mcu_pin_obj_t* sda = validate_obj_is_free_pin(args[ARG_sda].u_obj);
|
||||
|
||||
mp_obj_iter_buf_t iter_buf;
|
||||
mp_obj_t iterable = mp_getiter(args[ARG_addresses].u_obj, &iter_buf);
|
||||
mp_obj_t item;
|
||||
uint8_t *addresses = NULL;
|
||||
unsigned int i = 0;
|
||||
while ((item = mp_iternext(iterable)) != MP_OBJ_STOP_ITERATION) {
|
||||
mp_int_t value;
|
||||
if (!mp_obj_get_int_maybe(item, &value)) {
|
||||
mp_raise_TypeError_varg(translate("can't convert %q to %q"), MP_QSTR_address, MP_QSTR_int);
|
||||
}
|
||||
if (value < 0x00 || value > 0x7f) {
|
||||
mp_raise_ValueError(translate("address out of bounds"));
|
||||
}
|
||||
addresses = m_renew(uint8_t, addresses, i, i + 1);
|
||||
addresses[i++] = value;
|
||||
}
|
||||
if (i == 0) {
|
||||
mp_raise_ValueError(translate("addresses is empty"));
|
||||
}
|
||||
|
||||
common_hal_i2cperipheral_i2c_peripheral_construct(self, scl, sda, addresses, i, args[ARG_smbus].u_bool);
|
||||
return (mp_obj_t)self;
|
||||
}
|
||||
|
||||
//| def deinit(self) -> None:
|
||||
//| """Releases control of the underlying hardware so other classes can use it."""
|
||||
//| ...
|
||||
//|
|
||||
STATIC mp_obj_t i2cperipheral_i2c_peripheral_obj_deinit(mp_obj_t self_in) {
|
||||
mp_check_self(MP_OBJ_IS_TYPE(self_in, &i2cperipheral_i2c_peripheral_type));
|
||||
i2cperipheral_i2c_peripheral_obj_t *self = MP_OBJ_TO_PTR(self_in);
|
||||
common_hal_i2cperipheral_i2c_peripheral_deinit(self);
|
||||
return mp_const_none;
|
||||
}
|
||||
MP_DEFINE_CONST_FUN_OBJ_1(i2cperipheral_i2c_peripheral_deinit_obj, i2cperipheral_i2c_peripheral_obj_deinit);
|
||||
|
||||
//| def __enter__(self) -> I2CPeripheral:
|
||||
//| """No-op used in Context Managers."""
|
||||
//| ...
|
||||
//|
|
||||
// Provided by context manager helper.
|
||||
|
||||
//| def __exit__(self) -> None:
|
||||
//| """Automatically deinitializes the hardware on context exit. See
|
||||
//| :ref:`lifetime-and-contextmanagers` for more info."""
|
||||
//| ...
|
||||
//|
|
||||
STATIC mp_obj_t i2cperipheral_i2c_peripheral_obj___exit__(size_t n_args, const mp_obj_t *args) {
|
||||
mp_check_self(MP_OBJ_IS_TYPE(args[0], &i2cperipheral_i2c_peripheral_type));
|
||||
i2cperipheral_i2c_peripheral_obj_t *self = MP_OBJ_TO_PTR(args[0]);
|
||||
common_hal_i2cperipheral_i2c_peripheral_deinit(self);
|
||||
return mp_const_none;
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(i2cperipheral_i2c_peripheral___exit___obj, 4, 4, i2cperipheral_i2c_peripheral_obj___exit__);
|
||||
|
||||
//| def request(self, timeout: float = -1) -> I2CPeripheralRequest:
|
||||
//| """Wait for an I2C request.
|
||||
//|
|
||||
//| :param float timeout: Timeout in seconds. Zero means wait forever, a negative value means check once
|
||||
//| :return: I2C Slave Request or None if timeout=-1 and there's no request
|
||||
//| :rtype: ~i2cperipheral.I2CPeripheralRequest"""
|
||||
//|
|
||||
STATIC mp_obj_t i2cperipheral_i2c_peripheral_request(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
|
||||
mp_check_self(MP_OBJ_IS_TYPE(pos_args[0], &i2cperipheral_i2c_peripheral_type));
|
||||
i2cperipheral_i2c_peripheral_obj_t *self = MP_OBJ_TO_PTR(pos_args[0]);
|
||||
if(common_hal_i2cperipheral_i2c_peripheral_deinited(self)) {
|
||||
raise_deinited_error();
|
||||
}
|
||||
enum { ARG_timeout };
|
||||
static const mp_arg_t allowed_args[] = {
|
||||
{ MP_QSTR_timeout, MP_ARG_KW_ONLY | MP_ARG_OBJ, {.u_obj = MP_OBJ_NEW_SMALL_INT(-1)} },
|
||||
};
|
||||
mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)];
|
||||
mp_arg_parse_all(n_args - 1, pos_args + 1, kw_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args);
|
||||
|
||||
#if MICROPY_PY_BUILTINS_FLOAT
|
||||
float f = mp_obj_get_float(args[ARG_timeout].u_obj) * 1000;
|
||||
int timeout_ms = (int)f;
|
||||
#else
|
||||
int timeout_ms = mp_obj_get_int(args[ARG_timeout].u_obj) * 1000;
|
||||
#endif
|
||||
|
||||
bool forever = false;
|
||||
uint64_t timeout_end = 0;
|
||||
if (timeout_ms == 0) {
|
||||
forever = true;
|
||||
} else if (timeout_ms > 0) {
|
||||
timeout_end = common_hal_time_monotonic() + timeout_ms;
|
||||
}
|
||||
|
||||
int last_error = 0;
|
||||
|
||||
do {
|
||||
uint8_t address;
|
||||
bool is_read;
|
||||
bool is_restart;
|
||||
|
||||
RUN_BACKGROUND_TASKS;
|
||||
if (mp_hal_is_interrupted()) {
|
||||
return mp_const_none;
|
||||
}
|
||||
|
||||
int status = common_hal_i2cperipheral_i2c_peripheral_is_addressed(self, &address, &is_read, &is_restart);
|
||||
if (status < 0) {
|
||||
// On error try one more time before bailing out
|
||||
if (last_error) {
|
||||
mp_raise_OSError(last_error);
|
||||
}
|
||||
last_error = -status;
|
||||
mp_hal_delay_ms(10);
|
||||
continue;
|
||||
}
|
||||
|
||||
last_error = 0;
|
||||
|
||||
if (status == 0) {
|
||||
mp_hal_delay_us(10);
|
||||
continue;
|
||||
}
|
||||
|
||||
return mp_obj_new_i2cperipheral_i2c_peripheral_request(self, address, is_read, is_restart);
|
||||
} while (forever || common_hal_time_monotonic() < timeout_end);
|
||||
|
||||
if (timeout_ms > 0) {
|
||||
mp_raise_OSError(MP_ETIMEDOUT);
|
||||
}
|
||||
return mp_const_none;
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_KW(i2cperipheral_i2c_peripheral_request_obj, 1, i2cperipheral_i2c_peripheral_request);
|
||||
|
||||
STATIC const mp_rom_map_elem_t i2cperipheral_i2c_peripheral_locals_dict_table[] = {
|
||||
{ MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&i2cperipheral_i2c_peripheral_deinit_obj) },
|
||||
{ MP_ROM_QSTR(MP_QSTR___enter__), MP_ROM_PTR(&default___enter___obj) },
|
||||
{ MP_ROM_QSTR(MP_QSTR___exit__), MP_ROM_PTR(&i2cperipheral_i2c_peripheral___exit___obj) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_request), MP_ROM_PTR(&i2cperipheral_i2c_peripheral_request_obj) },
|
||||
|
||||
};
|
||||
|
||||
STATIC MP_DEFINE_CONST_DICT(i2cperipheral_i2c_peripheral_locals_dict, i2cperipheral_i2c_peripheral_locals_dict_table);
|
||||
|
||||
const mp_obj_type_t i2cperipheral_i2c_peripheral_type = {
|
||||
{ &mp_type_type },
|
||||
.name = MP_QSTR_I2CPeripheral,
|
||||
.make_new = i2cperipheral_i2c_peripheral_make_new,
|
||||
.locals_dict = (mp_obj_dict_t*)&i2cperipheral_i2c_peripheral_locals_dict,
|
||||
};
|
||||
|
||||
//| class I2CPeripheralRequest:
|
||||
//|
|
||||
//| def __init__(self, peripheral: i2cperipheral.I2CPeripheral, address: int, is_read: bool, is_restart: bool) -> None:
|
||||
//| """Information about an I2C transfer request
|
||||
//| This cannot be instantiated directly, but is returned by :py:meth:`I2CPeripheral.request`.
|
||||
//|
|
||||
//| :param peripheral: The I2CPeripheral object receiving this request
|
||||
//| :param address: I2C address
|
||||
//| :param is_read: True if the main peripheral is requesting data
|
||||
//| :param is_restart: Repeated Start Condition"""
|
||||
//|
|
||||
STATIC mp_obj_t i2cperipheral_i2c_peripheral_request_make_new(const mp_obj_type_t *type, size_t n_args, const mp_obj_t *args, mp_map_t *kw_args) {
|
||||
mp_arg_check_num(n_args, kw_args, 4, 4, false);
|
||||
return mp_obj_new_i2cperipheral_i2c_peripheral_request(args[0], mp_obj_get_int(args[1]), mp_obj_is_true(args[2]), mp_obj_is_true(args[3]));
|
||||
}
|
||||
|
||||
//| def __enter__(self) -> I2CPeripheralRequest:
|
||||
//| """No-op used in Context Managers."""
|
||||
//| ...
|
||||
//|
|
||||
// Provided by context manager helper.
|
||||
|
||||
//| def __exit__(self) -> None:
|
||||
//| """Close the request."""
|
||||
//| ...
|
||||
//|
|
||||
STATIC mp_obj_t i2cperipheral_i2c_peripheral_request_obj___exit__(size_t n_args, const mp_obj_t *args) {
|
||||
mp_check_self(MP_OBJ_IS_TYPE(args[0], &i2cperipheral_i2c_peripheral_request_type));
|
||||
i2cperipheral_i2c_peripheral_request_obj_t *self = MP_OBJ_TO_PTR(args[0]);
|
||||
common_hal_i2cperipheral_i2c_peripheral_close(self->peripheral);
|
||||
return mp_const_none;
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(i2cperipheral_i2c_peripheral_request___exit___obj, 4, 4, i2cperipheral_i2c_peripheral_request_obj___exit__);
|
||||
|
||||
//| address: int
|
||||
//| """The I2C address of the request."""
|
||||
//|
|
||||
STATIC mp_obj_t i2cperipheral_i2c_peripheral_request_get_address(mp_obj_t self_in) {
|
||||
mp_check_self(MP_OBJ_IS_TYPE(self_in, &i2cperipheral_i2c_peripheral_request_type));
|
||||
i2cperipheral_i2c_peripheral_request_obj_t *self = MP_OBJ_TO_PTR(self_in);
|
||||
return mp_obj_new_int(self->address);
|
||||
}
|
||||
MP_DEFINE_CONST_PROP_GET(i2cperipheral_i2c_peripheral_request_address_obj, i2cperipheral_i2c_peripheral_request_get_address);
|
||||
|
||||
//| is_read: bool
|
||||
//| """The I2C main controller is reading from this peripheral."""
|
||||
//|
|
||||
STATIC mp_obj_t i2cperipheral_i2c_peripheral_request_get_is_read(mp_obj_t self_in) {
|
||||
mp_check_self(MP_OBJ_IS_TYPE(self_in, &i2cperipheral_i2c_peripheral_request_type));
|
||||
i2cperipheral_i2c_peripheral_request_obj_t *self = MP_OBJ_TO_PTR(self_in);
|
||||
return mp_obj_new_bool(self->is_read);
|
||||
}
|
||||
MP_DEFINE_CONST_PROP_GET(i2cperipheral_i2c_peripheral_request_is_read_obj, i2cperipheral_i2c_peripheral_request_get_is_read);
|
||||
|
||||
//| is_restart: bool
|
||||
//| """Is Repeated Start Condition."""
|
||||
//|
|
||||
STATIC mp_obj_t i2cperipheral_i2c_peripheral_request_get_is_restart(mp_obj_t self_in) {
|
||||
mp_check_self(MP_OBJ_IS_TYPE(self_in, &i2cperipheral_i2c_peripheral_request_type));
|
||||
i2cperipheral_i2c_peripheral_request_obj_t *self = MP_OBJ_TO_PTR(self_in);
|
||||
return mp_obj_new_bool(self->is_restart);
|
||||
}
|
||||
MP_DEFINE_CONST_PROP_GET(i2cperipheral_i2c_peripheral_request_is_restart_obj, i2cperipheral_i2c_peripheral_request_get_is_restart);
|
||||
|
||||
//| def read(self, n: int = -1, ack: bool = True) -> bytearray:
|
||||
//| """Read data.
|
||||
//| If ack=False, the caller is responsible for calling :py:meth:`I2CPeripheralRequest.ack`.
|
||||
//|
|
||||
//| :param n: Number of bytes to read (negative means all)
|
||||
//| :param ack: Whether or not to send an ACK after the n'th byte
|
||||
//| :return: Bytes read"""
|
||||
//| ...
|
||||
//|
|
||||
STATIC mp_obj_t i2cperipheral_i2c_peripheral_request_read(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
|
||||
mp_check_self(MP_OBJ_IS_TYPE(pos_args[0], &i2cperipheral_i2c_peripheral_request_type));
|
||||
i2cperipheral_i2c_peripheral_request_obj_t *self = MP_OBJ_TO_PTR(pos_args[0]);
|
||||
enum { ARG_n, ARG_ack };
|
||||
static const mp_arg_t allowed_args[] = {
|
||||
{ MP_QSTR_n, MP_ARG_INT, {.u_int = -1} },
|
||||
{ MP_QSTR_ack, MP_ARG_KW_ONLY | MP_ARG_BOOL, {.u_bool = true} },
|
||||
};
|
||||
mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)];
|
||||
mp_arg_parse_all(n_args - 1, pos_args + 1, kw_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args);
|
||||
|
||||
if (self->is_read) {
|
||||
mp_raise_OSError(MP_EACCES);
|
||||
}
|
||||
|
||||
int n = args[ARG_n].u_int;
|
||||
if (n == 0) {
|
||||
return mp_obj_new_bytearray(0, NULL);
|
||||
}
|
||||
bool ack = args[ARG_ack].u_bool;
|
||||
|
||||
int i = 0;
|
||||
uint8_t *buffer = NULL;
|
||||
uint64_t timeout_end = common_hal_time_monotonic() + 10 * 1000;
|
||||
while (common_hal_time_monotonic() < timeout_end) {
|
||||
RUN_BACKGROUND_TASKS;
|
||||
if (mp_hal_is_interrupted()) {
|
||||
break;
|
||||
}
|
||||
|
||||
uint8_t data;
|
||||
int num = common_hal_i2cperipheral_i2c_peripheral_read_byte(self->peripheral, &data);
|
||||
if (num == 0) {
|
||||
break;
|
||||
}
|
||||
|
||||
buffer = m_renew(uint8_t, buffer, i, i + 1);
|
||||
buffer[i++] = data;
|
||||
if (i == n) {
|
||||
if (ack) {
|
||||
common_hal_i2cperipheral_i2c_peripheral_ack(self->peripheral, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
common_hal_i2cperipheral_i2c_peripheral_ack(self->peripheral, true);
|
||||
}
|
||||
|
||||
return mp_obj_new_bytearray(i, buffer);
|
||||
}
|
||||
MP_DEFINE_CONST_FUN_OBJ_KW(i2cperipheral_i2c_peripheral_request_read_obj, 1, i2cperipheral_i2c_peripheral_request_read);
|
||||
|
||||
//| def write(self, buffer: ReadableBuffer) -> int:
|
||||
//| """Write the data contained in buffer.
|
||||
//|
|
||||
//| :param ~_typing.ReadableBuffer buffer: Write out the data in this buffer
|
||||
//| :return: Number of bytes written"""
|
||||
//| ...
|
||||
//|
|
||||
STATIC mp_obj_t i2cperipheral_i2c_peripheral_request_write(mp_obj_t self_in, mp_obj_t buf_in) {
|
||||
mp_check_self(MP_OBJ_IS_TYPE(self_in, &i2cperipheral_i2c_peripheral_request_type));
|
||||
i2cperipheral_i2c_peripheral_request_obj_t *self = MP_OBJ_TO_PTR(self_in);
|
||||
|
||||
if (!self->is_read) {
|
||||
mp_raise_OSError(MP_EACCES);
|
||||
}
|
||||
|
||||
mp_buffer_info_t bufinfo;
|
||||
mp_get_buffer_raise(buf_in, &bufinfo, MP_BUFFER_READ);
|
||||
|
||||
for (size_t i = 0; i < bufinfo.len; i++) {
|
||||
RUN_BACKGROUND_TASKS;
|
||||
if (mp_hal_is_interrupted()) {
|
||||
break;
|
||||
}
|
||||
|
||||
int num = common_hal_i2cperipheral_i2c_peripheral_write_byte(self->peripheral, ((uint8_t *)(bufinfo.buf))[i]);
|
||||
if (num == 0) {
|
||||
return mp_obj_new_int(i);
|
||||
}
|
||||
}
|
||||
|
||||
return mp_obj_new_int(bufinfo.len);
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_2(i2cperipheral_i2c_peripheral_request_write_obj, i2cperipheral_i2c_peripheral_request_write);
|
||||
|
||||
//| def ack(self, ack: bool = True) -> None:
|
||||
//| """Acknowledge or Not Acknowledge last byte received.
|
||||
//| Use together with :py:meth:`I2CPeripheralRequest.read` ack=False.
|
||||
//|
|
||||
//| :param ack: Whether to send an ACK or NACK"""
|
||||
//| ...
|
||||
//|
|
||||
STATIC mp_obj_t i2cperipheral_i2c_peripheral_request_ack(uint n_args, const mp_obj_t *args) {
|
||||
mp_check_self(MP_OBJ_IS_TYPE(args[0], &i2cperipheral_i2c_peripheral_request_type));
|
||||
i2cperipheral_i2c_peripheral_request_obj_t *self = MP_OBJ_TO_PTR(args[0]);
|
||||
bool ack = (n_args == 1) ? true : mp_obj_is_true(args[1]);
|
||||
|
||||
if (self->is_read) {
|
||||
mp_raise_OSError(MP_EACCES);
|
||||
}
|
||||
|
||||
common_hal_i2cperipheral_i2c_peripheral_ack(self->peripheral, ack);
|
||||
return mp_const_none;
|
||||
}
|
||||
MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(i2cperipheral_i2c_peripheral_request_ack_obj, 1, 2, i2cperipheral_i2c_peripheral_request_ack);
|
||||
|
||||
STATIC mp_obj_t i2cperipheral_i2c_peripheral_request_close(mp_obj_t self_in) {
|
||||
mp_check_self(MP_OBJ_IS_TYPE(self_in, &i2cperipheral_i2c_peripheral_request_type));
|
||||
i2cperipheral_i2c_peripheral_request_obj_t *self = MP_OBJ_TO_PTR(self_in);
|
||||
|
||||
common_hal_i2cperipheral_i2c_peripheral_close(self->peripheral);
|
||||
return mp_const_none;
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_1(i2cperipheral_i2c_peripheral_request_close_obj, i2cperipheral_i2c_peripheral_request_close);
|
||||
|
||||
STATIC const mp_rom_map_elem_t i2cperipheral_i2c_peripheral_request_locals_dict_table[] = {
|
||||
{ MP_ROM_QSTR(MP_QSTR___enter__), MP_ROM_PTR(&default___enter___obj) },
|
||||
{ MP_ROM_QSTR(MP_QSTR___exit__), MP_ROM_PTR(&i2cperipheral_i2c_peripheral_request___exit___obj) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_address), MP_ROM_PTR(&i2cperipheral_i2c_peripheral_request_address_obj) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_is_read), MP_ROM_PTR(&i2cperipheral_i2c_peripheral_request_is_read_obj) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_is_restart), MP_ROM_PTR(&i2cperipheral_i2c_peripheral_request_is_restart_obj) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_read), MP_ROM_PTR(&i2cperipheral_i2c_peripheral_request_read_obj) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_write), MP_ROM_PTR(&i2cperipheral_i2c_peripheral_request_write_obj) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_ack), MP_ROM_PTR(&i2cperipheral_i2c_peripheral_request_ack_obj) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_close), MP_ROM_PTR(&i2cperipheral_i2c_peripheral_request_close_obj) },
|
||||
};
|
||||
|
||||
STATIC MP_DEFINE_CONST_DICT(i2cperipheral_i2c_peripheral_request_locals_dict, i2cperipheral_i2c_peripheral_request_locals_dict_table);
|
||||
|
||||
const mp_obj_type_t i2cperipheral_i2c_peripheral_request_type = {
|
||||
{ &mp_type_type },
|
||||
.name = MP_QSTR_I2CPeripheralRequest,
|
||||
.make_new = i2cperipheral_i2c_peripheral_request_make_new,
|
||||
.locals_dict = (mp_obj_dict_t*)&i2cperipheral_i2c_peripheral_request_locals_dict,
|
||||
};
|
60
shared-bindings/i2cperipheral/I2CPeripheral 2.h
Normal file
60
shared-bindings/i2cperipheral/I2CPeripheral 2.h
Normal file
@ -0,0 +1,60 @@
|
||||
/*
|
||||
* This file is part of the MicroPython project, http://micropython.org/
|
||||
*
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2018 Noralf Trønnes
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_BUSIO_I2C_SLAVE_H
|
||||
#define MICROPY_INCLUDED_SHARED_BINDINGS_BUSIO_I2C_SLAVE_H
|
||||
|
||||
#include "py/obj.h"
|
||||
|
||||
#include "common-hal/microcontroller/Pin.h"
|
||||
#include "common-hal/i2cperipheral/I2CPeripheral.h"
|
||||
|
||||
typedef struct {
|
||||
mp_obj_base_t base;
|
||||
i2cperipheral_i2c_peripheral_obj_t *peripheral;
|
||||
uint16_t address;
|
||||
bool is_read;
|
||||
bool is_restart;
|
||||
} i2cperipheral_i2c_peripheral_request_obj_t;
|
||||
|
||||
extern const mp_obj_type_t i2cperipheral_i2c_peripheral_request_type;
|
||||
|
||||
extern const mp_obj_type_t i2cperipheral_i2c_peripheral_type;
|
||||
|
||||
extern void common_hal_i2cperipheral_i2c_peripheral_construct(i2cperipheral_i2c_peripheral_obj_t *self,
|
||||
const mcu_pin_obj_t* scl, const mcu_pin_obj_t* sda,
|
||||
uint8_t *addresses, unsigned int num_addresses, bool smbus);
|
||||
extern void common_hal_i2cperipheral_i2c_peripheral_deinit(i2cperipheral_i2c_peripheral_obj_t *self);
|
||||
extern bool common_hal_i2cperipheral_i2c_peripheral_deinited(i2cperipheral_i2c_peripheral_obj_t *self);
|
||||
|
||||
extern int common_hal_i2cperipheral_i2c_peripheral_is_addressed(i2cperipheral_i2c_peripheral_obj_t *self,
|
||||
uint8_t *address, bool *is_read, bool *is_restart);
|
||||
extern int common_hal_i2cperipheral_i2c_peripheral_read_byte(i2cperipheral_i2c_peripheral_obj_t *self, uint8_t *data);
|
||||
extern int common_hal_i2cperipheral_i2c_peripheral_write_byte(i2cperipheral_i2c_peripheral_obj_t *self, uint8_t data);
|
||||
extern void common_hal_i2cperipheral_i2c_peripheral_ack(i2cperipheral_i2c_peripheral_obj_t *self, bool ack);
|
||||
extern void common_hal_i2cperipheral_i2c_peripheral_close(i2cperipheral_i2c_peripheral_obj_t *self);
|
||||
|
||||
#endif // MICROPY_INCLUDED_SHARED_BINDINGS_BUSIO_I2C_SLAVE_H
|
106
shared-bindings/i2cperipheral/__init__ 2.c
Normal file
106
shared-bindings/i2cperipheral/__init__ 2.c
Normal file
@ -0,0 +1,106 @@
|
||||
/*
|
||||
* This file is part of the MicroPython project, http://micropython.org/
|
||||
*
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2018 Noralf Trønnes
|
||||
*
|
||||
* 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 "py/obj.h"
|
||||
#include "py/runtime.h"
|
||||
|
||||
#include "shared-bindings/microcontroller/Pin.h"
|
||||
//#include "shared-bindings/i2cperipheral/__init__.h"
|
||||
#include "shared-bindings/i2cperipheral/I2CPeripheral.h"
|
||||
|
||||
#include "py/runtime.h"
|
||||
|
||||
//| """Two wire serial protocol peripheral
|
||||
//|
|
||||
//| The `i2cperipheral` module contains classes to support an I2C peripheral.
|
||||
//|
|
||||
//| Example emulating a peripheral with 2 addresses (read and write)::
|
||||
//|
|
||||
//| import board
|
||||
//| from i2cperipheral import I2CPeripheral
|
||||
//|
|
||||
//| regs = [0] * 16
|
||||
//| index = 0
|
||||
//|
|
||||
//| with I2CPeripheral(board.SCL, board.SDA, (0x40, 0x41)) as device:
|
||||
//| while True:
|
||||
//| r = device.request()
|
||||
//| if not r:
|
||||
//| # Maybe do some housekeeping
|
||||
//| continue
|
||||
//| with r: # Closes the transfer if necessary by sending a NACK or feeding dummy bytes
|
||||
//| if r.address == 0x40:
|
||||
//| if not r.is_read: # Main write which is Selected read
|
||||
//| b = r.read(1)
|
||||
//| if not b or b[0] > 15:
|
||||
//| break
|
||||
//| index = b[0]
|
||||
//| b = r.read(1)
|
||||
//| if b:
|
||||
//| regs[index] = b[0]
|
||||
//| elif r.is_restart: # Combined transfer: This is the Main read message
|
||||
//| n = r.write(bytes([regs[index]]))
|
||||
//| #else:
|
||||
//| # A read transfer is not supported in this example
|
||||
//| # If the microcontroller tries, it will get 0xff byte(s) by the ctx manager (r.close())
|
||||
//| elif r.address == 0x41:
|
||||
//| if not r.is_read:
|
||||
//| b = r.read(1)
|
||||
//| if b and b[0] == 0xde:
|
||||
//| # do something
|
||||
//| pass
|
||||
//|
|
||||
//| This example sets up an I2C device that can be accessed from Linux like this::
|
||||
//|
|
||||
//| $ i2cget -y 1 0x40 0x01
|
||||
//| 0x00
|
||||
//| $ i2cset -y 1 0x40 0x01 0xaa
|
||||
//| $ i2cget -y 1 0x40 0x01
|
||||
//| 0xaa
|
||||
//|
|
||||
//| .. warning::
|
||||
//| I2CPeripheral makes use of clock stretching in order to slow down
|
||||
//| the host.
|
||||
//| Make sure the I2C host supports this.
|
||||
//|
|
||||
//| Raspberry Pi in particular does not support this with its I2C hw block.
|
||||
//| This can be worked around by using the ``i2c-gpio`` bit banging driver.
|
||||
//| Since the RPi firmware uses the hw i2c, it's not possible to emulate a HAT eeprom."""
|
||||
//|
|
||||
|
||||
STATIC const mp_rom_map_elem_t i2cperipheral_module_globals_table[] = {
|
||||
{ MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_i2cperipheral) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_I2CPeripheral), MP_ROM_PTR(&i2cperipheral_i2c_peripheral_type) },
|
||||
};
|
||||
|
||||
STATIC MP_DEFINE_CONST_DICT(i2cperipheral_module_globals, i2cperipheral_module_globals_table);
|
||||
|
||||
const mp_obj_module_t i2cperipheral_module = {
|
||||
.base = { &mp_type_module },
|
||||
.globals = (mp_obj_dict_t*)&i2cperipheral_module_globals,
|
||||
};
|
137
shared-bindings/memorymonitor/AllocationAlarm 2.c
Normal file
137
shared-bindings/memorymonitor/AllocationAlarm 2.c
Normal file
@ -0,0 +1,137 @@
|
||||
/*
|
||||
* This file is part of the Micro Python 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 <stdint.h>
|
||||
|
||||
#include "py/objproperty.h"
|
||||
#include "py/runtime.h"
|
||||
#include "py/runtime0.h"
|
||||
#include "shared-bindings/memorymonitor/AllocationAlarm.h"
|
||||
#include "shared-bindings/util.h"
|
||||
#include "supervisor/shared/translate.h"
|
||||
|
||||
//| class AllocationAlarm:
|
||||
//|
|
||||
//| def __init__(self, *, minimum_block_count: int = 1) -> None:
|
||||
//| """Throw an exception when an allocation of ``minimum_block_count`` or more blocks
|
||||
//| occurs while active.
|
||||
//|
|
||||
//| Track allocations::
|
||||
//|
|
||||
//| import memorymonitor
|
||||
//|
|
||||
//| aa = memorymonitor.AllocationAlarm(minimum_block_count=2)
|
||||
//| x = 2
|
||||
//| # Should not allocate any blocks.
|
||||
//| with aa:
|
||||
//| x = 5
|
||||
//|
|
||||
//| # Should throw an exception when allocating storage for the 20 bytes.
|
||||
//| with aa:
|
||||
//| x = bytearray(20)
|
||||
//|
|
||||
//| """
|
||||
//| ...
|
||||
//|
|
||||
STATIC mp_obj_t memorymonitor_allocationalarm_make_new(const mp_obj_type_t *type, size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
|
||||
enum { ARG_minimum_block_count };
|
||||
static const mp_arg_t allowed_args[] = {
|
||||
{ MP_QSTR_minimum_block_count, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = 1} },
|
||||
};
|
||||
mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)];
|
||||
mp_arg_parse_all(n_args, pos_args, kw_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args);
|
||||
mp_int_t minimum_block_count = args[ARG_minimum_block_count].u_int;
|
||||
if (minimum_block_count < 1) {
|
||||
mp_raise_ValueError_varg(translate("%q must be >= 1"), MP_QSTR_minimum_block_count);
|
||||
}
|
||||
|
||||
memorymonitor_allocationalarm_obj_t *self = m_new_obj(memorymonitor_allocationalarm_obj_t);
|
||||
self->base.type = &memorymonitor_allocationalarm_type;
|
||||
|
||||
common_hal_memorymonitor_allocationalarm_construct(self, minimum_block_count);
|
||||
|
||||
return MP_OBJ_FROM_PTR(self);
|
||||
}
|
||||
|
||||
//| def ignore(self, count: int) -> AllocationAlarm:
|
||||
//| """Sets the number of applicable allocations to ignore before raising the exception.
|
||||
//| Automatically set back to zero at context exit.
|
||||
//|
|
||||
//| Use it within a ``with`` block::
|
||||
//|
|
||||
//| # Will not alarm because the bytearray allocation will be ignored.
|
||||
//| with aa.ignore(2):
|
||||
//| x = bytearray(20)
|
||||
//| """
|
||||
//| ...
|
||||
//|
|
||||
STATIC mp_obj_t memorymonitor_allocationalarm_obj_ignore(mp_obj_t self_in, mp_obj_t count_obj) {
|
||||
mp_int_t count = mp_obj_get_int(count_obj);
|
||||
if (count < 0) {
|
||||
mp_raise_ValueError_varg(translate("%q must be >= 0"), MP_QSTR_count);
|
||||
}
|
||||
common_hal_memorymonitor_allocationalarm_set_ignore(self_in, count);
|
||||
return self_in;
|
||||
}
|
||||
MP_DEFINE_CONST_FUN_OBJ_2(memorymonitor_allocationalarm_ignore_obj, memorymonitor_allocationalarm_obj_ignore);
|
||||
|
||||
//| def __enter__(self) -> AllocationAlarm:
|
||||
//| """Enables the alarm."""
|
||||
//| ...
|
||||
//|
|
||||
STATIC mp_obj_t memorymonitor_allocationalarm_obj___enter__(mp_obj_t self_in) {
|
||||
common_hal_memorymonitor_allocationalarm_resume(self_in);
|
||||
return self_in;
|
||||
}
|
||||
MP_DEFINE_CONST_FUN_OBJ_1(memorymonitor_allocationalarm___enter___obj, memorymonitor_allocationalarm_obj___enter__);
|
||||
|
||||
//| def __exit__(self) -> None:
|
||||
//| """Automatically disables the allocation alarm when exiting a context. See
|
||||
//| :ref:`lifetime-and-contextmanagers` for more info."""
|
||||
//| ...
|
||||
//|
|
||||
STATIC mp_obj_t memorymonitor_allocationalarm_obj___exit__(size_t n_args, const mp_obj_t *args) {
|
||||
(void)n_args;
|
||||
common_hal_memorymonitor_allocationalarm_set_ignore(args[0], 0);
|
||||
common_hal_memorymonitor_allocationalarm_pause(args[0]);
|
||||
return mp_const_none;
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(memorymonitor_allocationalarm___exit___obj, 4, 4, memorymonitor_allocationalarm_obj___exit__);
|
||||
|
||||
STATIC const mp_rom_map_elem_t memorymonitor_allocationalarm_locals_dict_table[] = {
|
||||
// Methods
|
||||
{ MP_ROM_QSTR(MP_QSTR_ignore), MP_ROM_PTR(&memorymonitor_allocationalarm_ignore_obj) },
|
||||
{ MP_ROM_QSTR(MP_QSTR___enter__), MP_ROM_PTR(&memorymonitor_allocationalarm___enter___obj) },
|
||||
{ MP_ROM_QSTR(MP_QSTR___exit__), MP_ROM_PTR(&memorymonitor_allocationalarm___exit___obj) },
|
||||
};
|
||||
STATIC MP_DEFINE_CONST_DICT(memorymonitor_allocationalarm_locals_dict, memorymonitor_allocationalarm_locals_dict_table);
|
||||
|
||||
const mp_obj_type_t memorymonitor_allocationalarm_type = {
|
||||
{ &mp_type_type },
|
||||
.name = MP_QSTR_AllocationAlarm,
|
||||
.make_new = memorymonitor_allocationalarm_make_new,
|
||||
.locals_dict = (mp_obj_dict_t*)&memorymonitor_allocationalarm_locals_dict,
|
||||
};
|
39
shared-bindings/memorymonitor/AllocationAlarm 2.h
Normal file
39
shared-bindings/memorymonitor/AllocationAlarm 2.h
Normal file
@ -0,0 +1,39 @@
|
||||
/*
|
||||
* This file is part of the Micro Python 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.
|
||||
*/
|
||||
|
||||
#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_MEMORYMONITOR_ALLOCATIONALARM_H
|
||||
#define MICROPY_INCLUDED_SHARED_BINDINGS_MEMORYMONITOR_ALLOCATIONALARM_H
|
||||
|
||||
#include "shared-module/memorymonitor/AllocationAlarm.h"
|
||||
|
||||
extern const mp_obj_type_t memorymonitor_allocationalarm_type;
|
||||
|
||||
void common_hal_memorymonitor_allocationalarm_construct(memorymonitor_allocationalarm_obj_t* self, size_t minimum_block_count);
|
||||
void common_hal_memorymonitor_allocationalarm_pause(memorymonitor_allocationalarm_obj_t* self);
|
||||
void common_hal_memorymonitor_allocationalarm_resume(memorymonitor_allocationalarm_obj_t* self);
|
||||
void common_hal_memorymonitor_allocationalarm_set_ignore(memorymonitor_allocationalarm_obj_t* self, mp_int_t count);
|
||||
|
||||
#endif // MICROPY_INCLUDED_SHARED_BINDINGS_MEMORYMONITOR_ALLOCATIONALARM_H
|
183
shared-bindings/memorymonitor/AllocationSize 2.c
Normal file
183
shared-bindings/memorymonitor/AllocationSize 2.c
Normal file
@ -0,0 +1,183 @@
|
||||
/*
|
||||
* This file is part of the Micro Python 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 <stdint.h>
|
||||
|
||||
#include "py/objproperty.h"
|
||||
#include "py/runtime.h"
|
||||
#include "py/runtime0.h"
|
||||
#include "shared-bindings/memorymonitor/AllocationSize.h"
|
||||
#include "shared-bindings/util.h"
|
||||
#include "supervisor/shared/translate.h"
|
||||
|
||||
//| class AllocationSize:
|
||||
//|
|
||||
//| def __init__(self) -> None:
|
||||
//| """Tracks the number of allocations in power of two buckets.
|
||||
//|
|
||||
//| It will have 16 16-bit buckets to track allocation counts. It is total allocations
|
||||
//| meaning frees are ignored. Reallocated memory is counted twice, at allocation and when
|
||||
//| reallocated with the larger size.
|
||||
//|
|
||||
//| The buckets are measured in terms of blocks which is the finest granularity of the heap.
|
||||
//| This means bucket 0 will count all allocations less than or equal to the number of bytes
|
||||
//| per block, typically 16. Bucket 2 will be less than or equal to 4 blocks. See
|
||||
//| `bytes_per_block` to convert blocks to bytes.
|
||||
//|
|
||||
//| Multiple AllocationSizes can be used to track different code boundaries.
|
||||
//|
|
||||
//| Track allocations::
|
||||
//|
|
||||
//| import memorymonitor
|
||||
//|
|
||||
//| mm = memorymonitor.AllocationSize()
|
||||
//| with mm:
|
||||
//| print("hello world" * 3)
|
||||
//|
|
||||
//| for bucket, count in enumerate(mm):
|
||||
//| print("<", 2 ** bucket, count)
|
||||
//|
|
||||
//| """
|
||||
//| ...
|
||||
//|
|
||||
STATIC mp_obj_t memorymonitor_allocationsize_make_new(const mp_obj_type_t *type, size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
|
||||
memorymonitor_allocationsize_obj_t *self = m_new_obj(memorymonitor_allocationsize_obj_t);
|
||||
self->base.type = &memorymonitor_allocationsize_type;
|
||||
|
||||
common_hal_memorymonitor_allocationsize_construct(self);
|
||||
|
||||
return MP_OBJ_FROM_PTR(self);
|
||||
}
|
||||
|
||||
//| def __enter__(self) -> AllocationSize:
|
||||
//| """Clears counts and resumes tracking."""
|
||||
//| ...
|
||||
//|
|
||||
STATIC mp_obj_t memorymonitor_allocationsize_obj___enter__(mp_obj_t self_in) {
|
||||
common_hal_memorymonitor_allocationsize_clear(self_in);
|
||||
common_hal_memorymonitor_allocationsize_resume(self_in);
|
||||
return self_in;
|
||||
}
|
||||
MP_DEFINE_CONST_FUN_OBJ_1(memorymonitor_allocationsize___enter___obj, memorymonitor_allocationsize_obj___enter__);
|
||||
|
||||
//| def __exit__(self) -> None:
|
||||
//| """Automatically pauses allocation tracking when exiting a context. See
|
||||
//| :ref:`lifetime-and-contextmanagers` for more info."""
|
||||
//| ...
|
||||
//|
|
||||
STATIC mp_obj_t memorymonitor_allocationsize_obj___exit__(size_t n_args, const mp_obj_t *args) {
|
||||
(void)n_args;
|
||||
common_hal_memorymonitor_allocationsize_pause(args[0]);
|
||||
return mp_const_none;
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(memorymonitor_allocationsize___exit___obj, 4, 4, memorymonitor_allocationsize_obj___exit__);
|
||||
|
||||
//| bytes_per_block: int
|
||||
//| """Number of bytes per block"""
|
||||
//|
|
||||
STATIC mp_obj_t memorymonitor_allocationsize_obj_get_bytes_per_block(mp_obj_t self_in) {
|
||||
memorymonitor_allocationsize_obj_t *self = MP_OBJ_TO_PTR(self_in);
|
||||
|
||||
return MP_OBJ_NEW_SMALL_INT(common_hal_memorymonitor_allocationsize_get_bytes_per_block(self));
|
||||
}
|
||||
MP_DEFINE_CONST_FUN_OBJ_1(memorymonitor_allocationsize_get_bytes_per_block_obj, memorymonitor_allocationsize_obj_get_bytes_per_block);
|
||||
|
||||
const mp_obj_property_t memorymonitor_allocationsize_bytes_per_block_obj = {
|
||||
.base.type = &mp_type_property,
|
||||
.proxy = {(mp_obj_t)&memorymonitor_allocationsize_get_bytes_per_block_obj,
|
||||
(mp_obj_t)&mp_const_none_obj,
|
||||
(mp_obj_t)&mp_const_none_obj},
|
||||
};
|
||||
|
||||
//| def __len__(self) -> int:
|
||||
//| """Returns the number of allocation buckets.
|
||||
//|
|
||||
//| This allows you to::
|
||||
//|
|
||||
//| mm = memorymonitor.AllocationSize()
|
||||
//| print(len(mm))"""
|
||||
//| ...
|
||||
//|
|
||||
STATIC mp_obj_t memorymonitor_allocationsize_unary_op(mp_unary_op_t op, mp_obj_t self_in) {
|
||||
memorymonitor_allocationsize_obj_t *self = MP_OBJ_TO_PTR(self_in);
|
||||
uint16_t len = common_hal_memorymonitor_allocationsize_get_len(self);
|
||||
switch (op) {
|
||||
case MP_UNARY_OP_BOOL: return mp_obj_new_bool(len != 0);
|
||||
case MP_UNARY_OP_LEN: return MP_OBJ_NEW_SMALL_INT(len);
|
||||
default: return MP_OBJ_NULL; // op not supported
|
||||
}
|
||||
}
|
||||
|
||||
//| def __getitem__(self, index: int) -> Optional[int]:
|
||||
//| """Returns the allocation count for the given bucket.
|
||||
//|
|
||||
//| This allows you to::
|
||||
//|
|
||||
//| mm = memorymonitor.AllocationSize()
|
||||
//| print(mm[0])"""
|
||||
//| ...
|
||||
//|
|
||||
STATIC mp_obj_t memorymonitor_allocationsize_subscr(mp_obj_t self_in, mp_obj_t index_obj, mp_obj_t value) {
|
||||
if (value == mp_const_none) {
|
||||
// delete item
|
||||
mp_raise_AttributeError(translate("Cannot delete values"));
|
||||
} else {
|
||||
memorymonitor_allocationsize_obj_t *self = MP_OBJ_TO_PTR(self_in);
|
||||
|
||||
if (MP_OBJ_IS_TYPE(index_obj, &mp_type_slice)) {
|
||||
mp_raise_NotImplementedError(translate("Slices not supported"));
|
||||
} else {
|
||||
size_t index = mp_get_index(&memorymonitor_allocationsize_type, common_hal_memorymonitor_allocationsize_get_len(self), index_obj, false);
|
||||
if (value == MP_OBJ_SENTINEL) {
|
||||
// load
|
||||
return MP_OBJ_NEW_SMALL_INT(common_hal_memorymonitor_allocationsize_get_item(self, index));
|
||||
} else {
|
||||
mp_raise_AttributeError(translate("Read-only"));
|
||||
}
|
||||
}
|
||||
}
|
||||
return mp_const_none;
|
||||
}
|
||||
|
||||
STATIC const mp_rom_map_elem_t memorymonitor_allocationsize_locals_dict_table[] = {
|
||||
// Methods
|
||||
{ MP_ROM_QSTR(MP_QSTR___enter__), MP_ROM_PTR(&memorymonitor_allocationsize___enter___obj) },
|
||||
{ MP_ROM_QSTR(MP_QSTR___exit__), MP_ROM_PTR(&memorymonitor_allocationsize___exit___obj) },
|
||||
|
||||
// Properties
|
||||
{ MP_ROM_QSTR(MP_QSTR_bytes_per_block), MP_ROM_PTR(&memorymonitor_allocationsize_bytes_per_block_obj) },
|
||||
};
|
||||
STATIC MP_DEFINE_CONST_DICT(memorymonitor_allocationsize_locals_dict, memorymonitor_allocationsize_locals_dict_table);
|
||||
|
||||
const mp_obj_type_t memorymonitor_allocationsize_type = {
|
||||
{ &mp_type_type },
|
||||
.name = MP_QSTR_AllocationSize,
|
||||
.make_new = memorymonitor_allocationsize_make_new,
|
||||
.subscr = memorymonitor_allocationsize_subscr,
|
||||
.unary_op = memorymonitor_allocationsize_unary_op,
|
||||
.getiter = mp_obj_new_generic_iterator,
|
||||
.locals_dict = (mp_obj_dict_t*)&memorymonitor_allocationsize_locals_dict,
|
||||
};
|
42
shared-bindings/memorymonitor/AllocationSize 2.h
Normal file
42
shared-bindings/memorymonitor/AllocationSize 2.h
Normal file
@ -0,0 +1,42 @@
|
||||
/*
|
||||
* This file is part of the Micro Python 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.
|
||||
*/
|
||||
|
||||
#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_MEMORYMONITOR_ALLOCATIONSIZE_H
|
||||
#define MICROPY_INCLUDED_SHARED_BINDINGS_MEMORYMONITOR_ALLOCATIONSIZE_H
|
||||
|
||||
#include "shared-module/memorymonitor/AllocationSize.h"
|
||||
|
||||
extern const mp_obj_type_t memorymonitor_allocationsize_type;
|
||||
|
||||
extern void common_hal_memorymonitor_allocationsize_construct(memorymonitor_allocationsize_obj_t* self);
|
||||
extern void common_hal_memorymonitor_allocationsize_pause(memorymonitor_allocationsize_obj_t* self);
|
||||
extern void common_hal_memorymonitor_allocationsize_resume(memorymonitor_allocationsize_obj_t* self);
|
||||
extern void common_hal_memorymonitor_allocationsize_clear(memorymonitor_allocationsize_obj_t* self);
|
||||
extern size_t common_hal_memorymonitor_allocationsize_get_bytes_per_block(memorymonitor_allocationsize_obj_t* self);
|
||||
extern uint16_t common_hal_memorymonitor_allocationsize_get_len(memorymonitor_allocationsize_obj_t* self);
|
||||
extern uint16_t common_hal_memorymonitor_allocationsize_get_item(memorymonitor_allocationsize_obj_t* self, int16_t index);
|
||||
|
||||
#endif // MICROPY_INCLUDED_SHARED_BINDINGS_MEMORYMONITOR_ALLOCATIONSIZE_H
|
76
shared-bindings/memorymonitor/__init__ 2.c
Normal file
76
shared-bindings/memorymonitor/__init__ 2.c
Normal file
@ -0,0 +1,76 @@
|
||||
/*
|
||||
* This file is part of the MicroPython project, http://micropython.org/
|
||||
*
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2020 Scott Shawcroft
|
||||
*
|
||||
* 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 "py/obj.h"
|
||||
#include "py/runtime.h"
|
||||
|
||||
#include "shared-bindings/memorymonitor/__init__.h"
|
||||
#include "shared-bindings/memorymonitor/AllocationAlarm.h"
|
||||
#include "shared-bindings/memorymonitor/AllocationSize.h"
|
||||
|
||||
//| """Memory monitoring helpers"""
|
||||
//|
|
||||
|
||||
//| class AllocationError(Exception):
|
||||
//| """Catchall exception for allocation related errors."""
|
||||
//| ...
|
||||
MP_DEFINE_MEMORYMONITOR_EXCEPTION(AllocationError, Exception)
|
||||
|
||||
NORETURN void mp_raise_memorymonitor_AllocationError(const compressed_string_t* fmt, ...) {
|
||||
va_list argptr;
|
||||
va_start(argptr,fmt);
|
||||
mp_obj_t exception = mp_obj_new_exception_msg_vlist(&mp_type_memorymonitor_AllocationError, fmt, argptr);
|
||||
va_end(argptr);
|
||||
nlr_raise(exception);
|
||||
}
|
||||
|
||||
STATIC const mp_rom_map_elem_t memorymonitor_module_globals_table[] = {
|
||||
{ MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_memorymonitor) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_AllocationAlarm), MP_ROM_PTR(&memorymonitor_allocationalarm_type) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_AllocationSize), MP_ROM_PTR(&memorymonitor_allocationsize_type) },
|
||||
|
||||
// Errors
|
||||
{ MP_ROM_QSTR(MP_QSTR_AllocationError), MP_ROM_PTR(&mp_type_memorymonitor_AllocationError) },
|
||||
};
|
||||
|
||||
STATIC MP_DEFINE_CONST_DICT(memorymonitor_module_globals, memorymonitor_module_globals_table);
|
||||
|
||||
void memorymonitor_exception_print(const mp_print_t *print, mp_obj_t o_in, mp_print_kind_t kind) {
|
||||
mp_print_kind_t k = kind & ~PRINT_EXC_SUBCLASS;
|
||||
bool is_subclass = kind & PRINT_EXC_SUBCLASS;
|
||||
if (!is_subclass && (k == PRINT_EXC)) {
|
||||
mp_print_str(print, qstr_str(MP_OBJ_QSTR_VALUE(memorymonitor_module_globals_table[0].value)));
|
||||
mp_print_str(print, ".");
|
||||
}
|
||||
mp_obj_exception_print(print, o_in, kind);
|
||||
}
|
||||
|
||||
const mp_obj_module_t memorymonitor_module = {
|
||||
.base = { &mp_type_module },
|
||||
.globals = (mp_obj_dict_t*)&memorymonitor_module_globals,
|
||||
};
|
49
shared-bindings/memorymonitor/__init__ 2.h
Normal file
49
shared-bindings/memorymonitor/__init__ 2.h
Normal file
@ -0,0 +1,49 @@
|
||||
/*
|
||||
* This file is part of the MicroPython project, http://micropython.org/
|
||||
*
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2016 Scott Shawcroft
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_MEMORYMONITOR___INIT___H
|
||||
#define MICROPY_INCLUDED_SHARED_BINDINGS_MEMORYMONITOR___INIT___H
|
||||
|
||||
#include "py/obj.h"
|
||||
|
||||
|
||||
void memorymonitor_exception_print(const mp_print_t *print, mp_obj_t o_in, mp_print_kind_t kind);
|
||||
|
||||
#define MP_DEFINE_MEMORYMONITOR_EXCEPTION(exc_name, base_name) \
|
||||
const mp_obj_type_t mp_type_memorymonitor_ ## exc_name = { \
|
||||
{ &mp_type_type }, \
|
||||
.name = MP_QSTR_ ## exc_name, \
|
||||
.print = memorymonitor_exception_print, \
|
||||
.make_new = mp_obj_exception_make_new, \
|
||||
.attr = mp_obj_exception_attr, \
|
||||
.parent = &mp_type_ ## base_name, \
|
||||
};
|
||||
|
||||
extern const mp_obj_type_t mp_type_memorymonitor_AllocationError;
|
||||
|
||||
NORETURN void mp_raise_memorymonitor_AllocationError(const compressed_string_t* msg, ...);
|
||||
|
||||
#endif // MICROPY_INCLUDED_SHARED_BINDINGS_MEMORYMONITOR___INIT___H
|
@ -64,20 +64,29 @@
|
||||
//| pulse.send(pulses)"""
|
||||
//| ...
|
||||
//|
|
||||
STATIC mp_obj_t pulseio_pulseout_make_new(const mp_obj_type_t *type, size_t n_args, const mp_obj_t *args, mp_map_t *kw_args) {
|
||||
mp_arg_check_num(n_args, kw_args, 1, 1, false);
|
||||
mp_obj_t carrier_obj = args[0];
|
||||
STATIC mp_obj_t pulseio_pulseout_make_new(const mp_obj_type_t *type, size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
|
||||
|
||||
if (!MP_OBJ_IS_TYPE(carrier_obj, &pulseio_pwmout_type)) {
|
||||
mp_raise_TypeError_varg(translate("Expected a %q"), pulseio_pwmout_type.name);
|
||||
}
|
||||
|
||||
// create Pulse object from the given pin
|
||||
pulseio_pulseout_obj_t *self = m_new_obj(pulseio_pulseout_obj_t);
|
||||
self->base.type = &pulseio_pulseout_type;
|
||||
|
||||
common_hal_pulseio_pulseout_construct(self, (pulseio_pwmout_obj_t *)MP_OBJ_TO_PTR(carrier_obj));
|
||||
|
||||
mp_obj_t carrier_obj = pos_args[0];
|
||||
if (MP_OBJ_IS_TYPE(carrier_obj, &pulseio_pwmout_type)) {
|
||||
// Use a PWMOut Carrier
|
||||
mp_arg_check_num(n_args, kw_args, 1, 1, false);
|
||||
common_hal_pulseio_pulseout_construct(self, (pulseio_pwmout_obj_t *)MP_OBJ_TO_PTR(carrier_obj), NULL, 0, 0);
|
||||
} else {
|
||||
// Use a Pin, frequency, and duty cycle
|
||||
enum { ARG_pin, ARG_frequency};
|
||||
static const mp_arg_t allowed_args[] = {
|
||||
{ MP_QSTR_pin, MP_ARG_REQUIRED | MP_ARG_OBJ },
|
||||
{ MP_QSTR_frequency, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = 38000} },
|
||||
{ MP_QSTR_duty_cycle, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = 1<<15} },
|
||||
};
|
||||
mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)];
|
||||
mp_arg_parse_all(n_args, pos_args, kw_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args);
|
||||
const mcu_pin_obj_t* pin = validate_obj_is_free_pin(args[ARG_pin].u_obj);
|
||||
common_hal_pulseio_pulseout_construct(self, NULL, pin, args[ARG_frequency].u_int, args[ARG_frequency].u_int);
|
||||
}
|
||||
return MP_OBJ_FROM_PTR(self);
|
||||
}
|
||||
|
||||
|
@ -34,7 +34,11 @@
|
||||
extern const mp_obj_type_t pulseio_pulseout_type;
|
||||
|
||||
extern void common_hal_pulseio_pulseout_construct(pulseio_pulseout_obj_t* self,
|
||||
const pulseio_pwmout_obj_t* carrier);
|
||||
const pulseio_pwmout_obj_t* carrier,
|
||||
const mcu_pin_obj_t* pin,
|
||||
uint32_t frequency,
|
||||
uint16_t duty_cycle);
|
||||
|
||||
extern void common_hal_pulseio_pulseout_deinit(pulseio_pulseout_obj_t* self);
|
||||
extern bool common_hal_pulseio_pulseout_deinited(pulseio_pulseout_obj_t* self);
|
||||
extern void common_hal_pulseio_pulseout_send(pulseio_pulseout_obj_t* self,
|
||||
|
183
shared-bindings/sdcardio/SDCard 2.c
Normal file
183
shared-bindings/sdcardio/SDCard 2.c
Normal file
@ -0,0 +1,183 @@
|
||||
/*
|
||||
* This file is part of the Micro Python 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 "py/obj.h"
|
||||
#include "py/objproperty.h"
|
||||
#include "py/runtime.h"
|
||||
#include "py/objarray.h"
|
||||
|
||||
#include "shared-bindings/sdcardio/SDCard.h"
|
||||
#include "shared-module/sdcardio/SDCard.h"
|
||||
#include "common-hal/busio/SPI.h"
|
||||
#include "shared-bindings/busio/SPI.h"
|
||||
#include "shared-bindings/microcontroller/Pin.h"
|
||||
#include "supervisor/flash.h"
|
||||
|
||||
//| class SDCard:
|
||||
//| """SD Card Block Interface
|
||||
//|
|
||||
//| Controls an SD card over SPI. This built-in module has higher read
|
||||
//| performance than the library adafruit_sdcard, but it is only compatible with
|
||||
//| `busio.SPI`, not `bitbangio.SPI`. Usually an SDCard object is used
|
||||
//| with ``storage.VfsFat`` to allow file I/O to an SD card."""
|
||||
//|
|
||||
//| def __init__(self, bus: busio.SPI, cs: microcontroller.Pin, baudrate: int = 8000000) -> None:
|
||||
//| """Construct an SPI SD Card object with the given properties
|
||||
//|
|
||||
//| :param busio.SPI spi: The SPI bus
|
||||
//| :param microcontroller.Pin cs: The chip select connected to the card
|
||||
//| :param int baudrate: The SPI data rate to use after card setup
|
||||
//|
|
||||
//| Note that during detection and configuration, a hard-coded low baudrate is used.
|
||||
//| Data transfers use the specified baurate (rounded down to one that is supported by
|
||||
//| the microcontroller)
|
||||
//|
|
||||
//| Example usage:
|
||||
//|
|
||||
//| .. code-block:: python
|
||||
//|
|
||||
//| import os
|
||||
//|
|
||||
//| import board
|
||||
//| import sdcardio
|
||||
//| import storage
|
||||
//|
|
||||
//| sd = sdcardio.SDCard(board.SPI(), board.SD_CS)
|
||||
//| vfs = storage.VfsFat(sd)
|
||||
//| storage.mount(vfs, '/sd')
|
||||
//| os.listdir('/sd')"""
|
||||
|
||||
STATIC mp_obj_t sdcardio_sdcard_make_new(const mp_obj_type_t *type, size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
|
||||
enum { ARG_spi, ARG_cs, ARG_baudrate, ARG_sdio, NUM_ARGS };
|
||||
static const mp_arg_t allowed_args[] = {
|
||||
{ MP_QSTR_spi, MP_ARG_OBJ, {.u_obj = mp_const_none } },
|
||||
{ MP_QSTR_cs, MP_ARG_OBJ, {.u_obj = mp_const_none } },
|
||||
{ MP_QSTR_baudrate, MP_ARG_INT, {.u_int = 8000000} },
|
||||
{ MP_QSTR_sdio, MP_ARG_OBJ | MP_ARG_KW_ONLY, {.u_int = 8000000} },
|
||||
};
|
||||
MP_STATIC_ASSERT( MP_ARRAY_SIZE(allowed_args) == NUM_ARGS );
|
||||
mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)];
|
||||
mp_arg_parse_all(n_args, pos_args, kw_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args);
|
||||
|
||||
busio_spi_obj_t *spi = validate_obj_is_spi_bus(args[ARG_spi].u_obj);
|
||||
mcu_pin_obj_t *cs = validate_obj_is_free_pin(args[ARG_cs].u_obj);
|
||||
|
||||
sdcardio_sdcard_obj_t *self = m_new_obj(sdcardio_sdcard_obj_t);
|
||||
self->base.type = &sdcardio_SDCard_type;
|
||||
|
||||
common_hal_sdcardio_sdcard_construct(self, spi, cs, args[ARG_baudrate].u_int);
|
||||
|
||||
return self;
|
||||
}
|
||||
|
||||
|
||||
//| def count(self) -> int:
|
||||
//| """Returns the total number of sectors
|
||||
//|
|
||||
//| Due to technical limitations, this is a function and not a property.
|
||||
//|
|
||||
//| :return: The number of 512-byte blocks, as a number"""
|
||||
//|
|
||||
mp_obj_t sdcardio_sdcard_count(mp_obj_t self_in) {
|
||||
sdcardio_sdcard_obj_t *self = (sdcardio_sdcard_obj_t*)self_in;
|
||||
return mp_obj_new_int_from_ull(common_hal_sdcardio_sdcard_get_blockcount(self));
|
||||
}
|
||||
MP_DEFINE_CONST_FUN_OBJ_1(sdcardio_sdcard_count_obj, sdcardio_sdcard_count);
|
||||
|
||||
//| def deinit(self) -> None:
|
||||
//| """Disable permanently.
|
||||
//|
|
||||
//| :return: None"""
|
||||
//|
|
||||
mp_obj_t sdcardio_sdcard_deinit(mp_obj_t self_in) {
|
||||
sdcardio_sdcard_obj_t *self = (sdcardio_sdcard_obj_t*)self_in;
|
||||
common_hal_sdcardio_sdcard_deinit(self);
|
||||
return mp_const_none;
|
||||
}
|
||||
MP_DEFINE_CONST_FUN_OBJ_1(sdcardio_sdcard_deinit_obj, sdcardio_sdcard_deinit);
|
||||
|
||||
|
||||
//| def readblocks(self, start_block: int, buf: WriteableBuffer) -> None:
|
||||
//|
|
||||
//| """Read one or more blocks from the card
|
||||
//|
|
||||
//| :param int start_block: The block to start reading from
|
||||
//| :param ~_typing.WriteableBuffer buf: The buffer to write into. Length must be multiple of 512.
|
||||
//|
|
||||
//| :return: None"""
|
||||
//|
|
||||
|
||||
mp_obj_t sdcardio_sdcard_readblocks(mp_obj_t self_in, mp_obj_t start_block_in, mp_obj_t buf_in) {
|
||||
uint32_t start_block = mp_obj_get_int(start_block_in);
|
||||
mp_buffer_info_t bufinfo;
|
||||
mp_get_buffer_raise(buf_in, &bufinfo, MP_BUFFER_WRITE);
|
||||
sdcardio_sdcard_obj_t *self = (sdcardio_sdcard_obj_t*)self_in;
|
||||
int result = common_hal_sdcardio_sdcard_readblocks(self, start_block, &bufinfo);
|
||||
if (result < 0) {
|
||||
mp_raise_OSError(-result);
|
||||
}
|
||||
return mp_const_none;
|
||||
}
|
||||
|
||||
MP_DEFINE_CONST_FUN_OBJ_3(sdcardio_sdcard_readblocks_obj, sdcardio_sdcard_readblocks);
|
||||
|
||||
//| def writeblocks(self, start_block: int, buf: ReadableBuffer) -> None:
|
||||
//|
|
||||
//| """Write one or more blocks to the card
|
||||
//|
|
||||
//| :param int start_block: The block to start writing from
|
||||
//| :param ~_typing.ReadableBuffer buf: The buffer to read from. Length must be multiple of 512.
|
||||
//|
|
||||
//| :return: None"""
|
||||
//|
|
||||
|
||||
mp_obj_t sdcardio_sdcard_writeblocks(mp_obj_t self_in, mp_obj_t start_block_in, mp_obj_t buf_in) {
|
||||
uint32_t start_block = mp_obj_get_int(start_block_in);
|
||||
mp_buffer_info_t bufinfo;
|
||||
mp_get_buffer_raise(buf_in, &bufinfo, MP_BUFFER_READ);
|
||||
sdcardio_sdcard_obj_t *self = (sdcardio_sdcard_obj_t*)self_in;
|
||||
int result = common_hal_sdcardio_sdcard_writeblocks(self, start_block, &bufinfo);
|
||||
if (result < 0) {
|
||||
mp_raise_OSError(-result);
|
||||
}
|
||||
return mp_const_none;
|
||||
}
|
||||
MP_DEFINE_CONST_FUN_OBJ_3(sdcardio_sdcard_writeblocks_obj, sdcardio_sdcard_writeblocks);
|
||||
|
||||
STATIC const mp_rom_map_elem_t sdcardio_sdcard_locals_dict_table[] = {
|
||||
{ MP_ROM_QSTR(MP_QSTR_count), MP_ROM_PTR(&sdcardio_sdcard_count_obj) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&sdcardio_sdcard_deinit_obj) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_readblocks), MP_ROM_PTR(&sdcardio_sdcard_readblocks_obj) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_writeblocks), MP_ROM_PTR(&sdcardio_sdcard_writeblocks_obj) },
|
||||
};
|
||||
STATIC MP_DEFINE_CONST_DICT(sdcardio_sdcard_locals_dict, sdcardio_sdcard_locals_dict_table);
|
||||
|
||||
const mp_obj_type_t sdcardio_SDCard_type = {
|
||||
{ &mp_type_type },
|
||||
.name = MP_QSTR_SDCard,
|
||||
.make_new = sdcardio_sdcard_make_new,
|
||||
.locals_dict = (mp_obj_dict_t*)&sdcardio_sdcard_locals_dict,
|
||||
};
|
30
shared-bindings/sdcardio/SDCard 2.h
Normal file
30
shared-bindings/sdcardio/SDCard 2.h
Normal file
@ -0,0 +1,30 @@
|
||||
/*
|
||||
* This file is part of the Micro Python project, http://micropython.org/
|
||||
*
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2017, 2018 Scott Shawcroft for Adafruit Industries
|
||||
* 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
|
||||
|
||||
extern const mp_obj_type_t sdcardio_SDCard_type;
|
47
shared-bindings/sdcardio/__init__ 2.c
Normal file
47
shared-bindings/sdcardio/__init__ 2.c
Normal file
@ -0,0 +1,47 @@
|
||||
/*
|
||||
* 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 "py/obj.h"
|
||||
#include "py/runtime.h"
|
||||
|
||||
#include "shared-bindings/sdcardio/SDCard.h"
|
||||
|
||||
//| """Interface to an SD card via the SPI bus"""
|
||||
|
||||
STATIC const mp_rom_map_elem_t sdcardio_module_globals_table[] = {
|
||||
{ MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_sdcardio) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_SDCard), MP_ROM_PTR(&sdcardio_SDCard_type) },
|
||||
};
|
||||
|
||||
STATIC MP_DEFINE_CONST_DICT(sdcardio_module_globals, sdcardio_module_globals_table);
|
||||
|
||||
const mp_obj_module_t sdcardio_module = {
|
||||
.base = { &mp_type_module },
|
||||
.globals = (mp_obj_dict_t*)&sdcardio_module_globals,
|
||||
};
|
0
shared-bindings/sdcardio/__init__ 2.h
Normal file
0
shared-bindings/sdcardio/__init__ 2.h
Normal file
296
shared-bindings/sdioio/SDCard 2.c
Normal file
296
shared-bindings/sdioio/SDCard 2.c
Normal file
@ -0,0 +1,296 @@
|
||||
/*
|
||||
* This file is part of the MicroPython project, http://micropython.org/
|
||||
*
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2016 Scott Shawcroft
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
// This file contains all of the Python API definitions for the
|
||||
// sdioio.SDCard class.
|
||||
|
||||
#include <string.h>
|
||||
|
||||
#include "shared-bindings/microcontroller/Pin.h"
|
||||
#include "shared-bindings/sdioio/SDCard.h"
|
||||
#include "shared-bindings/util.h"
|
||||
|
||||
#include "lib/utils/buffer_helper.h"
|
||||
#include "lib/utils/context_manager_helpers.h"
|
||||
#include "py/mperrno.h"
|
||||
#include "py/objproperty.h"
|
||||
#include "py/runtime.h"
|
||||
#include "supervisor/shared/translate.h"
|
||||
|
||||
//| class SDCard:
|
||||
//| """SD Card Block Interface with SDIO
|
||||
//|
|
||||
//| Controls an SD card over SDIO. SDIO is a parallel protocol designed
|
||||
//| for SD cards. It uses a clock pin, a command pin, and 1 or 4
|
||||
//| data pins. It can be operated at a high frequency such as
|
||||
//| 25MHz. Usually an SDCard object is used with ``storage.VfsFat``
|
||||
//| to allow file I/O to an SD card."""
|
||||
//|
|
||||
//| def __init__(self, clock: microcontroller.Pin, command: microcontroller.Pin, data: Sequence[microcontroller.Pin], frequency: int) -> None:
|
||||
//| """Construct an SDIO SD Card object with the given properties
|
||||
//|
|
||||
//| :param ~microcontroller.Pin clock: the pin to use for the clock.
|
||||
//| :param ~microcontroller.Pin command: the pin to use for the command.
|
||||
//| :param data: A sequence of pins to use for data.
|
||||
//| :param frequency: The frequency of the bus in Hz
|
||||
//|
|
||||
//| Example usage:
|
||||
//|
|
||||
//| .. code-block:: python
|
||||
//|
|
||||
//| import os
|
||||
//|
|
||||
//| import board
|
||||
//| import sdioio
|
||||
//| import storage
|
||||
//|
|
||||
//| sd = sdioio.SDCard(
|
||||
//| clock=board.SDIO_CLOCK,
|
||||
//| command=board.SDIO_COMMAND,
|
||||
//| data=board.SDIO_DATA,
|
||||
//| frequency=25000000)
|
||||
//| vfs = storage.VfsFat(sd)
|
||||
//| storage.mount(vfs, '/sd')
|
||||
//| os.listdir('/sd')"""
|
||||
//| ...
|
||||
//|
|
||||
|
||||
STATIC mp_obj_t sdioio_sdcard_make_new(const mp_obj_type_t *type, size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
|
||||
sdioio_sdcard_obj_t *self = m_new_obj(sdioio_sdcard_obj_t);
|
||||
self->base.type = &sdioio_SDCard_type;
|
||||
enum { ARG_clock, ARG_command, ARG_data, ARG_frequency, NUM_ARGS };
|
||||
static const mp_arg_t allowed_args[] = {
|
||||
{ MP_QSTR_clock, MP_ARG_REQUIRED | MP_ARG_KW_ONLY | MP_ARG_OBJ },
|
||||
{ MP_QSTR_command, MP_ARG_REQUIRED | MP_ARG_KW_ONLY | MP_ARG_OBJ },
|
||||
{ MP_QSTR_data, MP_ARG_REQUIRED | MP_ARG_KW_ONLY | MP_ARG_OBJ },
|
||||
{ MP_QSTR_frequency, MP_ARG_REQUIRED | MP_ARG_KW_ONLY | MP_ARG_INT },
|
||||
};
|
||||
MP_STATIC_ASSERT( MP_ARRAY_SIZE(allowed_args) == NUM_ARGS );
|
||||
mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)];
|
||||
|
||||
mp_arg_parse_all(n_args, pos_args, kw_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args);
|
||||
|
||||
const mcu_pin_obj_t* clock = validate_obj_is_free_pin(args[ARG_clock].u_obj);
|
||||
const mcu_pin_obj_t* command = validate_obj_is_free_pin(args[ARG_command].u_obj);
|
||||
mcu_pin_obj_t *data_pins[4];
|
||||
uint8_t num_data;
|
||||
validate_list_is_free_pins(MP_QSTR_data, data_pins, MP_ARRAY_SIZE(data_pins), args[ARG_data].u_obj, &num_data);
|
||||
|
||||
common_hal_sdioio_sdcard_construct(self, clock, command, num_data, data_pins, args[ARG_frequency].u_int);
|
||||
return MP_OBJ_FROM_PTR(self);
|
||||
}
|
||||
|
||||
STATIC void check_for_deinit(sdioio_sdcard_obj_t *self) {
|
||||
if (common_hal_sdioio_sdcard_deinited(self)) {
|
||||
raise_deinited_error();
|
||||
}
|
||||
}
|
||||
|
||||
//| def configure(self, frequency: int = 0, width: int = 0) -> None:
|
||||
//| """Configures the SDIO bus.
|
||||
//|
|
||||
//| :param int frequency: the desired clock rate in Hertz. The actual clock rate may be higher or lower due to the granularity of available clock settings. Check the `frequency` attribute for the actual clock rate.
|
||||
//| :param int width: the number of data lines to use. Must be 1 or 4 and must also not exceed the number of data lines at construction
|
||||
//|
|
||||
//| .. note:: Leaving a value unspecified or 0 means the current setting is kept"""
|
||||
//|
|
||||
STATIC mp_obj_t sdioio_sdcard_configure(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
|
||||
enum { ARG_frequency, ARG_width, NUM_ARGS };
|
||||
static const mp_arg_t allowed_args[] = {
|
||||
{ MP_QSTR_frequency, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = 0} },
|
||||
{ MP_QSTR_width, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = 0} },
|
||||
};
|
||||
sdioio_sdcard_obj_t *self = MP_OBJ_TO_PTR(pos_args[0]);
|
||||
check_for_deinit(self);
|
||||
mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)];
|
||||
MP_STATIC_ASSERT( MP_ARRAY_SIZE(allowed_args) == NUM_ARGS );
|
||||
mp_arg_parse_all(n_args - 1, pos_args + 1, kw_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args);
|
||||
|
||||
mp_int_t frequency = args[ARG_frequency].u_int;
|
||||
if (frequency < 0) {
|
||||
mp_raise_ValueError_varg(translate("Invalid %q"), MP_QSTR_baudrate);
|
||||
}
|
||||
|
||||
uint8_t width = args[ARG_width].u_int;
|
||||
if (width != 0 && width != 1 && width != 4) {
|
||||
mp_raise_ValueError_varg(translate("Invalid %q"), MP_QSTR_width);
|
||||
}
|
||||
|
||||
if (!common_hal_sdioio_sdcard_configure(self, frequency, width)) {
|
||||
mp_raise_OSError(MP_EIO);
|
||||
}
|
||||
return mp_const_none;
|
||||
}
|
||||
MP_DEFINE_CONST_FUN_OBJ_KW(sdioio_sdcard_configure_obj, 1, sdioio_sdcard_configure);
|
||||
|
||||
//| def count(self) -> int:
|
||||
//| """Returns the total number of sectors
|
||||
//|
|
||||
//| Due to technical limitations, this is a function and not a property.
|
||||
//|
|
||||
//| :return: The number of 512-byte blocks, as a number"""
|
||||
//|
|
||||
STATIC mp_obj_t sdioio_sdcard_count(mp_obj_t self_in) {
|
||||
sdioio_sdcard_obj_t *self = MP_OBJ_TO_PTR(self_in);
|
||||
check_for_deinit(self);
|
||||
return MP_OBJ_NEW_SMALL_INT(common_hal_sdioio_sdcard_get_count(self));
|
||||
}
|
||||
MP_DEFINE_CONST_FUN_OBJ_1(sdioio_sdcard_count_obj, sdioio_sdcard_count);
|
||||
|
||||
//| def readblocks(self, start_block: int, buf: WriteableBuffer) -> None:
|
||||
//|
|
||||
//| """Read one or more blocks from the card
|
||||
//|
|
||||
//| :param int start_block: The block to start reading from
|
||||
//| :param ~_typing.WriteableBuffer buf: The buffer to write into. Length must be multiple of 512.
|
||||
//|
|
||||
//| :return: None"""
|
||||
mp_obj_t sdioio_sdcard_readblocks(mp_obj_t self_in, mp_obj_t start_block_in, mp_obj_t buf_in) {
|
||||
uint32_t start_block = mp_obj_get_int(start_block_in);
|
||||
mp_buffer_info_t bufinfo;
|
||||
mp_get_buffer_raise(buf_in, &bufinfo, MP_BUFFER_WRITE);
|
||||
sdioio_sdcard_obj_t *self = (sdioio_sdcard_obj_t*)self_in;
|
||||
int result = common_hal_sdioio_sdcard_readblocks(self, start_block, &bufinfo);
|
||||
if (result < 0) {
|
||||
mp_raise_OSError(-result);
|
||||
}
|
||||
return mp_const_none;
|
||||
}
|
||||
|
||||
MP_DEFINE_CONST_FUN_OBJ_3(sdioio_sdcard_readblocks_obj, sdioio_sdcard_readblocks);
|
||||
|
||||
//| def writeblocks(self, start_block: int, buf: ReadableBuffer) -> None:
|
||||
//|
|
||||
//| """Write one or more blocks to the card
|
||||
//|
|
||||
//| :param int start_block: The block to start writing from
|
||||
//| :param ~_typing.ReadableBuffer buf: The buffer to read from. Length must be multiple of 512.
|
||||
//|
|
||||
//| :return: None"""
|
||||
//|
|
||||
mp_obj_t sdioio_sdcard_writeblocks(mp_obj_t self_in, mp_obj_t start_block_in, mp_obj_t buf_in) {
|
||||
uint32_t start_block = mp_obj_get_int(start_block_in);
|
||||
mp_buffer_info_t bufinfo;
|
||||
mp_get_buffer_raise(buf_in, &bufinfo, MP_BUFFER_READ);
|
||||
sdioio_sdcard_obj_t *self = (sdioio_sdcard_obj_t*)self_in;
|
||||
int result = common_hal_sdioio_sdcard_writeblocks(self, start_block, &bufinfo);
|
||||
if (result < 0) {
|
||||
mp_raise_OSError(-result);
|
||||
}
|
||||
return mp_const_none;
|
||||
}
|
||||
|
||||
MP_DEFINE_CONST_FUN_OBJ_3(sdioio_sdcard_writeblocks_obj, sdioio_sdcard_writeblocks);
|
||||
|
||||
//| @property
|
||||
//| def frequency(self) -> int:
|
||||
//| """The actual SDIO bus frequency. This may not match the frequency
|
||||
//| requested due to internal limitations."""
|
||||
//| ...
|
||||
//|
|
||||
STATIC mp_obj_t sdioio_sdcard_obj_get_frequency(mp_obj_t self_in) {
|
||||
sdioio_sdcard_obj_t *self = MP_OBJ_TO_PTR(self_in);
|
||||
check_for_deinit(self);
|
||||
return MP_OBJ_NEW_SMALL_INT(common_hal_sdioio_sdcard_get_frequency(self));
|
||||
}
|
||||
MP_DEFINE_CONST_FUN_OBJ_1(sdioio_sdcard_get_frequency_obj, sdioio_sdcard_obj_get_frequency);
|
||||
|
||||
const mp_obj_property_t sdioio_sdcard_frequency_obj = {
|
||||
.base.type = &mp_type_property,
|
||||
.proxy = {(mp_obj_t)&sdioio_sdcard_get_frequency_obj,
|
||||
(mp_obj_t)&mp_const_none_obj,
|
||||
(mp_obj_t)&mp_const_none_obj},
|
||||
};
|
||||
|
||||
//| @property
|
||||
//| def width(self) -> int:
|
||||
//| """The actual SDIO bus width, in bits"""
|
||||
//| ...
|
||||
//|
|
||||
STATIC mp_obj_t sdioio_sdcard_obj_get_width(mp_obj_t self_in) {
|
||||
sdioio_sdcard_obj_t *self = MP_OBJ_TO_PTR(self_in);
|
||||
check_for_deinit(self);
|
||||
return MP_OBJ_NEW_SMALL_INT(common_hal_sdioio_sdcard_get_width(self));
|
||||
}
|
||||
MP_DEFINE_CONST_FUN_OBJ_1(sdioio_sdcard_get_width_obj, sdioio_sdcard_obj_get_width);
|
||||
|
||||
const mp_obj_property_t sdioio_sdcard_width_obj = {
|
||||
.base.type = &mp_type_property,
|
||||
.proxy = {(mp_obj_t)&sdioio_sdcard_get_width_obj,
|
||||
(mp_obj_t)&mp_const_none_obj,
|
||||
(mp_obj_t)&mp_const_none_obj},
|
||||
};
|
||||
|
||||
//| def deinit(self) -> None:
|
||||
//| """Disable permanently.
|
||||
//|
|
||||
//| :return: None"""
|
||||
STATIC mp_obj_t sdioio_sdcard_obj_deinit(mp_obj_t self_in) {
|
||||
sdioio_sdcard_obj_t *self = MP_OBJ_TO_PTR(self_in);
|
||||
common_hal_sdioio_sdcard_deinit(self);
|
||||
return mp_const_none;
|
||||
}
|
||||
MP_DEFINE_CONST_FUN_OBJ_1(sdioio_sdcard_deinit_obj, sdioio_sdcard_obj_deinit);
|
||||
|
||||
//| def __enter__(self) -> SDCard:
|
||||
//| """No-op used by Context Managers.
|
||||
//| Provided by context manager helper."""
|
||||
//| ...
|
||||
//|
|
||||
|
||||
//| def __exit__(self) -> None:
|
||||
//| """Automatically deinitializes the hardware when exiting a context. See
|
||||
//| :ref:`lifetime-and-contextmanagers` for more info."""
|
||||
//| ...
|
||||
//|
|
||||
STATIC mp_obj_t sdioio_sdcard_obj___exit__(size_t n_args, const mp_obj_t *args) {
|
||||
(void)n_args;
|
||||
common_hal_sdioio_sdcard_deinit(args[0]);
|
||||
return mp_const_none;
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(sdioio_sdcard_obj___exit___obj, 4, 4, sdioio_sdcard_obj___exit__);
|
||||
|
||||
STATIC const mp_rom_map_elem_t sdioio_sdcard_locals_dict_table[] = {
|
||||
{ MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&sdioio_sdcard_deinit_obj) },
|
||||
{ MP_ROM_QSTR(MP_QSTR___enter__), MP_ROM_PTR(&default___enter___obj) },
|
||||
{ MP_ROM_QSTR(MP_QSTR___exit__), MP_ROM_PTR(&sdioio_sdcard_obj___exit___obj) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_configure), MP_ROM_PTR(&sdioio_sdcard_configure_obj) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_frequency), MP_ROM_PTR(&sdioio_sdcard_frequency_obj) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_width), MP_ROM_PTR(&sdioio_sdcard_width_obj) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_count), MP_ROM_PTR(&sdioio_sdcard_count_obj) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_readblocks), MP_ROM_PTR(&sdioio_sdcard_readblocks_obj) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_writeblocks), MP_ROM_PTR(&sdioio_sdcard_writeblocks_obj) },
|
||||
};
|
||||
STATIC MP_DEFINE_CONST_DICT(sdioio_sdcard_locals_dict, sdioio_sdcard_locals_dict_table);
|
||||
|
||||
const mp_obj_type_t sdioio_SDCard_type = {
|
||||
{ &mp_type_type },
|
||||
.name = MP_QSTR_SDCard,
|
||||
.make_new = sdioio_sdcard_make_new,
|
||||
.locals_dict = (mp_obj_dict_t*)&sdioio_sdcard_locals_dict,
|
||||
};
|
66
shared-bindings/sdioio/SDCard 2.h
Normal file
66
shared-bindings/sdioio/SDCard 2.h
Normal file
@ -0,0 +1,66 @@
|
||||
/*
|
||||
* This file is part of the MicroPython project, http://micropython.org/
|
||||
*
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2016 Scott Shawcroft
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_BUSIO_SDIO_H
|
||||
#define MICROPY_INCLUDED_SHARED_BINDINGS_BUSIO_SDIO_H
|
||||
|
||||
#include "py/obj.h"
|
||||
|
||||
#include "common-hal/microcontroller/Pin.h"
|
||||
#include "common-hal/sdioio/SDCard.h"
|
||||
|
||||
// Type object used in Python. Should be shared between ports.
|
||||
extern const mp_obj_type_t sdioio_SDCard_type;
|
||||
|
||||
// Construct an underlying SDIO object.
|
||||
extern void common_hal_sdioio_sdcard_construct(sdioio_sdcard_obj_t *self,
|
||||
const mcu_pin_obj_t * clock, const mcu_pin_obj_t * command,
|
||||
uint8_t num_data, mcu_pin_obj_t ** data, uint32_t frequency);
|
||||
|
||||
extern void common_hal_sdioio_sdcard_deinit(sdioio_sdcard_obj_t *self);
|
||||
extern bool common_hal_sdioio_sdcard_deinited(sdioio_sdcard_obj_t *self);
|
||||
|
||||
extern bool common_hal_sdioio_sdcard_configure(sdioio_sdcard_obj_t *self, uint32_t baudrate, uint8_t width);
|
||||
|
||||
extern void common_hal_sdioio_sdcard_unlock(sdioio_sdcard_obj_t *self);
|
||||
|
||||
// Return actual SDIO bus frequency.
|
||||
uint32_t common_hal_sdioio_sdcard_get_frequency(sdioio_sdcard_obj_t* self);
|
||||
|
||||
// Return SDIO bus width.
|
||||
uint8_t common_hal_sdioio_sdcard_get_width(sdioio_sdcard_obj_t* self);
|
||||
|
||||
// Return number of device blocks
|
||||
uint32_t common_hal_sdioio_sdcard_get_count(sdioio_sdcard_obj_t* self);
|
||||
|
||||
// Read or write blocks
|
||||
int common_hal_sdioio_sdcard_readblocks(sdioio_sdcard_obj_t* self, uint32_t start_block, mp_buffer_info_t *bufinfo);
|
||||
int common_hal_sdioio_sdcard_writeblocks(sdioio_sdcard_obj_t* self, uint32_t start_block, mp_buffer_info_t *bufinfo);
|
||||
|
||||
// This is used by the supervisor to claim SDIO devices indefinitely.
|
||||
extern void common_hal_sdioio_sdcard_never_reset(sdioio_sdcard_obj_t *self);
|
||||
|
||||
#endif // MICROPY_INCLUDED_SHARED_BINDINGS_BUSIO_SDIO_H
|
47
shared-bindings/sdioio/__init__ 2.c
Normal file
47
shared-bindings/sdioio/__init__ 2.c
Normal file
@ -0,0 +1,47 @@
|
||||
/*
|
||||
* 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 "py/obj.h"
|
||||
#include "py/runtime.h"
|
||||
|
||||
#include "shared-bindings/sdioio/SDCard.h"
|
||||
|
||||
//| """Interface to an SD card via the SDIO bus"""
|
||||
|
||||
STATIC const mp_rom_map_elem_t sdioio_module_globals_table[] = {
|
||||
{ MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_sdio) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_SDCard), MP_ROM_PTR(&sdioio_SDCard_type) },
|
||||
};
|
||||
|
||||
STATIC MP_DEFINE_CONST_DICT(sdioio_module_globals, sdioio_module_globals_table);
|
||||
|
||||
const mp_obj_module_t sdioio_module = {
|
||||
.base = { &mp_type_module },
|
||||
.globals = (mp_obj_dict_t*)&sdioio_module_globals,
|
||||
};
|
0
shared-bindings/sdioio/__init__ 2.h
Normal file
0
shared-bindings/sdioio/__init__ 2.h
Normal file
@ -132,6 +132,18 @@ void common_hal__pixelbuf_pixelbuf_set_brightness(mp_obj_t self_in, mp_float_t b
|
||||
}
|
||||
}
|
||||
|
||||
uint8_t _pixelbuf_get_as_uint8(mp_obj_t obj) {
|
||||
if (MP_OBJ_IS_SMALL_INT(obj)) {
|
||||
return MP_OBJ_SMALL_INT_VALUE(obj);
|
||||
} else if (MP_OBJ_IS_INT(obj)) {
|
||||
return mp_obj_get_int_truncated(obj);
|
||||
} else if (mp_obj_is_float(obj)) {
|
||||
return (uint8_t)mp_obj_get_float(obj);
|
||||
}
|
||||
mp_raise_TypeError_varg(
|
||||
translate("can't convert %q to %q"), mp_obj_get_type_qstr(obj), MP_QSTR_int);
|
||||
}
|
||||
|
||||
void _pixelbuf_parse_color(pixelbuf_pixelbuf_obj_t* self, mp_obj_t color, uint8_t* r, uint8_t* g, uint8_t* b, uint8_t* w) {
|
||||
pixelbuf_byteorder_details_t *byteorder = &self->byteorder;
|
||||
// w is shared between white in NeoPixels and brightness in dotstars (so that DotStars can have
|
||||
@ -142,8 +154,8 @@ void _pixelbuf_parse_color(pixelbuf_pixelbuf_obj_t* self, mp_obj_t color, uint8_
|
||||
*w = 0;
|
||||
}
|
||||
|
||||
if (MP_OBJ_IS_INT(color)) {
|
||||
mp_int_t value = mp_obj_get_int_truncated(color);
|
||||
if (MP_OBJ_IS_INT(color) || mp_obj_is_float(color)) {
|
||||
mp_int_t value = MP_OBJ_IS_INT(color) ? mp_obj_get_int_truncated(color) : mp_obj_get_float(color);
|
||||
*r = value >> 16 & 0xff;
|
||||
*g = (value >> 8) & 0xff;
|
||||
*b = value & 0xff;
|
||||
@ -155,9 +167,9 @@ void _pixelbuf_parse_color(pixelbuf_pixelbuf_obj_t* self, mp_obj_t color, uint8_
|
||||
mp_raise_ValueError_varg(translate("Expected tuple of length %d, got %d"), byteorder->bpp, len);
|
||||
}
|
||||
|
||||
*r = mp_obj_get_int_truncated(items[PIXEL_R]);
|
||||
*g = mp_obj_get_int_truncated(items[PIXEL_G]);
|
||||
*b = mp_obj_get_int_truncated(items[PIXEL_B]);
|
||||
*r = _pixelbuf_get_as_uint8(items[PIXEL_R]);
|
||||
*g = _pixelbuf_get_as_uint8(items[PIXEL_G]);
|
||||
*b = _pixelbuf_get_as_uint8(items[PIXEL_B]);
|
||||
if (len > 3) {
|
||||
if (mp_obj_is_float(items[PIXEL_W])) {
|
||||
*w = 255 * mp_obj_get_float(items[PIXEL_W]);
|
||||
@ -218,17 +230,35 @@ void _pixelbuf_set_pixel(pixelbuf_pixelbuf_obj_t* self, size_t index, mp_obj_t v
|
||||
_pixelbuf_set_pixel_color(self, index, r, g, b, w);
|
||||
}
|
||||
|
||||
void common_hal__pixelbuf_pixelbuf_set_pixels(mp_obj_t self_in, size_t start, mp_int_t step, size_t slice_len, mp_obj_t* values) {
|
||||
void common_hal__pixelbuf_pixelbuf_set_pixels(mp_obj_t self_in, size_t start, mp_int_t step, size_t slice_len, mp_obj_t* values,
|
||||
mp_obj_tuple_t *flatten_to)
|
||||
{
|
||||
pixelbuf_pixelbuf_obj_t* self = native_pixelbuf(self_in);
|
||||
for (size_t i = 0; i < slice_len; i++) {
|
||||
_pixelbuf_set_pixel(self, start, values[i]);
|
||||
start+=step;
|
||||
mp_obj_iter_buf_t iter_buf;
|
||||
mp_obj_t iterable = mp_getiter(values, &iter_buf);
|
||||
mp_obj_t item;
|
||||
size_t i = 0;
|
||||
bool flattened = flatten_to != mp_const_none;
|
||||
if (flattened) flatten_to->len = self->bytes_per_pixel;
|
||||
while ((item = mp_iternext(iterable)) != MP_OBJ_STOP_ITERATION) {
|
||||
if (flattened) {
|
||||
flatten_to->items[i % self->bytes_per_pixel] = item;
|
||||
if (++i % self->bytes_per_pixel == 0) {
|
||||
_pixelbuf_set_pixel(self, start, flatten_to);
|
||||
start+=step;
|
||||
}
|
||||
} else {
|
||||
_pixelbuf_set_pixel(self, start, item);
|
||||
start+=step;
|
||||
}
|
||||
}
|
||||
if (self->auto_write) {
|
||||
common_hal__pixelbuf_pixelbuf_show(self_in);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void common_hal__pixelbuf_pixelbuf_set_pixel(mp_obj_t self_in, size_t index, mp_obj_t value) {
|
||||
pixelbuf_pixelbuf_obj_t* self = native_pixelbuf(self_in);
|
||||
_pixelbuf_set_pixel(self, index, value);
|
||||
|
@ -39,6 +39,11 @@
|
||||
#include "shared-module/displayio/__init__.h"
|
||||
#endif
|
||||
|
||||
#if CIRCUITPY_SHARPDISPLAY
|
||||
#include "shared-bindings/sharpdisplay/SharpMemoryFramebuffer.h"
|
||||
#include "shared-module/sharpdisplay/SharpMemoryFramebuffer.h"
|
||||
#endif
|
||||
|
||||
#if BOARD_I2C
|
||||
// Statically allocate the I2C object so it can live past the end of the heap and into the next VM.
|
||||
// That way it can be used by built-in I2CDisplay displays and be accessible through board.I2C().
|
||||
@ -148,10 +153,17 @@ void reset_board_busses(void) {
|
||||
bool display_using_spi = false;
|
||||
#if CIRCUITPY_DISPLAYIO
|
||||
for (uint8_t i = 0; i < CIRCUITPY_DISPLAY_LIMIT; i++) {
|
||||
if (displays[i].fourwire_bus.bus == spi_singleton) {
|
||||
mp_const_obj_t bus_type = displays[i].bus_base.type;
|
||||
if (bus_type == &displayio_fourwire_type && displays[i].fourwire_bus.bus == spi_singleton) {
|
||||
display_using_spi = true;
|
||||
break;
|
||||
}
|
||||
#if CIRCUITPY_SHARPDISPLAY
|
||||
if (displays[i].bus_base.type == &sharpdisplay_framebuffer_type && displays[i].sharpdisplay.bus == spi_singleton) {
|
||||
display_using_spi = true;
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
if (!display_using_spi) {
|
||||
|
@ -129,7 +129,6 @@ void common_hal_displayio_bitmap_blit(displayio_bitmap_t *self, int16_t x, int16
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void common_hal_displayio_bitmap_set_pixel(displayio_bitmap_t *self, int16_t x, int16_t y, uint32_t value) {
|
||||
|
@ -26,7 +26,7 @@
|
||||
|
||||
primary_display_t displays[CIRCUITPY_DISPLAY_LIMIT];
|
||||
|
||||
#if CIRCUITPY_RGBMATRIX || CIRCUITPY_SHARPDISPLAY
|
||||
#if CIRCUITPY_RGBMATRIX
|
||||
STATIC bool any_display_uses_this_framebuffer(mp_obj_base_t *obj) {
|
||||
for (uint8_t i = 0; i < CIRCUITPY_DISPLAY_LIMIT; i++) {
|
||||
if (displays[i].display_base.type == &framebufferio_framebufferdisplay_type) {
|
||||
@ -186,11 +186,7 @@ void reset_displays(void) {
|
||||
#if CIRCUITPY_SHARPDISPLAY
|
||||
} else if (displays[i].bus_base.type == &sharpdisplay_framebuffer_type) {
|
||||
sharpdisplay_framebuffer_obj_t * sharp = &displays[i].sharpdisplay;
|
||||
if(any_display_uses_this_framebuffer(&sharp->base)) {
|
||||
common_hal_sharpdisplay_framebuffer_reset(sharp);
|
||||
} else {
|
||||
common_hal_sharpdisplay_framebuffer_deinit(sharp);
|
||||
}
|
||||
common_hal_sharpdisplay_framebuffer_reset(sharp);
|
||||
#endif
|
||||
} else {
|
||||
// Not an active display bus.
|
||||
@ -398,8 +394,8 @@ primary_display_t *allocate_display_or_raise(void) {
|
||||
}
|
||||
primary_display_t *allocate_display_bus(void) {
|
||||
for (uint8_t i = 0; i < CIRCUITPY_DISPLAY_LIMIT; i++) {
|
||||
mp_const_obj_t display_type = displays[i].display.base.type;
|
||||
if (display_type == NULL || display_type == &mp_type_NoneType) {
|
||||
mp_const_obj_t display_bus_type = displays[i].bus_base.type;
|
||||
if (display_bus_type == NULL || display_bus_type == &mp_type_NoneType) {
|
||||
return &displays[i];
|
||||
}
|
||||
}
|
||||
|
94
shared-module/memorymonitor/AllocationAlarm 2.c
Normal file
94
shared-module/memorymonitor/AllocationAlarm 2.c
Normal file
@ -0,0 +1,94 @@
|
||||
/*
|
||||
* This file is part of the Micro Python 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 "shared-bindings/memorymonitor/__init__.h"
|
||||
#include "shared-bindings/memorymonitor/AllocationAlarm.h"
|
||||
|
||||
#include "py/gc.h"
|
||||
#include "py/mpstate.h"
|
||||
#include "py/runtime.h"
|
||||
|
||||
void common_hal_memorymonitor_allocationalarm_construct(memorymonitor_allocationalarm_obj_t* self, size_t minimum_block_count) {
|
||||
self->minimum_block_count = minimum_block_count;
|
||||
self->next = NULL;
|
||||
self->previous = NULL;
|
||||
}
|
||||
|
||||
void common_hal_memorymonitor_allocationalarm_set_ignore(memorymonitor_allocationalarm_obj_t* self, mp_int_t count) {
|
||||
self->count = count;
|
||||
}
|
||||
|
||||
void common_hal_memorymonitor_allocationalarm_pause(memorymonitor_allocationalarm_obj_t* self) {
|
||||
// Check to make sure we aren't already paused. We can be if we're exiting from an exception we
|
||||
// caused.
|
||||
if (self->previous == NULL) {
|
||||
return;
|
||||
}
|
||||
*self->previous = self->next;
|
||||
self->next = NULL;
|
||||
self->previous = NULL;
|
||||
}
|
||||
|
||||
void common_hal_memorymonitor_allocationalarm_resume(memorymonitor_allocationalarm_obj_t* self) {
|
||||
if (self->previous != NULL) {
|
||||
mp_raise_RuntimeError(translate("Already running"));
|
||||
}
|
||||
self->next = MP_STATE_VM(active_allocationalarms);
|
||||
self->previous = (memorymonitor_allocationalarm_obj_t**) &MP_STATE_VM(active_allocationalarms);
|
||||
if (self->next != NULL) {
|
||||
self->next->previous = &self->next;
|
||||
}
|
||||
MP_STATE_VM(active_allocationalarms) = self;
|
||||
}
|
||||
|
||||
void memorymonitor_allocationalarms_allocation(size_t block_count) {
|
||||
memorymonitor_allocationalarm_obj_t* alarm = MP_OBJ_TO_PTR(MP_STATE_VM(active_allocationalarms));
|
||||
size_t alert_count = 0;
|
||||
while (alarm != NULL) {
|
||||
// Hold onto next in case we remove the alarm from the list.
|
||||
memorymonitor_allocationalarm_obj_t* next = alarm->next;
|
||||
if (block_count >= alarm->minimum_block_count) {
|
||||
if (alarm->count > 0) {
|
||||
alarm->count--;
|
||||
} else {
|
||||
// Uncomment the breakpoint below if you want to use a C debugger to figure out the C
|
||||
// call stack for an allocation.
|
||||
// asm("bkpt");
|
||||
// Pause now because we may alert when throwing the exception too.
|
||||
common_hal_memorymonitor_allocationalarm_pause(alarm);
|
||||
alert_count++;
|
||||
}
|
||||
}
|
||||
alarm = next;
|
||||
}
|
||||
if (alert_count > 0) {
|
||||
mp_raise_memorymonitor_AllocationError(translate("Attempt to allocate %d blocks"), block_count);
|
||||
}
|
||||
}
|
||||
|
||||
void memorymonitor_allocationalarms_reset(void) {
|
||||
MP_STATE_VM(active_allocationalarms) = NULL;
|
||||
}
|
51
shared-module/memorymonitor/AllocationAlarm 2.h
Normal file
51
shared-module/memorymonitor/AllocationAlarm 2.h
Normal file
@ -0,0 +1,51 @@
|
||||
/*
|
||||
* This file is part of the Micro Python 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.
|
||||
*/
|
||||
|
||||
#ifndef MICROPY_INCLUDED_SHARED_MODULE_MEMORYMONITOR_ALLOCATIONALARM_H
|
||||
#define MICROPY_INCLUDED_SHARED_MODULE_MEMORYMONITOR_ALLOCATIONALARM_H
|
||||
|
||||
#include <stdbool.h>
|
||||
#include <stdint.h>
|
||||
|
||||
#include "py/obj.h"
|
||||
|
||||
typedef struct _memorymonitor_allocationalarm_obj_t memorymonitor_allocationalarm_obj_t;
|
||||
|
||||
#define ALLOCATION_SIZE_BUCKETS 16
|
||||
|
||||
typedef struct _memorymonitor_allocationalarm_obj_t {
|
||||
mp_obj_base_t base;
|
||||
size_t minimum_block_count;
|
||||
mp_int_t count;
|
||||
// Store the location that points to us so we can remove ourselves.
|
||||
memorymonitor_allocationalarm_obj_t** previous;
|
||||
memorymonitor_allocationalarm_obj_t* next;
|
||||
} memorymonitor_allocationalarm_obj_t;
|
||||
|
||||
void memorymonitor_allocationalarms_allocation(size_t block_count);
|
||||
void memorymonitor_allocationalarms_reset(void);
|
||||
|
||||
#endif // MICROPY_INCLUDED_SHARED_MODULE_MEMORYMONITOR_ALLOCATIONALARM_H
|
91
shared-module/memorymonitor/AllocationSize 2.c
Normal file
91
shared-module/memorymonitor/AllocationSize 2.c
Normal file
@ -0,0 +1,91 @@
|
||||
/*
|
||||
* This file is part of the Micro Python 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 "shared-bindings/memorymonitor/AllocationSize.h"
|
||||
|
||||
#include "py/gc.h"
|
||||
#include "py/mpstate.h"
|
||||
#include "py/runtime.h"
|
||||
|
||||
void common_hal_memorymonitor_allocationsize_construct(memorymonitor_allocationsize_obj_t* self) {
|
||||
common_hal_memorymonitor_allocationsize_clear(self);
|
||||
self->next = NULL;
|
||||
self->previous = NULL;
|
||||
}
|
||||
|
||||
void common_hal_memorymonitor_allocationsize_pause(memorymonitor_allocationsize_obj_t* self) {
|
||||
*self->previous = self->next;
|
||||
self->next = NULL;
|
||||
self->previous = NULL;
|
||||
}
|
||||
|
||||
void common_hal_memorymonitor_allocationsize_resume(memorymonitor_allocationsize_obj_t* self) {
|
||||
if (self->previous != NULL) {
|
||||
mp_raise_RuntimeError(translate("Already running"));
|
||||
}
|
||||
self->next = MP_STATE_VM(active_allocationsizes);
|
||||
self->previous = (memorymonitor_allocationsize_obj_t**) &MP_STATE_VM(active_allocationsizes);
|
||||
if (self->next != NULL) {
|
||||
self->next->previous = &self->next;
|
||||
}
|
||||
MP_STATE_VM(active_allocationsizes) = self;
|
||||
}
|
||||
|
||||
void common_hal_memorymonitor_allocationsize_clear(memorymonitor_allocationsize_obj_t* self) {
|
||||
for (size_t i = 0; i < ALLOCATION_SIZE_BUCKETS; i++) {
|
||||
self->buckets[i] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
uint16_t common_hal_memorymonitor_allocationsize_get_len(memorymonitor_allocationsize_obj_t* self) {
|
||||
return ALLOCATION_SIZE_BUCKETS;
|
||||
}
|
||||
|
||||
size_t common_hal_memorymonitor_allocationsize_get_bytes_per_block(memorymonitor_allocationsize_obj_t* self) {
|
||||
return BYTES_PER_BLOCK;
|
||||
}
|
||||
|
||||
uint16_t common_hal_memorymonitor_allocationsize_get_item(memorymonitor_allocationsize_obj_t* self, int16_t index) {
|
||||
return self->buckets[index];
|
||||
}
|
||||
|
||||
void memorymonitor_allocationsizes_track_allocation(size_t block_count) {
|
||||
memorymonitor_allocationsize_obj_t* as = MP_OBJ_TO_PTR(MP_STATE_VM(active_allocationsizes));
|
||||
size_t power_of_two = 0;
|
||||
block_count >>= 1;
|
||||
while (block_count != 0) {
|
||||
power_of_two++;
|
||||
block_count >>= 1;
|
||||
}
|
||||
while (as != NULL) {
|
||||
as->buckets[power_of_two]++;
|
||||
as = as->next;
|
||||
}
|
||||
}
|
||||
|
||||
void memorymonitor_allocationsizes_reset(void) {
|
||||
MP_STATE_VM(active_allocationsizes) = NULL;
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user